diff --git a/Dockerfile b/Dockerfile index 88ef1456d30f82bd84a704b241ac935acb6a046b..0b8341aa72b13b30225e0efb3f38a1b63e7cbead 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,7 @@ RUN apt-get update &&\ RUN mkdir ${CHROMIUM_DIR} -RUN curl -s https://raw.githubusercontent.com/chromium/chromium/121.0.6167.164/build/install-build-deps.py \ +RUN curl -s https://raw.githubusercontent.com/chromium/chromium/123.0.6312.122/build/install-build-deps.py \ | python - --android --lib32 --no-chromeos-fonts --no-prompt RUN git config --global user.name "John Doe" diff --git a/build.sh b/build.sh index ecc12abd5497807cd13196af314ea73369a32c43..4661b835fbf382d99edc4c2d192ebe661f317cb1 100755 --- a/build.sh +++ b/build.sh @@ -7,7 +7,7 @@ root_dir=$(dirname "$(readlink -f "$0")") if [ ! -d "$chromium_dir" ]; then chromium_dir=$root_dir fi -chromium_version="121.0.6167.164" +chromium_version="123.0.6312.122" chromium_code=$(echo "$chromium_version" | tr -d '.' | cut -c5-) chromium_url=https://github.com/chromium/chromium.git clean=0 diff --git a/build/browser.gn_args b/build/browser.gn_args index 2031a1d5896e0973097ae50d484d7a8113884464..e2bbfff54b647a1e7ba95405b6d3b3e686060536 100644 --- a/build/browser.gn_args +++ b/build/browser.gn_args @@ -12,7 +12,6 @@ enable_arcore=false enable_av1_decoder=true enable_cardboard=false enable_dav1d_decoder=true -enable_gvr_services=false enable_hangout_services_extension=false enable_iterator_debugging=false enable_mdns=false diff --git a/build/cromite_patches/AImageReader-CFI-crash-mitigations.patch b/build/cromite_patches/AImageReader-CFI-crash-mitigations.patch index 86c2a6ffe49022a31d5cd7a5ddef60357e79750f..47d66c343cf6c7ec3e42c449d194e95786a46533 100644 --- a/build/cromite_patches/AImageReader-CFI-crash-mitigations.patch +++ b/build/cromite_patches/AImageReader-CFI-crash-mitigations.patch @@ -20,8 +20,8 @@ See discussions at: License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - base/android/android_image_reader_compat.cc | 8 +++++++- - base/android/android_image_reader_compat.h | 4 ++++ + base/android/android_image_reader_compat.cc | 16 ++++++++++++++++ + base/android/android_image_reader_compat.h | 14 ++++++++++++++ chrome/browser/flag-metadata.json | 6 +++--- .../AImageReader-CFI-crash-mitigations.inc | 4 ++++ .../AImageReader-CFI-crash-mitigations.inc | 1 + @@ -30,63 +30,67 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html gpu/config/gpu_finch_features.h | 1 + gpu/config/gpu_util.cc | 8 ++++++++ gpu/config/gpu_workaround_list.txt | 1 + - gpu/ipc/service/gpu_init.cc | 7 +++++++ + gpu/ipc/service/gpu_init.cc | 8 ++++++++ gpu/ipc/service/stream_texture_android.cc | 11 ++++++++++- - 12 files changed, 67 insertions(+), 5 deletions(-) + 12 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc create mode 100644 cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc diff --git a/base/android/android_image_reader_compat.cc b/base/android/android_image_reader_compat.cc --- a/base/android/android_image_reader_compat.cc +++ b/base/android/android_image_reader_compat.cc -@@ -23,6 +23,8 @@ +@@ -7,7 +7,23 @@ namespace base { namespace android { -+bool AndroidImageReader::disable_support_ = false; ++AndroidImageReader& AndroidImageReader::GetInstance() { ++ // C++11 static local variable initialization is ++ // thread-safe. ++ static AndroidImageReader instance; ++ return instance; ++} + - AndroidImageReader& AndroidImageReader::GetInstance() { - // C++11 static local variable initialization is - // thread-safe. -@@ -30,8 +32,12 @@ AndroidImageReader& AndroidImageReader::GetInstance() { - return instance; - } - +void AndroidImageReader::DisableSupport() { + disable_support_ = true; +} + - bool AndroidImageReader::IsSupported() { -- return is_supported_; -+ return !disable_support_ && is_supported_; - } - - AndroidImageReader::AndroidImageReader() : is_supported_(LoadFunctions()) {} ++bool AndroidImageReader::IsSupported() { ++ return !disable_support_; ++} ++ + bool EnableAndroidImageReader() { ++ if (!AndroidImageReader::GetInstance().IsSupported()) return false; + // Currently we want to enable AImageReader only for android P+ devices. + if (__builtin_available(android 28, *)) { + return true; diff --git a/base/android/android_image_reader_compat.h b/base/android/android_image_reader_compat.h --- a/base/android/android_image_reader_compat.h +++ b/base/android/android_image_reader_compat.h -@@ -24,6 +24,9 @@ class BASE_EXPORT AndroidImageReader { - AndroidImageReader(const AndroidImageReader&) = delete; - AndroidImageReader& operator=(const AndroidImageReader&) = delete; +@@ -10,6 +10,20 @@ + namespace base { + namespace android { ++class BASE_EXPORT AndroidImageReader { ++ public: ++ // Thread safe GetInstance. ++ static AndroidImageReader& GetInstance(); ++ ++ bool IsSupported(); ++ + // Disable image reader support. -+ static void DisableSupport(); ++ void DisableSupport(); + - // Check if the image reader usage is supported. This function returns TRUE - // if android version is >=OREO, image reader support is not disabled and all - // the required functions are loaded. -@@ -61,6 +64,7 @@ class BASE_EXPORT AndroidImageReader { - jobject ANativeWindow_toSurface(JNIEnv* env, ANativeWindow* window); - - private: -+ static bool disable_support_; - friend class base::NoDestructor; ++ private: ++ bool disable_support_ = false; ++}; ++ + // Check if the image reader usage is supported. + BASE_EXPORT bool EnableAndroidImageReader(); - AndroidImageReader(); diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -2923,9 +2923,9 @@ +@@ -3046,9 +3046,9 @@ "expiry_milestone": 125 }, { @@ -143,8 +147,8 @@ diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_lis diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc --- a/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc -@@ -71,6 +71,11 @@ BASE_FEATURE(kUseGles2ForOopR, - ); +@@ -65,6 +65,11 @@ BASE_FEATURE(kUseGles2ForOopR, + base::FEATURE_DISABLED_BY_DEFAULT); #if BUILDFLAG(IS_ANDROID) +// Use android AImageReader when playing videos with MediaPlayer. @@ -179,7 +183,7 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc if (!gpu_preferences.enable_android_surface_control) return kGpuFeatureStatusDisabled; -@@ -355,6 +358,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) { +@@ -368,6 +371,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) { gpu_feature_info->status_values[GPU_FEATURE_TYPE_CANVAS_OOP_RASTERIZATION] = kGpuFeatureStatusBlocklisted; } @@ -205,14 +209,22 @@ diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc --- a/gpu/ipc/service/gpu_init.cc +++ b/gpu/ipc/service/gpu_init.cc -@@ -675,6 +675,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, +@@ -65,6 +65,7 @@ + + #if BUILDFLAG(IS_ANDROID) + #include "ui/gfx/android/android_surface_control_compat.h" ++#include "base/android/android_image_reader_compat.h" + #endif + + #if BUILDFLAG(ENABLE_VULKAN) +@@ -662,6 +663,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, } #endif // BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_ANDROID) + // Disable AImageReader if the workaround is enabled. + if (gpu_feature_info_.IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) { -+ base::android::AndroidImageReader::DisableSupport(); ++ base::android::AndroidImageReader::GetInstance().DisableSupport(); + } +#endif + diff --git a/build/cromite_patches/AdblockPlus-add-blocking-in-service-workers.patch b/build/cromite_patches/AdblockPlus-add-blocking-in-service-workers.patch deleted file mode 100644 index 1d62f37f4c7d009d28cc9b6cd09511cac72c7d50..0000000000000000000000000000000000000000 --- a/build/cromite_patches/AdblockPlus-add-blocking-in-service-workers.patch +++ /dev/null @@ -1,731 +0,0 @@ -From: uazo -Date: Thu, 7 Sep 2023 07:25:25 +0000 -Subject: AdblockPlus add blocking in service workers - -License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ---- - .../adblock/adblock_content_browser_client.cc | 184 ++++++++++++------ - .../adblock/adblock_content_browser_client.h | 27 ++- - .../browser/chrome_content_browser_client.cc | 6 +- - .../browser/chrome_content_browser_client.h | 6 +- - .../browser/adblock_url_loader_factory.cc | 10 +- - .../browser/adblock_url_loader_factory.h | 3 + - .../browser/frame_hierarchy_builder.cc | 3 +- - .../browser/resource_classification_runner.h | 8 + - .../resource_classification_runner_impl.cc | 30 ++- - .../resource_classification_runner_impl.h | 8 + - .../websockets/websocket_connector_impl.cc | 6 +- - .../public/browser/content_browser_client.cc | 4 +- - .../public/browser/content_browser_client.h | 4 +- - 13 files changed, 216 insertions(+), 83 deletions(-) - -diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/browser/adblock/adblock_content_browser_client.cc ---- a/chrome/browser/adblock/adblock_content_browser_client.cc -+++ b/chrome/browser/adblock/adblock_content_browser_client.cc -@@ -43,6 +43,7 @@ - #include "content/public/browser/web_contents.h" - #include "mojo/public/cpp/bindings/self_owned_receiver.h" - #include "services/network/public/mojom/websocket.mojom.h" -+#include "services/network/public/mojom/web_transport.mojom.h" - #include "services/service_manager/public/cpp/binder_registry.h" - #include "third_party/blink/public/common/loader/url_loader_throttle.h" - -@@ -56,6 +57,29 @@ - - namespace { - -+bool IsFilteringNeeded(Profile* profile, const GURL& embedder_url) { -+ DCHECK(profile); -+ -+ if(embedder_url.is_empty()) { -+ // in android can be empty because it was created by -+ // RenderFrameHostImpl::CreateSubresourceLoaderFactoriesForInitialEmptyDocument -+ return true; -+ } -+ -+ HostContentSettingsMap* settings_map = HostContentSettingsMapFactory::GetForProfile(profile); -+ if (settings_map && settings_map->GetContentSetting(embedder_url, GURL(), ContentSettingsType::ADS) -+ == CONTENT_SETTING_ALLOW) { -+ return false; -+ } -+ // Filtering may be needed if there's at least one enabled -+ // FilteringConfiguration. -+ bool ret = base::ranges::any_of( -+ adblock::SubscriptionServiceFactory::GetForBrowserContext(profile) -+ ->GetInstalledFilteringConfigurations(), -+ &adblock::FilteringConfiguration::IsEnabled); -+ return ret; -+} -+ - bool IsFilteringNeeded(content::RenderFrameHost* frame) { - if (frame) { - auto* profile = -@@ -63,17 +87,7 @@ bool IsFilteringNeeded(content::RenderFrameHost* frame) { - if (profile) { - content::RenderFrameHost* embedder = frame->GetOutermostMainFrameOrEmbedder(); - const auto& embedder_url = embedder->GetLastCommittedURL(); -- HostContentSettingsMap* settings_map = HostContentSettingsMapFactory::GetForProfile(profile); -- if (settings_map && settings_map->GetContentSetting(embedder_url, GURL(), ContentSettingsType::ADS) -- == CONTENT_SETTING_ALLOW) { -- return false; -- } -- // Filtering may be needed if there's at least one enabled -- // FilteringConfiguration. -- return base::ranges::any_of( -- adblock::SubscriptionServiceFactory::GetForBrowserContext(profile) -- ->GetInstalledFilteringConfigurations(), -- &adblock::FilteringConfiguration::IsEnabled); -+ return IsFilteringNeeded(profile, embedder_url); - } - } - return false; -@@ -88,6 +102,8 @@ class AdblockContextData : public base::SupportsUserData::Data { - - static void StartProxying( - Profile* profile, -+ content::BrowserContext* browser_context, -+ const url::Origin& request_initiator, - content::RenderFrameHost* frame, - int render_process_id, - mojo::PendingReceiver receiver, -@@ -100,8 +116,6 @@ class AdblockContextData : public base::SupportsUserData::Data { - self = new AdblockContextData(); - profile->SetUserData(kAdblockContextUserDataKey, base::WrapUnique(self)); - } -- auto* browser_context = -- content::WebContents::FromRenderFrameHost(frame)->GetBrowserContext(); - adblock::AdblockURLLoaderFactoryConfig config{ - adblock::SubscriptionServiceFactory::GetForBrowserContext( - browser_context), -@@ -113,8 +127,9 @@ class AdblockContextData : public base::SupportsUserData::Data { - browser_context)}; - auto proxy = std::make_unique( - std::move(config), -+ request_initiator.GetURL(), - content::GlobalRenderFrameHostId(render_process_id, -- frame->GetRoutingID()), -+ frame ? frame->GetRoutingID() : MSG_ROUTING_NONE), - std::move(receiver), std::move(target_factory), - embedder_support::GetUserAgent(), - base::BindOnce(&AdblockContextData::RemoveProxy, -@@ -155,47 +170,50 @@ void AdblockContentBrowserClient::ForceAdblockProxyForTesting() { - #endif - - bool AdblockContentBrowserClient::WillInterceptWebSocket( -- content::RenderFrameHost* frame) { -+ content::RenderFrameHost* frame, -+ content::RenderProcessHost* process, -+ const url::Origin& origin) { - if (IsFilteringNeeded(frame)) { - return true; -+ } else { -+ auto* browser_context = process->GetBrowserContext(); -+ auto* profile = Profile::FromBrowserContext(browser_context); -+ if (IsFilteringNeeded(profile, origin.GetURL().GetAsReferrer())) { -+ return true; -+ } - } - -- return ChromeContentBrowserClient::WillInterceptWebSocket(frame); -+ return ChromeContentBrowserClient::WillInterceptWebSocket(frame, process, origin); - } - - void AdblockContentBrowserClient::CreateWebSocket( -+ content::RenderProcessHost* process, - content::RenderFrameHost* frame, - WebSocketFactory factory, - const GURL& url, -+ const url::Origin& initiator_origin, - const net::SiteForCookies& site_for_cookies, - const absl::optional& user_agent, - mojo::PendingRemote - handshake_client) { -- if (IsFilteringNeeded(frame)) { -- CreateWebSocketInternal(frame->GetGlobalId(), std::move(factory), url, -- site_for_cookies, user_agent, -- std::move(handshake_client)); -- } else { -- DCHECK(ChromeContentBrowserClient::WillInterceptWebSocket(frame)); -- ChromeContentBrowserClient::CreateWebSocket(frame, std::move(factory), url, -- site_for_cookies, user_agent, -- std::move(handshake_client)); -- } -+ CreateWebSocketInternal(process, -+ frame ? frame->GetGlobalId() : content::GlobalRenderFrameHostId(), -+ std::move(factory), url, initiator_origin, -+ site_for_cookies, user_agent, -+ std::move(handshake_client)); - } - - void AdblockContentBrowserClient::CreateWebSocketInternal( -+ content::RenderProcessHost* process, - content::GlobalRenderFrameHostId render_frame_host_id, - WebSocketFactory factory, - const GURL& url, -+ const url::Origin& initiator_origin, - const net::SiteForCookies& site_for_cookies, - const absl::optional& user_agent, - mojo::PendingRemote - handshake_client) { -- auto* frame = content::RenderFrameHost::FromID(render_frame_host_id); -- if (!frame) { -- return; -- } -- auto* browser_context = frame->GetProcess()->GetBrowserContext(); -+ auto* browser_context = process->GetBrowserContext(); - auto* subscription_service = - adblock::SubscriptionServiceFactory::GetForBrowserContext( - browser_context); -@@ -203,33 +221,33 @@ void AdblockContentBrowserClient::CreateWebSocketInternal( - adblock::ResourceClassificationRunnerFactory::GetForBrowserContext( - browser_context); - classification_runner->CheckRequestFilterMatchForWebSocket( -- subscription_service->GetCurrentSnapshot(), url, render_frame_host_id, -+ subscription_service->GetCurrentSnapshot(), url, -+ std::move(initiator_origin.GetURL().GetAsReferrer()), render_frame_host_id, - base::BindOnce( - &AdblockContentBrowserClient::OnWebSocketFilterCheckCompleted, -- weak_factory_.GetWeakPtr(), render_frame_host_id, std::move(factory), -- url, site_for_cookies, user_agent, std::move(handshake_client))); -+ weak_factory_.GetWeakPtr(), process, render_frame_host_id, std::move(factory), -+ url, initiator_origin, site_for_cookies, user_agent, std::move(handshake_client))); - } - - void AdblockContentBrowserClient::OnWebSocketFilterCheckCompleted( -+ content::RenderProcessHost* process, - content::GlobalRenderFrameHostId render_frame_host_id, - ChromeContentBrowserClient::WebSocketFactory factory, - const GURL& url, -+ const url::Origin& initiator_origin, - const net::SiteForCookies& site_for_cookies, - const absl::optional& user_agent, - mojo::PendingRemote - handshake_client, - adblock::FilterMatchResult result) { - auto* frame = content::RenderFrameHost::FromID(render_frame_host_id); -- if (!frame) { -- return; -- } - const bool has_blocking_filter = - result == adblock::FilterMatchResult::kBlockRule; - if (!has_blocking_filter) { - VLOG(1) << "[eyeo] Web socket allowed for " << url; -- if (ChromeContentBrowserClient::WillInterceptWebSocket(frame)) { -+ if (ChromeContentBrowserClient::WillInterceptWebSocket(frame, process, initiator_origin)) { - ChromeContentBrowserClient::CreateWebSocket( -- frame, std::move(factory), url, site_for_cookies, user_agent, -+ process, frame, std::move(factory), url, initiator_origin, site_for_cookies, user_agent, - std::move(handshake_client)); - return; - } -@@ -246,6 +264,72 @@ void AdblockContentBrowserClient::OnWebSocketFilterCheckCompleted( - VLOG(1) << "[eyeo] Web socket blocked for " << url; - } - -+void AdblockContentBrowserClient::WillCreateWebTransport( -+ int process_id, -+ int frame_routing_id, -+ const GURL& url, -+ const url::Origin& initiator_origin, -+ mojo::PendingRemote -+ handshake_client, -+ WillCreateWebTransportCallback callback) { -+ auto* process = content::RenderProcessHost::FromID(process_id); -+ DCHECK(process); -+ -+ auto* browser_context = process->GetBrowserContext(); -+ auto* profile = Profile::FromBrowserContext(browser_context); -+ if (IsFilteringNeeded(profile, initiator_origin.GetURL().GetAsReferrer())) { -+ auto* subscription_service = -+ adblock::SubscriptionServiceFactory::GetForBrowserContext( -+ browser_context); -+ auto* classification_runner = -+ adblock::ResourceClassificationRunnerFactory::GetForBrowserContext( -+ browser_context); -+ -+ classification_runner->CheckRequestFilterMatchForWebTransport( -+ subscription_service->GetCurrentSnapshot(), url, -+ std::move(initiator_origin.GetURL().GetAsReferrer()), -+ content::GlobalRenderFrameHostId(), -+ base::BindOnce( -+ &AdblockContentBrowserClient::OnWebTransportFilterCheckCompleted, -+ weak_factory_.GetWeakPtr(), -+ process_id, frame_routing_id, url, -+ std::move(initiator_origin), std::move(handshake_client), -+ std::move(callback))); -+ return; -+ } -+ -+ ChromeContentBrowserClient::WillCreateWebTransport( -+ process_id, frame_routing_id, -+ url, std::move(initiator_origin), -+ std::move(handshake_client), std::move(callback)); -+} -+ -+void AdblockContentBrowserClient::OnWebTransportFilterCheckCompleted( -+ int process_id, -+ int frame_routing_id, -+ const GURL& url, -+ const url::Origin& initiator_origin, -+ mojo::PendingRemote -+ handshake_client, -+ WillCreateWebTransportCallback callback, -+ adblock::FilterMatchResult result) { -+ const bool has_blocking_filter = -+ result == adblock::FilterMatchResult::kBlockRule; -+ if (!has_blocking_filter) { -+ VLOG(1) << "[eyeo] Web transport allowed for " << url; -+ ChromeContentBrowserClient::WillCreateWebTransport( -+ process_id, frame_routing_id, -+ url, std::move(initiator_origin), -+ std::move(handshake_client), std::move(callback)); -+ return; -+ } -+ VLOG(1) << "[eyeo] Web transport blocked for " << url; -+ std::move(callback).Run(std::move(handshake_client), -+ network::mojom::WebTransportError::New( -+ net::ERR_BLOCKED_BY_ADMINISTRATOR, quic::QUIC_INTERNAL_ERROR, -+ "Blocked", false)); -+} -+ - bool AdblockContentBrowserClient::WillCreateURLLoaderFactory( - content::BrowserContext* browser_context, - content::RenderFrameHost* frame, -@@ -269,24 +353,12 @@ bool AdblockContentBrowserClient::WillCreateURLLoaderFactory( - navigation_id, ukm_source_id, factory_receiver, header_client, - bypass_redirect_checks, disable_secure_dns, factory_override, - navigation_response_task_runner); -- auto* profile = frame ? Profile::FromBrowserContext( -- frame->GetProcess()->GetBrowserContext()) -- : nullptr; -- --#if BUILDFLAG(ENABLE_EXTENSIONS) -- if (!force_adblock_proxy_for_testing_ && -- request_initiator.scheme() == extensions::kExtensionScheme) { -- VLOG(1) << "[eyeo] Do not use adblock proxy for extensions requests " -- "[extension id:" -- << request_initiator.host() << "]."; -- return use_chrome_proxy; -- } --#endif -+ auto* profile = Profile::FromBrowserContext(browser_context); - - bool use_adblock_proxy = -- (type == URLLoaderFactoryType::kDocumentSubResource || -- type == URLLoaderFactoryType::kNavigation) && -- IsFilteringNeeded(frame); -+ type != URLLoaderFactoryType::kDownload && -+ (frame ? IsFilteringNeeded(frame) -+ : IsFilteringNeeded(profile, request_initiator.GetURL().GetAsReferrer())); - - bool use_test_loader = false; - #ifdef EYEO_INTERCEPT_DEBUG_URL -@@ -305,7 +377,7 @@ bool AdblockContentBrowserClient::WillCreateURLLoaderFactory( - mojo::PendingRemote target_factory_remote; - *factory_receiver = target_factory_remote.InitWithNewPipeAndPassReceiver(); - AdblockContextData::StartProxying( -- profile, frame, render_process_id, std::move(proxied_receiver), -+ profile, browser_context, request_initiator, frame, render_process_id, std::move(proxied_receiver), - std::move(target_factory_remote), use_test_loader); - } - return use_adblock_proxy || use_chrome_proxy; -diff --git a/chrome/browser/adblock/adblock_content_browser_client.h b/chrome/browser/adblock/adblock_content_browser_client.h ---- a/chrome/browser/adblock/adblock_content_browser_client.h -+++ b/chrome/browser/adblock/adblock_content_browser_client.h -@@ -44,16 +44,27 @@ class AdblockContentBrowserClient : public ChromeContentBrowserClient { - static void ForceAdblockProxyForTesting(); - #endif - -- bool WillInterceptWebSocket(content::RenderFrameHost* frame) override; -+ bool WillInterceptWebSocket(content::RenderFrameHost* frame, content::RenderProcessHost* process, const url::Origin& origin) override; - void CreateWebSocket( -+ content::RenderProcessHost* process, - content::RenderFrameHost* frame, - WebSocketFactory factory, - const GURL& url, -+ const url::Origin& initiator_origin, - const net::SiteForCookies& site_for_cookies, - const absl::optional& user_agent, - mojo::PendingRemote - handshake_client) override; - -+ void WillCreateWebTransport( -+ int process_id, -+ int frame_routing_id, -+ const GURL& url, -+ const url::Origin& initiator_origin, -+ mojo::PendingRemote -+ handshake_client, -+ WillCreateWebTransportCallback callback) override; -+ - bool WillCreateURLLoaderFactory( - content::BrowserContext* browser_context, - content::RenderFrameHost* frame, -@@ -73,23 +84,35 @@ class AdblockContentBrowserClient : public ChromeContentBrowserClient { - - private: - void CreateWebSocketInternal( -+ content::RenderProcessHost* process, - content::GlobalRenderFrameHostId render_frame_host_id, - WebSocketFactory factory, - const GURL& url, -+ const url::Origin& initiator_origin, - const net::SiteForCookies& site_for_cookies, - const absl::optional& user_agent, - mojo::PendingRemote - handshake_client); - void OnWebSocketFilterCheckCompleted( -+ content::RenderProcessHost* process, - content::GlobalRenderFrameHostId render_frame_host_id, - ChromeContentBrowserClient::WebSocketFactory factory, - const GURL& url, -+ const url::Origin& initiator_origin, - const net::SiteForCookies& site_for_cookies, - const absl::optional& user_agent, - mojo::PendingRemote - handshake_client, - adblock::FilterMatchResult result); -- -+ void OnWebTransportFilterCheckCompleted( -+ int process_id, -+ int frame_routing_id, -+ const GURL& url, -+ const url::Origin& initiator_origin, -+ mojo::PendingRemote -+ handshake_client, -+ WillCreateWebTransportCallback callback, -+ adblock::FilterMatchResult result); - base::WeakPtrFactory weak_factory_{this}; - - #if BUILDFLAG(ENABLE_EXTENSIONS) -diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc ---- a/chrome/browser/chrome_content_browser_client.cc -+++ b/chrome/browser/chrome_content_browser_client.cc -@@ -6305,7 +6305,9 @@ ChromeContentBrowserClient:: - } - - bool ChromeContentBrowserClient::WillInterceptWebSocket( -- content::RenderFrameHost* frame) { -+ content::RenderFrameHost* frame, -+ content::RenderProcessHost* process, -+ const url::Origin& origin) { - #if BUILDFLAG(ENABLE_EXTENSIONS) - if (!frame) { - return false; -@@ -6328,9 +6330,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( - } - - void ChromeContentBrowserClient::CreateWebSocket( -+ content::RenderProcessHost* process, - content::RenderFrameHost* frame, - WebSocketFactory factory, - const GURL& url, -+ const url::Origin& initiator_origin, - const net::SiteForCookies& site_for_cookies, - const absl::optional& user_agent, - mojo::PendingRemote -diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h ---- a/chrome/browser/chrome_content_browser_client.h -+++ b/chrome/browser/chrome_content_browser_client.h -@@ -642,11 +642,15 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { - CreateURLLoaderHandlerForServiceWorkerNavigationPreload( - int frame_tree_node_id, - const network::ResourceRequest& resource_request) override; -- bool WillInterceptWebSocket(content::RenderFrameHost* frame) override; -+ bool WillInterceptWebSocket(content::RenderFrameHost* frame, -+ content::RenderProcessHost* process, -+ const url::Origin& origin) override; - void CreateWebSocket( -+ content::RenderProcessHost* process, - content::RenderFrameHost* frame, - WebSocketFactory factory, - const GURL& url, -+ const url::Origin& initiator_origin, - const net::SiteForCookies& site_for_cookies, - const absl::optional& user_agent, - mojo::PendingRemote -diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/components/adblock/content/browser/adblock_url_loader_factory.cc ---- a/components/adblock/content/browser/adblock_url_loader_factory.cc -+++ b/components/adblock/content/browser/adblock_url_loader_factory.cc -@@ -343,12 +343,6 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestError( - - void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch( - CheckFilterMatchCallback callback) { -- if (!factory_->CheckHostValid()) { -- PostFilterMatchCallbackToUI(std::move(callback), -- FilterMatchResult::kNoRule); -- return; -- } -- - auto subscription_service = factory_->config_.subscription_service; - if (is_document_request_) { - auto* host = content::RenderFrameHost::FromID(factory_->host_id_); -@@ -387,7 +381,7 @@ void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch( - } else { - factory_->config_.resource_classifier->CheckRequestFilterMatch( - subscription_service->GetCurrentSnapshot(), request_url_, -- adblock_resource_type_, factory_->host_id_, -+ factory_->request_initiator_, adblock_resource_type_, factory_->host_id_, - base::BindOnce( - &AdblockURLLoaderFactory::InProgressRequest::OnRequestUrlClassified, - weak_factory_.GetWeakPtr(), -@@ -676,12 +670,14 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestFilterMatchResult( - - AdblockURLLoaderFactory::AdblockURLLoaderFactory( - AdblockURLLoaderFactoryConfig config, -+ GURL request_initiator, - content::GlobalRenderFrameHostId host_id, - mojo::PendingReceiver receiver, - mojo::PendingRemote target_factory, - std::string user_agent_string, - DisconnectCallback on_disconnect) - : config_(std::move(config)), -+ request_initiator_(std::move(request_initiator)), - host_id_(host_id), - user_agent_string_(std::move(user_agent_string)), - on_disconnect_(std::move(on_disconnect)) { -diff --git a/components/adblock/content/browser/adblock_url_loader_factory.h b/components/adblock/content/browser/adblock_url_loader_factory.h ---- a/components/adblock/content/browser/adblock_url_loader_factory.h -+++ b/components/adblock/content/browser/adblock_url_loader_factory.h -@@ -25,6 +25,7 @@ - #include "mojo/public/cpp/bindings/receiver_set.h" - #include "mojo/public/cpp/bindings/remote.h" - #include "services/network/public/mojom/url_loader_factory.mojom.h" -+#include "url/gurl.h" - - namespace adblock { - -@@ -57,6 +58,7 @@ class AdblockURLLoaderFactory : public network::mojom::URLLoaderFactory { - - AdblockURLLoaderFactory( - AdblockURLLoaderFactoryConfig config, -+ GURL request_initiator, - content::GlobalRenderFrameHostId host_id, - mojo::PendingReceiver receiver, - mojo::PendingRemote target_factory, -@@ -86,6 +88,7 @@ class AdblockURLLoaderFactory : public network::mojom::URLLoaderFactory { - void MaybeDestroySelf(); - - AdblockURLLoaderFactoryConfig config_; -+ const GURL request_initiator_; - content::GlobalRenderFrameHostId host_id_; - mojo::ReceiverSet proxy_receivers_; - std::set, base::UniquePtrComparator> -diff --git a/components/adblock/content/browser/frame_hierarchy_builder.cc b/components/adblock/content/browser/frame_hierarchy_builder.cc ---- a/components/adblock/content/browser/frame_hierarchy_builder.cc -+++ b/components/adblock/content/browser/frame_hierarchy_builder.cc -@@ -76,9 +76,8 @@ std::vector FrameHierarchyBuilder::BuildFrameHierarchy( - content::RenderFrameHost* host) const { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - -- DCHECK(host) << "RenderFrameHost is needed to build frame hierarchy"; -- - std::vector referrers_chain; -+ if (!host) return referrers_chain; - for (auto* iter = host; iter; iter = iter->GetParent()) { - auto last_commited_referrer = GetUrlAsReferrer(iter); - if (IsValidForFrameHierarchy(last_commited_referrer)) { -diff --git a/components/adblock/content/browser/resource_classification_runner.h b/components/adblock/content/browser/resource_classification_runner.h ---- a/components/adblock/content/browser/resource_classification_runner.h -+++ b/components/adblock/content/browser/resource_classification_runner.h -@@ -81,14 +81,22 @@ class ResourceClassificationRunner : public KeyedService { - virtual void CheckRequestFilterMatch( - SubscriptionService::Snapshot subscription_collections, - const GURL& request_url, -+ const GURL& request_initiator, - ContentType adblock_resource_type, - content::GlobalRenderFrameHostId render_frame_host_id, - CheckFilterMatchCallback callback) = 0; - virtual void CheckRequestFilterMatchForWebSocket( - SubscriptionService::Snapshot subscription_collections, - const GURL& request_url, -+ const GURL& request_initiator, - content::GlobalRenderFrameHostId render_frame_host_id, - CheckFilterMatchCallback callback) = 0; -+ virtual void CheckRequestFilterMatchForWebTransport( -+ SubscriptionService::Snapshot subscription_collections, -+ const GURL& request_url, -+ const GURL& request_initiator, -+ content::GlobalRenderFrameHostId render_frame_host_id, -+ CheckFilterMatchCallback callback); - // No callback, just notify observers - virtual void CheckDocumentAllowlisted( - SubscriptionService::Snapshot subscription_collection, -diff --git a/components/adblock/content/browser/resource_classification_runner_impl.cc b/components/adblock/content/browser/resource_classification_runner_impl.cc ---- a/components/adblock/content/browser/resource_classification_runner_impl.cc -+++ b/components/adblock/content/browser/resource_classification_runner_impl.cc -@@ -169,15 +169,28 @@ void ResourceClassificationRunnerImpl::CheckPopupFilterMatch( - void ResourceClassificationRunnerImpl::CheckRequestFilterMatchForWebSocket( - SubscriptionService::Snapshot subscription_collections, - const GURL& request_url, -+ const GURL& request_initiator, - content::GlobalRenderFrameHostId render_frame_host_id, - CheckFilterMatchCallback callback) { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK(request_url.SchemeIsWSOrWSS()); -- CheckRequestFilterMatch(std::move(subscription_collections), request_url, -+ CheckRequestFilterMatch(std::move(subscription_collections), request_url, request_initiator, - ContentType::Websocket, render_frame_host_id, - std::move(callback)); - } - -+void ResourceClassificationRunnerImpl::CheckRequestFilterMatchForWebTransport( -+ SubscriptionService::Snapshot subscription_collections, -+ const GURL& request_url, -+ const GURL& request_initiator, -+ content::GlobalRenderFrameHostId render_frame_host_id, -+ CheckFilterMatchCallback callback) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ CheckRequestFilterMatch(std::move(subscription_collections), request_url, request_initiator, -+ ContentType::Other, render_frame_host_id, -+ std::move(callback)); -+} -+ - void ResourceClassificationRunnerImpl::CheckDocumentAllowlisted( - SubscriptionService::Snapshot subscription_collections, - const GURL& request_url, -@@ -212,6 +225,7 @@ void ResourceClassificationRunnerImpl::ProcessDocumentAllowlistedResponse( - void ResourceClassificationRunnerImpl::CheckRequestFilterMatch( - SubscriptionService::Snapshot subscription_collections, - const GURL& request_url, -+ const GURL& request_initiator, - ContentType adblock_resource_type, - content::GlobalRenderFrameHostId frame_host_id, - CheckFilterMatchCallback callback) { -@@ -220,14 +234,10 @@ void ResourceClassificationRunnerImpl::CheckRequestFilterMatch( - DVLOG(1) << "[eyeo] CheckRequestFilterMatchImpl for " << request_url.spec(); - - auto* host = content::RenderFrameHost::FromID(frame_host_id); -- if (!host) { -- // Host has died, likely because this is a deferred execution. It does not -- // matter anymore whether the resource is blocked, the page is gone. -- std::move(callback).Run(FilterMatchResult::kNoRule); -- return; -- } -- const std::vector frame_hierarchy_chain = -+ std::vector frame_hierarchy_chain = - frame_hierarchy_builder_->BuildFrameHierarchy(host); -+ if (!host && frame_hierarchy_chain.size() == 0) -+ frame_hierarchy_chain.emplace_back(request_initiator.GetAsReferrer()); - - DVLOG(1) << "[eyeo] Got " << frame_hierarchy_chain.size() - << " frame_hierarchy for " << request_url.spec(); -@@ -275,7 +285,8 @@ ResourceClassificationRunnerImpl::CheckRequestFilterMatchInternal( - adblock_resource_type, sitekey); - - if (classification_result.decision == ClassificationDecision::Allowed) { -- VLOG(1) << "[eyeo] Document allowed due to allowing filter " << request_url; -+ VLOG(1) << "[eyeo] Document allowed due to allowing filter " << request_url -+ << " " << classification_result.decisive_subscription.spec(); - return CheckResourceFilterMatchResult{ - FilterMatchResult::kAllowRule, - classification_result.decisive_subscription, -@@ -290,6 +301,7 @@ ResourceClassificationRunnerImpl::CheckRequestFilterMatchInternal( - classification_result.decisive_configuration_name}; - } - -+ VLOG(1) << "[eyeo] No Rule for " << request_url; - return CheckResourceFilterMatchResult{FilterMatchResult::kNoRule, {}, {}}; - } - -diff --git a/components/adblock/content/browser/resource_classification_runner_impl.h b/components/adblock/content/browser/resource_classification_runner_impl.h ---- a/components/adblock/content/browser/resource_classification_runner_impl.h -+++ b/components/adblock/content/browser/resource_classification_runner_impl.h -@@ -55,12 +55,14 @@ class ResourceClassificationRunnerImpl final - void CheckRequestFilterMatch( - SubscriptionService::Snapshot subscription_collections, - const GURL& request_url, -+ const GURL& request_initiator, - ContentType adblock_resource_type, - content::GlobalRenderFrameHostId render_frame_host_id, - CheckFilterMatchCallback callback) final; - void CheckRequestFilterMatchForWebSocket( - SubscriptionService::Snapshot subscription_collections, - const GURL& request_url, -+ const GURL& request_initiator, - content::GlobalRenderFrameHostId render_frame_host_id, - CheckFilterMatchCallback callback) final; - // No callback, just notify observers -@@ -68,6 +70,12 @@ class ResourceClassificationRunnerImpl final - SubscriptionService::Snapshot subscription_collections, - const GURL& request_url, - content::GlobalRenderFrameHostId render_frame_host_id) final; -+ void CheckRequestFilterMatchForWebTransport( -+ SubscriptionService::Snapshot subscription_collections, -+ const GURL& request_url, -+ const GURL& request_initiator, -+ content::GlobalRenderFrameHostId render_frame_host_id, -+ CheckFilterMatchCallback callback) final; - void CheckResponseFilterMatch( - SubscriptionService::Snapshot subscription_collections, - const GURL& response_url, -diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/browser/websockets/websocket_connector_impl.cc ---- a/content/browser/websockets/websocket_connector_impl.cc -+++ b/content/browser/websockets/websocket_connector_impl.cc -@@ -88,14 +88,14 @@ void WebSocketConnectorImpl::Connect( - const uint32_t options = - GetContentClient()->browser()->GetWebSocketOptions(frame); - -- if (GetContentClient()->browser()->WillInterceptWebSocket(frame)) { -+ if (GetContentClient()->browser()->WillInterceptWebSocket(frame, process, origin_)) { - GetContentClient()->browser()->CreateWebSocket( -- frame, -+ process, frame, - base::BindOnce(ConnectCalledByContentBrowserClient, requested_protocols, - site_for_cookies, has_storage_access, isolation_info_, - process_id_, frame_id_, origin_, options, - std::move(throttling_profile_id)), -- url, site_for_cookies, user_agent, std::move(handshake_client)); -+ url, origin_, site_for_cookies, user_agent, std::move(handshake_client)); - return; - } - std::vector headers; -diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc ---- a/content/public/browser/content_browser_client.cc -+++ b/content/public/browser/content_browser_client.cc -@@ -1023,7 +1023,7 @@ bool ContentBrowserClient::WillCreateURLLoaderFactory( - return false; - } - --bool ContentBrowserClient::WillInterceptWebSocket(RenderFrameHost*) { -+bool ContentBrowserClient::WillInterceptWebSocket(RenderFrameHost*, RenderProcessHost*, const url::Origin& origin) { - return false; - } - -@@ -1032,9 +1032,11 @@ uint32_t ContentBrowserClient::GetWebSocketOptions(RenderFrameHost* frame) { - } - - void ContentBrowserClient::CreateWebSocket( -+ RenderProcessHost* process, - RenderFrameHost* frame, - WebSocketFactory factory, - const GURL& url, -+ const url::Origin& initiator_origin, - const net::SiteForCookies& site_for_cookies, - const absl::optional& user_agent, - mojo::PendingRemote -diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h ---- a/content/public/browser/content_browser_client.h -+++ b/content/public/browser/content_browser_client.h -@@ -1859,7 +1859,7 @@ class CONTENT_EXPORT ContentBrowserClient { - scoped_refptr navigation_response_task_runner); - - // Returns true when the embedder wants to intercept a websocket connection. -- virtual bool WillInterceptWebSocket(RenderFrameHost* frame); -+ virtual bool WillInterceptWebSocket(RenderFrameHost* frame, RenderProcessHost* process, const url::Origin& origin); - - // Returns the WebSocket creation options. - virtual uint32_t GetWebSocketOptions(RenderFrameHost* frame); -@@ -1881,9 +1881,11 @@ class CONTENT_EXPORT ContentBrowserClient { - // Always called on the UI thread and only when the Network Service is - // enabled. - virtual void CreateWebSocket( -+ RenderProcessHost* process, - RenderFrameHost* frame, - WebSocketFactory factory, - const GURL& url, -+ const url::Origin& initiator_origin, - const net::SiteForCookies& site_for_cookies, - const absl::optional& user_agent, - mojo::PendingRemote --- diff --git a/build/cromite_patches/AdblockPlus-connect-popup-blocker.patch b/build/cromite_patches/AdblockPlus-connect-popup-blocker.patch deleted file mode 100644 index 3c1bd528c3a8d4318207ba63f1c70c3225a83b01..0000000000000000000000000000000000000000 --- a/build/cromite_patches/AdblockPlus-connect-popup-blocker.patch +++ /dev/null @@ -1,169 +0,0 @@ -From: uazo -Date: Tue, 9 Jan 2024 13:37:05 +0000 -Subject: AdblockPlus connect popup blocker - -activates the pop-up blocking management present in adblockplus -but not active in upstream. -added "enable-stricter-popup-blocker" flag for the global -deactivation of all pop-ups (default disabled) ---- - .../adblock/adblock_content_browser_client.cc | 52 +++++++++++++++++++ - .../adblock/adblock_content_browser_client.h | 14 +++++ - components/blocked_content/popup_blocker.cc | 9 +++- - components/blocked_content/popup_blocker.h | 3 ++ - .../about_flags_cc/Stricter-popup-blocker.inc | 14 +++++ - 5 files changed, 91 insertions(+), 1 deletion(-) - create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Stricter-popup-blocker.inc - -diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/browser/adblock/adblock_content_browser_client.cc ---- a/chrome/browser/adblock/adblock_content_browser_client.cc -+++ b/chrome/browser/adblock/adblock_content_browser_client.cc -@@ -330,6 +330,58 @@ void AdblockContentBrowserClient::OnWebTransportFilterCheckCompleted( - "Blocked", false)); - } - -+bool AdblockContentBrowserClient::CanCreateWindow( -+ content::RenderFrameHost* opener, -+ const GURL& opener_url, -+ const GURL& opener_top_level_frame_url, -+ const url::Origin& source_origin, -+ content::mojom::WindowContainerType container_type, -+ const GURL& target_url, -+ const content::Referrer& referrer, -+ const std::string& frame_name, -+ WindowOpenDisposition disposition, -+ const blink::mojom::WindowFeatures& features, -+ bool user_gesture, -+ bool opener_suppressed, -+ bool* no_javascript_access) { -+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); -+ DCHECK(opener); -+ -+ if (IsFilteringNeeded(opener)) { -+ content::WebContents* web_contents = -+ content::WebContents::FromRenderFrameHost(opener); -+ auto* subscription_service = -+ adblock::SubscriptionServiceFactory::GetForBrowserContext( -+ web_contents->GetBrowserContext()); -+ -+ GURL popup_url(target_url); -+ web_contents->GetPrimaryMainFrame()->GetProcess()->FilterURL(false, -+ &popup_url); -+ auto* classification_runner = -+ adblock::ResourceClassificationRunnerFactory::GetForBrowserContext( -+ web_contents->GetBrowserContext()); -+ const auto popup_blocking_decision = -+ classification_runner->ShouldBlockPopup( -+ subscription_service->GetCurrentSnapshot(), popup_url, opener); -+ if (popup_blocking_decision == adblock::FilterMatchResult::kAllowRule) { -+ return true; -+ } -+ if (popup_blocking_decision == adblock::FilterMatchResult::kBlockRule) { -+ return false; -+ } -+ // Otherwise, if eyeo adblocking is disabled or there is no rule that -+ // explicitly allows or blocks a popup, fall back on Chromium's built-in -+ // popup blocker. -+ DCHECK(popup_blocking_decision == adblock::FilterMatchResult::kDisabled || -+ popup_blocking_decision == adblock::FilterMatchResult::kNoRule); -+ } -+ -+ return ChromeContentBrowserClient::CanCreateWindow( -+ opener, opener_url, opener_top_level_frame_url, source_origin, -+ container_type, target_url, referrer, frame_name, disposition, features, -+ user_gesture, opener_suppressed, no_javascript_access); -+} -+ - bool AdblockContentBrowserClient::WillCreateURLLoaderFactory( - content::BrowserContext* browser_context, - content::RenderFrameHost* frame, -diff --git a/chrome/browser/adblock/adblock_content_browser_client.h b/chrome/browser/adblock/adblock_content_browser_client.h ---- a/chrome/browser/adblock/adblock_content_browser_client.h -+++ b/chrome/browser/adblock/adblock_content_browser_client.h -@@ -82,6 +82,20 @@ class AdblockContentBrowserClient : public ChromeContentBrowserClient { - scoped_refptr navigation_response_task_runner) - override; - -+ bool CanCreateWindow(content::RenderFrameHost* opener, -+ const GURL& opener_url, -+ const GURL& opener_top_level_frame_url, -+ const url::Origin& source_origin, -+ content::mojom::WindowContainerType container_type, -+ const GURL& target_url, -+ const content::Referrer& referrer, -+ const std::string& frame_name, -+ WindowOpenDisposition disposition, -+ const blink::mojom::WindowFeatures& features, -+ bool user_gesture, -+ bool opener_suppressed, -+ bool* no_javascript_access) override; -+ - private: - void CreateWebSocketInternal( - content::RenderProcessHost* process, -diff --git a/components/blocked_content/popup_blocker.cc b/components/blocked_content/popup_blocker.cc ---- a/components/blocked_content/popup_blocker.cc -+++ b/components/blocked_content/popup_blocker.cc -@@ -20,6 +20,11 @@ - #include "third_party/blink/public/mojom/frame/frame.mojom-shared.h" - - namespace blocked_content { -+ -+CROMITE_FEATURE(kStrictPopupBlocker, -+ "StrictPopupBlocker", -+ base::FEATURE_DISABLED_BY_DEFAULT); -+ - namespace { - - content::Page& GetSourcePageForPopup( -@@ -88,7 +93,9 @@ PopupBlockType ShouldBlockPopup(content::WebContents* web_contents, - GetSourcePageForPopup(open_url_params, web_contents))) { - return PopupBlockType::kAbusive; - } -- return PopupBlockType::kNotBlocked; -+ return base::FeatureList::IsEnabled(kStrictPopupBlocker) -+ ? PopupBlockType::kAbusive -+ : PopupBlockType::kNotBlocked; - } - - } // namespace -diff --git a/components/blocked_content/popup_blocker.h b/components/blocked_content/popup_blocker.h ---- a/components/blocked_content/popup_blocker.h -+++ b/components/blocked_content/popup_blocker.h -@@ -5,6 +5,7 @@ - #ifndef COMPONENTS_BLOCKED_CONTENT_POPUP_BLOCKER_H_ - #define COMPONENTS_BLOCKED_CONTENT_POPUP_BLOCKER_H_ - -+#include "base/feature_list.h" - #include "components/content_settings/core/browser/host_content_settings_map.h" - #include "third_party/blink/public/mojom/window_features/window_features.mojom-forward.h" - #include "ui/base/window_open_disposition.h" -@@ -18,6 +19,8 @@ struct OpenURLParams; - } // namespace content - - namespace blocked_content { -+BASE_DECLARE_FEATURE(kStrictPopupBlocker); -+ - class PopupNavigationDelegate; - - // Classifies what caused a popup to be blocked. -diff --git a/cromite_flags/chrome/browser/about_flags_cc/Stricter-popup-blocker.inc b/cromite_flags/chrome/browser/about_flags_cc/Stricter-popup-blocker.inc -new file mode 100644 ---- /dev/null -+++ b/cromite_flags/chrome/browser/about_flags_cc/Stricter-popup-blocker.inc -@@ -0,0 +1,14 @@ -+#ifdef ABOUT_FLAG_INCLUDE_SECTION -+ -+#include "components/blocked_content/popup_blocker.h" -+ -+#endif -+ -+#ifdef FLAG_SECTION -+ -+ {"enable-stricter-popup-blocker", -+ "Enable Stricter popup blocker", -+ "Blocks all pop-ups, even those with user gestures.", kOsAll, -+ FEATURE_VALUE_TYPE(blocked_content::kStrictPopupBlocker)}, -+ -+#endif // ifdef FLAG_SECTION --- diff --git a/build/cromite_patches/Add-AllowUserCertificates-flag.patch b/build/cromite_patches/Add-AllowUserCertificates-flag.patch index 90340f25144813f6d783d17f5a3b4ae417476007..de341491aec8b33350280afc6f908e650238158f 100644 --- a/build/cromite_patches/Add-AllowUserCertificates-flag.patch +++ b/build/cromite_patches/Add-AllowUserCertificates-flag.patch @@ -20,7 +20,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -228,6 +228,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider; +@@ -230,6 +230,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider; import org.chromium.content_public.browser.SelectionPopupController; import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.common.ContentSwitches; @@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.printing.PrintManagerDelegateImpl; import org.chromium.printing.PrintingController; import org.chromium.printing.PrintingControllerImpl; -@@ -1097,6 +1098,8 @@ public abstract class ChromeActivity +@@ -1064,6 +1065,8 @@ public abstract class ChromeActivity super.onStartWithNative(); ChromeActivitySessionTracker.getInstance().onStartWithNative(); ChromeCachedFlags.getInstance().cacheNativeFlags(); @@ -40,42 +40,42 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -144,6 +144,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -136,6 +136,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &feed::kFeedShowSignInCommand, &feed::kFeedSignedOutViewDemotion, &feed::kFeedUserInteractionReliabilityReport, + &kAllowUserCertificates, &feed::kInterestFeedV2, - &feed::kInterestFeedV2Autoplay, &feed::kInterestFeedV2Hearts, + &feed::kWebFeed, diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -103,6 +103,7 @@ public abstract class ChromeFeatureList { +@@ -141,6 +141,7 @@ public abstract class ChromeFeatureList { + return ChromeFeatureMap.getInstance().mutableFlagWithSafeDefault(featureName, defaultValue); } - /* Alphabetical: */ + public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates"; - public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR = "AdaptiveButtonInTopToolbar"; public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_TRANSLATE = "AdaptiveButtonInTopToolbarTranslate"; -@@ -522,6 +523,8 @@ public abstract class ChromeFeatureList { - public static final CachedFlag sAndroidAppIntegration = - new CachedFlag(ANDROID_APP_INTEGRATION, false); - public static final CachedFlag sAndroidHub = new CachedFlag(ANDROID_HUB, false); + public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_ADD_TO_BOOKMARKS = +@@ -533,6 +534,8 @@ public abstract class ChromeFeatureList { + public static final CachedFlag sAndroidHub = newCachedFlag(ANDROID_HUB, false); + public static final CachedFlag sAndroidTabGroupStableIds = + newCachedFlag(ANDROID_TAB_GROUP_STABLE_IDS, false); + public static final CachedFlag sAllowUserCertificates = -+ new CachedFlag(ALLOW_USER_CERTIFICATES, false); - public static final CachedFlag sAppMenuMobileSiteOption = - new CachedFlag(APP_MENU_MOBILE_SITE_OPTION, false); - public static final CachedFlag sArchiveTabService = new CachedFlag(ARCHIVE_TAB_SERVICE, false); -@@ -662,6 +665,7 @@ public abstract class ChromeFeatureList { ++ newCachedFlag(ALLOW_USER_CERTIFICATES, false); + public static final CachedFlag sArchiveTabService = newCachedFlag(ARCHIVE_TAB_SERVICE, false); + public static final CachedFlag sBackGestureActivityTabProvider = + newCachedFlag(BACK_GESTURE_ACTIVITY_TAB_PROVIDER, false); +@@ -679,6 +682,7 @@ public abstract class ChromeFeatureList { public static final List sFlagsCachedFullBrowser = List.of( + sAllowUserCertificates, sAndroidAppIntegration, + sAndroidElegantTextHeight, sAndroidHub, - sAppMenuMobileSiteOption, diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-AllowUserCertificates-flag.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-AllowUserCertificates-flag.inc new file mode 100644 --- /dev/null diff --git a/build/cromite_patches/Add-Alt-D-hotkey-to-focus-address-bar.patch b/build/cromite_patches/Add-Alt-D-hotkey-to-focus-address-bar.patch index fa2a0be844dd1944580119d6d096d60539fd3257..da1a6026ea5eb366479ad5efaa1bfc112dbfda9c 100644 --- a/build/cromite_patches/Add-Alt-D-hotkey-to-focus-address-bar.patch +++ b/build/cromite_patches/Add-Alt-D-hotkey-to-focus-address-bar.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java -@@ -198,6 +198,8 @@ public class KeyboardShortcuts { +@@ -204,6 +204,8 @@ public class KeyboardShortcuts { R.string.keyboard_shortcut_address_bar, KeyEvent.KEYCODE_L, KeyEvent.META_CTRL_ON); diff --git a/build/cromite_patches/Add-IsCleartextPermitted-flag.patch b/build/cromite_patches/Add-IsCleartextPermitted-flag.patch index 6bdfae8b59af66c88df17a0c7143343042b41cae..4af1a40e48cd8185572ae8232220f9f664907717 100644 --- a/build/cromite_patches/Add-IsCleartextPermitted-flag.patch +++ b/build/cromite_patches/Add-IsCleartextPermitted-flag.patch @@ -44,7 +44,7 @@ new file mode 100644 diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -287,6 +287,11 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { +@@ -300,6 +300,11 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { } } diff --git a/build/cromite_patches/Add-a-proxy-configuration-page.patch b/build/cromite_patches/Add-a-proxy-configuration-page.patch index 283ddce191082e4efd339aa347f3ed88ac3872c5..20c241c2769a770695b310f29eee7792c699b664 100644 --- a/build/cromite_patches/Add-a-proxy-configuration-page.patch +++ b/build/cromite_patches/Add-a-proxy-configuration-page.patch @@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc -@@ -301,6 +301,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { +@@ -308,6 +308,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { builtins_to_provide.push_back( base::ASCIIToUTF16(chrome::kChromeUISettingsURL)); #endif @@ -100,8 +100,8 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd --- a/chrome/browser/browser_resources.grd +++ b/chrome/browser/browser_resources.grd -@@ -240,6 +240,9 @@ - +@@ -237,6 +237,9 @@ + + @@ -113,8 +113,8 @@ diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resou diff --git a/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc b/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc --- a/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc +++ b/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc -@@ -388,7 +388,7 @@ absl::optional CreateProxyConfigDict( - return absl::nullopt; +@@ -387,7 +387,7 @@ std::optional CreateProxyConfigDict( + return std::nullopt; } return ProxyConfigDictionary::CreateFixedServers(proxy_rules_string, - bypass_list); @@ -198,15 +198,15 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc @@ -191,6 +191,8 @@ + #include "printing/buildflags/buildflags.h" #include "rlz/buildflags/buildflags.h" - #include "third_party/abseil-cpp/absl/types/optional.h" +#include "chrome/browser/net/proxy_service_factory.h" + #if BUILDFLAG(ENABLE_BACKGROUND_MODE) #include "chrome/browser/background/background_mode_manager.h" #endif -@@ -1451,6 +1453,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1447,6 +1449,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { component_updater::RegisterPrefs(registry); domain_reliability::RegisterPrefs(registry); embedder_support::OriginTrialPrefs::RegisterPrefs(registry); @@ -673,15 +673,15 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc -@@ -56,6 +56,7 @@ +@@ -52,6 +52,7 @@ #include "chrome/browser/ui/webui/ntp_tiles_internals_ui.h" #include "chrome/browser/ui/webui/omnibox/omnibox_ui.h" #include "chrome/browser/ui/webui/policy/policy_ui.h" +#include "chrome/browser/ui/webui/proxy_config_ui.h" #include "chrome/browser/ui/webui/predictors/predictors_ui.h" + #include "chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_internals_ui.h" #include "chrome/browser/ui/webui/segmentation_internals/segmentation_internals_ui.h" - #include "chrome/browser/ui/webui/signin_internals_ui.h" -@@ -489,6 +490,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, +@@ -469,6 +470,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, return &NewWebUI; if (url.host_piece() == chrome::kChromeUINetExportHost) return &NewWebUI; @@ -1127,7 +1127,7 @@ new file mode 100644 diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc --- a/chrome/common/webui_url_constants.cc +++ b/chrome/common/webui_url_constants.cc -@@ -51,6 +51,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert"; +@@ -49,6 +49,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert"; const char kChromeUICertificateViewerURL[] = "chrome://view-cert/"; const char kChromeUIChromeSigninHost[] = "chrome-signin"; const char kChromeUIChromeSigninURL[] = "chrome://chrome-signin/"; @@ -1136,7 +1136,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons const char kChromeUIChromeURLsHost[] = "chrome-urls"; const char kChromeUIChromeURLsURL[] = "chrome://chrome-urls/"; const char kChromeUIComponentsHost[] = "components"; -@@ -454,6 +456,7 @@ bool IsSystemWebUIHost(base::StringPiece host) { +@@ -460,6 +462,7 @@ bool IsSystemWebUIHost(base::StringPiece host) { kChromeUILockScreenNetworkHost, kChromeUILockScreenStartReauthHost, kChromeUIMobileSetupHost, @@ -1144,7 +1144,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons kChromeUIMultiDeviceSetupHost, kChromeUINetworkHost, kChromeUINotificationTesterHost, -@@ -758,6 +761,7 @@ const char* const kChromeHostURLs[] = { +@@ -760,6 +763,7 @@ const char* const kChromeHostURLs[] = { #if !BUILDFLAG(IS_ANDROID) #if !BUILDFLAG(IS_CHROMEOS) kChromeUIAppLauncherPageHost, @@ -1155,7 +1155,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h --- a/chrome/common/webui_url_constants.h +++ b/chrome/common/webui_url_constants.h -@@ -137,6 +137,8 @@ extern const char kChromeUINTPTilesInternalsHost[]; +@@ -134,6 +134,8 @@ extern const char kChromeUINTPTilesInternalsHost[]; extern const char kChromeUINaClHost[]; extern const char kChromeUINetExportHost[]; extern const char kChromeUINetExportURL[]; @@ -1321,7 +1321,7 @@ diff --git a/components/proxy_config/proxy_config_dictionary.h b/components/prox diff --git a/components/proxy_config/proxy_policy_handler.cc b/components/proxy_config/proxy_policy_handler.cc --- a/components/proxy_config/proxy_policy_handler.cc +++ b/components/proxy_config/proxy_policy_handler.cc -@@ -262,7 +262,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies, +@@ -376,7 +376,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies, set_proxy_pref_value(ProxyConfigDictionary::CreateFixedServers( server->GetString(), bypass_list && bypass_list->is_string() ? bypass_list->GetString() @@ -1333,7 +1333,7 @@ diff --git a/components/proxy_config/proxy_policy_handler.cc b/components/proxy_ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_config.cc --- a/net/proxy_resolution/proxy_config.cc +++ b/net/proxy_resolution/proxy_config.cc -@@ -112,7 +112,7 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules) { +@@ -109,7 +109,7 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules) { &single_proxies, ProxyServer::SCHEME_HTTP); type = Type::PROXY_LIST; @@ -1342,7 +1342,7 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c } // Trim whitespace off the url scheme. -@@ -143,6 +143,56 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules) { +@@ -140,6 +140,56 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules) { } } @@ -1354,8 +1354,8 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c + // special case: a single proxy servers list specified + if (type == Type::PROXY_LIST) { + std::string proxy_list; -+ for (const ProxyServer& proxy_server : -+ single_proxies.GetAll()) { ++ for (const auto& proxy_chain : single_proxies.AllChains()) { ++ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0); + proxy_list += ProxyServerToProxyUri(proxy_server) + ";"; + } + // remove last semicolon @@ -1373,20 +1373,20 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c + + // start to build a per-scheme list + std::string list; -+ for (const ProxyServer& proxy_server : -+ proxies_for_http.GetAll()) { ++ for (const auto& proxy_chain : proxies_for_http.AllChains()) { ++ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0); + list += "http=" + ProxyServerToProxyUri(proxy_server) + ";"; + } -+ for (const ProxyServer& proxy_server : -+ proxies_for_https.GetAll()) { ++ for (const auto& proxy_chain : proxies_for_https.AllChains()) { ++ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0); + list += "https=" + ProxyServerToProxyUri(proxy_server) + ";"; + } -+ for (const ProxyServer& proxy_server : -+ proxies_for_ftp.GetAll()) { ++ for (const auto& proxy_chain : proxies_for_ftp.AllChains()) { ++ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0); + list += "ftp=" + ProxyServerToProxyUri(proxy_server) + ";"; + } -+ for (const ProxyServer& proxy_server : -+ fallback_proxies.GetAll()) { ++ for (const auto& proxy_chain : fallback_proxies.AllChains()) { ++ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0); + list += "socks=" + ProxyServerToProxyUri(proxy_server) + ";"; + } + if (list.length() != 0 ) { diff --git a/build/cromite_patches/Add-an-always-incognito-mode.patch b/build/cromite_patches/Add-an-always-incognito-mode.patch index 2d94d8a1f791f55a684934bef77e03791acd3604..d9987bba780aa96a0c49e76f034e793f386b18c5 100644 --- a/build/cromite_patches/Add-an-always-incognito-mode.patch +++ b/build/cromite_patches/Add-an-always-incognito-mode.patch @@ -33,7 +33,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../CustomTabIntentDataProvider.java | 5 +- .../browser/download/DownloadUtils.java | 16 +- .../history/HistoryContentManager.java | 7 +- - .../browser/history/HistoryManager.java | 28 ++- + .../browser/history/HistoryManager.java | 26 ++- .../chrome/browser/history/HistoryPage.java | 15 ++ .../native_page/NativePageFactory.java | 4 +- .../chrome/browser/ntp/RecentTabsManager.java | 28 ++- @@ -72,7 +72,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/ui/messages/android/BUILD.gn | 1 + .../snackbar/INeedSnackbarManager.java | 27 +++ chrome/common/pref_names.h | 6 + - .../browser/content_settings_pref_provider.cc | 8 +- + .../browser/content_settings_pref_provider.cc | 6 +- .../browser/content_settings_pref_provider.h | 2 + .../core/browser/host_content_settings_map.cc | 4 +- .../core/browser/host_content_settings_map.h | 3 + @@ -85,7 +85,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-an-always-incognito-mode.inc | 3 + .../add-an-always-incognito-mode.inc | 1 + net/base/file_stream_context.cc | 2 +- - 66 files changed, 773 insertions(+), 103 deletions(-) + 66 files changed, 770 insertions(+), 102 deletions(-) create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java @@ -98,7 +98,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -649,6 +649,7 @@ chrome_java_resources = [ +@@ -644,6 +644,7 @@ chrome_java_resources = [ "java/res/xml/main_preferences.xml", "java/res/xml/manage_sync_preferences.xml", "java/res/xml/phone_as_a_security_key_accessory_filter.xml", @@ -117,7 +117,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java", "java/src/org/chromium/chrome/browser/ActivityTabProvider.java", "java/src/org/chromium/chrome/browser/ActivityUtils.java", -@@ -968,6 +969,7 @@ chrome_java_sources = [ +@@ -979,6 +980,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/ChromeTrackingProtectionDelegate.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/TrackingProtectionNoticeController.java", @@ -243,7 +243,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -63,6 +63,10 @@ import org.chromium.base.task.TaskTraits; +@@ -66,6 +66,10 @@ import org.chromium.base.task.TaskTraits; import org.chromium.build.annotations.UsedByReflection; import org.chromium.cc.input.BrowserControlsState; import org.chromium.chrome.R; @@ -254,7 +254,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.IntentHandler.TabOpenType; import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.metrics.LaunchCauseMetrics; -@@ -632,9 +636,14 @@ public class ChromeTabbedActivity extends ChromeActivity +@@ -1996,6 +1997,9 @@ public abstract class ChromeActivity throw new IllegalStateException( "Attempting to access TabCreator before initialization"); } @@ -316,7 +316,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App import org.chromium.chrome.browser.bookmarks.BookmarkFeatures; import org.chromium.chrome.browser.bookmarks.BookmarkModel; import org.chromium.chrome.browser.bookmarks.PowerBookmarkUtils; -@@ -100,6 +101,10 @@ import java.lang.annotation.RetentionPolicy; +@@ -103,6 +104,10 @@ import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.List; @@ -327,7 +327,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App /** * Base implementation of {@link AppMenuPropertiesDelegate} that handles hiding and showing menu * items based on activity state. -@@ -597,6 +602,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -604,6 +609,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) { @@ -341,7 +341,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App // We have to iterate all menu items since same menu item ID may be associated with more // than one menu items. boolean isOverviewModeMenu = menuGroup == MenuGroup.OVERVIEW_MODE_MENU; -@@ -659,7 +671,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -667,7 +679,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } if (item.getItemId() == R.id.recent_tabs_menu_id) { @@ -358,7 +358,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App } if (item.getItemId() == R.id.menu_select_tabs) { item.setVisible(isMenuSelectTabsVisible); -@@ -865,8 +885,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -876,8 +896,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate && !isChromeScheme && !isFileScheme && !isContentScheme @@ -452,17 +452,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java -@@ -21,6 +21,7 @@ import org.chromium.base.ContextUtils; - import org.chromium.base.supplier.ObservableSupplier; +@@ -22,6 +22,7 @@ import org.chromium.base.supplier.ObservableSupplier; + import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.DefaultBrowserInfo; import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; import org.chromium.chrome.browser.app.appmenu.DividerLineMenuItemViewBinder; -@@ -195,6 +196,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat - downloadItemVisible = false; +@@ -218,6 +219,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat openInChromeItemVisible = false; + tryAddingReadAloud = false; } + if (AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()) { + downloadItemVisible = true; @@ -473,8 +473,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java -@@ -83,6 +83,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; - import org.chromium.components.version_info.VersionInfo; +@@ -83,6 +83,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable; + import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.device.mojom.ScreenOrientationLockType; +import org.chromium.base.ContextUtils; @@ -483,7 +483,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; -@@ -1294,7 +1297,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1291,7 +1294,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid @Override public boolean isIncognito() { @@ -502,7 +502,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.IntentHandler; - import org.chromium.chrome.browser.app.download.home.DownloadActivity; + import org.chromium.chrome.browser.app.download.home.DownloadActivityLauncher; @@ -74,6 +75,10 @@ import org.chromium.url.GURL; import java.io.File; @@ -514,7 +514,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo /** A class containing some utility static methods. */ public class DownloadUtils { private static final String TAG = "download"; -@@ -311,7 +316,16 @@ public class DownloadUtils { +@@ -286,7 +291,16 @@ public class DownloadUtils { // Offline pages isn't supported in Incognito. This should be checked before calling // OfflinePageBridge.getForProfile because OfflinePageBridge instance will not be found // for incognito profile. @@ -535,7 +535,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java -@@ -243,7 +243,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver +@@ -239,7 +239,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver mHistoryAdapter.generateFooterItems(); // Listen to changes in sign in state. @@ -546,7 +546,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History // Create PrefChangeRegistrar to receive notifications on preference changes. mPrefChangeRegistrar = new PrefChangeRegistrar(); -@@ -278,7 +280,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver +@@ -275,7 +277,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver mHistoryAdapter.onDestroyed(); mLargeIconBridge.destroy(); mLargeIconBridge = null; @@ -559,7 +559,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java -@@ -35,6 +35,7 @@ import com.google.android.material.tabs.TabLayout.OnTabSelectedListener; +@@ -23,6 +23,7 @@ import com.google.android.material.tabs.TabLayout; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.supplier.ObservableSupplier; @@ -567,9 +567,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; -@@ -75,6 +76,12 @@ import java.io.Serializable; +@@ -49,6 +50,12 @@ import org.chromium.ui.base.Clipboard; + import java.util.List; - import java.util.concurrent.atomic.AtomicReference; +import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.base.ContextUtils; @@ -580,7 +580,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History /** Combines and manages the different UI components of browsing history. */ public class HistoryManager implements OnMenuItemClickListener, -@@ -164,7 +171,7 @@ public class HistoryManager +@@ -133,7 +140,7 @@ public class HistoryManager recordUserAction("Show"); // If incognito placeholder is shown, we don't need to create History UI elements. @@ -589,17 +589,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History mSelectableListLayout = null; mRootView = getIncognitoHistoryPlaceholderView(); return; -@@ -672,7 +679,7 @@ public class HistoryManager - - private void swapContentView() { - boolean toHistoryClusters; -- if (mIsIncognito) { -+ if (shouldShowIncognitoPlaceholder()) { - return; - } else if (isHistoryClustersUIShowing()) { - toHistoryClusters = false; -@@ -736,9 +743,22 @@ public class HistoryManager - && mContentView == mHistoryClustersCoordinator.getActivityContentView(); +@@ -339,9 +346,22 @@ public class HistoryManager + onBackPressStateChanged(); } + public boolean isIncognito() { return mIsIncognito; } @@ -622,15 +613,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History // If Incognito placeholder is shown no need to call any destroy method. return; } -@@ -758,7 +778,7 @@ public class HistoryManager +@@ -397,7 +417,7 @@ public class HistoryManager * @return True if manager handles this event, false if it decides to ignore. */ - public boolean onBackPressed() { + private boolean onBackPressed() { - if (mIsIncognito || mSelectableListLayout == null) { + if (shouldShowIncognitoPlaceholder() || mSelectableListLayout == null) { // If Incognito placeholder is shown, the back press should handled by HistoryActivity. return false; - } else if (isHistoryClustersUIShowing()) { + } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java @@ -639,10 +630,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; - import org.chromium.chrome.browser.history_clusters.HistoryClustersConstants; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tab.Tab; -@@ -17,6 +18,12 @@ import org.chromium.chrome.browser.ui.native_page.BasicNativePage; + import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; +@@ -16,6 +17,12 @@ import org.chromium.chrome.browser.ui.native_page.BasicNativePage; import org.chromium.chrome.browser.ui.native_page.NativePageHost; import org.chromium.components.embedder_support.util.UrlConstants; @@ -655,7 +646,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History /** Native page for managing browsing history. */ public class HistoryPage extends BasicNativePage { private HistoryManager mHistoryManager; -@@ -42,6 +49,14 @@ public class HistoryPage extends BasicNativePage { +@@ -41,6 +48,14 @@ public class HistoryPage extends BasicNativePage { String url) { super(host); @@ -673,15 +664,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java -@@ -16,6 +16,7 @@ import org.chromium.base.jank_tracker.JankTracker; - import org.chromium.base.supplier.DestroyableObservableSupplier; +@@ -17,6 +17,7 @@ import org.chromium.base.supplier.DestroyableObservableSupplier; import org.chromium.base.supplier.ObservableSupplier; + import org.chromium.base.supplier.OneshotSupplier; import org.chromium.base.supplier.Supplier; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; -@@ -276,7 +277,8 @@ public class NativePageFactory { +@@ -297,7 +298,8 @@ public class NativePageFactory { String url, NativePage candidatePage, Tab tab, boolean isIncognito) { NativePage page; @@ -720,7 +711,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM mActiveTab = tab; mTabModelSelector = tabModelSelector; mShowHistoryManager = showHistoryManager; -@@ -258,6 +268,22 @@ public class RecentTabsManager +@@ -263,6 +273,22 @@ public class RecentTabsManager */ public void openRecentlyClosedTab(RecentlyClosedTab tab, int windowDisposition) { if (mIsDestroyed) return; @@ -911,7 +902,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java -@@ -74,6 +74,7 @@ import org.chromium.chrome.browser.signin.SyncConsentActivityLauncherImpl; +@@ -75,6 +75,7 @@ import org.chromium.chrome.browser.signin.SyncConsentActivityLauncherImpl; import org.chromium.chrome.browser.site_settings.ChromeSiteSettingsDelegate; import org.chromium.chrome.browser.sync.SyncServiceFactory; import org.chromium.chrome.browser.ui.device_lock.MissingDeviceLockLauncher; @@ -919,7 +910,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable; import org.chromium.components.browser_ui.accessibility.AccessibilitySettings; -@@ -359,6 +360,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -362,6 +363,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity ((PrivacySandboxSettingsBaseFragment) fragment) .setSnackbarManager(getSnackbarManager()); } @@ -1044,16 +1035,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -129,6 +129,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetController; +@@ -139,6 +139,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetController; import org.chromium.components.webapps.bottomsheet.PwaBottomSheetControllerFactory; import org.chromium.ui.base.ActivityWindowAndroid; import org.chromium.ui.base.DeviceFormFactor; +import org.chromium.base.ContextUtils; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.ui.base.IntentRequestTracker; + import org.chromium.ui.dragdrop.DragDropGlobalState; import org.chromium.ui.modaldialog.ModalDialogManager; - -@@ -942,7 +944,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1011,7 +1013,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { () -> { mTabCreatorManagerSupplier .get() @@ -1107,16 +1098,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java -@@ -51,6 +51,8 @@ import org.chromium.components.embedder_support.util.UrlUtilities; +@@ -49,6 +49,8 @@ import org.chromium.chrome.features.start_surface.StartSurfaceUserData; + import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.content_public.browser.LoadUrlParams; - import org.chromium.url.GURL; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -@@ -673,6 +675,13 @@ public class TabPersistentStore { +@@ -670,6 +672,13 @@ public class TabPersistentStore { } } } @@ -1133,7 +1124,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -40,6 +40,7 @@ import org.chromium.base.supplier.OneshotSupplier; +@@ -41,6 +41,7 @@ import org.chromium.base.supplier.OneshotSupplier; import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; @@ -1141,15 +1132,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.app.tab_activity_glue.TabReparentingController; import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton; -@@ -590,7 +591,7 @@ public class ToolbarManager +@@ -615,7 +616,7 @@ public class ToolbarManager TraceEvent.end("isOfflinePage"); return ret; } - }); + }, AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()); mControlContainer = controlContainer; + mToolbarHairline = mControlContainer.findViewById(R.id.toolbar_hairline); assert mControlContainer != null; - diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java @@ -1198,7 +1189,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/android/historical_tab_saver.cc --- a/chrome/browser/android/historical_tab_saver.cc +++ b/chrome/browser/android/historical_tab_saver.cc -@@ -26,6 +26,11 @@ +@@ -27,6 +27,11 @@ #include "components/sessions/core/tab_restore_service.h" #include "content/public/browser/web_contents.h" @@ -1210,7 +1201,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and using base::android::JavaParamRef; using base::android::ScopedJavaLocalRef; -@@ -38,7 +43,8 @@ constexpr int kInvalidGroupId = -1; +@@ -39,7 +44,8 @@ constexpr int kInvalidGroupId = -1; void CreateHistoricalTab( TabAndroid* tab_android, @@ -1220,7 +1211,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and if (!tab_android) { return; } -@@ -49,9 +55,14 @@ void CreateHistoricalTab( +@@ -50,9 +56,14 @@ void CreateHistoricalTab( return; } @@ -1237,16 +1228,16 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and if (!service) { return; } -@@ -99,7 +110,7 @@ void CreateHistoricalBulkClosure( +@@ -100,7 +111,7 @@ void CreateHistoricalBulkClosure( std::vector per_tab_android_group_id, - std::vector tabs, + std::vector> tabs, std::vector web_contents_state) { - DCHECK(model); + if (!model) return; DCHECK_EQ(android_group_ids.size(), group_titles.size()); DCHECK_EQ(per_tab_android_group_id.size(), tabs.size()); -@@ -234,11 +245,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab( +@@ -235,11 +246,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab( JNIEnv* env, const JavaParamRef& jtab_android, const JavaParamRef& state, @@ -1264,7 +1255,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc -@@ -350,6 +350,15 @@ ChromeAutocompleteProviderClient::GetProviderStateService() const { +@@ -357,6 +357,15 @@ ChromeAutocompleteProviderClient::GetProviderStateService() const { return ProviderStateServiceFactory::GetForProfile(profile_); } @@ -1317,17 +1308,17 @@ diff --git a/chrome/browser/autocomplete/remote_suggestions_service_factory.cc b diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.cc b/chrome/browser/content_settings/host_content_settings_map_factory.cc --- a/chrome/browser/content_settings/host_content_settings_map_factory.cc +++ b/chrome/browser/content_settings/host_content_settings_map_factory.cc -@@ -15,6 +15,7 @@ - #include "chrome/browser/profiles/profile.h" +@@ -16,6 +16,7 @@ + #include "chrome/browser/profiles/profiles_state.h" #include "chrome/browser/search_engines/template_url_service_factory.h" #include "chrome/common/buildflags.h" +#include "chrome/common/pref_names.h" #include "components/content_settings/core/browser/content_settings_pref_provider.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/permissions/features.h" -@@ -119,9 +120,25 @@ scoped_refptr - should_record_metrics && ash::ProfileHelper::IsUserProfile(profile); - #endif // BUILDFLAG(IS_CHROMEOS_ASH) +@@ -105,9 +106,25 @@ scoped_refptr + if (profile->IsOffTheRecord() && !profile->IsGuestSession()) + GetForProfile(original_profile); + bool always_incognito_enabled = false; + bool force_save_site_settings = false; @@ -1350,9 +1341,9 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c + !force_save_site_settings && (profile->IsOffTheRecord() || profile->IsGuestSession()), + force_save_site_settings, /*store_last_modified=*/true, profile->ShouldRestoreOldSessionCookies(), - should_record_metrics)); + profiles::IsRegularUserProfile(profile))); -@@ -131,6 +148,9 @@ scoped_refptr +@@ -117,6 +134,9 @@ scoped_refptr HostContentSettingsMap::WEBUI_ALLOWLIST_PROVIDER, std::move(allowlist_provider)); @@ -1365,17 +1356,17 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/history/history_tab_helper.cc --- a/chrome/browser/history/history_tab_helper.cc +++ b/chrome/browser/history/history_tab_helper.cc -@@ -38,6 +38,9 @@ - #include "chrome/browser/ui/android/tab_model/tab_model_list.h" +@@ -41,6 +41,9 @@ #include "components/feed/core/v2/public/feed_api.h" #include "components/feed/core/v2/public/feed_service.h" + #include "content/public/browser/web_contents.h" +#include "chrome/common/pref_names.h" +#include "components/prefs/pref_registry_simple.h" +#include "components/prefs/pref_service.h" #else #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" -@@ -445,6 +448,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { +@@ -448,6 +451,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { history::HistoryService* HistoryTabHelper::GetHistoryService() { Profile* profile = Profile::FromBrowserContext(web_contents()->GetBrowserContext()); @@ -1389,7 +1380,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo if (profile->IsOffTheRecord()) return nullptr; -@@ -452,6 +462,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { +@@ -455,6 +465,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { profile, ServiceAccessType::IMPLICIT_ACCESS); } @@ -1409,18 +1400,18 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/history/history_tab_helper.h --- a/chrome/browser/history/history_tab_helper.h +++ b/chrome/browser/history/history_tab_helper.h -@@ -14,6 +14,8 @@ +@@ -15,6 +15,8 @@ + #include "components/translate/core/browser/translate_driver.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_user_data.h" - #include "third_party/abseil-cpp/absl/types/optional.h" +#include "components/prefs/pref_registry_simple.h" +#include "components/prefs/pref_service.h" namespace history { struct HistoryAddPageArgs; -@@ -53,6 +55,11 @@ class HistoryTabHelper - force_eligible_tab_for_testing_ = force; - } +@@ -54,6 +56,11 @@ class HistoryTabHelper + void SetAppId(const std::string& app_id) { app_id_ = app_id; } + #endif + static void RegisterProfilePrefs(PrefRegistrySimple* registry); + @@ -1430,7 +1421,7 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor private: explicit HistoryTabHelper(content::WebContents* web_contents); friend class content::WebContentsUserData; -@@ -83,9 +90,6 @@ class HistoryTabHelper +@@ -89,9 +96,6 @@ class HistoryTabHelper void OnLanguageDetermined( const translate::LanguageDetectionDetails& details) override; @@ -1643,9 +1634,9 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/ + last_n_ongoing_snapshot_info_.get(), + /*user_requested*/ false)); - IsSavingSamePageEnum saving_same_page_value = IsSavingSamePageEnum::kNewPage; - if (last_n_latest_saved_snapshot_info_) { -@@ -420,11 +434,12 @@ void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) { + last_n_latest_saved_snapshot_info_.reset(); + } +@@ -403,11 +417,12 @@ void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) { downloads_latest_saved_snapshot_info_->request_id, downloads_latest_saved_snapshot_info_->origin); std::vector ids{downloads_latest_saved_snapshot_info_->request_id}; @@ -1659,7 +1650,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/ OfflinePageModel::DeletePageResult::SUCCESS); } } -@@ -441,6 +456,7 @@ void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) { +@@ -424,6 +439,7 @@ void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) { // for early termination in case of errors. void RecentTabHelper::ContinueSnapshotWithIdsToPurge( SnapshotProgressInfo* snapshot_info, @@ -1667,7 +1658,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/ const std::vector& page_ids) { DCHECK(snapshot_info); -@@ -450,13 +466,20 @@ void RecentTabHelper::ContinueSnapshotWithIdsToPurge( +@@ -433,13 +449,20 @@ void RecentTabHelper::ContinueSnapshotWithIdsToPurge( criteria.offline_ids = page_ids; page_model_->DeletePagesWithCriteria( criteria, base::BindOnce(&RecentTabHelper::ContinueSnapshotAfterPurge, @@ -1693,7 +1684,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/ diff --git a/chrome/browser/offline_pages/recent_tab_helper.h b/chrome/browser/offline_pages/recent_tab_helper.h --- a/chrome/browser/offline_pages/recent_tab_helper.h +++ b/chrome/browser/offline_pages/recent_tab_helper.h -@@ -123,8 +123,10 @@ class RecentTabHelper +@@ -106,8 +106,10 @@ class RecentTabHelper bool EnsureInitialized(); void ContinueSnapshotWithIdsToPurge(SnapshotProgressInfo* snapshot_info, @@ -1704,7 +1695,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.h b/chrome/browser/o OfflinePageModel::DeletePageResult result); void SavePageCallback(SnapshotProgressInfo* snapshot_info, OfflinePageModel::SavePageResult result, -@@ -146,6 +148,9 @@ class RecentTabHelper +@@ -129,6 +131,9 @@ class RecentTabHelper // Not page-specific. bool snapshots_enabled_ = false; @@ -1738,7 +1729,7 @@ diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -256,6 +256,7 @@ +@@ -249,6 +249,7 @@ #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h" @@ -1746,7 +1737,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h" #include "chrome/browser/android/ntp/recent_tabs_page_prefs.h" #include "chrome/browser/android/oom_intervention/oom_intervention_decider.h" -@@ -1857,6 +1858,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -1856,6 +1857,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry); variations::VariationsService::RegisterProfilePrefs(registry); webapps::InstallPromptPrefs::RegisterProfilePrefs(registry); @@ -1790,10 +1781,10 @@ diff --git a/chrome/browser/profiles/profile_selections.h b/chrome/browser/profi @@ -6,7 +6,7 @@ #define CHROME_BROWSER_PROFILES_PROFILE_SELECTIONS_H_ - #include "base/feature_list.h" + #include - +#include "build/build_config.h" - #include "third_party/abseil-cpp/absl/types/optional.h" + #include "base/feature_list.h" class Profile; @@ -27,6 +27,11 @@ bool AreKeyedServicesDisabledForProfileByDefault(const Profile* profile); @@ -1885,7 +1876,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1225,6 +1225,37 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1228,6 +1228,37 @@ Your Google account may have other forms of browsing history like searches and a Clears history from all synced devices @@ -1991,7 +1982,7 @@ new file mode 100644 diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -3938,6 +3938,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = +@@ -3957,6 +3957,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = "net.out_of_process_system_dns_resolution_enabled"; #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) @@ -2007,7 +1998,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc --- a/components/content_settings/core/browser/content_settings_pref_provider.cc +++ b/components/content_settings/core/browser/content_settings_pref_provider.cc -@@ -91,10 +91,12 @@ void PrefProvider::RegisterProfilePrefs( +@@ -96,10 +96,12 @@ void PrefProvider::RegisterProfilePrefs( PrefProvider::PrefProvider(PrefService* prefs, bool off_the_record, @@ -2020,26 +2011,25 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov store_last_modified_(store_last_modified), clock_(base::DefaultClock::GetInstance()) { TRACE_EVENT_BEGIN("startup", "PrefProvider::PrefProvider"); -@@ -117,10 +119,14 @@ PrefProvider::PrefProvider(PrefService* prefs, +@@ -122,11 +124,13 @@ PrefProvider::PrefProvider(PrefService* prefs, WebsiteSettingsRegistry* website_settings = WebsiteSettingsRegistry::GetInstance(); for (const WebsiteSettingsInfo* info : *website_settings) { + bool save_site_settings = force_save_site_settings_ && + info->incognito_behavior() == WebsiteSettingsInfo::INHERIT_IN_INCOGNITO; content_settings_prefs_.insert(std::make_pair( - info->type(), std::make_unique( - info->type(), prefs_, &pref_change_registrar_, -- info->pref_name(), off_the_record_, restore_session, -+ info->pref_name(), -+ off_the_record_ && !save_site_settings, -+ restore_session, - base::BindRepeating(&PrefProvider::Notify, - base::Unretained(this))))); + info->type(), + std::make_unique( + info->type(), prefs_, &pref_change_registrar_, info->pref_name(), +- info->partitioned_pref_name(), off_the_record_, restore_session, ++ info->partitioned_pref_name(), off_the_record_ && !save_site_settings, restore_session, + base::BindRepeating(&PrefProvider::Notify, + base::Unretained(this))))); } diff --git a/components/content_settings/core/browser/content_settings_pref_provider.h b/components/content_settings/core/browser/content_settings_pref_provider.h --- a/components/content_settings/core/browser/content_settings_pref_provider.h +++ b/components/content_settings/core/browser/content_settings_pref_provider.h -@@ -37,6 +37,7 @@ class PrefProvider : public UserModifiableProvider { +@@ -38,6 +38,7 @@ class PrefProvider : public UserModifiableProvider { PrefProvider(PrefService* prefs, bool off_the_record, @@ -2047,7 +2037,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov bool store_last_modified, bool restore_session); -@@ -116,6 +117,7 @@ class PrefProvider : public UserModifiableProvider { +@@ -127,6 +128,7 @@ class PrefProvider : public UserModifiableProvider { raw_ptr prefs_; const bool off_the_record_; @@ -2058,7 +2048,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc --- a/components/content_settings/core/browser/host_content_settings_map.cc +++ b/components/content_settings/core/browser/host_content_settings_map.cc -@@ -288,6 +288,7 @@ struct ContentSettingEntry { +@@ -277,6 +277,7 @@ struct ContentSettingEntry { HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, bool is_off_the_record, @@ -2066,7 +2056,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics) -@@ -297,6 +298,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -286,6 +287,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, #endif prefs_(prefs), is_off_the_record_(is_off_the_record), @@ -2074,7 +2064,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. store_last_modified_(store_last_modified), allow_invalid_secondary_pattern_for_testing_(false), clock_(base::DefaultClock::GetInstance()) { -@@ -309,7 +311,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -298,7 +300,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, policy_provider->AddObserver(this); auto pref_provider_ptr = std::make_unique( @@ -2082,7 +2072,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. + prefs_, is_off_the_record_, force_save_site_settings_, store_last_modified_, restore_session); pref_provider_ = pref_provider_ptr.get(); content_settings_providers_[PREF_PROVIDER] = std::move(pref_provider_ptr); - user_modifiable_providers_.push_back(pref_provider_); + user_modifiable_providers_.push_back(pref_provider_.get()); diff --git a/components/content_settings/core/browser/host_content_settings_map.h b/components/content_settings/core/browser/host_content_settings_map.h --- a/components/content_settings/core/browser/host_content_settings_map.h +++ b/components/content_settings/core/browser/host_content_settings_map.h @@ -2094,7 +2084,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics); -@@ -531,6 +532,8 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -544,6 +545,8 @@ class HostContentSettingsMap : public content_settings::Observer, // Whether this settings map is for an incognito or guest session. bool is_off_the_record_; @@ -2106,7 +2096,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. diff --git a/components/omnibox/browser/autocomplete_provider_client.cc b/components/omnibox/browser/autocomplete_provider_client.cc --- a/components/omnibox/browser/autocomplete_provider_client.cc +++ b/components/omnibox/browser/autocomplete_provider_client.cc -@@ -29,3 +29,7 @@ base::WeakPtr +@@ -33,3 +33,7 @@ base::WeakPtr AutocompleteProviderClient::GetWeakPtr() { return nullptr; } @@ -2117,7 +2107,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.cc b/compon diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/components/omnibox/browser/autocomplete_provider_client.h --- a/components/omnibox/browser/autocomplete_provider_client.h +++ b/components/omnibox/browser/autocomplete_provider_client.h -@@ -138,6 +138,7 @@ class AutocompleteProviderClient : public OmniboxAction::Client { +@@ -137,6 +137,7 @@ class AutocompleteProviderClient : public OmniboxAction::Client { virtual bool IsOffTheRecord() const = 0; virtual bool IsIncognitoProfile() const = 0; virtual bool IsGuestSession() const = 0; @@ -2128,7 +2118,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/compone diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc --- a/components/omnibox/browser/base_search_provider.cc +++ b/components/omnibox/browser/base_search_provider.cc -@@ -349,7 +349,7 @@ bool BaseSearchProvider::CanSendZeroSuggestRequest( +@@ -350,7 +350,7 @@ bool BaseSearchProvider::CanSendSuggestRequestWithoutPageURL( } // Don't make a suggest request if in incognito mode. @@ -2140,7 +2130,7 @@ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omn diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc --- a/components/omnibox/browser/search_provider.cc +++ b/components/omnibox/browser/search_provider.cc -@@ -767,7 +767,9 @@ bool SearchProvider::IsQuerySuitableForSuggest(bool* query_is_private) const { +@@ -775,7 +775,9 @@ bool SearchProvider::IsQuerySuitableForSuggest(bool* query_is_private) const { // keyword input to a keyword suggest server, if any.) const TemplateURL* default_url = providers_.GetDefaultProviderURL(); const TemplateURL* keyword_url = providers_.GetKeywordProviderURL(); diff --git a/build/cromite_patches/Add-autoplay-site-setting.patch b/build/cromite_patches/Add-autoplay-site-setting.patch index fb3be1be3ada866623b632198e0e0e2a7f17e7e2..3c6d45a5c7194b80f52eccae573f5b26239cb8d4 100644 --- a/build/cromite_patches/Add-autoplay-site-setting.patch +++ b/build/cromite_patches/Add-autoplay-site-setting.patch @@ -279,7 +279,7 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -250,7 +250,7 @@ void ContentSettingsRegistry::Init() { +@@ -255,7 +255,7 @@ void ContentSettingsRegistry::Init() { ContentSettingsInfo::INHERIT_IN_INCOGNITO, ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); @@ -299,7 +299,7 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi #include "third_party/blink/public/platform/web_media_player.h" #include "third_party/blink/public/web/web_local_frame.h" #include "third_party/blink/public/web/web_local_frame_client.h" -@@ -332,6 +333,8 @@ void AutoplayPolicy::TryUnlockingUserGesture() { +@@ -330,6 +331,8 @@ void AutoplayPolicy::TryUnlockingUserGesture() { } bool AutoplayPolicy::IsGestureNeededForPlayback() const { @@ -308,7 +308,7 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi if (!IsLockedPendingUserGesture()) return false; -@@ -430,6 +433,17 @@ void AutoplayPolicy::MaybeSetAutoplayInitiated() { +@@ -428,6 +431,17 @@ void AutoplayPolicy::MaybeSetAutoplayInitiated() { } } @@ -329,7 +329,7 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.h b/third_party/blink/renderer/core/html/media/autoplay_policy.h --- a/third_party/blink/renderer/core/html/media/autoplay_policy.h +++ b/third_party/blink/renderer/core/html/media/autoplay_policy.h -@@ -137,6 +137,10 @@ class CORE_EXPORT AutoplayPolicy final +@@ -138,6 +138,10 @@ class CORE_EXPORT AutoplayPolicy final // should use, if checking to see if an action is allowed. bool IsLockedPendingUserGesture() const; diff --git a/build/cromite_patches/Add-bookmark-import-export-actions.patch b/build/cromite_patches/Add-bookmark-import-export-actions.patch index d1d0f4ce6478dd5a0388c662d7c8f899af16cbd5..33ab53ef1fdfe7634aee4c44874d363d2a9b6f3d 100644 --- a/build/cromite_patches/Add-bookmark-import-export-actions.patch +++ b/build/cromite_patches/Add-bookmark-import-export-actions.patch @@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../menu/bookmark_toolbar_menu_improved.xml | 14 + .../browser/TabbedModeTabDelegateFactory.java | 5 +- .../app/bookmarks/BookmarkActivity.java | 32 ++ - .../browser/bookmarks/BookmarkBridge.java | 280 +++++++++++++++++ + .../browser/bookmarks/BookmarkBridge.java | 285 +++++++++++++++++ .../browser/bookmarks/BookmarkDelegate.java | 10 + .../bookmarks/BookmarkManagerCoordinator.java | 9 + .../bookmarks/BookmarkManagerMediator.java | 23 ++ @@ -26,11 +26,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../bookmarks/BookmarkToolbarViewBinder.java | 6 + .../native_page/NativePageFactory.java | 11 +- chrome/browser/BUILD.gn | 11 +- - .../bookmarks/android/bookmark_bridge.cc | 283 ++++++++++++++++++ + .../bookmarks/android/bookmark_bridge.cc | 287 ++++++++++++++++++ .../bookmarks/android/bookmark_bridge.h | 30 +- .../browser/bookmarks/bookmark_html_writer.cc | 11 + .../dialogs/DownloadLocationCustomView.java | 8 +- - .../DownloadLocationDialogCoordinator.java | 8 +- + .../DownloadLocationDialogCoordinator.java | 10 +- .../flags/android/chrome_feature_list.cc | 1 + .../browser/flags/ChromeFeatureList.java | 1 + chrome/browser/importer/profile_writer.cc | 10 + @@ -53,7 +53,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ui/shell_dialogs/select_file_dialog_linux.cc | 4 + ui/shell_dialogs/select_file_dialog_linux.h | 2 + ui/shell_dialogs/select_file_dialog_win.cc | 5 + - 43 files changed, 918 insertions(+), 29 deletions(-) + 43 files changed, 928 insertions(+), 30 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-bookmark-import-export-actions.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/add-bookmark-import-export-actions.inc @@ -120,15 +120,15 @@ diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/c diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java -@@ -11,6 +11,7 @@ import androidx.annotation.Nullable; - import org.chromium.base.jank_tracker.JankTracker; +@@ -13,6 +13,7 @@ import org.chromium.base.jank_tracker.JankTracker; import org.chromium.base.supplier.ObservableSupplier; + import org.chromium.base.supplier.OneshotSupplier; import org.chromium.base.supplier.Supplier; +import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.tab_activity_glue.ActivityTabWebContentsDelegateAndroid; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.compositor.CompositorViewHolder; -@@ -50,7 +51,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; +@@ -53,7 +54,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; * {@link ChromeTabbedActivity}. */ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { @@ -137,7 +137,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe private final BrowserControlsVisibilityDelegate mAppBrowserControlsVisibilityDelegate; private final Supplier mShareDelegateSupplier; private final Supplier mEphemeralTabCoordinatorSupplier; -@@ -77,7 +78,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -82,7 +83,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { private NativePageFactory mNativePageFactory; public TabbedModeTabDelegateFactory( @@ -149,8 +149,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java -@@ -21,6 +21,11 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; - import org.chromium.chrome.browser.profiles.Profile; +@@ -21,6 +21,11 @@ import org.chromium.chrome.browser.profiles.Profile; + import org.chromium.chrome.browser.profiles.ProfileProvider; import org.chromium.components.bookmarks.BookmarkId; import org.chromium.components.embedder_support.util.UrlConstants; +import org.chromium.ui.base.ActivityWindowAndroid; @@ -171,10 +171,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); -@@ -66,8 +74,23 @@ public class BookmarkActivity extends SnackbarActivity { - mBookmarkManagerCoordinator::onBackPressed, - SecondaryActivity.BOOKMARK); - } +@@ -58,8 +66,23 @@ public class BookmarkActivity extends SnackbarActivity { + getOnBackPressedDispatcher(), + mBookmarkManagerCoordinator, + SecondaryActivity.BOOKMARK); + + final boolean listenToActivityState = true; + mIntentRequestTracker = IntentRequestTracker.createFromActivity(this); @@ -195,7 +195,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B @Override protected void onDestroy() { super.onDestroy(); -@@ -77,6 +100,7 @@ public class BookmarkActivity extends SnackbarActivity { +@@ -69,6 +92,7 @@ public class BookmarkActivity extends SnackbarActivity { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -203,7 +203,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B if (requestCode == EDIT_BOOKMARK_REQUEST_CODE && resultCode == RESULT_OK) { BookmarkId bookmarkId = BookmarkId.getBookmarkIdFromString( -@@ -85,6 +109,14 @@ public class BookmarkActivity extends SnackbarActivity { +@@ -77,6 +101,14 @@ public class BookmarkActivity extends SnackbarActivity { } } @@ -221,62 +221,56 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java -@@ -4,7 +4,20 @@ - - package org.chromium.chrome.browser.bookmarks; +@@ -33,6 +33,48 @@ import org.chromium.url.GURL; + import java.util.ArrayList; + import java.util.List; +import android.app.Activity; +import android.content.Intent; +import android.content.Context; +import android.content.pm.PackageManager; +import android.content.DialogInterface; -+import android.content.Intent; -+import android.net.Uri; ++import android.content.res.Resources; +import android.content.ContentResolver; ++import android.net.Uri; +import android.provider.Browser; +import android.provider.DocumentsContract; +import android.Manifest.permission; ++import android.view.View; ++import android.view.LayoutInflater; ++ +import androidx.appcompat.app.AlertDialog; - import android.os.SystemClock; +import android.os.Build; - import android.text.TextUtils; - import android.util.Pair; - -@@ -36,6 +49,33 @@ import org.chromium.url.GURL; - import java.util.ArrayList; - import java.util.List; - ++ ++import java.io.File; ++ +import org.chromium.base.ContentUriUtils; ++import org.chromium.base.shared_preferences.SharedPreferencesManager; ++import org.chromium.base.task.AsyncTask; +import org.chromium.chrome.R; +import org.chromium.chrome.browser.document.ChromeLauncherActivity; +import org.chromium.chrome.browser.IntentHandler; +import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; -+import org.chromium.base.shared_preferences.SharedPreferencesManager; ++import org.chromium.chrome.browser.download.DownloadLocationDialogType; ++import org.chromium.chrome.browser.download.settings.DownloadLocationHelperImpl; ++import org.chromium.chrome.browser.download.dialogs.DownloadLocationDialogController; ++import org.chromium.chrome.browser.download.dialogs.DownloadLocationDialogCoordinator; ++import org.chromium.chrome.browser.download.dialogs.DownloadLocationCustomView; ++import org.chromium.chrome.browser.download.DirectoryOption; ++import org.chromium.chrome.browser.profiles.ProfileManager; +import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.ui.base.PageTransition; +import org.chromium.ui.base.WindowAndroid; -+import org.chromium.ui.modaldialog.ModalDialogManager; -+ -+import android.view.View; -+import android.view.LayoutInflater; +import org.chromium.ui.modelutil.PropertyModel; ++import org.chromium.ui.modaldialog.ModalDialogManager; +import org.chromium.ui.modaldialog.ModalDialogProperties; +import org.chromium.ui.modaldialog.DialogDismissalCause; -+import org.chromium.chrome.browser.download.DownloadLocationDialogType; -+import org.chromium.chrome.browser.download.dialogs.DownloadLocationDialogController; -+import org.chromium.chrome.browser.download.dialogs.DownloadLocationDialogCoordinator; -+import org.chromium.chrome.browser.download.dialogs.DownloadLocationCustomView; -+import org.chromium.chrome.browser.download.DirectoryOption; -+import android.content.res.Resources; -+import org.chromium.base.task.AsyncTask; -+ -+import java.io.File; + /** * Provides the communication channel for Android to fetch and manipulate the bookmark model stored * in native. -@@ -435,6 +475,209 @@ class BookmarkBridge { +@@ -483,6 +525,212 @@ class BookmarkBridge { .getTotalBookmarkCount(mNativeBookmarkBridge, id.getId(), id.getType()); } @@ -430,7 +424,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm + // Actually show the dialog. + mCustomView = (DownloadLocationCustomView) LayoutInflater.from(context).inflate( + R.layout.download_location_dialog, null); -+ mCustomView.initialize(DownloadLocationDialogType.DEFAULT, /*totalBytes*/ 0); ++ mCustomView.initialize(DownloadLocationDialogType.DEFAULT, /*totalBytes*/ 0, ++ (isChecked) -> {}, ++ new DownloadLocationHelperImpl(mProfile)); + mCustomView.setTitle(context.getString(R.string.export_bookmarks_alert_title)); + mCustomView.setFileName(standardBoorkmarkName); + mCustomView.mDontShowAgain.setVisibility(View.GONE); @@ -480,13 +476,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm + }; + dialog.initialize(controller); + dialog.showDialog(context, modalDialogManager, /*totalBytes*/ 0, -+ DownloadLocationDialogType.DEFAULT, /*suggestedPath*/ "", /*isIncognito*/ false); ++ DownloadLocationDialogType.DEFAULT, /*suggestedPath*/ "", ++ ProfileManager.getLastUsedRegularProfile()); + } + /** * Synchronously gets a list of bookmarks that match the specified search query. * -@@ -950,6 +1193,39 @@ class BookmarkBridge { +@@ -1036,6 +1284,39 @@ class BookmarkBridge { depthList.add(depth); } @@ -526,7 +523,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm private static List> createPairsList(int[] left, int[] right) { List> pairList = new ArrayList<>(); for (int i = 0; i < left.length; i++) { -@@ -994,6 +1270,10 @@ class BookmarkBridge { +@@ -1094,6 +1375,10 @@ class BookmarkBridge { void getChildIds( long nativeBookmarkBridge, long id, int type, List bookmarksList); @@ -560,7 +557,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java -@@ -47,6 +47,8 @@ import org.chromium.components.image_fetcher.ImageFetcher; +@@ -48,6 +48,8 @@ import org.chromium.components.image_fetcher.ImageFetcher; import org.chromium.components.image_fetcher.ImageFetcherConfig; import org.chromium.components.image_fetcher.ImageFetcherFactory; import org.chromium.ui.KeyboardVisibilityDelegate; @@ -569,7 +566,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType; import org.chromium.ui.modelutil.MVCListAdapter.ModelList; -@@ -320,6 +322,13 @@ public class BookmarkManagerCoordinator +@@ -326,6 +328,13 @@ public class BookmarkManagerCoordinator // Public API implementation. @@ -605,7 +602,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** Keeps track of whether drag is enabled / active for bookmark lists. */ private class BookmarkDragStateDelegate implements DragStateDelegate { private BookmarkDelegate mBookmarkDelegate; -@@ -551,6 +556,14 @@ class BookmarkManagerMediator +@@ -554,6 +559,14 @@ class BookmarkManagerMediator mNativePage = nativePage; } @@ -620,7 +617,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** See BookmarkManager(Coordinator)#updateForUrl */ void updateForUrl(String url) { // Bookmark model is null if the manager has been destroyed. -@@ -727,6 +740,16 @@ class BookmarkManagerMediator +@@ -734,6 +747,16 @@ class BookmarkManagerMediator } } @@ -653,14 +650,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm @@ -31,7 +34,7 @@ public class BookmarkPage extends BasicNativePage { ComponentName componentName, SnackbarManager snackbarManager, - boolean isIncognito, + Profile profile, - NativePageHost host) { + NativePageHost host, ChromeActivity activity) { super(host); mBookmarkManagerCoordinator = -@@ -44,6 +47,9 @@ public class BookmarkPage extends BasicNativePage { - Profile.getLastUsedRegularProfile(), +@@ -43,6 +46,9 @@ public class BookmarkPage extends BasicNativePage { + profile, new BookmarkUiPrefs(ChromeSharedPreferences.getInstance())); mBookmarkManagerCoordinator.setBasicNativePage(this); + mBookmarkManagerCoordinator.setWindow(activity.getWindowAndroid(), @@ -726,7 +723,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java -@@ -129,6 +129,10 @@ class BookmarkToolbarMediator +@@ -132,6 +132,10 @@ class BookmarkToolbarMediator mBookmarkDelegate = bookmarkDelegate; mModel.set( BookmarkToolbarProperties.NAVIGATE_BACK_RUNNABLE, this::onNavigateBack); @@ -780,15 +777,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java -@@ -16,6 +16,7 @@ import org.chromium.base.jank_tracker.JankTracker; - import org.chromium.base.supplier.DestroyableObservableSupplier; +@@ -17,6 +17,7 @@ import org.chromium.base.supplier.DestroyableObservableSupplier; import org.chromium.base.supplier.ObservableSupplier; + import org.chromium.base.supplier.OneshotSupplier; import org.chromium.base.supplier.Supplier; +import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginSupplier; -@@ -52,7 +53,7 @@ import org.chromium.ui.util.ColorUtils; +@@ -54,7 +55,7 @@ import org.chromium.ui.util.ColorUtils; * Creates NativePage objects to show chrome-native:// URLs using the native Android view system. */ public class NativePageFactory { @@ -797,7 +794,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private final BottomSheetController mBottomSheetController; private final BrowserControlsManager mBrowserControlsManager; private final Supplier mCurrentTabSupplier; -@@ -70,7 +71,7 @@ public class NativePageFactory { +@@ -74,7 +75,7 @@ public class NativePageFactory { private NativePageBuilder mNativePageBuilder; public NativePageFactory( @@ -806,7 +803,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat @NonNull BottomSheetController sheetController, @NonNull BrowserControlsManager browserControlsManager, @NonNull Supplier currentTabSupplier, -@@ -130,7 +131,7 @@ public class NativePageFactory { +@@ -140,7 +141,7 @@ public class NativePageFactory { @VisibleForTesting static class NativePageBuilder { @@ -815,8 +812,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private final BottomSheetController mBottomSheetController; private final Supplier mUma; private final BrowserControlsManager mBrowserControlsManager; -@@ -146,7 +147,7 @@ public class NativePageFactory { - private final ObservableSupplier mTabContentManagerSupplier; +@@ -158,7 +159,7 @@ public class NativePageFactory { + private final OneshotSupplier mModuleRegistrySupplier; public NativePageBuilder( - Activity activity, @@ -824,10 +821,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat Supplier uma, BottomSheetController sheetController, BrowserControlsManager browserControlsManager, -@@ -208,7 +209,7 @@ public class NativePageFactory { +@@ -228,7 +229,7 @@ public class NativePageFactory { mActivity.getComponentName(), mSnackbarManagerSupplier.get(), - mTabModelSelector.isIncognitoSelected(), + tab.getProfile(), - new TabShim(tab, mBrowserControlsManager, mTabModelSelector)); + new TabShim(tab, mBrowserControlsManager, mTabModelSelector), mActivity); } @@ -836,7 +833,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -199,6 +199,8 @@ static_library("browser") { +@@ -201,6 +201,8 @@ static_library("browser") { "bluetooth/chrome_bluetooth_delegate_impl_client.h", "bookmarks/bookmark_model_factory.cc", "bookmarks/bookmark_model_factory.h", @@ -845,7 +842,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "bookmarks/chrome_bookmark_client.cc", "bookmarks/chrome_bookmark_client.h", "bookmarks/managed_bookmark_service_factory.cc", -@@ -1939,6 +1941,13 @@ static_library("browser") { +@@ -1935,6 +1937,13 @@ static_library("browser") { ] } @@ -859,7 +856,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn configs += [ "//build/config/compiler:wexit_time_destructors", "//build/config:precompiled_headers", -@@ -3664,8 +3673,6 @@ static_library("browser") { +@@ -3649,8 +3658,6 @@ static_library("browser") { "badging/badge_manager_factory.h", "banners/app_banner_manager_desktop.cc", "banners/app_banner_manager_desktop.h", @@ -871,7 +868,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -56,6 +56,25 @@ +@@ -59,6 +59,28 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/web_contents.h" @@ -893,11 +890,14 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse +#include "base/task/task_traits.h" +#include "base/task/thread_pool.h" +#include "content/public/browser/browser_task_traits.h" ++#include "base/files/file_path.h" ++#include "ui/shell_dialogs/selected_file_info.h" ++#include "ui/shell_dialogs/select_file_dialog.h" + using base::android::AttachCurrentThread; using base::android::ConvertUTF16ToJavaString; using base::android::ConvertUTF8ToJavaString; -@@ -73,12 +92,96 @@ using bookmarks::android::JavaBookmarkIdGetType; +@@ -76,12 +98,96 @@ using bookmarks::android::JavaBookmarkIdGetType; using content::BrowserThread; using power_bookmarks::PowerBookmarkMeta; @@ -994,10 +994,10 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse class BookmarkTitleComparer { public: explicit BookmarkTitleComparer(BookmarkBridge* bookmark_bridge, -@@ -199,6 +302,10 @@ BookmarkBridge::~BookmarkBridge() { - if (partner_bookmarks_shim_) - partner_bookmarks_shim_->RemoveObserver(this); - reading_list_manager_->RemoveObserver(this); +@@ -232,6 +338,10 @@ BookmarkBridge::~BookmarkBridge() { + partner_bookmarks_shim_observation_.Reset(); + bookmark_model_observation_.Reset(); + profile_observation_.Reset(); + // There may be pending file dialogs, we need to tell them that we've gone + // away so they don't try and call back to us. + if (select_file_dialog_) @@ -1005,7 +1005,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse } void BookmarkBridge::Destroy(JNIEnv*) { -@@ -539,6 +646,182 @@ jint BookmarkBridge::GetTotalBookmarkCount( +@@ -668,6 +778,183 @@ jint BookmarkBridge::GetTotalBookmarkCount( return count; } @@ -1087,8 +1087,9 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + return std::make_unique(data); +} + -+void BookmarkBridge::FileSelected(const base::FilePath& path, int index, ++void BookmarkBridge::FileSelected(const ui::SelectedFileInfo& file, int index, + void* params) { ++ base::FilePath path = file.path(); + base::ThreadPool::PostTaskAndReplyWithResult( + FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()}, + base::BindOnce(&BookmarkBridge::FileSelectedImpl, @@ -1191,7 +1192,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser/bookmarks/android/bookmark_bridge.h --- a/chrome/browser/bookmarks/android/bookmark_bridge.h +++ b/chrome/browser/bookmarks/android/bookmark_bridge.h -@@ -20,6 +20,7 @@ +@@ -21,6 +21,7 @@ #include "base/supports_user_data.h" #include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h" #include "chrome/browser/image_service/image_service_factory.h" @@ -1199,7 +1200,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_observer.h" #include "chrome/browser/reading_list/android/reading_list_manager.h" -@@ -31,6 +32,9 @@ +@@ -33,6 +34,9 @@ #include "components/prefs/pref_change_registrar.h" #include "url/android/gurl_android.h" @@ -1209,22 +1210,22 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser class BookmarkBridgeTest; // The delegate to fetch bookmarks information for the Android native -@@ -42,7 +46,8 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, +@@ -44,7 +48,8 @@ class BookmarkBridge : public ProfileObserver, + public bookmarks::BaseBookmarkModelObserver, public PartnerBookmarksShim::Observer, public ReadingListManager::Observer, - public ProfileObserver, - public base::SupportsUserData::Data { + public base::SupportsUserData::Data, + public ui::SelectFileDialog::Listener { public: - BookmarkBridge(Profile* profile, - bookmarks::BookmarkModel* model, -@@ -69,6 +74,12 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, + BookmarkBridge( + Profile* profile, +@@ -81,6 +86,12 @@ class BookmarkBridge : public ProfileObserver, bool IsDoingExtensiveChanges(JNIEnv* env); + // SelectFileDialog::Listener implementation. -+ void FileSelected(const base::FilePath& path, ++ void FileSelected(const ui::SelectedFileInfo& file, + int index, + void* params) override; + void FileSelectionCanceled(void* params) override; @@ -1232,7 +1233,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser jboolean IsEditBookmarksEnabled(JNIEnv* env); void LoadEmptyPartnerBookmarkShimForTesting(JNIEnv* env); -@@ -81,6 +92,15 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, +@@ -93,6 +104,15 @@ class BookmarkBridge : public ProfileObserver, jlong id, jint type); @@ -1248,10 +1249,10 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser void GetAllFoldersWithDepths( JNIEnv* env, const base::android::JavaParamRef& j_folders_obj, -@@ -310,12 +330,16 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, +@@ -356,12 +376,16 @@ class BookmarkBridge : public ProfileObserver, void DestroyJavaObject(); - raw_ptr profile_; + raw_ptr profile_; // weak + base::FilePath export_path_; + raw_ptr observer_; // weak + @@ -1265,9 +1266,9 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser // Information about the Partner bookmarks (must check for IsLoaded()). // This is owned by profile. -@@ -329,6 +353,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, - // Observes the profile destruction and creation. - base::ScopedObservation profile_observation_{this}; +@@ -389,6 +413,10 @@ class BookmarkBridge : public ProfileObserver, + + bool suppress_observer_notifications_ = false; + const std::string FileSelectedImpl(const base::FilePath& path); + void FileSelectedImplOnUIThread(const base::FilePath& path, @@ -1289,7 +1290,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b #include "chrome/browser/bookmarks/bookmark_model_factory.h" #include "chrome/browser/favicon/favicon_service_factory.h" #include "chrome/browser/profiles/profile.h" -@@ -229,7 +232,15 @@ class Writer : public base::RefCountedThreadSafe { +@@ -234,7 +237,15 @@ class Writer : public base::RefCountedThreadSafe { // Opens the file, returning true on success. bool OpenFile() { int flags = base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE; @@ -1316,17 +1317,17 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse + public CheckBox mDontShowAgain; private @DownloadLocationDialogType int mDialogType; private long mTotalBytes; - -@@ -70,7 +70,7 @@ public class DownloadLocationCustomView extends ScrollView + private Callback mOnClickedCallback; +@@ -72,7 +72,7 @@ public class DownloadLocationCustomView extends ScrollView mDontShowAgain = findViewById(R.id.show_again_checkbox); } -- void initialize(@DownloadLocationDialogType int dialogType, long totalBytes) { -+ public void initialize(@DownloadLocationDialogType int dialogType, long totalBytes) { - // TODO(xingliu): Remove this function, currently used by smart suggestion. - mDialogType = dialogType; - mTotalBytes = totalBytes; -@@ -123,7 +123,7 @@ public class DownloadLocationCustomView extends ScrollView +- void initialize( ++ public void initialize( + @DownloadLocationDialogType int dialogType, + long totalBytes, + Callback onClickedCallback, +@@ -130,7 +130,7 @@ public class DownloadLocationCustomView extends ScrollView * @return The text that the user inputted as the name of the file. */ @Nullable @@ -1335,7 +1336,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse if (mFileName == null || mFileName.getText() == null) return null; return mFileName.getText().toString(); } -@@ -132,7 +132,7 @@ public class DownloadLocationCustomView extends ScrollView +@@ -139,7 +139,7 @@ public class DownloadLocationCustomView extends ScrollView * @return The file path based on what the user selected as the location of the file. */ @Nullable @@ -1347,7 +1348,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java --- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java +++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java -@@ -35,12 +35,12 @@ import java.util.ArrayList; +@@ -37,18 +37,18 @@ import java.util.ArrayList; */ public class DownloadLocationDialogCoordinator implements ModalDialogProperties.Controller { @NonNull private DownloadLocationDialogController mController; @@ -1363,7 +1364,14 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse private long mTotalBytes; private @DownloadLocationDialogType int mDialogType; private String mSuggestedPath; -@@ -137,7 +137,7 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties. + private Context mContext; + private boolean mHasMultipleDownloadLocations; +- private Profile mProfile; ++ protected Profile mProfile; + private boolean mLocationDialogManaged; + + /** +@@ -140,7 +140,7 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties. * Called after retrieved the download directory options. * @param dirs An list of available download directories. */ @@ -1375,25 +1383,25 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -189,6 +189,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -176,6 +176,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kCacheActivityTaskID, &kCastDeviceFilter, &kClearOmniboxFocusAfterNavigation, - &kCloseTabSaveTabList, + &kBookmarksExportUseSaf, - &kCriticalPersistedTabData, &kCreateNewTabInitializeRenderer, - &kCCTBottomBarSwipeUpGesture, + &kCCTBrandTransparencyMemoryImprovement, + &kCCTClientDataHeader, diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -494,6 +494,7 @@ public abstract class ChromeFeatureList { +@@ -502,6 +502,7 @@ public abstract class ChromeFeatureList { public static final String USER_BYPASS_UI = "UserBypassUI"; public static final String VERTICAL_AUTOMOTIVE_BACK_BUTTON_TOOLBAR = "VerticalAutomotiveBackButtonToolbar"; + public static final String BOOKMARKS_EXPORT_USESAF = "BookmarksExportUseSaf"; - public static final String VOICE_BUTTON_IN_TOP_TOOLBAR = "VoiceButtonInTopToolbar"; public static final String VOICE_SEARCH_AUDIO_CAPTURE_POLICY = "VoiceSearchAudioCapturePolicy"; - public static final String WEBNOTES_STYLIZE = "WebNotesStylize"; + public static final String WEB_APK_ALLOW_ICON_UPDATE = "WebApkAllowIconUpdate"; + public static final String WEB_APK_BACKUP_AND_RESTORE_BACKEND = "WebApkBackupAndRestoreBackend"; diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer/profile_writer.cc --- a/chrome/browser/importer/profile_writer.cc +++ b/chrome/browser/importer/profile_writer.cc @@ -1449,7 +1457,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro /** * Whether Chrome is set as the default browser. -@@ -938,6 +940,7 @@ public final class ChromePreferenceKeys { +@@ -894,6 +896,7 @@ public final class ChromePreferenceKeys { AUTOFILL_ASSISTANT_PROACTIVE_HELP_ENABLED, APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE, APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO, @@ -1488,7 +1496,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn -@@ -403,6 +403,9 @@ static_library("common_lib") { +@@ -404,6 +404,9 @@ static_library("common_lib") { sources += [ "media/chrome_media_drm_bridge_client.cc", "media/chrome_media_drm_bridge_client.h", @@ -1501,7 +1509,7 @@ diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn --- a/chrome/utility/BUILD.gn +++ b/chrome/utility/BUILD.gn -@@ -85,8 +85,6 @@ static_library("utility") { +@@ -84,8 +84,6 @@ static_library("utility") { if (!is_android) { sources += [ @@ -1510,7 +1518,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn "importer/bookmarks_file_importer.cc", "importer/bookmarks_file_importer.h", "importer/external_process_importer_bridge.cc", -@@ -218,6 +216,11 @@ static_library("utility") { +@@ -220,6 +218,11 @@ static_library("utility") { ] } @@ -1735,7 +1743,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui return mimeTypes; } -@@ -1032,6 +1040,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -1034,6 +1042,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick return countAcceptTypesFor(superType) == mFileTypes.size(); } @@ -1762,7 +1770,7 @@ diff --git a/ui/android/java/strings/android_ui_strings.grd b/ui/android/java/st diff --git a/ui/shell_dialogs/select_file_dialog.h b/ui/shell_dialogs/select_file_dialog.h --- a/ui/shell_dialogs/select_file_dialog.h +++ b/ui/shell_dialogs/select_file_dialog.h -@@ -213,6 +213,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog +@@ -199,6 +199,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog const GURL* caller = nullptr); bool HasMultipleFileTypeChoices(); @@ -1774,7 +1782,7 @@ diff --git a/ui/shell_dialogs/select_file_dialog.h b/ui/shell_dialogs/select_fil diff --git a/ui/shell_dialogs/select_file_dialog_android.cc b/ui/shell_dialogs/select_file_dialog_android.cc --- a/ui/shell_dialogs/select_file_dialog_android.cc +++ b/ui/shell_dialogs/select_file_dialog_android.cc -@@ -142,6 +142,12 @@ void SelectFileDialogImpl::SelectFileImpl( +@@ -137,6 +137,12 @@ void SelectFileDialogImpl::SelectFileImpl( owning_window->GetJavaObject()); } @@ -1828,7 +1836,7 @@ diff --git a/ui/shell_dialogs/select_file_dialog_linux.h b/ui/shell_dialogs/sele diff --git a/ui/shell_dialogs/select_file_dialog_win.cc b/ui/shell_dialogs/select_file_dialog_win.cc --- a/ui/shell_dialogs/select_file_dialog_win.cc +++ b/ui/shell_dialogs/select_file_dialog_win.cc -@@ -193,6 +193,7 @@ class SelectFileDialogImpl : public ui::SelectFileDialog, +@@ -194,6 +194,7 @@ class SelectFileDialogImpl : public ui::SelectFileDialog, int index); bool HasMultipleFileTypeChoicesImpl() override; @@ -1836,7 +1844,7 @@ diff --git a/ui/shell_dialogs/select_file_dialog_win.cc b/ui/shell_dialogs/selec // Returns the filter to be used while displaying the open/save file dialog. // This is computed from the extensions for the file types being opened. -@@ -271,6 +272,10 @@ bool SelectFileDialogImpl::HasMultipleFileTypeChoicesImpl() { +@@ -272,6 +273,10 @@ bool SelectFileDialogImpl::HasMultipleFileTypeChoicesImpl() { return has_multiple_file_type_choices_; } diff --git a/build/cromite_patches/Add-cromite-flags-support.patch b/build/cromite_patches/Add-cromite-flags-support.patch index 57c21dd5e3e0e6a6f88316c58fc93b80d4f4ef79..b795c3173c7784285cf1d3f85a50e9a66d6c08f2 100644 --- a/build/cromite_patches/Add-cromite-flags-support.patch +++ b/build/cromite_patches/Add-cromite-flags-support.patch @@ -16,19 +16,20 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- base/BUILD.gn | 4 +- base/android/feature_map.cc | 8 +- - base/feature_list.cc | 80 ++++++++++ + .../base/cached_flags/CachedFlag.java | 8 +- + base/feature_list.cc | 78 +++++++++ base/feature_list.h | 72 ++++++++- build/android/gyp/java_cpp_features.py | 17 ++ chrome/android/java/res/values/values.xml | 3 + .../java/res/xml/privacy_preferences.xml | 4 + + .../homepage/settings/HomepageSettings.java | 2 +- .../privacy/settings/PrivacySettings.java | 2 +- .../browser/settings/SettingsActivity.java | 36 +++++ chrome/browser/about_flags.cc | 11 ++ chrome/browser/browser_features.cc | 1 + - chrome/browser/flags/BUILD.gn | 12 ++ + chrome/browser/flags/BUILD.gn | 13 ++ .../flags/android/chrome_feature_list.cc | 1 + .../flags/android/chrome_feature_list.h | 1 + - .../chrome/browser/flags/CachedFlag.java | 6 + .../browser/flags/ChromeFeatureList.java | 13 +- .../flags/cromite/include_all_directory.java | 1 + .../java_template/CromiteCachedFlag.java.tmpl | 47 ++++++ @@ -87,7 +88,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html services/network/public/cpp/features.h | 1 + third_party/blink/common/features.cc | 1 + third_party/blink/public/common/features.h | 1 + - 73 files changed, 737 insertions(+), 18 deletions(-) + 74 files changed, 738 insertions(+), 20 deletions(-) create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/placeholder.txt @@ -119,7 +120,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/base/BUILD.gn b/base/BUILD.gn --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -206,6 +206,8 @@ buildflag_header("message_pump_buildflags") { +@@ -212,6 +212,8 @@ buildflag_header("message_pump_buildflags") { # This does not include test code (test support and anything in the test # directory) which should use source_set as is recommended for GN targets). component("base") { @@ -128,15 +129,15 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn sources = [ "allocator/allocator_check.cc", "allocator/allocator_check.h", -@@ -1030,7 +1032,7 @@ component("base") { +@@ -1055,7 +1057,7 @@ component("base") { "//build/config/compiler:wglobal_constructors", ] - deps = [ + deps += [ + ":check_version_internal", ":message_pump_buildflags", "//base/allocator:buildflags", - "//base/allocator/partition_allocator:raw_ptr", diff --git a/base/android/feature_map.cc b/base/android/feature_map.cc --- a/base/android/feature_map.cc +++ b/base/android/feature_map.cc @@ -157,14 +158,38 @@ diff --git a/base/android/feature_map.cc b/base/android/feature_map.cc return base::FeatureList::IsEnabled(*feature); } +diff --git a/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java b/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java +--- a/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java ++++ b/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java +@@ -125,7 +125,7 @@ public class CachedFlag extends Flag { + .writeBoolean(getSharedPreferenceKey(), isEnabledInNative); + } + +- String getSharedPreferenceKey() { ++ public String getSharedPreferenceKey() { + // Create the key only once to avoid String concatenation every flag check. + if (mPreferenceKey == null) { + mPreferenceKey = CachedFlagsSharedPreferences.FLAGS_CACHED.createKey(mFeatureName); +@@ -157,6 +157,12 @@ public class CachedFlag extends Flag { + .removeKeysWithPrefix(CachedFlagsSharedPreferences.FLAGS_CACHED); + } + ++ public void setValueReturnedOverride(@Nullable Boolean value) { ++ synchronized (ValuesReturned.sBoolValues) { ++ ValuesReturned.sBoolValues.put(getSharedPreferenceKey(), value); ++ } ++ } ++ + /** Create a Map of feature names -> {@link CachedFlag} from multiple lists of CachedFlags. */ + public static Map createCachedFlagMap( + List> allCachedFlagsLists) { diff --git a/base/feature_list.cc b/base/feature_list.cc --- a/base/feature_list.cc +++ b/base/feature_list.cc -@@ -30,6 +30,33 @@ - #include "base/strings/stringprintf.h" - #include "build/build_config.h" +@@ -37,6 +37,31 @@ + + namespace base { -+namespace base { +namespace internal { + +using DefaultStateOverrides = @@ -189,12 +214,11 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc +} + +} // namespace internal -+} // namespace base + - namespace base { - namespace { -@@ -441,6 +468,48 @@ bool FeatureList::IsEnabled(const Feature& feature) { + + // Pointer to the FeatureList instance singleton that was set via +@@ -464,6 +489,48 @@ bool FeatureList::IsEnabled(const Feature& feature) { return g_feature_list_instance->IsFeatureEnabled(feature); } @@ -243,7 +267,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc // static bool FeatureList::IsValidFeatureOrFieldTrialName(StringPiece name) { return IsStringASCII(name) && name.find_first_of(",<*") == std::string::npos; -@@ -662,6 +731,17 @@ void FeatureList::AddEarlyAllowedFeatureForTesting(std::string feature_name) { +@@ -710,6 +777,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor) { void FeatureList::FinalizeInitialization() { DCHECK(!initialized_); @@ -264,7 +288,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc diff --git a/base/feature_list.h b/base/feature_list.h --- a/base/feature_list.h +++ b/base/feature_list.h -@@ -94,8 +94,10 @@ enum FeatureState { +@@ -99,8 +99,10 @@ enum FeatureState { // [1]: // https://crsrc.org/c/docs/speed/binary_size/android_binary_size_trybot.md#Mutable-Constants struct BASE_EXPORT LOGICALLY_CONST Feature { @@ -277,7 +301,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h #if BUILDFLAG(ENABLE_BANNED_BASE_FEATURE_PREFIX) if (StringPiece(name).find(BUILDFLAG(BANNED_BASE_FEATURE_PREFIX)) == 0) { LOG(FATAL) << "Invalid feature name " << name << " starts with " -@@ -121,6 +123,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { +@@ -126,6 +128,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { // command line switch. const FeatureState default_state; @@ -287,7 +311,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h private: friend class FeatureList; -@@ -396,6 +401,11 @@ class BASE_EXPORT FeatureList { +@@ -401,6 +406,11 @@ class BASE_EXPORT FeatureList { // instance, which is checked in builds with DCHECKs enabled. static bool IsEnabled(const Feature& feature); @@ -299,7 +323,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h // Some characters are not allowed to appear in feature names or the // associated field trial names, as they are used as special characters for // command-line serialization. This function checks that the strings are ASCII -@@ -652,4 +662,62 @@ class BASE_EXPORT FeatureList { +@@ -665,4 +675,62 @@ class BASE_EXPORT FeatureList { } // namespace base @@ -321,7 +345,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h +} // namespace base + +#define CROMITE_FEATURE(feature, name, default_state) \ -+ CONSTINIT const base::Feature feature(name, default_state, true, true); \ ++ constinit const base::Feature feature(name, default_state, true, true); \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \ + static const ::base::internal::FeatureDefaultStateOverrider \ @@ -409,7 +433,7 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml --- a/chrome/android/java/res/xml/privacy_preferences.xml +++ b/chrome/android/java/res/xml/privacy_preferences.xml -@@ -58,6 +58,10 @@ found in the LICENSE file. +@@ -59,6 +59,10 @@ found in the LICENSE file. android:title="@string/tabgrid_use_icons_title" android:summary="@string/tabgrid_use_icons_summary" android:defaultValue="false" /> @@ -420,6 +444,18 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi kAuxiliarySearchMaxTabsCountParam( +@@ -188,6 +188,7 @@ constexpr base::FeatureParam kAuxiliarySearchMaxTabsCountParam( "auxiliary_search_max_donation_tab", 100); @@ -600,28 +639,12 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser } // namespace android } // namespace chrome -diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFlag.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFlag.java ---- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFlag.java -+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFlag.java -@@ -149,6 +149,12 @@ public class CachedFlag extends Flag { - .removeKeysWithPrefix(ChromePreferenceKeys.FLAGS_CACHED); - } - -+ public void setValueReturnedOverride(@Nullable Boolean value) { -+ synchronized (ValuesReturned.sBoolValues) { -+ ValuesReturned.sBoolValues.put(getSharedPreferenceKey(), value); -+ } -+ } -+ - /** Create a Map of feature names -> {@link CachedFlag} from multiple lists of CachedFlags. */ - public static Map createCachedFlagMap( - List> allCachedFlagsLists) { diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -7,6 +7,10 @@ package org.chromium.chrome.browser.flags; - import org.chromium.base.FeatureMap; - import org.chromium.base.MutableFlagWithSafeDefault; +@@ -13,6 +13,10 @@ import org.chromium.base.cached_flags.DoubleCachedFieldTrialParameter; + import org.chromium.base.cached_flags.IntCachedFieldTrialParameter; + import org.chromium.base.cached_flags.StringCachedFieldTrialParameter; +import org.chromium.chrome.browser.flags.cromite.CromiteCachedFlagImplBase; +import java.util.Arrays; @@ -630,16 +653,16 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f import java.util.List; import java.util.Map; -@@ -673,7 +677,7 @@ public abstract class ChromeFeatureList { +@@ -691,7 +695,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sVerticalAutomotiveBackButtonToolbar = - new CachedFlag(VERTICAL_AUTOMOTIVE_BACK_BUTTON_TOOLBAR, false); + newCachedFlag(VERTICAL_AUTOMOTIVE_BACK_BUTTON_TOOLBAR, true); - public static final List sFlagsCachedFullBrowser = + public static final List sFlagsCachedFullBrowserChromium = List.of( sAllowUserCertificates, sAndroidAppIntegration, -@@ -755,6 +759,13 @@ public abstract class ChromeFeatureList { +@@ -779,6 +783,13 @@ public abstract class ChromeFeatureList { sUseLibunwindstackNativeUnwinderAndroid, sVerticalAutomotiveBackButtonToolbar); @@ -689,7 +712,7 @@ new file mode 100644 +import java.util.ArrayList; +import java.util.List; + -+import org.chromium.chrome.browser.flags.CachedFlag; ++import org.chromium.base.cached_flags.CachedFlag; + +{IMPORT_CLAUSE} + @@ -806,7 +829,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc --- a/chrome/browser/ui/ui_features.cc +++ b/chrome/browser/ui/ui_features.cc -@@ -429,4 +429,5 @@ BASE_FEATURE(kStopLoadingAnimationForHiddenWindow, +@@ -450,4 +450,5 @@ BASE_FEATURE(kStopLoadingAnimationForHiddenWindow, "StopLoadingAnimationForHiddenWindow", base::FEATURE_ENABLED_BY_DEFAULT); @@ -815,7 +838,7 @@ diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc -@@ -1751,4 +1751,5 @@ BASE_FEATURE(kSupportsRtcWakeOver24Hours, +@@ -1735,4 +1735,5 @@ BASE_FEATURE(kSupportsRtcWakeOver24Hours, base::FEATURE_ENABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -882,7 +905,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium diff --git a/components/components_strings.grd b/components/components_strings.grd --- a/components/components_strings.grd +++ b/components/components_strings.grd -@@ -339,6 +339,7 @@ +@@ -338,6 +338,7 @@ @@ -893,9 +916,9 @@ diff --git a/components/components_strings.grd b/components/components_strings.g diff --git a/components/content_settings/core/common/features.cc b/components/content_settings/core/common/features.cc --- a/components/content_settings/core/common/features.cc +++ b/components/content_settings/core/common/features.cc -@@ -100,5 +100,6 @@ BASE_FEATURE(kHostIndexedMetadataGrants, - const base::FeatureParam kMetadataGrantsThreshold{ - &kHostIndexedMetadataGrants, kMetadataGrantsThresholdName, 1}; +@@ -112,5 +112,6 @@ BASE_FEATURE(kIndexedHostContentSettingsMap, + "IndexedHostContentSettingsMap", + base::FEATURE_DISABLED_BY_DEFAULT); +#include "cromite_flags/components_content_settings_core_common_features_cc.inc" } // namespace features @@ -1068,7 +1091,7 @@ diff --git a/components/flags_ui/resources/app.html b/components/flags_ui/resour diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resources/app.ts --- a/components/flags_ui/resources/app.ts +++ b/components/flags_ui/resources/app.ts -@@ -193,6 +193,7 @@ export class FlagsAppElement extends CustomElement { +@@ -194,6 +194,7 @@ export class FlagsAppElement extends CustomElement { return getTemplate(); } @@ -1076,7 +1099,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource private announceStatusDelayMs: number = 100; private featuresResolver: PromiseResolver = new PromiseResolver(); private flagSearch: FlagSearch = new FlagSearch(this); -@@ -204,6 +205,10 @@ export class FlagsAppElement extends CustomElement { +@@ -205,6 +206,10 @@ export class FlagsAppElement extends CustomElement { // tabs: Tab[] = [ @@ -1087,7 +1110,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource { tabEl: this.getRequiredElement('#tab-available'), panelEl: this.getRequiredElement('#tab-content-available'), -@@ -217,6 +222,11 @@ export class FlagsAppElement extends CustomElement { +@@ -218,6 +223,11 @@ export class FlagsAppElement extends CustomElement { ]; connectedCallback() { @@ -1099,7 +1122,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource // Get and display the data upon loading. this.requestExperimentalFeaturesData(); // There is no restart button on iOS. -@@ -277,20 +287,29 @@ export class FlagsAppElement extends CustomElement { +@@ -278,20 +288,29 @@ export class FlagsAppElement extends CustomElement { const defaultFeatures: Feature[] = []; const nonDefaultFeatures: Feature[] = []; @@ -1132,7 +1155,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource // this.showRestartToast(experimentalFeaturesData.needsRestart); -@@ -401,16 +420,23 @@ export class FlagsAppElement extends CustomElement { +@@ -402,16 +421,23 @@ export class FlagsAppElement extends CustomElement { } private renderExperiments( @@ -1157,7 +1180,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource if (select) { experiment.addEventListener('select-change', e => { e.preventDefault(); -@@ -434,9 +460,14 @@ export class FlagsAppElement extends CustomElement { +@@ -435,9 +461,14 @@ export class FlagsAppElement extends CustomElement { this.showRestartToast(true); }); } @@ -1207,7 +1230,7 @@ diff --git a/components/flags_ui/resources/experiment.html b/components/flags_ui diff --git a/components/flags_ui/resources/experiment.ts b/components/flags_ui/resources/experiment.ts --- a/components/flags_ui/resources/experiment.ts +++ b/components/flags_ui/resources/experiment.ts -@@ -60,11 +60,16 @@ function resetHighlights(element: HTMLElement) { +@@ -61,11 +61,16 @@ function resetHighlights(element: HTMLElement) { export class FlagsExperimentElement extends CustomElement { private feature_: Feature|null = null; @@ -1224,7 +1247,7 @@ diff --git a/components/flags_ui/resources/experiment.ts b/components/flags_ui/r set data(feature: Feature) { this.feature_ = feature; -@@ -76,12 +81,18 @@ export class FlagsExperimentElement extends CustomElement { +@@ -77,12 +82,18 @@ export class FlagsExperimentElement extends CustomElement { 'experiment-default', feature.is_default); experimentDefault.classList.toggle( 'experiment-switched', !feature.is_default); @@ -1243,7 +1266,7 @@ diff --git a/components/flags_ui/resources/experiment.ts b/components/flags_ui/r const description = this.getRequiredElement('.description'); description.textContent = feature.description; -@@ -124,6 +135,7 @@ export class FlagsExperimentElement extends CustomElement { +@@ -125,6 +136,7 @@ export class FlagsExperimentElement extends CustomElement { const permalink = this.getRequiredElement('.permalink'); permalink.href = `#${feature.internal_name}`; permalink.textContent = `#${feature.internal_name}`; @@ -1251,7 +1274,7 @@ diff --git a/components/flags_ui/resources/experiment.ts b/components/flags_ui/r const smallScreenCheck = window.matchMedia('(max-width: 480px)'); // Toggling of experiment description overflow content on smaller screens. -@@ -152,6 +164,10 @@ export class FlagsExperimentElement extends CustomElement { +@@ -153,6 +165,10 @@ export class FlagsExperimentElement extends CustomElement { const optionEl = document.createElement('option'); optionEl.selected = option.selected; optionEl.textContent = option.description; @@ -1280,7 +1303,7 @@ diff --git a/components/flags_ui/resources/flags_browser_proxy.ts b/components/f diff --git a/components/offline_pages/core/offline_page_feature.cc b/components/offline_pages/core/offline_page_feature.cc --- a/components/offline_pages/core/offline_page_feature.cc +++ b/components/offline_pages/core/offline_page_feature.cc -@@ -82,4 +82,5 @@ bool IsOfflinePagesNetworkStateLikelyUnknown() { +@@ -55,4 +55,5 @@ bool IsOfflinePagesNetworkStateLikelyUnknown() { return base::FeatureList::IsEnabled(kOfflinePagesNetworkStateLikelyUnknown); } @@ -1289,7 +1312,7 @@ diff --git a/components/offline_pages/core/offline_page_feature.cc b/components/ diff --git a/components/offline_pages/core/offline_page_feature.h b/components/offline_pages/core/offline_page_feature.h --- a/components/offline_pages/core/offline_page_feature.h +++ b/components/offline_pages/core/offline_page_feature.h -@@ -64,6 +64,7 @@ bool IsOnTheFlyMhtmlHashComputationEnabled(); +@@ -50,6 +50,7 @@ bool IsOnTheFlyMhtmlHashComputationEnabled(); // offline pages to avoid showing them even when the device is online. bool IsOfflinePagesNetworkStateLikelyUnknown(); @@ -1300,8 +1323,8 @@ diff --git a/components/offline_pages/core/offline_page_feature.h b/components/o diff --git a/components/permissions/features.cc b/components/permissions/features.cc --- a/components/permissions/features.cc +++ b/components/permissions/features.cc -@@ -135,6 +135,7 @@ BASE_FEATURE(kShowRelatedWebsiteSetsPermissionGrants, - "ShowRelatedWebsiteSetsPermissionGrants", +@@ -139,6 +139,7 @@ BASE_FEATURE(kCpssQuietChipTextUpdate, + "CpssQuietChipTextUpdate", base::FEATURE_DISABLED_BY_DEFAULT); +#include "cromite_flags/components_permissions_features_cc.inc" @@ -1323,7 +1346,7 @@ diff --git a/components/version_ui/version_handler_helper.cc b/components/versio diff --git a/content/common/features.cc b/content/common/features.cc --- a/content/common/features.cc +++ b/content/common/features.cc -@@ -586,4 +586,5 @@ BASE_FEATURE(kWindowOpenFileSelectFix, +@@ -596,4 +596,5 @@ BASE_FEATURE(kWindowOpenFileSelectFix, // Please keep features in alphabetical order. @@ -1332,7 +1355,7 @@ diff --git a/content/common/features.cc b/content/common/features.cc diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc -@@ -1388,4 +1388,5 @@ bool IsVideoCaptureServiceEnabledForBrowserProcess() { +@@ -1389,4 +1389,5 @@ bool IsVideoCaptureServiceEnabledForBrowserProcess() { VideoCaptureServiceConfiguration::kEnabledForBrowserProcess; } @@ -1341,7 +1364,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h -@@ -338,6 +338,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebRtcPipeWireCapturer); +@@ -332,6 +332,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebRtcPipeWireCapturer); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForBrowserProcess(); @@ -1639,7 +1662,7 @@ new file mode 100755 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc -@@ -1763,5 +1763,5 @@ uint32_t GetPassthroughAudioFormats() { +@@ -1860,5 +1860,5 @@ uint32_t GetPassthroughAudioFormats() { return 0; #endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS) } @@ -1649,7 +1672,7 @@ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc diff --git a/media/base/media_switches.h b/media/base/media_switches.h --- a/media/base/media_switches.h +++ b/media/base/media_switches.h -@@ -519,5 +519,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); +@@ -547,5 +547,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); MEDIA_EXPORT uint32_t GetPassthroughAudioFormats(); } // namespace media @@ -1659,8 +1682,8 @@ diff --git a/media/base/media_switches.h b/media/base/media_switches.h diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -492,4 +492,5 @@ BASE_FEATURE(kTreatHTTPExpiresHeaderValueZeroAsExpired, - "TreatHTTPExpiresHeaderValueZeroAsExpired", +@@ -535,4 +535,5 @@ BASE_FEATURE(kTruncateBodyToContentLength, + "TruncateBodyToContentLength", base::FEATURE_ENABLED_BY_DEFAULT); +#include "cromite_flags/net_base_features_cc.inc" @@ -1668,9 +1691,9 @@ diff --git a/net/base/features.cc b/net/base/features.cc diff --git a/net/base/features.h b/net/base/features.h --- a/net/base/features.h +++ b/net/base/features.h -@@ -487,6 +487,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kUseAlpsNewCodepoint); - // while on stable channels. - NET_EXPORT BASE_DECLARE_FEATURE(kTreatHTTPExpiresHeaderValueZeroAsExpired); +@@ -523,6 +523,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kTreatHTTPExpiresHeaderValueZeroAsExpired); + // Enables truncating the response body to the content length. + NET_EXPORT BASE_DECLARE_FEATURE(kTruncateBodyToContentLength); +#include "cromite_flags/net_base_features_h.inc" } // namespace net::features @@ -1679,8 +1702,8 @@ diff --git a/net/base/features.h b/net/base/features.h diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc --- a/services/network/public/cpp/features.cc +++ b/services/network/public/cpp/features.cc -@@ -454,4 +454,5 @@ const base::FeatureParam kSkipTpcdMitigationsForAdsSupport{ - &kSkipTpcdMitigationsForAds, /*name=*/"SkipTpcdMitigationsForAdsSupport", +@@ -467,4 +467,5 @@ const base::FeatureParam kSkipTpcdMitigationsForAdsTopLevelTrial{ + /*name=*/"SkipTpcdMitigationsForAdsTopLevelTrial", /*default_value=*/false}; +#include "cromite_flags/services_network_public_cpp_features_cc.inc" @@ -1688,9 +1711,9 @@ diff --git a/services/network/public/cpp/features.cc b/services/network/public/c diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h --- a/services/network/public/cpp/features.h +++ b/services/network/public/cpp/features.h -@@ -181,6 +181,7 @@ extern const base::FeatureParam kSkipTpcdMitigationsForAdsMetadata; +@@ -187,6 +187,7 @@ extern const base::FeatureParam kSkipTpcdMitigationsForAdsTrial; COMPONENT_EXPORT(NETWORK_CPP) - extern const base::FeatureParam kSkipTpcdMitigationsForAdsSupport; + extern const base::FeatureParam kSkipTpcdMitigationsForAdsTopLevelTrial; +#include "cromite_flags/services_network_public_cpp_features_h.inc" } // namespace features @@ -1699,9 +1722,9 @@ diff --git a/services/network/public/cpp/features.h b/services/network/public/cp diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -2305,5 +2305,6 @@ BASE_FEATURE(kTreatHTTPExpiresHeaderValueZeroAsExpiredInBlink, - "TreatHTTPExpiresHeaderValueZeroAsExpiredInBlink", - base::FEATURE_ENABLED_BY_DEFAULT); +@@ -2546,5 +2546,6 @@ BASE_FEATURE(kSimplifyLoadingTransparentPlaceholderImage, + "SimplifyLoadingTransparentPlaceholderImage", + base::FEATURE_DISABLED_BY_DEFAULT); +#include "cromite_flags/third_party_blink_common_features_cc.inc" } // namespace features @@ -1709,9 +1732,9 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h --- a/third_party/blink/public/common/features.h +++ b/third_party/blink/public/common/features.h -@@ -1507,6 +1507,7 @@ BLINK_COMMON_EXPORT extern const base::FeatureParam kPixelDistanceToExpand; +@@ -1638,6 +1638,7 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kInteractiveDetectorIgnoreFcp); BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE( - kTreatHTTPExpiresHeaderValueZeroAsExpiredInBlink); + kSimplifyLoadingTransparentPlaceholderImage); +#include "cromite_flags/third_party_blink_common_features_h.inc" } // namespace features diff --git a/build/cromite_patches/Add-custom-tab-intents-privacy-option.patch b/build/cromite_patches/Add-custom-tab-intents-privacy-option.patch index cc948b9e6ecf2e0597caed2af5d8aa4368fd06cf..4aaca446be0eb0f5b33de1c02df771b9214da441 100644 --- a/build/cromite_patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/cromite_patches/Add-custom-tab-intents-privacy-option.patch @@ -13,13 +13,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../java/res/xml/privacy_preferences.xml | 10 ++++++++ .../browser/LaunchIntentDispatcher.java | 21 ++++++++++++++++ + .../customtabs/CustomTabsConnection.java | 1 + .../IncognitoCustomTabIntentDataProvider.java | 6 +++++ .../privacy/settings/PrivacySettings.java | 24 +++++++++++++++++++ .../chrome/browser/tab/TabAssociatedApp.java | 6 ++++- .../strings/android_chrome_strings.grd | 14 +++++++++++ .../core/common/language_experiments.cc | 1 + - .../add-custom-tab-intents-privacy-option.inc | 2 ++ - 8 files changed, 83 insertions(+), 1 deletion(-) + .../add-custom-tab-intents-privacy-option.inc | 1 + + 9 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml @@ -45,7 +46,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java --- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -@@ -56,6 +56,9 @@ import java.lang.annotation.Retention; +@@ -55,6 +55,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Set; @@ -55,7 +56,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis /** * Dispatches incoming intents to the appropriate activity based on the current configuration and * Intent fired. -@@ -247,6 +250,9 @@ public class LaunchIntentDispatcher { +@@ -244,6 +247,9 @@ public class LaunchIntentDispatcher { */ public static boolean isCustomTabIntent(Intent intent) { if (intent == null) return false; @@ -65,7 +66,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis Log.w( TAG, "CustomTabsIntent#shouldAlwaysUseBrowserUI() = " -@@ -268,6 +274,10 @@ public class LaunchIntentDispatcher { +@@ -265,6 +271,10 @@ public class LaunchIntentDispatcher { newIntent.setData(uri); newIntent.setClassName(context, CustomTabActivity.class.getName()); @@ -76,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis // Since configureIntentForResizableCustomTab() might change the componenet/class // associated with the passed intent, it needs to be called after #setClassName(context, // CustomTabActivity.class.getName()); -@@ -413,6 +423,17 @@ public class LaunchIntentDispatcher { +@@ -410,6 +420,17 @@ public class LaunchIntentDispatcher { if (Intent.ACTION_VIEW.equals(newIntent.getAction()) && !IntentHandler.wasIntentSenderChrome(newIntent)) { @@ -94,6 +95,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis if (!chromeTabbedTaskExists()) { newIntent.putExtra(IntentHandler.EXTRA_STARTED_TABBED_CHROME_TASK, true); } +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java +@@ -850,6 +850,7 @@ public class CustomTabsConnection { + PostTask.postTask( + TaskTraits.UI_DEFAULT, + () -> { ++ if ((true)) return; // Disable CCTPostMessageAPI + // Attempt to verify origin synchronously. If successful directly initialize + // postMessage channel for session. + Uri verifiedOrigin = verifyOriginForSession(session, uid, postMessageOrigin); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java @@ -130,7 +142,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { getActivity().setTitle(R.string.prefs_privacy_security); -@@ -276,6 +279,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -274,6 +277,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment new SpanApplier.SpanInfo("", "", servicesLink)); } @@ -140,7 +152,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String key = preference.getKey(); -@@ -292,6 +298,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -290,6 +296,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) { UserPrefs.get(getProfile()) .setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue); @@ -155,7 +167,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -314,6 +328,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -312,6 +326,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment UserPrefs.get(getProfile()).getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED)); } @@ -175,7 +187,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java --- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java +++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java -@@ -85,7 +85,11 @@ public final class TabAssociatedApp extends TabWebContentsUserData implements Im +@@ -87,7 +87,11 @@ public final class TabAssociatedApp extends TabWebContentsUserData implements Im public static boolean isOpenedFromExternalApp(Tab tab) { TabAssociatedApp app = get(tab); if (app == null) return false; @@ -191,7 +203,7 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAsso diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -5056,6 +5056,20 @@ To change this setting, <resetlink>reset sync

BEGIN_LINKclear the Chrome da Resume @@ -225,7 +237,6 @@ diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/a new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc -@@ -0,0 +1,2 @@ +@@ -0,0 +1 @@ +SET_CROMITE_FEATURE_DISABLED(kCCTIntentFeatureOverrides); -+SET_CROMITE_FEATURE_DISABLED(kCCTPostMessageAPI); -- diff --git a/build/cromite_patches/Add-exit-menu-item.patch b/build/cromite_patches/Add-exit-menu-item.patch index aa7a6acd180674ed1cfd947aeb6031a1b9f8e617..c270af0b835739ce86c56bea2d11cab361ab7fa0 100644 --- a/build/cromite_patches/Add-exit-menu-item.patch +++ b/build/cromite_patches/Add-exit-menu-item.patch @@ -17,7 +17,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml --- a/chrome/android/java/res/menu/main_menu.xml +++ b/chrome/android/java/res/menu/main_menu.xml -@@ -163,6 +163,9 @@ found in the LICENSE file. +@@ -166,6 +166,9 @@ found in the LICENSE file. @@ -27,7 +27,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re -@@ -189,6 +192,9 @@ found in the LICENSE file. +@@ -192,6 +195,9 @@ found in the LICENSE file. @@ -59,16 +59,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLife diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -252,6 +252,8 @@ import java.util.Map; - import java.util.Set; - import java.util.concurrent.atomic.AtomicBoolean; +@@ -267,6 +267,8 @@ import java.util.concurrent.atomic.AtomicBoolean; + import java.util.function.BooleanSupplier; + import java.util.function.DoubleConsumer; +import org.chromium.chrome.browser.ApplicationLifetime; + /** - * This is the main activity for ChromeMobile when not running in document mode. All the tabs - * are accessible via a chrome specific tab switching UI. -@@ -2762,6 +2764,8 @@ public class ChromeTabbedActivity extends ChromeActivity +@@ -2576,6 +2577,11 @@ public abstract class ChromeActivity return true; } @@ -98,8 +98,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv + } + if (id == R.id.update_menu_id) { - UpdateMenuItemHelper.getInstance().onMenuItemClicked(this); - return true; + UpdateMenuItemHelper.getInstance( + getProfileProviderSupplier().get().getOriginalProfile()) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java @@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -3659,6 +3659,9 @@ To change this setting, <resetlink>reset sync

BEGIN_LINKclear the Chrome da Dark theme diff --git a/build/cromite_patches/Add-flag-for-omnibox-autocomplete-filtering.patch b/build/cromite_patches/Add-flag-for-omnibox-autocomplete-filtering.patch index 30bbe2cd4e64f97d957edf3f453f0b16bea2cf27..be3279b58f6bd87022f2c1325143edc138b4bf87 100644 --- a/build/cromite_patches/Add-flag-for-omnibox-autocomplete-filtering.patch +++ b/build/cromite_patches/Add-flag-for-omnibox-autocomplete-filtering.patch @@ -18,15 +18,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc --- a/components/omnibox/browser/autocomplete_controller.cc +++ b/components/omnibox/browser/autocomplete_controller.cc -@@ -20,6 +20,7 @@ - #include "base/barrier_callback.h" +@@ -22,6 +22,7 @@ + #include "base/check_op.h" #include "base/containers/contains.h" +#include "base/command_line.h" #include "base/feature_list.h" #include "base/format_macros.h" #include "base/functional/bind.h" -@@ -336,6 +337,15 @@ AutocompleteController::AutocompleteController( +@@ -392,6 +393,15 @@ AutocompleteController::AutocompleteController( provider_client_->GetOmniboxTriggeredFeatureService()), steady_state_omnibox_position_( metrics::OmniboxEventProto::UNKNOWN_POSITION) { @@ -45,7 +45,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc --- a/components/omnibox/browser/history_url_provider.cc +++ b/components/omnibox/browser/history_url_provider.cc -@@ -478,6 +478,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input, +@@ -479,6 +479,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input, if (fixed_up_input.type() != metrics::OmniboxInputType::QUERY) matches_.push_back(what_you_typed_match); @@ -58,7 +58,7 @@ diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omn diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc --- a/components/omnibox/browser/search_provider.cc +++ b/components/omnibox/browser/search_provider.cc -@@ -12,6 +12,7 @@ +@@ -14,6 +14,7 @@ #include "base/base64.h" #include "base/feature_list.h" #include "base/functional/bind.h" @@ -66,7 +66,7 @@ diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/ #include "base/functional/callback.h" #include "base/i18n/break_iterator.h" #include "base/i18n/case_conversion.h" -@@ -636,6 +637,9 @@ void SearchProvider::Run(bool query_is_private) { +@@ -644,6 +645,9 @@ void SearchProvider::Run(bool query_is_private) { } void SearchProvider::DoHistoryQuery(bool minimal_changes) { diff --git a/build/cromite_patches/Add-flag-to-configure-maximum-connections-per-host.patch b/build/cromite_patches/Add-flag-to-configure-maximum-connections-per-host.patch index 6c7edc6408cafa216add6bc179c1a7e51877b145..ad440cc8e987c9ca09e28c1ffa723f69efd1d263 100644 --- a/build/cromite_patches/Add-flag-to-configure-maximum-connections-per-host.patch +++ b/build/cromite_patches/Add-flag-to-configure-maximum-connections-per-host.patch @@ -92,7 +92,7 @@ new file mode 100644 diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc --- a/net/socket/client_socket_pool_manager.cc +++ b/net/socket/client_socket_pool_manager.cc -@@ -21,6 +21,10 @@ +@@ -22,6 +22,10 @@ #include "net/socket/client_socket_handle.h" #include "net/socket/client_socket_pool.h" #include "net/socket/connect_job.h" @@ -101,9 +101,9 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket +#include "base/command_line.h" +#include "base/strings/string_number_conversions.h" #include "net/ssl/ssl_config.h" - #include "third_party/abseil-cpp/absl/types/optional.h" #include "url/gurl.h" -@@ -183,6 +187,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool( + #include "url/scheme_host_port.h" +@@ -168,6 +172,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool( int ClientSocketPoolManager::max_sockets_per_group( HttpNetworkSession::SocketPoolType pool_type) { DCHECK_LT(pool_type, HttpNetworkSession::NUM_SOCKET_POOL_TYPES); diff --git a/build/cromite_patches/Add-flag-to-disable-IPv6-probes.patch b/build/cromite_patches/Add-flag-to-disable-IPv6-probes.patch index dd80869e8fd5842ff2a0128c766ef5cf3fc1146f..7b1266f82effbbeebcbce7ef57930182f781f82e 100644 --- a/build/cromite_patches/Add-flag-to-disable-IPv6-probes.patch +++ b/build/cromite_patches/Add-flag-to-disable-IPv6-probes.patch @@ -4,12 +4,12 @@ Subject: Add flag to disable IPv6 probes License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../add-flag-to-disable-IPv6-probes.inc | 8 ++++++++ - .../features_cc/add-flag-to-disable-IPv6-probes.inc | 3 +++ - .../features_h/add-flag-to-disable-IPv6-probes.inc | 2 ++ - net/BUILD.gn | 1 + - net/dns/host_resolver_manager.cc | 11 +++++++++++ - 5 files changed, 25 insertions(+) + .../about_flags_cc/add-flag-to-disable-IPv6-probes.inc | 8 ++++++++ + .../base/features_cc/add-flag-to-disable-IPv6-probes.inc | 3 +++ + .../base/features_h/add-flag-to-disable-IPv6-probes.inc | 2 ++ + net/BUILD.gn | 1 + + net/dns/host_resolver_manager.cc | 8 ++++++++ + 5 files changed, 22 insertions(+) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-flag-to-disable-IPv6-probes.inc create mode 100644 cromite_flags/net/base/features_cc/add-flag-to-disable-IPv6-probes.inc create mode 100644 cromite_flags/net/base/features_h/add-flag-to-disable-IPv6-probes.inc @@ -45,7 +45,7 @@ new file mode 100644 diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1033,6 +1033,7 @@ component("net") { +@@ -1030,6 +1030,7 @@ component("net") { "//build:chromeos_buildflags", "//components/miracle_parameter/common", "//net/http:transport_security_state_generated_files", @@ -56,7 +56,7 @@ diff --git a/net/BUILD.gn b/net/BUILD.gn diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc --- a/net/dns/host_resolver_manager.cc +++ b/net/dns/host_resolver_manager.cc -@@ -109,6 +109,7 @@ +@@ -113,6 +113,7 @@ #include "net/log/net_log_event_type.h" #include "net/log/net_log_source.h" #include "net/log/net_log_source_type.h" @@ -64,17 +64,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc #include "net/log/net_log_with_source.h" #include "net/socket/client_socket_factory.h" #include "net/url_request/url_request_context.h" -@@ -681,6 +682,9 @@ class HostResolverManager::RequestImpl - // request source is LOCAL_ONLY. This is due to LOCAL_ONLY requiring a - // synchronous response, so it cannot wait on an async probe result and - // cannot make assumptions about reachability. -+ if (!base::FeatureList::IsEnabled(features::kIPv6Probing)) { -+ return OK; -+ } - if (parameters_.source == HostResolverSource::LOCAL_ONLY) { - int rv = resolver_->StartIPv6ReachabilityCheck( - source_net_log_, GetClientSocketFactory(), -@@ -3899,6 +3903,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck( +@@ -1373,6 +1374,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck( return OK; } diff --git a/build/cromite_patches/Add-flag-to-disable-vibration.patch b/build/cromite_patches/Add-flag-to-disable-vibration.patch index 91ad5f843ccaf4a7dc64e7270349b33b125938c0..2d34235a3ab786ccdc2affc14a59afead28a1fc2 100644 --- a/build/cromite_patches/Add-flag-to-disable-vibration.patch +++ b/build/cromite_patches/Add-flag-to-disable-vibration.patch @@ -70,7 +70,7 @@ diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_pa diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.cc b/third_party/blink/renderer/modules/vibration/vibration_controller.cc --- a/third_party/blink/renderer/modules/vibration/vibration_controller.cc +++ b/third_party/blink/renderer/modules/vibration/vibration_controller.cc -@@ -29,6 +29,7 @@ +@@ -28,6 +28,7 @@ #include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/frame/navigator.h" #include "third_party/blink/renderer/core/page/page.h" @@ -78,7 +78,7 @@ diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.c // Maximum number of entries in a vibration pattern. const unsigned kVibrationPatternLengthMax = 99; -@@ -152,6 +153,8 @@ bool VibrationController::vibrate(Navigator& navigator, +@@ -109,6 +110,8 @@ bool VibrationController::vibrate(Navigator& navigator, // reference to |window| or |navigator| was retained in another window. if (!navigator.DomWindow()) return false; @@ -104,7 +104,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -2621,6 +2621,10 @@ +@@ -635,6 +635,10 @@ status: {"Android": "stable"}, base_feature: "none", }, @@ -113,6 +113,6 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 + status: "stable", + }, { - name: "OriginIsolationHeader", - status: "stable", + name: "CompositionForegroundMarkers", + status: { -- diff --git a/build/cromite_patches/Add-lifetime-options-for-permissions.patch b/build/cromite_patches/Add-lifetime-options-for-permissions.patch index 99c341f066df0ff5b62a2be1daa71f27a7e807cc..bf0c088d8bb41d3e7315a52a97c620cdfb380b44 100644 --- a/build/cromite_patches/Add-lifetime-options-for-permissions.patch +++ b/build/cromite_patches/Add-lifetime-options-for-permissions.patch @@ -58,15 +58,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../one_time_permissions_tracker_factory.cc | 2 +- .../permissions/embedded_permission_prompt.cc | 2 +- .../permission_prompt_bubble_base_view.cc | 2 +- - .../site_settings/PermissionInfo.java | 14 +++- - .../site_settings/SingleWebsiteSettings.java | 10 +++ - .../WebsitePreferenceBridge.java | 6 +- - .../android/website_preference_bridge.cc | 7 +- + .../site_settings/PermissionInfo.java | 1 + + .../site_settings/SingleWebsiteSettings.java | 9 ++ + .../android/website_preference_bridge.cc | 2 +- .../strings/android/browser_ui_strings.grd | 5 ++ - components/content_settings/android/BUILD.gn | 1 + .../core/browser/content_settings_utils.cc | 36 ++++++++ .../core/browser/content_settings_utils.h | 6 ++ - .../common/content_settings_constraints.h | 11 +++ + .../common/content_settings_constraints.h | 9 ++ .../page_info/PageInfoController.java | 4 +- .../PermissionParamsListBuilder.java | 13 ++- .../android/page_info_controller_android.cc | 10 ++- @@ -74,21 +72,21 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/page_info/page_info.h | 1 + .../permissions/PermissionDialogDelegate.java | 13 +++ .../PermissionDialogModelFactory.java | 82 ++++++++++++++++++- - .../permission_dialog_delegate.cc | 19 +++++ + .../permission_dialog_delegate.cc | 24 +++++- .../permission_dialog_delegate.h | 1 + - .../permission_prompt_android.cc | 8 ++ - .../permission_prompt_android.h | 2 + + .../permission_prompt_android.cc | 8 +- + .../permission_prompt_android.h | 3 +- .../android/permissions_android_strings.grd | 17 ++++ - .../geolocation_permission_context_android.cc | 35 ++++++-- - .../geolocation_permission_context_android.h | 14 +++- - .../permissions/permission_context_base.cc | 51 ++++++++++-- + .../geolocation_permission_context_android.cc | 34 ++++++-- + .../geolocation_permission_context_android.h | 13 ++- + .../permissions/permission_context_base.cc | 52 ++++++++++-- .../permissions/permission_context_base.h | 23 +++++- components/permissions/permission_prompt.h | 3 +- components/permissions/permission_request.cc | 30 ++++++- components/permissions/permission_request.h | 16 +++- .../permissions/permission_request_manager.cc | 45 ++++++---- .../permissions/permission_request_manager.h | 11 ++- - 36 files changed, 511 insertions(+), 61 deletions(-) + 34 files changed, 488 insertions(+), 61 deletions(-) diff --git a/chrome/browser/permissions/last_tab_standing_tracker.cc b/chrome/browser/permissions/last_tab_standing_tracker.cc --- a/chrome/browser/permissions/last_tab_standing_tracker.cc @@ -176,18 +174,18 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker.cc b/chrome OneTimePermissionsTracker::~OneTimePermissionsTracker() = default; OneTimePermissionsTracker::OriginTrackEntry::OriginTrackEntry() = default; -@@ -108,6 +134,11 @@ void OneTimePermissionsTracker::WebContentsUnloadedOrigin( - observer.OnLastPageFromOriginClosed(origin); - } - } -+ HostContentSettingsMap* content_settings = -+ permissions::PermissionsClient::Get()->GetSettingsMap(context_); -+ RemoveSessionSettings(content_settings, origin, ContentSettingsType::GEOLOCATION); -+ RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_MIC); -+ RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_CAMERA); +@@ -258,6 +284,11 @@ void OneTimePermissionsTracker::NotifyLastPageFromOriginClosed( + for (auto& observer : observer_list_) { + observer.OnLastPageFromOriginClosed(origin); } ++ HostContentSettingsMap* content_settings = ++ permissions::PermissionsClient::Get()->GetSettingsMap(context_); ++ RemoveSessionSettings(content_settings, origin, ContentSettingsType::GEOLOCATION); ++ RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_MIC); ++ RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_CAMERA); } + bool OneTimePermissionsTracker::ShouldIgnoreOrigin(const url::Origin& origin) { diff --git a/chrome/browser/permissions/one_time_permissions_tracker.h b/chrome/browser/permissions/one_time_permissions_tracker.h --- a/chrome/browser/permissions/one_time_permissions_tracker.h +++ b/chrome/browser/permissions/one_time_permissions_tracker.h @@ -208,7 +206,7 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker.h b/chrome/ ~OneTimePermissionsTracker() override; OneTimePermissionsTracker(const OneTimePermissionsTracker&) = delete; -@@ -136,7 +137,7 @@ class OneTimePermissionsTracker : public KeyedService { +@@ -139,7 +140,7 @@ class OneTimePermissionsTracker : public KeyedService { base::ObserverList observer_list_; std::map origin_tracker_; @@ -230,7 +228,7 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker_factory.cc diff --git a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc b/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc --- a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc +++ b/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc -@@ -236,7 +236,7 @@ void EmbeddedPermissionPrompt::Allow() { +@@ -237,7 +237,7 @@ void EmbeddedPermissionPrompt::Allow() { } void EmbeddedPermissionPrompt::AllowThisTime() { @@ -242,71 +240,34 @@ diff --git a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc b diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc --- a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc +++ b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc -@@ -263,7 +263,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) { +@@ -267,7 +267,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) { + delegate_->Accept(); return; case PermissionDialogButton::kAcceptOnce: - RecordDecision(permissions::PermissionAction::GRANTED_ONCE); - delegate_->AcceptThisTime(); + delegate_->AcceptThisTime(content_settings::LifetimeMode::OnlyThisTime); return; case PermissionDialogButton::kDeny: - RecordDecision(permissions::PermissionAction::DENIED); + delegate_->Deny(); diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java -@@ -9,6 +9,7 @@ import androidx.annotation.Nullable; - import org.chromium.components.content_settings.ContentSettingValues; +@@ -10,6 +10,7 @@ import org.chromium.components.content_settings.ContentSettingValues; import org.chromium.components.content_settings.ContentSettingsType; + import org.chromium.components.content_settings.SessionModel; import org.chromium.content_public.browser.BrowserContextHandle; +import org.chromium.components.content_settings.SessionModel; import java.io.Serializable; -@@ -18,9 +19,15 @@ public class PermissionInfo implements Serializable { - private final String mEmbedder; - private final String mOrigin; - private final @ContentSettingsType int mContentSettingsType; -+ private final @SessionModel int mSessionModel; -+ -+ public PermissionInfo(@ContentSettingsType int type, String origin, String embedder, boolean isEmbargoed) { -+ this(type, origin, embedder, isEmbargoed, 0); -+ } - - public PermissionInfo( -- @ContentSettingsType int type, String origin, String embedder, boolean isEmbargoed) { -+ @ContentSettingsType int type, String origin, String embedder, boolean isEmbargoed, -+ @SessionModel int sessionModel) { - assert WebsitePermissionsFetcher.getPermissionsType(type) - == WebsitePermissionsFetcher.WebsitePermissionsType.PERMISSION_INFO - : "invalid type: " + type; -@@ -28,6 +35,11 @@ public class PermissionInfo implements Serializable { - mEmbedder = embedder; - mContentSettingsType = type; - mIsEmbargoed = isEmbargoed; -+ mSessionModel = sessionModel; -+ } -+ -+ public @SessionModel int getSessionModel() { -+ return mSessionModel; - } - - public @ContentSettingsType int getContentSettingsType() { diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -38,6 +38,7 @@ import org.chromium.components.browser_ui.settings.TextMessagePreference; - import org.chromium.components.browsing_data.DeleteBrowsingDataAction; - import org.chromium.components.content_settings.ContentSettingValues; - import org.chromium.components.content_settings.ContentSettingsType; -+import org.chromium.components.content_settings.SessionModel; - import org.chromium.components.embedder_support.util.Origin; - import org.chromium.components.permissions.PermissionsAndroidFeatureList; - import org.chromium.components.permissions.PermissionsAndroidFeatureMap; -@@ -567,6 +568,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -559,6 +559,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment } } -+ private boolean isSessionPermission(@ContentSettingsType int type) { ++ private boolean isSessionPermission(@ContentSettingsType.EnumType int type) { + return mSite.getPermissionInfo(type) != null && + mSite.getPermissionInfo(type).getSessionModel() == SessionModel.USER_SESSION; + } @@ -314,7 +275,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c private void setUpClearDataPreference() { ClearWebsiteStorage preference = findPreference(PREF_CLEAR_DATA); long usage = mSite.getTotalUsage(); -@@ -1094,6 +1100,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1070,6 +1075,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment if (contentType == mHighlightedPermission) { switchPreference.setBackgroundColor(mHighlightColor); } @@ -325,63 +286,14 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } /** -diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java ---- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java -+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java -@@ -10,6 +10,7 @@ import org.jni_zero.NativeMethods; - import org.chromium.base.Callback; - import org.chromium.components.content_settings.ContentSettingValues; - import org.chromium.components.content_settings.ContentSettingsType; -+import org.chromium.components.content_settings.SessionModel; - import org.chromium.components.location.LocationUtils; - import org.chromium.content_public.browser.BrowserContextHandle; - import org.chromium.url.GURL; -@@ -54,7 +55,8 @@ public class WebsitePreferenceBridge { - ArrayList list, - String origin, - String embedder, -- boolean isEmbargoed) { -+ boolean isEmbargoed, -+ @SessionModel int sessionModel) { - if (type == ContentSettingsType.MEDIASTREAM_CAMERA - || type == ContentSettingsType.MEDIASTREAM_MIC) { - for (PermissionInfo info : list) { -@@ -63,7 +65,7 @@ public class WebsitePreferenceBridge { - } - } - } -- list.add(new PermissionInfo(type, origin, embedder, isEmbargoed)); -+ list.add(new PermissionInfo(type, origin, embedder, isEmbargoed, sessionModel)); - } - - @CalledByNative diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc --- a/components/browser_ui/site_settings/android/website_preference_bridge.cc +++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc -@@ -131,7 +131,8 @@ typedef void (*InfoListInsertionFunction)( - const base::android::JavaRef&, - const base::android::JavaRef&, - const base::android::JavaRef&, -- jboolean); -+ jboolean, -+ JniIntWrapper); - - void GetOrigins(JNIEnv* env, - const JavaParamRef& jbrowser_context_handle, -@@ -173,7 +174,7 @@ void GetOrigins(JNIEnv* env, - seen_origins.push_back(origin); - insertionFunc(env, static_cast(content_type), list, - ConvertOriginToJavaString(env, origin), jembedder, -- /*is_embargoed=*/false); -+ /*is_embargoed=*/false, static_cast(settings_it.metadata.session_model())); - } - - // Add any origins which have a default content setting value (thus skipped -@@ -195,7 +196,7 @@ void GetOrigins(JNIEnv* env, +@@ -198,7 +198,7 @@ void GetOrigins(JNIEnv* env, seen_origins.push_back(origin); insertionFunc(env, static_cast(content_type), list, ConvertOriginToJavaString(env, origin), jembedder, -- /*is_embargoed=*/true); +- /*is_embargoed=*/true, /*is_one_time=*/false); + /*is_embargoed=*/true, 0); } } @@ -389,7 +301,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd --- a/components/browser_ui/strings/android/browser_ui_strings.grd +++ b/components/browser_ui/strings/android/browser_ui_strings.grd -@@ -682,6 +682,11 @@ +@@ -673,6 +673,11 @@ URL truncated @@ -401,21 +313,10 @@ diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/comp Ad privacy -diff --git a/components/content_settings/android/BUILD.gn b/components/content_settings/android/BUILD.gn ---- a/components/content_settings/android/BUILD.gn -+++ b/components/content_settings/android/BUILD.gn -@@ -61,6 +61,7 @@ java_cpp_enum("content_settings_enums_javagen") { - "../core/common/cookie_controls_breakage_confidence_level.h", - "../core/common/cookie_controls_enforcement.h", - "../core/common/cookie_controls_status.h", -+ "../core/common/content_settings_constraints.h", - ] - visibility = [ ":*" ] # Depend on through :content_settings_enums_java - } diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc -@@ -173,6 +173,42 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints) { +@@ -174,6 +174,42 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints) { return constraints.session_model() == SessionModel::Durable; } @@ -477,16 +378,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.h b diff --git a/components/content_settings/core/common/content_settings_constraints.h b/components/content_settings/core/common/content_settings_constraints.h --- a/components/content_settings/core/common/content_settings_constraints.h +++ b/components/content_settings/core/common/content_settings_constraints.h -@@ -23,6 +23,8 @@ namespace content_settings { - // a crash or update related restart. - // OneTime: Settings will persist for the current "tab session", meaning - // until the last tab from the origin is closed. -+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.content_settings -+// GENERATED_JAVA_CLASS_NAME_OVERRIDE: SessionModel - enum class SessionModel { - Durable = 0, - UserSession = 1, -@@ -31,6 +33,15 @@ enum class SessionModel { +@@ -33,6 +33,15 @@ enum class SessionModel : int32_t { kMaxValue = OneTime, }; @@ -604,7 +496,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.cc --- a/components/page_info/page_info.cc +++ b/components/page_info/page_info.cc -@@ -1187,6 +1187,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1163,6 +1163,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, permission_info.source = info.source; permission_info.is_one_time = (info.metadata.session_model() == content_settings::SessionModel::OneTime); @@ -616,37 +508,37 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. diff --git a/components/page_info/page_info.h b/components/page_info/page_info.h --- a/components/page_info/page_info.h +++ b/components/page_info/page_info.h -@@ -200,6 +200,7 @@ class PageInfo : private content_settings::CookieControlsObserver, +@@ -199,6 +199,7 @@ class PageInfo : private content_settings::CookieControlsObserver { content_settings::SETTING_SOURCE_NONE; // Whether the permission is a one-time grant. bool is_one_time = false; + bool is_user_session = false; // Only set for settings that can have multiple permissions for different // embedded origins. - absl::optional requesting_origin; + std::optional requesting_origin; diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java --- a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java +++ b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java -@@ -11,6 +11,7 @@ import org.jni_zero.JNINamespace; +@@ -13,6 +13,7 @@ import org.jni_zero.JNINamespace; import org.jni_zero.NativeMethods; import org.chromium.ui.base.WindowAndroid; +import org.chromium.components.content_settings.LifetimeMode; - /** - * Delegate class for modal permission dialogs. Contains all of the data displayed in a prompt, -@@ -46,6 +47,9 @@ public class PermissionDialogDelegate { + import java.util.ArrayList; + import java.util.List; +@@ -57,6 +58,9 @@ public class PermissionDialogDelegate { /** The {@link ContentSettingsType}s requested in this dialog. */ private int[] mContentSettingsTypes; + /** Lifetime option selected by the user. */ + private int mSelectedLifetimeOption = LifetimeMode.ALWAYS; + - public WindowAndroid getWindow() { - return mWindow; - } -@@ -75,6 +79,15 @@ public class PermissionDialogDelegate { - PermissionDialogDelegateJni.get().accept(mNativeDelegatePtr, PermissionDialogDelegate.this); + /** + * Defines a (potentially empty) list of ranges represented as pairs of , + * which shall be used by the UI to format the specified ranges as bold text. +@@ -110,6 +114,15 @@ public class PermissionDialogDelegate { + .acceptThisTime(mNativeDelegatePtr, PermissionDialogDelegate.this); } + public void setSelectedLifetimeOption(int idx) { @@ -683,20 +575,13 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per /** This class creates the model for the permission dialog. */ class PermissionDialogModelFactory { public static PropertyModel getModel( -@@ -25,7 +37,7 @@ class PermissionDialogModelFactory { - String messageText = delegate.getMessageText(); - assert !TextUtils.isEmpty(messageText); - -- return new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS) -+ PropertyModel pm = new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS) - .with(ModalDialogProperties.CONTROLLER, controller) - .with(ModalDialogProperties.FOCUS_DIALOG, true) - .with(ModalDialogProperties.CUSTOM_VIEW, customView) -@@ -38,5 +50,73 @@ class PermissionDialogModelFactory { - ModalDialogProperties.BUTTON_TAP_PROTECTION_PERIOD_MS, - UiUtils.PROMPT_INPUT_PROTECTION_SHORT_DELAY_MS) - .build(); +@@ -60,6 +72,74 @@ class PermissionDialogModelFactory { + ModalDialogProperties.NEGATIVE_BUTTON_TEXT, + delegate.getNegativeButtonText()); + } +- return builder.build(); + ++ PropertyModel pm = builder.build(); + int[] types = delegate.getContentSettingsTypes(); + if (contains(types, ContentSettingsType.GEOLOCATION) || + contains(types, ContentSettingsType.MEDIASTREAM_MIC) || @@ -769,7 +654,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc --- a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc +++ b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc -@@ -113,6 +113,11 @@ void PermissionDialogJavaDelegate::DismissDialog() { +@@ -144,6 +144,11 @@ void PermissionDialogJavaDelegate::DismissDialog() { Java_PermissionDialogDelegate_dismissFromNative(env, j_delegate_); } @@ -781,10 +666,10 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ // static void PermissionDialogDelegate::Create( content::WebContents* web_contents, -@@ -141,12 +146,26 @@ PermissionDialogDelegate* PermissionDialogDelegate::CreateForTesting( +@@ -172,6 +177,13 @@ PermissionDialogDelegate* PermissionDialogDelegate::CreateForTesting( void PermissionDialogDelegate::Accept(JNIEnv* env, const JavaParamRef& obj) { - DCHECK(permission_prompt_); + CHECK(permission_prompt_); + content_settings::LifetimeMode lifetimeOption = + static_cast( + java_delegate_->GetSelectedLifetimeOption()); @@ -795,9 +680,20 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ permission_prompt_->Accept(); } +@@ -179,12 +191,22 @@ void PermissionDialogDelegate::AcceptThisTime( + JNIEnv* env, + const JavaParamRef& obj) { + CHECK(permission_prompt_); +- permission_prompt_->AcceptThisTime(); ++ content_settings::LifetimeMode lifetimeOption = ++ static_cast( ++ java_delegate_->GetSelectedLifetimeOption()); ++ permission_prompt_->AcceptThisTime(lifetimeOption); + } + void PermissionDialogDelegate::Cancel(JNIEnv* env, const JavaParamRef& obj) { - DCHECK(permission_prompt_); + CHECK(permission_prompt_); + content_settings::LifetimeMode lifetimeOption = + static_cast( + java_delegate_->GetSelectedLifetimeOption()); @@ -822,28 +718,29 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.cc b/components/permissions/android/permission_prompt/permission_prompt_android.cc --- a/components/permissions/android/permission_prompt/permission_prompt_android.cc +++ b/components/permissions/android/permission_prompt/permission_prompt_android.cc -@@ -52,6 +52,14 @@ void PermissionPromptAndroid::Accept() { +@@ -53,8 +53,12 @@ void PermissionPromptAndroid::Accept() { delegate_->Accept(); } +-void PermissionPromptAndroid::AcceptThisTime() { +- delegate_->AcceptThisTime(); +void PermissionPromptAndroid::AcceptThisTime(content_settings::LifetimeMode lifetimeOption) { + delegate_->AcceptThisTime(lifetimeOption); +} + +void PermissionPromptAndroid::DenyThisTime(content_settings::LifetimeMode lifetimeOption) { + delegate_->DenyThisTime(lifetimeOption); -+} -+ - void PermissionPromptAndroid::Deny() { - delegate_->Deny(); } + + void PermissionPromptAndroid::Deny() { diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.h b/components/permissions/android/permission_prompt/permission_prompt_android.h --- a/components/permissions/android/permission_prompt/permission_prompt_android.h +++ b/components/permissions/android/permission_prompt/permission_prompt_android.h -@@ -47,7 +47,9 @@ class PermissionPromptAndroid : public PermissionPrompt { +@@ -44,8 +44,9 @@ class PermissionPromptAndroid : public PermissionPrompt { void Closing(); void Accept(); +- void AcceptThisTime(); + void AcceptThisTime(content_settings::LifetimeMode lifetimeOption); void Deny(); + void DenyThisTime(content_settings::LifetimeMode lifetimeOption); @@ -880,9 +777,9 @@ diff --git a/components/permissions/android/permissions_android_strings.grd b/co diff --git a/components/permissions/contexts/geolocation_permission_context_android.cc b/components/permissions/contexts/geolocation_permission_context_android.cc --- a/components/permissions/contexts/geolocation_permission_context_android.cc +++ b/components/permissions/contexts/geolocation_permission_context_android.cc -@@ -163,7 +163,20 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -162,7 +162,20 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( + bool is_one_time, bool is_final_decision) { - DCHECK(!is_one_time); DCHECK(is_final_decision); + NotifyPermissionSetWithLifetime(id, requesting_origin, embedding_origin, + std::move(callback), persist, content_setting, is_one_time, is_final_decision, @@ -901,71 +798,71 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr bool is_default_search = IsRequestingOriginDSE(requesting_origin); if (content_setting == CONTENT_SETTING_ALLOW && !location_settings_->IsSystemLocationSettingEnabled()) { -@@ -176,7 +189,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -175,7 +188,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( if (IsInLocationSettingsBackOff(is_default_search)) { FinishNotifyPermissionSet(id, requesting_origin, embedding_origin, std::move(callback), false /* persist */, -- CONTENT_SETTING_BLOCK); +- CONTENT_SETTING_BLOCK, is_one_time); + CONTENT_SETTING_BLOCK, + is_one_time, lifetime_option); return; } -@@ -194,7 +208,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -193,7 +207,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( !location_settings_dialog_callback_.is_null()) { FinishNotifyPermissionSet(id, requesting_origin, embedding_origin, std::move(callback), false /* persist */, -- CONTENT_SETTING_BLOCK); +- CONTENT_SETTING_BLOCK, is_one_time); + CONTENT_SETTING_BLOCK, + is_one_time, lifetime_option); return; } -@@ -206,12 +221,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -205,13 +220,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( base::BindOnce( &GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown, weak_factory_.GetWeakPtr(), requesting_origin, embedding_origin, -- persist, content_setting)); +- persist, content_setting, is_one_time)); + persist, content_setting, is_one_time, lifetime_option)); return; } FinishNotifyPermissionSet(id, requesting_origin, embedding_origin, -- std::move(callback), persist, content_setting); -+ std::move(callback), persist, content_setting, + std::move(callback), persist, content_setting, +- is_one_time); + is_one_time, lifetime_option); } content::PermissionResult -@@ -377,6 +393,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( +@@ -377,7 +392,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( const GURL& embedding_origin, bool persist, ContentSetting content_setting, +- bool is_one_time, + bool is_one_time, content_settings::LifetimeMode lifetime_option, LocationSettingsDialogOutcome prompt_outcome) { bool is_default_search = IsRequestingOriginDSE(requesting_origin); if (prompt_outcome == GRANTED) { -@@ -394,7 +411,8 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( - - FinishNotifyPermissionSet( - location_settings_dialog_request_id_, requesting_origin, embedding_origin, -- std::move(location_settings_dialog_callback_), persist, content_setting); -+ std::move(location_settings_dialog_callback_), persist, content_setting, -+ is_one_time, lifetime_option); +@@ -396,7 +411,8 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( + FinishNotifyPermissionSet(location_settings_dialog_request_id_, + requesting_origin, embedding_origin, + std::move(location_settings_dialog_callback_), +- persist, content_setting, is_one_time); ++ persist, content_setting, is_one_time, ++ lifetime_option); location_settings_dialog_request_id_ = PermissionRequestID(content::GlobalRenderFrameHostId(0, 0), -@@ -407,10 +425,11 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( - const GURL& embedding_origin, +@@ -410,10 +426,10 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( BrowserPermissionCallback callback, bool persist, -- ContentSetting content_setting) { + ContentSetting content_setting, +- bool is_one_time) { - GeolocationPermissionContext::NotifyPermissionSet( -+ ContentSetting content_setting, + bool is_one_time, content_settings::LifetimeMode lifetime_option) { + GeolocationPermissionContext::NotifyPermissionSetWithLifetime( id, requesting_origin, embedding_origin, std::move(callback), persist, -- content_setting, /*is_one_time=*/false, /*is_final_decision=*/true); +- content_setting, is_one_time, /*is_final_decision=*/true); + content_setting, is_one_time, /*is_final_decision=*/true, lifetime_option); } @@ -989,20 +886,19 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr content::PermissionResult UpdatePermissionStatusWithDeviceStatus( content::PermissionResult result, const GURL& requesting_origin, -@@ -131,6 +140,7 @@ class GeolocationPermissionContextAndroid - const GURL& embedding_origin, +@@ -132,6 +141,7 @@ class GeolocationPermissionContextAndroid bool persist, ContentSetting content_setting, -+ bool is_one_time, content_settings::LifetimeMode lifetime_option, + bool is_one_time, ++ content_settings::LifetimeMode lifetime_option, LocationSettingsDialogOutcome prompt_outcome); void FinishNotifyPermissionSet(const PermissionRequestID& id, -@@ -138,7 +148,9 @@ class GeolocationPermissionContextAndroid - const GURL& embedding_origin, +@@ -140,7 +150,8 @@ class GeolocationPermissionContextAndroid BrowserPermissionCallback callback, bool persist, -- ContentSetting content_setting); -+ ContentSetting content_setting, + ContentSetting content_setting, +- bool is_one_time); + bool is_one_time, + content_settings::LifetimeMode lifetime_option); @@ -1011,11 +907,12 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr diff --git a/components/permissions/permission_context_base.cc b/components/permissions/permission_context_base.cc --- a/components/permissions/permission_context_base.cc +++ b/components/permissions/permission_context_base.cc -@@ -261,6 +261,16 @@ PermissionContextBase::CreatePermissionRequest( - std::move(delete_callback)); +@@ -265,6 +265,17 @@ bool PermissionContextBase::UsesAutomaticEmbargo() const { + return true; } -+std::unique_ptr PermissionContextBase::CreatePermissionRequest( ++std::unique_ptr ++PermissionContextBase::CreatePermissionRequest( + content::WebContents* web_contents, + PermissionRequestData request_data, + PermissionRequest::PermissionDecidedCallbackWithLifetime permission_decided_callback, @@ -1028,7 +925,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm content::PermissionResult PermissionContextBase::GetPermissionStatus( content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, -@@ -505,7 +515,8 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id, +@@ -511,7 +522,8 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id, const GURL& embedding_origin, ContentSetting content_setting, bool is_one_time, @@ -1038,7 +935,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK(content_setting == CONTENT_SETTING_ALLOW || content_setting == CONTENT_SETTING_BLOCK || content_setting == CONTENT_SETTING_DEFAULT); -@@ -520,13 +531,14 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id, +@@ -526,13 +538,14 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id, // missing if a permission prompt was preignored and we already notified an // origin about it. if (request->second.second) { @@ -1057,7 +954,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } } -@@ -572,11 +584,27 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -578,11 +591,27 @@ void PermissionContextBase::NotifyPermissionSet( ContentSetting content_setting, bool is_one_time, bool is_final_decision) { @@ -1086,7 +983,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } if (is_final_decision) { -@@ -606,6 +634,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, +@@ -612,6 +641,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, const GURL& embedding_origin, ContentSetting content_setting, bool is_one_time) { @@ -1102,7 +999,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK_EQ(requesting_origin, requesting_origin.DeprecatedGetOriginAsURL()); DCHECK_EQ(embedding_origin, embedding_origin.DeprecatedGetOriginAsURL()); DCHECK(content_setting == CONTENT_SETTING_ALLOW || -@@ -615,6 +652,8 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, +@@ -621,6 +659,8 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, constraints.set_session_model(is_one_time ? content_settings::SessionModel::OneTime : content_settings::SessionModel::Durable); @@ -1142,9 +1039,9 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi virtual void UpdateContentSetting(const GURL& requesting_origin, const GURL& embedding_origin, ContentSetting content_setting, -@@ -204,6 +218,12 @@ class PermissionContextBase : public content_settings::Observer { - PermissionRequest::PermissionDecidedCallback permission_decided_callback, - base::OnceClosure delete_callback) const; +@@ -207,6 +221,12 @@ class PermissionContextBase : public content_settings::Observer { + // Implementors can override this method to avoid using automatic embargo. + virtual bool UsesAutomaticEmbargo() const; + virtual std::unique_ptr CreatePermissionRequest( + content::WebContents* web_contents, @@ -1155,7 +1052,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi base::ObserverList permission_observers_; // Set by subclasses to inform the base class that they will handle adding -@@ -226,7 +246,8 @@ class PermissionContextBase : public content_settings::Observer { +@@ -229,7 +249,8 @@ class PermissionContextBase : public content_settings::Observer { const GURL& embedding_origin, ContentSetting content_setting, bool is_one_time, @@ -1168,7 +1065,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi diff --git a/components/permissions/permission_prompt.h b/components/permissions/permission_prompt.h --- a/components/permissions/permission_prompt.h +++ b/components/permissions/permission_prompt.h -@@ -65,8 +65,9 @@ class PermissionPrompt { +@@ -67,8 +67,9 @@ class PermissionPrompt { virtual GURL GetEmbeddingOrigin() const = 0; virtual void Accept() = 0; @@ -1182,9 +1079,9 @@ diff --git a/components/permissions/permission_prompt.h b/components/permissions diff --git a/components/permissions/permission_request.cc b/components/permissions/permission_request.cc --- a/components/permissions/permission_request.cc +++ b/components/permissions/permission_request.cc -@@ -37,6 +37,14 @@ PermissionRequest::PermissionRequest( - permission_decided_callback_(std::move(permission_decided_callback)), - delete_callback_(std::move(delete_callback)) {} +@@ -43,6 +43,14 @@ PermissionRequest::PermissionRequest( + delete_callback_(std::move(delete_callback)), + uses_automatic_embargo_(uses_automatic_embargo) {} +PermissionRequest::PermissionRequest( + PermissionRequestData request_data, @@ -1197,7 +1094,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio PermissionRequest::~PermissionRequest() { DCHECK(delete_callback_.is_null()); } -@@ -279,19 +287,37 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { +@@ -357,19 +365,37 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { permissions::features::kPermissionStorageAccessAPI); } @@ -1240,7 +1137,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio diff --git a/components/permissions/permission_request.h b/components/permissions/permission_request.h --- a/components/permissions/permission_request.h +++ b/components/permissions/permission_request.h -@@ -44,6 +44,11 @@ class PermissionRequest { +@@ -43,6 +43,11 @@ class PermissionRequest { bool /*is_one_time*/, bool /*is_final_decision*/)>; @@ -1253,8 +1150,8 @@ diff --git a/components/permissions/permission_request.h b/components/permission // resolved by the user (see comment on PermissionDecidedCallback above). // `delete_callback` is called when the permission request is no longer needed @@ -63,6 +68,10 @@ class PermissionRequest { - PermissionDecidedCallback permission_decided_callback, - base::OnceClosure delete_callback); + base::OnceClosure delete_callback, + bool uses_automatic_embargo); + PermissionRequest(PermissionRequestData request_data, + PermissionDecidedCallbackWithLifetime permission_decided_callback, @@ -1263,7 +1160,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission PermissionRequest(const PermissionRequest&) = delete; PermissionRequest& operator=(const PermissionRequest&) = delete; -@@ -128,10 +137,10 @@ class PermissionRequest { +@@ -159,10 +168,10 @@ class PermissionRequest { // If |is_one_time| is true the permission will last until all tabs of // |origin| are closed or navigated away from, and then the permission will // automatically expire after 1 day. @@ -1276,7 +1173,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission // Called when the user has cancelled the permission request. This // corresponds to a denial, but is segregated in case the context needs to -@@ -180,6 +189,9 @@ class PermissionRequest { +@@ -216,6 +225,9 @@ class PermissionRequest { // Called once a decision is made about the permission. PermissionDecidedCallback permission_decided_callback_; @@ -1289,7 +1186,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc --- a/components/permissions/permission_request_manager.cc +++ b/components/permissions/permission_request_manager.cc -@@ -155,7 +155,7 @@ void PermissionRequestManager::AddRequest( +@@ -156,7 +156,7 @@ void PermissionRequestManager::AddRequest( if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDenyPermissionPrompts)) { @@ -1298,7 +1195,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p request->RequestFinished(); return; } -@@ -231,7 +231,7 @@ void PermissionRequestManager::AddRequest( +@@ -232,7 +232,7 @@ void PermissionRequestManager::AddRequest( if (auto_approval_origin) { if (url::Origin::Create(request->requesting_origin()) == auto_approval_origin.value()) { @@ -1307,7 +1204,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } request->RequestFinished(); return; -@@ -574,7 +574,8 @@ void PermissionRequestManager::Accept() { +@@ -593,7 +593,8 @@ void PermissionRequestManager::Accept() { (*requests_iter)->request_type(), PermissionAction::GRANTED); PermissionGrantedIncludingDuplicates(*requests_iter, @@ -1316,8 +1213,8 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p + content_settings::LifetimeMode::Always); #if !BUILDFLAG(IS_ANDROID) - absl::optional content_settings_type = -@@ -592,7 +593,7 @@ void PermissionRequestManager::Accept() { + std::optional content_settings_type = +@@ -611,7 +612,7 @@ void PermissionRequestManager::Accept() { CurrentRequestsDecided(PermissionAction::GRANTED); } @@ -1326,7 +1223,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) return; DCHECK(view_); -@@ -603,7 +604,8 @@ void PermissionRequestManager::AcceptThisTime() { +@@ -623,7 +624,8 @@ void PermissionRequestManager::AcceptThisTime() { (*requests_iter)->request_type(), PermissionAction::GRANTED_ONCE); PermissionGrantedIncludingDuplicates(*requests_iter, @@ -1336,7 +1233,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } NotifyRequestDecided(PermissionAction::GRANTED_ONCE); -@@ -611,6 +613,15 @@ void PermissionRequestManager::AcceptThisTime() { +@@ -631,6 +633,15 @@ void PermissionRequestManager::AcceptThisTime() { } void PermissionRequestManager::Deny() { @@ -1352,7 +1249,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) return; DCHECK(view_); -@@ -633,7 +644,7 @@ void PermissionRequestManager::Deny() { +@@ -654,7 +665,7 @@ void PermissionRequestManager::Deny() { StorePermissionActionForUMA((*requests_iter)->requesting_origin(), (*requests_iter)->request_type(), PermissionAction::DENIED); @@ -1361,7 +1258,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } NotifyRequestDecided(PermissionAction::DENIED); -@@ -1190,32 +1201,32 @@ PermissionRequestManager::VisitDuplicateRequests( +@@ -1213,32 +1224,32 @@ PermissionRequestManager::VisitDuplicateRequests( void PermissionRequestManager::PermissionGrantedIncludingDuplicates( PermissionRequest* request, @@ -1404,8 +1301,8 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p request); } -@@ -1467,7 +1478,7 @@ void PermissionRequestManager::LogWarningToConsole(const char* message) { - void PermissionRequestManager::DoAutoResponseForTesting() { +@@ -1495,7 +1506,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() { + } switch (auto_response_for_test_) { case ACCEPT_ONCE: - AcceptThisTime(); @@ -1416,7 +1313,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p diff --git a/components/permissions/permission_request_manager.h b/components/permissions/permission_request_manager.h --- a/components/permissions/permission_request_manager.h +++ b/components/permissions/permission_request_manager.h -@@ -159,8 +159,10 @@ class PermissionRequestManager +@@ -162,8 +162,10 @@ class PermissionRequestManager GURL GetRequestingOrigin() const override; GURL GetEmbeddingOrigin() const override; void Accept() override; @@ -1428,7 +1325,7 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe void Dismiss() override; void Ignore() override; void FinalizeCurrentRequests() override; -@@ -365,9 +367,12 @@ class PermissionRequestManager +@@ -368,9 +370,12 @@ class PermissionRequestManager // Calls PermissionGranted on a request and all its duplicates. void PermissionGrantedIncludingDuplicates(PermissionRequest* request, diff --git a/build/cromite_patches/Add-menu-item-to-bookmark-all-tabs.patch b/build/cromite_patches/Add-menu-item-to-bookmark-all-tabs.patch index 2377193ef6cae48779da9a88d8ba0d75095973f9..25d8f6146b6fb51768fc24212a1ad9ba16265aef 100644 --- a/build/cromite_patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/cromite_patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -9,24 +9,24 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/bookmarks/BookmarkBridge.java | 67 +++++++++++++++++++ .../bookmarks/android/bookmark_bridge.cc | 44 ++++++++++++ .../bookmarks/android/bookmark_bridge.h | 8 +++ - .../browser/bookmarks/bookmark_html_writer.cc | 8 ++- + .../browser/bookmarks/bookmark_html_writer.cc | 11 ++- .../dialogs/DownloadLocationCustomView.java | 4 +- .../strings/android_chrome_strings.grd | 3 + components/bookmark_bar_strings.grdp | 6 ++ - .../bookmarks/browser/bookmark_client.cc | 2 + - .../bookmarks/browser/bookmark_codec.cc | 22 ++++-- + .../bookmarks/browser/bookmark_codec.cc | 20 +++++- components/bookmarks/browser/bookmark_codec.h | 7 +- - .../browser/bookmark_load_details.cc | 4 ++ - .../bookmarks/browser/bookmark_load_details.h | 3 + + .../browser/bookmark_load_details.cc | 8 ++- + .../bookmarks/browser/bookmark_load_details.h | 2 + .../bookmarks/browser/bookmark_model.cc | 3 +- components/bookmarks/browser/bookmark_model.h | 7 ++ components/bookmarks/browser/bookmark_node.cc | 11 +++ - components/bookmarks/browser/bookmark_node.h | 4 ++ + components/bookmarks/browser/bookmark_node.h | 3 + + .../bookmarks/browser/bookmark_storage.cc | 2 + .../bookmarks/browser/bookmark_uuids.cc | 3 + components/bookmarks/browser/bookmark_uuids.h | 1 + - components/bookmarks/browser/model_loader.cc | 3 +- + components/bookmarks/browser/model_loader.cc | 8 ++- .../bookmark_specifics_conversions.cc | 1 + - 22 files changed, 232 insertions(+), 10 deletions(-) + 22 files changed, 236 insertions(+), 14 deletions(-) diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml --- a/chrome/android/java/res/menu/main_menu.xml @@ -42,7 +42,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re -@@ -183,6 +187,9 @@ found in the LICENSE file. +@@ -186,6 +190,9 @@ found in the LICENSE file. @@ -55,7 +55,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -86,6 +86,7 @@ import org.chromium.chrome.browser.base.ColdStartTracker; +@@ -89,6 +89,7 @@ import org.chromium.chrome.browser.base.ColdStartTracker; import org.chromium.chrome.browser.bookmarks.BookmarkUtils; import org.chromium.chrome.browser.browserservices.intents.WebappConstants; import org.chromium.chrome.browser.compositor.CompositorViewHolder; @@ -63,7 +63,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.compositor.layouts.Layout; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone; -@@ -2787,6 +2788,8 @@ public class ChromeTabbedActivity extends ChromeActivity getTabModelSelector().closeAllTabs()); RecordUserAction.record("MobileMenuCloseAllTabs"); @@ -72,8 +72,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct } else if (id == R.id.close_all_incognito_tabs_menu_id) { // Close only incognito tabs CloseAllTabsDialog.show( -@@ -2858,6 +2861,27 @@ public class ChromeTabbedActivity extends ChromeActivity mObservers = new ObserverList<>(); @@ -132,7 +130,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm private long mNativeBookmarkBridge; private boolean mIsDestroyed; private boolean mIsDoingExtensiveChanges; -@@ -374,6 +382,16 @@ class BookmarkBridge { +@@ -402,6 +410,16 @@ class BookmarkBridge { return mMobileFolderId; } @@ -146,11 +144,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm + mNativeBookmarkBridge, BookmarkBridge.this); + } + - /** - * @return Id representing the special "other" folder from bookmark model. - */ -@@ -1018,6 +1036,50 @@ class BookmarkBridge { - return BookmarkBridgeJni.get().addToReadingList(mNativeBookmarkBridge, title, url); + /** Returns Id representing the special "other" folder from bookmark model. */ + public BookmarkId getOtherFolderId() { + ThreadUtils.assertOnUiThread(); +@@ -1092,6 +1110,50 @@ class BookmarkBridge { + .addToReadingList(mNativeBookmarkBridge, parentId, title, url); } + // Used to bookmark all tabs in a specific folder, created if not existing @@ -198,9 +196,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm + } + /** - * Helper method to mark an article as read. + * Helper method to mark an item as read. * -@@ -1243,6 +1305,9 @@ class BookmarkBridge { +@@ -1334,6 +1396,9 @@ class BookmarkBridge { BookmarkId getMostRecentlyAddedUserBookmarkIdForUrl(long nativeBookmarkBridge, GURL url); @@ -209,8 +207,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm + BookmarkItem getBookmarkById(long nativeBookmarkBridge, long id, int type); - void getTopLevelFolderIds(long nativeBookmarkBridge, List bookmarksList); -@@ -1254,6 +1319,8 @@ class BookmarkBridge { + void getTopLevelFolderIds( +@@ -1353,6 +1418,8 @@ class BookmarkBridge { BookmarkId getRootFolderId(long nativeBookmarkBridge); @@ -222,7 +220,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -331,6 +331,33 @@ void BookmarkBridge::GetImageUrlForBookmark( +@@ -367,6 +367,33 @@ void BookmarkBridge::GetImageUrlForBookmark( base::BindOnce(&HandleImageUrlResponse, callback)); } @@ -237,11 +235,11 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + bookmarks::BookmarkModel* model = + BookmarkModelFactory::GetForBrowserContext(profile_); + -+ std::vector nodes = ++ std::vector> nodes = + model->GetNodesByURL(gurl); + std::sort(nodes.begin(), nodes.end(), &bookmarks::MoreRecentlyAdded); + -+ for (const auto* node : nodes) { ++ for (const BookmarkNode* node : nodes) { + for (const auto& child : model->tabs_collection_node()->children()) { + if (node->id() == child->id()) { + return JavaBookmarkIdCreateBookmarkId(env, node->id(), @@ -256,7 +254,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse base::android::ScopedJavaLocalRef BookmarkBridge::GetMostRecentlyAddedUserBookmarkIdForUrl( JNIEnv* env, -@@ -421,6 +448,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( +@@ -482,6 +509,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( // Vector to temporarily contain all child bookmarks at same level for sorting std::vector bookmarks = { bookmark_model_->mobile_node(), @@ -264,7 +262,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse bookmark_model_->bookmark_bar_node(), bookmark_model_->other_node(), }; -@@ -474,6 +502,11 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl() { +@@ -539,6 +567,11 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( top_level_folders.push_back(root_child.get()); } @@ -273,10 +271,10 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + top_level_folders.push_back(node.get()); + } + - if (reading_list_manager_->GetRoot()) { - top_level_folders.push_back(reading_list_manager_->GetRoot()); - } -@@ -1027,6 +1060,17 @@ void BookmarkBridge::GetBookmarksOfType( + if (account_reading_list_manager_ && + account_reading_list_manager_->GetRoot()) { + top_level_folders.push_back(account_reading_list_manager_->GetRoot()); +@@ -1176,6 +1209,17 @@ void BookmarkBridge::GetBookmarksOfType( AddBookmarkNodesToBookmarkIdList(env, j_list, results); } @@ -297,7 +295,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser/bookmarks/android/bookmark_bridge.h --- a/chrome/browser/bookmarks/android/bookmark_bridge.h +++ b/chrome/browser/bookmarks/android/bookmark_bridge.h -@@ -67,6 +67,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, +@@ -77,6 +77,10 @@ class BookmarkBridge : public ProfileObserver, const base::android::JavaParamRef& j_url, const base::android::JavaParamRef& j_callback); @@ -308,7 +306,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser base::android::ScopedJavaLocalRef GetMostRecentlyAddedUserBookmarkIdForUrl( JNIEnv* env, -@@ -197,6 +201,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver, +@@ -227,6 +231,10 @@ class BookmarkBridge : public ProfileObserver, const base::android::JavaParamRef& j_list, jint type); @@ -322,7 +320,17 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/bookmarks/bookmark_html_writer.cc --- a/chrome/browser/bookmarks/bookmark_html_writer.cc +++ b/chrome/browser/bookmarks/bookmark_html_writer.cc -@@ -190,15 +190,19 @@ class Writer : public base::RefCountedThreadSafe { +@@ -168,7 +168,8 @@ class Writer : public base::RefCountedThreadSafe { + BookmarkCodec codec; + bookmarks_ = + codec.Encode(model->bookmark_bar_node(), model->other_node(), +- model->mobile_node(), /*sync_metadata_str=*/std::string()); ++ model->mobile_node(), model->tabs_collection_node(), ++ /*sync_metadata_str=*/std::string()); + } + + Writer(const Writer&) = delete; +@@ -195,15 +196,19 @@ class Writer : public base::RefCountedThreadSafe { roots->FindDict(BookmarkCodec::kOtherBookmarkFolderNameKey); base::Value::Dict* mobile_folder_value = roots->FindDict(BookmarkCodec::kMobileBookmarkFolderNameKey); @@ -343,7 +351,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b NotifyOnFinish(BookmarksExportObserver::Result::kCouldNotWriteNodes); return; } -@@ -465,6 +469,8 @@ void BookmarkFaviconFetcher::ExportBookmarks() { +@@ -467,6 +472,8 @@ void BookmarkFaviconFetcher::ExportBookmarks() { BookmarkModelFactory::GetForBrowserContext(profile_)->other_node()); ExtractUrls( BookmarkModelFactory::GetForBrowserContext(profile_)->mobile_node()); @@ -355,7 +363,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java --- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java +++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java -@@ -77,7 +77,7 @@ public class DownloadLocationCustomView extends ScrollView +@@ -85,7 +85,7 @@ public class DownloadLocationCustomView extends ScrollView mDirectoryAdapter.update(); } @@ -364,7 +372,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse mTitle.setText(title); } -@@ -85,7 +85,7 @@ public class DownloadLocationCustomView extends ScrollView +@@ -93,7 +93,7 @@ public class DownloadLocationCustomView extends ScrollView mSubtitleView.setText(subtitle); } @@ -376,7 +384,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -3789,6 +3789,9 @@ To change this setting, <resetlink>reset sync

BEGIN_LINKclear the Chrome da Select tabs @@ -409,22 +417,10 @@ diff --git a/components/bookmark_bar_strings.grdp b/components/bookmark_bar_stri Other Bookmarks -diff --git a/components/bookmarks/browser/bookmark_client.cc b/components/bookmarks/browser/bookmark_client.cc ---- a/components/bookmarks/browser/bookmark_client.cc -+++ b/components/bookmarks/browser/bookmark_client.cc -@@ -55,6 +55,8 @@ bool BookmarkClient::IsPermanentNodeVisibleWhenEmpty( - case BookmarkNode::MOBILE: - // Either MOBILE or OTHER_NODE is visible when empty, but never both. - return !IsPermanentNodeVisibleWhenEmpty(BookmarkNode::OTHER_NODE); -+ case bookmarks::BookmarkNode::TABS_COLLECTION: -+ return !is_desktop; - } - NOTREACHED_NORETURN(); - } diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmarks/browser/bookmark_codec.cc --- a/components/bookmarks/browser/bookmark_codec.cc +++ b/components/bookmarks/browser/bookmark_codec.cc -@@ -36,6 +36,7 @@ const char BookmarkCodec::kBookmarkBarFolderNameKey[] = "bookmark_bar"; +@@ -35,6 +35,7 @@ const char BookmarkCodec::kBookmarkBarFolderNameKey[] = "bookmark_bar"; const char BookmarkCodec::kOtherBookmarkFolderNameKey[] = "other"; // The value is left as 'synced' for historical reasons. const char BookmarkCodec::kMobileBookmarkFolderNameKey[] = "synced"; @@ -432,41 +428,32 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar const char BookmarkCodec::kVersionKey[] = "version"; const char BookmarkCodec::kChecksumKey[] = "checksum"; const char BookmarkCodec::kIdKey[] = "id"; -@@ -74,7 +75,8 @@ BookmarkCodec::~BookmarkCodec() = default; - base::Value::Dict BookmarkCodec::Encode(BookmarkModel* model, - std::string sync_metadata_str) { - return Encode(model->bookmark_bar_node(), model->other_node(), -- model->mobile_node(), model->root_node()->GetMetaInfoMap(), -+ model->mobile_node(), model->tabs_collection_node(), -+ model->root_node()->GetMetaInfoMap(), - std::move(sync_metadata_str)); - } - -@@ -82,6 +84,7 @@ base::Value::Dict BookmarkCodec::Encode( +@@ -72,6 +73,7 @@ base::Value::Dict BookmarkCodec::Encode( const BookmarkNode* bookmark_bar_node, const BookmarkNode* other_folder_node, const BookmarkNode* mobile_folder_node, + const BookmarkNode* tabs_folder_node, - const BookmarkNode::MetaInfoMap* model_meta_info_map, std::string sync_metadata_str) { ids_reassigned_ = false; -@@ -102,6 +105,7 @@ base::Value::Dict BookmarkCodec::Encode( + uuids_reassigned_ = false; +@@ -91,6 +93,8 @@ base::Value::Dict BookmarkCodec::Encode( roots.Set(kBookmarkBarFolderNameKey, EncodeNode(bookmark_bar_node)); roots.Set(kOtherBookmarkFolderNameKey, EncodeNode(other_folder_node)); roots.Set(kMobileBookmarkFolderNameKey, EncodeNode(mobile_folder_node)); -+ roots.Set(kTabsBookmarkFolderNameKey, EncodeNode(tabs_folder_node)); - if (model_meta_info_map) - roots.Set(kMetaInfo, EncodeMetaInfo(*model_meta_info_map)); ++ if (tabs_folder_node) ++ roots.Set(kTabsBookmarkFolderNameKey, EncodeNode(tabs_folder_node)); -@@ -119,6 +123,7 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value, + FinalizeChecksum(); + // We are going to store the computed checksum. So set stored checksum to be +@@ -107,6 +111,7 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value, BookmarkNode* bb_node, BookmarkNode* other_folder_node, BookmarkNode* mobile_folder_node, + BookmarkNode* tabs_folder_node, int64_t* max_id, std::string* sync_metadata_str) { - ids_.clear(); -@@ -126,7 +131,8 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value, + const int64_t max_already_assigned_id = +@@ -117,7 +122,8 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value, base::Uuid::ParseLowercase(kBookmarkBarNodeUuid), base::Uuid::ParseLowercase(kOtherBookmarksNodeUuid), base::Uuid::ParseLowercase(kMobileBookmarksNodeUuid), @@ -476,7 +463,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar ids_reassigned_ = false; uuids_reassigned_ = false; ids_valid_ = true; -@@ -134,12 +140,13 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value, +@@ -125,13 +131,14 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value, stored_checksum_.clear(); InitializeChecksum(); bool success = DecodeHelper(bb_node, other_folder_node, mobile_folder_node, @@ -485,21 +472,22 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar FinalizeChecksum(); // If either the checksums differ or some IDs were missing/not unique, // reassign IDs. - if (!ids_valid_ || computed_checksum() != stored_checksum()) + if (!ids_valid_ || computed_checksum_ != stored_checksum_) { + maximum_id_ = max_already_assigned_id; - ReassignIDs(bb_node, other_folder_node, mobile_folder_node); + ReassignIDs(bb_node, other_folder_node, mobile_folder_node, tabs_folder_node); + } *max_id = maximum_id_ + 1; return success; - } -@@ -191,6 +198,7 @@ base::Value::Dict BookmarkCodec::EncodeMetaInfo( +@@ -189,6 +196,7 @@ base::Value::Dict BookmarkCodec::EncodeMetaInfo( bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node, BookmarkNode* other_folder_node, BookmarkNode* mobile_folder_node, + BookmarkNode* tabs_folder_node, const base::Value::Dict& value, std::string* sync_metadata_str) { - absl::optional version = value.FindInt(kVersionKey); -@@ -215,6 +223,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node, + std::optional version = value.FindInt(kVersionKey); +@@ -213,6 +221,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node, roots->FindDict(kOtherBookmarkFolderNameKey); const base::Value::Dict* mobile_folder_value = roots->FindDict(kMobileBookmarkFolderNameKey); @@ -508,23 +496,23 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar if (!bb_value || !other_folder_value || !mobile_folder_value) return false; -@@ -222,6 +232,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node, +@@ -220,6 +230,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node, DecodeNode(*bb_value, nullptr, bb_node); DecodeNode(*other_folder_value, nullptr, other_folder_node); DecodeNode(*mobile_folder_value, nullptr, mobile_folder_node); + if (tabs_folder_value) + DecodeNode(*tabs_folder_value, nullptr, tabs_folder_node); - if (!DecodeMetaInfo(*roots, &model_meta_info_map_)) - return false; -@@ -463,11 +475,13 @@ void BookmarkCodec::DecodeMetaInfoHelper( + if (sync_metadata_str) { + const std::string* sync_metadata_str_base64 = +@@ -459,11 +471,13 @@ void BookmarkCodec::DecodeMetaInfoHelper( void BookmarkCodec::ReassignIDs(BookmarkNode* bb_node, BookmarkNode* other_node, - BookmarkNode* mobile_node) { + BookmarkNode* mobile_node, + BookmarkNode* tabs_folder_node) { - maximum_id_ = 0; + ids_.clear(); ReassignIDsHelper(bb_node); ReassignIDsHelper(other_node); ReassignIDsHelper(mobile_node); @@ -535,15 +523,15 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmarks/browser/bookmark_codec.h --- a/components/bookmarks/browser/bookmark_codec.h +++ b/components/bookmarks/browser/bookmark_codec.h -@@ -46,6 +46,7 @@ class BookmarkCodec { +@@ -39,6 +39,7 @@ class BookmarkCodec { const BookmarkNode* bookmark_bar_node, const BookmarkNode* other_folder_node, const BookmarkNode* mobile_folder_node, + const BookmarkNode* tabs_folder_node, - const BookmarkNode::MetaInfoMap* model_meta_info_map, std::string sync_metadata_str); -@@ -58,6 +59,7 @@ class BookmarkCodec { + // Decodes the previously encoded value to the specified nodes as well as +@@ -57,6 +58,7 @@ class BookmarkCodec { BookmarkNode* bb_node, BookmarkNode* other_folder_node, BookmarkNode* mobile_folder_node, @@ -551,15 +539,15 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark int64_t* max_node_id, std::string* sync_metadata_str); -@@ -103,6 +105,7 @@ class BookmarkCodec { - // Allows the BookmarkClient to read and a write a string blob from the JSON - // file. That string captures the bookmarks sync metadata. - static const char kSyncMetadata[]; +@@ -82,6 +84,7 @@ class BookmarkCodec { + static const char kBookmarkBarFolderNameKey[]; + static const char kOtherBookmarkFolderNameKey[]; + static const char kMobileBookmarkFolderNameKey[]; + static const char kTabsBookmarkFolderNameKey[]; - static const char kDateLastUsed[]; - - // Possible values for kTypeKey. -@@ -121,6 +124,7 @@ class BookmarkCodec { + static const char kVersionKey[]; + static const char kChecksumKey[]; + static const char kIdKey[]; +@@ -114,6 +117,7 @@ class BookmarkCodec { bool DecodeHelper(BookmarkNode* bb_node, BookmarkNode* other_folder_node, BookmarkNode* mobile_folder_node, @@ -567,7 +555,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark const base::Value::Dict& value, std::string* sync_metadata_str); -@@ -132,7 +136,8 @@ class BookmarkCodec { +@@ -124,7 +128,8 @@ class BookmarkCodec { // Reassigns bookmark IDs for all nodes. void ReassignIDs(BookmarkNode* bb_node, BookmarkNode* other_node, @@ -580,41 +568,58 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/bookmarks/browser/bookmark_load_details.cc --- a/components/bookmarks/browser/bookmark_load_details.cc +++ b/components/bookmarks/browser/bookmark_load_details.cc -@@ -37,6 +37,10 @@ BookmarkLoadDetails::BookmarkLoadDetails(BookmarkClient* client) - root_node_->Add(BookmarkPermanentNode::CreateMobileBookmarks( - max_id_++, - client->IsPermanentNodeVisibleWhenEmpty(BookmarkNode::MOBILE)))); +@@ -15,7 +15,7 @@ namespace { + + // Number of top-level permanent folders excluding the managed node and account + // bookmarks. +-constexpr size_t kNumDefaultTopLevelPermanentFolders = 3u; ++constexpr size_t kNumDefaultTopLevelPermanentFolders = 4u; + + } // namespace + +@@ -40,6 +40,8 @@ BookmarkLoadDetails::BookmarkLoadDetails() + root_node_->Add(BookmarkPermanentNode::CreateOtherBookmarks(/*id=*/0))); + mobile_folder_node_ = static_cast( + root_node_->Add(BookmarkPermanentNode::CreateMobileBookmarks(/*id=*/0))); + tabs_collection_folder_node_ = static_cast( -+ root_node_->Add(BookmarkPermanentNode::CreateTabsCollectionBookmarks( -+ max_id_++, -+ client->IsPermanentNodeVisibleWhenEmpty(BookmarkNode::TABS_COLLECTION)))); - } ++ root_node_->Add(BookmarkPermanentNode::CreateTabsCollectionBookmarks(/*id=*/0))); - BookmarkLoadDetails::~BookmarkLoadDetails() = default; + CHECK_EQ(kNumDefaultTopLevelPermanentFolders, root_node_->children().size()); + } +@@ -105,8 +107,8 @@ void BookmarkLoadDetails::AddManagedNode( + + void BookmarkLoadDetails::CreateIndices() { + local_or_syncable_uuid_index_.insert(root_node_.get()); +- static_assert(kNumDefaultTopLevelPermanentFolders == 3u, +- "The code below assumes three permanent nodes"); ++ static_assert(kNumDefaultTopLevelPermanentFolders == 4u, ++ "The code below assumes 4 permanent nodes"); + for (const auto& child : root_node_->children()) { + if (child.get() == account_bb_node_ || + child.get() == account_other_folder_node_ || diff --git a/components/bookmarks/browser/bookmark_load_details.h b/components/bookmarks/browser/bookmark_load_details.h --- a/components/bookmarks/browser/bookmark_load_details.h +++ b/components/bookmarks/browser/bookmark_load_details.h -@@ -47,6 +47,7 @@ class BookmarkLoadDetails { +@@ -39,6 +39,7 @@ class BookmarkLoadDetails { BookmarkPermanentNode* bb_node() { return bb_node_; } BookmarkPermanentNode* mobile_folder_node() { return mobile_folder_node_; } BookmarkPermanentNode* other_folder_node() { return other_folder_node_; } + BookmarkPermanentNode* tabs_collection_folder_node() { return tabs_collection_folder_node_; } - std::unique_ptr owned_titled_url_index() { - return std::move(titled_url_index_); -@@ -112,6 +113,8 @@ class BookmarkLoadDetails { - nullptr; - raw_ptr mobile_folder_node_ = - nullptr; -+ raw_ptr tabs_collection_folder_node_ = -+ nullptr; - LoadManagedNodeCallback load_managed_node_callback_; - std::unique_ptr titled_url_index_; - UuidIndex uuid_index_; + // Account permanent nodes (null unless `AddAccountPermanentNodes()` is + // called). +@@ -138,6 +139,7 @@ class BookmarkLoadDetails { + raw_ptr bb_node_; + raw_ptr other_folder_node_; + raw_ptr mobile_folder_node_; ++ raw_ptr tabs_collection_folder_node_; + raw_ptr account_bb_node_; + raw_ptr account_other_folder_node_; + raw_ptr account_mobile_folder_node_; diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc --- a/components/bookmarks/browser/bookmark_model.cc +++ b/components/bookmarks/browser/bookmark_model.cc -@@ -829,7 +829,7 @@ bool BookmarkModel::HasBookmarks() const { +@@ -846,7 +846,7 @@ bool BookmarkModel::HasBookmarks() const { bool BookmarkModel::HasNoUserCreatedBookmarksOrFolders() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return bookmark_bar_node_->children().empty() && @@ -623,14 +628,14 @@ diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmar } bool BookmarkModel::IsBookmarked(const GURL& url) const { -@@ -1166,6 +1166,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr details) { +@@ -1191,6 +1191,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr details) { bookmark_bar_node_ = details->bb_node(); other_node_ = details->other_folder_node(); mobile_node_ = details->mobile_folder_node(); + tabs_collection_node_ = details->tabs_collection_folder_node(); - // TODO(crbug.com/1494120): Load nodes for account storage as well. - + account_bookmark_bar_node_ = details->account_bb_node(); + account_other_node_ = details->account_other_folder_node(); diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmarks/browser/bookmark_model.h --- a/components/bookmarks/browser/bookmark_model.h +++ b/components/bookmarks/browser/bookmark_model.h @@ -647,7 +652,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmark bool is_root_node(const BookmarkNode* node) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return node == root_; -@@ -528,6 +534,7 @@ class BookmarkModel final : public BookmarkUndoProvider, +@@ -619,6 +625,7 @@ class BookmarkModel final : public BookmarkUndoProvider, raw_ptr account_bookmark_bar_node_ = nullptr; raw_ptr account_other_node_ = nullptr; raw_ptr account_mobile_node_ = nullptr; @@ -658,19 +663,26 @@ diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmark diff --git a/components/bookmarks/browser/bookmark_node.cc b/components/bookmarks/browser/bookmark_node.cc --- a/components/bookmarks/browser/bookmark_node.cc +++ b/components/bookmarks/browser/bookmark_node.cc -@@ -189,6 +189,17 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id, - visible_when_empty)); +@@ -161,6 +161,8 @@ bool BookmarkPermanentNode::IsTypeVisibleWhenEmpty(Type type) { + #endif + + switch (type) { ++ case bookmarks::BookmarkNode::TABS_COLLECTION: ++ return !is_desktop; + case BookmarkNode::URL: + NOTREACHED_NORETURN(); + case BookmarkNode::FOLDER: +@@ -211,6 +213,15 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id) { + l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME))); } +// static +std::unique_ptr -+BookmarkPermanentNode::CreateTabsCollectionBookmarks(int64_t id, -+ bool visible_when_empty) { ++BookmarkPermanentNode::CreateTabsCollectionBookmarks(int64_t id) { + // base::WrapUnique() used because the constructor is private. + return base::WrapUnique(new BookmarkPermanentNode( + id, TABS_COLLECTION, base::Uuid::ParseLowercase(kTabsCollectionBookmarksNodeUuid), -+ l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_TABS_COLLECTION_FOLDER_NAME), -+ visible_when_empty)); ++ l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_TABS_COLLECTION_FOLDER_NAME))); +} + BookmarkPermanentNode::BookmarkPermanentNode(int64_t id, @@ -687,16 +699,34 @@ diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks MOBILE }; -@@ -246,6 +247,9 @@ class BookmarkPermanentNode : public BookmarkNode { +@@ -231,6 +232,8 @@ class BookmarkPermanentNode : public BookmarkNode { + int64_t id); static std::unique_ptr CreateMobileBookmarks( - int64_t id, - bool visible_when_empty); + int64_t id); + static std::unique_ptr CreateTabsCollectionBookmarks( -+ int64_t id, -+ bool visible_when_empty); ++ int64_t id); + + // Returns whether the permanent node of type `type` should be visible even + // when it is empty (i.e. no children). +diff --git a/components/bookmarks/browser/bookmark_storage.cc b/components/bookmarks/browser/bookmark_storage.cc +--- a/components/bookmarks/browser/bookmark_storage.cc ++++ b/components/bookmarks/browser/bookmark_storage.cc +@@ -45,6 +45,7 @@ base::Value::Dict EncodeModelToDict( + case BookmarkStorage::kSelectLocalOrSyncableNodes: + return codec.Encode( + model->bookmark_bar_node(), model->other_node(), model->mobile_node(), ++ model->tabs_collection_node(), + model->client()->EncodeLocalOrSyncableBookmarkSyncMetadata()); + case BookmarkStorage::kSelectAccountNodes: + if (!model->account_bookmark_bar_node()) { +@@ -59,6 +60,7 @@ base::Value::Dict EncodeModelToDict( + return codec.Encode(model->account_bookmark_bar_node(), + model->account_other_node(), + model->account_mobile_node(), ++ nullptr, + model->client()->EncodeAccountBookmarkSyncMetadata()); + } - // Constructor is private to disallow the construction of permanent nodes - // other than the well-known ones, see factory methods. diff --git a/components/bookmarks/browser/bookmark_uuids.cc b/components/bookmarks/browser/bookmark_uuids.cc --- a/components/bookmarks/browser/bookmark_uuids.cc +++ b/components/bookmarks/browser/bookmark_uuids.cc @@ -724,16 +754,35 @@ diff --git a/components/bookmarks/browser/bookmark_uuids.h b/components/bookmark diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks/browser/model_loader.cc --- a/components/bookmarks/browser/model_loader.cc +++ b/components/bookmarks/browser/model_loader.cc -@@ -45,7 +45,8 @@ void LoadBookmarks(const base::FilePath& path, - std::string sync_metadata_str; - BookmarkCodec codec; - codec.Decode(*root_dict, details->bb_node(), details->other_folder_node(), -- details->mobile_folder_node(), &max_node_id, -+ details->mobile_folder_node(), -+ details->tabs_collection_folder_node(), &max_node_id, - &sync_metadata_str); - details->set_sync_metadata_str(std::move(sync_metadata_str)); - details->set_max_id(std::max(max_node_id, details->max_id())); +@@ -71,6 +71,8 @@ std::unique_ptr LoadBookmarks( + BookmarkPermanentNode::CreateOtherBookmarks(0); + std::unique_ptr account_mobile_folder_node = + BookmarkPermanentNode::CreateMobileBookmarks(0); ++ std::unique_ptr tabs_collection_folder_node = ++ BookmarkPermanentNode::CreateTabsCollectionBookmarks(0); + + std::optional root_dict = + LoadFileToDict(account_file_path); +@@ -78,7 +80,8 @@ std::unique_ptr LoadBookmarks( + if (root_dict.has_value() && + codec.Decode(*root_dict, /*already_assigned_ids=*/{}, + account_bb_node.get(), account_other_folder_node.get(), +- account_mobile_folder_node.get(), &max_node_id, ++ account_mobile_folder_node.get(), ++ tabs_collection_folder_node.get(), &max_node_id, + &sync_metadata_str)) { + ids_assigned_to_account_nodes = codec.release_assigned_ids(); + +@@ -110,7 +113,8 @@ std::unique_ptr LoadBookmarks( + if (root_dict.has_value() && + codec.Decode(*root_dict, std::move(ids_assigned_to_account_nodes), + details->bb_node(), details->other_folder_node(), +- details->mobile_folder_node(), &max_node_id, ++ details->mobile_folder_node(), ++ details->tabs_collection_folder_node(), &max_node_id, + &sync_metadata_str)) { + details->set_local_or_syncable_sync_metadata_str( + std::move(sync_metadata_str)); diff --git a/components/sync_bookmarks/bookmark_specifics_conversions.cc b/components/sync_bookmarks/bookmark_specifics_conversions.cc --- a/components/sync_bookmarks/bookmark_specifics_conversions.cc +++ b/components/sync_bookmarks/bookmark_specifics_conversions.cc diff --git a/build/cromite_patches/Add-menu-item-to-view-source.patch b/build/cromite_patches/Add-menu-item-to-view-source.patch index 711552f3c641c97552504f0485a388488e907e12..ccc2db86a2b174080bd5d52806ca9ac4bae8c16d 100644 --- a/build/cromite_patches/Add-menu-item-to-view-source.patch +++ b/build/cromite_patches/Add-menu-item-to-view-source.patch @@ -16,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml --- a/chrome/android/java/res/menu/custom_tabs_menu.xml +++ b/chrome/android/java/res/menu/custom_tabs_menu.xml -@@ -55,6 +55,9 @@ found in the LICENSE file. +@@ -62,6 +62,9 @@ found in the LICENSE file. @@ -42,7 +42,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -2813,6 +2813,8 @@ public class ChromeTabbedActivity extends ChromeActivity +@@ -2729,6 +2729,11 @@ public abstract class ChromeActivity return doOpenWebApk(currentTab); } @@ -69,7 +69,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -@@ -578,6 +578,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -585,6 +585,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate isChromeScheme, isFileScheme, isContentScheme, isIncognito, url)); updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isChromeScheme); @@ -77,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App updateAutoDarkMenuItem(menu, currentTab, isChromeScheme); -@@ -1181,6 +1182,23 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -1236,6 +1237,23 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } } @@ -104,7 +104,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java -@@ -260,6 +260,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat +@@ -295,6 +295,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat updateRequestDesktopSiteMenuItem( menu, currentTab, requestDesktopSiteVisible, isChromeScheme); diff --git a/build/cromite_patches/Add-option-to-force-tablet-UI.patch b/build/cromite_patches/Add-option-to-force-tablet-UI.patch index dd9be165b77d32fca593bbcea94d3f04687de649..d53407aa7056039a567280684a211899fcbcb07a 100644 --- a/build/cromite_patches/Add-option-to-force-tablet-UI.patch +++ b/build/cromite_patches/Add-option-to-force-tablet-UI.patch @@ -52,7 +52,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java -@@ -987,7 +987,9 @@ public final class ReturnToChromeUtil { +@@ -979,7 +979,9 @@ public final class ReturnToChromeUtil { public static boolean isScrollableMvtEnabled(Context context) { boolean isSurfacePolishEnabled = ChromeFeatureList.sSurfacePolish.isEnabled(); @@ -73,8 +73,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi +import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.price_tracking.PriceTrackingButtonController; import org.chromium.chrome.browser.profiles.Profile; - import org.chromium.chrome.browser.quick_delete.QuickDeleteController; -@@ -1588,7 +1589,9 @@ public class RootUiCoordinator + import org.chromium.chrome.browser.profiles.ProfileManager; +@@ -1595,7 +1596,9 @@ public class RootUiCoordinator if (!mSupportsFindInPageSupplier.getAsBoolean()) return; int stubId = R.id.find_toolbar_stub; @@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BUILD.gn --- a/chrome/browser/preferences/BUILD.gn +++ b/chrome/browser/preferences/BUILD.gn -@@ -25,6 +25,7 @@ android_library("java") { +@@ -26,6 +26,7 @@ android_library("java") { "//components/browser_ui/site_settings/android:constants_java", "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/jni_zero:jni_zero_java", @@ -99,7 +99,7 @@ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BU diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -310,6 +310,7 @@ public final class ChromePreferenceKeys { +@@ -270,6 +270,7 @@ public final class ChromePreferenceKeys { AccessibilityConstants.FONT_USER_SET_FORCE_ENABLE_ZOOM; public static final String HISTORY_SHOW_HISTORY_INFO = "history_home_show_info"; @@ -146,7 +146,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java -@@ -777,7 +777,7 @@ public class LocationBarCoordinator +@@ -771,7 +771,7 @@ public class LocationBarCoordinator } private boolean isTabletWindow() { @@ -158,7 +158,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1561,6 +1561,13 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1564,6 +1564,13 @@ Your Google account may have other forms of browsing history like searches and a Manage third-party cookies and tracking protections @@ -175,7 +175,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/components/BUILD.gn b/components/BUILD.gn --- a/components/BUILD.gn +++ b/components/BUILD.gn -@@ -68,7 +68,7 @@ if (is_ios) { +@@ -69,7 +69,7 @@ if (is_ios) { # Omit Lacros because it allows //components to depend on //chrome, which in # turn depends on //extensions. @@ -184,7 +184,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn disallowed_extension_deps_ = [ # Components should largely not depend on //extensions. Since // extensions # is not a component target and is linked with //chrome, depending on most -@@ -819,7 +819,7 @@ test("components_unittests") { +@@ -831,7 +831,7 @@ test("components_unittests") { # On other platforms, no components should depend on Chrome. # Since //chrome depends on //extensions, we also only assert_no_deps on # extensions targets for non-lacros builds. @@ -193,7 +193,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn assert_no_deps = [ "//chrome/*" ] assert_no_deps += disallowed_extension_deps_ } -@@ -1107,7 +1107,7 @@ if (use_blink) { +@@ -1113,7 +1113,7 @@ if (use_blink) { # dependency. On other platforms, no components should depend on Chrome. # Since //chrome depends on //extensions, we also only assert_no_deps on # extensions targets for non-lacros builds. @@ -205,7 +205,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml --- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml +++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml -@@ -35,6 +35,11 @@ found in the LICENSE file. +@@ -40,6 +40,11 @@ found in the LICENSE file. android:summary="@string/reader_for_accessibility_summary" android:title="@string/reader_for_accessibility_title" /> @@ -220,7 +220,7 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java --- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java +++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java -@@ -31,6 +31,8 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -32,6 +32,8 @@ public class AccessibilitySettings extends PreferenceFragmentCompat public static final String PREF_CAPTIONS = "captions"; public static final String PREF_ZOOM_INFO = "zoom_info"; @@ -228,8 +228,8 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c + static final String PREF_FORCE_TABLET_UI = "force_tablet_ui"; private TextScalePreference mTextScalePref; private PageZoomPreference mPageZoomDefaultZoomPref; - private ChromeSwitchPreference mPageZoomAlwaysShowPref; -@@ -123,6 +125,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat + private ChromeSwitchPreference mPageZoomIncludeOSAdjustment; +@@ -129,6 +131,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat getPreferenceScreen().removePreference(readerForAccessibilityPref); } @@ -242,7 +242,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c Preference captions = findPreference(PREF_CAPTIONS); captions.setOnPreferenceClickListener( preference -> { -@@ -182,6 +190,8 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -190,6 +198,8 @@ public class AccessibilitySettings extends PreferenceFragmentCompat mFontSizePrefs.setUserFontScaleFactor((Float) newValue); } else if (PREF_FORCE_ENABLE_ZOOM.equals(preference.getKey())) { mFontSizePrefs.setForceEnableZoomFromUser((Boolean) newValue); diff --git a/build/cromite_patches/Add-option-to-not-persist-tabs-across-sessions.patch b/build/cromite_patches/Add-option-to-not-persist-tabs-across-sessions.patch index 2d68ac2bc71eb15c48c7d7b0e8cb01a5651c6715..961e31e66a4d39cc70f88027e5838e18c06b3729 100644 --- a/build/cromite_patches/Add-option-to-not-persist-tabs-across-sessions.patch +++ b/build/cromite_patches/Add-option-to-not-persist-tabs-across-sessions.patch @@ -28,7 +28,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -40,6 +40,7 @@ import org.chromium.base.BuildInfo; +@@ -41,6 +41,7 @@ import org.chromium.base.BuildInfo; import org.chromium.base.Callback; import org.chromium.base.CallbackController; import org.chromium.base.CommandLine; @@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.base.IntentUtils; import org.chromium.base.Log; import org.chromium.base.MemoryPressureListener; -@@ -1484,8 +1485,10 @@ public class ChromeTabbedActivity extends ChromeActivity<resetlink>reset sync

BEGIN_LINKclear the Chrome da IMAGE diff --git a/build/cromite_patches/Add-option-to-use-home-page-as-NTP.patch b/build/cromite_patches/Add-option-to-use-home-page-as-NTP.patch index aea46321f4a4e8b8bab018e0363eec1ce6cf7f15..052f298b0eed7847a5f31f48c77ded5cbdd76de9 100644 --- a/build/cromite_patches/Add-option-to-use-home-page-as-NTP.patch +++ b/build/cromite_patches/Add-option-to-use-home-page-as-NTP.patch @@ -23,15 +23,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java -@@ -18,6 +18,7 @@ import org.chromium.base.Callback; - import org.chromium.base.ResettersForTesting; - import org.chromium.base.metrics.RecordUserAction; +@@ -22,6 +22,7 @@ import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.Supplier; + import org.chromium.base.task.PostTask; + import org.chromium.base.task.TaskTraits; +import org.chromium.chrome.browser.homepage.HomepageManager; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.TabCreationState; import org.chromium.chrome.browser.tab.TabLaunchType; -@@ -44,6 +45,7 @@ import org.chromium.ui.KeyboardVisibilityDelegate; +@@ -47,6 +48,7 @@ import org.chromium.ui.KeyboardVisibilityDelegate; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.text.EmptyTextWatcher; @@ -39,7 +39,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import java.util.ArrayList; import java.util.List; -@@ -615,11 +617,16 @@ public class TabGridDialogMediator +@@ -636,11 +638,16 @@ public class TabGridDialogMediator assert relatedTabs.size() > 0; @@ -68,7 +68,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.chrome.browser.layouts.LayoutStateProvider; import org.chromium.chrome.browser.layouts.LayoutStateProvider.LayoutStateObserver; import org.chromium.chrome.browser.layouts.LayoutType; -@@ -371,10 +372,15 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -375,10 +376,15 @@ public class TabGroupUiMediator implements BackPressHandler { assert relatedTabs.size() > 0; parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1); @@ -201,7 +201,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -323,6 +323,7 @@ public final class ChromePreferenceKeys { +@@ -283,6 +283,7 @@ public final class ChromePreferenceKeys { public static final String HOMEPAGE_USE_CHROME_NTP = "Chrome.Homepage.UseNTP"; public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled"; @@ -223,7 +223,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1334,6 +1334,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1337,6 +1337,9 @@ Your Google account may have other forms of browsing history like searches and a Last hour @@ -236,19 +236,19 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -70,6 +70,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -73,6 +73,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { GetHomeButtonAndHomePageIsNewTabPageFlags()); registry->RegisterBooleanPref(prefs::kShowHomeButton, false, GetHomeButtonAndHomePageIsNewTabPageFlags()); + registry->RegisterBooleanPref(prefs::kNewTabPageIsHomePage, false, -+ GetHomeButtonAndHomePageIsNewTabPageFlags()); ++ PrefRegistry::NO_REGISTRATION_FLAGS); registry->RegisterInt64Pref(prefs::kDefaultBrowserLastDeclined, 0); bool reset_check_default = false; diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -1311,6 +1311,10 @@ inline constexpr char kUsedPolicyCertificates[] = +@@ -1285,6 +1285,10 @@ inline constexpr char kUsedPolicyCertificates[] = // visible on the toolbar. inline constexpr char kShowHomeButton[] = "browser.show_home_button"; diff --git a/build/cromite_patches/Add-search-engine.patch b/build/cromite_patches/Add-search-engine.patch index f3562c93b09de9e2d9278b2d569fe9be71290bad..456a50f3143c47ca3f5ceee9b1349365fa54967f 100644 --- a/build/cromite_patches/Add-search-engine.patch +++ b/build/cromite_patches/Add-search-engine.patch @@ -9,9 +9,9 @@ Add DuckDuckGo Lite License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- .../search_engines/prepopulated_engines.json | 31 +++++++++++++++++++ - .../search_engines/search_engine_type.h | 2 ++ + .../search_engines/search_engine_type.h | 5 +++ .../template_url_prepopulate_data.cc | 3 ++ - 3 files changed, 36 insertions(+) + 3 files changed, 39 insertions(+) diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json --- a/components/search_engines/prepopulated_engines.json @@ -64,19 +64,26 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h --- a/components/search_engines/search_engine_type.h +++ b/components/search_engines/search_engine_type.h -@@ -88,6 +88,8 @@ enum SearchEngineType { - SEARCH_ENGINE_QUENDU = 69, - SEARCH_ENGINE_BRAVE = 70, +@@ -90,10 +90,15 @@ enum SearchEngineType { SEARCH_ENGINE_KARMA = 71, -+ SEARCH_ENGINE_GOOGLE_EN = 72, -+ SEARCH_ENGINE_DUCKDUCKGOLIGHT = 73, + SEARCH_ENGINE_YOU = 72, + SEARCH_ENGINE_STARTER_PACK_ASK_GOOGLE = 73, ++ SEARCH_ENGINE_GOOGLE_EN = 74, ++ SEARCH_ENGINE_DUCKDUCKGOLIGHT = 75, SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro. }; + ++static_assert(SEARCH_ENGINE_DUCKDUCKGOLIGHT == (SEARCH_ENGINE_MAX - 1), ++ "Please check this patch"); ++ + // Enum to record the type of search engine a user used in keyword mode. This + // should be kept aligned with the `OmniboxBuiltinEngineType` enum in enums.xml. + // Entries should not be renumbered and numeric values should never be reused. diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc --- a/components/search_engines/template_url_prepopulate_data.cc +++ b/components/search_engines/template_url_prepopulate_data.cc -@@ -61,6 +61,7 @@ struct EngineAndTier { +@@ -63,6 +63,7 @@ struct EngineAndTier { // Default (for countries with no better engine set) constexpr EngineAndTier engines_default[] = { @@ -84,7 +91,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon {SearchEngineTier::kTopEngines, &google}, {SearchEngineTier::kTopEngines, &bing}, {SearchEngineTier::kTopEngines, &yahoo}, -@@ -1613,6 +1614,8 @@ const std::vector GetPrepopulationSetFromCountryID( +@@ -1683,6 +1684,8 @@ const std::vector GetPrepopulationSetFromCountryID( for (size_t i = 0; i < num_engines; i++) { t_url.push_back(engines[i]); } diff --git a/build/cromite_patches/Add-site-engagement-flag.patch b/build/cromite_patches/Add-site-engagement-flag.patch index 667d1b17160aee74e68035f9d6562589fce29b6f..c64a17c01ff56aca952f7b6566e42a0425d8d226 100644 --- a/build/cromite_patches/Add-site-engagement-flag.patch +++ b/build/cromite_patches/Add-site-engagement-flag.patch @@ -8,6 +8,7 @@ Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/browser/about_flags.cc | 1 + + .../engagement/important_sites_util.cc | 9 +++++ .../internal/tracker_impl.cc | 3 ++ .../public/feature_configurations.cc | 7 ++++ .../content/site_engagement_score.cc | 5 +++ @@ -15,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/site_engagement/core/features.cc | 30 ++++++++++++++++ components/site_engagement/core/features.h | 34 +++++++++++++++++++ .../Add-site-engagement-flag.inc | 10 ++++++ - 8 files changed, 96 insertions(+) + 9 files changed, 105 insertions(+) create mode 100644 components/site_engagement/core/features.cc create mode 100644 components/site_engagement/core/features.h create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-site-engagement-flag.inc @@ -23,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -152,6 +152,7 @@ +@@ -153,6 +153,7 @@ #include "components/send_tab_to_self/features.h" #include "components/services/heap_profiling/public/cpp/switches.h" #include "components/services/storage/public/cpp/buckets/bucket_info.h" @@ -31,10 +32,43 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #include "components/shared_highlighting/core/common/shared_highlighting_features.h" #include "components/signin/core/browser/dice_account_reconcilor_delegate.h" #include "components/signin/public/base/signin_buildflags.h" +diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/engagement/important_sites_util.cc +--- a/chrome/browser/engagement/important_sites_util.cc ++++ b/chrome/browser/engagement/important_sites_util.cc +@@ -32,6 +32,7 @@ + #include "components/prefs/scoped_user_pref_update.h" + #include "components/site_engagement/content/site_engagement_score.h" + #include "components/site_engagement/content/site_engagement_service.h" ++#include "components/site_engagement/core/features.h" + #include "components/site_engagement/core/mojom/site_engagement_details.mojom.h" + #include "components/webapps/browser/banners/app_banner_settings_helper.h" + #include "net/base/registry_controlled_domains/registry_controlled_domain.h" +@@ -387,6 +388,10 @@ void ImportantSitesUtil::RegisterProfilePrefs( + // static + std::set ImportantSitesUtil::GetInstalledRegisterableDomains( + Profile* profile) { ++ if (!base::FeatureList::IsEnabled(site_engagement::features::kSiteEngagement)) { ++ std::set empty_list; ++ return empty_list; ++ } + std::set installed_origins = GetOriginsWithInstalledWebApps(profile); + std::set registerable_domains; + +@@ -401,6 +406,10 @@ std::vector + ImportantSitesUtil::GetImportantRegisterableDomains(Profile* profile, + size_t max_results) { + SCOPED_UMA_HISTOGRAM_TIMER("Storage.ImportantSites.GenerationTime"); ++ if (!base::FeatureList::IsEnabled(site_engagement::features::kSiteEngagement)) { ++ std::vector empty_list; ++ return empty_list; ++ } + std::map important_info; + std::map engagement_map; + diff --git a/components/feature_engagement/internal/tracker_impl.cc b/components/feature_engagement/internal/tracker_impl.cc --- a/components/feature_engagement/internal/tracker_impl.cc +++ b/components/feature_engagement/internal/tracker_impl.cc -@@ -22,6 +22,7 @@ +@@ -23,6 +23,7 @@ #include "base/task/single_thread_task_runner.h" #include "base/time/clock.h" #include "build/build_config.h" @@ -42,7 +76,7 @@ diff --git a/components/feature_engagement/internal/tracker_impl.cc b/components #include "components/feature_engagement/internal/availability_model_impl.h" #include "components/feature_engagement/internal/blocked_iph_features.h" #include "components/feature_engagement/internal/chrome_variations_configuration.h" -@@ -187,6 +188,8 @@ TrackerImpl::TrackerImpl( +@@ -211,6 +212,8 @@ TrackerImpl::TrackerImpl( TrackerImpl::~TrackerImpl() = default; void TrackerImpl::NotifyEvent(const std::string& event) { @@ -62,7 +96,7 @@ diff --git a/components/feature_engagement/public/feature_configurations.cc b/co #include "components/feature_engagement/public/configuration.h" #include "components/feature_engagement/public/event_constants.h" #include "components/feature_engagement/public/feature_constants.h" -@@ -66,6 +67,12 @@ absl::optional GetClientSideFeatureConfig( +@@ -111,6 +112,12 @@ std::optional GetClientSideFeatureConfig( } #endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) diff --git a/build/cromite_patches/Add-support-for-ISupportHelpAndFeedback.patch b/build/cromite_patches/Add-support-for-ISupportHelpAndFeedback.patch index 56f129f954e8bbb73d4eba3533fda4f8d47b5870..51ce2fb6e1827d88c1feb923297f8f8a90c819e1 100644 --- a/build/cromite_patches/Add-support-for-ISupportHelpAndFeedback.patch +++ b/build/cromite_patches/Add-support-for-ISupportHelpAndFeedback.patch @@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java -@@ -85,6 +85,7 @@ import org.chromium.components.browser_ui.settings.CustomDividerFragment; +@@ -86,6 +86,7 @@ import org.chromium.components.browser_ui.settings.CustomDividerFragment; import org.chromium.components.browser_ui.settings.FragmentSettingsLauncher; import org.chromium.components.browser_ui.settings.PaddedItemDecorationWithDivider; import org.chromium.components.browser_ui.settings.SettingsLauncher; @@ -20,7 +20,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.components.browser_ui.site_settings.BaseSiteSettingsFragment; import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; import org.chromium.components.browser_ui.util.TraceEventVectorDrawableCompat; -@@ -454,8 +455,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -457,8 +458,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity finish(); return true; } else if (item.getItemId() == R.id.menu_id_general_help) { diff --git a/build/cromite_patches/Add-webGL-site-setting.patch b/build/cromite_patches/Add-webGL-site-setting.patch index db26b62d7e09539e177fd458cbad2b0644b7b28d..f51d1e5d0953899ff9a19a9336a9db446fbaf904 100644 --- a/build/cromite_patches/Add-webGL-site-setting.patch +++ b/build/cromite_patches/Add-webGL-site-setting.patch @@ -218,7 +218,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc -@@ -309,6 +309,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits( +@@ -311,6 +311,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits( } } @@ -232,7 +232,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba unsigned WebGLRenderingContextBase::CurrentMaxGLContexts() { base::AutoLock locker(WebGLContextLimitLock()); DCHECK(webgl_context_limits_initialized_); -@@ -582,25 +589,6 @@ static String ExtractWebGLContextCreationError( +@@ -584,25 +591,6 @@ static String ExtractWebGLContextCreationError( const Platform::GraphicsInfo& info) { StringBuilder builder; builder.Append("Could not create a WebGL context"); @@ -258,7 +258,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba FormatWebGLStatusString("ErrorMessage", info.error_message.Utf8().c_str(), builder); builder.Append('.'); -@@ -660,6 +648,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider( +@@ -662,6 +650,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider( const CanvasContextCreationAttributesCore& attributes, Platform::ContextType context_type, Platform::GraphicsInfo* graphics_info) { @@ -274,7 +274,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h -@@ -1952,6 +1952,8 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext, +@@ -1960,6 +1960,8 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext, DOMArrayBufferView* pixels, int64_t offset); diff --git a/build/cromite_patches/Add-webRTC-site-settings.patch b/build/cromite_patches/Add-webRTC-site-settings.patch index b1dd0017e8951d093ebcbd1a0dbc2aaad0cf9e11..69e8daa8267b512bd4a5f38415a37f6c4ee21a17 100644 --- a/build/cromite_patches/Add-webRTC-site-settings.patch +++ b/build/cromite_patches/Add-webRTC-site-settings.patch @@ -187,15 +187,15 @@ new file mode 100644 diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc -@@ -37,6 +37,7 @@ - #include "third_party/blink/public/common/peerconnection/webrtc_ip_handling_policy.h" +@@ -41,6 +41,7 @@ #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" #include "third_party/blink/public/platform/platform.h" + #include "third_party/blink/public/platform/task_type.h" +#include "third_party/blink/public/platform/web_content_settings_client.h" #include "third_party/blink/public/platform/web_url.h" #include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h" #include "third_party/blink/public/web/web_document.h" -@@ -774,6 +775,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( +@@ -847,6 +848,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( // origin. WebRTCIPHandlingPolicy policy = GetWebRTCIPHandlingPolicy(webrtc_ip_handling_policy); @@ -244,9 +244,9 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc +#include "third_party/blink/public/platform/web_content_settings_client.h" +#include "third_party/blink/public/web/web_local_frame.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" + #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_encoding_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h" - #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h" -@@ -1034,6 +1036,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, +@@ -1062,6 +1064,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, if (kind != "audio" && kind != "video") return nullptr; diff --git a/build/cromite_patches/Allow-building-without-enable_reporting.patch b/build/cromite_patches/Allow-building-without-enable_reporting.patch index 3f84709967fc5b112546106d907cf99a18ddd5f5..6090081c9a0b1411c1ddb65c5766b9a31e1d42d2 100644 --- a/build/cromite_patches/Allow-building-without-enable_reporting.patch +++ b/build/cromite_patches/Allow-building-without-enable_reporting.patch @@ -41,7 +41,7 @@ diff --git a/chrome/browser/net/chrome_report_sender.cc b/chrome/browser/net/chr diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc --- a/content/browser/devtools/protocol/network_handler.cc +++ b/content/browser/devtools/protocol/network_handler.cc -@@ -1326,6 +1326,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) { +@@ -1400,6 +1400,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) { } } @@ -49,7 +49,7 @@ diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/brow std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { std::vector urls; frame_host->ForEachRenderFrameHostWithAction( -@@ -1339,6 +1340,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { +@@ -1413,6 +1414,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { }); return urls; } @@ -72,7 +72,7 @@ diff --git a/content/browser/network/cross_origin_embedder_policy_reporter.cc b/ void CrossOriginEmbedderPolicyReporter::QueueAndNotify( std::initializer_list> body, bool report_only) { -- const absl::optional& endpoint = +- const std::optional& endpoint = - report_only ? report_only_endpoint_ : endpoint_; const char* const disposition = report_only ? "reporting" : "enforce"; if (observer_) { @@ -88,7 +88,7 @@ diff --git a/content/browser/network/cross_origin_embedder_policy_reporter.cc b/ base::Value::Dict body_to_pass; for (const auto& pair : body) { @@ -125,6 +127,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify( - /*user_agent=*/absl::nullopt, std::move(body_to_pass)); + /*user_agent=*/std::nullopt, std::move(body_to_pass)); } } +#endif @@ -152,7 +152,7 @@ diff --git a/content/browser/network/cross_origin_opener_policy_reporter.cc b/co @@ -280,12 +275,14 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport( storage_partition_->GetNetworkContext()->QueueReport( "coop", endpoint, context_url_, reporting_source_, - network_anonymization_key_, absl::nullopt, std::move(body)); + network_anonymization_key_, std::nullopt, std::move(body)); +#endif } @@ -167,7 +167,7 @@ diff --git a/content/browser/network/cross_origin_opener_policy_reporter.cc b/co @@ -294,6 +291,7 @@ void CrossOriginOpenerPolicyReporter::QueueNavigationReport( "coop", endpoint, context_url_, reporting_source_, network_anonymization_key_, - /*user_agent=*/absl::nullopt, std::move(body)); + /*user_agent=*/std::nullopt, std::move(body)); +#endif } @@ -193,7 +193,7 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse return; rph->GetStoragePartition()->GetNetworkContext()->QueueReport( type, group, url, reporting_source_, network_anonymization_key_, - /*user_agent=*/absl::nullopt, std::move(body)); + /*user_agent=*/std::nullopt, std::move(body)); +#endif } @@ -201,7 +201,7 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -13593,12 +13593,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( +@@ -13787,12 +13787,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( base::Value::Dict body; if (!reason.empty()) body.Set("reason", reason); @@ -210,7 +210,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b - GetProcess()->GetStoragePartition()->GetNetworkContext()->QueueReport( - /*type=*/"crash", /*group=*/"default", last_committed_url_, - GetReportingSource(), isolation_info_.network_anonymization_key(), -- absl::nullopt /* user_agent */, std::move(body)); +- std::nullopt /* user_agent */, std::move(body)); } void RenderFrameHostImpl::SendCommitNavigation( @@ -254,7 +254,7 @@ new file mode 100644 diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -227,6 +227,7 @@ extern const base::FeatureParam kTimeoutTcpConnectAttemptMax( +@@ -229,6 +229,7 @@ extern const base::FeatureParam kTimeoutTcpConnectAttemptMax( base::Seconds(30)); #if BUILDFLAG(ENABLE_REPORTING) @@ -265,7 +265,7 @@ diff --git a/net/base/features.cc b/net/base/features.cc diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_service.cc --- a/net/reporting/reporting_service.cc +++ b/net/reporting/reporting_service.cc -@@ -211,6 +211,12 @@ class ReportingServiceImpl : public ReportingService { +@@ -214,6 +214,12 @@ class ReportingServiceImpl : public ReportingService { base::Value::Dict body, int depth, base::TimeTicks queued_ticks) { @@ -281,10 +281,10 @@ diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_servic diff --git a/services/network/network_context.h b/services/network/network_context.h --- a/services/network/network_context.h +++ b/services/network/network_context.h -@@ -472,10 +472,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext - const absl::optional& reporting_source, +@@ -464,10 +464,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext + const std::optional& reporting_source, const net::NetworkAnonymizationKey& network_anonymization_key, - const absl::optional& user_agent, + const std::optional& user_agent, - base::Value::Dict body) override; + base::Value::Dict body); void QueueSignedExchangeReport( @@ -297,7 +297,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn --- a/services/network/public/mojom/BUILD.gn +++ b/services/network/public/mojom/BUILD.gn -@@ -1435,7 +1435,6 @@ mojom("mojom") { +@@ -1443,7 +1443,6 @@ mojom("mojom") { export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1" export_header_blink = "third_party/blink/public/platform/web_common.h" if (enable_reporting) { @@ -308,7 +308,7 @@ diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mo diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -1197,6 +1197,7 @@ interface NetworkContext { +@@ -1206,6 +1206,7 @@ interface NetworkContext { // provided |network_isolation_key|. // // Spec: https://w3c.github.io/reporting/#concept-reports @@ -316,7 +316,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw QueueReport(string type, string group, url.mojom.Url url, -@@ -1210,6 +1211,7 @@ interface NetworkContext { +@@ -1219,6 +1220,7 @@ interface NetworkContext { // Note that this queued report will never be delivered if no reporting // endpoint matching is registered for with the provided // |network_isolation_key|. @@ -327,15 +327,15 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc --- a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc +++ b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc -@@ -28,6 +28,7 @@ - #include +@@ -29,6 +29,7 @@ + #include #include +#include "net/net_buildflags.h" #include "base/containers/contains.h" #include "base/debug/dump_without_crashing.h" - #include "services/network/public/cpp/web_sandbox_flags.h" -@@ -1169,6 +1170,7 @@ void ContentSecurityPolicy::ReportViolation( + #include "base/ranges/algorithm.h" +@@ -1167,6 +1168,7 @@ void ContentSecurityPolicy::ReportViolation( return; } @@ -343,7 +343,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c PostViolationReport(violation_data, context_frame, report_endpoints, use_reporting_api); -@@ -1176,6 +1178,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1174,6 +1176,7 @@ void ContentSecurityPolicy::ReportViolation( // `context_frame` (i.e. we're not processing 'frame-ancestors'). if (delegate_ && !context_frame) delegate_->DispatchViolationEvent(*violation_data, element); @@ -362,7 +362,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ #include "services/network/public/cpp/features.h" #include "services/network/public/mojom/content_security_policy.mojom-blink.h" #include "services/network/public/mojom/source_location.mojom-blink.h" -@@ -2585,9 +2586,11 @@ void LocalFrame::MainFrameInteractive() { +@@ -2619,9 +2620,11 @@ void LocalFrame::MainFrameInteractive() { v8_local_compile_hints_producer_->GenerateData(); } @@ -372,19 +372,19 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ } +#endif - device::mojom::blink::DevicePostureProvider* - LocalFrame::GetDevicePostureProvider() { + mojom::blink::DevicePostureProvider* LocalFrame::GetDevicePostureProvider() { + return mojo_handler_->DevicePostureProvider(); diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h --- a/third_party/blink/renderer/core/frame/local_frame.h +++ b/third_party/blink/renderer/core/frame/local_frame.h -@@ -38,6 +38,7 @@ +@@ -36,6 +36,7 @@ + #include "base/time/time.h" + #include "base/unguessable_token.h" #include "build/build_config.h" ++#include "net/net_buildflags.h" #include "mojo/public/cpp/bindings/pending_associated_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h" -+#include "net/net_buildflags.h" - #include "services/device/public/mojom/device_posture_provider.mojom-blink-forward.h" #include "services/metrics/public/cpp/ukm_source_id.h" - #include "services/network/public/mojom/fetch_api.mojom-blink-forward.h" @@ -657,8 +658,9 @@ class CORE_EXPORT LocalFrame final void FinishedScrollSequence(); @@ -393,7 +393,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b +#if BUILDFLAG(ENABLE_REPORTING) mojom::blink::ReportingServiceProxy* GetReportingService(); +#endif - device::mojom::blink::DevicePostureProvider* GetDevicePostureProvider(); + mojom::blink::DevicePostureProvider* GetDevicePostureProvider(); // Returns the frame host ptr. The interface returned is backed by an diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_party/blink/renderer/core/frame/reporting_context.cc diff --git a/build/cromite_patches/Allow-building-without-supervised-users.patch b/build/cromite_patches/Allow-building-without-supervised-users.patch index 09f5949f099b8becd4fa25f482bfeb11341c5c45..f9023335007e6f5b49d3b2dcdfcf08a64a543d50 100644 --- a/build/cromite_patches/Allow-building-without-supervised-users.patch +++ b/build/cromite_patches/Allow-building-without-supervised-users.patch @@ -4,27 +4,27 @@ Subject: Allow building without supervised users License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/android/BUILD.gn | 1 - - chrome/android/chrome_java_sources.gni | 1 - - .../chrome/browser/feed/FeedSurfaceCoordinator.java | 5 +---- - chrome/browser/BUILD.gn | 6 ------ - .../extensions/api/settings_private/prefs_util.cc | 2 ++ - chrome/browser/profiles/profile_impl.cc | 4 ++++ - chrome/browser/profiles/profile_manager.cc | 4 ++++ - chrome/browser/ui/webui/managed_ui_handler.cc | 2 ++ - .../browser/ui/webui/management/management_ui_handler.cc | 2 ++ - components/supervised_user/buildflags.gni | 6 +----- - .../core/browser/supervised_user_preferences.cc | 2 +- - components/supervised_user/core/common/features.cc | 1 + - components/supervised_user/core/common/pref_names.h | 4 ++++ - .../core/common/supervised_user_constants.cc | 2 ++ - .../supervised_user/core/common/supervised_user_utils.cc | 9 ++++++--- - 15 files changed, 30 insertions(+), 21 deletions(-) + chrome/android/BUILD.gn | 1 - + chrome/android/chrome_java_sources.gni | 1 - + .../chrome/browser/feed/FeedSurfaceCoordinator.java | 5 +---- + chrome/browser/BUILD.gn | 6 ------ + .../browser/extensions/api/settings_private/prefs_util.cc | 2 ++ + chrome/browser/profiles/profile_impl.cc | 4 ++++ + chrome/browser/profiles/profile_manager.cc | 4 ++++ + chrome/browser/ui/webui/managed_ui_handler.cc | 2 ++ + chrome/browser/ui/webui/management/management_ui_handler.cc | 2 ++ + components/supervised_user/buildflags.gni | 6 +----- + .../core/browser/supervised_user_preferences.cc | 2 +- + .../supervised_user/core/browser/supervised_user_utils.cc | 4 ++++ + components/supervised_user/core/common/features.cc | 1 + + components/supervised_user/core/common/pref_names.h | 4 ++++ + .../core/common/supervised_user_constants.cc | 2 ++ + 15 files changed, 28 insertions(+), 18 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -3657,7 +3657,6 @@ generate_jni("chrome_jni_headers") { +@@ -3697,7 +3697,6 @@ generate_jni("chrome_jni_headers") { "java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer.java", "java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSites.java", "java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesBridge.java", @@ -35,7 +35,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -1075,7 +1075,6 @@ chrome_java_sources = [ +@@ -1085,7 +1085,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/suggestions/tile/TileGroupDelegateImpl.java", "java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java", "java/src/org/chromium/chrome/browser/suggestions/tile/TopSitesTileView.java", @@ -46,7 +46,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java -@@ -69,7 +69,6 @@ import org.chromium.components.browser_ui.widget.displaystyle.UiConfig; +@@ -68,7 +68,6 @@ import org.chromium.components.browser_ui.widget.displaystyle.UiConfig; import org.chromium.components.feature_engagement.EventConstants; import org.chromium.components.feature_engagement.Tracker; import org.chromium.components.prefs.PrefService; @@ -54,7 +54,7 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/ import org.chromium.components.user_prefs.UserPrefs; import org.chromium.third_party.android.swiperefresh.SwipeRefreshLayout; import org.chromium.ui.base.DeviceFormFactor; -@@ -848,9 +847,7 @@ public class FeedSurfaceCoordinator +@@ -775,9 +774,7 @@ public class FeedSurfaceCoordinator * Returns true if the supervised user feed should be displayed. */ public boolean shouldDisplaySupervisedFeed() { @@ -68,7 +68,7 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3161,8 +3161,6 @@ static_library("browser") { +@@ -3165,8 +3165,6 @@ static_library("browser") { "feed/android/refresh_task_scheduler_impl.cc", "feed/android/refresh_task_scheduler_impl.h", "feed/android/web_feed_bridge.cc", @@ -77,7 +77,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "file_select_helper_contacts_android.cc", "file_select_helper_contacts_android.h", "first_run/android/first_run_prefs.cc", -@@ -3381,10 +3379,6 @@ static_library("browser") { +@@ -3371,10 +3369,6 @@ static_library("browser") { "ssl/chrome_security_state_model_delegate.h", "ssl/known_interception_disclosure_infobar.cc", "ssl/known_interception_disclosure_infobar.h", @@ -91,7 +91,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc -@@ -1001,9 +1001,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { +@@ -1024,9 +1024,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { settings_api::PrefType::kBoolean; #endif @@ -106,7 +106,7 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc -@@ -696,10 +696,12 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { +@@ -689,10 +689,12 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { prefs->SetTime(prefs::kProfileCreationTime, path_creation_time_); pref_change_registrar_.Init(prefs); @@ -119,7 +119,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p // Changes in the profile avatar. pref_change_registrar_.Add( -@@ -1625,11 +1627,13 @@ GURL ProfileImpl::GetHomePage() { +@@ -1627,11 +1629,13 @@ GURL ProfileImpl::GetHomePage() { } void ProfileImpl::UpdateSupervisedUserIdInStorage() { @@ -136,7 +136,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc -@@ -1222,6 +1222,7 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { +@@ -1215,6 +1215,7 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { profile->GetPrefs()->SetString(prefs::kProfileName, profile_name); } @@ -144,7 +144,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); bool force_supervised_user_id = #if BUILDFLAG(IS_CHROMEOS_ASH) -@@ -1243,6 +1244,7 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { +@@ -1236,6 +1237,7 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { profile->GetPrefs()->SetString(prefs::kSupervisedUserId, supervised_user_id); } @@ -152,7 +152,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile #if !BUILDFLAG(IS_ANDROID) if (profile->IsNewProfile()) { profile->GetPrefs()->SetBoolean(prefs::kHasSeenWelcomePage, false); -@@ -2046,8 +2048,10 @@ void ProfileManager::AddProfileToStorage(Profile* profile) { +@@ -2035,8 +2037,10 @@ void ProfileManager::AddProfileToStorage(Profile* profile) { init_params.icon_index = profile->GetPrefs()->GetInteger(prefs::kProfileAvatarIndex); @@ -181,7 +181,7 @@ diff --git a/chrome/browser/ui/webui/managed_ui_handler.cc b/chrome/browser/ui/w diff --git a/chrome/browser/ui/webui/management/management_ui_handler.cc b/chrome/browser/ui/webui/management/management_ui_handler.cc --- a/chrome/browser/ui/webui/management/management_ui_handler.cc +++ b/chrome/browser/ui/webui/management/management_ui_handler.cc -@@ -1456,10 +1456,12 @@ void ManagementUIHandler::AddObservers() { +@@ -1507,10 +1507,12 @@ void ManagementUIHandler::AddObservers() { pref_registrar_.Init(profile->GetPrefs()); @@ -220,10 +220,29 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences } bool IsSafeSitesEnabled(const PrefService& pref_service) { +diff --git a/components/supervised_user/core/browser/supervised_user_utils.cc b/components/supervised_user/core/browser/supervised_user_utils.cc +--- a/components/supervised_user/core/browser/supervised_user_utils.cc ++++ b/components/supervised_user/core/browser/supervised_user_utils.cc +@@ -81,11 +81,15 @@ GURL NormalizeUrl(const GURL& url) { + } + + bool AreWebFilterPrefsDefault(const PrefService& pref_service) { ++#if BUILDFLAG(ENABLE_SUPERVISED_USERS) + return pref_service + .FindPreference(prefs::kDefaultSupervisedUserFilteringBehavior) + ->IsDefaultValue() || + pref_service.FindPreference(prefs::kSupervisedUserSafeSites) + ->IsDefaultValue(); ++#else ++ return true; ++#endif + } + + bool EmitLogRecordHistograms( diff --git a/components/supervised_user/core/common/features.cc b/components/supervised_user/core/common/features.cc --- a/components/supervised_user/core/common/features.cc +++ b/components/supervised_user/core/common/features.cc -@@ -165,4 +165,5 @@ bool IsShadowKidsApiWithSafeSitesEnabled() { +@@ -163,4 +163,5 @@ bool IsShadowKidsApiWithSafeSitesEnabled() { return base::FeatureList::IsEnabled(kShadowKidsApiWithSafeSites); } @@ -243,7 +262,7 @@ diff --git a/components/supervised_user/core/common/pref_names.h b/components/su namespace prefs { // A bool pref that keeps whether the child status for this profile was already -@@ -124,4 +126,6 @@ inline constexpr char kFirstTimeInterstitialBannerState[] = +@@ -132,4 +134,6 @@ inline constexpr char kFirstTimeInterstitialBannerState[] = } // namespace prefs @@ -253,7 +272,7 @@ diff --git a/components/supervised_user/core/common/pref_names.h b/components/su diff --git a/components/supervised_user/core/common/supervised_user_constants.cc b/components/supervised_user/core/common/supervised_user_constants.cc --- a/components/supervised_user/core/common/supervised_user_constants.cc +++ b/components/supervised_user/core/common/supervised_user_constants.cc -@@ -68,6 +68,7 @@ const char kChromeOSAvatarIndex[] = "chromeos-avatar-index"; +@@ -70,6 +70,7 @@ const char kChromeOSAvatarIndex[] = "chromeos-avatar-index"; const char kChromeOSPasswordData[] = "chromeos-password-data"; @@ -261,7 +280,7 @@ diff --git a/components/supervised_user/core/common/supervised_user_constants.cc const char* const kCustodianInfoPrefs[] = { prefs::kSupervisedUserCustodianName, prefs::kSupervisedUserCustodianEmail, -@@ -80,6 +81,7 @@ const char* const kCustodianInfoPrefs[] = { +@@ -82,6 +83,7 @@ const char* const kCustodianInfoPrefs[] = { prefs::kSupervisedUserSecondCustodianProfileURL, prefs::kSupervisedUserSecondCustodianProfileImageURL, }; @@ -269,25 +288,4 @@ diff --git a/components/supervised_user/core/common/supervised_user_constants.cc const base::FilePath::CharType kSupervisedUserSettingsFilename[] = FILE_PATH_LITERAL("Managed Mode Settings"); -diff --git a/components/supervised_user/core/common/supervised_user_utils.cc b/components/supervised_user/core/common/supervised_user_utils.cc ---- a/components/supervised_user/core/common/supervised_user_utils.cc -+++ b/components/supervised_user/core/common/supervised_user_utils.cc -@@ -52,11 +52,14 @@ GURL NormalizeUrl(const GURL& url) { - } - - bool AreWebFilterPrefsDefault(const PrefService& pref_service) { -+#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - return pref_service - .FindPreference(prefs::kDefaultSupervisedUserFilteringBehavior) -- ->IsDefaultValue() || -- pref_service.FindPreference(prefs::kSupervisedUserSafeSites) -- ->IsDefaultValue(); -+ kChildAccountSUID && -+ IsChildAccountSupervisionEnabled(); -+#else -+ return false; -+#endif - } - - absl::optional SupervisionStatusForUser( -- diff --git a/build/cromite_patches/Allow-playing-audio-in-background.patch b/build/cromite_patches/Allow-playing-audio-in-background.patch index f1987a08d6d2e54f1907736490a086285d9d2224..514ca2a80c058be725fc88bc16c07e36833e5414 100644 --- a/build/cromite_patches/Allow-playing-audio-in-background.patch +++ b/build/cromite_patches/Allow-playing-audio-in-background.patch @@ -11,7 +11,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc b/third_party/blink/renderer/platform/media/web_media_player_impl.cc --- a/third_party/blink/renderer/platform/media/web_media_player_impl.cc +++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc -@@ -1177,6 +1177,12 @@ bool WebMediaPlayerImpl::HasAudio() const { +@@ -1181,6 +1181,12 @@ bool WebMediaPlayerImpl::HasAudio() const { return pipeline_metadata_.has_audio; } @@ -24,7 +24,7 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc void WebMediaPlayerImpl::EnabledAudioTracksChanged( const WebVector& enabledTrackIds) { DCHECK(main_task_runner_->BelongsToCurrentThread()); -@@ -3504,7 +3510,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { +@@ -3524,7 +3530,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const { : HasAudio(); // Audio only stream is allowed to play when in background. diff --git a/build/cromite_patches/Always-use-new-tab-page-for-default-home-page.patch b/build/cromite_patches/Always-use-new-tab-page-for-default-home-page.patch index 11eaf654675c7bd5ba0d6c532d4b0829f9b45c6d..53961e67da9ccb094fa5085aa0366899f1414a10 100644 --- a/build/cromite_patches/Always-use-new-tab-page-for-default-home-page.patch +++ b/build/cromite_patches/Always-use-new-tab-page-for-default-home-page.patch @@ -54,7 +54,7 @@ diff --git a/components/search_engines/android/java/src/org/chromium/components/ diff --git a/components/search_engines/android/template_url_service_android.cc b/components/search_engines/android/template_url_service_android.cc --- a/components/search_engines/android/template_url_service_android.cc +++ b/components/search_engines/android/template_url_service_android.cc -@@ -324,6 +324,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine( +@@ -330,6 +330,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine( const base::android::JavaParamRef& jimage_translate_target_language_param_key, jboolean set_as_default) { diff --git a/build/cromite_patches/AudioBuffer-AnalyserNode-fp-mitigations.patch b/build/cromite_patches/AudioBuffer-AnalyserNode-fp-mitigations.patch index 67cf3c4018b0d9c9c6965b77232123a0d858badf..297bce19702075b6a016e299815fb25307a9e244 100644 --- a/build/cromite_patches/AudioBuffer-AnalyserNode-fp-mitigations.patch +++ b/build/cromite_patches/AudioBuffer-AnalyserNode-fp-mitigations.patch @@ -161,15 +161,15 @@ diff --git a/third_party/blink/renderer/modules/webaudio/offline_audio_context.c diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc --- a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc +++ b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc -@@ -29,6 +29,7 @@ - #include +@@ -31,6 +31,7 @@ + #include #include +#include "third_party/blink/renderer/modules/webaudio/base_audio_context.h" #include "third_party/blink/renderer/platform/audio/audio_bus.h" #include "third_party/blink/renderer/platform/audio/audio_utilities.h" #include "third_party/blink/renderer/platform/audio/vector_math.h" -@@ -154,6 +155,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData( +@@ -155,6 +156,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData( input_buffer[(i + write_index - fft_size + kInputBufferSize) % kInputBufferSize]; @@ -177,7 +177,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/ destination[i] = value; } } -@@ -181,6 +183,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { +@@ -182,6 +184,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { input_buffer[(i + write_index - fft_size + kInputBufferSize) % kInputBufferSize]; @@ -186,7 +186,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/ // Scale from nominal -1 -> +1 to unsigned byte. double scaled_value = 128 * (value + 1); -@@ -300,6 +304,8 @@ void RealtimeAnalyser::ConvertToByteData(DOMUint8Array* destination_array) { +@@ -301,6 +305,8 @@ void RealtimeAnalyser::ConvertToByteData(DOMUint8Array* destination_array) { double scaled_value = UCHAR_MAX * (db_mag - min_decibels) * range_scale_factor; @@ -195,7 +195,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/ // Clip to valid range. destination[i] = static_cast(ClampTo(scaled_value, 0, UCHAR_MAX)); -@@ -319,6 +325,7 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) { +@@ -320,6 +326,7 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) { float linear_value = source[i]; double db_mag = audio_utilities::LinearToDecibels(linear_value); destination[i] = static_cast(db_mag); diff --git a/build/cromite_patches/Battery-API-return-nothing.patch b/build/cromite_patches/Battery-API-return-nothing.patch index 4e54e96aa0875f7976034d49f4dbedc2f2833061..9364c23e8d0d946a4b8c437e4d3fcead1ba591b2 100644 --- a/build/cromite_patches/Battery-API-return-nothing.patch +++ b/build/cromite_patches/Battery-API-return-nothing.patch @@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/third_party/blink/renderer/modules/battery/battery_manager.cc b/third_party/blink/renderer/modules/battery/battery_manager.cc --- a/third_party/blink/renderer/modules/battery/battery_manager.cc +++ b/third_party/blink/renderer/modules/battery/battery_manager.cc -@@ -78,46 +78,28 @@ ScriptPromise BatteryManager::StartRequest(ScriptState* script_state) { +@@ -80,46 +80,28 @@ ScriptPromiseTyped BatteryManager::StartRequest( } bool BatteryManager::charging() { diff --git a/build/cromite_patches/Block-qjz9zk-or-trk-requests.patch b/build/cromite_patches/Block-qjz9zk-or-trk-requests.patch index 4e38f13205ec21086cee97d3add401bb0dc82058..0461642ea616c6665c6b13399b806b24d8f23f44 100644 --- a/build/cromite_patches/Block-qjz9zk-or-trk-requests.patch +++ b/build/cromite_patches/Block-qjz9zk-or-trk-requests.patch @@ -108,7 +108,7 @@ diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/ur diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc --- a/content/browser/child_process_security_policy_impl.cc +++ b/content/browser/child_process_security_policy_impl.cc -@@ -841,6 +841,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() +@@ -849,6 +849,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() RegisterPseudoScheme(url::kJavaScriptScheme); RegisterPseudoScheme(kViewSourceScheme); RegisterPseudoScheme(kGoogleChromeScheme); @@ -119,7 +119,7 @@ diff --git a/content/browser/child_process_security_policy_impl.cc b/content/bro diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -995,6 +995,8 @@ component("net") { +@@ -997,6 +997,8 @@ component("net") { "url_request/url_request_http_job.cc", "url_request/url_request_http_job.h", "url_request/url_request_interceptor.cc", @@ -235,8 +235,8 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur +#include "net/url_request/trk_protocol_handler.h" #include "net/url_request/url_request_context.h" #include "net/url_request/url_request_job_factory.h" - #include "net/url_request/url_request_throttler_manager.h" -@@ -574,6 +575,8 @@ std::unique_ptr URLRequestContextBuilder::Build() { + #include "url/url_constants.h" +@@ -559,6 +560,8 @@ std::unique_ptr URLRequestContextBuilder::Build() { job_factory->SetProtocolHandler(scheme_handler.first, std::move(scheme_handler.second)); } @@ -270,7 +270,7 @@ diff --git a/url/url_constants.h b/url/url_constants.h diff --git a/url/url_util.cc b/url/url_util.cc --- a/url/url_util.cc +++ b/url/url_util.cc -@@ -46,6 +46,7 @@ struct SchemeRegistry { +@@ -47,6 +47,7 @@ struct SchemeRegistry { std::vector standard_schemes = { {kHttpsScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, {kHttpScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, @@ -278,7 +278,7 @@ diff --git a/url/url_util.cc b/url/url_util.cc // Yes, file URLs can have a hostname, so file URLs should be handled as // "standard". File URLs never have a port as specified by the SchemeType // field. Unlike other SCHEME_WITH_HOST schemes, the 'host' in a file -@@ -91,6 +92,7 @@ struct SchemeRegistry { +@@ -92,6 +93,7 @@ struct SchemeRegistry { kAboutScheme, kJavaScriptScheme, kDataScheme, diff --git a/build/cromite_patches/Bromite-package-name.patch b/build/cromite_patches/Bromite-package-name.patch index 139e2d5408d622621585b93c8ecb11e9dffa9363..7f7d6e53a308afc7a02f32369553ea41a098eb5d 100644 --- a/build/cromite_patches/Bromite-package-name.patch +++ b/build/cromite_patches/Bromite-package-name.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni -@@ -26,7 +26,7 @@ declare_args() { +@@ -25,7 +25,7 @@ declare_args() { # WebView providers which declare one of a handful of package names. See # https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/build-instructions.md#Changing-package-name # for details. diff --git a/build/cromite_patches/Bromite-subresource-adblocker.patch b/build/cromite_patches/Bromite-subresource-adblocker.patch index 6f4f31976c7fbb328206ef03b5a7aa2a588656e3..1e8066d8cd10bd088077f8d167e6f7cc722e5e2f 100644 --- a/build/cromite_patches/Bromite-subresource-adblocker.patch +++ b/build/cromite_patches/Bromite-subresource-adblocker.patch @@ -29,7 +29,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/browser_process_impl.cc | 21 ++ chrome/browser/browser_process_impl.h | 2 + chrome/browser/chrome_browser_main.cc | 3 + - chrome/browser/flags/BUILD.gn | 3 + + chrome/browser/flags/BUILD.gn | 4 + .../flags/android/adblock_native_gateway.cc | 31 ++ .../browser/flags/AdBlockNativeGateway.java | 30 ++ .../net/system_network_context_manager.cc | 8 + @@ -48,7 +48,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../content/browser/ruleset_service.h | 7 +- .../content/browser/ruleset_version.h | 4 + .../unindexed_ruleset_stream_generator.cc | 3 + - .../browser/verified_ruleset_dealer.cc | 4 + + .../browser/verified_ruleset_dealer.cc | 3 + .../browser/subresource_filter_features.cc | 116 +------- .../core/common/indexed_ruleset.cc | 5 +- .../Bromite-subresource-adblocker.inc | 3 + @@ -68,8 +68,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -304,6 +304,7 @@ if (current_toolchain == default_toolchain) { - "//chrome/android/modules/image_editor/provider:java", +@@ -303,6 +303,7 @@ if (current_toolchain == default_toolchain) { + "//chrome/android/modules/cablev2_authenticator/public:java", "//chrome/android/modules/stack_unwinder/provider:java", "//chrome/android/webapk/libs/client:client_java", + "//chrome/browser/endpoint_fetcher:java", @@ -79,7 +79,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -434,6 +434,7 @@ chrome_java_resources = [ +@@ -430,6 +430,7 @@ chrome_java_resources = [ "java/res/layout/account_chooser_dialog_title.xml", "java/res/layout/account_divider_preference.xml", "java/res/layout/account_management_account_row.xml", @@ -87,7 +87,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja "java/res/layout/auto_sign_in_first_run_dialog.xml", "java/res/layout/autofill_billing_address_dropdown.xml", "java/res/layout/autofill_card_name_and_number.xml", -@@ -638,6 +639,7 @@ chrome_java_resources = [ +@@ -633,6 +634,7 @@ chrome_java_resources = [ "java/res/xml/about_chrome_preferences.xml", "java/res/xml/account_management_preferences.xml", "java/res/xml/ad_services_config.xml", @@ -98,7 +98,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -961,6 +961,8 @@ chrome_java_sources = [ +@@ -972,6 +972,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/permissions/PermissionSettingsBridge.java", "java/src/org/chromium/chrome/browser/permissions/PermissionUpdateRequester.java", "java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceImpl.java", @@ -182,7 +182,7 @@ new file mode 100644 diff --git a/chrome/android/java/res/values/styles.xml b/chrome/android/java/res/values/styles.xml --- a/chrome/android/java/res/values/styles.xml +++ b/chrome/android/java/res/values/styles.xml -@@ -232,6 +232,24 @@ found in the LICENSE file. +@@ -245,6 +245,24 @@ found in the LICENSE file. @@ -254,9 +254,9 @@ new file mode 100644 diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml --- a/chrome/android/java/res/xml/main_preferences.xml +++ b/chrome/android/java/res/xml/main_preferences.xml -@@ -72,6 +72,11 @@ found in the LICENSE file. +@@ -78,6 +78,11 @@ found in the LICENSE file. android:key="safety_check" - android:order="12" + android:order="13" android:title="@string/prefs_safety_check"/> + @@ -460,7 +460,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_startup_task_utils.cc --- a/chrome/browser/after_startup_task_utils.cc +++ b/chrome/browser/after_startup_task_utils.cc -@@ -28,6 +28,8 @@ +@@ -29,6 +29,8 @@ #include "chromeos/startup/browser_params_proxy.h" #endif // BUILDFLAG(IS_CHROMEOS_LACROS) @@ -469,10 +469,10 @@ diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_s using content::BrowserThread; namespace { -@@ -123,6 +125,8 @@ void SetBrowserStartupIsComplete() { - ScheduleTask(base::WrapUnique(queued_task)); - g_after_startup_tasks.Get().clear(); - g_after_startup_tasks.Get().shrink_to_fit(); +@@ -132,6 +134,8 @@ void SetBrowserStartupIsComplete() { + } + GetAfterStartupTasks().clear(); + GetAfterStartupTasks().shrink_to_fit(); + // initialize AdBlock engine scheduled updates + g_browser_process->adblock_updater()->Start(); } @@ -511,7 +511,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc -@@ -1138,6 +1138,27 @@ BrowserProcessImpl::component_updater() { +@@ -1168,6 +1168,27 @@ BrowserProcessImpl::component_updater() { return component_updater_.get(); } @@ -542,7 +542,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h -@@ -210,6 +210,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -209,6 +209,7 @@ class BrowserProcessImpl : public BrowserProcess, #endif component_updater::ComponentUpdateService* component_updater() override; @@ -550,7 +550,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc MediaFileSystemRegistry* media_file_system_registry() override; WebRtcLogUploader* webrtc_log_uploader() override; network_time::NetworkTimeTracker* network_time_tracker() override; -@@ -406,6 +407,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -405,6 +406,7 @@ class BrowserProcessImpl : public BrowserProcess, // to concerns over integrity of data shared between profiles, // but some users of component updater only install per-user. std::unique_ptr component_updater_; @@ -561,7 +561,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc -@@ -448,6 +448,9 @@ StartupProfileInfo CreateInitialProfile( +@@ -446,6 +446,9 @@ StartupProfileInfo CreateInitialProfile( // missing code in the above test. CHECK(profile_info.profile) << "Cannot get default profile."; @@ -574,15 +574,15 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn --- a/chrome/browser/flags/BUILD.gn +++ b/chrome/browser/flags/BUILD.gn -@@ -23,6 +23,7 @@ android_library("java") { - "android/java/src/org/chromium/chrome/browser/flags/StringCachedFieldTrialParameter.java", - "android/java/src/org/chromium/chrome/browser/flags/ValuesOverridden.java", - "android/java/src/org/chromium/chrome/browser/flags/ValuesReturned.java", +@@ -8,6 +8,7 @@ import("//third_party/jni_zero/jni_zero.gni") + android_library("java") { + sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ] + sources += [ + "android/java/src/org/chromium/chrome/browser/flags/AdBlockNativeGateway.java", - ] - deps = [ - "//base:base_java", -@@ -44,6 +45,7 @@ android_library("java") { + "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java", + "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java", + "android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java", +@@ -33,6 +34,7 @@ android_library("java") { generate_jni("jni_headers") { sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ] sources += [ @@ -590,7 +590,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java", "android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java", ] -@@ -58,6 +60,7 @@ static_library("flags_android") { +@@ -47,6 +49,7 @@ static_library("flags_android") { "android/chrome_session_state.cc", "android/chrome_session_state.h", ] @@ -598,6 +598,14 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn deps = [ ":jni_headers", "//base", +@@ -71,6 +74,7 @@ robolectric_library("flags_junit_tests") { + "android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlagsAnnotationUnitTest.java", + "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureListWithProcessorUnitTest.java", + "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureListWithoutProcessorUnitTest.java", ++ "android/java/src/org/chromium/chrome/browser/flags/AdBlockNativeGateway.java", + ] + deps = [ + ":java", diff --git a/chrome/browser/flags/android/adblock_native_gateway.cc b/chrome/browser/flags/android/adblock_native_gateway.cc new file mode 100755 --- /dev/null @@ -672,7 +680,7 @@ new file mode 100755 diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc -@@ -602,6 +602,14 @@ SystemNetworkContextManager::~SystemNetworkContextManager() { +@@ -640,6 +640,14 @@ SystemNetworkContextManager::~SystemNetworkContextManager() { void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { StubResolverConfigReader::RegisterPrefs(registry); @@ -730,7 +738,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -2657,6 +2657,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; +@@ -2653,6 +2653,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; inline constexpr char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls"; @@ -745,7 +753,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp --- a/components/browser_ui/strings/android/site_settings.grdp +++ b/components/browser_ui/strings/android/site_settings.grdp -@@ -371,6 +371,9 @@ +@@ -359,6 +359,9 @@ This site shows intrusive or misleading ads @@ -771,12 +779,12 @@ diff --git a/components/component_updater/BUILD.gn b/components/component_update "component_updater_service.cc", "component_updater_service.h", "component_updater_service_internal.h", -@@ -47,6 +53,7 @@ static_library("component_updater") { - "//components/prefs", +@@ -48,6 +54,7 @@ static_library("component_updater") { "//components/update_client", "//components/version_info", + "//net", + "//services/network/public/mojom", - "//third_party/boringssl:boringssl", + "//third_party/boringssl", "//ui/base", "//url", diff --git a/components/component_updater/adblock_updater_service.cc b/components/component_updater/adblock_updater_service.cc @@ -1554,8 +1562,8 @@ new file mode 100644 diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc --- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc +++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc -@@ -15,6 +15,9 @@ - #include "base/trace_event/trace_conversion_helper.h" +@@ -14,6 +14,9 @@ + #include "base/metrics/histogram_macros.h" #include "base/trace_event/trace_event.h" #include "base/trace_event/traced_value.h" +#include "components/content_settings/core/common/content_settings_types.h" @@ -1564,7 +1572,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f #include "components/subresource_filter/content/browser/activation_state_computing_navigation_throttle.h" #include "components/subresource_filter/content/browser/async_document_subresource_filter.h" #include "components/subresource_filter/content/browser/content_subresource_filter_web_contents_helper.h" -@@ -149,6 +152,7 @@ ContentSubresourceFilterThrottleManager:: +@@ -148,6 +151,7 @@ ContentSubresourceFilterThrottleManager:: profile_interaction_manager_( std::make_unique( profile_context)), @@ -1572,7 +1580,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f web_contents_helper_(web_contents_helper) {} ContentSubresourceFilterThrottleManager:: -@@ -668,6 +672,17 @@ ContentSubresourceFilterThrottleManager:: +@@ -667,6 +671,17 @@ ContentSubresourceFilterThrottleManager:: throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(), ad_tagging_state); } @@ -1708,8 +1716,8 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ IndexAndWriteRulesetResult::FAILED_PARSING_UNINDEXED_RULESET); return IndexedRulesetVersion(); @@ -328,8 +346,12 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( - indexed_ruleset_version_dir, unindexed_ruleset_info.license_path, - indexer.data(), indexer.size()); + WriteRuleset(indexed_ruleset_version_dir, + unindexed_ruleset_info.license_path, indexer.data()); RecordIndexAndWriteRulesetResult(result); - if (result != IndexAndWriteRulesetResult::SUCCESS) + if (result != IndexAndWriteRulesetResult::SUCCESS) { @@ -1736,11 +1744,11 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ - publisher_->TryOpenAndSetRulesetFile( file_path, version.checksum, - base::BindOnce(&RulesetService::OnRulesetSet, AsWeakPtr())); + base::BindOnce(&RulesetService::OnRulesetSet, diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/components/subresource_filter/content/browser/ruleset_service.h --- a/components/subresource_filter/content/browser/ruleset_service.h +++ b/components/subresource_filter/content/browser/ruleset_service.h -@@ -182,7 +182,7 @@ class RulesetService : public base::SupportsWeakPtr { +@@ -182,7 +182,7 @@ class RulesetService { // // Virtual so that it can be mocked out in tests. virtual void IndexAndStoreAndPublishRulesetIfNeeded( @@ -1749,7 +1757,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/c // Get the ruleset version associated with the current local_state_. IndexedRulesetVersion GetMostRecentlyIndexedVersion() const; -@@ -215,6 +215,11 @@ class RulesetService : public base::SupportsWeakPtr { +@@ -215,6 +215,11 @@ class RulesetService { const base::FilePath& indexed_ruleset_base_dir, const UnindexedRulesetInfo& unindexed_ruleset_info); @@ -1798,15 +1806,7 @@ diff --git a/components/subresource_filter/content/browser/unindexed_ruleset_str diff --git a/components/subresource_filter/content/browser/verified_ruleset_dealer.cc b/components/subresource_filter/content/browser/verified_ruleset_dealer.cc --- a/components/subresource_filter/content/browser/verified_ruleset_dealer.cc +++ b/components/subresource_filter/content/browser/verified_ruleset_dealer.cc -@@ -11,6 +11,7 @@ - #include "base/functional/bind.h" - #include "base/functional/callback_helpers.h" - #include "base/location.h" -+#include "base/logging.h" - #include "base/metrics/histogram_macros.h" - #include "base/notreached.h" - #include "base/task/sequenced_task_runner.h" -@@ -39,6 +40,9 @@ RulesetFilePtr VerifiedRulesetDealer::OpenAndSetRulesetFile( +@@ -38,6 +38,9 @@ RulesetFilePtr VerifiedRulesetDealer::OpenAndSetRulesetFile( TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("loading"), "VerifiedRulesetDealer::OpenAndSetRulesetFile", "file_valid", file->IsValid()); @@ -1819,8 +1819,8 @@ diff --git a/components/subresource_filter/content/browser/verified_ruleset_deal diff --git a/components/subresource_filter/core/browser/subresource_filter_features.cc b/components/subresource_filter/core/browser/subresource_filter_features.cc --- a/components/subresource_filter/core/browser/subresource_filter_features.cc +++ b/components/subresource_filter/core/browser/subresource_filter_features.cc -@@ -54,72 +54,7 @@ class CommaSeparatedStrings { - const std::vector pieces_; +@@ -55,72 +55,7 @@ class CommaSeparatedStrings { + const std::vector pieces_; }; -std::string TakeVariationParamOrReturnEmpty( @@ -1835,7 +1835,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu -} - -mojom::ActivationLevel ParseActivationLevel( -- const base::StringPiece activation_level) { +- const std::string_view activation_level) { - if (base::EqualsCaseInsensitiveASCII(activation_level, - kActivationLevelEnabled)) - return mojom::ActivationLevel::kEnabled; @@ -1845,7 +1845,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu - return mojom::ActivationLevel::kDisabled; -} - --ActivationScope ParseActivationScope(const base::StringPiece activation_scope) { +-ActivationScope ParseActivationScope(const std::string_view activation_scope) { - if (base::EqualsCaseInsensitiveASCII(activation_scope, - kActivationScopeAllSites)) - return ActivationScope::ALL_SITES; @@ -1881,7 +1881,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu - return value < 1 ? value : 1; -} - --int ParseInt(const base::StringPiece value) { +-int ParseInt(const std::string_view value) { - int result = 0; - base::StringToInt(value, &result); - return result; @@ -1893,7 +1893,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu // If ad tagging is enabled, turn on the dryrun automatically. bool ad_tagging_enabled = base::FeatureList::IsEnabled(kAdTagging); const struct { -@@ -127,23 +62,16 @@ std::vector FillEnabledPresetConfigurations( +@@ -128,23 +63,16 @@ std::vector FillEnabledPresetConfigurations( bool enabled_by_default; Configuration (*factory_method)(); } kAvailablePresetConfigurations[] = { @@ -1919,7 +1919,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu enabled_configurations.push_back(available_preset.factory_method()); } } -@@ -151,46 +79,10 @@ std::vector FillEnabledPresetConfigurations( +@@ -152,46 +80,10 @@ std::vector FillEnabledPresetConfigurations( return enabled_configurations; } @@ -1978,15 +1978,14 @@ diff --git a/components/subresource_filter/core/common/indexed_ruleset.cc b/comp #include "base/metrics/histogram_macros.h" #include "base/trace_event/trace_event.h" #include "components/subresource_filter/core/common/first_party_origin.h" -@@ -37,8 +38,10 @@ VerifyStatus GetVerifyStatus(const uint8_t* buffer, +@@ -36,7 +37,9 @@ VerifyStatus GetVerifyStatus(base::span buffer, // least once. The verifier detects a subset of the errors detected by the // checksum, and is unneeded once expected_checksum is consistently nonzero. - flatbuffers::Verifier verifier(buffer, size); -+ int local_checksum = LocalGetChecksum(buffer, size); + flatbuffers::Verifier verifier(buffer.data(), buffer.size()); +- if (expected_checksum != 0 && expected_checksum != LocalGetChecksum(buffer)) { ++ int local_checksum = LocalGetChecksum(buffer); + LOG(INFO) << "GetVerifyStatus: expected checksum = 0x" << std::hex << expected_checksum << ", local checksum = 0x" << std::hex << local_checksum; - if (expected_checksum != 0 && -- expected_checksum != LocalGetChecksum(buffer, size)) { -+ expected_checksum != local_checksum) { ++ if (expected_checksum != 0 && expected_checksum != local_checksum) { return flat::VerifyIndexedRulesetBuffer(verifier) ? VerifyStatus::kChecksumFailVerifierPass : VerifyStatus::kChecksumFailVerifierFail; diff --git a/build/cromite_patches/Client-hints-overrides.patch b/build/cromite_patches/Client-hints-overrides.patch index 305420c4085a23a7b68f393cbbb654fd1cd4936e..f70656618d98f95f864a3cc86adace813bf8543d 100644 --- a/build/cromite_patches/Client-hints-overrides.patch +++ b/build/cromite_patches/Client-hints-overrides.patch @@ -7,17 +7,20 @@ Use Google Chrome branding for client hints License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - components/embedder_support/user_agent_utils.cc | 4 +--- - content/browser/client_hints/client_hints.cc | 3 ++- - content/browser/loader/navigation_url_loader_impl.cc | 5 +++++ - .../content/common/features_cc/Client-hints-overrides.inc | 1 + - .../public/cpp/features_cc/Client-hints-overrides.inc | 1 + - net/http/http_network_transaction.cc | 1 + - services/network/public/cpp/client_hints.cc | 1 + - third_party/blink/common/client_hints/client_hints.cc | 1 + - .../blink/common/client_hints/enabled_client_hints.cc | 4 +++- - .../blink/renderer/platform/runtime_enabled_features.json5 | 4 ++-- - 10 files changed, 18 insertions(+), 7 deletions(-) + components/embedder_support/user_agent_utils.cc | 4 +--- + content/browser/client_hints/client_hints.cc | 17 +++++++++++------ + .../loader/navigation_url_loader_impl.cc | 5 +++++ + .../features_cc/Client-hints-overrides.inc | 1 + + .../cpp/features_cc/Client-hints-overrides.inc | 1 + + net/http/http_network_transaction.cc | 1 + + services/network/public/cpp/client_hints.cc | 1 + + .../blink/common/client_hints/client_hints.cc | 1 + + .../common/client_hints/enabled_client_hints.cc | 4 +++- + .../blink/renderer/core/frame/navigator_ua.idl | 4 +++- + .../renderer/core/frame/navigator_ua_data.idl | 5 ++++- + .../renderer/core/loader/base_fetch_context.cc | 6 ++++-- + .../platform/runtime_enabled_features.json5 | 4 ++++ + 13 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 cromite_flags/content/common/features_cc/Client-hints-overrides.inc create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Client-hints-overrides.inc @@ -27,18 +30,26 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd @@ -187,9 +187,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList( bool parse_result = base::StringToInt(major_version, &major_version_number); DCHECK(parse_result); - absl::optional brand; + std::optional brand; -#if !BUILDFLAG(CHROMIUM_BRANDING) - brand = version_info::GetProductName(); -#endif + brand = "Google Chrome"; - absl::optional maybe_brand_override = + std::optional maybe_brand_override = base::GetFieldTrialParamValueByFeature(features::kGreaseUACH, "brand_override"); diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/client_hints/client_hints.cc --- a/content/browser/client_hints/client_hints.cc +++ b/content/browser/client_hints/client_hints.cc -@@ -516,7 +516,8 @@ void AddPrefersReducedTransparencyHeader(net::HttpRequestHeaders* headers, +@@ -55,6 +55,7 @@ + #include "third_party/blink/public/common/permissions_policy/origin_with_possible_wildcards.h" + #include "third_party/blink/public/common/permissions_policy/permissions_policy.h" + #include "third_party/blink/public/common/user_agent/user_agent_metadata.h" ++#include "third_party/blink/renderer/platform/runtime_enabled_features.h" + #include "ui/display/display.h" + #include "ui/display/screen.h" + #include "url/origin.h" +@@ -516,7 +517,8 @@ void AddPrefersReducedTransparencyHeader(net::HttpRequestHeaders* headers, : network::kPrefersReducedTransparencyNoPreference); } @@ -48,10 +59,37 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie return network::IsOriginPotentiallyTrustworthy(origin); } +@@ -718,7 +720,8 @@ void UpdateNavigationRequestClientUaHeadersImpl( + // value, disable them. This overwrites previous decision from UI. + disable_due_to_custom_ua = !ua_metadata.has_value(); + } +- ++ if (!blink::RuntimeEnabledFeatures::UserAgentClientHintEnabled()) ++ disable_due_to_custom_ua = true; + if (!disable_due_to_custom_ua) { + if (!ua_metadata.has_value()) + ua_metadata = delegate->GetUserAgentMetadata(); +@@ -900,10 +903,12 @@ void AddRequestClientHintsHeaders( + AddEctHeader(headers, network_quality_tracker, url); + } + +- UpdateNavigationRequestClientUaHeadersImpl( +- delegate, is_ua_override_on, frame_tree_node, +- ClientUaHeaderCallType::kDuringCreation, headers, container_policy, +- request_url, data); ++ if (blink::RuntimeEnabledFeatures::UserAgentClientHintEnabled()) { ++ UpdateNavigationRequestClientUaHeadersImpl( ++ delegate, is_ua_override_on, frame_tree_node, ++ ClientUaHeaderCallType::kDuringCreation, headers, container_policy, ++ request_url, data); ++ } + + if (ShouldAddClientHint(data, WebClientHintsType::kPrefersColorScheme)) { + AddPrefersColorSchemeHeader(headers, frame_tree_node); diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc --- a/content/browser/loader/navigation_url_loader_impl.cc +++ b/content/browser/loader/navigation_url_loader_impl.cc -@@ -1064,6 +1064,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( +@@ -1091,6 +1091,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( return; } @@ -91,12 +129,12 @@ diff --git a/services/network/public/cpp/client_hints.cc b/services/network/publ +++ b/services/network/public/cpp/client_hints.cc @@ -120,6 +120,7 @@ const DecodeMap& GetDecodeMap() { - absl::optional> + std::optional> ParseClientHintsHeader(const std::string& header) { + if ((true)) return absl::nullopt; // Accept-CH is an sh-list of tokens; see: // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-header-structure-19#section-3.1 - absl::optional maybe_list = + std::optional maybe_list = diff --git a/third_party/blink/common/client_hints/client_hints.cc b/third_party/blink/common/client_hints/client_hints.cc --- a/third_party/blink/common/client_hints/client_hints.cc +++ b/third_party/blink/common/client_hints/client_hints.cc @@ -119,7 +157,7 @@ diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/thi switch (type) { case WebClientHintsType::kUA: case WebClientHintsType::kUAArch: -@@ -99,7 +100,7 @@ bool IsDisabledByFeature(const WebClientHintsType type) { +@@ -96,7 +97,7 @@ bool IsDisabledByFeature(const WebClientHintsType type) { } // namespace bool EnabledClientHints::IsEnabled(const WebClientHintsType type) const { @@ -128,7 +166,7 @@ diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/thi } void EnabledClientHints::SetIsEnabled(const WebClientHintsType type, -@@ -110,6 +111,7 @@ void EnabledClientHints::SetIsEnabled(const WebClientHintsType type, +@@ -107,6 +108,7 @@ void EnabledClientHints::SetIsEnabled(const WebClientHintsType type, std::vector EnabledClientHints::GetEnabledHints() const { std::vector hints; @@ -136,18 +174,76 @@ diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/thi for (const auto& elem : network::GetClientHintToNameMap()) { const auto& type = elem.first; if (IsEnabled(type)) +diff --git a/third_party/blink/renderer/core/frame/navigator_ua.idl b/third_party/blink/renderer/core/frame/navigator_ua.idl +--- a/third_party/blink/renderer/core/frame/navigator_ua.idl ++++ b/third_party/blink/renderer/core/frame/navigator_ua.idl +@@ -4,6 +4,8 @@ + + // https://github.com/WICG/ua-client-hints + +-interface mixin NavigatorUA { ++[ ++ RuntimeEnabled=UserAgentClientHint ++] interface mixin NavigatorUA { + [SecureContext] readonly attribute NavigatorUAData userAgentData; + }; +diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.idl b/third_party/blink/renderer/core/frame/navigator_ua_data.idl +--- a/third_party/blink/renderer/core/frame/navigator_ua_data.idl ++++ b/third_party/blink/renderer/core/frame/navigator_ua_data.idl +@@ -4,7 +4,10 @@ + + // https://github.com/WICG/ua-client-hints + +-[Exposed=(Window,Worker)] interface NavigatorUAData { ++[ ++ RuntimeEnabled=UserAgentClientHint, ++ Exposed=(Window,Worker) ++] interface NavigatorUAData { + [HighEntropy, MeasureAs=NavigatorUAData_Brands] readonly attribute FrozenArray brands; + [HighEntropy=Direct, MeasureAs=NavigatorUAData_Mobile] readonly attribute boolean mobile; + [HighEntropy=Direct, MeasureAs=NavigatorUAData_Platform] readonly attribute DOMString platform; +diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.cc b/third_party/blink/renderer/core/loader/base_fetch_context.cc +--- a/third_party/blink/renderer/core/loader/base_fetch_context.cc ++++ b/third_party/blink/renderer/core/loader/base_fetch_context.cc +@@ -167,7 +167,7 @@ void BaseFetchContext::AddClientHintsIfNecessary( + // specifying accomponying client hints, in which case we disable sending + // them. + using network::mojom::blink::WebClientHintsType; +- if (ua) { ++ if (RuntimeEnabledFeatures::UserAgentClientHintEnabled() && ua) { + // ShouldSendClientHint is called to make sure UA is controlled by + // Permissions Policy. + if (ShouldSendClientHint(policy, resource_origin, is_1p_origin, +@@ -329,7 +329,7 @@ void BaseFetchContext::AddClientHintsIfNecessary( + } + + // Only send User Agent hints if the info is available +- if (ua) { ++ if (RuntimeEnabledFeatures::UserAgentClientHintEnabled() && ua) { + if (ShouldSendClientHint(policy, resource_origin, is_1p_origin, + WebClientHintsType::kUAArch, hints_preferences)) { + SetHttpHeader(WebClientHintsType::kUAArch, +@@ -652,6 +652,8 @@ bool BaseFetchContext::ShouldSendClientHint( + bool is_1p_origin, + network::mojom::blink::WebClientHintsType type, + const ClientHintsPreferences& hints_preferences) const { ++ if (!RuntimeEnabledFeatures::UserAgentClientHintEnabled()) ++ return false; + // For subresource requests, sending the hint in the fetch request based on + // the permissions policy. + if ((!policy || diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -3903,8 +3903,8 @@ - public: true, +@@ -499,6 +499,10 @@ + name: "ByobFetch", + status: "stable", }, - { -- name: "UserAgentClientHint", -- status: "stable", ++ { + name: "UserAgentClientHint", // always disabled + status: "experimental", // in bromite - }, ++ }, { - // https://chromestatus.com/feature/5132477781245952 + name: "CacheStorageCodeCacheHint", + origin_trial_feature_name: "CacheStorageCodeCacheHint", -- diff --git a/build/cromite_patches/Content-settings-infrastructure.patch b/build/cromite_patches/Content-settings-infrastructure.patch index f8a8826ac18cf5d069daf327bef747400c55b902..c49add3ee32566fe63c17ec3fd0b0b4ff036b49c 100644 --- a/build/cromite_patches/Content-settings-infrastructure.patch +++ b/build/cromite_patches/Content-settings-infrastructure.patch @@ -27,11 +27,12 @@ Require: bromite-build-utils.patch .../site_settings_page_util.ts | 55 +++ chrome/browser/ui/BUILD.gn | 1 + .../controls/rich_controls_container_view.h | 7 + - .../ui/views/page_info/page_info_main_view.cc | 27 +- + .../ui/views/page_info/page_info_main_view.cc | 28 +- .../views/page_info/page_info_view_factory.cc | 19 + .../views/page_info/page_info_view_factory.h | 3 + .../page_info/permission_toggle_row_view.cc | 163 ++++++- .../page_info/permission_toggle_row_view.h | 18 +- + .../privacy_sandbox_internals_handler.cc | 2 +- .../settings_localized_strings_provider.cc | 54 +++ .../ui/webui/settings/site_settings_helper.cc | 34 +- .../browser_ui/settings/android/BUILD.gn | 1 + @@ -42,10 +43,10 @@ Require: bromite-build-utils.patch .../BromiteCustomContentSetting.java | 155 +++++++ .../BromiteCustomContentSettingImpl.java | 409 ++++++++++++++++++ ...tomTriStateSiteSettingsPreferenceImpl.java | 24 + - .../ContentSettingsResources.java | 14 +- + .../ContentSettingsResources.java | 16 +- .../site_settings/SingleCategorySettings.java | 50 ++- .../site_settings/SingleWebsiteSettings.java | 58 ++- - .../site_settings/SiteSettings.java | 14 +- + .../site_settings/SiteSettings.java | 31 +- .../site_settings/SiteSettingsCategory.java | 18 +- .../site_settings/SiteSettingsDelegate.java | 2 + .../TriStateSiteSettingsPreference.java | 13 +- @@ -72,7 +73,7 @@ Require: bromite-build-utils.patch .../common/content_settings_mojom_traits.cc | 12 +- .../common/content_settings_mojom_traits.h | 24 + .../common/content_settings_param_traits.h | 2 +- - .../core/common/content_settings_types.h | 4 +- + .../core/common/content_settings_types.mojom | 4 +- .../renderer/content_settings_agent_impl.cc | 33 ++ .../renderer/content_settings_agent_impl.h | 5 + .../PageInfoPermissionsController.java | 9 + @@ -84,7 +85,7 @@ Require: bromite-build-utils.patch .../platform/web_content_settings_client.h | 5 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - 73 files changed, 1821 insertions(+), 76 deletions(-) + 74 files changed, 1833 insertions(+), 86 deletions(-) create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java @@ -109,7 +110,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C /** A SiteSettingsDelegate instance that contains Chrome-specific Site Settings logic. */ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { public static final String EMBEDDED_CONTENT_HELP_CENTER_URL = -@@ -202,7 +206,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -199,7 +203,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { @Override public boolean isHelpAndFeedbackEnabled() { @@ -118,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C } @Override -@@ -315,6 +319,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -312,6 +316,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { return PrivacySandboxBridge.getFirstPartySetOwner(memberOrigin); } @@ -151,7 +152,7 @@ diff --git a/chrome/browser/installable/installed_webapp_bridge.cc b/chrome/brow diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1326,4 +1326,5 @@ +@@ -1369,4 +1369,5 @@ @@ -160,7 +161,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts --- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts -@@ -47,6 +47,7 @@ import {SiteSettingsPrefsBrowserProxy, SiteSettingsPrefsBrowserProxyImpl} from ' +@@ -51,6 +51,7 @@ import {SiteSettingsPrefsBrowserProxyImpl} from '../site_settings/site_settings_ import {PrivacyGuideAvailabilityMixin} from './privacy_guide/privacy_guide_availability_mixin.js'; import {getTemplate} from './privacy_page.html.js'; @@ -168,7 +169,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch interface BlockAutoplayStatus { enabled: boolean; -@@ -70,8 +71,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -74,8 +75,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { return 'settings-privacy-page'; } @@ -255,15 +256,15 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts --- a/chrome/browser/resources/settings/route.ts +++ b/chrome/browser/resources/settings/route.ts -@@ -7,6 +7,7 @@ import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; - +@@ -8,6 +8,7 @@ import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; import {pageVisibility} from './page_visibility.js'; - import {Route, Router, SettingsRoutes} from './router.js'; + import type {SettingsRoutes} from './router.js'; + import {Route, Router} from './router.js'; +import {setupContentSettingsRoutes} from './site_settings_page/site_settings_page_util.js' /** * Add all of the child routes that originate from the privacy route, -@@ -136,6 +137,7 @@ function addPrivacyChildRoutes(r: Partial) { +@@ -141,6 +142,7 @@ function addPrivacyChildRoutes(r: Partial) { r.SITE_SETTINGS_STORAGE_ACCESS = r.SITE_SETTINGS.createChild('storageAccess'); } @@ -295,7 +296,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts --- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts +++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -@@ -29,6 +29,7 @@ import {ContentSettingProvider, DefaultContentSetting} from './site_settings_pre +@@ -30,6 +30,7 @@ import {ContentSettingProvider} from './site_settings_prefs_browser_proxy.js'; export enum SiteContentRadioSetting { DISABLED = 0, ENABLED = 1, @@ -303,7 +304,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d } export interface SettingsCategoryDefaultRadioGroupElement { -@@ -76,6 +77,10 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -77,6 +78,10 @@ export class SettingsCategoryDefaultRadioGroupElement extends blockOptionSubLabel: String, blockOptionIcon: String, @@ -314,7 +315,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d siteContentRadioSettingEnum_: { type: Object, value: SiteContentRadioSetting, -@@ -111,6 +116,9 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -112,6 +117,9 @@ export class SettingsCategoryDefaultRadioGroupElement extends blockOptionLabel: string; blockOptionSubLabel: string; blockOptionIcon: string; @@ -324,7 +325,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d private pref_: chrome.settingsPrivate.PrefObject; override ready() { -@@ -121,6 +129,13 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -122,6 +130,13 @@ export class SettingsCategoryDefaultRadioGroupElement extends (category: ContentSettingsTypes) => this.onCategoryChanged_(category)); } @@ -338,7 +339,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d private getAllowOptionForCategory_(): ContentSetting { switch (this.category) { case ContentSettingsTypes.ADS: -@@ -161,6 +176,8 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -163,6 +178,8 @@ export class SettingsCategoryDefaultRadioGroupElement extends // "Ask" vs "Blocked". return ContentSetting.ASK; default: @@ -347,7 +348,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d assertNotReached('Invalid category: ' + this.category); } } -@@ -185,6 +202,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -187,6 +204,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends /** @type {!ContentSetting} */ (this.getAllowOptionForCategory_()); this.browserProxy.setDefaultValueForContentType( this.category, @@ -355,7 +356,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d this.categoryEnabled_ ? allowOption : ContentSetting.BLOCK); } -@@ -216,7 +234,9 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -218,7 +236,9 @@ export class SettingsCategoryDefaultRadioGroupElement extends } const enabled = this.computeIsSettingEnabled(update.setting); @@ -369,7 +370,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html --- a/chrome/browser/resources/settings/site_settings/site_details.html +++ b/chrome/browser/resources/settings/site_settings/site_details.html -@@ -279,4 +279,5 @@ +@@ -282,4 +282,5 @@ label="$i18n{siteSettingsAutoPictureInPicture}"> @@ -378,7 +379,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b diff --git a/chrome/browser/resources/settings/site_settings/site_details.ts b/chrome/browser/resources/settings/site_settings/site_details.ts --- a/chrome/browser/resources/settings/site_settings/site_details.ts +++ b/chrome/browser/resources/settings/site_settings/site_details.ts -@@ -60,8 +60,39 @@ export class SiteDetailsElement extends SiteDetailsElementBase { +@@ -62,8 +62,39 @@ export class SiteDetailsElement extends SiteDetailsElementBase { return 'site-details'; } @@ -537,15 +538,15 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_details_permis diff --git a/chrome/browser/resources/settings/site_settings/site_settings_mixin.ts b/chrome/browser/resources/settings/site_settings/site_settings_mixin.ts --- a/chrome/browser/resources/settings/site_settings/site_settings_mixin.ts +++ b/chrome/browser/resources/settings/site_settings/site_settings_mixin.ts -@@ -11,6 +11,7 @@ import {dedupingMixin, PolymerElement} from 'chrome://resources/polymer/v3_0/pol - - import {ContentSetting,ContentSettingsTypes, SiteSettingSource} from './constants.js'; - import {RawSiteException,SiteException,SiteSettingsPrefsBrowserProxy,SiteSettingsPrefsBrowserProxyImpl} from './site_settings_prefs_browser_proxy.js'; +@@ -14,6 +14,7 @@ import type {ContentSettingsTypes} from './constants.js'; + import {ContentSetting, SiteSettingSource} from './constants.js'; + import type {RawSiteException,SiteException,SiteSettingsPrefsBrowserProxy} from './site_settings_prefs_browser_proxy.js'; + import {SiteSettingsPrefsBrowserProxyImpl} from './site_settings_prefs_browser_proxy.js'; +import {loadTimeData} from '../i18n_setup.js'; // clang-format on type Constructor = new (...args: any[]) => T; -@@ -91,6 +92,21 @@ export const SiteSettingsMixin = dedupingMixin( +@@ -94,6 +95,21 @@ export const SiteSettingsMixin = dedupingMixin( return setting !== ContentSetting.BLOCK; } @@ -567,7 +568,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_settings_mixin /** * Converts a string origin/pattern to a URL. * @param originOrPattern The origin/pattern to convert to URL. -@@ -171,6 +187,8 @@ export interface SiteSettingsMixinInterface { +@@ -174,6 +190,8 @@ export interface SiteSettingsMixinInterface { browserProxy: SiteSettingsPrefsBrowserProxy; category: ContentSettingsTypes; computeIsSettingEnabled(setting: string): boolean; @@ -579,7 +580,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_settings_mixin diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts --- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts +++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -@@ -45,7 +45,7 @@ function getCategoryItemMap(): Map { +@@ -47,7 +47,7 @@ function getCategoryItemMap(): Map { } // The following list is ordered alphabetically by |id|. The order in which // these appear in the UI is determined elsewhere in this file. @@ -588,7 +589,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ { route: routes.SITE_SETTINGS_ADS, id: Id.ADS, -@@ -371,10 +371,36 @@ function getCategoryItemMap(): Map { +@@ -391,10 +391,36 @@ function getCategoryItemMap(): Map { disabledLabel: 'trackingProtectionLinkRowSubLabel', }); } @@ -625,7 +626,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ function buildItemListFromIds(orderedIdList: ContentSettingsTypes[]): CategoryListItem[] { const map = getCategoryItemMap(); -@@ -465,7 +491,7 @@ export class SettingsSiteSettingsPageElement extends +@@ -486,7 +512,7 @@ export class SettingsSiteSettingsPageElement extends Id.IMAGES, Id.POPUPS, ]), @@ -692,7 +693,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ /** * Determine localization string for i18n for a given content settings type. * Sorted alphabetically by |ContentSettingsType|. -@@ -90,6 +138,13 @@ export function getLocalizationStringForContentType( +@@ -92,6 +140,13 @@ export function getLocalizationStringForContentType( case ContentSettingsTypes.SITE_DATA: return null; default: @@ -709,8 +710,8 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -2047,6 +2047,7 @@ static_library("ui") { - "//components/commerce/core/mojom:mojo_bindings", +@@ -2043,6 +2043,7 @@ static_library("ui") { + "//components/commerce/core:shopping_service", "//components/commerce/core/webui", "//components/endpoint_fetcher:endpoint_fetcher", + "//components/content_settings/core/browser:browser", @@ -720,7 +721,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn diff --git a/chrome/browser/ui/views/controls/rich_controls_container_view.h b/chrome/browser/ui/views/controls/rich_controls_container_view.h --- a/chrome/browser/ui/views/controls/rich_controls_container_view.h +++ b/chrome/browser/ui/views/controls/rich_controls_container_view.h -@@ -42,6 +42,13 @@ class RichControlsContainerView : public views::FlexLayoutView { +@@ -43,6 +43,13 @@ class RichControlsContainerView : public views::FlexLayoutView { return AddChildView(std::move(control_view)); } @@ -737,7 +738,7 @@ diff --git a/chrome/browser/ui/views/controls/rich_controls_container_view.h b/c diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/browser/ui/views/page_info/page_info_main_view.cc --- a/chrome/browser/ui/views/page_info/page_info_main_view.cc +++ b/chrome/browser/ui/views/page_info/page_info_main_view.cc -@@ -49,6 +49,7 @@ +@@ -50,6 +50,7 @@ #include "ui/views/controls/separator.h" #include "ui/views/layout/box_layout.h" #include "ui/views/layout/flex_layout.h" @@ -745,7 +746,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b #include "ui/views/view_class_properties.h" #if BUILDFLAG(FULL_SAFE_BROWSING) -@@ -243,8 +244,20 @@ void PageInfoMainView::SetPermissionInfo( +@@ -244,8 +245,20 @@ void PageInfoMainView::SetPermissionInfo( scroll_view->SetDrawOverflowIndicator(false); auto* content_view = scroll_view->SetContents(std::make_unique()); @@ -768,7 +769,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b content_view->SetID(PageInfoViewFactory::VIEW_ID_PAGE_INFO_PERMISSION_VIEW); content_view->SetProperty(views::kElementIdentifierKey, kPermissionsElementId); -@@ -259,17 +272,24 @@ void PageInfoMainView::SetPermissionInfo( +@@ -260,17 +273,24 @@ void PageInfoMainView::SetPermissionInfo( } } @@ -793,10 +794,11 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b // The view takes ownership of the object info. auto object_view = std::make_unique( std::move(object), -@@ -280,6 +300,9 @@ void PageInfoMainView::SetPermissionInfo( +@@ -281,6 +301,10 @@ void PageInfoMainView::SetPermissionInfo( content_view->AddChildView(std::move(object_view))); } ++ table_layout->AddRows(/*n=*/1, views::TableLayout::kFixedSize); + if (++count % 2 == 0) + content_view->AddChildView(std::make_unique()); + @@ -815,7 +817,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom #include "components/page_info/core/features.h" #include "components/page_info/core/proto/about_this_site_metadata.pb.h" #include "components/page_info/page_info.h" -@@ -253,7 +255,13 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -254,7 +256,13 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( ContentSetting setting = info.setting == CONTENT_SETTING_DEFAULT ? info.default_setting : info.setting; @@ -829,8 +831,8 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom // For guard content settings and Automatic Picture-in-Picture, ASK is treated // as an "on" state. const bool show_blocked_badge = -@@ -507,6 +515,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( - icon = &vector_icons::kPictureInPictureIcon; +@@ -509,6 +517,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( + icon = &kFullscreenIcon; break; default: + bool found = false; @@ -1101,10 +1103,10 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.h b/ch -class PermissionToggleRowView : public views::View { +class PermissionToggleRowView : public views::View, + public ui::SimpleMenuModel::Delegate { + METADATA_HEADER(PermissionToggleRowView, views::View) + public: - METADATA_HEADER(PermissionToggleRowView); - PermissionToggleRowView(ChromePageInfoUiDelegate* delegate, -@@ -52,6 +58,12 @@ class PermissionToggleRowView : public views::View { +@@ -55,6 +61,12 @@ class PermissionToggleRowView : public views::View { private: friend class test::PageInfoBubbleViewTestApi; @@ -1117,7 +1119,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.h b/ch void OnToggleButtonPressed(); void InitForUserSource(bool should_show_spacer_view, const std::u16string& toggle_accessible_name); -@@ -65,6 +77,10 @@ class PermissionToggleRowView : public views::View { +@@ -68,6 +80,10 @@ class PermissionToggleRowView : public views::View { raw_ptr toggle_button_ = nullptr; raw_ptr spacer_view_ = nullptr; @@ -1128,6 +1130,18 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.h b/ch raw_ptr delegate_ = nullptr; raw_ptr navigation_handler_ = nullptr; +diff --git a/chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_internals_handler.cc b/chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_internals_handler.cc +--- a/chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_internals_handler.cc ++++ b/chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_internals_handler.cc +@@ -41,7 +41,7 @@ void PrivacySandboxInternalsHandler::ReadPref(const std::string& pref_name, + void PrivacySandboxInternalsHandler::ReadContentSettings( + const ContentSettingsType type, + ReadContentSettingsCallback callback) { +- if (!IsKnownEnumValue(type) || type == ContentSettingsType::NUM_TYPES) { ++ if (!IsKnownEnumValue(type) || type == ContentSettingsType::NUM_TYPES_BROMITE) { + mojo::ReportBadMessage( + "ReadContentSettings received invalid ContentSettingsType"); + return; diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc @@ -1149,7 +1163,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide #include "components/password_manager/core/browser/leak_detection_dialog_utils.h" #include "components/password_manager/core/browser/manage_passwords_referrer.h" #include "components/password_manager/core/common/password_manager_features.h" -@@ -3628,6 +3632,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -3789,6 +3793,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, policy_indicator::AddLocalizedStrings(html_source); AddSecurityKeysStrings(html_source); @@ -1218,7 +1232,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_pattern.h" #include "components/content_settings/core/common/content_settings_utils.h" -@@ -209,7 +211,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { +@@ -219,7 +221,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { static_assert(std::size(kContentSettingsTypeGroupNames) == // ContentSettingsType starts at -1, so add 1 here. @@ -1227,7 +1241,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b "kContentSettingsTypeGroupNames should have " "CONTENT_SETTINGS_NUM_TYPES elements"); -@@ -462,6 +464,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { +@@ -471,6 +473,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { return true; } } @@ -1241,7 +1255,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b return false; } -@@ -475,11 +484,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(base::StringPiece name) { +@@ -484,11 +493,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(base::StringPiece name) { return entry.type; } } @@ -1267,7 +1281,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b for (const auto& entry : kContentSettingsTypeGroupNames) { if (type == entry.type) { // Content setting types that aren't represented in the settings UI -@@ -494,7 +516,6 @@ base::StringPiece ContentSettingsTypeToGroupName(ContentSettingsType type) { +@@ -503,7 +525,6 @@ base::StringPiece ContentSettingsTypeToGroupName(ContentSettingsType type) { return entry.name ? entry.name : base::StringPiece(); } } @@ -1275,8 +1289,8 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b NOTREACHED() << static_cast(type) << " is not a recognized content settings type."; return base::StringPiece(); -@@ -574,6 +595,13 @@ const std::vector& GetVisiblePermissionCategories() { - base_types->push_back(ContentSettingsType::MIDI_SYSEX); +@@ -587,6 +608,13 @@ const std::vector& GetVisiblePermissionCategories() { + base_types->push_back(ContentSettingsType::SPEAKER_SELECTION); } + content_settings::WebsiteSettingsRegistry* website_settings = @@ -1455,7 +1469,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -149,6 +149,23 @@ android_library("java") { +@@ -141,6 +141,23 @@ android_library("java") { ":site_settings_jni_headers", "//components/content_settings/android:java_pref_names_srcjar", ] @@ -1479,7 +1493,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b } android_library("javatests") { -@@ -194,6 +211,7 @@ robolectric_library("junit") { +@@ -186,6 +203,7 @@ robolectric_library("junit") { } android_resources("java_resources") { @@ -1549,7 +1563,7 @@ new file mode 100644 + +public abstract class BromiteCustomContentSetting { + -+ private @ContentSettingsType int mContentSettingsType; ++ private @ContentSettingsType.EnumType int mContentSettingsType; + private @SiteSettingsCategory.Type int mSiteSettingsCategory; + private @ContentSettingValues Integer mDefaultEnabledValue; + private @ContentSettingValues Integer mDefaultDisabledValue; @@ -1557,7 +1571,7 @@ new file mode 100644 + private String mPreferenceKey; + private String mProfilePrefKey; + -+ public BromiteCustomContentSetting(@ContentSettingsType int contentSettingsType, ++ public BromiteCustomContentSetting(@ContentSettingsType.EnumType int contentSettingsType, + @ContentSettingValues Integer defaultEnabledValue, + @ContentSettingValues Integer defaultDisabledValue, + boolean allowException, @@ -1571,7 +1585,7 @@ new file mode 100644 + mProfilePrefKey = profilePrefKey; + } + -+ public @ContentSettingsType int getContentSetting() { ++ public @ContentSettingsType.EnumType int getContentSetting() { + return mContentSettingsType; + } + @@ -1636,7 +1650,7 @@ new file mode 100644 + + public abstract @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value); + -+ public ContentSettingException createCustomException(@ContentSettingsType int type, ++ public ContentSettingException createCustomException(@ContentSettingsType.EnumType int type, + @ContentSettingValues int value, + WebsiteAddress websiteAddress) { + return null; @@ -1753,7 +1767,7 @@ new file mode 100644 + return BromiteCustomContentSettingImplBase.NUM_ENTRIES(); + } + -+ public static BromiteCustomContentSetting getContentSetting(@ContentSettingsType int type) { ++ public static BromiteCustomContentSetting getContentSetting(@ContentSettingsType.EnumType int type) { + for (BromiteCustomContentSetting cs : mItemList) { + if (type == cs.getContentSetting()) { + return cs; @@ -1763,7 +1777,7 @@ new file mode 100644 + } + + public static Preference createWebSitePreference( -+ @ContentSettingsType int type, ++ @ContentSettingsType.EnumType int type, + Context context, + @ContentSettingValues @Nullable Integer value) { + BromiteCustomContentSetting cs = getContentSetting(type); @@ -1808,7 +1822,7 @@ new file mode 100644 + } + + public static void setWebSitePreferenceValue( -+ @ContentSettingsType int type, ++ @ContentSettingsType.EnumType int type, + Preference preference, + @ContentSettingValues @Nullable Integer value) { + BromiteCustomContentSetting cs = getContentSetting(type); @@ -1826,7 +1840,7 @@ new file mode 100644 + } + + public static Integer getWebSitePreferenceValue( -+ @ContentSettingsType int type, ++ @ContentSettingsType.EnumType int type, + Object newValue) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) { @@ -1850,13 +1864,13 @@ new file mode 100644 + return null; + } + -+ public static String getProfilePrefKey(@ContentSettingsType int type) { ++ public static String getProfilePrefKey(@ContentSettingsType.EnumType int type) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.getProfilePrefKey(); + return null; + } + -+ public static @ContentSettingsType int contentSettingsType(@SiteSettingsCategory.Type int type) { ++ public static @ContentSettingsType.EnumType int contentSettingsType(@SiteSettingsCategory.Type int type) { + for (BromiteCustomContentSetting cs : mItemList) { + if (type == cs.getSiteSettingsCategory()) { + return cs.getContentSetting(); @@ -1867,31 +1881,31 @@ new file mode 100644 + } + + public static WebsitePermissionsFetcher.WebsitePermissionsType getPermissionsType( -+ @ContentSettingsType int type) { ++ @ContentSettingsType.EnumType int type) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.getPermissionsType(); + return null; + } + -+ public static ContentSettingsResources.ResourceItem getResourceItem(@ContentSettingsType int type) { ++ public static ContentSettingsResources.ResourceItem getResourceItem(@ContentSettingsType.EnumType int type) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.getResourceItem(); + return null; + } + -+ public static int getCategorySummary(@ContentSettingsType int type, @Nullable @ContentSettingValues int value) { ++ public static int getCategorySummary(@ContentSettingsType.EnumType int type, @Nullable @ContentSettingValues int value) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.getCategorySummary(value); + return 0; + } + -+ public static boolean requiresTriStateContentSetting(@ContentSettingsType int type) { ++ public static boolean requiresTriStateContentSetting(@ContentSettingsType.EnumType int type) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.requiresTriStateContentSetting(); + return false; + } + -+ public static int[] getTriStateSettingDescriptionIDs(@ContentSettingsType int type) { ++ public static int[] getTriStateSettingDescriptionIDs(@ContentSettingsType.EnumType int type) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.getTriStateSettingDescriptionIDs(); + return null; @@ -1927,13 +1941,13 @@ new file mode 100644 + return false; + } + -+ public static boolean processOnBlockList(@ContentSettingsType int type, @ContentSettingValues Integer value) { ++ public static boolean processOnBlockList(@ContentSettingsType.EnumType int type, @ContentSettingValues Integer value) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.processOnBlockList(value); + return false; + } + -+ public static boolean isOnBlockList(@ContentSettingsType int type, ++ public static boolean isOnBlockList(@ContentSettingsType.EnumType int type, + WebsitePreference website, + @ContentSettingValues Integer contentSetting) { + BromiteCustomContentSetting cs = getContentSetting(type); @@ -2023,7 +2037,7 @@ new file mode 100644 + return ""; + } + -+ public static ContentSettingException createCustomException(@ContentSettingsType int type, ++ public static ContentSettingException createCustomException(@ContentSettingsType.EnumType int type, + @ContentSettingValues int value, + WebsiteAddress websiteAddress) { + BromiteCustomContentSetting cs = getContentSetting(type); @@ -2039,7 +2053,7 @@ new file mode 100644 + return null; + } + -+ public static AlertDialog.Builder buildPreferenceDialog(Website site, @ContentSettingsType int type, ++ public static AlertDialog.Builder buildPreferenceDialog(Website site, @ContentSettingsType.EnumType int type, + BrowserContextHandle browserContextHandle, + Context context, + final DialogInterface.OnClickListener listener) { @@ -2133,7 +2147,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c int icon, int title, @ContentSettingValues @Nullable Integer defaultEnabledValue, -@@ -437,6 +437,8 @@ public class ContentSettingsResources { +@@ -427,6 +427,8 @@ public class ContentSettingsResources { R.string.website_settings_category_vr_blocked, R.string.website_settings_category_vr_a11y); } @@ -2142,20 +2156,22 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert false; // NOTREACHED return null; } -@@ -617,6 +619,12 @@ public class ContentSettingsResources { - } +@@ -590,6 +592,14 @@ public class ContentSettingsResources { + return getResourceItem(contentType, null).getDefaultDisabledValue(); } -+ public static int getCategorySummary(int contentType, @Nullable @ContentSettingValues int value) { ++ public static int getCategorySummary(int contentType, ++ @Nullable @ContentSettingValues int value, ++ boolean isOneTime) { + int result = BromiteCustomContentSettingImpl.getCategorySummary(contentType, value); + if (result != 0) return result; -+ return getCategorySummary(value); ++ return getCategorySummary(value, isOneTime); + } + /** - * Returns the string resource id for a content type to show with a permission category. - * @param enabled Whether the content type is enabled. -@@ -769,6 +777,8 @@ public class ContentSettingsResources { + * Returns the string resource id for a given ContentSetting to show with a permission category. + * +@@ -752,6 +762,8 @@ public class ContentSettingsResources { * Blocked states, in that order. */ public static int[] getTriStateSettingDescriptionIDs(int contentType) { @@ -2167,7 +2183,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java -@@ -337,6 +337,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -329,6 +329,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment website.site() .getContentSetting( browserContextHandle, mCategory.getContentSettingsType()); @@ -2178,7 +2194,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (contentSetting != null) { return ContentSettingValues.BLOCK == contentSetting; } -@@ -501,6 +505,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -493,6 +497,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment ? new HashSet<>(getArguments().getStringArrayList(EXTRA_SELECTED_DOMAINS)) : null; @@ -2186,7 +2202,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c configureGlobalToggles(); if (mCategory.getType() == SiteSettingsCategory.Type.REQUEST_DESKTOP_SITE) { RecordUserAction.record("DesktopSiteContentSetting.SettingsPage.Entered"); -@@ -531,7 +536,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -523,7 +528,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment if (queryHasChanged) getInfoForOrigins(); }); @@ -2196,7 +2212,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c MenuItem help = menu.add( Menu.NONE, -@@ -543,12 +549,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -535,12 +541,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getResources(), R.drawable.ic_help_and_feedback, getContext().getTheme())); @@ -2217,7 +2233,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (mCategory.getType() == SiteSettingsCategory.Type.PROTECTED_MEDIA) { getSiteSettingsDelegate() .launchProtectedContentHelpAndFeedbackActivity(getActivity()); -@@ -620,6 +634,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -612,6 +626,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment BrowserContextHandle browserContextHandle = getSiteSettingsDelegate().getBrowserContextHandle(); PrefService prefService = UserPrefs.get(browserContextHandle); @@ -2229,7 +2245,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (BINARY_TOGGLE_KEY.equals(preference.getKey())) { assert !mCategory.isManaged(); boolean toggleValue = (boolean) newValue; -@@ -817,6 +836,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -804,6 +823,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment .website_settings_allowed_group_heading_request_desktop_site; break; } @@ -2238,7 +2254,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert resource > 0; return getString(resource); } -@@ -934,6 +955,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -919,6 +940,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment default: break; } @@ -2247,7 +2263,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (allowSpecifyingExceptions) { getPreferenceScreen() .addPreference( -@@ -1122,8 +1145,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1107,8 +1130,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment private boolean isBlocked() { switch (mGlobalToggleLayout) { case GlobalToggleLayout.TRI_STATE_TOGGLE: @@ -2264,7 +2280,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return (triStateToggle.getCheckedSetting() == ContentSettingValues.BLOCK); case GlobalToggleLayout.TRI_STATE_COOKIE_TOGGLE: TriStateCookieSettingsPreference triStateCookieToggle = -@@ -1190,7 +1221,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1173,7 +1204,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else if (mCategory.getType() == SiteSettingsCategory.Type.STORAGE_ACCESS) { infoText.setSummary(getStorageAccessSummary()); } else { @@ -2277,7 +2293,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // Hide the anti-abuse text preferences, as needed. -@@ -1214,6 +1249,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1197,6 +1232,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment screen.removePreference(antiAbuseThingsToConsiderHeader); screen.removePreference(antiAbuseThingsToConsiderSectionOne); } @@ -2285,7 +2301,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (permissionBlockedByOs) { maybeShowOsWarning(screen); -@@ -1378,7 +1414,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1348,7 +1384,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getSiteSettingsDelegate().getBrowserContextHandle(), contentType); int[] descriptionIds = ContentSettingsResources.getTriStateSettingDescriptionIDs(contentType); @@ -2294,7 +2310,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } private void configureBinaryToggle(ChromeSwitchPreference binaryToggle, int contentType) { -@@ -1517,6 +1553,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1459,6 +1495,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment @ContentSettingValues Integer value = site.getContentSetting(browserContextHandle, contentSettingsType); @@ -2312,7 +2328,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -49,6 +49,7 @@ import java.util.Collection; +@@ -46,6 +46,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -2320,7 +2336,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** Shows the permissions and other settings for a particular website. */ public class SingleWebsiteSettings extends BaseSiteSettingsFragment -@@ -169,7 +170,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -164,7 +165,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment case ContentSettingsType.CLIPBOARD_READ_WRITE: return "clipboard_permission_list"; default: @@ -2329,14 +2345,14 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -544,8 +545,21 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -534,8 +535,21 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment private void setupContentSettingsPreferences() { mMaxPermissionOrder = findPreference(PREF_PERMISSIONS_HEADER).getOrder(); -- for (@ContentSettingsType int type : SiteSettingsUtil.SETTINGS_ORDER) { +- for (@ContentSettingsType.EnumType int type : SiteSettingsUtil.SETTINGS_ORDER) { - Preference preference = new ChromeSwitchPreference(getStyledContext()); + List order = BromiteCustomContentSettingImpl.getSettingsOrder(); -+ for (@ContentSettingsType int type : order) { ++ for (@ContentSettingsType.EnumType int type : order) { + @ContentSettingValues @Nullable Integer value = + mSite.getContentSetting( + getSiteSettingsDelegate().getBrowserContextHandle(), type); @@ -2353,10 +2369,10 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c preference.setKey(getPreferenceKey(type)); if (type == ContentSettingsType.ADS) { -@@ -1085,20 +1099,32 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment - Preference preference, +@@ -1060,20 +1074,32 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment @ContentSettingValues @Nullable Integer value, - boolean isEmbargoed) { + boolean isEmbargoed, + boolean isOneTime) { - if (value == null) return; + int content_type = getContentSettingsTypeFromPreferenceKey(preference.getKey()); + BromiteCustomContentSetting cs = @@ -2380,10 +2396,10 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c switchPreference.setSummary( isEmbargoed ? getString(R.string.automatically_blocked) -- : getString(ContentSettingsResources.getCategorySummary(value))); -+ : getString(ContentSettingsResources.getCategorySummary(content_type, value))); +- : getString(ContentSettingsResources.getCategorySummary(value, isOneTime))); ++ : getString(ContentSettingsResources.getCategorySummary(content_type, value, isOneTime))); switchPreference.setOnPreferenceChangeListener(this); - @ContentSettingsType + @ContentSettingsType.EnumType int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey()); - if (contentType == mHighlightedPermission) { - switchPreference.setBackgroundColor(mHighlightColor); @@ -2392,16 +2408,16 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } if (isSessionPermission(contentType)) { switchPreference.setSummary(switchPreference.getSummary() + " " + -@@ -1256,7 +1282,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment - public @ContentSettingsType int getContentSettingsTypeFromPreferenceKey(String preferenceKey) { +@@ -1250,7 +1276,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment if (mPreferenceMap == null) { mPreferenceMap = new HashMap<>(); -- for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES; type++) { -+ for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES_BROMITE; type++) { + for (@ContentSettingsType.EnumType int type = 0; +- type < ContentSettingsType.NUM_TYPES; ++ type < ContentSettingsType.NUM_TYPES_BROMITE; + type++) { String key = getPreferenceKey(type); if (key != null) { - mPreferenceMap.put(key, type); -@@ -1293,11 +1319,17 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1288,14 +1314,20 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment permission = (Boolean) newValue ? ContentSettingValues.ALLOW : ContentSettingValues.BLOCK; } else { @@ -2416,20 +2432,23 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } mSite.setContentSetting(browserContextHandle, type, permission); -- preference.setSummary(getString(ContentSettingsResources.getCategorySummary(permission))); -+ preference.setSummary(getString(ContentSettingsResources.getCategorySummary(type, permission))); + // In Clank, one time grants are only possible via prompt, not via page + // info. + preference.setSummary( +- getString(ContentSettingsResources.getCategorySummary(permission, false))); ++ getString(ContentSettingsResources.getCategorySummary(type, permission, false))); preference.setIcon(getContentSettingsIcon(type, permission)); if (mWebsiteSettingsObserver != null) { -@@ -1325,7 +1357,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment - // TODO(mvanouwerkerk): Refactor this class so that it does not depend on the screen state +@@ -1324,7 +1356,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment // for its logic. This class should maintain its own data model, and only update the screen // after a change is made. -- for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES; type++) { -+ for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES_BROMITE; type++) { + for (@ContentSettingsType.EnumType int type = 0; +- type < ContentSettingsType.NUM_TYPES; ++ type < ContentSettingsType.NUM_TYPES_BROMITE; + type++) { String key = getPreferenceKey(type); if (key != null) { - removePreferenceSafely(key); diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java @@ -2459,19 +2478,36 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c Preference p = findPreference(prefCategory); int contentType = SiteSettingsCategory.contentSettingsType(prefCategory); // p can be null if the Preference was removed in configurePreferences. -@@ -139,10 +140,13 @@ public class SiteSettings extends BaseSiteSettingsFragment +@@ -142,19 +143,21 @@ public class SiteSettings extends BaseSiteSettingsFragment } else if (Type.ZOOM == prefCategory) { // Don't want to set a summary for Zoom because we don't want any message to display // under the Zoom row on site settings. - } else if (requiresTriStateSetting) { -- p.setSummary(ContentSettingsResources.getCategorySummary(setting)); +- p.setSummary( +- ContentSettingsResources.getCategorySummary( +- setting, /* isOneTime= */ false)); } else { -- p.setSummary(ContentSettingsResources.getCategorySummary(contentType, checked)); -+ int summary = ContentSettingsResources.getCategorySummary(contentType, setting); +- @ContentSettingValues +- int defaultForToggle = +- checked +- ? ContentSettingsResources.getDefaultEnabledValue(contentType) +- : ContentSettingsResources.getDefaultDisabledValue(contentType); +- p.setSummary( +- ContentSettingsResources.getCategorySummary( +- defaultForToggle, /* isOneTime= */ false)); ++ int summary = ContentSettingsResources.getCategorySummary( ++ contentType, setting, /* isOneTime= */ false); + if (summary != 0) { + p.setSummary(summary); + } else { -+ p.setSummary(ContentSettingsResources.getCategorySummary(contentType, checked)); ++ @ContentSettingValues ++ int defaultForToggle = ++ checked ++ ? ContentSettingsResources.getDefaultEnabledValue(contentType) ++ : ContentSettingsResources.getDefaultDisabledValue(contentType); ++ p.setSummary( ++ ContentSettingsResources.getCategorySummary( ++ defaultForToggle, /* isOneTime= */ false)); + } } @@ -2508,7 +2544,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } @@ -162,7 +165,7 @@ public class SiteSettingsCategory { - @ContentSettingsType int contentSettingsType) { + @ContentSettingsType.EnumType int contentSettingsType) { assert contentSettingsType != -1; assert Type.ALL_SITES == 0; - for (@Type int i = Type.ALL_SITES; i < Type.NUM_ENTRIES; i++) { @@ -2551,7 +2587,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java -@@ -152,6 +152,8 @@ public interface SiteSettingsDelegate { +@@ -149,6 +149,8 @@ public interface SiteSettingsDelegate { */ String getFirstPartySetOwner(String memberOrigin); @@ -2575,7 +2611,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c private RadioButtonWithDescription mAsk; private RadioButtonWithDescription mBlocked; private RadioGroup mRadioGroup; -+ private @ContentSettingsType int mContentType; ++ private @ContentSettingsType.EnumType int mContentType; public TriStateSiteSettingsPreference(Context context, AttributeSet attrs) { super(context, attrs); @@ -2584,7 +2620,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c * Allowed, Ask and Blocked states, in that order. */ - public void initialize(@ContentSettingValues int setting, int[] descriptionIds) { -+ public void initialize(@ContentSettingsType int contentType, ++ public void initialize(@ContentSettingsType.EnumType int contentType, + @ContentSettingValues int setting, int[] descriptionIds) { + mContentType = contentType; mSetting = setting; @@ -2623,28 +2659,28 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java -@@ -114,7 +114,7 @@ public class WebsitePermissionsFetcher { - } - return null; +@@ -108,7 +108,7 @@ public class WebsitePermissionsFetcher { + case ContentSettingsType.USB_GUARD: + return WebsitePermissionsType.CHOSEN_OBJECT_INFO; default: - return null; + return BromiteCustomContentSettingImpl.getPermissionsType(contentSettingsType); } } -@@ -228,7 +228,7 @@ public class WebsitePermissionsFetcher { - if (SiteSettingsFeatureMap.isEnabled(SiteSettingsFeatureList.SITE_DATA_IMPROVEMENTS)) { - queue.add(new CookiesInfoFetcher()); - } -- for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES; type++) { -+ for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES_BROMITE; type++) { +@@ -220,7 +220,7 @@ public class WebsitePermissionsFetcher { + addFetcherForStorage(queue); + queue.add(new CookiesInfoFetcher()); + for (@ContentSettingsType.EnumType int type = 0; +- type < ContentSettingsType.NUM_TYPES; ++ type < ContentSettingsType.NUM_TYPES_BROMITE; + type++) { addFetcherForContentSettingsType(queue, type); } - } diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java -@@ -283,7 +283,7 @@ public class WebsitePreferenceBridge { +@@ -291,7 +291,7 @@ public class WebsitePreferenceBridge { case ContentSettingsType.PROTECTED_MEDIA_IDENTIFIER: return true; default: @@ -2653,10 +2689,10 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -299,7 +299,6 @@ public class WebsitePreferenceBridge { +@@ -307,7 +307,6 @@ public class WebsitePreferenceBridge { public static boolean isCategoryEnabled( BrowserContextHandle browserContextHandle, - @ContentSettingsType int contentSettingsType) { + @ContentSettingsType.EnumType int contentSettingsType) { - assert !requiresTriStateContentSetting(contentSettingsType); return isContentSettingEnabled(browserContextHandle, contentSettingsType); } @@ -2729,7 +2765,7 @@ new file mode 100644 diff --git a/components/content_settings/android/BUILD.gn b/components/content_settings/android/BUILD.gn --- a/components/content_settings/android/BUILD.gn +++ b/components/content_settings/android/BUILD.gn -@@ -53,6 +53,7 @@ android_library("content_settings_enums_java") { +@@ -57,6 +57,7 @@ android_library("content_settings_enums_java") { } java_cpp_enum("content_settings_enums_javagen") { @@ -2763,7 +2799,7 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -15,6 +15,7 @@ +@@ -16,6 +16,7 @@ #include "components/content_settings/core/browser/website_settings_registry.h" #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/features.h" @@ -2771,8 +2807,8 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. namespace content_settings { -@@ -654,6 +655,7 @@ void ContentSettingsRegistry::Init() { - WebsiteSettingsRegistry::DESKTOP, +@@ -730,6 +731,7 @@ void ContentSettingsRegistry::Init() { + WebsiteSettingsRegistry::ALL_PLATFORMS, ContentSettingsInfo::INHERIT_IF_LESS_PERMISSIVE, ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +#include "components/content_settings/core/browser/bromite_content_settings.inc" @@ -2782,7 +2818,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/components/content_settings/core/browser/content_settings_uma_util.cc b/components/content_settings/core/browser/content_settings_uma_util.cc --- a/components/content_settings/core/browser/content_settings_uma_util.cc +++ b/components/content_settings/core/browser/content_settings_uma_util.cc -@@ -180,8 +180,9 @@ void RecordContentSettingsHistogram(const std::string& name, +@@ -187,8 +187,9 @@ void RecordContentSettingsHistogram(const std::string& name, } int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting) { @@ -2802,9 +2838,9 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc #include "components/content_settings/core/browser/host_content_settings_map.h" +#include "components/content_settings/core/browser/website_settings_registry.h" #include "components/content_settings/core/common/content_settings.h" + #include "components/content_settings/core/common/content_settings_types.h" #include "components/content_settings/core/common/content_settings_utils.h" - #include "components/content_settings/core/common/features.h" -@@ -121,6 +122,17 @@ PatternPair ParsePatternString(const std::string& pattern_str) { +@@ -122,6 +123,17 @@ PatternPair ParsePatternString(const std::string& pattern_str) { void GetRendererContentSettingRules(const HostContentSettingsMap* map, RendererContentSettingRules* rules) { @@ -2819,13 +2855,13 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc + rules->settings_rules.push_back(rule); + } + } - #if !BUILDFLAG(IS_ANDROID) + #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) rules->image_rules = map->GetSettingsForOneType(ContentSettingsType::IMAGES); rules->mixed_content_rules = diff --git a/components/content_settings/core/browser/website_settings_info.h b/components/content_settings/core/browser/website_settings_info.h --- a/components/content_settings/core/browser/website_settings_info.h +++ b/components/content_settings/core/browser/website_settings_info.h -@@ -132,6 +132,32 @@ class WebsiteSettingsInfo { +@@ -135,6 +135,32 @@ class WebsiteSettingsInfo { ScopingType scoping_type() const { return scoping_type_; } IncognitoBehavior incognito_behavior() const { return incognito_behavior_; } @@ -2858,7 +2894,7 @@ diff --git a/components/content_settings/core/browser/website_settings_info.h b/ private: const ContentSettingsType type_; const std::string name_; -@@ -143,6 +169,18 @@ class WebsiteSettingsInfo { +@@ -147,6 +173,18 @@ class WebsiteSettingsInfo { const LossyStatus lossy_status_; const ScopingType scoping_type_; const IncognitoBehavior incognito_behavior_; @@ -2880,7 +2916,7 @@ diff --git a/components/content_settings/core/browser/website_settings_info.h b/ diff --git a/components/content_settings/core/browser/website_settings_registry.cc b/components/content_settings/core/browser/website_settings_registry.cc --- a/components/content_settings/core/browser/website_settings_registry.cc +++ b/components/content_settings/core/browser/website_settings_registry.cc -@@ -45,6 +45,12 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Get( +@@ -46,6 +46,12 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Get( return nullptr; } @@ -2907,7 +2943,7 @@ diff --git a/components/content_settings/core/browser/website_settings_registry. diff --git a/components/content_settings/core/common/BUILD.gn b/components/content_settings/core/common/BUILD.gn --- a/components/content_settings/core/common/BUILD.gn +++ b/components/content_settings/core/common/BUILD.gn -@@ -52,6 +52,13 @@ static_library("common") { +@@ -57,6 +57,13 @@ static_library("common") { "//net", "//url", ] @@ -2938,7 +2974,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo namespace { -@@ -92,6 +93,13 @@ bool ContentSettingPatternSource::operator==( +@@ -103,6 +104,13 @@ std::ostream& operator<<(std::ostream& os, // static bool RendererContentSettingRules::IsRendererContentSetting( ContentSettingsType content_type) { @@ -2952,7 +2988,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo return content_type == ContentSettingsType::IMAGES || content_type == ContentSettingsType::JAVASCRIPT || content_type == ContentSettingsType::POPUPS || -@@ -101,6 +109,9 @@ bool RendererContentSettingRules::IsRendererContentSetting( +@@ -112,6 +120,9 @@ bool RendererContentSettingRules::IsRendererContentSetting( void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL( const GURL& outermost_main_frame_url) { @@ -2962,7 +2998,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo FilterRulesForType(image_rules, outermost_main_frame_url); FilterRulesForType(script_rules, outermost_main_frame_url); FilterRulesForType(popup_redirect_rules, outermost_main_frame_url); -@@ -132,3 +143,10 @@ bool RendererContentSettingRules::operator==( +@@ -143,3 +154,10 @@ bool RendererContentSettingRules::operator==( other.popup_redirect_rules, other.mixed_content_rules, other.auto_dark_content_rules); } @@ -2976,7 +3012,7 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo diff --git a/components/content_settings/core/common/content_settings.h b/components/content_settings/core/common/content_settings.h --- a/components/content_settings/core/common/content_settings.h +++ b/components/content_settings/core/common/content_settings.h -@@ -66,10 +66,20 @@ struct ContentSettingPatternSource { +@@ -71,10 +71,20 @@ std::ostream& operator<<(std::ostream& os, typedef std::vector ContentSettingsForOneType; @@ -3000,8 +3036,8 @@ diff --git a/components/content_settings/core/common/content_settings.h b/compon diff --git a/components/content_settings/core/common/content_settings.mojom b/components/content_settings/core/common/content_settings.mojom --- a/components/content_settings/core/common/content_settings.mojom +++ b/components/content_settings/core/common/content_settings.mojom -@@ -79,6 +79,11 @@ struct RuleMetaData { - mojo_base.mojom.TimeDelta lifetime; +@@ -78,6 +78,11 @@ struct RuleMetaData { + TpcdMetadataRuleSource tpcd_metadata_rule_source; }; +struct ContentSettingRuleSource { @@ -3012,7 +3048,7 @@ diff --git a/components/content_settings/core/common/content_settings.mojom b/co // This mirrors the C++ type in content_settings.h. struct ContentSettingPatternSource { ContentSettingsPattern primary_pattern; -@@ -92,6 +97,7 @@ struct ContentSettingPatternSource { +@@ -91,6 +96,7 @@ struct ContentSettingPatternSource { // This mirrors the C++ type in content_settings.h. // TODO(https://crbug.com/1485360): This should be removed. struct RendererContentSettingRules { @@ -3023,7 +3059,7 @@ diff --git a/components/content_settings/core/common/content_settings.mojom b/co diff --git a/components/content_settings/core/common/content_settings_mojom_traits.cc b/components/content_settings/core/common/content_settings_mojom_traits.cc --- a/components/content_settings/core/common/content_settings_mojom_traits.cc +++ b/components/content_settings/core/common/content_settings_mojom_traits.cc -@@ -154,12 +154,22 @@ bool StructTraitsmetadata) && data.ReadSource(&out->source); } @@ -3050,7 +3086,7 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai diff --git a/components/content_settings/core/common/content_settings_mojom_traits.h b/components/content_settings/core/common/content_settings_mojom_traits.h --- a/components/content_settings/core/common/content_settings_mojom_traits.h +++ b/components/content_settings/core/common/content_settings_mojom_traits.h -@@ -169,10 +169,34 @@ struct StructTraits< +@@ -174,10 +174,34 @@ struct StructTraits< ContentSettingPatternSource* out); }; @@ -3097,24 +3133,22 @@ diff --git a/components/content_settings/core/common/content_settings_param_trai 1) #endif // COMPONENTS_CONTENT_SETTINGS_CORE_COMMON_CONTENT_SETTINGS_PARAM_TRAITS_H_ -diff --git a/components/content_settings/core/common/content_settings_types.h b/components/content_settings/core/common/content_settings_types.h ---- a/components/content_settings/core/common/content_settings_types.h -+++ b/components/content_settings/core/common/content_settings_types.h -@@ -371,7 +371,9 @@ enum class ContentSettingsType : int32_t { - // shown to the user, for a given origin. - FILE_SYSTEM_ACCESS_RESTORE_PERMISSION, +diff --git a/components/content_settings/core/common/content_settings_types.mojom b/components/content_settings/core/common/content_settings_types.mojom +--- a/components/content_settings/core/common/content_settings_types.mojom ++++ b/components/content_settings/core/common/content_settings_types.mojom +@@ -399,5 +399,7 @@ enum ContentSettingsType { + SPEAKER_SELECTION, + - NUM_TYPES, + NUM_TYPES_CHROMIUM, +#include "components/content_settings/core/common/bromite_content_settings.inc" + NUM_TYPES_BROMITE, }; - - struct ContentSettingsTypeHash { diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc --- a/components/content_settings/renderer/content_settings_agent_impl.cc +++ b/components/content_settings/renderer/content_settings_agent_impl.cc -@@ -202,6 +202,39 @@ void ContentSettingsAgentImpl::SendRendererContentSettingRules( +@@ -200,6 +200,39 @@ void ContentSettingsAgentImpl::SendRendererContentSettingRules( std::move(renderer_settings)); } @@ -3157,7 +3191,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc diff --git a/components/content_settings/renderer/content_settings_agent_impl.h b/components/content_settings/renderer/content_settings_agent_impl.h --- a/components/content_settings/renderer/content_settings_agent_impl.h +++ b/components/content_settings/renderer/content_settings_agent_impl.h -@@ -75,6 +75,11 @@ class ContentSettingsAgentImpl +@@ -76,6 +76,11 @@ class ContentSettingsAgentImpl static mojom::ContentSettingsManager::StorageType ConvertToMojoStorageType( StorageType storage_type); @@ -3226,7 +3260,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp std::map user_specified_settings_to_display; std::map -@@ -211,6 +221,14 @@ absl::optional PageInfoControllerAndroid::GetSettingToDisplay( +@@ -211,6 +221,14 @@ std::optional PageInfoControllerAndroid::GetSettingToDisplay( return permission.setting; } @@ -3245,14 +3279,14 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. --- a/components/page_info/page_info.cc +++ b/components/page_info/page_info.cc @@ -24,6 +24,7 @@ + #include "build/chromeos_buildflags.h" #include "components/browsing_data/content/browsing_data_helper.h" - #include "components/browsing_data/core/features.h" #include "components/content_settings/browser/page_specific_content_settings.h" +#include "components/content_settings/core/browser/website_settings_registry.h" #include "components/content_settings/browser/ui/cookie_controls_controller.h" #include "components/content_settings/core/browser/content_settings_registry.h" #include "components/content_settings/core/browser/content_settings_uma_util.h" -@@ -1249,6 +1250,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1225,6 +1226,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, // applies to permissions listed in |kPermissionType|. bool PageInfo::ShouldShowPermission( const PageInfo::PermissionInfo& info) const { @@ -3267,7 +3301,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. // Note |ContentSettingsType::ADS| will show up regardless of its default // value when it has been activated on the current origin. if (info.type == ContentSettingsType::ADS) { -@@ -1375,7 +1384,19 @@ void PageInfo::PresentSitePermissions() { +@@ -1331,7 +1340,19 @@ void PageInfo::PresentSitePermissions() { HostContentSettingsMap* content_settings = GetContentSettings(); DCHECK(web_contents_); @@ -3299,7 +3333,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in #include "components/page_info/core/features.h" #include "components/page_info/page_info.h" #include "components/page_info/page_info_ui_delegate.h" -@@ -622,6 +623,12 @@ PageInfoUI::~PageInfoUI() = default; +@@ -615,6 +616,12 @@ PageInfoUI::~PageInfoUI() = default; // static std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { @@ -3312,7 +3346,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id); -@@ -633,6 +640,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { +@@ -626,6 +633,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { // static std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence( ContentSettingsType type) { @@ -3325,7 +3359,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id_mid_sentence); -@@ -1067,6 +1080,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { +@@ -1060,6 +1073,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { if (info.type == type) return true; } diff --git a/build/cromite_patches/Dictionary-suggestions-for-the-Omnibox.patch b/build/cromite_patches/Dictionary-suggestions-for-the-Omnibox.patch index 7a60a76906ad54c33c8643ab3c3e2fdfe1cbb536..2795c689dfba21291bae4f1059971690567ee61d 100644 --- a/build/cromite_patches/Dictionary-suggestions-for-the-Omnibox.patch +++ b/build/cromite_patches/Dictionary-suggestions-for-the-Omnibox.patch @@ -27,7 +27,7 @@ diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/re diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java -@@ -288,8 +288,17 @@ class LocationBarMediator +@@ -289,8 +289,17 @@ class LocationBarMediator if (mNativeInitialized) RecordUserAction.record("FocusLocation"); // Don't clear Omnibox if the user just pasted text to NTP Omnibox. if (mShouldClearOmniboxOnFocus) { @@ -58,7 +58,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import android.os.SystemClock; import android.text.Editable; import android.text.InputType; -@@ -100,6 +101,7 @@ public abstract class UrlBar extends AutocompleteEditText { +@@ -99,6 +100,7 @@ public abstract class UrlBar extends AutocompleteEditText { private boolean mFocused; private boolean mAllowFocus = true; @@ -66,7 +66,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow private boolean mPendingScroll; // Captures the current intended text scroll type. -@@ -299,6 +301,27 @@ public abstract class UrlBar extends AutocompleteEditText { +@@ -294,6 +296,27 @@ public abstract class UrlBar extends AutocompleteEditText { mPendingScroll = false; } fixupTextDirection(); diff --git a/build/cromite_patches/Disable-Accessibility-service-by-default.patch b/build/cromite_patches/Disable-Accessibility-service-by-default.patch index 1d1c10d7a42f2a3c0e8cb477f31949a31e7a9399..65bf7ebb484a4f1570df47dfd5ea0adfb1be03c7 100644 --- a/build/cromite_patches/Disable-Accessibility-service-by-default.patch +++ b/build/cromite_patches/Disable-Accessibility-service-by-default.patch @@ -42,7 +42,7 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java -@@ -1044,6 +1044,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa +@@ -1112,6 +1112,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa structure.setChildCount(0); return; } diff --git a/build/cromite_patches/Disable-AsyncDNS-by-default.patch b/build/cromite_patches/Disable-AsyncDNS-by-default.patch index 1fa6323329ccefee37e1390c188426a0db44ae6f..eabef92ec5c7b8374a66697c808ceed944f64bd3 100644 --- a/build/cromite_patches/Disable-AsyncDNS-by-default.patch +++ b/build/cromite_patches/Disable-AsyncDNS-by-default.patch @@ -7,14 +7,14 @@ This feature is detrimental to privacy, see also: License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../common/chrome_features_cc/Disable-AsyncDNS-by-default.inc | 1 + + .../net/base/features_cc/Disable-AsyncDNS-by-default.inc | 1 + 1 file changed, 1 insertion(+) - create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-AsyncDNS-by-default.inc + create mode 100644 cromite_flags/net/base/features_cc/Disable-AsyncDNS-by-default.inc -diff --git a/cromite_flags/chrome/common/chrome_features_cc/Disable-AsyncDNS-by-default.inc b/cromite_flags/chrome/common/chrome_features_cc/Disable-AsyncDNS-by-default.inc +diff --git a/cromite_flags/net/base/features_cc/Disable-AsyncDNS-by-default.inc b/cromite_flags/net/base/features_cc/Disable-AsyncDNS-by-default.inc new file mode 100644 --- /dev/null -+++ b/cromite_flags/chrome/common/chrome_features_cc/Disable-AsyncDNS-by-default.inc ++++ b/cromite_flags/net/base/features_cc/Disable-AsyncDNS-by-default.inc @@ -0,0 +1 @@ +SET_CROMITE_FEATURE_DISABLED(kAsyncDns); -- diff --git a/build/cromite_patches/Disable-FLoC-and-privacy-sandbox.patch b/build/cromite_patches/Disable-FLoC-and-privacy-sandbox.patch index 439ee4a0a156f041cdd858717e25357aeedea26b..e24f71854dbd93ba939bbaaec8bc27cf7d9bae62 100644 --- a/build/cromite_patches/Disable-FLoC-and-privacy-sandbox.patch +++ b/build/cromite_patches/Disable-FLoC-and-privacy-sandbox.patch @@ -12,20 +12,20 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/chrome_content_browser_client.cc | 3 +++ .../privacy_sandbox_settings_delegate.cc | 1 + .../privacy_sandbox/privacy_sandbox_prompt.cc | 1 + - .../history/core/browser/history_backend.cc | 13 +--------- + .../history/core/browser/history_backend.cc | 13 +------------ .../privacy_sandbox_attestations.cc | 2 -- - .../privacy_sandbox_features.cc | 6 ++++- + .../privacy_sandbox_features.cc | 4 ++++ .../privacy_sandbox/privacy_sandbox_prefs.cc | 4 ++-- - .../privacy_sandbox_settings_impl.cc | 24 +++++++++++++------ + .../privacy_sandbox_settings_impl.cc | 19 ++++++++++++++----- .../Disable-FLoC-and-privacy-sandbox.inc | 1 + third_party/blink/common/features.cc | 1 + - 10 files changed, 32 insertions(+), 24 deletions(-) + 10 files changed, 28 insertions(+), 21 deletions(-) create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-FLoC-and-privacy-sandbox.inc diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -3381,6 +3381,9 @@ bool ChromeContentBrowserClient::IsAttributionReportingOperationAllowed( +@@ -3239,6 +3239,9 @@ bool ChromeContentBrowserClient::IsAttributionReportingOperationAllowed( const url::Origin* destination_origin, const url::Origin* reporting_origin, bool* can_bypass) { @@ -59,7 +59,7 @@ diff --git a/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt.cc b/chrom diff --git a/components/history/core/browser/history_backend.cc b/components/history/core/browser/history_backend.cc --- a/components/history/core/browser/history_backend.cc +++ b/components/history/core/browser/history_backend.cc -@@ -655,18 +655,7 @@ void HistoryBackend::SetBrowsingTopicsAllowed(ContextID context_id, +@@ -656,18 +656,7 @@ void HistoryBackend::SetBrowsingTopicsAllowed(ContextID context_id, if (!visit_id) return; @@ -82,7 +82,7 @@ diff --git a/components/history/core/browser/history_backend.cc b/components/his diff --git a/components/privacy_sandbox/privacy_sandbox_attestations/privacy_sandbox_attestations.cc b/components/privacy_sandbox/privacy_sandbox_attestations/privacy_sandbox_attestations.cc --- a/components/privacy_sandbox/privacy_sandbox_attestations/privacy_sandbox_attestations.cc +++ b/components/privacy_sandbox/privacy_sandbox_attestations/privacy_sandbox_attestations.cc -@@ -405,8 +405,6 @@ void PrivacySandboxAttestations::OnAttestationsParsed( +@@ -478,8 +478,6 @@ void PrivacySandboxAttestations::OnAttestationsParsed( if (attestations_map.has_value() && (!file_version_.IsValid() || file_version_.CompareTo(version) < 0)) { // Parsing succeeded and the attestations file has newer version. @@ -94,15 +94,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_attestations/privacy_san diff --git a/components/privacy_sandbox/privacy_sandbox_features.cc b/components/privacy_sandbox/privacy_sandbox_features.cc --- a/components/privacy_sandbox/privacy_sandbox_features.cc +++ b/components/privacy_sandbox/privacy_sandbox_features.cc -@@ -145,11 +145,15 @@ BASE_FEATURE(kAttributionDebugReportingCookieDeprecationTesting, - BASE_FEATURE(kPrivateAggregationDebugReportingCookieDeprecationTesting, - "PrivateAggregationDebugReportingCookieDeprecationTesting", - base::FEATURE_DISABLED_BY_DEFAULT); -- -+ - #if BUILDFLAG(IS_ANDROID) - BASE_FEATURE(kTrackingProtectionNoticeRequestTracking, - "TrackingProtectionNoticeRequestTracking", +@@ -167,4 +167,8 @@ BASE_FEATURE(kTrackingProtectionNoticeRequestTracking, base::FEATURE_DISABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_ANDROID) @@ -121,21 +113,21 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_prefs.cc b/components/pr - prefs::kPrivacySandboxApisEnabled, true, + prefs::kPrivacySandboxApisEnabled, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); - registry->RegisterBooleanPref(prefs::kPrivacySandboxApisEnabledV2, false); registry->RegisterBooleanPref(prefs::kPrivacySandboxM1ConsentDecisionMade, -@@ -28,7 +28,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { + false); +@@ -27,7 +27,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { registry->RegisterBooleanPref(prefs::kPrivacySandboxM1FledgeEnabled, false); registry->RegisterBooleanPref(prefs::kPrivacySandboxM1AdMeasurementEnabled, false); - registry->RegisterBooleanPref(prefs::kPrivacySandboxM1Restricted, false); + registry->RegisterBooleanPref(prefs::kPrivacySandboxM1Restricted, true); - registry->RegisterBooleanPref(prefs::kPrivacySandboxManuallyControlledV2, - false); + registry->RegisterTimePref(prefs::kPrivacySandboxTopicsDataAccessibleSince, + base::Time()); diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/components/privacy_sandbox/privacy_sandbox_settings_impl.cc --- a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc +++ b/components/privacy_sandbox/privacy_sandbox_settings_impl.cc -@@ -121,7 +121,7 @@ std::set GetTopicsSetFromString( +@@ -123,7 +123,7 @@ std::set GetTopicsSetFromString( // static bool PrivacySandboxSettingsImpl::IsAllowed(Status status) { @@ -144,7 +136,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo } // static -@@ -230,7 +230,8 @@ PrivacySandboxSettingsImpl::GetFinchPrioritizedTopics() { +@@ -232,7 +232,8 @@ PrivacySandboxSettingsImpl::GetFinchPrioritizedTopics() { return finch_prioritized_topics_; } @@ -154,7 +146,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo Status status = GetM1TopicAllowedStatus(); JoinHistogram(kIsTopicsAllowedHistogram, status); return IsAllowed(status); -@@ -262,7 +263,8 @@ bool PrivacySandboxSettingsImpl::IsTopicsAllowedForContext( +@@ -264,7 +265,8 @@ bool PrivacySandboxSettingsImpl::IsTopicsAllowedForContext( return IsAllowed(status); } @@ -164,7 +156,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo const auto& blocked_topics = pref_service_->GetList(prefs::kPrivacySandboxBlockedTopics); -@@ -464,6 +466,7 @@ bool PrivacySandboxSettingsImpl:: +@@ -466,6 +468,7 @@ bool PrivacySandboxSettingsImpl:: void PrivacySandboxSettingsImpl::SetFledgeJoiningAllowed( const std::string& top_frame_etld_plus1, bool allowed) { @@ -172,7 +164,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo ScopedDictPrefUpdate scoped_pref_update( pref_service_, prefs::kPrivacySandboxFledgeJoinBlocked); -@@ -534,7 +537,8 @@ void PrivacySandboxSettingsImpl::ClearFledgeJoiningAllowedSettings( +@@ -536,7 +539,8 @@ void PrivacySandboxSettingsImpl::ClearFledgeJoiningAllowedSettings( } bool PrivacySandboxSettingsImpl::IsFledgeJoiningAllowed( @@ -182,27 +174,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo ScopedDictPrefUpdate scoped_pref_update( pref_service_, prefs::kPrivacySandboxFledgeJoinBlocked); auto& pref_data = scoped_pref_update.Get(); -@@ -693,7 +697,8 @@ bool PrivacySandboxSettingsImpl::IsPrivateAggregationDebugModeAllowed( - delegate_->AreThirdPartyCookiesBlockedByCookieDeprecationExperiment(); - } - --bool PrivacySandboxSettingsImpl::IsPrivacySandboxEnabled() const { -+bool PrivacySandboxSettingsImpl::IsPrivacySandboxEnabled() const { // disabled in Bromite -+ if ((true)) return false; - PrivacySandboxSettingsImpl::Status status = GetPrivacySandboxAllowedStatus(); - if (!IsAllowed(status)) { - return false; -@@ -720,7 +725,8 @@ void PrivacySandboxSettingsImpl::SetTopicsBlockedForTesting() { - pref_service_->SetBoolean(prefs::kPrivacySandboxM1TopicsEnabled, false); - } - --void PrivacySandboxSettingsImpl::SetPrivacySandboxEnabled(bool enabled) { -+void PrivacySandboxSettingsImpl::SetPrivacySandboxEnabled(bool enabled) { // disabled in Bromite -+ enabled = false; - pref_service_->SetBoolean(prefs::kPrivacySandboxApisEnabledV2, enabled); - } - -@@ -767,7 +773,10 @@ void PrivacySandboxSettingsImpl::SetDelegateForTesting( +@@ -782,7 +786,10 @@ void PrivacySandboxSettingsImpl::SetDelegateForTesting( delegate_ = std::move(delegate); } @@ -214,7 +186,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo pref_service_->SetTime(prefs::kPrivacySandboxTopicsDataAccessibleSince, base::Time::Now()); -@@ -780,6 +789,7 @@ PrivacySandboxSettingsImpl::Status +@@ -795,6 +802,7 @@ PrivacySandboxSettingsImpl::Status PrivacySandboxSettingsImpl::GetSiteAccessAllowedStatus( const url::Origin& top_frame_origin, const GURL& url) const { @@ -222,6 +194,14 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo // Relying on |host_content_settings_map_| instead of |cookie_settings_| // allows to query whether the site associated with the |url| is allowed to // access Site data (aka ContentSettingsType::COOKIES) without considering any +@@ -809,6 +817,7 @@ PrivacySandboxSettingsImpl::GetSiteAccessAllowedStatus( + PrivacySandboxSettingsImpl::Status + PrivacySandboxSettingsImpl::GetPrivacySandboxAllowedStatus( + bool should_ignore_restriction /*=false*/) const { ++ if ((true)) return Status::kRestricted; + if (delegate_->IsIncognitoProfile()) { + return Status::kIncognitoProfile; + } diff --git a/cromite_flags/third_party/blink/common/features_cc/Disable-FLoC-and-privacy-sandbox.inc b/cromite_flags/third_party/blink/common/features_cc/Disable-FLoC-and-privacy-sandbox.inc new file mode 100644 --- /dev/null @@ -231,7 +211,7 @@ new file mode 100644 diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -2239,6 +2239,7 @@ bool IsAllowPageWithIDBConnectionAndTransactionInBFCacheEnabled() { +@@ -2462,6 +2462,7 @@ bool IsAllowPageWithIDBConnectionAndTransactionInBFCacheEnabled() { } bool IsAllowURNsInIframeEnabled() { diff --git a/build/cromite_patches/Disable-PrivacyGuide.patch b/build/cromite_patches/Disable-PrivacyGuide.patch index 61cf841d6b9e67f9f814d504434b39a0372cef62..af2c601839de0927c071a173f704956047d09026 100644 --- a/build/cromite_patches/Disable-PrivacyGuide.patch +++ b/build/cromite_patches/Disable-PrivacyGuide.patch @@ -4,15 +4,27 @@ Subject: Disable PrivacyGuide License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/browser/ui/webui/settings/settings_ui.cc | 2 +- - .../common/chrome_features_cc/Disable-PrivacyGuide.inc | 10 ++++++++++ - 2 files changed, 11 insertions(+), 1 deletion(-) + chrome/android/java/res/xml/privacy_preferences.xml | 1 + + chrome/browser/ui/webui/settings/settings_ui.cc | 2 +- + .../common/chrome_features_cc/Disable-PrivacyGuide.inc | 9 +++++++++ + 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-PrivacyGuide.inc +diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml +--- a/chrome/android/java/res/xml/privacy_preferences.xml ++++ b/chrome/android/java/res/xml/privacy_preferences.xml +@@ -21,6 +21,7 @@ found in the LICENSE file. + android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataTabsFragment" /> + diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc --- a/chrome/browser/ui/webui/settings/settings_ui.cc +++ b/chrome/browser/ui/webui/settings/settings_ui.cc -@@ -351,7 +351,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) +@@ -357,7 +357,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) #endif // !BUILDFLAG(IS_CHROMEOS_LACROS) bool show_privacy_guide = @@ -25,7 +37,7 @@ diff --git a/cromite_flags/chrome/common/chrome_features_cc/Disable-PrivacyGuide new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/common/chrome_features_cc/Disable-PrivacyGuide.inc -@@ -0,0 +1,10 @@ +@@ -0,0 +1,9 @@ +SET_CROMITE_FEATURE_DISABLED(kPrivacyGuide3); +SET_CROMITE_FEATURE_DISABLED(kPrivacyGuidePreload); + @@ -33,7 +45,6 @@ new file mode 100644 + +SET_CROMITE_FEATURE_DISABLED(kPrivacyGuideAndroid3); +SET_CROMITE_FEATURE_DISABLED(kPrivacyGuidePreloadAndroid); -+SET_CROMITE_FEATURE_DISABLED(kPrivacyGuideAndroid); + +#endif -- diff --git a/build/cromite_patches/Disable-StartSurface-feature.patch b/build/cromite_patches/Disable-StartSurface-feature.patch index f9a35d5af58ec2b753d7c5b337f170ca2fba2421..4b730709b500e2a544598d537c056d3bb8c9e4d5 100644 --- a/build/cromite_patches/Disable-StartSurface-feature.patch +++ b/build/cromite_patches/Disable-StartSurface-feature.patch @@ -14,15 +14,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -631,7 +631,7 @@ public abstract class ChromeFeatureList { - new CachedFlag(SHOW_NTP_AT_STARTUP_ANDROID, false); - public static final CachedFlag sSpareTab = new CachedFlag(SPARE_TAB, false); +@@ -634,7 +634,7 @@ public abstract class ChromeFeatureList { + public static final CachedFlag sSmallerTabStripTitleLimit = + newCachedFlag(SMALLER_TAB_STRIP_TITLE_LIMIT, false); public static final CachedFlag sStartSurfaceAndroid = -- new CachedFlag(START_SURFACE_ANDROID, true); -+ new CachedFlag(START_SURFACE_ANDROID, false); - public static final CachedFlag sStartSurfaceDisabledFeedImprovement = - new CachedFlag(START_SURFACE_DISABLED_FEED_IMPROVEMENT, false); +- newCachedFlag(START_SURFACE_ANDROID, true); ++ newCachedFlag(START_SURFACE_ANDROID, false); public static final CachedFlag sStartSurfaceOnTablet = + newCachedFlag(START_SURFACE_ON_TABLET, true); + public static final CachedFlag sStartSurfaceRefactor = diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-StartSurface-feature.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-StartSurface-feature.inc new file mode 100644 --- /dev/null diff --git a/build/cromite_patches/Disable-TLS-resumption.patch b/build/cromite_patches/Disable-TLS-resumption.patch index 8ab79fc0d2baadaa3568e0a0df631be93fece3a4..3fb174e00d81ad39717250af498be4205021ab21 100644 --- a/build/cromite_patches/Disable-TLS-resumption.patch +++ b/build/cromite_patches/Disable-TLS-resumption.patch @@ -29,7 +29,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../features_cc/Disable-TLS-resumption.inc | 7 +++ .../features_h/Disable-TLS-resumption.inc | 5 ++ net/http/http_network_session.cc | 1 + - net/quic/quic_stream_factory.cc | 35 ++++++++++- + net/quic/quic_session_pool.cc | 35 ++++++++++- net/socket/ssl_client_socket_impl.cc | 59 +++++++++++++++++++ net/socket/ssl_client_socket_impl.h | 2 + 7 files changed, 120 insertions(+), 1 deletion(-) @@ -87,18 +87,18 @@ diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc http_server_properties_->SetMaxServerConfigsStoredInProperties( context.quic_context->params()->max_server_configs_stored_in_properties); http_server_properties_->SetBrokenAlternativeServicesDelayParams( -diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc ---- a/net/quic/quic_stream_factory.cc -+++ b/net/quic/quic_stream_factory.cc +diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc +--- a/net/quic/quic_session_pool.cc ++++ b/net/quic/quic_session_pool.cc @@ -69,6 +69,7 @@ - #include "net/third_party/quiche/src/quiche/quic/core/quic_utils.h" #include "net/third_party/quiche/src/quiche/quic/platform/api/quic_flags.h" + #include "net/traffic_annotation/network_traffic_annotation.h" #include "third_party/boringssl/src/include/openssl/aead.h" +#include "third_party/boringssl/src/include/openssl/ssl.h" #include "url/gurl.h" #include "url/scheme_host_port.h" #include "url/url_constants.h" -@@ -194,6 +195,38 @@ std::set HostsFromOrigins(std::set origins) { +@@ -156,6 +157,38 @@ std::set HostsFromOrigins(std::set origins) { } // namespace @@ -134,11 +134,11 @@ diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc + } +}; + - // Refcounted class that owns quic::QuicCryptoClientConfig and tracks how many - // consumers are using it currently. When the last reference is freed, the - // QuicCryptoClientConfigHandle informs the owning QuicStreamFactory, moves it -@@ -2368,7 +2401,7 @@ QuicStreamFactory::CreateCryptoConfigHandle( - sct_auditing_delegate_, + QuicSessionRequest::QuicSessionRequest(QuicSessionPool* pool) : pool_(pool) {} + + QuicSessionRequest::~QuicSessionRequest() { +@@ -1716,7 +1749,7 @@ QuicSessionPool::CreateCryptoConfigHandle( + cert_verifier_, transport_security_state_, sct_auditing_delegate_, HostsFromOrigins(params_.origins_to_force_quic_on), actual_network_anonymization_key), - std::make_unique(), this); @@ -149,7 +149,7 @@ diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc --- a/net/socket/ssl_client_socket_impl.cc +++ b/net/socket/ssl_client_socket_impl.cc -@@ -387,7 +387,33 @@ SSLClientSocketImpl::SSLClientSocketImpl( +@@ -380,7 +380,33 @@ SSLClientSocketImpl::SSLClientSocketImpl( CHECK(context_); } @@ -183,7 +183,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket Disconnect(); } -@@ -772,6 +798,8 @@ int SSLClientSocketImpl::Init() { +@@ -764,6 +790,8 @@ int SSLClientSocketImpl::Init() { } if (session) SSL_set_session(ssl_.get(), session.get()); @@ -192,7 +192,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket } const int kBufferSize = GetDefaultOpenSSLBufferSize(); -@@ -1066,6 +1094,35 @@ int SSLClientSocketImpl::DoHandshakeComplete(int result) { +@@ -1062,6 +1090,35 @@ int SSLClientSocketImpl::DoHandshakeComplete(int result) { : SSLHandshakeDetails::kTLS13Full; } } @@ -228,7 +228,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket UMA_HISTOGRAM_ENUMERATION("Net.SSLHandshakeDetails", details); // Measure TLS connections that implement the renegotiation_info extension. -@@ -1718,6 +1775,8 @@ bool SSLClientSocketImpl::IsRenegotiationAllowed() const { +@@ -1699,6 +1756,8 @@ bool SSLClientSocketImpl::IsRenegotiationAllowed() const { } bool SSLClientSocketImpl::IsCachingEnabled() const { diff --git a/build/cromite_patches/Disable-all-predictors-code.patch b/build/cromite_patches/Disable-all-predictors-code.patch index 69d4a0e8f6a2d89afffa2bc670917c7e2bc7014f..df28baa101221de0cb1fb90e98debc60c51c8a56 100644 --- a/build/cromite_patches/Disable-all-predictors-code.patch +++ b/build/cromite_patches/Disable-all-predictors-code.patch @@ -9,28 +9,30 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../preloading_model_keyed_service.cc | 1 + .../preloading_model_keyed_service_factory.cc | 4 +-- .../chrome_hints_manager.cc | 1 + + .../model_validator_keyed_service.cc | 7 +++++- .../optimization_guide_keyed_service.cc | 1 - - .../browser/predictors/loading_predictor.cc | 4 +-- .../predictors/loading_predictor_config.cc | 4 +-- - .../browser/predictors/predictors_features.cc | 11 ++----- + .../browser/predictors/predictors_features.cc | 11 ++------ chrome/browser/ui/tab_helpers.cc | 1 - - .../ui/webui/omnibox/omnibox_page_handler.cc | 14 +++++++++ + .../ui/webui/omnibox/omnibox_page_handler.cc | 14 +++++++++++ .../browser/autofill_optimization_guide.cc | 5 ++-- + .../metrics/shadow_prediction_metrics.cc | 2 +- .../browser/autocomplete_controller.cc | 2 ++ .../optimization_guide/core/hints_fetcher.cc | 1 + .../optimization_guide/core/hints_manager.cc | 5 ++++ - .../core/optimization_guide_features.cc | 29 ++++++++++--------- - .../core/prediction_model_download_manager.cc | 6 ++-- + .../core/optimization_guide_features.cc | 25 +++++++++++-------- + .../core/prediction_model_download_manager.cc | 6 +++-- .../core/prediction_model_fetcher_impl.cc | 1 + - components/optimization_guide/features.gni | 3 +- - components/search/ntp_features.cc | 3 ++ + components/optimization_guide/features.gni | 3 +-- + .../phishing_classifier.cc | 2 +- + components/search/ntp_features.cc | 3 +++ .../Disable-all-predictors-code.inc | 4 +++ - .../Disable-all-predictors-code.inc | 7 +++++ + .../Disable-all-predictors-code.inc | 7 ++++++ .../Disable-all-predictors-code.inc | 4 +++ .../Disable-all-predictors-code.inc | 2 ++ .../document_speculation_rules.cc | 1 + .../platform/runtime_enabled_features.json5 | 2 +- - 25 files changed, 77 insertions(+), 41 deletions(-) + 27 files changed, 83 insertions(+), 38 deletions(-) create mode 100644 cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/components/permissions/features_cc/Disable-all-predictors-code.inc @@ -39,7 +41,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -840,8 +840,6 @@ static_library("browser") { +@@ -851,8 +851,6 @@ static_library("browser") { "navigation_predictor/navigation_predictor_keyed_service_factory.h", "navigation_predictor/navigation_predictor_metrics_document_data.cc", "navigation_predictor/navigation_predictor_metrics_document_data.h", @@ -75,17 +77,75 @@ diff --git a/chrome/browser/optimization_guide/chrome_hints_manager.cc b/chrome/ --- a/chrome/browser/optimization_guide/chrome_hints_manager.cc +++ b/chrome/browser/optimization_guide/chrome_hints_manager.cc @@ -27,6 +27,7 @@ bool IsAllowedToFetchForNavigationPrediction( - const absl::optional + const std::optional prediction) { DCHECK(prediction); + if ((true)) return false; if (prediction->prediction_source() != NavigationPredictorKeyedService::PredictionSource:: +diff --git a/chrome/browser/optimization_guide/model_validator_keyed_service.cc b/chrome/browser/optimization_guide/model_validator_keyed_service.cc +--- a/chrome/browser/optimization_guide/model_validator_keyed_service.cc ++++ b/chrome/browser/optimization_guide/model_validator_keyed_service.cc +@@ -8,6 +8,7 @@ + #include "base/files/file_util.h" + #include "base/task/sequenced_task_runner.h" + #include "base/task/task_traits.h" ++#include "base/task/thread_pool.h" + #include "build/build_config.h" + #include "chrome/browser/profiles/profile.h" + #include "chrome/browser/signin/identity_manager_factory.h" +@@ -55,13 +56,13 @@ namespace optimization_guide { + ModelValidatorKeyedService::ModelValidatorKeyedService(Profile* profile) + : profile_(profile) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + DCHECK(ShouldStartModelValidator()); + auto* opt_guide_service = + OptimizationGuideKeyedServiceFactory::GetForProfile(profile); + if (!opt_guide_service) { + return; + } +-#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + if (switches::ShouldValidateModel()) { + // Create the validator object which will get destroyed when the model + // load is complete. +@@ -122,6 +123,7 @@ void ModelValidatorKeyedService::OnPrimaryAccountChanged( + + void ModelValidatorKeyedService::StartModelExecutionValidation() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + auto* opt_guide_service = + OptimizationGuideKeyedServiceFactory::GetForProfile(profile_); + if (!opt_guide_service) { +@@ -139,6 +141,7 @@ void ModelValidatorKeyedService::StartModelExecutionValidation() { + proto::ModelExecutionFeature::MODEL_EXECUTION_FEATURE_TEST, request, + base::BindOnce(&ModelValidatorKeyedService::OnModelExecuteResponse, + weak_ptr_factory_.GetWeakPtr())); ++#endif + } + + void ModelValidatorKeyedService::StartOnDeviceModelExecutionValidation( +@@ -156,6 +159,7 @@ void ModelValidatorKeyedService::StartOnDeviceModelExecutionValidation( + + void ModelValidatorKeyedService::PerformOnDeviceModelExecutionValidation( + std::unique_ptr request) { ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + auto* opt_guide_service = + OptimizationGuideKeyedServiceFactory::GetForProfile(profile_); +@@ -168,6 +172,7 @@ void ModelValidatorKeyedService::PerformOnDeviceModelExecutionValidation( + *request, base::RepeatingCallback(base::BindRepeating( + &ModelValidatorKeyedService::OnDeviceModelExecuteResponse, + weak_ptr_factory_.GetWeakPtr()))); ++#endif + } + + void ModelValidatorKeyedService::OnDeviceModelExecuteResponse( diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc --- a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc +++ b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc -@@ -520,7 +520,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( +@@ -528,7 +528,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( void OptimizationGuideKeyedService::RegisterOptimizationTypes( const std::vector& optimization_types) { @@ -93,27 +153,6 @@ diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service. } optimization_guide::OptimizationGuideDecision -diff --git a/chrome/browser/predictors/loading_predictor.cc b/chrome/browser/predictors/loading_predictor.cc ---- a/chrome/browser/predictors/loading_predictor.cc -+++ b/chrome/browser/predictors/loading_predictor.cc -@@ -212,7 +212,7 @@ ResourcePrefetchPredictor* LoadingPredictor::resource_prefetch_predictor() { - } - - PreconnectManager* LoadingPredictor::preconnect_manager() { -- if (shutdown_) { -+ if ((true)) { - return nullptr; - } - -@@ -228,7 +228,7 @@ PrefetchManager* LoadingPredictor::prefetch_manager() { - if (!base::FeatureList::IsEnabled(features::kLoadingPredictorPrefetch)) - return nullptr; - -- if (shutdown_) { -+ if ((true)) { - return nullptr; - } - diff --git a/chrome/browser/predictors/loading_predictor_config.cc b/chrome/browser/predictors/loading_predictor_config.cc --- a/chrome/browser/predictors/loading_predictor_config.cc +++ b/chrome/browser/predictors/loading_predictor_config.cc @@ -165,7 +204,7 @@ diff --git a/chrome/browser/predictors/predictors_features.cc b/chrome/browser/p diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc --- a/chrome/browser/ui/tab_helpers.cc +++ b/chrome/browser/ui/tab_helpers.cc -@@ -404,7 +404,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -414,7 +414,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { } MixedContentSettingsTabHelper::CreateForWebContents(web_contents); NavigationMetricsRecorder::CreateForWebContents(web_contents); @@ -186,7 +225,7 @@ diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/br #include "components/omnibox/browser/omnibox_field_trial.h" #include "components/search_engines/template_url.h" #include "content/public/browser/web_ui.h" -@@ -500,6 +502,7 @@ void OmniboxPageHandler::StartOmniboxQuery(const std::string& input_string, +@@ -498,6 +500,7 @@ void OmniboxPageHandler::StartOmniboxQuery(const std::string& input_string, } void OmniboxPageHandler::GetMlModelVersion(GetMlModelVersionCallback callback) { @@ -194,7 +233,7 @@ diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/br if (auto* service = GetMlService()) { auto version = service->GetModelVersion(); if (version == -1) { -@@ -512,10 +515,14 @@ void OmniboxPageHandler::GetMlModelVersion(GetMlModelVersionCallback callback) { +@@ -510,10 +513,14 @@ void OmniboxPageHandler::GetMlModelVersion(GetMlModelVersionCallback callback) { } else { std::move(callback).Run(-1); } @@ -209,7 +248,7 @@ diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/br if (auto* service = GetMlService()) { AutocompleteMatch::ScoringSignals signals = mojo::ConvertTo(mojom_signals); -@@ -526,6 +533,9 @@ void OmniboxPageHandler::StartMl(mojom::SignalsPtr mojom_signals, +@@ -523,6 +530,9 @@ void OmniboxPageHandler::StartMl(mojom::SignalsPtr mojom_signals, } else { std::move(callback).Run(-1); } @@ -219,12 +258,12 @@ diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/br } std::unique_ptr OmniboxPageHandler::CreateController( -@@ -550,8 +560,12 @@ OmniboxPageHandler::GetAutocompleteControllerType( +@@ -547,8 +557,12 @@ OmniboxPageHandler::GetAutocompleteControllerType( } AutocompleteScoringModelService* OmniboxPageHandler::GetMlService() { +#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) - return OmniboxFieldTrial::IsMlSyncBatchUrlScoringEnabled() + return OmniboxFieldTrial::IsMlUrlScoringEnabled() ? AutocompleteScoringModelServiceFactory::GetInstance() ->GetForProfile(profile_) : nullptr; @@ -235,7 +274,7 @@ diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/br diff --git a/components/autofill/core/browser/autofill_optimization_guide.cc b/components/autofill/core/browser/autofill_optimization_guide.cc --- a/components/autofill/core/browser/autofill_optimization_guide.cc +++ b/components/autofill/core/browser/autofill_optimization_guide.cc -@@ -94,6 +94,7 @@ void AutofillOptimizationGuide::OnDidParseForm( +@@ -163,6 +163,7 @@ void AutofillOptimizationGuide::OnDidParseForm( // If we do not have any optimization types to register, do not do anything. if (!optimization_types.empty()) { // Register all optimization types that we need based on `form_structure`. @@ -243,7 +282,7 @@ diff --git a/components/autofill/core/browser/autofill_optimization_guide.cc b/c decider_->RegisterOptimizationTypes( std::vector( std::move(optimization_types).extract())); -@@ -105,7 +106,7 @@ bool AutofillOptimizationGuide::ShouldBlockSingleFieldSuggestions( +@@ -214,7 +215,7 @@ bool AutofillOptimizationGuide::ShouldBlockSingleFieldSuggestions( AutofillField* field) const { // If the field's storable type is `IBAN_VALUE`, check whether IBAN // suggestions should be blocked based on `url`. @@ -252,22 +291,34 @@ diff --git a/components/autofill/core/browser/autofill_optimization_guide.cc b/c optimization_guide::OptimizationGuideDecision decision = decider_->CanApplyOptimization( url, optimization_guide::proto::IBAN_AUTOFILL_BLOCKED, -@@ -136,7 +137,7 @@ bool AutofillOptimizationGuide::ShouldBlockFormFieldSuggestion( - +@@ -240,7 +241,7 @@ bool AutofillOptimizationGuide::ShouldBlockFormFieldSuggestion( + const CreditCard* card) const { if (auto optimization_type = - GetVcnMerchantOptOutOptimizationTypeForCard(card); + GetVcnMerchantOptOutOptimizationTypeForCard(*card); - optimization_type != optimization_guide::proto::TYPE_UNSPECIFIED) { + decider_ && optimization_type != optimization_guide::proto::TYPE_UNSPECIFIED) { optimization_guide::OptimizationGuideDecision decision = decider_->CanApplyOptimization(url, optimization_type, /*optimization_metadata=*/nullptr); +diff --git a/components/autofill/core/browser/metrics/shadow_prediction_metrics.cc b/components/autofill/core/browser/metrics/shadow_prediction_metrics.cc +--- a/components/autofill/core/browser/metrics/shadow_prediction_metrics.cc ++++ b/components/autofill/core/browser/metrics/shadow_prediction_metrics.cc +@@ -74,7 +74,7 @@ void LogRegexShadowPredictions(const AutofillField& field) { + + void LogMlShadowPredictions(const AutofillField& field) { + #if !BUILDFLAG(BUILD_WITH_TFLITE_LIB) +- return; ++ if ((true)) return; + #endif + if (!base::FeatureList::IsEnabled(features::kAutofillModelPredictions)) { + return; diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc --- a/components/omnibox/browser/autocomplete_controller.cc +++ b/components/omnibox/browser/autocomplete_controller.cc -@@ -46,7 +46,9 @@ - #include "components/omnibox/browser/autocomplete_input.h" +@@ -47,7 +47,9 @@ #include "components/omnibox/browser/autocomplete_match_type.h" #include "components/omnibox/browser/autocomplete_provider.h" + #include "components/omnibox/browser/autocomplete_provider_client.h" +#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) #include "components/omnibox/browser/autocomplete_scoring_model_service.h" +#endif @@ -277,10 +328,10 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ diff --git a/components/optimization_guide/core/hints_fetcher.cc b/components/optimization_guide/core/hints_fetcher.cc --- a/components/optimization_guide/core/hints_fetcher.cc +++ b/components/optimization_guide/core/hints_fetcher.cc -@@ -182,6 +182,7 @@ bool HintsFetcher::FetchOptimizationGuideServiceHints( - const std::string& access_token, +@@ -183,6 +183,7 @@ bool HintsFetcher::FetchOptimizationGuideServiceHints( bool skip_cache, - HintsFetchedCallback hints_fetched_callback) { + HintsFetchedCallback hints_fetched_callback, + proto::RequestContextMetadata* request_context_metadata) { + if ((true)) return false; DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_GT(optimization_types.size(), 0u); @@ -288,7 +339,7 @@ diff --git a/components/optimization_guide/core/hints_fetcher.cc b/components/op diff --git a/components/optimization_guide/core/hints_manager.cc b/components/optimization_guide/core/hints_manager.cc --- a/components/optimization_guide/core/hints_manager.cc +++ b/components/optimization_guide/core/hints_manager.cc -@@ -388,6 +388,7 @@ void HintsManager::Shutdown() { +@@ -390,6 +390,7 @@ void HintsManager::Shutdown() { OptimizationGuideDecision HintsManager::GetOptimizationGuideDecisionFromOptimizationTypeDecision( OptimizationTypeDecision optimization_type_decision) { @@ -296,15 +347,15 @@ diff --git a/components/optimization_guide/core/hints_manager.cc b/components/op switch (optimization_type_decision) { case OptimizationTypeDecision::kAllowedByOptimizationFilter: case OptimizationTypeDecision::kAllowedByHint: -@@ -1096,6 +1097,7 @@ void HintsManager::CanApplyOptimizationOnDemand( - proto::RequestContext request_context, - OnDemandOptimizationGuideDecisionRepeatingCallback callback) { +@@ -1110,6 +1111,7 @@ void HintsManager::CanApplyOptimizationOnDemand( + OnDemandOptimizationGuideDecisionRepeatingCallback callback, + proto::RequestContextMetadata* request_context_metadata) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + if ((true)) return; // no consent on bromite InsertionOrderedSet urls_to_fetch; InsertionOrderedSet hosts_to_fetch; -@@ -1392,6 +1394,9 @@ OptimizationTypeDecision HintsManager::CanApplyOptimization( +@@ -1416,6 +1418,9 @@ OptimizationTypeDecision HintsManager::CanApplyOptimization( bool skip_cache, OptimizationMetadata* optimization_metadata) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -317,7 +368,7 @@ diff --git a/components/optimization_guide/core/hints_manager.cc b/components/op diff --git a/components/optimization_guide/core/optimization_guide_features.cc b/components/optimization_guide/core/optimization_guide_features.cc --- a/components/optimization_guide/core/optimization_guide_features.cc +++ b/components/optimization_guide/core/optimization_guide_features.cc -@@ -35,25 +35,13 @@ namespace features { +@@ -37,18 +37,10 @@ namespace features { namespace { constexpr auto enabled_by_default_desktop_only = @@ -329,13 +380,6 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b constexpr auto enabled_by_default_mobile_only = -#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) -- true; --#else - false; --#endif - - constexpr auto enabled_by_default_ios_only = --#if BUILDFLAG(IS_IOS) - base::FEATURE_ENABLED_BY_DEFAULT; -#else base::FEATURE_DISABLED_BY_DEFAULT; @@ -343,7 +387,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b // Returns whether |locale| is a supported locale for |feature|. // -@@ -587,8 +575,7 @@ size_t MaxURLKeyedHintCacheSize() { +@@ -575,8 +567,7 @@ size_t MaxURLKeyedHintCacheSize() { } bool ShouldPersistHintsToDisk() { @@ -352,9 +396,9 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b + return false; } - bool ShouldEnablePersonalizedMetadata(proto::RequestContext request_context) { -@@ -1007,5 +994,19 @@ bool CanLaunchOnDeviceModelService() { - base::FeatureList::IsEnabled(kLogOnDeviceMetricsOnStartup); + RequestContextSet GetAllowedContextsForPersonalizedMetadata() { +@@ -1080,5 +1071,19 @@ bool GetOnDeviceModelRetractRepeats() { + return kOnDeviceModelRetractRepeats.Get(); } +SET_CROMITE_FEATURE_DISABLED(kOptimizationHints); @@ -434,10 +478,22 @@ diff --git a/components/optimization_guide/features.gni b/components/optimizatio } declare_args() { +diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc b/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc +--- a/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc ++++ b/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc +@@ -234,7 +234,7 @@ void PhishingClassifier::VisualExtractionFinished(bool success) { + *bitmap_, base::BindOnce(&PhishingClassifier::OnVisualTfLiteModelDone, + weak_factory_.GetWeakPtr(), std::move(verdict))); + #else +- RunCallback(*verdict); ++ //RunCallback(*verdict); + #endif + } + diff --git a/components/search/ntp_features.cc b/components/search/ntp_features.cc --- a/components/search/ntp_features.cc +++ b/components/search/ntp_features.cc -@@ -501,4 +501,7 @@ std::vector GetModulesOrder() { +@@ -544,4 +544,7 @@ std::vector GetModulesOrder() { base::SplitResult::SPLIT_WANT_NONEMPTY); } @@ -485,7 +541,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc b/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc --- a/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc +++ b/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc -@@ -584,6 +584,7 @@ void DocumentSpeculationRules::UpdateSpeculationCandidates() { +@@ -599,6 +599,7 @@ void DocumentSpeculationRules::UpdateSpeculationCandidates() { return; } @@ -496,9 +552,9 @@ diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculat diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -2969,7 +2969,7 @@ - { - // https://crbug.com/1126305 +@@ -2961,7 +2961,7 @@ + // + // It also has some feature params defined throughout the codebase. name: "Prerender2", - status: "stable", + status: "test", diff --git a/build/cromite_patches/Disable-all-promo-dialogs.patch b/build/cromite_patches/Disable-all-promo-dialogs.patch index 07391fcd0e84f5d464cc101409033b8a51e238f7..9481c1073588af9cd889e740415b0b7f8f78eb58 100644 --- a/build/cromite_patches/Disable-all-promo-dialogs.patch +++ b/build/cromite_patches/Disable-all-promo-dialogs.patch @@ -17,7 +17,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -1143,6 +1143,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1243,6 +1243,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { } private boolean maybeShowPromo(Profile profile) { @@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -143,7 +143,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -138,7 +138,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kEnterpriseHardwarePlatformAPIEnabled, false); @@ -40,18 +40,18 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u diff --git a/chrome/browser/ui/views/user_education/browser_feature_promo_controller.cc b/chrome/browser/ui/views/user_education/browser_feature_promo_controller.cc --- a/chrome/browser/ui/views/user_education/browser_feature_promo_controller.cc +++ b/chrome/browser/ui/views/user_education/browser_feature_promo_controller.cc -@@ -129,6 +129,7 @@ ui::ElementContext BrowserFeaturePromoController::GetAnchorContext() const { +@@ -132,6 +132,7 @@ ui::ElementContext BrowserFeaturePromoController::GetAnchorContext() const { bool BrowserFeaturePromoController::CanShowPromoForElement( ui::TrackedElement* anchor_element) const { + if ((true)) return false; auto* const profile = browser_view_->GetProfile(); - // Verify that there are no required notices pending. + // Turn off IPH while a required privacy interstitial is visible or pending. diff --git a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java b/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java --- a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java +++ b/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java -@@ -73,6 +73,7 @@ public class UserEducationHelper { +@@ -74,6 +74,7 @@ public class UserEducationHelper { } private void showIPH(Tracker tracker, IPHCommand iphCommand) { @@ -62,7 +62,7 @@ diff --git a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/ diff --git a/components/user_education/common/feature_promo_controller.cc b/components/user_education/common/feature_promo_controller.cc --- a/components/user_education/common/feature_promo_controller.cc +++ b/components/user_education/common/feature_promo_controller.cc -@@ -433,6 +433,7 @@ FeaturePromoResult FeaturePromoControllerCommon::CanShowPromoCommon( +@@ -589,6 +589,7 @@ FeaturePromoResult FeaturePromoControllerCommon::CanShowPromoCommon( const FeaturePromoSpecification** spec_out, std::unique_ptr* lifecycle_out, ui::TrackedElement** anchor_element_out) const { diff --git a/build/cromite_patches/Disable-conversion-measurement-api.patch b/build/cromite_patches/Disable-conversion-measurement-api.patch index 760603b75a195e0c3904f2424528b221324f4aea..5bf57fd033eb148dae357e69256e983ce438f8d8 100644 --- a/build/cromite_patches/Disable-conversion-measurement-api.patch +++ b/build/cromite_patches/Disable-conversion-measurement-api.patch @@ -11,7 +11,8 @@ being sent and being saved to disk, although it is currently in uncalled code. Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../browser/aw_content_browser_client.cc | 1 + + .../browser/aw_content_browser_client.cc | 3 + + .../chromium/android_webview/AwSettings.java | 4 +- chrome/android/java/AndroidManifest.xml | 4 - components/attribution_reporting/features.cc | 2 + .../origin_trials/features.cc | 2 + @@ -25,17 +26,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../attribution_storage_sql.cc | 8 +- content/browser/storage_partition_impl.cc | 9 - content/public/android/BUILD.gn | 2 - - .../browser/AttributionOsLevelManager.java | 296 +----------------- + .../browser/AttributionOsLevelManager.java | 312 +----------------- .../public/browser/content_browser_client.cc | 7 +- .../public/browser/navigation_controller.cc | 1 - .../Disable-conversion-measurement-api.inc | 1 + .../Disable-conversion-measurement-api.inc | 1 + + .../Disable-conversion-measurement-api.inc | 1 + .../Disable-conversion-measurement-api.inc | 9 + .../attribution/request_headers_internal.cc | 1 + .../network/public/cpp/attribution_utils.cc | 2 + third_party/blink/renderer/core/page/page.cc | 2 +- ui/events/android/motion_event_android.cc | 6 +- - 24 files changed, 64 insertions(+), 323 deletions(-) + 26 files changed, 72 insertions(+), 338 deletions(-) + create mode 100644 cromite_flags/content/common/features_cc/Disable-conversion-measurement-api.inc create mode 100644 cromite_flags/content/public/common/content_features_cc/Disable-conversion-measurement-api.inc create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Disable-conversion-measurement-api.inc create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-conversion-measurement-api.inc @@ -43,7 +46,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc --- a/android_webview/browser/aw_content_browser_client.cc +++ b/android_webview/browser/aw_content_browser_client.cc -@@ -1216,6 +1216,7 @@ network::mojom::AttributionSupport +@@ -1163,6 +1163,7 @@ network::mojom::AttributionSupport AwContentBrowserClient::GetAttributionSupport( AttributionReportingOsApiState state, content::WebContents* web_contents) { @@ -51,6 +54,36 @@ diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webv AwSettings* aw_settings = AwSettings::FromWebContents(web_contents); if (aw_settings && aw_settings->GetAttributionBehavior() == AwSettings::AttributionBehavior::DISABLED) { +@@ -1187,6 +1188,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( + const url::Origin* destination_origin, + const url::Origin* reporting_origin, + bool* can_bypass) { ++ if ((true)) ++ return false; + // Check if attribution reporting has been disabled. + // This method should not be called at all if the configured behavior is + // DISABLED. +diff --git a/android_webview/java/src/org/chromium/android_webview/AwSettings.java b/android_webview/java/src/org/chromium/android_webview/AwSettings.java +--- a/android_webview/java/src/org/chromium/android_webview/AwSettings.java ++++ b/android_webview/java/src/org/chromium/android_webview/AwSettings.java +@@ -162,7 +162,7 @@ public class AwSettings { + private boolean mSpatialNavigationEnabled; // Default depends on device features. + private boolean mEnableSupportedHardwareAcceleratedFeatures; + private int mMixedContentMode = WebSettings.MIXED_CONTENT_NEVER_ALLOW; +- private int mAttributionBehavior = AttributionBehavior.APP_SOURCE_AND_WEB_TRIGGER; ++ private int mAttributionBehavior = AttributionBehavior.DISABLED; + private boolean mCSSHexAlphaColorEnabled; + private boolean mScrollTopLeftInteropEnabled; + private boolean mWillSuppressErrorPage; +@@ -1689,7 +1689,7 @@ public class AwSettings { + public void setAttributionBehavior(@AttributionBehavior int behavior) { + synchronized (mAwSettingsLock) { + if (mAttributionBehavior != behavior) { +- mAttributionBehavior = behavior; ++ mAttributionBehavior = AttributionBehavior.DISABLED; + mEventHandler.updateWebkitPreferencesLocked(); + } + } diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml @@ -62,7 +95,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro @@ -386,7 +389,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro -@@ -1040,15 +1005,6 @@ by a child template that "extends" this file. +@@ -1048,15 +1013,6 @@ by a child template that "extends" this file. @@ -402,7 +405,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro -@@ -1304,12 +1260,6 @@ by a child template that "extends" this file. +@@ -1303,12 +1259,6 @@ by a child template that "extends" this file. {% endif %} @@ -418,31 +421,14 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java --- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java -@@ -6,9 +6,6 @@ package org.chromium.chrome.browser; +@@ -5,7 +5,6 @@ + package org.chromium.chrome.browser; import androidx.annotation.Nullable; - --import com.google.android.gms.common.ConnectionResult; --import com.google.android.gms.common.GoogleApiAvailability; - import org.chromium.base.ContextUtils; - import org.chromium.base.PackageUtils; import org.chromium.base.ResettersForTesting; -@@ -203,13 +200,7 @@ public abstract class AppHooks { - * same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}. - */ - public int isGoogleApiAvailableWithMinApkVersion(int minApkVersion) { -- int apkVersion = -- PackageUtils.getPackageVersion(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE); -- return apkVersion < 0 -- ? ConnectionResult.SERVICE_MISSING -- : apkVersion < minApkVersion -- ? ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED -- : ConnectionResult.SUCCESS; -+ return 1; /* SERVICE_MISSING*/ - } - - /** Returns a new {@link TrustedVaultClient.Backend} instance. */ + import org.chromium.chrome.browser.customtabs.CustomTabsConnection; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java @@ -810,7 +796,7 @@ diff --git a/chrome/android/modules/chrome_feature_modules.gni b/chrome/android/ import("//chrome/android/modules/stack_unwinder/stack_unwinder_module.gni") import("//chrome/android/modules/test_dummy/test_dummy_module.gni") import("//device/vr/buildflags/buildflags.gni") -@@ -37,7 +35,6 @@ if (enable_arcore) { +@@ -34,7 +32,6 @@ if (enable_arcore) { # Each new module needs to add a desc to one of the lists below. chrome_module_descs = [ @@ -920,7 +906,7 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p "//base:base_java", "//build/android:build_java", "//chrome/browser/device_reauth/android:java", -@@ -239,8 +237,6 @@ robolectric_binary("password_manager_junit_tests") { +@@ -246,8 +244,6 @@ robolectric_binary("password_manager_junit_tests") { ":settings_interface_java", ":test_support_java", ":unified_password_manager_proto_java", @@ -1000,17 +986,17 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java -@@ -19,9 +19,6 @@ import android.os.SystemClock; - import androidx.annotation.IntDef; +@@ -22,9 +22,6 @@ import androidx.annotation.IntDef; + import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; -import com.google.android.gms.common.GoogleApiAvailability; -import com.google.android.gms.common.api.ApiException; - import org.chromium.base.Callback; + import org.chromium.base.ContextUtils; import org.chromium.base.metrics.RecordHistogram; - import org.chromium.base.supplier.Supplier; -@@ -424,24 +421,6 @@ public class PasswordManagerHelper { +@@ -404,24 +401,6 @@ public class PasswordManagerHelper { } public static void launchGmsUpdate(Context context) { @@ -1035,7 +1021,7 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom } @VisibleForTesting -@@ -554,7 +533,7 @@ public class PasswordManagerHelper { +@@ -539,7 +518,7 @@ public class PasswordManagerHelper { CredentialManagerError.API_ERROR, CredentialManagerError.COUNT); @@ -1089,7 +1075,7 @@ diff --git a/chrome/browser/push_messaging/push_messaging_service_factory.cc b/c diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts --- a/chrome/browser/resources/settings/route.ts +++ b/chrome/browser/resources/settings/route.ts -@@ -59,8 +59,6 @@ function addPrivacyChildRoutes(r: Partial) { +@@ -60,8 +60,6 @@ function addPrivacyChildRoutes(r: Partial) { if (loadTimeData.getBoolean('enableSecurityKeysSubpage')) { r.SECURITY_KEYS = r.SECURITY.createChild('/securityKeys'); @@ -1110,7 +1096,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn "webui/internals/internals_ui.cc", "webui/internals/internals_ui.h", "webui/interstitials/interstitial_ui.cc", -@@ -510,7 +508,6 @@ static_library("ui") { +@@ -518,7 +516,6 @@ static_library("ui") { "//components/feedback/redaction_tool", "//components/find_in_page", "//components/flags_ui", @@ -1121,7 +1107,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/SigninFirstRunMediator.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/SigninFirstRunMediator.java --- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/SigninFirstRunMediator.java +++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/SigninFirstRunMediator.java -@@ -216,17 +216,11 @@ public class SigninFirstRunMediator +@@ -218,17 +218,11 @@ public class SigninFirstRunMediator boolean isMetricsReportingDisabledByPolicy = false; Log.i(TAG, "#onInitialLoadCompleted() hasPolicies:" + hasPolicies); if (hasPolicies) { @@ -1162,7 +1148,7 @@ diff --git a/chrome/browser/ui/webauthn/sheet_models.cc b/chrome/browser/ui/weba diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc -@@ -41,7 +41,6 @@ +@@ -37,7 +37,6 @@ #include "chrome/browser/ui/webui/download_internals/download_internals_ui.h" #include "chrome/browser/ui/webui/engagement/site_engagement_ui.h" #include "chrome/browser/ui/webui/flags/flags_ui.h" @@ -1170,7 +1156,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom #include "chrome/browser/ui/webui/internals/internals_ui.h" #include "chrome/browser/ui/webui/interstitials/interstitial_ui.h" #include "chrome/browser/ui/webui/intro/intro_ui.h" -@@ -471,8 +470,6 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, +@@ -451,8 +450,6 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, return &NewWebUI; if (url.host_piece() == chrome::kChromeUIFlagsHost) return &NewWebUI; @@ -1182,7 +1168,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom diff --git a/chrome/browser/webauthn/android/BUILD.gn b/chrome/browser/webauthn/android/BUILD.gn --- a/chrome/browser/webauthn/android/BUILD.gn +++ b/chrome/browser/webauthn/android/BUILD.gn -@@ -14,7 +14,6 @@ android_library("java") { +@@ -17,7 +17,6 @@ android_library("java") { deps = [ ":java_resources", ":jni_headers", @@ -1210,7 +1196,7 @@ diff --git a/chrome/browser/webauthn/android/java/src/org/chromium/chrome/browse import org.chromium.device.DeviceFeatureList; import org.chromium.device.DeviceFeatureMap; -@@ -296,37 +293,7 @@ public class CableAuthenticatorModuleProvider extends Fragment implements OnClic +@@ -291,37 +288,7 @@ public class CableAuthenticatorModuleProvider extends Fragment implements OnClic ok = false; } @@ -1252,7 +1238,7 @@ diff --git a/chrome/browser/webauthn/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.cc b/chrome/browser/webauthn/authenticator_request_dialog_model.cc --- a/chrome/browser/webauthn/authenticator_request_dialog_model.cc +++ b/chrome/browser/webauthn/authenticator_request_dialog_model.cc -@@ -1796,10 +1796,6 @@ void AuthenticatorRequestDialogModel::PopulateMechanisms() { +@@ -2137,10 +2137,6 @@ void AuthenticatorRequestDialogModel::PopulateMechanisms() { if (cable_ui_type_) { switch (*cable_ui_type_) { case AuthenticatorRequestDialogModel::CableUIType::CABLE_V2_2ND_FACTOR: @@ -1266,7 +1252,7 @@ diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.cc b/chr diff --git a/chrome/browser/webauthn/cablev2_devices.cc b/chrome/browser/webauthn/cablev2_devices.cc --- a/chrome/browser/webauthn/cablev2_devices.cc +++ b/chrome/browser/webauthn/cablev2_devices.cc -@@ -366,6 +366,9 @@ void AddPairing(Profile* profile, std::unique_ptr pairing) { +@@ -365,6 +365,9 @@ void AddPairing(Profile* profile, std::unique_ptr pairing) { // This is called when doing a QR-code pairing with a phone and the phone // sends long-term pairing information during the handshake. The pairing // information is saved in preferences for future operations. @@ -1279,7 +1265,7 @@ diff --git a/chrome/browser/webauthn/cablev2_devices.cc b/chrome/browser/webauth diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn --- a/chrome/test/android/BUILD.gn +++ b/chrome/test/android/BUILD.gn -@@ -288,8 +288,6 @@ android_library("chrome_java_integration_test_support") { +@@ -299,8 +299,6 @@ android_library("chrome_java_integration_test_support") { deps = [ ":chrome_java_test_support_common", @@ -1291,7 +1277,7 @@ diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java --- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java +++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java -@@ -2643,14 +2643,6 @@ public class ExternalNavigationHandler { +@@ -2555,14 +2555,6 @@ public class ExternalNavigationHandler { * @return Whether the given intent is going to open an Instant App. */ private static boolean isIntentToInstantApp(Intent intent) { @@ -1358,15 +1344,29 @@ diff --git a/components/externalauth/android/java/src/org/chromium/components/ex } /** -@@ -187,7 +181,6 @@ public class ExternalAuthUtils { +@@ -185,21 +179,6 @@ public class ExternalAuthUtils { + * @return true if and only if Google Play Services can be used + */ public boolean canUseGooglePlayServices(final UserRecoverableErrorHandler errorHandler) { - Context context = ContextUtils.getApplicationContext(); - final int resultCode = checkGooglePlayServicesAvailable(context); +- Context context = ContextUtils.getApplicationContext(); +- final int resultCode = checkGooglePlayServicesAvailable(context); - if (resultCode == ConnectionResult.SUCCESS) return true; - // resultCode is some kind of error. - Log.v(TAG, "Unable to use Google Play Services: %s", describeError(resultCode)); - if (isUserRecoverableError(resultCode)) { -@@ -256,11 +249,7 @@ public class ExternalAuthUtils { +- // resultCode is some kind of error. +- Log.v(TAG, "Unable to use Google Play Services: %s", describeError(resultCode)); +- if (isUserRecoverableError(resultCode)) { +- Runnable errorHandlerTask = +- new Runnable() { +- @Override +- public void run() { +- errorHandler.handleError(context, resultCode); +- } +- }; +- PostTask.runOrPostTask(TaskTraits.UI_DEFAULT, errorHandlerTask); +- } + return false; + } + +@@ -256,11 +235,7 @@ public class ExternalAuthUtils { * @return The code produced by calling the external code */ protected int checkGooglePlayServicesAvailable(final Context context) { @@ -1379,7 +1379,7 @@ diff --git a/components/externalauth/android/java/src/org/chromium/components/ex } /** -@@ -271,7 +260,7 @@ public class ExternalAuthUtils { +@@ -271,7 +246,7 @@ public class ExternalAuthUtils { * @return true If the code represents a user-recoverable error */ protected boolean isUserRecoverableError(final int errorCode) { @@ -1388,7 +1388,7 @@ diff --git a/components/externalauth/android/java/src/org/chromium/components/ex } /** -@@ -281,7 +270,7 @@ public class ExternalAuthUtils { +@@ -281,7 +256,7 @@ public class ExternalAuthUtils { * @return a textual description of the error code */ protected String describeError(final int errorCode) { @@ -2733,7 +2733,7 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java -@@ -41,42 +41,29 @@ public class CafExpandedControllerActivity extends FragmentActivity +@@ -40,42 +40,29 @@ public class CafExpandedControllerActivity extends FragmentActivity new MediaController.Delegate() { @Override public void play() { @@ -2779,7 +2779,7 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo } @Override -@@ -84,12 +71,6 @@ public class CafExpandedControllerActivity extends FragmentActivity +@@ -83,12 +70,6 @@ public class CafExpandedControllerActivity extends FragmentActivity long flags = PlaybackStateCompat.ACTION_REWIND | PlaybackStateCompat.ACTION_FAST_FORWARD; @@ -2792,7 +2792,7 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo return flags; } }; -@@ -181,20 +162,10 @@ public class CafExpandedControllerActivity extends FragmentActivity +@@ -178,20 +159,10 @@ public class CafExpandedControllerActivity extends FragmentActivity private void updateUi() { if (!mSessionController.isConnected()) return; @@ -3148,42 +3148,39 @@ diff --git a/components/signin/public/android/java/src/org/chromium/components/s diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/BUILD.gn --- a/components/webauthn/android/BUILD.gn +++ b/components/webauthn/android/BUILD.gn -@@ -8,8 +8,6 @@ import("//third_party/jni_zero/jni_zero.gni") +@@ -7,8 +7,6 @@ import("//third_party/jni_zero/jni_zero.gni") + generate_jni("jni_headers") { sources = [ - "java/src/org/chromium/components/webauthn/CredManSupportProvider.java", - "java/src/org/chromium/components/webauthn/Fido2Api.java", - "java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java", "java/src/org/chromium/components/webauthn/InternalAuthenticator.java", - "java/src/org/chromium/components/webauthn/WebAuthnBrowserBridge.java", - ] -@@ -30,15 +28,10 @@ android_library("java") { + "java/src/org/chromium/components/webauthn/WebauthnBrowserBridge.java", + "java/src/org/chromium/components/webauthn/cred_man/CredManSupportProvider.java", +@@ -30,11 +28,7 @@ android_library("java") { "java/src/org/chromium/components/webauthn/AuthenticatorImpl.java", - "java/src/org/chromium/components/webauthn/AuthenticatorIncognitoConfirmationBottomsheet.java", "java/src/org/chromium/components/webauthn/Barrier.java", -- "java/src/org/chromium/components/webauthn/CredManHelper.java", - "java/src/org/chromium/components/webauthn/CredManMetricsHelper.java", - "java/src/org/chromium/components/webauthn/CredManSupportProvider.java", - "java/src/org/chromium/components/webauthn/CredManUiModeRecommender.java", + "java/src/org/chromium/components/webauthn/CreateConfirmationUiDelegate.java", - "java/src/org/chromium/components/webauthn/Fido2Api.java", - "java/src/org/chromium/components/webauthn/Fido2ApiCall.java", - "java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java", +- "java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java", - "java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java", - "java/src/org/chromium/components/webauthn/FidoErrorResponseCallback.java", ++ "java/src/org/chromium/components/webauthn/ConditionalUiState.java", "java/src/org/chromium/components/webauthn/FidoIntentSender.java", "java/src/org/chromium/components/webauthn/GetAssertionResponseCallback.java", "java/src/org/chromium/components/webauthn/GetMatchingCredentialIdsResponseCallback.java", -@@ -53,9 +46,6 @@ android_library("java") { +@@ -60,9 +54,6 @@ android_library("java") { + jar_excluded_patterns = [ "*/cred_man/CredManUiModeRecommender.class" ] deps = [ - ":java_resources", - "$google_play_services_package:google_play_services_base_java", - "$google_play_services_package:google_play_services_basement_java", - "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", + "//base/version_info/android:version_constants_java", "//build/android:build_java", - "//components/browser_ui/bottomsheet/android:java", -@@ -116,8 +106,6 @@ android_library("test_support_java") { +@@ -119,8 +110,6 @@ android_library("test_support_java") { source_set("android") { sources = [ "cred_man_support.h", @@ -3192,31 +3189,21 @@ diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/ "internal_authenticator_android.cc", "internal_authenticator_android.h", "webauthn_browser_bridge.cc", +@@ -187,7 +176,6 @@ robolectric_library("junit") { + ":delegate_public_java", + ":java", + ":test_support_java", +- "$google_play_services_package:google_play_services_tasks_java", + "//base:base_java", + "//base:base_java_test_support", + "//base:base_junit_test_support", diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java -@@ -14,7 +14,6 @@ import android.util.Pair; - import androidx.annotation.Nullable; - - import org.chromium.base.Callback; --import org.chromium.base.PackageUtils; - import org.chromium.base.metrics.RecordHistogram; - import org.chromium.blink.mojom.Authenticator; - import org.chromium.blink.mojom.AuthenticatorStatus; -@@ -68,9 +67,6 @@ public final class AuthenticatorImpl implements Authenticator { - /** The payment information to be added to the "clientDataJson". */ - private PaymentOptions mPayment; - -- /** Caches the GMS Core package version. */ -- private int mGmsCorePackageVersion; -- - private MakeCredential_Response mMakeCredentialCallback; - private GetAssertion_Response mGetAssertionCallback; - // A queue is used to store pending IsUserVerifyingPlatformAuthenticatorAvailable request -@@ -79,14 +75,6 @@ public final class AuthenticatorImpl implements Authenticator { - // situation does not matter because all pending requests will return the same value. - private Queue> - mIsUserVerifyingPlatformAuthenticatorAvailableCallbackQueue = new LinkedList<>(); +@@ -67,14 +67,6 @@ public final class AuthenticatorImpl implements Authenticator { + // Similar to the above, but for pending isConditionalMediationAvailable request callbacks. + private Queue + mIsConditionalMediationAvailableCallbackQueue = new LinkedList<>(); - private Fido2CredentialRequest mPendingFido2CredentialRequest; - private Set mUnclosedFido2CredentialRequests = new HashSet<>(); - @@ -3228,14 +3215,10 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut /** * Builds the Authenticator service implementation. -@@ -113,21 +101,6 @@ public final class AuthenticatorImpl implements Authenticator { - mOrigin = mRenderFrameHost.getLastCommittedOrigin(); - mTopOrigin = topOrigin; +@@ -104,19 +96,6 @@ public final class AuthenticatorImpl implements Authenticator { mCreateConfirmationUiDelegate = createConfirmationUiDelegate; -- -- mGmsCorePackageVersion = PackageUtils.getPackageVersion(GMSCORE_PACKAGE_NAME); -- } -- + } + - public static void overrideFido2CredentialRequestForTesting(Fido2CredentialRequest request) { - sFido2CredentialRequestOverrideForTesting = request; - } @@ -3247,24 +3230,12 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - Fido2CredentialRequest request = new Fido2CredentialRequest(mIntentSender); - mUnclosedFido2CredentialRequests.add(request); - return request; - } - +- } +- /** -@@ -157,11 +130,9 @@ public final class AuthenticatorImpl implements Authenticator { - - mMakeCredentialCallback = callback; - mIsOperationPending = true; -- if (mGmsCorePackageVersion < GMSCORE_MIN_VERSION) { -- onError(AuthenticatorStatus.NOT_IMPLEMENTED); -- return; -- } - -+ // Fido2 not supported on Bromite -+ onError(AuthenticatorStatus.NOT_IMPLEMENTED); - if (mCreateConfirmationUiDelegate != null) { - if (!mCreateConfirmationUiDelegate.show( - () -> continueMakeCredential(options, callback), -@@ -175,15 +146,6 @@ public final class AuthenticatorImpl implements Authenticator { + * Called by InternalAuthenticatorAndroid, which facilitates WebAuthn for processes that + * originate from the browser process. Since the request is from the browser process, the +@@ -163,15 +142,6 @@ public final class AuthenticatorImpl implements Authenticator { private void continueMakeCredential( PublicKeyCredentialCreationOptions options, MakeCredential_Response callback) { @@ -3280,14 +3251,10 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut } @Override -@@ -197,22 +159,8 @@ public final class AuthenticatorImpl implements Authenticator { - mGetAssertionCallback = callback; - mIsOperationPending = true; - -- if (mGmsCorePackageVersion < GMSCORE_MIN_VERSION) { -- onError(AuthenticatorStatus.NOT_IMPLEMENTED); -- return; -- } +@@ -190,18 +160,6 @@ public final class AuthenticatorImpl implements Authenticator { + onError(AuthenticatorStatus.NOT_IMPLEMENTED); + return; + } - - mPendingFido2CredentialRequest = getFido2CredentialRequest(); - mPendingFido2CredentialRequest.handleGetAssertionRequest( @@ -3300,19 +3267,13 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - mPayment, - (status, response) -> onSignResponse(status, response), - status -> onError(status)); -+ // Fido2 not supported on Bromite -+ onError(AuthenticatorStatus.NOT_IMPLEMENTED); } @Override -@@ -225,17 +173,8 @@ public final class AuthenticatorImpl implements Authenticator { - callback.call(isUvpaa); - }; - -- if (mGmsCorePackageVersion < GMSCORE_MIN_VERSION) { -- decoratedCallback.call(false); -- return; -- } +@@ -218,13 +176,6 @@ public final class AuthenticatorImpl implements Authenticator { + decoratedCallback.call(false); + return; + } - - mIsUserVerifyingPlatformAuthenticatorAvailableCallbackQueue.add(decoratedCallback); - getFido2CredentialRequest() @@ -3320,28 +3281,13 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - mContext, - isUvpaa -> - onIsUserVerifyingPlatformAuthenticatorAvailableResponse(isUvpaa)); -+ decoratedCallback.call(false); -+ return; } /** -@@ -244,7 +183,7 @@ public final class AuthenticatorImpl implements Authenticator { - * version. - */ - public boolean isGetMatchingCredentialIdsSupported() { -- return mGmsCorePackageVersion >= GMSCORE_MIN_VERSION_GET_MATCHING_CRED_IDS; -+ return false; - } - - /** -@@ -261,39 +200,13 @@ public final class AuthenticatorImpl implements Authenticator { - byte[][] credentialIds, - boolean requireThirdPartyPayment, - GetMatchingCredentialIdsResponseCallback callback) { -- if (mGmsCorePackageVersion < GMSCORE_MIN_VERSION_GET_MATCHING_CRED_IDS) { -- callback.onResponse(new ArrayList()); -- return; -- } +@@ -245,15 +196,6 @@ public final class AuthenticatorImpl implements Authenticator { + callback.onResponse(new ArrayList()); + return; + } - - getFido2CredentialRequest() - .handleGetMatchingCredentialIdsRequest( @@ -3351,32 +3297,25 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - requireThirdPartyPayment, - callback, - status -> onError(status)); -+ callback.onResponse(new ArrayList()); } @Override - public void isConditionalMediationAvailable( - final IsConditionalMediationAvailable_Response callback) { -- if (mGmsCorePackageVersion < GMSCORE_MIN_VERSION -- || Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { -- callback.call(false); -- return; -- } +@@ -265,14 +207,6 @@ public final class AuthenticatorImpl implements Authenticator { + callback.call(false); + return; + } - - // If the gmscore and chromium versions are out of sync for some reason, this method will - // return true but chrome will ignore conditional requests. Android surfaces only platform - // credentials on conditional requests, use IsUVPAA as a proxy for availability. -- mIsUserVerifyingPlatformAuthenticatorAvailableCallbackQueue.add(callback); +- mIsConditionalMediationAvailableCallbackQueue.add(callback); - getFido2CredentialRequest() - .handleIsUserVerifyingPlatformAuthenticatorAvailableRequest( -- mContext, -- isUvpaa -> -- onIsUserVerifyingPlatformAuthenticatorAvailableResponse(isUvpaa)); -+ callback.call(false); +- mContext, isUvpaa -> onIsConditionalMediationAvailableResponse(isUvpaa)); } @Override -@@ -305,8 +218,6 @@ public final class AuthenticatorImpl implements Authenticator { +@@ -284,8 +218,6 @@ public final class AuthenticatorImpl implements Authenticator { if (!mIsOperationPending || mGetAssertionCallback == null) { return; } @@ -3385,7 +3324,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut } /** Callbacks for receiving responses from the internal handlers. */ -@@ -346,7 +257,6 @@ public final class AuthenticatorImpl implements Authenticator { +@@ -330,7 +262,6 @@ public final class AuthenticatorImpl implements Authenticator { } else if (mGetAssertionCallback != null) { mGetAssertionCallback.call(status, null, null); } @@ -3393,7 +3332,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut cleanupRequest(); } -@@ -354,13 +264,10 @@ public final class AuthenticatorImpl implements Authenticator { +@@ -338,13 +269,10 @@ public final class AuthenticatorImpl implements Authenticator { mIsOperationPending = false; mMakeCredentialCallback = null; mGetAssertionCallback = null; @@ -3407,133 +3346,171 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut cleanupRequest(); } -diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/CredManMetricsHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/CredManMetricsHelper.java ---- a/components/webauthn/android/java/src/org/chromium/components/webauthn/CredManMetricsHelper.java -+++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/CredManMetricsHelper.java -@@ -7,7 +7,6 @@ package org.chromium.components.webauthn; - import androidx.annotation.IntDef; - - import org.chromium.base.metrics.RecordHistogram; --import org.chromium.components.webauthn.Fido2CredentialRequest.ConditionalUiState; +diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java +new file mode 100644 +--- /dev/null ++++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java +@@ -0,0 +1,15 @@ ++// Copyright 2018 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++package org.chromium.components.webauthn; ++ ++public enum ConditionalUiState { ++ NONE, ++ WAITING_FOR_RP_ID_VALIDATION, ++ WAITING_FOR_CREDENTIAL_LIST, ++ WAITING_FOR_SELECTION, ++ REQUEST_SENT_TO_PLATFORM, ++ CANCEL_PENDING, ++ CANCEL_PENDING_RP_ID_VALIDATION_COMPLETE, ++} +diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/GmsCoreUtils.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/GmsCoreUtils.java +--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/GmsCoreUtils.java ++++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/GmsCoreUtils.java +@@ -7,24 +7,13 @@ package org.chromium.components.webauthn; + import org.chromium.base.PackageUtils; - /** - * This class is responsible for emitting histograms regarding CredMan usage in -@@ -94,22 +93,4 @@ public class CredManMetricsHelper { - RecordHistogram.recordTimesHistogram( - "WebAuthentication.Android.CredManPrepareRequestDuration", durationMs); - } + public class GmsCoreUtils { +- private static final String GMSCORE_PACKAGE_NAME = "com.google.android.gms"; +- private static final int GMSCORE_MIN_VERSION_GET_MATCHING_CRED_IDS = 223300000; +- private static final int GMSCORE_MIN_VERSION_HYBRID_API = 231206000; +- private static final int GMSCORE_MIN_VERSION_RESULT_RECEIVER = 240700000; +- static final int GMSCORE_MIN_VERSION = 16890000; - -- public void reportGetCredentialMetrics( -- @CredManGetRequestEnum int value, ConditionalUiState conditionalUiState) { -- assert !(conditionalUiState == ConditionalUiState.NONE) -- || !(value == CredManGetRequestEnum.SUCCESS_PASSWORD) -- : "Passwords cannot be received from modal requests!"; -- if (conditionalUiState == ConditionalUiState.NONE) { -- RecordHistogram.recordEnumeratedHistogram( -- "WebAuthentication.Android.CredManModalRequests", -- value, -- CredManGetRequestEnum.NUM_ENTRIES); -- return; +- private static int sGmsCorePackageVersion; +- + public static int getGmsCoreVersion() { +- if (sGmsCorePackageVersion == 0) { +- sGmsCorePackageVersion = PackageUtils.getPackageVersion(GMSCORE_PACKAGE_NAME); - } -- RecordHistogram.recordEnumeratedHistogram( -- "WebAuthentication.Android.CredManConditionalRequest", -- value, -- CredManGetRequestEnum.NUM_ENTRIES); -- } +- return sGmsCorePackageVersion; ++ return 0; + } + + /** Returns whether WebAuthn APIs are supported in GMSCore. */ + public static boolean isWebauthnSupported() { +- return getGmsCoreVersion() >= GMSCORE_MIN_VERSION; ++ return false; + } + + /** +@@ -33,16 +22,16 @@ public class GmsCoreUtils { + * version. + */ + public static boolean isGetMatchingCredentialIdsSupported() { +- return getGmsCoreVersion() >= GMSCORE_MIN_VERSION_GET_MATCHING_CRED_IDS; ++ return false; + } + + /** Returns whether the hybrid sign in API is supported. */ + public static boolean isHybridClientApiSupported() { +- return getGmsCoreVersion() >= GMSCORE_MIN_VERSION_HYBRID_API; ++ return false; + } + + /** Returns whether makeCredential / getAssertion APIs support responding via ResultReceiver. */ + static boolean isResultReceiverSupported() { +- return getGmsCoreVersion() >= GMSCORE_MIN_VERSION_RESULT_RECEIVER; ++ return false; + } } -diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java ---- a/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java -+++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java -@@ -8,10 +8,6 @@ import android.app.PendingIntent; - import android.net.Uri; - import android.os.Parcel; - --import com.google.android.gms.tasks.OnFailureListener; --import com.google.android.gms.tasks.OnSuccessListener; --import com.google.android.gms.tasks.Task; -- - import org.chromium.base.ContextUtils; - import org.chromium.blink.mojom.PublicKeyCredentialCreationOptions; - import org.chromium.blink.mojom.PublicKeyCredentialRequestOptions; -@@ -41,77 +37,6 @@ public class Fido2ApiCallHelper { +diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java +--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java ++++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java +@@ -6,7 +6,6 @@ package org.chromium.components.webauthn; + + import androidx.annotation.IntDef; + +-import org.chromium.components.webauthn.Fido2ApiCall.Fido2ApiCallParams; + import org.chromium.components.webauthn.cred_man.AppCredManRequestDecorator; + import org.chromium.components.webauthn.cred_man.BrowserCredManRequestDecorator; + import org.chromium.components.webauthn.cred_man.CredManRequestDecorator; +@@ -37,17 +36,6 @@ public class WebauthnModeProvider { + return null; } - public boolean arePlayServicesAvailable() { -- return ExternalAuthUtils.getInstance() -- .canUseGooglePlayServices(new UserRecoverableErrorHandler.Silent()); -- } -- -- public void invokeFido2GetCredentials( -- String relyingPartyId, -- OnSuccessListener> successCallback, -- OnFailureListener failureCallback) { -- Fido2ApiCall call = new Fido2ApiCall(ContextUtils.getApplicationContext()); -- Parcel args = call.start(); -- Fido2ApiCall.WebAuthnCredentialDetailsListResult result = -- new Fido2ApiCall.WebAuthnCredentialDetailsListResult(); -- args.writeStrongBinder(result); -- args.writeString(relyingPartyId); -- -- Task> task = -- call.run( -- Fido2ApiCall.METHOD_BROWSER_GETCREDENTIALS, -- Fido2ApiCall.TRANSACTION_GETCREDENTIALS, -- args, -- result); -- task.addOnSuccessListener(successCallback); -- task.addOnFailureListener(failureCallback); -- } -- -- public void invokeFido2MakeCredential( -- PublicKeyCredentialCreationOptions options, -- Uri uri, -- byte[] clientDataHash, -- OnSuccessListener successCallback, -- OnFailureListener failureCallback) -- throws NoSuchAlgorithmException { -- Fido2ApiCall call = new Fido2ApiCall(ContextUtils.getApplicationContext()); -- Parcel args = call.start(); -- Fido2ApiCall.PendingIntentResult result = new Fido2ApiCall.PendingIntentResult(); -- args.writeStrongBinder(result); -- args.writeInt(1); // This indicates that the following options are present. -- -- Fido2Api.appendBrowserMakeCredentialOptionsToParcel(options, uri, clientDataHash, args); -- -- Task task = -- call.run( -- Fido2ApiCall.METHOD_BROWSER_REGISTER, -- Fido2ApiCall.TRANSACTION_REGISTER, -- args, -- result); -- task.addOnSuccessListener(successCallback); -- task.addOnFailureListener(failureCallback); +- public Fido2ApiCallParams getFido2ApiCallParams() { +- if (mMode == WebauthnMode.APP) { +- return Fido2ApiCall.APP_API; +- } else if (mMode == WebauthnMode.BROWSER || mMode == WebauthnMode.CHROME) { +- return Fido2ApiCall.BROWSER_API; +- } else { +- assert false : "WebauthnMode not set! Please set using WebAuthnModeProvider.setMode()"; +- } +- return null; - } - -- public void invokeFido2GetAssertion( -- PublicKeyCredentialRequestOptions options, -- Uri uri, -- byte[] clientDataHash, -- OnSuccessListener successCallback, -- OnFailureListener failureCallback) { -- Fido2ApiCall call = new Fido2ApiCall(ContextUtils.getApplicationContext()); -- Parcel args = call.start(); -- Fido2ApiCall.PendingIntentResult result = new Fido2ApiCall.PendingIntentResult(); -- args.writeStrongBinder(result); -- args.writeInt(1); // This indicates that the following options are present. -- -- Fido2Api.appendBrowserGetAssertionOptionsToParcel( -- options, uri, clientDataHash, /* tunnelId= */ null, args); -- Task task = -- call.run( -- Fido2ApiCall.METHOD_BROWSER_SIGN, -- Fido2ApiCall.TRANSACTION_SIGN, -- args, -- result); -- task.addOnSuccessListener(successCallback); -- task.addOnFailureListener(failureCallback); -+ return false; + public @WebauthnMode int getWebauthnMode() { + return mMode; } - } +diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManHelper.java +--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManHelper.java ++++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManHelper.java +@@ -29,8 +29,7 @@ import org.chromium.blink.mojom.MakeCredentialAuthenticatorResponse; + import org.chromium.blink.mojom.PublicKeyCredentialCreationOptions; + import org.chromium.blink.mojom.PublicKeyCredentialRequestOptions; + import org.chromium.components.webauthn.Barrier; +-import org.chromium.components.webauthn.Fido2CredentialRequest.ConditionalUiState; +-import org.chromium.components.webauthn.Fido2CredentialRequestJni; ++import org.chromium.components.webauthn.ConditionalUiState; + import org.chromium.components.webauthn.GetAssertionResponseCallback; + import org.chromium.components.webauthn.MakeCredentialResponseCallback; + import org.chromium.components.webauthn.WebauthnBrowserBridge; +@@ -93,8 +92,7 @@ public class CredManHelper { + Callback errorCallback) { + mContext = context; + mFrameHost = frameHost; +- final String requestAsJson = +- Fido2CredentialRequestJni.get().createOptionsToJson(options.serialize()); ++ final String requestAsJson = ""; + final byte[] clientDataHash = + maybeClientDataHash != null + ? maybeClientDataHash +@@ -148,9 +146,7 @@ public class CredManHelper { + String json = + data.getString( + CRED_MAN_PREFIX + "BUNDLE_KEY_REGISTRATION_RESPONSE_JSON"); +- byte[] responseSerialized = +- Fido2CredentialRequestJni.get() +- .makeCredentialResponseFromJson(json); ++ byte[] responseSerialized = null; + if (responseSerialized == null) { + Log.e( + TAG, +@@ -418,8 +414,7 @@ public class CredManHelper { + data.getString( + CRED_MAN_PREFIX + + "BUNDLE_KEY_AUTHENTICATION_RESPONSE_JSON"); +- byte[] responseSerialized = +- Fido2CredentialRequestJni.get().getCredentialResponseFromJson(json); ++ byte[] responseSerialized = null; + if (responseSerialized == null) { + Log.e( + TAG, +@@ -584,8 +579,7 @@ public class CredManHelper { + boolean requestPasswords, + boolean preferImmediatelyAvailable, + boolean ignoreGpm) { +- final String requestAsJson = +- Fido2CredentialRequestJni.get().getOptionsToJson(options.serialize()); ++ final String requestAsJson = ""; + final byte[] clientDataHash = + maybeClientDataHash != null + ? maybeClientDataHash +diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java +--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java ++++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java +@@ -7,7 +7,7 @@ package org.chromium.components.webauthn.cred_man; + import androidx.annotation.IntDef; + + import org.chromium.base.metrics.RecordHistogram; +-import org.chromium.components.webauthn.Fido2CredentialRequest.ConditionalUiState; ++import org.chromium.components.webauthn.ConditionalUiState; + + /** + * This class is responsible for emitting histograms regarding CredMan usage in diff --git a/content/browser/push_messaging/push_messaging_manager.cc b/content/browser/push_messaging/push_messaging_manager.cc --- a/content/browser/push_messaging/push_messaging_manager.cc +++ b/content/browser/push_messaging/push_messaging_manager.cc @@ -3563,7 +3540,7 @@ diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn -@@ -3450,10 +3450,6 @@ if (is_android) { +@@ -3471,10 +3471,6 @@ if (is_android) { testonly = true sources = content_java_sources_needing_jni deps = [ @@ -3679,7 +3656,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. } # TODO(crbug.com/1366370) Remove this once all depencencies are updated to -@@ -774,238 +765,6 @@ if (!limit_android_deps) { +@@ -777,255 +768,6 @@ if (!limit_android_deps) { ] } @@ -3733,7 +3710,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_base_java") { -- aar_path = "libs/com_google_android_gms_play_services_base/play-services-base-18.0.1.aar" +- aar_path = "libs/com_google_android_gms_play_services_base/play-services-base-18.1.0.aar" - info_path = "libs/com_google_android_gms_play_services_base/com_google_android_gms_play_services_base.info" - enable_bytecode_checks = false - deps = [ @@ -3887,6 +3864,23 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_tflite_java_java") { +- aar_path = "libs/com_google_android_gms_play_services_tflite_java/play-services-tflite-java-16.0.1.aar" +- info_path = "libs/com_google_android_gms_play_services_tflite_java/com_google_android_gms_play_services_tflite_java.info" +- enable_bytecode_checks = false +- deps = [ +- ":org_tensorflow_tensorflow_lite_api_java", +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "$google_play_services_package:google_play_services_tflite_impl_java", +- ] +- extract_native_libraries = true +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_vision_java") { - aar_path = "libs/com_google_android_gms_play_services_vision/play-services-vision-20.1.3.aar" - info_path = "libs/com_google_android_gms_play_services_vision/com_google_android_gms_play_services_vision.info" @@ -3918,7 +3912,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. if (!defined(material_design_target)) { android_aar_prebuilt("com_google_android_material_material_java") { -@@ -1054,73 +813,6 @@ if (!limit_android_deps) { +@@ -1074,73 +816,6 @@ if (!limit_android_deps) { } } @@ -3992,10 +3986,11 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. if (!defined(guava_android_target)) { java_prebuilt("com_google_guava_guava_android_java") { -@@ -1893,341 +1585,6 @@ if (!limit_android_deps) { +@@ -1941,364 +1616,6 @@ if (!limit_android_deps) { + "//third_party/androidx:*", ] } - +- - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_android_datatransport_transport_api_java") { @@ -4137,6 +4132,27 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_tflite_impl_java") { +- aar_path = "libs/com_google_android_gms_play_services_tflite_impl/play-services-tflite-impl-16.0.1.aar" +- info_path = "libs/com_google_android_gms_play_services_tflite_impl/com_google_android_gms_play_services_tflite_impl.info" +- enable_bytecode_checks = false +- +- # To remove visibility constraint, add this dependency to +- # //third_party/android_deps/build.gradle. +- visibility = [ +- ":*", +- "//third_party/androidx:*", +- ] +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_tasks_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - android_aar_prebuilt("com_google_android_play_core_common_java") { - aar_path = "libs/com_google_android_play_core_common/core-common-2.0.2.aar" - info_path = "libs/com_google_android_play_core_common/com_google_android_play_core_common.info" @@ -4331,9 +4347,10 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. - [ "$google_play_services_package:google_play_services_basement_java" ] - } - } - +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. java_prebuilt("com_squareup_javawriter_java") { + jar_path = "libs/com_squareup_javawriter/javawriter-2.1.1.jar" diff --git a/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn b/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn --- a/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn +++ b/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn diff --git a/build/cromite_patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch b/build/cromite_patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch index 7bb14da31c640526b42be2a1181dcfd2eb47403a..70f454c0a0e96d11af1f07898dcde97afb7a46d7 100644 --- a/build/cromite_patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch +++ b/build/cromite_patches/Remove-blocklisted-URLs-upon-bookmark-creation.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java -@@ -20,6 +20,11 @@ import org.chromium.components.bookmarks.BookmarkItem; +@@ -19,6 +19,11 @@ import org.chromium.components.bookmarks.BookmarkItem; import org.chromium.components.bookmarks.BookmarkType; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; @@ -22,7 +22,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBo /** * Helper class for managing the UI flow for bookmarking the active tab and kicking off the backend. * Shows a snackbar if a new bookmark was added. If the bookmark already exists, kicks off edit -@@ -31,6 +36,7 @@ public class TabBookmarker { +@@ -30,6 +35,7 @@ public class TabBookmarker { private final Supplier mBottomSheetControllerSupplier; private final Supplier mSnackbarManagerSupplier; private final boolean mIsCustomTab; @@ -30,7 +30,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBo /** * Constructor. -@@ -106,6 +112,13 @@ public class TabBookmarker { +@@ -105,6 +111,13 @@ public class TabBookmarker { return; } diff --git a/build/cromite_patches/Remove-help-menu-item.patch b/build/cromite_patches/Remove-help-menu-item.patch index 874f18eb5b1aeb9dd25762c1eedfb7a842f20279..85c1e8f921eb0fd64b9c1a5ba7be87358585deb8 100644 --- a/build/cromite_patches/Remove-help-menu-item.patch +++ b/build/cromite_patches/Remove-help-menu-item.patch @@ -29,7 +29,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml --- a/chrome/android/java/res/menu/main_menu.xml +++ b/chrome/android/java/res/menu/main_menu.xml -@@ -155,9 +155,6 @@ found in the LICENSE file. +@@ -158,9 +158,6 @@ found in the LICENSE file. @@ -53,7 +53,7 @@ diff --git a/chrome/android/java/res/menu/save_password_preferences_action_bar_m diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java -@@ -458,9 +458,6 @@ public class KeyboardShortcuts { +@@ -464,9 +464,6 @@ public class KeyboardShortcuts { case KeyEvent.KEYCODE_BUTTON_START: if (currentTab != null && currentTab.canGoForward()) currentTab.goForward(); return true; @@ -66,7 +66,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -2590,15 +2590,6 @@ public abstract class ChromeActivity +@@ -2591,15 +2591,6 @@ public abstract class ChromeActivity final Tab currentTab = getActivityTab(); @@ -118,14 +118,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java -@@ -721,7 +721,6 @@ public abstract class BaseCustomTabActivity extends ChromeActivity { @@ -62,7 +62,7 @@ diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/ }); mPropertyModel.set( -@@ -1547,13 +1534,6 @@ class StartSurfaceMediator +@@ -1562,13 +1549,6 @@ class StartSurfaceMediator ThreadUtils.postOnUiThread( () -> { if (mOmniboxStub != null) { @@ -79,7 +79,7 @@ diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/ diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceMediator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceMediator.java --- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceMediator.java +++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/TasksSurfaceMediator.java -@@ -34,7 +34,6 @@ import org.chromium.chrome.browser.lens.LensMetrics; +@@ -32,7 +32,6 @@ import org.chromium.chrome.browser.lens.LensMetrics; import org.chromium.chrome.browser.ntp.IncognitoCookieControlsManager; import org.chromium.chrome.browser.omnibox.OmniboxFocusReason; import org.chromium.chrome.browser.omnibox.OmniboxStub; @@ -87,7 +87,7 @@ diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/ import org.chromium.chrome.browser.tasks.tab_management.TabSwitcher.TabSwitcherViewObserver; import org.chromium.components.content_settings.CookieControlsEnforcement; import org.chromium.ui.modelutil.PropertyModel; -@@ -116,12 +115,6 @@ class TasksSurfaceMediator implements TabSwitcherViewObserver { +@@ -111,12 +110,6 @@ class TasksSurfaceMediator implements TabSwitcherViewObserver { if (feedReliabilityLogger != null) { feedReliabilityLogger.onVoiceSearch(); } @@ -111,7 +111,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaSess import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.TabModel; -@@ -127,24 +126,6 @@ public class UmaSessionStats { +@@ -131,24 +130,6 @@ public class UmaSessionStats { updatePreferences(); updateMetricsServiceState(); DefaultBrowserInfo.logDefaultBrowserStats(); @@ -139,25 +139,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaSess diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java -@@ -64,7 +64,6 @@ import org.chromium.chrome.browser.native_page.ContextMenuManager; +@@ -69,7 +69,6 @@ import org.chromium.chrome.browser.native_page.ContextMenuManager; import org.chromium.chrome.browser.omnibox.OmniboxFocusReason; import org.chromium.chrome.browser.omnibox.OmniboxStub; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteControllerProvider; -import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; import org.chromium.chrome.browser.profiles.Profile; - import org.chromium.chrome.browser.profiles.ProfileKey; -@@ -118,8 +117,7 @@ public class NewTabPage - InvalidationAwareThumbnailProvider, + import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; +@@ -128,7 +127,6 @@ public class NewTabPage TemplateUrlServiceObserver, BrowserControlsStateProvider.Observer, -- FeedSurfaceDelegate, -- VoiceRecognitionHandler.Observer { -+ FeedSurfaceDelegate { + FeedSurfaceDelegate, +- VoiceRecognitionHandler.Observer, + ModuleDelegateHost { private static final String TAG = "NewTabPage"; - // Key for the scroll position data that may be stored in a navigation entry. -@@ -148,7 +146,6 @@ public class NewTabPage +@@ -158,7 +156,6 @@ public class NewTabPage protected boolean mSearchProviderHasLogo; protected OmniboxStub mOmniboxStub; @@ -165,7 +163,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. // The timestamp at which the constructor was called. protected final long mConstructedTimeNs; -@@ -243,8 +240,7 @@ public class NewTabPage +@@ -260,8 +257,7 @@ public class NewTabPage @Override public boolean isVoiceSearchEnabled() { @@ -175,7 +173,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. } @Override -@@ -252,24 +248,6 @@ public class NewTabPage +@@ -269,24 +265,6 @@ public class NewTabPage if (mIsDestroyed) return; FeedReliabilityLogger feedReliabilityLogger = mFeedSurfaceProvider.getReliabilityLogger(); @@ -200,7 +198,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. } @Override -@@ -834,12 +812,6 @@ public class NewTabPage +@@ -869,12 +847,6 @@ public class NewTabPage mOmniboxStub.addUrlFocusChangeListener(feedReliabilityLogger); } } @@ -213,7 +211,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. } @Override -@@ -850,11 +822,6 @@ public class NewTabPage +@@ -885,11 +857,6 @@ public class NewTabPage } } @@ -225,7 +223,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. /** Adds an observer to be notified on most visited tile clicks. */ public void addMostVisitedTileClickObserver(MostVisitedTileClickObserver observer) { mMostVisitedTileClickObservers.addObserver(observer); -@@ -874,10 +841,6 @@ public class NewTabPage +@@ -909,10 +876,6 @@ public class NewTabPage RecordUserAction.record("MobileNTPShown"); mJankTracker.startTrackingScenario(JankScenario.NEW_TAB_PAGE); SuggestionsMetrics.recordSurfaceVisible(); @@ -236,7 +234,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. } /** Records UMA for the NTP being hidden and the time spent on it. */ -@@ -887,7 +850,6 @@ public class NewTabPage +@@ -922,7 +885,6 @@ public class NewTabPage "NewTabPage.TimeSpent", (System.nanoTime() - mLastShownTimeNs) / TimeUtils.NANOSECONDS_PER_MILLISECOND); SuggestionsMetrics.recordSurfaceHidden(); @@ -244,7 +242,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. } /** -@@ -971,9 +933,6 @@ public class NewTabPage +@@ -1006,9 +968,6 @@ public class NewTabPage } mFeedSurfaceProvider.destroy(); mTab.getWindowAndroid().removeContextMenuCloseListener(mContextMenuManager); @@ -257,7 +255,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxMediator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxMediator.java -@@ -89,7 +89,6 @@ class SearchBoxMediator implements DestroyObserver, NativeInitObserver { +@@ -90,7 +90,6 @@ class SearchBoxMediator implements DestroyObserver, NativeInitObserver { mContext, R.color.default_icon_color_accent1_container_tint_list) : ThemeUtils.getThemedToolbarIconTint( mContext, BrandedColorScheme.APP_DEFAULT); @@ -268,7 +266,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/Sear diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java -@@ -55,7 +55,6 @@ import org.chromium.chrome.browser.omnibox.styles.OmniboxResourceProvider; +@@ -57,7 +57,6 @@ import org.chromium.chrome.browser.omnibox.styles.OmniboxResourceProvider; import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsDropdownScrollListener; import org.chromium.chrome.browser.omnibox.suggestions.action.OmniboxActionDelegateImpl; import org.chromium.chrome.browser.omnibox.suggestions.history_clusters.HistoryClustersProcessor.OpenHistoryClustersDelegate; @@ -276,7 +274,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer; import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher; import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; -@@ -477,13 +476,11 @@ public class SearchActivity extends AsyncInitializationActivity +@@ -489,13 +488,11 @@ public class SearchActivity extends AsyncInitializationActivity // will navigate to Tabbed mode. Investigate whether this can inflate // the tabbed mode layout in the background instead of CCTs. CustomTabsConnection.getInstance().warmup(0); @@ -291,7 +289,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se RecordUserAction.record("SearchWidget.WidgetSelected"); getActivityDelegate().onFinishDeferredInitialization(); -@@ -558,7 +555,6 @@ public class SearchActivity extends AsyncInitializationActivity +@@ -598,7 +595,6 @@ public class SearchActivity extends AsyncInitializationActivity mSearchBox.beginQuery( searchType, getOptionalIntentQuery(), @@ -420,8 +418,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar -import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.page_info.ChromePageInfo; import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations; - import org.chromium.chrome.browser.price_tracking.PriceTrackingFeatures; -@@ -2479,10 +2478,6 @@ public class ToolbarManager + import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -2533,10 +2532,6 @@ public class ToolbarManager return mLocationBar.getOmniboxStub(); } @@ -429,9 +427,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar - return mLocationBar.getVoiceRecognitionHandler(); - } - - /** - * Called whenever the NTP could have been entered or exited (e.g. tab content changed, tab - * navigated to from the tab strip/tab switcher, etc.). If the user is on a tablet and indeed + /** Returns the app menu coordinator. */ + public @Nullable MenuButtonCoordinator getOverviewModeMenuButtonCoordinator() { + return mOverviewModeMenuButtonCoordinator; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java @@ -444,7 +442,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer; import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher; -@@ -290,7 +288,6 @@ public class RootUiCoordinator +@@ -292,7 +290,6 @@ public class RootUiCoordinator protected OneshotSupplier mIntentMetadataOneshotSupplier; protected OneshotSupplierImpl mPromoShownOneshotSupplier = new OneshotSupplierImpl<>(); protected Supplier mStartSurfaceParentTabSupplier; @@ -452,7 +450,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi private MediaCaptureOverlayController mCaptureController; private @Nullable ScrollCaptureManager mScrollCaptureManager; protected final ActivityLifecycleDispatcher mActivityLifecycleDispatcher; -@@ -622,9 +619,6 @@ public class RootUiCoordinator +@@ -643,9 +640,6 @@ public class RootUiCoordinator } if (mToolbarManager != null) { @@ -462,7 +460,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi mToolbarManager.destroy(); mToolbarManager = null; } -@@ -1278,19 +1272,11 @@ public class RootUiCoordinator +@@ -1286,19 +1280,11 @@ public class RootUiCoordinator new VoiceToolbarButtonController.VoiceSearchDelegate() { @Override public boolean isVoiceSearchEnabled() { @@ -483,7 +481,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi } }; TranslateToolbarButtonController translateToolbarButtonController = -@@ -1456,13 +1442,6 @@ public class RootUiCoordinator +@@ -1464,13 +1450,6 @@ public class RootUiCoordinator if (!mSupportsAppMenuSupplier.getAsBoolean()) { mToolbarManager.getToolbar().disableMenuButton(); } @@ -511,15 +509,15 @@ diff --git a/chrome/browser/ui/android/omnibox/BUILD.gn b/chrome/browser/ui/andr diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBar.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBar.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBar.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBar.java -@@ -9,7 +9,6 @@ import android.view.ViewGroup; - +@@ -10,7 +10,6 @@ import android.view.ViewGroup; import androidx.annotation.Nullable; + import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsDropdownScrollListener; -import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.tab.Tab; /** Container that holds the {@link UrlBar} and SSL state related with the current {@link Tab}. */ -@@ -81,11 +80,6 @@ public interface LocationBar { +@@ -82,11 +81,6 @@ public interface LocationBar { */ View getSecurityIconView(); @@ -534,7 +532,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java -@@ -41,7 +41,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteDelegate; +@@ -41,7 +41,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.OmniboxLoadUrlParams; import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsDropdownScrollListener; import org.chromium.chrome.browser.omnibox.suggestions.basic.BasicSuggestionProcessor.BookmarkState; import org.chromium.chrome.browser.omnibox.suggestions.history_clusters.HistoryClustersProcessor.OpenHistoryClustersDelegate; @@ -542,7 +540,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManager; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; -@@ -456,13 +455,6 @@ public class LocationBarCoordinator +@@ -460,13 +459,6 @@ public class LocationBarCoordinator return mLocationBarLayout.getSecurityIconView(); } @@ -556,7 +554,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow @Nullable @Override public OmniboxStub getOmniboxStub() { -@@ -768,11 +760,6 @@ public class LocationBarCoordinator +@@ -762,11 +754,6 @@ public class LocationBarCoordinator // End tablet-specific methods. @@ -571,15 +569,15 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java -@@ -53,7 +53,6 @@ import org.chromium.chrome.browser.omnibox.geo.GeolocationHeader; - import org.chromium.chrome.browser.omnibox.status.StatusCoordinator; +@@ -52,7 +52,6 @@ import org.chromium.chrome.browser.omnibox.status.StatusCoordinator; import org.chromium.chrome.browser.omnibox.styles.OmniboxResourceProvider; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; + import org.chromium.chrome.browser.omnibox.suggestions.OmniboxLoadUrlParams; -import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesState; import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManager; -@@ -91,8 +90,6 @@ import java.util.function.BooleanSupplier; +@@ -92,8 +91,6 @@ import java.util.function.BooleanSupplier; class LocationBarMediator implements LocationBarDataProvider.Observer, OmniboxStub, @@ -588,7 +586,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow UrlBarDelegate, OnKeyListener, ComponentCallbacks, -@@ -156,7 +153,6 @@ class LocationBarMediator +@@ -157,7 +154,6 @@ class LocationBarMediator }; private final LocationBarLayout mLocationBarLayout; @@ -596,7 +594,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow private final LocationBarDataProvider mLocationBarDataProvider; private StatusCoordinator mStatusCoordinator; private AutocompleteCoordinator mAutocompleteCoordinator; -@@ -230,8 +226,6 @@ class LocationBarMediator +@@ -231,8 +227,6 @@ class LocationBarMediator mLocationBarDataProvider.addObserver(this); mOverrideUrlLoadingDelegate = overrideUrlLoadingDelegate; mLocaleManager = localeManager; @@ -605,7 +603,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow mProfileSupplier = profileSupplier; mProfileSupplier.addObserver(mCallbackController.makeCancelable(this::setProfile)); mPrivacyPreferencesManager = privacyPreferencesManager; -@@ -276,8 +270,6 @@ class LocationBarMediator +@@ -277,8 +271,6 @@ class LocationBarMediator mAutocompleteCoordinator = null; mUrlCoordinator = null; mPrivacyPreferencesManager = null; @@ -614,7 +612,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow mLocationBarDataProvider.removeObserver(this); mDeferredNativeRunnables.clear(); mUrlFocusChangeListeners.clear(); -@@ -406,11 +398,6 @@ class LocationBarMediator +@@ -407,11 +399,6 @@ class LocationBarMediator mLocationBarLayout.setUnfocusedWidth(unfocusedWidth); } @@ -626,7 +624,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow /* package */ void setLensControllerForTesting(LensController lensController) { mLensController = lensController; } -@@ -652,8 +639,6 @@ class LocationBarMediator +@@ -662,8 +649,6 @@ class LocationBarMediator mUrlCoordinator.setKeyboardVisibility(false, false); RecordUserAction.record("MobileOmniboxVoiceSearch"); @@ -635,7 +633,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow } /** package */ -@@ -1122,9 +1107,7 @@ class LocationBarMediator +@@ -1132,9 +1117,7 @@ class LocationBarMediator private boolean shouldShowMicButton() { if (shouldShowDeleteButton()) return false; @@ -646,7 +644,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow return false; } boolean isToolbarMicEnabled = mIsToolbarMicEnabledSupplier.getAsBoolean(); -@@ -1141,6 +1124,7 @@ class LocationBarMediator +@@ -1151,6 +1134,7 @@ class LocationBarMediator } private boolean shouldShowLensButton() { @@ -654,7 +652,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow if (shouldShowDeleteButton()) return false; // When this method is called on UI inflation, return false as the native is not ready. -@@ -1148,15 +1132,6 @@ class LocationBarMediator +@@ -1158,15 +1142,6 @@ class LocationBarMediator return false; } @@ -670,7 +668,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow // When this method is called after native initialized, check omnibox conditions and Lens // eligibility. if (mIsTablet && mShouldShowButtonsWhenUnfocused) { -@@ -1358,16 +1333,6 @@ class LocationBarMediator +@@ -1371,16 +1346,6 @@ class LocationBarMediator } } @@ -687,11 +685,12 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow @Override public void addUrlFocusChangeListener(UrlFocusChangeListener listener) { mUrlFocusChangeListeners.addObserver(listener); -@@ -1383,30 +1348,11 @@ class LocationBarMediator +@@ -1396,33 +1361,13 @@ class LocationBarMediator return mUrlHasFocus; } - @Override ++ // @Override public void clearOmniboxFocus() { setUrlBarFocus( /* shouldBeFocused= */ false, /* pastedText= */ null, OmniboxFocusReason.UNFOCUS); @@ -706,7 +705,10 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow - - @Override - public void loadUrlFromVoice(String url) { -- loadUrl(url, PageTransition.TYPED, 0, /* openInNewTab= */ false); +- loadUrl( +- new OmniboxLoadUrlParams.Builder(url, PageTransition.TYPED) +- .setOpenInNewTab(false) +- .build()); - } - - @Override @@ -715,10 +717,11 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow - } - - @Override ++ // @Override public void setSearchQuery(String query) { if (TextUtils.isEmpty(query)) return; -@@ -1429,20 +1375,6 @@ class LocationBarMediator +@@ -1445,20 +1390,6 @@ class LocationBarMediator mUrlCoordinator.setKeyboardVisibility(true, false); } @@ -768,15 +771,15 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteController.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteController.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteController.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteController.java -@@ -13,7 +13,6 @@ import org.jni_zero.NativeMethods; - +@@ -14,7 +14,6 @@ import org.jni_zero.NativeMethods; import org.chromium.base.lifetime.Destroyable; + import org.chromium.chrome.browser.omnibox.OmniboxFeatures; import org.chromium.chrome.browser.omnibox.OmniboxMetrics; -import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler.VoiceResult; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tab.Tab; import org.chromium.components.omnibox.AutocompleteMatch; -@@ -330,25 +329,6 @@ public class AutocompleteController implements Destroyable { +@@ -345,25 +344,6 @@ public class AutocompleteController implements Destroyable { mNativeController, match.getNativeObjectRef(), matchIndex, webContents); } @@ -800,9 +803,9 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow - } - /** - * Updates AQS/SBS parameters on the selected match that we will navigate to and returns the - * updated URL. -@@ -442,11 +422,6 @@ public class AutocompleteController implements Destroyable { + * Updates searchbox stats parameters on the selected match that we will navigate to and + * returns the updated URL. +@@ -457,11 +437,6 @@ public class AutocompleteController implements Destroyable { Tab getMatchingTabForSuggestion( long nativeAutocompleteControllerAndroid, long nativeAutocompleteMatch); @@ -817,7 +820,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java -@@ -46,7 +46,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.header.HeaderViewBinder; +@@ -45,7 +45,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.header.HeaderViewBinder; import org.chromium.chrome.browser.omnibox.suggestions.history_clusters.HistoryClustersProcessor.OpenHistoryClustersDelegate; import org.chromium.chrome.browser.omnibox.suggestions.tail.TailSuggestionView; import org.chromium.chrome.browser.omnibox.suggestions.tail.TailSuggestionViewBinder; @@ -825,7 +828,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.tab.Tab; -@@ -352,13 +351,6 @@ public class AutocompleteCoordinator implements UrlFocusChangeListener, UrlTextC +@@ -344,13 +343,6 @@ public class AutocompleteCoordinator implements UrlFocusChangeListener, UrlTextC mRecycledViewPool.onNativeInitialized(); } @@ -842,7 +845,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java -@@ -37,7 +37,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteController.On +@@ -38,7 +38,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteDelegate.Auto import org.chromium.chrome.browser.omnibox.suggestions.action.OmniboxActionFactoryImpl; import org.chromium.chrome.browser.omnibox.suggestions.basic.BasicSuggestionProcessor.BookmarkState; import org.chromium.chrome.browser.omnibox.suggestions.history_clusters.HistoryClustersProcessor.OpenHistoryClustersDelegate; @@ -850,7 +853,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.share.ShareDelegate; -@@ -427,14 +426,6 @@ class AutocompleteMediator +@@ -430,14 +429,6 @@ class AutocompleteMediator mShouldPreventOmniboxAutocomplete = prevent; } diff --git a/build/cromite_patches/Remove-window-name-on-cross-origin-navigation.patch b/build/cromite_patches/Remove-window-name-on-cross-origin-navigation.patch index ea8ce8194e371da6a8e2bd056ed33255d11e7c10..cd71879df3927a78b83c67010a3845a104a7aa2f 100644 --- a/build/cromite_patches/Remove-window-name-on-cross-origin-navigation.patch +++ b/build/cromite_patches/Remove-window-name-on-cross-origin-navigation.patch @@ -21,7 +21,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc --- a/third_party/blink/renderer/core/loader/document_loader.cc +++ b/third_party/blink/renderer/core/loader/document_loader.cc -@@ -2702,7 +2702,7 @@ void DocumentLoader::CommitNavigation() { +@@ -2696,7 +2696,7 @@ void DocumentLoader::CommitNavigation() { // that the name would be nulled and if the name is accessed after we will // fire a UseCounter. If we decide to move forward with this change, we'd // actually clean the name here. @@ -30,7 +30,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p frame_->Tree().ExperimentalSetNulledName(); } -@@ -2713,6 +2713,7 @@ void DocumentLoader::CommitNavigation() { +@@ -2707,6 +2707,7 @@ void DocumentLoader::CommitNavigation() { // TODO(shuuran): CrossSiteCrossBrowsingContextGroupSetNulledName will just // record the fact that the name would be nulled and if the name is accessed // after we will fire a UseCounter. diff --git a/build/cromite_patches/Restore-LastTabStandingTracker.patch b/build/cromite_patches/Restore-LastTabStandingTracker.patch index d585583f8f6a3c4149fe195d700788c4dd06a71b..6c067ce047d50ecfbab96dc8f281aa51e0d41466 100644 --- a/build/cromite_patches/Restore-LastTabStandingTracker.patch +++ b/build/cromite_patches/Restore-LastTabStandingTracker.patch @@ -11,11 +11,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../last_tab_standing_tracker_factory.cc | 35 +++++++++++ .../last_tab_standing_tracker_factory.h | 40 +++++++++++++ .../last_tab_standing_tracker_observer.h | 24 ++++++++ - .../last_tab_standing_tracker_tab_helper.cc | 42 +++++++++++++ + .../last_tab_standing_tracker_tab_helper.cc | 45 ++++++++++++++ .../last_tab_standing_tracker_tab_helper.h | 37 ++++++++++++ ...hrome_browser_main_extra_parts_profiles.cc | 2 + chrome/browser/ui/tab_helpers.cc | 2 + - 11 files changed, 293 insertions(+) + 11 files changed, 296 insertions(+) create mode 100644 chrome/browser/permissions/last_tab_standing_tracker.cc create mode 100644 chrome/browser/permissions/last_tab_standing_tracker.h create mode 100644 chrome/browser/permissions/last_tab_standing_tracker_factory.cc @@ -27,7 +27,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -1939,6 +1939,16 @@ static_library("browser") { +@@ -1935,6 +1935,16 @@ static_library("browser") { ] } @@ -54,8 +54,8 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c +#include "chrome/browser/permissions/last_tab_standing_tracker_factory.h" #include "chrome/browser/profiles/off_the_record_profile_impl.h" #include "chrome/browser/profiles/profile.h" - #include "chrome/browser/search_engines/template_url_service_factory.h" -@@ -60,6 +61,7 @@ HostContentSettingsMapFactory::HostContentSettingsMapFactory() + #include "chrome/browser/profiles/profiles_state.h" +@@ -57,6 +58,7 @@ HostContentSettingsMapFactory::HostContentSettingsMapFactory() // Guest mode. .WithGuest(ProfileSelection::kOwnInstance) .Build()) { @@ -290,7 +290,7 @@ diff --git a/chrome/browser/permissions/last_tab_standing_tracker_tab_helper.cc new file mode 100644 --- /dev/null +++ b/chrome/browser/permissions/last_tab_standing_tracker_tab_helper.cc -@@ -0,0 +1,42 @@ +@@ -0,0 +1,45 @@ +// Copyright 2020 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -318,12 +318,15 @@ new file mode 100644 + auto* last_tab_standing_tracker = + LastTabStandingTrackerFactory::GetForBrowserContext( + web_contents()->GetBrowserContext()); -+ if (last_committed_origin_) { -+ last_tab_standing_tracker->WebContentsUnloadedOrigin( -+ *last_committed_origin_); ++ // can be null in guest profiles ++ if (last_tab_standing_tracker) { ++ if (last_committed_origin_) { ++ last_tab_standing_tracker->WebContentsUnloadedOrigin( ++ *last_committed_origin_); ++ } ++ last_tab_standing_tracker->WebContentsLoadedOrigin(new_origin); ++ last_committed_origin_ = std::move(new_origin); + } -+ last_tab_standing_tracker->WebContentsLoadedOrigin(new_origin); -+ last_committed_origin_ = std::move(new_origin); +} + +LastTabStandingTrackerTabHelper::LastTabStandingTrackerTabHelper( @@ -378,7 +381,7 @@ new file mode 100644 diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -111,6 +111,7 @@ +@@ -112,6 +112,7 @@ #include "chrome/browser/password_manager/password_reuse_manager_factory.h" #include "chrome/browser/password_manager/profile_password_store_factory.h" #include "chrome/browser/permissions/adaptive_quiet_notification_permission_ui_enabler.h" @@ -386,7 +389,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc #include "chrome/browser/permissions/notifications_engagement_service_factory.h" #include "chrome/browser/permissions/one_time_permissions_tracker_factory.h" #include "chrome/browser/permissions/origin_keyed_permission_action_service_factory.h" -@@ -947,6 +948,7 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -963,6 +964,7 @@ void ChromeBrowserMainExtraPartsProfiles:: #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) OnDeviceTailModelServiceFactory::GetInstance(); #endif @@ -398,14 +401,14 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc --- a/chrome/browser/ui/tab_helpers.cc +++ b/chrome/browser/ui/tab_helpers.cc @@ -52,6 +52,7 @@ + #include "chrome/browser/page_info/page_info_features.h" #include "chrome/browser/page_load_metrics/page_load_metrics_initialize.h" #include "chrome/browser/password_manager/chrome_password_manager_client.h" - #include "chrome/browser/performance_manager/public/user_tuning/user_performance_tuning_manager.h" +#include "chrome/browser/permissions/last_tab_standing_tracker_tab_helper.h" #include "chrome/browser/permissions/one_time_permissions_tracker_helper.h" #include "chrome/browser/predictors/loading_predictor_factory.h" #include "chrome/browser/predictors/loading_predictor_tab_helper.h" -@@ -390,6 +391,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -400,6 +401,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { HistoryClustersTabHelper::CreateForWebContents(web_contents); HttpsOnlyModeTabHelper::CreateForWebContents(web_contents); webapps::InstallableManager::CreateForWebContents(web_contents); diff --git a/build/cromite_patches/Restore-Search-Ready-Omnibox-flag.patch b/build/cromite_patches/Restore-Search-Ready-Omnibox-flag.patch index 8d9c9fda4c197324b501984f9ea59f4a520b8c03..3c11602bd2c161e307ddaedcce9bb9e98c7b442c 100644 --- a/build/cromite_patches/Restore-Search-Ready-Omnibox-flag.patch +++ b/build/cromite_patches/Restore-Search-Ready-Omnibox-flag.patch @@ -23,25 +23,25 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -281,6 +281,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -250,6 +250,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kReaderModeInCCT, &kRecordSuppressionMetrics, &kReengagementNotification, + &kSearchReadyOmniboxFeature, - &kRelatedSearches, &kRelatedSearchesAllLanguage, &kReportParentalControlSitesChild, + &kSearchEnginesPromoV3, diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -316,6 +316,7 @@ public abstract class ChromeFeatureList { +@@ -325,6 +325,7 @@ public abstract class ChromeFeatureList { public static final String MESSAGES_FOR_ANDROID_ADS_BLOCKED = "MessagesForAndroidAdsBlocked"; public static final String MESSAGES_FOR_ANDROID_INFRASTRUCTURE = "MessagesForAndroidInfrastructure"; + public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox"; public static final String MESSAGES_FOR_ANDROID_PERMISSION_UPDATE = "MessagesForAndroidPermissionUpdate"; - public static final String NEW_TAB_SEARCH_ENGINE_URL_ANDROID = "NewTabSearchEngineUrlAndroid"; + public static final String MIGRATE_ACCOUNT_MANAGEMENT_SETTINGS_TO_CAPABILITIES = diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java @@ -61,9 +61,9 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow DropdownItemViewInfoListBuilder( @NonNull Supplier tabSupplier, -@@ -92,9 +94,11 @@ class DropdownItemViewInfoListBuilder { - mDividerLineProcessor = new DividerLineProcessor(context); - } +@@ -87,9 +89,11 @@ class DropdownItemViewInfoListBuilder { + + mGroupSeparatorProcessor = new GroupSeparatorProcessor(context); mHeaderProcessor = new HeaderProcessor(context); - registerSuggestionProcessor( + mEditUrlSuggestionProcessor = @@ -75,7 +75,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow registerSuggestionProcessor( new AnswerSuggestionProcessor(context, host, textProvider, mImageSupplier)); registerSuggestionProcessor( -@@ -211,6 +215,9 @@ class DropdownItemViewInfoListBuilder { +@@ -206,6 +210,9 @@ class DropdownItemViewInfoListBuilder { /** Signals that native initialization has completed. */ void onNativeInitialized() { mHeaderProcessor.onNativeInitialized(); diff --git a/build/cromite_patches/Restore-Simplified-NTP-launch.patch b/build/cromite_patches/Restore-Simplified-NTP-launch.patch index c3a86c1fbcf14cee7cadaf3d6e798ea2e44d3e5f..622313d96e8589681d8c694535e17f119d4cd523 100644 --- a/build/cromite_patches/Restore-Simplified-NTP-launch.patch +++ b/build/cromite_patches/Restore-Simplified-NTP-launch.patch @@ -14,14 +14,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../feedback/SimplifiedNtpFeedbackSource.java | 38 +++++++++++ .../identity_disc/IdentityDiscController.java | 5 +- .../NativePageNavigationDelegateImpl.java | 4 +- - .../chrome/browser/ntp/NewTabPageLayout.java | 30 ++++++++- + .../chrome/browser/ntp/NewTabPageLayout.java | 31 ++++++++- .../SuggestionsNavigationDelegate.java | 17 +++++ .../flags/android/chrome_feature_list.cc | 1 + - .../browser/flags/ChromeFeatureList.java | 1 + + .../browser/flags/ChromeFeatureList.java | 3 +- .../Restore-Simplified-NTP-launch.inc | 12 ++++ - .../Restore-Simplified-NTP-launch.inc | 3 + + .../Restore-Simplified-NTP-launch.inc | 5 ++ .../Restore-Simplified-NTP-launch.inc | 1 + - 15 files changed, 182 insertions(+), 5 deletions(-) + 15 files changed, 186 insertions(+), 6 deletions(-) create mode 100644 chrome/android/java/res/layout/ntp_shortcuts.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc @@ -31,7 +31,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -550,6 +550,7 @@ chrome_java_resources = [ +@@ -545,6 +545,7 @@ chrome_java_resources = [ "java/res/layout/new_tab_page_incognito.xml", "java/res/layout/new_tab_page_layout.xml", "java/res/layout/new_tab_page_tile_grid_placeholder.xml", @@ -42,7 +42,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -619,6 +619,7 @@ chrome_java_sources = [ +@@ -626,6 +626,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/feedback/FeedFeedbackCollector.java", "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java", "java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java", @@ -53,7 +53,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java diff --git a/chrome/android/java/res/layout/new_tab_page_layout.xml b/chrome/android/java/res/layout/new_tab_page_layout.xml --- a/chrome/android/java/res/layout/new_tab_page_layout.xml +++ b/chrome/android/java/res/layout/new_tab_page_layout.xml -@@ -44,6 +44,13 @@ found in the LICENSE file. +@@ -37,6 +37,13 @@ found in the LICENSE file. android:layout_marginTop="16dp" android:visibility="gone"/> @@ -194,7 +194,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java --- a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java -@@ -171,7 +171,10 @@ public class IdentityDiscController +@@ -175,7 +175,10 @@ public class IdentityDiscController mButtonData.setButtonSpec( buttonSpecWithDrawableAndDescription(mButtonData.getButtonSpec(), email)); @@ -224,7 +224,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -38,6 +38,7 @@ import org.chromium.chrome.browser.cryptids.ProbabilisticCryptidRenderer; +@@ -18,6 +18,7 @@ import android.util.AttributeSet; + import android.view.DragEvent; + import android.view.Gravity; + import android.view.LayoutInflater; ++import android.view.ViewStub; + import android.view.View; + import android.view.ViewGroup; + import android.widget.LinearLayout; +@@ -37,6 +38,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareT import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.lens.LensEntryPoint; @@ -232,7 +240,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL import org.chromium.chrome.browser.lens.LensMetrics; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.logo.LogoBridge.Logo; -@@ -106,6 +107,8 @@ public class NewTabPageLayout extends LinearLayout { +@@ -103,6 +105,8 @@ public class NewTabPageLayout extends LinearLayout { private @Nullable DisplayStyleObserver mDisplayStyleObserver; private CallbackController mCallbackController = new CallbackController(); @@ -241,7 +249,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL /** * Whether the tiles shown in the layout have finished loading. * With {@link #mHasShownView}, it's one of the 2 flags used to track initialisation progress. -@@ -307,6 +310,7 @@ public class NewTabPageLayout extends LinearLayout { +@@ -309,6 +313,7 @@ public class NewTabPageLayout extends LinearLayout { isScrollableMvtEnabled(), searchProviderIsGoogle); initializeSearchBoxBackground(); @@ -249,7 +257,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL initializeSearchBoxTextView(); initializeVoiceSearchButton(); initializeLensButton(); -@@ -769,12 +773,15 @@ public class NewTabPageLayout extends LinearLayout { +@@ -782,12 +787,15 @@ public class NewTabPageLayout extends LinearLayout { marginLayoutParams.leftMargin = lateralPaddingsForNtp; marginLayoutParams.rightMargin = lateralPaddingsForNtp; } @@ -266,7 +274,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL marginLayoutParams.bottomMargin = getResources() .getDimensionPixelSize(R.dimen.tile_carousel_layout_bottom_margin); -@@ -782,7 +789,10 @@ public class NewTabPageLayout extends LinearLayout { +@@ -795,7 +803,10 @@ public class NewTabPageLayout extends LinearLayout { // Set a bit more top padding on the tile grid if there is no logo. ViewGroup.LayoutParams layoutParams = mMvTilesContainerLayout.getLayoutParams(); layoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT; @@ -278,7 +286,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL marginLayoutParams.bottomMargin = getGridMvtBottomMargin(); } -@@ -1109,6 +1119,22 @@ public class NewTabPageLayout extends LinearLayout { +@@ -1093,6 +1104,22 @@ public class NewTabPageLayout extends LinearLayout { return iphCommandBuilder; } @@ -338,25 +346,34 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -253,6 +253,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -223,6 +223,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kGridTabSwitcherAndroidAnimations, &kIncognitoReauthenticationForAndroid, &kIncognitoScreenshot, - &kInfobarScrollOptimization, + &kSimplifiedNTP, - &kInstanceSwitcher, &kInstantStart, - &kLensCameraAssistedSearch, + &kLensOnQuickActionSearchWidget, + &kMagicStackAndroid, diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -316,6 +316,7 @@ public abstract class ChromeFeatureList { - public static final String LOOKALIKE_NAVIGATION_URL_SUGGESTIONS_UI = +@@ -325,6 +325,7 @@ public abstract class ChromeFeatureList { "LookalikeUrlNavigationSuggestionsUI"; + public static final String MAGIC_STACK_ANDROID = "MagicStackAndroid"; public static final String MESSAGES_FOR_ANDROID_ADS_BLOCKED = "MessagesForAndroidAdsBlocked"; + public static final String SIMPLIFIED_NTP = "SimplifiedNTP"; public static final String MESSAGES_FOR_ANDROID_INFRASTRUCTURE = "MessagesForAndroidInfrastructure"; public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox"; +@@ -634,7 +635,7 @@ public abstract class ChromeFeatureList { + newCachedFlag(ACCOUNT_REAUTHENTICATION_RECENT_TIME_WINDOW, true); + public static final CachedFlag sStartSurfaceWithAccessibility = + newCachedFlag(START_SURFACE_WITH_ACCESSIBILITY, true); +- public static final CachedFlag sSurfacePolish = newCachedFlag(SURFACE_POLISH, true); ++ public static final CachedFlag sSurfacePolish = newCachedFlag(SURFACE_POLISH, false); + public static final CachedFlag sTabDragDropAsWindowAndroid = + newCachedFlag(TAB_DRAG_DROP_ANDROID, false); + public static final CachedFlag sTabGroupPaneAndroid = diff --git a/cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc b/cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc new file mode 100644 --- /dev/null @@ -378,10 +395,12 @@ diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/R new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-Simplified-NTP-launch.inc -@@ -0,0 +1,3 @@ +@@ -0,0 +1,5 @@ +CROMITE_FEATURE(kSimplifiedNTP, + "SimplifiedNTP", + base::FEATURE_ENABLED_BY_DEFAULT); ++ ++SET_CROMITE_FEATURE_DISABLED(kSurfacePolish); diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc new file mode 100644 --- /dev/null diff --git a/build/cromite_patches/Restore-adaptive-button-in-top-toolbar-customization.patch b/build/cromite_patches/Restore-adaptive-button-in-top-toolbar-customization.patch index bfde04d46f15390c01dbf7fa24a797c7d33b2a94..455ebcca3509ae01a2ccb790aab5237797587a0c 100644 --- a/build/cromite_patches/Restore-adaptive-button-in-top-toolbar-customization.patch +++ b/build/cromite_patches/Restore-adaptive-button-in-top-toolbar-customization.patch @@ -11,16 +11,18 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/share/ShareButtonController.java | 37 +++++++++++ chrome/browser/about_flags.cc | 6 -- chrome/browser/flag-metadata.json | 3 +- + .../flags/android/chrome_feature_list.cc | 5 ++ + .../browser/flags/ChromeFeatureList.java | 1 + .../AdaptiveToolbarButtonController.java | 6 +- .../adaptive/AdaptiveToolbarFeatures.java | 65 ++++++++++++++++++- .../AdaptiveToolbarStatePredictor.java | 9 ++- .../AdaptiveToolbarStatePredictorTest.java | 15 +++++ - 8 files changed, 132 insertions(+), 12 deletions(-) + 10 files changed, 138 insertions(+), 12 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java -@@ -43,6 +43,7 @@ import org.chromium.chrome.browser.sync.settings.ManageSyncSettings; +@@ -46,6 +46,7 @@ import org.chromium.chrome.browser.sync.settings.ManageSyncSettings; import org.chromium.chrome.browser.sync.settings.SignInPreference; import org.chromium.chrome.browser.sync.settings.SyncPromoPreference; import org.chromium.chrome.browser.sync.settings.SyncSettingsUtils; @@ -28,7 +30,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarStatePredictor; import org.chromium.chrome.browser.tracing.settings.DeveloperSettings; import org.chromium.chrome.browser.ui.signin.SyncPromoController; -@@ -241,7 +242,7 @@ public class MainSettings extends ChromeBaseSettingsFragment +@@ -247,7 +248,7 @@ public class MainSettings extends ChromeBaseSettingsFragment uiState -> { // We don't show the toolbar shortcut settings page if disabled from // finch. @@ -87,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareButt diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -707,18 +707,12 @@ const FeatureEntry::FeatureParam kAdaptiveButtonCustomization_Share[] = { +@@ -658,18 +658,12 @@ const FeatureEntry::FeatureParam kAdaptiveButtonCustomization_Share[] = { {"default_segment", "share"}, {"show_ui_only_after_ready", "false"}, {"ignore_segmentation_results", "true"}}; @@ -109,7 +111,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -47,9 +47,10 @@ +@@ -42,9 +42,10 @@ "expiry_milestone": 125 }, { @@ -121,6 +123,39 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js }, { "name": "adaptive-button-in-top-toolbar-translate", +diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc +--- a/chrome/browser/flags/android/chrome_feature_list.cc ++++ b/chrome/browser/flags/android/chrome_feature_list.cc +@@ -150,6 +150,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &history_clusters::internal::kJourneys, + &history_clusters::internal::kOmniboxAction, + &history_clusters::internal::kOmniboxHistoryClusterProvider, ++ &kAdaptiveButtonInTopToolbar, + &kAdaptiveButtonInTopToolbarTranslate, + &kAdaptiveButtonInTopToolbarAddToBookmarks, + &kAdaptiveButtonInTopToolbarCustomizationV2, +@@ -388,6 +389,10 @@ static jlong JNI_ChromeFeatureMap_GetNativeMap(JNIEnv* env) { + + // Alphabetical: + ++CROMITE_FEATURE(kAdaptiveButtonInTopToolbar, ++ "AdaptiveButtonInTopToolbar", ++ base::FEATURE_DISABLED_BY_DEFAULT); ++ + BASE_FEATURE(kAdaptiveButtonInTopToolbarTranslate, + "AdaptiveButtonInTopToolbarTranslate", + base::FEATURE_DISABLED_BY_DEFAULT); +diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java ++++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +@@ -142,6 +142,7 @@ public abstract class ChromeFeatureList { + } + + public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates"; ++ public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR = "AdaptiveButtonInTopToolbar"; + public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_TRANSLATE = + "AdaptiveButtonInTopToolbarTranslate"; + public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_ADD_TO_BOOKMARKS = diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java @@ -140,9 +175,9 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java -@@ -14,8 +14,18 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.profiles.Profile; - import org.chromium.chrome.browser.readaloud.ReadAloudFeatures; +@@ -17,8 +17,18 @@ import org.chromium.chrome.browser.readaloud.ReadAloudFeatures; + + import java.util.HashMap; -/** A utility class for handling feature flags used by {@link AdaptiveToolbarButtonController}. */ +/** A utility class for handling feature flags used by {@link AdaptiveToolbarButtonController}. * @@ -160,7 +195,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** Finch default group for new tab variation. */ static final String NEW_TAB = "new-tab"; -@@ -31,6 +41,7 @@ public class AdaptiveToolbarFeatures { +@@ -34,6 +44,7 @@ public class AdaptiveToolbarFeatures { private static final String VARIATION_PARAM_DISABLE_UI = "disable_ui"; private static final String VARIATION_PARAM_IGNORE_SEGMENTATION_RESULTS = "ignore_segmentation_results"; @@ -168,7 +203,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow private static final String VARIATION_PARAM_SHOW_UI_ONLY_AFTER_READY = "show_ui_only_after_ready"; @VisibleForTesting static final String VARIATION_PARAM_MIN_VERSION = "min_version_adaptive"; -@@ -94,6 +105,21 @@ public class AdaptiveToolbarFeatures { +@@ -102,6 +113,21 @@ public class AdaptiveToolbarFeatures { } } @@ -190,7 +225,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** * Returns whether the adaptive toolbar is enabled with segmentation and customization. * -@@ -219,11 +245,48 @@ public class AdaptiveToolbarFeatures { +@@ -242,11 +268,48 @@ public class AdaptiveToolbarFeatures { ChromeFeatureList.CONTEXTUAL_PAGE_ACTIONS, "enable_ui", true); } @@ -263,7 +298,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java -@@ -76,6 +76,21 @@ public class AdaptiveToolbarStatePredictorTest { +@@ -72,6 +72,21 @@ public class AdaptiveToolbarStatePredictorTest { statePredictor.recomputeUiState(verifyResultCallback(expected)); } diff --git a/build/cromite_patches/Restore-offline-indicator-v2-flag.patch b/build/cromite_patches/Restore-offline-indicator-v2-flag.patch index 45494d31b94834e9954783d07e93264dc93d0993..ec90f355a2c215a8cf1a06b088e659e782fd931b 100644 --- a/build/cromite_patches/Restore-offline-indicator-v2-flag.patch +++ b/build/cromite_patches/Restore-offline-indicator-v2-flag.patch @@ -6,14 +6,14 @@ Reverts acc8b6f4542703211e5f3c5181914fd3374c9e84 License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../indicator/OfflineDetector.java | 38 ++++++++++++++++++- + .../indicator/OfflineDetector.java | 40 ++++++++++++++++++- .../tabbed_mode/TabbedRootUiCoordinator.java | 8 +++- .../flags/android/chrome_feature_list.cc | 1 + .../browser/flags/ChromeFeatureList.java | 1 + .../Restore-offline-indicator-v2-flag.inc | 12 ++++++ .../Restore-offline-indicator-v2-flag.inc | 3 ++ .../Restore-offline-indicator-v2-flag.inc | 1 + - 7 files changed, 61 insertions(+), 3 deletions(-) + 7 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Restore-offline-indicator-v2-flag.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-offline-indicator-v2-flag.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-offline-indicator-v2-flag.inc @@ -29,18 +29,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in import androidx.annotation.VisibleForTesting; -@@ -16,8 +17,10 @@ import org.chromium.base.ApplicationStatus; - import org.chromium.base.Callback; +@@ -17,8 +18,12 @@ import org.chromium.base.Callback; import org.chromium.base.Log; import org.chromium.base.supplier.Supplier; + import org.chromium.base.version_info.VersionInfo; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector; import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector.ConnectionState; ++import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector; ++import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector.ConnectionState; +import org.chromium.components.variations.VariationsAssociatedData; - import org.chromium.components.version_info.VersionInfo; /** -@@ -127,8 +130,9 @@ class OfflineDetector + * Class that detects if the network is offline. Waits for the network to stablize before notifying +@@ -127,8 +132,9 @@ class OfflineDetector mIsForegroundCallback = isForegroundCallback; mContext = context; mHandler = new Handler(); @@ -52,7 +54,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in mUpdateOfflineStatusIndicatorDelayedRunnable = () -> { -@@ -384,4 +388,34 @@ class OfflineDetector +@@ -384,4 +390,34 @@ class OfflineDetector timeNeededAfterConnectionChangeFromOnlineToOffline), timeNeededAfterConnectionChangeFromAirplaneToOffline)); } @@ -90,7 +92,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -1003,7 +1003,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1101,7 +1101,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { private void initStatusIndicatorCoordinator(LayoutManagerImpl layoutManager) { // TODO(crbug.com/1035584): Disable on tablets for now as we need to do one or two extra // things for tablets. @@ -100,9 +102,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab return; } -@@ -1029,6 +1030,11 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { - mStatusIndicatorCoordinator.addObserver(mStatusIndicatorObserver); - mStatusIndicatorCoordinator.addObserver(mStatusBarColorController); +@@ -1135,6 +1136,11 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { + hubManager.setStatusIndicatorHeight(mStatusIndicatorHeight); + }); + // Don't initialize the offline indicator controller if the feature is disabled. + if (!ChromeFeatureList.isEnabled(ChromeFeatureList.OFFLINE_INDICATOR_V2)) { @@ -115,10 +117,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -263,6 +263,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { - &kNewTabSearchEngineUrlAndroid, +@@ -234,6 +234,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kNotificationPermissionVariant, &kNotificationPermissionBottomSheet, + &kOpenDownloadDialog, + &kOfflineIndicatorV2, &kPageAnnotationsService, &kPaintPreviewNewColdStartHeuristic, @@ -126,14 +128,14 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -328,6 +328,7 @@ public abstract class ChromeFeatureList { +@@ -342,6 +342,7 @@ public abstract class ChromeFeatureList { public static final String NOTIFICATION_PERMISSION_VARIANT = "NotificationPermissionVariant"; public static final String NOTIFICATION_PERMISSION_BOTTOM_SHEET = "NotificationPermissionBottomSheet"; + public static final String OFFLINE_INDICATOR_V2 = "OfflineIndicatorV2"; - public static final String OFFLINE_PAGES_DESCRIPTIVE_FAIL_STATUS = - "OfflinePagesDescriptiveFailStatus"; - public static final String OFFLINE_PAGES_DESCRIPTIVE_PENDING_STATUS = + public static final String OMAHA_MIN_SDK_VERSION_ANDROID = "OmahaMinSdkVersionAndroid"; + public static final String OMNIBOX_CACHE_SUGGESTION_RESOURCES = + "OmniboxCacheSuggestionResources"; diff --git a/cromite_flags/chrome/browser/about_flags_cc/Restore-offline-indicator-v2-flag.inc b/cromite_flags/chrome/browser/about_flags_cc/Restore-offline-indicator-v2-flag.inc new file mode 100644 --- /dev/null diff --git a/build/cromite_patches/Revert-Delete-block-external-form-redirects.patch b/build/cromite_patches/Revert-Delete-block-external-form-redirects.patch index 7f6fe0347669e70e253aadfcbbcbd53120dc46cc..c8284b06df99b1686848f628c4e6c07884f8265e 100644 --- a/build/cromite_patches/Revert-Delete-block-external-form-redirects.patch +++ b/build/cromite_patches/Revert-Delete-block-external-form-redirects.patch @@ -70,7 +70,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java --- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java +++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java -@@ -1639,6 +1639,12 @@ public class ExternalNavigationHandler { +@@ -1551,6 +1551,12 @@ public class ExternalNavigationHandler { || ignoreBackForwardNav(params); } @@ -83,7 +83,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component private OverrideUrlLoadingResult shouldOverrideUrlLoadingInternal( ExternalNavigationParams params, Intent targetIntent, -@@ -1702,6 +1708,21 @@ public class ExternalNavigationHandler { +@@ -1614,6 +1620,21 @@ public class ExternalNavigationHandler { return OverrideUrlLoadingResult.forNoOverride(); } diff --git a/build/cromite_patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch b/build/cromite_patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch index 09917acb6fde7750ab0b28052c01cfbc35242852..0a6b60d774c88bd1c06cd3a12e71be0102cb02a3 100644 --- a/build/cromite_patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch +++ b/build/cromite_patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch @@ -15,9 +15,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -1752,6 +1752,10 @@ +@@ -1843,6 +1843,10 @@ "yangsharon@google.com", "alexmos@google.com", "creis@google.com" ], - "expiry_milestone": 122 + "expiry_milestone": 140 }, + { + "name": "disable-pull-to-refresh-effect", diff --git a/build/cromite_patches/Revert-removal-of-execution-context-address-space.patch b/build/cromite_patches/Revert-removal-of-execution-context-address-space.patch index 495ed2a7da05eb6175cfb8f0109ce42312ddde22..ccf4fd462e42cb6dcf5bd1a59cda16389c2fefc1 100644 --- a/build/cromite_patches/Revert-removal-of-execution-context-address-space.patch +++ b/build/cromite_patches/Revert-removal-of-execution-context-address-space.patch @@ -93,7 +93,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context #include "services/network/public/mojom/referrer_policy.mojom-blink-forward.h" #include "third_party/blink/public/common/tokens/tokens.h" #include "third_party/blink/public/common/user_agent/user_agent_metadata.h" -@@ -386,6 +387,9 @@ class CORE_EXPORT ExecutionContext : public Supplementable, +@@ -385,6 +386,9 @@ class CORE_EXPORT ExecutionContext : public Supplementable, const String& message = g_empty_string, const String& source_file = g_empty_string) const {} @@ -106,7 +106,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc --- a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc +++ b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc -@@ -251,6 +251,7 @@ void WebSharedWorkerImpl::StartWorkerContext( +@@ -252,6 +252,7 @@ void WebSharedWorkerImpl::StartWorkerContext( MakeGarbageCollected(), std::make_unique( std::move(content_settings)), @@ -171,7 +171,7 @@ diff --git a/third_party/blink/renderer/core/frame/policy_container.h b/third_pa diff --git a/third_party/blink/renderer/core/frame/web_frame_test.cc b/third_party/blink/renderer/core/frame/web_frame_test.cc --- a/third_party/blink/renderer/core/frame/web_frame_test.cc +++ b/third_party/blink/renderer/core/frame/web_frame_test.cc -@@ -8076,6 +8076,40 @@ TEST_F(WebFrameTest, PushStateStartsAndStops) { +@@ -8083,6 +8083,40 @@ TEST_F(WebFrameTest, PushStateStartsAndStops) { EXPECT_EQ(client.StopLoadingCount(), 2); } @@ -237,7 +237,7 @@ diff --git a/third_party/blink/renderer/core/loader/modulescript/installed_servi diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc b/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc --- a/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc +++ b/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc -@@ -207,6 +207,7 @@ void ModuleScriptLoaderTest::InitializeForWorklet() { +@@ -228,6 +228,7 @@ void ModuleScriptLoaderTest::InitializeForWorklet() { network::mojom::ReferrerPolicy::kDefault, security_origin_.get(), true /* is_secure_context */, HttpsState::kModern, nullptr /* worker_clients */, nullptr /* content_settings_client */, @@ -256,7 +256,7 @@ diff --git a/third_party/blink/renderer/core/loader/modulescript/worker_module_s #include "services/network/public/mojom/referrer_policy.mojom-blink.h" #include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/loader/network_utils.h" -@@ -182,7 +183,7 @@ void WorkerModuleScriptFetcher::NotifyClient( +@@ -183,7 +184,7 @@ void WorkerModuleScriptFetcher::NotifyClient( // Step 12.3-12.6 are implemented in Initialize(). global_scope_->Initialize( @@ -363,7 +363,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.h b/third_ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.cc b/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.cc --- a/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.cc +++ b/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.cc -@@ -83,6 +83,8 @@ DedicatedWorkerGlobalScope* DedicatedWorkerGlobalScope::Create( +@@ -85,6 +85,8 @@ DedicatedWorkerGlobalScope* DedicatedWorkerGlobalScope::Create( KURL response_script_url = creation_params->script_url; network::mojom::ReferrerPolicy response_referrer_policy = creation_params->referrer_policy; @@ -372,7 +372,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_sco const bool parent_cross_origin_isolated_capability = creation_params->parent_cross_origin_isolated_capability; const bool parent_is_isolated_context = -@@ -102,7 +104,7 @@ DedicatedWorkerGlobalScope* DedicatedWorkerGlobalScope::Create( +@@ -104,7 +106,7 @@ DedicatedWorkerGlobalScope* DedicatedWorkerGlobalScope::Create( // Pass dummy origin trial tokens here as it is already set to outside's // origin trial tokens in DedicatedWorkerGlobalScope's constructor. global_scope->Initialize(response_script_url, response_referrer_policy, @@ -381,7 +381,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_sco nullptr /* response_origin_trial_tokens */); return global_scope; } else { -@@ -224,6 +226,7 @@ const AtomicString& DedicatedWorkerGlobalScope::InterfaceName() const { +@@ -226,6 +228,7 @@ const AtomicString& DedicatedWorkerGlobalScope::InterfaceName() const { void DedicatedWorkerGlobalScope::Initialize( const KURL& response_url, network::mojom::ReferrerPolicy response_referrer_policy, @@ -389,7 +389,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_sco Vector response_csp, const Vector* /* response_origin_trial_tokens */) { // Step 14.3. "Set worker global scope's url to response's url." -@@ -237,6 +240,9 @@ void DedicatedWorkerGlobalScope::Initialize( +@@ -239,6 +242,9 @@ void DedicatedWorkerGlobalScope::Initialize( // parsing the `Referrer-Policy` header of response." SetReferrerPolicy(response_referrer_policy); @@ -399,7 +399,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_sco // The following is the Content-Security-Policy part of "Initialize worker // global scope's policy container" // https://html.spec.whatwg.org/#initialize-worker-policy-container -@@ -449,6 +455,7 @@ void DedicatedWorkerGlobalScope::DidFetchClassicScript( +@@ -451,6 +457,7 @@ void DedicatedWorkerGlobalScope::DidFetchClassicScript( // Pass dummy origin trial tokens here as it is already set to outside's // origin trial tokens in DedicatedWorkerGlobalScope's constructor. Initialize(classic_script_loader->ResponseURL(), response_referrer_policy, @@ -410,7 +410,7 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_sco diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.h b/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.h --- a/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.h +++ b/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.h -@@ -109,6 +109,7 @@ class CORE_EXPORT DedicatedWorkerGlobalScope final : public WorkerGlobalScope { +@@ -110,6 +110,7 @@ class CORE_EXPORT DedicatedWorkerGlobalScope final : public WorkerGlobalScope { void Initialize( const KURL& response_url, network::mojom::ReferrerPolicy response_referrer_policy, @@ -429,7 +429,7 @@ diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_param const Vector* inherited_trial_features, const base::UnguessableToken& parent_devtools_token, std::unique_ptr worker_settings, -@@ -68,6 +69,7 @@ GlobalScopeCreationParams::GlobalScopeCreationParams( +@@ -69,6 +70,7 @@ GlobalScopeCreationParams::GlobalScopeCreationParams( starter_https_state(starter_https_state), worker_clients(worker_clients), content_settings_client(std::move(content_settings_client)), @@ -440,14 +440,14 @@ diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_param diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_params.h b/third_party/blink/renderer/core/workers/global_scope_creation_params.h --- a/third_party/blink/renderer/core/workers/global_scope_creation_params.h +++ b/third_party/blink/renderer/core/workers/global_scope_creation_params.h -@@ -11,6 +11,7 @@ +@@ -12,6 +12,7 @@ #include "base/unguessable_token.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "services/metrics/public/cpp/ukm_source_id.h" +#include "services/network/public/mojom/ip_address_space.mojom-blink-forward.h" #include "services/network/public/mojom/referrer_policy.mojom-blink-forward.h" - #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/public/common/permissions_policy/permissions_policy.h" + #include "third_party/blink/public/common/tokens/tokens.h" @@ -61,6 +62,7 @@ struct CORE_EXPORT GlobalScopeCreationParams final { HttpsState starter_https_state, WorkerClients*, @@ -456,7 +456,7 @@ diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_param const Vector* inherited_trial_features, const base::UnguessableToken& parent_devtools_token, std::unique_ptr, -@@ -169,6 +171,11 @@ struct CORE_EXPORT GlobalScopeCreationParams final { +@@ -170,6 +172,11 @@ struct CORE_EXPORT GlobalScopeCreationParams final { std::unique_ptr content_settings_client; @@ -544,7 +544,7 @@ diff --git a/third_party/blink/renderer/core/workers/main_thread_worklet_test.cc diff --git a/third_party/blink/renderer/core/workers/shared_worker_global_scope.cc b/third_party/blink/renderer/core/workers/shared_worker_global_scope.cc --- a/third_party/blink/renderer/core/workers/shared_worker_global_scope.cc +++ b/third_party/blink/renderer/core/workers/shared_worker_global_scope.cc -@@ -76,6 +76,7 @@ const AtomicString& SharedWorkerGlobalScope::InterfaceName() const { +@@ -82,6 +82,7 @@ const AtomicString& SharedWorkerGlobalScope::InterfaceName() const { void SharedWorkerGlobalScope::Initialize( const KURL& response_url, network::mojom::ReferrerPolicy response_referrer_policy, @@ -552,7 +552,7 @@ diff --git a/third_party/blink/renderer/core/workers/shared_worker_global_scope. Vector response_csp, const Vector* response_origin_trial_tokens) { // Step 12.3. "Set worker global scope's url to response's url." -@@ -89,6 +90,9 @@ void SharedWorkerGlobalScope::Initialize( +@@ -95,6 +96,9 @@ void SharedWorkerGlobalScope::Initialize( // parsing the `Referrer-Policy` header of response." SetReferrerPolicy(response_referrer_policy); @@ -562,7 +562,7 @@ diff --git a/third_party/blink/renderer/core/workers/shared_worker_global_scope. // Step 12.6. "Execute the Initialize a global object's CSP list algorithm // on worker global scope and response. [CSP]" // SharedWorkerGlobalScope inherits the outside's CSP instead of the response -@@ -98,6 +102,8 @@ void SharedWorkerGlobalScope::Initialize( +@@ -104,6 +108,8 @@ void SharedWorkerGlobalScope::Initialize( // https://fetch.spec.whatwg.org/#local-scheme // // https://w3c.github.io/webappsec-csp/#initialize-global-object-csp @@ -571,7 +571,7 @@ diff --git a/third_party/blink/renderer/core/workers/shared_worker_global_scope. Vector csp_headers = response_url.ProtocolIsAbout() || response_url.ProtocolIsData() || response_url.ProtocolIs("blob") -@@ -245,6 +251,7 @@ void SharedWorkerGlobalScope::DidFetchClassicScript( +@@ -251,6 +257,7 @@ void SharedWorkerGlobalScope::DidFetchClassicScript( // Step 12.3-12.6 are implemented in Initialize(). Initialize(classic_script_loader->ResponseURL(), response_referrer_policy, @@ -582,7 +582,7 @@ diff --git a/third_party/blink/renderer/core/workers/shared_worker_global_scope. diff --git a/third_party/blink/renderer/core/workers/shared_worker_global_scope.h b/third_party/blink/renderer/core/workers/shared_worker_global_scope.h --- a/third_party/blink/renderer/core/workers/shared_worker_global_scope.h +++ b/third_party/blink/renderer/core/workers/shared_worker_global_scope.h -@@ -64,6 +64,7 @@ class CORE_EXPORT SharedWorkerGlobalScope final : public WorkerGlobalScope { +@@ -65,6 +65,7 @@ class CORE_EXPORT SharedWorkerGlobalScope final : public WorkerGlobalScope { void Initialize( const KURL& response_url, network::mojom::ReferrerPolicy response_referrer_policy, @@ -615,7 +615,7 @@ diff --git a/third_party/blink/renderer/core/workers/threaded_worklet_messaging_ diff --git a/third_party/blink/renderer/core/workers/threaded_worklet_test.cc b/third_party/blink/renderer/core/workers/threaded_worklet_test.cc --- a/third_party/blink/renderer/core/workers/threaded_worklet_test.cc +++ b/third_party/blink/renderer/core/workers/threaded_worklet_test.cc -@@ -217,6 +217,7 @@ class ThreadedWorkletMessagingProxyForTest +@@ -223,6 +223,7 @@ class ThreadedWorkletMessagingProxyForTest GetExecutionContext()->IsSecureContext(), GetExecutionContext()->GetHttpsState(), worker_clients, nullptr /* content_settings_client */, @@ -704,15 +704,15 @@ diff --git a/third_party/blink/renderer/core/workers/worker_global_scope.h b/thi diff --git a/third_party/blink/renderer/core/workers/worker_thread_test.cc b/third_party/blink/renderer/core/workers/worker_thread_test.cc --- a/third_party/blink/renderer/core/workers/worker_thread_test.cc +++ b/third_party/blink/renderer/core/workers/worker_thread_test.cc -@@ -9,6 +9,7 @@ - +@@ -10,6 +10,7 @@ + #include "base/run_loop.h" #include "base/synchronization/lock.h" #include "base/synchronization/waitable_event.h" +#include "services/network/public/mojom/ip_address_space.mojom-blink.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/mojom/v8_cache_options.mojom-blink.h" -@@ -380,6 +381,7 @@ TEST_F(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunningOnInitialization) { +@@ -386,6 +387,7 @@ TEST_F(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunningOnInitialization) { CalculateHttpsState(security_origin_.get()), MakeGarbageCollected(), nullptr /* content_settings_client */, diff --git a/build/cromite_patches/Samsung-Note-9-SDK27-crazylinker-workaround.patch b/build/cromite_patches/Samsung-Note-9-SDK27-crazylinker-workaround.patch index be60ed417d45af98fb286e5a4884fb15d1b6e07b..7a2b21bd38b3a64e53e2b3e41f7a7a34e143cf8a 100644 --- a/build/cromite_patches/Samsung-Note-9-SDK27-crazylinker-workaround.patch +++ b/build/cromite_patches/Samsung-Note-9-SDK27-crazylinker-workaround.patch @@ -19,7 +19,7 @@ diff --git a/base/android/java/src/org/chromium/base/library_loader/LibraryLoade import javax.annotation.concurrent.GuardedBy; -@@ -290,7 +291,21 @@ public class LibraryLoader { +@@ -281,7 +282,21 @@ public class LibraryLoader { */ public void initInAppZygote() { assert !mInitDone; diff --git a/build/cromite_patches/Show-site-settings-for-cookies-javascript-and-ads.patch b/build/cromite_patches/Show-site-settings-for-cookies-javascript-and-ads.patch index 30e2f996bf8786aa2b6a55e1b135a5cce8529c57..94682e3497a5c3b43aca6e05e487d5c7030a6fad 100644 --- a/build/cromite_patches/Show-site-settings-for-cookies-javascript-and-ads.patch +++ b/build/cromite_patches/Show-site-settings-for-cookies-javascript-and-ads.patch @@ -6,16 +6,16 @@ Avoid displaying info about intrusive ads License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../site_settings/SingleWebsiteSettings.java | 56 +++++++++---------- + .../site_settings/SingleWebsiteSettings.java | 51 ++++++++++++------- .../browser_ui/site_settings/Website.java | 14 ++++- - .../bromite_content_settings/javascript.inc | 3 + - 3 files changed, 43 insertions(+), 30 deletions(-) + .../bromite_content_settings/javascript.inc | 3 ++ + 3 files changed, 49 insertions(+), 19 deletions(-) create mode 100644 components/content_settings/core/browser/bromite_content_settings/javascript.inc diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -568,6 +568,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -558,6 +558,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment setUpSoundPreference(preference); } else if (type == ContentSettingsType.JAVASCRIPT) { setUpJavascriptPreference(preference); @@ -24,7 +24,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } else if (type == ContentSettingsType.GEOLOCATION) { setUpLocationPreference(preference); } else if (type == ContentSettingsType.NOTIFICATIONS) { -@@ -1017,17 +1019,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -991,17 +993,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment private void setUpAdsInformationalBanner() { // Add the informational banner which shows at the top of the UI if ad blocking is // activated on this site. @@ -42,7 +42,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } private SiteSettingsCategory getWarningCategory() { -@@ -1217,17 +1210,35 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1199,12 +1192,13 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment @Nullable Integer currentValue = mSite.getContentSetting(browserContextHandle, ContentSettingsType.JAVASCRIPT); @@ -54,14 +54,16 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c - currentValue = ContentSettingValues.BLOCK; + // Always show the Javascript permission + if (currentValue == null) { -+ currentValue = WebsitePreferenceBridge.isCategoryEnabled( -+ browserContextHandle, ContentSettingsType.JAVASCRIPT) -+ ? ContentSettingValues.ALLOW -+ : ContentSettingValues.BLOCK; ++ currentValue = ++ WebsitePreferenceBridge.isCategoryEnabled( ++ browserContextHandle, ContentSettingsType.JAVASCRIPT) ++ ? ContentSettingValues.ALLOW ++ : ContentSettingValues.BLOCK; } // Not possible to embargo JAVASCRIPT. -- setupContentSettingsPreference(preference, currentValue, /* isEmbargoed= */ false); -+ setupContentSettingsPreference(preference, currentValue, false /* isEmbargoed */); + setupContentSettingsPreference( +@@ -1214,6 +1208,29 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + isOneTime(ContentSettingsType.JAVASCRIPT)); } + private void setUpCookiesPreference(Preference preference) { @@ -73,42 +75,34 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + mSite.getContentSetting(browserContextHandle, ContentSettingsType.COOKIES); + // Always show the cookies permission + if (currentValue == null || currentValue == ContentSettingValues.DEFAULT) { -+ currentValue = WebsitePreferenceBridge.isCategoryEnabled( -+ browserContextHandle, ContentSettingsType.COOKIES) -+ ? ContentSettingValues.ALLOW -+ : ContentSettingValues.BLOCK; ++ currentValue = ++ WebsitePreferenceBridge.isCategoryEnabled( ++ browserContextHandle, ContentSettingsType.COOKIES) ++ ? ContentSettingValues.ALLOW ++ : ContentSettingValues.BLOCK; + } + // Not possible to embargo COOKIES. -+ setupContentSettingsPreference(preference, currentValue, /* isEmbargoed= */ false); ++ setupContentSettingsPreference( ++ preference, ++ currentValue, ++ /* isEmbargoed= */ false, ++ isOneTime(ContentSettingsType.COOKIES)); + } + /** * Updates the ads list preference based on whether the site is a candidate for blocking. This * has some custom behavior. -@@ -1243,23 +1254,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment - setupContentSettingsPreference(preference, null, false); - return; +@@ -1232,9 +1249,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment } -- // If the ad blocker is activated, then this site will have ads blocked unless there is an -- // explicit permission disallowing the blocking. + // If the ad blocker is activated, then this site will have ads blocked unless there is an + // explicit permission disallowing the blocking. - boolean activated = - WebsitePreferenceBridge.getAdBlockingActivated( - browserContextHandle, mSite.getAddress().getOrigin()); ++ boolean activated = true; @ContentSettingValues @Nullable Integer permission = mSite.getContentSetting(browserContextHandle, ContentSettingsType.ADS); - -- // If |permission| is null, there is no explicit (non-default) permission set for this site. -- // If the site is not considered a candidate for blocking, do the standard thing and remove -- // the preference. -- if (permission == null && !activated) { -- setupContentSettingsPreference(preference, null, false); -- return; -- } -- - // However, if the blocking is activated, we still want to show the permission, even if it - // is in the default state. - if (permission == null) { diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java diff --git a/build/cromite_patches/Site-setting-for-images.patch b/build/cromite_patches/Site-setting-for-images.patch index a234bbf6bdb1164541faefeeb3e844c9e1b9c143..401c7232956403cd062b361bc2f164f8148bf30f 100644 --- a/build/cromite_patches/Site-setting-for-images.patch +++ b/build/cromite_patches/Site-setting-for-images.patch @@ -248,7 +248,7 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -98,7 +98,7 @@ void ContentSettingsRegistry::Init() { +@@ -99,7 +99,7 @@ void ContentSettingsRegistry::Init() { {kChromeUIScheme, kChromeDevToolsScheme, kExtensionScheme}, /*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK}, WebsiteSettingsInfo::TOP_ORIGIN_WITH_RESOURCE_EXCEPTIONS_SCOPE, @@ -260,7 +260,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc -@@ -144,12 +144,7 @@ void GetRendererContentSettingRules(const HostContentSettingsMap* map, +@@ -145,12 +145,7 @@ void GetRendererContentSettingRules(const HostContentSettingsMap* map, ContentSettingToValue(CONTENT_SETTING_ALLOW), std::string(), map->IsOffTheRecord())); #else diff --git a/build/cromite_patches/Switch-to-fstack-protector-strong.patch b/build/cromite_patches/Switch-to-fstack-protector-strong.patch index 409ddcc3c4cd7189d94e04290d440fa934c7d3f7..cbf3ee8f6ba9c8448f3f94901389ce2cf3ac776f 100644 --- a/build/cromite_patches/Switch-to-fstack-protector-strong.patch +++ b/build/cromite_patches/Switch-to-fstack-protector-strong.patch @@ -13,22 +13,15 @@ higher memory/cache usage but not by the full 2-3%. Original License: MIT - https://spdx.org/licenses/MIT.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - build/config/compiler/BUILD.gn | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) + build/config/compiler/BUILD.gn | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn -@@ -378,14 +378,12 @@ config("compiler") { - cflags += [ "-fstack-protector" ] - } +@@ -382,7 +382,7 @@ config("compiler") { } else if ((is_posix && !is_chromeos && !is_nacl) || is_fuchsia) { -- # TODO(phajdan.jr): Use -fstack-protector-strong when our gcc supports it. -- # See also https://crbug.com/533294 - # The x86 toolchain currently has problems with stack-protector. - if (is_android && current_cpu == "x86") { - cflags += [ "-fno-stack-protector" ] - } else if (current_os != "aix") { + if (current_os != "aix") { # Not available on aix. - cflags += [ "-fstack-protector" ] + cflags += [ "-fstack-protector-strong" ] diff --git a/build/cromite_patches/Timezone-customization.patch b/build/cromite_patches/Timezone-customization.patch index 9352382d724af9ba3b0e98356810adea77000e12..41652122fce07303fe4328081e8a7c5db08d75fa 100644 --- a/build/cromite_patches/Timezone-customization.patch +++ b/build/cromite_patches/Timezone-customization.patch @@ -29,11 +29,10 @@ Require: Content-settings-infrastructure.patch .../core/common/content_settings.mojom | 1 + .../common/content_settings_mojom_traits.cc | 3 +- .../common/content_settings_mojom_traits.h | 5 + - .../core/common/pref_names.cc | 3 + - .../content_settings/core/common/pref_names.h | 2 + + .../content_settings/core/common/pref_names.h | 3 + .../renderer/content_settings_agent_impl.cc | 81 +++++++- .../renderer/content_settings_agent_impl.h | 11 + - 23 files changed, 683 insertions(+), 2 deletions(-) + 22 files changed, 681 insertions(+), 2 deletions(-) create mode 100755 components/browser_ui/site_settings/android/java/res/layout/time_zone_select_dialog.xml create mode 100755 components/browser_ui/site_settings/android/java/res/layout/timezoneoverride_site_settings_preference.xml create mode 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/TimezoneOverrideSiteSettingsPreference.java @@ -45,7 +44,7 @@ Require: Content-settings-infrastructure.patch diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -104,6 +104,7 @@ android_library("java") { +@@ -96,6 +96,7 @@ android_library("java") { "java/src/org/chromium/components/browser_ui/site_settings/WebsitePreference.java", "java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java", "java/src/org/chromium/components/browser_ui/site_settings/WebsiteRowPreference.java", @@ -53,7 +52,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b ] resources_package = "org.chromium.components.browser_ui.site_settings" -@@ -278,6 +279,8 @@ android_resources("java_resources") { +@@ -270,6 +271,8 @@ android_resources("java_resources") { "java/res/xml/site_settings_preferences.xml", "java/res/xml/storage_access_settings.xml", "java/res/xml/website_preferences.xml", @@ -381,8 +380,8 @@ new file mode 100755 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java -@@ -454,6 +454,14 @@ public class WebsitePreferenceBridge { - return WebsitePreferenceBridgeJni.get().toHostOnlyPattern(pattern); +@@ -471,6 +471,14 @@ public class WebsitePreferenceBridge { + .toHostOnlyPattern(pattern); } + public static String getCustomTimezone(BrowserContextHandle browserContextHandle) { @@ -396,7 +395,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c @NativeMethods public interface Natives { boolean isNotificationEmbargoedForOrigin( -@@ -599,5 +607,7 @@ public class WebsitePreferenceBridge { +@@ -622,5 +630,7 @@ public class WebsitePreferenceBridge { String toDomainWildcardPattern(String pattern); String toHostOnlyPattern(String pattern); @@ -560,7 +559,7 @@ new file mode 100644 diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc --- a/components/browser_ui/site_settings/android/website_preference_bridge.cc +++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc -@@ -1104,3 +1104,19 @@ JNI_WebsitePreferenceBridge_ToHostOnlyPattern( +@@ -1123,3 +1123,19 @@ JNI_WebsitePreferenceBridge_ToHostOnlyPattern( ContentSettingsPattern::FromString(pattern_string)); return ConvertUTF8ToJavaString(env, host_only_pattern.ToString()); } @@ -656,7 +655,7 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc --- a/components/content_settings/core/browser/content_settings_pref_provider.cc +++ b/components/content_settings/core/browser/content_settings_pref_provider.cc -@@ -74,6 +74,8 @@ void PrefProvider::RegisterProfilePrefs( +@@ -79,6 +79,8 @@ void PrefProvider::RegisterProfilePrefs( info->GetPrefRegistrationFlags()); } @@ -665,7 +664,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov // Obsolete prefs ---------------------------------------------------------- // These prefs have been removed, but need to be registered so they can -@@ -147,6 +149,10 @@ PrefProvider::PrefProvider(PrefService* prefs, +@@ -151,6 +153,10 @@ PrefProvider::PrefProvider(PrefService* prefs, event_args->set_number_of_exceptions( num_exceptions); // PrefProvider::PrefProvider. }); @@ -676,7 +675,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov } PrefProvider::~PrefProvider() { -@@ -416,4 +422,14 @@ void PrefProvider::SetClockForTesting(base::Clock* clock) { +@@ -437,4 +443,14 @@ void PrefProvider::SetClockForTesting(base::Clock* clock) { clock_ = clock; } @@ -694,7 +693,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov diff --git a/components/content_settings/core/browser/content_settings_pref_provider.h b/components/content_settings/core/browser/content_settings_pref_provider.h --- a/components/content_settings/core/browser/content_settings_pref_provider.h +++ b/components/content_settings/core/browser/content_settings_pref_provider.h -@@ -84,6 +84,9 @@ class PrefProvider : public UserModifiableProvider { +@@ -92,6 +92,9 @@ class PrefProvider : public UserModifiableProvider { ContentSettingsPref* GetPref(ContentSettingsType type) const; @@ -704,7 +703,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov private: friend class DeadlockCheckerObserver; // For testing. -@@ -129,6 +132,7 @@ class PrefProvider : public UserModifiableProvider { +@@ -140,6 +143,7 @@ class PrefProvider : public UserModifiableProvider { base::ThreadChecker thread_checker_; raw_ptr clock_; @@ -715,7 +714,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc -@@ -158,6 +158,11 @@ void GetRendererContentSettingRules(const HostContentSettingsMap* map, +@@ -159,6 +159,11 @@ void GetRendererContentSettingRules(const HostContentSettingsMap* map, map->GetSettingsForOneType(ContentSettingsType::JAVASCRIPT); rules->popup_redirect_rules = map->GetSettingsForOneType(ContentSettingsType::POPUPS); @@ -730,8 +729,8 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc --- a/components/content_settings/core/browser/host_content_settings_map.cc +++ b/components/content_settings/core/browser/host_content_settings_map.cc -@@ -670,6 +670,14 @@ void HostContentSettingsMap::SetClockForTesting(base::Clock* clock) { - provider->SetClockForTesting(clock); +@@ -676,6 +676,14 @@ void HostContentSettingsMap::SetClockForTesting(base::Clock* clock) { + } } +void HostContentSettingsMap::GetTimezoneOverrideValue(std::string& custom_timezone) const { @@ -748,7 +747,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. diff --git a/components/content_settings/core/browser/host_content_settings_map.h b/components/content_settings/core/browser/host_content_settings_map.h --- a/components/content_settings/core/browser/host_content_settings_map.h +++ b/components/content_settings/core/browser/host_content_settings_map.h -@@ -387,6 +387,9 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -394,6 +394,9 @@ class HostContentSettingsMap : public content_settings::Observer, allow_invalid_secondary_pattern_for_testing_ = allow; } @@ -768,7 +767,7 @@ new file mode 100644 diff --git a/components/content_settings/core/common/content_settings.h b/components/content_settings/core/common/content_settings.h --- a/components/content_settings/core/common/content_settings.h +++ b/components/content_settings/core/common/content_settings.h -@@ -102,6 +102,7 @@ struct RendererContentSettingRules { +@@ -107,6 +107,7 @@ struct RendererContentSettingRules { ContentSettingsForOneType popup_redirect_rules; ContentSettingsForOneType mixed_content_rules; ContentSettingsForOneType auto_dark_content_rules; @@ -779,7 +778,7 @@ diff --git a/components/content_settings/core/common/content_settings.h b/compon diff --git a/components/content_settings/core/common/content_settings.mojom b/components/content_settings/core/common/content_settings.mojom --- a/components/content_settings/core/common/content_settings.mojom +++ b/components/content_settings/core/common/content_settings.mojom -@@ -103,4 +103,5 @@ struct RendererContentSettingRules { +@@ -102,4 +102,5 @@ struct RendererContentSettingRules { array popup_redirect_rules; array mixed_content_rules; array auto_dark_content_rules; @@ -788,7 +787,7 @@ diff --git a/components/content_settings/core/common/content_settings.mojom b/co diff --git a/components/content_settings/core/common/content_settings_mojom_traits.cc b/components/content_settings/core/common/content_settings_mojom_traits.cc --- a/components/content_settings/core/common/content_settings_mojom_traits.cc +++ b/components/content_settings/core/common/content_settings_mojom_traits.cc -@@ -173,7 +173,8 @@ bool StructTraitsscript_rules) && data.ReadPopupRedirectRules(&out->popup_redirect_rules) && data.ReadMixedContentRules(&out->mixed_content_rules) && @@ -801,7 +800,7 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai diff --git a/components/content_settings/core/common/content_settings_mojom_traits.h b/components/content_settings/core/common/content_settings_mojom_traits.h --- a/components/content_settings/core/common/content_settings_mojom_traits.h +++ b/components/content_settings/core/common/content_settings_mojom_traits.h -@@ -222,6 +222,11 @@ struct StructTraits< +@@ -227,6 +227,11 @@ struct StructTraits< return r.auto_dark_content_rules; } @@ -813,25 +812,15 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai static bool Read( content_settings::mojom::RendererContentSettingRulesDataView data, RendererContentSettingRules* out); -diff --git a/components/content_settings/core/common/pref_names.cc b/components/content_settings/core/common/pref_names.cc ---- a/components/content_settings/core/common/pref_names.cc -+++ b/components/content_settings/core/common/pref_names.cc -@@ -218,4 +218,7 @@ const char kDesktopSiteDisplaySettingEnabled[] = "desktop_site.display_setting"; - const char kDesktopSiteWindowSettingEnabled[] = "desktop_site.window_setting"; - #endif - -+const char kContentSettingsCustomTimezone[] = -+ "profile.content_settings.custom_timezone"; -+ - } // namespace prefs diff --git a/components/content_settings/core/common/pref_names.h b/components/content_settings/core/common/pref_names.h --- a/components/content_settings/core/common/pref_names.h +++ b/components/content_settings/core/common/pref_names.h -@@ -102,6 +102,8 @@ extern const char kDesktopSiteDisplaySettingEnabled[]; - extern const char kDesktopSiteWindowSettingEnabled[]; +@@ -224,6 +224,9 @@ inline constexpr char kDesktopSiteWindowSettingEnabled[] = + "desktop_site.window_setting"; #endif -+extern const char kContentSettingsCustomTimezone[]; ++inline constexpr char kContentSettingsCustomTimezone[] = ++ "profile.content_settings.custom_timezone"; + } // namespace prefs @@ -850,7 +839,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings.mojom.h" #include "components/content_settings/core/common/content_settings_pattern.h" -@@ -355,6 +357,7 @@ bool ContentSettingsAgentImpl::AllowScript(bool enabled_per_settings) { +@@ -353,6 +355,7 @@ bool ContentSettingsAgentImpl::AllowScript(bool enabled_per_settings) { allow = allow || IsAllowlistedForContentSettings(); cached_script_permissions_[frame] = allow; @@ -858,7 +847,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc return allow; } -@@ -370,7 +373,9 @@ bool ContentSettingsAgentImpl::AllowScriptFromSource( +@@ -368,7 +371,9 @@ bool ContentSettingsAgentImpl::AllowScriptFromSource( content_setting_rules_->script_rules, script_url); allow = setting != CONTENT_SETTING_BLOCK; } @@ -868,8 +857,8 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc + return allow; } - bool ContentSettingsAgentImpl::AllowReadFromClipboard(bool default_value) { -@@ -470,4 +475,78 @@ bool ContentSettingsAgentImpl::IsAllowlistedForContentSettings() const { + bool ContentSettingsAgentImpl::AllowReadFromClipboard() { +@@ -468,4 +473,78 @@ bool ContentSettingsAgentImpl::IsAllowlistedForContentSettings() const { return false; } @@ -963,7 +952,7 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.h namespace blink { class WebFrame; class WebURL; -@@ -171,6 +176,12 @@ class ContentSettingsAgentImpl +@@ -172,6 +177,12 @@ class ContentSettingsAgentImpl std::unique_ptr delegate_; mojo::AssociatedReceiverSet receivers_; diff --git a/build/cromite_patches/Use-4-tile-rows-never-show-logo.patch b/build/cromite_patches/Use-4-tile-rows-never-show-logo.patch index e4b0007f29d7c61b05a9bfbf64270057ae0c0de4..1cc6e94d4a1dee5063410189a8cb210b23f70150 100644 --- a/build/cromite_patches/Use-4-tile-rows-never-show-logo.patch +++ b/build/cromite_patches/Use-4-tile-rows-never-show-logo.patch @@ -13,7 +13,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -118,7 +118,7 @@ public class NewTabPageLayout extends LinearLayout { +@@ -115,7 +115,7 @@ public class NewTabPageLayout extends LinearLayout { */ private boolean mHasShownView; @@ -22,16 +22,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL private boolean mSearchProviderIsGoogle; private boolean mShowingNonStandardLogo; -@@ -482,7 +482,7 @@ public class NewTabPageLayout extends LinearLayout { +@@ -498,7 +498,7 @@ public class NewTabPageLayout extends LinearLayout { boolean searchProviderIsGoogle) { assert mMvTilesContainerLayout != null; - int maxRows = 2; + int maxRows = 4; - if (searchProviderIsGoogle && QueryTileUtils.isQueryTilesEnabledOnNtp()) { - maxRows = QueryTileSection.getMaxRowsForMostVisitedTiles(getContext()); - } -@@ -719,7 +719,7 @@ public class NewTabPageLayout extends LinearLayout { + + mMostVisitedTilesCoordinator = + new MostVisitedTilesCoordinator( +@@ -732,7 +732,7 @@ public class NewTabPageLayout extends LinearLayout { && mInitialized) { return; } diff --git a/build/cromite_patches/User-agent-customization.patch b/build/cromite_patches/User-agent-customization.patch index b825425e450bc605cdab2c2da695de2a4053e661..6d6713820fe8a825d4c663ab68cbf819661fe867 100644 --- a/build/cromite_patches/User-agent-customization.patch +++ b/build/cromite_patches/User-agent-customization.patch @@ -48,8 +48,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/base/base_switches.cc b/base/base_switches.cc --- a/base/base_switches.cc +++ b/base/base_switches.cc -@@ -187,6 +187,8 @@ const char kPackageVersionCode[] = "package-version-code"; - extern const char kEnableCrashpad[] = "enable-crashpad"; +@@ -176,6 +176,8 @@ const char kPackageVersionName[] = "package-version-name"; + const char kPackageVersionCode[] = "package-version-code"; #endif +const char kDesktopModeViewportMetaEnabled[] = "dm-viewport-meta-enabled"; @@ -60,7 +60,7 @@ diff --git a/base/base_switches.cc b/base/base_switches.cc diff --git a/base/base_switches.h b/base/base_switches.h --- a/base/base_switches.h +++ b/base/base_switches.h -@@ -72,6 +72,8 @@ extern const char kEnableCrashpad[]; +@@ -65,6 +65,8 @@ extern const char kPackageVersionCode[]; extern const char kSchedulerBoostUrgent[]; #endif @@ -72,7 +72,7 @@ diff --git a/base/base_switches.h b/base/base_switches.h diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -656,4 +656,6 @@ chrome_java_resources = [ +@@ -651,4 +651,6 @@ chrome_java_resources = [ "java/res/xml/privacy_preferences.xml", "java/res/xml/search_widget_info.xml", "java/res/xml/tracing_preferences.xml", @@ -82,7 +82,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -952,6 +952,7 @@ chrome_java_sources = [ +@@ -963,6 +963,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/payments/ui/DimmingDialog.java", "java/src/org/chromium/chrome/browser/payments/ui/LineItem.java", "java/src/org/chromium/chrome/browser/payments/ui/PaymentAppComparator.java", @@ -204,9 +204,9 @@ new file mode 100644 diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml --- a/chrome/android/java/res/xml/main_preferences.xml +++ b/chrome/android/java/res/xml/main_preferences.xml -@@ -111,6 +111,11 @@ found in the LICENSE file. +@@ -122,6 +122,11 @@ found in the LICENSE file. android:key="content_settings" - android:order="19" + android:order="21" android:title="@string/prefs_site_settings"/> + RegisterBooleanPref(prefs::kOverrideUserAgentEnabled, false); @@ -914,7 +915,7 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -926,6 +926,9 @@ public final class ChromePreferenceKeys { +@@ -882,6 +882,9 @@ public final class ChromePreferenceKeys { public static final String BLUETOOTH_NOTIFICATION_IDS = "Chrome.Bluetooth.NotificationIds"; public static final String USB_NOTIFICATION_IDS = "Chrome.USB.NotificationIds"; @@ -924,7 +925,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro /** * These values are currently used as SharedPreferences keys, along with the keys in * {@link LegacyChromePreferenceKeys#getKeysInUse()}. Add new SharedPreferences keys -@@ -1066,8 +1069,8 @@ public final class ChromePreferenceKeys { +@@ -1013,8 +1016,8 @@ public final class ChromePreferenceKeys { SIGNIN_PROMO_NTP_LAST_SHOWN_TIME, SYNC_PROMO_TOTAL_SHOW_COUNT, SEARCH_RESUMPTION_MODULE_COLLAPSE_ON_NTP, @@ -956,7 +957,7 @@ diff --git a/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.java --- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.java +++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.java -@@ -277,6 +277,8 @@ public interface Tab extends TabLifecycle { +@@ -297,6 +297,8 @@ public interface Tab extends TabLifecycle { /** Goes to the navigation entry after the current one. */ void goForward(); @@ -968,7 +969,7 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/Tab.jav diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java -@@ -94,6 +94,8 @@ public interface TabWindowManager { +@@ -101,6 +101,8 @@ public interface TabWindowManager { */ Tab getTabById(int tabId); @@ -980,7 +981,7 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java --- a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java +++ b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java -@@ -146,6 +146,24 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan +@@ -400,6 +400,24 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan return null; } @@ -1053,7 +1054,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -1839,6 +1839,14 @@ inline constexpr char kNaviOnboardGroup[] = "browser.navi_onboard_group"; +@@ -1828,6 +1828,14 @@ inline constexpr char kNaviOnboardGroup[] = "browser.navi_onboard_group"; inline constexpr char kHadThreeConsecutiveNotificationPermissionDenies[] = "profile.content_settings.had_three_consecutive_denies.notifications"; @@ -1124,7 +1125,7 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.cc b/co const JavaParamRef& j_initiator_origin, jboolean has_user_gesture, jboolean should_clear_history_list, -@@ -350,6 +351,9 @@ base::android::ScopedJavaLocalRef NavigationControllerAndroid::LoadUrl( +@@ -352,6 +353,9 @@ base::android::ScopedJavaLocalRef NavigationControllerAndroid::LoadUrl( params.navigation_ui_data = std::move(navigation_ui_data); @@ -1148,9 +1149,9 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.h b/con diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -3555,6 +3555,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( - switches::kLacrosUseChromeosProtectedMedia, - switches::kLacrosUseChromeosProtectedAv1, +@@ -3577,6 +3577,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( + switches::kLacrosUseChromeosProtectedMedia, + switches::kLacrosUseChromeosProtectedAv1, #endif + switches::kDesktopModeViewportMetaEnabled, }; @@ -1159,7 +1160,7 @@ diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -15,6 +15,7 @@ +@@ -16,6 +16,7 @@ #include #include "base/allocator/partition_allocator/src/partition_alloc/partition_alloc_buildflags.h" @@ -1167,7 +1168,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser #include "base/check_op.h" #include "base/command_line.h" #include "base/containers/contains.h" -@@ -3093,6 +3094,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() { +@@ -3105,6 +3106,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() { #else prefs.viewport_meta_enabled = false; #endif @@ -1180,7 +1181,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser diff --git a/content/public/android/java/src/org/chromium/content/browser/framehost/NavigationControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/framehost/NavigationControllerImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/framehost/NavigationControllerImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/framehost/NavigationControllerImpl.java -@@ -224,6 +224,7 @@ import org.chromium.url.Origin; +@@ -225,6 +225,7 @@ import org.chromium.url.Origin; params.getCanLoadLocalResources(), params.getIsRendererInitiated(), params.getShouldReplaceCurrentEntry(), @@ -1188,7 +1189,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh params.getInitiatorOrigin(), params.getHasUserGesture(), params.getShouldClearHistoryList(), -@@ -500,7 +501,7 @@ import org.chromium.url.Origin; +@@ -503,7 +504,7 @@ import org.chromium.url.Origin; String dataUrlAsString, boolean canLoadLocalResources, boolean isRendererInitiated, @@ -1200,7 +1201,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc -@@ -878,7 +878,6 @@ void RenderThreadImpl::InitializeRenderer( +@@ -861,7 +861,6 @@ void RenderThreadImpl::InitializeRenderer( const blink::UserAgentMetadata& user_agent_metadata, const std::vector& cors_exempt_header_list, blink::mojom::OriginTrialsSettingsPtr origin_trials_settings) { diff --git a/build/cromite_patches/Welcome-screen.patch b/build/cromite_patches/Welcome-screen.patch index b0a9f95646432db568797dcf4f469e225b1cc545..aed5ec06d231d1c2cc4113c82cee6fd38b0cac2b 100644 --- a/build/cromite_patches/Welcome-screen.patch +++ b/build/cromite_patches/Welcome-screen.patch @@ -13,15 +13,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/android/java/res/values/styles.xml | 24 ++ .../firstrun/ChildAccountStatusSupplier.java | 13 - .../DefaultSearchEngineFirstRunFragment.java | 3 - - .../browser/firstrun/FirstRunActivity.java | 17 +- + .../browser/firstrun/FirstRunActivity.java | 25 +- .../firstrun/FirstRunActivityBase.java | 6 +- - .../firstrun/FirstRunFlowSequencer.java | 63 +--- + .../firstrun/FirstRunFlowSequencer.java | 61 +--- .../browser/firstrun/FirstRunUtils.java | 15 +- - .../firstrun/ToSAndUMAFirstRunFragment.java | 336 ++++++++++++++++++ + .../firstrun/ToSAndUMAFirstRunFragment.java | 335 +++++++++++++++++ .../firstrun/TosAndUmaFragmentView.java | 336 ++++++++++++++++++ .../browser/locale/LocaleManagerDelegate.java | 5 +- .../strings/android_chrome_strings.grd | 24 +- - 15 files changed, 914 insertions(+), 101 deletions(-) + 15 files changed, 913 insertions(+), 107 deletions(-) create mode 100644 chrome/android/java/res/layout/fre_tosanduma.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/TosAndUmaFragmentView.java @@ -29,7 +29,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -510,6 +510,7 @@ chrome_java_resources = [ +@@ -506,6 +506,7 @@ chrome_java_resources = [ "java/res/layout/find_in_page.xml", "java/res/layout/find_toolbar.xml", "java/res/layout/fre_tos_privacy_disclaimer.xml", @@ -40,7 +40,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -646,6 +646,8 @@ chrome_java_sources = [ +@@ -654,6 +654,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/firstrun/SyncConsentFirstRunFragment.java", "java/src/org/chromium/chrome/browser/firstrun/TabbedModeFirstRunActivity.java", "java/src/org/chromium/chrome/browser/firstrun/TosDialogBehaviorSharedPrefInvalidator.java", @@ -237,7 +237,7 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res diff --git a/chrome/android/java/res/values/styles.xml b/chrome/android/java/res/values/styles.xml --- a/chrome/android/java/res/values/styles.xml +++ b/chrome/android/java/res/values/styles.xml -@@ -257,6 +257,30 @@ found in the LICENSE file. +@@ -270,6 +270,30 @@ found in the LICENSE file. 1 @@ -320,7 +320,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/Defaul diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java -@@ -30,8 +30,7 @@ import org.chromium.chrome.browser.fonts.FontPreloader; +@@ -31,8 +31,7 @@ import org.chromium.chrome.browser.fonts.FontPreloader; import org.chromium.chrome.browser.metrics.UmaUtils; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; @@ -330,7 +330,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR import org.chromium.components.browser_ui.modaldialog.AppModalPresenter; import org.chromium.components.feature_engagement.EventConstants; import org.chromium.components.metrics.LowEntropySource; -@@ -120,7 +119,7 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -121,7 +120,7 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa /** Creates first page and sets up adapter. Should result UI being shown on the screen. */ private void createFirstPage() { BooleanSupplier showWelcomePage = () -> !FirstRunStatus.shouldSkipWelcomePage(); @@ -339,7 +339,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR mFreProgressStates.add(MobileFreProgress.WELCOME_SHOWN); mPagerAdapter = new FirstRunPagerAdapter(FirstRunActivity.this, mPages); mPager.setAdapter(mPagerAdapter); -@@ -142,13 +141,11 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -143,7 +142,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa // // TODO(b/245912657): explicitly sign in supervised users in {@link // SigninFirstRunMediator#handleContinueWithNative} rather than relying on SigninChecker. @@ -347,25 +347,28 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR mFirstRunFlowSequencer.updateFirstRunProperties(mFreProperties); - BooleanSupplier showSearchEnginePromo = - () -> mFreProperties.getBoolean(SHOW_SEARCH_ENGINE_PAGE); -- BooleanSupplier showSyncConsent = () -> mFreProperties.getBoolean(SHOW_SYNC_CONSENT_PAGE); - - // An optional page to select a default search engine. - if (showSearchEnginePromo.getAsBoolean()) { -@@ -158,11 +155,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -158,20 +156,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa mFreProgressStates.add(MobileFreProgress.DEFAULT_SEARCH_ENGINE_SHOWN); } - // An optional sync consent page, the visibility of this page will be decided on the fly - // according to the situation. -- mPages.add(new FirstRunPage<>(SyncConsentFirstRunFragment.class, showSyncConsent)); +- if (ChromeFeatureList.isEnabled( +- ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS)) { +- BooleanSupplier showHistorySync = +- () -> mFreProperties.getBoolean(SHOW_HISTORY_SYNC_PAGE); +- mPages.add(new FirstRunPage<>(HistorySyncFirstRunFragment.class, showHistorySync)); +- } else { +- BooleanSupplier showSyncConsent = +- () -> mFreProperties.getBoolean(SHOW_SYNC_CONSENT_PAGE); +- mPages.add(new FirstRunPage<>(SyncConsentFirstRunFragment.class, showSyncConsent)); +- } - mFreProgressStates.add(MobileFreProgress.SYNC_CONSENT_SHOWN); - if (mPagerAdapter != null) { mPagerAdapter.notifyDataSetChanged(); } -@@ -513,11 +505,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa +@@ -522,11 +506,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa public void acceptTermsOfService(boolean allowMetricsAndCrashUploading) { assert mNativeInitializationPromise.isFulfilled(); @@ -380,7 +383,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java -@@ -39,8 +39,6 @@ import org.chromium.chrome.browser.profiles.ProfileProvider; +@@ -38,8 +38,6 @@ import org.chromium.chrome.browser.profiles.ProfileProvider; import org.chromium.chrome.browser.ui.system.StatusBarColorController; import org.chromium.components.browser_ui.widget.gesture.BackPressHandler; import org.chromium.components.policy.PolicyService; @@ -403,7 +406,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencer.java -@@ -27,14 +27,9 @@ import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza +@@ -28,14 +28,9 @@ import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileProvider; import org.chromium.chrome.browser.search_engines.SearchEnginePromoType; @@ -418,7 +421,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR /** * A helper to determine what should be the sequence of First Run Experience screens, and whether -@@ -62,41 +57,19 @@ public abstract class FirstRunFlowSequencer { +@@ -63,41 +58,19 @@ public abstract class FirstRunFlowSequencer { /** Returns true if the sync consent promo page should be shown. */ boolean shouldShowSyncConsentPage(boolean isChild) { @@ -428,7 +431,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR - } - assert mProfileSupplier.get() != null; - Profile profile = mProfileSupplier.get().getOriginalProfile(); -- +- // TODO(crbug.com/1520791): Review this logic for history sync for UNO. - final IdentityManager identityManager = - IdentityServicesProvider.get().getIdentityManager(profile); - if (identityManager.hasPrimaryAccount(ConsentLevel.SYNC) || !isSyncAllowed()) { @@ -463,7 +466,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR } } -@@ -152,18 +125,8 @@ public abstract class FirstRunFlowSequencer { +@@ -153,18 +126,8 @@ public abstract class FirstRunFlowSequencer { * method. */ void start() { @@ -484,7 +487,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR } @VisibleForTesting -@@ -182,14 +145,10 @@ public abstract class FirstRunFlowSequencer { +@@ -183,14 +146,10 @@ public abstract class FirstRunFlowSequencer { } private void maybeProcessFreEnvironmentPreNative() { @@ -499,18 +502,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR onFlowIsKnown(freProperties); } -@@ -200,8 +159,8 @@ public abstract class FirstRunFlowSequencer { +@@ -201,6 +160,8 @@ public abstract class FirstRunFlowSequencer { * @param freProperties Resulting FRE properties bundle. */ public void updateFirstRunProperties(Bundle freProperties) { -- freProperties.putBoolean( -- FirstRunActivity.SHOW_SYNC_CONSENT_PAGE, shouldShowSyncConsentPage()); + if (freProperties == null) + throw new RuntimeException("attempting to update null FRE properties"); - freProperties.putBoolean( - FirstRunActivity.SHOW_SEARCH_ENGINE_PAGE, shouldShowSearchEnginePage()); - } -@@ -303,13 +262,17 @@ public abstract class FirstRunFlowSequencer { + boolean isHistorySyncEnabled = + ChromeFeatureList.isEnabled( + ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS); +@@ -311,13 +272,17 @@ public abstract class FirstRunFlowSequencer { if (!(caller instanceof Activity)) { freIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } @@ -577,7 +578,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAnd new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java -@@ -0,0 +1,336 @@ +@@ -0,0 +1,335 @@ +// Copyright 2015 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -608,7 +609,6 @@ new file mode 100644 +import org.chromium.base.metrics.RecordHistogram; +import org.chromium.chrome.R; +import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; -+import org.chromium.components.version_info.VersionInfo; +import org.chromium.ui.modaldialog.ModalDialogManagerHolder; +import org.chromium.ui.text.NoUnderlineClickableSpan; +import org.chromium.ui.text.SpanApplier; @@ -1265,7 +1265,7 @@ diff --git a/chrome/browser/locale/java/src/org/chromium/chrome/browser/locale/L - throw new IllegalStateException( - "Not applicable unless existing or new promos are required"); + TemplateUrlService templateUrlService = -+ TemplateUrlServiceFactory.getForProfile(Profile.getLastUsedRegularProfile()); ++ TemplateUrlServiceFactory.getForProfile(ProfileManager.getLastUsedRegularProfile()); + return templateUrlService.getTemplateUrls(); } @@ -1273,7 +1273,7 @@ diff --git a/chrome/browser/locale/java/src/org/chromium/chrome/browser/locale/L diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -3085,7 +3085,29 @@ To change this setting, <resetlink>reset sync

BEGIN_LINKclear the Chrome da %1$sGoogle Maps will open in Chrome. By continuing, you agree to the <LINK1>Google Terms of Service</LINK1>, and the <LINK2>Google Chrome and ChromeOS Additional Terms of Service</LINK2>. The <LINK3>Privacy Policy</LINK3> also applies. diff --git a/build/cromite_patches/autofill-miscellaneous.patch b/build/cromite_patches/autofill-miscellaneous.patch index e8e4a53121cf2378afc3cdd488691ab0e78d59ba..8610e74970caf029b4ea5dce41d1a35f20d85cdb 100644 --- a/build/cromite_patches/autofill-miscellaneous.patch +++ b/build/cromite_patches/autofill-miscellaneous.patch @@ -10,38 +10,32 @@ Do not skip google.com domains for password generation (csagan5) License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/browser/prefs/browser_prefs.cc | 6 +- + chrome/browser/prefs/browser_prefs.cc | 2 +- .../ui/autofill/chrome_autofill_client.cc | 7 +- .../core/browser/browser_autofill_manager.h | 4 +- - .../autofill_crowdsourcing_manager.cc | 66 ++----------------- + .../autofill_crowdsourcing_manager.cc | 69 ++----------------- .../autofill_crowdsourcing_manager.h | 2 - .../autofill/core/common/autofill_features.cc | 1 + .../autofill/core/common/autofill_prefs.cc | 10 +-- .../password_generation_frame_helper.cc | 4 -- - 8 files changed, 17 insertions(+), 83 deletions(-) + 8 files changed, 15 insertions(+), 84 deletions(-) diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -1150,11 +1150,11 @@ void RegisterProfilePrefsForMigration( - PrefRegistry::LOSSY_PREF); +@@ -1344,7 +1344,7 @@ void RegisterProfilePrefsForMigration( + #endif - // Deprecated 11/2022. -- registry->RegisterBooleanPref(kAutofillAssistantEnabled, true); -+ registry->RegisterBooleanPref(kAutofillAssistantEnabled, false); - registry->RegisterBooleanPref(kAutofillAssistantConsent, false); -- registry->RegisterBooleanPref(kAutofillAssistantTriggerScriptsEnabled, true); -+ registry->RegisterBooleanPref(kAutofillAssistantTriggerScriptsEnabled, false); - registry->RegisterBooleanPref(kAutofillAssistantTriggerScriptsIsFirstTimeUser, -- true); -+ false); + // Deprecated 12/2023. +- registry->RegisterBooleanPref(kDownloadDuplicateFilePromptEnabled, true); ++ registry->RegisterBooleanPref(kDownloadDuplicateFilePromptEnabled, false); - // Deprecated 12/2022. - registry->RegisterBooleanPref(kAutofillWalletImportStorageCheckboxState, + // Deprecated 12/2023. + registry->RegisterInt64Pref(kModelQualityLoggingClientId, true); diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc --- a/chrome/browser/ui/autofill/chrome_autofill_client.cc +++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc -@@ -218,12 +218,7 @@ ChromeAutofillClient::GetURLLoaderFactory() { +@@ -242,12 +242,7 @@ ChromeAutofillClient::GetURLLoaderFactory() { } AutofillCrowdsourcingManager* ChromeAutofillClient::GetCrowdsourcingManager() { @@ -58,8 +52,8 @@ diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/brows diff --git a/components/autofill/core/browser/browser_autofill_manager.h b/components/autofill/core/browser/browser_autofill_manager.h --- a/components/autofill/core/browser/browser_autofill_manager.h +++ b/components/autofill/core/browser/browser_autofill_manager.h -@@ -710,9 +710,9 @@ class BrowserAutofillManager : public AutofillManager { - autocomplete_unrecognized_fallback_logger_; +@@ -577,9 +577,9 @@ class BrowserAutofillManager : public AutofillManager { + manual_fallback_logger_; // Have we logged whether Autofill is enabled for this page load? - bool has_logged_autofill_enabled_ = false; @@ -73,24 +67,27 @@ diff --git a/components/autofill/core/browser/browser_autofill_manager.h b/compo diff --git a/components/autofill/core/browser/crowdsourcing/autofill_crowdsourcing_manager.cc b/components/autofill/core/browser/crowdsourcing/autofill_crowdsourcing_manager.cc --- a/components/autofill/core/browser/crowdsourcing/autofill_crowdsourcing_manager.cc +++ b/components/autofill/core/browser/crowdsourcing/autofill_crowdsourcing_manager.cc -@@ -465,30 +465,6 @@ std::optional GetUploadPayloadForApi( +@@ -475,33 +475,6 @@ std::optional GetUploadPayloadForApi( return std::move(payload); } -// Gets an API method URL given its type (query or upload), an optional -// resource ID, and the HTTP method to be used. -// Example usage: --// * GetAPIMethodUrl(REQUEST_QUERY, "1234", "GET") will return "/v1/pages/1234". --// * GetAPIMethodUrl(REQUEST_QUERY, "1234", "POST") will return "/v1/pages:get". --// * GetAPIMethodUrl(REQUEST_UPLOAD, "", "POST") will return "/v1/forms:vote". --std::string GetAPIMethodUrl(AutofillCrowdsourcingManager::RequestType type, -- base::StringPiece resource_id, -- base::StringPiece method) { +-// * GetAPIMethodUrl(RequestType::kRequestQuery, "1234", "GET") will return +-// "/v1/pages/1234". +-// * GetAPIMethodUrl(RequestType::kRequestQuery, "1234", "POST") will return +-// "/v1/pages:get". +-// * GetAPIMethodUrl(RequestType::kRequestUpload, "", "POST") will return +-// "/v1/forms:vote". +-std::string GetAPIMethodUrl(RequestType type, +- std::string_view resource_id, +- std::string_view method) { - const char* api_method_url = [&] { - switch (type) { -- case AutofillCrowdsourcingManager::REQUEST_QUERY: +- case RequestType::kRequestQuery: - return method == "POST" ? "/v1/pages:get" : "/v1/pages"; -- case AutofillCrowdsourcingManager::REQUEST_UPLOAD: +- case RequestType::kRequestUpload: - return "/v1/forms:vote"; - } - NOTREACHED_NORETURN(); @@ -102,9 +99,9 @@ diff --git a/components/autofill/core/browser/crowdsourcing/autofill_crowdsourci -} - // Gets HTTP body payload for API POST request. - std::optional GetAPIBodyPayload( - std::string payload, -@@ -521,18 +497,7 @@ std::optional GetAPIQueryPayload( + std::optional GetAPIBodyPayload(std::string payload, + RequestType type) { +@@ -533,18 +506,7 @@ std::optional GetAPIQueryPayload( } std::string GetAPIKeyForUrl(version_info::Channel channel) { @@ -123,8 +120,8 @@ diff --git a/components/autofill/core/browser/crowdsourcing/autofill_crowdsourci + return std::string(); } - } // namespace -@@ -732,34 +697,13 @@ size_t AutofillCrowdsourcingManager::GetPayloadLength( + std::optional>& GetActiveExperiments() { +@@ -774,34 +736,13 @@ size_t AutofillCrowdsourcingManager::GetPayloadLength( std::tuple AutofillCrowdsourcingManager::GetRequestURLAndMethod( const FormRequestData& request_data) const { @@ -133,7 +130,7 @@ diff --git a/components/autofill/core/browser/crowdsourcing/autofill_crowdsourci - std::string resource_id; - std::string method = "POST"; - -- if (request_data.request_type == AutofillCrowdsourcingManager::REQUEST_QUERY) { +- if (request_data.request_type == RequestType::kRequestQuery) { - if (GetPayloadLength(request_data.payload) <= kMaxQueryGetSize) { - resource_id = request_data.payload; - method = "GET"; @@ -160,13 +157,13 @@ diff --git a/components/autofill/core/browser/crowdsourcing/autofill_crowdsourci bool AutofillCrowdsourcingManager::StartRequest(FormRequestData request_data) { + if ((true)) return false; - // REQUEST_UPLOADs take no IsolationInfo because Password Manager uploads when + // kRequestUploads take no IsolationInfo because Password Manager uploads when // RenderFrameHostImpl::DidCommitNavigation() is called, in which case // AutofillDriver::IsolationInfo() may crash because there is no committing diff --git a/components/autofill/core/browser/crowdsourcing/autofill_crowdsourcing_manager.h b/components/autofill/core/browser/crowdsourcing/autofill_crowdsourcing_manager.h --- a/components/autofill/core/browser/crowdsourcing/autofill_crowdsourcing_manager.h +++ b/components/autofill/core/browser/crowdsourcing/autofill_crowdsourcing_manager.h -@@ -36,8 +36,6 @@ namespace autofill { +@@ -33,8 +33,6 @@ namespace autofill { class AutofillClient; class LogManager; @@ -178,7 +175,7 @@ diff --git a/components/autofill/core/browser/crowdsourcing/autofill_crowdsourci diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc -@@ -861,6 +861,7 @@ BASE_FEATURE(kAutofillUploadThrottling, +@@ -775,6 +775,7 @@ BASE_FEATURE(kAutofillUploadThrottling, "AutofillUploadThrottling", base::FEATURE_ENABLED_BY_DEFAULT); @@ -189,7 +186,7 @@ diff --git a/components/autofill/core/common/autofill_features.cc b/components/a diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc --- a/components/autofill/core/common/autofill_prefs.cc +++ b/components/autofill/core/common/autofill_prefs.cc -@@ -144,7 +144,7 @@ const char kAutofillUsingVirtualViewStructure[] = +@@ -39,7 +39,7 @@ int GetSyncTransportOptInBitFieldForAccount(const PrefService* prefs, void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { // Synced prefs. Used for cross-device choices, e.g., credit card Autofill. registry->RegisterBooleanPref( @@ -198,7 +195,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterIntegerPref( prefs::kAutofillLastVersionDeduped, 0, -@@ -153,10 +153,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -48,10 +48,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { prefs::kAutofillHasSeenIban, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterBooleanPref( @@ -209,9 +206,9 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto - prefs::kAutofillPaymentCvcStorage, true, + prefs::kAutofillPaymentCvcStorage, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); - - // Non-synced prefs. Used for per-device choices, e.g., signin promo. -@@ -196,9 +196,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { + registry->RegisterBooleanPref( + kAutofillPaymentCardBenefits, true, +@@ -94,9 +94,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { #endif // Deprecated prefs registered for migration. @@ -226,7 +223,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto diff --git a/components/password_manager/core/browser/password_generation_frame_helper.cc b/components/password_manager/core/browser/password_generation_frame_helper.cc --- a/components/password_manager/core/browser/password_generation_frame_helper.cc +++ b/components/password_manager/core/browser/password_generation_frame_helper.cc -@@ -94,7 +94,6 @@ void PasswordGenerationFrameHelper::ProcessPasswordRequirements( +@@ -95,7 +95,6 @@ void PasswordGenerationFrameHelper::ProcessPasswordRequirements( // In order for password generation to be enabled, we need to make sure: // (1) Password sync is enabled, and // (2) Password saving is enabled @@ -234,14 +231,14 @@ diff --git a/components/password_manager/core/browser/password_generation_frame_ bool PasswordGenerationFrameHelper::IsGenerationEnabled( bool log_debug_data) const { std::unique_ptr logger; -@@ -104,9 +103,6 @@ bool PasswordGenerationFrameHelper::IsGenerationEnabled( +@@ -105,9 +104,6 @@ bool PasswordGenerationFrameHelper::IsGenerationEnabled( } GURL url = driver_->GetLastCommittedURL(); - if (url.DomainIs("google.com")) - return false; - - if (!client_->IsSavingAndFillingEnabled(url)) { - if (logger) - logger->LogMessage(Logger::STRING_GENERATION_DISABLED_SAVING_DISABLED); + if (!password_manager_util::IsAbleToSavePasswords(client_)) { + if (logger) { + logger->LogMessage( -- diff --git a/build/cromite_patches/bromite-build-utils.patch b/build/cromite_patches/bromite-build-utils.patch index 8065bd00b47fbcf65cae7e70be8dcd597cdeb081..5910f846ce503e679a21e949fd23a47731d695dc 100644 --- a/build/cromite_patches/bromite-build-utils.patch +++ b/build/cromite_patches/bromite-build-utils.patch @@ -14,12 +14,13 @@ Subject: bromite build utils build/config/android/rules.gni | 6 +- .../ChromeAccessibilitySettingsDelegate.java | 5 + chrome/browser/flags/BUILD.gn | 10 +- - .../flags/android/cromite_native_utils.cc | 41 +++++++ + .../flags/android/cromite_native_utils.cc | 43 +++++++ .../flags/android/cromite_native_utils.h | 14 +++ .../browser/flags/CromiteNativeUtils.java | 46 ++++++++ + mojo/public/tools/mojom/mojom_parser.py | 22 +++- tools/grit/grit/grd_reader.py | 27 ++++- tools/grit/preprocess_if_expr.py | 32 +++++- - 16 files changed, 467 insertions(+), 16 deletions(-) + 17 files changed, 488 insertions(+), 19 deletions(-) create mode 100644 build/bromite/bromite_utils.gni create mode 100644 build/bromite/gyp/cpp_bromite_include.py create mode 100644 build/bromite/gyp/cpp_bromite_include.pydeps @@ -426,7 +427,7 @@ new file mode 100644 diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn --- a/build/config/BUILDCONFIG.gn +++ b/build/config/BUILDCONFIG.gn -@@ -652,6 +652,7 @@ set_defaults("component") { +@@ -655,6 +655,7 @@ set_defaults("component") { configs = default_component_configs } @@ -482,10 +483,10 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn - sources = [ + sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ] + sources += [ - "android/java/src/org/chromium/chrome/browser/flags/AllCachedFieldTrialParameters.java", - "android/java/src/org/chromium/chrome/browser/flags/BooleanCachedFieldTrialParameter.java", - "android/java/src/org/chromium/chrome/browser/flags/CachedFieldTrialParameter.java", -@@ -41,7 +42,8 @@ android_library("java") { + "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java", + "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java", + "android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java", +@@ -30,7 +31,8 @@ android_library("java") { } generate_jni("jni_headers") { @@ -495,7 +496,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java", "android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java", ] -@@ -49,6 +51,10 @@ generate_jni("jni_headers") { +@@ -38,6 +40,10 @@ generate_jni("jni_headers") { static_library("flags_android") { sources = [ @@ -510,7 +511,7 @@ diff --git a/chrome/browser/flags/android/cromite_native_utils.cc b/chrome/brows new file mode 100755 --- /dev/null +++ b/chrome/browser/flags/android/cromite_native_utils.cc -@@ -0,0 +1,41 @@ +@@ -0,0 +1,43 @@ +#include "chrome/browser/flags/android/cromite_native_utils.h" + +#include "chrome/browser/browser_process.h" @@ -534,6 +535,8 @@ new file mode 100755 + + if (isEnabled) + entries.insert(internal_name + "@1"); ++ else ++ entries.insert(internal_name + "@2"); + + flags_storage.SetFlags(entries); + flags_storage.CommitPendingWrites(); @@ -578,9 +581,9 @@ new file mode 100755 @@ -0,0 +1,46 @@ +package org.chromium.chrome.browser.flags; + ++import org.chromium.base.cached_flags.CachedFlag; +import org.chromium.chrome.browser.flags.ChromeFeatureList; -+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; -+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; ++import org.chromium.base.cached_flags.CachedFlagsSharedPreferences; + +import org.jni_zero.CalledByNative; +import org.jni_zero.NativeMethods; @@ -607,7 +610,7 @@ new file mode 100755 + CachedFlag cachedFlag = ChromeFeatureList.sAllCachedFlags.get(featureName); + String preferenceName = cachedFlag.getSharedPreferenceKey(); + -+ ChromeSharedPreferences.getInstance().writeBoolean(preferenceName, newValue); ++ CachedFlagsSharedPreferences.getInstance().writeBoolean(preferenceName, newValue); + cachedFlag.setValueReturnedOverride(newValue); + } + } @@ -622,6 +625,55 @@ new file mode 100755 + boolean isFlagEnabled(String featureName); + } +} +diff --git a/mojo/public/tools/mojom/mojom_parser.py b/mojo/public/tools/mojom/mojom_parser.py +--- a/mojo/public/tools/mojom/mojom_parser.py ++++ b/mojo/public/tools/mojom/mojom_parser.py +@@ -21,6 +21,7 @@ import os + import os.path + import sys + import traceback ++import re + from collections import defaultdict + + from mojom.generate import module +@@ -176,11 +177,26 @@ def _CollectAllowedImportsFromBuildMetadata(build_metadata_filename): + collect(build_metadata_filename) + return allowed_imports + ++def _ResolveInclude(mojom_abspath, input_root_paths): ++ mojom_abspath = _ResolveRelativeImportPath(mojom_abspath, input_root_paths) ++ with codecs.open(mojom_abspath, encoding='utf-8') as f: ++ src = f.read() ++ ++ lines = src.splitlines(); ++ for idx, i in enumerate(lines): ++ if i.startswith("#include"): ++ include_file = re.findall(r'"([^"]*)"', i)[0] ++ if include_file.startswith("../../"): ++ include_file = include_file[6::] ++ lines[idx] = _ResolveInclude(include_file, input_root_paths) ++ ++ return "\n".join(lines) + + # multiprocessing helper. +-def _ParseAstHelper(mojom_abspath, enabled_features): ++def _ParseAstHelper(mojom_abspath, enabled_features, input_root_paths): + with codecs.open(mojom_abspath, encoding='utf-8') as f: +- ast = parser.Parse(f.read(), mojom_abspath) ++ src = _ResolveInclude(mojom_abspath, input_root_paths) ++ ast = parser.Parse(src, mojom_abspath) + conditional_features.RemoveDisabledDefinitions(ast, enabled_features) + return mojom_abspath, ast + +@@ -300,7 +316,7 @@ def _ParseMojoms(mojom_files, + (path, abs_path) for abs_path, path in mojom_files_to_parse.items()) + + logging.info('Parsing %d .mojom into ASTs', len(mojom_files_to_parse)) +- map_args = ((mojom_abspath, enabled_features) ++ map_args = ((mojom_abspath, enabled_features, input_root_paths) + for mojom_abspath in mojom_files_to_parse) + for mojom_abspath, ast in _Shard(_ParseAstHelper, map_args): + loaded_mojom_asts[mojom_abspath] = ast diff --git a/tools/grit/grit/grd_reader.py b/tools/grit/grit/grd_reader.py --- a/tools/grit/grit/grd_reader.py +++ b/tools/grit/grit/grd_reader.py diff --git a/build/cromite_patches/build-remove-calling-untrusted-hooks.patch b/build/cromite_patches/build-remove-calling-untrusted-hooks.patch index 047e6a4ce2d310bbf59ac2af1f635c8303c67568..705aff452e1b872d17fa22949dd8a5cb3771e23e 100644 --- a/build/cromite_patches/build-remove-calling-untrusted-hooks.patch +++ b/build/cromite_patches/build-remove-calling-untrusted-hooks.patch @@ -31,7 +31,7 @@ diff --git a/DEPS b/DEPS # By default bot checkouts the WPR archive files only when this # flag is set True. -@@ -4362,54 +4362,6 @@ hooks = [ +@@ -4526,54 +4526,6 @@ hooks = [ 'sync', '--extract', ], }, @@ -86,7 +86,7 @@ diff --git a/DEPS b/DEPS { # Case-insensitivity for the Win SDK. Must run before win_toolchain below. 'name': 'ciopfs_linux', -@@ -4560,57 +4512,6 @@ hooks = [ +@@ -4723,57 +4675,6 @@ hooks = [ ], }, @@ -144,7 +144,7 @@ diff --git a/DEPS b/DEPS # Pull rc binaries using checked-in hashes. { 'name': 'rc_win', -@@ -4636,30 +4537,6 @@ hooks = [ +@@ -4799,30 +4700,6 @@ hooks = [ '-s', 'src/build/toolchain/win/rc/mac/rc.sha1', ], }, diff --git a/build/cromite_patches/disable-AdsBlockedInfoBar.patch b/build/cromite_patches/disable-AdsBlockedInfoBar.patch index ef9a009c5e8468e1a36db1ab34c6f3f9e3e0bc46..944456674a6b5796b1e5f49342c9a44715d043ec 100644 --- a/build/cromite_patches/disable-AdsBlockedInfoBar.patch +++ b/build/cromite_patches/disable-AdsBlockedInfoBar.patch @@ -24,7 +24,7 @@ diff --git a/components/subresource_filter/content/browser/profile_interaction_m namespace subresource_filter { ProfileInteractionManager::ProfileInteractionManager( -@@ -135,47 +128,6 @@ void ProfileInteractionManager::MaybeShowNotification() { +@@ -133,47 +126,6 @@ void ProfileInteractionManager::MaybeShowNotification() { // currently primary. DCHECK(page_); DCHECK(page_->IsPrimary()); diff --git a/build/cromite_patches/disable-WebView-variations-support.patch b/build/cromite_patches/disable-WebView-variations-support.patch index 1c847f321244a89f891f812511932ee93248db9a..d679eb4ff5b6f1bca6de3a9976898c9673e42677 100644 --- a/build/cromite_patches/disable-WebView-variations-support.patch +++ b/build/cromite_patches/disable-WebView-variations-support.patch @@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java -@@ -201,12 +201,6 @@ public class WebViewChromiumAwInit { +@@ -211,12 +211,6 @@ public class WebViewChromiumAwInit { AwBrowserProcess.configureChildProcessLauncher(); @@ -28,7 +28,7 @@ diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewC diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java -@@ -483,10 +483,6 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider { +@@ -463,10 +463,6 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider { } } diff --git a/build/cromite_patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch b/build/cromite_patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch index dbaa52ac882bb849f9c47e67e95e23863c2ca483..6ba704bc73b89a72abe68e4b2ae08c78d82141ce 100644 --- a/build/cromite_patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch +++ b/build/cromite_patches/dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch @@ -9,13 +9,14 @@ Increase probe period from 1s to 15s License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - net/dns/host_resolver_manager.cc | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + net/dns/host_resolver_manager.cc | 10 +++++----- + net/dns/host_resolver_manager_request_impl.cc | 5 +++++ + 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc --- a/net/dns/host_resolver_manager.cc +++ b/net/dns/host_resolver_manager.cc -@@ -155,12 +155,12 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds; +@@ -149,12 +149,12 @@ const size_t kMaxHostLength = 4096; // Time between IPv6 probes, i.e. for how long results of each IPv6 probe are // cached. @@ -31,6 +32,28 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc + { 0x20, 0x01, 0x07, 0xfd, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }; - // ICANN uses this localhost address to indicate a name collision. - // + // True if |hostname| ends with either ".local" or ".local.". + bool ResemblesMulticastDNSName(base::StringPiece hostname) { +diff --git a/net/dns/host_resolver_manager_request_impl.cc b/net/dns/host_resolver_manager_request_impl.cc +--- a/net/dns/host_resolver_manager_request_impl.cc ++++ b/net/dns/host_resolver_manager_request_impl.cc +@@ -33,6 +33,8 @@ + #include "net/socket/client_socket_factory.h" + #include "net/url_request/url_request_context.h" + ++#include "services/network/public/cpp/features.h" ++ + namespace net { + + HostResolverManager::RequestImpl::RequestImpl( +@@ -280,6 +282,9 @@ void HostResolverManager::RequestImpl::OnIOComplete(int rv) { + + int HostResolverManager::RequestImpl::DoIPv6Reachability() { + next_state_ = STATE_GET_PARAMETERS; ++ if (!base::FeatureList::IsEnabled(features::kIPv6Probing)) { ++ return OK; ++ } + // If a single reachability probe has not been completed, and the latest + // probe will return asynchronously, return ERR_NAME_NOT_RESOLVED when the + // request source is LOCAL_ONLY. This is due to LOCAL_ONLY requiring a -- diff --git a/build/cromite_patches/do-not-add-suffix-to-package-name.patch b/build/cromite_patches/do-not-add-suffix-to-package-name.patch index a2dd93b2e987d72b8fb0b6dfb2ae8f39d58df417..268d587c951fdd29690c0592181f899d7f89eaf9 100644 --- a/build/cromite_patches/do-not-add-suffix-to-package-name.patch +++ b/build/cromite_patches/do-not-add-suffix-to-package-name.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni -@@ -29,7 +29,7 @@ declare_args() { +@@ -28,7 +28,7 @@ declare_args() { chrome_public_manifest_package = "org.chromium.chrome" if (use_stable_package_name_for_trichrome) { chrome_public_manifest_package += ".stable" diff --git a/build/cromite_patches/enable-ftrivial-auto-var-init-zero.patch b/build/cromite_patches/enable-ftrivial-auto-var-init-zero.patch index 1ab1191e4ca1540c5edd11eab47b712f55b8a1a7..315e57d08dc3de7e12b1bf47bb916e515477bebc 100644 --- a/build/cromite_patches/enable-ftrivial-auto-var-init-zero.patch +++ b/build/cromite_patches/enable-ftrivial-auto-var-init-zero.patch @@ -11,7 +11,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn -@@ -399,6 +399,10 @@ config("compiler") { +@@ -398,6 +398,10 @@ config("compiler") { cflags += [ "-fwrapv" ] } diff --git a/build/cromite_patches/eyeo-beta-118.0.5993.48-android_api.patch b/build/cromite_patches/eyeo-beta-118.0.5993.48-android_api.patch index b773d1ef5d2336da32b151ed3fa9045c7cec6a18..aa92d04792066716db0fc292d4bab4dbd4dbbef9 100644 --- a/build/cromite_patches/eyeo-beta-118.0.5993.48-android_api.patch +++ b/build/cromite_patches/eyeo-beta-118.0.5993.48-android_api.patch @@ -97,7 +97,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn import("//build/android/resource_sizes.gni") import("//build/config/android/config.gni") -@@ -457,6 +461,7 @@ if (current_toolchain == default_toolchain) { +@@ -462,6 +466,7 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/xsurface:java", "//chrome/browser/xsurface_provider:dependency_provider_impl_java", "//chrome/browser/xsurface_provider:java", @@ -105,7 +105,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//components/autofill/android:autofill_java", "//components/background_task_scheduler:background_task_scheduler_java", "//components/background_task_scheduler:background_task_scheduler_task_ids_java", -@@ -676,6 +681,7 @@ if (current_toolchain == default_toolchain) { +@@ -680,6 +685,7 @@ if (current_toolchain == default_toolchain) { "//url/mojom:url_mojom_gurl_java", ] @@ -113,7 +113,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn deps += feed_deps srcjar_deps = [ -@@ -1572,6 +1578,7 @@ if (current_toolchain == default_toolchain) { +@@ -1574,6 +1580,7 @@ if (current_toolchain == default_toolchain) { "//chrome/android/webapk/libs/client:client_java", "//chrome/android/webapk/libs/common:common_java", "//chrome/android/webapk/libs/runtime_library:webapk_service_aidl_java", @@ -121,7 +121,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/android/browserservices/intents:java", "//chrome/browser/android/browserservices/verification:java", "//chrome/browser/android/browserservices/verification:javatests", -@@ -1916,6 +1923,7 @@ if (current_toolchain == default_toolchain) { +@@ -1919,6 +1926,7 @@ if (current_toolchain == default_toolchain) { srcjar_deps = [ "//chrome/browser:tos_dialog_behavior_generated_enum" ] data = [ @@ -129,7 +129,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/test/data/android/", "//chrome/test/data/autofill/", "//chrome/test/data/background_sync/", -@@ -3749,6 +3757,7 @@ group("jni_headers") { +@@ -3785,6 +3793,7 @@ group("jni_headers") { "//chrome/browser/util:jni_headers", "//chrome/browser/webauthn/android:jni_headers", "//components/browser_ui/device_lock/android:device_lock_bridge_jni_headers", @@ -140,7 +140,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3460,6 +3460,17 @@ static_library("browser") { +@@ -3452,6 +3452,17 @@ static_library("browser") { "webauthn/android/webauthn_request_delegate_android.h", ] @@ -158,7 +158,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn public_deps += [ "//chrome/android/features/dev_ui:buildflags", -@@ -3653,6 +3664,9 @@ static_library("browser") { +@@ -3641,6 +3652,9 @@ static_library("browser") { "//url", ] @@ -660,7 +660,7 @@ new file mode 100644 diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -267,6 +267,11 @@ +@@ -271,6 +271,11 @@ #include "components/commerce/core/commerce_feature_list.h" #include "components/commerce/core/proto/merchant_signal_db_content.pb.h" @@ -672,7 +672,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc #else #include "chrome/browser/accessibility/live_caption/live_caption_controller_factory.h" -@@ -829,6 +834,11 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -832,6 +837,11 @@ void ChromeBrowserMainExtraPartsProfiles:: #if BUILDFLAG(IS_ANDROID) FastCheckoutCapabilitiesFetcherFactory::GetInstance(); @@ -1282,7 +1282,7 @@ new file mode 100644 + const base::android::JavaParamRef& allowed_domain) { + auto* configuration = GetConfigurationWithName(env, configuration_name); + if (configuration) { -+ configuration->RemoveAllowedDomain(ConvertJavaStringToUTF8(allowed_domain)); ++ configuration->RemoveAllowedDomain(base::android::ConvertJavaStringToUTF8(allowed_domain)); + } +} + @@ -1302,7 +1302,7 @@ new file mode 100644 + const base::android::JavaParamRef& custom_filter) { + auto* configuration = GetConfigurationWithName(env, configuration_name); + if (configuration) { -+ configuration->AddCustomFilter(ConvertJavaStringToUTF8(custom_filter)); ++ configuration->AddCustomFilter(base::android::ConvertJavaStringToUTF8(custom_filter)); + } +} + diff --git a/build/cromite_patches/eyeo-beta-118.0.5993.48-android_settings.patch b/build/cromite_patches/eyeo-beta-118.0.5993.48-android_settings.patch index 98716d113f800c6758065ec64db9f51730976cf9..1c15fd3d72a429383465586fe3a14192cebfcf30 100644 --- a/build/cromite_patches/eyeo-beta-118.0.5993.48-android_settings.patch +++ b/build/cromite_patches/eyeo-beta-118.0.5993.48-android_settings.patch @@ -7,7 +7,7 @@ Based on Chromium 118.0.5993.48 Pre-requisites: eyeo Browser Ad filtering Solution: Base Module and Android API Module --- chrome/android/BUILD.gn | 7 + - .../android/java/res/xml/main_preferences.xml | 14 +- + .../android/java/res/xml/main_preferences.xml | 8 + chrome/browser/adblock/android/BUILD.gn | 10 + .../adblock/AdblockFilterFragmentTest.java | 63 +++++ .../adblock/AdblockPopupInfoBarTest.java | 118 +++++++++ @@ -124,7 +124,7 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module and Android API .../translations/adblock_strings_zh-HK.xtb | 4 + .../translations/adblock_strings_zh-TW.xtb | 13 + .../translations/adblock_strings_zu.xtb | 4 + - 118 files changed, 2443 insertions(+), 3 deletions(-) + 118 files changed, 2440 insertions(+) create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/AdblockFilterFragmentTest.java create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/AdblockPopupInfoBarTest.java create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/AdblockPopupMessageTest.java @@ -243,7 +243,7 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module and Android API diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -248,6 +248,10 @@ if (current_toolchain == default_toolchain) { +@@ -244,6 +244,10 @@ if (current_toolchain == default_toolchain) { "//third_party/androidx:androidx_preference_preference_java", ] @@ -254,7 +254,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn if (plus_addresses_use_internal_android_resources) { deps += [ "//clank/components/plus_addresses:java_resources" ] } else { -@@ -681,6 +685,9 @@ if (current_toolchain == default_toolchain) { +@@ -685,6 +689,9 @@ if (current_toolchain == default_toolchain) { "//url/mojom:url_mojom_gurl_java", ] @@ -277,9 +277,9 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j --> + - - - - diff --git a/chrome/browser/adblock/android/BUILD.gn b/chrome/browser/adblock/android/BUILD.gn --- a/chrome/browser/adblock/android/BUILD.gn +++ b/chrome/browser/adblock/android/BUILD.gn diff --git a/build/cromite_patches/eyeo-beta-118.0.5993.48-base.patch b/build/cromite_patches/eyeo-beta-118.0.5993.48-base.patch index a9120e5be9fbb623aa57b0a63c564ea91606cde7..ccbd74037e3b1177a193f46d9bb528114f295dc4 100644 --- a/build/cromite_patches/eyeo-beta-118.0.5993.48-base.patch +++ b/build/cromite_patches/eyeo-beta-118.0.5993.48-base.patch @@ -10,85 +10,66 @@ Based on Chromium 118.0.5993.48 base/trace_event/builtin_categories.h | 5 + build/install-build-deps.py | 10 +- components/BUILD.gn | 15 + - components/adblock/CHANGELOG.md | 635 +++++ - components/adblock/LICENSE | 674 +++++ + components/adblock/CHANGELOG.md | 635 ++++++++ + components/adblock/LICENSE | 674 ++++++++ components/adblock/README.md | 80 + components/adblock/content/BUILD.gn | 22 + - components/adblock/content/browser/BUILD.gn | 136 + + components/adblock/content/browser/BUILD.gn | 136 ++ .../adblock_controller_factory_base.cc | 87 + .../browser/adblock_controller_factory_base.h | 50 + .../content/browser/adblock_filter_match.h | 30 + - .../adblock_telemetry_service_factory_base.cc | 100 + + .../adblock_telemetry_service_factory_base.cc | 100 ++ .../adblock_telemetry_service_factory_base.h | 54 + - .../browser/adblock_url_loader_factory.cc | 747 +++++ - .../browser/adblock_url_loader_factory.h | 100 + - .../adblock_url_loader_factory_for_test.cc | 436 +++ + .../browser/adblock_url_loader_factory.cc | 748 +++++++++ + .../browser/adblock_url_loader_factory.h | 100 ++ + .../adblock_url_loader_factory_for_test.cc | 436 +++++ .../adblock_url_loader_factory_for_test.h | 70 + - .../browser/adblock_webcontents_observer.cc | 188 ++ + .../browser/adblock_webcontents_observer.cc | 188 +++ .../browser/adblock_webcontents_observer.h | 85 + .../content_security_policy_injector.h | 61 + - .../content_security_policy_injector_impl.cc | 125 + + .../content_security_policy_injector_impl.cc | 125 ++ .../content_security_policy_injector_impl.h | 66 + .../adblock/content/browser/element_hider.h | 70 + - .../content/browser/element_hider_impl.cc | 323 +++ + .../content/browser/element_hider_impl.cc | 323 ++++ .../content/browser/element_hider_impl.h | 55 + .../content/browser/element_hider_info.cc | 37 + .../content/browser/element_hider_info.h | 44 + - .../browser/frame_hierarchy_builder.cc | 117 + + .../browser/frame_hierarchy_builder.cc | 117 ++ .../content/browser/frame_hierarchy_builder.h | 63 + .../content/browser/frame_opener_info.cc | 37 + .../content/browser/frame_opener_info.h | 46 + - .../browser/resource_classification_runner.h | 113 + - .../resource_classification_runner_impl.cc | 451 +++ + .../browser/resource_classification_runner.h | 113 ++ + .../resource_classification_runner_impl.cc | 451 ++++++ .../resource_classification_runner_impl.h | 156 ++ .../content/browser/session_stats_impl.cc | 86 + .../content/browser/session_stats_impl.h | 71 + - .../subscription_service_factory_base.cc | 224 ++ + .../subscription_service_factory_base.cc | 224 +++ .../subscription_service_factory_base.h | 60 + - .../test/adblock_url_loader_factory_test.cc | 399 +++ - .../test/adblock_webcontents_observer_test.cc | 164 ++ - ...tent_security_policy_injector_impl_test.cc | 183 ++ - .../browser/test/element_hider_impl_test.cc | 425 +++ - .../test/frame_hierarchy_builder_test.cc | 154 + - ...dblock_content_security_policy_injector.cc | 28 + - ...adblock_content_security_policy_injector.h | 44 + - .../browser/test/mock_element_hider.cc | 26 + - .../content/browser/test/mock_element_hider.h | 55 + - .../test/mock_frame_hierarchy_builder.cc | 26 + - .../test/mock_frame_hierarchy_builder.h | 49 + - .../mock_resource_classification_runner.cc | 49 + - .../mock_resource_classification_runner.h | 104 + - ...esource_classification_runner_impl_test.cc | 463 +++ - .../browser/test/session_stats_impl_test.cc | 74 + components/adblock/core/BUILD.gn | 175 ++ - .../activeping_telemetry_topic_provider.cc | 285 ++ + .../activeping_telemetry_topic_provider.cc | 285 ++++ .../activeping_telemetry_topic_provider.h | 87 + components/adblock/core/adblock_controller.h | 64 + - .../adblock/core/adblock_controller_impl.cc | 271 ++ - .../adblock/core/adblock_controller_impl.h | 95 + + .../adblock/core/adblock_controller_impl.cc | 271 ++++ + .../adblock/core/adblock_controller_impl.h | 95 ++ components/adblock/core/adblock_switches.cc | 26 + components/adblock/core/adblock_switches.h | 29 + - .../adblock/core/adblock_telemetry_service.cc | 258 ++ - .../adblock/core/adblock_telemetry_service.h | 120 + + .../adblock/core/adblock_telemetry_service.cc | 258 +++ + .../adblock/core/adblock_telemetry_service.h | 120 ++ components/adblock/core/classifier/BUILD.gn | 76 + .../core/classifier/resource_classifier.cc | 24 + - .../core/classifier/resource_classifier.h | 90 + - .../classifier/resource_classifier_impl.cc | 404 +++ + .../core/classifier/resource_classifier.h | 90 ++ + .../classifier/resource_classifier_impl.cc | 404 +++++ .../classifier/resource_classifier_impl.h | 64 + - .../test/mock_resource_classifier.cc | 26 + - .../test/mock_resource_classifier.h | 66 + - .../test/resource_classifier_impl_test.cc | 624 +++++ - .../test/resource_classifier_perftest.cc | 234 ++ - components/adblock/core/common/BUILD.gn | 110 + + components/adblock/core/common/BUILD.gn | 110 ++ .../adblock/core/common/adblock_constants.cc | 164 ++ .../adblock/core/common/adblock_constants.h | 48 + - .../adblock/core/common/adblock_prefs.cc | 122 + + .../adblock/core/common/adblock_prefs.cc | 122 ++ .../adblock/core/common/adblock_prefs.h | 46 + .../adblock/core/common/adblock_utils.cc | 171 ++ .../adblock/core/common/adblock_utils.h | 80 + - .../adblock/core/common/content_type.cc | 91 + + .../adblock/core/common/content_type.cc | 91 ++ components/adblock/core/common/content_type.h | 48 + - .../adblock/core/common/flatbuffer_data.cc | 94 + + .../adblock/core/common/flatbuffer_data.cc | 94 ++ .../adblock/core/common/flatbuffer_data.h | 85 + .../adblock/core/common/header_filter_data.h | 38 + .../core/common/keyword_extractor_utils.cc | 30 + @@ -96,155 +77,94 @@ Based on Chromium 118.0.5993.48 .../core/common/regex_filter_pattern.cc | 34 + .../core/common/regex_filter_pattern.h | 33 + components/adblock/core/common/sitekey.h | 29 + - .../core/common/test/adblock_utils_test.cc | 43 + - .../core/common/test/flatbuffer_data_test.cc | 78 + .../adblock/core/configuration/BUILD.gn | 59 + - .../configuration/filtering_configuration.h | 90 + + .../configuration/filtering_configuration.h | 90 ++ .../filtering_configuration_prefs.cc | 33 + .../filtering_configuration_prefs.h | 30 + - .../persistent_filtering_configuration.cc | 273 ++ + .../persistent_filtering_configuration.cc | 273 ++++ .../persistent_filtering_configuration.h | 86 + - .../test/fake_filtering_configuration.cc | 115 + - .../test/fake_filtering_configuration.h | 66 + - .../test/mock_filtering_configuration.cc | 34 + - .../test/mock_filtering_configuration.h | 81 + - ...persistent_filtering_configuration_test.cc | 252 ++ components/adblock/core/converter/BUILD.gn | 83 + - .../adblock/core/converter/converter_main.cc | 115 + - .../core/converter/flatbuffer_converter.cc | 134 + + .../adblock/core/converter/converter_main.cc | 115 ++ + .../core/converter/flatbuffer_converter.cc | 134 ++ .../core/converter/flatbuffer_converter.h | 55 + .../adblock/core/converter/parser/BUILD.gn | 66 + .../core/converter/parser/content_filter.cc | 68 + .../core/converter/parser/content_filter.h | 50 + - .../core/converter/parser/domain_option.cc | 114 + + .../core/converter/parser/domain_option.cc | 114 ++ .../core/converter/parser/domain_option.h | 59 + .../converter/parser/filter_classifier.cc | 39 + .../core/converter/parser/filter_classifier.h | 46 + - .../adblock/core/converter/parser/metadata.cc | 145 + + .../adblock/core/converter/parser/metadata.cc | 145 ++ .../adblock/core/converter/parser/metadata.h | 64 + .../core/converter/parser/snippet_filter.cc | 62 + .../core/converter/parser/snippet_filter.h | 46 + - .../converter/parser/snippet_tokenizer.cc | 103 + + .../converter/parser/snippet_tokenizer.cc | 103 ++ .../core/converter/parser/snippet_tokenizer.h | 47 + - .../parser/test/content_filter_test.cc | 195 ++ - .../parser/test/domain_option_test.cc | 129 + - .../converter/parser/test/metadata_test.cc | 198 ++ - .../parser/test/snippet_filter_test.cc | 78 + - .../parser/test/snippet_tokenizer_test.cc | 141 + - .../parser/test/url_filter_options_test.cc | 255 ++ - .../converter/parser/test/url_filter_test.cc | 149 + - .../core/converter/parser/url_filter.cc | 218 ++ + .../core/converter/parser/url_filter.cc | 218 +++ .../core/converter/parser/url_filter.h | 48 + - .../converter/parser/url_filter_options.cc | 263 ++ - .../converter/parser/url_filter_options.h | 122 + + .../converter/parser/url_filter_options.cc | 263 +++ + .../converter/parser/url_filter_options.h | 122 ++ .../core/converter/serializer/BUILD.gn | 50 + .../serializer/filter_keyword_extractor.cc | 63 + .../serializer/filter_keyword_extractor.h | 59 + - .../serializer/flatbuffer_serializer.cc | 394 +++ - .../serializer/flatbuffer_serializer.h | 129 + + .../serializer/flatbuffer_serializer.cc | 394 +++++ + .../serializer/flatbuffer_serializer.h | 129 ++ .../core/converter/serializer/serializer.h | 41 + - .../test/filter_keyword_extractor_test.cc | 68 + - .../test/flatbuffer_converter_perftest.cc | 64 + - .../test/flatbuffer_converter_test.cc | 2476 +++++++++++++++++ components/adblock/core/features.cc | 25 + components/adblock/core/features.h | 31 + .../core/schema/filter_list_schema.fbs | 165 ++ components/adblock/core/session_stats.h | 42 + components/adblock/core/sitekey_storage.h | 53 + - .../adblock/core/sitekey_storage_impl.cc | 146 + + .../adblock/core/sitekey_storage_impl.cc | 146 ++ .../adblock/core/sitekey_storage_impl.h | 59 + components/adblock/core/subscription/BUILD.gn | 178 ++ .../core/subscription/conversion_executors.h | 50 + .../core/subscription/domain_splitter.cc | 46 + .../core/subscription/domain_splitter.h | 45 + .../filtering_configuration_maintainer.h | 52 + - ...filtering_configuration_maintainer_impl.cc | 489 ++++ - .../filtering_configuration_maintainer_impl.h | 119 + + ...filtering_configuration_maintainer_impl.cc | 489 ++++++ + .../filtering_configuration_maintainer_impl.h | 119 ++ .../subscription/installed_subscription.cc | 42 + - .../subscription/installed_subscription.h | 137 + - .../installed_subscription_impl.cc | 553 ++++ - .../installed_subscription_impl.h | 150 + + .../subscription/installed_subscription.h | 137 ++ + .../installed_subscription_impl.cc | 553 +++++++ + .../installed_subscription_impl.h | 150 ++ .../ongoing_subscription_request.h | 50 + - .../ongoing_subscription_request_impl.cc | 190 ++ + .../ongoing_subscription_request_impl.cc | 190 +++ .../ongoing_subscription_request_impl.h | 74 + - .../core/subscription/pattern_matcher.cc | 265 ++ + .../core/subscription/pattern_matcher.cc | 265 +++ .../core/subscription/pattern_matcher.h | 33 + .../preloaded_subscription_provider.h | 56 + - .../preloaded_subscription_provider_impl.cc | 121 + + .../preloaded_subscription_provider_impl.cc | 121 ++ .../preloaded_subscription_provider_impl.h | 50 + .../core/subscription/regex_matcher.cc | 162 ++ .../adblock/core/subscription/regex_matcher.h | 73 + .../adblock/core/subscription/subscription.cc | 24 + .../adblock/core/subscription/subscription.h | 78 + - .../subscription/subscription_collection.h | 98 + - .../subscription_collection_impl.cc | 353 +++ - .../subscription_collection_impl.h | 97 + - .../core/subscription/subscription_config.cc | 338 +++ - .../core/subscription/subscription_config.h | 120 + + .../subscription/subscription_collection.h | 98 ++ + .../subscription_collection_impl.cc | 353 ++++ + .../subscription_collection_impl.h | 97 ++ + .../core/subscription/subscription_config.cc | 338 ++++ + .../core/subscription/subscription_config.h | 120 ++ .../subscription/subscription_downloader.h | 66 + - .../subscription_downloader_impl.cc | 289 ++ - .../subscription_downloader_impl.h | 102 + + .../subscription_downloader_impl.cc | 289 ++++ + .../subscription_downloader_impl.h | 102 ++ .../subscription_persistent_metadata.h | 86 + .../subscription_persistent_metadata_impl.cc | 170 ++ .../subscription_persistent_metadata_impl.h | 62 + .../subscription_persistent_storage.h | 60 + - .../subscription_persistent_storage_impl.cc | 229 ++ + .../subscription_persistent_storage_impl.cc | 229 +++ .../subscription_persistent_storage_impl.h | 80 + .../core/subscription/subscription_service.h | 87 + - .../subscription/subscription_service_impl.cc | 211 ++ - .../subscription/subscription_service_impl.h | 97 + + .../subscription/subscription_service_impl.cc | 211 +++ + .../subscription/subscription_service_impl.h | 97 ++ .../core/subscription/subscription_updater.h | 35 + .../subscription/subscription_updater_impl.cc | 65 + .../subscription/subscription_updater_impl.h | 52 + .../subscription/subscription_validator.h | 59 + - .../subscription_validator_impl.cc | 145 + + .../subscription_validator_impl.cc | 145 ++ .../subscription_validator_impl.h | 53 + - ...ring_configuration_maintainer_impl_test.cc | 907 ++++++ - .../test/installed_subscription_impl_test.cc | 111 + - .../test/load_gzipped_test_file.cc | 43 + - .../test/load_gzipped_test_file.h | 35 + - .../test/mock_conversion_executors.cc | 25 + - .../test/mock_conversion_executors.h | 44 + - ...mock_filtering_configuration_maintainer.cc | 28 + - .../mock_filtering_configuration_maintainer.h | 45 + - .../test/mock_installed_subscription.cc | 26 + - .../test/mock_installed_subscription.h | 102 + - .../subscription/test/mock_subscription.cc | 36 + - .../subscription/test/mock_subscription.h | 51 + - .../test/mock_subscription_collection.cc | 26 + - .../test/mock_subscription_collection.h | 102 + - .../test/mock_subscription_downloader.cc | 25 + - .../test/mock_subscription_downloader.h | 48 + - .../mock_subscription_persistent_metadata.cc | 27 + - .../mock_subscription_persistent_metadata.h | 76 + - .../test/mock_subscription_service.cc | 36 + - .../test/mock_subscription_service.h | 75 + - .../test/mock_subscription_updater.cc | 25 + - .../test/mock_subscription_updater.h | 38 + - .../ongoing_subscription_request_impl_test.cc | 336 +++ - .../test/pattern_matcher_perftest.cc | 68 + - .../subscription/test/pattern_matcher_test.cc | 350 +++ - ...eloaded_subscription_provider_impl_test.cc | 149 + - .../test/regex_matcher_perftest.cc | 82 + - .../test/subscription_collection_impl_test.cc | 1019 +++++++ - .../test/subscription_downloader_impl_test.cc | 577 ++++ - ...scription_persistent_metadata_impl_test.cc | 213 ++ - ...bscription_persistent_storage_impl_test.cc | 346 +++ - .../test/subscription_service_impl_test.cc | 287 ++ - .../test/subscription_updater_impl_test.cc | 98 + - .../test/subscription_validator_impl_test.cc | 252 ++ - .../test/url_keyword_extractor_test.cc | 74 + .../subscription/url_keyword_extractor.cc | 67 + .../core/subscription/url_keyword_extractor.h | 60 + - ...ctiveping_telemetry_topic_provider_test.cc | 327 +++ - .../core/test/adblock_controller_impl_test.cc | 449 +++ - .../adblock_telemetry_service_unittest.cc | 409 +++ - .../core/test/bundled_subscription_test.cc | 49 + - .../core/test/mock_adblock_controller.cc | 26 + - .../core/test/mock_adblock_controller.h | 71 + - .../adblock/core/test/mock_sitekey_storage.cc | 26 + - .../adblock/core/test/mock_sitekey_storage.h | 49 + - .../core/test/sitekey_storage_impl_test.cc | 155 ++ .../adblock/docs/ad-filtering/README.md | 18 + .../ad-filtering/element-hiding-sequence.png | Bin 0 -> 177168 bytes .../ad-filtering/element-hiding-sequence.txt | 32 + @@ -264,10 +184,10 @@ Based on Chromium 118.0.5993.48 .../adblock/docs/data-collection/README.md | 11 + .../docs/data-collection/user-counting.md | 38 + components/adblock/docs/design-overview.md | 32 + - components/adblock/docs/developer-notes.md | 117 + + components/adblock/docs/developer-notes.md | 117 ++ .../adblock/docs/initialization-sequence.png | Bin 0 -> 129976 bytes .../adblock/docs/initialization-sequence.txt | 27 + - components/adblock/docs/integration-how-to.md | 216 ++ + components/adblock/docs/integration-how-to.md | 216 +++ components/adblock/docs/settings/README.md | 46 + .../docs/settings/user-setting-sequence.png | Bin 0 -> 61104 bytes .../docs/settings/user-setting-sequence.txt | 14 + @@ -281,26 +201,15 @@ Based on Chromium 118.0.5993.48 .../resources/adblocking/easylist.txt.gz | Bin 0 -> 124964 bytes components/resources/adblocking/elemhide.js | 43 + .../adblocking/elemhide_for_selector.jst | 53 + - .../resources/adblocking/elemhideemu.jst | 1436 ++++++++++ + .../resources/adblocking/elemhideemu.jst | 1436 +++++++++++++++++ .../adblocking/exceptionrules.txt.gz | Bin 0 -> 846414 bytes components/resources/adblocking/update.sh | 33 + components/resources/components_resources.grd | 6 + - .../data/adblock/40_regex_patterns.txt.gz | Bin 0 -> 904 bytes - .../test/data/adblock/5000_patterns.txt.gz | Bin 0 -> 41646 bytes - components/test/data/adblock/5000_urls.txt.gz | Bin 0 -> 348072 bytes - components/test/data/adblock/LICENSE | 14 + - components/test/data/adblock/anticv.txt.gz | Bin 0 -> 40327 bytes - components/test/data/adblock/easylist.txt.gz | Bin 0 -> 400550 bytes - .../test/data/adblock/exceptionrules.txt.gz | Bin 0 -> 3461995 bytes - components/test/data/adblock/longurl.txt.gz | Bin 0 -> 221308 bytes - .../data/adblock/random_shuf_100.tsv.sqlite | Bin 0 -> 40960 bytes .../loader/navigation_url_loader_impl.cc | 6 +- .../renderer_host/render_frame_host_impl.cc | 10 + .../renderer_host/render_frame_host_impl.h | 8 + content/public/browser/render_frame_host.h | 7 + content/public/common/isolated_world_ids.h | 8 + - content/public/test/fake_local_frame.cc | 7 + - content/public/test/fake_local_frame.h | 4 + ...web_request_proxying_url_loader_factory.cc | 5 + net/url_request/redirect_info.h | 8 + .../network/public/cpp/net_ipc_param_traits.h | 5 + @@ -310,11 +219,11 @@ Based on Chromium 118.0.5993.48 .../core/frame/local_frame_mojo_handler.cc | 12 + .../core/frame/local_frame_mojo_handler.h | 5 + .../url_loader/mojo_url_loader_client.cc | 6 +- - tools/eyeo/generate_interdiffs.sh | 150 + - tools/eyeo/generate_modules.sh | 209 ++ + tools/eyeo/generate_interdiffs.sh | 150 ++ + tools/eyeo/generate_modules.sh | 209 +++ tools/eyeo/snippets_deps.py | 61 + tools/gritsettings/resource_ids.spec | 8 + - 310 files changed, 37043 insertions(+), 3 deletions(-) + 219 files changed, 22061 insertions(+), 3 deletions(-) create mode 100644 components/adblock/CHANGELOG.md create mode 100644 components/adblock/LICENSE create mode 100644 components/adblock/README.md @@ -350,21 +259,6 @@ Based on Chromium 118.0.5993.48 create mode 100644 components/adblock/content/browser/session_stats_impl.h create mode 100644 components/adblock/content/browser/subscription_service_factory_base.cc create mode 100644 components/adblock/content/browser/subscription_service_factory_base.h - create mode 100644 components/adblock/content/browser/test/adblock_url_loader_factory_test.cc - create mode 100644 components/adblock/content/browser/test/adblock_webcontents_observer_test.cc - create mode 100644 components/adblock/content/browser/test/content_security_policy_injector_impl_test.cc - create mode 100644 components/adblock/content/browser/test/element_hider_impl_test.cc - create mode 100644 components/adblock/content/browser/test/frame_hierarchy_builder_test.cc - create mode 100644 components/adblock/content/browser/test/mock_adblock_content_security_policy_injector.cc - create mode 100644 components/adblock/content/browser/test/mock_adblock_content_security_policy_injector.h - create mode 100644 components/adblock/content/browser/test/mock_element_hider.cc - create mode 100644 components/adblock/content/browser/test/mock_element_hider.h - create mode 100644 components/adblock/content/browser/test/mock_frame_hierarchy_builder.cc - create mode 100644 components/adblock/content/browser/test/mock_frame_hierarchy_builder.h - create mode 100644 components/adblock/content/browser/test/mock_resource_classification_runner.cc - create mode 100644 components/adblock/content/browser/test/mock_resource_classification_runner.h - create mode 100644 components/adblock/content/browser/test/resource_classification_runner_impl_test.cc - create mode 100644 components/adblock/content/browser/test/session_stats_impl_test.cc create mode 100644 components/adblock/core/BUILD.gn create mode 100644 components/adblock/core/activeping_telemetry_topic_provider.cc create mode 100644 components/adblock/core/activeping_telemetry_topic_provider.h @@ -380,10 +274,6 @@ Based on Chromium 118.0.5993.48 create mode 100644 components/adblock/core/classifier/resource_classifier.h create mode 100644 components/adblock/core/classifier/resource_classifier_impl.cc create mode 100644 components/adblock/core/classifier/resource_classifier_impl.h - create mode 100644 components/adblock/core/classifier/test/mock_resource_classifier.cc - create mode 100644 components/adblock/core/classifier/test/mock_resource_classifier.h - create mode 100644 components/adblock/core/classifier/test/resource_classifier_impl_test.cc - create mode 100644 components/adblock/core/classifier/test/resource_classifier_perftest.cc create mode 100644 components/adblock/core/common/BUILD.gn create mode 100644 components/adblock/core/common/adblock_constants.cc create mode 100644 components/adblock/core/common/adblock_constants.h @@ -401,19 +291,12 @@ Based on Chromium 118.0.5993.48 create mode 100644 components/adblock/core/common/regex_filter_pattern.cc create mode 100644 components/adblock/core/common/regex_filter_pattern.h create mode 100644 components/adblock/core/common/sitekey.h - create mode 100644 components/adblock/core/common/test/adblock_utils_test.cc - create mode 100644 components/adblock/core/common/test/flatbuffer_data_test.cc create mode 100644 components/adblock/core/configuration/BUILD.gn create mode 100644 components/adblock/core/configuration/filtering_configuration.h create mode 100644 components/adblock/core/configuration/filtering_configuration_prefs.cc create mode 100644 components/adblock/core/configuration/filtering_configuration_prefs.h create mode 100644 components/adblock/core/configuration/persistent_filtering_configuration.cc create mode 100644 components/adblock/core/configuration/persistent_filtering_configuration.h - create mode 100644 components/adblock/core/configuration/test/fake_filtering_configuration.cc - create mode 100644 components/adblock/core/configuration/test/fake_filtering_configuration.h - create mode 100644 components/adblock/core/configuration/test/mock_filtering_configuration.cc - create mode 100644 components/adblock/core/configuration/test/mock_filtering_configuration.h - create mode 100644 components/adblock/core/configuration/test/persistent_filtering_configuration_test.cc create mode 100644 components/adblock/core/converter/BUILD.gn create mode 100644 components/adblock/core/converter/converter_main.cc create mode 100644 components/adblock/core/converter/flatbuffer_converter.cc @@ -431,13 +314,6 @@ Based on Chromium 118.0.5993.48 create mode 100644 components/adblock/core/converter/parser/snippet_filter.h create mode 100644 components/adblock/core/converter/parser/snippet_tokenizer.cc create mode 100644 components/adblock/core/converter/parser/snippet_tokenizer.h - create mode 100644 components/adblock/core/converter/parser/test/content_filter_test.cc - create mode 100644 components/adblock/core/converter/parser/test/domain_option_test.cc - create mode 100644 components/adblock/core/converter/parser/test/metadata_test.cc - create mode 100644 components/adblock/core/converter/parser/test/snippet_filter_test.cc - create mode 100644 components/adblock/core/converter/parser/test/snippet_tokenizer_test.cc - create mode 100644 components/adblock/core/converter/parser/test/url_filter_options_test.cc - create mode 100644 components/adblock/core/converter/parser/test/url_filter_test.cc create mode 100644 components/adblock/core/converter/parser/url_filter.cc create mode 100644 components/adblock/core/converter/parser/url_filter.h create mode 100644 components/adblock/core/converter/parser/url_filter_options.cc @@ -448,9 +324,6 @@ Based on Chromium 118.0.5993.48 create mode 100644 components/adblock/core/converter/serializer/flatbuffer_serializer.cc create mode 100644 components/adblock/core/converter/serializer/flatbuffer_serializer.h create mode 100644 components/adblock/core/converter/serializer/serializer.h - create mode 100644 components/adblock/core/converter/serializer/test/filter_keyword_extractor_test.cc - create mode 100644 components/adblock/core/converter/test/flatbuffer_converter_perftest.cc - create mode 100644 components/adblock/core/converter/test/flatbuffer_converter_test.cc create mode 100644 components/adblock/core/features.cc create mode 100644 components/adblock/core/features.h create mode 100644 components/adblock/core/schema/filter_list_schema.fbs @@ -504,52 +377,8 @@ Based on Chromium 118.0.5993.48 create mode 100644 components/adblock/core/subscription/subscription_validator.h create mode 100644 components/adblock/core/subscription/subscription_validator_impl.cc create mode 100644 components/adblock/core/subscription/subscription_validator_impl.h - create mode 100644 components/adblock/core/subscription/test/filtering_configuration_maintainer_impl_test.cc - create mode 100644 components/adblock/core/subscription/test/installed_subscription_impl_test.cc - create mode 100644 components/adblock/core/subscription/test/load_gzipped_test_file.cc - create mode 100644 components/adblock/core/subscription/test/load_gzipped_test_file.h - create mode 100644 components/adblock/core/subscription/test/mock_conversion_executors.cc - create mode 100644 components/adblock/core/subscription/test/mock_conversion_executors.h - create mode 100644 components/adblock/core/subscription/test/mock_filtering_configuration_maintainer.cc - create mode 100644 components/adblock/core/subscription/test/mock_filtering_configuration_maintainer.h - create mode 100644 components/adblock/core/subscription/test/mock_installed_subscription.cc - create mode 100644 components/adblock/core/subscription/test/mock_installed_subscription.h - create mode 100644 components/adblock/core/subscription/test/mock_subscription.cc - create mode 100644 components/adblock/core/subscription/test/mock_subscription.h - create mode 100644 components/adblock/core/subscription/test/mock_subscription_collection.cc - create mode 100644 components/adblock/core/subscription/test/mock_subscription_collection.h - create mode 100644 components/adblock/core/subscription/test/mock_subscription_downloader.cc - create mode 100644 components/adblock/core/subscription/test/mock_subscription_downloader.h - create mode 100644 components/adblock/core/subscription/test/mock_subscription_persistent_metadata.cc - create mode 100644 components/adblock/core/subscription/test/mock_subscription_persistent_metadata.h - create mode 100644 components/adblock/core/subscription/test/mock_subscription_service.cc - create mode 100644 components/adblock/core/subscription/test/mock_subscription_service.h - create mode 100644 components/adblock/core/subscription/test/mock_subscription_updater.cc - create mode 100644 components/adblock/core/subscription/test/mock_subscription_updater.h - create mode 100644 components/adblock/core/subscription/test/ongoing_subscription_request_impl_test.cc - create mode 100644 components/adblock/core/subscription/test/pattern_matcher_perftest.cc - create mode 100644 components/adblock/core/subscription/test/pattern_matcher_test.cc - create mode 100644 components/adblock/core/subscription/test/preloaded_subscription_provider_impl_test.cc - create mode 100644 components/adblock/core/subscription/test/regex_matcher_perftest.cc - create mode 100644 components/adblock/core/subscription/test/subscription_collection_impl_test.cc - create mode 100644 components/adblock/core/subscription/test/subscription_downloader_impl_test.cc - create mode 100644 components/adblock/core/subscription/test/subscription_persistent_metadata_impl_test.cc - create mode 100644 components/adblock/core/subscription/test/subscription_persistent_storage_impl_test.cc - create mode 100644 components/adblock/core/subscription/test/subscription_service_impl_test.cc - create mode 100644 components/adblock/core/subscription/test/subscription_updater_impl_test.cc - create mode 100644 components/adblock/core/subscription/test/subscription_validator_impl_test.cc - create mode 100644 components/adblock/core/subscription/test/url_keyword_extractor_test.cc create mode 100644 components/adblock/core/subscription/url_keyword_extractor.cc create mode 100644 components/adblock/core/subscription/url_keyword_extractor.h - create mode 100644 components/adblock/core/test/activeping_telemetry_topic_provider_test.cc - create mode 100644 components/adblock/core/test/adblock_controller_impl_test.cc - create mode 100644 components/adblock/core/test/adblock_telemetry_service_unittest.cc - create mode 100644 components/adblock/core/test/bundled_subscription_test.cc - create mode 100644 components/adblock/core/test/mock_adblock_controller.cc - create mode 100644 components/adblock/core/test/mock_adblock_controller.h - create mode 100644 components/adblock/core/test/mock_sitekey_storage.cc - create mode 100644 components/adblock/core/test/mock_sitekey_storage.h - create mode 100644 components/adblock/core/test/sitekey_storage_impl_test.cc create mode 100644 components/adblock/docs/ad-filtering/README.md create mode 100644 components/adblock/docs/ad-filtering/element-hiding-sequence.png create mode 100644 components/adblock/docs/ad-filtering/element-hiding-sequence.txt @@ -588,15 +417,6 @@ Based on Chromium 118.0.5993.48 create mode 100644 components/resources/adblocking/elemhideemu.jst create mode 100644 components/resources/adblocking/exceptionrules.txt.gz create mode 100755 components/resources/adblocking/update.sh - create mode 100644 components/test/data/adblock/40_regex_patterns.txt.gz - create mode 100644 components/test/data/adblock/5000_patterns.txt.gz - create mode 100644 components/test/data/adblock/5000_urls.txt.gz - create mode 100644 components/test/data/adblock/LICENSE - create mode 100644 components/test/data/adblock/anticv.txt.gz - create mode 100644 components/test/data/adblock/easylist.txt.gz - create mode 100644 components/test/data/adblock/exceptionrules.txt.gz - create mode 100644 components/test/data/adblock/longurl.txt.gz - create mode 100644 components/test/data/adblock/random_shuf_100.tsv.sqlite create mode 100755 tools/eyeo/generate_interdiffs.sh create mode 100755 tools/eyeo/generate_modules.sh create mode 100644 tools/eyeo/snippets_deps.py @@ -615,7 +435,7 @@ diff --git a/DEPS b/DEPS # By default, do not check out WebKit for iOS, as it is not needed unless # running against ToT WebKit rather than system WebKit. This can be overridden # e.g. with custom_vars. -@@ -288,6 +292,8 @@ vars = { +@@ -292,6 +296,8 @@ vars = { 'download_libaom_testdata': False, 'android_git': 'https://android.googlesource.com', @@ -624,9 +444,9 @@ diff --git a/DEPS b/DEPS 'aomedia_git': 'https://aomedia.googlesource.com', 'boringssl_git': 'https://boringssl.googlesource.com', 'chrome_git': 'https://chrome-internal.googlesource.com', -@@ -499,6 +505,11 @@ vars = { +@@ -503,6 +509,11 @@ vars = { # and whatever else without interference from each other. - 'betocore_revision': '96e6e374c28a01caf35c7fb620eba078aeb655bb', + 'betocore_revision': '4d202dab960a0b6a6e4757ab4393945aca5a09db', + # Three lines of non-changing comments so that + # the commit queue can handle CLs rolling feed @@ -635,8 +455,8 @@ diff --git a/DEPS b/DEPS + # If you change this, also update the libc++ revision in # //buildtools/deps_revisions.gni. - 'libcxx_revision': 'caccdb0407e84357ca6490165e88dcad64e47d17', -@@ -829,6 +840,10 @@ deps = { + 'libcxx_revision': '834e97d73f13a166af65952fb681071eec87a2c4', +@@ -833,6 +844,10 @@ deps = { 'condition': 'checkout_android and checkout_src_internal', }, @@ -645,9 +465,9 @@ diff --git a/DEPS b/DEPS + }, + 'src/docs/website': { - 'url': Var('chromium_git') + '/website.git' + '@' + '9a7921bcf8d78bf5d54086b3ceeb038640a11a37', + 'url': Var('chromium_git') + '/website.git' + '@' + '12d09e14812d8390213801bb31d08858a3378fcb', }, -@@ -934,6 +949,13 @@ deps = { +@@ -938,6 +953,13 @@ deps = { 'dep_type': 'cipd', }, @@ -742,7 +562,7 @@ diff --git a/build/install-build-deps.py b/build/install-build-deps.py import argparse import functools import os -@@ -534,7 +542,7 @@ def backwards_compatible_list(options): +@@ -546,7 +554,7 @@ def backwards_compatible_list(options): "msttcorefonts", "python-dev", "python-setuptools", @@ -764,7 +584,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn import("//base/debug/debug.gni") import("//build/config/chrome_build.gni") -@@ -177,6 +180,14 @@ test("components_unittests") { +@@ -178,6 +181,14 @@ test("components_unittests") { deps = [ "//base", @@ -776,10 +596,10 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn + "//components/adblock/core/converter/serializer:unit_tests", + "//components/adblock/core/converter:unit_tests", + "//components/adblock/core/subscription:unit_tests", + "//components/affiliations/core/browser:unit_tests", "//components/aggregation_service:unit_tests", "//components/apdu:unit_tests", - "//components/assist_ranker:unit_tests", -@@ -412,6 +423,7 @@ test("components_unittests") { +@@ -411,6 +422,7 @@ test("components_unittests") { if (use_blink) { deps += [ @@ -787,7 +607,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn "//components/autofill/content/browser:unit_tests", "//components/autofill/content/renderer:unit_tests", "//components/autofill/core/common/mojom:unit_tests", -@@ -1149,6 +1161,9 @@ if (use_blink) { +@@ -1155,6 +1167,9 @@ if (use_blink) { deps = [ "//base", @@ -2720,7 +2540,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/ new file mode 100644 --- /dev/null +++ b/components/adblock/content/browser/adblock_url_loader_factory.cc -@@ -0,0 +1,747 @@ +@@ -0,0 +1,748 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -2803,6 +2623,7 @@ new file mode 100644 + case network::mojom::RequestDestination::kWorker: + case network::mojom::RequestDestination::kSharedWorker: + case network::mojom::RequestDestination::kServiceWorker: ++ case network::mojom::RequestDestination::kJson: + return ContentType::Script; + case network::mojom::RequestDestination::kImage: + return ContentType::Image; @@ -6672,417 +6493,192 @@ new file mode 100644 +} // namespace adblock + +#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_SUBSCRIPTION_SERVICE_FACTORY_BASE_H_ -diff --git a/components/adblock/content/browser/test/adblock_url_loader_factory_test.cc b/components/adblock/content/browser/test/adblock_url_loader_factory_test.cc +diff --git a/components/adblock/core/BUILD.gn b/components/adblock/core/BUILD.gn new file mode 100644 --- /dev/null -+++ b/components/adblock/content/browser/test/adblock_url_loader_factory_test.cc -@@ -0,0 +1,399 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/content/browser/adblock_url_loader_factory.h" -+ -+#include "base/functional/bind.h" -+#include "base/functional/callback_helpers.h" -+#include "base/run_loop.h" -+#include "base/test/mock_callback.h" -+#include "components/adblock/content/browser/frame_opener_info.h" -+#include "components/adblock/content/browser/test/mock_adblock_content_security_policy_injector.h" -+#include "components/adblock/content/browser/test/mock_element_hider.h" -+#include "components/adblock/content/browser/test/mock_resource_classification_runner.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/adblock/core/subscription/test/mock_subscription_collection.h" -+#include "components/adblock/core/subscription/test/mock_subscription_service.h" -+#include "components/adblock/core/test/mock_sitekey_storage.h" -+#include "content/public/browser/web_contents.h" -+#include "content/public/test/test_renderer_host.h" -+#include "mojo/public/cpp/bindings/receiver.h" -+#include "net/traffic_annotation/network_traffic_annotation_test_helper.h" -+#include "services/network/public/cpp/simple_url_loader.h" -+#include "services/network/test/test_url_loader_factory.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+const std::string kTestUserAgent = "test-user-agent"; ++++ b/components/adblock/core/BUILD.gn +@@ -0,0 +1,175 @@ ++# ++# This file is part of eyeo Chromium SDK, ++# Copyright (C) 2006-present eyeo GmbH ++# ++# eyeo Chromium SDK is free software: you can redistribute it and/or modify ++# it under the terms of the GNU General Public License version 3 as ++# published by the Free Software Foundation. ++# ++# eyeo Chromium SDK is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with eyeo Chromium SDK. If not, see . + -+enum class HostState { Alive, Dead }; ++import("//components/adblock/features.gni") ++import("//third_party/flatbuffers/flatbuffer.gni") + -+class TestURLLoaderFactory : public adblock::AdblockURLLoaderFactory { -+ public: -+ TestURLLoaderFactory( -+ adblock::AdblockURLLoaderFactoryConfig config, -+ content::GlobalRenderFrameHostId host_id, -+ mojo::PendingReceiver receiver, -+ mojo::PendingRemote target_factory, -+ std::string user_agent_string, -+ DisconnectCallback on_disconnect) -+ : adblock::AdblockURLLoaderFactory(std::move(config), -+ host_id, -+ std::move(receiver), -+ std::move(target_factory), -+ user_agent_string, -+ std::move(on_disconnect)), -+ state_(HostState::Alive) {} -+ -+ bool CheckHostValid() const override { return state_ == HostState::Alive; } -+ void ApplyState(HostState state) { state_ = state; } ++flatbuffer("schema") { ++ sources = [ "schema/filter_list_schema.fbs" ] ++} + -+ private: -+ HostState state_; -+}; ++template("generate_sha256_header") { ++ output_prefix_ = "${target_gen_dir}/hash/${target_name}" ++ generated_files = [ ++ "${output_prefix_}.h", ++ "${output_prefix_}.cc", ++ ] + -+struct RequestFlow { -+ GURL url{"https://test.com"}; -+ adblock::FilterMatchResult request_match = -+ adblock::FilterMatchResult::kAllowRule; -+ adblock::FilterMatchResult response_match = -+ adblock::FilterMatchResult::kAllowRule; -+ bool element_hidable = true; -+ network::mojom::RequestDestination destination = -+ network::mojom::RequestDestination::kFrame; -+}; ++ # Generates .h and .cc files which contain the hashes of invoker.files_to_hash. ++ action("${target_name}_hash") { ++ # The script lives in /chrome but has no dependencies to the //chrome target. ++ # According to the script's author, it could be moved to /build but only if ++ # there's code *upstream* that needs it outside of /chrome. ++ script = "//chrome/tools/build/sha256_file.py" ++ outputs = generated_files ++ inputs = invoker.files_to_hash + -+class AdblockURLLoaderFactoryTest : public content::RenderViewHostTestHarness { -+ public: -+ AdblockURLLoaderFactoryTest() : test_factory_receiver_(&test_factory_) {} ++ args = [ rebase_path(output_prefix_, root_build_dir) ] + ++ rebase_path(inputs, root_build_dir) + -+ AdblockURLLoaderFactoryTest(const AdblockURLLoaderFactoryTest&) = delete; -+ AdblockURLLoaderFactoryTest& operator=(const AdblockURLLoaderFactoryTest&) = -+ delete; ++ deps = invoker.deps ++ } + -+ void StartRequest() { -+ auto request = std::make_unique(); -+ request->url = flow.url; -+ request->destination = flow.destination; -+ ConfigureSubscriptionService(); -+ -+ loader_ = network::SimpleURLLoader::Create(std::move(request), -+ TRAFFIC_ANNOTATION_FOR_TESTS); -+ mojo::Remote factory_remote; -+ auto factory_request = factory_remote.BindNewPipeAndPassReceiver(); -+ loader_->DownloadToStringOfUnboundedSizeUntilCrashAndDie( -+ factory_remote.get(), base::DoNothing()); -+ -+ adblock_factory_ = std::make_unique( -+ adblock::AdblockURLLoaderFactoryConfig{ -+ &subscription_service_, &resource_classifier_, &element_hider_, -+ &sitekey_storage_, &csp_injector_}, -+ web_contents()->GetPrimaryMainFrame()->GetGlobalId(), -+ std::move(factory_request), -+ test_factory_receiver_.BindNewPipeAndPassRemote(), kTestUserAgent, -+ base::BindOnce(&AdblockURLLoaderFactoryTest::OnDisconnect, -+ base::Unretained(this))); ++ # Allows linking the generated .h and .cc files, is the main target of ++ # this template. ++ source_set("${target_name}") { ++ sources = generated_files + -+ test_factory_.AddResponse(flow.url.spec(), "Hello."); -+ base::RunLoop().RunUntilIdle(); ++ deps = [ ":${target_name}_hash" ] + } ++} + -+ void ConfigureSubscriptionService() { -+ EXPECT_CALL(subscription_service_, GetCurrentSnapshot()) -+ .WillRepeatedly([]() { -+ adblock::SubscriptionService::Snapshot snapshot; -+ auto collection = -+ std::make_unique(); -+ // TODO(mpawlowski) will the collection be queried for classification? -+ // If yes, add EXPECT_CALL(collection, ...) here. -+ snapshot.push_back(std::move(collection)); -+ return snapshot; -+ }); -+ } ++generate_sha256_header("schema_hash") { ++ deps = [ ":schema" ] + -+ void OnDisconnect(adblock::AdblockURLLoaderFactory* factory) { -+ EXPECT_EQ(factory, adblock_factory_.get()); -+ adblock_factory_.reset(); -+ } ++ # Using the generated flatbuffer header instead of source .fbs file to: ++ # - avoid generating new schema hash if just a comment in the .fbs changes ++ # - generate a new schema hash if .fbs -> .h conversion changes unexpectedly ++ files_to_hash = [ "${target_gen_dir}/schema/filter_list_schema_generated.h" ] ++} + -+ void ExpectCheckRewrite(HostState state = HostState::Alive) { -+ EXPECT_CALL( -+ resource_classifier_, -+ CheckRewriteFilterMatch(testing::_, flow.url, testing::_, testing::_)) -+ .WillOnce( -+ [&, state]( -+ auto, const GURL&, content::GlobalRenderFrameHostId, -+ base::OnceCallback&)> cb) { -+ adblock_factory_->ApplyState(state); -+ std::move(cb).Run({}); -+ }); -+ } ++config("eyeo_telemetry_config") { ++ defines = [] + -+ void InitializeFlow() { -+ ExpectCheckRewrite(); -+ EXPECT_CALL(resource_classifier_, -+ CheckDocumentAllowlisted(testing::_, flow.url, testing::_)) -+ .Times(0); -+ EXPECT_CALL(resource_classifier_, -+ CheckRequestFilterMatch(testing::_, flow.url, testing::_, -+ testing::_, testing::_)) -+ .WillOnce([&](auto, const GURL&, adblock::ContentType, -+ content::GlobalRenderFrameHostId, -+ adblock::CheckFilterMatchCallback cb) { -+ std::move(cb).Run(flow.request_match); -+ }); ++ if (eyeo_telemetry_server_url != "") { ++ # Explicitly setting Telemetry server URL, used for testing with a test ++ # server. ++ defines += [ "EYEO_TELEMETRY_SERVER_URL=\"$eyeo_telemetry_server_url\"" ] ++ } else { ++ # Implicitly setting production Telemetry server URL based on ++ # eyeo_telemetry_client_id (or a default client id as a fallback). ++ if (eyeo_telemetry_client_id != "") { ++ defines += [ "EYEO_TELEMETRY_CLIENT_ID=\"$eyeo_telemetry_client_id\"" ] ++ } else { ++ print("WARNING! gn arg eyeo_telemetry_client_id is not set. " + ++ "Users will not be counted correctly by eyeo.") ++ eyeo_telemetry_client_id = "eyeochromium" ++ } ++ eyeo_telemetry_server_url = ++ "https://${eyeo_telemetry_client_id}.telemetry.eyeo.com/" ++ defines += [ "EYEO_TELEMETRY_SERVER_URL=\"$eyeo_telemetry_server_url\"" ] + } + -+ void InitializePopupFlow() { -+ flow.destination = network::mojom::RequestDestination::kDocument; -+ adblock::FrameOpenerInfo::CreateForWebContents(web_contents()); -+ auto* info = adblock::FrameOpenerInfo::FromWebContents(web_contents()); -+ info->SetOpener(main_rfh()->GetGlobalId()); -+ ExpectCheckRewrite(); -+ EXPECT_CALL(resource_classifier_, -+ CheckDocumentAllowlisted(testing::_, flow.url, testing::_)) -+ .Times(0); -+ EXPECT_CALL( -+ resource_classifier_, -+ CheckPopupFilterMatch(testing::_, flow.url, testing::_, testing::_)) -+ .WillOnce([&](auto, const GURL&, content::GlobalRenderFrameHostId, -+ adblock::CheckFilterMatchCallback cb) { -+ std::move(cb).Run(flow.request_match); -+ }); ++ if (eyeo_telemetry_activeping_auth_token != "") { ++ defines += [ "EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN=\"$eyeo_telemetry_activeping_auth_token\"" ] ++ } else { ++ print("WARNING! gn arg eyeo_telemetry_activeping_auth_token is not set. " + ++ "Users will not be counted correctly by eyeo.") + } ++} + -+ void ExpectRequestAllowed(HostState state = HostState::Alive) { -+ EXPECT_CALL(resource_classifier_, -+ CheckResponseFilterMatch(testing::_, flow.url, testing::_, -+ testing::_, testing::_, testing::_)) -+ .WillOnce([&, state](auto, const GURL&, adblock::ContentType, -+ content::GlobalRenderFrameHostId, const auto&, -+ adblock::CheckFilterMatchCallback cb) { -+ adblock_factory_->ApplyState(state); -+ std::move(cb).Run(flow.response_match); -+ }); -+ } ++source_set("core") { ++ output_name = "adblock_core" ++ sources = [ ++ "activeping_telemetry_topic_provider.cc", ++ "activeping_telemetry_topic_provider.h", ++ "adblock_controller.h", ++ "adblock_controller_impl.cc", ++ "adblock_controller_impl.h", ++ "adblock_switches.cc", ++ "adblock_switches.h", ++ "adblock_telemetry_service.cc", ++ "adblock_telemetry_service.h", ++ "features.cc", ++ "features.h", ++ "sitekey_storage.h", ++ "sitekey_storage_impl.cc", ++ "sitekey_storage_impl.h", ++ ] + -+ void ExpectPopupAllowed(HostState state = HostState::Alive) { -+ EXPECT_CALL(resource_classifier_, -+ CheckResponseFilterMatch(testing::_, flow.url, testing::_, -+ testing::_, testing::_, testing::_)) -+ .WillOnce([&, state](auto, const GURL&, adblock::ContentType, -+ content::GlobalRenderFrameHostId, const auto&, -+ adblock::CheckFilterMatchCallback cb) { -+ adblock_factory_->ApplyState(state); -+ std::move(cb).Run(flow.response_match); -+ }); -+ } ++ deps = [ ++ "//components/language/core/common", ++ "//third_party/flatbuffers", ++ ] + -+ void ExpectRequestBlockedOrNotHeppened() { -+ // if request was not processed or blocked, response processing should not -+ // take place. -+ EXPECT_CALL(resource_classifier_, -+ CheckResponseFilterMatch(testing::_, flow.url, testing::_, -+ testing::_, testing::_, testing::_)) -+ .Times(0); -+ } ++ public_deps = [ ++ "//components/adblock/core/classifier", ++ "//components/adblock/core/common", ++ "//components/adblock/core/common:utils", ++ "//components/adblock/core/configuration", ++ "//components/adblock/core/subscription", ++ "//components/keyed_service/core", ++ "//components/pref_registry", ++ "//components/prefs", ++ "//components/version_info", ++ ] + -+ void ExpectElemhideDone() { -+ EXPECT_CALL(element_hider_, IsElementTypeHideable(testing::_)) -+ .WillOnce(testing::Return(flow.element_hidable)); -+ EXPECT_CALL(element_hider_, HideBlockedElement(flow.url, testing::_)) -+ .Times(flow.element_hidable ? 1 : 0); -+ } ++ configs += [ ":eyeo_telemetry_config" ] ++} + -+ void ExpectElemhideSkipped() { -+ EXPECT_CALL(element_hider_, IsElementTypeHideable(testing::_)).Times(0); -+ EXPECT_CALL(element_hider_, HideBlockedElement(flow.url, testing::_)) -+ .Times(0); -+ } ++source_set("test_support") { ++ testonly = true ++ sources = [ ++ "test/mock_adblock_controller.cc", ++ "test/mock_adblock_controller.h", ++ "test/mock_sitekey_storage.cc", ++ "test/mock_sitekey_storage.h", ++ ] + -+ void ExpectResponseAllowed(HostState state = HostState::Alive) { -+ EXPECT_CALL(sitekey_storage_, -+ ProcessResponseHeaders(flow.url, testing::_, kTestUserAgent)) -+ .Times(1); -+ EXPECT_CALL(csp_injector_, -+ InsertContentSecurityPolicyHeadersIfApplicable( -+ flow.url, testing::_, testing::_, testing::_)) -+ .WillOnce( -+ [&, state](const GURL&, auto, auto, -+ adblock::InsertContentSecurityPolicyHeadersCallback cb) { -+ adblock_factory_->ApplyState(state); -+ std::move(cb).Run(nullptr); -+ }); -+ } ++ public_deps = [ ++ ":core", ++ "//components/adblock/core/subscription:test_support", ++ "//testing/gmock", ++ "//testing/gtest", ++ ] ++} + -+ void ExpectResponseBlockedOrNotHappened() { -+ // if response was not processed or blocked, headers processing should not -+ // take place. -+ EXPECT_CALL(sitekey_storage_, -+ ProcessResponseHeaders(flow.url, testing::_, kTestUserAgent)) -+ .Times(0); -+ EXPECT_CALL(csp_injector_, -+ InsertContentSecurityPolicyHeadersIfApplicable( -+ flow.url, testing::_, testing::_, testing::_)) -+ .Times(0); -+ } ++source_set("unit_tests") { ++ testonly = true ++ sources = [ ++ "test/activeping_telemetry_topic_provider_test.cc", ++ "test/adblock_controller_impl_test.cc", ++ "test/adblock_telemetry_service_unittest.cc", ++ "test/bundled_subscription_test.cc", ++ "test/sitekey_storage_impl_test.cc", ++ ] + -+ std::unique_ptr loader_; -+ std::unique_ptr adblock_factory_; -+ network::TestURLLoaderFactory test_factory_; -+ mojo::Receiver test_factory_receiver_; -+ adblock::MockSubscriptionService subscription_service_; -+ adblock::MockResourceClassificationRunner resource_classifier_; -+ adblock::MockElementHider element_hider_; -+ adblock::MockSitekeyStorage sitekey_storage_; -+ adblock::MockAdblockContentSecurityPolicyInjector csp_injector_; -+ std::vector deferred_tasks_; -+ RequestFlow flow; -+}; ++ deps = [ ++ ":core", ++ ":test_support", ++ "//base/test:test_support", ++ "//components/adblock/core/configuration:test_support", ++ "//components/adblock/core/subscription:test_support", ++ "//components/prefs:test_support", ++ "//components/resources:components_resources_grit", ++ "//components/sync_preferences:test_support", ++ "//net:test_support", ++ "//services/network:test_support", ++ "//testing/gtest", ++ ] + -+TEST_F(AdblockURLLoaderFactoryTest, HappyPath) { -+ InitializeFlow(); -+ ExpectRequestAllowed(); -+ ExpectResponseAllowed(); -+ ExpectElemhideSkipped(); -+ StartRequest(); -+ EXPECT_EQ(net::OK, loader_->NetError()); -+} -+ -+TEST_F(AdblockURLLoaderFactoryTest, BlockedWithRequestFilter) { -+ flow.request_match = adblock::FilterMatchResult::kBlockRule; -+ InitializeFlow(); -+ ExpectRequestBlockedOrNotHeppened(); -+ ExpectResponseBlockedOrNotHappened(); -+ ExpectElemhideDone(); -+ StartRequest(); -+ EXPECT_EQ(net::ERR_BLOCKED_BY_ADMINISTRATOR, loader_->NetError()); -+} -+ -+TEST_F(AdblockURLLoaderFactoryTest, BlockedWithResponseFilter) { -+ flow.response_match = adblock::FilterMatchResult::kBlockRule; -+ InitializeFlow(); -+ ExpectRequestAllowed(); -+ ExpectResponseBlockedOrNotHappened(); -+ ExpectElemhideDone(); -+ StartRequest(); -+ EXPECT_EQ(net::ERR_BLOCKED_BY_ADMINISTRATOR, loader_->NetError()); -+} -+ -+TEST_F(AdblockURLLoaderFactoryTest, BlockedWithRequestFilterNonHideable) { -+ flow.request_match = adblock::FilterMatchResult::kBlockRule; -+ flow.element_hidable = false; -+ InitializeFlow(); -+ ExpectRequestBlockedOrNotHeppened(); -+ ExpectResponseBlockedOrNotHappened(); -+ ExpectElemhideDone(); -+ StartRequest(); -+ EXPECT_EQ(net::ERR_BLOCKED_BY_ADMINISTRATOR, loader_->NetError()); -+} -+ -+TEST_F(AdblockURLLoaderFactoryTest, BlockedWithResponseFilterNonHideable) { -+ flow.response_match = adblock::FilterMatchResult::kBlockRule; -+ flow.element_hidable = false; -+ InitializeFlow(); -+ ExpectRequestAllowed(); -+ ExpectResponseBlockedOrNotHappened(); -+ ExpectElemhideDone(); -+ StartRequest(); -+ EXPECT_EQ(net::ERR_BLOCKED_BY_ADMINISTRATOR, loader_->NetError()); -+} -+ -+TEST_F(AdblockURLLoaderFactoryTest, DocumentNavigation) { -+ flow.destination = network::mojom::RequestDestination::kDocument; -+ ExpectCheckRewrite(); -+ EXPECT_CALL(resource_classifier_, -+ CheckDocumentAllowlisted(testing::_, flow.url, testing::_)); -+ EXPECT_CALL(resource_classifier_, -+ CheckRequestFilterMatch(testing::_, flow.url, testing::_, -+ testing::_, testing::_)) -+ .Times(0); -+ -+ ExpectRequestAllowed(); -+ ExpectResponseAllowed(); -+ ExpectElemhideSkipped(); -+ StartRequest(); -+ EXPECT_EQ(net::OK, loader_->NetError()); -+} -+ -+TEST_F(AdblockURLLoaderFactoryTest, PopupNavigation) { -+ InitializePopupFlow(); -+ ExpectRequestAllowed(); -+ ExpectResponseAllowed(); -+ ExpectElemhideSkipped(); -+ StartRequest(); -+ EXPECT_EQ(net::OK, loader_->NetError()); -+} -+ -+TEST_F(AdblockURLLoaderFactoryTest, FrameDiesWhilePopupNavigation) { -+ InitializePopupFlow(); -+ ExpectRequestAllowed(HostState::Dead); -+ ExpectResponseBlockedOrNotHappened(); -+ ExpectElemhideSkipped(); -+ StartRequest(); -+ EXPECT_EQ(net::OK, loader_->NetError()); -+} -+ -+TEST_F(AdblockURLLoaderFactoryTest, FrameDiesWhileRewriteCheck) { -+ ExpectCheckRewrite(HostState::Dead); -+ EXPECT_CALL(resource_classifier_, -+ CheckDocumentAllowlisted(testing::_, flow.url, testing::_)) -+ .Times(0); -+ EXPECT_CALL(resource_classifier_, -+ CheckRequestFilterMatch(testing::_, flow.url, testing::_, -+ testing::_, testing::_)) -+ .Times(0); -+ -+ ExpectRequestBlockedOrNotHeppened(); -+ ExpectResponseBlockedOrNotHappened(); -+ ExpectElemhideSkipped(); -+ StartRequest(); -+ EXPECT_EQ(net::OK, loader_->NetError()); -+} -+ -+TEST_F(AdblockURLLoaderFactoryTest, FrameDiesWhileRequestMatch) { -+ InitializeFlow(); -+ ExpectRequestAllowed(HostState::Dead); -+ ExpectResponseBlockedOrNotHappened(); -+ ExpectElemhideSkipped(); -+ StartRequest(); -+ EXPECT_EQ(net::OK, loader_->NetError()); -+} -+ -+TEST_F(AdblockURLLoaderFactoryTest, FrameDiesBeforeResposeMatch) { -+ InitializeFlow(); -+ ExpectRequestAllowed(); -+ ExpectResponseAllowed(HostState::Dead); -+ ExpectElemhideSkipped(); -+ StartRequest(); -+ EXPECT_EQ(net::OK, loader_->NetError()); -+} -+ -+TEST_F(AdblockURLLoaderFactoryTest, SkipCspForNonDocument) { -+ flow.destination = network::mojom::RequestDestination::kImage; -+ InitializeFlow(); -+ ExpectRequestAllowed(); -+ EXPECT_CALL(sitekey_storage_, -+ ProcessResponseHeaders(flow.url, testing::_, kTestUserAgent)) -+ .Times(0); -+ EXPECT_CALL(csp_injector_, InsertContentSecurityPolicyHeadersIfApplicable( -+ flow.url, testing::_, testing::_, testing::_)) -+ .Times(0); -+ ExpectElemhideSkipped(); -+ StartRequest(); -+ EXPECT_EQ(net::OK, loader_->NetError()); -+} -diff --git a/components/adblock/content/browser/test/adblock_webcontents_observer_test.cc b/components/adblock/content/browser/test/adblock_webcontents_observer_test.cc ++ configs += [ ":eyeo_telemetry_config" ] ++} +diff --git a/components/adblock/core/activeping_telemetry_topic_provider.cc b/components/adblock/core/activeping_telemetry_topic_provider.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/content/browser/test/adblock_webcontents_observer_test.cc -@@ -0,0 +1,164 @@ -+/* -+ * This file is part of eyeo Chromium SDK, ++++ b/components/adblock/core/activeping_telemetry_topic_provider.cc +@@ -0,0 +1,285 @@ ++/* This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH + * + * eyeo Chromium SDK is free software: you can redistribute it and/or modify @@ -7098,346 +6694,280 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/content/browser/adblock_webcontents_observer.h" ++#include "components/adblock/core/activeping_telemetry_topic_provider.h" + -+#include "components/adblock/content/browser/test/mock_element_hider.h" -+#include "components/adblock/content/browser/test/mock_frame_hierarchy_builder.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/adblock/core/subscription/test/mock_subscription_service.h" -+#include "components/adblock/core/test/mock_sitekey_storage.h" -+#include "content/public/test/mock_navigation_handle.h" -+#include "content/public/test/test_renderer_host.h" ++#include "base/json/json_reader.h" ++#include "base/json/json_writer.h" ++#include "base/system/sys_info.h" ++#include "base/time/time.h" ++#include "base/time/time_to_iso8601.h" ++#include "base/uuid.h" ++#include "components/adblock/core/common/adblock_prefs.h" ++#include "components/adblock/core/subscription/subscription_config.h" + +namespace adblock { ++namespace { ++int g_http_port_for_testing = 0; ++std::optional g_time_delta_for_testing; + -+class AdblockWebContentObserverTest -+ : public content::RenderViewHostTestHarness { -+ public: -+ void SetUp() override { -+ content::RenderViewHostTestHarness::SetUp(); -+ -+ auto* web_contents = this->web_contents(); -+ AdblockWebContentObserver::CreateForWebContents( -+ web_contents, &service_, &hider_, &storage_, -+ std::make_unique()); -+ observer_ = AdblockWebContentObserver::FromWebContents(web_contents); -+ } -+ -+ void TearDown() override { -+ observer_ = nullptr; -+ content::RenderViewHostTestHarness::TearDown(); ++GURL GetUrl() { ++ GURL url(EYEO_TELEMETRY_SERVER_URL); ++ if (!g_http_port_for_testing) { ++ return url; + } -+ -+ MockSubscriptionService service_; -+ MockElementHider hider_; -+ MockSitekeyStorage storage_; -+ raw_ptr observer_; -+}; -+ -+TEST_F(AdblockWebContentObserverTest, DidFinishNavigationNotCommited) { -+ content::MockNavigationHandle mock_navigation_handle; -+ mock_navigation_handle.set_has_committed(false); -+ -+ service_.WillRequireFiltering(true); -+ EXPECT_CALL(hider_, HideBlockedElement(testing::_, testing::_)).Times(0); -+ EXPECT_CALL(hider_, -+ ApplyElementHidingEmulationOnPage( -+ testing::_, testing::_, testing::_, testing::_, testing::_)) -+ .Times(0); -+ -+ observer_->DidFinishNavigation(&mock_navigation_handle); ++ DCHECK_EQ(url::kHttpsScheme, url.scheme()); ++ GURL::Replacements replacements; ++ replacements.SetSchemeStr(url::kHttpScheme); ++ const std::string port_str = base::NumberToString(g_http_port_for_testing); ++ replacements.SetPortStr(port_str); ++ return url.ReplaceComponents(replacements); +} + -+TEST_F(AdblockWebContentObserverTest, DidFinishNavigationWithNiceUrl) { -+ content::RenderFrameHost* frame_host = main_rfh(); -+ content::MockNavigationHandle mock_navigation_handle; -+ GURL url("https://test.com"); -+ mock_navigation_handle.set_has_committed(true); -+ mock_navigation_handle.set_url(url); -+ mock_navigation_handle.set_render_frame_host(frame_host); -+ -+ service_.WillRequireFiltering(true); -+ EXPECT_CALL(storage_, FindSiteKeyForAnyUrl(std::vector{})) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(hider_, HideBlockedElement(testing::_, testing::_)).Times(0); -+ EXPECT_CALL(hider_, ApplyElementHidingEmulationOnPage( -+ GURL{}, std::vector{}, frame_host, testing::_, -+ testing::_)) -+ .Times(1); -+ -+ observer_->DidFinishNavigation(&mock_navigation_handle); ++base::TimeDelta GetNormalPingInterval() { ++ static base::TimeDelta kNormalPingInterval = ++ g_time_delta_for_testing ? g_time_delta_for_testing.value() ++ : base::Hours(12); ++ return kNormalPingInterval; +} + -+TEST_F(AdblockWebContentObserverTest, DidFinishNavigationWithErrorPage) { -+ content::MockNavigationHandle mock_navigation_handle; -+ mock_navigation_handle.set_has_committed(true); -+ mock_navigation_handle.set_is_error_page(true); -+ -+ service_.WillRequireFiltering(true); -+ EXPECT_CALL(hider_, HideBlockedElement(testing::_, testing::_)).Times(0); -+ EXPECT_CALL(hider_, -+ ApplyElementHidingEmulationOnPage( -+ testing::_, testing::_, testing::_, testing::_, testing::_)) -+ .Times(0); -+ -+ observer_->DidFinishNavigation(&mock_navigation_handle); ++base::TimeDelta GetRetryPingInterval() { ++ static base::TimeDelta kRetryPingInterval = ++ g_time_delta_for_testing ? g_time_delta_for_testing.value() ++ : base::Hours(1); ++ return kRetryPingInterval; +} + -+TEST_F(AdblockWebContentObserverTest, DidFinishNavigationWithAboutBlank) { -+ content::MockNavigationHandle mock_navigation_handle; -+ mock_navigation_handle.set_has_committed(true); -+ mock_navigation_handle.set_url(GURL("about:blank")); -+ -+ service_.WillRequireFiltering(true); -+ EXPECT_CALL(hider_, HideBlockedElement(testing::_, testing::_)).Times(0); -+ EXPECT_CALL(hider_, -+ ApplyElementHidingEmulationOnPage( -+ testing::_, testing::_, testing::_, testing::_, testing::_)) -+ .Times(0); -+ -+ observer_->DidFinishNavigation(&mock_navigation_handle); ++void AppendStringIfPresent(PrefService* pref_service, ++ const std::string& pref_name, ++ base::StringPiece payload_key, ++ base::Value::Dict& payload) { ++ auto str = pref_service->GetString(pref_name); ++ if (!str.empty()) { ++ payload.Set(payload_key, std::move(str)); ++ } +} ++} // namespace + -+TEST_F(AdblockWebContentObserverTest, DidFinishNavigationWithBlockedFrame) { -+ GURL url("https://test.com/frame"); -+ GURL parent("https://test.com"); -+ content::RenderFrameHost* frame_host = main_rfh(); -+ service_.WillRequireFiltering(true); -+ NavigateAndCommit(parent); -+ -+ content::RenderFrameHost* child_frame = -+ content::RenderFrameHostTester::For(frame_host)->AppendChild(""); -+ ASSERT_TRUE(child_frame != nullptr); -+ content::MockNavigationHandle mock_navigation_handle; -+ mock_navigation_handle.set_has_committed(true); -+ mock_navigation_handle.set_is_error_page(true); -+ mock_navigation_handle.set_net_error_code(net::ERR_BLOCKED_BY_ADMINISTRATOR); -+ mock_navigation_handle.set_render_frame_host(child_frame); -+ mock_navigation_handle.set_url(url); ++ActivepingTelemetryTopicProvider::ActivepingTelemetryTopicProvider( ++ utils::AppInfo app_info, ++ PrefService* pref_service, ++ SubscriptionService* subscription_service, ++ const GURL& base_url, ++ const std::string& auth_token) ++ : app_info_(std::move(app_info)), ++ pref_service_(pref_service), ++ subscription_service_(subscription_service), ++ base_url_(base_url), ++ auth_token_(auth_token) {} + -+ EXPECT_CALL(hider_, HideBlockedElement(url, frame_host)).Times(1); -+ EXPECT_CALL(hider_, -+ ApplyElementHidingEmulationOnPage( -+ testing::_, testing::_, testing::_, testing::_, testing::_)) -+ .Times(0); ++ActivepingTelemetryTopicProvider::~ActivepingTelemetryTopicProvider() = default; + -+ observer_->DidFinishNavigation(&mock_navigation_handle); ++// static ++GURL ActivepingTelemetryTopicProvider::DefaultBaseUrl() { ++#if !defined(EYEO_TELEMETRY_CLIENT_ID) ++ LOG(WARNING) ++ << "[eyeo] Using default Telemetry server since a Telemetry client ID " ++ "was " ++ "not provided. Users will not be counted correctly by eyeo. Please " ++ "set an ID via \"eyeo_telemetry_client_id\" gn argument."; ++#endif ++ return GetUrl(); +} + -+TEST_F(AdblockWebContentObserverTest, NoElementHidingWhenFilteringDisabled) { -+ service_.WillRequireFiltering(false); -+ -+ content::MockNavigationHandle mock_navigation_handle; -+ mock_navigation_handle.set_has_committed(true); -+ mock_navigation_handle.set_url(GURL("https://test.com")); -+ mock_navigation_handle.set_render_frame_host(main_rfh()); -+ -+ // Despite a correct navigation handle, there will be no attempt to apply -+ // element hiding on the page because there are no enabled -+ // FilteringConfigurations in SubscriptionService. -+ EXPECT_CALL(hider_, HideBlockedElement(testing::_, testing::_)).Times(0); -+ EXPECT_CALL(hider_, -+ ApplyElementHidingEmulationOnPage( -+ testing::_, testing::_, testing::_, testing::_, testing::_)) -+ .Times(0); -+ -+ observer_->DidFinishNavigation(&mock_navigation_handle); ++// static ++std::string ActivepingTelemetryTopicProvider::DefaultAuthToken() { ++#if defined(EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN) ++ DVLOG(1) << "[eyeo] Using " << EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN ++ << " as Telemetry authentication token"; ++ return EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN; ++#else ++ LOG(WARNING) ++ << "[eyeo] No Telemetry authentication token defined. Users will " ++ "not be counted correctly by eyeo. Please set a token via " ++ "\"eyeo_telemetry_activeping_auth_token\" gn argument."; ++ return ""; ++#endif +} + -+} // namespace adblock -diff --git a/components/adblock/content/browser/test/content_security_policy_injector_impl_test.cc b/components/adblock/content/browser/test/content_security_policy_injector_impl_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/content/browser/test/content_security_policy_injector_impl_test.cc -@@ -0,0 +1,183 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/content/browser/content_security_policy_injector_impl.h" -+ -+#include -+ -+#include "base/memory/scoped_refptr.h" -+#include "base/test/mock_callback.h" -+#include "components/adblock/content/browser/test/mock_frame_hierarchy_builder.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/adblock/core/subscription/test/mock_subscription_collection.h" -+#include "components/adblock/core/subscription/test/mock_subscription_service.h" -+#include "content/public/browser/render_process_host.h" -+#include "content/public/test/test_renderer_host.h" -+#include "gmock/gmock.h" -+#include "gtest/gtest.h" -+#include "net/http/http_response_headers.h" -+#include "services/network/public/mojom/content_security_policy.mojom-forward.h" -+#include "services/network/public/mojom/parsed_headers.mojom.h" -+#include "testing/gtest/include/gtest/gtest.h" ++GURL ActivepingTelemetryTopicProvider::GetEndpointURL() const { ++ return base_url_.Resolve("/topic/eyeochromium_activeping/version/1"); ++} + -+namespace adblock { ++std::string ActivepingTelemetryTopicProvider::GetAuthToken() const { ++ return auth_token_; ++} + -+using testing::_; -+using testing::Return; -+using MockResponseCallback = -+ base::MockCallback; ++void ActivepingTelemetryTopicProvider::GetPayload( ++ PayloadCallback callback) const { ++ std::string serialized; ++ // The only way JSONWriter::Write() can return fail is then the Value ++ // contains lists or dicts that are too deep (200 levels). We just built the ++ // payload and root objects here, they should be really shallow. ++ CHECK(base::JSONWriter::Write(GetPayloadInternal(), &serialized)); ++ std::move(callback).Run(std::move(serialized)); ++} + -+class AdblockContentSecurityPolicyInjectorImplTest -+ : public content::RenderViewHostTestHarness { -+ public: -+ void SetUp() override { -+ content::RenderViewHostTestHarness::SetUp(); -+ -+ auto frame_hierarchy_builder = -+ std::make_unique(); -+ frame_hierarchy_builder_ = frame_hierarchy_builder.get(); -+ csp_injector_ = std::make_unique( -+ &subscription_service_, std::move(frame_hierarchy_builder)); ++base::Time ActivepingTelemetryTopicProvider::GetTimeOfNextRequest() const { ++ const auto next_ping_time = ++ pref_service_->GetTime(common::prefs::kTelemetryNextPingTime); ++ // Next ping time may be unset if this is a first run. Next request should ++ // happen ASAP. ++ if (next_ping_time.is_null()) { ++ return base::Time::Now(); + } + -+ void TearDown() override { -+ // Avoid dangling pointers during destruction. -+ frame_hierarchy_builder_ = nullptr; -+ content::RenderViewHostTestHarness::TearDown(); -+ } ++ return next_ping_time; ++} + -+ void FrameHierarchyWillBeBuilt() { -+ EXPECT_CALL(*frame_hierarchy_builder_, -+ FindRenderFrameHost(main_rfh()->GetGlobalId())) -+ .WillOnce(testing::Return(main_rfh())); -+ EXPECT_CALL(*frame_hierarchy_builder_, BuildFrameHierarchy(main_rfh())) -+ .WillOnce(Return(kFrameHierarchy)); ++void ActivepingTelemetryTopicProvider::ParseResponse( ++ std::unique_ptr response_content) { ++ if (!response_content) { ++ VLOG(1) << "[eyeo] Telemetry ping failed, no response from server"; ++ ScheduleNextPing(GetRetryPingInterval()); ++ return; + } + -+ void SnapshotWillContainInjections(std::set injections) { -+ FrameHierarchyWillBeBuilt(); -+ // SubscriptionService will be asked for the current snapshot... -+ EXPECT_CALL(subscription_service_, GetCurrentSnapshot()) -+ .WillOnce([this, injections]() { -+ // ... and testee will query the snapshot for CSP injection: -+ auto subscription_collection = -+ std::make_unique(); -+ EXPECT_CALL(*subscription_collection, -+ GetCspInjections(kRequestUrl, kFrameHierarchy)) -+ .WillOnce(Return(injections)); -+ SubscriptionService::Snapshot snapshot; -+ snapshot.push_back(std::move(subscription_collection)); -+ return snapshot; -+ }); ++ VLOG(1) << "[eyeo] Response from Telemetry server: " << *response_content; ++ auto parsed = base::JSONReader::ReadDict(*response_content); ++ if (!parsed) { ++ VLOG(1) ++ << "[eyeo] Telemetry ping failed, response could not be parsed as JSON"; ++ ScheduleNextPing(GetRetryPingInterval()); ++ return; + } + -+ void AssertParsedHeadersContainScriptSrcNone( -+ const network::mojom::ParsedHeadersPtr& parsed_headers) { -+ ASSERT_EQ(parsed_headers->content_security_policy.size(), 1u); -+ EXPECT_EQ(parsed_headers->content_security_policy[0] -+ ->raw_directives[network::mojom::CSPDirectiveName::ScriptSrc], -+ "'none'"); ++ auto* error_message = parsed->FindString("error"); ++ if (error_message) { ++ VLOG(1) << "[eyeo] Telemetry ping failed, error message: " ++ << *error_message; ++ ScheduleNextPing(GetRetryPingInterval()); ++ return; + } + -+ const GURL kRequestUrl{"https://request.com/resource.txt"}; -+ const std::vector kFrameHierarchy{GURL{"https://test.com/"}}; -+ MockSubscriptionService subscription_service_; -+ raw_ptr frame_hierarchy_builder_; -+ std::unique_ptr csp_injector_; -+}; -+ -+TEST_F(AdblockContentSecurityPolicyInjectorImplTest, -+ NoHeaderAddedWhenNoCspInjectionFound) { -+ // An empty injection set means no CSP filter found. -+ SnapshotWillContainInjections({}); ++ // For legacy reasons, "ping_response_time" is sent to us as "token". This ++ // should be the server time of when the ping was handled, possibly truncated ++ // for anonymity. We don't parse it or interpret it, just send it back with ++ // next ping. ++ auto* ping_response_time = parsed->FindString("token"); ++ if (!ping_response_time) { ++ VLOG(1) << "[eyeo] Telemetry ping failed, response did not contain a last " ++ "ping / token value"; ++ ScheduleNextPing(GetRetryPingInterval()); ++ return; ++ } + -+ MockResponseCallback callback; ++ VLOG(1) << "[eyeo] Telemetry ping succeeded"; ++ ScheduleNextPing(GetNormalPingInterval()); ++ UpdatePrefs(*ping_response_time); ++} + -+ // Call testee: -+ auto headers = net::HttpResponseHeaders::TryToCreate(""); -+ CHECK(headers); -+ csp_injector_->InsertContentSecurityPolicyHeadersIfApplicable( -+ kRequestUrl, main_rfh()->GetGlobalId(), headers, callback.Get()); ++void ActivepingTelemetryTopicProvider::FetchDebugInfo( ++ DebugInfoCallback callback) const { ++ base::Value::Dict debug_info; ++ debug_info.Set("endpoint_url", GetEndpointURL().spec()); ++ debug_info.Set("payload", GetPayloadInternal()); ++ debug_info.Set("first_ping", ++ pref_service_->GetString( ++ adblock::common::prefs::kTelemetryFirstPingTime)); ++ debug_info.Set("time_of_next_request", ++ base::TimeToISO8601(GetTimeOfNextRequest())); ++ debug_info.Set( ++ "last_ping", ++ pref_service_->GetString(adblock::common::prefs::kTelemetryLastPingTime)); ++ debug_info.Set("previous_last_ping", ++ pref_service_->GetString( ++ adblock::common::prefs::kTelemetryPreviousLastPingTime)); ++ debug_info.Set("next_ping", ++ base::TimeToISO8601(pref_service_->GetTime( ++ adblock::common::prefs::kTelemetryNextPingTime))); + -+ // Callback is ran via posted task, with no parsed headers because headers -+ // were not modified. -+ EXPECT_CALL(callback, Run(testing::IsFalse())).Times(1); -+ task_environment()->RunUntilIdle(); ++ std::string serialized; ++ // The only way JSONWriter::Write() can return fail is then the Value ++ // contains lists or dicts that are too deep (200 levels). We just built the ++ // payload and root objects here, they should be really shallow. ++ CHECK(base::JSONWriter::WriteWithOptions( ++ debug_info, base::JsonOptions::OPTIONS_PRETTY_PRINT, &serialized)); ++ std::move(callback).Run(std::move(serialized)); ++} + -+ // No header was injected. -+ EXPECT_FALSE(headers->HasHeader("Content-Security-Policy")); ++void ActivepingTelemetryTopicProvider::ScheduleNextPing(base::TimeDelta delay) { ++ pref_service_->SetTime(common::prefs::kTelemetryNextPingTime, ++ base::Time::Now() + delay); +} + -+TEST_F(AdblockContentSecurityPolicyInjectorImplTest, -+ HeaderAddedWhenCspInjectionFound) { -+ SnapshotWillContainInjections({"script-src 'none'"}); ++void ActivepingTelemetryTopicProvider::UpdatePrefs( ++ const std::string& ping_response_time) { ++ // First ping is only set once per client. ++ if (pref_service_->GetString(common::prefs::kTelemetryFirstPingTime) ++ .empty()) { ++ pref_service_->SetString(common::prefs::kTelemetryFirstPingTime, ++ ping_response_time); ++ } ++ // Previous-to-last becomes last, last becomes current. ++ pref_service_->SetString( ++ common::prefs::kTelemetryPreviousLastPingTime, ++ pref_service_->GetString(common::prefs::kTelemetryLastPingTime)); ++ pref_service_->SetString(common::prefs::kTelemetryLastPingTime, ++ ping_response_time); ++ // Generate a new random tag that wil be sent along with ping times in the ++ // next request. ++ const auto tag = base::Uuid::GenerateRandomV4(); ++ pref_service_->SetString(common::prefs::kTelemetryLastPingTag, ++ tag.AsLowercaseString()); ++} + -+ MockResponseCallback callback; ++base::Value ActivepingTelemetryTopicProvider::GetPayloadInternal() const { ++ base::Value::Dict payload; ++ bool aa_enabled = false; ++ auto* adblock_configuration = ++ subscription_service_->GetAdblockFilteringConfiguration(); ++ if (adblock_configuration) { ++ aa_enabled = base::ranges::any_of( ++ adblock_configuration->GetFilterLists(), ++ [&](const auto& url) { return url == AcceptableAdsUrl(); }); ++ } ++ payload.Set("addon_name", "eyeo-chromium-sdk"); ++ payload.Set("addon_version", "2.0.0"); ++ payload.Set("application", app_info_.name); ++ payload.Set("application_version", app_info_.version); ++ payload.Set("aa_active", aa_enabled); ++ payload.Set("platform", base::SysInfo::OperatingSystemName()); ++ payload.Set("platform_version", base::SysInfo::OperatingSystemVersion()); ++ // Server requires the following parameters to either have a correct, ++ // non-empty value, or not be present at all. We shall not send empty strings. ++ AppendStringIfPresent(pref_service_, common::prefs::kTelemetryLastPingTag, ++ "last_ping_tag", payload); ++ AppendStringIfPresent(pref_service_, common::prefs::kTelemetryFirstPingTime, ++ "first_ping", payload); ++ AppendStringIfPresent(pref_service_, common::prefs::kTelemetryLastPingTime, ++ "last_ping", payload); ++ AppendStringIfPresent(pref_service_, ++ common::prefs::kTelemetryPreviousLastPingTime, ++ "previous_last_ping", payload); + -+ // Call testee: -+ auto headers = net::HttpResponseHeaders::TryToCreate(""); -+ CHECK(headers); -+ csp_injector_->InsertContentSecurityPolicyHeadersIfApplicable( -+ kRequestUrl, main_rfh()->GetGlobalId(), headers, callback.Get()); ++ base::Value::Dict root; ++ root.Set("payload", std::move(payload)); ++ return base::Value(std::move(root)); ++} + -+ // Callback is ran via posted task with correctly parsed headers. -+ EXPECT_CALL(callback, Run(_)) -+ .WillOnce([&](network::mojom::ParsedHeadersPtr parsed_headers) { -+ AssertParsedHeadersContainScriptSrcNone(parsed_headers); -+ }); -+ task_environment()->RunUntilIdle(); -+ -+ // The header was injected. -+ EXPECT_TRUE( -+ headers->HasHeaderValue("Content-Security-Policy", "script-src 'none'")); -+} -+ -+TEST_F(AdblockContentSecurityPolicyInjectorImplTest, -+ HeadersAddedWhenMultipleCspInjectionFound) { -+ SnapshotWillContainInjections({"script-src 'first'", "script-src 'second'"}); -+ -+ MockResponseCallback callback; -+ -+ // Call testee: -+ auto headers = net::HttpResponseHeaders::TryToCreate(""); -+ CHECK(headers); -+ csp_injector_->InsertContentSecurityPolicyHeadersIfApplicable( -+ kRequestUrl, main_rfh()->GetGlobalId(), headers, callback.Get()); -+ -+ // Callback is ran via posted task with correctly parsed headers. -+ EXPECT_CALL(callback, Run(_)) -+ .WillOnce([&](network::mojom::ParsedHeadersPtr parsed_headers) { -+ ASSERT_EQ(parsed_headers->content_security_policy.size(), 2u); -+ EXPECT_EQ( -+ parsed_headers->content_security_policy[0] -+ ->raw_directives[network::mojom::CSPDirectiveName::ScriptSrc], -+ "'first'"); -+ EXPECT_EQ( -+ parsed_headers->content_security_policy[1] -+ ->raw_directives[network::mojom::CSPDirectiveName::ScriptSrc], -+ "'second'"); -+ }); -+ task_environment()->RunUntilIdle(); ++// static ++void ActivepingTelemetryTopicProvider::SetHttpPortForTesting( ++ int http_port_for_testing) { ++ g_http_port_for_testing = http_port_for_testing; ++} + -+ // The header was injected. -+ EXPECT_TRUE( -+ headers->HasHeaderValue("Content-Security-Policy", "script-src 'first'")); -+ EXPECT_TRUE(headers->HasHeaderValue("Content-Security-Policy", -+ "script-src 'second'")); ++// static ++void ActivepingTelemetryTopicProvider::SetIntervalsForTesting( ++ base::TimeDelta time_delta) { ++ g_time_delta_for_testing = time_delta; +} + +} // namespace adblock -diff --git a/components/adblock/content/browser/test/element_hider_impl_test.cc b/components/adblock/content/browser/test/element_hider_impl_test.cc +diff --git a/components/adblock/core/activeping_telemetry_topic_provider.h b/components/adblock/core/activeping_telemetry_topic_provider.h new file mode 100644 --- /dev/null -+++ b/components/adblock/content/browser/test/element_hider_impl_test.cc -@@ -0,0 +1,425 @@ ++++ b/components/adblock/core/activeping_telemetry_topic_provider.h +@@ -0,0 +1,87 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -7455,419 +6985,81 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/content/browser/element_hider_impl.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_ACTIVEPING_TELEMETRY_TOPIC_PROVIDER_H_ ++#define COMPONENTS_ADBLOCK_CORE_ACTIVEPING_TELEMETRY_TOPIC_PROVIDER_H_ + -+#include "base/functional/callback_forward.h" -+#include "base/strings/string_split.h" -+#include "base/strings/string_util.h" -+#include "base/test/bind.h" -+#include "base/test/mock_callback.h" ++#include "base/memory/raw_ptr.h" ++#include "base/time/time.h" ++#include "components/adblock/core/adblock_telemetry_service.h" ++#include "components/adblock/core/common/adblock_utils.h" +#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/adblock/core/subscription/test/mock_subscription_collection.h" -+#include "components/adblock/core/subscription/test/mock_subscription_service.h" -+#include "components/grit/components_resources.h" -+#include "content/public/test/test_renderer_host.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+#include "ui/base/resource/mock_resource_bundle_delegate.h" -+#include "ui/base/resource/resource_bundle.h" -+#include "url/gurl.h" -+ -+namespace { -+using NiceMockResourceBundleDelegate = NiceMock; -+} // namespace ++#include "components/prefs/pref_service.h" + +namespace adblock { + -+class AdblockElementHiderImplTest : public content::RenderViewHostTestHarness { -+ protected: -+ void SetUp() override { -+ content::RenderViewHostTestHarness::SetUp(); -+ orig_instance_ = ui::ResourceBundle::SwapSharedInstanceForTesting(nullptr); -+ ui::ResourceBundle::InitSharedInstanceWithLocale( -+ "en-US", &mock_delegate_, -+ ui::ResourceBundle::DO_NOT_LOAD_COMMON_RESOURCES); -+ EXPECT_CALL(mock_delegate_, LoadDataResourceString(IDR_ADBLOCK_SNIPPETS_JS)) -+ .WillRepeatedly(testing::Return("snippets_lib")); -+ EXPECT_CALL(mock_delegate_, -+ LoadDataResourceString(IDR_ADBLOCK_SNIPPETS_XPATH3_DEP_JS)) -+ .WillRepeatedly(testing::Return("xpath3_dep")); -+ EXPECT_CALL(mock_delegate_, -+ LoadDataResourceString(IDR_ADBLOCK_ELEMHIDE_EMU_JS)) -+ .WillRepeatedly(testing::Return("{{elemHidingEmulatedPatternsDef}}")); -+ } -+ -+ void TearDown() override { -+ content::RenderViewHostTestHarness::TearDown(); -+ ui::ResourceBundle::CleanupSharedInstance(); -+ ui::ResourceBundle::SwapSharedInstanceForTesting(orig_instance_); -+ } -+ -+ MockSubscriptionService sub_service_; -+ NiceMockResourceBundleDelegate mock_delegate_; -+ raw_ptr orig_instance_; -+ -+ const GURL kUrl{"https://domain.com"}; -+ const std::vector kFrameHierarchy{kUrl}; -+ const SiteKey kSitekey{""}; -+}; ++// Telemetry topic provider that uploads user-counting data for periodic pings. ++// Provides the following data in Payload: ++// - Last ping time, previous-to-last ping time, first ping time ++// - Unique, non-persistent tag for disambiguating pings made by clients in ++// the same day ++// - Whether Acceptable Ads is enabled ++// - Application name & version, platform name & version ++// Note: Provides no user-identifiable information, no persistent tracking ++// data (ie. no traceable UUID) and no information about user actions. ++class ActivepingTelemetryTopicProvider final ++ : public AdblockTelemetryService::TopicProvider { ++ public: ++ ActivepingTelemetryTopicProvider(utils::AppInfo app_info, ++ PrefService* pref_service, ++ SubscriptionService* subscription_service, ++ const GURL& base_url, ++ const std::string& auth_token); ++ ~ActivepingTelemetryTopicProvider() final; + -+TEST_F(AdblockElementHiderImplTest, BatchesSelectors) { -+ std::vector selectors(1u << 11u, "selector"); -+ std::vector emu_selectors; -+ -+ ElementHiderImpl element_hide(&sub_service_); -+ EXPECT_CALL(sub_service_, GetCurrentSnapshot()) -+ .WillOnce([this, selectors, emu_selectors]() { -+ auto collection = std::make_unique(); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Elemhide, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection, -+ GetElementHideSelectors(kUrl, kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(selectors)); -+ EXPECT_CALL(*collection, GetElementHideEmulationSelectors(kUrl)) -+ .WillOnce(testing::Return(emu_selectors)); -+ SubscriptionService::Snapshot snapshot; -+ snapshot.push_back(std::move(collection)); -+ return snapshot; -+ }); ++ static GURL DefaultBaseUrl(); ++ static std::string DefaultAuthToken(); + -+ element_hide.ApplyElementHidingEmulationOnPage( -+ kUrl, kFrameHierarchy, main_rfh(), kSitekey, -+ base::BindLambdaForTesting( -+ [&](const ElementHider::ElemhideInjectionData& data) { -+ const auto lines = -+ base::SplitString(data.stylesheet, "\n", base::KEEP_WHITESPACE, -+ base::SPLIT_WANT_NONEMPTY); -+ EXPECT_EQ(lines.size(), 2u); -+ for (auto& line : lines) { -+ EXPECT_EQ(base::SplitString(line, ",", base::KEEP_WHITESPACE, -+ base::SPLIT_WANT_NONEMPTY) -+ .size(), -+ (1u << 10u)); // must not be bigger than 2 ^ 10 = 1024 -+ -+ EXPECT_TRUE(base::EndsWith(line, "{display: none !important;}")); -+ } -+ })); -+} -+ -+TEST_F(AdblockElementHiderImplTest, AppliesElementHidingOnSiteWithWeirdUrl) { -+ std::vector selectors{"a", "b"}; -+ std::vector emu_selectors; -+ -+ // When loading web bundles, URLs of iframes may not look like ordinary -+ // addresses: -+ const GURL kNonStandardFrameUrl{ -+ "uuid-in-package:429fcc4e-0696-4bad-b099-ee9175f023ad"}; -+ -+ ElementHiderImpl element_hide(&sub_service_); -+ EXPECT_CALL(sub_service_, GetCurrentSnapshot()) -+ .WillOnce([this, selectors, emu_selectors, &kNonStandardFrameUrl]() { -+ auto collection = std::make_unique(); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Document, -+ kNonStandardFrameUrl, kFrameHierarchy, -+ kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Elemhide, -+ kNonStandardFrameUrl, kFrameHierarchy, -+ kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection, -+ GetElementHideSelectors(kNonStandardFrameUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(selectors)); -+ EXPECT_CALL(*collection, -+ GetElementHideEmulationSelectors(kNonStandardFrameUrl)) -+ .WillOnce(testing::Return(emu_selectors)); -+ SubscriptionService::Snapshot snapshot; -+ snapshot.push_back(std::move(collection)); -+ return snapshot; -+ }); ++ GURL GetEndpointURL() const final; ++ std::string GetAuthToken() const final; ++ void GetPayload(PayloadCallback callback) const final; + -+ element_hide.ApplyElementHidingEmulationOnPage( -+ kNonStandardFrameUrl, kFrameHierarchy, main_rfh(), kSitekey, -+ base::BindLambdaForTesting( -+ [&](const ElementHider::ElemhideInjectionData& data) { -+ EXPECT_EQ(data.stylesheet, "a, b {display: none !important;}\n"); -+ })); -+} -+ -+TEST_F(AdblockElementHiderImplTest, GeneratesSnippetsWhenEhAllowListed) { -+ EXPECT_CALL(sub_service_, GetCurrentSnapshot()).WillOnce([this]() { -+ auto collection = std::make_unique(); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Elemhide, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(GURL("about:blank"))); -+ base::Value::List snippets; -+ snippets.Append(base::Value::List()); -+ EXPECT_CALL(*collection, GenerateSnippets(kUrl, kFrameHierarchy)) -+ .WillOnce(testing::Return(testing::ByMove(std::move(snippets)))); -+ SubscriptionService::Snapshot snapshot; -+ snapshot.push_back(std::move(collection)); -+ return snapshot; -+ }); ++ // Normally 12 hours since last ping, 1 hour in case of retries. ++ base::Time GetTimeOfNextRequest() const final; + -+ ElementHiderImpl element_hide(&sub_service_); -+ element_hide.ApplyElementHidingEmulationOnPage( -+ kUrl, kFrameHierarchy, main_rfh(), kSitekey, -+ base::BindLambdaForTesting( -+ [&](const ElementHider::ElemhideInjectionData& data) { -+ EXPECT_EQ(data.stylesheet, ""); -+ EXPECT_EQ(data.elemhide_js, ""); -+ EXPECT_TRUE(!data.snippet_js.empty()); -+ })); -+ task_environment()->RunUntilIdle(); -+} -+ -+TEST_F(AdblockElementHiderImplTest, GeneratesNothingWhenDocumentAllowListed) { -+ EXPECT_CALL(sub_service_, GetCurrentSnapshot()).WillOnce([this]() { -+ auto collection = std::make_unique(); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(GURL("about:blank"))); -+ SubscriptionService::Snapshot snapshot; -+ snapshot.push_back(std::move(collection)); -+ return snapshot; -+ }); ++ // Attempts to parse "token" (an opaque server description of last ping time) ++ // from |response_content|. ++ void ParseResponse(std::unique_ptr response_content) final; + -+ ElementHiderImpl element_hide(&sub_service_); -+ element_hide.ApplyElementHidingEmulationOnPage( -+ kUrl, kFrameHierarchy, main_rfh(), kSitekey, -+ base::BindLambdaForTesting( -+ [&](const ElementHider::ElemhideInjectionData& data) { -+ EXPECT_EQ(data.stylesheet, ""); -+ EXPECT_EQ(data.elemhide_js, ""); -+ EXPECT_EQ(data.snippet_js, ""); -+ })); -+ task_environment()->RunUntilIdle(); -+} -+ -+TEST_F(AdblockElementHiderImplTest, UsesTwoConfigs) { -+ std::vector selectors_config_1{"a1", "b1"}; -+ std::vector emu_selectors_config_1{"c1", "d1"}; -+ base::Value::List snippets_config_1; -+ snippets_config_1.Append("snippets_config_1_code_1"); -+ snippets_config_1.Append("snippets_config_1_code_2"); -+ std::vector selectors_config_2{"a2", "b2"}; -+ std::vector emu_selectors_config_2{"c2", "d2"}; -+ base::Value::List snippets_config_2; -+ snippets_config_2.Append("snippets_config_2_code_1"); -+ snippets_config_2.Append("snippets_config_2_code_2"); -+ -+ ElementHiderImpl element_hide(&sub_service_); -+ EXPECT_CALL(sub_service_, GetCurrentSnapshot()).WillOnce([&]() { -+ auto collection1 = std::make_unique(); -+ EXPECT_CALL(*collection1, -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection1, -+ FindBySpecialFilter(SpecialFilterType::Elemhide, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection1, -+ GetElementHideSelectors(kUrl, kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(selectors_config_1)); -+ EXPECT_CALL(*collection1, GetElementHideEmulationSelectors(kUrl)) -+ .WillOnce(testing::Return(emu_selectors_config_1)); -+ EXPECT_CALL(*collection1, GenerateSnippets(kUrl, kFrameHierarchy)) -+ .WillOnce( -+ testing::Return(testing::ByMove(std::move(snippets_config_1)))); -+ auto collection2 = std::make_unique(); -+ EXPECT_CALL(*collection2, -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection2, -+ FindBySpecialFilter(SpecialFilterType::Elemhide, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection2, -+ GetElementHideSelectors(kUrl, kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(selectors_config_2)); -+ EXPECT_CALL(*collection2, GetElementHideEmulationSelectors(kUrl)) -+ .WillOnce(testing::Return(emu_selectors_config_2)); -+ EXPECT_CALL(*collection2, GenerateSnippets(kUrl, kFrameHierarchy)) -+ .WillOnce( -+ testing::Return(testing::ByMove(std::move(snippets_config_2)))); -+ SubscriptionService::Snapshot snapshot; -+ snapshot.push_back(std::move(collection1)); -+ snapshot.push_back(std::move(collection2)); -+ return snapshot; -+ }); ++ void FetchDebugInfo(DebugInfoCallback callback) const final; + -+ element_hide.ApplyElementHidingEmulationOnPage( -+ kUrl, kFrameHierarchy, main_rfh(), kSitekey, -+ base::BindLambdaForTesting( -+ [&](const ElementHider::ElemhideInjectionData& data) { -+ EXPECT_EQ(data.stylesheet, -+ "a1, b1, a2, b2 {display: none !important;}\n"); -+ EXPECT_EQ(data.elemhide_js, -+ "{selector:\"c1\", text:\"" + kUrl.host() + -+ "\"}, \n{selector:\"d1\", text:\"" + kUrl.host() + -+ "\"}, \n{selector:\"c2\", text:\"" + kUrl.host() + -+ "\"}, \n{selector:\"d2\", text:\"" + kUrl.host() + -+ "\"}, \n"); -+ EXPECT_EQ( -+ data.snippet_js, -+ "(snippets_lib)({}, " -+ "...[\"snippets_config_1_code_1\",\"snippets_config_1_code_2\"," -+ "\"snippets_config_2_code_1\",\"snippets_config_2_code_2\"]);"); -+ })); -+} -+ -+TEST_F(AdblockElementHiderImplTest, UsesSecondConfigWhenFirstAllowlisted) { -+ std::vector selectors_config_2{"a2", "b2"}; -+ std::vector emu_selectors_config_2{"c2", "d2"}; -+ base::Value::List snippets_config_2; -+ snippets_config_2.Append("snippets_config_2_code_1"); -+ snippets_config_2.Append("snippets_config_2_code_2"); -+ -+ ElementHiderImpl element_hide(&sub_service_); -+ EXPECT_CALL(sub_service_, GetCurrentSnapshot()).WillOnce([&]() { -+ auto collection1 = std::make_unique(); -+ EXPECT_CALL(*collection1, -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(GURL("about:blank"))); -+ EXPECT_CALL(*collection1, -+ GetElementHideSelectors(kUrl, kFrameHierarchy, kSitekey)) -+ .Times(0); -+ EXPECT_CALL(*collection1, GetElementHideEmulationSelectors(kUrl)).Times(0); -+ EXPECT_CALL(*collection1, GenerateSnippets(kUrl, kFrameHierarchy)).Times(0); -+ auto collection2 = std::make_unique(); -+ EXPECT_CALL(*collection2, -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection2, -+ FindBySpecialFilter(SpecialFilterType::Elemhide, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection2, -+ GetElementHideSelectors(kUrl, kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(selectors_config_2)); -+ EXPECT_CALL(*collection2, GetElementHideEmulationSelectors(kUrl)) -+ .WillOnce(testing::Return(emu_selectors_config_2)); -+ EXPECT_CALL(*collection2, GenerateSnippets(kUrl, kFrameHierarchy)) -+ .WillOnce( -+ testing::Return(testing::ByMove(std::move(snippets_config_2)))); -+ SubscriptionService::Snapshot snapshot; -+ snapshot.push_back(std::move(collection1)); -+ snapshot.push_back(std::move(collection2)); -+ return snapshot; -+ }); ++ // Sets the port used by the embedded http server required for browser tests. ++ // Must be called before the first call to DefaultBaseUrl(). ++ static void SetHttpPortForTesting(int http_port_for_testing); + -+ element_hide.ApplyElementHidingEmulationOnPage( -+ kUrl, kFrameHierarchy, main_rfh(), kSitekey, -+ base::BindLambdaForTesting([&](const ElementHider::ElemhideInjectionData& -+ data) { -+ EXPECT_EQ(data.stylesheet, "a2, b2 {display: none !important;}\n"); -+ EXPECT_EQ(data.elemhide_js, "{selector:\"c2\", text:\"" + kUrl.host() + -+ "\"}, \n{selector:\"d2\", text:\"" + -+ kUrl.host() + "\"}, \n"); -+ EXPECT_EQ( -+ data.snippet_js, -+ "(snippets_lib)({}, " -+ "...[\"snippets_config_2_code_1\",\"snippets_config_2_code_2\"]);"); -+ })); -+} -+ -+TEST_F(AdblockElementHiderImplTest, SecondInjectionSkipped) { -+ std::vector selectors{"a", "b"}; -+ std::vector emu_selectors; -+ -+ EXPECT_CALL(sub_service_, GetCurrentSnapshot()) -+ .WillRepeatedly([this, selectors, emu_selectors]() { -+ auto collection = std::make_unique(); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Elemhide, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection, -+ GetElementHideSelectors(kUrl, kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(selectors)); -+ EXPECT_CALL(*collection, GetElementHideEmulationSelectors(kUrl)) -+ .WillOnce(testing::Return(emu_selectors)); -+ SubscriptionService::Snapshot snapshot; -+ snapshot.push_back(std::move(collection)); -+ return snapshot; -+ }); ++ // Sets the internal timing for sending pings required for browser tests. ++ // Must be called before AdblockTelemetryService::Start(). ++ static void SetIntervalsForTesting(base::TimeDelta time_delta); + -+ ElementHiderImpl element_hide(&sub_service_); -+ element_hide.ApplyElementHidingEmulationOnPage( -+ kUrl, kFrameHierarchy, main_rfh(), kSitekey, -+ base::BindLambdaForTesting( -+ [&](const ElementHider::ElemhideInjectionData& data) { -+ EXPECT_EQ(data.stylesheet, "a, b {display: none !important;}\n"); -+ })); -+ task_environment()->RunUntilIdle(); -+ -+ element_hide.ApplyElementHidingEmulationOnPage( -+ kUrl, kFrameHierarchy, main_rfh(), kSitekey, -+ base::BindLambdaForTesting( -+ [&](const ElementHider::ElemhideInjectionData& data) { -+ EXPECT_EQ(data.stylesheet, ""); -+ })); -+ task_environment()->RunUntilIdle(); -+} -+ -+TEST_F(AdblockElementHiderImplTest, InjectsXpath3DepWhenXpath3FilterFound) { -+ base::Value::List snippets_config; -+ snippets_config.Append("hide-if-matches-xpath3"); -+ -+ ElementHiderImpl element_hide(&sub_service_); -+ EXPECT_CALL(sub_service_, GetCurrentSnapshot()).WillOnce([&]() { -+ auto collection = std::make_unique(); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(absl::nullopt)); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Elemhide, kUrl, -+ kFrameHierarchy, kSitekey)) -+ .WillOnce(testing::Return(GURL("about:blank"))); -+ EXPECT_CALL(*collection, GenerateSnippets(kUrl, kFrameHierarchy)) -+ .WillOnce(testing::Return(testing::ByMove(std::move(snippets_config)))); -+ SubscriptionService::Snapshot snapshot; -+ snapshot.push_back(std::move(collection)); -+ return snapshot; -+ }); ++ private: ++ void ScheduleNextPing(base::TimeDelta delay); ++ void UpdatePrefs(const std::string& ping_response_time); ++ base::Value GetPayloadInternal() const; + -+ element_hide.ApplyElementHidingEmulationOnPage( -+ kUrl, kFrameHierarchy, main_rfh(), kSitekey, -+ base::BindLambdaForTesting( -+ [&](const ElementHider::ElemhideInjectionData& data) { -+ EXPECT_EQ(data.snippet_js, -+ "(xpath3_dep)();(snippets_lib)({}, " -+ "...[\"hide-if-matches-xpath3\"]);"); -+ })); -+} ++ const utils::AppInfo app_info_; ++ raw_ptr pref_service_; ++ raw_ptr subscription_service_; ++ const GURL base_url_; ++ const std::string auth_token_; ++}; + +} // namespace adblock -diff --git a/components/adblock/content/browser/test/frame_hierarchy_builder_test.cc b/components/adblock/content/browser/test/frame_hierarchy_builder_test.cc ++ ++#endif // COMPONENTS_ADBLOCK_CORE_ACTIVEPING_TELEMETRY_TOPIC_PROVIDER_H_ +diff --git a/components/adblock/core/adblock_controller.h b/components/adblock/core/adblock_controller.h new file mode 100644 --- /dev/null -+++ b/components/adblock/content/browser/test/frame_hierarchy_builder_test.cc -@@ -0,0 +1,154 @@ ++++ b/components/adblock/core/adblock_controller.h +@@ -0,0 +1,64 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -7885,148 +7077,58 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/content/browser/frame_hierarchy_builder.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_H_ ++#define COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_H_ + -+#include ++#include ++#include + -+#include "content/public/browser/render_process_host.h" -+#include "content/public/browser/web_contents.h" -+#include "content/public/test/navigation_simulator.h" -+#include "content/public/test/test_renderer_host.h" -+#include "services/network/public/mojom/network_context.mojom-forward.h" -+#include "testing/gtest/include/gtest/gtest.h" -+#include "url/gurl.h" ++#include "base/observer_list.h" ++#include "components/adblock/core/subscription/installed_subscription.h" ++#include "components/adblock/core/subscription/subscription_config.h" ++#include "components/keyed_service/core/keyed_service.h" + -+namespace { ++class GURL; + -+class AdblockFrameHierarchyTest : public content::RenderViewHostTestHarness { ++namespace adblock { ++/** ++ * @brief Provides the way for the UI to interact with the filter engine. ++ * It allows to set the states of the ad-block and acceptable ads and ++ * adding, removing and listing subscriptions and allowed domains. ++ */ ++class AdblockController : public KeyedService { + public: -+ AdblockFrameHierarchyTest() = default; -+ ~AdblockFrameHierarchyTest() override = default; ++ ~AdblockController() override = default; + -+ AdblockFrameHierarchyTest(const AdblockFrameHierarchyTest&) = delete; -+ AdblockFrameHierarchyTest& operator=(const AdblockFrameHierarchyTest&) = -+ delete; ++ virtual void SetAdblockEnabled(bool enabled) = 0; ++ virtual bool IsAdblockEnabled() const = 0; ++ virtual void SetAcceptableAdsEnabled(bool enabled) = 0; ++ virtual bool IsAcceptableAdsEnabled() const = 0; + -+ content::RenderFrameHost* AddChildFrame(content::RenderFrameHost* parent, -+ const GURL& url) { -+ content::RenderFrameHost* child = -+ content::RenderFrameHostTester::For(parent)->AppendChild(""); -+ content::RenderFrameHostTester::For(child)->InitializeRenderFrameIfNeeded(); -+ auto simulator = -+ content::NavigationSimulator::CreateRendererInitiated(url, child); -+ simulator->Commit(); -+ return simulator->GetFinalRenderFrameHost(); -+ } ++ virtual void InstallSubscription(const GURL& url) = 0; ++ virtual void UninstallSubscription(const GURL& url) = 0; ++ virtual std::vector> GetInstalledSubscriptions() ++ const = 0; + -+ std::vector BuildFrameHierarchy(const GURL& root, -+ std::initializer_list urls) { -+ NavigateAndCommit(root); -+ auto* frame = main_rfh(); ++ virtual void AddAllowedDomain(const std::string& domain) = 0; ++ virtual void RemoveAllowedDomain(const std::string& domain) = 0; ++ virtual std::vector GetAllowedDomains() const = 0; + -+ for (const GURL& it : urls) { -+ frame = AddChildFrame(frame, it); -+ } ++ virtual void AddCustomFilter(const std::string& filter) = 0; ++ virtual void RemoveCustomFilter(const std::string& filter) = 0; ++ virtual std::vector GetCustomFilters() const = 0; + -+ adblock::FrameHierarchyBuilder builder; -+ return builder.BuildFrameHierarchy(frame); -+ } ++ virtual std::vector GetKnownSubscriptions() const = 0; +}; + -+} // namespace -+ -+namespace adblock { -+ -+const char kRoot[] = "https://foo.com/root"; -+const char kFrame1[] = "https://foo.com/frame1"; -+const char kFrame2[] = "https://foo.com/frame2"; -+const char kBlank[] = "about:blank"; -+ -+TEST_F(AdblockFrameHierarchyTest, FindMainFrame) { -+ FrameHierarchyBuilder builder; -+ auto* host = builder.FindRenderFrameHost(main_rfh()->GetGlobalId()); -+ ASSERT_TRUE(host); -+ EXPECT_EQ(host, main_rfh()); -+} -+ -+TEST_F(AdblockFrameHierarchyTest, FindChildFrame) { -+ FrameHierarchyBuilder builder; -+ NavigateAndCommit(GURL(kRoot)); -+ auto* child_frame = AddChildFrame(main_rfh(), GURL(kFrame1)); -+ CHECK(child_frame); -+ CHECK(child_frame->GetProcess()); -+ auto* host = builder.FindRenderFrameHost(child_frame->GetGlobalId()); -+ ASSERT_TRUE(host); -+ EXPECT_EQ(host, child_frame); -+} -+ -+TEST_F(AdblockFrameHierarchyTest, CannotFindUnknownIds) { -+ FrameHierarchyBuilder builder; -+ // There is an ordinary RenderFrame... -+ NavigateAndCommit(GURL(kRoot)); -+ auto* child_frame = AddChildFrame(main_rfh(), GURL(kFrame1)); -+ CHECK(child_frame); -+ CHECK(child_frame->GetProcess()); -+ // There is also a frame bound to a WebContents in the Browser Process... -+ auto web_contents = CreateTestWebContents(); -+ CHECK(web_contents); -+ CHECK(web_contents->GetPrimaryMainFrame()); -+ // But we ask for a RFH that's none of these: -+ const int32_t routing_id = 42; -+ const int32_t process_id = 30; -+ CHECK_NE(routing_id, main_rfh()->GetRoutingID()); -+ CHECK_NE(routing_id, child_frame->GetRoutingID()); -+ CHECK_NE(routing_id, -+ web_contents->GetPrimaryMainFrame()->GetFrameTreeNodeId()); -+ CHECK_NE(process_id, main_rfh()->GetProcess()->GetID()); -+ CHECK_NE(process_id, network::mojom::kBrowserProcessId); -+ -+ // It's impossible to find a RFH for those parameters. -+ auto* host = builder.FindRenderFrameHost( -+ content::GlobalRenderFrameHostId(process_id, routing_id)); -+ EXPECT_FALSE(host); -+} -+ -+TEST_F(AdblockFrameHierarchyTest, Build) { -+ GURL root(kRoot); -+ GURL url1(kFrame1); -+ GURL url2(kFrame2); -+ auto result = BuildFrameHierarchy(root, {url1, url2}); -+ -+ ASSERT_EQ(3u, result.size()); -+ EXPECT_EQ(url2, result.at(0)); -+ EXPECT_EQ(url1, result.at(1)); -+ EXPECT_EQ(root, result.at(2)); -+} -+ -+TEST_F(AdblockFrameHierarchyTest, BuildBlank) { -+ GURL root(kRoot); -+ GURL url1(kBlank); -+ GURL url2(kFrame2); -+ auto result = BuildFrameHierarchy(root, {url1, url2}); -+ -+ ASSERT_EQ(2u, result.size()); -+ EXPECT_EQ(url2, result.at(0)); -+ EXPECT_EQ(root, result.at(1)); -+} -+ -+TEST_F(AdblockFrameHierarchyTest, BuildEmpty) { -+ GURL root(kRoot); -+ GURL url1(kFrame1); -+ GURL url2; -+ auto result = BuildFrameHierarchy(root, {url1, url2}); -+ -+ ASSERT_EQ(2u, result.size()); -+ EXPECT_EQ(url1, result.at(0)); -+ EXPECT_EQ(root, result.at(1)); -+} -+ +} // namespace adblock -diff --git a/components/adblock/content/browser/test/mock_adblock_content_security_policy_injector.cc b/components/adblock/content/browser/test/mock_adblock_content_security_policy_injector.cc ++ ++#endif // COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_H_ +diff --git a/components/adblock/core/adblock_controller_impl.cc b/components/adblock/core/adblock_controller_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/content/browser/test/mock_adblock_content_security_policy_injector.cc -@@ -0,0 +1,28 @@ ++++ b/components/adblock/core/adblock_controller_impl.cc +@@ -0,0 +1,271 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -8044,22 +7146,265 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/content/browser/test/mock_adblock_content_security_policy_injector.h" ++#include "components/adblock/core/adblock_controller_impl.h" ++ ++#include ++#include ++#include ++#include ++ ++#include "absl/types/optional.h" ++#include "base/command_line.h" ++#include "base/functional/bind.h" ++#include "base/logging.h" ++#include "base/ranges/algorithm.h" ++#include "base/strings/string_util.h" ++#include "base/version.h" ++#include "components/adblock/core/adblock_switches.h" ++#include "components/adblock/core/common/adblock_constants.h" ++#include "components/adblock/core/common/adblock_prefs.h" ++#include "components/adblock/core/common/adblock_utils.h" ++#include "components/adblock/core/subscription/installed_subscription.h" ++#include "components/adblock/core/subscription/subscription.h" ++#include "components/adblock/core/subscription/subscription_config.h" ++#include "components/adblock/core/subscription/subscription_service.h" ++#include "components/language/core/common/locale_util.h" ++#include "components/prefs/pref_service.h" ++#include "components/prefs/scoped_user_pref_update.h" ++#include "components/version_info/version_info.h" ++#include "url/gurl.h" + +namespace adblock { + -+MockAdblockContentSecurityPolicyInjector:: -+ MockAdblockContentSecurityPolicyInjector() = default; ++namespace { ++ ++template ++std::vector MigrateItemsFromList(PrefService* pref_service, ++ const std::string& pref_name) { ++ std::vector results; ++ if (pref_service->FindPreference(pref_name)->HasUserSetting()) { ++ const auto& list = pref_service->GetList(pref_name); ++ for (const auto& item : list) { ++ if (item.is_string()) { ++ results.emplace_back(item.GetString()); ++ } ++ } ++ pref_service->ClearPref(pref_name); ++ } ++ return results; ++} ++ ++absl::optional MigrateBoolFromPrefs(PrefService* pref_service, ++ const std::string& pref_name) { ++ if (pref_service->FindPreference(pref_name)->HasUserSetting()) { ++ bool value = pref_service->GetBoolean(pref_name); ++ pref_service->ClearPref(pref_name); ++ return value; ++ } ++ return absl::nullopt; ++} ++ ++} // namespace ++ ++AdblockControllerImpl::AdblockControllerImpl( ++ FilteringConfiguration* adblock_filtering_configuration, ++ SubscriptionService* subscription_service, ++ const std::string& locale, ++ std::vector known_subscriptions) ++ : adblock_filtering_configuration_(adblock_filtering_configuration), ++ subscription_service_(subscription_service), ++ language_(language::ExtractBaseLanguage(locale)), ++ known_subscriptions_(std::move(known_subscriptions)) { ++ // language::ExtractBaseLanguage is pretty basic, if it doesn't return ++ // something that looks like a valid language, fallback to English and use the ++ // default EasyList. ++ if (language_.size() != 2u) { ++ language_ = "en"; ++ } ++} ++ ++AdblockControllerImpl::~AdblockControllerImpl() = default; ++ ++void AdblockControllerImpl::SetAdblockEnabled(bool enabled) { ++ adblock_filtering_configuration_->SetEnabled(enabled); ++} ++ ++bool AdblockControllerImpl::IsAdblockEnabled() const { ++ return adblock_filtering_configuration_->IsEnabled(); ++} ++ ++void AdblockControllerImpl::SetAcceptableAdsEnabled(bool enabled) { ++ if (enabled) { ++ InstallSubscription(AcceptableAdsUrl()); ++ } else { ++ UninstallSubscription(AcceptableAdsUrl()); ++ } ++} ++ ++bool AdblockControllerImpl::IsAcceptableAdsEnabled() const { ++ return base::ranges::any_of( ++ adblock_filtering_configuration_->GetFilterLists(), ++ [&](const auto& url) { return url == AcceptableAdsUrl(); }); ++} ++ ++void AdblockControllerImpl::InstallSubscription(const GURL& url) { ++ adblock_filtering_configuration_->AddFilterList(url); ++} ++ ++void AdblockControllerImpl::UninstallSubscription(const GURL& url) { ++ adblock_filtering_configuration_->RemoveFilterList(url); ++} ++ ++std::vector> ++AdblockControllerImpl::GetInstalledSubscriptions() const { ++ return GetSubscriptionsThatMatchConfiguration(); ++} ++ ++void AdblockControllerImpl::AddAllowedDomain(const std::string& domain) { ++ adblock_filtering_configuration_->AddAllowedDomain(domain); ++} ++ ++void AdblockControllerImpl::RemoveAllowedDomain(const std::string& domain) { ++ adblock_filtering_configuration_->RemoveAllowedDomain(domain); ++} ++ ++std::vector AdblockControllerImpl::GetAllowedDomains() const { ++ return adblock_filtering_configuration_->GetAllowedDomains(); ++} ++ ++void AdblockControllerImpl::AddCustomFilter(const std::string& filter) { ++ adblock_filtering_configuration_->AddCustomFilter(filter); ++} ++ ++void AdblockControllerImpl::RemoveCustomFilter(const std::string& filter) { ++ adblock_filtering_configuration_->RemoveCustomFilter(filter); ++} ++ ++std::vector AdblockControllerImpl::GetCustomFilters() const { ++ return adblock_filtering_configuration_->GetCustomFilters(); ++} ++ ++std::vector ++AdblockControllerImpl::GetKnownSubscriptions() const { ++ return known_subscriptions_; ++} ++ ++void AdblockControllerImpl::RunFirstRunLogic(PrefService* pref_service) { ++ // If the state of installed subscriptions in SubscriptionService is different ++ // than the state in prefs, prefs take precedence. ++ if (pref_service->GetBoolean( ++ common::prefs::kInstallFirstStartSubscriptions)) { ++ // On first run, install additional subscriptions. ++ for (const auto& cur : known_subscriptions_) { ++ if (cur.first_run == SubscriptionFirstRunBehavior::Subscribe) { ++ if (cur.url == AcceptableAdsUrl() && ++ base::CommandLine::ForCurrentProcess()->HasSwitch( ++ switches::kDisableAcceptableAds)) { ++ // Do not install Acceptable Ads on first run because a command line ++ // switch forbids it. Mostly used for testing. ++ continue; ++ } ++ InstallSubscription(cur.url); ++ } ++ } ++ ++ if (IsEyeoFilteringDisabledByDefault()) { ++ SetAdblockEnabled(false); ++ } ++ ++ InstallLanguageBasedRecommendedSubscriptions(); ++ pref_service->SetBoolean(common::prefs::kInstallFirstStartSubscriptions, ++ false); ++ } ++} ++ ++void AdblockControllerImpl::MigrateLegacyPrefs(PrefService* pref_service) { ++ if (auto aa_value = MigrateBoolFromPrefs( ++ pref_service, common::prefs::kEnableAcceptableAdsLegacy)) { ++ SetAcceptableAdsEnabled(*aa_value); ++ VLOG(1) << "[eyeo] Migrated kEnableAcceptableAdsLegacy pref"; ++ } ++ ++ if (auto enable_value = MigrateBoolFromPrefs( ++ pref_service, common::prefs::kEnableAdblockLegacy)) { ++ SetAdblockEnabled(*enable_value); ++ VLOG(1) << "[eyeo] Migrated kEnableAdblockLegacy pref"; ++ } ++ ++ for (const auto& url : MigrateItemsFromList( ++ pref_service, common::prefs::kAdblockCustomSubscriptionsLegacy)) { ++ adblock_filtering_configuration_->AddFilterList(url); ++ VLOG(1) << "[eyeo] Migrated " << url ++ << " from kAdblockCustomSubscriptionsLegacy pref"; ++ } ++ ++ for (const auto& url : MigrateItemsFromList( ++ pref_service, common::prefs::kAdblockSubscriptionsLegacy)) { ++ adblock_filtering_configuration_->AddFilterList(url); ++ VLOG(1) << "[eyeo] Migrated " << url ++ << " from kAdblockSubscriptionsLegacy pref"; ++ } + -+MockAdblockContentSecurityPolicyInjector:: -+ ~MockAdblockContentSecurityPolicyInjector() = default; ++ for (const auto& domain : MigrateItemsFromList( ++ pref_service, common::prefs::kAdblockAllowedDomainsLegacy)) { ++ adblock_filtering_configuration_->AddAllowedDomain(domain); ++ VLOG(1) << "[eyeo] Migrated " << domain ++ << " from kAdblockAllowedDomainsLegacy pref"; ++ } ++ ++ for (const auto& filter : MigrateItemsFromList( ++ pref_service, common::prefs::kAdblockCustomFiltersLegacy)) { ++ adblock_filtering_configuration_->AddCustomFilter(filter); ++ VLOG(1) << "[eyeo] Migrated " << filter ++ << " from kAdblockCustomFiltersLegacy pref"; ++ } ++} ++ ++void AdblockControllerImpl::InstallLanguageBasedRecommendedSubscriptions() { ++ bool language_specific_subscription_installed = false; ++ for (const auto& subscription : known_subscriptions_) { ++ if (subscription.first_run == ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch && ++ std::find(subscription.languages.begin(), subscription.languages.end(), ++ language_) != subscription.languages.end()) { ++ VLOG(1) << "[eyeo] Using recommended subscription for language \"" ++ << language_ << "\": " << subscription.title; ++ language_specific_subscription_installed = true; ++ InstallSubscription(subscription.url); ++ } ++ } ++ if (language_specific_subscription_installed) { ++ return; ++ } ++ ++ // If there's no language-specific recommended subscription, see if we may ++ // install the default subscription.. ++ if (base::ranges::any_of( ++ known_subscriptions_, [&](const KnownSubscriptionInfo& subscription) { ++ return subscription.url == DefaultSubscriptionUrl() && ++ subscription.first_run != ++ SubscriptionFirstRunBehavior::Ignore; ++ })) { ++ VLOG(1) << "[eyeo] Using the default subscription for language \"" ++ << language_ << "\""; ++ InstallSubscription(DefaultSubscriptionUrl()); ++ } ++ VLOG(1) << "[eyeo] No default subscription found, neither " ++ "language-specific, nor generic."; ++} ++ ++std::vector> ++AdblockControllerImpl::GetSubscriptionsThatMatchConfiguration() const { ++ return subscription_service_->GetCurrentSubscriptions( ++ adblock_filtering_configuration_); ++} + +} // namespace adblock -diff --git a/components/adblock/content/browser/test/mock_adblock_content_security_policy_injector.h b/components/adblock/content/browser/test/mock_adblock_content_security_policy_injector.h +diff --git a/components/adblock/core/adblock_controller_impl.h b/components/adblock/core/adblock_controller_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/content/browser/test/mock_adblock_content_security_policy_injector.h -@@ -0,0 +1,44 @@ ++++ b/components/adblock/core/adblock_controller_impl.h +@@ -0,0 +1,95 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -8077,69 +7422,89 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_TEST_MOCK_ADBLOCK_CONTENT_SECURITY_POLICY_INJECTOR_H_ -+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_TEST_MOCK_ADBLOCK_CONTENT_SECURITY_POLICY_INJECTOR_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_IMPL_H_ + -+#include "components/adblock/content/browser/content_security_policy_injector.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "url/gurl.h" ++#include ++#include ++ ++#include "base/memory/raw_ptr.h" ++#include "base/memory/weak_ptr.h" ++#include "base/sequence_checker.h" ++#include "components/adblock/core/adblock_controller.h" ++#include "components/adblock/core/configuration/filtering_configuration.h" ++#include "components/adblock/core/subscription/subscription_config.h" ++#include "components/adblock/core/subscription/subscription_service.h" ++#include "components/prefs/pref_member.h" ++ ++class GURL; ++class PrefService; + +namespace adblock { + -+class MockAdblockContentSecurityPolicyInjector -+ : public ContentSecurityPolicyInjector { ++/** ++ * @brief Implementation of the AdblockController interface. Uses a ++ * FilteringConfiguration as the backend for all the state set via the ++ * interface. ++ */ ++class AdblockControllerImpl : public AdblockController { + public: -+ MockAdblockContentSecurityPolicyInjector(); -+ ~MockAdblockContentSecurityPolicyInjector() override; -+ -+ MOCK_METHOD(void, -+ InsertContentSecurityPolicyHeadersIfApplicable, -+ (const GURL&, -+ content::GlobalRenderFrameHostId, -+ const scoped_refptr&, -+ InsertContentSecurityPolicyHeadersCallback), -+ (override)); -+}; ++ AdblockControllerImpl(FilteringConfiguration* adblock_filtering_configuration, ++ SubscriptionService* subscription_service, ++ const std::string& locale, ++ std::vector known_subscriptions); ++ ~AdblockControllerImpl() override; + -+} // namespace adblock ++ AdblockControllerImpl(const AdblockControllerImpl&) = delete; ++ AdblockControllerImpl& operator=(const AdblockControllerImpl&) = delete; ++ AdblockControllerImpl(AdblockControllerImpl&&) = delete; ++ AdblockControllerImpl& operator=(AdblockControllerImpl&&) = delete; + -+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_TEST_MOCK_ADBLOCK_CONTENT_SECURITY_POLICY_INJECTOR_H_ -diff --git a/components/adblock/content/browser/test/mock_element_hider.cc b/components/adblock/content/browser/test/mock_element_hider.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/content/browser/test/mock_element_hider.cc -@@ -0,0 +1,26 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++ void SetAdblockEnabled(bool enabled) override; ++ bool IsAdblockEnabled() const override; ++ void SetAcceptableAdsEnabled(bool enabled) override; ++ bool IsAcceptableAdsEnabled() const override; ++ ++ void InstallSubscription(const GURL& url) override; ++ void UninstallSubscription(const GURL& url) override; ++ std::vector> GetInstalledSubscriptions() ++ const override; + -+#include "components/adblock/content/browser/test/mock_element_hider.h" ++ void AddAllowedDomain(const std::string& domain) override; ++ void RemoveAllowedDomain(const std::string& domain) override; ++ std::vector GetAllowedDomains() const override; + -+namespace adblock { ++ void AddCustomFilter(const std::string& filter) override; ++ void RemoveCustomFilter(const std::string& filter) override; ++ std::vector GetCustomFilters() const override; + -+MockElementHider::MockElementHider() = default; ++ std::vector GetKnownSubscriptions() const override; ++ ++ void RunFirstRunLogic(PrefService* pref_service); ++ void MigrateLegacyPrefs(PrefService* pref_service); ++ ++ protected: ++ SEQUENCE_CHECKER(sequence_checker_); ++ void NotifySubscriptionChanged(const GURL& subscription_url); ++ void InstallLanguageBasedRecommendedSubscriptions(); ++ std::vector> ++ GetSubscriptionsThatMatchConfiguration() const; + -+MockElementHider::~MockElementHider() = default; ++ raw_ptr adblock_filtering_configuration_; ++ raw_ptr subscription_service_; ++ std::string language_; ++ std::vector known_subscriptions_; ++ base::WeakPtrFactory weak_ptr_factory_{this}; ++}; + +} // namespace adblock -diff --git a/components/adblock/content/browser/test/mock_element_hider.h b/components/adblock/content/browser/test/mock_element_hider.h ++ ++#endif // COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_IMPL_H_ +diff --git a/components/adblock/core/adblock_switches.cc b/components/adblock/core/adblock_switches.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/content/browser/test/mock_element_hider.h -@@ -0,0 +1,55 @@ ++++ b/components/adblock/core/adblock_switches.cc +@@ -0,0 +1,26 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -8157,49 +7522,20 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_TEST_MOCK_ELEMENT_HIDER_H_ -+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_TEST_MOCK_ELEMENT_HIDER_H_ -+ -+#include -+#include -+ -+#include "base/functional/callback.h" -+#include "components/adblock/content/browser/element_hider.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "url/gurl.h" -+ -+namespace adblock { ++#include "components/adblock/core/adblock_switches.h" + -+class MockElementHider : public ElementHider { -+ public: -+ MockElementHider(); -+ ~MockElementHider() override; -+ MOCK_METHOD( -+ void, -+ ApplyElementHidingEmulationOnPage, -+ (GURL url, -+ std::vector frame_hierarchy, -+ content::RenderFrameHost* render_frame_host, -+ SiteKey sitekey, -+ base::OnceCallback), -+ (override)); -+ -+ MOCK_METHOD(bool, IsElementTypeHideable, (ContentType), (override, const)); -+ -+ MOCK_METHOD(void, -+ HideBlockedElement, -+ (const GURL& url, content::RenderFrameHost* render_frame_host), -+ (override)); -+}; ++namespace adblock::switches { + -+} // namespace adblock ++const char kDisableAcceptableAds[] = "disable-aa"; ++const char kDisableAdblock[] = "disable-adblock"; ++const char kDisableEyeoFiltering[] = "disable-eyeo-filtering"; + -+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_TEST_MOCK_ELEMENT_HIDER_H_ -diff --git a/components/adblock/content/browser/test/mock_frame_hierarchy_builder.cc b/components/adblock/content/browser/test/mock_frame_hierarchy_builder.cc ++} // namespace adblock::switches +diff --git a/components/adblock/core/adblock_switches.h b/components/adblock/core/adblock_switches.h new file mode 100644 --- /dev/null -+++ b/components/adblock/content/browser/test/mock_frame_hierarchy_builder.cc -@@ -0,0 +1,26 @@ ++++ b/components/adblock/core/adblock_switches.h +@@ -0,0 +1,29 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -8217,20 +7553,23 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/content/browser/test/mock_frame_hierarchy_builder.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_ADBLOCK_SWITCHES_H_ ++#define COMPONENTS_ADBLOCK_CORE_ADBLOCK_SWITCHES_H_ + -+namespace adblock { ++namespace adblock::switches { + -+MockFrameHierarchyBuilder::MockFrameHierarchyBuilder() = default; ++extern const char kDisableAcceptableAds[]; ++extern const char kDisableAdblock[]; ++extern const char kDisableEyeoFiltering[]; + -+MockFrameHierarchyBuilder::~MockFrameHierarchyBuilder() = default; ++} // namespace adblock::switches + -+} // namespace adblock -diff --git a/components/adblock/content/browser/test/mock_frame_hierarchy_builder.h b/components/adblock/content/browser/test/mock_frame_hierarchy_builder.h ++#endif // COMPONENTS_ADBLOCK_CORE_ADBLOCK_SWITCHES_H_ +diff --git a/components/adblock/core/adblock_telemetry_service.cc b/components/adblock/core/adblock_telemetry_service.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/content/browser/test/mock_frame_hierarchy_builder.h -@@ -0,0 +1,49 @@ ++++ b/components/adblock/core/adblock_telemetry_service.cc +@@ -0,0 +1,258 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -8248,674 +7587,252 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_TEST_MOCK_FRAME_HIERARCHY_BUILDER_H_ -+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_TEST_MOCK_FRAME_HIERARCHY_BUILDER_H_ -+ -+#include "components/adblock/content/browser/frame_hierarchy_builder.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "url/gurl.h" ++#include "components/adblock/core/adblock_telemetry_service.h" + -+namespace adblock { ++#include + -+class MockFrameHierarchyBuilder -+ : public testing::NiceMock { -+ public: -+ MockFrameHierarchyBuilder(); -+ ~MockFrameHierarchyBuilder() override; -+ -+ MOCK_METHOD(content::RenderFrameHost*, -+ FindRenderFrameHost, -+ (content::GlobalRenderFrameHostId), -+ (const, override)); -+ MOCK_METHOD(std::vector, -+ BuildFrameHierarchy, -+ (content::RenderFrameHost*), -+ (const, override)); -+ MOCK_METHOD(GURL, -+ FindUrlForFrame, -+ (content::RenderFrameHost*, content::WebContents*), -+ (const, override)); -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_TEST_MOCK_FRAME_HIERARCHY_BUILDER_H_ -diff --git a/components/adblock/content/browser/test/mock_resource_classification_runner.cc b/components/adblock/content/browser/test/mock_resource_classification_runner.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/content/browser/test/mock_resource_classification_runner.cc -@@ -0,0 +1,49 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/content/browser/test/mock_resource_classification_runner.h" -+#include "gtest/gtest.h" -+ -+namespace adblock { -+ -+MockResourceClassificationRunner::MockResourceClassificationRunner() = default; -+MockResourceClassificationRunner::~MockResourceClassificationRunner() = default; -+ -+void MockResourceClassificationRunner::AddObserver( -+ ResourceClassificationRunner::Observer* observer) { -+ observers_.AddObserver(observer); -+} -+ -+void MockResourceClassificationRunner::RemoveObserver( -+ ResourceClassificationRunner::Observer* observer) { -+ observers_.RemoveObserver(observer); -+} -+ -+void MockResourceClassificationRunner::NotifyAdMatched( -+ const GURL& url, -+ FilterMatchResult result, -+ const std::vector& parent_frame_urls, -+ ContentType content_type, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription) { -+ for (auto& observer : observers_) { -+ observer.OnAdMatched(url, result, parent_frame_urls, content_type, -+ render_frame_host, subscription, ""); -+ } -+} -+ -+} // namespace adblock -diff --git a/components/adblock/content/browser/test/mock_resource_classification_runner.h b/components/adblock/content/browser/test/mock_resource_classification_runner.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/content/browser/test/mock_resource_classification_runner.h -@@ -0,0 +1,104 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CONTENT_BROWSER_TEST_MOCK_RESOURCE_CLASSIFICATION_RUNNER_H_ -+#define COMPONENTS_ADBLOCK_CONTENT_BROWSER_TEST_MOCK_RESOURCE_CLASSIFICATION_RUNNER_H_ -+ -+#include "components/adblock/content/browser/resource_classification_runner.h" -+#include "content/public/browser/render_frame_host.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+class MockResourceClassificationRunner : public ResourceClassificationRunner { -+ public: -+ MockResourceClassificationRunner(); -+ ~MockResourceClassificationRunner() override; -+ -+ void AddObserver(ResourceClassificationRunner::Observer*) override; -+ void RemoveObserver(ResourceClassificationRunner::Observer*) override; -+ void NotifyAdMatched(const GURL& url, -+ FilterMatchResult result, -+ const std::vector& parent_frame_urls, -+ ContentType content_type, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription); -+ -+ MOCK_METHOD(FilterMatchResult, -+ ShouldBlockPopup, -+ (const SubscriptionService::Snapshot&, -+ const GURL&, -+ content::RenderFrameHost*), -+ (override)); -+ -+ MOCK_METHOD(void, -+ CheckPopupFilterMatch, -+ (SubscriptionService::Snapshot, -+ const GURL&, -+ content::GlobalRenderFrameHostId, -+ CheckFilterMatchCallback), -+ (override)); -+ -+ MOCK_METHOD(void, -+ CheckRequestFilterMatch, -+ (const SubscriptionService::Snapshot, -+ const GURL&, -+ ContentType, -+ content::GlobalRenderFrameHostId, -+ CheckFilterMatchCallback), -+ (override)); -+ -+ MOCK_METHOD(void, -+ CheckRequestFilterMatchForWebSocket, -+ (const SubscriptionService::Snapshot, -+ const GURL&, -+ content::GlobalRenderFrameHostId, -+ CheckFilterMatchCallback), -+ (override)); -+ -+ MOCK_METHOD(void, -+ CheckDocumentAllowlisted, -+ (SubscriptionService::Snapshot, -+ const GURL& request_url, -+ content::GlobalRenderFrameHostId render_frame_host_id), -+ (override)); -+ -+ MOCK_METHOD(void, -+ CheckResponseFilterMatch, -+ (const SubscriptionService::Snapshot, -+ const GURL&, -+ ContentType, -+ content::GlobalRenderFrameHostId, -+ const scoped_refptr&, -+ CheckFilterMatchCallback), -+ (override)); -+ -+ MOCK_METHOD(void, -+ CheckRewriteFilterMatch, -+ (const SubscriptionService::Snapshot, -+ const GURL&, -+ content::GlobalRenderFrameHostId, -+ base::OnceCallback&)>), -+ (override)); -+ -+ base::ObserverList observers_; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CONTENT_BROWSER_TEST_MOCK_RESOURCE_CLASSIFICATION_RUNNER_H_ -diff --git a/components/adblock/content/browser/test/resource_classification_runner_impl_test.cc b/components/adblock/content/browser/test/resource_classification_runner_impl_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/content/browser/test/resource_classification_runner_impl_test.cc -@@ -0,0 +1,463 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/content/browser/resource_classification_runner_impl.h" -+ -+#include -+#include -+#include -+ -+#include "base/functional/callback_forward.h" -+#include "base/test/bind.h" -+#include "base/test/mock_callback.h" -+#include "components/adblock/content/browser/frame_opener_info.h" -+#include "components/adblock/content/browser/test/mock_frame_hierarchy_builder.h" -+#include "components/adblock/core/classifier/test/mock_resource_classifier.h" -+#include "components/adblock/core/common/sitekey.h" -+#include "components/adblock/core/subscription/test/mock_subscription_collection.h" -+#include "components/adblock/core/test/mock_sitekey_storage.h" -+#include "content/public/test/browser_task_environment.h" -+#include "content/public/test/mock_render_process_host.h" -+#include "content/public/test/test_renderer_host.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+#include "third_party/blink/public/mojom/loader/resource_load_info.mojom-shared.h" ++#include "base/barrier_callback.h" ++#include "base/functional/bind.h" ++#include "base/memory/weak_ptr.h" ++#include "base/strings/string_number_conversions.h" ++#include "base/strings/string_util.h" ++#include "base/strings/stringprintf.h" ++#include "base/strings/utf_string_conversions.h" ++#include "base/time/time.h" ++#include "base/timer/timer.h" ++#include "components/adblock/core/common/adblock_prefs.h" ++#include "components/prefs/pref_service.h" ++#include "net/base/load_flags.h" ++#include "services/network/public/cpp/resource_request.h" ++#include "services/network/public/cpp/simple_url_loader.h" ++#include "services/network/public/mojom/url_response_head.mojom.h" + +namespace adblock { + -+using testing::_; -+using testing::Return; -+using Decision = ResourceClassifier::ClassificationResult::Decision; -+ +namespace { -+class MockObserver : public ResourceClassificationRunner::Observer { -+ public: -+ MOCK_METHOD(void, -+ OnAdMatched, -+ (const GURL& url, -+ FilterMatchResult match_result, -+ const std::vector& parent_frame_urls, -+ ContentType content_type, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name), -+ (override)); -+ MOCK_METHOD(void, -+ OnPageAllowed, -+ (const GURL& url, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name), -+ (override)); -+ MOCK_METHOD(void, -+ OnPopupMatched, -+ (const GURL& url, -+ FilterMatchResult match_result, -+ const GURL& opener_url, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name), -+ (override)); -+}; ++ ++const char kDataType[] = "application/json"; ++net::NetworkTrafficAnnotationTag kTrafficAnnotation = ++ net::DefineNetworkTrafficAnnotation("adblock_telemetry_request", R"( ++ semantics { ++ sender: "AdblockTelemetryService" ++ description: ++ "Messages sent to telemetry.eyeo.com to report usage statistics." ++ "Contain no user-identifiable data." ++ trigger: ++ "Periodic, several times a day." ++ data: ++ "Subject to change: " ++ "Dates of first ping, last ping and previous-to-last ping. " ++ "A non-persistent, unique ID that disambiguates pings made in the " ++ "same day. " ++ "Application name and version (ex. Chromium 86.0.4240.183). " ++ "Platform name and version (ex. Windows 10). " ++ "Whether Acceptable Ads are in use (yes/no)." ++ destination: WEBSITE ++ } ++ policy { ++ cookies_allowed: NO ++ setting: ++ "Enabled or disabled via 'Ad blocking' setting." ++ policy_exception_justification: ++ "Parent setting may be controlled by policy" ++ } ++ })"); + +} // namespace + -+class AdblockResourceClassificationRunnerImplTest -+ : public content::RenderViewHostTestHarness { ++// Represents an ongoing chain of requests relevant to a Topic. ++// A Topic is and endpoint on the Telemetry server that expects messages ++// about a domain of activity, ex. usage of Acceptable Ads or frequency of ++// filter "hits" per filter list. The browser may report on multiple topics. ++// Messages are sent periodically. The interval of communication and the ++// content of the messages is provided by a TopicProvider. ++class AdblockTelemetryService::Conversation { + public: -+ void SetUp() override { -+ RenderViewHostTestHarness::SetUp(); -+ std::unique_ptr mock_frame_hierarchy_builder = -+ std::make_unique(); -+ mock_frame_hierarchy_builder_ = mock_frame_hierarchy_builder.get(); -+ mock_snapshot_ = std::make_unique(); -+ mock_snapshot_->push_back(std::make_unique()); -+ mock_resource_classifier_ = base::MakeRefCounted(); -+ classification_runner_ = std::make_unique( -+ mock_resource_classifier_, std::move(mock_frame_hierarchy_builder), -+ &mock_sitekey_storage_); -+ classification_runner_->AddObserver(&mock_observer_); -+ } ++ Conversation( ++ std::unique_ptr topic_provider, ++ scoped_refptr url_loader_factory) ++ : topic_provider_(std::move(topic_provider)), ++ url_loader_factory_(url_loader_factory) {} + -+ void TearDown() override { -+ // Avoid dangling pointers during destruction. -+ mock_frame_hierarchy_builder_ = nullptr; -+ classification_runner_->RemoveObserver(&mock_observer_); -+ classification_runner_.reset(); -+ RenderViewHostTestHarness::TearDown(); ++ bool IsRequestDue() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ const auto due_time = topic_provider_->GetTimeOfNextRequest(); ++ if (due_time > base::Time::Now()) { ++ VLOG(1) << "[eyeo] Telemetry request for " ++ << topic_provider_->GetEndpointURL() ++ << " not due yet, should run at " << due_time; ++ return false; ++ } ++ if (IsRequestInFlight()) { ++ VLOG(1) << "[eyeo] Telemetry request for " ++ << topic_provider_->GetEndpointURL() << " already in-flight"; ++ return false; ++ } ++ VLOG(1) << "[eyeo] Telemetry request for " ++ << topic_provider_->GetEndpointURL() << " is due"; ++ return true; + } + -+ MockSubscriptionCollection& mock_subscription_collection() { -+ return *static_cast( -+ mock_snapshot_->front().get()); ++ void StartRequest() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ VLOG(1) << "[eyeo] Telemetry request for " ++ << topic_provider_->GetEndpointURL() << " starting now"; ++ topic_provider_->GetPayload(base::BindOnce(&Conversation::MakeRequest, ++ weak_ptr_factory_.GetWeakPtr())); + } + -+ void SiteKeyWillBePresent(const std::vector& frame_hierarchy, -+ SiteKey sitekey) { -+ EXPECT_CALL(mock_sitekey_storage_, FindSiteKeyForAnyUrl(frame_hierarchy)) -+ .WillRepeatedly( -+ Return(std::make_pair(frame_hierarchy.front(), sitekey))); ++ void Stop() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ url_loader_.reset(); + } + -+ void FrameHierarchyWillBeBuilt() { -+ EXPECT_CALL(*mock_frame_hierarchy_builder_, BuildFrameHierarchy(main_rfh())) -+ .WillOnce(Return(kFrameHierarchy)); ++ const std::unique_ptr& GetTopicProvider() const { ++ return topic_provider_; + } + -+ void ClassifierReturnsRequestClassification(GURL url, -+ ContentType content_type, -+ Decision decision) { -+ EXPECT_CALL( -+ *mock_resource_classifier_, -+ ClassifyRequest(_, url, kFrameHierarchy, content_type, kSitekey)) -+ .WillOnce(testing::Return(ResourceClassifier::ClassificationResult{ -+ decision, kSubscriptionUrl, kConfigurationName})); ++ private: ++ bool IsRequestInFlight() { ++ return url_loader_ != nullptr || weak_ptr_factory_.HasWeakPtrs(); + } + -+ void ClassifierReturnsPopupClassification(GURL popup_url, Decision decision) { -+ EXPECT_CALL(*mock_resource_classifier_, -+ ClassifyPopup(_, popup_url, _, kSitekey)) -+ .WillOnce(testing::Return(ResourceClassifier::ClassificationResult{ -+ decision, kSubscriptionUrl, kConfigurationName})); -+ } ++ void MakeRequest(std::string payload) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ auto request = std::make_unique(); ++ request->url = topic_provider_->GetEndpointURL(); ++ VLOG(1) << "[eyeo] Sending request to: " << request->url; ++ request->method = net::HttpRequestHeaders::kPostMethod; ++ // The server expects authorization via a bearer token. The token may be ++ // empty in testing builds. ++ const auto auth_token = topic_provider_->GetAuthToken(); ++ if (!auth_token.empty()) { ++ request->headers.SetHeader(net::HttpRequestHeaders::kAuthorization, ++ "Bearer " + auth_token); ++ } ++ // Notify the server we're expecting a JSON response. ++ request->headers.SetHeader(net::HttpRequestHeaders::kAccept, kDataType); ++ // Disallow using cache - identical requests should be physically sent to ++ // the server. ++ request->load_flags = net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE; ++ // Omitting credentials prevents cookies from being sent. The server does ++ // not expect or parse cookies, but we want to be on the safe side, ++ // privacy-wise. ++ request->credentials_mode = network::mojom::CredentialsMode::kOmit; + -+ void ClassifierReturnsResponseClassification( -+ GURL url, -+ const scoped_refptr& headers, -+ Decision decision) { -+ EXPECT_CALL(*mock_resource_classifier_, -+ ClassifyResponse(_, url, kFrameHierarchy, _, headers)) -+ .WillOnce(testing::Return(ResourceClassifier::ClassificationResult{ -+ decision, kSubscriptionUrl, kConfigurationName})); -+ } ++ // If any url_loader_ existed previously, it will be overwritten and its ++ // request will be cancelled. ++ url_loader_ = network::SimpleURLLoader::Create(std::move(request), ++ kTrafficAnnotation); ++ ++ VLOG(2) << "[eyeo] Payload: " << payload; ++ url_loader_->AttachStringForUpload(payload, kDataType); ++ // The Telemetry server responds with a JSON that contains a description of ++ // any potential error. We want to parse this JSON if possible, we're not ++ // content with just an HTTP error code. Process the response content even ++ // if the code is not 200. ++ url_loader_->SetAllowHttpErrorResults(true); + -+ void AdMatchedWillBeNotified(GURL url, -+ ContentType content_type, -+ FilterMatchResult result) { -+ EXPECT_CALL(mock_observer_, -+ OnAdMatched(url, result, kFrameHierarchy, content_type, -+ main_rfh(), kSubscriptionUrl, kConfigurationName)); ++ url_loader_->DownloadToString( ++ url_loader_factory_.get(), ++ base::BindOnce(&Conversation::OnResponseArrived, ++ base::Unretained(this)), ++ network::SimpleURLLoader::kMaxBoundedStringDownloadSize - 1); + } + -+ void PopupMatchedWillBeNotified(GURL popup_url, FilterMatchResult result) { -+ EXPECT_CALL( -+ mock_observer_, -+ OnPopupMatched(popup_url, result, kFrameHierarchy.front(), main_rfh(), -+ kSubscriptionUrl, kConfigurationName)); ++ void OnResponseArrived(std::unique_ptr server_response) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ topic_provider_->ParseResponse(std::move(server_response)); ++ url_loader_.reset(); + } + -+ MockObserver mock_observer_; -+ MockSitekeyStorage mock_sitekey_storage_; -+ raw_ptr mock_frame_hierarchy_builder_; -+ scoped_refptr mock_resource_classifier_; -+ std::unique_ptr classification_runner_; -+ std::unique_ptr mock_snapshot_; -+ -+ const GURL kUrl{"https://test.com/url.x"}; -+ const GURL kWebsocketUrl{"wss://test.com/url.x"}; -+ const std::vector kFrameHierarchy{GURL{"https://test.com/"}}; -+ const SiteKey kSitekey{"key"}; -+ const GURL kSubscriptionUrl{"https://easylist.com/list.txt"}; -+ const std::string kConfigurationName{"test_configuration"}; ++ SEQUENCE_CHECKER(sequence_checker_); ++ std::unique_ptr topic_provider_; ++ scoped_refptr url_loader_factory_; ++ std::unique_ptr url_loader_; ++ base::WeakPtrFactory weak_ptr_factory_{this}; +}; + -+TEST_F(AdblockResourceClassificationRunnerImplTest, CheckGurlSpecNormalizes) { -+ // added as a check that gurl keeps normalizing url through spec. -+ EXPECT_EQ("http://hostname.com/", GURL("http:HOSTNAME.com").spec()); -+ EXPECT_EQ("http://hostname.com/", GURL("http:HOSTNAME.com:80").spec()); -+} -+ -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckRequestFilterMatch_ValidParameters) { -+ FrameHierarchyWillBeBuilt(); -+ SiteKeyWillBePresent(kFrameHierarchy, kSitekey); -+ -+ ClassifierReturnsRequestClassification(kUrl, ContentType::Image, -+ Decision::Blocked); -+ -+ // The final callback will be called with kBlockRule result. -+ base::MockCallback callback; -+ EXPECT_CALL(callback, Run(FilterMatchResult::kBlockRule)); -+ -+ AdMatchedWillBeNotified(kUrl, ContentType::Image, -+ FilterMatchResult::kBlockRule); -+ -+ classification_runner_->CheckRequestFilterMatch( -+ std::move(*mock_snapshot_), kUrl, ContentType::Image, -+ main_rfh()->GetGlobalId(), callback.Get()); -+ -+ task_environment()->RunUntilIdle(); -+} -+ -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckRequestFilterMatchForWebSocket_ValidParameters) { -+ // For WebSocket interception, we already have a RenderFrameHost found, so -+ // FrameHierarchyBuilder only has to assemble the frame hierarchy. -+ EXPECT_CALL(*mock_frame_hierarchy_builder_, BuildFrameHierarchy(main_rfh())) -+ .WillOnce(Return(kFrameHierarchy)); -+ -+ SiteKeyWillBePresent(kFrameHierarchy, kSitekey); -+ -+ ClassifierReturnsRequestClassification(kWebsocketUrl, ContentType::Websocket, -+ Decision::Blocked); -+ -+ // The final callback will be called with kBlockRule result. -+ base::MockCallback callback; -+ EXPECT_CALL(callback, Run(FilterMatchResult::kBlockRule)); -+ -+ AdMatchedWillBeNotified(kWebsocketUrl, ContentType::Websocket, -+ FilterMatchResult::kBlockRule); -+ -+ classification_runner_->CheckRequestFilterMatchForWebSocket( -+ std::move(*mock_snapshot_), kWebsocketUrl, main_rfh()->GetGlobalId(), -+ callback.Get()); -+ task_environment()->RunUntilIdle(); -+} -+ -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckRequestFilterMatch_RenderFrameHostNotFound) { -+ base::MockCallback callback; -+ EXPECT_CALL(callback, Run(FilterMatchResult::kNoRule)); -+ -+ classification_runner_->CheckRequestFilterMatch( -+ std::move(*mock_snapshot_), kUrl, ContentType::Image, -+ content::GlobalRenderFrameHostId(MSG_ROUTING_NONE, MSG_ROUTING_NONE), -+ callback.Get()); -+ -+ task_environment()->RunUntilIdle(); -+} -+ -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckRequestFilterMatch_AllowlistedMainframeInOneConfig) { -+ EXPECT_CALL(mock_observer_, OnPageAllowed(kUrl, main_rfh(), kSubscriptionUrl, -+ kConfigurationName)) -+ .Times(0); -+ -+ // In default config page is not allowlisted... -+ EXPECT_CALL(mock_subscription_collection(), -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ std::vector(), SiteKey())) -+ .WillOnce(testing::Return(absl::nullopt)); -+ -+ // ...so the other config is not even asked -+ auto collection = std::make_unique(); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ std::vector(), SiteKey())) -+ .Times(0); -+ mock_snapshot_->push_back(std::move(collection)); -+ -+ classification_runner_->CheckDocumentAllowlisted( -+ std::move(*mock_snapshot_), kUrl, main_rfh()->GetGlobalId()); -+ -+ task_environment()->RunUntilIdle(); -+} -+ -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckRequestFilterMatch_AllowlistedMainframeInTwoConfigs) { -+ std::string other_configuration = "other"; -+ EXPECT_CALL(mock_observer_, OnPageAllowed(kUrl, main_rfh(), kSubscriptionUrl, -+ other_configuration)); -+ -+ EXPECT_CALL(mock_subscription_collection(), -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ std::vector(), SiteKey())) -+ .WillOnce(testing::Return(absl::optional{kSubscriptionUrl})); -+ -+ auto collection = std::make_unique(); -+ EXPECT_CALL(*collection, -+ FindBySpecialFilter(SpecialFilterType::Document, kUrl, -+ std::vector(), SiteKey())) -+ .WillOnce(testing::Return(absl::optional{kSubscriptionUrl})); -+ EXPECT_CALL(*collection, GetFilteringConfigurationName()) -+ .WillRepeatedly(testing::ReturnRef(other_configuration)); -+ EXPECT_CALL(mock_subscription_collection(), GetFilteringConfigurationName()) -+ .WillRepeatedly(testing::ReturnRef(kConfigurationName)); -+ mock_snapshot_->push_back(std::move(collection)); -+ -+ classification_runner_->CheckDocumentAllowlisted( -+ std::move(*mock_snapshot_), kUrl, main_rfh()->GetGlobalId()); -+ -+ task_environment()->RunUntilIdle(); ++AdblockTelemetryService::AdblockTelemetryService( ++ FilteringConfiguration* filtering_configuration, ++ scoped_refptr url_loader_factory, ++ base::TimeDelta initial_delay, ++ base::TimeDelta check_interval) ++ : adblock_filtering_configuration_(filtering_configuration), ++ url_loader_factory_(url_loader_factory), ++ initial_delay_(initial_delay), ++ check_interval_(check_interval) { ++ DCHECK(adblock_filtering_configuration_); ++ adblock_filtering_configuration_->AddObserver(this); +} + -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckRequestFilterMatch_RenderFrameHostDiesBeforeElementHiding) { -+ FrameHierarchyWillBeBuilt(); -+ SiteKeyWillBePresent(kFrameHierarchy, kSitekey); -+ -+ ClassifierReturnsRequestClassification(kUrl, ContentType::Image, -+ Decision::Blocked); -+ -+ // The final callback will be called with kBlockRule result. -+ base::MockCallback callback; -+ EXPECT_CALL(callback, Run(FilterMatchResult::kBlockRule)); -+ -+ classification_runner_->CheckRequestFilterMatch( -+ std::move(*mock_snapshot_), kUrl, ContentType::Image, -+ -+ main_rfh()->GetGlobalId(), callback.Get()); -+ -+ // Before running the thread loop, destroy the RFH. -+ DeleteContents(); -+ // Observer will be notified with null RFH. -+ EXPECT_CALL(mock_observer_, -+ OnAdMatched(kUrl, FilterMatchResult::kBlockRule, kFrameHierarchy, -+ ContentType::Image, nullptr, kSubscriptionUrl, -+ kConfigurationName)) -+ .Times(0); -+ -+ task_environment()->RunUntilIdle(); ++AdblockTelemetryService::~AdblockTelemetryService() { ++ DCHECK(adblock_filtering_configuration_); ++ adblock_filtering_configuration_->RemoveObserver(this); +} + -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckResponseFilterMatch_NoRenderFrameHost) { -+ base::MockCallback callback; -+ -+ EXPECT_CALL(callback, Run(FilterMatchResult::kNoRule)); -+ -+ classification_runner_->CheckResponseFilterMatch( -+ std::move(*mock_snapshot_), kUrl, ContentType::Image, -+ content::GlobalRenderFrameHostId(MSG_ROUTING_NONE, MSG_ROUTING_NONE), {}, -+ callback.Get()); -+ -+ task_environment()->RunUntilIdle(); ++void AdblockTelemetryService::AddTopicProvider( ++ std::unique_ptr topic_provider) { ++ ongoing_conversations_.push_back(std::make_unique( ++ std::move(topic_provider), url_loader_factory_)); +} + -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckResponseFilterMatch_ResponseFilterMatchResultBlocked) { -+ auto headers = net::HttpResponseHeaders::TryToCreate("whatever"); -+ ASSERT_TRUE(headers); -+ base::MockCallback callback; -+ -+ EXPECT_CALL(*mock_frame_hierarchy_builder_, -+ FindRenderFrameHost(main_rfh()->GetGlobalId())) -+ .WillOnce(testing::Return(main_rfh())); -+ EXPECT_CALL(*mock_frame_hierarchy_builder_, BuildFrameHierarchy(main_rfh())) -+ .WillOnce(Return(kFrameHierarchy)); -+ ClassifierReturnsResponseClassification(kUrl, headers, Decision::Blocked); -+ -+ classification_runner_->CheckResponseFilterMatch( -+ std::move(*mock_snapshot_), kUrl, ContentType::Image, -+ main_rfh()->GetGlobalId(), headers, callback.Get()); -+ -+ EXPECT_CALL(callback, Run(FilterMatchResult::kBlockRule)); -+ EXPECT_CALL(mock_observer_, -+ OnAdMatched(kUrl, FilterMatchResult::kBlockRule, kFrameHierarchy, -+ _, _, kSubscriptionUrl, kConfigurationName)); -+ task_environment()->RunUntilIdle(); ++void AdblockTelemetryService::Start() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ OnEnabledStateChangedInternal(); +} + -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckResponseFilterMatch_ResponseFilterMatchResultAllowed) { -+ auto headers = net::HttpResponseHeaders::TryToCreate("whatever"); -+ ASSERT_TRUE(headers); -+ base::MockCallback callback; -+ -+ EXPECT_CALL(*mock_frame_hierarchy_builder_, -+ FindRenderFrameHost(main_rfh()->GetGlobalId())) -+ .WillOnce(testing::Return(main_rfh())); -+ EXPECT_CALL(*mock_frame_hierarchy_builder_, BuildFrameHierarchy(main_rfh())) -+ .WillOnce(Return(kFrameHierarchy)); -+ ClassifierReturnsResponseClassification(kUrl, headers, Decision::Allowed); -+ -+ classification_runner_->CheckResponseFilterMatch( -+ std::move(*mock_snapshot_), kUrl, ContentType::Image, -+ main_rfh()->GetGlobalId(), headers, callback.Get()); -+ -+ EXPECT_CALL(callback, Run(FilterMatchResult::kAllowRule)); -+ EXPECT_CALL(mock_observer_, -+ OnAdMatched(kUrl, FilterMatchResult::kAllowRule, kFrameHierarchy, -+ _, _, kSubscriptionUrl, kConfigurationName)); -+ task_environment()->RunUntilIdle(); ++void AdblockTelemetryService::OnEnabledStateChanged(FilteringConfiguration*) { ++ OnEnabledStateChangedInternal(); +} + -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckResponseFilterMatch_ResponseFilterMatchResultIgnored) { -+ auto headers = net::HttpResponseHeaders::TryToCreate("whatever"); -+ ASSERT_TRUE(headers); -+ base::MockCallback callback; -+ -+ EXPECT_CALL(*mock_frame_hierarchy_builder_, -+ FindRenderFrameHost(main_rfh()->GetGlobalId())) -+ .WillOnce(testing::Return(main_rfh())); -+ EXPECT_CALL(*mock_frame_hierarchy_builder_, BuildFrameHierarchy(main_rfh())) -+ .WillOnce(Return(kFrameHierarchy)); -+ ClassifierReturnsResponseClassification(kUrl, headers, Decision::Ignored); -+ -+ classification_runner_->CheckResponseFilterMatch( -+ std::move(*mock_snapshot_), kUrl, ContentType::Image, -+ main_rfh()->GetGlobalId(), headers, callback.Get()); -+ -+ EXPECT_CALL(callback, Run(FilterMatchResult::kNoRule)); -+ task_environment()->RunUntilIdle(); ++void AdblockTelemetryService::GetTopicProvidersDebugInfo( ++ TopicProvidersDebugInfoCallback service_callback) const { ++ const auto barrier_callback = base::BarrierCallback( ++ ongoing_conversations_.size(), std::move(service_callback)); ++ for (const auto& conversation : ongoing_conversations_) { ++ conversation->GetTopicProvider()->FetchDebugInfo(barrier_callback); ++ } +} + -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckPopupFilterMatch_ValidParameters) { -+ // Set opener pointing to valid RFH -+ adblock::FrameOpenerInfo::CreateForWebContents(web_contents()); -+ auto* info = adblock::FrameOpenerInfo::FromWebContents(web_contents()); -+ info->SetOpener(main_rfh()->GetGlobalId()); -+ -+ FrameHierarchyWillBeBuilt(); -+ SiteKeyWillBePresent(kFrameHierarchy, kSitekey); -+ -+ ClassifierReturnsPopupClassification(kUrl, Decision::Blocked); -+ -+ // The final callback will be called with kBlockRule result. -+ base::MockCallback callback; -+ EXPECT_CALL(callback, Run(FilterMatchResult::kBlockRule)); -+ -+ PopupMatchedWillBeNotified(kUrl, FilterMatchResult::kBlockRule); -+ -+ classification_runner_->CheckPopupFilterMatch(std::move(*mock_snapshot_), -+ kUrl, main_rfh()->GetGlobalId(), -+ callback.Get()); -+ -+ task_environment()->RunUntilIdle(); ++void AdblockTelemetryService::OnEnabledStateChangedInternal() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ if (adblock_filtering_configuration_->IsEnabled() && !timer_.IsRunning()) { ++ VLOG(1) << "[eyeo] Starting periodic Telemetry requests"; ++ timer_.Start(FROM_HERE, initial_delay_, ++ base::BindRepeating(&AdblockTelemetryService::RunPeriodicCheck, ++ base::Unretained(this))); ++ } else if (!adblock_filtering_configuration_->IsEnabled() && ++ timer_.IsRunning()) { ++ VLOG(1) << "[eyeo] Stopping periodic Telemetry requests"; ++ Shutdown(); ++ } +} + -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckPopupFilterMatch_RenderFrameHostNotFound) { -+ base::MockCallback callback; -+ EXPECT_CALL(callback, Run(FilterMatchResult::kNoRule)); -+ -+ classification_runner_->CheckPopupFilterMatch( -+ std::move(*mock_snapshot_), kUrl, -+ content::GlobalRenderFrameHostId(MSG_ROUTING_NONE, MSG_ROUTING_NONE), -+ callback.Get()); -+ -+ task_environment()->RunUntilIdle(); ++void AdblockTelemetryService::RunPeriodicCheck() { ++ for (auto& conversation : ongoing_conversations_) { ++ if (conversation->IsRequestDue()) { ++ conversation->StartRequest(); ++ } ++ } ++ timer_.Start(FROM_HERE, check_interval_, ++ base::BindRepeating(&AdblockTelemetryService::RunPeriodicCheck, ++ base::Unretained(this))); +} + -+TEST_F(AdblockResourceClassificationRunnerImplTest, -+ CheckPopupFilterMatch_RenderFrameHostNotFoundForOpener) { -+ // Set opener pointing to invalid RFH -+ adblock::FrameOpenerInfo::CreateForWebContents(web_contents()); -+ -+ base::MockCallback callback; -+ EXPECT_CALL(callback, Run(FilterMatchResult::kNoRule)); -+ -+ classification_runner_->CheckPopupFilterMatch(std::move(*mock_snapshot_), -+ kUrl, main_rfh()->GetGlobalId(), -+ callback.Get()); -+ -+ task_environment()->RunUntilIdle(); ++void AdblockTelemetryService::Shutdown() { ++ timer_.Stop(); ++ for (auto& conversation : ongoing_conversations_) { ++ conversation->Stop(); ++ } +} + +} // namespace adblock -diff --git a/components/adblock/content/browser/test/session_stats_impl_test.cc b/components/adblock/content/browser/test/session_stats_impl_test.cc +diff --git a/components/adblock/core/adblock_telemetry_service.h b/components/adblock/core/adblock_telemetry_service.h new file mode 100644 --- /dev/null -+++ b/components/adblock/content/browser/test/session_stats_impl_test.cc -@@ -0,0 +1,74 @@ ++++ b/components/adblock/core/adblock_telemetry_service.h +@@ -0,0 +1,120 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -8933,249 +7850,197 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/content/browser/session_stats_impl.h" -+ -+#include "base/test/mock_callback.h" -+#include "components/adblock/content/browser/test/mock_resource_classification_runner.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "content/public/test/browser_task_environment.h" -+#include "content/public/test/test_renderer_host.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { ++#ifndef COMPONENTS_ADBLOCK_CORE_ADBLOCK_TELEMETRY_SERVICE_H_ ++#define COMPONENTS_ADBLOCK_CORE_ADBLOCK_TELEMETRY_SERVICE_H_ + -+namespace { ++#include ++#include ++#include + -+constexpr char kAllowedTestSub[] = "http://allowed.sub.com/"; -+constexpr char kBlockedTestSub[] = "http://blocked.sub.com/"; ++#include "base/functional/callback_forward.h" ++#include "base/memory/raw_ptr.h" ++#include "base/sequence_checker.h" ++#include "base/time/time.h" ++#include "base/timer/timer.h" ++#include "components/adblock/core/configuration/filtering_configuration.h" ++#include "components/adblock/core/subscription/subscription_service.h" ++#include "components/keyed_service/core/keyed_service.h" ++#include "services/network/public/cpp/shared_url_loader_factory.h" ++#include "url/gurl.h" + -+} // namespace ++namespace network { ++class SimpleURLLoader; ++} // namespace network + -+class AdblockSessionStatsTest : public testing::Test { ++namespace adblock { ++/** ++ * @brief Sends periodic pings to eyeo in order to count active users. Executed ++ * from Browser process UI main thread. ++ */ ++class AdblockTelemetryService : public KeyedService, ++ public FilteringConfiguration::Observer { + public: -+ AdblockSessionStatsTest() = default; -+ -+ void SetUp() override { -+ session_stats_ = std::make_unique(&classfier_); -+ } ++ // Provides data and behavior relevant for a Telemetry "topic". A topic could ++ // be "counting users" or "reporting filter list hits" for example. ++ class TopicProvider { ++ public: ++ using PayloadCallback = base::OnceCallback; ++ using DebugInfoCallback = base::OnceCallback; ++ virtual ~TopicProvider() = default; ++ // Endpoint URL on the Telemetry server onto which requests should be sent. ++ virtual GURL GetEndpointURL() const = 0; ++ // Authorization bearer token for the endpoint defined by GetEndpointURL(). ++ virtual std::string GetAuthToken() const = 0; ++ // Data uploaded with the request, should be valid for the schema ++ // present on the server. Async to allow querying asynchronous data sources. ++ virtual void GetPayload(PayloadCallback callback) const = 0; ++ // Returns the desired time when AdblockTelemetryService should make the ++ // next network request. ++ virtual base::Time GetTimeOfNextRequest() const = 0; ++ // Parses the response returned by the Telemetry server. |response_content| ++ // may be null. Implementation is free to implement a "retry" in case of ++ // response errors via GetTimeToNextRequest(). ++ virtual void ParseResponse( ++ std::unique_ptr response_content) = 0; ++ // Gets debugging info to be logged on chrome://adblock-internals. Do not ++ // put any secrets here (tokens, api keys). Asynchronous to allow reusing ++ // the async logic of GetPayload, if needed. ++ virtual void FetchDebugInfo(DebugInfoCallback callback) const = 0; ++ }; ++ AdblockTelemetryService( ++ FilteringConfiguration* filtering_configuration, ++ scoped_refptr url_loader_factory, ++ base::TimeDelta initial_delay, ++ base::TimeDelta check_interval); ++ ~AdblockTelemetryService() override; ++ using TopicProvidersDebugInfoCallback = ++ base::OnceCallback)>; + -+ MockResourceClassificationRunner classfier_; -+ std::unique_ptr session_stats_; -+}; ++ // Add all required topic providers before calling Start(). ++ void AddTopicProvider(std::unique_ptr topic_provider); + -+TEST_F(AdblockSessionStatsTest, StatsDataCollected) { -+ classfier_.NotifyAdMatched(GURL(), FilterMatchResult::kAllowRule, -+ std::vector(), ContentType::Subdocument, -+ nullptr, GURL{kAllowedTestSub}); ++ // Starts periodic Telemetry requests, provided ad-blocking is enabled. ++ // If ad blocking is disabled, the schedule will instead start when ++ // ad blocking becomes enabled. ++ void Start(); + -+ classfier_.NotifyAdMatched(GURL(), FilterMatchResult::kBlockRule, -+ std::vector(), ContentType::Subdocument, -+ nullptr, GURL{kBlockedTestSub}); ++ // KeyedService: ++ void Shutdown() override; + -+ auto allowed_result = session_stats_->GetSessionAllowedAdsCount(); -+ auto blocked_result = session_stats_->GetSessionBlockedAdsCount(); ++ // FilteringConfiguration::Observer ++ void OnEnabledStateChanged(FilteringConfiguration* config) override; + -+ EXPECT_EQ((std::map{{GURL(kAllowedTestSub), 1}}), allowed_result); -+ EXPECT_EQ((std::map{{GURL(kBlockedTestSub), 1}}), blocked_result); ++ // Collects debug information from all topic providers. Runs |callback| once ++ // all topic providers have provided their info. ++ void GetTopicProvidersDebugInfo( ++ TopicProvidersDebugInfoCallback callback) const; + -+ classfier_.NotifyAdMatched(GURL(), FilterMatchResult::kBlockRule, -+ std::vector(), ContentType::Subdocument, -+ nullptr, GURL{kBlockedTestSub}); ++ private: ++ void OnEnabledStateChangedInternal(); ++ void RunPeriodicCheck(); + -+ allowed_result = session_stats_->GetSessionAllowedAdsCount(); -+ blocked_result = session_stats_->GetSessionBlockedAdsCount(); ++ SEQUENCE_CHECKER(sequence_checker_); ++ raw_ptr adblock_filtering_configuration_; ++ scoped_refptr url_loader_factory_; ++ base::TimeDelta initial_delay_; ++ base::TimeDelta check_interval_; + -+ EXPECT_EQ((std::map{{GURL(kAllowedTestSub), 1}}), allowed_result); -+ EXPECT_EQ((std::map{{GURL(kBlockedTestSub), 2}}), blocked_result); -+} ++ class Conversation; ++ std::vector> ongoing_conversations_; ++ base::OneShotTimer timer_; ++}; + +} // namespace adblock -diff --git a/components/adblock/core/BUILD.gn b/components/adblock/core/BUILD.gn ++ ++#endif // COMPONENTS_ADBLOCK_CORE_ADBLOCK_TELEMETRY_SERVICE_H_ +diff --git a/components/adblock/core/classifier/BUILD.gn b/components/adblock/core/classifier/BUILD.gn new file mode 100644 --- /dev/null -+++ b/components/adblock/core/BUILD.gn -@@ -0,0 +1,175 @@ -+# ++++ b/components/adblock/core/classifier/BUILD.gn +@@ -0,0 +1,76 @@ +# This file is part of eyeo Chromium SDK, +# Copyright (C) 2006-present eyeo GmbH -+# +# eyeo Chromium SDK is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3 as +# published by the Free Software Foundation. -+# +# eyeo Chromium SDK is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. -+# +# You should have received a copy of the GNU General Public License +# along with eyeo Chromium SDK. If not, see . + -+import("//components/adblock/features.gni") -+import("//third_party/flatbuffers/flatbuffer.gni") ++source_set("classifier") { ++ sources = [ ++ "resource_classifier.cc", ++ "resource_classifier.h", ++ "resource_classifier_impl.cc", ++ "resource_classifier_impl.h", ++ ] + -+flatbuffer("schema") { -+ sources = [ "schema/filter_list_schema.fbs" ] ++ deps = [ "//components/adblock/core/common:utils" ] ++ ++ public_deps = [ ++ "//base", ++ "//components/adblock/core/common", ++ "//components/adblock/core/subscription:subscription", ++ "//net:net", ++ "//url:url", ++ ] +} + -+template("generate_sha256_header") { -+ output_prefix_ = "${target_gen_dir}/hash/${target_name}" -+ generated_files = [ -+ "${output_prefix_}.h", -+ "${output_prefix_}.cc", -+ ] -+ -+ # Generates .h and .cc files which contain the hashes of invoker.files_to_hash. -+ action("${target_name}_hash") { -+ # The script lives in /chrome but has no dependencies to the //chrome target. -+ # According to the script's author, it could be moved to /build but only if -+ # there's code *upstream* that needs it outside of /chrome. -+ script = "//chrome/tools/build/sha256_file.py" -+ outputs = generated_files -+ inputs = invoker.files_to_hash -+ -+ args = [ rebase_path(output_prefix_, root_build_dir) ] + -+ rebase_path(inputs, root_build_dir) -+ -+ deps = invoker.deps -+ } -+ -+ # Allows linking the generated .h and .cc files, is the main target of -+ # this template. -+ source_set("${target_name}") { -+ sources = generated_files -+ -+ deps = [ ":${target_name}_hash" ] -+ } -+} -+ -+generate_sha256_header("schema_hash") { -+ deps = [ ":schema" ] -+ -+ # Using the generated flatbuffer header instead of source .fbs file to: -+ # - avoid generating new schema hash if just a comment in the .fbs changes -+ # - generate a new schema hash if .fbs -> .h conversion changes unexpectedly -+ files_to_hash = [ "${target_gen_dir}/schema/filter_list_schema_generated.h" ] -+} -+ -+config("eyeo_telemetry_config") { -+ defines = [] -+ -+ if (eyeo_telemetry_server_url != "") { -+ # Explicitly setting Telemetry server URL, used for testing with a test -+ # server. -+ defines += [ "EYEO_TELEMETRY_SERVER_URL=\"$eyeo_telemetry_server_url\"" ] -+ } else { -+ # Implicitly setting production Telemetry server URL based on -+ # eyeo_telemetry_client_id (or a default client id as a fallback). -+ if (eyeo_telemetry_client_id != "") { -+ defines += [ "EYEO_TELEMETRY_CLIENT_ID=\"$eyeo_telemetry_client_id\"" ] -+ } else { -+ print("WARNING! gn arg eyeo_telemetry_client_id is not set. " + -+ "Users will not be counted correctly by eyeo.") -+ eyeo_telemetry_client_id = "eyeochromium" -+ } -+ eyeo_telemetry_server_url = -+ "https://${eyeo_telemetry_client_id}.telemetry.eyeo.com/" -+ defines += [ "EYEO_TELEMETRY_SERVER_URL=\"$eyeo_telemetry_server_url\"" ] -+ } -+ -+ if (eyeo_telemetry_activeping_auth_token != "") { -+ defines += [ "EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN=\"$eyeo_telemetry_activeping_auth_token\"" ] -+ } else { -+ print("WARNING! gn arg eyeo_telemetry_activeping_auth_token is not set. " + -+ "Users will not be counted correctly by eyeo.") -+ } -+} -+ -+source_set("core") { -+ output_name = "adblock_core" -+ sources = [ -+ "activeping_telemetry_topic_provider.cc", -+ "activeping_telemetry_topic_provider.h", -+ "adblock_controller.h", -+ "adblock_controller_impl.cc", -+ "adblock_controller_impl.h", -+ "adblock_switches.cc", -+ "adblock_switches.h", -+ "adblock_telemetry_service.cc", -+ "adblock_telemetry_service.h", -+ "features.cc", -+ "features.h", -+ "sitekey_storage.h", -+ "sitekey_storage_impl.cc", -+ "sitekey_storage_impl.h", ++source_set("test_support") { ++ testonly = true ++ sources = [ ++ "test/mock_resource_classifier.cc", ++ "test/mock_resource_classifier.h", + ] + + deps = [ -+ "//components/language/core/common", -+ "//third_party/flatbuffers", -+ ] -+ -+ public_deps = [ -+ "//components/adblock/core/classifier", -+ "//components/adblock/core/common", -+ "//components/adblock/core/common:utils", -+ "//components/adblock/core/configuration", -+ "//components/adblock/core/subscription", -+ "//components/keyed_service/core", -+ "//components/pref_registry", -+ "//components/prefs", -+ "//components/version_info", ++ ":classifier", ++ "//testing/gmock", ++ "//testing/gtest", + ] -+ -+ configs += [ ":eyeo_telemetry_config" ] +} + -+source_set("test_support") { ++source_set("unit_tests") { + testonly = true -+ sources = [ -+ "test/mock_adblock_controller.cc", -+ "test/mock_adblock_controller.h", -+ "test/mock_sitekey_storage.cc", -+ "test/mock_sitekey_storage.h", -+ ] ++ sources = [ "test/resource_classifier_impl_test.cc" ] + -+ public_deps = [ -+ ":core", ++ deps = [ ++ ":test_support", ++ "//components/adblock/core", + "//components/adblock/core/subscription:test_support", -+ "//testing/gmock", ++ "//net:test_support", + "//testing/gtest", + ] +} + -+source_set("unit_tests") { ++source_set("perf_tests") { + testonly = true -+ sources = [ -+ "test/activeping_telemetry_topic_provider_test.cc", -+ "test/adblock_controller_impl_test.cc", -+ "test/adblock_telemetry_service_unittest.cc", -+ "test/bundled_subscription_test.cc", -+ "test/sitekey_storage_impl_test.cc", -+ ] ++ sources = [ "test/resource_classifier_perftest.cc" ] + + deps = [ -+ ":core", -+ ":test_support", -+ "//base/test:test_support", -+ "//components/adblock/core/configuration:test_support", -+ "//components/adblock/core/subscription:test_support", -+ "//components/prefs:test_support", -+ "//components/resources:components_resources_grit", -+ "//components/sync_preferences:test_support", -+ "//net:test_support", -+ "//services/network:test_support", ++ ":classifier", ++ "//components/adblock/core/converter", + "//testing/gtest", ++ "//third_party/zlib/google:compression_utils", + ] + -+ configs += [ ":eyeo_telemetry_config" ] ++ data = [ ++ "//components/test/data/adblock/easylist.txt.gz", ++ "//components/test/data/adblock/exceptionrules.txt.gz", ++ "//components/test/data/adblock/anticv.txt.gz", ++ "//components/test/data/adblock/longurl.txt.gz", ++ ] +} -diff --git a/components/adblock/core/activeping_telemetry_topic_provider.cc b/components/adblock/core/activeping_telemetry_topic_provider.cc +diff --git a/components/adblock/core/classifier/resource_classifier.cc b/components/adblock/core/classifier/resource_classifier.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/activeping_telemetry_topic_provider.cc -@@ -0,0 +1,285 @@ -+/* This file is part of eyeo Chromium SDK, ++++ b/components/adblock/core/classifier/resource_classifier.cc +@@ -0,0 +1,24 @@ ++/* ++ * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH + * + * eyeo Chromium SDK is free software: you can redistribute it and/or modify @@ -9191,280 +8056,113 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/activeping_telemetry_topic_provider.h" -+ -+#include "base/json/json_reader.h" -+#include "base/json/json_writer.h" -+#include "base/system/sys_info.h" -+#include "base/time/time.h" -+#include "base/time/time_to_iso8601.h" -+#include "base/uuid.h" -+#include "components/adblock/core/common/adblock_prefs.h" -+#include "components/adblock/core/subscription/subscription_config.h" ++#include "components/adblock/core/classifier/resource_classifier.h" + +namespace adblock { -+namespace { -+int g_http_port_for_testing = 0; -+std::optional g_time_delta_for_testing; -+ -+GURL GetUrl() { -+ GURL url(EYEO_TELEMETRY_SERVER_URL); -+ if (!g_http_port_for_testing) { -+ return url; -+ } -+ DCHECK_EQ(url::kHttpsScheme, url.scheme()); -+ GURL::Replacements replacements; -+ replacements.SetSchemeStr(url::kHttpScheme); -+ const std::string port_str = base::NumberToString(g_http_port_for_testing); -+ replacements.SetPortStr(port_str); -+ return url.ReplaceComponents(replacements); -+} -+ -+base::TimeDelta GetNormalPingInterval() { -+ static base::TimeDelta kNormalPingInterval = -+ g_time_delta_for_testing ? g_time_delta_for_testing.value() -+ : base::Hours(12); -+ return kNormalPingInterval; -+} -+ -+base::TimeDelta GetRetryPingInterval() { -+ static base::TimeDelta kRetryPingInterval = -+ g_time_delta_for_testing ? g_time_delta_for_testing.value() -+ : base::Hours(1); -+ return kRetryPingInterval; -+} -+ -+void AppendStringIfPresent(PrefService* pref_service, -+ const std::string& pref_name, -+ base::StringPiece payload_key, -+ base::Value::Dict& payload) { -+ auto str = pref_service->GetString(pref_name); -+ if (!str.empty()) { -+ payload.Set(payload_key, std::move(str)); -+ } -+} -+} // namespace -+ -+ActivepingTelemetryTopicProvider::ActivepingTelemetryTopicProvider( -+ utils::AppInfo app_info, -+ PrefService* pref_service, -+ SubscriptionService* subscription_service, -+ const GURL& base_url, -+ const std::string& auth_token) -+ : app_info_(std::move(app_info)), -+ pref_service_(pref_service), -+ subscription_service_(subscription_service), -+ base_url_(base_url), -+ auth_token_(auth_token) {} -+ -+ActivepingTelemetryTopicProvider::~ActivepingTelemetryTopicProvider() = default; -+ -+// static -+GURL ActivepingTelemetryTopicProvider::DefaultBaseUrl() { -+#if !defined(EYEO_TELEMETRY_CLIENT_ID) -+ LOG(WARNING) -+ << "[eyeo] Using default Telemetry server since a Telemetry client ID " -+ "was " -+ "not provided. Users will not be counted correctly by eyeo. Please " -+ "set an ID via \"eyeo_telemetry_client_id\" gn argument."; -+#endif -+ return GetUrl(); -+} -+ -+// static -+std::string ActivepingTelemetryTopicProvider::DefaultAuthToken() { -+#if defined(EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN) -+ DVLOG(1) << "[eyeo] Using " << EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN -+ << " as Telemetry authentication token"; -+ return EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN; -+#else -+ LOG(WARNING) -+ << "[eyeo] No Telemetry authentication token defined. Users will " -+ "not be counted correctly by eyeo. Please set a token via " -+ "\"eyeo_telemetry_activeping_auth_token\" gn argument."; -+ return ""; -+#endif -+} -+ -+GURL ActivepingTelemetryTopicProvider::GetEndpointURL() const { -+ return base_url_.Resolve("/topic/eyeochromium_activeping/version/1"); -+} -+ -+std::string ActivepingTelemetryTopicProvider::GetAuthToken() const { -+ return auth_token_; -+} -+ -+void ActivepingTelemetryTopicProvider::GetPayload( -+ PayloadCallback callback) const { -+ std::string serialized; -+ // The only way JSONWriter::Write() can return fail is then the Value -+ // contains lists or dicts that are too deep (200 levels). We just built the -+ // payload and root objects here, they should be really shallow. -+ CHECK(base::JSONWriter::Write(GetPayloadInternal(), &serialized)); -+ std::move(callback).Run(std::move(serialized)); -+} -+ -+base::Time ActivepingTelemetryTopicProvider::GetTimeOfNextRequest() const { -+ const auto next_ping_time = -+ pref_service_->GetTime(common::prefs::kTelemetryNextPingTime); -+ // Next ping time may be unset if this is a first run. Next request should -+ // happen ASAP. -+ if (next_ping_time.is_null()) { -+ return base::Time::Now(); -+ } -+ -+ return next_ping_time; -+} -+ -+void ActivepingTelemetryTopicProvider::ParseResponse( -+ std::unique_ptr response_content) { -+ if (!response_content) { -+ VLOG(1) << "[eyeo] Telemetry ping failed, no response from server"; -+ ScheduleNextPing(GetRetryPingInterval()); -+ return; -+ } + -+ VLOG(1) << "[eyeo] Response from Telemetry server: " << *response_content; -+ auto parsed = base::JSONReader::ReadDict(*response_content); -+ if (!parsed) { -+ VLOG(1) -+ << "[eyeo] Telemetry ping failed, response could not be parsed as JSON"; -+ ScheduleNextPing(GetRetryPingInterval()); -+ return; -+ } ++ResourceClassifier::~ResourceClassifier() = default; + -+ auto* error_message = parsed->FindString("error"); -+ if (error_message) { -+ VLOG(1) << "[eyeo] Telemetry ping failed, error message: " -+ << *error_message; -+ ScheduleNextPing(GetRetryPingInterval()); -+ return; -+ } ++} // namespace adblock +diff --git a/components/adblock/core/classifier/resource_classifier.h b/components/adblock/core/classifier/resource_classifier.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/classifier/resource_classifier.h +@@ -0,0 +1,90 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ + -+ // For legacy reasons, "ping_response_time" is sent to us as "token". This -+ // should be the server time of when the ping was handled, possibly truncated -+ // for anonymity. We don't parse it or interpret it, just send it back with -+ // next ping. -+ auto* ping_response_time = parsed->FindString("token"); -+ if (!ping_response_time) { -+ VLOG(1) << "[eyeo] Telemetry ping failed, response did not contain a last " -+ "ping / token value"; -+ ScheduleNextPing(GetRetryPingInterval()); -+ return; -+ } ++#ifndef COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_H_ ++#define COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_H_ + -+ VLOG(1) << "[eyeo] Telemetry ping succeeded"; -+ ScheduleNextPing(GetNormalPingInterval()); -+ UpdatePrefs(*ping_response_time); -+} ++#include + -+void ActivepingTelemetryTopicProvider::FetchDebugInfo( -+ DebugInfoCallback callback) const { -+ base::Value::Dict debug_info; -+ debug_info.Set("endpoint_url", GetEndpointURL().spec()); -+ debug_info.Set("payload", GetPayloadInternal()); -+ debug_info.Set("first_ping", -+ pref_service_->GetString( -+ adblock::common::prefs::kTelemetryFirstPingTime)); -+ debug_info.Set("time_of_next_request", -+ base::TimeToISO8601(GetTimeOfNextRequest())); -+ debug_info.Set( -+ "last_ping", -+ pref_service_->GetString(adblock::common::prefs::kTelemetryLastPingTime)); -+ debug_info.Set("previous_last_ping", -+ pref_service_->GetString( -+ adblock::common::prefs::kTelemetryPreviousLastPingTime)); -+ debug_info.Set("next_ping", -+ base::TimeToISO8601(pref_service_->GetTime( -+ adblock::common::prefs::kTelemetryNextPingTime))); ++#include "base/memory/ref_counted.h" ++#include "base/memory/scoped_refptr.h" ++#include "components/adblock/core/common/content_type.h" ++#include "components/adblock/core/common/sitekey.h" ++#include "components/adblock/core/subscription/subscription_service.h" ++#include "net/http/http_response_headers.h" ++#include "url/gurl.h" + -+ std::string serialized; -+ // The only way JSONWriter::Write() can return fail is then the Value -+ // contains lists or dicts that are too deep (200 levels). We just built the -+ // payload and root objects here, they should be really shallow. -+ CHECK(base::JSONWriter::WriteWithOptions( -+ debug_info, base::JsonOptions::OPTIONS_PRETTY_PRINT, &serialized)); -+ std::move(callback).Run(std::move(serialized)); -+} ++namespace adblock { + -+void ActivepingTelemetryTopicProvider::ScheduleNextPing(base::TimeDelta delay) { -+ pref_service_->SetTime(common::prefs::kTelemetryNextPingTime, -+ base::Time::Now() + delay); -+} ++// Classifies resources encountered on websites. ++// May be called from multiple threads, thread-safe and immutable. ++class ResourceClassifier ++ : public base::RefCountedThreadSafe { ++ public: ++ struct ClassificationResult { ++ enum class Decision { ++ // The resource should be blocked as there's a blocking filter in at least ++ // one of the Subscriptions. ++ Blocked, ++ // There is a blocking filter but at least one of the Subscriptions also ++ // has an overriding allowing filter. ++ Allowed, ++ // There are no filters that apply to this resource. ++ Ignored, ++ } decision; ++ // If decision is Blocked or Allowed, |decisive_subscription| has the URL of ++ // the subscription that had the decisive filter. ++ GURL decisive_subscription; ++ // If decision is Blocked or Allowed, |decisive_configuration_name| has the ++ // name of the FilteringConfiguration that contain matched filter. ++ std::string decisive_configuration_name; ++ }; + -+void ActivepingTelemetryTopicProvider::UpdatePrefs( -+ const std::string& ping_response_time) { -+ // First ping is only set once per client. -+ if (pref_service_->GetString(common::prefs::kTelemetryFirstPingTime) -+ .empty()) { -+ pref_service_->SetString(common::prefs::kTelemetryFirstPingTime, -+ ping_response_time); -+ } -+ // Previous-to-last becomes last, last becomes current. -+ pref_service_->SetString( -+ common::prefs::kTelemetryPreviousLastPingTime, -+ pref_service_->GetString(common::prefs::kTelemetryLastPingTime)); -+ pref_service_->SetString(common::prefs::kTelemetryLastPingTime, -+ ping_response_time); -+ // Generate a new random tag that wil be sent along with ping times in the -+ // next request. -+ const auto tag = base::Uuid::GenerateRandomV4(); -+ pref_service_->SetString(common::prefs::kTelemetryLastPingTag, -+ tag.AsLowercaseString()); -+} ++ virtual ClassificationResult ClassifyRequest( ++ const SubscriptionService::Snapshot subscription_collections, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const SiteKey& sitekey) const = 0; + -+base::Value ActivepingTelemetryTopicProvider::GetPayloadInternal() const { -+ base::Value::Dict payload; -+ bool aa_enabled = false; -+ auto* adblock_configuration = -+ subscription_service_->GetAdblockFilteringConfiguration(); -+ if (adblock_configuration) { -+ aa_enabled = base::ranges::any_of( -+ adblock_configuration->GetFilterLists(), -+ [&](const auto& url) { return url == AcceptableAdsUrl(); }); -+ } -+ payload.Set("addon_name", "eyeo-chromium-sdk"); -+ payload.Set("addon_version", "2.0.0"); -+ payload.Set("application", app_info_.name); -+ payload.Set("application_version", app_info_.version); -+ payload.Set("aa_active", aa_enabled); -+ payload.Set("platform", base::SysInfo::OperatingSystemName()); -+ payload.Set("platform_version", base::SysInfo::OperatingSystemVersion()); -+ // Server requires the following parameters to either have a correct, -+ // non-empty value, or not be present at all. We shall not send empty strings. -+ AppendStringIfPresent(pref_service_, common::prefs::kTelemetryLastPingTag, -+ "last_ping_tag", payload); -+ AppendStringIfPresent(pref_service_, common::prefs::kTelemetryFirstPingTime, -+ "first_ping", payload); -+ AppendStringIfPresent(pref_service_, common::prefs::kTelemetryLastPingTime, -+ "last_ping", payload); -+ AppendStringIfPresent(pref_service_, -+ common::prefs::kTelemetryPreviousLastPingTime, -+ "previous_last_ping", payload); ++ virtual ClassificationResult ClassifyPopup( ++ const SubscriptionService::Snapshot& subscription_collections, ++ const GURL& popup_url, ++ const std::vector& opener_frame_hierarchy, ++ const SiteKey& sitekey) const = 0; + -+ base::Value::Dict root; -+ root.Set("payload", std::move(payload)); -+ return base::Value(std::move(root)); -+} ++ virtual ClassificationResult ClassifyResponse( ++ const SubscriptionService::Snapshot subscription_collections, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const scoped_refptr& response_headers) ++ const = 0; + -+// static -+void ActivepingTelemetryTopicProvider::SetHttpPortForTesting( -+ int http_port_for_testing) { -+ g_http_port_for_testing = http_port_for_testing; -+} ++ virtual absl::optional CheckRewrite( ++ const SubscriptionService::Snapshot subscription_collections, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy) const = 0; + -+// static -+void ActivepingTelemetryTopicProvider::SetIntervalsForTesting( -+ base::TimeDelta time_delta) { -+ g_time_delta_for_testing = time_delta; -+} ++ protected: ++ friend class base::RefCountedThreadSafe; ++ virtual ~ResourceClassifier(); ++}; + +} // namespace adblock -diff --git a/components/adblock/core/activeping_telemetry_topic_provider.h b/components/adblock/core/activeping_telemetry_topic_provider.h ++ ++#endif // COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_H_ +diff --git a/components/adblock/core/classifier/resource_classifier_impl.cc b/components/adblock/core/classifier/resource_classifier_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/activeping_telemetry_topic_provider.h -@@ -0,0 +1,87 @@ ++++ b/components/adblock/core/classifier/resource_classifier_impl.cc +@@ -0,0 +1,404 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -9482,150 +8180,398 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_ACTIVEPING_TELEMETRY_TOPIC_PROVIDER_H_ -+#define COMPONENTS_ADBLOCK_CORE_ACTIVEPING_TELEMETRY_TOPIC_PROVIDER_H_ ++#include "components/adblock/core/classifier/resource_classifier_impl.h" + -+#include "base/memory/raw_ptr.h" -+#include "base/time/time.h" -+#include "components/adblock/core/adblock_telemetry_service.h" ++#include "base/strings/string_split.h" +#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/prefs/pref_service.h" ++#include "components/adblock/core/subscription/installed_subscription.h" + +namespace adblock { ++namespace { + -+// Telemetry topic provider that uploads user-counting data for periodic pings. -+// Provides the following data in Payload: -+// - Last ping time, previous-to-last ping time, first ping time -+// - Unique, non-persistent tag for disambiguating pings made by clients in -+// the same day -+// - Whether Acceptable Ads is enabled -+// - Application name & version, platform name & version -+// Note: Provides no user-identifiable information, no persistent tracking -+// data (ie. no traceable UUID) and no information about user actions. -+class ActivepingTelemetryTopicProvider final -+ : public AdblockTelemetryService::TopicProvider { -+ public: -+ ActivepingTelemetryTopicProvider(utils::AppInfo app_info, -+ PrefService* pref_service, -+ SubscriptionService* subscription_service, -+ const GURL& base_url, -+ const std::string& auth_token); -+ ~ActivepingTelemetryTopicProvider() final; ++using ClassificationResult = ResourceClassifier::ClassificationResult; + -+ static GURL DefaultBaseUrl(); -+ static std::string DefaultAuthToken(); ++absl::optional IsHeaderFilterOverruled( ++ base::StringPiece blocking_header_filter, ++ std::set& allowing_filters) { ++ for (auto filter : allowing_filters) { ++ if (filter.header_filter.empty()) { ++ // Allowing header filters may not contain payload, allow all headers in ++ // that case. ++ return filter; ++ } ++ if (utils::RegexMatches(filter.header_filter, blocking_header_filter, ++ true)) { ++ return filter; ++ } ++ } ++ return absl::nullopt; ++} + -+ GURL GetEndpointURL() const final; -+ std::string GetAuthToken() const final; -+ void GetPayload(PayloadCallback callback) const final; ++bool ContainsHeaderValue(const scoped_refptr& headers, ++ base::StringPiece header_name, ++ const std::string& header_value) { ++ size_t iter = 0; ++ std::string value; ++ while (headers->EnumerateHeader(&iter, header_name, &value)) { ++ if (value.find(header_value) != std::string::npos) { ++ return true; ++ } ++ } ++ return false; ++} + -+ // Normally 12 hours since last ping, 1 hour in case of retries. -+ base::Time GetTimeOfNextRequest() const final; ++ClassificationResult ClassifyRequestWithSingleCollection( ++ const SubscriptionCollection& subscription_collection, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const SiteKey& sitekey) { ++ // Search all subscriptions for any blocking filters (generic or ++ // domain-specific). ++ const auto subscription_with_blocking_filter_it = ++ subscription_collection.FindBySubresourceFilter( ++ request_url, frame_hierarchy, content_type, sitekey, ++ FilterCategory::Blocking); ++ if (!subscription_with_blocking_filter_it) { ++ // Found no blocking filters in any of the subscriptions. ++ return ClassificationResult{ ++ ClassificationResult::Decision::Ignored, {}, {}}; ++ } ++ // Found a blocking filter but perhaps one of the subscriptions has an ++ // allowing filter to override it? ++ const auto subscription_with_allowing_filter_it = ++ subscription_collection.FindByAllowFilter(request_url, frame_hierarchy, ++ content_type, sitekey); ++ if (subscription_with_allowing_filter_it) { ++ // Found an overriding allowing filter: ++ return ClassificationResult{ ++ ClassificationResult::Decision::Allowed, ++ *subscription_with_allowing_filter_it, ++ subscription_collection.GetFilteringConfigurationName()}; ++ } ++ // Last chance to avoid blocking: maybe there is a GENERICBLOCK filter and we ++ // should re-search for domain-specific filters only? ++ if (subscription_collection.FindBySpecialFilter( ++ SpecialFilterType::Genericblock, request_url, frame_hierarchy, ++ sitekey)) { ++ // This is a relatively rare case - we should have searched for ++ // domain-specific filters only. ++ const auto subscription_with_domain_specific_blocking_filter_it = ++ subscription_collection.FindBySubresourceFilter( ++ request_url, frame_hierarchy, content_type, sitekey, ++ FilterCategory::DomainSpecificBlocking); ++ if (subscription_with_domain_specific_blocking_filter_it) { ++ // There was a domain-specific blocking filter, the resource is blocked by ++ // it. ++ return ClassificationResult{ ++ ClassificationResult::Decision::Blocked, ++ *subscription_with_domain_specific_blocking_filter_it, ++ subscription_collection.GetFilteringConfigurationName()}; ++ } else { ++ // There were no domain-specific blocking filters, our first match must ++ // have been a generic filter. ++ return ClassificationResult{ ++ ClassificationResult::Decision::Ignored, {}, {}}; ++ } ++ } ++ // There was no GENERICBLOCK filter available, so the original blocking result ++ // is valid. ++ return ClassificationResult{ ++ ClassificationResult::Decision::Blocked, ++ *subscription_with_blocking_filter_it, ++ subscription_collection.GetFilteringConfigurationName()}; ++} + -+ // Attempts to parse "token" (an opaque server description of last ping time) -+ // from |response_content|. -+ void ParseResponse(std::unique_ptr response_content) final; ++ClassificationResult ClassifyPopupWithSingleCollection( ++ const SubscriptionCollection& subscription_collection, ++ const GURL& popup_url, ++ const std::vector& opener_frame_hierarchy, ++ const SiteKey& sitekey) { ++ // Search all subscriptions for popup blocking filters (generic or ++ // domain-specific). ++ const auto subscription_with_blocking_filter_it = ++ subscription_collection.FindByPopupFilter( ++ popup_url, opener_frame_hierarchy, sitekey, FilterCategory::Blocking); ++ if (!subscription_with_blocking_filter_it) { ++ // Found no blocking filters in any of the subscriptions. ++ return ClassificationResult{ ++ ClassificationResult::Decision::Ignored, {}, {}}; ++ } ++ // Found a blocking filter but perhaps one of the subscriptions has an ++ // allowing filter to override it? ++ const auto subscription_with_allowing_filter_it = ++ subscription_collection.FindByPopupFilter( ++ popup_url, opener_frame_hierarchy, sitekey, FilterCategory::Allowing); ++ if (subscription_with_allowing_filter_it) { ++ // Found an overriding allowing filter: ++ return ClassificationResult{ ++ ClassificationResult::Decision::Allowed, ++ *subscription_with_allowing_filter_it, ++ subscription_collection.GetFilteringConfigurationName()}; ++ } ++ const auto subscription_with_document_allowing_filter_it = ++ subscription_collection.FindBySpecialFilter( ++ SpecialFilterType::Document, popup_url, opener_frame_hierarchy, ++ sitekey); ++ if (subscription_with_document_allowing_filter_it) { ++ // Found an overriding document allowing filter for the frame hierarchy: ++ return ClassificationResult{ ++ ClassificationResult::Decision::Allowed, ++ *subscription_with_document_allowing_filter_it, ++ subscription_collection.GetFilteringConfigurationName()}; ++ } ++ // There is no overriding allowing filter, the popup should be blocked. ++ return ClassificationResult{ ++ ClassificationResult::Decision::Blocked, ++ *subscription_with_blocking_filter_it, ++ subscription_collection.GetFilteringConfigurationName()}; ++} + -+ void FetchDebugInfo(DebugInfoCallback callback) const final; ++ClassificationResult CheckHeaderFiltersMatchResponseHeaders( ++ const SubscriptionCollection& subscription_collection, ++ const GURL request_url, ++ const std::vector frame_hierarchy, ++ const scoped_refptr& headers, ++ std::set blocking_filters, ++ std::set allowing_filters) { ++ ClassificationResult result{ClassificationResult::Decision::Ignored, {}, {}}; + -+ // Sets the port used by the embedded http server required for browser tests. -+ // Must be called before the first call to DefaultBaseUrl(). -+ static void SetHttpPortForTesting(int http_port_for_testing); ++ for (const auto& filter : blocking_filters) { ++ auto key_value = ++ base::SplitString(filter.header_filter, "=", base::KEEP_WHITESPACE, ++ base::SPLIT_WANT_NONEMPTY); ++ // If no '=' occurs, filter blocks response contains header, regardless ++ // header value ++ if (key_value.size() == 1u) { ++ if (headers->HasHeader(filter.header_filter)) { ++ if (auto allow_rule = IsHeaderFilterOverruled(filter.header_filter, ++ allowing_filters)) { ++ result = {ClassificationResult::Decision::Allowed, ++ allow_rule->subscription_url, ++ subscription_collection.GetFilteringConfigurationName()}; ++ } else { ++ return ClassificationResult{ ++ ClassificationResult::Decision::Blocked, filter.subscription_url, ++ subscription_collection.GetFilteringConfigurationName()}; ++ } ++ } ++ } else { ++ DCHECK_EQ(2u, key_value.size()); ++ if (ContainsHeaderValue(headers, key_value[0], key_value[1])) { ++ if (auto allow_rule = IsHeaderFilterOverruled(filter.header_filter, ++ allowing_filters)) { ++ result = {ClassificationResult::Decision::Allowed, ++ allow_rule->subscription_url, ++ subscription_collection.GetFilteringConfigurationName()}; ++ } else { ++ return ClassificationResult{ ++ ClassificationResult::Decision::Blocked, filter.subscription_url, ++ subscription_collection.GetFilteringConfigurationName()}; ++ } ++ } ++ } ++ } ++ return result; ++} + -+ // Sets the internal timing for sending pings required for browser tests. -+ // Must be called before AdblockTelemetryService::Start(). -+ static void SetIntervalsForTesting(base::TimeDelta time_delta); ++ClassificationResult ClassifyResponseWithSingleCollection( ++ const SubscriptionCollection& subscription_collection, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const scoped_refptr& response_headers) { ++ auto blocking_filters = subscription_collection.GetHeaderFilters( ++ request_url, frame_hierarchy, content_type, FilterCategory::Blocking); ++ if (blocking_filters.empty()) { ++ return ClassificationResult{ ++ ClassificationResult::Decision::Ignored, {}, {}}; ++ } + -+ private: -+ void ScheduleNextPing(base::TimeDelta delay); -+ void UpdatePrefs(const std::string& ping_response_time); -+ base::Value GetPayloadInternal() const; ++ // If blocking filters found, check first if filters are not overruled ++ const auto subscription_with_allowing_document_filter_it = ++ subscription_collection.FindBySpecialFilter( ++ SpecialFilterType::Document, request_url, frame_hierarchy, SiteKey()); ++ if (subscription_with_allowing_document_filter_it) { ++ // Found no blocking filters in any of the subscriptions. ++ return ClassificationResult{ ++ ClassificationResult::Decision::Allowed, ++ *subscription_with_allowing_document_filter_it, ++ subscription_collection.GetFilteringConfigurationName()}; ++ } + -+ const utils::AppInfo app_info_; -+ raw_ptr pref_service_; -+ raw_ptr subscription_service_; -+ const GURL base_url_; -+ const std::string auth_token_; -+}; ++ if (subscription_collection.FindBySpecialFilter( ++ SpecialFilterType::Genericblock, request_url, frame_hierarchy, ++ SiteKey())) { ++ // If genericblock filter found, searched for blocking domain-specific ++ // filters. ++ blocking_filters = subscription_collection.GetHeaderFilters( ++ request_url, frame_hierarchy, content_type, ++ FilterCategory::DomainSpecificBlocking); + -+} // namespace adblock ++ return CheckHeaderFiltersMatchResponseHeaders( ++ subscription_collection, request_url, frame_hierarchy, response_headers, ++ std::move(blocking_filters), {}); ++ } ++ // If no special filters found, get allowing filters and check which filters ++ // applies. ++ auto allowing_filters = subscription_collection.GetHeaderFilters( ++ request_url, frame_hierarchy, content_type, FilterCategory::Allowing); ++ return CheckHeaderFiltersMatchResponseHeaders( ++ subscription_collection, request_url, frame_hierarchy, response_headers, ++ std::move(blocking_filters), std::move(allowing_filters)); ++} + -+#endif // COMPONENTS_ADBLOCK_CORE_ACTIVEPING_TELEMETRY_TOPIC_PROVIDER_H_ -diff --git a/components/adblock/core/adblock_controller.h b/components/adblock/core/adblock_controller.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/adblock_controller.h -@@ -0,0 +1,64 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++absl::optional CheckRewriteWithSingleCollection( ++ const SubscriptionCollection& subscription_collection, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy) { ++ auto blocking_rewrites = subscription_collection.GetRewriteFilters( ++ request_url, frame_hierarchy, FilterCategory::Blocking); ++ if (blocking_rewrites.empty()) { ++ return absl::nullopt; ++ } + -+#ifndef COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_H_ -+#define COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_H_ ++ // If blocking filters are found, check first if blocking filters are not ++ // overruled completely. ++ const auto subscription_with_allowing_document_filter_it = ++ subscription_collection.FindBySpecialFilter( ++ SpecialFilterType::Document, request_url, frame_hierarchy, SiteKey()); ++ if (subscription_with_allowing_document_filter_it) { ++ return absl::nullopt; ++ } + -+#include -+#include ++ if (subscription_collection.FindBySpecialFilter( ++ SpecialFilterType::Genericblock, request_url, frame_hierarchy, ++ SiteKey())) { ++ // If genericblock filter is found, searched for blocking domain-specific ++ // filters. ++ blocking_rewrites = subscription_collection.GetRewriteFilters( ++ request_url, frame_hierarchy, FilterCategory::DomainSpecificBlocking); + -+#include "base/observer_list.h" -+#include "components/adblock/core/subscription/installed_subscription.h" -+#include "components/adblock/core/subscription/subscription_config.h" -+#include "components/keyed_service/core/keyed_service.h" ++ if (blocking_rewrites.empty()) { ++ return absl::nullopt; ++ } ++ } + -+class GURL; ++ // Check if blocking filters are not overruled by allowing ones. ++ auto allowing_rewrites = subscription_collection.GetRewriteFilters( ++ request_url, frame_hierarchy, FilterCategory::Allowing); ++ if (allowing_rewrites.empty()) { ++ // Any filter will do, take the 1st one. ++ return absl::optional(GURL{*blocking_rewrites.begin()}); ++ } + -+namespace adblock { -+/** -+ * @brief Provides the way for the UI to interact with the filter engine. -+ * It allows to set the states of the ad-block and acceptable ads and -+ * adding, removing and listing subscriptions and allowed domains. -+ */ -+class AdblockController : public KeyedService { -+ public: -+ ~AdblockController() override = default; ++ // Change set to vector to call algorithm ++ std::vector blocking_rewrites_v(blocking_rewrites.begin(), ++ blocking_rewrites.end()); ++ // Remove blocking filters overruled by allowing filters. ++ blocking_rewrites_v.erase( ++ base::ranges::remove_if( ++ blocking_rewrites_v, ++ [&allowing_rewrites](const auto blocking_rewrite) { ++ return base::ranges::find_if( ++ allowing_rewrites, [&](const auto& allowing_rewrite) { ++ return blocking_rewrite == allowing_rewrite; ++ }) != allowing_rewrites.end(); ++ }), ++ blocking_rewrites_v.end()); + -+ virtual void SetAdblockEnabled(bool enabled) = 0; -+ virtual bool IsAdblockEnabled() const = 0; -+ virtual void SetAcceptableAdsEnabled(bool enabled) = 0; -+ virtual bool IsAcceptableAdsEnabled() const = 0; ++ if (blocking_rewrites_v.empty()) { ++ return absl::nullopt; ++ } + -+ virtual void InstallSubscription(const GURL& url) = 0; -+ virtual void UninstallSubscription(const GURL& url) = 0; -+ virtual std::vector> GetInstalledSubscriptions() -+ const = 0; ++ // Any filter will do, take the 1st one. ++ return absl::optional(GURL{*blocking_rewrites_v.begin()}); ++} + -+ virtual void AddAllowedDomain(const std::string& domain) = 0; -+ virtual void RemoveAllowedDomain(const std::string& domain) = 0; -+ virtual std::vector GetAllowedDomains() const = 0; ++} // namespace + -+ virtual void AddCustomFilter(const std::string& filter) = 0; -+ virtual void RemoveCustomFilter(const std::string& filter) = 0; -+ virtual std::vector GetCustomFilters() const = 0; ++ResourceClassifierImpl::~ResourceClassifierImpl() = default; + -+ virtual std::vector GetKnownSubscriptions() const = 0; -+}; ++ClassificationResult ResourceClassifierImpl::ClassifyRequest( ++ const SubscriptionService::Snapshot subscription_collections, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const SiteKey& sitekey) const { ++ auto classification = ++ ClassificationResult{ClassificationResult::Decision::Ignored, {}, {}}; ++ for (const auto& collection : subscription_collections) { ++ auto result = ClassifyRequestWithSingleCollection( ++ *collection, request_url, frame_hierarchy, content_type, sitekey); ++ if (result.decision == ClassificationResult::Decision::Blocked) { ++ return result; ++ } ++ if (result.decision == ClassificationResult::Decision::Allowed) { ++ classification = result; ++ } ++ } ++ return classification; ++} + -+} // namespace adblock ++ClassificationResult ResourceClassifierImpl::ClassifyPopup( ++ const SubscriptionService::Snapshot& subscription_collections, ++ const GURL& popup_url, ++ const std::vector& opener_frame_hierarchy, ++ const SiteKey& sitekey) const { ++ auto classification = ++ ClassificationResult{ClassificationResult::Decision::Ignored, {}, {}}; ++ for (const auto& collection : subscription_collections) { ++ auto result = ClassifyPopupWithSingleCollection( ++ *collection, popup_url, opener_frame_hierarchy, sitekey); ++ if (result.decision == ClassificationResult::Decision::Blocked) { ++ return result; ++ } ++ if (result.decision == ClassificationResult::Decision::Allowed) { ++ classification = result; ++ } ++ } ++ return classification; ++} + -+#endif // COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_H_ -diff --git a/components/adblock/core/adblock_controller_impl.cc b/components/adblock/core/adblock_controller_impl.cc ++ClassificationResult ResourceClassifierImpl::ClassifyResponse( ++ const SubscriptionService::Snapshot subscription_collections, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const scoped_refptr& response_headers) const { ++ auto classification = ++ ClassificationResult{ClassificationResult::Decision::Ignored, {}, {}}; ++ for (const auto& collection : subscription_collections) { ++ auto result = ClassifyResponseWithSingleCollection( ++ *collection, request_url, frame_hierarchy, content_type, ++ response_headers); ++ if (result.decision == ClassificationResult::Decision::Blocked) { ++ return result; ++ } ++ if (result.decision == ClassificationResult::Decision::Allowed) { ++ classification = result; ++ } ++ } ++ return classification; ++} ++ ++absl::optional ResourceClassifierImpl::CheckRewrite( ++ const SubscriptionService::Snapshot subscription_collections, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy) const { ++ for (const auto& collection : subscription_collections) { ++ auto result = CheckRewriteWithSingleCollection(*collection, request_url, ++ frame_hierarchy); ++ if (result) { ++ return result; ++ } ++ } ++ return absl::nullopt; ++} ++ ++} // namespace adblock +diff --git a/components/adblock/core/classifier/resource_classifier_impl.h b/components/adblock/core/classifier/resource_classifier_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/adblock_controller_impl.cc -@@ -0,0 +1,271 @@ ++++ b/components/adblock/core/classifier/resource_classifier_impl.h +@@ -0,0 +1,64 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -9643,265 +8589,173 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/adblock_controller_impl.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_IMPL_H_ + -+#include -+#include -+#include -+#include ++#include + -+#include "absl/types/optional.h" -+#include "base/command_line.h" -+#include "base/functional/bind.h" -+#include "base/logging.h" -+#include "base/ranges/algorithm.h" -+#include "base/strings/string_util.h" -+#include "base/version.h" -+#include "components/adblock/core/adblock_switches.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/common/adblock_prefs.h" -+#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/subscription/installed_subscription.h" -+#include "components/adblock/core/subscription/subscription.h" -+#include "components/adblock/core/subscription/subscription_config.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/language/core/common/locale_util.h" -+#include "components/prefs/pref_service.h" -+#include "components/prefs/scoped_user_pref_update.h" -+#include "components/version_info/version_info.h" -+#include "url/gurl.h" ++#include "components/adblock/core/classifier/resource_classifier.h" + +namespace adblock { + -+namespace { -+ -+template -+std::vector MigrateItemsFromList(PrefService* pref_service, -+ const std::string& pref_name) { -+ std::vector results; -+ if (pref_service->FindPreference(pref_name)->HasUserSetting()) { -+ const auto& list = pref_service->GetList(pref_name); -+ for (const auto& item : list) { -+ if (item.is_string()) { -+ results.emplace_back(item.GetString()); -+ } -+ } -+ pref_service->ClearPref(pref_name); -+ } -+ return results; -+} ++class ResourceClassifierImpl final : public ResourceClassifier { ++ public: ++ ResourceClassifierImpl() = default; + -+absl::optional MigrateBoolFromPrefs(PrefService* pref_service, -+ const std::string& pref_name) { -+ if (pref_service->FindPreference(pref_name)->HasUserSetting()) { -+ bool value = pref_service->GetBoolean(pref_name); -+ pref_service->ClearPref(pref_name); -+ return value; -+ } -+ return absl::nullopt; -+} -+ -+} // namespace -+ -+AdblockControllerImpl::AdblockControllerImpl( -+ FilteringConfiguration* adblock_filtering_configuration, -+ SubscriptionService* subscription_service, -+ const std::string& locale, -+ std::vector known_subscriptions) -+ : adblock_filtering_configuration_(adblock_filtering_configuration), -+ subscription_service_(subscription_service), -+ language_(language::ExtractBaseLanguage(locale)), -+ known_subscriptions_(std::move(known_subscriptions)) { -+ // language::ExtractBaseLanguage is pretty basic, if it doesn't return -+ // something that looks like a valid language, fallback to English and use the -+ // default EasyList. -+ if (language_.size() != 2u) { -+ language_ = "en"; -+ } -+} -+ -+AdblockControllerImpl::~AdblockControllerImpl() = default; -+ -+void AdblockControllerImpl::SetAdblockEnabled(bool enabled) { -+ adblock_filtering_configuration_->SetEnabled(enabled); -+} ++ ClassificationResult ClassifyRequest( ++ const SubscriptionService::Snapshot subscription_collections, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const SiteKey& sitekey) const final; + -+bool AdblockControllerImpl::IsAdblockEnabled() const { -+ return adblock_filtering_configuration_->IsEnabled(); -+} ++ ClassificationResult ClassifyPopup( ++ const SubscriptionService::Snapshot& subscription_collections, ++ const GURL& popup_url, ++ const std::vector& opener_frame_hierarchy, ++ const SiteKey& sitekey) const final; + -+void AdblockControllerImpl::SetAcceptableAdsEnabled(bool enabled) { -+ if (enabled) { -+ InstallSubscription(AcceptableAdsUrl()); -+ } else { -+ UninstallSubscription(AcceptableAdsUrl()); -+ } -+} ++ ClassificationResult ClassifyResponse( ++ const SubscriptionService::Snapshot subscription_collections, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const scoped_refptr& response_headers) ++ const final; + -+bool AdblockControllerImpl::IsAcceptableAdsEnabled() const { -+ return base::ranges::any_of( -+ adblock_filtering_configuration_->GetFilterLists(), -+ [&](const auto& url) { return url == AcceptableAdsUrl(); }); -+} ++ absl::optional CheckRewrite( ++ const SubscriptionService::Snapshot subscription_collections, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy) const final; + -+void AdblockControllerImpl::InstallSubscription(const GURL& url) { -+ adblock_filtering_configuration_->AddFilterList(url); -+} ++ protected: ++ friend class base::RefCountedThreadSafe; ++ ~ResourceClassifierImpl() override; ++}; + -+void AdblockControllerImpl::UninstallSubscription(const GURL& url) { -+ adblock_filtering_configuration_->RemoveFilterList(url); -+} ++} // namespace adblock + -+std::vector> -+AdblockControllerImpl::GetInstalledSubscriptions() const { -+ return GetSubscriptionsThatMatchConfiguration(); -+} ++#endif // COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_IMPL_H_ +diff --git a/components/adblock/core/common/BUILD.gn b/components/adblock/core/common/BUILD.gn +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/common/BUILD.gn +@@ -0,0 +1,110 @@ ++# ++# This file is part of eyeo Chromium SDK, ++# Copyright (C) 2006-present eyeo GmbH ++# ++# eyeo Chromium SDK is free software: you can redistribute it and/or modify ++# it under the terms of the GNU General Public License version 3 as ++# published by the Free Software Foundation. ++# ++# eyeo Chromium SDK is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with eyeo Chromium SDK. If not, see . + -+void AdblockControllerImpl::AddAllowedDomain(const std::string& domain) { -+ adblock_filtering_configuration_->AddAllowedDomain(domain); -+} ++import("//components/adblock/features.gni") + -+void AdblockControllerImpl::RemoveAllowedDomain(const std::string& domain) { -+ adblock_filtering_configuration_->RemoveAllowedDomain(domain); -+} ++config("eyeo_filtering_config") { ++ defines = [] + -+std::vector AdblockControllerImpl::GetAllowedDomains() const { -+ return adblock_filtering_configuration_->GetAllowedDomains(); ++ if (eyeo_disable_filtering_by_default) { ++ defines += [ "EYEO_DISABLE_FILTERING_BY_DEFAULT=true" ] ++ } else { ++ defines += [ "EYEO_DISABLE_FILTERING_BY_DEFAULT=false" ] ++ } +} + -+void AdblockControllerImpl::AddCustomFilter(const std::string& filter) { -+ adblock_filtering_configuration_->AddCustomFilter(filter); -+} ++source_set("common") { ++ configs += [ ":eyeo_filtering_config" ] + -+void AdblockControllerImpl::RemoveCustomFilter(const std::string& filter) { -+ adblock_filtering_configuration_->RemoveCustomFilter(filter); -+} ++ sources = [ ++ "adblock_constants.cc", ++ "adblock_constants.h", ++ "adblock_prefs.cc", ++ "adblock_prefs.h", ++ "content_type.cc", ++ "content_type.h", ++ "flatbuffer_data.cc", ++ "flatbuffer_data.h", ++ "header_filter_data.h", ++ "keyword_extractor_utils.cc", ++ "keyword_extractor_utils.h", ++ "regex_filter_pattern.cc", ++ "regex_filter_pattern.h", ++ "sitekey.h", ++ ] + -+std::vector AdblockControllerImpl::GetCustomFilters() const { -+ return adblock_filtering_configuration_->GetCustomFilters(); -+} ++ deps = [ "//components/prefs" ] + -+std::vector -+AdblockControllerImpl::GetKnownSubscriptions() const { -+ return known_subscriptions_; ++ public_deps = [ ++ "//base", ++ "//components/adblock/core:schema", ++ "//components/adblock/core:schema_hash", ++ "//third_party/abseil-cpp:absl", ++ "//url", ++ ] +} + -+void AdblockControllerImpl::RunFirstRunLogic(PrefService* pref_service) { -+ // If the state of installed subscriptions in SubscriptionService is different -+ // than the state in prefs, prefs take precedence. -+ if (pref_service->GetBoolean( -+ common::prefs::kInstallFirstStartSubscriptions)) { -+ // On first run, install additional subscriptions. -+ for (const auto& cur : known_subscriptions_) { -+ if (cur.first_run == SubscriptionFirstRunBehavior::Subscribe) { -+ if (cur.url == AcceptableAdsUrl() && -+ base::CommandLine::ForCurrentProcess()->HasSwitch( -+ switches::kDisableAcceptableAds)) { -+ // Do not install Acceptable Ads on first run because a command line -+ // switch forbids it. Mostly used for testing. -+ continue; -+ } -+ InstallSubscription(cur.url); -+ } -+ } -+ -+ if (IsEyeoFilteringDisabledByDefault()) { -+ SetAdblockEnabled(false); -+ } -+ -+ InstallLanguageBasedRecommendedSubscriptions(); -+ pref_service->SetBoolean(common::prefs::kInstallFirstStartSubscriptions, -+ false); -+ } -+} ++config("eyeo_application_config") { ++ defines = [] + -+void AdblockControllerImpl::MigrateLegacyPrefs(PrefService* pref_service) { -+ if (auto aa_value = MigrateBoolFromPrefs( -+ pref_service, common::prefs::kEnableAcceptableAdsLegacy)) { -+ SetAcceptableAdsEnabled(*aa_value); -+ VLOG(1) << "[eyeo] Migrated kEnableAcceptableAdsLegacy pref"; ++ if (eyeo_application_name != "") { ++ defines += [ "EYEO_APPLICATION_NAME=\"$eyeo_application_name\"" ] + } + -+ if (auto enable_value = MigrateBoolFromPrefs( -+ pref_service, common::prefs::kEnableAdblockLegacy)) { -+ SetAdblockEnabled(*enable_value); -+ VLOG(1) << "[eyeo] Migrated kEnableAdblockLegacy pref"; ++ if (eyeo_application_version != "") { ++ defines += [ "EYEO_APPLICATION_VERSION=\"$eyeo_application_version\"" ] + } ++} + -+ for (const auto& url : MigrateItemsFromList( -+ pref_service, common::prefs::kAdblockCustomSubscriptionsLegacy)) { -+ adblock_filtering_configuration_->AddFilterList(url); -+ VLOG(1) << "[eyeo] Migrated " << url -+ << " from kAdblockCustomSubscriptionsLegacy pref"; -+ } ++source_set("utils") { ++ configs += [ ":eyeo_application_config" ] + -+ for (const auto& url : MigrateItemsFromList( -+ pref_service, common::prefs::kAdblockSubscriptionsLegacy)) { -+ adblock_filtering_configuration_->AddFilterList(url); -+ VLOG(1) << "[eyeo] Migrated " << url -+ << " from kAdblockSubscriptionsLegacy pref"; -+ } ++ sources = [ ++ "adblock_utils.cc", ++ "adblock_utils.h", ++ ] + -+ for (const auto& domain : MigrateItemsFromList( -+ pref_service, common::prefs::kAdblockAllowedDomainsLegacy)) { -+ adblock_filtering_configuration_->AddAllowedDomain(domain); -+ VLOG(1) << "[eyeo] Migrated " << domain -+ << " from kAdblockAllowedDomainsLegacy pref"; -+ } ++ deps = [ ++ "//components/resources:components_resources_grit", ++ "//components/version_info", ++ "//net", ++ "//third_party/icu/", ++ "//third_party/re2", ++ "//ui/base", ++ "//url", ++ ] + -+ for (const auto& filter : MigrateItemsFromList( -+ pref_service, common::prefs::kAdblockCustomFiltersLegacy)) { -+ adblock_filtering_configuration_->AddCustomFilter(filter); -+ VLOG(1) << "[eyeo] Migrated " << filter -+ << " from kAdblockCustomFiltersLegacy pref"; -+ } ++ public_deps = [ ++ ":common", ++ "//base", ++ ] +} + -+void AdblockControllerImpl::InstallLanguageBasedRecommendedSubscriptions() { -+ bool language_specific_subscription_installed = false; -+ for (const auto& subscription : known_subscriptions_) { -+ if (subscription.first_run == -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch && -+ std::find(subscription.languages.begin(), subscription.languages.end(), -+ language_) != subscription.languages.end()) { -+ VLOG(1) << "[eyeo] Using recommended subscription for language \"" -+ << language_ << "\": " << subscription.title; -+ language_specific_subscription_installed = true; -+ InstallSubscription(subscription.url); -+ } -+ } -+ if (language_specific_subscription_installed) { -+ return; -+ } -+ -+ // If there's no language-specific recommended subscription, see if we may -+ // install the default subscription.. -+ if (base::ranges::any_of( -+ known_subscriptions_, [&](const KnownSubscriptionInfo& subscription) { -+ return subscription.url == DefaultSubscriptionUrl() && -+ subscription.first_run != -+ SubscriptionFirstRunBehavior::Ignore; -+ })) { -+ VLOG(1) << "[eyeo] Using the default subscription for language \"" -+ << language_ << "\""; -+ InstallSubscription(DefaultSubscriptionUrl()); -+ } -+ VLOG(1) << "[eyeo] No default subscription found, neither " -+ "language-specific, nor generic."; -+} ++source_set("unit_tests") { ++ testonly = true ++ sources = [ ++ "test/adblock_utils_test.cc", ++ "test/flatbuffer_data_test.cc", ++ ] + -+std::vector> -+AdblockControllerImpl::GetSubscriptionsThatMatchConfiguration() const { -+ return subscription_service_->GetCurrentSubscriptions( -+ adblock_filtering_configuration_); ++ deps = [ ++ ":common", ++ ":utils", ++ "//base/test:test_support", ++ "//components/adblock/core/subscription:subscription", ++ "//testing/gtest", ++ ] +} -+ -+} // namespace adblock -diff --git a/components/adblock/core/adblock_controller_impl.h b/components/adblock/core/adblock_controller_impl.h +diff --git a/components/adblock/core/common/adblock_constants.cc b/components/adblock/core/common/adblock_constants.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/adblock_controller_impl.h -@@ -0,0 +1,95 @@ ++++ b/components/adblock/core/common/adblock_constants.cc +@@ -0,0 +1,164 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -9919,89 +8773,158 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_IMPL_H_ ++#include "components/adblock/core/common/adblock_constants.h" + -+#include -+#include ++#include "base/base64.h" ++#include "components/adblock/core/hash/schema_hash.h" ++#include "components/adblock/core/schema/filter_list_schema_generated.h" + -+#include "base/memory/raw_ptr.h" -+#include "base/memory/weak_ptr.h" -+#include "base/sequence_checker.h" -+#include "components/adblock/core/adblock_controller.h" -+#include "components/adblock/core/configuration/filtering_configuration.h" -+#include "components/adblock/core/subscription/subscription_config.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/prefs/pref_member.h" ++namespace adblock { + -+class GURL; -+class PrefService; ++const char kSiteKeyHeaderKey[] = "x-adblock-key"; + -+namespace adblock { ++const char kAllowlistEverythingFilter[] = "@@*$document"; + -+/** -+ * @brief Implementation of the AdblockController interface. Uses a -+ * FilteringConfiguration as the backend for all the state set via the -+ * interface. -+ */ -+class AdblockControllerImpl : public AdblockController { -+ public: -+ AdblockControllerImpl(FilteringConfiguration* adblock_filtering_configuration, -+ SubscriptionService* subscription_service, -+ const std::string& locale, -+ std::vector known_subscriptions); -+ ~AdblockControllerImpl() override; ++const char kAdblockFilteringConfigurationName[] = "adblock"; + -+ AdblockControllerImpl(const AdblockControllerImpl&) = delete; -+ AdblockControllerImpl& operator=(const AdblockControllerImpl&) = delete; -+ AdblockControllerImpl(AdblockControllerImpl&&) = delete; -+ AdblockControllerImpl& operator=(AdblockControllerImpl&&) = delete; ++const char kBlankHtml[] = ++ "data:text/html,"; + -+ void SetAdblockEnabled(bool enabled) override; -+ bool IsAdblockEnabled() const override; -+ void SetAcceptableAdsEnabled(bool enabled) override; -+ bool IsAcceptableAdsEnabled() const override; ++const char kBlankMp3[] = ++ "data:audio/" ++ "mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjIwLjEwMAAAAAAAAAAAAAAA//" ++ "tUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAGAAADAABgYGBg" ++ "YGBgYGBgYGBgYGBggICAgICAgICAgICAgICAgICgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwM" ++ "DAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4P////////////////////" ++ "8AAAAATGF2YzU4LjM1AAAAAAAAAAAAAAAAJAYAAAAAAAAAAwDVxttG//" ++ "sUZAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwVVVVVVVVVVVVVVVV" ++ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//" ++ "sUZB4P8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV" ++ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//" ++ "sUZDwP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV" ++ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//" ++ "sUZFoP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV" ++ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//" ++ "sUZHgP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV" ++ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//" ++ "sUZJYP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV" ++ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"; + -+ void InstallSubscription(const GURL& url) override; -+ void UninstallSubscription(const GURL& url) override; -+ std::vector> GetInstalledSubscriptions() -+ const override; ++const char kBlankMp4[] = ++ "data:video/" ++ "mp4;base64," ++ "AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAuJtZGF0AAACrwYF//" ++ "+r3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2MCByMzAxMU0gY2RlOWE5MyAtIEguMjY0" ++ "L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMjAgLSBodHRwOi8vd3d3LnZpZG" ++ "VvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0xIHJlZj0zIGRlYmxvY2s9MTow" ++ "OjAgYW5hbHlzZT0weDM6MHgxMTMgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC" ++ "4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MCB0cmVsbGlzPTEgOHg4ZGN0" ++ "PTEgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LT" ++ "IgdGhyZWFkcz0yIGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRl" ++ "Y2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT" ++ "0wIGJmcmFtZXM9MyBiX3B5cmFtaWQ9MiBiX2FkYXB0PTEgYl9iaWFzPTAgZGlyZWN0PTEgd2Vp" ++ "Z2h0Yj0xIG9wZW5fZ29wPTAgd2VpZ2h0cD0yIGtleWludD0yNTAga2V5aW50X21pbj0yNSBzY2" ++ "VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmNfbG9va2FoZWFkPTQwIHJjPWNyZiBtYnRyZWU9" ++ "MSBjcmY9MjMuMCBxY29tcD0wLjYwIHFwbWluPTAgcXBtYXg9NjkgcXBzdGVwPTQgaXBfcmF0aW" ++ "89MS40MCBhcT0xOjEuMDAAgAAAACNliIQAK//" ++ "+9dvzLK5umjbe9jc2CT9EPcfnoOYC2tjtP+" ++ "go4QAAAwRtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAAKAABAAABAAAAAAAAAAAAAAAA" ++ "AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" ++ "AAAAAAAAACAAACLnRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAKAAAAAAAAAAA" ++ "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAZAAAADgAAAAAAC" ++ "RlZHRzAAAAHGVsc3QAAAAAAAAAAQAAACgAAAAAAAEAAAAAAaZtZGlhAAAAIG1kaGQAAAAAAAAA" ++ "AAAAAAAAADIAAAACAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSG" ++ "FuZGxlcgAAAAFRbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAA" ++ "AAABAAAADHVybCAAAAABAAABEXN0YmwAAACtc3RzZAAAAAAAAAABAAAAnWF2YzEAAAAAAAAAAQ" ++ "AAAAAAAAAAAAAAAAAAAAAAZAA4AEgAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" ++ "AAAAAAAAAAAAAAAY//8AAAA3YXZjQwFkAAr/" ++ "4QAaZ2QACvNlHJ42JwEQAAADABAAAAMDIPEiWWABAAZo6+PLIsD8+" ++ "PgAAAAAEHBhc3AAAAABAAAAAQAAABhzdHRzAAAAAAAAAAEAAAABAAACAAAAABxzdHNjAAAAAAA" ++ "AAAEAAAABAAAAAQAAAAEAAAAUc3RzegAAAAAAAALaAAAAAQAAABRzdGNvAAAAAAAAAAEAAAAwA" ++ "AAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAA" ++ "taWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1OC40NS4xMDA="; + -+ void AddAllowedDomain(const std::string& domain) override; -+ void RemoveAllowedDomain(const std::string& domain) override; -+ std::vector GetAllowedDomains() const override; ++const char kBlankGif[] = ++ "data:image/gif;base64,R0lGODlhAQABAIABAAAAAP///" ++ "yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; + -+ void AddCustomFilter(const std::string& filter) override; -+ void RemoveCustomFilter(const std::string& filter) override; -+ std::vector GetCustomFilters() const override; ++const char kBlankPng2x2[] = ++ "data:image/" ++ "png;base64," ++ "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAC0lEQ" ++ "VQI12NgQAcAABIAAe+JVKQAAAAASUVORK5CYII="; + -+ std::vector GetKnownSubscriptions() const override; ++const char kBlankPng3x2[] = ++ "data:image/" ++ "png;base64," ++ "iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAC0lEQVQI12NgwAUAABoAASRETu" ++ "UAAAAASUVORK5CYII="; + -+ void RunFirstRunLogic(PrefService* pref_service); -+ void MigrateLegacyPrefs(PrefService* pref_service); ++const char kBlankPng32x32[] = ++ "data:image/" ++ "png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGklEQVRYw+" ++ "3BAQEAAACCIP+vbkhAAQAAAO8GECAAAZf3V9cAAAAASUVORK5CYII="; + -+ protected: -+ SEQUENCE_CHECKER(sequence_checker_); -+ void NotifySubscriptionChanged(const GURL& subscription_url); -+ void InstallLanguageBasedRecommendedSubscriptions(); -+ std::vector> -+ GetSubscriptionsThatMatchConfiguration() const; ++const std::string& CurrentSchemaVersion() { ++ static std::string kCurrentSchemaVersion = ++ base::Base64Encode(kSha256_filter_list_schema_generated_h); ++ return kCurrentSchemaVersion; ++} + -+ raw_ptr adblock_filtering_configuration_; -+ raw_ptr subscription_service_; -+ std::string language_; -+ std::vector known_subscriptions_; -+ base::WeakPtrFactory weak_ptr_factory_{this}; -+}; ++const GURL& TestPagesSubscriptionUrl() { ++ static GURL kTestPagesUrl( ++ "https://abptestpages.org/en/abp-testcase-subscription.txt"); ++ return kTestPagesUrl; ++} + -+} // namespace adblock ++const GURL& CustomFiltersUrl() { ++ static GURL kCustomFiltersUrl("adblock:custom"); ++ return kCustomFiltersUrl; ++} + -+#endif // COMPONENTS_ADBLOCK_CORE_ADBLOCK_CONTROLLER_IMPL_H_ -diff --git a/components/adblock/core/adblock_switches.cc b/components/adblock/core/adblock_switches.cc ++base::StringPiece RewriteUrl(flat::AbpResource type) { ++ switch (type) { ++ case flat::AbpResource_BlankText: ++ return "data:text/plain,"; ++ case flat::AbpResource_BlankCss: ++ return "data:text/css,"; ++ case flat::AbpResource_BlankJs: ++ return "data:application/javascript,"; ++ case flat::AbpResource_BlankHtml: ++ return kBlankHtml; ++ case flat::AbpResource_BlankMp3: ++ return kBlankMp3; ++ case flat::AbpResource_BlankMp4: ++ return kBlankMp4; ++ case flat::AbpResource_TransparentGif1x1: ++ return kBlankGif; ++ case flat::AbpResource_TransparentPng2x2: ++ return kBlankPng2x2; ++ case flat::AbpResource_TransparentPng3x2: ++ return kBlankPng3x2; ++ case flat::AbpResource_TransparentPng32x32: ++ return kBlankPng32x32; ++ default: ++ return {}; ++ } ++} ++ ++bool g_eyeo_disable_filtering_by_default = EYEO_DISABLE_FILTERING_BY_DEFAULT; ++ ++bool IsEyeoFilteringDisabledByDefault() { ++ return g_eyeo_disable_filtering_by_default; ++} ++ ++base::AutoReset OverrideEyeoFilteringDisabledByDefault(bool val) { ++ return base::AutoReset(&g_eyeo_disable_filtering_by_default, val); ++} ++ ++} // namespace adblock +diff --git a/components/adblock/core/common/adblock_constants.h b/components/adblock/core/common/adblock_constants.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/adblock_switches.cc -@@ -0,0 +1,26 @@ ++++ b/components/adblock/core/common/adblock_constants.h +@@ -0,0 +1,48 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -10019,54 +8942,42 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/adblock_switches.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_CONSTANTS_H_ ++#define COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_CONSTANTS_H_ + -+namespace adblock::switches { ++#include "base/auto_reset.h" ++#include "base/strings/string_piece.h" ++#include "url/gurl.h" + -+const char kDisableAcceptableAds[] = "disable-aa"; -+const char kDisableAdblock[] = "disable-adblock"; -+const char kDisableEyeoFiltering[] = "disable-eyeo-filtering"; ++namespace adblock { + -+} // namespace adblock::switches -diff --git a/components/adblock/core/adblock_switches.h b/components/adblock/core/adblock_switches.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/adblock_switches.h -@@ -0,0 +1,29 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++namespace flat { ++enum AbpResource : int8_t; ++} + -+#ifndef COMPONENTS_ADBLOCK_CORE_ADBLOCK_SWITCHES_H_ -+#define COMPONENTS_ADBLOCK_CORE_ADBLOCK_SWITCHES_H_ ++extern const char kSiteKeyHeaderKey[]; ++extern const char kAllowlistEverythingFilter[]; ++extern const char kAdblockFilteringConfigurationName[]; + -+namespace adblock::switches { ++const std::string& CurrentSchemaVersion(); ++const GURL& TestPagesSubscriptionUrl(); ++const GURL& CustomFiltersUrl(); ++base::StringPiece RewriteUrl(flat::AbpResource type); + -+extern const char kDisableAcceptableAds[]; -+extern const char kDisableAdblock[]; -+extern const char kDisableEyeoFiltering[]; ++bool IsEyeoFilteringDisabledByDefault(); + -+} // namespace adblock::switches ++// Override result of IsEyeoFilteringDisabledByDefault() for the ++// duration of the returned AutoReset's lifetime. Used for testing. ++base::AutoReset OverrideEyeoFilteringDisabledByDefault(bool val); + -+#endif // COMPONENTS_ADBLOCK_CORE_ADBLOCK_SWITCHES_H_ -diff --git a/components/adblock/core/adblock_telemetry_service.cc b/components/adblock/core/adblock_telemetry_service.cc ++} // namespace adblock ++ ++#endif // COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_CONSTANTS_H_ +diff --git a/components/adblock/core/common/adblock_prefs.cc b/components/adblock/core/common/adblock_prefs.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/adblock_telemetry_service.cc -@@ -0,0 +1,258 @@ ++++ b/components/adblock/core/common/adblock_prefs.cc +@@ -0,0 +1,122 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -10084,252 +8995,167 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/adblock_telemetry_service.h" ++#include "components/adblock/core/common/adblock_prefs.h" + -+#include ++#include "base/logging.h" ++#include "components/prefs/pref_registry_simple.h" + -+#include "base/barrier_callback.h" -+#include "base/functional/bind.h" -+#include "base/memory/weak_ptr.h" -+#include "base/strings/string_number_conversions.h" -+#include "base/strings/string_util.h" -+#include "base/strings/stringprintf.h" -+#include "base/strings/utf_string_conversions.h" -+#include "base/time/time.h" -+#include "base/timer/timer.h" -+#include "components/adblock/core/common/adblock_prefs.h" -+#include "components/prefs/pref_service.h" -+#include "net/base/load_flags.h" -+#include "services/network/public/cpp/resource_request.h" -+#include "services/network/public/cpp/simple_url_loader.h" -+#include "services/network/public/mojom/url_response_head.mojom.h" ++namespace adblock::common::prefs { + -+namespace adblock { ++// Whether to block ads ++const char kEnableAdblockLegacy[] = "adblock.enable"; + -+namespace { ++// Legacy: Whether to allow acceptable ads or block them all. ++// Used now just to map CLI switch. Otherwise use kAdblockSubscriptionsLegacy. ++const char kEnableAcceptableAdsLegacy[] = "adblock.aa_enable"; + -+const char kDataType[] = "application/json"; -+net::NetworkTrafficAnnotationTag kTrafficAnnotation = -+ net::DefineNetworkTrafficAnnotation("adblock_telemetry_request", R"( -+ semantics { -+ sender: "AdblockTelemetryService" -+ description: -+ "Messages sent to telemetry.eyeo.com to report usage statistics." -+ "Contain no user-identifiable data." -+ trigger: -+ "Periodic, several times a day." -+ data: -+ "Subject to change: " -+ "Dates of first ping, last ping and previous-to-last ping. " -+ "A non-persistent, unique ID that disambiguates pings made in the " -+ "same day. " -+ "Application name and version (ex. Chromium 86.0.4240.183). " -+ "Platform name and version (ex. Windows 10). " -+ "Whether Acceptable Ads are in use (yes/no)." -+ destination: WEBSITE -+ } -+ policy { -+ cookies_allowed: NO -+ setting: -+ "Enabled or disabled via 'Ad blocking' setting." -+ policy_exception_justification: -+ "Parent setting may be controlled by policy" -+ } -+ })"); ++// List of domains ad blocking will be disabled for ++const char kAdblockAllowedDomainsLegacy[] = "adblock.allowed_domains"; + -+} // namespace ++// List of custom filters added explicitly by the user ++const char kAdblockCustomFiltersLegacy[] = "adblock.custom_filters"; + -+// Represents an ongoing chain of requests relevant to a Topic. -+// A Topic is and endpoint on the Telemetry server that expects messages -+// about a domain of activity, ex. usage of Acceptable Ads or frequency of -+// filter "hits" per filter list. The browser may report on multiple topics. -+// Messages are sent periodically. The interval of communication and the -+// content of the messages is provided by a TopicProvider. -+class AdblockTelemetryService::Conversation { -+ public: -+ Conversation( -+ std::unique_ptr topic_provider, -+ scoped_refptr url_loader_factory) -+ : topic_provider_(std::move(topic_provider)), -+ url_loader_factory_(url_loader_factory) {} ++// List of recommended subscriptions ++const char kAdblockSubscriptionsLegacy[] = "adblock.subscriptions"; + -+ bool IsRequestDue() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ const auto due_time = topic_provider_->GetTimeOfNextRequest(); -+ if (due_time > base::Time::Now()) { -+ VLOG(1) << "[eyeo] Telemetry request for " -+ << topic_provider_->GetEndpointURL() -+ << " not due yet, should run at " << due_time; -+ return false; -+ } -+ if (IsRequestInFlight()) { -+ VLOG(1) << "[eyeo] Telemetry request for " -+ << topic_provider_->GetEndpointURL() << " already in-flight"; -+ return false; -+ } -+ VLOG(1) << "[eyeo] Telemetry request for " -+ << topic_provider_->GetEndpointURL() << " is due"; -+ return true; -+ } ++// Legacy: List of custom (user defined) subscriptions. ++// Use just kAdblockSubscriptionsLegacy. ++const char kAdblockCustomSubscriptionsLegacy[] = "adblock.custom_subscriptions"; + -+ void StartRequest() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ VLOG(1) << "[eyeo] Telemetry request for " -+ << topic_provider_->GetEndpointURL() << " starting now"; -+ topic_provider_->GetPayload(base::BindOnce(&Conversation::MakeRequest, -+ weak_ptr_factory_.GetWeakPtr())); -+ } ++// Whether more options item is enabled in the UI ++const char kAdblockMoreOptionsEnabled[] = "adblock.more_options"; + -+ void Stop() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ url_loader_.reset(); -+ } ++// Whether a first-run installation of preloaded subscriptions and ++// language-based recommended subscriptions is necessary. ++const char kInstallFirstStartSubscriptions[] = ++ "adblock.install_first_run_subscriptions"; + -+ const std::unique_ptr& GetTopicProvider() const { -+ return topic_provider_; -+ } ++// Dictionary mapping subscription filename to subscription content hash, ++// stored in Tracked Preferences to ensure untrusted subscription files aren't ++// added, or existing subscription files aren't modified. ++const char kSubscriptionSignatures[] = "adblock.subscription_signatures"; + -+ private: -+ bool IsRequestInFlight() { -+ return url_loader_ != nullptr || weak_ptr_factory_.HasWeakPtrs(); -+ } ++// Stores the schema version used to create currently installed subscriptions. ++// Allows discovering a need to re-install subscriptions when the schema ++// version used by this browser build is newer. ++const char kLastUsedSchemaVersion[] = "adblock.last_used_schema_version"; + -+ void MakeRequest(std::string payload) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ auto request = std::make_unique(); -+ request->url = topic_provider_->GetEndpointURL(); -+ VLOG(1) << "[eyeo] Sending request to: " << request->url; -+ request->method = net::HttpRequestHeaders::kPostMethod; -+ // The server expects authorization via a bearer token. The token may be -+ // empty in testing builds. -+ const auto auth_token = topic_provider_->GetAuthToken(); -+ if (!auth_token.empty()) { -+ request->headers.SetHeader(net::HttpRequestHeaders::kAuthorization, -+ "Bearer " + auth_token); -+ } -+ // Notify the server we're expecting a JSON response. -+ request->headers.SetHeader(net::HttpRequestHeaders::kAccept, kDataType); -+ // Disallow using cache - identical requests should be physically sent to -+ // the server. -+ request->load_flags = net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE; -+ // Omitting credentials prevents cookies from being sent. The server does -+ // not expect or parse cookies, but we want to be on the safe side, -+ // privacy-wise. -+ request->credentials_mode = network::mojom::CredentialsMode::kOmit; ++// Map of subscription URL into subscription metadata, containing ex. expiration ++// time, download count etc. Used for driving the subscription update process ++// and for setting query parameters in subscription download requests. ++const char kSubscriptionMetadata[] = "adblock.subscription_metadata"; + -+ // If any url_loader_ existed previously, it will be overwritten and its -+ // request will be cancelled. -+ url_loader_ = network::SimpleURLLoader::Create(std::move(request), -+ kTrafficAnnotation); ++// Client-generated UUID4 that uniquely identifies the server response that ++// sent kTelemetryLastPingTime. Sent along with other ping times to ++// disambiguate between other clients who send ping requests the same day. ++// Regenerated on every successful response. ++const char kTelemetryLastPingTag[] = ++ "adblock.telemetry.activeping.last_ping_tag"; + -+ VLOG(2) << "[eyeo] Payload: " << payload; -+ url_loader_->AttachStringForUpload(payload, kDataType); -+ // The Telemetry server responds with a JSON that contains a description of -+ // any potential error. We want to parse this JSON if possible, we're not -+ // content with just an HTTP error code. Process the response content even -+ // if the code is not 200. -+ url_loader_->SetAllowHttpErrorResults(true); ++// Server UTC time of last ping response, updated with every successful ++// response. Shall not be compared to client time (even UTC). Sent by the ++// telemetry server, stored as unparsed string (ex. "2022-02-08T09:30:00Z"). ++const char kTelemetryLastPingTime[] = ++ "adblock.telemetry.activeping.last_ping_time"; + -+ url_loader_->DownloadToString( -+ url_loader_factory_.get(), -+ base::BindOnce(&Conversation::OnResponseArrived, -+ base::Unretained(this)), -+ network::SimpleURLLoader::kMaxBoundedStringDownloadSize - 1); -+ } ++// Previous last ping time, gets replaced by kTelemetryLastPingTime when a new ++// successful ping response arrives. Sent in a ping request. ++const char kTelemetryPreviousLastPingTime[] = ++ "adblock.telemetry.activeping.previous_last_ping_time"; + -+ void OnResponseArrived(std::unique_ptr server_response) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ topic_provider_->ParseResponse(std::move(server_response)); -+ url_loader_.reset(); -+ } ++// Time of first recorded response for a telemetry ping request, sent along ++// with future ping requests, to further disambiguate ++// user-counting without being able to uniquely track a user. ++const char kTelemetryFirstPingTime[] = ++ "adblock.telemetry.activeping.first_ping_time"; + -+ SEQUENCE_CHECKER(sequence_checker_); -+ std::unique_ptr topic_provider_; -+ scoped_refptr url_loader_factory_; -+ std::unique_ptr url_loader_; -+ base::WeakPtrFactory weak_ptr_factory_{this}; -+}; ++// Client time, when to perform the next ping? ++// Not sent, used locally to ensure we don't ping too often. ++const char kTelemetryNextPingTime[] = ++ "adblock.telemetry.activeping.next_ping_time"; + -+AdblockTelemetryService::AdblockTelemetryService( -+ FilteringConfiguration* filtering_configuration, -+ scoped_refptr url_loader_factory, -+ base::TimeDelta initial_delay, -+ base::TimeDelta check_interval) -+ : adblock_filtering_configuration_(filtering_configuration), -+ url_loader_factory_(url_loader_factory), -+ initial_delay_(initial_delay), -+ check_interval_(check_interval) { -+ DCHECK(adblock_filtering_configuration_); -+ adblock_filtering_configuration_->AddObserver(this); ++void RegisterTelemetryPrefs(PrefRegistrySimple* registry) { ++ registry->RegisterStringPref(kTelemetryLastPingTag, ""); ++ registry->RegisterStringPref(kTelemetryLastPingTime, ""); ++ registry->RegisterStringPref(kTelemetryPreviousLastPingTime, ""); ++ registry->RegisterStringPref(kTelemetryFirstPingTime, ""); ++ registry->RegisterTimePref(kTelemetryNextPingTime, base::Time()); +} + -+AdblockTelemetryService::~AdblockTelemetryService() { -+ DCHECK(adblock_filtering_configuration_); -+ adblock_filtering_configuration_->RemoveObserver(this); -+} ++void RegisterProfilePrefs(PrefRegistrySimple* registry) { ++ registry->RegisterBooleanPref(kEnableAdblockLegacy, true); ++ registry->RegisterBooleanPref(kEnableAcceptableAdsLegacy, true); ++ registry->RegisterBooleanPref(kAdblockMoreOptionsEnabled, false); ++ registry->RegisterListPref(kAdblockAllowedDomainsLegacy, {}); ++ registry->RegisterListPref(kAdblockCustomFiltersLegacy, {}); ++ registry->RegisterListPref(kAdblockSubscriptionsLegacy, {}); ++ registry->RegisterListPref(kAdblockCustomSubscriptionsLegacy, {}); ++ registry->RegisterBooleanPref(kInstallFirstStartSubscriptions, true); ++ registry->RegisterDictionaryPref(kSubscriptionSignatures); ++ registry->RegisterStringPref(kLastUsedSchemaVersion, ""); ++ registry->RegisterDictionaryPref(kSubscriptionMetadata); ++ RegisterTelemetryPrefs(registry); + -+void AdblockTelemetryService::AddTopicProvider( -+ std::unique_ptr topic_provider) { -+ ongoing_conversations_.push_back(std::make_unique( -+ std::move(topic_provider), url_loader_factory_)); ++ VLOG(3) << "[eyeo] Registered prefs"; +} + -+void AdblockTelemetryService::Start() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ OnEnabledStateChangedInternal(); -+} ++} // namespace adblock::common::prefs +diff --git a/components/adblock/core/common/adblock_prefs.h b/components/adblock/core/common/adblock_prefs.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/common/adblock_prefs.h +@@ -0,0 +1,46 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ + -+void AdblockTelemetryService::OnEnabledStateChanged(FilteringConfiguration*) { -+ OnEnabledStateChangedInternal(); -+} ++#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_PREFS_H_ ++#define COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_PREFS_H_ + -+void AdblockTelemetryService::GetTopicProvidersDebugInfo( -+ TopicProvidersDebugInfoCallback service_callback) const { -+ const auto barrier_callback = base::BarrierCallback( -+ ongoing_conversations_.size(), std::move(service_callback)); -+ for (const auto& conversation : ongoing_conversations_) { -+ conversation->GetTopicProvider()->FetchDebugInfo(barrier_callback); -+ } -+} ++class PrefRegistrySimple; + -+void AdblockTelemetryService::OnEnabledStateChangedInternal() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ if (adblock_filtering_configuration_->IsEnabled() && !timer_.IsRunning()) { -+ VLOG(1) << "[eyeo] Starting periodic Telemetry requests"; -+ timer_.Start(FROM_HERE, initial_delay_, -+ base::BindRepeating(&AdblockTelemetryService::RunPeriodicCheck, -+ base::Unretained(this))); -+ } else if (!adblock_filtering_configuration_->IsEnabled() && -+ timer_.IsRunning()) { -+ VLOG(1) << "[eyeo] Stopping periodic Telemetry requests"; -+ Shutdown(); -+ } -+} ++namespace adblock::common::prefs { + -+void AdblockTelemetryService::RunPeriodicCheck() { -+ for (auto& conversation : ongoing_conversations_) { -+ if (conversation->IsRequestDue()) { -+ conversation->StartRequest(); -+ } -+ } -+ timer_.Start(FROM_HERE, check_interval_, -+ base::BindRepeating(&AdblockTelemetryService::RunPeriodicCheck, -+ base::Unretained(this))); -+} ++extern const char kEnableAdblockLegacy[]; ++extern const char kEnableAcceptableAdsLegacy[]; ++extern const char kAdblockAllowedDomainsLegacy[]; ++extern const char kAdblockCustomFiltersLegacy[]; ++extern const char kAdblockSubscriptionsLegacy[]; ++extern const char kAdblockCustomSubscriptionsLegacy[]; ++extern const char kAdblockMoreOptionsEnabled[]; ++extern const char kInstallFirstStartSubscriptions[]; ++extern const char kSubscriptionSignatures[]; ++extern const char kLastUsedSchemaVersion[]; ++extern const char kSubscriptionMetadata[]; ++extern const char kTelemetryLastPingTag[]; ++extern const char kTelemetryLastPingTime[]; ++extern const char kTelemetryPreviousLastPingTime[]; ++extern const char kTelemetryFirstPingTime[]; ++extern const char kTelemetryNextPingTime[]; + -+void AdblockTelemetryService::Shutdown() { -+ timer_.Stop(); -+ for (auto& conversation : ongoing_conversations_) { -+ conversation->Stop(); -+ } -+} ++void RegisterProfilePrefs(PrefRegistrySimple* registry); + -+} // namespace adblock -diff --git a/components/adblock/core/adblock_telemetry_service.h b/components/adblock/core/adblock_telemetry_service.h ++} // namespace adblock::common::prefs ++ ++#endif // COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_PREFS_H_ +diff --git a/components/adblock/core/common/adblock_utils.cc b/components/adblock/core/common/adblock_utils.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/adblock_telemetry_service.h -@@ -0,0 +1,120 @@ ++++ b/components/adblock/core/common/adblock_utils.cc +@@ -0,0 +1,171 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -10347,195 +9173,165 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_ADBLOCK_TELEMETRY_SERVICE_H_ -+#define COMPONENTS_ADBLOCK_CORE_ADBLOCK_TELEMETRY_SERVICE_H_ ++#include "components/adblock/core/common/adblock_utils.h" + -+#include -+#include -+#include ++#include + -+#include "base/functional/callback_forward.h" -+#include "base/memory/raw_ptr.h" -+#include "base/sequence_checker.h" -+#include "base/time/time.h" -+#include "base/timer/timer.h" -+#include "components/adblock/core/configuration/filtering_configuration.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/keyed_service/core/keyed_service.h" -+#include "services/network/public/cpp/shared_url_loader_factory.h" ++#include "base/containers/flat_map.h" ++#include "base/json/string_escape.h" ++#include "base/logging.h" ++#include "base/memory/scoped_refptr.h" ++#include "base/strings/safe_sprintf.h" ++#include "base/strings/string_split.h" ++#include "base/strings/string_util.h" ++#include "base/strings/utf_string_conversions.h" ++#include "components/adblock/core/common/adblock_constants.h" ++#include "components/grit/components_resources.h" ++#include "components/version_info/version_info.h" ++#include "net/http/http_response_headers.h" ++#include "third_party/icu/source/i18n/unicode/regex.h" ++#include "third_party/re2/src/re2/re2.h" ++#include "ui/base/resource/resource_bundle.h" +#include "url/gurl.h" + -+namespace network { -+class SimpleURLLoader; -+} // namespace network -+ +namespace adblock { -+/** -+ * @brief Sends periodic pings to eyeo in order to count active users. Executed -+ * from Browser process UI main thread. -+ */ -+class AdblockTelemetryService : public KeyedService, -+ public FilteringConfiguration::Observer { -+ public: -+ // Provides data and behavior relevant for a Telemetry "topic". A topic could -+ // be "counting users" or "reporting filter list hits" for example. -+ class TopicProvider { -+ public: -+ using PayloadCallback = base::OnceCallback; -+ using DebugInfoCallback = base::OnceCallback; -+ virtual ~TopicProvider() = default; -+ // Endpoint URL on the Telemetry server onto which requests should be sent. -+ virtual GURL GetEndpointURL() const = 0; -+ // Authorization bearer token for the endpoint defined by GetEndpointURL(). -+ virtual std::string GetAuthToken() const = 0; -+ // Data uploaded with the request, should be valid for the schema -+ // present on the server. Async to allow querying asynchronous data sources. -+ virtual void GetPayload(PayloadCallback callback) const = 0; -+ // Returns the desired time when AdblockTelemetryService should make the -+ // next network request. -+ virtual base::Time GetTimeOfNextRequest() const = 0; -+ // Parses the response returned by the Telemetry server. |response_content| -+ // may be null. Implementation is free to implement a "retry" in case of -+ // response errors via GetTimeToNextRequest(). -+ virtual void ParseResponse( -+ std::unique_ptr response_content) = 0; -+ // Gets debugging info to be logged on chrome://adblock-internals. Do not -+ // put any secrets here (tokens, api keys). Asynchronous to allow reusing -+ // the async logic of GetPayload, if needed. -+ virtual void FetchDebugInfo(DebugInfoCallback callback) const = 0; -+ }; -+ AdblockTelemetryService( -+ FilteringConfiguration* filtering_configuration, -+ scoped_refptr url_loader_factory, -+ base::TimeDelta initial_delay, -+ base::TimeDelta check_interval); -+ ~AdblockTelemetryService() override; -+ using TopicProvidersDebugInfoCallback = -+ base::OnceCallback)>; ++namespace utils { ++namespace { ++constexpr char kLanguagesSeparator[] = ","; ++} + -+ // Add all required topic providers before calling Start(). -+ void AddTopicProvider(std::unique_ptr topic_provider); ++std::string CreateDomainAllowlistingFilter(const std::string& domain) { ++ return "@@||" + base::ToLowerASCII(domain) + ++ "^$document,domain=" + base::ToLowerASCII(domain); ++} + -+ // Starts periodic Telemetry requests, provided ad-blocking is enabled. -+ // If ad blocking is disabled, the schedule will instead start when -+ // ad blocking becomes enabled. -+ void Start(); ++SiteKey GetSitekeyHeader( ++ const scoped_refptr& headers) { ++ size_t iterator = 0; ++ std::string name; ++ std::string value; ++ while (headers->EnumerateHeaderLines(&iterator, &name, &value)) { ++ std::transform(name.begin(), name.end(), name.begin(), ++ [](unsigned char c) { return std::tolower(c); }); ++ if (name == adblock::kSiteKeyHeaderKey) { ++ return SiteKey{value}; ++ } ++ } ++ return {}; ++} + -+ // KeyedService: -+ void Shutdown() override; ++AppInfo::AppInfo() = default; + -+ // FilteringConfiguration::Observer -+ void OnEnabledStateChanged(FilteringConfiguration* config) override; ++AppInfo::~AppInfo() = default; + -+ // Collects debug information from all topic providers. Runs |callback| once -+ // all topic providers have provided their info. -+ void GetTopicProvidersDebugInfo( -+ TopicProvidersDebugInfoCallback callback) const; -+ -+ private: -+ void OnEnabledStateChangedInternal(); -+ void RunPeriodicCheck(); -+ -+ SEQUENCE_CHECKER(sequence_checker_); -+ raw_ptr adblock_filtering_configuration_; -+ scoped_refptr url_loader_factory_; -+ base::TimeDelta initial_delay_; -+ base::TimeDelta check_interval_; -+ -+ class Conversation; -+ std::vector> ongoing_conversations_; -+ base::OneShotTimer timer_; -+}; -+ -+} // namespace adblock ++AppInfo::AppInfo(const AppInfo&) = default; + -+#endif // COMPONENTS_ADBLOCK_CORE_ADBLOCK_TELEMETRY_SERVICE_H_ -diff --git a/components/adblock/core/classifier/BUILD.gn b/components/adblock/core/classifier/BUILD.gn -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/classifier/BUILD.gn -@@ -0,0 +1,76 @@ -+# This file is part of eyeo Chromium SDK, -+# Copyright (C) 2006-present eyeo GmbH -+# eyeo Chromium SDK is free software: you can redistribute it and/or modify -+# it under the terms of the GNU General Public License version 3 as -+# published by the Free Software Foundation. -+# eyeo Chromium SDK is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# You should have received a copy of the GNU General Public License -+# along with eyeo Chromium SDK. If not, see . ++AppInfo GetAppInfo() { ++ AppInfo info; + -+source_set("classifier") { -+ sources = [ -+ "resource_classifier.cc", -+ "resource_classifier.h", -+ "resource_classifier_impl.cc", -+ "resource_classifier_impl.h", -+ ] ++#if defined(EYEO_APPLICATION_NAME) ++ info.name = EYEO_APPLICATION_NAME; ++#else ++ info.name = version_info::GetProductName(); ++#endif ++#if defined(EYEO_APPLICATION_VERSION) ++ info.version = EYEO_APPLICATION_VERSION; ++#else ++ info.version = version_info::GetVersionNumber(); ++#endif ++ base::ReplaceChars(version_info::GetOSType(), base::kWhitespaceASCII, "", ++ &info.client_os); ++ return info; ++} + -+ deps = [ "//components/adblock/core/common:utils" ] ++std::string SerializeLanguages(const std::vector languages) { ++ if (languages.empty()) { ++ return {}; ++ } + -+ public_deps = [ -+ "//base", -+ "//components/adblock/core/common", -+ "//components/adblock/core/subscription:subscription", -+ "//net:net", -+ "//url:url", -+ ] ++ return std::accumulate(std::next(languages.begin()), languages.end(), ++ languages[0], ++ [](const std::string& a, const std::string& b) { ++ return a + kLanguagesSeparator + b; ++ }); +} + -+source_set("test_support") { -+ testonly = true -+ sources = [ -+ "test/mock_resource_classifier.cc", -+ "test/mock_resource_classifier.h", -+ ] ++std::vector DeserializeLanguages(const std::string languages) { ++ return base::SplitString(languages, kLanguagesSeparator, ++ base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); ++} + -+ deps = [ -+ ":classifier", -+ "//testing/gmock", -+ "//testing/gtest", -+ ] ++std::vector ConvertURLs(const std::vector& input) { ++ std::vector output; ++ output.reserve(input.size()); ++ std::transform(std::begin(input), std::end(input), std::back_inserter(output), ++ [](const GURL& gurl) { return gurl.spec(); }); ++ return output; +} + -+source_set("unit_tests") { -+ testonly = true -+ sources = [ "test/resource_classifier_impl_test.cc" ] ++std::string ConvertBaseTimeToABPFilterVersionFormat(const base::Time& date) { ++ base::Time::Exploded exploded; ++ // we receive in GMT and convert to UTC ( which has the same time ) ++ date.UTCExplode(&exploded); ++ char buff[16]; ++ base::strings::SafeSPrintf(buff, "%04d%02d%02d%02d%02d", exploded.year, ++ exploded.month, exploded.day_of_month, ++ exploded.hour, exploded.minute); ++ return std::string(buff); ++} + -+ deps = [ -+ ":test_support", -+ "//components/adblock/core", -+ "//components/adblock/core/subscription:test_support", -+ "//net:test_support", -+ "//testing/gtest", -+ ] ++std::unique_ptr MakeFlatbufferDataFromResourceBundle( ++ int resource_id) { ++ return std::make_unique( ++ ui::ResourceBundle::GetSharedInstance().LoadDataResourceString( ++ resource_id)); +} + -+source_set("perf_tests") { -+ testonly = true -+ sources = [ "test/resource_classifier_perftest.cc" ] ++bool RegexMatches(base::StringPiece pattern, ++ base::StringPiece input, ++ bool case_sensitive) { ++ re2::RE2::Options options; ++ options.set_case_sensitive(case_sensitive); ++ options.set_never_capture(true); ++ options.set_log_errors(false); ++ options.set_encoding(re2::RE2::Options::EncodingLatin1); ++ const re2::RE2 re2_pattern(pattern.data(), options); ++ if (re2_pattern.ok()) { ++ return re2::RE2::PartialMatch(input.data(), re2_pattern); ++ } ++ VLOG(2) << "[eyeo] RE2 does not support filter pattern " << pattern ++ << " and return with error message: " << re2_pattern.error(); + -+ deps = [ -+ ":classifier", -+ "//components/adblock/core/converter", -+ "//testing/gtest", -+ "//third_party/zlib/google:compression_utils", -+ ] ++ // Maximum length of the string to match to avoid causing an icu::RegexMatcher ++ // stack overflow. (crbug.com/1198219) ++ if (input.size() > url::kMaxURLChars) { ++ return false; ++ } ++ const icu::UnicodeString icu_pattern(pattern.data(), pattern.length()); ++ const icu::UnicodeString icu_input(input.data(), input.length()); ++ UErrorCode status = U_ZERO_ERROR; ++ const auto icu_case_sensetive = case_sensitive ? 0u : UREGEX_CASE_INSENSITIVE; ++ icu::RegexMatcher matcher(icu_pattern, icu_case_sensetive, status); + -+ data = [ -+ "//components/test/data/adblock/easylist.txt.gz", -+ "//components/test/data/adblock/exceptionrules.txt.gz", -+ "//components/test/data/adblock/anticv.txt.gz", -+ "//components/test/data/adblock/longurl.txt.gz", -+ ] ++ // is pattern supported by icu regex ++ if (U_FAILURE(status)) { ++ // should not happen as validation should take place before reaching ++ // this point ++ DLOG(ERROR) << "[eyeo] None of the regex engines can use pattern: " ++ << pattern; ++ return false; ++ } ++ matcher.reset(icu_input); ++ return matcher.find(0, status); +} -diff --git a/components/adblock/core/classifier/resource_classifier.cc b/components/adblock/core/classifier/resource_classifier.cc ++ ++} // namespace utils ++} // namespace adblock +diff --git a/components/adblock/core/common/adblock_utils.h b/components/adblock/core/common/adblock_utils.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/classifier/resource_classifier.cc -@@ -0,0 +1,24 @@ ++++ b/components/adblock/core/common/adblock_utils.h +@@ -0,0 +1,80 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -10553,18 +9349,74 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/classifier/resource_classifier.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_UTILS_H_ ++#define COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_UTILS_H_ ++ ++#include ++ ++#include "base/functional/callback_forward.h" ++#include "base/memory/scoped_refptr.h" ++#include "base/time/time.h" ++#include "components/adblock/core/common/flatbuffer_data.h" ++#include "components/adblock/core/common/sitekey.h" ++ ++class GURL; ++ ++namespace net { ++class HttpResponseHeaders; ++} + +namespace adblock { + -+ResourceClassifier::~ResourceClassifier() = default; ++class Subscription; ++ ++namespace utils { ++ ++struct AppInfo { ++ AppInfo(); ++ ~AppInfo(); ++ AppInfo(const AppInfo&); ++ std::string name; ++ std::string version; ++ std::string client_os; ++}; ++ ++std::string CreateDomainAllowlistingFilter(const std::string& domain); ++ ++SiteKey GetSitekeyHeader( ++ const scoped_refptr& headers); ++ ++AppInfo GetAppInfo(); ++ ++std::string SerializeLanguages(const std::vector languages); ++ ++std::vector DeserializeLanguages(const std::string languages); ++ ++std::vector ConvertURLs(const std::vector& input); + ++// converts |date| into abp version format ex: 202107210821 ++// in UTC format as necessary for server ++ ++std::string ConvertBaseTimeToABPFilterVersionFormat(const base::Time& date); ++ ++// Creates a FlatbufferData object that holds data from the ResourceBundle ++ ++std::unique_ptr MakeFlatbufferDataFromResourceBundle( ++ int resource_id); ++ ++bool RegexMatches(base::StringPiece pattern, ++ base::StringPiece input, ++ bool case_sensitive); ++ ++} // namespace utils +} // namespace adblock -diff --git a/components/adblock/core/classifier/resource_classifier.h b/components/adblock/core/classifier/resource_classifier.h ++ ++#endif // COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_UTILS_H_ +diff --git a/components/adblock/core/common/content_type.cc b/components/adblock/core/common/content_type.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/classifier/resource_classifier.h -@@ -0,0 +1,90 @@ ++++ b/components/adblock/core/common/content_type.cc +@@ -0,0 +1,91 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -10582,84 +9434,138 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_H_ -+#define COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_H_ -+ -+#include -+ -+#include "base/memory/ref_counted.h" -+#include "base/memory/scoped_refptr.h" +#include "components/adblock/core/common/content_type.h" -+#include "components/adblock/core/common/sitekey.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "net/http/http_response_headers.h" -+#include "url/gurl.h" + +namespace adblock { + -+// Classifies resources encountered on websites. -+// May be called from multiple threads, thread-safe and immutable. -+class ResourceClassifier -+ : public base::RefCountedThreadSafe { -+ public: -+ struct ClassificationResult { -+ enum class Decision { -+ // The resource should be blocked as there's a blocking filter in at least -+ // one of the Subscriptions. -+ Blocked, -+ // There is a blocking filter but at least one of the Subscriptions also -+ // has an overriding allowing filter. -+ Allowed, -+ // There are no filters that apply to this resource. -+ Ignored, -+ } decision; -+ // If decision is Blocked or Allowed, |decisive_subscription| has the URL of -+ // the subscription that had the decisive filter. -+ GURL decisive_subscription; -+ // If decision is Blocked or Allowed, |decisive_configuration_name| has the -+ // name of the FilteringConfiguration that contain matched filter. -+ std::string decisive_configuration_name; -+ }; ++std::string ContentTypeToString(ContentType content_type) { ++ switch (content_type) { ++ case ContentType::Unknown: ++ return "UNKNOWN"; ++ case ContentType::Other: ++ return "OTHER"; ++ case ContentType::Script: ++ return "SCRIPT"; ++ case ContentType::Image: ++ return "IMAGE"; ++ case ContentType::Stylesheet: ++ return "STYLESHEET"; ++ case ContentType::Object: ++ return "OBJECT"; ++ case ContentType::Subdocument: ++ return "SUBDOCUMENT"; ++ case ContentType::Websocket: ++ return "WEBSOCKET"; ++ case ContentType::Webrtc: ++ return "WEBRTC"; ++ case ContentType::Ping: ++ return "PING"; ++ case ContentType::Xmlhttprequest: ++ return "XMLHTTPREQUEST"; ++ case ContentType::Media: ++ return "MEDIA"; ++ case ContentType::Font: ++ return "FONT"; ++ case ContentType::WebBundle: ++ return "WEBBUNDLE"; ++ case ContentType::Default: ++ return "DEFAULT"; ++ } ++} + -+ virtual ClassificationResult ClassifyRequest( -+ const SubscriptionService::Snapshot subscription_collections, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey) const = 0; ++// TODO(atokodi): Use StringPiece ++ContentType ContentTypeFromString(const std::string& content_type) { ++ if (content_type == "other" || content_type == "xbl" || ++ content_type == "dtd") { ++ return ContentType::Other; ++ } else if (content_type == "script") { ++ return ContentType::Script; ++ } else if (content_type == "image" || content_type == "background") { ++ return ContentType::Image; ++ } else if (content_type == "stylesheet") { ++ return ContentType::Stylesheet; ++ } else if (content_type == "object") { ++ return ContentType::Object; ++ } else if (content_type == "subdocument") { ++ return ContentType::Subdocument; ++ } else if (content_type == "websocket") { ++ return ContentType::Websocket; ++ } else if (content_type == "webrtc") { ++ return ContentType::Webrtc; ++ } else if (content_type == "ping") { ++ return ContentType::Ping; ++ } else if (content_type == "xmlhttprequest") { ++ return ContentType::Xmlhttprequest; ++ } else if (content_type == "media") { ++ return ContentType::Media; ++ } else if (content_type == "font") { ++ return ContentType::Font; ++ } else if (content_type == "webbundle") { ++ return ContentType::WebBundle; ++ } else { ++ return ContentType::Unknown; ++ } ++} + -+ virtual ClassificationResult ClassifyPopup( -+ const SubscriptionService::Snapshot& subscription_collections, -+ const GURL& popup_url, -+ const std::vector& opener_frame_hierarchy, -+ const SiteKey& sitekey) const = 0; ++} // namespace adblock +diff --git a/components/adblock/core/common/content_type.h b/components/adblock/core/common/content_type.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/common/content_type.h +@@ -0,0 +1,48 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ + -+ virtual ClassificationResult ClassifyResponse( -+ const SubscriptionService::Snapshot subscription_collections, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const scoped_refptr& response_headers) -+ const = 0; ++#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_CONTENT_TYPE_H_ ++#define COMPONENTS_ADBLOCK_CORE_COMMON_CONTENT_TYPE_H_ + -+ virtual absl::optional CheckRewrite( -+ const SubscriptionService::Snapshot subscription_collections, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy) const = 0; ++#include + -+ protected: -+ friend class base::RefCountedThreadSafe; -+ virtual ~ResourceClassifier(); ++namespace adblock { ++ ++enum ContentType { ++ Unknown = 0, ++ Other = 1, ++ Script = 2, ++ Image = 4, ++ Stylesheet = 8, ++ Object = 16, ++ Subdocument = 32, ++ Websocket = 128, ++ Webrtc = 256, ++ Ping = 1024, ++ Xmlhttprequest = 2048, ++ Media = 16384, ++ Font = 32768, ++ WebBundle = 65536, ++ Default = (1 << 24) - 1, +}; + ++std::string ContentTypeToString(ContentType content_type); ++ContentType ContentTypeFromString(const std::string& content_type); ++ +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_H_ -diff --git a/components/adblock/core/classifier/resource_classifier_impl.cc b/components/adblock/core/classifier/resource_classifier_impl.cc ++#endif // COMPONENTS_ADBLOCK_CORE_COMMON_CONTENT_TYPE_H_ +diff --git a/components/adblock/core/common/flatbuffer_data.cc b/components/adblock/core/common/flatbuffer_data.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/classifier/resource_classifier_impl.cc -@@ -0,0 +1,404 @@ ++++ b/components/adblock/core/common/flatbuffer_data.cc +@@ -0,0 +1,94 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -10677,398 +9583,178 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/classifier/resource_classifier_impl.h" ++#include "components/adblock/core/common/flatbuffer_data.h" + -+#include "base/strings/string_split.h" -+#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/subscription/installed_subscription.h" ++#include "absl/types/optional.h" ++#include "base/files/file_path.h" ++#include "base/files/file_util.h" ++#include "base/functional/bind.h" ++#include "base/logging.h" ++#include "base/task/task_traits.h" ++#include "base/task/thread_pool.h" + +namespace adblock { +namespace { + -+using ClassificationResult = ResourceClassifier::ClassificationResult; ++// Destroys memory mapped to a file on disk, and optionally removes the file ++// itself. Performs blocking operations, must run on a MayBlock() task runner. ++void DestroyMemoryMappedFile(std::unique_ptr memory, ++ absl::optional path_to_remove) { ++ memory.reset(); ++ // Deleting the file should happen *after* removing the memory mapping. ++ if (path_to_remove) { ++ base::DeleteFile(*path_to_remove); ++ } ++} + -+absl::optional IsHeaderFilterOverruled( -+ base::StringPiece blocking_header_filter, -+ std::set& allowing_filters) { -+ for (auto filter : allowing_filters) { -+ if (filter.header_filter.empty()) { -+ // Allowing header filters may not contain payload, allow all headers in -+ // that case. -+ return filter; -+ } -+ if (utils::RegexMatches(filter.header_filter, blocking_header_filter, -+ true)) { -+ return filter; -+ } ++} // namespace ++ ++InMemoryFlatbufferData::InMemoryFlatbufferData(std::string data) ++ : data_(std::move(data)) {} ++ ++InMemoryFlatbufferData::~InMemoryFlatbufferData() = default; ++ ++const uint8_t* InMemoryFlatbufferData::data() const { ++ return reinterpret_cast(data_.data()); ++} ++ ++size_t InMemoryFlatbufferData::size() const { ++ return data_.size(); ++} ++ ++MemoryMappedFlatbufferData::MemoryMappedFlatbufferData(base::FilePath path) ++ : permanently_remove_path_(false), path_(std::move(path)) { ++ file_ = std::make_unique(); ++ if (!file_->Initialize(path_)) { ++ file_.reset(); + } -+ return absl::nullopt; +} + -+bool ContainsHeaderValue(const scoped_refptr& headers, -+ base::StringPiece header_name, -+ const std::string& header_value) { -+ size_t iter = 0; -+ std::string value; -+ while (headers->EnumerateHeader(&iter, header_name, &value)) { -+ if (value.find(header_value) != std::string::npos) { -+ return true; -+ } ++MemoryMappedFlatbufferData::~MemoryMappedFlatbufferData() { ++ const auto path_to_remove = ++ permanently_remove_path_.load() ++ ? absl::optional(std::move(path_)) ++ : absl::nullopt; ++ base::ThreadPool::PostTask( ++ FROM_HERE, {base::MayBlock()}, ++ base::BindOnce(&DestroyMemoryMappedFile, std::move(file_), ++ std::move(path_to_remove))); ++} ++ ++const uint8_t* MemoryMappedFlatbufferData::data() const { ++ if (!file_) { ++ return nullptr; + } -+ return false; ++ return file_->data(); +} + -+ClassificationResult ClassifyRequestWithSingleCollection( -+ const SubscriptionCollection& subscription_collection, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey) { -+ // Search all subscriptions for any blocking filters (generic or -+ // domain-specific). -+ const auto subscription_with_blocking_filter_it = -+ subscription_collection.FindBySubresourceFilter( -+ request_url, frame_hierarchy, content_type, sitekey, -+ FilterCategory::Blocking); -+ if (!subscription_with_blocking_filter_it) { -+ // Found no blocking filters in any of the subscriptions. -+ return ClassificationResult{ -+ ClassificationResult::Decision::Ignored, {}, {}}; -+ } -+ // Found a blocking filter but perhaps one of the subscriptions has an -+ // allowing filter to override it? -+ const auto subscription_with_allowing_filter_it = -+ subscription_collection.FindByAllowFilter(request_url, frame_hierarchy, -+ content_type, sitekey); -+ if (subscription_with_allowing_filter_it) { -+ // Found an overriding allowing filter: -+ return ClassificationResult{ -+ ClassificationResult::Decision::Allowed, -+ *subscription_with_allowing_filter_it, -+ subscription_collection.GetFilteringConfigurationName()}; -+ } -+ // Last chance to avoid blocking: maybe there is a GENERICBLOCK filter and we -+ // should re-search for domain-specific filters only? -+ if (subscription_collection.FindBySpecialFilter( -+ SpecialFilterType::Genericblock, request_url, frame_hierarchy, -+ sitekey)) { -+ // This is a relatively rare case - we should have searched for -+ // domain-specific filters only. -+ const auto subscription_with_domain_specific_blocking_filter_it = -+ subscription_collection.FindBySubresourceFilter( -+ request_url, frame_hierarchy, content_type, sitekey, -+ FilterCategory::DomainSpecificBlocking); -+ if (subscription_with_domain_specific_blocking_filter_it) { -+ // There was a domain-specific blocking filter, the resource is blocked by -+ // it. -+ return ClassificationResult{ -+ ClassificationResult::Decision::Blocked, -+ *subscription_with_domain_specific_blocking_filter_it, -+ subscription_collection.GetFilteringConfigurationName()}; -+ } else { -+ // There were no domain-specific blocking filters, our first match must -+ // have been a generic filter. -+ return ClassificationResult{ -+ ClassificationResult::Decision::Ignored, {}, {}}; -+ } -+ } -+ // There was no GENERICBLOCK filter available, so the original blocking result -+ // is valid. -+ return ClassificationResult{ -+ ClassificationResult::Decision::Blocked, -+ *subscription_with_blocking_filter_it, -+ subscription_collection.GetFilteringConfigurationName()}; -+} -+ -+ClassificationResult ClassifyPopupWithSingleCollection( -+ const SubscriptionCollection& subscription_collection, -+ const GURL& popup_url, -+ const std::vector& opener_frame_hierarchy, -+ const SiteKey& sitekey) { -+ // Search all subscriptions for popup blocking filters (generic or -+ // domain-specific). -+ const auto subscription_with_blocking_filter_it = -+ subscription_collection.FindByPopupFilter( -+ popup_url, opener_frame_hierarchy, sitekey, FilterCategory::Blocking); -+ if (!subscription_with_blocking_filter_it) { -+ // Found no blocking filters in any of the subscriptions. -+ return ClassificationResult{ -+ ClassificationResult::Decision::Ignored, {}, {}}; -+ } -+ // Found a blocking filter but perhaps one of the subscriptions has an -+ // allowing filter to override it? -+ const auto subscription_with_allowing_filter_it = -+ subscription_collection.FindByPopupFilter( -+ popup_url, opener_frame_hierarchy, sitekey, FilterCategory::Allowing); -+ if (subscription_with_allowing_filter_it) { -+ // Found an overriding allowing filter: -+ return ClassificationResult{ -+ ClassificationResult::Decision::Allowed, -+ *subscription_with_allowing_filter_it, -+ subscription_collection.GetFilteringConfigurationName()}; -+ } -+ const auto subscription_with_document_allowing_filter_it = -+ subscription_collection.FindBySpecialFilter( -+ SpecialFilterType::Document, popup_url, opener_frame_hierarchy, -+ sitekey); -+ if (subscription_with_document_allowing_filter_it) { -+ // Found an overriding document allowing filter for the frame hierarchy: -+ return ClassificationResult{ -+ ClassificationResult::Decision::Allowed, -+ *subscription_with_document_allowing_filter_it, -+ subscription_collection.GetFilteringConfigurationName()}; -+ } -+ // There is no overriding allowing filter, the popup should be blocked. -+ return ClassificationResult{ -+ ClassificationResult::Decision::Blocked, -+ *subscription_with_blocking_filter_it, -+ subscription_collection.GetFilteringConfigurationName()}; -+} -+ -+ClassificationResult CheckHeaderFiltersMatchResponseHeaders( -+ const SubscriptionCollection& subscription_collection, -+ const GURL request_url, -+ const std::vector frame_hierarchy, -+ const scoped_refptr& headers, -+ std::set blocking_filters, -+ std::set allowing_filters) { -+ ClassificationResult result{ClassificationResult::Decision::Ignored, {}, {}}; -+ -+ for (const auto& filter : blocking_filters) { -+ auto key_value = -+ base::SplitString(filter.header_filter, "=", base::KEEP_WHITESPACE, -+ base::SPLIT_WANT_NONEMPTY); -+ // If no '=' occurs, filter blocks response contains header, regardless -+ // header value -+ if (key_value.size() == 1u) { -+ if (headers->HasHeader(filter.header_filter)) { -+ if (auto allow_rule = IsHeaderFilterOverruled(filter.header_filter, -+ allowing_filters)) { -+ result = {ClassificationResult::Decision::Allowed, -+ allow_rule->subscription_url, -+ subscription_collection.GetFilteringConfigurationName()}; -+ } else { -+ return ClassificationResult{ -+ ClassificationResult::Decision::Blocked, filter.subscription_url, -+ subscription_collection.GetFilteringConfigurationName()}; -+ } -+ } -+ } else { -+ DCHECK_EQ(2u, key_value.size()); -+ if (ContainsHeaderValue(headers, key_value[0], key_value[1])) { -+ if (auto allow_rule = IsHeaderFilterOverruled(filter.header_filter, -+ allowing_filters)) { -+ result = {ClassificationResult::Decision::Allowed, -+ allow_rule->subscription_url, -+ subscription_collection.GetFilteringConfigurationName()}; -+ } else { -+ return ClassificationResult{ -+ ClassificationResult::Decision::Blocked, filter.subscription_url, -+ subscription_collection.GetFilteringConfigurationName()}; -+ } -+ } -+ } ++size_t MemoryMappedFlatbufferData::size() const { ++ if (!file_) { ++ return 0u; + } -+ return result; ++ return file_->length(); +} + -+ClassificationResult ClassifyResponseWithSingleCollection( -+ const SubscriptionCollection& subscription_collection, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const scoped_refptr& response_headers) { -+ auto blocking_filters = subscription_collection.GetHeaderFilters( -+ request_url, frame_hierarchy, content_type, FilterCategory::Blocking); -+ if (blocking_filters.empty()) { -+ return ClassificationResult{ -+ ClassificationResult::Decision::Ignored, {}, {}}; -+ } -+ -+ // If blocking filters found, check first if filters are not overruled -+ const auto subscription_with_allowing_document_filter_it = -+ subscription_collection.FindBySpecialFilter( -+ SpecialFilterType::Document, request_url, frame_hierarchy, SiteKey()); -+ if (subscription_with_allowing_document_filter_it) { -+ // Found no blocking filters in any of the subscriptions. -+ return ClassificationResult{ -+ ClassificationResult::Decision::Allowed, -+ *subscription_with_allowing_document_filter_it, -+ subscription_collection.GetFilteringConfigurationName()}; -+ } -+ -+ if (subscription_collection.FindBySpecialFilter( -+ SpecialFilterType::Genericblock, request_url, frame_hierarchy, -+ SiteKey())) { -+ // If genericblock filter found, searched for blocking domain-specific -+ // filters. -+ blocking_filters = subscription_collection.GetHeaderFilters( -+ request_url, frame_hierarchy, content_type, -+ FilterCategory::DomainSpecificBlocking); -+ -+ return CheckHeaderFiltersMatchResponseHeaders( -+ subscription_collection, request_url, frame_hierarchy, response_headers, -+ std::move(blocking_filters), {}); -+ } -+ // If no special filters found, get allowing filters and check which filters -+ // applies. -+ auto allowing_filters = subscription_collection.GetHeaderFilters( -+ request_url, frame_hierarchy, content_type, FilterCategory::Allowing); -+ return CheckHeaderFiltersMatchResponseHeaders( -+ subscription_collection, request_url, frame_hierarchy, response_headers, -+ std::move(blocking_filters), std::move(allowing_filters)); ++void MemoryMappedFlatbufferData::PermanentlyRemoveSourceOnDestruction() { ++ permanently_remove_path_.store(true); +} + -+absl::optional CheckRewriteWithSingleCollection( -+ const SubscriptionCollection& subscription_collection, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy) { -+ auto blocking_rewrites = subscription_collection.GetRewriteFilters( -+ request_url, frame_hierarchy, FilterCategory::Blocking); -+ if (blocking_rewrites.empty()) { -+ return absl::nullopt; -+ } -+ -+ // If blocking filters are found, check first if blocking filters are not -+ // overruled completely. -+ const auto subscription_with_allowing_document_filter_it = -+ subscription_collection.FindBySpecialFilter( -+ SpecialFilterType::Document, request_url, frame_hierarchy, SiteKey()); -+ if (subscription_with_allowing_document_filter_it) { -+ return absl::nullopt; -+ } ++} // namespace adblock +diff --git a/components/adblock/core/common/flatbuffer_data.h b/components/adblock/core/common/flatbuffer_data.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/common/flatbuffer_data.h +@@ -0,0 +1,85 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ + -+ if (subscription_collection.FindBySpecialFilter( -+ SpecialFilterType::Genericblock, request_url, frame_hierarchy, -+ SiteKey())) { -+ // If genericblock filter is found, searched for blocking domain-specific -+ // filters. -+ blocking_rewrites = subscription_collection.GetRewriteFilters( -+ request_url, frame_hierarchy, FilterCategory::DomainSpecificBlocking); ++#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_FLATBUFFER_DATA_H_ ++#define COMPONENTS_ADBLOCK_CORE_COMMON_FLATBUFFER_DATA_H_ + -+ if (blocking_rewrites.empty()) { -+ return absl::nullopt; -+ } -+ } ++#include ++#include ++#include + -+ // Check if blocking filters are not overruled by allowing ones. -+ auto allowing_rewrites = subscription_collection.GetRewriteFilters( -+ request_url, frame_hierarchy, FilterCategory::Allowing); -+ if (allowing_rewrites.empty()) { -+ // Any filter will do, take the 1st one. -+ return absl::optional(GURL{*blocking_rewrites.begin()}); -+ } ++#include "base/files/file_path.h" ++#include "base/files/memory_mapped_file.h" + -+ // Change set to vector to call algorithm -+ std::vector blocking_rewrites_v(blocking_rewrites.begin(), -+ blocking_rewrites.end()); -+ // Remove blocking filters overruled by allowing filters. -+ blocking_rewrites_v.erase( -+ base::ranges::remove_if( -+ blocking_rewrites_v, -+ [&allowing_rewrites](const auto blocking_rewrite) { -+ return base::ranges::find_if( -+ allowing_rewrites, [&](const auto& allowing_rewrite) { -+ return blocking_rewrite == allowing_rewrite; -+ }) != allowing_rewrites.end(); -+ }), -+ blocking_rewrites_v.end()); ++namespace adblock { + -+ if (blocking_rewrites_v.empty()) { -+ return absl::nullopt; -+ } ++// Holds raw flatbuffer data. ++// All methods must be thread-safe, the object can be accessed from multiple ++// task runners concurrently. ++class FlatbufferData { ++ public: ++ virtual ~FlatbufferData() = default; + -+ // Any filter will do, take the 1st one. -+ return absl::optional(GURL{*blocking_rewrites_v.begin()}); -+} ++ virtual const uint8_t* data() const = 0; ++ virtual size_t size() const = 0; + -+} // namespace ++ // Schedules permanent removal of the data source of this flatbuffer when ++ // |this| is destroyed. This can mean removing a file from disk or removing ++ // a record from a database etc. ++ virtual void PermanentlyRemoveSourceOnDestruction() {} ++}; + -+ResourceClassifierImpl::~ResourceClassifierImpl() = default; ++// Implementation that loads the flatbuffer into memory from a source string. ++// Requires around 5-10 MB of memory for a subscription like EasyList. ++class InMemoryFlatbufferData : public FlatbufferData { ++ public: ++ explicit InMemoryFlatbufferData(std::string data); ++ ~InMemoryFlatbufferData() override; ++ const uint8_t* data() const override; ++ size_t size() const override; + -+ClassificationResult ResourceClassifierImpl::ClassifyRequest( -+ const SubscriptionService::Snapshot subscription_collections, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey) const { -+ auto classification = -+ ClassificationResult{ClassificationResult::Decision::Ignored, {}, {}}; -+ for (const auto& collection : subscription_collections) { -+ auto result = ClassifyRequestWithSingleCollection( -+ *collection, request_url, frame_hierarchy, content_type, sitekey); -+ if (result.decision == ClassificationResult::Decision::Blocked) { -+ return result; -+ } -+ if (result.decision == ClassificationResult::Decision::Allowed) { -+ classification = result; -+ } -+ } -+ return classification; -+} ++ private: ++ std::string data_; ++}; + -+ClassificationResult ResourceClassifierImpl::ClassifyPopup( -+ const SubscriptionService::Snapshot& subscription_collections, -+ const GURL& popup_url, -+ const std::vector& opener_frame_hierarchy, -+ const SiteKey& sitekey) const { -+ auto classification = -+ ClassificationResult{ClassificationResult::Decision::Ignored, {}, {}}; -+ for (const auto& collection : subscription_collections) { -+ auto result = ClassifyPopupWithSingleCollection( -+ *collection, popup_url, opener_frame_hierarchy, sitekey); -+ if (result.decision == ClassificationResult::Decision::Blocked) { -+ return result; -+ } -+ if (result.decision == ClassificationResult::Decision::Allowed) { -+ classification = result; -+ } -+ } -+ return classification; -+} ++// Memory-mapped implementation that opens a file and memory-maps it. Should ++// use less memory than InMemoryFlatbufferData because the bulk of the data ++// resides on disk. Some memory is still consumed due to caching/paging and ++// the application's *shared* memory usage may increase. ++class MemoryMappedFlatbufferData : public FlatbufferData { ++ public: ++ // Ctor should be called on blocking task runner, performs file I/O/ ++ explicit MemoryMappedFlatbufferData(base::FilePath path); ++ ~MemoryMappedFlatbufferData() override; ++ const uint8_t* data() const override; ++ size_t size() const override; + -+ClassificationResult ResourceClassifierImpl::ClassifyResponse( -+ const SubscriptionService::Snapshot subscription_collections, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const scoped_refptr& response_headers) const { -+ auto classification = -+ ClassificationResult{ClassificationResult::Decision::Ignored, {}, {}}; -+ for (const auto& collection : subscription_collections) { -+ auto result = ClassifyResponseWithSingleCollection( -+ *collection, request_url, frame_hierarchy, content_type, -+ response_headers); -+ if (result.decision == ClassificationResult::Decision::Blocked) { -+ return result; -+ } -+ if (result.decision == ClassificationResult::Decision::Allowed) { -+ classification = result; -+ } -+ } -+ return classification; -+} ++ // Post cleanup of the mapped file to blocking task runner during destruction. ++ void PermanentlyRemoveSourceOnDestruction() final; + -+absl::optional ResourceClassifierImpl::CheckRewrite( -+ const SubscriptionService::Snapshot subscription_collections, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy) const { -+ for (const auto& collection : subscription_collections) { -+ auto result = CheckRewriteWithSingleCollection(*collection, request_url, -+ frame_hierarchy); -+ if (result) { -+ return result; -+ } -+ } -+ return absl::nullopt; -+} ++ private: ++ // Since buffers may be accessed by many threads, ++ // PermanentlyRemoveSourceOnDestruction() must set the cleanup flag ++ // atomically. ++ std::atomic_bool permanently_remove_path_; ++ const base::FilePath path_; ++ std::unique_ptr file_; ++}; + +} // namespace adblock -diff --git a/components/adblock/core/classifier/resource_classifier_impl.h b/components/adblock/core/classifier/resource_classifier_impl.h ++ ++#endif // COMPONENTS_ADBLOCK_CORE_COMMON_FLATBUFFER_DATA_H_ +diff --git a/components/adblock/core/common/header_filter_data.h b/components/adblock/core/common/header_filter_data.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/classifier/resource_classifier_impl.h -@@ -0,0 +1,64 @@ ++++ b/components/adblock/core/common/header_filter_data.h +@@ -0,0 +1,38 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -11086,58 +9772,32 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_IMPL_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_HEADER_FILTER_DATA_H_ ++#define COMPONENTS_ADBLOCK_CORE_COMMON_HEADER_FILTER_DATA_H_ + -+#include ++#include + -+#include "components/adblock/core/classifier/resource_classifier.h" ++#include "url/gurl.h" + +namespace adblock { + -+class ResourceClassifierImpl final : public ResourceClassifier { -+ public: -+ ResourceClassifierImpl() = default; -+ -+ ClassificationResult ClassifyRequest( -+ const SubscriptionService::Snapshot subscription_collections, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey) const final; -+ -+ ClassificationResult ClassifyPopup( -+ const SubscriptionService::Snapshot& subscription_collections, -+ const GURL& popup_url, -+ const std::vector& opener_frame_hierarchy, -+ const SiteKey& sitekey) const final; -+ -+ ClassificationResult ClassifyResponse( -+ const SubscriptionService::Snapshot subscription_collections, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const scoped_refptr& response_headers) -+ const final; -+ -+ absl::optional CheckRewrite( -+ const SubscriptionService::Snapshot subscription_collections, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy) const final; -+ -+ protected: -+ friend class base::RefCountedThreadSafe; -+ ~ResourceClassifierImpl() override; ++struct HeaderFilterData { ++ base::StringPiece header_filter; ++ GURL subscription_url; ++ // required by std::set ++ bool operator<(const HeaderFilterData& other) const { ++ return (header_filter < other.header_filter); ++ } +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_CLASSIFIER_RESOURCE_CLASSIFIER_IMPL_H_ -diff --git a/components/adblock/core/classifier/test/mock_resource_classifier.cc b/components/adblock/core/classifier/test/mock_resource_classifier.cc ++#endif // COMPONENTS_ADBLOCK_CORE_COMMON_HEADER_FILTER_DATA_H_ +diff --git a/components/adblock/core/common/keyword_extractor_utils.cc b/components/adblock/core/common/keyword_extractor_utils.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/classifier/test/mock_resource_classifier.cc -@@ -0,0 +1,26 @@ ++++ b/components/adblock/core/common/keyword_extractor_utils.cc +@@ -0,0 +1,30 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -11155,20 +9815,24 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/classifier/test/mock_resource_classifier.h" ++#include "components/adblock/core/common/keyword_extractor_utils.h" ++#include "base/strings/string_piece.h" + +namespace adblock { ++namespace utils { + -+MockResourceClassifier::MockResourceClassifier() = default; -+ -+MockResourceClassifier::~MockResourceClassifier() = default; ++bool IsBadKeyword(base::StringPiece value) { ++ return value == "http" || value == "https" || value == "com" || ++ value == "js" || value.size() < 2; ++} + ++} // namespace utils +} // namespace adblock -diff --git a/components/adblock/core/classifier/test/mock_resource_classifier.h b/components/adblock/core/classifier/test/mock_resource_classifier.h +diff --git a/components/adblock/core/common/keyword_extractor_utils.h b/components/adblock/core/common/keyword_extractor_utils.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/classifier/test/mock_resource_classifier.h -@@ -0,0 +1,66 @@ ++++ b/components/adblock/core/common/keyword_extractor_utils.h +@@ -0,0 +1,31 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -11186,60 +9850,25 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_CLASSIFIER_TEST_MOCK_RESOURCE_CLASSIFIER_H_ -+#define COMPONENTS_ADBLOCK_CORE_CLASSIFIER_TEST_MOCK_RESOURCE_CLASSIFIER_H_ -+ -+#include "components/adblock/core/classifier/resource_classifier.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_KEYWORD_EXTRACTOR_UTILS_H_ ++#define COMPONENTS_ADBLOCK_CORE_COMMON_KEYWORD_EXTRACTOR_UTILS_H_ + -+#include "testing/gmock/include/gmock/gmock.h" ++#include "base/strings/string_piece.h" + +namespace adblock { ++namespace utils { + -+class MockResourceClassifier : public ResourceClassifier { -+ public: -+ MockResourceClassifier(); -+ MOCK_METHOD(ClassificationResult, -+ ClassifyRequest, -+ (const SubscriptionService::Snapshot, -+ const GURL&, -+ const std::vector&, -+ ContentType, -+ const SiteKey&), -+ (override, const)); -+ MOCK_METHOD(ClassificationResult, -+ ClassifyPopup, -+ (const SubscriptionService::Snapshot&, -+ const GURL&, -+ const std::vector&, -+ const SiteKey&), -+ (override, const)); -+ MOCK_METHOD(ClassificationResult, -+ ClassifyResponse, -+ (const SubscriptionService::Snapshot, -+ const GURL&, -+ const std::vector&, -+ ContentType, -+ const scoped_refptr&), -+ (override, const)); -+ MOCK_METHOD(absl::optional, -+ CheckRewrite, -+ (const SubscriptionService::Snapshot, -+ const GURL&, -+ const std::vector&), -+ (override, const)); -+ -+ protected: -+ ~MockResourceClassifier() override; -+}; ++bool IsBadKeyword(base::StringPiece value); + ++} // namespace utils +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_CLASSIFIER_TEST_MOCK_RESOURCE_CLASSIFIER_H_ -diff --git a/components/adblock/core/classifier/test/resource_classifier_impl_test.cc b/components/adblock/core/classifier/test/resource_classifier_impl_test.cc ++#endif // COMPONENTS_ADBLOCK_CORE_COMMON_KEYWORD_EXTRACTOR_UTILS_H_ +diff --git a/components/adblock/core/common/regex_filter_pattern.cc b/components/adblock/core/common/regex_filter_pattern.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/classifier/test/resource_classifier_impl_test.cc -@@ -0,0 +1,624 @@ ++++ b/components/adblock/core/common/regex_filter_pattern.cc +@@ -0,0 +1,34 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -11257,618 +9886,28 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/classifier/resource_classifier_impl.h" ++#include "components/adblock/core/common/regex_filter_pattern.h" + +#include "absl/types/optional.h" -+#include "base/memory/raw_ptr.h" -+#include "components/adblock/core/subscription/test/mock_subscription_collection.h" -+#include "gmock/gmock-actions.h" -+#include "gmock/gmock-matchers.h" -+#include "gmock/gmock.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" ++#include "base/strings/string_piece.h" + +namespace adblock { + -+using testing::_; -+using testing::Return; -+ -+using Decision = ResourceClassifier::ClassificationResult::Decision; -+ -+class AdblockResourceClassifierImplTest : public ::testing::Test { -+ public: -+ void SetUp() override { -+ classifier_ = base::MakeRefCounted(); -+ mock_snapshot_ = std::make_unique(); -+ mock_snapshot_->push_back(std::make_unique()); -+ EXPECT_CALL(mock_subscription_collection(), GetFilteringConfigurationName()) -+ .WillRepeatedly(testing::ReturnRef(kConfigurationName)); -+ } -+ -+ ResourceClassifier::ClassificationResult ClassifyRequest() { -+ return classifier_->ClassifyRequest(std::move(*mock_snapshot_), -+ kResourceAddress, {kParentAddress}, -+ kContentType, kSitekey); ++absl::optional ExtractRegexFilterFromPattern( ++ base::StringPiece filter_pattern) { ++ if (!(filter_pattern.size() > 2 && filter_pattern.front() == '/' && ++ filter_pattern.back() == '/')) { ++ return absl::nullopt; + } -+ -+ MockSubscriptionCollection& mock_subscription_collection() { -+ return *static_cast( -+ mock_snapshot_->front().get()); -+ } -+ -+ void FindBySubresourceFilterReturns(const absl::optional& return_value, -+ FilterCategory category) { -+ EXPECT_CALL(mock_subscription_collection(), -+ FindBySubresourceFilter(_, _, _, _, category)) -+ .WillOnce(Return(return_value)); -+ } -+ -+ void FindBySpecialFilterReturns(const absl::optional& return_value, -+ SpecialFilterType type) { -+ EXPECT_CALL(mock_subscription_collection(), -+ FindBySpecialFilter(type, _, _, _)) -+ .WillOnce(Return(return_value)); -+ } -+ -+ void FindByAllowFilterReturns(const absl::optional& return_value) { -+ EXPECT_CALL(mock_subscription_collection(), FindByAllowFilter(_, _, _, _)) -+ .WillOnce(Return(return_value)); -+ } -+ -+ void FindByPopupFilterReturns(const absl::optional& return_value, -+ FilterCategory category) { -+ EXPECT_CALL(mock_subscription_collection(), -+ FindByPopupFilter(_, _, _, category)) -+ .WillOnce(Return(return_value)); -+ } -+ -+ void GetHeaderFiltersReturns(const std::set& return_value, -+ FilterCategory category) { -+ EXPECT_CALL(mock_subscription_collection(), -+ GetHeaderFilters(_, _, _, category)) -+ .WillOnce(Return(return_value)); -+ } -+ -+ void AssertFindBySubresourceFilterNotCalled(FilterCategory category) { -+ EXPECT_CALL(mock_subscription_collection(), -+ FindBySubresourceFilter(_, _, _, _, category)) -+ .Times(0); -+ } -+ -+ void GetRewriteFiltersReturns(const std::set& return_value, -+ FilterCategory category) { -+ EXPECT_CALL(mock_subscription_collection(), -+ GetRewriteFilters(_, _, category)) -+ .WillOnce(Return(return_value)); -+ } -+ -+ void AssertFindBySpecialFilterNotCalled(SpecialFilterType type) { -+ EXPECT_CALL(mock_subscription_collection(), -+ FindBySpecialFilter(type, _, _, _)) -+ .Times(0); -+ } -+ -+ void AssertFindByAllowFilterNotCalled() { -+ EXPECT_CALL(mock_subscription_collection(), FindByAllowFilter(_, _, _, _)) -+ .Times(0); -+ } -+ -+ void AssertFindByPopupFilterNotCalled(FilterCategory category) { -+ EXPECT_CALL(mock_subscription_collection(), -+ FindByPopupFilter(_, _, _, category)) -+ .Times(0); -+ } -+ -+ void AssertGetHeaderFiltersNotCalled(FilterCategory category) { -+ EXPECT_CALL(mock_subscription_collection(), -+ GetHeaderFilters(_, _, _, category)) -+ .Times(0); -+ } -+ -+ scoped_refptr CreateResponseHeaders( -+ base::StringPiece header) { -+ std::string full_headers = "HTTP/1.1 200 OK\n"; -+ full_headers.append(header.begin()).append(":"); -+ auto headers = net::HttpResponseHeaders::TryToCreate(full_headers); -+ CHECK(headers); -+ return headers; -+ } -+ const GURL kResourceAddress{"https://address.com/image.png"}; -+ const GURL kParentAddress{"https://parent.com/"}; -+ const ContentType kContentType = ContentType::Image; -+ const SiteKey kSitekey{"abc"}; -+ const GURL kSourceUrl{"https://subscription.com/easylist.txt"}; -+ const std::set kAllowingHeaderFilters = { -+ {"allowing_filter", kSourceUrl}}; -+ const std::set kBlockingHeaderFilters = { -+ {"blocking_filter", kSourceUrl}}; -+ const std::set kDomainSpecificHeaderFilters = { -+ {"domain_specific_filter", kSourceUrl}}; -+ const std::string kConfigurationName = "test_configuration"; -+ std::unique_ptr mock_snapshot_; -+ scoped_refptr classifier_; -+}; -+ -+TEST_F(AdblockResourceClassifierImplTest, BlockingFilterNotFound) { -+ // Subscriptions get queried for url filters, no blocking filter is found. -+ FindBySubresourceFilterReturns(absl::nullopt, FilterCategory::Blocking); -+ -+ // Since there's no blocking filter, all search stops now. -+ AssertFindByAllowFilterNotCalled(); -+ AssertFindBySpecialFilterNotCalled(SpecialFilterType::Genericblock); -+ AssertFindBySubresourceFilterNotCalled( -+ FilterCategory::DomainSpecificBlocking); -+ -+ auto result = ClassifyRequest(); -+ EXPECT_EQ(result.decision, Decision::Ignored); -+ EXPECT_EQ(result.decisive_configuration_name, ""); -+ EXPECT_EQ(result.decisive_subscription, GURL()); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, BlockingFilterFound) { -+ // Subscriptions get queried for url filters, one reports a blocking filter -+ FindBySubresourceFilterReturns(absl::optional(kSourceUrl), -+ FilterCategory::Blocking); -+ -+ // Since there's a blocking filter, subscriptions are queried for allowing -+ // filters -+ FindByAllowFilterReturns(absl::nullopt); -+ -+ // Subscriptions have no allowing filter, so the last chance of not -+ // blocking the request is a generic block filter (separate test). -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Genericblock); -+ AssertFindBySubresourceFilterNotCalled( -+ FilterCategory::DomainSpecificBlocking); -+ -+ auto result = ClassifyRequest(); -+ EXPECT_EQ(result.decision, Decision::Blocked); -+ EXPECT_EQ(result.decisive_configuration_name, kConfigurationName); -+ EXPECT_EQ(result.decisive_subscription, kSourceUrl); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, BlockingAndAllowingFilterFound) { -+ // Subscriptions get queried for url filters, one reports a blocking filter -+ FindBySubresourceFilterReturns(absl::optional(kSourceUrl), -+ FilterCategory::Blocking); -+ -+ // Since there's a blocking filter, subscriptions are queried for allowing -+ // filters -+ FindByAllowFilterReturns(absl::optional(kSourceUrl)); -+ -+ // Allowing filter has been found, make other searach stops now. -+ AssertFindBySpecialFilterNotCalled(SpecialFilterType::Genericblock); -+ AssertFindBySubresourceFilterNotCalled( -+ FilterCategory::DomainSpecificBlocking); -+ -+ auto result = ClassifyRequest(); -+ EXPECT_EQ(result.decision, Decision::Allowed); -+ EXPECT_EQ(result.decisive_configuration_name, kConfigurationName); -+ EXPECT_EQ(result.decisive_subscription, kSourceUrl); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, GenericBlockSearch) { -+ // Subscriptions get queried for url filters, one reports a blocking filter -+ FindBySubresourceFilterReturns(absl::optional(kSourceUrl), -+ FilterCategory::Blocking); -+ -+ // Since there's a blocking filter, subscriptions are queried for allowing -+ // filters -+ FindByAllowFilterReturns(absl::nullopt); -+ -+ // Allowing filter has not been found and genericblock is also not found. -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Genericblock); -+ AssertFindBySubresourceFilterNotCalled( -+ FilterCategory::DomainSpecificBlocking); -+ -+ auto result = ClassifyRequest(); -+ EXPECT_EQ(result.decision, Decision::Blocked); -+ EXPECT_EQ(result.decisive_configuration_name, kConfigurationName); -+ EXPECT_EQ(result.decisive_subscription, kSourceUrl); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, DomainSpecificNotFound) { -+ // Subscriptions get queried for url filters, one reports a blocking filter -+ FindBySubresourceFilterReturns(absl::optional(kSourceUrl), -+ FilterCategory::Blocking); -+ -+ // Since there's a blocking filter, subscriptions are queried for allowing -+ // filters -+ FindByAllowFilterReturns(absl::nullopt); -+ -+ // Allowing filter has not been found but gebricblock exists. -+ FindBySpecialFilterReturns(absl::optional(kSourceUrl), -+ SpecialFilterType::Genericblock); -+ -+ // However there is no domain specific filter. -+ FindBySubresourceFilterReturns(absl::nullopt, -+ FilterCategory::DomainSpecificBlocking); -+ -+ auto result = ClassifyRequest(); -+ EXPECT_EQ(result.decision, Decision::Ignored); -+ EXPECT_EQ(result.decisive_configuration_name, ""); -+ EXPECT_EQ(result.decisive_subscription, GURL()); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, DomainSpecificFound) { -+ // Subscriptions get queried for url filters, one reports a blocking filter -+ FindBySubresourceFilterReturns(absl::optional(kSourceUrl), -+ FilterCategory::Blocking); -+ -+ // Since there's a blocking filter, subscriptions are queried for allowing -+ // filters -+ FindByAllowFilterReturns(absl::nullopt); -+ -+ // Allowing filter has not been found but gebricblock exists. -+ FindBySpecialFilterReturns(absl::optional(kSourceUrl), -+ SpecialFilterType::Genericblock); -+ -+ // And there is a domain specific filter. -+ FindBySubresourceFilterReturns(absl::optional(kSourceUrl), -+ FilterCategory::DomainSpecificBlocking); -+ -+ auto result = ClassifyRequest(); -+ EXPECT_EQ(result.decision, Decision::Blocked); -+ EXPECT_EQ(result.decisive_configuration_name, kConfigurationName); -+ EXPECT_EQ(result.decisive_subscription, kSourceUrl); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, PopupNoHasFilters) { -+ FindByPopupFilterReturns(absl::nullopt, FilterCategory::Blocking); -+ AssertFindByPopupFilterNotCalled(FilterCategory::Allowing); -+ -+ auto result = classifier_->ClassifyPopup( -+ std::move(*mock_snapshot_), kResourceAddress, {kParentAddress}, kSitekey); -+ EXPECT_EQ(result.decision, Decision::Ignored); -+ EXPECT_EQ(result.decisive_configuration_name, ""); -+ EXPECT_EQ(result.decisive_subscription, GURL()); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, PopupHasBlockingFilter) { -+ FindByPopupFilterReturns(absl::optional(kSourceUrl), -+ FilterCategory::Blocking); -+ FindByPopupFilterReturns(absl::nullopt, FilterCategory::Allowing); -+ -+ auto result = classifier_->ClassifyPopup( -+ std::move(*mock_snapshot_), kResourceAddress, {kParentAddress}, kSitekey); -+ EXPECT_EQ(result.decision, Decision::Blocked); -+ EXPECT_EQ(result.decisive_configuration_name, kConfigurationName); -+ EXPECT_EQ(result.decisive_subscription, kSourceUrl); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, PopupHasAllowingFilter) { -+ FindByPopupFilterReturns(absl::optional(kSourceUrl), -+ FilterCategory::Blocking); -+ FindByPopupFilterReturns(absl::optional(kSourceUrl), -+ FilterCategory::Allowing); -+ -+ auto result = classifier_->ClassifyPopup( -+ std::move(*mock_snapshot_), kResourceAddress, {kParentAddress}, kSitekey); -+ EXPECT_EQ(result.decision, Decision::Allowed); -+ EXPECT_EQ(result.decisive_configuration_name, kConfigurationName); -+ EXPECT_EQ(result.decisive_subscription, kSourceUrl); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, NoBlockingHeaderFilters) { -+ GetHeaderFiltersReturns({}, FilterCategory::Blocking); -+ AssertGetHeaderFiltersNotCalled(FilterCategory::Allowing); -+ -+ auto result = classifier_->ClassifyResponse( -+ std::move(*mock_snapshot_), kResourceAddress, {kParentAddress}, -+ kContentType, {}); -+ EXPECT_EQ(result.decision, Decision::Ignored); -+ EXPECT_EQ(result.decisive_configuration_name, ""); -+ EXPECT_EQ(result.decisive_subscription, GURL()); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, -+ BlockingHeaderFiltersWithDocumentAllowingFilter) { -+ GetHeaderFiltersReturns(kBlockingHeaderFilters, FilterCategory::Blocking); -+ FindBySpecialFilterReturns(absl::optional(kSourceUrl), -+ SpecialFilterType::Document); -+ -+ AssertFindBySpecialFilterNotCalled(SpecialFilterType::Genericblock); -+ AssertGetHeaderFiltersNotCalled(FilterCategory::DomainSpecificBlocking); -+ AssertGetHeaderFiltersNotCalled(FilterCategory::Allowing); -+ -+ auto result = classifier_->ClassifyResponse( -+ std::move(*mock_snapshot_), kResourceAddress, {kParentAddress}, -+ kContentType, {}); -+ EXPECT_EQ(result.decision, Decision::Allowed); -+ EXPECT_EQ(result.decisive_configuration_name, kConfigurationName); -+ EXPECT_EQ(result.decisive_subscription, kSourceUrl); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, -+ BlockingHeaderFiltersWithGenericblockButNoDomainSpecific) { -+ GetHeaderFiltersReturns(kBlockingHeaderFilters, FilterCategory::Blocking); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Document); -+ FindBySpecialFilterReturns(absl::optional(kSourceUrl), -+ SpecialFilterType::Genericblock); -+ GetHeaderFiltersReturns({}, FilterCategory::DomainSpecificBlocking); -+ AssertGetHeaderFiltersNotCalled(FilterCategory::Allowing); -+ -+ auto result = classifier_->ClassifyResponse( -+ std::move(*mock_snapshot_), kResourceAddress, {kParentAddress}, -+ kContentType, {}); -+ EXPECT_EQ(result.decision, Decision::Ignored); -+ EXPECT_EQ(result.decisive_configuration_name, ""); -+ EXPECT_EQ(result.decisive_subscription, GURL()); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, -+ BlockingHeaderFiltersWithGenericblockAndDomainSpecificNoMatch) { -+ GetHeaderFiltersReturns(kBlockingHeaderFilters, FilterCategory::Blocking); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Document); -+ FindBySpecialFilterReturns(absl::optional(kSourceUrl), -+ SpecialFilterType::Genericblock); -+ GetHeaderFiltersReturns(kDomainSpecificHeaderFilters, -+ FilterCategory::DomainSpecificBlocking); -+ AssertGetHeaderFiltersNotCalled(FilterCategory::Allowing); -+ -+ auto headers = CreateResponseHeaders("not_matching"); -+ CHECK(headers); -+ auto result = classifier_->ClassifyResponse( -+ std::move(*mock_snapshot_), kResourceAddress, {kParentAddress}, -+ kContentType, headers); -+ EXPECT_EQ(result.decision, Decision::Ignored); -+ EXPECT_EQ(result.decisive_configuration_name, ""); -+ EXPECT_EQ(result.decisive_subscription, GURL()); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, -+ BlockingHeaderFiltersWithGenericblockAndDomainSpecificMatch) { -+ GetHeaderFiltersReturns(kBlockingHeaderFilters, FilterCategory::Blocking); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Document); -+ FindBySpecialFilterReturns(absl::optional(kSourceUrl), -+ SpecialFilterType::Genericblock); -+ GetHeaderFiltersReturns(kDomainSpecificHeaderFilters, -+ FilterCategory::DomainSpecificBlocking); -+ AssertGetHeaderFiltersNotCalled(FilterCategory::Allowing); -+ -+ auto headers = CreateResponseHeaders( -+ kDomainSpecificHeaderFilters.begin()->header_filter); -+ CHECK(headers); -+ auto result = classifier_->ClassifyResponse( -+ std::move(*mock_snapshot_), kResourceAddress, {kParentAddress}, -+ kContentType, headers); -+ EXPECT_EQ(result.decision, Decision::Blocked); -+ EXPECT_EQ(result.decisive_configuration_name, kConfigurationName); -+ EXPECT_EQ(result.decisive_subscription, kSourceUrl); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, BlockingHeaderFiltersNoMatch) { -+ GetHeaderFiltersReturns(kBlockingHeaderFilters, FilterCategory::Blocking); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Document); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Genericblock); -+ AssertGetHeaderFiltersNotCalled(FilterCategory::DomainSpecificBlocking); -+ GetHeaderFiltersReturns(kAllowingHeaderFilters, FilterCategory::Allowing); -+ -+ auto headers = CreateResponseHeaders("no_match"); -+ CHECK(headers); -+ auto result = classifier_->ClassifyResponse( -+ std::move(*mock_snapshot_), kResourceAddress, {kParentAddress}, -+ kContentType, headers); -+ EXPECT_EQ(result.decision, Decision::Ignored); -+ EXPECT_EQ(result.decisive_configuration_name, ""); -+ EXPECT_EQ(result.decisive_subscription, GURL()); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, -+ BlockingHeaderFiltersMatchNoAllowingFilterMatch) { -+ GetHeaderFiltersReturns(kBlockingHeaderFilters, FilterCategory::Blocking); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Document); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Genericblock); -+ AssertGetHeaderFiltersNotCalled(FilterCategory::DomainSpecificBlocking); -+ GetHeaderFiltersReturns(kAllowingHeaderFilters, FilterCategory::Allowing); -+ -+ auto headers = -+ CreateResponseHeaders(kBlockingHeaderFilters.begin()->header_filter); -+ CHECK(headers); -+ auto result = classifier_->ClassifyResponse( -+ std::move(*mock_snapshot_), kResourceAddress, {kParentAddress}, -+ kContentType, headers); -+ EXPECT_EQ(result.decision, Decision::Blocked); -+ EXPECT_EQ(result.decisive_configuration_name, kConfigurationName); -+ EXPECT_EQ(result.decisive_subscription, kSourceUrl); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, -+ BlockingHeaderFiltersMatchWithAllowingFilterMatch) { -+ GetHeaderFiltersReturns(kAllowingHeaderFilters, FilterCategory::Blocking); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Document); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Genericblock); -+ AssertGetHeaderFiltersNotCalled(FilterCategory::DomainSpecificBlocking); -+ GetHeaderFiltersReturns(kAllowingHeaderFilters, FilterCategory::Allowing); -+ -+ auto headers = -+ CreateResponseHeaders(kAllowingHeaderFilters.begin()->header_filter); -+ CHECK(headers); -+ auto result = classifier_->ClassifyResponse( -+ std::move(*mock_snapshot_), kResourceAddress, {kParentAddress}, -+ kContentType, headers); -+ EXPECT_EQ(result.decision, Decision::Allowed); -+ EXPECT_EQ(result.decisive_configuration_name, kConfigurationName); -+ EXPECT_EQ(result.decisive_subscription, kSourceUrl); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, -+ TwoConfigs_DefaultAllowsOtherBlocks_BlockingFilterFound) { -+ // Default configuration has allowing filter -+ FindBySubresourceFilterReturns(absl::optional(kSourceUrl), -+ FilterCategory::Blocking); -+ FindByAllowFilterReturns(absl::optional(kSourceUrl)); -+ -+ // Other configuration has blocking filter -+ std::string other_coniguration = "other"; -+ GURL other_source{"https://subscription.com/other.txt"}; -+ auto mock_subscription_collection = -+ std::make_unique(); -+ EXPECT_CALL(*mock_subscription_collection, -+ FindBySubresourceFilter(_, _, _, _, FilterCategory::Blocking)) -+ .WillOnce(Return(absl::optional(other_source))); -+ EXPECT_CALL(*mock_subscription_collection, FindByAllowFilter(_, _, _, _)) -+ .WillOnce(Return(absl::nullopt)); -+ EXPECT_CALL(*mock_subscription_collection, -+ FindBySpecialFilter(SpecialFilterType::Genericblock, _, _, _)) -+ .WillOnce(Return(absl::nullopt)); -+ EXPECT_CALL(*mock_subscription_collection, GetFilteringConfigurationName()) -+ .WillRepeatedly(testing::ReturnRef(other_coniguration)); -+ -+ mock_snapshot_->push_back(std::move(mock_subscription_collection)); -+ auto result = ClassifyRequest(); -+ EXPECT_EQ(result.decision, Decision::Blocked); -+ EXPECT_EQ(result.decisive_configuration_name, other_coniguration); -+ EXPECT_EQ(result.decisive_subscription, other_source); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, -+ TwoConfigs_DefaultBlocksOtherIsNotChecked_BlockingFilterFound) { -+ // Default configuration has blocking filter -+ FindBySubresourceFilterReturns(absl::optional(kSourceUrl), -+ FilterCategory::Blocking); -+ FindByAllowFilterReturns(absl::nullopt); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Genericblock); -+ -+ // Other configuration should not be called -+ auto mock_subscription_collection = -+ std::make_unique(); -+ EXPECT_CALL(*mock_subscription_collection, -+ FindBySubresourceFilter(_, _, _, _, FilterCategory::Blocking)) -+ .Times(0); -+ -+ mock_snapshot_->push_back(std::move(mock_subscription_collection)); -+ auto result = ClassifyRequest(); -+ EXPECT_EQ(result.decision, Decision::Blocked); -+ EXPECT_EQ(result.decisive_configuration_name, kConfigurationName); -+ EXPECT_EQ(result.decisive_subscription, kSourceUrl); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, -+ TwoConfigs_DefaultAndOtherAllows_AllowingFilterFound) { -+ // Default configuration has allowing filter -+ FindBySubresourceFilterReturns(absl::optional(kSourceUrl), -+ FilterCategory::Blocking); -+ FindByAllowFilterReturns(absl::optional(kSourceUrl)); -+ -+ // Other configuration has also allowing filter -+ std::string other_coniguration = "other"; -+ GURL other_source{"https://subscription.com/other.txt"}; -+ MockSubscriptionCollection* mock_subscription_collection = -+ new MockSubscriptionCollection(); -+ EXPECT_CALL(*mock_subscription_collection, -+ FindBySubresourceFilter(_, _, _, _, FilterCategory::Blocking)) -+ .WillOnce(Return(other_source)); -+ EXPECT_CALL(*mock_subscription_collection, FindByAllowFilter(_, _, _, _)) -+ .WillOnce(Return(absl::optional(other_source))); -+ EXPECT_CALL(*mock_subscription_collection, GetFilteringConfigurationName()) -+ .WillRepeatedly(testing::ReturnRef(other_coniguration)); -+ -+ mock_snapshot_->emplace_back(mock_subscription_collection); -+ auto result = ClassifyRequest(); -+ EXPECT_EQ(result.decision, Decision::Allowed); -+ EXPECT_EQ(result.decisive_configuration_name, other_coniguration); -+ EXPECT_EQ(result.decisive_subscription, other_source); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, RewriteFilterNotFound) { -+ // There are no blocking filters found. -+ GetRewriteFiltersReturns({}, FilterCategory::Blocking); -+ -+ // Since there are no blocking filters, no need to check allow filters. -+ AssertFindBySpecialFilterNotCalled(SpecialFilterType::Document); -+ AssertFindBySpecialFilterNotCalled(SpecialFilterType::Genericblock); -+ -+ // Empty result means no redirect necessary. -+ EXPECT_FALSE(classifier_->CheckRewrite(std::move(*mock_snapshot_), -+ kResourceAddress, {kParentAddress})); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, RewriteFilterFound) { -+ base::StringPiece redirect = "about::blank"; -+ -+ GetRewriteFiltersReturns({redirect}, FilterCategory::Blocking); -+ GetRewriteFiltersReturns({}, FilterCategory::Allowing); -+ -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Document); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Genericblock); -+ -+ EXPECT_EQ(GURL{redirect}, -+ classifier_->CheckRewrite(std::move(*mock_snapshot_), -+ kResourceAddress, {kParentAddress})); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, RewriteFilterDomainSpecificFound) { -+ GetRewriteFiltersReturns({"about::blank/generic"}, FilterCategory::Blocking); -+ GetRewriteFiltersReturns({}, FilterCategory::Allowing); -+ -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Document); -+ FindBySpecialFilterReturns(absl::optional(kSourceUrl), -+ SpecialFilterType::Genericblock); -+ GetRewriteFiltersReturns({"about::blank/domain_specific"}, -+ FilterCategory::DomainSpecificBlocking); -+ -+ EXPECT_EQ(absl::optional{GURL("about::blank/domain_specific")}, -+ classifier_->CheckRewrite(std::move(*mock_snapshot_), -+ kResourceAddress, {kParentAddress})); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, -+ RewriteBlockingFilterOverruledViaDocumentAllowingRule) { -+ GetRewriteFiltersReturns({"about::blank"}, FilterCategory::Blocking); -+ -+ FindBySpecialFilterReturns(absl::optional(kSourceUrl), -+ SpecialFilterType::Document); -+ AssertFindBySpecialFilterNotCalled(SpecialFilterType::Genericblock); -+ -+ // Empty result means no redirect necessary. -+ EXPECT_FALSE(classifier_->CheckRewrite(std::move(*mock_snapshot_), -+ kResourceAddress, {kParentAddress})); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, -+ RewriteBlockingFilterOverruledViaOtherRewriteFilter) { -+ GetRewriteFiltersReturns({"about::blank"}, FilterCategory::Blocking); -+ -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Document); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Genericblock); -+ -+ GetRewriteFiltersReturns({"about::blank_not_matching", "about::blank"}, -+ FilterCategory::Allowing); -+ -+ // Empty result means no redirect necessary. -+ EXPECT_FALSE(classifier_->CheckRewrite(std::move(*mock_snapshot_), -+ kResourceAddress, {kParentAddress})); -+} -+ -+TEST_F(AdblockResourceClassifierImplTest, -+ TwoConfigs_RewriteFilterFound_OtherConfigNotChecked) { -+ // Default configuration has blocking rewrite filter. -+ base::StringPiece redirect = "about::blank"; -+ -+ GetRewriteFiltersReturns({redirect}, FilterCategory::Blocking); -+ GetRewriteFiltersReturns({}, FilterCategory::Allowing); -+ -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Document); -+ FindBySpecialFilterReturns(absl::nullopt, SpecialFilterType::Genericblock); -+ -+ // Other configuration should not be called -+ auto mock_subscription_collection = -+ std::make_unique(); -+ EXPECT_CALL(*mock_subscription_collection, GetRewriteFilters(_, _, _)) -+ .Times(0); -+ -+ mock_snapshot_->push_back(std::move(mock_subscription_collection)); -+ EXPECT_EQ(GURL{redirect}, -+ classifier_->CheckRewrite(std::move(*mock_snapshot_), -+ kResourceAddress, {kParentAddress})); -+} ++ return filter_pattern.substr(1, filter_pattern.size() - 2); ++} + +} // namespace adblock -diff --git a/components/adblock/core/classifier/test/resource_classifier_perftest.cc b/components/adblock/core/classifier/test/resource_classifier_perftest.cc +diff --git a/components/adblock/core/common/regex_filter_pattern.h b/components/adblock/core/common/regex_filter_pattern.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/classifier/test/resource_classifier_perftest.cc -@@ -0,0 +1,234 @@ ++++ b/components/adblock/core/common/regex_filter_pattern.h +@@ -0,0 +1,33 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -11886,228 +9925,61 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include -+#include ++#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_REGEX_FILTER_PATTERN_H_ ++#define COMPONENTS_ADBLOCK_CORE_COMMON_REGEX_FILTER_PATTERN_H_ + -+#include "base/files/file_path.h" -+#include "base/files/file_util.h" -+#include "base/logging.h" -+#include "base/path_service.h" ++#include "absl/types/optional.h" +#include "base/strings/string_piece.h" -+#include "base/timer/elapsed_timer.h" -+#include "components/adblock/core/classifier/resource_classifier_impl.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/converter/flatbuffer_converter.h" -+#include "components/adblock/core/subscription/installed_subscription_impl.h" -+#include "components/adblock/core/subscription/subscription_collection_impl.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "testing/gtest/include/gtest/gtest.h" -+#include "third_party/zlib/google/compression_utils.h" + +namespace adblock { + -+class ResourceClassifierPerfTest : public testing::Test { -+ public: -+ void SetUp() override { -+ classifier_ = base::MakeRefCounted(); -+ } -+ std::unique_ptr CreateSubscriptionCollection( -+ std::initializer_list filenames) { -+ std::vector> state; -+ for (const auto& cur : filenames) { -+ const std::string content = ReadFromTestData(cur); -+ std::stringstream input(std::move(content)); -+ auto converter_result = -+ FlatbufferConverter::Convert(input, CustomFiltersUrl(), false); -+ DCHECK(absl::holds_alternative>( -+ converter_result)); -+ state.push_back(base::MakeRefCounted( -+ std::move( -+ absl::get>(converter_result)), -+ Subscription::InstallationState::Installed, base::Time())); -+ } -+ return std::make_unique(state, ""); -+ } -+ -+ static std::string ReadFromTestData(const std::string& file_name) { -+ base::FilePath source_file; -+ EXPECT_TRUE(base::PathService::Get(base::DIR_SOURCE_ROOT, &source_file)); -+ source_file = source_file.AppendASCII("components") -+ .AppendASCII("test") -+ .AppendASCII("data") -+ .AppendASCII("adblock") -+ .AppendASCII(file_name); -+ std::string content; -+ CHECK(base::ReadFileToString(source_file, &content)); -+ CHECK(compression::GzipUncompress(content, &content)); -+ return content; -+ } -+ -+ static int BenchmarkRepetitions() { -+ // Android devices are much slower than Desktop computers, reduce the -+ // number of reps so they don't time out. On Desktop, a higher number of -+ // reps allows more reliable measurement via perf tools. -+#if BUILDFLAG(IS_ANDROID) -+ return 5; -+#else -+ return 500; -+#endif -+ } -+ -+ void MeasureUrlMatchingTime( -+ GURL url, -+ ContentType content_type, -+ std::unique_ptr sub_collection, -+ int cycles = BenchmarkRepetitions()) { -+ SubscriptionService::Snapshot snapshot; -+ snapshot.push_back(std::move(sub_collection)); -+ ResourceClassifier::ClassificationResult classification_result; -+ base::ElapsedTimer timer; -+ // Call matching many times to make sure perf woke up for measurement. -+ for (int i = 0; i < cycles; ++i) { -+ classification_result = classifier_->ClassifyRequest( -+ std::move(snapshot), url, DefautFrameHeirarchy(), content_type, -+ DefaultSitekey()); -+ } -+ LOG(INFO) << "URL matching time: " << timer.Elapsed() / cycles; -+ LOG(INFO) << "Classification result: " -+ << ClassificationResultToString(classification_result); -+ } -+ -+ void MeasureCSPMatchingTime( -+ GURL url, -+ ContentType content_type, -+ std::unique_ptr sub_collection, -+ int cycles = BenchmarkRepetitions()) { -+ std::set csp_injections; -+ base::ElapsedTimer timer; -+ // Call matching many times to make sure perf woke up for measurement. -+ for (int i = 0; i < cycles; ++i) { -+ csp_injections = -+ sub_collection->GetCspInjections(url, DefautFrameHeirarchy()); -+ } -+ VLOG(1) << "CSP filter search time: " << timer.Elapsed() / cycles; -+ for (const auto& csp_i : csp_injections) { -+ VLOG(1) << "CSP injection found: " << csp_i; -+ } -+ } -+ -+ void MeasureElemhideGeneretionTime( -+ GURL url, -+ std::unique_ptr collection) { -+ // Call generation many times to make sure perf woke up for measurement. -+ for (int i = 0; i < BenchmarkRepetitions(); ++i) { -+ collection->GetElementHideSelectors(url, DefautFrameHeirarchy(), -+ DefaultSitekey()); -+ } -+ } -+ -+ const GURL& UnknownAddress() const { -+ static const GURL kUnknownAddress{ -+ "https://eyeo.com/themes/custom/eyeo_theme/logo.svg"}; -+ return kUnknownAddress; -+ } -+ -+ const GURL& BlockedAddress() const { -+ static const GURL kBlockedAddress{"https://0265331.com/whatever/image.png"}; -+ return kBlockedAddress; -+ } -+ -+ const std::vector& DefautFrameHeirarchy() const { -+ static const std::vector kFrameHierarchy{ -+ GURL("https://frame.com/frame1.html"), -+ GURL("https://frame.com/frame2.html"), -+ GURL("https://frame.com/"), -+ }; -+ return kFrameHierarchy; -+ } -+ -+ const SiteKey& DefaultSitekey() const { -+ static const SiteKey kSiteKey{"abc"}; -+ return kSiteKey; -+ } -+ -+ base::StringPiece ClassificationResultToString( -+ const ResourceClassifier::ClassificationResult& result) { -+ switch (result.decision) { -+ case ResourceClassifier::ClassificationResult::Decision::Allowed: -+ return "Allowed"; -+ case ResourceClassifier::ClassificationResult::Decision::Blocked: -+ return "Blocked"; -+ case ResourceClassifier::ClassificationResult::Decision::Ignored: -+ return "Ignored"; -+ } -+ return ""; -+ } -+ -+ scoped_refptr classifier_; -+}; ++// For a regex filter "/{expression}/" returns "{expression}". ++// For non-regex filters, returns nullopt. ++// Cheap, may be used to identify regex filter patterns. ++absl::optional ExtractRegexFilterFromPattern( ++ base::StringPiece filter_pattern); ++} // namespace adblock + -+TEST_F(ResourceClassifierPerfTest, UrlNoMatch) { -+ auto sub_collection = CreateSubscriptionCollection( -+ {"easylist.txt.gz", "exceptionrules.txt.gz"}); -+ MeasureUrlMatchingTime(UnknownAddress(), ContentType::Image, -+ std::move(sub_collection)); -+} ++#endif // COMPONENTS_ADBLOCK_CORE_COMMON_REGEX_FILTER_PATTERN_H_ +diff --git a/components/adblock/core/common/sitekey.h b/components/adblock/core/common/sitekey.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/common/sitekey.h +@@ -0,0 +1,29 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ + -+TEST_F(ResourceClassifierPerfTest, UrlBlocked) { -+ auto sub_collection = CreateSubscriptionCollection( -+ {"easylist.txt.gz", "exceptionrules.txt.gz"}); -+ MeasureUrlMatchingTime(BlockedAddress(), ContentType::Image, -+ std::move(sub_collection)); -+} ++#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_SITEKEY_H_ ++#define COMPONENTS_ADBLOCK_CORE_COMMON_SITEKEY_H_ + -+TEST_F(ResourceClassifierPerfTest, ElemhideNoMatch) { -+ auto sub_collection = CreateSubscriptionCollection( -+ {"easylist.txt.gz", "exceptionrules.txt.gz"}); -+ MeasureElemhideGeneretionTime(UnknownAddress(), std::move(sub_collection)); -+} ++#include "base/types/strong_alias.h" + -+TEST_F(ResourceClassifierPerfTest, ElemhideMatch) { -+ auto sub_collection = CreateSubscriptionCollection( -+ {"easylist.txt.gz", "exceptionrules.txt.gz"}); -+ MeasureElemhideGeneretionTime( -+ GURL{"https://www.heise.de/news/" -+ "Privacy-Shield-2-0-Viele-offene-Fragen-zum-Datenverkehr-mit-den-" -+ "USA-6658370.html"}, -+ std::move(sub_collection)); -+} ++namespace adblock { + -+TEST_F(ResourceClassifierPerfTest, LongUrlMatch) { -+ auto sub_collection = CreateSubscriptionCollection( -+ {"easylist.txt.gz", "exceptionrules.txt.gz"}); -+ // "longurl.txt.gz" contains a 300K-long URL that encodes a ton of debug data. -+ // This URL was recorded from a real site. It can be orders of magnitude -+ // slower to match than typical URLs so we use a custom repetition count. -+#if BUILDFLAG(IS_ANDROID) -+ const int kRepCount = 1; -+#else -+ const int kRepCount = 50; -+#endif -+ const GURL long_url(ReadFromTestData("longurl.txt.gz")); -+ MeasureUrlMatchingTime(long_url, ContentType::Subdocument, -+ std::move(sub_collection), kRepCount); -+} ++using SiteKey = base::StrongAlias; + -+TEST_F(ResourceClassifierPerfTest, LongUrlFindCsp) { -+ auto sub_collection = CreateSubscriptionCollection( -+ {"easylist.txt.gz", "exceptionrules.txt.gz"}); -+#if BUILDFLAG(IS_ANDROID) -+ const int kRepCount = 1; -+#else -+ const int kRepCount = 5; -+#endif -+ const GURL long_url(ReadFromTestData("longurl.txt.gz")); -+ MeasureCSPMatchingTime(long_url, ContentType::Subdocument, -+ std::move(sub_collection), kRepCount); +} + -+} // namespace adblock -diff --git a/components/adblock/core/common/BUILD.gn b/components/adblock/core/common/BUILD.gn ++#endif // COMPONENTS_ADBLOCK_CORE_COMMON_SITEKEY_H_ +diff --git a/components/adblock/core/configuration/BUILD.gn b/components/adblock/core/configuration/BUILD.gn new file mode 100644 --- /dev/null -+++ b/components/adblock/core/common/BUILD.gn -@@ -0,0 +1,110 @@ ++++ b/components/adblock/core/configuration/BUILD.gn +@@ -0,0 +1,59 @@ +# +# This file is part of eyeo Chromium SDK, +# Copyright (C) 2006-present eyeo GmbH @@ -12124,105 +9996,55 @@ new file mode 100644 +# You should have received a copy of the GNU General Public License +# along with eyeo Chromium SDK. If not, see . + -+import("//components/adblock/features.gni") -+ -+config("eyeo_filtering_config") { -+ defines = [] -+ -+ if (eyeo_disable_filtering_by_default) { -+ defines += [ "EYEO_DISABLE_FILTERING_BY_DEFAULT=true" ] -+ } else { -+ defines += [ "EYEO_DISABLE_FILTERING_BY_DEFAULT=false" ] -+ } -+} -+ -+source_set("common") { -+ configs += [ ":eyeo_filtering_config" ] -+ ++source_set("configuration") { + sources = [ -+ "adblock_constants.cc", -+ "adblock_constants.h", -+ "adblock_prefs.cc", -+ "adblock_prefs.h", -+ "content_type.cc", -+ "content_type.h", -+ "flatbuffer_data.cc", -+ "flatbuffer_data.h", -+ "header_filter_data.h", -+ "keyword_extractor_utils.cc", -+ "keyword_extractor_utils.h", -+ "regex_filter_pattern.cc", -+ "regex_filter_pattern.h", -+ "sitekey.h", ++ "filtering_configuration_prefs.cc", ++ "filtering_configuration_prefs.h", ++ "filtering_configuration.h", ++ "persistent_filtering_configuration.cc", ++ "persistent_filtering_configuration.h", + ] + -+ deps = [ "//components/prefs" ] -+ + public_deps = [ + "//base", -+ "//components/adblock/core:schema", -+ "//components/adblock/core:schema_hash", -+ "//third_party/abseil-cpp:absl", -+ "//url", ++ "//components/prefs", ++ "//url:url", + ] +} + -+config("eyeo_application_config") { -+ defines = [] -+ -+ if (eyeo_application_name != "") { -+ defines += [ "EYEO_APPLICATION_NAME=\"$eyeo_application_name\"" ] -+ } -+ -+ if (eyeo_application_version != "") { -+ defines += [ "EYEO_APPLICATION_VERSION=\"$eyeo_application_version\"" ] -+ } -+} -+ -+source_set("utils") { -+ configs += [ ":eyeo_application_config" ] -+ ++source_set("test_support") { ++ testonly = true + sources = [ -+ "adblock_utils.cc", -+ "adblock_utils.h", -+ ] -+ -+ deps = [ -+ "//components/resources:components_resources_grit", -+ "//components/version_info", -+ "//net", -+ "//third_party/icu/", -+ "//third_party/re2", -+ "//ui/base", -+ "//url", ++ "test/fake_filtering_configuration.cc", ++ "test/fake_filtering_configuration.h", ++ "test/mock_filtering_configuration.cc", ++ "test/mock_filtering_configuration.h", + ] -+ + public_deps = [ -+ ":common", -+ "//base", ++ ":configuration", ++ "//testing/gmock", ++ "//testing/gtest", + ] +} + +source_set("unit_tests") { + testonly = true -+ sources = [ -+ "test/adblock_utils_test.cc", -+ "test/flatbuffer_data_test.cc", -+ ] ++ sources = [ "test/persistent_filtering_configuration_test.cc" ] + + deps = [ -+ ":common", -+ ":utils", ++ ":configuration", + "//base/test:test_support", -+ "//components/adblock/core/subscription:subscription", ++ "//components/prefs:test_support", ++ "//testing/gmock", + "//testing/gtest", + ] +} -diff --git a/components/adblock/core/common/adblock_constants.cc b/components/adblock/core/common/adblock_constants.cc +diff --git a/components/adblock/core/configuration/filtering_configuration.h b/components/adblock/core/configuration/filtering_configuration.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/common/adblock_constants.cc -@@ -0,0 +1,164 @@ ++++ b/components/adblock/core/configuration/filtering_configuration.h +@@ -0,0 +1,90 @@ ++ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -12240,158 +10062,121 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/common/adblock_constants.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_H_ + -+#include "base/base64.h" -+#include "components/adblock/core/hash/schema_hash.h" -+#include "components/adblock/core/schema/filter_list_schema_generated.h" ++#include ++#include "base/observer_list_types.h" ++#include "base/strings/string_piece.h" ++#include "url/gurl.h" + +namespace adblock { + -+const char kSiteKeyHeaderKey[] = "x-adblock-key"; -+ -+const char kAllowlistEverythingFilter[] = "@@*$document"; ++// A group of settings that control how to perform resource filtering. ++// ++// FilterConfigurations can be installed into a SubscriptionService. ++// SubscriptionService interprets how to express each configuration in terms of ++// installed subscriptions, and how to enact filtering. ++// ++// Each configuration is independent from others. If two FilteringConfigurations ++// have filters that result in a conflicting classification decision, ++// blocking a resource takes precedence over allowing a resource. ++// ++// Examples of multiple FilteringConfigurations could be: ++// - one configuration to filter ads ++// - another configuration to protect user privacy ++// - another configuration to enforce parental control ++// Each of these could be disabled/enabled or reconfigured individually, without ++// affecting others. ++class FilteringConfiguration { ++ public: ++ class Observer : public base::CheckedObserver { ++ public: ++ virtual void OnEnabledStateChanged(FilteringConfiguration* config) {} ++ virtual void OnFilterListsChanged(FilteringConfiguration* config) {} ++ virtual void OnAllowedDomainsChanged(FilteringConfiguration* config) {} ++ virtual void OnCustomFiltersChanged(FilteringConfiguration* config) {} ++ }; + -+const char kAdblockFilteringConfigurationName[] = "adblock"; ++ virtual ~FilteringConfiguration() = default; + -+const char kBlankHtml[] = -+ "data:text/html,"; ++ virtual void AddObserver(Observer* observer) = 0; ++ virtual void RemoveObserver(Observer* observer) = 0; + -+const char kBlankMp3[] = -+ "data:audio/" -+ "mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjIwLjEwMAAAAAAAAAAAAAAA//" -+ "tUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAGAAADAABgYGBg" -+ "YGBgYGBgYGBgYGBggICAgICAgICAgICAgICAgICgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwM" -+ "DAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4P////////////////////" -+ "8AAAAATGF2YzU4LjM1AAAAAAAAAAAAAAAAJAYAAAAAAAAAAwDVxttG//" -+ "sUZAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwVVVVVVVVVVVVVVVV" -+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//" -+ "sUZB4P8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV" -+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//" -+ "sUZDwP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV" -+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//" -+ "sUZFoP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV" -+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//" -+ "sUZHgP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV" -+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//" -+ "sUZJYP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVV" -+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"; ++ // The name must be unique across all created configurations. ++ virtual const std::string& GetName() const = 0; + -+const char kBlankMp4[] = -+ "data:video/" -+ "mp4;base64," -+ "AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAuJtZGF0AAACrwYF//" -+ "+r3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2MCByMzAxMU0gY2RlOWE5MyAtIEguMjY0" -+ "L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMjAgLSBodHRwOi8vd3d3LnZpZG" -+ "VvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0xIHJlZj0zIGRlYmxvY2s9MTow" -+ "OjAgYW5hbHlzZT0weDM6MHgxMTMgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC" -+ "4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MCB0cmVsbGlzPTEgOHg4ZGN0" -+ "PTEgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LT" -+ "IgdGhyZWFkcz0yIGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRl" -+ "Y2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT" -+ "0wIGJmcmFtZXM9MyBiX3B5cmFtaWQ9MiBiX2FkYXB0PTEgYl9iaWFzPTAgZGlyZWN0PTEgd2Vp" -+ "Z2h0Yj0xIG9wZW5fZ29wPTAgd2VpZ2h0cD0yIGtleWludD0yNTAga2V5aW50X21pbj0yNSBzY2" -+ "VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmNfbG9va2FoZWFkPTQwIHJjPWNyZiBtYnRyZWU9" -+ "MSBjcmY9MjMuMCBxY29tcD0wLjYwIHFwbWluPTAgcXBtYXg9NjkgcXBzdGVwPTQgaXBfcmF0aW" -+ "89MS40MCBhcT0xOjEuMDAAgAAAACNliIQAK//" -+ "+9dvzLK5umjbe9jc2CT9EPcfnoOYC2tjtP+" -+ "go4QAAAwRtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAAKAABAAABAAAAAAAAAAAAAAAA" -+ "AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" -+ "AAAAAAAAACAAACLnRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAKAAAAAAAAAAA" -+ "AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAZAAAADgAAAAAAC" -+ "RlZHRzAAAAHGVsc3QAAAAAAAAAAQAAACgAAAAAAAEAAAAAAaZtZGlhAAAAIG1kaGQAAAAAAAAA" -+ "AAAAAAAAADIAAAACAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSG" -+ "FuZGxlcgAAAAFRbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAA" -+ "AAABAAAADHVybCAAAAABAAABEXN0YmwAAACtc3RzZAAAAAAAAAABAAAAnWF2YzEAAAAAAAAAAQ" -+ "AAAAAAAAAAAAAAAAAAAAAAZAA4AEgAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" -+ "AAAAAAAAAAAAAAAY//8AAAA3YXZjQwFkAAr/" -+ "4QAaZ2QACvNlHJ42JwEQAAADABAAAAMDIPEiWWABAAZo6+PLIsD8+" -+ "PgAAAAAEHBhc3AAAAABAAAAAQAAABhzdHRzAAAAAAAAAAEAAAABAAACAAAAABxzdHNjAAAAAAA" -+ "AAAEAAAABAAAAAQAAAAEAAAAUc3RzegAAAAAAAALaAAAAAQAAABRzdGNvAAAAAAAAAAEAAAAwA" -+ "AAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAA" -+ "taWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1OC40NS4xMDA="; ++ // Enable or disable the entire configuration. A disabled configuration does ++ // not contribute filters to classification and behaves as if it was not ++ // installed. ++ virtual void SetEnabled(bool enabled) = 0; ++ virtual bool IsEnabled() const = 0; + -+const char kBlankGif[] = -+ "data:image/gif;base64,R0lGODlhAQABAIABAAAAAP///" -+ "yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; ++ // Adding an existing filter list, or removing a non-existing filter list, are ++ // NOPs and do not notify observers. ++ virtual void AddFilterList(const GURL& url) = 0; ++ virtual void RemoveFilterList(const GURL& url) = 0; ++ virtual std::vector GetFilterLists() const = 0; + -+const char kBlankPng2x2[] = -+ "data:image/" -+ "png;base64," -+ "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAC0lEQ" -+ "VQI12NgQAcAABIAAe+JVKQAAAAASUVORK5CYII="; ++ // Adding an existing allowed domain, or removing a non-existing allowed ++ // domain, are NOPs and do not notify observers. ++ virtual void AddAllowedDomain(const std::string& domain) = 0; ++ virtual void RemoveAllowedDomain(const std::string& domain) = 0; ++ virtual std::vector GetAllowedDomains() const = 0; + -+const char kBlankPng3x2[] = -+ "data:image/" -+ "png;base64," -+ "iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAC0lEQVQI12NgwAUAABoAASRETu" -+ "UAAAAASUVORK5CYII="; ++ // Adding an existing custom filter, or removing a non-existing custom filter, ++ // are NOPs and do not notify observers. ++ virtual void AddCustomFilter(const std::string& filter) = 0; ++ virtual void RemoveCustomFilter(const std::string& filter) = 0; ++ virtual std::vector GetCustomFilters() const = 0; ++}; + -+const char kBlankPng32x32[] = -+ "data:image/" -+ "png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGklEQVRYw+" -+ "3BAQEAAACCIP+vbkhAAQAAAO8GECAAAZf3V9cAAAAASUVORK5CYII="; ++} // namespace adblock + -+const std::string& CurrentSchemaVersion() { -+ static std::string kCurrentSchemaVersion = -+ base::Base64Encode(kSha256_filter_list_schema_generated_h); -+ return kCurrentSchemaVersion; -+} ++#endif // COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_H_ +diff --git a/components/adblock/core/configuration/filtering_configuration_prefs.cc b/components/adblock/core/configuration/filtering_configuration_prefs.cc +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/configuration/filtering_configuration_prefs.cc +@@ -0,0 +1,33 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ + -+const GURL& TestPagesSubscriptionUrl() { -+ static GURL kTestPagesUrl( -+ "https://abptestpages.org/en/abp-testcase-subscription.txt"); -+ return kTestPagesUrl; -+} ++#include "components/adblock/core/configuration/filtering_configuration_prefs.h" + -+const GURL& CustomFiltersUrl() { -+ static GURL kCustomFiltersUrl("adblock:custom"); -+ return kCustomFiltersUrl; -+} ++#include "base/logging.h" ++#include "components/prefs/pref_registry_simple.h" + -+base::StringPiece RewriteUrl(flat::AbpResource type) { -+ switch (type) { -+ case flat::AbpResource_BlankText: -+ return "data:text/plain,"; -+ case flat::AbpResource_BlankCss: -+ return "data:text/css,"; -+ case flat::AbpResource_BlankJs: -+ return "data:application/javascript,"; -+ case flat::AbpResource_BlankHtml: -+ return kBlankHtml; -+ case flat::AbpResource_BlankMp3: -+ return kBlankMp3; -+ case flat::AbpResource_BlankMp4: -+ return kBlankMp4; -+ case flat::AbpResource_TransparentGif1x1: -+ return kBlankGif; -+ case flat::AbpResource_TransparentPng2x2: -+ return kBlankPng2x2; -+ case flat::AbpResource_TransparentPng3x2: -+ return kBlankPng3x2; -+ case flat::AbpResource_TransparentPng32x32: -+ return kBlankPng32x32; -+ default: -+ return {}; -+ } -+} ++namespace adblock::filtering_configuration::prefs { + -+bool g_eyeo_disable_filtering_by_default = EYEO_DISABLE_FILTERING_BY_DEFAULT; ++const char kConfigurationsPrefsPath[] = "filtering.configurations"; + -+bool IsEyeoFilteringDisabledByDefault() { -+ return g_eyeo_disable_filtering_by_default; -+} ++void RegisterProfilePrefs(PrefRegistrySimple* registry) { ++ registry->RegisterDictionaryPref(kConfigurationsPrefsPath); + -+base::AutoReset OverrideEyeoFilteringDisabledByDefault(bool val) { -+ return base::AutoReset(&g_eyeo_disable_filtering_by_default, val); ++ VLOG(3) << "[eyeo] Registered prefs"; +} + -+} // namespace adblock -diff --git a/components/adblock/core/common/adblock_constants.h b/components/adblock/core/common/adblock_constants.h ++} // namespace adblock::filtering_configuration::prefs +diff --git a/components/adblock/core/configuration/filtering_configuration_prefs.h b/components/adblock/core/configuration/filtering_configuration_prefs.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/common/adblock_constants.h -@@ -0,0 +1,48 @@ ++++ b/components/adblock/core/configuration/filtering_configuration_prefs.h +@@ -0,0 +1,30 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -12409,42 +10194,25 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_CONSTANTS_H_ -+#define COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_CONSTANTS_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_PREFS_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_PREFS_H_ ++class PrefRegistrySimple; + -+#include "base/auto_reset.h" -+#include "base/strings/string_piece.h" -+#include "url/gurl.h" ++namespace adblock::filtering_configuration::prefs { + -+namespace adblock { ++extern const char kConfigurationsPrefsPath[]; + -+namespace flat { -+enum AbpResource : int8_t; -+} -+ -+extern const char kSiteKeyHeaderKey[]; -+extern const char kAllowlistEverythingFilter[]; -+extern const char kAdblockFilteringConfigurationName[]; -+ -+const std::string& CurrentSchemaVersion(); -+const GURL& TestPagesSubscriptionUrl(); -+const GURL& CustomFiltersUrl(); -+base::StringPiece RewriteUrl(flat::AbpResource type); -+ -+bool IsEyeoFilteringDisabledByDefault(); -+ -+// Override result of IsEyeoFilteringDisabledByDefault() for the -+// duration of the returned AutoReset's lifetime. Used for testing. -+base::AutoReset OverrideEyeoFilteringDisabledByDefault(bool val); ++void RegisterProfilePrefs(PrefRegistrySimple* registry); + -+} // namespace adblock ++} // namespace adblock::filtering_configuration::prefs + -+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_CONSTANTS_H_ -diff --git a/components/adblock/core/common/adblock_prefs.cc b/components/adblock/core/common/adblock_prefs.cc ++#endif // COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_PREFS_H_ +diff --git a/components/adblock/core/configuration/persistent_filtering_configuration.cc b/components/adblock/core/configuration/persistent_filtering_configuration.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/common/adblock_prefs.cc -@@ -0,0 +1,122 @@ ++++ b/components/adblock/core/configuration/persistent_filtering_configuration.cc +@@ -0,0 +1,273 @@ ++ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -12462,167 +10230,267 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/common/adblock_prefs.h" ++#include "components/adblock/core/configuration/persistent_filtering_configuration.h" ++ ++#include ++ ++#include "base/strings/string_util.h" ++#include "components/adblock/core/configuration/filtering_configuration_prefs.h" ++#include "components/prefs/pref_service.h" ++#include "components/prefs/scoped_user_pref_update.h" + +#include "base/logging.h" -+#include "components/prefs/pref_registry_simple.h" + -+namespace adblock::common::prefs { ++namespace adblock { ++namespace { + -+// Whether to block ads -+const char kEnableAdblockLegacy[] = "adblock.enable"; ++constexpr auto kEnabledKey = base::StringPiece("enabled"); ++constexpr auto kDomainsKey = base::StringPiece("domains"); ++constexpr auto kCustomFiltersKey = base::StringPiece("filters"); ++constexpr auto kFilterListsKey = base::StringPiece("subscriptions"); + -+// Legacy: Whether to allow acceptable ads or block them all. -+// Used now just to map CLI switch. Otherwise use kAdblockSubscriptionsLegacy. -+const char kEnableAcceptableAdsLegacy[] = "adblock.aa_enable"; ++base::Value::Dict ReadFromPrefs(PrefService* pref_service, ++ base::StringPiece configuration_name) { ++ const auto& all_configurations = ++ pref_service ++ ->GetValue(filtering_configuration::prefs::kConfigurationsPrefsPath) ++ .GetDict(); ++ const auto* this_config = all_configurations.FindDict(configuration_name); ++ if (this_config) { ++ return base::Value::Dict(this_config->Clone()); ++ } ++ return base::Value::Dict(); ++} + -+// List of domains ad blocking will be disabled for -+const char kAdblockAllowedDomainsLegacy[] = "adblock.allowed_domains"; ++void StoreToPrefs(const base::Value::Dict& configuration, ++ PrefService* pref_service, ++ base::StringPiece configuration_name) { ++ // ScopedDictPrefUpdate requires an std::string for some reason: ++ static std::string kConfigurationsPrefsPathString( ++ filtering_configuration::prefs::kConfigurationsPrefsPath); ++ ScopedDictPrefUpdate update(pref_service, kConfigurationsPrefsPathString); ++ update.Get().Set(configuration_name, configuration.Clone()); ++} + -+// List of custom filters added explicitly by the user -+const char kAdblockCustomFiltersLegacy[] = "adblock.custom_filters"; ++void SetDefaultValuesIfNeeded(base::Value::Dict& configuration) { ++ if (!configuration.FindBool(kEnabledKey)) { ++ configuration.Set(kEnabledKey, true); ++ } ++ configuration.EnsureList(kDomainsKey); ++ configuration.EnsureList(kCustomFiltersKey); ++ configuration.EnsureList(kFilterListsKey); ++} + -+// List of recommended subscriptions -+const char kAdblockSubscriptionsLegacy[] = "adblock.subscriptions"; ++bool AppendToList(base::Value::Dict& configuration, ++ base::StringPiece key, ++ const std::string& value) { ++ DCHECK(configuration.FindList(key)); // see SetDefaultValuesIfNeeded(). ++ auto* list = configuration.FindList(key); ++ if (base::ranges::find(*list, base::Value(value)) != list->end()) { ++ // value already exists in the list. ++ return false; ++ } ++ list->Append(value); ++ return true; ++} + -+// Legacy: List of custom (user defined) subscriptions. -+// Use just kAdblockSubscriptionsLegacy. -+const char kAdblockCustomSubscriptionsLegacy[] = "adblock.custom_subscriptions"; ++bool RemoveFromList(base::Value::Dict& configuration, ++ base::StringPiece key, ++ const std::string& value) { ++ DCHECK(configuration.FindList(key)); // see SetDefaultValuesIfNeeded(). ++ auto* list = configuration.FindList(key); ++ auto it = base::ranges::find(*list, base::Value(value)); ++ if (it == list->end()) { ++ // value was not on the list. ++ return false; ++ } ++ list->erase(it); ++ return true; ++} + -+// Whether more options item is enabled in the UI -+const char kAdblockMoreOptionsEnabled[] = "adblock.more_options"; ++template ++std::vector GetFromList(const base::Value::Dict& configuration, ++ base::StringPiece key) { ++ DCHECK(configuration.FindList(key)); // see SetDefaultValuesIfNeeded(). ++ const auto* list = configuration.FindList(key); ++ std::vector result; ++ for (const auto& value : *list) { ++ if (value.is_string()) { ++ result.emplace_back(value.GetString()); ++ } ++ } ++ return result; ++} + -+// Whether a first-run installation of preloaded subscriptions and -+// language-based recommended subscriptions is necessary. -+const char kInstallFirstStartSubscriptions[] = -+ "adblock.install_first_run_subscriptions"; ++} // namespace + -+// Dictionary mapping subscription filename to subscription content hash, -+// stored in Tracked Preferences to ensure untrusted subscription files aren't -+// added, or existing subscription files aren't modified. -+const char kSubscriptionSignatures[] = "adblock.subscription_signatures"; ++PersistentFilteringConfiguration::PersistentFilteringConfiguration( ++ PrefService* pref_service, ++ std::string name) ++ : pref_service_(pref_service), ++ name_(std::move(name)), ++ dictionary_(ReadFromPrefs(pref_service_, name_)) { ++ SetDefaultValuesIfNeeded(dictionary_); ++ PersistToPrefs(); ++} + -+// Stores the schema version used to create currently installed subscriptions. -+// Allows discovering a need to re-install subscriptions when the schema -+// version used by this browser build is newer. -+const char kLastUsedSchemaVersion[] = "adblock.last_used_schema_version"; ++PersistentFilteringConfiguration::~PersistentFilteringConfiguration() = default; + -+// Map of subscription URL into subscription metadata, containing ex. expiration -+// time, download count etc. Used for driving the subscription update process -+// and for setting query parameters in subscription download requests. -+const char kSubscriptionMetadata[] = "adblock.subscription_metadata"; ++void PersistentFilteringConfiguration::AddObserver(Observer* observer) { ++ observers_.AddObserver(observer); ++} ++void PersistentFilteringConfiguration::RemoveObserver(Observer* observer) { ++ observers_.RemoveObserver(observer); ++} + -+// Client-generated UUID4 that uniquely identifies the server response that -+// sent kTelemetryLastPingTime. Sent along with other ping times to -+// disambiguate between other clients who send ping requests the same day. -+// Regenerated on every successful response. -+const char kTelemetryLastPingTag[] = -+ "adblock.telemetry.activeping.last_ping_tag"; ++const std::string& PersistentFilteringConfiguration::GetName() const { ++ return name_; ++} + -+// Server UTC time of last ping response, updated with every successful -+// response. Shall not be compared to client time (even UTC). Sent by the -+// telemetry server, stored as unparsed string (ex. "2022-02-08T09:30:00Z"). -+const char kTelemetryLastPingTime[] = -+ "adblock.telemetry.activeping.last_ping_time"; ++void PersistentFilteringConfiguration::SetEnabled(bool enabled) { ++ if (IsEnabled() == enabled) { ++ return; ++ } ++ dictionary_.Set(kEnabledKey, enabled); ++ PersistToPrefs(); ++ NotifyEnabledStateChanged(); ++} + -+// Previous last ping time, gets replaced by kTelemetryLastPingTime when a new -+// successful ping response arrives. Sent in a ping request. -+const char kTelemetryPreviousLastPingTime[] = -+ "adblock.telemetry.activeping.previous_last_ping_time"; ++bool PersistentFilteringConfiguration::IsEnabled() const { ++ const auto pref_value = dictionary_.FindBool(kEnabledKey); ++ DCHECK(pref_value); ++ return *pref_value; ++} + -+// Time of first recorded response for a telemetry ping request, sent along -+// with future ping requests, to further disambiguate -+// user-counting without being able to uniquely track a user. -+const char kTelemetryFirstPingTime[] = -+ "adblock.telemetry.activeping.first_ping_time"; ++void PersistentFilteringConfiguration::AddFilterList(const GURL& url) { ++ if (AppendToList(dictionary_, kFilterListsKey, url.spec())) { ++ PersistToPrefs(); ++ NotifyFilterListsChanged(); ++ } ++} + -+// Client time, when to perform the next ping? -+// Not sent, used locally to ensure we don't ping too often. -+const char kTelemetryNextPingTime[] = -+ "adblock.telemetry.activeping.next_ping_time"; ++void PersistentFilteringConfiguration::RemoveFilterList(const GURL& url) { ++ if (RemoveFromList(dictionary_, kFilterListsKey, url.spec())) { ++ PersistToPrefs(); ++ NotifyFilterListsChanged(); ++ } ++} + -+void RegisterTelemetryPrefs(PrefRegistrySimple* registry) { -+ registry->RegisterStringPref(kTelemetryLastPingTag, ""); -+ registry->RegisterStringPref(kTelemetryLastPingTime, ""); -+ registry->RegisterStringPref(kTelemetryPreviousLastPingTime, ""); -+ registry->RegisterStringPref(kTelemetryFirstPingTime, ""); -+ registry->RegisterTimePref(kTelemetryNextPingTime, base::Time()); ++std::vector PersistentFilteringConfiguration::GetFilterLists() const { ++ return GetFromList(dictionary_, kFilterListsKey); +} + -+void RegisterProfilePrefs(PrefRegistrySimple* registry) { -+ registry->RegisterBooleanPref(kEnableAdblockLegacy, true); -+ registry->RegisterBooleanPref(kEnableAcceptableAdsLegacy, true); -+ registry->RegisterBooleanPref(kAdblockMoreOptionsEnabled, false); -+ registry->RegisterListPref(kAdblockAllowedDomainsLegacy, {}); -+ registry->RegisterListPref(kAdblockCustomFiltersLegacy, {}); -+ registry->RegisterListPref(kAdblockSubscriptionsLegacy, {}); -+ registry->RegisterListPref(kAdblockCustomSubscriptionsLegacy, {}); -+ registry->RegisterBooleanPref(kInstallFirstStartSubscriptions, true); -+ registry->RegisterDictionaryPref(kSubscriptionSignatures); -+ registry->RegisterStringPref(kLastUsedSchemaVersion, ""); -+ registry->RegisterDictionaryPref(kSubscriptionMetadata); -+ RegisterTelemetryPrefs(registry); ++void PersistentFilteringConfiguration::AddAllowedDomain( ++ const std::string& domain) { ++ if (AppendToList(dictionary_, kDomainsKey, domain)) { ++ PersistToPrefs(); ++ NotifyAllowedDomainsChanged(); ++ } ++} + -+ VLOG(3) << "[eyeo] Registered prefs"; ++void PersistentFilteringConfiguration::RemoveAllowedDomain( ++ const std::string& domain) { ++ if (RemoveFromList(dictionary_, kDomainsKey, domain)) { ++ PersistToPrefs(); ++ NotifyAllowedDomainsChanged(); ++ } +} + -+} // namespace adblock::common::prefs -diff --git a/components/adblock/core/common/adblock_prefs.h b/components/adblock/core/common/adblock_prefs.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/common/adblock_prefs.h -@@ -0,0 +1,46 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++std::vector PersistentFilteringConfiguration::GetAllowedDomains() ++ const { ++ return GetFromList(dictionary_, kDomainsKey); ++} + -+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_PREFS_H_ -+#define COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_PREFS_H_ ++void PersistentFilteringConfiguration::AddCustomFilter( ++ const std::string& filter) { ++ if (AppendToList(dictionary_, kCustomFiltersKey, filter)) { ++ PersistToPrefs(); ++ NotifyCustomFiltersChanged(); ++ } ++} + -+class PrefRegistrySimple; ++void PersistentFilteringConfiguration::RemoveCustomFilter( ++ const std::string& filter) { ++ if (RemoveFromList(dictionary_, kCustomFiltersKey, filter)) { ++ PersistToPrefs(); ++ NotifyCustomFiltersChanged(); ++ } ++} + -+namespace adblock::common::prefs { ++std::vector PersistentFilteringConfiguration::GetCustomFilters() ++ const { ++ return GetFromList(dictionary_, kCustomFiltersKey); ++} + -+extern const char kEnableAdblockLegacy[]; -+extern const char kEnableAcceptableAdsLegacy[]; -+extern const char kAdblockAllowedDomainsLegacy[]; -+extern const char kAdblockCustomFiltersLegacy[]; -+extern const char kAdblockSubscriptionsLegacy[]; -+extern const char kAdblockCustomSubscriptionsLegacy[]; -+extern const char kAdblockMoreOptionsEnabled[]; -+extern const char kInstallFirstStartSubscriptions[]; -+extern const char kSubscriptionSignatures[]; -+extern const char kLastUsedSchemaVersion[]; -+extern const char kSubscriptionMetadata[]; -+extern const char kTelemetryLastPingTag[]; -+extern const char kTelemetryLastPingTime[]; -+extern const char kTelemetryPreviousLastPingTime[]; -+extern const char kTelemetryFirstPingTime[]; -+extern const char kTelemetryNextPingTime[]; ++void PersistentFilteringConfiguration::PersistToPrefs() { ++ StoreToPrefs(dictionary_, pref_service_, name_); ++} + -+void RegisterProfilePrefs(PrefRegistrySimple* registry); ++void PersistentFilteringConfiguration::NotifyEnabledStateChanged() { ++ for (auto& o : observers_) { ++ o.OnEnabledStateChanged(this); ++ } ++} + -+} // namespace adblock::common::prefs ++void PersistentFilteringConfiguration::NotifyFilterListsChanged() { ++ for (auto& o : observers_) { ++ o.OnFilterListsChanged(this); ++ } ++} + -+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_PREFS_H_ -diff --git a/components/adblock/core/common/adblock_utils.cc b/components/adblock/core/common/adblock_utils.cc ++void PersistentFilteringConfiguration::NotifyAllowedDomainsChanged() { ++ for (auto& o : observers_) { ++ o.OnAllowedDomainsChanged(this); ++ } ++} ++ ++void PersistentFilteringConfiguration::NotifyCustomFiltersChanged() { ++ for (auto& o : observers_) { ++ o.OnCustomFiltersChanged(this); ++ } ++} ++ ++// static ++void PersistentFilteringConfiguration::RegisterProfilePrefs( ++ PrefRegistrySimple* registry) { ++ registry->RegisterDictionaryPref( ++ std::string(filtering_configuration::prefs::kConfigurationsPrefsPath)); ++} ++ ++// static ++std::vector> ++PersistentFilteringConfiguration::GetPersistedConfigurations( ++ PrefService* pref_service) { ++ std::vector> configs; ++ const auto& all_configurations = ++ pref_service ++ ->GetValue(filtering_configuration::prefs::kConfigurationsPrefsPath) ++ .GetDict(); ++ for (auto it = all_configurations.begin(); it != all_configurations.end(); ++ ++it) { ++ configs.push_back(std::make_unique( ++ pref_service, (it->first))); ++ } ++ return configs; ++} ++ ++// static ++void PersistentFilteringConfiguration::RemovePersistedData( ++ PrefService* pref_service, ++ const std::string& name) { ++ static std::string kConfigurationsPrefsPathString( ++ filtering_configuration::prefs::kConfigurationsPrefsPath); ++ ScopedDictPrefUpdate update(pref_service, kConfigurationsPrefsPathString); ++ update.Get().Remove(name); ++} ++ ++} // namespace adblock +diff --git a/components/adblock/core/configuration/persistent_filtering_configuration.h b/components/adblock/core/configuration/persistent_filtering_configuration.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/common/adblock_utils.cc -@@ -0,0 +1,171 @@ ++++ b/components/adblock/core/configuration/persistent_filtering_configuration.h +@@ -0,0 +1,86 @@ ++ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -12640,165 +10508,167 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/common/adblock_utils.h" -+ -+#include ++#ifndef COMPONENTS_ADBLOCK_CORE_CONFIGURATION_PERSISTENT_FILTERING_CONFIGURATION_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONFIGURATION_PERSISTENT_FILTERING_CONFIGURATION_H_ + -+#include "base/containers/flat_map.h" -+#include "base/json/string_escape.h" -+#include "base/logging.h" -+#include "base/memory/scoped_refptr.h" -+#include "base/strings/safe_sprintf.h" -+#include "base/strings/string_split.h" -+#include "base/strings/string_util.h" -+#include "base/strings/utf_string_conversions.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/grit/components_resources.h" -+#include "components/version_info/version_info.h" -+#include "net/http/http_response_headers.h" -+#include "third_party/icu/source/i18n/unicode/regex.h" -+#include "third_party/re2/src/re2/re2.h" -+#include "ui/base/resource/resource_bundle.h" -+#include "url/gurl.h" ++#include "base/memory/raw_ptr.h" ++#include "base/observer_list.h" ++#include "base/values.h" ++#include "components/adblock/core/configuration/filtering_configuration.h" ++#include "components/prefs/pref_registry_simple.h" ++#include "components/prefs/pref_service.h" + +namespace adblock { -+namespace utils { -+namespace { -+constexpr char kLanguagesSeparator[] = ","; -+} + -+std::string CreateDomainAllowlistingFilter(const std::string& domain) { -+ return "@@||" + base::ToLowerASCII(domain) + -+ "^$document,domain=" + base::ToLowerASCII(domain); -+} ++// An implementation of FilteringConfiguration that persists itself to a dict ++// inside PrefService. ++// ++// All instances live in the same root node in prefs but in serialize themselves ++// to individual sub-keys based on their name. ++class PersistentFilteringConfiguration final : public FilteringConfiguration { ++ public: ++ // Each |name| must be unique, otherwise multiple ++ // PersistentFilteringConfigurations will try to serialize to the same path in ++ // prefs and conflict with one another. ++ PersistentFilteringConfiguration(PrefService* pref_service, std::string name); ++ ~PersistentFilteringConfiguration() final; + -+SiteKey GetSitekeyHeader( -+ const scoped_refptr& headers) { -+ size_t iterator = 0; -+ std::string name; -+ std::string value; -+ while (headers->EnumerateHeaderLines(&iterator, &name, &value)) { -+ std::transform(name.begin(), name.end(), name.begin(), -+ [](unsigned char c) { return std::tolower(c); }); -+ if (name == adblock::kSiteKeyHeaderKey) { -+ return SiteKey{value}; -+ } -+ } -+ return {}; -+} ++ void AddObserver(Observer* observer) final; ++ void RemoveObserver(Observer* observer) final; + -+AppInfo::AppInfo() = default; ++ const std::string& GetName() const final; + -+AppInfo::~AppInfo() = default; ++ void SetEnabled(bool enabled) final; ++ bool IsEnabled() const final; + -+AppInfo::AppInfo(const AppInfo&) = default; ++ void AddFilterList(const GURL& url) final; ++ void RemoveFilterList(const GURL& url) final; ++ std::vector GetFilterLists() const final; + -+AppInfo GetAppInfo() { -+ AppInfo info; ++ void AddAllowedDomain(const std::string& domain) final; ++ void RemoveAllowedDomain(const std::string& domain) final; ++ std::vector GetAllowedDomains() const final; + -+#if defined(EYEO_APPLICATION_NAME) -+ info.name = EYEO_APPLICATION_NAME; -+#else -+ info.name = version_info::GetProductName(); -+#endif -+#if defined(EYEO_APPLICATION_VERSION) -+ info.version = EYEO_APPLICATION_VERSION; -+#else -+ info.version = version_info::GetVersionNumber(); -+#endif -+ base::ReplaceChars(version_info::GetOSType(), base::kWhitespaceASCII, "", -+ &info.client_os); -+ return info; -+} ++ void AddCustomFilter(const std::string& filter) final; ++ void RemoveCustomFilter(const std::string& filter) final; ++ std::vector GetCustomFilters() const final; + -+std::string SerializeLanguages(const std::vector languages) { -+ if (languages.empty()) { -+ return {}; -+ } ++ static void RegisterProfilePrefs(PrefRegistrySimple* registry); + -+ return std::accumulate(std::next(languages.begin()), languages.end(), -+ languages[0], -+ [](const std::string& a, const std::string& b) { -+ return a + kLanguagesSeparator + b; -+ }); -+} ++ static std::vector> ++ GetPersistedConfigurations(PrefService* pref_service); ++ static void RemovePersistedData(PrefService* pref_service, ++ const std::string& name); + -+std::vector DeserializeLanguages(const std::string languages) { -+ return base::SplitString(languages, kLanguagesSeparator, -+ base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); -+} ++ private: ++ void PersistToPrefs(); ++ void NotifyEnabledStateChanged(); ++ void NotifyFilterListsChanged(); ++ void NotifyAllowedDomainsChanged(); ++ void NotifyCustomFiltersChanged(); + -+std::vector ConvertURLs(const std::vector& input) { -+ std::vector output; -+ output.reserve(input.size()); -+ std::transform(std::begin(input), std::end(input), std::back_inserter(output), -+ [](const GURL& gurl) { return gurl.spec(); }); -+ return output; -+} ++ const raw_ptr pref_service_; ++ std::string name_; ++ base::ObserverList observers_; ++ base::Value::Dict dictionary_; ++}; + -+std::string ConvertBaseTimeToABPFilterVersionFormat(const base::Time& date) { -+ base::Time::Exploded exploded; -+ // we receive in GMT and convert to UTC ( which has the same time ) -+ date.UTCExplode(&exploded); -+ char buff[16]; -+ base::strings::SafeSPrintf(buff, "%04d%02d%02d%02d%02d", exploded.year, -+ exploded.month, exploded.day_of_month, -+ exploded.hour, exploded.minute); -+ return std::string(buff); -+} ++} // namespace adblock + -+std::unique_ptr MakeFlatbufferDataFromResourceBundle( -+ int resource_id) { -+ return std::make_unique( -+ ui::ResourceBundle::GetSharedInstance().LoadDataResourceString( -+ resource_id)); ++#endif // COMPONENTS_ADBLOCK_CORE_CONFIGURATION_PERSISTENT_FILTERING_CONFIGURATION_H_ +diff --git a/components/adblock/core/converter/BUILD.gn b/components/adblock/core/converter/BUILD.gn +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/converter/BUILD.gn +@@ -0,0 +1,83 @@ ++# ++# This file is part of eyeo Chromium SDK, ++# Copyright (C) 2006-present eyeo GmbH ++# ++# eyeo Chromium SDK is free software: you can redistribute it and/or modify ++# it under the terms of the GNU General Public License version 3 as ++# published by the Free Software Foundation. ++# ++# eyeo Chromium SDK is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with eyeo Chromium SDK. If not, see . ++ ++source_set("converter") { ++ sources = [ ++ "flatbuffer_converter.cc", ++ "flatbuffer_converter.h", ++ ] ++ ++ deps = [ ++ "//components/adblock/core/converter/parser", ++ "//components/adblock/core/converter/serializer", ++ ] ++ ++ public_deps = [ ++ "//base", ++ "//components/adblock/core/common", ++ "//third_party/abseil-cpp:absl", ++ "//third_party/flatbuffers", ++ "//url", ++ ] ++ ++ assert_no_deps = [ ++ "//components/keyed_service/core", ++ "//components/resources:components_resources_grit", ++ "//net", ++ "//services/network/public/cpp", ++ ] +} + -+bool RegexMatches(base::StringPiece pattern, -+ base::StringPiece input, -+ bool case_sensitive) { -+ re2::RE2::Options options; -+ options.set_case_sensitive(case_sensitive); -+ options.set_never_capture(true); -+ options.set_log_errors(false); -+ options.set_encoding(re2::RE2::Options::EncodingLatin1); -+ const re2::RE2 re2_pattern(pattern.data(), options); -+ if (re2_pattern.ok()) { -+ return re2::RE2::PartialMatch(input.data(), re2_pattern); -+ } -+ VLOG(2) << "[eyeo] RE2 does not support filter pattern " << pattern -+ << " and return with error message: " << re2_pattern.error(); ++executable("adblock_flatbuffer_converter") { ++ sources = [ "converter_main.cc" ] + -+ // Maximum length of the string to match to avoid causing an icu::RegexMatcher -+ // stack overflow. (crbug.com/1198219) -+ if (input.size() > url::kMaxURLChars) { -+ return false; -+ } -+ const icu::UnicodeString icu_pattern(pattern.data(), pattern.length()); -+ const icu::UnicodeString icu_input(input.data(), input.length()); -+ UErrorCode status = U_ZERO_ERROR; -+ const auto icu_case_sensetive = case_sensitive ? 0u : UREGEX_CASE_INSENSITIVE; -+ icu::RegexMatcher matcher(icu_pattern, icu_case_sensetive, status); ++ deps = [ ++ ":converter", ++ "//third_party/zlib/google:compression_utils", ++ ] ++} + -+ // is pattern supported by icu regex -+ if (U_FAILURE(status)) { -+ // should not happen as validation should take place before reaching -+ // this point -+ DLOG(ERROR) << "[eyeo] None of the regex engines can use pattern: " -+ << pattern; -+ return false; -+ } -+ matcher.reset(icu_input); -+ return matcher.find(0, status); ++source_set("unit_tests") { ++ testonly = true ++ sources = [ ++ "test/flatbuffer_converter_test.cc", ++ ] ++ ++ deps = [ ++ ":converter", ++ "//components/adblock/core/subscription", ++ "//testing/gmock", ++ "//testing/gtest", ++ ] +} + -+} // namespace utils -+} // namespace adblock -diff --git a/components/adblock/core/common/adblock_utils.h b/components/adblock/core/common/adblock_utils.h ++source_set("perf_tests") { ++ testonly = true ++ sources = [ ++ "test/flatbuffer_converter_perftest.cc", ++ ] ++ ++ deps = [ ++ ":converter", ++ "//testing/gtest", ++ "//third_party/zlib/google:compression_utils", ++ ] ++ ++ data = [ ++ "//components/test/data/adblock/easylist.txt.gz", ++ "//components/test/data/adblock/exceptionrules.txt.gz", ++ ] ++} +diff --git a/components/adblock/core/converter/converter_main.cc b/components/adblock/core/converter/converter_main.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/common/adblock_utils.h -@@ -0,0 +1,80 @@ ++++ b/components/adblock/core/converter/converter_main.cc +@@ -0,0 +1,115 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -12816,74 +10686,109 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_UTILS_H_ -+#define COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_UTILS_H_ -+ -+#include ++#include ++#include + -+#include "base/functional/callback_forward.h" -+#include "base/memory/scoped_refptr.h" -+#include "base/time/time.h" ++#include "base/at_exit.h" ++#include "base/command_line.h" ++#include "base/files/file_path.h" ++#include "base/files/file_util.h" ++#include "base/logging.h" +#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/common/sitekey.h" -+ -+class GURL; -+ -+namespace net { -+class HttpResponseHeaders; -+} -+ -+namespace adblock { -+ -+class Subscription; -+ -+namespace utils { -+ -+struct AppInfo { -+ AppInfo(); -+ ~AppInfo(); -+ AppInfo(const AppInfo&); -+ std::string name; -+ std::string version; -+ std::string client_os; -+}; ++#include "components/adblock/core/converter/flatbuffer_converter.h" ++#include "third_party/zlib/google/compression_utils.h" + -+std::string CreateDomainAllowlistingFilter(const std::string& domain); ++#if BUILDFLAG(IS_WIN) ++#include "base/strings/sys_string_conversions.h" ++#endif // BUILDFLAG(IS_WIN) + -+SiteKey GetSitekeyHeader( -+ const scoped_refptr& headers); ++namespace { + -+AppInfo GetAppInfo(); ++bool Convert(base::FilePath input_path, GURL url, base::FilePath output_path) { ++ if (!url.is_valid()) { ++ LOG(ERROR) << "[eyeo] Filter list URL not valid: " << url; ++ return false; ++ } ++ std::string content; ++ if (!base::ReadFileToString(input_path, &content)) { ++ LOG(ERROR) << "[eyeo] Could not open input file " << input_path; ++ return false; ++ } ++ if (input_path.MatchesFinalExtension(FILE_PATH_LITERAL(".gz"))) { ++ if (!compression::GzipUncompress(content, &content)) { ++ LOG(ERROR) << "[eyeo] Could not decompress input file " << input_path; ++ return false; ++ } ++ } ++ std::stringstream input(content); ++ auto converter_result = ++ adblock::FlatbufferConverter::Convert(input, url, true); + -+std::string SerializeLanguages(const std::vector languages); ++ if (absl::holds_alternative(converter_result)) { ++ LOG(ERROR) << "[eyeo] " ++ << absl::get(converter_result); ++ return false; ++ } + -+std::vector DeserializeLanguages(const std::string languages); ++ if (absl::holds_alternative(converter_result)) { ++ LOG(ERROR) << "[eyeo] Filter list redirects. Won't convert"; ++ return false; ++ } + -+std::vector ConvertURLs(const std::vector& input); ++ if (!base::WriteFile( ++ output_path, ++ reinterpret_cast( ++ absl::get>( ++ converter_result) ++ ->data()), ++ absl::get>(converter_result) ++ ->size())) { ++ LOG(ERROR) << "[eyeo] Could not write output file " << output_path; ++ return false; ++ } ++ return true; ++} + -+// converts |date| into abp version format ex: 202107210821 -+// in UTC format as necessary for server ++} // namespace + -+std::string ConvertBaseTimeToABPFilterVersionFormat(const base::Time& date); ++int main(int argc, char* argv[]) { ++ base::AtExitManager exit_manager; ++ base::CommandLine::Init(argc, argv); ++ auto* command_line = base::CommandLine::ForCurrentProcess(); + -+// Creates a FlatbufferData object that holds data from the ResourceBundle ++ logging::LoggingSettings logging_settings; ++ logging_settings.logging_dest = logging::LOG_TO_STDERR; ++ logging::InitLogging(logging_settings); + -+std::unique_ptr MakeFlatbufferDataFromResourceBundle( -+ int resource_id); ++ const auto positional_arguments = command_line->GetArgs(); ++ if (positional_arguments.size() != 3u) { ++ LOG(ERROR) << "[eyeo] Usage: " << command_line->GetProgram() ++ << " [INPUT_FILE] [FILTER_LIST_URL] [OUTPUT_FILE]"; ++ return 1; ++ } + -+bool RegexMatches(base::StringPiece pattern, -+ base::StringPiece input, -+ bool case_sensitive); ++ // We need to make the path absolute because base::ReadFileToString() fails ++ // for paths with `..` components. ++ const auto input_path = ++ base::MakeAbsoluteFilePath(base::FilePath(positional_arguments[0])); + -+} // namespace utils -+} // namespace adblock ++#if BUILDFLAG(IS_WIN) ++ const auto url = GURL(base::SysWideToUTF8(positional_arguments[1])); ++#else ++ const auto url = GURL(positional_arguments[1]); ++#endif ++ const auto output_path = base::FilePath(positional_arguments[2]); + -+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_ADBLOCK_UTILS_H_ -diff --git a/components/adblock/core/common/content_type.cc b/components/adblock/core/common/content_type.cc ++ if (!Convert(input_path, url, output_path)) { ++ return 1; ++ } ++ return 0; ++} +diff --git a/components/adblock/core/converter/flatbuffer_converter.cc b/components/adblock/core/converter/flatbuffer_converter.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/common/content_type.cc -@@ -0,0 +1,91 @@ ++++ b/components/adblock/core/converter/flatbuffer_converter.cc +@@ -0,0 +1,134 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -12901,85 +10806,128 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/common/content_type.h" ++#include "components/adblock/core/converter/flatbuffer_converter.h" ++ ++#include ++#include ++ ++#include "base/logging.h" ++#include "base/strings/string_piece.h" ++#include "base/strings/string_split.h" ++#include "base/strings/string_util.h" ++#include "components/adblock/core/converter/parser/content_filter.h" ++#include "components/adblock/core/converter/parser/filter_classifier.h" ++#include "components/adblock/core/converter/parser/metadata.h" ++#include "components/adblock/core/converter/parser/snippet_filter.h" ++#include "components/adblock/core/converter/parser/url_filter.h" ++#include "components/adblock/core/converter/serializer/flatbuffer_serializer.h" + +namespace adblock { + -+std::string ContentTypeToString(ContentType content_type) { -+ switch (content_type) { -+ case ContentType::Unknown: -+ return "UNKNOWN"; -+ case ContentType::Other: -+ return "OTHER"; -+ case ContentType::Script: -+ return "SCRIPT"; -+ case ContentType::Image: -+ return "IMAGE"; -+ case ContentType::Stylesheet: -+ return "STYLESHEET"; -+ case ContentType::Object: -+ return "OBJECT"; -+ case ContentType::Subdocument: -+ return "SUBDOCUMENT"; -+ case ContentType::Websocket: -+ return "WEBSOCKET"; -+ case ContentType::Webrtc: -+ return "WEBRTC"; -+ case ContentType::Ping: -+ return "PING"; -+ case ContentType::Xmlhttprequest: -+ return "XMLHTTPREQUEST"; -+ case ContentType::Media: -+ return "MEDIA"; -+ case ContentType::Font: -+ return "FONT"; -+ case ContentType::WebBundle: -+ return "WEBBUNDLE"; -+ case ContentType::Default: -+ return "DEFAULT"; ++static constexpr char kCommentPrefix[] = "!"; ++static constexpr size_t kMaxSeparatorLength = 3u; ++ ++// static ++ConversionResult FlatbufferConverter::Convert(std::istream& filter_stream, ++ GURL subscription_url, ++ bool allow_privileged) { ++ if (!filter_stream) { ++ return ConversionError("Invalid filter stream"); ++ } ++ ++ auto metadata = Metadata::FromStream(filter_stream); ++ if (!metadata.has_value()) { ++ return ConversionError("Invalid filter list metadata"); ++ } ++ ++ if (metadata->redirect_url.has_value()) { ++ return metadata->redirect_url.value(); ++ } ++ ++ FlatbufferSerializer flatbuffer_serializer(subscription_url, ++ allow_privileged); ++ flatbuffer_serializer.SerializeMetadata(std::move(metadata.value())); ++ std::string line; ++ while (std::getline(filter_stream, line)) { ++ ConvertFilter(line, flatbuffer_serializer); + } ++ ++ return flatbuffer_serializer.GetSerializedSubscription(); +} + -+// TODO(atokodi): Use StringPiece -+ContentType ContentTypeFromString(const std::string& content_type) { -+ if (content_type == "other" || content_type == "xbl" || -+ content_type == "dtd") { -+ return ContentType::Other; -+ } else if (content_type == "script") { -+ return ContentType::Script; -+ } else if (content_type == "image" || content_type == "background") { -+ return ContentType::Image; -+ } else if (content_type == "stylesheet") { -+ return ContentType::Stylesheet; -+ } else if (content_type == "object") { -+ return ContentType::Object; -+ } else if (content_type == "subdocument") { -+ return ContentType::Subdocument; -+ } else if (content_type == "websocket") { -+ return ContentType::Websocket; -+ } else if (content_type == "webrtc") { -+ return ContentType::Webrtc; -+ } else if (content_type == "ping") { -+ return ContentType::Ping; -+ } else if (content_type == "xmlhttprequest") { -+ return ContentType::Xmlhttprequest; -+ } else if (content_type == "media") { -+ return ContentType::Media; -+ } else if (content_type == "font") { -+ return ContentType::Font; -+ } else if (content_type == "webbundle") { -+ return ContentType::WebBundle; -+ } else { -+ return ContentType::Unknown; ++// static ++std::unique_ptr FlatbufferConverter::Convert( ++ const std::vector& filters, ++ GURL subscription_url, ++ bool allow_privileged) { ++ FlatbufferSerializer flatbuffer_serializer(subscription_url, ++ allow_privileged); ++ for (const auto& filter : filters) { ++ ConvertFilter(filter, flatbuffer_serializer); ++ } ++ ++ return flatbuffer_serializer.GetSerializedSubscription(); ++} ++ ++// static ++void FlatbufferConverter::ConvertFilter( ++ const std::string& line, ++ FlatbufferSerializer& flatbuffer_serializer) { ++ const base::StringPiece filter_str = ++ base::TrimWhitespaceASCII(line, base::TRIM_ALL); ++ if (base::StartsWith(filter_str, kCommentPrefix) || filter_str.empty()) { ++ return; ++ } ++ ++ auto separator_pos = filter_str.find('#'); ++ FilterType filter_type = FilterType::Url; ++ if (separator_pos != std::string::npos) { ++ filter_type = FilterClassifier::FilterTypeFromString( ++ filter_str.substr(separator_pos, kMaxSeparatorLength)); ++ } ++ ++ switch (filter_type) { ++ case FilterType::ElemHide: ++ case FilterType::ElemHideException: ++ case FilterType::ElemHideEmulation: ++ if (auto content_filter = ContentFilter::FromString( ++ filter_str.substr(0, separator_pos), filter_type, ++ filter_str.substr( ++ separator_pos + ++ (filter_type == FilterType::ElemHide ? 2 : 3)))) { ++ flatbuffer_serializer.SerializeContentFilter( ++ std::move(content_filter.value())); ++ } else { ++ VLOG(1) << "[eyeo] Invalid content filter: " << line; ++ } ++ break; ++ case FilterType::Snippet: ++ if (auto snippet_filter = SnippetFilter::FromString( ++ filter_str.substr(0, separator_pos), ++ filter_str.substr(separator_pos + kMaxSeparatorLength))) { ++ flatbuffer_serializer.SerializeSnippetFilter( ++ std::move(snippet_filter.value())); ++ } else { ++ VLOG(1) << "[eyeo] Invalid snippet filter: " << line; ++ } ++ break; ++ case FilterType::Url: ++ if (auto url_filter = UrlFilter::FromString( ++ std::string(filter_str.data(), filter_str.size()))) { ++ flatbuffer_serializer.SerializeUrlFilter(std::move(url_filter.value())); ++ } else { ++ VLOG(1) << "[eyeo] Invalid url filter: " << line; ++ } ++ break; + } +} + +} // namespace adblock -diff --git a/components/adblock/core/common/content_type.h b/components/adblock/core/common/content_type.h +diff --git a/components/adblock/core/converter/flatbuffer_converter.h b/components/adblock/core/converter/flatbuffer_converter.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/common/content_type.h -@@ -0,0 +1,48 @@ ++++ b/components/adblock/core/converter/flatbuffer_converter.h +@@ -0,0 +1,55 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -12997,141 +10945,120 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_CONTENT_TYPE_H_ -+#define COMPONENTS_ADBLOCK_CORE_COMMON_CONTENT_TYPE_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_FLATBUFFER_CONVERTER_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONVERTER_FLATBUFFER_CONVERTER_H_ + -+#include ++#include ++#include ++ ++#include "base/types/strong_alias.h" ++#include "components/adblock/core/common/flatbuffer_data.h" ++#include "third_party/abseil-cpp/absl/types/variant.h" ++#include "url/gurl.h" + +namespace adblock { + -+enum ContentType { -+ Unknown = 0, -+ Other = 1, -+ Script = 2, -+ Image = 4, -+ Stylesheet = 8, -+ Object = 16, -+ Subdocument = 32, -+ Websocket = 128, -+ Webrtc = 256, -+ Ping = 1024, -+ Xmlhttprequest = 2048, -+ Media = 16384, -+ Font = 32768, -+ WebBundle = 65536, -+ Default = (1 << 24) - 1, -+}; ++using ConversionError = ++ base::StrongAlias; ++// Conversion can yield valid FlatbufferData, a redirect URL or an error: ++using ConversionResult = ++ absl::variant, GURL, ConversionError>; + -+std::string ContentTypeToString(ContentType content_type); -+ContentType ContentTypeFromString(const std::string& content_type); ++class FlatbufferSerializer; ++class FlatbufferConverter { ++ public: ++ static ConversionResult Convert(std::istream& filter_stream, ++ GURL subscription_url, ++ bool allow_privileged); ++ static std::unique_ptr Convert( ++ const std::vector& filters, ++ GURL subscription_url, ++ bool allow_privileged); ++ ++ private: ++ static void ConvertFilter(const std::string& line, ++ FlatbufferSerializer& flatbuffer_serializer); ++}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_CONTENT_TYPE_H_ -diff --git a/components/adblock/core/common/flatbuffer_data.cc b/components/adblock/core/common/flatbuffer_data.cc ++#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_FLATBUFFER_CONVERTER_H_ +diff --git a/components/adblock/core/converter/parser/BUILD.gn b/components/adblock/core/converter/parser/BUILD.gn new file mode 100644 --- /dev/null -+++ b/components/adblock/core/common/flatbuffer_data.cc -@@ -0,0 +1,94 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/common/flatbuffer_data.h" -+ -+#include "absl/types/optional.h" -+#include "base/files/file_path.h" -+#include "base/files/file_util.h" -+#include "base/functional/bind.h" -+#include "base/logging.h" -+#include "base/task/task_traits.h" -+#include "base/task/thread_pool.h" -+ -+namespace adblock { -+namespace { -+ -+// Destroys memory mapped to a file on disk, and optionally removes the file -+// itself. Performs blocking operations, must run on a MayBlock() task runner. -+void DestroyMemoryMappedFile(std::unique_ptr memory, -+ absl::optional path_to_remove) { -+ memory.reset(); -+ // Deleting the file should happen *after* removing the memory mapping. -+ if (path_to_remove) { -+ base::DeleteFile(*path_to_remove); -+ } -+} -+ -+} // namespace -+ -+InMemoryFlatbufferData::InMemoryFlatbufferData(std::string data) -+ : data_(std::move(data)) {} -+ -+InMemoryFlatbufferData::~InMemoryFlatbufferData() = default; -+ -+const uint8_t* InMemoryFlatbufferData::data() const { -+ return reinterpret_cast(data_.data()); -+} -+ -+size_t InMemoryFlatbufferData::size() const { -+ return data_.size(); -+} ++++ b/components/adblock/core/converter/parser/BUILD.gn +@@ -0,0 +1,66 @@ ++# ++# This file is part of eyeo Chromium SDK, ++# Copyright (C) 2006-present eyeo GmbH ++# ++# eyeo Chromium SDK is free software: you can redistribute it and/or modify ++# it under the terms of the GNU General Public License version 3 as ++# published by the Free Software Foundation. ++# ++# eyeo Chromium SDK is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with eyeo Chromium SDK. If not, see . + -+MemoryMappedFlatbufferData::MemoryMappedFlatbufferData(base::FilePath path) -+ : permanently_remove_path_(false), path_(std::move(path)) { -+ file_ = std::make_unique(); -+ if (!file_->Initialize(path_)) { -+ file_.reset(); -+ } -+} ++source_set("parser") { ++ sources = [ ++ "content_filter.cc", ++ "content_filter.h", ++ "domain_option.cc", ++ "domain_option.h", ++ "filter_classifier.cc", ++ "filter_classifier.h", ++ "metadata.cc", ++ "metadata.h", ++ "snippet_filter.cc", ++ "snippet_filter.h", ++ "snippet_tokenizer.cc", ++ "snippet_tokenizer.h", ++ "url_filter.cc", ++ "url_filter.h", ++ "url_filter_options.cc", ++ "url_filter_options.h", ++ ] + -+MemoryMappedFlatbufferData::~MemoryMappedFlatbufferData() { -+ const auto path_to_remove = -+ permanently_remove_path_.load() -+ ? absl::optional(std::move(path_)) -+ : absl::nullopt; -+ base::ThreadPool::PostTask( -+ FROM_HERE, {base::MayBlock()}, -+ base::BindOnce(&DestroyMemoryMappedFile, std::move(file_), -+ std::move(path_to_remove))); -+} ++ public_deps = [ ++ "//base", ++ "//components/adblock/core/common", ++ "//url", ++ ] + -+const uint8_t* MemoryMappedFlatbufferData::data() const { -+ if (!file_) { -+ return nullptr; -+ } -+ return file_->data(); ++ deps = [ ++ "//third_party/icu/", ++ "//third_party/re2", ++ ] +} + -+size_t MemoryMappedFlatbufferData::size() const { -+ if (!file_) { -+ return 0u; -+ } -+ return file_->length(); -+} ++source_set("unit_tests") { ++ testonly = true ++ sources = [ ++ "test/content_filter_test.cc", ++ "test/domain_option_test.cc", ++ "test/metadata_test.cc", ++ "test/snippet_filter_test.cc", ++ "test/snippet_tokenizer_test.cc", ++ "test/url_filter_options_test.cc", ++ "test/url_filter_test.cc", ++ ] + -+void MemoryMappedFlatbufferData::PermanentlyRemoveSourceOnDestruction() { -+ permanently_remove_path_.store(true); ++ deps = [ ++ ":parser", ++ "//testing/gmock", ++ "//testing/gtest" ++ ] +} -+ -+} // namespace adblock -diff --git a/components/adblock/core/common/flatbuffer_data.h b/components/adblock/core/common/flatbuffer_data.h +diff --git a/components/adblock/core/converter/parser/content_filter.cc b/components/adblock/core/converter/parser/content_filter.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/common/flatbuffer_data.h -@@ -0,0 +1,85 @@ ++++ b/components/adblock/core/converter/parser/content_filter.cc +@@ -0,0 +1,68 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -13149,193 +11076,62 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_FLATBUFFER_DATA_H_ -+#define COMPONENTS_ADBLOCK_CORE_COMMON_FLATBUFFER_DATA_H_ -+ -+#include -+#include -+#include ++#include "components/adblock/core/converter/parser/content_filter.h" + -+#include "base/files/file_path.h" -+#include "base/files/memory_mapped_file.h" ++#include "base/logging.h" + +namespace adblock { + -+// Holds raw flatbuffer data. -+// All methods must be thread-safe, the object can be accessed from multiple -+// task runners concurrently. -+class FlatbufferData { -+ public: -+ virtual ~FlatbufferData() = default; -+ -+ virtual const uint8_t* data() const = 0; -+ virtual size_t size() const = 0; -+ -+ // Schedules permanent removal of the data source of this flatbuffer when -+ // |this| is destroyed. This can mean removing a file from disk or removing -+ // a record from a database etc. -+ virtual void PermanentlyRemoveSourceOnDestruction() {} -+}; -+ -+// Implementation that loads the flatbuffer into memory from a source string. -+// Requires around 5-10 MB of memory for a subscription like EasyList. -+class InMemoryFlatbufferData : public FlatbufferData { -+ public: -+ explicit InMemoryFlatbufferData(std::string data); -+ ~InMemoryFlatbufferData() override; -+ const uint8_t* data() const override; -+ size_t size() const override; -+ -+ private: -+ std::string data_; -+}; -+ -+// Memory-mapped implementation that opens a file and memory-maps it. Should -+// use less memory than InMemoryFlatbufferData because the bulk of the data -+// resides on disk. Some memory is still consumed due to caching/paging and -+// the application's *shared* memory usage may increase. -+class MemoryMappedFlatbufferData : public FlatbufferData { -+ public: -+ // Ctor should be called on blocking task runner, performs file I/O/ -+ explicit MemoryMappedFlatbufferData(base::FilePath path); -+ ~MemoryMappedFlatbufferData() override; -+ const uint8_t* data() const override; -+ size_t size() const override; -+ -+ // Post cleanup of the mapped file to blocking task runner during destruction. -+ void PermanentlyRemoveSourceOnDestruction() final; -+ -+ private: -+ // Since buffers may be accessed by many threads, -+ // PermanentlyRemoveSourceOnDestruction() must set the cleanup flag -+ // atomically. -+ std::atomic_bool permanently_remove_path_; -+ const base::FilePath path_; -+ std::unique_ptr file_; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_FLATBUFFER_DATA_H_ -diff --git a/components/adblock/core/common/header_filter_data.h b/components/adblock/core/common/header_filter_data.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/common/header_filter_data.h -@@ -0,0 +1,38 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_HEADER_FILTER_DATA_H_ -+#define COMPONENTS_ADBLOCK_CORE_COMMON_HEADER_FILTER_DATA_H_ -+ -+#include -+ -+#include "url/gurl.h" -+ -+namespace adblock { ++static constexpr char kDomainSeparator[] = ","; + -+struct HeaderFilterData { -+ base::StringPiece header_filter; -+ GURL subscription_url; -+ // required by std::set -+ bool operator<(const HeaderFilterData& other) const { -+ return (header_filter < other.header_filter); ++// static ++absl::optional ContentFilter::FromString( ++ base::StringPiece domain_list, ++ FilterType filter_type, ++ base::StringPiece selector) { ++ DCHECK(filter_type == FilterType::ElemHide || ++ filter_type == FilterType::ElemHideException || ++ filter_type == FilterType::ElemHideEmulation); ++ if (selector.empty()) { ++ VLOG(1) << "[eyeo] Content filters require selector"; ++ return {}; + } -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_HEADER_FILTER_DATA_H_ -diff --git a/components/adblock/core/common/keyword_extractor_utils.cc b/components/adblock/core/common/keyword_extractor_utils.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/common/keyword_extractor_utils.cc -@@ -0,0 +1,30 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ + -+#include "components/adblock/core/common/keyword_extractor_utils.h" -+#include "base/strings/string_piece.h" ++ DomainOption domains = ++ DomainOption::FromString(domain_list, kDomainSeparator); + -+namespace adblock { -+namespace utils { ++ if (filter_type == FilterType::ElemHideEmulation) { ++ // ElemHideEmulation filters require that the domains have ++ // at least one subdomain or is localhost ++ domains.RemoveDomainsWithNoSubdomain(); ++ if (domains.GetIncludeDomains().empty()) { ++ VLOG(1) << "[eyeo] ElemHideEmulation " ++ "filters require include domains."; ++ return {}; ++ } ++ } else if (selector.size() < 3 && domains.UnrestrictedByDomain()) { ++ VLOG(1) << "[eyeo] Content filter is not specific enough. Must be longer " ++ "than 2 characters or restricted by domain."; ++ return {}; ++ } + -+bool IsBadKeyword(base::StringPiece value) { -+ return value == "http" || value == "https" || value == "com" || -+ value == "js" || value.size() < 2; ++ return ContentFilter(filter_type, selector, std::move(domains)); +} + -+} // namespace utils -+} // namespace adblock -diff --git a/components/adblock/core/common/keyword_extractor_utils.h b/components/adblock/core/common/keyword_extractor_utils.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/common/keyword_extractor_utils.h -@@ -0,0 +1,31 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_KEYWORD_EXTRACTOR_UTILS_H_ -+#define COMPONENTS_ADBLOCK_CORE_COMMON_KEYWORD_EXTRACTOR_UTILS_H_ -+ -+#include "base/strings/string_piece.h" -+ -+namespace adblock { -+namespace utils { -+ -+bool IsBadKeyword(base::StringPiece value); ++ContentFilter::ContentFilter(FilterType type, ++ base::StringPiece selector, ++ DomainOption domains) ++ : type(type), ++ selector(selector.data(), selector.size()), ++ domains(std::move(domains)) {} ++ContentFilter::~ContentFilter() = default; + -+} // namespace utils +} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_KEYWORD_EXTRACTOR_UTILS_H_ -diff --git a/components/adblock/core/common/regex_filter_pattern.cc b/components/adblock/core/common/regex_filter_pattern.cc +diff --git a/components/adblock/core/converter/parser/content_filter.h b/components/adblock/core/converter/parser/content_filter.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/common/regex_filter_pattern.cc -@@ -0,0 +1,34 @@ ++++ b/components/adblock/core/converter/parser/content_filter.h +@@ -0,0 +1,50 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -13353,148 +11149,44 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/common/regex_filter_pattern.h" -+ -+#include "absl/types/optional.h" -+#include "base/strings/string_piece.h" -+ -+namespace adblock { -+ -+absl::optional ExtractRegexFilterFromPattern( -+ base::StringPiece filter_pattern) { -+ if (!(filter_pattern.size() > 2 && filter_pattern.front() == '/' && -+ filter_pattern.back() == '/')) { -+ return absl::nullopt; -+ } -+ return filter_pattern.substr(1, filter_pattern.size() - 2); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/common/regex_filter_pattern.h b/components/adblock/core/common/regex_filter_pattern.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/common/regex_filter_pattern.h -@@ -0,0 +1,33 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_CONTENT_FILTER_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_CONTENT_FILTER_H_ + -+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_REGEX_FILTER_PATTERN_H_ -+#define COMPONENTS_ADBLOCK_CORE_COMMON_REGEX_FILTER_PATTERN_H_ ++#include + -+#include "absl/types/optional.h" +#include "base/strings/string_piece.h" ++#include "components/adblock/core/converter/parser/domain_option.h" ++#include "components/adblock/core/converter/parser/filter_classifier.h" ++#include "third_party/abseil-cpp/absl/types/optional.h" + +namespace adblock { + -+// For a regex filter "/{expression}/" returns "{expression}". -+// For non-regex filters, returns nullopt. -+// Cheap, may be used to identify regex filter patterns. -+absl::optional ExtractRegexFilterFromPattern( -+ base::StringPiece filter_pattern); -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_REGEX_FILTER_PATTERN_H_ -diff --git a/components/adblock/core/common/sitekey.h b/components/adblock/core/common/sitekey.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/common/sitekey.h -@@ -0,0 +1,29 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_COMMON_SITEKEY_H_ -+#define COMPONENTS_ADBLOCK_CORE_COMMON_SITEKEY_H_ -+ -+#include "base/types/strong_alias.h" -+ -+namespace adblock { -+ -+using SiteKey = base::StrongAlias; -+ -+} -+ -+#endif // COMPONENTS_ADBLOCK_CORE_COMMON_SITEKEY_H_ -diff --git a/components/adblock/core/common/test/adblock_utils_test.cc b/components/adblock/core/common/test/adblock_utils_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/common/test/adblock_utils_test.cc -@@ -0,0 +1,43 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/common/adblock_utils.h" -+ -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/subscription/subscription.h" -+#include "testing/gtest/include/gtest/gtest.h" -+#include "url/gurl.h" ++class ContentFilter { ++ public: ++ static absl::optional FromString(base::StringPiece domain_list, ++ FilterType type, ++ base::StringPiece selector); + -+namespace adblock { -+namespace utils { ++ ~ContentFilter(); + -+TEST(AdblockUtils, CreateAllowlistFilterForValidInput) { -+ EXPECT_EQ(CreateDomainAllowlistingFilter("google.com"), -+ "@@||google.com^$document,domain=google.com"); -+ EXPECT_EQ(CreateDomainAllowlistingFilter("GooGle.com"), -+ "@@||google.com^$document,domain=google.com"); -+} ++ const FilterType type; ++ const std::string selector; ++ const DomainOption domains; + -+TEST(AdblockUtils, BaseTimeConverterToVersion) { -+ base::Time date; -+ EXPECT_TRUE(base::Time::FromString("Thu, 1 Apr 2021 00:01:01 GMT", &date)); -+ EXPECT_EQ(utils::ConvertBaseTimeToABPFilterVersionFormat(date), -+ "202104010001"); -+} ++ private: ++ ContentFilter(FilterType type, ++ base::StringPiece selector, ++ DomainOption domains); ++}; + -+} // namespace utils +} // namespace adblock -diff --git a/components/adblock/core/common/test/flatbuffer_data_test.cc b/components/adblock/core/common/test/flatbuffer_data_test.cc ++ ++#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_CONTENT_FILTER_H_ +diff --git a/components/adblock/core/converter/parser/domain_option.cc b/components/adblock/core/converter/parser/domain_option.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/common/test/flatbuffer_data_test.cc -@@ -0,0 +1,78 @@ ++++ b/components/adblock/core/converter/parser/domain_option.cc +@@ -0,0 +1,114 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -13512,10184 +11204,108 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include ++#include "components/adblock/core/converter/parser/content_filter.h" + -+#include "base/containers/span.h" -+#include "base/files/file_path.h" -+#include "base/files/file_util.h" -+#include "base/files/scoped_temp_dir.h" -+#include "base/test/task_environment.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+class AdblockMemoryMappedFlatbufferDataTest : public testing::Test { -+ public: -+ void SetUp() override { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); } -+ base::test::TaskEnvironment task_environment_; -+ base::ScopedTempDir temp_dir_; -+}; -+ -+TEST_F(AdblockMemoryMappedFlatbufferDataTest, FileContentIsReadLikeMemory) { -+ base::FilePath test_file = temp_dir_.GetPath().AppendASCII("data.fb"); -+ ASSERT_TRUE(base::WriteFile(test_file, "content")); -+ -+ auto buffer = std::make_unique(test_file); -+ auto span = base::StringPiece(reinterpret_cast(buffer->data()), -+ buffer->size()); -+ EXPECT_EQ(span, "content"); -+} -+ -+TEST_F(AdblockMemoryMappedFlatbufferDataTest, -+ PermanentlyRemoveSourceOnDestruction) { -+ base::FilePath test_file = temp_dir_.GetPath().AppendASCII("data.fb"); -+ ASSERT_TRUE(base::WriteFile(test_file, "content")); -+ -+ auto buffer = std::make_unique(test_file); -+ buffer->PermanentlyRemoveSourceOnDestruction(); -+ -+ // File still present since buffer is alive. -+ task_environment_.RunUntilIdle(); -+ EXPECT_TRUE(base::PathExists(test_file)); -+ -+ // Buffer dies, destroys file. -+ buffer.reset(); -+ task_environment_.RunUntilIdle(); -+ EXPECT_FALSE(base::PathExists(test_file)); -+} -+ -+TEST_F(AdblockMemoryMappedFlatbufferDataTest, SourceNotDestroyedWhenNotAsked) { -+ base::FilePath test_file = temp_dir_.GetPath().AppendASCII("data.fb"); -+ ASSERT_TRUE(base::WriteFile(test_file, "content")); -+ -+ auto buffer = std::make_unique(test_file); -+ -+ // Buffer dies, source remains on disk as -+ // PermanentlyRemoveSourceOnDestruction() was not called. -+ buffer.reset(); -+ task_environment_.RunUntilIdle(); -+ EXPECT_TRUE(base::PathExists(test_file)); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/configuration/BUILD.gn b/components/adblock/core/configuration/BUILD.gn -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/configuration/BUILD.gn -@@ -0,0 +1,59 @@ -+# -+# This file is part of eyeo Chromium SDK, -+# Copyright (C) 2006-present eyeo GmbH -+# -+# eyeo Chromium SDK is free software: you can redistribute it and/or modify -+# it under the terms of the GNU General Public License version 3 as -+# published by the Free Software Foundation. -+# -+# eyeo Chromium SDK is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with eyeo Chromium SDK. If not, see . -+ -+source_set("configuration") { -+ sources = [ -+ "filtering_configuration_prefs.cc", -+ "filtering_configuration_prefs.h", -+ "filtering_configuration.h", -+ "persistent_filtering_configuration.cc", -+ "persistent_filtering_configuration.h", -+ ] -+ -+ public_deps = [ -+ "//base", -+ "//components/prefs", -+ "//url:url", -+ ] -+} -+ -+source_set("test_support") { -+ testonly = true -+ sources = [ -+ "test/fake_filtering_configuration.cc", -+ "test/fake_filtering_configuration.h", -+ "test/mock_filtering_configuration.cc", -+ "test/mock_filtering_configuration.h", -+ ] -+ public_deps = [ -+ ":configuration", -+ "//testing/gmock", -+ "//testing/gtest", -+ ] -+} -+ -+source_set("unit_tests") { -+ testonly = true -+ sources = [ "test/persistent_filtering_configuration_test.cc" ] -+ -+ deps = [ -+ ":configuration", -+ "//base/test:test_support", -+ "//components/prefs:test_support", -+ "//testing/gmock", -+ "//testing/gtest", -+ ] -+} -diff --git a/components/adblock/core/configuration/filtering_configuration.h b/components/adblock/core/configuration/filtering_configuration.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/configuration/filtering_configuration.h -@@ -0,0 +1,90 @@ -+ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_H_ -+ -+#include -+#include "base/observer_list_types.h" -+#include "base/strings/string_piece.h" -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+// A group of settings that control how to perform resource filtering. -+// -+// FilterConfigurations can be installed into a SubscriptionService. -+// SubscriptionService interprets how to express each configuration in terms of -+// installed subscriptions, and how to enact filtering. -+// -+// Each configuration is independent from others. If two FilteringConfigurations -+// have filters that result in a conflicting classification decision, -+// blocking a resource takes precedence over allowing a resource. -+// -+// Examples of multiple FilteringConfigurations could be: -+// - one configuration to filter ads -+// - another configuration to protect user privacy -+// - another configuration to enforce parental control -+// Each of these could be disabled/enabled or reconfigured individually, without -+// affecting others. -+class FilteringConfiguration { -+ public: -+ class Observer : public base::CheckedObserver { -+ public: -+ virtual void OnEnabledStateChanged(FilteringConfiguration* config) {} -+ virtual void OnFilterListsChanged(FilteringConfiguration* config) {} -+ virtual void OnAllowedDomainsChanged(FilteringConfiguration* config) {} -+ virtual void OnCustomFiltersChanged(FilteringConfiguration* config) {} -+ }; -+ -+ virtual ~FilteringConfiguration() = default; -+ -+ virtual void AddObserver(Observer* observer) = 0; -+ virtual void RemoveObserver(Observer* observer) = 0; -+ -+ // The name must be unique across all created configurations. -+ virtual const std::string& GetName() const = 0; -+ -+ // Enable or disable the entire configuration. A disabled configuration does -+ // not contribute filters to classification and behaves as if it was not -+ // installed. -+ virtual void SetEnabled(bool enabled) = 0; -+ virtual bool IsEnabled() const = 0; -+ -+ // Adding an existing filter list, or removing a non-existing filter list, are -+ // NOPs and do not notify observers. -+ virtual void AddFilterList(const GURL& url) = 0; -+ virtual void RemoveFilterList(const GURL& url) = 0; -+ virtual std::vector GetFilterLists() const = 0; -+ -+ // Adding an existing allowed domain, or removing a non-existing allowed -+ // domain, are NOPs and do not notify observers. -+ virtual void AddAllowedDomain(const std::string& domain) = 0; -+ virtual void RemoveAllowedDomain(const std::string& domain) = 0; -+ virtual std::vector GetAllowedDomains() const = 0; -+ -+ // Adding an existing custom filter, or removing a non-existing custom filter, -+ // are NOPs and do not notify observers. -+ virtual void AddCustomFilter(const std::string& filter) = 0; -+ virtual void RemoveCustomFilter(const std::string& filter) = 0; -+ virtual std::vector GetCustomFilters() const = 0; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_H_ -diff --git a/components/adblock/core/configuration/filtering_configuration_prefs.cc b/components/adblock/core/configuration/filtering_configuration_prefs.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/configuration/filtering_configuration_prefs.cc -@@ -0,0 +1,33 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/configuration/filtering_configuration_prefs.h" -+ -+#include "base/logging.h" -+#include "components/prefs/pref_registry_simple.h" -+ -+namespace adblock::filtering_configuration::prefs { -+ -+const char kConfigurationsPrefsPath[] = "filtering.configurations"; -+ -+void RegisterProfilePrefs(PrefRegistrySimple* registry) { -+ registry->RegisterDictionaryPref(kConfigurationsPrefsPath); -+ -+ VLOG(3) << "[eyeo] Registered prefs"; -+} -+ -+} // namespace adblock::filtering_configuration::prefs -diff --git a/components/adblock/core/configuration/filtering_configuration_prefs.h b/components/adblock/core/configuration/filtering_configuration_prefs.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/configuration/filtering_configuration_prefs.h -@@ -0,0 +1,30 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_PREFS_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_PREFS_H_ -+class PrefRegistrySimple; -+ -+namespace adblock::filtering_configuration::prefs { -+ -+extern const char kConfigurationsPrefsPath[]; -+ -+void RegisterProfilePrefs(PrefRegistrySimple* registry); -+ -+} // namespace adblock::filtering_configuration::prefs -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONFIGURATION_FILTERING_CONFIGURATION_PREFS_H_ -diff --git a/components/adblock/core/configuration/persistent_filtering_configuration.cc b/components/adblock/core/configuration/persistent_filtering_configuration.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/configuration/persistent_filtering_configuration.cc -@@ -0,0 +1,273 @@ -+ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/configuration/persistent_filtering_configuration.h" -+ -+#include -+ -+#include "base/strings/string_util.h" -+#include "components/adblock/core/configuration/filtering_configuration_prefs.h" -+#include "components/prefs/pref_service.h" -+#include "components/prefs/scoped_user_pref_update.h" -+ -+#include "base/logging.h" -+ -+namespace adblock { -+namespace { -+ -+constexpr auto kEnabledKey = base::StringPiece("enabled"); -+constexpr auto kDomainsKey = base::StringPiece("domains"); -+constexpr auto kCustomFiltersKey = base::StringPiece("filters"); -+constexpr auto kFilterListsKey = base::StringPiece("subscriptions"); -+ -+base::Value::Dict ReadFromPrefs(PrefService* pref_service, -+ base::StringPiece configuration_name) { -+ const auto& all_configurations = -+ pref_service -+ ->GetValue(filtering_configuration::prefs::kConfigurationsPrefsPath) -+ .GetDict(); -+ const auto* this_config = all_configurations.FindDict(configuration_name); -+ if (this_config) { -+ return base::Value::Dict(this_config->Clone()); -+ } -+ return base::Value::Dict(); -+} -+ -+void StoreToPrefs(const base::Value::Dict& configuration, -+ PrefService* pref_service, -+ base::StringPiece configuration_name) { -+ // ScopedDictPrefUpdate requires an std::string for some reason: -+ static std::string kConfigurationsPrefsPathString( -+ filtering_configuration::prefs::kConfigurationsPrefsPath); -+ ScopedDictPrefUpdate update(pref_service, kConfigurationsPrefsPathString); -+ update.Get().Set(configuration_name, configuration.Clone()); -+} -+ -+void SetDefaultValuesIfNeeded(base::Value::Dict& configuration) { -+ if (!configuration.FindBool(kEnabledKey)) { -+ configuration.Set(kEnabledKey, true); -+ } -+ configuration.EnsureList(kDomainsKey); -+ configuration.EnsureList(kCustomFiltersKey); -+ configuration.EnsureList(kFilterListsKey); -+} -+ -+bool AppendToList(base::Value::Dict& configuration, -+ base::StringPiece key, -+ const std::string& value) { -+ DCHECK(configuration.FindList(key)); // see SetDefaultValuesIfNeeded(). -+ auto* list = configuration.FindList(key); -+ if (base::ranges::find(*list, base::Value(value)) != list->end()) { -+ // value already exists in the list. -+ return false; -+ } -+ list->Append(value); -+ return true; -+} -+ -+bool RemoveFromList(base::Value::Dict& configuration, -+ base::StringPiece key, -+ const std::string& value) { -+ DCHECK(configuration.FindList(key)); // see SetDefaultValuesIfNeeded(). -+ auto* list = configuration.FindList(key); -+ auto it = base::ranges::find(*list, base::Value(value)); -+ if (it == list->end()) { -+ // value was not on the list. -+ return false; -+ } -+ list->erase(it); -+ return true; -+} -+ -+template -+std::vector GetFromList(const base::Value::Dict& configuration, -+ base::StringPiece key) { -+ DCHECK(configuration.FindList(key)); // see SetDefaultValuesIfNeeded(). -+ const auto* list = configuration.FindList(key); -+ std::vector result; -+ for (const auto& value : *list) { -+ if (value.is_string()) { -+ result.emplace_back(value.GetString()); -+ } -+ } -+ return result; -+} -+ -+} // namespace -+ -+PersistentFilteringConfiguration::PersistentFilteringConfiguration( -+ PrefService* pref_service, -+ std::string name) -+ : pref_service_(pref_service), -+ name_(std::move(name)), -+ dictionary_(ReadFromPrefs(pref_service_, name_)) { -+ SetDefaultValuesIfNeeded(dictionary_); -+ PersistToPrefs(); -+} -+ -+PersistentFilteringConfiguration::~PersistentFilteringConfiguration() = default; -+ -+void PersistentFilteringConfiguration::AddObserver(Observer* observer) { -+ observers_.AddObserver(observer); -+} -+void PersistentFilteringConfiguration::RemoveObserver(Observer* observer) { -+ observers_.RemoveObserver(observer); -+} -+ -+const std::string& PersistentFilteringConfiguration::GetName() const { -+ return name_; -+} -+ -+void PersistentFilteringConfiguration::SetEnabled(bool enabled) { -+ if (IsEnabled() == enabled) { -+ return; -+ } -+ dictionary_.Set(kEnabledKey, enabled); -+ PersistToPrefs(); -+ NotifyEnabledStateChanged(); -+} -+ -+bool PersistentFilteringConfiguration::IsEnabled() const { -+ const auto pref_value = dictionary_.FindBool(kEnabledKey); -+ DCHECK(pref_value); -+ return *pref_value; -+} -+ -+void PersistentFilteringConfiguration::AddFilterList(const GURL& url) { -+ if (AppendToList(dictionary_, kFilterListsKey, url.spec())) { -+ PersistToPrefs(); -+ NotifyFilterListsChanged(); -+ } -+} -+ -+void PersistentFilteringConfiguration::RemoveFilterList(const GURL& url) { -+ if (RemoveFromList(dictionary_, kFilterListsKey, url.spec())) { -+ PersistToPrefs(); -+ NotifyFilterListsChanged(); -+ } -+} -+ -+std::vector PersistentFilteringConfiguration::GetFilterLists() const { -+ return GetFromList(dictionary_, kFilterListsKey); -+} -+ -+void PersistentFilteringConfiguration::AddAllowedDomain( -+ const std::string& domain) { -+ if (AppendToList(dictionary_, kDomainsKey, domain)) { -+ PersistToPrefs(); -+ NotifyAllowedDomainsChanged(); -+ } -+} -+ -+void PersistentFilteringConfiguration::RemoveAllowedDomain( -+ const std::string& domain) { -+ if (RemoveFromList(dictionary_, kDomainsKey, domain)) { -+ PersistToPrefs(); -+ NotifyAllowedDomainsChanged(); -+ } -+} -+ -+std::vector PersistentFilteringConfiguration::GetAllowedDomains() -+ const { -+ return GetFromList(dictionary_, kDomainsKey); -+} -+ -+void PersistentFilteringConfiguration::AddCustomFilter( -+ const std::string& filter) { -+ if (AppendToList(dictionary_, kCustomFiltersKey, filter)) { -+ PersistToPrefs(); -+ NotifyCustomFiltersChanged(); -+ } -+} -+ -+void PersistentFilteringConfiguration::RemoveCustomFilter( -+ const std::string& filter) { -+ if (RemoveFromList(dictionary_, kCustomFiltersKey, filter)) { -+ PersistToPrefs(); -+ NotifyCustomFiltersChanged(); -+ } -+} -+ -+std::vector PersistentFilteringConfiguration::GetCustomFilters() -+ const { -+ return GetFromList(dictionary_, kCustomFiltersKey); -+} -+ -+void PersistentFilteringConfiguration::PersistToPrefs() { -+ StoreToPrefs(dictionary_, pref_service_, name_); -+} -+ -+void PersistentFilteringConfiguration::NotifyEnabledStateChanged() { -+ for (auto& o : observers_) { -+ o.OnEnabledStateChanged(this); -+ } -+} -+ -+void PersistentFilteringConfiguration::NotifyFilterListsChanged() { -+ for (auto& o : observers_) { -+ o.OnFilterListsChanged(this); -+ } -+} -+ -+void PersistentFilteringConfiguration::NotifyAllowedDomainsChanged() { -+ for (auto& o : observers_) { -+ o.OnAllowedDomainsChanged(this); -+ } -+} -+ -+void PersistentFilteringConfiguration::NotifyCustomFiltersChanged() { -+ for (auto& o : observers_) { -+ o.OnCustomFiltersChanged(this); -+ } -+} -+ -+// static -+void PersistentFilteringConfiguration::RegisterProfilePrefs( -+ PrefRegistrySimple* registry) { -+ registry->RegisterDictionaryPref( -+ std::string(filtering_configuration::prefs::kConfigurationsPrefsPath)); -+} -+ -+// static -+std::vector> -+PersistentFilteringConfiguration::GetPersistedConfigurations( -+ PrefService* pref_service) { -+ std::vector> configs; -+ const auto& all_configurations = -+ pref_service -+ ->GetValue(filtering_configuration::prefs::kConfigurationsPrefsPath) -+ .GetDict(); -+ for (auto it = all_configurations.begin(); it != all_configurations.end(); -+ ++it) { -+ configs.push_back(std::make_unique( -+ pref_service, (it->first))); -+ } -+ return configs; -+} -+ -+// static -+void PersistentFilteringConfiguration::RemovePersistedData( -+ PrefService* pref_service, -+ const std::string& name) { -+ static std::string kConfigurationsPrefsPathString( -+ filtering_configuration::prefs::kConfigurationsPrefsPath); -+ ScopedDictPrefUpdate update(pref_service, kConfigurationsPrefsPathString); -+ update.Get().Remove(name); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/configuration/persistent_filtering_configuration.h b/components/adblock/core/configuration/persistent_filtering_configuration.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/configuration/persistent_filtering_configuration.h -@@ -0,0 +1,86 @@ -+ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONFIGURATION_PERSISTENT_FILTERING_CONFIGURATION_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONFIGURATION_PERSISTENT_FILTERING_CONFIGURATION_H_ -+ -+#include "base/memory/raw_ptr.h" -+#include "base/observer_list.h" -+#include "base/values.h" -+#include "components/adblock/core/configuration/filtering_configuration.h" -+#include "components/prefs/pref_registry_simple.h" -+#include "components/prefs/pref_service.h" -+ -+namespace adblock { -+ -+// An implementation of FilteringConfiguration that persists itself to a dict -+// inside PrefService. -+// -+// All instances live in the same root node in prefs but in serialize themselves -+// to individual sub-keys based on their name. -+class PersistentFilteringConfiguration final : public FilteringConfiguration { -+ public: -+ // Each |name| must be unique, otherwise multiple -+ // PersistentFilteringConfigurations will try to serialize to the same path in -+ // prefs and conflict with one another. -+ PersistentFilteringConfiguration(PrefService* pref_service, std::string name); -+ ~PersistentFilteringConfiguration() final; -+ -+ void AddObserver(Observer* observer) final; -+ void RemoveObserver(Observer* observer) final; -+ -+ const std::string& GetName() const final; -+ -+ void SetEnabled(bool enabled) final; -+ bool IsEnabled() const final; -+ -+ void AddFilterList(const GURL& url) final; -+ void RemoveFilterList(const GURL& url) final; -+ std::vector GetFilterLists() const final; -+ -+ void AddAllowedDomain(const std::string& domain) final; -+ void RemoveAllowedDomain(const std::string& domain) final; -+ std::vector GetAllowedDomains() const final; -+ -+ void AddCustomFilter(const std::string& filter) final; -+ void RemoveCustomFilter(const std::string& filter) final; -+ std::vector GetCustomFilters() const final; -+ -+ static void RegisterProfilePrefs(PrefRegistrySimple* registry); -+ -+ static std::vector> -+ GetPersistedConfigurations(PrefService* pref_service); -+ static void RemovePersistedData(PrefService* pref_service, -+ const std::string& name); -+ -+ private: -+ void PersistToPrefs(); -+ void NotifyEnabledStateChanged(); -+ void NotifyFilterListsChanged(); -+ void NotifyAllowedDomainsChanged(); -+ void NotifyCustomFiltersChanged(); -+ -+ const raw_ptr pref_service_; -+ std::string name_; -+ base::ObserverList observers_; -+ base::Value::Dict dictionary_; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONFIGURATION_PERSISTENT_FILTERING_CONFIGURATION_H_ -diff --git a/components/adblock/core/configuration/test/fake_filtering_configuration.cc b/components/adblock/core/configuration/test/fake_filtering_configuration.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/configuration/test/fake_filtering_configuration.cc -@@ -0,0 +1,115 @@ -+ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/configuration/test/fake_filtering_configuration.h" -+ -+#include "base/ranges/algorithm.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+FakeFilteringConfiguration::FakeFilteringConfiguration() : name("testing") {} -+ -+FakeFilteringConfiguration::~FakeFilteringConfiguration() { -+ EXPECT_FALSE(observer) << "Observer was not removed"; -+} -+ -+void FakeFilteringConfiguration::AddObserver(Observer* obs) { -+ EXPECT_FALSE(observer) << "Observer was already added"; -+ observer = obs; -+} -+ -+void FakeFilteringConfiguration::RemoveObserver(Observer* obs) { -+ EXPECT_EQ(observer, obs) << "This fake works with just a single observer"; -+ observer = nullptr; -+} -+ -+const std::string& FakeFilteringConfiguration::GetName() const { -+ return name; -+} -+ -+void FakeFilteringConfiguration::SetEnabled(bool enabled) { -+ is_enabled = enabled; -+ if (observer) { -+ observer->OnEnabledStateChanged(this); -+ } -+} -+ -+bool FakeFilteringConfiguration::IsEnabled() const { -+ return is_enabled; -+} -+ -+void FakeFilteringConfiguration::AddFilterList(const GURL& url) { -+ filter_lists.push_back(url); -+ if (observer) { -+ observer->OnFilterListsChanged(this); -+ } -+} -+ -+void FakeFilteringConfiguration::RemoveFilterList(const GURL& url) { -+ filter_lists.erase(base::ranges::remove(filter_lists, url), -+ filter_lists.end()); -+ if (observer) { -+ observer->OnFilterListsChanged(this); -+ } -+} -+ -+std::vector FakeFilteringConfiguration::GetFilterLists() const { -+ return filter_lists; -+} -+ -+void FakeFilteringConfiguration::AddAllowedDomain(const std::string& domain) { -+ allowed_domains.push_back(domain); -+ if (observer) { -+ observer->OnAllowedDomainsChanged(this); -+ } -+} -+ -+void FakeFilteringConfiguration::RemoveAllowedDomain( -+ const std::string& domain) { -+ allowed_domains.erase(base::ranges::remove(allowed_domains, domain), -+ allowed_domains.end()); -+ if (observer) { -+ observer->OnAllowedDomainsChanged(this); -+ } -+} -+ -+std::vector FakeFilteringConfiguration::GetAllowedDomains() const { -+ return allowed_domains; -+} -+ -+void FakeFilteringConfiguration::AddCustomFilter(const std::string& filter) { -+ custom_filters.push_back(filter); -+ if (observer) { -+ observer->OnCustomFiltersChanged(this); -+ } -+} -+ -+void FakeFilteringConfiguration::RemoveCustomFilter(const std::string& filter) { -+ custom_filters.erase(base::ranges::remove(custom_filters, filter), -+ custom_filters.end()); -+ if (observer) { -+ observer->OnCustomFiltersChanged(this); -+ } -+} -+ -+std::vector FakeFilteringConfiguration::GetCustomFilters() const { -+ return custom_filters; -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/configuration/test/fake_filtering_configuration.h b/components/adblock/core/configuration/test/fake_filtering_configuration.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/configuration/test/fake_filtering_configuration.h -@@ -0,0 +1,66 @@ -+ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONFIGURATION_TEST_FAKE_FILTERING_CONFIGURATION_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONFIGURATION_TEST_FAKE_FILTERING_CONFIGURATION_H_ -+ -+#include -+#include -+ -+#include "base/memory/raw_ptr.h" -+#include "base/observer_list.h" -+#include "components/adblock/core/configuration/filtering_configuration.h" -+ -+namespace adblock { -+ -+class FakeFilteringConfiguration : public FilteringConfiguration { -+ public: -+ FakeFilteringConfiguration(); -+ ~FakeFilteringConfiguration() override; -+ -+ void AddObserver(Observer* observer) override; -+ void RemoveObserver(Observer* observer) override; -+ -+ const std::string& GetName() const override; -+ -+ void SetEnabled(bool enabled) override; -+ bool IsEnabled() const override; -+ -+ void AddFilterList(const GURL& url) override; -+ void RemoveFilterList(const GURL& url) override; -+ std::vector GetFilterLists() const override; -+ -+ void AddAllowedDomain(const std::string& domain) override; -+ void RemoveAllowedDomain(const std::string& domain) override; -+ std::vector GetAllowedDomains() const override; -+ -+ void AddCustomFilter(const std::string& filter) override; -+ void RemoveCustomFilter(const std::string& filter) override; -+ std::vector GetCustomFilters() const override; -+ -+ raw_ptr observer = nullptr; -+ std::string name; -+ bool is_enabled = true; -+ std::vector filter_lists; -+ std::vector allowed_domains; -+ std::vector custom_filters; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONFIGURATION_TEST_FAKE_FILTERING_CONFIGURATION_H_ -diff --git a/components/adblock/core/configuration/test/mock_filtering_configuration.cc b/components/adblock/core/configuration/test/mock_filtering_configuration.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/configuration/test/mock_filtering_configuration.cc -@@ -0,0 +1,34 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/configuration/test/mock_filtering_configuration.h" -+ -+namespace adblock { -+ -+MockFilteringConfiguration::MockFilteringConfiguration() = default; -+MockFilteringConfiguration::~MockFilteringConfiguration() = default; -+ -+void MockFilteringConfiguration::AddObserver( -+ FilteringConfiguration::Observer* observer) { -+ observers_.AddObserver(observer); -+} -+void MockFilteringConfiguration::RemoveObserver( -+ FilteringConfiguration::Observer* observer) { -+ observers_.RemoveObserver(observer); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/configuration/test/mock_filtering_configuration.h b/components/adblock/core/configuration/test/mock_filtering_configuration.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/configuration/test/mock_filtering_configuration.h -@@ -0,0 +1,81 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONFIGURATION_TEST_MOCK_FILTERING_CONFIGURATION_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONFIGURATION_TEST_MOCK_FILTERING_CONFIGURATION_H_ -+ -+#include "base/observer_list.h" -+#include "components/adblock/core/configuration/filtering_configuration.h" -+#include "testing/gmock/include/gmock/gmock.h" -+ -+using testing::NiceMock; -+ -+namespace adblock { -+ -+class MockFilteringConfiguration : public FilteringConfiguration { -+ public: -+ MockFilteringConfiguration(); -+ ~MockFilteringConfiguration() override; -+ -+ void AddObserver(FilteringConfiguration::Observer* observer) override; -+ void RemoveObserver(FilteringConfiguration::Observer* observer) override; -+ -+ // The name must be unique across all created configurations. -+ MOCK_METHOD(const std::string&, GetName, (), (const, override)); -+ -+ // Enable or disable the entire configuration. A disabled configuration does -+ // not contribute filters to classification and behaves as if it was not -+ // installed. -+ MOCK_METHOD(void, SetEnabled, (bool enabled), (override)); -+ MOCK_METHOD(bool, IsEnabled, (), (const, override)); -+ -+ // Adding an existing filter list, or removing a non-existing filter list, are -+ // NOPs and do not notify observers. -+ MOCK_METHOD(void, AddFilterList, (const GURL& url), (override)); -+ MOCK_METHOD(void, RemoveFilterList, (const GURL& url), (override)); -+ MOCK_METHOD(std::vector, GetFilterLists, (), (const, override)); -+ -+ // Adding an existing allowed domain, or removing a non-existing allowed -+ // domain, are NOPs and do not notify observers. -+ MOCK_METHOD(void, AddAllowedDomain, (const std::string& domain), (override)); -+ MOCK_METHOD(void, -+ RemoveAllowedDomain, -+ (const std::string& domain), -+ (override)); -+ MOCK_METHOD(std::vector, -+ GetAllowedDomains, -+ (), -+ (const, override)); -+ -+ // Adding an existing custom filter, or removing a non-existing custom filter, -+ // are NOPs and do not notify observers. -+ MOCK_METHOD(void, AddCustomFilter, (const std::string& filter), (override)); -+ MOCK_METHOD(void, -+ RemoveCustomFilter, -+ (const std::string& filter), -+ (override)); -+ MOCK_METHOD(std::vector, -+ GetCustomFilters, -+ (), -+ (const, override)); -+ -+ base::ObserverList observers_; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONFIGURATION_TEST_MOCK_FILTERING_CONFIGURATION_H_ -diff --git a/components/adblock/core/configuration/test/persistent_filtering_configuration_test.cc b/components/adblock/core/configuration/test/persistent_filtering_configuration_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/configuration/test/persistent_filtering_configuration_test.cc -@@ -0,0 +1,252 @@ -+ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/configuration/persistent_filtering_configuration.h" -+ -+#include -+ -+#include "components/adblock/core/configuration/filtering_configuration_prefs.h" -+#include "components/prefs/testing_pref_service.h" -+#include "gmock/gmock.h" -+#include "gtest/gtest.h" -+ -+namespace adblock { -+ -+namespace { -+ -+class MockObserver : public FilteringConfiguration::Observer { -+ public: -+ MOCK_METHOD(void, -+ OnEnabledStateChanged, -+ (FilteringConfiguration * config), -+ (override)); -+ MOCK_METHOD(void, -+ OnFilterListsChanged, -+ (FilteringConfiguration * config), -+ (override)); -+ MOCK_METHOD(void, -+ OnAllowedDomainsChanged, -+ (FilteringConfiguration * config), -+ (override)); -+ MOCK_METHOD(void, -+ OnCustomFiltersChanged, -+ (FilteringConfiguration * config), -+ (override)); -+}; -+} // namespace -+ -+// Wether the testee is destroyed and recreated by MaybeRecreateConfiguration(). -+// Recreating validates persistence over browser restarts while not recreating -+// validates behavior within a single session. -+enum class RecreateConfiguration { -+ Yes, -+ No, -+}; -+ -+class AdblockPersistentFilteringConfigurationTest -+ : public testing::TestWithParam { -+ public: -+ void SetUp() override { -+ PersistentFilteringConfiguration::RegisterProfilePrefs( -+ pref_service_.registry()); -+ RecreateConfiguration(); -+ } -+ -+ void TearDown() override { configuration_->RemoveObserver(&observer_); } -+ -+ void RecreateConfiguration() { -+ if (configuration_) { -+ testing::Mock::VerifyAndClearExpectations(&observer_); -+ configuration_->RemoveObserver(&observer_); -+ } -+ configuration_ = std::make_unique( -+ &pref_service_, kName); -+ configuration_->AddObserver(&observer_); -+ } -+ -+ void MaybeRecreateConfiguration() { -+ if (GetParam() == RecreateConfiguration::Yes) { -+ RecreateConfiguration(); -+ } -+ } -+ -+ const std::string kName = "adblock"; -+ const GURL kUrl1{"https://list.com/filters1.txt"}; -+ const GURL kUrl2{"https://list.com/filters2.txt"}; -+ const GURL kUrl3{"https://list.com/filters3.txt"}; -+ const std::string kAllowedDomain1{"www.domain1.com"}; -+ const std::string kAllowedDomain2{"www.domain2.com"}; -+ const std::string kAllowedDomain3{"www.domain3.com"}; -+ const std::string kCustomFilter1{"@@^domain1.com"}; -+ const std::string kCustomFilter2{"@@^domain2.com"}; -+ const std::string kCustomFilter3{"@@^domain3.com"}; -+ MockObserver observer_; -+ TestingPrefServiceSimple pref_service_; -+ std::unique_ptr configuration_; -+}; -+ -+TEST_P(AdblockPersistentFilteringConfigurationTest, NameStored) { -+ MaybeRecreateConfiguration(); -+ EXPECT_EQ(configuration_->GetName(), kName); -+} -+ -+TEST_P(AdblockPersistentFilteringConfigurationTest, EnabledStateStored) { -+ // No notification for setting Enabled to true because it is the default -+ // state. -+ EXPECT_CALL(observer_, OnEnabledStateChanged(configuration_.get())).Times(0); -+ configuration_->SetEnabled(true); -+ MaybeRecreateConfiguration(); -+ EXPECT_TRUE(configuration_->IsEnabled()); -+ -+ EXPECT_CALL(observer_, OnEnabledStateChanged(configuration_.get())); -+ configuration_->SetEnabled(false); -+ MaybeRecreateConfiguration(); -+ EXPECT_FALSE(configuration_->IsEnabled()); -+} -+ -+TEST_P(AdblockPersistentFilteringConfigurationTest, FilterListAdded) { -+ // List initially empty. -+ EXPECT_TRUE(configuration_->GetFilterLists().empty()); -+ // Observer will be notified about addition. -+ EXPECT_CALL(observer_, OnFilterListsChanged(configuration_.get())); -+ configuration_->AddFilterList(kUrl1); -+ -+ // New URL is returned consistently. -+ MaybeRecreateConfiguration(); -+ EXPECT_THAT(configuration_->GetFilterLists(), -+ testing::UnorderedElementsAre(kUrl1)); -+} -+ -+TEST_P(AdblockPersistentFilteringConfigurationTest, FilterListRemoved) { -+ // Observer will be notified about addition. -+ EXPECT_CALL(observer_, OnFilterListsChanged(configuration_.get())); -+ configuration_->AddFilterList(kUrl1); -+ // Observer will be notified about removal. -+ EXPECT_CALL(observer_, OnFilterListsChanged(configuration_.get())); -+ configuration_->RemoveFilterList(kUrl1); -+ -+ // Removed URL is no longer returned. -+ MaybeRecreateConfiguration(); -+ EXPECT_TRUE(configuration_->GetFilterLists().empty()); -+} -+ -+TEST_P(AdblockPersistentFilteringConfigurationTest, MultipleFilterLists) { -+ // Observer will be notified about all additions. -+ EXPECT_CALL(observer_, OnFilterListsChanged(configuration_.get())).Times(3); -+ configuration_->AddFilterList(kUrl1); -+ configuration_->AddFilterList(kUrl2); -+ configuration_->AddFilterList(kUrl3); -+ // Observer will be notified about one removal. -+ EXPECT_CALL(observer_, OnFilterListsChanged(configuration_.get())); -+ configuration_->RemoveFilterList(kUrl2); -+ -+ // Remaining lists are returned. -+ MaybeRecreateConfiguration(); -+ EXPECT_THAT(configuration_->GetFilterLists(), -+ testing::UnorderedElementsAre(kUrl1, kUrl3)); -+} -+ -+TEST_P(AdblockPersistentFilteringConfigurationTest, -+ DuplicateFilterListsIgnored) { -+ // Observer will be notified about only one addition. -+ EXPECT_CALL(observer_, OnFilterListsChanged(configuration_.get())).Times(1); -+ configuration_->AddFilterList(kUrl1); -+ configuration_->AddFilterList(kUrl1); -+ configuration_->AddFilterList(kUrl1); -+ -+ // Duplicate URL was ignored, only one instance returned. -+ MaybeRecreateConfiguration(); -+ EXPECT_THAT(configuration_->GetFilterLists(), -+ testing::UnorderedElementsAre(kUrl1)); -+} -+ -+TEST_P(AdblockPersistentFilteringConfigurationTest, -+ SpuriousFilterListRemovalIgnored) { -+ // Observer will be notified about one addition. -+ EXPECT_CALL(observer_, OnFilterListsChanged(configuration_.get())).Times(1); -+ configuration_->AddFilterList(kUrl1); -+ // Observer will be notified about one removal. -+ EXPECT_CALL(observer_, OnFilterListsChanged(configuration_.get())).Times(1); -+ configuration_->RemoveFilterList(kUrl1); -+ configuration_->RemoveFilterList(kUrl1); -+ configuration_->RemoveFilterList(kUrl1); -+ -+ MaybeRecreateConfiguration(); -+ EXPECT_TRUE(configuration_->GetFilterLists().empty()); -+} -+ -+TEST_P(AdblockPersistentFilteringConfigurationTest, MultipleAllowedDomains) { -+ // List initially empty. -+ EXPECT_TRUE(configuration_->GetAllowedDomains().empty()); -+ // Add some allowed domains. -+ EXPECT_CALL(observer_, OnAllowedDomainsChanged(configuration_.get())) -+ .Times(3); -+ configuration_->AddAllowedDomain(kAllowedDomain1); -+ configuration_->AddAllowedDomain(kAllowedDomain2); -+ configuration_->AddAllowedDomain(kAllowedDomain3); -+ // Spurious addition: -+ configuration_->AddAllowedDomain(kAllowedDomain3); -+ EXPECT_CALL(observer_, OnAllowedDomainsChanged(configuration_.get())) -+ .Times(1); -+ configuration_->RemoveAllowedDomain(kAllowedDomain2); -+ // Spurious removal: -+ configuration_->RemoveAllowedDomain(kAllowedDomain2); -+ -+ MaybeRecreateConfiguration(); -+ EXPECT_THAT(configuration_->GetAllowedDomains(), -+ testing::UnorderedElementsAre(kAllowedDomain1, kAllowedDomain3)); -+} -+ -+TEST_P(AdblockPersistentFilteringConfigurationTest, MultipleCustomFilters) { -+ // List initially empty. -+ EXPECT_TRUE(configuration_->GetCustomFilters().empty()); -+ // Add some custom filters. -+ EXPECT_CALL(observer_, OnCustomFiltersChanged(configuration_.get())).Times(3); -+ configuration_->AddCustomFilter(kCustomFilter1); -+ configuration_->AddCustomFilter(kCustomFilter2); -+ configuration_->AddCustomFilter(kCustomFilter3); -+ // Spurious addition: -+ configuration_->AddCustomFilter(kCustomFilter3); -+ -+ EXPECT_CALL(observer_, OnCustomFiltersChanged(configuration_.get())).Times(1); -+ configuration_->RemoveCustomFilter(kCustomFilter2); -+ // Spurious removal: -+ configuration_->RemoveCustomFilter(kCustomFilter2); -+ -+ MaybeRecreateConfiguration(); -+ EXPECT_THAT(configuration_->GetCustomFilters(), -+ testing::UnorderedElementsAre(kCustomFilter1, kCustomFilter3)); -+} -+ -+TEST_F(AdblockPersistentFilteringConfigurationTest, -+ PrefsClearedAfterRemovePersistedData) { -+ const auto& all_configurations = -+ pref_service_ -+ .GetValue(filtering_configuration::prefs::kConfigurationsPrefsPath) -+ .GetDict(); -+ EXPECT_NE(nullptr, all_configurations.FindDict(kName)); -+ PersistentFilteringConfiguration::RemovePersistedData(&pref_service_, kName); -+ EXPECT_EQ(nullptr, all_configurations.FindDict(kName)); -+} -+ -+INSTANTIATE_TEST_SUITE_P(All, -+ AdblockPersistentFilteringConfigurationTest, -+ testing::Values(RecreateConfiguration::Yes, -+ RecreateConfiguration::No)); -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/BUILD.gn b/components/adblock/core/converter/BUILD.gn -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/BUILD.gn -@@ -0,0 +1,83 @@ -+# -+# This file is part of eyeo Chromium SDK, -+# Copyright (C) 2006-present eyeo GmbH -+# -+# eyeo Chromium SDK is free software: you can redistribute it and/or modify -+# it under the terms of the GNU General Public License version 3 as -+# published by the Free Software Foundation. -+# -+# eyeo Chromium SDK is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with eyeo Chromium SDK. If not, see . -+ -+source_set("converter") { -+ sources = [ -+ "flatbuffer_converter.cc", -+ "flatbuffer_converter.h", -+ ] -+ -+ deps = [ -+ "//components/adblock/core/converter/parser", -+ "//components/adblock/core/converter/serializer", -+ ] -+ -+ public_deps = [ -+ "//base", -+ "//components/adblock/core/common", -+ "//third_party/abseil-cpp:absl", -+ "//third_party/flatbuffers", -+ "//url", -+ ] -+ -+ assert_no_deps = [ -+ "//components/keyed_service/core", -+ "//components/resources:components_resources_grit", -+ "//net", -+ "//services/network/public/cpp", -+ ] -+} -+ -+executable("adblock_flatbuffer_converter") { -+ sources = [ "converter_main.cc" ] -+ -+ deps = [ -+ ":converter", -+ "//third_party/zlib/google:compression_utils", -+ ] -+} -+ -+source_set("unit_tests") { -+ testonly = true -+ sources = [ -+ "test/flatbuffer_converter_test.cc", -+ ] -+ -+ deps = [ -+ ":converter", -+ "//components/adblock/core/subscription", -+ "//testing/gmock", -+ "//testing/gtest", -+ ] -+} -+ -+source_set("perf_tests") { -+ testonly = true -+ sources = [ -+ "test/flatbuffer_converter_perftest.cc", -+ ] -+ -+ deps = [ -+ ":converter", -+ "//testing/gtest", -+ "//third_party/zlib/google:compression_utils", -+ ] -+ -+ data = [ -+ "//components/test/data/adblock/easylist.txt.gz", -+ "//components/test/data/adblock/exceptionrules.txt.gz", -+ ] -+} -diff --git a/components/adblock/core/converter/converter_main.cc b/components/adblock/core/converter/converter_main.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/converter_main.cc -@@ -0,0 +1,115 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include -+#include -+ -+#include "base/at_exit.h" -+#include "base/command_line.h" -+#include "base/files/file_path.h" -+#include "base/files/file_util.h" -+#include "base/logging.h" -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/converter/flatbuffer_converter.h" -+#include "third_party/zlib/google/compression_utils.h" -+ -+#if BUILDFLAG(IS_WIN) -+#include "base/strings/sys_string_conversions.h" -+#endif // BUILDFLAG(IS_WIN) -+ -+namespace { -+ -+bool Convert(base::FilePath input_path, GURL url, base::FilePath output_path) { -+ if (!url.is_valid()) { -+ LOG(ERROR) << "[eyeo] Filter list URL not valid: " << url; -+ return false; -+ } -+ std::string content; -+ if (!base::ReadFileToString(input_path, &content)) { -+ LOG(ERROR) << "[eyeo] Could not open input file " << input_path; -+ return false; -+ } -+ if (input_path.MatchesFinalExtension(FILE_PATH_LITERAL(".gz"))) { -+ if (!compression::GzipUncompress(content, &content)) { -+ LOG(ERROR) << "[eyeo] Could not decompress input file " << input_path; -+ return false; -+ } -+ } -+ std::stringstream input(content); -+ auto converter_result = -+ adblock::FlatbufferConverter::Convert(input, url, true); -+ -+ if (absl::holds_alternative(converter_result)) { -+ LOG(ERROR) << "[eyeo] " -+ << absl::get(converter_result); -+ return false; -+ } -+ -+ if (absl::holds_alternative(converter_result)) { -+ LOG(ERROR) << "[eyeo] Filter list redirects. Won't convert"; -+ return false; -+ } -+ -+ if (!base::WriteFile( -+ output_path, -+ reinterpret_cast( -+ absl::get>( -+ converter_result) -+ ->data()), -+ absl::get>(converter_result) -+ ->size())) { -+ LOG(ERROR) << "[eyeo] Could not write output file " << output_path; -+ return false; -+ } -+ return true; -+} -+ -+} // namespace -+ -+int main(int argc, char* argv[]) { -+ base::AtExitManager exit_manager; -+ base::CommandLine::Init(argc, argv); -+ auto* command_line = base::CommandLine::ForCurrentProcess(); -+ -+ logging::LoggingSettings logging_settings; -+ logging_settings.logging_dest = logging::LOG_TO_STDERR; -+ logging::InitLogging(logging_settings); -+ -+ const auto positional_arguments = command_line->GetArgs(); -+ if (positional_arguments.size() != 3u) { -+ LOG(ERROR) << "[eyeo] Usage: " << command_line->GetProgram() -+ << " [INPUT_FILE] [FILTER_LIST_URL] [OUTPUT_FILE]"; -+ return 1; -+ } -+ -+ // We need to make the path absolute because base::ReadFileToString() fails -+ // for paths with `..` components. -+ const auto input_path = -+ base::MakeAbsoluteFilePath(base::FilePath(positional_arguments[0])); -+ -+#if BUILDFLAG(IS_WIN) -+ const auto url = GURL(base::SysWideToUTF8(positional_arguments[1])); -+#else -+ const auto url = GURL(positional_arguments[1]); -+#endif -+ const auto output_path = base::FilePath(positional_arguments[2]); -+ -+ if (!Convert(input_path, url, output_path)) { -+ return 1; -+ } -+ return 0; -+} -diff --git a/components/adblock/core/converter/flatbuffer_converter.cc b/components/adblock/core/converter/flatbuffer_converter.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/flatbuffer_converter.cc -@@ -0,0 +1,134 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/flatbuffer_converter.h" -+ -+#include -+#include -+ -+#include "base/logging.h" -+#include "base/strings/string_piece.h" -+#include "base/strings/string_split.h" -+#include "base/strings/string_util.h" -+#include "components/adblock/core/converter/parser/content_filter.h" -+#include "components/adblock/core/converter/parser/filter_classifier.h" -+#include "components/adblock/core/converter/parser/metadata.h" -+#include "components/adblock/core/converter/parser/snippet_filter.h" -+#include "components/adblock/core/converter/parser/url_filter.h" -+#include "components/adblock/core/converter/serializer/flatbuffer_serializer.h" -+ -+namespace adblock { -+ -+static constexpr char kCommentPrefix[] = "!"; -+static constexpr size_t kMaxSeparatorLength = 3u; -+ -+// static -+ConversionResult FlatbufferConverter::Convert(std::istream& filter_stream, -+ GURL subscription_url, -+ bool allow_privileged) { -+ if (!filter_stream) { -+ return ConversionError("Invalid filter stream"); -+ } -+ -+ auto metadata = Metadata::FromStream(filter_stream); -+ if (!metadata.has_value()) { -+ return ConversionError("Invalid filter list metadata"); -+ } -+ -+ if (metadata->redirect_url.has_value()) { -+ return metadata->redirect_url.value(); -+ } -+ -+ FlatbufferSerializer flatbuffer_serializer(subscription_url, -+ allow_privileged); -+ flatbuffer_serializer.SerializeMetadata(std::move(metadata.value())); -+ std::string line; -+ while (std::getline(filter_stream, line)) { -+ ConvertFilter(line, flatbuffer_serializer); -+ } -+ -+ return flatbuffer_serializer.GetSerializedSubscription(); -+} -+ -+// static -+std::unique_ptr FlatbufferConverter::Convert( -+ const std::vector& filters, -+ GURL subscription_url, -+ bool allow_privileged) { -+ FlatbufferSerializer flatbuffer_serializer(subscription_url, -+ allow_privileged); -+ for (const auto& filter : filters) { -+ ConvertFilter(filter, flatbuffer_serializer); -+ } -+ -+ return flatbuffer_serializer.GetSerializedSubscription(); -+} -+ -+// static -+void FlatbufferConverter::ConvertFilter( -+ const std::string& line, -+ FlatbufferSerializer& flatbuffer_serializer) { -+ const base::StringPiece filter_str = -+ base::TrimWhitespaceASCII(line, base::TRIM_ALL); -+ if (base::StartsWith(filter_str, kCommentPrefix) || filter_str.empty()) { -+ return; -+ } -+ -+ auto separator_pos = filter_str.find('#'); -+ FilterType filter_type = FilterType::Url; -+ if (separator_pos != std::string::npos) { -+ filter_type = FilterClassifier::FilterTypeFromString( -+ filter_str.substr(separator_pos, kMaxSeparatorLength)); -+ } -+ -+ switch (filter_type) { -+ case FilterType::ElemHide: -+ case FilterType::ElemHideException: -+ case FilterType::ElemHideEmulation: -+ if (auto content_filter = ContentFilter::FromString( -+ filter_str.substr(0, separator_pos), filter_type, -+ filter_str.substr( -+ separator_pos + -+ (filter_type == FilterType::ElemHide ? 2 : 3)))) { -+ flatbuffer_serializer.SerializeContentFilter( -+ std::move(content_filter.value())); -+ } else { -+ VLOG(1) << "[eyeo] Invalid content filter: " << line; -+ } -+ break; -+ case FilterType::Snippet: -+ if (auto snippet_filter = SnippetFilter::FromString( -+ filter_str.substr(0, separator_pos), -+ filter_str.substr(separator_pos + kMaxSeparatorLength))) { -+ flatbuffer_serializer.SerializeSnippetFilter( -+ std::move(snippet_filter.value())); -+ } else { -+ VLOG(1) << "[eyeo] Invalid snippet filter: " << line; -+ } -+ break; -+ case FilterType::Url: -+ if (auto url_filter = UrlFilter::FromString( -+ std::string(filter_str.data(), filter_str.size()))) { -+ flatbuffer_serializer.SerializeUrlFilter(std::move(url_filter.value())); -+ } else { -+ VLOG(1) << "[eyeo] Invalid url filter: " << line; -+ } -+ break; -+ } -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/flatbuffer_converter.h b/components/adblock/core/converter/flatbuffer_converter.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/flatbuffer_converter.h -@@ -0,0 +1,55 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_FLATBUFFER_CONVERTER_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_FLATBUFFER_CONVERTER_H_ -+ -+#include -+#include -+ -+#include "base/types/strong_alias.h" -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include "third_party/abseil-cpp/absl/types/variant.h" -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+using ConversionError = -+ base::StrongAlias; -+// Conversion can yield valid FlatbufferData, a redirect URL or an error: -+using ConversionResult = -+ absl::variant, GURL, ConversionError>; -+ -+class FlatbufferSerializer; -+class FlatbufferConverter { -+ public: -+ static ConversionResult Convert(std::istream& filter_stream, -+ GURL subscription_url, -+ bool allow_privileged); -+ static std::unique_ptr Convert( -+ const std::vector& filters, -+ GURL subscription_url, -+ bool allow_privileged); -+ -+ private: -+ static void ConvertFilter(const std::string& line, -+ FlatbufferSerializer& flatbuffer_serializer); -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_FLATBUFFER_CONVERTER_H_ -diff --git a/components/adblock/core/converter/parser/BUILD.gn b/components/adblock/core/converter/parser/BUILD.gn -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/BUILD.gn -@@ -0,0 +1,66 @@ -+# -+# This file is part of eyeo Chromium SDK, -+# Copyright (C) 2006-present eyeo GmbH -+# -+# eyeo Chromium SDK is free software: you can redistribute it and/or modify -+# it under the terms of the GNU General Public License version 3 as -+# published by the Free Software Foundation. -+# -+# eyeo Chromium SDK is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with eyeo Chromium SDK. If not, see . -+ -+source_set("parser") { -+ sources = [ -+ "content_filter.cc", -+ "content_filter.h", -+ "domain_option.cc", -+ "domain_option.h", -+ "filter_classifier.cc", -+ "filter_classifier.h", -+ "metadata.cc", -+ "metadata.h", -+ "snippet_filter.cc", -+ "snippet_filter.h", -+ "snippet_tokenizer.cc", -+ "snippet_tokenizer.h", -+ "url_filter.cc", -+ "url_filter.h", -+ "url_filter_options.cc", -+ "url_filter_options.h", -+ ] -+ -+ public_deps = [ -+ "//base", -+ "//components/adblock/core/common", -+ "//url", -+ ] -+ -+ deps = [ -+ "//third_party/icu/", -+ "//third_party/re2", -+ ] -+} -+ -+source_set("unit_tests") { -+ testonly = true -+ sources = [ -+ "test/content_filter_test.cc", -+ "test/domain_option_test.cc", -+ "test/metadata_test.cc", -+ "test/snippet_filter_test.cc", -+ "test/snippet_tokenizer_test.cc", -+ "test/url_filter_options_test.cc", -+ "test/url_filter_test.cc", -+ ] -+ -+ deps = [ -+ ":parser", -+ "//testing/gmock", -+ "//testing/gtest" -+ ] -+} -diff --git a/components/adblock/core/converter/parser/content_filter.cc b/components/adblock/core/converter/parser/content_filter.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/content_filter.cc -@@ -0,0 +1,68 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/content_filter.h" -+ -+#include "base/logging.h" -+ -+namespace adblock { -+ -+static constexpr char kDomainSeparator[] = ","; -+ -+// static -+absl::optional ContentFilter::FromString( -+ base::StringPiece domain_list, -+ FilterType filter_type, -+ base::StringPiece selector) { -+ DCHECK(filter_type == FilterType::ElemHide || -+ filter_type == FilterType::ElemHideException || -+ filter_type == FilterType::ElemHideEmulation); -+ if (selector.empty()) { -+ VLOG(1) << "[eyeo] Content filters require selector"; -+ return {}; -+ } -+ -+ DomainOption domains = -+ DomainOption::FromString(domain_list, kDomainSeparator); -+ -+ if (filter_type == FilterType::ElemHideEmulation) { -+ // ElemHideEmulation filters require that the domains have -+ // at least one subdomain or is localhost -+ domains.RemoveDomainsWithNoSubdomain(); -+ if (domains.GetIncludeDomains().empty()) { -+ VLOG(1) << "[eyeo] ElemHideEmulation " -+ "filters require include domains."; -+ return {}; -+ } -+ } else if (selector.size() < 3 && domains.UnrestrictedByDomain()) { -+ VLOG(1) << "[eyeo] Content filter is not specific enough. Must be longer " -+ "than 2 characters or restricted by domain."; -+ return {}; -+ } -+ -+ return ContentFilter(filter_type, selector, std::move(domains)); -+} -+ -+ContentFilter::ContentFilter(FilterType type, -+ base::StringPiece selector, -+ DomainOption domains) -+ : type(type), -+ selector(selector.data(), selector.size()), -+ domains(std::move(domains)) {} -+ContentFilter::~ContentFilter() = default; -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/content_filter.h b/components/adblock/core/converter/parser/content_filter.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/content_filter.h -@@ -0,0 +1,50 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_CONTENT_FILTER_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_CONTENT_FILTER_H_ -+ -+#include -+ -+#include "base/strings/string_piece.h" -+#include "components/adblock/core/converter/parser/domain_option.h" -+#include "components/adblock/core/converter/parser/filter_classifier.h" -+#include "third_party/abseil-cpp/absl/types/optional.h" -+ -+namespace adblock { -+ -+class ContentFilter { -+ public: -+ static absl::optional FromString(base::StringPiece domain_list, -+ FilterType type, -+ base::StringPiece selector); -+ -+ ~ContentFilter(); -+ -+ const FilterType type; -+ const std::string selector; -+ const DomainOption domains; -+ -+ private: -+ ContentFilter(FilterType type, -+ base::StringPiece selector, -+ DomainOption domains); -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_CONTENT_FILTER_H_ -diff --git a/components/adblock/core/converter/parser/domain_option.cc b/components/adblock/core/converter/parser/domain_option.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/domain_option.cc -@@ -0,0 +1,114 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/content_filter.h" -+ -+#include "base/logging.h" -+#include "base/ranges/algorithm.h" -+#include "base/strings/string_split.h" -+#include "base/strings/string_util.h" -+ -+namespace adblock { -+ -+namespace { -+ -+void RemoveDuplicates(std::vector& data) { -+ sort(data.begin(), data.end()); -+ auto unique_end = unique(data.begin(), data.end()); -+ data.erase(unique_end, data.end()); -+} -+ -+} // namespace -+ -+DomainOption::DomainOption() {} -+ -+// static -+DomainOption DomainOption::FromString(base::StringPiece domains_list, -+ base::StringPiece separator) { -+ static const std::string_view kExclusionPrefix = "~"; -+ auto lower_domains_list = base::ToLowerASCII(domains_list); -+ auto domains = -+ base::SplitStringPiece(lower_domains_list, separator, -+ base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); -+ -+ const auto first_include_domain_it = std::partition( -+ domains.begin(), domains.end(), [](base::StringPiece domain) { -+ return base::StartsWith(domain, kExclusionPrefix); -+ }); -+ -+ std::vector exclude_domains(domains.begin(), -+ first_include_domain_it); -+ std::vector include_domains(first_include_domain_it, -+ domains.end()); -+ -+ // Remove the ~ prefix that indicates an exclude domain. -+ for (auto& domain : exclude_domains) { -+ base::RemoveChars(domain, kExclusionPrefix, &domain); -+ } -+ -+ RemoveDuplicates(exclude_domains); -+ RemoveDuplicates(include_domains); -+ -+ return DomainOption(std::move(exclude_domains), std::move(include_domains)); -+} -+ -+const std::vector& DomainOption::GetExcludeDomains() const { -+ return exclude_domains_; -+} -+ -+const std::vector& DomainOption::GetIncludeDomains() const { -+ return include_domains_; -+} -+ -+void DomainOption::RemoveDomainsWithNoSubdomain() { -+ exclude_domains_.erase( -+ base::ranges::remove_if( -+ exclude_domains_, -+ [](auto it) { return !HasSubdomainOrLocalhost(it); }), -+ exclude_domains_.end()); -+ -+ include_domains_.erase( -+ base::ranges::remove_if( -+ include_domains_, -+ [](auto it) { return !HasSubdomainOrLocalhost(it); }), -+ include_domains_.end()); -+} -+ -+bool DomainOption::UnrestrictedByDomain() const { -+ return base::ranges::count_if(exclude_domains_, &HasSubdomainOrLocalhost) == -+ 0 && -+ base::ranges::count_if(include_domains_, &HasSubdomainOrLocalhost) == -+ 0; -+} -+ -+DomainOption::DomainOption(std::vector exclude_domains, -+ std::vector include_domains) -+ : exclude_domains_(std::move(exclude_domains)), -+ include_domains_(std::move(include_domains)) {} -+DomainOption::DomainOption(const DomainOption& other) = default; -+DomainOption::DomainOption(DomainOption&& other) = default; -+DomainOption& DomainOption::operator=(const DomainOption& other) = default; -+DomainOption& DomainOption::operator=(DomainOption&& other) = default; -+DomainOption::~DomainOption() = default; -+ -+// static -+bool DomainOption::HasSubdomainOrLocalhost(base::StringPiece domain) { -+ return (domain == "localhost") || -+ (domain.find(".") != base::StringPiece::npos); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/domain_option.h b/components/adblock/core/converter/parser/domain_option.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/domain_option.h -@@ -0,0 +1,59 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_DOMAIN_OPTION_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_DOMAIN_OPTION_H_ -+ -+#include -+#include -+ -+#include "base/strings/string_piece.h" -+ -+namespace adblock { -+ -+class DomainOption { -+ public: -+ DomainOption(); -+ -+ static DomainOption FromString(base::StringPiece domains_list, -+ base::StringPiece separator); -+ -+ DomainOption(const DomainOption& other); -+ DomainOption(DomainOption&& other); -+ DomainOption& operator=(const DomainOption& other); -+ DomainOption& operator=(DomainOption&& other); -+ ~DomainOption(); -+ -+ const std::vector& GetExcludeDomains() const; -+ const std::vector& GetIncludeDomains() const; -+ -+ void RemoveDomainsWithNoSubdomain(); -+ bool UnrestrictedByDomain() const; -+ -+ private: -+ DomainOption(std::vector exclude_domains, -+ std::vector include_domains); -+ -+ static bool HasSubdomainOrLocalhost(base::StringPiece domain); -+ -+ std::vector exclude_domains_; -+ std::vector include_domains_; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_DOMAIN_OPTION_H_ -diff --git a/components/adblock/core/converter/parser/filter_classifier.cc b/components/adblock/core/converter/parser/filter_classifier.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/filter_classifier.cc -@@ -0,0 +1,39 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/filter_classifier.h" -+ -+namespace adblock { -+ -+// static -+FilterType FilterClassifier::FilterTypeFromString(base::StringPiece separator) { -+ if (base::StartsWith(separator, kElemHideFilterSeparator)) { -+ return FilterType::ElemHide; -+ } -+ if (base::StartsWith(separator, kElemHideExceptionFilterSeparator)) { -+ return FilterType::ElemHideException; -+ } -+ if (base::StartsWith(separator, kElemHideEmulationFilterSeparator)) { -+ return FilterType::ElemHideEmulation; -+ } -+ if (base::StartsWith(separator, kSnippetFilterSeparator)) { -+ return FilterType::Snippet; -+ } -+ return FilterType::Url; -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/filter_classifier.h b/components/adblock/core/converter/parser/filter_classifier.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/filter_classifier.h -@@ -0,0 +1,46 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_FILTER_CLASSIFIER_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_FILTER_CLASSIFIER_H_ -+ -+#include "base/strings/string_piece.h" -+#include "base/strings/string_util.h" -+ -+namespace adblock { -+ -+static constexpr char kElemHideFilterSeparator[] = "##"; -+static constexpr char kElemHideExceptionFilterSeparator[] = "#@#"; -+static constexpr char kElemHideEmulationFilterSeparator[] = "#?#"; -+static constexpr char kSnippetFilterSeparator[] = "#$#"; -+ -+enum class FilterType { -+ ElemHide, -+ ElemHideException, -+ ElemHideEmulation, -+ Snippet, -+ Url, -+}; -+ -+class FilterClassifier { -+ public: -+ static FilterType FilterTypeFromString(base::StringPiece separator); -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_FILTER_CLASSIFIER_H_ -diff --git a/components/adblock/core/converter/parser/metadata.cc b/components/adblock/core/converter/parser/metadata.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/metadata.cc -@@ -0,0 +1,145 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/metadata.h" -+ -+#include "base/logging.h" -+#include "base/ranges/algorithm.h" -+#include "base/strings/string_number_conversions.h" -+#include "base/strings/string_util.h" -+#include "third_party/re2/src/re2/re2.h" -+ -+namespace adblock { -+ -+// Parses the stream line by line until it finds comments. After the first non -+// comment line any upcoming comments will be skipped. -+// static -+absl::optional Metadata::FromStream(std::istream& filter_stream) { -+ static re2::RE2 comment_re("^!\\s*(.*?)\\s*:\\s*(.*)"); -+ -+ std::string homepage; -+ std::string title; -+ std::string version; -+ absl::optional redirect_url; -+ base::TimeDelta expires = kDefaultExpirationInterval; -+ -+ std::string line; -+ std::getline(filter_stream, line); -+ if (!IsValidAdblockHeader(line)) { -+ VLOG(1) << "[eyeo] Invalid filter list. Should start with [Adblock Plus " -+ ".]."; -+ return {}; -+ } -+ -+ std::string key, value; -+ // Process stream until the line is a comment -+ auto position_in_stream = filter_stream.tellg(); -+ while (std::getline(filter_stream, line)) { -+ base::TrimWhitespaceASCII(line, base::TRIM_ALL, &line); -+ if (!re2::RE2::FullMatch(line, comment_re, &key, &value)) { -+ break; -+ } -+ -+ key = base::ToLowerASCII(key); -+ if (key == "homepage") { -+ homepage = value; -+ } else if (key == "redirect") { -+ auto url = GURL(value); -+ if (url.is_valid()) { -+ redirect_url = url; -+ } else { -+ VLOG(1) << "[eyeo] Invalid redirect URL: " << value -+ << ". Will not redirect."; -+ } -+ } else if (key == "title") { -+ title = value; -+ } else if (key == "version") { -+ version = value; -+ } else if (key == "expires") { -+ expires = ParseExpirationTime(value); -+ } -+ -+ position_in_stream = filter_stream.tellg(); -+ } -+ -+ // NOTE: Rewind stream after last header line -+ filter_stream.seekg(position_in_stream, std::ios_base::beg); -+ -+ return Metadata(std::move(homepage), std::move(title), std::move(version), -+ std::move(redirect_url), std::move(expires)); -+} -+ -+// static -+Metadata Metadata::Default() { -+ Metadata metadata; -+ return metadata; -+} -+ -+Metadata::Metadata(std::string homepage, -+ std::string title, -+ std::string version, -+ absl::optional redirect_url, -+ base::TimeDelta expires) -+ : homepage(std::move(homepage)), -+ title(std::move(title)), -+ version(std::move(version)), -+ redirect_url(std::move(redirect_url)), -+ expires(std::move(expires)) {} -+ -+Metadata::Metadata() : expires(kDefaultExpirationInterval) {} -+Metadata::Metadata(const Metadata& other) = default; -+Metadata::Metadata(Metadata&& other) = default; -+Metadata::~Metadata() = default; -+ -+// static -+bool Metadata::IsValidAdblockHeader(const std::string& adblock_header) { -+ static re2::RE2 adblock_header_re("^\\[Adblock.*\\]"); -+ std::string adblock_header_trimmed; -+ -+ base::TrimWhitespaceASCII(adblock_header, base::TRIM_ALL, -+ &adblock_header_trimmed); -+ if (!re2::RE2::FullMatch(re2::StringPiece(adblock_header_trimmed.data(), -+ adblock_header_trimmed.size()), -+ adblock_header_re)) { -+ return false; -+ } -+ return true; -+} -+ -+// NOTE: This is done by the logic described here: -+// https://eyeo.gitlab.io/adblockplus/abc/core-spec/#appendix-filter-list-syntax -+// static -+base::TimeDelta Metadata::ParseExpirationTime( -+ const std::string& expiration_value) { -+ static re2::RE2 expiration_time_re("\\s*([0-9]+)\\s*(h)?.*"); -+ std::string expiration_unit; -+ uint64_t expiration_time; -+ -+ if (!re2::RE2::FullMatch(expiration_value, expiration_time_re, -+ &expiration_time, &expiration_unit)) { -+ VLOG(1) << "[eyeo] Invalid expiration time format: " << expiration_value -+ << ". Will use default value of " -+ << kDefaultExpirationInterval.InDays() << " days."; -+ return kDefaultExpirationInterval; -+ } -+ return base::ranges::clamp(expiration_unit == "h" -+ ? base::Hours(expiration_time) -+ : base::Days(expiration_time), -+ kMinExpirationInterval, kMaxExpirationInterval); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/metadata.h b/components/adblock/core/converter/parser/metadata.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/metadata.h -@@ -0,0 +1,64 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_METADATA_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_METADATA_H_ -+ -+#include -+#include -+ -+#include "base/time/time.h" -+#include "third_party/abseil-cpp/absl/types/optional.h" -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+class Metadata { -+ public: -+ static absl::optional FromStream(std::istream& filter_stream); -+ static Metadata Default(); -+ -+ Metadata(const Metadata& other); -+ Metadata(Metadata&& other); -+ ~Metadata(); -+ -+ const std::string homepage; -+ const std::string title; -+ const std::string version; -+ const absl::optional redirect_url; -+ const base::TimeDelta expires; -+ -+ static constexpr base::TimeDelta kDefaultExpirationInterval = base::Days(5); -+ static constexpr base::TimeDelta kMaxExpirationInterval = base::Days(14); -+ static constexpr base::TimeDelta kMinExpirationInterval = base::Hours(1); -+ -+ private: -+ Metadata(std::string homepage, -+ std::string title, -+ std::string version, -+ absl::optional redirect_url, -+ base::TimeDelta expires); -+ Metadata(); -+ -+ static bool IsValidAdblockHeader(const std::string& adblock_header); -+ static base::TimeDelta ParseExpirationTime( -+ const std::string& expiration_value); -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_METADATA_H_ -diff --git a/components/adblock/core/converter/parser/snippet_filter.cc b/components/adblock/core/converter/parser/snippet_filter.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/snippet_filter.cc -@@ -0,0 +1,62 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/snippet_filter.h" -+ -+#include "base/logging.h" -+ -+namespace adblock { -+ -+static constexpr char kDomainSeparator[] = ","; -+ -+// static -+absl::optional SnippetFilter::FromString( -+ base::StringPiece domain_list, -+ base::StringPiece snippet) { -+ if (snippet.empty()) { -+ VLOG(1) << "[eyeo] Filter has no snippet script."; -+ return {}; -+ } -+ -+ DomainOption domains = -+ DomainOption::FromString(domain_list, kDomainSeparator); -+ // Snippet filters require that the domains have -+ // at least one subdomain or is localhost -+ domains.RemoveDomainsWithNoSubdomain(); -+ if (domains.GetIncludeDomains().empty()) { -+ VLOG(1) << "Snippet " -+ "filters require include domains."; -+ return {}; -+ } -+ -+ auto snippet_script = SnippetTokenizer::Tokenize(snippet); -+ if (snippet_script.empty()) { -+ VLOG(1) << "Could not tokenize snippet script"; -+ return {}; -+ } -+ -+ return SnippetFilter(std::move(snippet_script), std::move(domains)); -+} -+ -+SnippetFilter::SnippetFilter(SnippetTokenizer::SnippetScript snippet_script, -+ DomainOption domains) -+ : snippet_script(std::move(snippet_script)), domains(std::move(domains)) {} -+SnippetFilter::SnippetFilter(const SnippetFilter& other) = default; -+SnippetFilter::SnippetFilter(SnippetFilter&& other) = default; -+SnippetFilter::~SnippetFilter() = default; -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/snippet_filter.h b/components/adblock/core/converter/parser/snippet_filter.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/snippet_filter.h -@@ -0,0 +1,46 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_FILTER_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_FILTER_H_ -+ -+#include "components/adblock/core/converter/parser/domain_option.h" -+#include "components/adblock/core/converter/parser/snippet_tokenizer.h" -+#include "third_party/abseil-cpp/absl/types/optional.h" -+ -+namespace adblock { -+ -+class SnippetFilter { -+ public: -+ static absl::optional FromString(base::StringPiece domain_list, -+ base::StringPiece snippet); -+ -+ SnippetFilter(const SnippetFilter& other); -+ SnippetFilter(SnippetFilter&& other); -+ ~SnippetFilter(); -+ -+ const SnippetTokenizer::SnippetScript snippet_script; -+ const DomainOption domains; -+ -+ private: -+ SnippetFilter(SnippetTokenizer::SnippetScript snippet_script, -+ DomainOption domains); -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_FILTER_H_ -diff --git a/components/adblock/core/converter/parser/snippet_tokenizer.cc b/components/adblock/core/converter/parser/snippet_tokenizer.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/snippet_tokenizer.cc -@@ -0,0 +1,103 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/snippet_tokenizer.h" -+ -+#include "base/strings/string_number_conversions.h" -+#include "base/strings/string_util.h" -+#include "base/strings/utf_string_conversion_utils.h" -+#include "base/third_party/icu/icu_utf.h" -+ -+namespace adblock { -+ -+SnippetTokenizer::SnippetScript SnippetTokenizer::Tokenize( -+ base::StringPiece input) { -+ SnippetScript script; -+ std::string token; -+ std::vector arguments; -+ bool escape = false; -+ bool quotes_just_closed = false; -+ bool within_quotes = false; -+ for (char ch : input) { -+ if (escape) { -+ AddEscapeChar(token, ch); -+ escape = false; -+ quotes_just_closed = false; -+ } else if (ch == '\\') { -+ escape = true; -+ quotes_just_closed = false; -+ } else if (ch == '\'') { -+ within_quotes = !within_quotes; -+ quotes_just_closed = !within_quotes; -+ } else if (within_quotes || (ch != ';' && !base::IsAsciiWhitespace(ch))) { -+ token += ch; -+ quotes_just_closed = false; -+ } else { -+ AddArgument(arguments, token, quotes_just_closed); -+ if (ch == ';') { -+ AddFunctionCall(script, arguments, within_quotes, escape); -+ } -+ quotes_just_closed = false; -+ } -+ } -+ AddArgument(arguments, token, quotes_just_closed); -+ AddFunctionCall(script, arguments, within_quotes, escape); -+ return script; -+} -+ -+void SnippetTokenizer::AddEscapeChar(std::string& token, char ch) { -+ switch (ch) { -+ case 'r': -+ token += '\r'; -+ break; -+ case 'n': -+ token += '\n'; -+ break; -+ case 't': -+ token += '\t'; -+ break; -+ case 'u': -+ token += "\\u"; -+ break; -+ default: -+ token += ch; -+ } -+} -+ -+void SnippetTokenizer::AddArgument(std::vector& arguments, -+ std::string& token, -+ bool quotes_just_closed) { -+ if (quotes_just_closed || !token.empty()) { -+ arguments.push_back(token); -+ token.clear(); -+ } -+} -+ -+void SnippetTokenizer::AddFunctionCall(SnippetScript& script, -+ std::vector& arguments, -+ bool within_quotes, -+ bool escape) { -+ // if within quote whole script is invalid -+ // or if detected escape char but ended -+ if (arguments.empty() || within_quotes || escape) { -+ return; -+ } -+ script.push_back(arguments); -+ arguments.clear(); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/snippet_tokenizer.h b/components/adblock/core/converter/parser/snippet_tokenizer.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/snippet_tokenizer.h -@@ -0,0 +1,47 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_TOKENIZER_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_TOKENIZER_H_ -+ -+#include -+#include -+ -+#include "base/strings/string_piece.h" -+ -+namespace adblock { -+ -+class SnippetTokenizer { -+ public: -+ using SnippetScript = std::vector>; -+ -+ static SnippetScript Tokenize(base::StringPiece input); -+ -+ private: -+ static void AddEscapeChar(std::string& token, char ch); -+ static void AddArgument(std::vector& arguments, -+ std::string& token, -+ bool quotes_just_closed); -+ static void AddFunctionCall(SnippetScript& script, -+ std::vector& arguments, -+ bool within_quotes, -+ bool escape); -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_TOKENIZER_H_ -diff --git a/components/adblock/core/converter/parser/test/content_filter_test.cc b/components/adblock/core/converter/parser/test/content_filter_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/test/content_filter_test.cc -@@ -0,0 +1,195 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/content_filter.h" -+ -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+using ::testing::UnorderedElementsAre; -+ -+TEST(AdblockContentFilterTest, ParseEmptyContentFilter) { -+ EXPECT_FALSE( -+ ContentFilter::FromString("", FilterType::ElemHide, "").has_value()); -+} -+ -+TEST(AdblockContentFilterTest, ParseElemHideFilter) { -+ auto content_filter = ContentFilter::FromString( -+ "example.org", FilterType::ElemHide, -+ ".testcase-container > .testcase-eh-descendant"); -+ ASSERT_TRUE(content_filter.has_value()); -+ EXPECT_EQ(content_filter->type, FilterType::ElemHide); -+ EXPECT_EQ(content_filter->selector, -+ ".testcase-container > .testcase-eh-descendant"); -+ EXPECT_THAT(content_filter->domains.GetIncludeDomains(), -+ UnorderedElementsAre("example.org")); -+ EXPECT_TRUE(content_filter->domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockContentFilterTest, ParseElemHideFilterWithNonAsciiCharacters) { -+ // Non-ASCII characters are allowed in selectors. They should be preserved. -+ auto content_filter = -+ ContentFilter::FromString("test.com", FilterType::ElemHide, ".ad_bÖx"); -+ ASSERT_TRUE(content_filter.has_value()); -+ EXPECT_EQ(content_filter->type, FilterType::ElemHide); -+ EXPECT_EQ(content_filter->selector, ".ad_bÖx"); -+ EXPECT_THAT(content_filter->domains.GetIncludeDomains(), -+ UnorderedElementsAre("test.com")); -+ EXPECT_TRUE(content_filter->domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockContentFilterTest, ParseElemHideFilterMultipleDomains) { -+ auto content_filter = -+ ContentFilter::FromString("example.org,~foo.example.org,bar.example.org", -+ FilterType::ElemHide, "test-selector"); -+ ASSERT_TRUE(content_filter.has_value()); -+ EXPECT_EQ(content_filter->type, FilterType::ElemHide); -+ EXPECT_EQ(content_filter->selector, "test-selector"); -+ EXPECT_THAT(content_filter->domains.GetIncludeDomains(), -+ UnorderedElementsAre("example.org", "bar.example.org")); -+ EXPECT_THAT(content_filter->domains.GetExcludeDomains(), -+ UnorderedElementsAre("foo.example.org")); -+} -+ -+TEST(AdblockContentFilterTest, ParseElemHideFilterWithIdSelector) { -+ auto content_filter = ContentFilter::FromString( -+ "example.org", FilterType::ElemHide, "#this_is_an_id"); -+ ASSERT_TRUE(content_filter.has_value()); -+ EXPECT_EQ(content_filter->type, FilterType::ElemHide); -+ EXPECT_EQ(content_filter->selector, "#this_is_an_id"); -+ EXPECT_THAT(content_filter->domains.GetIncludeDomains(), -+ UnorderedElementsAre("example.org")); -+ EXPECT_TRUE(content_filter->domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockContentFilterTest, ParseElemHideFilterWithNoDomains) { -+ auto content_filter = -+ ContentFilter::FromString("", FilterType::ElemHide, "selector"); -+ ASSERT_TRUE(content_filter.has_value()); -+ EXPECT_EQ(content_filter->type, FilterType::ElemHide); -+ EXPECT_EQ(content_filter->selector, "selector"); -+ EXPECT_TRUE(content_filter->domains.GetIncludeDomains().empty()); -+ EXPECT_TRUE(content_filter->domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockContentFilterTest, ParseElemHideFilterWithNoSelector) { -+ ASSERT_FALSE( -+ ContentFilter::FromString("example.org", FilterType::ElemHide, "") -+ .has_value()); -+} -+ -+TEST(AdblockContentFilterTest, ParseElemHideExceptionFilter) { -+ auto content_filter = ContentFilter::FromString( -+ "example.org", FilterType::ElemHideException, "selector"); -+ ASSERT_TRUE(content_filter.has_value()); -+ EXPECT_EQ(content_filter->type, FilterType::ElemHideException); -+ EXPECT_EQ(content_filter->selector, "selector"); -+ EXPECT_THAT(content_filter->domains.GetIncludeDomains(), -+ UnorderedElementsAre("example.org")); -+ EXPECT_TRUE(content_filter->domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockContentFilterTest, ParseElemHideExceptionFilterWithIdSelector) { -+ auto content_filter = ContentFilter::FromString( -+ "example.org", FilterType::ElemHideException, "#this_is_an_id"); -+ ASSERT_TRUE(content_filter.has_value()); -+ EXPECT_EQ(content_filter->type, FilterType::ElemHideException); -+ EXPECT_EQ(content_filter->selector, "#this_is_an_id"); -+ EXPECT_THAT(content_filter->domains.GetIncludeDomains(), -+ UnorderedElementsAre("example.org")); -+ EXPECT_TRUE(content_filter->domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockContentFilterTest, ParseElemHideEmulationFilter) { -+ auto content_filter = ContentFilter::FromString( -+ "foo.example.org", FilterType::ElemHideEmulation, "foo"); -+ ASSERT_TRUE(content_filter.has_value()); -+ EXPECT_EQ(content_filter->type, FilterType::ElemHideEmulation); -+ EXPECT_EQ(content_filter->selector, "foo"); -+ EXPECT_THAT(content_filter->domains.GetIncludeDomains(), -+ UnorderedElementsAre("foo.example.org")); -+ EXPECT_TRUE(content_filter->domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockContentFilterTest, -+ ParseElemHideEmulationFilterWithNonAsciiCharacters) { -+ // Non-ASCII characters are allowed in selectors. They should be preserved. -+ auto content_filter = ContentFilter::FromString( -+ "test.com", FilterType::ElemHideEmulation, ".ad_bÖx"); -+ ASSERT_TRUE(content_filter.has_value()); -+ EXPECT_EQ(content_filter->type, FilterType::ElemHideEmulation); -+ EXPECT_EQ(content_filter->selector, ".ad_bÖx"); -+ EXPECT_THAT(content_filter->domains.GetIncludeDomains(), -+ UnorderedElementsAre("test.com")); -+ EXPECT_TRUE(content_filter->domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockContentFilterTest, ParseElemHideEmulationFilterNoIncludeDomain) { -+ ASSERT_FALSE(ContentFilter::FromString("~foo.example.org", -+ FilterType::ElemHideEmulation, "foo") -+ .has_value()); -+} -+ -+TEST(AdblockContentFilterTest, -+ ParseElemHideEmulationFilterDomainsWithNoSubdomainRemoved) { -+ auto content_filter = -+ ContentFilter::FromString("org,example.org,~com,~example_too.org", -+ FilterType::ElemHideEmulation, "foo"); -+ ASSERT_TRUE(content_filter.has_value()); -+ EXPECT_EQ(content_filter->type, FilterType::ElemHideEmulation); -+ EXPECT_EQ(content_filter->selector, "foo"); -+ EXPECT_THAT(content_filter->domains.GetIncludeDomains(), -+ UnorderedElementsAre("example.org")); -+ EXPECT_THAT(content_filter->domains.GetExcludeDomains(), -+ UnorderedElementsAre("example_too.org")); -+} -+ -+TEST(AdblockContentFilterTest, -+ ParseElemHideEmulationFilterDomainsWithNoSubdomainRemovedButNotLocalhost) { -+ auto content_filter = -+ ContentFilter::FromString("org,example.org,~localhost,~example_too.org", -+ FilterType::ElemHideEmulation, "foo"); -+ ASSERT_TRUE(content_filter.has_value()); -+ EXPECT_EQ(content_filter->type, FilterType::ElemHideEmulation); -+ EXPECT_EQ(content_filter->selector, "foo"); -+ EXPECT_THAT(content_filter->domains.GetIncludeDomains(), -+ UnorderedElementsAre("example.org")); -+ EXPECT_THAT(content_filter->domains.GetExcludeDomains(), -+ UnorderedElementsAre("example_too.org", "localhost")); -+} -+ -+TEST(AdblockContentFilterTest, ParseUnspecifcContentFilter) { -+ // Short, non domain-specific filters are disallowed because they could break -+ // a lot of sites by accident: -+ EXPECT_FALSE( -+ ContentFilter::FromString("", FilterType::ElemHide, "li").has_value()); -+ EXPECT_FALSE(ContentFilter::FromString("", FilterType::ElemHideException, "p") -+ .has_value()); -+ -+ // This filter is long enough: -+ EXPECT_TRUE( -+ ContentFilter::FromString("", FilterType::ElemHide, "adv").has_value()); -+ // This filter is short ("p") but domain-specific, so in worst case it could -+ // only break example.com. -+ EXPECT_TRUE( -+ ContentFilter::FromString("example.com", FilterType::ElemHide, "p") -+ .has_value()); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/test/domain_option_test.cc b/components/adblock/core/converter/parser/test/domain_option_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/test/domain_option_test.cc -@@ -0,0 +1,129 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/domain_option.h" -+ -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+using ::testing::UnorderedElementsAre; -+ -+TEST(AdblockDomainOptionTest, ParseDomainOptionEmpty) { -+ auto domains = DomainOption::FromString("", ","); -+ EXPECT_TRUE(domains.GetIncludeDomains().empty()); -+ EXPECT_TRUE(domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockDomainOptionTest, ParseDomainOptionIncludeSimple) { -+ auto domains = DomainOption::FromString("domain.org", ","); -+ EXPECT_THAT(domains.GetIncludeDomains(), UnorderedElementsAre("domain.org")); -+ EXPECT_TRUE(domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockDomainOptionTest, ParseDomainOptionExcludeSimple) { -+ auto domains = DomainOption::FromString("~domain.org", ","); -+ EXPECT_TRUE(domains.GetIncludeDomains().empty()); -+ EXPECT_THAT(domains.GetExcludeDomains(), UnorderedElementsAre("domain.org")); -+} -+ -+TEST(AdblockDomainOptionTest, ParseDomainOptionMultiple) { -+ auto domains = DomainOption::FromString( -+ "domain.org,~exclude_domain.org,test.domain.org,~test.exclude_domain." -+ "org", -+ ","); -+ EXPECT_THAT(domains.GetIncludeDomains(), -+ UnorderedElementsAre("test.domain.org", "domain.org")); -+ EXPECT_THAT( -+ domains.GetExcludeDomains(), -+ UnorderedElementsAre("test.exclude_domain.org", "exclude_domain.org")); -+} -+ -+TEST(AdblockDomainOptionTest, ParseDomainOptionCaseInsensitive) { -+ auto domains = DomainOption::FromString( -+ "DoMain.org,~excLude_doMain.org,test.domain.org,~tESt.exclude_domain." -+ "org", -+ ","); -+ EXPECT_THAT(domains.GetIncludeDomains(), -+ UnorderedElementsAre("test.domain.org", "domain.org")); -+ EXPECT_THAT( -+ domains.GetExcludeDomains(), -+ UnorderedElementsAre("test.exclude_domain.org", "exclude_domain.org")); -+} -+ -+TEST(AdblockDomainOptionTest, ParseDomainOptionMultipleWithWs) { -+ auto domains = DomainOption::FromString( -+ "domain.org , ~exclude_domain.org, test.domain.org " -+ ",~test.exclude_domain.org ", -+ ","); -+ EXPECT_THAT(domains.GetIncludeDomains(), -+ UnorderedElementsAre("test.domain.org", "domain.org")); -+ EXPECT_THAT( -+ domains.GetExcludeDomains(), -+ UnorderedElementsAre("test.exclude_domain.org", "exclude_domain.org")); -+} -+ -+TEST(AdblockDomainOptionTest, ParseDomainOptionIncludeMultiple) { -+ auto domains = DomainOption::FromString("domain.org,test.domain.org", ","); -+ EXPECT_THAT(domains.GetIncludeDomains(), -+ UnorderedElementsAre("domain.org", "test.domain.org")); -+ EXPECT_TRUE(domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockDomainOptionTest, ParseDomainOptionExcludeMultiple) { -+ auto domains = DomainOption::FromString( -+ "~exclude_domain.org,~test.exclude_domain.org", ","); -+ EXPECT_TRUE(domains.GetIncludeDomains().empty()); -+ EXPECT_THAT( -+ domains.GetExcludeDomains(), -+ UnorderedElementsAre("exclude_domain.org", "test.exclude_domain.org")); -+} -+ -+TEST(AdblockDomainOptionTest, RemoveDomainsWithNoSubdomain) { -+ auto domains = DomainOption::FromString( -+ "org,include_domain.org,~com,~exclude_domain.org", ","); -+ domains.RemoveDomainsWithNoSubdomain(); -+ EXPECT_THAT(domains.GetIncludeDomains(), -+ UnorderedElementsAre("include_domain.org")); -+ EXPECT_THAT(domains.GetExcludeDomains(), -+ UnorderedElementsAre("exclude_domain.org")); -+} -+ -+TEST(AdblockDomainOptionTest, RemoveDomainsWithNoSubdomainButLocalhost) { -+ auto domains = DomainOption::FromString( -+ "localhost,include_domain.org,~localhost,~exclude_domain.org", ","); -+ domains.RemoveDomainsWithNoSubdomain(); -+ EXPECT_THAT(domains.GetIncludeDomains(), -+ UnorderedElementsAre("include_domain.org", "localhost")); -+ EXPECT_THAT(domains.GetExcludeDomains(), -+ UnorderedElementsAre("exclude_domain.org", "localhost")); -+} -+ -+TEST(AdblockDomainOptionTest, ParseDomainOptionWithDuplications) { -+ auto domains = DomainOption::FromString( -+ "domain.org,~exclude_domain.org,test.domain.org,~test.exclude_domain.org," -+ "domain.org,~exclude_domain.org,test.domain.org", -+ ","); -+ EXPECT_THAT(domains.GetIncludeDomains(), -+ UnorderedElementsAre("test.domain.org", "domain.org")); -+ EXPECT_THAT( -+ domains.GetExcludeDomains(), -+ UnorderedElementsAre("test.exclude_domain.org", "exclude_domain.org")); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/test/metadata_test.cc b/components/adblock/core/converter/parser/test/metadata_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/test/metadata_test.cc -@@ -0,0 +1,198 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/metadata.h" -+ -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+class AdblockParserMetadataTest : public testing::Test { -+ public: -+ absl::optional ParseHeader(std::string header) { -+ // Without [Adblock Plus 2.0], the file is not a valid filter list. -+ header = "[Adblock Plus 2.0]\n" + header; -+ std::stringstream input(std::move(header)); -+ return Metadata::FromStream(input); -+ } -+}; -+ -+TEST_F(AdblockParserMetadataTest, EmptyInput) { -+ std::stringstream input(""); -+ EXPECT_FALSE(Metadata::FromStream(input).has_value()); -+} -+ -+TEST_F(AdblockParserMetadataTest, NoMandatoryAdblockHeader) { -+ std::stringstream input("! Title: EasyList"); -+ EXPECT_FALSE(Metadata::FromStream(input).has_value()); -+} -+ -+TEST_F(AdblockParserMetadataTest, InvalidAdblockHeader) { -+ std::stringstream input("[Abdlock Puls]"); -+ EXPECT_FALSE(Metadata::FromStream(input).has_value()); -+} -+ -+TEST_F(AdblockParserMetadataTest, ShortestValidAdblockHeader) { -+ std::stringstream input("[Adblock]"); -+ auto metadata = Metadata::FromStream(input); -+ EXPECT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->homepage, ""); -+ EXPECT_FALSE(metadata->redirect_url.has_value()); -+ EXPECT_EQ(metadata->title, ""); -+ EXPECT_EQ(metadata->version, ""); -+ EXPECT_EQ(metadata->expires.InDays(), -+ Metadata::kDefaultExpirationInterval.InDays()); -+} -+ -+TEST_F(AdblockParserMetadataTest, MandatoryAdblockHeaderPresent) { -+ auto metadata = ParseHeader(""); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->homepage, ""); -+ EXPECT_FALSE(metadata->redirect_url.has_value()); -+ EXPECT_EQ(metadata->title, ""); -+ EXPECT_EQ(metadata->version, ""); -+ EXPECT_EQ(metadata->expires.InDays(), -+ Metadata::kDefaultExpirationInterval.InDays()); -+} -+ -+TEST_F(AdblockParserMetadataTest, HomepageIsSet) { -+ auto metadata = ParseHeader("! Homepage: https://easylist.to/"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->homepage, "https://easylist.to/"); -+} -+ -+TEST_F(AdblockParserMetadataTest, RedirectUrlIsSet) { -+ auto metadata = ParseHeader("! Redirect: https://redirect-easylist.to/"); -+ ASSERT_TRUE(metadata.has_value()); -+ ASSERT_TRUE(metadata->redirect_url.has_value()); -+ EXPECT_EQ(metadata->redirect_url.value().spec(), -+ "https://redirect-easylist.to/"); -+} -+ -+TEST_F(AdblockParserMetadataTest, InvalidRedirectUrlIsNotSet) { -+ auto metadata = ParseHeader("! Homepage: https//invalid_redirect_url.to/"); -+ ASSERT_TRUE(metadata.has_value()); -+ ASSERT_FALSE(metadata->redirect_url.has_value()); -+} -+ -+TEST_F(AdblockParserMetadataTest, TitleIsSet) { -+ auto metadata = ParseHeader("! Title: EasyList"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->title, "EasyList"); -+} -+ -+TEST_F(AdblockParserMetadataTest, VersionIsSet) { -+ auto metadata = ParseHeader("! Version: 202204050843"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->version, "202204050843"); -+} -+ -+TEST_F(AdblockParserMetadataTest, ExpirationTimeIsSetHoursExplicit) { -+ auto metadata = ParseHeader("! Expires: 2 hours (update frequency)"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->expires.InHours(), 2); -+} -+ -+TEST_F(AdblockParserMetadataTest, ExpirationTimeIsSetHoursImplicit) { -+ auto metadata = ParseHeader("! Expires: 2 horse (sea)"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->expires.InHours(), 2); -+} -+ -+TEST_F(AdblockParserMetadataTest, ExpirationTimeIsSetHoursDoubleDigit) { -+ auto metadata = ParseHeader("! Expires: 48 hours (update frequency)"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->expires.InDays(), 2); -+} -+ -+TEST_F(AdblockParserMetadataTest, ExpirationTimeIsSetDaysExplicit) { -+ auto metadata = ParseHeader("! Expires: 2 days (update frequency)"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->expires.InDays(), 2); -+} -+ -+TEST_F(AdblockParserMetadataTest, ExpirationTimeIsSetDaysImplicit) { -+ auto metadata = ParseHeader("! Expires: 2 not a horse"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->expires.InDays(), 2); -+} -+ -+TEST_F(AdblockParserMetadataTest, InvalidExpirationTimeNotParsed) { -+ auto metadata = ParseHeader("! Expires: two days (update frequency)"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->expires.InDays(), -+ Metadata::kDefaultExpirationInterval.InDays()); -+} -+ -+TEST_F(AdblockParserMetadataTest, NegativeExpirationTimeNotParsed) { -+ auto metadata = ParseHeader("! Expires: -1 days (update frequency)"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->expires.InDays(), -+ Metadata::kDefaultExpirationInterval.InDays()); -+} -+ -+TEST_F(AdblockParserMetadataTest, InvalidExpirationTimeUpperLimit) { -+ auto metadata = ParseHeader("! Expires: 15"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->expires.InDays(), -+ Metadata::kMaxExpirationInterval.InDays()); -+} -+ -+TEST_F(AdblockParserMetadataTest, InvalidExpirationTimeLowerLimit) { -+ auto metadata = ParseHeader( -+ "! Expires: 0 how do you throw a space party? You planet. (hours)"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->expires.InHours(), -+ Metadata::kMinExpirationInterval.InHours()); -+} -+ -+TEST_F(AdblockParserMetadataTest, AllMembersSet) { -+ auto metadata = ParseHeader( -+ "! Homepage: https://easylist.to/\n" -+ "! Redirect: https://redirect-easylist.to/\n" -+ "! Title: EasyList\n" -+ "! Version: 202204050843\n" -+ "! Expires: 2 hours (update frequency)"); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->homepage, "https://easylist.to/"); -+ ASSERT_TRUE(metadata->redirect_url.has_value()); -+ EXPECT_EQ(metadata->redirect_url.value().spec(), -+ "https://redirect-easylist.to/"); -+ EXPECT_EQ(metadata->title, "EasyList"); -+ EXPECT_EQ(metadata->version, "202204050843"); -+ EXPECT_EQ(metadata->expires.InMilliseconds(), 2 * 3600000); -+} -+ -+TEST_F(AdblockParserMetadataTest, ParsingStopsAtFirstNotHeaderLine) { -+ std::stringstream input( -+ "[Adblock Plus 2.0]\n" -+ "! Title: EasyList\n" -+ "Definitely NOT a header line\n" -+ "! Version: 202204050843"); -+ -+ auto metadata = Metadata::FromStream(input); -+ ASSERT_TRUE(metadata.has_value()); -+ EXPECT_EQ(metadata->title, "EasyList"); -+ EXPECT_EQ(metadata->version, ""); -+ -+ // Reading next line from input returns first not header line -+ std::string line; -+ std::getline(input, line); -+ EXPECT_EQ(line, "Definitely NOT a header line"); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/test/snippet_filter_test.cc b/components/adblock/core/converter/parser/test/snippet_filter_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/test/snippet_filter_test.cc -@@ -0,0 +1,78 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/snippet_filter.h" -+ -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+using ::testing::ElementsAre; -+ -+TEST(AdblockSnippetFilterTest, ParseEmptySnippetFilter) { -+ EXPECT_FALSE(SnippetFilter::FromString("", "").has_value()); -+} -+ -+TEST(AdblockSnippetFilterTest, ParseSnippetFilterEmptySnippet) { -+ EXPECT_FALSE(SnippetFilter::FromString("test.com", "").has_value()); -+} -+ -+TEST(AdblockSnippetFilterTest, ParseSnippetFilter) { -+ auto snippet_filter = SnippetFilter::FromString("test.com", "snippet"); -+ ASSERT_TRUE(snippet_filter.has_value()); -+ ASSERT_EQ(snippet_filter->snippet_script.size(), 1u); -+ ASSERT_EQ(snippet_filter->snippet_script.at(0).size(), 1u); -+ EXPECT_EQ(snippet_filter->snippet_script.at(0).at(0), "snippet"); -+ EXPECT_THAT(snippet_filter->domains.GetIncludeDomains(), -+ ElementsAre("test.com")); -+ EXPECT_TRUE(snippet_filter->domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockSnippetFilterTest, ParseSnippetFilterSnippetGetsTokenized) { -+ auto snippet_filter = -+ SnippetFilter::FromString("test.com", "snippet log Test"); -+ ASSERT_TRUE(snippet_filter.has_value()); -+ ASSERT_EQ(snippet_filter->snippet_script.size(), 1u); -+ ASSERT_EQ(snippet_filter->snippet_script.at(0).size(), 3u); -+ EXPECT_EQ(snippet_filter->snippet_script.at(0).at(0), "snippet"); -+ EXPECT_EQ(snippet_filter->snippet_script.at(0).at(1), "log"); -+ EXPECT_EQ(snippet_filter->snippet_script.at(0).at(2), "Test"); -+ EXPECT_THAT(snippet_filter->domains.GetIncludeDomains(), -+ ElementsAre("test.com")); -+ EXPECT_TRUE(snippet_filter->domains.GetExcludeDomains().empty()); -+} -+ -+TEST(AdblockSnippetFilterTest, ParseSnippetFilterNoIncludeDomain) { -+ EXPECT_FALSE(SnippetFilter::FromString("~test.com", "snippet").has_value()); -+} -+ -+TEST(AdblockSnippetFilterTest, -+ ParseSnippetFilterDomainsWithNoSubdomainRemoved) { -+ auto snippet_filter = SnippetFilter::FromString( -+ "org,example.org,~localhost,~example_too.org", "snippet"); -+ ASSERT_TRUE(snippet_filter.has_value()); -+ ASSERT_EQ(snippet_filter->snippet_script.size(), 1u); -+ ASSERT_EQ(snippet_filter->snippet_script.at(0).size(), 1u); -+ EXPECT_EQ(snippet_filter->snippet_script.at(0).at(0), "snippet"); -+ EXPECT_THAT(snippet_filter->domains.GetIncludeDomains(), -+ ElementsAre("example.org")); -+ EXPECT_THAT(snippet_filter->domains.GetExcludeDomains(), -+ ElementsAre("example_too.org", "localhost")); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/test/snippet_tokenizer_test.cc b/components/adblock/core/converter/parser/test/snippet_tokenizer_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/test/snippet_tokenizer_test.cc -@@ -0,0 +1,141 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/snippet_tokenizer.h" -+ -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+using ::testing::ElementsAreArray; -+ -+class AdblockSnippetTokenizerTest : public testing::Test { -+ public: -+ void Validate(const std::string& input, -+ const SnippetTokenizer::SnippetScript& output) { -+ auto script = SnippetTokenizer::Tokenize(input); -+ ASSERT_EQ(script.size(), output.size()); -+ for (size_t n = 0, cnt = script.size(); n != cnt; ++n) { -+ EXPECT_THAT(script[n], ElementsAreArray(output[n])); -+ } -+ } -+}; -+ -+TEST_F(AdblockSnippetTokenizerTest, NoArguments) { -+ Validate("foo", {{"foo"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, OneArgument) { -+ Validate("foo 1", {{"foo", "1"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, TwoArguments) { -+ Validate("foo 1 Hello", {{"foo", "1", "Hello"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, ArgumentWithSpace) { -+ Validate("foo Hello\\ world", {{"foo", "Hello world"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, ArgumentQuoted) { -+ Validate("foo 'Hello world'", {{"foo", "Hello world"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, ArgumentWithQuote) { -+ Validate("foo 'Hello \\'world\\''", {{"foo", "Hello 'world'"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, ArgumentWithEscapedSemicolon) { -+ Validate("foo TL\\;DR", {{"foo", "TL;DR"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, ArgumentWithQuotedSemicolon) { -+ Validate("foo 'TL;DR'", {{"foo", "TL;DR"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, ArgumentWithEscapeSequences) { -+ Validate("foo yin\\tyang\\n", {{"foo", "yin\tyang\n"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, MultipleCommands) { -+ Validate("foo; bar", {{"foo"}, {"bar"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, MultipleCommandsWithArguments) { -+ Validate("foo 1 Hello; bar world! #", -+ {{"foo", "1", "Hello"}, {"bar", "world!", "#"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, MultipleCommandsWithQuotation) { -+ Validate( -+ "foo 1 'Hello, \\'Tommy\\'!' ;bar Hi!\\ How\\ are\\ you? " -+ "http://example.com", -+ {{"foo", "1", "Hello, 'Tommy'!"}, -+ {"bar", "Hi! How are you?", "http://example.com"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, SpecialCharacters) { -+ Validate("fo\\'\\ \\ \\\t\\\n\\;o 1 2 3; 'b a r' 1 2", -+ {{"fo' \t\n;o", "1", "2", "3"}, {"b a r", "1", "2"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, UnicodeStaysAsIs) { -+ Validate("foo \\u0062\\ud83d\\ude42r", {{"foo", "\\u0062\\ud83d\\ude42r"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, MultipleCommandsNoArguments) { -+ Validate("foo; ;;; ; ; bar 1", {{"foo"}, {"bar", "1"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, MultipleCommandsBlankArguments) { -+ Validate("foo '' ''", {{"foo", "", ""}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, QuotedSpaceWithinArgument) { -+ Validate("foo Hello' 'world", {{"foo", "Hello world"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, QuotedComaWithinArgument) { -+ Validate("foo Hello','world", {{"foo", "Hello,world"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, QuotedCharsWithinArgument) { -+ Validate("foo Hello', 'world", {{"foo", "Hello, world"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, QuotedStartOfArgument) { -+ Validate("foo 'Hello, 'world", {{"foo", "Hello, world"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, QuotedEndOfArgument) { -+ Validate("foo Hello', world'", {{"foo", "Hello, world"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, NoClosingQuote) { -+ Validate("foo 'Hello, world", {}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, NoClosingQuoteLastCommand) { -+ Validate("foo Hello; bar 'How are you?", {{"foo", "Hello"}}); -+} -+ -+TEST_F(AdblockSnippetTokenizerTest, EndingWithBackslash) { -+ Validate("foo Hello; bar 'How are you?' \\", {{"foo", "Hello"}}); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/test/url_filter_options_test.cc b/components/adblock/core/converter/parser/test/url_filter_options_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/test/url_filter_options_test.cc -@@ -0,0 +1,255 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/url_filter_options.h" -+ -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+using ::testing::ElementsAre; -+ -+namespace adblock { -+ -+TEST(AdblockUrlFilterOptionsTest, DefaultOptions) { -+ UrlFilterOptions options; -+ EXPECT_FALSE(options.IsMatchCase()); -+ EXPECT_FALSE(options.IsPopup()); -+ EXPECT_TRUE(options.IsSubresource()); -+ EXPECT_EQ(options.ThirdParty(), UrlFilterOptions::ThirdPartyOption::Ignore); -+ EXPECT_EQ(options.ContentTypes(), ContentType::Default); -+ EXPECT_FALSE(options.Rewrite().has_value()); -+ EXPECT_TRUE(options.Domains().GetIncludeDomains().empty()); -+ EXPECT_TRUE(options.Domains().GetExcludeDomains().empty()); -+ EXPECT_TRUE(options.Sitekeys().empty()); -+ EXPECT_FALSE(options.Csp().has_value()); -+ EXPECT_FALSE(options.Headers().has_value()); -+ EXPECT_TRUE(options.ExceptionTypes().empty()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseEmptyListNoValuesSet) { -+ auto options = UrlFilterOptions::FromString(""); -+ ASSERT_TRUE(options.has_value()); -+ EXPECT_FALSE(options->IsMatchCase()); -+ EXPECT_FALSE(options->IsPopup()); -+ EXPECT_TRUE(options->IsSubresource()); -+ EXPECT_EQ(options->ThirdParty(), UrlFilterOptions::ThirdPartyOption::Ignore); -+ EXPECT_EQ(options->ContentTypes(), ContentType::Default); -+ EXPECT_FALSE(options->Rewrite().has_value()); -+ EXPECT_TRUE(options->Domains().GetIncludeDomains().empty()); -+ EXPECT_TRUE(options->Domains().GetExcludeDomains().empty()); -+ EXPECT_TRUE(options->Sitekeys().empty()); -+ EXPECT_FALSE(options->Csp().has_value()); -+ EXPECT_FALSE(options->Headers().has_value()); -+ EXPECT_TRUE(options->ExceptionTypes().empty()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseMatchCase) { -+ EXPECT_TRUE(UrlFilterOptions::FromString("match-case")->IsMatchCase()); -+ EXPECT_FALSE(UrlFilterOptions::FromString("~match-case")->IsMatchCase()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParsePopupOption) { -+ auto options = UrlFilterOptions::FromString("popup"); -+ EXPECT_TRUE(options->IsPopup()); -+ EXPECT_FALSE(options->IsSubresource()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseThirdParty) { -+ auto options = UrlFilterOptions::FromString("third-party"); -+ EXPECT_EQ(options->ThirdParty(), -+ UrlFilterOptions::ThirdPartyOption::ThirdPartyOnly); -+ options = UrlFilterOptions::FromString("~third-party"); -+ EXPECT_EQ(options->ThirdParty(), -+ UrlFilterOptions::ThirdPartyOption::FirstPartyOnly); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseRewriteOptions) { -+ EXPECT_EQ(UrlFilterOptions::FromString("rewrite=abp-resource:blank-text") -+ ->Rewrite() -+ .value(), -+ UrlFilterOptions::RewriteOption::AbpResource_BlankText); -+ EXPECT_EQ(UrlFilterOptions::FromString("rewrite=abp-resource:blank-css") -+ ->Rewrite() -+ .value(), -+ UrlFilterOptions::RewriteOption::AbpResource_BlankCss); -+ EXPECT_EQ(UrlFilterOptions::FromString("rewrite=abp-resource:blank-js") -+ ->Rewrite() -+ .value(), -+ UrlFilterOptions::RewriteOption::AbpResource_BlankJs); -+ EXPECT_EQ(UrlFilterOptions::FromString("rewrite=abp-resource:blank-html") -+ ->Rewrite() -+ .value(), -+ UrlFilterOptions::RewriteOption::AbpResource_BlankHtml); -+ EXPECT_EQ(UrlFilterOptions::FromString("rewrite=abp-resource:blank-mp3") -+ ->Rewrite() -+ .value(), -+ UrlFilterOptions::RewriteOption::AbpResource_BlankMp3); -+ EXPECT_EQ(UrlFilterOptions::FromString("rewrite=abp-resource:blank-mp4") -+ ->Rewrite() -+ .value(), -+ UrlFilterOptions::RewriteOption::AbpResource_BlankMp4); -+ EXPECT_EQ( -+ UrlFilterOptions::FromString("rewrite=abp-resource:1x1-transparent-gif") -+ ->Rewrite() -+ .value(), -+ UrlFilterOptions::RewriteOption::AbpResource_TransparentGif1x1); -+ EXPECT_EQ( -+ UrlFilterOptions::FromString("rewrite=abp-resource:2x2-transparent-png") -+ ->Rewrite() -+ .value(), -+ UrlFilterOptions::RewriteOption::AbpResource_TransparentPng2x2); -+ EXPECT_EQ( -+ UrlFilterOptions::FromString("rewrite=abp-resource:3x2-transparent-png") -+ ->Rewrite() -+ .value(), -+ UrlFilterOptions::RewriteOption::AbpResource_TransparentPng3x2); -+ EXPECT_EQ( -+ UrlFilterOptions::FromString("rewrite=abp-resource:32x32-transparent-png") -+ ->Rewrite() -+ .value(), -+ UrlFilterOptions::RewriteOption::AbpResource_TransparentPng32x32); -+ EXPECT_FALSE( -+ UrlFilterOptions::FromString("rewrite=abp-resource:32x32-transparent-png") -+ ->IsSubresource()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseInvalidRewriteOptions) { -+ EXPECT_FALSE(UrlFilterOptions::FromString("rewrite").has_value()); -+ EXPECT_FALSE(UrlFilterOptions::FromString("rewrite=").has_value()); -+ EXPECT_FALSE(UrlFilterOptions::FromString("rewrite=invalid-rewrite-option") -+ .has_value()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseDomainOption) { -+ auto options = UrlFilterOptions::FromString( -+ "domain=domain.com|~exclude_domain.com|whatever.org"); -+ ASSERT_TRUE(options.has_value()); -+ EXPECT_THAT(options->Domains().GetIncludeDomains(), -+ ElementsAre("domain.com", "whatever.org")); -+ EXPECT_THAT(options->Domains().GetExcludeDomains(), -+ ElementsAre("exclude_domain.com")); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseDomainsInvalid) { -+ EXPECT_FALSE(UrlFilterOptions::FromString("domain").has_value()); -+ EXPECT_FALSE(UrlFilterOptions::FromString("domain=").has_value()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParsingOptionsIsCaseInsensitive) { -+ auto options = UrlFilterOptions::FromString("~ThIRd-PaRtY"); -+ ASSERT_TRUE(options.has_value()); -+ EXPECT_EQ(options->ThirdParty(), -+ UrlFilterOptions::ThirdPartyOption::FirstPartyOnly); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseSitekeyOption) { -+ auto options = UrlFilterOptions::FromString("sitekey=b|A|D|c"); -+ ASSERT_TRUE(options.has_value()); -+ // NOTE: alphabetically ordered, uppercase -+ EXPECT_THAT(options->Sitekeys(), ElementsAre(SiteKey{"A"}, SiteKey{"B"}, -+ SiteKey{"C"}, SiteKey{"D"})); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseInvalidSitekeyOption) { -+ EXPECT_FALSE(UrlFilterOptions::FromString("sitekey").has_value()); -+ EXPECT_FALSE(UrlFilterOptions::FromString("sitekey=").has_value()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseCspOption) { -+ auto options = UrlFilterOptions::FromString("csp=script-src: 'self'"); -+ ASSERT_TRUE(options.has_value()); -+ auto csp = options->Csp(); -+ ASSERT_TRUE(csp.has_value()); -+ EXPECT_EQ(csp.value(), "script-src: 'self'"); -+ EXPECT_FALSE(options->IsSubresource()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseEmptyCspOption) { -+ auto options = UrlFilterOptions::FromString("csp"); -+ ASSERT_TRUE(options.has_value()); -+ auto csp = options->Csp(); -+ ASSERT_TRUE(csp.has_value()); -+ EXPECT_EQ(csp.value(), ""); -+ EXPECT_FALSE(options->IsSubresource()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseInvalidCspOption) { -+ EXPECT_FALSE(UrlFilterOptions::FromString("csp=report-uri").has_value()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseHeaderOption) { -+ auto options = -+ UrlFilterOptions::FromString("header=X-Frame-Options=sameorigin"); -+ ASSERT_TRUE(options.has_value()); -+ auto header = options->Headers(); -+ ASSERT_TRUE(header.has_value()); -+ EXPECT_EQ(header.value(), "X-Frame-Options=sameorigin"); -+ EXPECT_FALSE(options->IsSubresource()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseEmptyHeaderOption) { -+ auto options = UrlFilterOptions::FromString("header"); -+ ASSERT_TRUE(options.has_value()); -+ auto header = options->Headers(); -+ ASSERT_TRUE(header.has_value()); -+ EXPECT_EQ(header.value(), ""); -+ EXPECT_FALSE(options->IsSubresource()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, InvalidOptionDoesNotGetParsed) { -+ EXPECT_FALSE(UrlFilterOptions::FromString("invalid_option").has_value()); -+ EXPECT_FALSE(UrlFilterOptions::FromString("invalid=").has_value()); -+ EXPECT_FALSE(UrlFilterOptions::FromString("invalid=option").has_value()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseMultipleOptions) { -+ auto options = UrlFilterOptions::FromString("csp, third-party"); -+ ASSERT_TRUE(options.has_value()); -+ auto csp = options->Csp(); -+ ASSERT_TRUE(csp.has_value()); -+ EXPECT_EQ(csp.value(), ""); -+ EXPECT_EQ(options->ThirdParty(), -+ UrlFilterOptions::ThirdPartyOption::ThirdPartyOnly); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, InvalidOptionMakesOptionsInvalid) { -+ EXPECT_FALSE(UrlFilterOptions::FromString("csp, invalid-option").has_value()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseInvalidOption) { -+ EXPECT_FALSE(UrlFilterOptions::FromString("invalid_option")); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseInverseContentType) { -+ auto options = UrlFilterOptions::FromString("~other, other"); -+ ASSERT_TRUE(options.has_value()); -+ auto content_types = options->ContentTypes(); -+ EXPECT_TRUE(content_types & ContentType::Other); -+ EXPECT_TRUE(options->IsSubresource()); -+} -+ -+TEST(AdblockUrlFilterOptionsTest, ParseExceptionTypes) { -+ auto options = -+ UrlFilterOptions::FromString("document, elemhide, generichide"); -+ ASSERT_TRUE(options.has_value()); -+ EXPECT_THAT(options->ExceptionTypes(), -+ ElementsAre(UrlFilterOptions::ExceptionType::Document, -+ UrlFilterOptions::ExceptionType::Elemhide, -+ UrlFilterOptions::ExceptionType::Generichide)); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/test/url_filter_test.cc b/components/adblock/core/converter/parser/test/url_filter_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/test/url_filter_test.cc -@@ -0,0 +1,149 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/url_filter.h" -+ -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+using ::testing::ElementsAre; -+ -+namespace adblock { -+ -+TEST(AdblockUrlFilterTest, ParseEmptyUrlFilter) { -+ EXPECT_FALSE(UrlFilter::FromString("").has_value()); -+} -+ -+TEST(AdblockUrlFilterTest, ParseInvalidUrlFilter) { -+ EXPECT_FALSE(UrlFilter::FromString("@@").has_value()); -+ EXPECT_FALSE(UrlFilter::FromString("$valid_option").has_value()); -+} -+ -+TEST(AdblockUrlFilterTest, ParseAllowingUrlFilter) { -+ auto url_filter = UrlFilter::FromString("@@allowing_filter"); -+ ASSERT_TRUE(url_filter.has_value()); -+ EXPECT_TRUE(url_filter->is_allowing); -+ EXPECT_EQ(url_filter->pattern, "allowing_filter"); -+} -+ -+TEST(AdblockUrlFilterTest, ParseUrlFilterWithOptions) { -+ auto url_filter = UrlFilter::FromString( -+ "pattern$csp=script-src: 'none',domain=example.org|~example.com"); -+ ASSERT_TRUE(url_filter.has_value()); -+ EXPECT_FALSE(url_filter->is_allowing); -+ EXPECT_EQ(url_filter->pattern, "pattern"); -+ ASSERT_TRUE(url_filter->options.Csp().has_value()); -+ EXPECT_EQ(url_filter->options.Csp(), "script-src: 'none'"); -+ EXPECT_THAT(url_filter->options.Domains().GetIncludeDomains(), -+ ElementsAre("example.org")); -+ EXPECT_THAT(url_filter->options.Domains().GetExcludeDomains(), -+ ElementsAre("example.com")); -+} -+ -+TEST(AdblockUrlFilterTest, ParseUrlFilterWithAnInvalidOption) { -+ EXPECT_FALSE(UrlFilter::FromString("pattern$invalid_option").has_value()); -+} -+ -+TEST(AdblockUrlFilterTest, ParseBlockingCspFilterWithNoDirectives) { -+ EXPECT_FALSE(UrlFilter::FromString("pattern$csp").has_value()); -+} -+ -+TEST(AdblockUrlFilterTest, ParseAllowingCspFilterWithNoDirectives) { -+ auto url_filter = UrlFilter::FromString("@@pattern$csp"); -+ ASSERT_TRUE(url_filter.has_value()); -+ EXPECT_TRUE(url_filter->is_allowing); -+ EXPECT_EQ(url_filter->pattern, "pattern"); -+ ASSERT_TRUE(url_filter->options.Csp().has_value()); -+ EXPECT_EQ(url_filter->options.Csp(), ""); -+} -+ -+TEST(AdblockUrlFilterTest, ParseBlockingHeaderFilterWithNoDirectives) { -+ EXPECT_FALSE(UrlFilter::FromString("pattern$header").has_value()); -+} -+ -+TEST(AdblockUrlFilterTest, ParseRewriteFilterWithDomain) { -+ auto url_filter = UrlFilter::FromString( -+ "||pattern$rewrite=abp-resource:blank-css,domain=example.hu"); -+ ASSERT_TRUE(url_filter.has_value()); -+ EXPECT_FALSE(url_filter->is_allowing); -+ EXPECT_EQ(url_filter->pattern, "||pattern"); -+ ASSERT_TRUE(url_filter->options.Rewrite().has_value()); -+ EXPECT_EQ(url_filter->options.Rewrite(), -+ UrlFilterOptions::RewriteOption::AbpResource_BlankCss); -+} -+ -+TEST(AdblockUrlFilterTest, ParseRewriteFilterWithNoDomainOption) { -+ EXPECT_FALSE(UrlFilter::FromString("||pattern$rewrite=abp-resource:blank-css") -+ .has_value()); -+} -+ -+TEST(AdblockUrlFilterTest, ParseRewriteFilterWithNoIncludeDomain) { -+ EXPECT_FALSE( -+ UrlFilter::FromString( -+ "||pattern$rewrite=abp-resource:blank-css,domain=~exclude_domain.com") -+ .has_value()); -+} -+ -+TEST(AdblockUrlFilterTest, ParseRewriteFilterWithThirdParty) { -+ EXPECT_FALSE(UrlFilter::FromString("||pattern$rewrite=abp-resource:blank-css," -+ "domain=example.com,third-party") -+ .has_value()); -+} -+ -+TEST(AdblockUrlFilterTest, ParseRewriteFilterWithInvalidPatter) { -+ EXPECT_FALSE(UrlFilter::FromString( -+ "pattern$rewrite=abp-resource:blank-css,domain=example.hu") -+ .has_value()); -+} -+ -+TEST(AdblockUrlFilterTest, ParseBlockingFilterWithExceptionType) { -+ EXPECT_FALSE(UrlFilter::FromString("pattern$generichide").has_value()); -+} -+ -+TEST(AdblockUrlFilterTest, ParseAllowingFilterWithoutExceptionType) { -+ auto url_filter = UrlFilter::FromString("@@pattern"); -+ ASSERT_TRUE(url_filter.has_value()); -+ EXPECT_TRUE(url_filter->is_allowing); -+ EXPECT_TRUE(url_filter->options.ExceptionTypes().empty()); -+} -+ -+TEST(AdblockUrlFilterTest, ParseAllowingFilterWithExceptionType) { -+ auto url_filter = UrlFilter::FromString("@@pattern$generichide"); -+ ASSERT_TRUE(url_filter.has_value()); -+ EXPECT_TRUE(url_filter->is_allowing); -+ EXPECT_THAT(url_filter->options.ExceptionTypes(), -+ ElementsAre(UrlFilterOptions::ExceptionType::Generichide)); -+} -+ -+TEST(AdblockUrlFilterTest, ParseUnspecifcGenericFilter) { -+ // Filter too short and too generic, could "break the internet": -+ EXPECT_FALSE(UrlFilter::FromString("adv").has_value()); -+ // |-anchored filters still too short: -+ EXPECT_FALSE(UrlFilter::FromString("|adv").has_value()); -+ EXPECT_FALSE(UrlFilter::FromString("||adv").has_value()); -+ // Short filter is content-type-specific but not domain-specific: -+ EXPECT_FALSE(UrlFilter::FromString("n$image").has_value()); -+ -+ // Short pattern OK because the filter is domain specific: -+ EXPECT_TRUE(UrlFilter::FromString("n$domain=example.com").has_value()); -+ // Filter pattern long enough: -+ EXPECT_TRUE(UrlFilter::FromString("advert").has_value()); -+ // Filter pattern contains wildcard, allowed to be short: -+ EXPECT_TRUE(UrlFilter::FromString("a*").has_value()); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/url_filter.cc b/components/adblock/core/converter/parser/url_filter.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/url_filter.cc -@@ -0,0 +1,218 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/url_filter.h" -+ -+#include "base/logging.h" -+#include "base/strings/string_util.h" -+#include "components/adblock/core/common/regex_filter_pattern.h" -+#include "third_party/icu/source/i18n/unicode/regex.h" -+#include "third_party/re2/src/re2/re2.h" -+ -+namespace adblock { -+namespace { -+ -+// Converts patterns like ||abc.com/aa|bb into ||abc.com/aa%7Cbb. -+// Non-anchor pipe characters must be escaped to properly match components of -+// a URL. GURL escapes "|" as seen in url/url_canon_path.cc -+// Pipe characters in anchor position (beginning & end) must be left as-is, in -+// order for the tokenizer to see them as anchors. -+std::string SanitizePipeCharacters(std::string pattern) { -+ auto piece = base::StringPiece(pattern); -+ // Skip up to 2 leading | characters, they are treated as anchors. These -+ // may not be replaced by the escaped variant. -+ int number_of_left_anchors = 0; -+ if (base::StartsWith(piece, "|")) { -+ number_of_left_anchors++; -+ piece.remove_prefix(1); -+ } -+ if (base::StartsWith(piece, "|")) { -+ number_of_left_anchors++; -+ piece.remove_prefix(1); -+ } -+ // Skip up to one trailing | characters, this is the right anchor. -+ bool pattern_has_right_anchor = base::EndsWith(piece, "|"); -+ if (pattern_has_right_anchor) { -+ piece.remove_suffix(1); -+ } -+ if (piece.find('|') == base::StringPiece::npos) { -+ // The most common case, pattern has no pipe characters apart from anchors. -+ // Avoid allocating new strings, pass the input out. -+ return pattern; -+ } -+ // Escape instances of | the same way GURL does it. -+ std::string output; -+ CHECK(base::ReplaceChars(piece, "|", R"(%7C)", &output)); -+ // Re-add the unmodified anchors. -+ for (int i = 0; i < number_of_left_anchors; i++) { -+ output.insert(output.begin(), '|'); -+ } -+ if (pattern_has_right_anchor) { -+ output.push_back('|'); -+ } -+ return output; -+} -+ -+} // namespace -+ -+static constexpr char kAllowingSymbol[] = "@@"; -+static constexpr char kOptionSymbol = '$'; -+ -+bool IsGenericFilterIsNotSpecificEnough( -+ base::StringPiece filter_str, -+ const absl::optional& options) { -+ if (options.has_value() && (!options->Domains().GetExcludeDomains().empty() || -+ !options->Domains().GetIncludeDomains().empty() || -+ !options->Sitekeys().empty())) { -+ return false; -+ } -+ const size_t kMinLength = 4; -+ const auto trimmed_filter_str = -+ base::TrimString(filter_str, "|", base::TRIM_LEADING); -+ return trimmed_filter_str.size() < kMinLength && -+ trimmed_filter_str.find('*') == std::string::npos; -+} -+ -+// static -+absl::optional UrlFilter::FromString(std::string filter_str) { -+ absl::optional options; -+ bool is_allowing = base::StartsWith(filter_str, kAllowingSymbol); -+ if (is_allowing) { -+ filter_str.erase(0, 2); -+ } -+ -+ // TODO(DPD-1277): Support filters that contain multiple '$' -+ size_t option_selector_it = filter_str.rfind(kOptionSymbol); -+ if (option_selector_it != std::string::npos && -+ !ExtractRegexFilterFromPattern(filter_str)) { -+ std::string option_list = filter_str.substr(option_selector_it + 1); -+ options = UrlFilterOptions::FromString(option_list); -+ -+ if (!options.has_value()) { -+ return {}; -+ } -+ -+ if (options->Csp().has_value() && options->Csp().value().empty() && -+ !is_allowing) { -+ VLOG(1) << "[eyeo] Invalid CSP filter. Blocking CSP filter requires " -+ "directives"; -+ return {}; -+ } -+ -+ if (options->Headers().has_value() && options->Headers().value().empty() && -+ !is_allowing) { -+ VLOG(1) << "[eyeo] Invalid header filter. Blocking header filter " -+ "requires directives"; -+ return {}; -+ } -+ -+ if (!options->IsSubresource() && !options->ExceptionTypes().empty() && -+ !is_allowing) { -+ VLOG(1) << "[eyeo] Exception options can only be used with allowing " -+ "filters"; -+ return {}; -+ } -+ -+ filter_str.erase(option_selector_it); -+ } -+ -+ if (filter_str.empty() && !options.has_value()) { -+ return {}; -+ } -+ -+ if (!ExtractRegexFilterFromPattern(filter_str)) { -+ // It's rare, but some filters contain pipe characters ("|") that are not -+ // anchors but are instead integral parts of the URL they intend to match. -+ // GURL escapes "|"" characters and we need to similarly escape such -+ // occurrences in the filter. -+ filter_str = SanitizePipeCharacters(std::move(filter_str)); -+ -+ // Most filters are case-insensitive, we may lowercase them along with -+ // lowercasing the URL during matching. This simplifies and speeds up the -+ // matching algorithm. Do not lowercase case-sensitive filters. -+ if ((!options || !options->IsMatchCase())) { -+ filter_str = base::ToLowerASCII(filter_str); -+ } -+ } -+ -+ if (options.has_value() && options->Rewrite().has_value()) { -+ if (options->ThirdParty() == -+ UrlFilterOptions::ThirdPartyOption::ThirdPartyOnly) { -+ VLOG(1) << "[eyeo] Rewrite filter must not be used together with the " -+ "third-party filter option"; -+ return {}; -+ } -+ -+ if (!base::StartsWith(filter_str, "||") && filter_str != "*" && -+ !filter_str.empty()) { -+ VLOG(1) << "[eyeo] Rewrite filter pattern must either be a star (*) " -+ "or start with a domain anchor double pipe (||)"; -+ return {}; -+ } -+ -+ if (options->Domains().GetIncludeDomains().empty() && -+ options->ThirdParty() == UrlFilterOptions::ThirdPartyOption::Ignore) { -+ VLOG(1) << "[eyeo] Rewrite filter must be restricted to at least one " -+ "domain using the domain filter option or have ~third-party " -+ "option"; -+ return {}; -+ } -+ } -+ -+ if (IsGenericFilterIsNotSpecificEnough(filter_str, options)) { -+ VLOG(1) << "[eyeo] Generic url filter is not specific enough. Must be " -+ "longer than 3 characters or domain-specific."; -+ return {}; -+ } -+ -+ if (!options.has_value()) { -+ options = UrlFilterOptions(); -+ } -+ -+ return UrlFilter(is_allowing, std::move(filter_str), -+ std::move(options.value())); -+} -+ -+UrlFilter::UrlFilter(bool is_allowing, -+ std::string pattern, -+ UrlFilterOptions options) -+ : is_allowing(is_allowing), -+ pattern(std::move(pattern)), -+ options(std::move(options)) {} -+UrlFilter::UrlFilter(const UrlFilter& other) = default; -+UrlFilter::UrlFilter(UrlFilter&& other) = default; -+UrlFilter::~UrlFilter() = default; -+ -+// static -+bool UrlFilter::IsValidRegex(const std::string& pattern) { -+ re2::RE2::Options options; -+ options.set_never_capture(true); -+ options.set_log_errors(false); -+ const re2::RE2 re2_pattern(pattern.data(), options); -+ if (re2_pattern.ok()) { -+ return true; -+ } -+ const icu::UnicodeString icu_pattern(pattern.data(), pattern.length()); -+ UErrorCode status = U_ZERO_ERROR; -+ const icu::RegexMatcher matcher(icu_pattern, 0u, status); -+ if (U_FAILURE(status)) { -+ return false; -+ } -+ return true; -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/url_filter.h b/components/adblock/core/converter/parser/url_filter.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/url_filter.h -@@ -0,0 +1,48 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_H_ -+ -+#include -+ -+#include "components/adblock/core/converter/parser/url_filter_options.h" -+#include "third_party/abseil-cpp/absl/types/optional.h" -+ -+namespace adblock { -+ -+class UrlFilter { -+ public: -+ static absl::optional FromString(std::string filter_str); -+ -+ UrlFilter(const UrlFilter& other); -+ UrlFilter(UrlFilter&& other); -+ ~UrlFilter(); -+ -+ const bool is_allowing; -+ const std::string pattern; -+ const UrlFilterOptions options; -+ -+ private: -+ UrlFilter(bool is_allowing, std::string pattern, UrlFilterOptions options); -+ -+ static bool IsValidRegex(const std::string& pattern); -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_H_ -diff --git a/components/adblock/core/converter/parser/url_filter_options.cc b/components/adblock/core/converter/parser/url_filter_options.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/url_filter_options.cc -@@ -0,0 +1,263 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/parser/url_filter_options.h" -+ -+#include "base/logging.h" -+#include "base/strings/string_split.h" -+#include "base/strings/string_util.h" -+#include "third_party/re2/src/re2/re2.h" -+ -+namespace adblock { -+ -+using SiteKeys = std::vector; -+ -+static constexpr char kDomainOrSitekeySeparator[] = "|"; -+static constexpr char kInverseSymbol = '~'; -+ -+// static -+absl::optional UrlFilterOptions::FromString( -+ const std::string& option_list) { -+ bool is_match_case = false; -+ bool is_popup_filter = false; -+ bool is_subresource = false; -+ ThirdPartyOption third_party = ThirdPartyOption::Ignore; -+ absl::optional rewrite; -+ DomainOption domains; -+ SiteKeys sitekeys; -+ absl::optional csp; -+ absl::optional headers; -+ uint32_t content_types = 0; -+ std::set exception_types; -+ -+ bool is_inverse_option; -+ std::string key, value; -+ for (auto& option : base::SplitString(option_list, ",", base::KEEP_WHITESPACE, -+ base::SPLIT_WANT_NONEMPTY)) { -+ if (option.empty()) { -+ continue; -+ } -+ -+ is_inverse_option = option.front() == kInverseSymbol; -+ if (is_inverse_option) { -+ option.erase(0, 1); -+ } -+ -+ size_t delimiter_pos = option.find('='); -+ if (delimiter_pos != std::string::npos) { -+ key = option.substr(0, delimiter_pos); -+ value = option.substr(delimiter_pos + 1); -+ } else { -+ key = option; -+ } -+ -+ key = base::ToLowerASCII(key); -+ base::RemoveChars(key, base::kWhitespaceASCII, &key); -+ -+ if (key == "match-case") { -+ is_match_case = !is_inverse_option; -+ } else if (key == "popup") { -+ is_popup_filter = true; -+ } else if (key == "third-party") { -+ third_party = !is_inverse_option ? ThirdPartyOption::ThirdPartyOnly -+ : ThirdPartyOption::FirstPartyOnly; -+ } else if (key == "rewrite") { -+ rewrite = ParseRewrite(value); -+ if (!rewrite.has_value()) { -+ VLOG(1) << "[eyeo] Invalid rewrite filter value: " << value; -+ return {}; -+ } -+ } else if (key == "domain") { -+ if (value.empty()) { -+ VLOG(1) << "[eyeo] Domain option has to have a value."; -+ return {}; -+ } -+ domains = DomainOption::FromString(value, kDomainOrSitekeySeparator); -+ } else if (key == "sitekey") { -+ if (value.empty()) { -+ VLOG(1) << "[eyeo] Sitekey option has to have a value."; -+ return {}; -+ } -+ sitekeys = ParseSitekeys(value); -+ } else if (key == "csp") { -+ if (!IsValidCsp(value)) { -+ VLOG(1) << "[eyeo] Invalid CSP filter directives: " << value; -+ return {}; -+ } -+ csp = value; -+ } else if (key == "header") { -+ ParseHeaders(value); -+ headers = value; -+ } else { -+ ContentType content_type = ContentTypeFromString(key); -+ if (content_type != ContentType::Unknown) { -+ is_subresource = true; -+ if (is_inverse_option) { -+ if (content_types == 0) { -+ content_types = ContentType::Default; -+ } -+ -+ content_types &= ~content_type; -+ } else { -+ content_types |= content_type; -+ } -+ continue; -+ } -+ -+ auto exception_type = ExceptionTypeFromString(key); -+ if (exception_type) { -+ // NOTE: Inverse exception types are not supported -+ exception_types.emplace(exception_type.value()); -+ continue; -+ } -+ -+ VLOG(1) << "[eyeo] Unknown filter option: " << key; -+ return {}; -+ } -+ } -+ -+ if (exception_types.empty() && !is_popup_filter && !csp.has_value() && -+ !rewrite.has_value() && !headers.has_value()) { -+ is_subresource = true; -+ } -+ -+ if (content_types == 0) { -+ content_types = ContentType::Default; -+ } -+ -+ return UrlFilterOptions(is_match_case, is_popup_filter, is_subresource, -+ third_party, content_types, std::move(rewrite), -+ std::move(domains), std::move(sitekeys), -+ std::move(csp), std::move(headers), -+ std::move(exception_types)); -+} -+ -+UrlFilterOptions::UrlFilterOptions() -+ : is_match_case_(false), -+ is_popup_filter_(false), -+ is_subresource_(true), -+ third_party_(ThirdPartyOption::Ignore), -+ content_types_(ContentType::Default) {} -+ -+// static -+absl::optional UrlFilterOptions::ParseRewrite( -+ const std::string& rewrite_value) { -+ if (rewrite_value == "abp-resource:blank-text") { -+ return RewriteOption::AbpResource_BlankText; -+ } else if (rewrite_value == "abp-resource:blank-css") { -+ return RewriteOption::AbpResource_BlankCss; -+ } else if (rewrite_value == "abp-resource:blank-js") { -+ return RewriteOption::AbpResource_BlankJs; -+ } else if (rewrite_value == "abp-resource:blank-html") { -+ return RewriteOption::AbpResource_BlankHtml; -+ } else if (rewrite_value == "abp-resource:blank-mp3") { -+ return RewriteOption::AbpResource_BlankMp3; -+ } else if (rewrite_value == "abp-resource:blank-mp4") { -+ return RewriteOption::AbpResource_BlankMp4; -+ } else if (rewrite_value == "abp-resource:1x1-transparent-gif") { -+ return RewriteOption::AbpResource_TransparentGif1x1; -+ } else if (rewrite_value == "abp-resource:2x2-transparent-png") { -+ return RewriteOption::AbpResource_TransparentPng2x2; -+ } else if (rewrite_value == "abp-resource:3x2-transparent-png") { -+ return RewriteOption::AbpResource_TransparentPng3x2; -+ } else if (rewrite_value == "abp-resource:32x32-transparent-png") { -+ return RewriteOption::AbpResource_TransparentPng32x32; -+ } else { -+ return {}; -+ } -+} -+ -+// static -+SiteKeys UrlFilterOptions::ParseSitekeys(const std::string& sitekey_value) { -+ SiteKeys sitekeys; -+ for (auto& sitekey : base::SplitString( -+ base::ToUpperASCII(sitekey_value), kDomainOrSitekeySeparator, -+ base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) { -+ sitekeys.emplace_back(std::move(sitekey)); -+ } -+ std::sort(sitekeys.begin(), sitekeys.end()); -+ return sitekeys; -+} -+ -+// static -+bool UrlFilterOptions::IsValidCsp(const std::string& csp_value) { -+ static re2::RE2 invalid_csp( -+ "(;|^) " -+ "?(base-uri|referrer|report-to|report-uri|upgrade-insecure-requests)\\b"); -+ -+ return !(re2::RE2::PartialMatch( -+ re2::StringPiece(csp_value.data(), csp_value.size()), invalid_csp)); -+} -+ -+// static -+void UrlFilterOptions::ParseHeaders(std::string& headers_value) { -+ // replace \x2c with actual , -+ static re2::RE2 r1("([^\\\\])\\\\x2c"); -+ re2::RE2::GlobalReplace(&headers_value, r1, "\\1,"); -+ -+ // remove extra escape for \\x2c which left -+ static re2::RE2 r2("\\\\x2c"); -+ re2::RE2::GlobalReplace(&headers_value, r2, "x2c"); -+} -+ -+// static -+absl::optional -+UrlFilterOptions::ExceptionTypeFromString(const std::string& exception_type) { -+ if (exception_type == "document") { -+ return ExceptionType::Document; -+ } else if (exception_type == "genericblock") { -+ return ExceptionType::Genericblock; -+ } else if (exception_type == "elemhide") { -+ return ExceptionType::Elemhide; -+ } else if (exception_type == "generichide") { -+ return ExceptionType::Generichide; -+ } -+ return {}; -+} -+ -+UrlFilterOptions::UrlFilterOptions( -+ const bool is_match_case, -+ const bool is_popup_filter, -+ const bool is_subresource, -+ const ThirdPartyOption third_party, -+ const uint32_t content_types, -+ const absl::optional rewrite, -+ const DomainOption domains, -+ const SiteKeys sitekeys, -+ const absl::optional csp, -+ const absl::optional headers, -+ const std::set exception_types) -+ : is_match_case_(is_match_case), -+ is_popup_filter_(is_popup_filter), -+ is_subresource_(is_subresource), -+ third_party_(third_party), -+ content_types_(content_types), -+ rewrite_(std::move(rewrite)), -+ domains_(std::move(domains)), -+ sitekeys_(std::move(sitekeys)), -+ csp_(std::move(csp)), -+ headers_(std::move(headers)), -+ exception_types_(std::move(exception_types)) {} -+UrlFilterOptions::UrlFilterOptions(const UrlFilterOptions& other) = default; -+UrlFilterOptions::UrlFilterOptions(UrlFilterOptions&& other) = default; -+UrlFilterOptions& UrlFilterOptions::operator=(const UrlFilterOptions& other) = -+ default; -+UrlFilterOptions& UrlFilterOptions::operator=(UrlFilterOptions&& other) = -+ default; -+UrlFilterOptions::~UrlFilterOptions() = default; -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/parser/url_filter_options.h b/components/adblock/core/converter/parser/url_filter_options.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/parser/url_filter_options.h -@@ -0,0 +1,122 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_OPTIONS_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_OPTIONS_H_ -+ -+#include -+#include -+#include -+ -+#include "components/adblock/core/common/content_type.h" -+#include "components/adblock/core/common/sitekey.h" -+#include "components/adblock/core/converter/parser/domain_option.h" -+#include "third_party/abseil-cpp/absl/types/optional.h" -+ -+namespace adblock { -+ -+class UrlFilterOptions { -+ public: -+ enum class ThirdPartyOption { -+ Ignore, -+ ThirdPartyOnly, -+ FirstPartyOnly, -+ }; -+ -+ enum class RewriteOption { -+ AbpResource_BlankText, -+ AbpResource_BlankCss, -+ AbpResource_BlankJs, -+ AbpResource_BlankHtml, -+ AbpResource_BlankMp3, -+ AbpResource_BlankMp4, -+ AbpResource_TransparentGif1x1, -+ AbpResource_TransparentPng2x2, -+ AbpResource_TransparentPng3x2, -+ AbpResource_TransparentPng32x32, -+ }; -+ -+ enum class ExceptionType { -+ Document, -+ Elemhide, -+ Generichide, -+ Genericblock, -+ }; -+ -+ static absl::optional FromString( -+ const std::string& option_list); -+ -+ UrlFilterOptions(); -+ UrlFilterOptions(const UrlFilterOptions& other); -+ UrlFilterOptions(UrlFilterOptions&& other); -+ UrlFilterOptions& operator=(const UrlFilterOptions& other); -+ UrlFilterOptions& operator=(UrlFilterOptions&& other); -+ ~UrlFilterOptions(); -+ -+ inline bool IsMatchCase() const { return is_match_case_; } -+ inline bool IsPopup() const { return is_popup_filter_; } -+ inline bool IsSubresource() const { return is_subresource_; } -+ inline ThirdPartyOption ThirdParty() const { return third_party_; } -+ inline const absl::optional& Rewrite() const { -+ return rewrite_; -+ } -+ inline const DomainOption& Domains() const { return domains_; } -+ inline const std::vector& Sitekeys() const { return sitekeys_; } -+ inline const absl::optional& Csp() const { return csp_; } -+ inline const absl::optional& Headers() const { return headers_; } -+ inline uint32_t ContentTypes() const { return content_types_; } -+ inline const std::set& ExceptionTypes() const { -+ return exception_types_; -+ } -+ -+ private: -+ UrlFilterOptions(bool is_match_case, -+ bool is_popup_filter, -+ bool is_subresource, -+ ThirdPartyOption third_party, -+ uint32_t content_types, -+ absl::optional rewrite, -+ DomainOption domains, -+ std::vector sitekeys, -+ absl::optional csp, -+ absl::optional headers, -+ std::set exception_types); -+ -+ static absl::optional ParseRewrite( -+ const std::string& rewrite_value); -+ static std::vector ParseSitekeys(const std::string& sitekey_value); -+ static bool IsValidCsp(const std::string& csp_value); -+ static void ParseHeaders(std::string& headers_value); -+ static absl::optional ExceptionTypeFromString( -+ const std::string& exception_type); -+ -+ bool is_match_case_; -+ bool is_popup_filter_; -+ bool is_subresource_; -+ ThirdPartyOption third_party_; -+ uint32_t content_types_; -+ absl::optional rewrite_; -+ DomainOption domains_; -+ std::vector sitekeys_; -+ absl::optional csp_; -+ absl::optional headers_; -+ std::set exception_types_; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_OPTIONS_H_ -diff --git a/components/adblock/core/converter/serializer/BUILD.gn b/components/adblock/core/converter/serializer/BUILD.gn -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/serializer/BUILD.gn -@@ -0,0 +1,50 @@ -+# -+# This file is part of eyeo Chromium SDK, -+# Copyright (C) 2006-present eyeo GmbH -+# -+# eyeo Chromium SDK is free software: you can redistribute it and/or modify -+# it under the terms of the GNU General Public License version 3 as -+# published by the Free Software Foundation. -+# -+# eyeo Chromium SDK is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with eyeo Chromium SDK. If not, see . -+ -+source_set("serializer") { -+ sources = [ -+ "filter_keyword_extractor.cc", -+ "filter_keyword_extractor.h", -+ "flatbuffer_serializer.cc", -+ "flatbuffer_serializer.h", -+ "serializer.h", -+ ] -+ -+ public_deps = [ -+ "//base", -+ "//components/adblock/core/common", -+ "//components/adblock/core:schema", -+ "//third_party/re2", -+ "//url", -+ ] -+ -+ deps = [ -+ "//components/adblock/core/converter/parser", -+ ] -+} -+ -+source_set("unit_tests") { -+ testonly = true -+ sources = [ -+ "test/filter_keyword_extractor_test.cc", -+ ] -+ -+ deps = [ -+ ":serializer", -+ "//testing/gmock", -+ "//testing/gtest", -+ ] -+} -diff --git a/components/adblock/core/converter/serializer/filter_keyword_extractor.cc b/components/adblock/core/converter/serializer/filter_keyword_extractor.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/serializer/filter_keyword_extractor.cc -@@ -0,0 +1,63 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/serializer/filter_keyword_extractor.h" -+ -+#include -+#include -+ -+#include "base/strings/string_util.h" -+#include "components/adblock/core/common/keyword_extractor_utils.h" -+#include "third_party/re2/src/re2/re2.h" -+ -+namespace adblock { -+ -+absl::optional FilterKeywordExtractor::GetNextKeyword() { -+ std::string current_keyword; -+ do { -+ // In case that we are extracting keyword to store a filter -+ // we need to be careful as only one keyword will be used. -+ // So a keyword at the end of the filter might mismatch with keyword -+ // when trying to fetch the filter -+ // for example: -+ // a filter ||domain.cc/in_discovery should not retrieve "discovery" as a -+ // keyword because when we have a valid to block url like this one -+ // domain.cc/in_discovery5 returns with "discovery5" as -+ // one of the extracted keywords instead of "discovery" -+ const static re2::RE2 filter_keyword_extractor( -+ "([^a-zA-Z0-9%*][a-zA-Z0-9%]{2,})"); -+ const static re2::RE2 has_a_following_keyword("(^[^a-zA-Z0-9%*])"); -+ const static re2::RE2 following_keyword_consume("(^[a-zA-Z0-9%*]*)"); -+ if (!RE2::FindAndConsume(&input_, filter_keyword_extractor, -+ ¤t_keyword)) { -+ return absl::nullopt; -+ } -+ if (!RE2::PartialMatch(input_, has_a_following_keyword)) { -+ RE2::Consume(&input_, following_keyword_consume); -+ current_keyword.clear(); -+ continue; -+ } -+ current_keyword = current_keyword.substr(1); -+ } while (utils::IsBadKeyword(current_keyword)); -+ return base::ToLowerASCII(current_keyword); -+} -+ -+FilterKeywordExtractor::FilterKeywordExtractor(base::StringPiece url) -+ : input_(url.data(), url.size()), end_of_last_keyword_(input_.begin()) {} -+FilterKeywordExtractor::~FilterKeywordExtractor() = default; -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/serializer/filter_keyword_extractor.h b/components/adblock/core/converter/serializer/filter_keyword_extractor.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/serializer/filter_keyword_extractor.h -@@ -0,0 +1,59 @@ -+ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FILTER_KEYWORD_EXTRACTOR_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FILTER_KEYWORD_EXTRACTOR_H_ -+ -+#include -+ -+#include "absl/types/optional.h" -+#include "base/strings/string_piece.h" -+#include "third_party/re2/src/re2/re2.h" -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+// Keywords allow selecting filters that could potentially match a URL faster -+// than an exhaustive search. -+// This is how it works: -+// -+// 1. A filter pattern is split into keywords via GetNextKeyword() -+// like so: -+// ||content.adblockplus.com/ad -+// becomes: -+// "content", "adblockplus" -+// - "com" is skipped because it's a very common component -+// - "ad" is skipped, explanation in .cc -+// -+// 2. Once we have keywords that describe the filter, the longest or most unique -+// keyword gets chosen to index the filter within the flatbuffer. In this case, -+// "adblockplus". -+class FilterKeywordExtractor { -+ public: -+ explicit FilterKeywordExtractor(base::StringPiece url); -+ ~FilterKeywordExtractor(); -+ absl::optional GetNextKeyword(); -+ -+ private: -+ re2::StringPiece input_; -+ re2::StringPiece::iterator end_of_last_keyword_; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FILTER_KEYWORD_EXTRACTOR_H_ -diff --git a/components/adblock/core/converter/serializer/flatbuffer_serializer.cc b/components/adblock/core/converter/serializer/flatbuffer_serializer.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/serializer/flatbuffer_serializer.cc -@@ -0,0 +1,394 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/serializer/flatbuffer_serializer.h" -+ -+#include "base/logging.h" -+#include "base/notreached.h" -+#include "base/strings/string_piece.h" -+#include "base/strings/string_util.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/common/regex_filter_pattern.h" -+#include "components/adblock/core/converter/parser/filter_classifier.h" -+#include "components/adblock/core/converter/serializer/filter_keyword_extractor.h" -+ -+namespace adblock { -+ -+class Buffer : public FlatbufferData { -+ public: -+ explicit Buffer(flatbuffers::DetachedBuffer&& buffer) -+ : buffer_(std::move(buffer)) {} -+ -+ const uint8_t* data() const override { return buffer_.data(); } -+ -+ size_t size() const override { return buffer_.size(); } -+ -+ private: -+ flatbuffers::DetachedBuffer buffer_; -+}; -+ -+FlatbufferSerializer::FlatbufferSerializer(GURL subscription_url, -+ bool allow_privileged) -+ : subscription_url_(subscription_url), allow_privileged_(allow_privileged) { -+ SerializeMetadata(Metadata::Default()); -+} -+ -+FlatbufferSerializer::~FlatbufferSerializer() = default; -+ -+std::unique_ptr -+FlatbufferSerializer::GetSerializedSubscription() { -+ auto subscription = flat::CreateSubscription( -+ builder_, metadata_, WriteUrlFilterIndex(url_subresource_block_), -+ WriteUrlFilterIndex(url_subresource_allow_), -+ WriteUrlFilterIndex(url_popup_block_), -+ WriteUrlFilterIndex(url_popup_allow_), -+ WriteUrlFilterIndex(url_document_allow_), -+ WriteUrlFilterIndex(url_elemhide_allow_), -+ WriteUrlFilterIndex(url_generichide_allow_), -+ WriteUrlFilterIndex(url_genericblock_allow_), -+ WriteUrlFilterIndex(url_csp_block_), WriteUrlFilterIndex(url_csp_allow_), -+ WriteUrlFilterIndex(url_rewrite_block_), -+ WriteUrlFilterIndex(url_rewrite_allow_), -+ WriteUrlFilterIndex(url_header_block_), -+ WriteUrlFilterIndex(url_header_allow_), -+ WriteElemhideFilterIndex(elemhide_index_), -+ WriteElemhideFilterIndex(elemhide_emulation_index_), -+ WriteElemhideFilterIndex(elemhide_exception_index_), -+ WriteSnippetFilterIndex(snippet_index_)); -+ -+ builder_.Finish(subscription, flat::SubscriptionIdentifier()); -+ return std::make_unique(builder_.Release()); -+} -+ -+void FlatbufferSerializer::SerializeMetadata(const Metadata metadata) { -+ metadata_ = flat::CreateSubscriptionMetadata( -+ builder_, builder_.CreateString(CurrentSchemaVersion()), -+ builder_.CreateString(subscription_url_.spec()), -+ builder_.CreateString(metadata.homepage), -+ builder_.CreateString(metadata.title), -+ builder_.CreateString(metadata.version), -+ metadata.expires.InMilliseconds()); -+} -+ -+void FlatbufferSerializer::SerializeContentFilter( -+ const ContentFilter content_filter) { -+ auto offset = flat::CreateElemHideFilter( -+ builder_, {}, -+ content_filter.type == FilterType::ElemHideEmulation -+ ? builder_.CreateString(content_filter.selector.data(), -+ content_filter.selector.size()) -+ : builder_.CreateString(EscapeSelector(content_filter.selector)), -+ CreateVectorOfSharedStrings(content_filter.domains.GetExcludeDomains())); -+ -+ // Insert the filter under the correct index. -+ switch (content_filter.type) { -+ case FilterType::ElemHide: -+ AddElemhideFilterForDomains( -+ elemhide_index_, content_filter.domains.GetIncludeDomains(), offset); -+ break; -+ case FilterType::ElemHideException: -+ AddElemhideFilterForDomains(elemhide_exception_index_, -+ content_filter.domains.GetIncludeDomains(), -+ offset); -+ break; -+ case FilterType::ElemHideEmulation: -+ AddElemhideFilterForDomains(elemhide_emulation_index_, -+ content_filter.domains.GetIncludeDomains(), -+ offset); -+ break; -+ default: -+ break; -+ } -+} -+ -+void FlatbufferSerializer::SerializeSnippetFilter( -+ const SnippetFilter snippet_filter) { -+ if (!allow_privileged_) { -+ VLOG(1) << "[eyeo] Snippet filters not allowed"; -+ return; -+ } -+ -+ std::vector> offsets; -+ offsets.reserve(snippet_filter.snippet_script.size()); -+ for (const auto& cur : snippet_filter.snippet_script) { -+ offsets.push_back(flat::CreateSnippetFunctionCall( -+ builder_, builder_.CreateSharedString(cur.front()), -+ builder_.CreateVectorOfStrings(++cur.begin(), cur.end()))); -+ } -+ -+ auto offset = flat::CreateSnippetFilter( -+ builder_, {}, -+ CreateVectorOfSharedStrings(snippet_filter.domains.GetExcludeDomains()), -+ builder_.CreateVector(offsets)); -+ AddSnippetFilterForDomains( -+ snippet_index_, snippet_filter.domains.GetIncludeDomains(), offset); -+} -+ -+void FlatbufferSerializer::SerializeUrlFilter(const UrlFilter url_filter) { -+ const auto& options = url_filter.options; -+ if (!allow_privileged_ && options.Headers().has_value()) { -+ VLOG(1) << "[eyeo] Header filters not allowed"; -+ return; -+ } -+ -+ auto offset = flat::CreateUrlFilter( -+ builder_, {}, builder_.CreateString(url_filter.pattern), -+ options.IsMatchCase(), options.ContentTypes(), -+ ThirdPartyOptionToFb(options.ThirdParty()), -+ CreateVectorOfSharedStringsFromSitekeys(options.Sitekeys()), -+ CreateVectorOfSharedStrings(options.Domains().GetIncludeDomains()), -+ CreateVectorOfSharedStrings(options.Domains().GetExcludeDomains()), -+ options.Rewrite().has_value() -+ ? flat::CreateRewrite(builder_, -+ RewriteOptionToFb(options.Rewrite().value())) -+ : flatbuffers::Offset(), -+ options.Csp().has_value() -+ ? builder_.CreateSharedString(options.Csp().value()) -+ : flatbuffers::Offset(), -+ options.Headers().has_value() -+ ? builder_.CreateSharedString(options.Headers().value()) -+ : flatbuffers::Offset()); -+ -+ const absl::optional keyword_pattern = -+ ExtractRegexFilterFromPattern(url_filter.pattern).has_value() -+ ? absl::optional() -+ : url_filter.pattern; -+ -+ if (options.Headers().has_value()) { -+ AddUrlFilterToIndex( -+ url_filter.is_allowing ? url_header_allow_ : url_header_block_, -+ keyword_pattern, offset); -+ return; -+ } -+ -+ if (options.IsPopup()) { -+ AddUrlFilterToIndex( -+ url_filter.is_allowing ? url_popup_allow_ : url_popup_block_, -+ keyword_pattern, offset); -+ } -+ -+ if (options.Csp().has_value()) { -+ AddUrlFilterToIndex( -+ url_filter.is_allowing ? url_csp_allow_ : url_csp_block_, -+ keyword_pattern, offset); -+ } -+ -+ if (options.Rewrite().has_value()) { -+ AddUrlFilterToIndex( -+ url_filter.is_allowing ? url_rewrite_allow_ : url_rewrite_block_, -+ keyword_pattern, offset); -+ } -+ -+ if (options.IsSubresource()) { -+ AddUrlFilterToIndex(url_filter.is_allowing ? url_subresource_allow_ -+ : url_subresource_block_, -+ keyword_pattern, offset); -+ } -+ -+ for (auto exception_type : options.ExceptionTypes()) { -+ switch (exception_type) { -+ case UrlFilterOptions::ExceptionType::Genericblock: -+ AddUrlFilterToIndex(url_genericblock_allow_, keyword_pattern, offset); -+ break; -+ case UrlFilterOptions::ExceptionType::Generichide: -+ AddUrlFilterToIndex(url_generichide_allow_, keyword_pattern, offset); -+ break; -+ case UrlFilterOptions::ExceptionType::Document: -+ AddUrlFilterToIndex(url_document_allow_, keyword_pattern, offset); -+ break; -+ case UrlFilterOptions::ExceptionType::Elemhide: -+ AddUrlFilterToIndex(url_elemhide_allow_, keyword_pattern, offset); -+ break; -+ default: -+ break; -+ } -+ } -+} -+ -+void FlatbufferSerializer::AddUrlFilterToIndex( -+ UrlFilterIndex& index, -+ absl::optional pattern_text, -+ flatbuffers::Offset filter) { -+ const auto keyword = -+ pattern_text ? FindCandidateKeyword(index, *pattern_text) : ""; -+ index[keyword].push_back(filter); -+} -+ -+void FlatbufferSerializer::AddElemhideFilterForDomains( -+ ElemhideIndex& index, -+ const std::vector& include_domains, -+ flatbuffers::Offset filter) const { -+ if (include_domains.empty()) { -+ // This is a generic filter, we add those under "" index. -+ index[""].push_back(filter); -+ } else { -+ // Index this filter under each domain it is included for. -+ for (const auto& domain : include_domains) { -+ index[domain].push_back(filter); -+ } -+ } -+} -+ -+void FlatbufferSerializer::AddSnippetFilterForDomains( -+ SnippetIndex& index, -+ const std::vector& domains, -+ flatbuffers::Offset filter) const { -+ for (const auto& domain : domains) { -+ index[domain].push_back(filter); -+ } -+} -+ -+flatbuffers::Offset< -+ flatbuffers::Vector>> -+FlatbufferSerializer::CreateVectorOfSharedStrings( -+ const std::vector& strings) { -+ std::vector> shared_strings; -+ std::transform( -+ strings.begin(), strings.end(), std::back_inserter(shared_strings), -+ [&](const std::string& s) { return builder_.CreateSharedString(s); }); -+ return builder_.CreateVector(std::move(shared_strings)); -+} -+ -+flatbuffers::Offset< -+ flatbuffers::Vector>> -+FlatbufferSerializer::CreateVectorOfSharedStringsFromSitekeys( -+ const std::vector& sitekeys) { -+ std::vector> shared_strings; -+ std::transform( -+ sitekeys.begin(), sitekeys.end(), std::back_inserter(shared_strings), -+ [&](const SiteKey& s) { return builder_.CreateSharedString(s.value()); }); -+ return builder_.CreateVector(std::move(shared_strings)); -+} -+ -+flatbuffers::Offset< -+ flatbuffers::Vector>> -+FlatbufferSerializer::WriteUrlFilterIndex(const UrlFilterIndex& index) { -+ std::vector> offsets; -+ offsets.reserve(index.size()); -+ -+ for (const auto& cur : index) { -+ offsets.push_back(flat::CreateUrlFiltersByKeyword( -+ builder_, builder_.CreateSharedString(cur.first), -+ builder_.CreateVector(cur.second))); -+ } -+ -+ return builder_.CreateVector(offsets); -+} -+ -+flatbuffers::Offset< -+ flatbuffers::Vector>> -+FlatbufferSerializer::WriteElemhideFilterIndex(const ElemhideIndex& index) { -+ std::vector> offsets; -+ offsets.reserve(index.size()); -+ -+ for (const auto& cur : index) { -+ offsets.push_back(flat::CreateElemHideFiltersByDomain( -+ builder_, builder_.CreateSharedString(cur.first), -+ builder_.CreateVector(cur.second))); -+ } -+ // Filters must be sorted (by domain), in order for LookupByKey() to work -+ // correctly. This can be also achieved by making ElemhideIndex an ordered -+ // map, but profiling shows sorting an unordered_map at the end is faster by -+ // about 15% (on exceptionrules.txt). -+ return builder_.CreateVectorOfSortedTables(offsets.data(), offsets.size()); -+} -+ -+flatbuffers::Offset< -+ flatbuffers::Vector>> -+FlatbufferSerializer::WriteSnippetFilterIndex(const SnippetIndex& index) { -+ std::vector> offsets; -+ offsets.reserve(index.size()); -+ -+ for (const auto& cur : index) { -+ offsets.push_back(flat::CreateSnippetFiltersByDomain( -+ builder_, builder_.CreateSharedString(cur.first), -+ builder_.CreateVector(cur.second))); -+ } -+ return builder_.CreateVector(offsets); -+} -+ -+std::string FlatbufferSerializer::FindCandidateKeyword( -+ UrlFilterIndex& index, -+ base::StringPiece value) { -+ FilterKeywordExtractor keyword_extractor(value); -+ size_t last_size = std::numeric_limits::max(); -+ std::string keyword; -+ while (auto current_keyword = keyword_extractor.GetNextKeyword()) { -+ std::string candidate = *current_keyword; -+ auto it = index.find(candidate); -+ auto size = it != index.end() ? it->second.size() : 0; -+ -+ if (size < last_size || -+ (size == last_size && candidate.size() > keyword.size())) { -+ last_size = size; -+ keyword = candidate; -+ } -+ } -+ return keyword; -+} -+ -+// static -+std::string FlatbufferSerializer::EscapeSelector( -+ const base::StringPiece& value) { -+ std::string escaped; -+ base::ReplaceChars(value, "{", "\\7b ", &escaped); -+ base::ReplaceChars(escaped, "}", "\\7d ", &escaped); -+ return escaped; -+} -+ -+// static -+flat::ThirdParty FlatbufferSerializer::ThirdPartyOptionToFb( -+ UrlFilterOptions::ThirdPartyOption option) { -+ if (option == UrlFilterOptions::ThirdPartyOption::ThirdPartyOnly) { -+ return flat::ThirdParty_ThirdPartyOnly; -+ } -+ if (option == UrlFilterOptions::ThirdPartyOption::FirstPartyOnly) { -+ return flat::ThirdParty_FirstPartyOnly; -+ } -+ return flat::ThirdParty_Ignore; -+} -+ -+// static -+flat::AbpResource FlatbufferSerializer::RewriteOptionToFb( -+ UrlFilterOptions::RewriteOption option) { -+ switch (option) { -+ case UrlFilterOptions::RewriteOption::AbpResource_BlankText: -+ return flat::AbpResource_BlankText; -+ case UrlFilterOptions::RewriteOption::AbpResource_BlankCss: -+ return flat::AbpResource_BlankCss; -+ case UrlFilterOptions::RewriteOption::AbpResource_BlankJs: -+ return flat::AbpResource_BlankJs; -+ case UrlFilterOptions::RewriteOption::AbpResource_BlankHtml: -+ return flat::AbpResource_BlankHtml; -+ case UrlFilterOptions::RewriteOption::AbpResource_BlankMp3: -+ return flat::AbpResource_BlankMp3; -+ case UrlFilterOptions::RewriteOption::AbpResource_BlankMp4: -+ return flat::AbpResource_BlankMp4; -+ case UrlFilterOptions::RewriteOption::AbpResource_TransparentGif1x1: -+ return flat::AbpResource_TransparentGif1x1; -+ case UrlFilterOptions::RewriteOption::AbpResource_TransparentPng2x2: -+ return flat::AbpResource_TransparentPng2x2; -+ case UrlFilterOptions::RewriteOption::AbpResource_TransparentPng3x2: -+ return flat::AbpResource_TransparentPng3x2; -+ case UrlFilterOptions::RewriteOption::AbpResource_TransparentPng32x32: -+ return flat::AbpResource_TransparentPng32x32; -+ default: -+ NOTREACHED(); -+ } -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/serializer/flatbuffer_serializer.h b/components/adblock/core/converter/serializer/flatbuffer_serializer.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/serializer/flatbuffer_serializer.h -@@ -0,0 +1,129 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FLATBUFFER_SERIALIZER_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FLATBUFFER_SERIALIZER_H_ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/converter/parser/content_filter.h" -+#include "components/adblock/core/converter/parser/metadata.h" -+#include "components/adblock/core/converter/parser/snippet_filter.h" -+#include "components/adblock/core/converter/parser/url_filter.h" -+#include "components/adblock/core/converter/parser/url_filter_options.h" -+#include "components/adblock/core/converter/serializer/serializer.h" -+#include "components/adblock/core/schema/filter_list_schema_generated.h" -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+class FlatbufferSerializer final : public Serializer { -+ public: -+ explicit FlatbufferSerializer(GURL subscription_url, bool allow_privileged); -+ ~FlatbufferSerializer() override; -+ -+ std::unique_ptr GetSerializedSubscription(); -+ -+ void SerializeMetadata(const Metadata metadata) override; -+ void SerializeContentFilter(const ContentFilter content_filter) override; -+ void SerializeSnippetFilter(const SnippetFilter snippet_filter) override; -+ void SerializeUrlFilter(const UrlFilter url_filter) override; -+ -+ private: -+ using UrlFilterIndex = -+ std::map>>; -+ using ElemhideIndex = std::unordered_map< -+ std::string, -+ std::vector>>; -+ using SnippetIndex = -+ std::map>>; -+ -+ void AddUrlFilterToIndex(UrlFilterIndex& index, -+ absl::optional pattern_text, -+ flatbuffers::Offset filter); -+ void AddElemhideFilterForDomains( -+ ElemhideIndex& index, -+ const std::vector& include_domains, -+ flatbuffers::Offset filter) const; -+ void AddSnippetFilterForDomains( -+ SnippetIndex& index, -+ const std::vector& domains, -+ flatbuffers::Offset filter) const; -+ -+ flatbuffers::Offset< -+ flatbuffers::Vector>> -+ CreateVectorOfSharedStrings(const std::vector& strings); -+ -+ flatbuffers::Offset< -+ flatbuffers::Vector>> -+ CreateVectorOfSharedStringsFromSitekeys(const std::vector& sitekeys); -+ -+ flatbuffers::Offset< -+ flatbuffers::Vector>> -+ WriteUrlFilterIndex(const UrlFilterIndex& index); -+ -+ flatbuffers::Offset< -+ flatbuffers::Vector>> -+ WriteElemhideFilterIndex(const ElemhideIndex& index); -+ -+ flatbuffers::Offset< -+ flatbuffers::Vector>> -+ WriteSnippetFilterIndex(const SnippetIndex& index); -+ -+ std::string FindCandidateKeyword(UrlFilterIndex& index, -+ base::StringPiece value); -+ -+ static std::string EscapeSelector(const base::StringPiece& value); -+ -+ static flat::ThirdParty ThirdPartyOptionToFb( -+ UrlFilterOptions::ThirdPartyOption option); -+ static flat::AbpResource RewriteOptionToFb( -+ UrlFilterOptions::RewriteOption option); -+ -+ GURL subscription_url_; -+ bool allow_privileged_ = false; -+ flatbuffers::FlatBufferBuilder builder_; -+ flatbuffers::Offset metadata_; -+ UrlFilterIndex url_subresource_block_; -+ UrlFilterIndex url_subresource_allow_; -+ UrlFilterIndex url_popup_block_; -+ UrlFilterIndex url_popup_allow_; -+ UrlFilterIndex url_document_allow_; -+ UrlFilterIndex url_elemhide_allow_; -+ UrlFilterIndex url_generichide_allow_; -+ UrlFilterIndex url_genericblock_allow_; -+ UrlFilterIndex url_csp_block_; -+ UrlFilterIndex url_csp_allow_; -+ UrlFilterIndex url_rewrite_block_; -+ UrlFilterIndex url_rewrite_allow_; -+ UrlFilterIndex url_header_allow_; -+ UrlFilterIndex url_header_block_; -+ ElemhideIndex elemhide_exception_index_; -+ ElemhideIndex elemhide_index_; -+ ElemhideIndex elemhide_emulation_index_; -+ SnippetIndex snippet_index_; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FLATBUFFER_SERIALIZER_H_ -diff --git a/components/adblock/core/converter/serializer/serializer.h b/components/adblock/core/converter/serializer/serializer.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/serializer/serializer.h -@@ -0,0 +1,41 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_SERIALIZER_H_ -+#define COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_SERIALIZER_H_ -+ -+#include -+ -+namespace adblock { -+ -+class ContentFilter; -+class Metadata; -+class SnippetFilter; -+class UrlFilter; -+ -+class Serializer { -+ public: -+ virtual ~Serializer() = default; -+ virtual void SerializeMetadata(const Metadata metadata) = 0; -+ virtual void SerializeContentFilter(const ContentFilter content_filter) = 0; -+ virtual void SerializeSnippetFilter(const SnippetFilter snippet_filter) = 0; -+ virtual void SerializeUrlFilter(const UrlFilter url_filter) = 0; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_SERIALIZER_H_ -diff --git a/components/adblock/core/converter/serializer/test/filter_keyword_extractor_test.cc b/components/adblock/core/converter/serializer/test/filter_keyword_extractor_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/serializer/test/filter_keyword_extractor_test.cc -@@ -0,0 +1,68 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/serializer/filter_keyword_extractor.h" -+ -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+TEST(AdblockFilterKeywordExtractor, NoKeywordExtractedFromEmptyInput) { -+ FilterKeywordExtractor extractor(""); -+ EXPECT_EQ(extractor.GetNextKeyword(), absl::nullopt); -+} -+ -+TEST(AdblockFilterKeywordExtractor, DoesNotExtractCommonKeywords) { -+ FilterKeywordExtractor extractor("||https://domain.com/script.js"); -+ std::vector extracted_keywords; -+ while (auto keyword = extractor.GetNextKeyword()) { -+ extracted_keywords.push_back(keyword->data()); -+ } -+ EXPECT_THAT(extracted_keywords, testing::ElementsAre("domain", "script")); -+} -+ -+TEST(AdblockFilterKeywordExtractor, SingleLetterKeywordsSkipped) { -+ FilterKeywordExtractor extractor("||a.com"); -+ EXPECT_EQ(extractor.GetNextKeyword(), absl::nullopt); -+} -+ -+TEST(AdblockFilterKeywordExtractor, DoesNotExtractLastKeywords) { -+ FilterKeywordExtractor extractor("||domain.cc/in_discovery"); -+ // This filter should match "http://domain.cc/in_discovery5". Because the -+ // Converter only stores the longest keyword per filter, we don't want the -+ // trailing "discovery" component to "win", as it would not match longer -+ // keywords extracted from requests. We skip the trailing keyword when -+ // extracting for filter, but we include it when extracting from request. -+ std::vector extracted_keywords; -+ while (auto keyword = extractor.GetNextKeyword()) { -+ extracted_keywords.push_back(keyword->data()); -+ } -+ EXPECT_THAT(extracted_keywords, testing::ElementsAre("domain", "cc", "in")); -+} -+ -+TEST(AdblockKeywordExtractor, DoesNotExtractWildcardKeyword) { -+ FilterKeywordExtractor extractor("/path1/test*iles/path2/file.js"); -+ std::vector extracted_keywords; -+ while (auto keyword = extractor.GetNextKeyword()) { -+ extracted_keywords.push_back(keyword->data()); -+ } -+ EXPECT_THAT(extracted_keywords, -+ testing::ElementsAre("path1", "path2", "file")); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/test/flatbuffer_converter_perftest.cc b/components/adblock/core/converter/test/flatbuffer_converter_perftest.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/test/flatbuffer_converter_perftest.cc -@@ -0,0 +1,64 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include -+ -+#include "base/files/file_path.h" -+#include "base/files/file_util.h" -+#include "base/logging.h" -+#include "base/path_service.h" -+#include "base/time/time.h" -+#include "base/timer/elapsed_timer.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/converter/flatbuffer_converter.h" -+#include "testing/gtest/include/gtest/gtest.h" -+#include "third_party/zlib/google/compression_utils.h" -+ -+namespace adblock { -+ -+class ConverterPerfTest : public testing::Test { -+ public: -+ void MeasureConversionTime(std::string filename) { -+ base::FilePath source_file; -+ ASSERT_TRUE(base::PathService::Get(base::DIR_SOURCE_ROOT, &source_file)); -+ source_file = source_file.AppendASCII("components") -+ .AppendASCII("test") -+ .AppendASCII("data") -+ .AppendASCII("adblock") -+ .AppendASCII(filename); -+ std::string content; -+ ASSERT_TRUE(base::ReadFileToString(source_file, &content)); -+ ASSERT_TRUE(compression::GzipUncompress(content, &content)); -+ std::stringstream input(std::move(content)); -+ base::ElapsedTimer timer; -+ auto buffer = FlatbufferConverter::Convert(input, CustomFiltersUrl(), true); -+ ASSERT_TRUE( -+ absl::holds_alternative>(buffer)); -+ LOG(INFO) << "[eyeo] Time to convert " << filename << ": " -+ << timer.Elapsed(); -+ } -+}; -+ -+TEST_F(ConverterPerfTest, ConvertEasylistTime) { -+ MeasureConversionTime("easylist.txt.gz"); -+} -+ -+TEST_F(ConverterPerfTest, ConvertExceptionrulesTime) { -+ MeasureConversionTime("exceptionrules.txt.gz"); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/converter/test/flatbuffer_converter_test.cc b/components/adblock/core/converter/test/flatbuffer_converter_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/converter/test/flatbuffer_converter_test.cc -@@ -0,0 +1,2476 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/converter/flatbuffer_converter.h" -+ -+#include -+#include -+#include -+ -+#include "base/memory/raw_ptr.h" -+#include "base/memory/scoped_refptr.h" -+#include "base/rand_util.h" -+#include "components/adblock/core/subscription/installed_subscription_impl.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+std::string RandomAsciiString(size_t length) { -+ std::string result(length, ' '); -+ for (auto& c : result) { -+ c = base::RandInt('a', 'z'); -+ } -+ return result; -+} -+ -+struct FlatIndex { -+ explicit FlatIndex(std::unique_ptr data) -+ : buffer_(std::move(data)), -+ index_(flat::GetSubscription(buffer_->data())) {} -+ const std::unique_ptr buffer_; -+ const raw_ptr index_; -+}; -+ -+class AdblockFlatbufferConverterTest : public testing::Test { -+ public: -+ std::set FilterSelectors( -+ InstalledSubscription::Selectors selectors) { -+ // Remove exceptions. -+ selectors.elemhide_selectors.erase( -+ std::remove_if(selectors.elemhide_selectors.begin(), -+ selectors.elemhide_selectors.end(), -+ [&](const auto& selector) { -+ return std::find(selectors.elemhide_exceptions.begin(), -+ selectors.elemhide_exceptions.end(), -+ selector) != -+ selectors.elemhide_exceptions.end(); -+ }), -+ selectors.elemhide_selectors.end()); -+ std::set filtered_selectors( -+ selectors.elemhide_selectors.begin(), -+ selectors.elemhide_selectors.end()); -+ return filtered_selectors; -+ } -+ -+ scoped_refptr ConvertAndLoadRules( -+ std::string rules, -+ GURL url = GURL(), -+ bool allow_privileged = false) { -+ // Without [Adblock Plus 2.0], the file is not a valid filter list. -+ rules = "[Adblock Plus 2.0]\n! Title: TestingList\n" + rules; -+ std::istringstream input(std::move(rules)); -+ auto converter_result = -+ FlatbufferConverter::Convert(input, url, allow_privileged); -+ if (!absl::holds_alternative>( -+ converter_result)) { -+ return {}; -+ } -+ return base::MakeRefCounted( -+ std::move(absl::get>(converter_result)), -+ Subscription::InstallationState::Installed, base::Time()); -+ } -+ -+ scoped_refptr ConvertAndLoadVectorOfRules( -+ std::vector& rules, -+ GURL url = GURL(), -+ bool allow_privileged = false) { -+ auto raw_data = FlatbufferConverter::Convert(rules, url, allow_privileged); -+ -+ auto subscription = base::MakeRefCounted( -+ std::move(raw_data), Subscription::InstallationState::Installed, -+ base::Time()); -+ -+ EXPECT_EQ(subscription->GetSourceUrl(), ""); -+ EXPECT_EQ(subscription->GetTitle(), ""); -+ EXPECT_EQ(subscription->GetCurrentVersion(), ""); -+ EXPECT_EQ(subscription->GetExpirationInterval(), base::Days(5)); -+ -+ return subscription; -+ } -+ -+ FlatIndex ConvertAndLoadRulesToIndex(std::string rules, -+ GURL url = GURL(), -+ bool allow_privileged = false) { -+ // Without [Adblock Plus 2.0], the file is not a valid filter list. -+ rules = "[Adblock Plus 2.0]\n! Title: TestingList\n" + rules; -+ std::stringstream input(std::move(rules)); -+ auto converter_result = -+ FlatbufferConverter::Convert(input, url, allow_privileged); -+ if (!absl::holds_alternative>( -+ converter_result)) { -+ return FlatIndex(nullptr); -+ } -+ return FlatIndex(std::move( -+ absl::get>(converter_result))); -+ } -+}; -+ -+/* --------------------- Header tests --------------------- */ -+TEST_F(AdblockFlatbufferConverterTest, SubscriptionUrlParsed) { -+ const GURL kSubscriptionUrl{ -+ "https://testpages.adblockplus.org/en/abp-testcase-subscription.txt"}; -+ auto subscription = ConvertAndLoadRules("", kSubscriptionUrl); -+ EXPECT_EQ(subscription->GetSourceUrl(), kSubscriptionUrl); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, SubscriptionTitleParsed) { -+ const GURL kSubscriptionUrl{ -+ "https://testpages.adblockplus.org/en/abp-testcase-subscription.txt"}; -+ auto subscription = ConvertAndLoadRules("", kSubscriptionUrl); -+ EXPECT_EQ(subscription->GetTitle(), "TestingList"); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, CurrentVersionParsed) { -+ const GURL kSubscriptionUrl{ -+ "https://testpages.adblockplus.org/en/abp-testcase-subscription.txt"}; -+ auto subscription = ConvertAndLoadRules( -+ "! Version: 202108191113\n !Expires: 1 d", kSubscriptionUrl); -+ EXPECT_EQ(subscription->GetCurrentVersion(), "202108191113"); -+ EXPECT_EQ(subscription->GetExpirationInterval(), base::Days(1)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, ConverterRedirects) { -+ const GURL kSubscriptionUrl{ -+ "https://testpages.adblockplus.org/en/abp-testcase-subscription.txt"}; -+ const GURL kRedirectUrl{"https://redirect.url.org/redirect-fl.txt"}; -+ std::string rules = "[Adblock Plus 2.0]\n! Title: TestingList\n! Redirect: " + -+ kRedirectUrl.spec() + "\n"; -+ std::stringstream input(std::move(rules)); -+ auto converter_result = -+ FlatbufferConverter::Convert(input, kSubscriptionUrl, false); -+ ASSERT_TRUE(absl::holds_alternative(converter_result)); -+ EXPECT_EQ(absl::get(converter_result), kRedirectUrl); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, InvalidMetadataField) { -+ const GURL kSubscriptionUrl{ -+ "https://testpages.adblockplus.org/en/abp-testcase-subscription.txt"}; -+ std::string rules = "[uBlock Origin 2.0]\n! Title: TestingList\n!"; -+ std::stringstream input(std::move(rules)); -+ auto converter_result = -+ FlatbufferConverter::Convert(input, kSubscriptionUrl, false); -+ ASSERT_TRUE(absl::holds_alternative(converter_result)); -+ EXPECT_EQ(absl::get(converter_result), -+ ConversionError("Invalid filter list metadata")); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, ConvertEmptyListOfRules) { -+ std::vector rules = {}; -+ auto subscription = ConvertAndLoadVectorOfRules(rules); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, ConvertListOfRules_SingleRule) { -+ std::vector rules = {"###ad"}; -+ auto subscription = ConvertAndLoadVectorOfRules(rules); -+ -+ auto selectors = subscription->GetElemhideSelectors( -+ GURL("https://pl.ign.com/marvels-avengers/41262/news/" -+ "marvels-avengers-kratos-zagra-czarna-pantere"), -+ false); -+ -+ EXPECT_EQ(FilterSelectors(selectors), std::set({"#ad"})); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, ConvertListOfRulesMultipeRules) { -+ std::vector rules = {"###ad1", "example.hu###ad2"}; -+ auto subscription = ConvertAndLoadVectorOfRules(rules); -+ -+ auto selectors_1 = subscription->GetElemhideSelectors( -+ GURL("https://pl.ign.com/marvels-avengers/41262/news/" -+ "marvels-avengers-kratos-zagra-czarna-pantere"), -+ false); -+ -+ auto selectors_2 = -+ subscription->GetElemhideSelectors(GURL("http://example.hu"), false); -+ -+ EXPECT_EQ(FilterSelectors(selectors_1), -+ std::set({"#ad1"})); -+ EXPECT_EQ(FilterSelectors(selectors_2), -+ std::set({"#ad1", "#ad2"})); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, ConvertListOfRulesWithInvalidRules) { -+ std::vector rules = {"###ad", "", "@@"}; -+ auto subscription = ConvertAndLoadVectorOfRules(rules); -+ -+ auto selectors = subscription->GetElemhideSelectors( -+ GURL("https://pl.ign.com/marvels-avengers/41262/news/" -+ "marvels-avengers-kratos-zagra-czarna-pantere"), -+ false); -+ -+ EXPECT_EQ(FilterSelectors(selectors), std::set({"#ad"})); -+} -+ -+/* ------------------ Content filter tests ------------------ */ -+TEST_F(AdblockFlatbufferConverterTest, Elementhide_generic_selector) { -+ auto subscriptions = ConvertAndLoadRules("##.zad.billboard"); -+ auto selectors = subscriptions->GetElemhideSelectors( -+ GURL("https://pl.ign.com/marvels-avengers/41262/news/" -+ "marvels-avengers-kratos-zagra-czarna-pantere"), -+ false); -+ EXPECT_EQ(FilterSelectors(selectors), -+ std::set({".zad.billboard"})); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhide_excludes_sub) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ example.org###ad_1 -+ example.org###ad_2 -+ foo.example.org#@##ad_2 -+ )"); -+ const auto selectors_1 = subscriptions->GetElemhideSelectors( -+ GURL("http://foo.example.org"), false); -+ -+ const auto selectors_2 = -+ subscriptions->GetElemhideSelectors(GURL("http://example.org"), false); -+ -+ EXPECT_EQ(FilterSelectors(selectors_1), -+ std::set({"#ad_1"})); -+ EXPECT_EQ(FilterSelectors(selectors_2), -+ std::set({"#ad_1", "#ad_2"})); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhide_domain_specifc) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ! other type of filters -+ /testcasefiles/blocking/addresspart/abptestcasepath/ -+ example.org#?#div:-abp-properties(width: 213px) -+ ! element hiding selectors -+ ###testcase-eh-id -+ example.org###testcase-eh-id -+ example.org##.testcase-eh-class -+ example.org##.testcase-container > .testcase-eh-descendant -+ ~foo.example.org,example.org##foo -+ ~othersiteneg.org##testneg -+ ! other site -+ )"); -+ auto selectors = -+ subscriptions->GetElemhideSelectors(GURL("http://example.org"), false); -+ EXPECT_EQ(std::set( -+ {"#testcase-eh-id", "testneg", -+ ".testcase-container > .testcase-eh-descendant", -+ ".testcase-eh-class", "foo"}), -+ FilterSelectors(selectors)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhide_same_result) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ example1.org###testcase-eh-id -+ example2.org###testcase-eh-id -+ )"); -+ auto selectors_1 = -+ subscriptions->GetElemhideSelectors(GURL("http://example1.org"), false); -+ -+ auto selectors_2 = -+ subscriptions->GetElemhideSelectors(GURL("http://example2.org"), false); -+ -+ auto selectors_3 = subscriptions->GetElemhideSelectors( -+ GURL("http://non-existing-domain.com"), false); -+ -+ EXPECT_EQ(FilterSelectors(selectors_1), FilterSelectors(selectors_2)); -+ EXPECT_EQ(FilterSelectors(selectors_1), -+ std::set({"#testcase-eh-id"})); -+ EXPECT_EQ(FilterSelectors(selectors_3).size(), 0u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhide_exception_main_domain) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ sub.example.org###testcase-eh-id -+ example.org#@##testcase-eh-id -+ )"); -+ auto selectors = subscriptions->GetElemhideSelectors( -+ GURL("http://sub.example.org"), false); -+ -+ EXPECT_EQ(FilterSelectors(selectors).size(), 0u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhide_apply_just_domain) { -+ auto subscriptions = ConvertAndLoadRules("example.org###div"); -+ -+ auto selectors = -+ subscriptions->GetElemhideSelectors(GURL("http://example.org"), true); -+ -+ EXPECT_EQ(FilterSelectors(selectors), std::set({"#div"})); -+ auto selectors2 = -+ subscriptions->GetElemhideSelectors(GURL("http://example2.org"), false); -+ -+ EXPECT_EQ(FilterSelectors(selectors2).size(), 0u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhideemu_generic) { -+ auto subscriptions = ConvertAndLoadRules("example.org#?#foo"); -+ const auto selectors = -+ subscriptions->GetElemhideEmulationSelectors(GURL("http://example.org")); -+ -+ EXPECT_EQ(FilterSelectors(selectors), std::set({"foo"})); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhideemu_allow_list) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ example.org#?#foo -+ example.org#@#foo -+ )"); -+ const auto selectors = -+ subscriptions->GetElemhideEmulationSelectors(GURL("http://example.org")); -+ -+ EXPECT_EQ(FilterSelectors(selectors).size(), 0u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhideemu_allow_list_2) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ example.org#?#foo -+ example.org#?#another -+ example.org#@#foo -+ )"); -+ const auto selectors = -+ subscriptions->GetElemhideEmulationSelectors(GURL("http://example.org")); -+ -+ EXPECT_EQ(FilterSelectors(selectors), -+ std::set({"another"})); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhideemu_allow_list_3) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ example.org#?#foo -+ example.org#?#another -+ example2.org#?#foo -+ example.org#@#foo -+ )"); -+ const auto selectors = -+ subscriptions->GetElemhideEmulationSelectors(GURL("http://example2.org")); -+ -+ EXPECT_EQ(FilterSelectors(selectors), std::set({"foo"})); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhideemu_domain_n_subdomain) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ !other type of filters -+ /testcasefiles/blocking/addresspart/abptestcasepath/ -+ example.org###testcase-eh-id -+ !element hiding emulation selectors -+ example.org#?#div:-abp-properties(width: 213px) -+ example.org#?#div:-abp-has(>div>img.testcase-es-has) -+ example.org#?#span:-abp-contains(ESContainsTarget) -+ ~foo.example.org,example.org#?#div:-abp-properties(width: 213px) -+ !allowlisted -+ example.org#@#foo -+ !other site -+ othersite.com###testcase-eh-id -+ )"); -+ const auto selectors_1 = -+ subscriptions->GetElemhideEmulationSelectors(GURL("http://example.org")); -+ -+ // should be 3 unique selectors -+ EXPECT_EQ(FilterSelectors(selectors_1), -+ std::set({ -+ "div:-abp-properties(width: 213px)", -+ "div:-abp-has(>div>img.testcase-es-has)", -+ "span:-abp-contains(ESContainsTarget)", -+ })); -+ -+ const auto selectors_2 = subscriptions->GetElemhideEmulationSelectors( -+ GURL("http://foo.example.org")); -+ -+ EXPECT_EQ(FilterSelectors(selectors_2), -+ std::set({ -+ "div:-abp-properties(width: 213px)", -+ "div:-abp-has(>div>img.testcase-es-has)", -+ "span:-abp-contains(ESContainsTarget)", -+ })); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhideemu_excludes_sub) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ example.org#?#general -+ example.org#?#specific -+ foo.example.org#@#specific -+ )"); -+ const auto selectors_1 = subscriptions->GetElemhideEmulationSelectors( -+ GURL("http://foo.example.org")); -+ -+ const auto selectors_2 = -+ subscriptions->GetElemhideEmulationSelectors(GURL("http://example.org")); -+ -+ EXPECT_EQ(FilterSelectors(selectors_1), -+ std::set{"general"}); -+ -+ EXPECT_EQ(FilterSelectors(selectors_2), std::set({ -+ "general", -+ "specific", -+ })); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhideemu_list_diff) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ example1.org#?#div:-abp-properties(width: 213px) -+ example2.org#?#div:-abp-properties(width: 213px) -+ example2.org#@#div:-abp-properties(width: 213px) -+ )"); -+ const auto selectors_1 = -+ subscriptions->GetElemhideEmulationSelectors(GURL("http://example1.org")); -+ -+ EXPECT_EQ(FilterSelectors(selectors_1), -+ std::set{"div:-abp-properties(width: 213px)"}); -+ -+ const auto selectors_2 = -+ subscriptions->GetElemhideEmulationSelectors(GURL("http://example2.org")); -+ EXPECT_EQ(FilterSelectors(selectors_2).size(), 0u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ Elementhide_exception_with_excluded_url) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ###_AD -+ ~imore.com#@##_AD -+ )"); -+ const auto selectors = subscriptions->GetElemhideSelectors( -+ GURL("https://www.imore.com/"), false); -+ -+ EXPECT_EQ(FilterSelectors(selectors), std::set{"#_AD"}); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhide_with_generic_excluded_url) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ~imore.com###_AD -+ )"); -+ const auto selectors = subscriptions->GetElemhideSelectors( -+ GURL("https://www.domain.com/"), false); -+ -+ EXPECT_EQ(FilterSelectors(selectors), std::set{"#_AD"}); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhide_top_tier_domain_match) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ com###_AD -+ )"); -+ const auto selectors = subscriptions->GetElemhideSelectors( -+ GURL("https://www.domain.com/"), true); -+ -+ EXPECT_EQ(FilterSelectors(selectors), std::set{"#_AD"}); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhide_with_excluded_url_specific) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ###_AD -+ ~imore.com#@##_AD -+ )"); -+ const auto selectors = subscriptions->GetElemhideSelectors( -+ GURL("https://www.domain.com/"), true); -+ -+ EXPECT_EQ(FilterSelectors(selectors).size(), 0u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ Elementhide_with_excluded_url_case_insensitive) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ###_AD -+ ~IMore.com#@##_AD -+ )"); -+ const auto selectors = subscriptions->GetElemhideSelectors( -+ GURL("https://www.imore.com/"), false); -+ -+ EXPECT_EQ(FilterSelectors(selectors), std::set{"#_AD"}); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ Elementhide_with_excluded_url_case_insensitive_2) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ###_AD -+ ~imore.com#@##_AD -+ )"); -+ const auto selectors = subscriptions->GetElemhideSelectors( -+ GURL("https://www.IMORE.com/"), false); -+ -+ EXPECT_EQ(FilterSelectors(selectors), std::set{"#_AD"}); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhide_exception_subdomain) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ##.ad_box -+ domain.com,~www.domain.com#@#.ad_box -+ )"); -+ const auto selectors = -+ subscriptions->GetElemhideSelectors(GURL("https://domain.com/"), false); -+ const auto selectors_2 = subscriptions->GetElemhideSelectors( -+ GURL("https://www.domain.com/"), false); -+ const auto selectors_3 = -+ subscriptions->GetElemhideSelectors(GURL("https://domain2.com/"), false); -+ -+ EXPECT_EQ(FilterSelectors(selectors).size(), 0u); -+ EXPECT_EQ(FilterSelectors(selectors_2), -+ std::set{".ad_box"}); -+ EXPECT_EQ(FilterSelectors(selectors_3), -+ std::set{".ad_box"}); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhideemu_exception_subdomain) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ domain.com#?#.ad_box -+ mail.domain.com,~www.mail.domain.com#@#.ad_box -+ )"); -+ const auto selectors = subscriptions->GetElemhideEmulationSelectors( -+ GURL("https://mail.domain.com/")); -+ const auto selectors_2 = subscriptions->GetElemhideEmulationSelectors( -+ GURL("https://www.mail.domain.com/")); -+ -+ EXPECT_EQ(FilterSelectors(selectors).size(), 0u); -+ -+ EXPECT_EQ(FilterSelectors(selectors_2), -+ std::set{".ad_box"}); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhideemu_without_include_domains) { -+ // The Elemhide emu filter has no include domains, only an exclude domain, -+ // which makes it generic. Elemhide emu filters cannot be generic, so we -+ // don't apply this filter. -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ~domain.com#?#.ad_box -+ )"); -+ const auto selectors = -+ subscriptions->GetElemhideEmulationSelectors(GURL("https://test.com/")); -+ -+ EXPECT_EQ(FilterSelectors(selectors).size(), 0u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, Elementhideemu_on_top_level_domain) { -+ // The Elemhide emu filter is defined to apply on all .com domains. -+ // Elemhide emu filters cannot be applied so widely. -+ auto subscriptions = ConvertAndLoadRules(R"( -+ com#?#.ad_box -+ .com#?#.ad_box -+ )"); -+ const auto selectors = -+ subscriptions->GetElemhideEmulationSelectors(GURL("https://test.com/")); -+ -+ EXPECT_EQ(FilterSelectors(selectors).size(), 0u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, EscapeSelectors) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com###foo[data-bar='{{foo: 1}}'] -+ )"); -+ const auto selectors = -+ subscriptions->GetElemhideSelectors(GURL("https://test.com/"), false); -+ -+ EXPECT_EQ(FilterSelectors(selectors), -+ std::set( -+ {"#foo[data-bar='\\7b \\7b foo: 1\\7d \\7d ']"})); -+} -+ -+/* --------------------- Snippet tests --------------------- */ -+TEST_F(AdblockFlatbufferConverterTest, SnippetEmpty) { -+ auto index = ConvertAndLoadRulesToIndex(R"( -+ test.com#$# -+ )", -+ {}, true); -+ EXPECT_EQ(index.index_->snippet()->size(), 0u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, SnippetBasic) { -+ auto index = ConvertAndLoadRulesToIndex(R"( -+ test.com,~other.test.com#$#log Test -+ )", -+ {}, true); -+ ASSERT_EQ(index.index_->snippet()->size(), 1u); -+ auto* entry = index.index_->snippet()->Get(0); -+ ASSERT_EQ(entry->filter()->size(), 1u); -+ EXPECT_EQ(entry->domain()->str(), "test.com"); -+ -+ auto* snippet = entry->filter()->Get(0); -+ ASSERT_EQ(snippet->exclude_domains()->size(), 1u); -+ EXPECT_EQ(snippet->exclude_domains()->Get(0)->str(), "other.test.com"); -+ EXPECT_EQ(snippet->script()->size(), 1u); -+ -+ auto* call = snippet->script()->Get(0); -+ EXPECT_EQ(call->command()->str(), "log"); -+ ASSERT_EQ(call->arguments()->size(), 1u); -+ EXPECT_EQ(call->arguments()->Get(0)->str(), "Test"); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, SnippetSpace) { -+ auto index = ConvertAndLoadRulesToIndex(R"( -+ test.com#$#log ' Test\t arg' -+ )", -+ {}, true); -+ ASSERT_EQ(index.index_->snippet()->size(), 1u); -+ auto* entry = index.index_->snippet()->Get(0); -+ ASSERT_EQ(entry->filter()->size(), 1u); -+ auto* snippet = entry->filter()->Get(0); -+ -+ auto* call = snippet->script()->Get(0); -+ EXPECT_EQ(call->command()->str(), "log"); -+ ASSERT_EQ(call->arguments()->size(), 1u); -+ EXPECT_EQ(call->arguments()->Get(0)->str(), " Test\t arg"); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, SnippetArgumentPack) { -+ auto index = ConvertAndLoadRulesToIndex(R"( -+ test.com#$#log ab 'a b' '' ccc -+ )", -+ {}, true); -+ ASSERT_EQ(index.index_->snippet()->size(), 1u); -+ auto* entry = index.index_->snippet()->Get(0); -+ ASSERT_EQ(entry->filter()->size(), 1u); -+ auto* snippet = entry->filter()->Get(0); -+ ASSERT_EQ(snippet->script()->size(), 1u); -+ -+ auto* call = snippet->script()->Get(0); -+ EXPECT_EQ(call->command()->str(), "log"); -+ ASSERT_EQ(call->arguments()->size(), 4u); -+ EXPECT_EQ(call->arguments()->Get(0)->str(), "ab"); -+ EXPECT_EQ(call->arguments()->Get(1)->str(), "a b"); -+ EXPECT_EQ(call->arguments()->Get(2)->str(), ""); -+ EXPECT_EQ(call->arguments()->Get(3)->str(), "ccc"); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, SnippetMultipleCalls) { -+ auto index = ConvertAndLoadRulesToIndex(R"( -+ test.com#$#log test; log test; log -+ )", -+ {}, true); -+ ASSERT_EQ(index.index_->snippet()->size(), 1u); -+ auto* entry = index.index_->snippet()->Get(0); -+ ASSERT_EQ(entry->filter()->size(), 1u); -+ auto* snippet = entry->filter()->Get(0); -+ ASSERT_EQ(snippet->script()->size(), 3u); -+ -+ auto* call = snippet->script()->Get(0); -+ EXPECT_EQ(call->command()->str(), "log"); -+ ASSERT_EQ(call->arguments()->size(), 1u); -+ EXPECT_EQ(call->arguments()->Get(0)->str(), "test"); -+ -+ call = snippet->script()->Get(1); -+ EXPECT_EQ(call->command()->str(), "log"); -+ ASSERT_EQ(call->arguments()->size(), 1u); -+ EXPECT_EQ(call->arguments()->Get(0)->str(), "test"); -+ -+ call = snippet->script()->Get(2); -+ EXPECT_EQ(call->command()->str(), "log"); -+ EXPECT_EQ(call->arguments()->size(), 0u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, NoSnippetTest) { -+ auto sub = ConvertAndLoadRules(R"( -+ test.com##selector -+ )", -+ {}, true); -+ EXPECT_EQ(sub->MatchSnippets("random.org").size(), 0u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, NoSnippetForDomainTest) { -+ auto sub = ConvertAndLoadRules(R"( -+ test.com#$#log test; log test; log -+ )", -+ {}, true); -+ EXPECT_EQ(sub->MatchSnippets("domain.com").size(), 0u); -+ EXPECT_EQ(sub->MatchSnippets("test.com").size(), 3u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, SnippetFiltersTopLevelDomain) { -+ auto sub = ConvertAndLoadRules(R"( -+ test.com,gov.ua,com,localhost#$#abort-on-property-write 1 2 3 -+ )", -+ {}, true); -+ // has to have at least one subdomain -+ // but it might be a Top Level domain like gov.ua -+ EXPECT_EQ(sub->MatchSnippets("test.com").size(), 1u); -+ EXPECT_EQ(sub->MatchSnippets("gov.ua").size(), 1u); -+ EXPECT_EQ(sub->MatchSnippets("com").size(), 0u); -+ EXPECT_EQ(sub->MatchSnippets("localhost").size(), 1u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, SnippetFiltersSubdomain) { -+ auto sub = ConvertAndLoadRules(R"( -+ example.com,gov.ua#$#abort-on-property-write 1 2 3 -+ )", -+ {}, true); -+ EXPECT_EQ(sub->MatchSnippets("www.example.com").size(), 1u); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, SnippetsIgnoredForNonpriviledged) { -+ auto index = ConvertAndLoadRulesToIndex(R"( -+ example.com,gov.ua#$#abort-on-property-write 1 2 3 -+ )", -+ {}, false); -+ ASSERT_EQ(index.index_->snippet()->size(), 0u); -+} -+ -+/* ------------------ Url filter tests ------------------ */ -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_NoRules) { -+ auto subscription = ConvertAndLoadRules(""); -+ EXPECT_FALSE(subscription->HasUrlFilter(GURL("https://untracked.com/file"), -+ "domain.com", ContentType::Stylesheet, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_Stylesheet) { -+ auto subscription = ConvertAndLoadRules(R"( -+ abptestpages.org/testfiles/stylesheet/$stylesheet -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/stylesheet/file.css"), -+ "domain.com", ContentType::Stylesheet, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_Image) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||abptestpages.org/testfiles/image/static/$image -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/image/static/image.png"), -+ "domain.com", ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterBlocking_HandlesLookaroundUrlBlockingFiltersNegativeLookahead) { -+ // The filter below employs negative lookahead -+ // it should match any url except the ones that are within -+ // the (?!) group. -+ auto subscription = ConvertAndLoadRules(R"( -+ /^https?://(?![^\s]+\.streamvid\.club|api\.kinogram\.best\/embed\/|cdn\.jsdelivr\.net\/npm\/venom-player)/$third-party,xmlhttprequest,domain=kindkino.ru -+ )"); -+ -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://something.streamvid.club"), "kindkino.ru", -+ ContentType::Xmlhttprequest, SiteKey(), FilterCategory::Blocking)); -+ EXPECT_TRUE(subscription->HasUrlFilter(GURL("https://foo.org"), "kindkino.ru", -+ ContentType::Xmlhttprequest, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterBlocking_HandlesLookaroundUrlBlockingFiltersCaseSensetive) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /^https?://(?![^\s]+\.streamvid\.club/case)/$third-party,match-case,xmlhttprequest,domain=kindkino.ru -+ )"); -+ -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://something.streamvid.club/case"), "kindkino.ru", -+ ContentType::Xmlhttprequest, SiteKey(), FilterCategory::Blocking)); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://something.streamvid.club/CASE"), "kindkino.ru", -+ ContentType::Xmlhttprequest, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterBlocking_NotAffectedByRegexLookaroundFilter) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||abptestpages.org/testfiles/image/static/$image -+ /^https?://(?![^\s]+\.streamvid\.club)/$third-party,match-case,xmlhttprequest,domain=kindkino.ru -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/image/static/image.png"), -+ "domain.com", ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterBlocking_NotAffectedByRegexLookaroundFilter_2) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /^https?:\/\/.*\.(onlineee|online|)\/.*/$domain=hclips.com -+ /^https?://(?![^\s]+\.streamvid\.club)/$third-party,match-case,xmlhttprequest,domain=kindkino.ru -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://moneypunchstep.online/saber/ball/nomad/"), "hclips.com", -+ ContentType::Subdocument, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterBlocking_NotAffectedByInvalidRegexFilter) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||abptestpages.org/testfiles/image/static/$image -+ /[/ -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/image/static/image.png"), -+ "domain.com", ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_TrailingSeparator) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ^pid=Ads^ -+ )"); -+ -+ const std::string url = R"(https://c.contentsquare.net/pageview?pid=905&)"; -+ -+ EXPECT_FALSE(subscription->HasUrlFilter(GURL(url), "domain.com", -+ ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterBlocking_NotAffectedByInvalidRegexFilter_3) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /^https?:\/\/.*\.(onlineee|online|)\/.*/$domain=hclips.com -+ /[/ -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://moneypunchstep.online/saber/ball/nomad/"), "hclips.com", -+ ContentType::Subdocument, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterBlocking_LookaroundRegexEnginesMaxUrlSizeStressTest) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /^https?://(?![^\s]+\.streamvid\.club|api\.kinogram\.best\/embed\/|cdn\.jsdelivr\.net\/npm\/venom-player)/$third-party,xmlhttprequest,domain=kindkino.ru -+ )"); -+ -+ std::string url = "https://something.streamvid.club/"; -+ url.append(RandomAsciiString(url::kMaxURLChars - url.size())); -+ const GURL big_url(url); -+ -+ EXPECT_EQ(big_url.spec().size(), url::kMaxURLChars); -+ EXPECT_FALSE(subscription->HasUrlFilter(big_url, "kindkino.ru", -+ ContentType::Xmlhttprequest, -+ SiteKey(), FilterCategory::Blocking)); -+ -+ url.append(RandomAsciiString(url::kMaxURLChars)); -+ const GURL bigger_url(url); -+ -+ EXPECT_EQ(bigger_url.spec().size(), url::kMaxURLChars * 2); -+ EXPECT_FALSE(subscription->HasUrlFilter(bigger_url, "kindkino.ru", -+ ContentType::Xmlhttprequest, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterBlocking_AcceptsNonNormalizedUrl) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||abptestpages.org/ad -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter(GURL("https:abptestpages.org/ad:80"), -+ "domain.com", ContentType::Stylesheet, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_Script) { -+ auto subscription = ConvertAndLoadRules(R"( -+ abptestpages.org/testfiles/script/$script -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/script/script.js"), "domain.com", -+ ContentType::Script, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_Subdocument) { -+ auto subscription = ConvertAndLoadRules(R"( -+ abptestpages.org/testfiles/subdocument/$subdocument -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/subdocument/index.html"), -+ "domain.com", ContentType::Subdocument, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_WebRTC) { -+ auto subscription = ConvertAndLoadRules(R"( -+ $webrtc,domain=abptestpages.org -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/webrtc"), "abptestpages.org", -+ ContentType::Webrtc, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_Wildcard) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /testfiles/blocking/wildcard/*/wildcard.png -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://domain.com/testfiles/blocking/wildcard/path/component/" -+ "wildcard.png"), -+ "domain.com", ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_FullPath) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||abptestpages.org/testfiles/blocking/full-path.png -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/blocking/full-path.png"), -+ "domain.com", ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_PartialPath) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /testfiles/blocking/partial-path/ -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://whatever.com/testfiles/blocking/partial-path/content.png"), -+ "domain.com", ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_EndWithCarret) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ads.example.com^ -+ )"); -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("http://ads.example.com.ua"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_DomainWildcardMiddle1) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||a.*.b.com -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://a.c.b.com"), "https://abptestpages.org", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_DomainWildcardMiddle2) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||a*.b.com -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://a.c.b.com"), "https://abptestpages.org", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_DomainWildcardMiddle3) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||a.*b.com -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://a.b.com"), "https://abptestpages.org", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_WildcardDomainAndPath1) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||d*in.com/*/blocking -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://domain.com/testfiles/blocking/wildcard.png"), "domain.com", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_WildcardDomainAndPath2) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||a*.b.com/*.png -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://a.b.com/a.png"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://ac.b.com/image.png"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_DomainWildcardStart) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||*a.b.com -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://a.b.com"), "https://abptestpages.org", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://domena.b.com/path"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_DomainWildcardStartEndCarret) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||*a.b.com^ -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://a.b.com"), "https://abptestpages.org", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://domena.b.com/path"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_DomainCarretWildcardEnd) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||example.com^*/path.js -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://connect.example.com/en_US/path.js"), -+ "https://abptestpages.org", ContentType::Script, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_CarretEnd) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||example.com^ -+ @@||example.com/ddm^ -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://ad.example.com/ddm/ad/infytghiuf/nmys/;ord=1596077603231?"), -+ "https://abptestpages.org", ContentType::Script, SiteKey(), -+ FilterCategory::Blocking)); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://ad.example.com/ddm/ad/infytghiuf/nmys/;ord=1596077603231?"), -+ "https://abptestpages.org", ContentType::Script, SiteKey(), -+ FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_DomainInParamsNoMatch) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||domain.com^ -+ )"); -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://example.com/path?domain=https://www.domain.com"), -+ "https://abptestpages.org", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_SchemeDomainDot) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ://ads. -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://ads.example.com/u?dp=1"), "https://abptestpages.org", -+ ContentType::Script, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_PathWildcards) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||example.com/a/*/c/script.*.js -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://example.com/a/b/c/script.file.js"), -+ "https://abptestpages.org", ContentType::Script, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_MultipleCarretAndWildcard) { -+ auto subscription = ConvertAndLoadRules(R"( -+ @@^path1/path2/*/path4/file*.js^ -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://example.com/path1/path2/path3/path4/file1.2.3.js?v=1"), -+ "https://abptestpages.org", ContentType::Script, SiteKey(), -+ FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_PartdomainNoMatch) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||art-domain.com^ -+ )"); -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://sub.part-domain.com/path"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_DoubleSlash) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||example.com*/script. -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://example.com//script.js"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_Regex) { -+ auto subscription = ConvertAndLoadRules(R"( -+ @@/^https:\/\/www\.domain(?:\.[a-z]{2,3}){1,2}\/afs\// -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://www.domain.com/afs/iframe.html"), -+ "https://abptestpages.org", ContentType::Script, SiteKey(), -+ FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilter_DomainMatchFilterWithoutDomain1) { -+ auto subscription = ConvertAndLoadRules(R"( -+ @@||*file_name.gif -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://example.com/path/file_name.gif"), -+ "https://abptestpages.org", ContentType::Script, SiteKey(), -+ FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilter_DomainMatchFilterWithoutDomain2) { -+ auto subscription = ConvertAndLoadRules(R"( -+ @@||*/file_name.gif -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://example.com/path/file_name.gif"), -+ "https://abptestpages.org", ContentType::Script, SiteKey(), -+ FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_DomainStart) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||example.co -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://example.com"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_StartMatchCompleteUrl) { -+ auto subscription = ConvertAndLoadRules(R"( -+ |https://domain.com/path/file.gif -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://domain.com/path/file.gif"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_DomainMatchDotWildcard) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||*. -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://example.com/path/file.gif"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_DomainWithPort) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||example.com:8888/js -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://wwww.example.com:8888/js"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_IPWithPortAndWildcard) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||1.2.3.4:8060/*/ -+ )"); -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://1.2.3.4:8060/path"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://1.2.3.4:8060/path/file.js"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_DomainWithPortAndCarret) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||example.com:8862^ -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://example.com:8862"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://example.com:8862/path"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://example.com:886"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_SinglePipeCarret) { -+ auto subscription = ConvertAndLoadRules(R"( -+ |http://example.com^ -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://example.com:8000/"), "https://abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlAllowListDocument) { -+ auto subscription = ConvertAndLoadRules(R"( -+ @@^upapi=true$document,domain=thedirect.com|domain2.com -+ )"); -+ EXPECT_FALSE(subscription->HasSpecialFilter( -+ SpecialFilterType::Document, -+ GURL("https://backend.upapi.net/pv?upapi=true"), "domain.com", -+ SiteKey())); -+ -+ EXPECT_TRUE(subscription->HasSpecialFilter( -+ SpecialFilterType::Document, -+ GURL("https://backend.upapi.net/pv?upapi=true"), "thedirect.com", -+ SiteKey())); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_DomainSpecific) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /testfiles/domain/dynamic/*$domain=abptestpages.org -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://whatever.com/testfiles/domain/dynamic/content.png"), -+ "abptestpages.org", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+ // Does not match the same url embedded in a different domain - the rule is -+ // domain-specific. -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://whatever.com/testfiles/domain/dynamic/content.png"), -+ "different.adblockplus.org", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterBlocking_DomainSpecificIgnoresWWW) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /testfiles/domain/dynamic/*$domain=abptestpages.org -+ )"); -+ -+ // The filter's domain is abptestpages.org and the request's domain -+ // is www.abptestpages.org. The "www" prefix is ignored, the domains -+ // are considered to match. -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://whatever.com/testfiles/domain/dynamic/content.png"), -+ "www.abptestpages.org", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterBlocking_DomainSpecificIsCaseInsensitive) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /testfiles/domain/dynamic/*$domain=abptestpages.org -+ )"); -+ -+ // The filter's domain is abptestpages.org and the request's domain -+ // is abptestpages.org. The domains are considered to match. -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://whatever.com/testfiles/domain/dynamic/content.png"), -+ "abptestpages.org", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_Other) { -+ auto subscription = ConvertAndLoadRules(R"( -+ $other,domain=abptestpages.org -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter(GURL("https://whatever.com/script.js"), -+ "abptestpages.org", ContentType::Other, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_Ping) { -+ auto subscription = ConvertAndLoadRules(R"( -+ abptestpages.org/*^$ping -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter(GURL("https://abptestpages.org/ping"), -+ "abptestpages.org", ContentType::Ping, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_XmlHttpRequest) { -+ auto subscription = ConvertAndLoadRules(R"( -+ abptestpages.org/testfiles/xmlhttprequest/$xmlhttprequest -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/xmlhttprequest/" -+ "request.xml"), -+ "abptestpages.org", ContentType::Xmlhttprequest, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_ThirdParty) { -+ auto subscription = ConvertAndLoadRules(R"( -+ adblockplus-icon-colour-web.svg$third-party -+ )"); -+ -+ // $third-party means the rule applies if the domain is different than the -+ // domain of the URL (actually, a bit more complicated than that) -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/adblockplus-icon-colour-web.svg"), -+ "google.com", ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+ -+ // Does not apply on same domain. -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/adblockplus-icon-colour-web.svg"), -+ "abptestpages.org", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_ThirdParty_2) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||adgrx.com^$third-party -+ @@||fls.doubleclick.net^$subdocument,image -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://rtb.adgrx.com/segments/" -+ "EEXrM7_yY0aoq_OtZxYHORtz55uneYk8VAiLioGMm14=/47510.gif"), -+ "8879538.fls.doubleclick.net", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+ -+ EXPECT_FALSE(subscription->HasSpecialFilter( -+ SpecialFilterType::Document, -+ GURL("https://rtb.adgrx.com/segments/" -+ "EEXrM7_yY0aoq_OtZxYHORtz55uneYk8VAiLioGMm14=/47510.gif"), -+ "8879538.fls.doubleclick.net", SiteKey())); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_RegexEnd) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||popin.cc/popin_discovery -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://api.popin.cc/popin_discovery5-min.js"), "domain.com", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_NotThirdParty) { -+ auto subscription = ConvertAndLoadRules(R"( -+ abb-logo.png$~third-party -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/abb-logo.png"), "abptestpages.org", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+ // Does not apply on different domain. -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/abb-logo.png"), "domain.com", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_Popup) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||abptestpages.org/testfiles/popup/link.html^$popup -+ )"); -+ -+ EXPECT_TRUE(subscription->HasPopupFilter( -+ GURL("https://abptestpages.org/testfiles/popup/link.html"), -+ "abptestpages.org", SiteKey(), FilterCategory::Blocking)); -+ -+ // No allowing filter: -+ EXPECT_FALSE(subscription->HasPopupFilter( -+ GURL("https://abptestpages.org/testfiles/popup/link.html"), -+ "abptestpages.org", SiteKey(), FilterCategory::Allowing)); -+ -+ // Does not match if the content type is different. -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/popup/link.html"), -+ "abptestpages.org", ContentType::Subdocument, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_MultipleTypes) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||abptestpages.org/testfiles/popup/link.html^$popup,image,script -+ )"); -+ -+ EXPECT_TRUE(subscription->HasPopupFilter( -+ GURL("https://abptestpages.org/testfiles/popup/link.html"), -+ "abptestpages.org", SiteKey(), FilterCategory::Blocking)); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/popup/link.html"), -+ "abptestpages.org", ContentType::Script, SiteKey(), -+ FilterCategory::Blocking)); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/popup/link.html"), -+ "abptestpages.org", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterBlocking_UppercaseFilterAndURL) { -+ // A filter with uppercase component should be matched by a uppercase URL, -+ // this requires keywords and urls to be converted to lowercase during filter -+ // parsing. -+ auto subscription = ConvertAndLoadRules(R"( -+ ||yahoo.com/bidRequest? -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://c2shb.ssp.yahoo.com/" -+ "bidRequest?dcn=8a9691510171713aaede3c85d0ab0026&pos=desktop_sky_" -+ "right_bottom&cmd=bid&secure=1&gdpr=1&euconsent=" -+ "BO3TikKO3TikKAbABBENC6AAAAAtmAAA"), -+ "www.dailymail.co.uk", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_UppercaseDefinition) { -+ // A filter with uppercase component should be matched by a lowercase URL, -+ // this requires keywords to be converted to lowercase during filter parsing. -+ auto subscription = ConvertAndLoadRules(R"( -+ ||bttrack.com/Pixel/$image,third-party -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://bttrack.com/pixel/" -+ "cookiesync?source=14b8c562-d12b-418b-b680-ad517d5839ec"), -+ "super.abril.com.br", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterBlocking_UppercaseURL) { -+ // A filter with lowercase component should be matched by an uppercase URL, -+ // this requires keywords to be converted to lowercase during URL matching. -+ auto subscription = ConvertAndLoadRules(R"( -+ ||bttrack.com/pixel/$image,third-party -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://bttrack.com/Pixel/" -+ "cookiesync?source=14b8c562-d12b-418b-b680-ad517d5839ec"), -+ "super.abril.com.br", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_CaseSensitiveMatch) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /testfiles/match-case/static/*/abc.png$match-case -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://whatever.com/testfiles/match-case/static/path/abc.png"), -+ "abptestpages.org", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+ // Does not match if the case is different -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://whatever.com/testfiles/match-case/static/path/ABC.png"), -+ "abptestpages.org", ContentType::Image, SiteKey(), -+ FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_AllowlistThirdPartyFilter) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||amazon-adsystem.com^$third-party -+ @@||amazon-adsystem.com//ecm -+ @@||amazon-adsystem.com/ecm -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://s.amazon-adsystem.com//" -+ "ecm3?ex=visualiq&id=a78f7b3f-a525-45eb-a1ed-5eb5eab339af"), -+ "www.wwe.com", ContentType::Image, SiteKey(), FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilter_IgnoresInvalidFilterOption) { -+ auto subscription = ConvertAndLoadRules(R"( -+ @@||google.com/recaptcha/$csp,subdocument -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL(" https://www.google.com/recaptcha/api2/a"), "vidoza.net", -+ ContentType::Subdocument, SiteKey(), FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterException_Sitekey) { -+ auto subscription = ConvertAndLoadRules(R"( -+ @@$document,sitekey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANGtTstne7e8MbmDHDiMFkGbcuBgXmiVesGOG3gtYeM1EkrzVhBjGUvKXYE4GLFwqty3v5MuWWbvItUWBTYoVVsCAwEAAQ -+ )"); -+ -+ EXPECT_TRUE(subscription->HasSpecialFilter( -+ SpecialFilterType::Document, GURL("https://whatever.com"), "whatever.com", -+ SiteKey("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANGtTstne7e8MbmDHDiMFkGbcuBgXmiV" -+ "esGOG3gt" -+ "YeM1EkrzVhBjGUvKXYE4GLFwqty3v5MuWWbvItUWBTYoVVsCAwEAAQ"))); -+ // No allow rule without sitekey -+ EXPECT_FALSE(subscription->HasSpecialFilter(SpecialFilterType::Document, -+ GURL("https://whatever.com"), -+ "whatever.com", SiteKey())); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterException_Popup) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ! exceptions/popup -+ ||abptestpages.org/testfiles/popup_exception/link.html^$popup -+ @@||abptestpages.org/testfiles/popup_exception/link.html^$popup -+ )"); -+ -+ // Finds the blocking filter: -+ EXPECT_TRUE(subscription->HasPopupFilter( -+ GURL("https://abptestpages.org/testfiles/popup_exception/" -+ "link.html"), -+ "abptestpages.org", SiteKey(), FilterCategory::Blocking)); -+ -+ // But also finds the allowing filter: -+ EXPECT_TRUE(subscription->HasPopupFilter( -+ GURL("https://abptestpages.org/testfiles/popup_exception/" -+ "link.html"), -+ "abptestpages.org", SiteKey(), FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterException_XmlHttpRequest) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ! exceptions/xmlhttprequest -+ ||abptestpages.org/testfiles/xmlhttprequest_exception/* -+ @@abptestpages.org/testfiles/xmlhttprequest_exception/$xmlhttprequest -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/" -+ "xmlhttprequest_exception/link.html"), -+ "https://abptestpages.org", ContentType::Xmlhttprequest, SiteKey(), -+ FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterException_Ping) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ! exceptions/ping -+ abptestpages.org/*^$ping -+ @@abptestpages.org/en/exceptions/ping*^$ping -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/en/exceptions/ping/link.html"), -+ "https://abptestpages.org", ContentType::Ping, SiteKey(), -+ FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterException_Subdocument) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ! exceptions/subdocument -+ ||abptestpages.org/testfiles/subdocument_exception/* -+ @@abptestpages.org/testfiles/subdocument_exception/$subdocument -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/subdocument_exception/" -+ "link.html"), -+ "abptestpages.org", ContentType::Subdocument, SiteKey(), -+ FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterException_Script) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ! exceptions/script -+ ||abptestpages.org/testfiles/script_exception/* -+ @@abptestpages.org/testfiles/script_exception/$script -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/script_exception/" -+ "link.html"), -+ "abptestpages.org", ContentType::Script, SiteKey(), -+ FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterException_Image) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ! exceptions/image -+ ||abptestpages.org/testfiles/image_exception/* -+ @@abptestpages.org/testfiles/image_exception/$image -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/image_exception/" -+ "image.jpg"), -+ "abptestpages.org", ContentType::Image, SiteKey(), -+ FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterException_Stylesheet) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ! exceptions/stylesheet -+ ||abptestpages.org/testfiles/stylesheet_exception/* -+ @@abptestpages.org/testfiles/stylesheet_exception/$stylesheet -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter(GURL("https://abptestpages.org/" -+ "testfiles/stylesheet_exception/" -+ "style.css"), -+ "abptestpages.org", -+ ContentType::Stylesheet, SiteKey(), -+ FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterException_WebSocket) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ! exceptions/websocket -+ $websocket,domain=abptestpages.org -+ @@$websocket,domain=abptestpages.org -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://whatever.org/socket.wss"), "abptestpages.org", -+ ContentType::Websocket, SiteKey(), FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlRegexAnythingEndingOnline) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /^https?:\/\/.*\.(onlineee|online|)\/.*/$domain=hclips.com -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://moneypunchstep.online/saber/ball/nomad/"), "hclips.com", -+ ContentType::Subdocument, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterRegexContains$WithFilterOptions) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /^https?:\/\/cdn\.[0-9a-z]{3,6}\.xyz\/[a-z0-9]{8,}\.js$/$script,third-party -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://cdn.what.xyz/adsertscript.js"), "domain.com", -+ ContentType::Script, SiteKey(), FilterCategory::Blocking)); -+ -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://cdn.what.xyz/adsertscript.js"), "domain.com", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterRegexContains$WithoutFilterOption) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /^https?:\/\/cdn\.[0-9a-z]{3,6}\.xyz\/[a-z0-9]{8,}\.js$/ -+ )"); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://cdn.what.xyz/adsertscript.js"), "domain.com", -+ ContentType::Script, SiteKey(), FilterCategory::Blocking)); -+ -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://cdn.what.xyz/adsertscript.js"), "domain.com", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+// TODO generic block filters may soon be removed from the ContentType enum and -+// handled internally. -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterException_GenericBlock) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ! exceptions/genericblock -+ /testfiles/genericblock/generic.png -+ /testfiles/genericblock/specific.png$domain=abptestpages.org -+ @@||abptestpages.org/en/exceptions/genericblock$genericblock -+ )"); -+ -+ EXPECT_TRUE(subscription->HasSpecialFilter( -+ SpecialFilterType::Genericblock, -+ GURL("https://abptestpages.org/en/exceptions/genericblock"), -+ "abptestpages.org", SiteKey())); -+ // Since there is a genericblock rule for this parent, we would search for -+ // specific-only rules -+ // The rule /testfiles/genericblock/generic.png does not apply as it is not -+ // domain-specific: -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/genericblock/" -+ "generic.png"), -+ "abptestpages.org", ContentType::Image, SiteKey(), -+ FilterCategory::DomainSpecificBlocking)); -+ // The rule -+ // /testfiles/genericblock/specific.png$domain=abptestpages.org -+ // applies: -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://abptestpages.org/testfiles/genericblock/" -+ "specific.png"), -+ "abptestpages.org", ContentType::Image, SiteKey(), -+ FilterCategory::DomainSpecificBlocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ UrlFilterException_DomainSpecificExclusion) { -+ auto subscription = ConvertAndLoadRules(R"( -+||media.net^$third-party -+@@||media.net^$document -+@@||media.net^$third-party,domain=~fandom.com -+@@||contextual.media.net/bidexchange.js -+ )"); -+ -+ // This reflects a bug squished IRL: -+ // the URL is blocked by ||media.net^$third-party and should NOT be allowed -+ // by any of the allow rules because: -+ // 1. It's not a DOCUMENT type -+ // 2. The third-party allow rule does not apply on roblox.fandom.com -+ // 3. bidexchange.js is a path allowed only for a different page -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://hbx.media.net/bidexchange.js?cid=8CUDYP2MO&version=6.1"), -+ "roblox.fandom.com", ContentType::Script, SiteKey(), -+ FilterCategory::Blocking)); -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://hbx.media.net/bidexchange.js?cid=8CUDYP2MO&version=6.1"), -+ "roblox.fandom.com", ContentType::Script, SiteKey(), -+ FilterCategory::Allowing)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterWithHashSign) { -+ auto subscription = ConvertAndLoadRules(R"( -+ @@||search.twcc.com/#web/$elemhide -+ )"); -+ -+ EXPECT_TRUE(subscription->HasSpecialFilter( -+ SpecialFilterType::Elemhide, GURL("https://search.twcc.com/#web/"), "", -+ SiteKey())); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, CspFilterForUrl) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$csp=script-src 'self' -+ )"); -+ -+ std::set filters1; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "test.com", FilterCategory::Blocking, filters1); -+ EXPECT_THAT(filters1, testing::UnorderedElementsAre("script-src 'self'")); -+ -+ // Different URL, not found. -+ std::set filters2; -+ subscriptions->FindCspFilters(GURL("https://test.org/resource.jpg"), -+ "test.com", FilterCategory::Blocking, filters2); -+ EXPECT_TRUE(filters2.empty()); -+ -+ // Allowing filter, not found. -+ std::set filters3; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "test.com", FilterCategory::Allowing, filters3); -+ EXPECT_TRUE(filters3.empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, MultipleCspFiltersForUrl) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$csp=script-src 'first' -+ test.com^$csp=script-src 'second' -+ )"); -+ -+ std::set filters1; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "test.com", FilterCategory::Blocking, filters1); -+ EXPECT_THAT(filters1, testing::UnorderedElementsAre( -+ base::StringPiece("script-src 'first'"), -+ base::StringPiece("script-src 'second'"))); -+ -+ // Different URL, not found. -+ std::set filters2; -+ subscriptions->FindCspFilters(GURL("https://test.org/resource.jpg"), -+ "test.com", FilterCategory::Blocking, filters2); -+ EXPECT_TRUE(filters2.empty()); -+ -+ // Allowing filter, not found. -+ std::set filters3; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "test.com", FilterCategory::Allowing, filters3); -+ EXPECT_TRUE(filters3.empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, CspFilterForDomain) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ $csp=script-src 'self' '*' 'unsafe-inline',domain=dom_a.com|dom_b.com -+ )"); -+ -+ std::set filters1; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "dom_b.com", FilterCategory::Blocking, -+ filters1); -+ EXPECT_THAT(filters1, testing::UnorderedElementsAre( -+ "script-src 'self' '*' 'unsafe-inline'")); -+ -+ std::set filters2; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "dom_a.com", FilterCategory::Blocking, -+ filters2); -+ EXPECT_THAT(filters2, testing::UnorderedElementsAre( -+ "script-src 'self' '*' 'unsafe-inline'")); -+ -+ std::set filters3; -+ subscriptions->FindCspFilters(GURL("https://dom_a.com/resource.jpg"), -+ "test.com", FilterCategory::Blocking, filters3); -+ EXPECT_TRUE(filters3.empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, AllowingCspFilterNoPayload) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$csp=script-src 'self' -+ @@test.com^$csp -+ )"); -+ -+ std::set blocking_filters; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "test.com", FilterCategory::Blocking, -+ blocking_filters); -+ EXPECT_THAT(blocking_filters, -+ testing::UnorderedElementsAre("script-src 'self'")); -+ -+ // Allowing filter is found, with an empty payload. -+ std::set allowing_filters; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "test.com", FilterCategory::Allowing, -+ allowing_filters); -+ EXPECT_THAT(allowing_filters, testing::UnorderedElementsAre("")); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, AllowingCspFilterWithPayload) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$csp=script-src 'self' -+ @@test.com^$csp=script-src 'self' -+ )"); -+ -+ std::set blocking_filters; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "test.com", FilterCategory::Blocking, -+ blocking_filters); -+ EXPECT_THAT(blocking_filters, -+ testing::UnorderedElementsAre("script-src 'self'")); -+ -+ // Allowing filter is found, with payload. -+ std::set allowing_filters; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "test.com", FilterCategory::Allowing, -+ allowing_filters); -+ EXPECT_THAT(allowing_filters, -+ testing::UnorderedElementsAre("script-src 'self'")); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, MultipleAllowingCspFiltersWithPayload) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$csp=script-src 'self' -+ @@test.com^$csp=script-src 'first' -+ @@test.com^$csp=script-src 'second' -+ )"); -+ -+ std::set expected_blocking{"script-src 'self'"}; -+ -+ std::set blocking_filters; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "test.com", FilterCategory::Blocking, -+ blocking_filters); -+ EXPECT_EQ(expected_blocking, blocking_filters); -+ -+ // Allowing filter is found, with payload. -+ std::set expected_allowing{"script-src 'first'", -+ "script-src 'second'"}; -+ -+ std::set allowing_filters; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "test.com", FilterCategory::Allowing, -+ allowing_filters); -+ EXPECT_EQ(expected_allowing, allowing_filters); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, DomainSpecificOnlyCspFilter) { -+ // This filter is not domain-specific. -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$csp=script-src 'self' -+ )"); -+ -+ // It's not found when domain_specific_only = true. -+ std::set results; -+ subscriptions->FindCspFilters( -+ GURL("https://test.com/resource.jpg"), "test.com", -+ FilterCategory::DomainSpecificBlocking, results); -+ EXPECT_TRUE(results.empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, ThirdPartyCspFilters) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ only-third.com^$csp=only-third,third-party -+ never-third.com^$csp=never-third,~third-party -+ )"); -+ -+ // only-third is only found when the URL is from a different domain. -+ -+ std::set filters1; -+ subscriptions->FindCspFilters(GURL("https://only-third.com/resource.jpg"), -+ "only-third.com", FilterCategory::Blocking, -+ filters1); -+ EXPECT_TRUE(filters1.empty()); -+ -+ // never-third is only found when the URL is from the same domain. -+ std::set filters2; -+ subscriptions->FindCspFilters(GURL("https://never-third.com/resource.jpg"), -+ "never-third.com", FilterCategory::Blocking, -+ filters2); -+ EXPECT_THAT(filters2, testing::UnorderedElementsAre("never-third")); -+ -+ std::set results3; -+ subscriptions->FindCspFilters(GURL("https://never-third.com/resource.jpg"), -+ "different.com", FilterCategory::Blocking, -+ results3); -+ EXPECT_TRUE(results3.empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, BlockingCspFilterWithoutPayloadIgnored) { -+ // It's impossible to say what CSP header should be injected if the filter -+ // doesn't specify. -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$csp -+ )"); -+ -+ std::set results; -+ subscriptions->FindCspFilters(GURL("https://test.com/resource.jpg"), -+ "test.com", FilterCategory::Blocking, results); -+ EXPECT_TRUE(results.empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteEmpty) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ||adform.net/banners/scripts/adx.js$domain=adform.net,rewrite= -+ ||adform.net/banners/scripts/adx.js$domain=adform.net,rewrite -+ )"); -+ EXPECT_TRUE(subscriptions -+ ->FindRewriteFilters( -+ GURL("https://adform.net/banners/scripts/adx.js"), -+ "adform.net", FilterCategory::Blocking) -+ .empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteDomain) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ||adform.net/banners/scripts/adx.css$domain=delfi.lt,rewrite=abp-resource:blank-css -+ )"); -+ EXPECT_EQ(*subscriptions -+ ->FindRewriteFilters( -+ GURL("https://adform.net/banners/scripts/adx.css"), -+ "delfi.lt", FilterCategory::Blocking) -+ .begin(), -+ "data:text/css,"); -+ EXPECT_EQ(*subscriptions -+ ->FindRewriteFilters( -+ GURL("https://adform.net/banners/scripts/adx.css"), -+ "delfi.lt", FilterCategory::DomainSpecificBlocking) -+ .begin(), -+ "data:text/css,"); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteFirstParty) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ||adform.net/banners/scripts/adx.css$rewrite=abp-resource:blank-css,~third-party -+ )"); -+ EXPECT_EQ(*subscriptions -+ ->FindRewriteFilters( -+ GURL("https://adform.net/banners/scripts/adx.css"), -+ "adform.net", FilterCategory::Blocking) -+ .begin(), -+ "data:text/css,"); -+ EXPECT_TRUE(subscriptions -+ ->FindRewriteFilters( -+ GURL("https://adform.net/banners/scripts/adx.css"), -+ "adform.net", FilterCategory::DomainSpecificBlocking) -+ .empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteFirstPartyDomainNotMatching) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ||adform.net/banners/scripts/adx.css$rewrite=abp-resource:blank-css,~third-party -+ )"); -+ EXPECT_TRUE(subscriptions -+ ->FindRewriteFilters( -+ GURL("https://adform.net/banners/scripts/adx.css"), -+ "example.com", FilterCategory::Blocking) -+ .empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteFirstPartyAndDomain) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ||adform.net/banners/scripts/adx.js$domain=adform.net,rewrite=abp-resource:blank-js,~third-party -+ )"); -+ EXPECT_EQ(*subscriptions -+ ->FindRewriteFilters( -+ GURL("https://adform.net/banners/scripts/adx.js"), -+ "adform.net", FilterCategory::Blocking) -+ .begin(), -+ "data:application/javascript,"); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteWrongResource) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ||adform.net/banners/scripts/adx.js$domain=delfi.lt,rewrite=abp-resource:blank-xxx -+ )"); -+ EXPECT_TRUE(subscriptions -+ ->FindRewriteFilters( -+ GURL("https://adform.net/banners/scripts/adx.js"), -+ "delfi.lt", FilterCategory::Blocking) -+ .empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteWrongScheme) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ||adform.net/banners/scripts/adx.js$domain=delfi.lt,rewrite=about::blank -+ )"); -+ EXPECT_TRUE(subscriptions -+ ->FindRewriteFilters( -+ GURL("https://adform.net/banners/scripts/adx.js"), -+ "delfi.lt", FilterCategory::Blocking) -+ .empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteStar) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ *$domain=delfi.lt,rewrite=abp-resource:blank-html -+ )"); -+ EXPECT_EQ( -+ *subscriptions -+ ->FindRewriteFilters( -+ GURL("https://adform.net/banners/scripts/adx.html"), "delfi.lt", -+ FilterCategory::Blocking) -+ .begin(), -+ "data:text/html,"); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteWrongStar) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ *test.com$domain=delfi.lt,rewrite=abp-resource:blank-html -+ )"); -+ EXPECT_TRUE(subscriptions -+ ->FindRewriteFilters(GURL("https://test.com/ad.html"), -+ "delfi.lt", FilterCategory::Blocking) -+ .empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteStrict) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com$domain=delfi.lt,rewrite=abp-resource:blank-html -+ )"); -+ EXPECT_TRUE(subscriptions -+ ->FindRewriteFilters(GURL("https://test.com/ad.html"), -+ "delfi.lt", FilterCategory::Blocking) -+ .empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteNoDomain) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ||test.com$rewrite=abp-resource:blank-html -+ )"); -+ EXPECT_TRUE(subscriptions -+ ->FindRewriteFilters(GURL("https://test.com/ad.html"), -+ "test.com", FilterCategory::Blocking) -+ .empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteExcludeDomain) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ ||test.com$domain=~delfi.lt,rewrite=abp-resource:blank-html -+ )"); -+ EXPECT_TRUE(subscriptions -+ ->FindRewriteFilters(GURL("https://test.com/ad.html"), -+ "test.com", FilterCategory::Blocking) -+ .empty()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RewriteAllowedFilter) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ @@||adform.net/banners/scripts/adx.css$domain=delfi.lt,rewrite=abp-resource:blank-css -+ )"); -+ EXPECT_EQ(*subscriptions -+ ->FindRewriteFilters( -+ GURL("https://adform.net/banners/scripts/adx.css"), -+ "delfi.lt", FilterCategory::Allowing) -+ .begin(), -+ "data:text/css,"); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, HeaderFilterIgnoredForNonpriviledged) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$header=X-Frame-Options=sameorigin -+ )", -+ {}, false); -+ -+ std::set blocking_filters{}; -+ subscriptions->FindHeaderFilters(GURL("https://test.com/resource.jpg"), -+ ContentType::Image, "test.com", -+ FilterCategory::Blocking, blocking_filters); -+ EXPECT_EQ(0u, blocking_filters.size()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ BlockingHeaderFilterWithoutPayloadIgnored) { -+ // It's impossible to say if request should be blocked if the filter -+ // doesn't specify disallowed header. -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$header -+ )", -+ {}, true); -+ -+ std::set blocking_filters{}; -+ subscriptions->FindHeaderFilters(GURL("https://test.com/resource.jpg"), -+ ContentType::Image, "test.com", -+ FilterCategory::Blocking, blocking_filters); -+ EXPECT_EQ(0u, blocking_filters.size()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, HeaderFilterForUrl) { -+ GURL subscription_url{"url.com"}; -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$header=X-Frame-Options=sameorigin -+ )", -+ {}, true); -+ std::set blocking_filters{}; -+ subscriptions->FindHeaderFilters(GURL("https://test.com/resource.jpg"), -+ ContentType::Image, "test.com", -+ FilterCategory::Blocking, blocking_filters); -+ ASSERT_EQ(1u, blocking_filters.size()); -+ EXPECT_TRUE( -+ blocking_filters.count({"X-Frame-Options=sameorigin", subscription_url})); -+ -+ blocking_filters.clear(); -+ // Different URL, not found. -+ subscriptions->FindHeaderFilters(GURL("https://test.org/resource.jpg"), -+ ContentType::Image, "test.com", -+ FilterCategory::Blocking, blocking_filters); -+ EXPECT_EQ(0u, blocking_filters.size()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, NoDomainSpecificHeaderFilter) { -+ // This filter is not domain-specific. -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$header=X-Frame-Options=sameorigin -+ )", -+ {}, true); -+ -+ std::set blocking_filters{}; -+ // It's not found when domain_specific_only = true. -+ subscriptions->FindHeaderFilters( -+ GURL("https://test.com/resource.jpg"), ContentType::Image, "test.com", -+ FilterCategory::DomainSpecificBlocking, blocking_filters); -+ EXPECT_EQ(0u, blocking_filters.size()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, DomainSpecificHeaderFilter) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ $header=X-Frame-Options=sameorigin,domain=dom_a.com|dom_b.com -+ )", -+ {}, true); -+ -+ std::set blocking_filters{}; -+ subscriptions->FindHeaderFilters( -+ GURL("https://test.com/resource.jpg"), ContentType::Image, "dom_b.com", -+ FilterCategory::DomainSpecificBlocking, blocking_filters); -+ ASSERT_EQ(1u, blocking_filters.size()); -+ EXPECT_TRUE(blocking_filters.count({"X-Frame-Options=sameorigin", GURL()})); -+ -+ blocking_filters.clear(); -+ subscriptions->FindHeaderFilters( -+ GURL("https://test.com/resource.jpg"), ContentType::Image, "dom_a.com", -+ FilterCategory::DomainSpecificBlocking, blocking_filters); -+ ASSERT_EQ(1u, blocking_filters.size()); -+ EXPECT_TRUE(blocking_filters.count({"X-Frame-Options=sameorigin", GURL()})); -+ -+ blocking_filters.clear(); -+ subscriptions->FindHeaderFilters( -+ GURL("https://dom_a.com/resource.jpg"), ContentType::Image, "test.com", -+ FilterCategory::DomainSpecificBlocking, blocking_filters); -+ EXPECT_EQ(0u, blocking_filters.size()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, HeaderFilterForSpecificResource) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$script,header=X-Frame-Options=sameorigin -+ )", -+ {}, true); -+ -+ std::set blocking_filters{}; -+ subscriptions->FindHeaderFilters(GURL("https://test.com/resource.js"), -+ ContentType::Script, "test.com", -+ FilterCategory::Blocking, blocking_filters); -+ ASSERT_EQ(1u, blocking_filters.size()); -+ EXPECT_TRUE(blocking_filters.count({"X-Frame-Options=sameorigin", GURL()})); -+ -+ blocking_filters.clear(); -+ subscriptions->FindHeaderFilters(GURL("https://dom_a.com/resource.jpg"), -+ ContentType::Image, "test.com", -+ FilterCategory::Blocking, blocking_filters); -+ EXPECT_EQ(0u, blocking_filters.size()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ HeaderFilterForMultipleSpecificResources) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$script,header=X-Frame-Options=sameorigin -+ test.com^$xmlhttprequest,header=X-Frame-Options=sameorigin -+ )", -+ {}, true); -+ -+ std::set blocking_filters{}; -+ subscriptions->FindHeaderFilters(GURL("https://test.com/resource.js"), -+ ContentType::Script, "test.com", -+ FilterCategory::Blocking, blocking_filters); -+ ASSERT_EQ(1u, blocking_filters.size()); -+ EXPECT_TRUE(blocking_filters.count({"X-Frame-Options=sameorigin", GURL()})); -+ -+ blocking_filters.clear(); -+ subscriptions->FindHeaderFilters(GURL("https://test.com/resource.xml"), -+ ContentType::Xmlhttprequest, "test.com", -+ FilterCategory::Blocking, blocking_filters); -+ ASSERT_EQ(1u, blocking_filters.size()); -+ EXPECT_TRUE(blocking_filters.count({"X-Frame-Options=sameorigin", GURL()})); -+ -+ blocking_filters.clear(); -+ subscriptions->FindHeaderFilters(GURL("https://dom_a.com/resource.jpg"), -+ ContentType::Image, "test.com", -+ FilterCategory::Blocking, blocking_filters); -+ EXPECT_EQ(0u, blocking_filters.size()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, HeaderFilterWithComma) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$script,header=X-Frame-Options=same\x2corigin -+ )", -+ {}, true); -+ -+ std::set blocking_filters{}; -+ subscriptions->FindHeaderFilters(GURL("https://test.com/resource.js"), -+ ContentType::Script, "test.com", -+ FilterCategory::Blocking, blocking_filters); -+ ASSERT_EQ(1u, blocking_filters.size()); -+ EXPECT_TRUE(blocking_filters.count({"X-Frame-Options=same,origin", GURL()})); -+ EXPECT_TRUE( -+ blocking_filters.count({"X-Frame-Options=same\x2corigin", GURL()})); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, HeaderFilterWithx2cAsPartOfFilter) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ test.com^$script,header=X-Frame-Options=same\\x2corigin -+ )", -+ {}, true); -+ -+ std::set blocking_filters{}; -+ subscriptions->FindHeaderFilters(GURL("https://test.com/resource.js"), -+ ContentType::Script, "test.com", -+ FilterCategory::Blocking, blocking_filters); -+ ASSERT_EQ(1u, blocking_filters.size()); -+ // This count "X-Frame-Options=same\x2corigin" occurrences, extra \ is -+ // omitted during string consctruction -+ EXPECT_TRUE( -+ blocking_filters.count({"X-Frame-Options=same\\x2corigin", GURL()})); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, AllowingHeaderFilterNoPayload) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ @@test.com^$header -+ )", -+ {}, true); -+ -+ // Allowing filter is found, with an empty payload. -+ std::set allowing_filters{}; -+ subscriptions->FindHeaderFilters(GURL("https://test.com/resource.jpg"), -+ ContentType::Image, "test.com", -+ FilterCategory::Allowing, allowing_filters); -+ ASSERT_EQ(1u, allowing_filters.size()); -+ EXPECT_TRUE(allowing_filters.count({"", GURL()})); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, AllowingHeaderFilterWithPayload) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ @@test.com^$header=X-Frame-Options=value1 -+ )", -+ {}, true); -+ -+ std::set allowing_filters{}; -+ subscriptions->FindHeaderFilters(GURL("https://test.com/resource.jpg"), -+ ContentType::Image, "test.com", -+ FilterCategory::Allowing, allowing_filters); -+ ASSERT_EQ(1u, allowing_filters.size()); -+ EXPECT_TRUE(allowing_filters.count({"X-Frame-Options=value1", GURL()})); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, -+ AllowingHeaderFilterForSpecificResource) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ @@test.com^$script,header=X-Frame-Options=sameorigin -+ )", -+ {}, true); -+ -+ std::set allowing_filters{}; -+ subscriptions->FindHeaderFilters(GURL("https://test.com/resource.js"), -+ ContentType::Script, "test.com", -+ FilterCategory::Allowing, allowing_filters); -+ ASSERT_EQ(1u, allowing_filters.size()); -+ EXPECT_TRUE(allowing_filters.count({"X-Frame-Options=sameorigin", GURL()})); -+ -+ allowing_filters.clear(); -+ subscriptions->FindHeaderFilters(GURL("https://test.com/resource.jpg"), -+ ContentType::Image, "test.com", -+ FilterCategory::Allowing, allowing_filters); -+ ASSERT_EQ(0u, allowing_filters.size()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, ThirdPartyHeaderFilters) { -+ auto subscriptions = ConvertAndLoadRules(R"( -+ only-third.com^$header=only-third,third-party -+ never-third.com^$header=never-third,~third-party -+ )", -+ {}, true); -+ -+ std::set blocking_filters{}; -+ // only-third is only found when the URL is from a different domain. -+ subscriptions->FindHeaderFilters(GURL("https://only-third.com/resource.jpg"), -+ ContentType::Image, "different.com", -+ FilterCategory::Blocking, blocking_filters); -+ ASSERT_EQ(1u, blocking_filters.size()); -+ EXPECT_TRUE(blocking_filters.count({"only-third", GURL()})); -+ -+ blocking_filters.clear(); -+ subscriptions->FindHeaderFilters(GURL("https://only-third.com/resource.jpg"), -+ ContentType::Image, "only-third.com", -+ FilterCategory::Blocking, blocking_filters); -+ EXPECT_EQ(0u, blocking_filters.size()); -+ -+ // never-third is only found when the URL is from the same domain. -+ blocking_filters.clear(); -+ subscriptions->FindHeaderFilters(GURL("https://never-third.com/resource.jpg"), -+ ContentType::Image, "never-third.com", -+ FilterCategory::Blocking, blocking_filters); -+ ASSERT_EQ(1u, blocking_filters.size()); -+ EXPECT_TRUE(blocking_filters.count({"never-third", GURL()})); -+ -+ blocking_filters.clear(); -+ subscriptions->FindHeaderFilters(GURL("https://never-third.com/resource.jpg"), -+ ContentType::Image, "different.com", -+ FilterCategory::Blocking, blocking_filters); -+ EXPECT_EQ(0u, blocking_filters.size()); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, UrlFilterWildcardUrlShortKeywords) { -+ auto subscription = ConvertAndLoadRules(R"( -+ /test*iles/a/b.png -+ /test*iles/a/b.js -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://domain.com/testfiles/a/b.png"), "domain.com", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://domain.com/testfiles/a/b.js"), "domain.com", -+ ContentType::Script, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, RegexFilterNotLowercased) { -+ // \D+ matches "not digits", while \d+ matches "digits": -+ auto subscription = ConvertAndLoadRules(R"( -+ /test\D+.png/ -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter(GURL("https://domain.com/testabc.png"), -+ "domain.com", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+ -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("https://domain.com/test123.png"), "domain.com", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, PipeInURL) { -+ // See: https://github.com/gatling/gatling/issues/1272 -+ // These | characters in the middle of the filter should match the literal -+ // | characters in the URL, not be treated as anchors. -+ auto subscription = ConvertAndLoadRules(R"( -+ /addyn|*|adtech; -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://adserver.adtech.de/" -+ "addyn|3.0|296|3872016|0|16|ADTECH;loc=100;target=_blank;misc=" -+ "1043156433;rdclick=http://ba.ccm2.net/RealMedia/ads/click_lx.ads/" -+ "fr_ccm_hightech/news/L20/1043156433/Position3/OasDefault/" -+ "autopromo_keljob_ccm/autopromo_kelformation_1_ccm.html/" -+ "574b7276735648616451774141686f70?"), -+ "domain.com", ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, MultiplePipeCharacters) { -+ // This filter combines | characters used as: -+ // - host anchor -+ // - normal text character -+ // - right anchor -+ auto subscription = ConvertAndLoadRules(R"( -+ ||example.com/abc|def*.jpg| -+ )"); -+ -+ // Correct match. -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("http://subdomain.example.com/abc|def/content.jpg"), "domain.com", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+ -+ // Incorrect, the URL does not end with .jpg, although .jpg occurs in the URL. -+ // Right anchor constraint not met. -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("http://subdomain.example.com/abc|def/file.jpg/content"), -+ "domain.com", ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+ -+ // Incorrect, the URL does not start with a subdomain of example.com. -+ // Host anchor constraint not met. -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("http://notexample.com/abc|def/content.jpg"), "domain.com", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+ -+ // Incorrect, the URL does not contain the | in the text. -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("http://subdomain.example.com/abc/def/content.jpg"), "domain.com", -+ ContentType::Image, SiteKey(), FilterCategory::Blocking)); -+} -+ -+TEST_F(AdblockFlatbufferConverterTest, PipeEndsFilter) { -+ auto subscription = ConvertAndLoadRules(R"( -+ example*| -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter(GURL("http://example.com/"), -+ "domain.com", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+// See DPD-1913 -+TEST_F(AdblockFlatbufferConverterTest, InvalidFilterDoesNotCrashParser) { -+ auto subscription = ConvertAndLoadRules(R"( -+ || -+ | -+ )"); -+ // Filters are too short and were rejected by parser. -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("http://example.com/content.jpg"), "example.com", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+// See DPD-1978 -+TEST_F(AdblockFlatbufferConverterTest, DomainSpecificSinglePipe) { -+ auto subscription = ConvertAndLoadRules(R"( -+ |$domain=example.com -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter(GURL("http://example.com/content.jpg"), -+ "example.com", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("http://example.com/content.jpg"), "example.net", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+// See DPD-1978 -+TEST_F(AdblockFlatbufferConverterTest, DomainSpecificSinglePipeWithWildcard) { -+ auto subscription = ConvertAndLoadRules(R"( -+ |*$domain=example.com -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter(GURL("http://example.com/content.jpg"), -+ "example.com", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("http://example.com/content.jpg"), "example.net", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+// See DPD-1978 -+TEST_F(AdblockFlatbufferConverterTest, DomainSpecificDoublePipe) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||$domain=example.com -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter(GURL("http://example.com/content.jpg"), -+ "example.com", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("http://example.com/content.jpg"), "example.net", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+// See DPD-1978 -+TEST_F(AdblockFlatbufferConverterTest, DomainSpecificDoublePipeWithWildcard) { -+ auto subscription = ConvertAndLoadRules(R"( -+ ||*$domain=example.com -+ )"); -+ EXPECT_TRUE(subscription->HasUrlFilter(GURL("http://example.com/content.jpg"), -+ "example.com", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+ EXPECT_FALSE(subscription->HasUrlFilter( -+ GURL("http://example.com/content.jpg"), "example.net", ContentType::Image, -+ SiteKey(), FilterCategory::Blocking)); -+} -+ -+// TODO(mpawlowski) support multiple CSP filters per URL + frame hierarchy: -+// DPD-1145. -+ -+} // namespace adblock -diff --git a/components/adblock/core/features.cc b/components/adblock/core/features.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/features.cc -@@ -0,0 +1,25 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/features.h" -+ -+namespace adblock { -+ -+const base::Feature kAdblockPlusFeature{"AdblockPlus", -+ base::FEATURE_ENABLED_BY_DEFAULT}; -+ -+} -diff --git a/components/adblock/core/features.h b/components/adblock/core/features.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/features.h -@@ -0,0 +1,31 @@ -+ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_FEATURES_H_ -+#define COMPONENTS_ADBLOCK_CORE_FEATURES_H_ -+ -+#include "base/feature_list.h" -+ -+namespace adblock { -+ -+// Controls whether ad-blocking feature is enabled. -+extern const base::Feature kAdblockPlusFeature; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_FEATURES_H_ -diff --git a/components/adblock/core/schema/filter_list_schema.fbs b/components/adblock/core/schema/filter_list_schema.fbs -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/schema/filter_list_schema.fbs -@@ -0,0 +1,165 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+namespace adblock.flat; -+file_identifier "ABP2"; -+ -+// Filter types -+// ============ -+ -+enum AbpResource: byte { -+ BlankText, -+ BlankCss, -+ BlankJs, -+ BlankHtml, -+ BlankMp3, -+ BlankMp4, -+ TransparentGif1x1, -+ TransparentPng2x2, -+ TransparentPng3x2, -+ TransparentPng32x32 -+} -+ -+table Rewrite { -+ replace_with: AbpResource; -+} -+ -+table Header { -+ header: string (required); -+ pattern: string; -+} -+ -+enum ThirdParty: byte { -+ Ignore, -+ FirstPartyOnly, -+ ThirdPartyOnly, -+} -+ -+enum ResourceType: uint32 { -+ Other = 1, -+ Script = 2, -+ Image = 4, -+ Stylesheet = 8, -+ Object = 16, -+ Subdocument = 32, -+ WebSocket = 128, -+ WebRtc = 256, -+ Ping = 1024, -+ XmlHttpRequest = 2048, -+ Media = 16384, -+ Font = 32768, -+ WebBundle = 65536 -+} -+ -+// usage note: you figure out if this is blocking or allowing based on if -+// it's stored in a 'block' or 'allow' list. -+table UrlFilter { -+ filter_text: string; -+ pattern: string (required); -+ match_case: bool; -+ resource_type: uint32; // this is a bitset mask of ResourceTypes -+ third_party: ThirdParty = Ignore; -+ sitekeys: [string]; -+ include_domains: [string]; -+ exclude_domains: [string]; -+ rewrite: Rewrite; -+ csp_filter: string; -+ header_filter: string; -+ header: Header; -+} -+ -+// usage note: you figure out if this is blocking or allowing based on if -+// it's stored in a 'block' or 'allow' list. You also need to use -+// where it's stored to determine its domains, and whether it needs elem -+// hide emulation or not. -+table ElemHideFilter { -+ filter_text: string; -+ selector: string (required); -+ exclude_domains: [string]; -+} -+ -+table SnippetFunctionCall { -+ command: string (required); -+ arguments: [string]; -+} -+ -+table SnippetFilter { -+ filter_text: string; -+ exclude_domains: [string]; -+ script: [SnippetFunctionCall]; -+} -+ -+ -+// Indexes -+// ======= -+ -+table UrlFiltersByKeyword { -+ keyword: string (key); -+ filter: [UrlFilter]; -+} -+ -+// encoder note: the same ElemHideFilter may appear in multiple -+// domains. Ensure that the same offset is stored rather than reencoding -+// the filter multiple times. -+table ElemHideFiltersByDomain { -+ domain: string (key); -+ filter: [ElemHideFilter]; -+} -+ -+// encoder note: the same SnippetFilter may appear in multiple -+// domains. Ensure that the same offset is stored rather than reencoding -+// the filter multiple times. -+table SnippetFiltersByDomain { -+ domain: string (key); -+ filter: [SnippetFilter]; -+} -+ -+ -+// Root -+// ==== -+ -+table SubscriptionMetadata { -+ flatbuffers_schema_version: string; -+ url: string; -+ homepage: string; -+ title: string; -+ version: string; -+ expires: uint64; -+} -+ -+table Subscription { -+ metadata: SubscriptionMetadata; -+ url_subresource_block: [UrlFiltersByKeyword]; -+ url_subresource_allow: [UrlFiltersByKeyword]; -+ url_popup_block: [UrlFiltersByKeyword]; -+ url_popup_allow: [UrlFiltersByKeyword]; -+ url_document_allow: [UrlFiltersByKeyword]; -+ url_elemhide_allow: [UrlFiltersByKeyword]; -+ url_generichide_allow: [UrlFiltersByKeyword]; -+ url_genericblock_allow: [UrlFiltersByKeyword]; -+ url_csp_block: [UrlFiltersByKeyword]; -+ url_csp_allow: [UrlFiltersByKeyword]; -+ url_rewrite_block: [UrlFiltersByKeyword]; -+ url_rewrite_allow: [UrlFiltersByKeyword]; -+ url_header_block: [UrlFiltersByKeyword]; -+ url_header_allow: [UrlFiltersByKeyword]; -+ elemhide: [ElemHideFiltersByDomain]; -+ elemhide_emulation: [ElemHideFiltersByDomain]; -+ elemhide_exception: [ElemHideFiltersByDomain]; -+ snippet: [SnippetFiltersByDomain]; -+} -+ -+root_type Subscription; -diff --git a/components/adblock/core/session_stats.h b/components/adblock/core/session_stats.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/session_stats.h -@@ -0,0 +1,42 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_SESSION_STATS_H_ -+#define COMPONENTS_ADBLOCK_CORE_SESSION_STATS_H_ -+ -+#include -+ -+#include "components/keyed_service/core/keyed_service.h" -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+/** -+ * @brief Stores statistics about blocked and allowed URLs -+ * in current session (runtime). -+ * Lives in the UI thread. -+ */ -+class SessionStats : public KeyedService { -+ public: -+ virtual std::map GetSessionAllowedAdsCount() const = 0; -+ -+ virtual std::map GetSessionBlockedAdsCount() const = 0; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_SESSION_STATS_H_ -diff --git a/components/adblock/core/sitekey_storage.h b/components/adblock/core/sitekey_storage.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/sitekey_storage.h -@@ -0,0 +1,53 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_H_ -+#define COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_H_ -+ -+#include -+ -+#include "absl/types/optional.h" -+#include "components/adblock/core/common/sitekey.h" -+#include "components/keyed_service/core/keyed_service.h" -+#include "net/http/http_response_headers.h" -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+/** -+ * @brief Parses response headers in search for AdblockPlus sitekeys and stores -+ * them. -+ * Some filters can only be applied on pages that provide a valid sitekey. -+ * Storage is not persistent. -+ * Lives in the UI thread. -+ */ -+class SitekeyStorage : public KeyedService { -+ public: -+ // Attempts to extract a sitekey from |headers|. If successful, the sitekey -+ // is added to storage and can be retrieved by |FindSiteKeyForAnyUrl|. -+ virtual void ProcessResponseHeaders( -+ const GURL& request_url, -+ const scoped_refptr& headers, -+ const std::string& user_agent) = 0; -+ -+ virtual absl::optional> FindSiteKeyForAnyUrl( -+ const std::vector& urls) const = 0; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_H_ -diff --git a/components/adblock/core/sitekey_storage_impl.cc b/components/adblock/core/sitekey_storage_impl.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/sitekey_storage_impl.cc -@@ -0,0 +1,146 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/sitekey_storage_impl.h" -+ -+#include "absl/types/optional.h" -+#include "base/base64.h" -+#include "base/logging.h" -+#include "base/trace_event/trace_event.h" -+#include "components/adblock/core/common/adblock_utils.h" -+#include "crypto/openssl_util.h" -+#include "crypto/signature_verifier.h" -+ -+namespace adblock { -+ -+SitekeyStorageImpl::SitekeyStorageImpl() { -+ crypto::EnsureOpenSSLInit(); -+} -+ -+SitekeyStorageImpl::~SitekeyStorageImpl() = default; -+ -+void SitekeyStorageImpl::ProcessResponseHeaders( -+ const GURL& request_url, -+ const scoped_refptr& headers, -+ const std::string& user_agent) { -+ if (user_agent.empty()) { -+ LOG(WARNING) << "[eyeo] No user agent info"; -+ return; -+ } -+ -+ auto site_key = adblock::utils::GetSitekeyHeader(headers); -+ if (site_key.value().empty()) { -+ VLOG(1) << "[eyeo] No site key header"; -+ return; -+ } -+ -+ ProcessSiteKey(request_url, site_key, user_agent); -+} -+ -+absl::optional> -+SitekeyStorageImpl::FindSiteKeyForAnyUrl(const std::vector& urls) const { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ for (const auto& url : urls) { -+ auto elem = url_to_sitekey_map_.find(url); -+ if (elem != url_to_sitekey_map_.cend()) { -+ return {*elem}; -+ } -+ } -+ return {}; -+} -+ -+void SitekeyStorageImpl::ProcessSiteKey(const GURL& request_url, -+ const SiteKey& site_key, -+ const std::string& user_agent) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(!site_key.value().empty()); -+ auto site_key_pair = FindSiteKeyForAnyUrl({request_url}); -+ if (site_key_pair.has_value() && -+ site_key.value() == site_key_pair->second.value()) { -+ DVLOG(3) << "[eyeo] Public key already stored for url: " -+ << site_key_pair->first; -+ return; -+ } -+ -+ GURL url = request_url.GetAsReferrer(); -+ TRACE_EVENT1("eyeo", "ProcessSiteKeyImpl", "url", request_url.spec()); -+ size_t delimiter = site_key.value().find("_"); -+ if ((delimiter == std::string::npos) || -+ (delimiter >= (site_key.value().length() - 1))) { -+ LOG(ERROR) << "[eyeo] Wrong format of site key header value: " -+ << site_key.value(); -+ return; -+ } -+ -+ std::string public_key = site_key.value().substr(0, delimiter); -+ std::string public_key_stripped = public_key.substr(0, public_key.find("==")); -+ std::string signature = site_key.value().substr(delimiter + 1); -+ DVLOG(1) << "[eyeo] Found site key header, public key: " << public_key -+ << ", signature: " << signature; -+ -+ auto path_with_query = url.path(); -+ if (url.has_query()) { -+ path_with_query += "?" + url.query(); -+ } -+ DLOG(INFO) << "[eyeo] Calling IsSitekeySignatureValid(publicKey, signature, " -+ "uri, host," -+ " userAgent) with arguments: (" -+ << public_key << ", " << signature << ", " << path_with_query -+ << ", " << url.host() << ", " << user_agent << ")"; -+ -+ std::string data = path_with_query + '\0' + url.host() + '\0' + user_agent; -+ if (IsSitekeySignatureValid(public_key, signature, data) && -+ !request_url.is_empty() && request_url.is_valid() && -+ !site_key.value().empty()) { -+ url_to_sitekey_map_[url] = SiteKey{public_key_stripped}; -+ } else { -+ LOG(ERROR) << "[eyeo] Sitekey verification failed"; -+ } -+} -+ -+bool SitekeyStorageImpl::IsSitekeySignatureValid( -+ const std::string& public_key_b64, -+ const std::string& signature_b64, -+ const std::string& data) const { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ std::string signature; -+ if (!base::Base64Decode(signature_b64, &signature, -+ base::Base64DecodePolicy::kForgiving)) { -+ DLOG(WARNING) << "[eyeo] Signature decode failed"; -+ return false; -+ } -+ -+ std::string public_key; -+ if (!base::Base64Decode(public_key_b64, &public_key, -+ base::Base64DecodePolicy::kForgiving)) { -+ DLOG(WARNING) << "[eyeo] Public key decode failed"; -+ return false; -+ } -+ -+ crypto::SignatureVerifier verifier; -+ if (verifier.VerifyInit(crypto::SignatureVerifier::RSA_PKCS1_SHA1, -+ base::as_bytes(base::make_span(signature)), -+ base::as_bytes(base::make_span(public_key)))) { -+ verifier.VerifyUpdate(base::as_bytes(base::make_span(data))); -+ return verifier.VerifyFinal(); -+ } -+ -+ DLOG(WARNING) << "[eyeo] Verifier initialization failed"; -+ return false; -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/sitekey_storage_impl.h b/components/adblock/core/sitekey_storage_impl.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/sitekey_storage_impl.h -@@ -0,0 +1,59 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_IMPL_H_ -+ -+#include -+ -+#include "absl/types/optional.h" -+ -+#include "components/adblock/core/common/sitekey.h" -+#include "components/adblock/core/sitekey_storage.h" -+ -+namespace adblock { -+ -+class SitekeyStorageImpl final : public SitekeyStorage { -+ public: -+ SitekeyStorageImpl(); -+ ~SitekeyStorageImpl() final; -+ -+ void ProcessResponseHeaders( -+ const GURL& request_url, -+ const scoped_refptr& headers, -+ const std::string& user_agent) final; -+ -+ absl::optional> FindSiteKeyForAnyUrl( -+ const std::vector& urls) const final; -+ -+ private: -+ void ProcessSiteKey(const GURL& request_url, -+ const SiteKey& site_key, -+ const std::string& user_agent); -+ -+ bool IsSitekeySignatureValid(const std::string& public_key_b64, -+ const std::string& signature_b64, -+ const std::string& data) const; -+ -+ SEQUENCE_CHECKER(sequence_checker_); -+ std::map url_to_sitekey_map_; -+ base::WeakPtrFactory weak_ptr_factory_{this}; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_IMPL_H_ -diff --git a/components/adblock/core/subscription/BUILD.gn b/components/adblock/core/subscription/BUILD.gn -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/BUILD.gn -@@ -0,0 +1,178 @@ -+# -+# This file is part of eyeo Chromium SDK, -+# Copyright (C) 2006-present eyeo GmbH -+# -+# eyeo Chromium SDK is free software: you can redistribute it and/or modify -+# it under the terms of the GNU General Public License version 3 as -+# published by the Free Software Foundation. -+# -+# eyeo Chromium SDK is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with eyeo Chromium SDK. If not, see . -+ -+source_set("subscription") { -+ sources = [ -+ "conversion_executors.h", -+ "domain_splitter.cc", -+ "domain_splitter.h", -+ "filtering_configuration_maintainer.h", -+ "filtering_configuration_maintainer_impl.cc", -+ "filtering_configuration_maintainer_impl.h", -+ "installed_subscription.cc", -+ "installed_subscription.h", -+ "installed_subscription_impl.cc", -+ "installed_subscription_impl.h", -+ "ongoing_subscription_request.h", -+ "ongoing_subscription_request_impl.cc", -+ "ongoing_subscription_request_impl.h", -+ "pattern_matcher.cc", -+ "pattern_matcher.h", -+ "preloaded_subscription_provider.h", -+ "preloaded_subscription_provider_impl.cc", -+ "preloaded_subscription_provider_impl.h", -+ "regex_matcher.cc", -+ "regex_matcher.h", -+ "subscription.cc", -+ "subscription.h", -+ "subscription_collection.h", -+ "subscription_collection_impl.cc", -+ "subscription_collection_impl.h", -+ "subscription_config.cc", -+ "subscription_config.h", -+ "subscription_downloader.h", -+ "subscription_downloader_impl.cc", -+ "subscription_downloader_impl.h", -+ "subscription_persistent_metadata.h", -+ "subscription_persistent_metadata_impl.cc", -+ "subscription_persistent_metadata_impl.h", -+ "subscription_persistent_storage.h", -+ "subscription_persistent_storage_impl.cc", -+ "subscription_persistent_storage_impl.h", -+ "subscription_service.h", -+ "subscription_service_impl.cc", -+ "subscription_service_impl.h", -+ "subscription_updater.h", -+ "subscription_updater_impl.cc", -+ "subscription_updater_impl.h", -+ "subscription_validator.h", -+ "subscription_validator_impl.cc", -+ "subscription_validator_impl.h", -+ "url_keyword_extractor.cc", -+ "url_keyword_extractor.h", -+ ] -+ -+ deps = [ -+ "//components/adblock/core/common:utils", -+ "//components/adblock/core/converter", -+ "//components/resources:components_resources_grit", -+ "//net", -+ ] -+ -+ public_deps = [ -+ "//base", -+ "//components/adblock/core:schema", -+ "//components/adblock/core/common", -+ "//components/adblock/core/common", -+ "//components/adblock/core/configuration", -+ "//components/keyed_service/core", -+ "//components/prefs", -+ "//services/network/public/cpp", -+ "//third_party/abseil-cpp:absl", -+ "//third_party/re2", -+ "//url:url", -+ ] -+} -+ -+source_set("test_support") { -+ testonly = true -+ sources = [ -+ "test/load_gzipped_test_file.cc", -+ "test/load_gzipped_test_file.h", -+ "test/mock_conversion_executors.cc", -+ "test/mock_conversion_executors.h", -+ "test/mock_filtering_configuration_maintainer.cc", -+ "test/mock_filtering_configuration_maintainer.h", -+ "test/mock_installed_subscription.cc", -+ "test/mock_installed_subscription.h", -+ "test/mock_subscription.cc", -+ "test/mock_subscription.h", -+ "test/mock_subscription_collection.cc", -+ "test/mock_subscription_collection.h", -+ "test/mock_subscription_downloader.cc", -+ "test/mock_subscription_downloader.h", -+ "test/mock_subscription_persistent_metadata.cc", -+ "test/mock_subscription_persistent_metadata.h", -+ "test/mock_subscription_service.cc", -+ "test/mock_subscription_service.h", -+ "test/mock_subscription_updater.cc", -+ "test/mock_subscription_updater.h", -+ ] -+ -+ public_deps = [ -+ ":subscription", -+ "//components/adblock/core/configuration:test_support", -+ "//testing/gmock", -+ "//testing/gtest", -+ ] -+ -+ deps = [ "//third_party/zlib/google:compression_utils" ] -+} -+ -+source_set("unit_tests") { -+ testonly = true -+ sources = [ -+ "test/filtering_configuration_maintainer_impl_test.cc", -+ "test/installed_subscription_impl_test.cc", -+ "test/ongoing_subscription_request_impl_test.cc", -+ "test/pattern_matcher_test.cc", -+ "test/preloaded_subscription_provider_impl_test.cc", -+ "test/subscription_collection_impl_test.cc", -+ "test/subscription_downloader_impl_test.cc", -+ "test/subscription_persistent_metadata_impl_test.cc", -+ "test/subscription_persistent_storage_impl_test.cc", -+ "test/subscription_service_impl_test.cc", -+ "test/subscription_updater_impl_test.cc", -+ "test/subscription_validator_impl_test.cc", -+ "test/url_keyword_extractor_test.cc", -+ ] -+ -+ deps = [ -+ ":test_support", -+ "//components/adblock/core", -+ "//components/adblock/core/configuration:test_support", -+ "//components/adblock/core/converter", -+ "//components/prefs:test_support", -+ "//components/resources:components_resources_grit", -+ "//components/sync_preferences:test_support", -+ "//net:test_support", -+ "//services/network:test_support", -+ "//testing/gtest", -+ ] -+} -+ -+source_set("perf_tests") { -+ testonly = true -+ sources = [ -+ "test/pattern_matcher_perftest.cc", -+ "test/regex_matcher_perftest.cc", -+ ] -+ -+ deps = [ -+ ":subscription", -+ ":test_support", -+ "//base", -+ "//components/adblock/core", -+ "//testing/gtest", -+ "//testing/perf", -+ ] -+ -+ data = [ -+ "//components/test/data/adblock/40_regex_patterns.txt.gz", -+ "//components/test/data/adblock/5000_patterns.txt.gz", -+ "//components/test/data/adblock/5000_url.txt.gz", -+ ] -+} -diff --git a/components/adblock/core/subscription/conversion_executors.h b/components/adblock/core/subscription/conversion_executors.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/conversion_executors.h -@@ -0,0 +1,50 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_CONVERSION_EXECUTORS_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_CONVERSION_EXECUTORS_H_ -+ -+#include -+#include -+ -+#include "base/files/file_path.h" -+#include "base/functional/bind.h" -+#include "base/functional/callback.h" -+#include "components/adblock/core/converter/flatbuffer_converter.h" -+#include "components/adblock/core/subscription/installed_subscription.h" -+ -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+class ConversionExecutors { -+ public: -+ // Synchronous -+ virtual scoped_refptr ConvertCustomFilters( -+ const std::vector& filters) const = 0; -+ // Asynchronous -+ virtual void ConvertFilterListFile( -+ const GURL& subscription_url, -+ const base::FilePath& path, -+ base::OnceCallback result_callback) const = 0; -+ -+ virtual ~ConversionExecutors() = default; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_CONVERSION_EXECUTORS_H_ -diff --git a/components/adblock/core/subscription/domain_splitter.cc b/components/adblock/core/subscription/domain_splitter.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/domain_splitter.cc -@@ -0,0 +1,46 @@ -+ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/subscription/domain_splitter.h" -+ -+#include "base/strings/string_util.h" -+ -+namespace adblock { -+ -+DomainSplitter::DomainSplitter(base::StringPiece domain) -+ : domain_(base::TrimString(domain, ".", base::TRIM_ALL)) {} -+ -+absl::optional DomainSplitter::FindNextSubdomain() { -+ const auto old_dot_pos = dot_pos_; -+ if (dot_pos_ < domain_.size()) { -+ // Find next dot in domain, for future iteration to consume. -+ dot_pos_ = domain_.find('.', dot_pos_ + 1); -+ // First run is special because we found no dots yet. -+ if (old_dot_pos == 0) { -+ return domain_; -+ } -+ // Return the part of domain *after* the dot we found in previous iteration. -+ return domain_.substr(old_dot_pos + 1); -+ } -+ // Reached end of domain_. -+ // Reset in anticipation of future calls to FindNextSubdomain(). -+ dot_pos_ = 0; -+ return absl::nullopt; -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/subscription/domain_splitter.h b/components/adblock/core/subscription/domain_splitter.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/domain_splitter.h -@@ -0,0 +1,45 @@ -+ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_DOMAIN_SPLITTER_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_DOMAIN_SPLITTER_H_ -+ -+#include "absl/types/optional.h" -+ -+#include "base/strings/string_piece.h" -+ -+namespace adblock { -+ -+// When constructed with a full domain like "aaa.bbb.ccc.com", subsequent calls -+// to FindNextSubdomain() will yield "aaa.bbb.ccc.com", "bbb.ccc.com", -+// "ccc.com", "com" and then nullopt. -+class DomainSplitter { -+ public: -+ // |domain| must outlive this, no copy made. -+ explicit DomainSplitter(base::StringPiece domain); -+ // Returns reference to part of |domain|. -+ absl::optional FindNextSubdomain(); -+ -+ private: -+ const base::StringPiece domain_; -+ size_t dot_pos_ = 0; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_DOMAIN_SPLITTER_H_ -diff --git a/components/adblock/core/subscription/filtering_configuration_maintainer.h b/components/adblock/core/subscription/filtering_configuration_maintainer.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/filtering_configuration_maintainer.h -@@ -0,0 +1,52 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_H_ -+ -+#include -+#include -+ -+#include "base/memory/scoped_refptr.h" -+#include "components/adblock/core/subscription/subscription.h" -+#include "components/adblock/core/subscription/subscription_collection.h" -+ -+namespace adblock { -+ -+// Maintains a set of subscriptions needed to fulfil filtering requirements of a -+// single FilteringConfiguration. -+// Downloads and installs missing subscriptions, removes no-longer-needed -+// subscriptions, periodically updates installed subscriptions. -+class FilteringConfigurationMaintainer { -+ public: -+ virtual ~FilteringConfigurationMaintainer() = default; -+ -+ // Returns a SubscriptionCollection that implements the blocking logic -+ // demanded by a FilteringConfiguration. This becomes part of a -+ // SubscriptionService::Snapshot. -+ virtual std::unique_ptr GetSubscriptionCollection() -+ const = 0; -+ -+ // Allows inspecting what Subscriptions are currently in use. This includes -+ // ongoing downloads, preloaded subscriptions and installed subscriptions. -+ virtual std::vector> GetCurrentSubscriptions() -+ const = 0; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_H_ -diff --git a/components/adblock/core/subscription/filtering_configuration_maintainer_impl.cc b/components/adblock/core/subscription/filtering_configuration_maintainer_impl.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/filtering_configuration_maintainer_impl.cc -@@ -0,0 +1,489 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/subscription/filtering_configuration_maintainer_impl.h" -+ -+#include "base/functional/bind.h" -+#include "base/logging.h" -+#include "base/trace_event/common/trace_event_common.h" -+#include "base/trace_event/trace_event.h" -+#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/subscription/subscription_collection_impl.h" -+ -+// TODO(mpawlowski): Remove in DPD-1154. This class should not need to know -+// anything about particular subscriptions, it should be generic. -+#include "components/adblock/core/subscription/subscription_config.h" -+ -+namespace adblock { -+namespace { -+constexpr base::TimeDelta kDefaultHeadRequestExpirationInterval = base::Days(1); -+ -+} // namespace -+ -+class FilteringConfigurationMaintainerImpl::OngoingInstallation final -+ : public Subscription { -+ public: -+ explicit OngoingInstallation(const GURL& url) : url_(url) {} -+ -+ GURL GetSourceUrl() const final { return url_; } -+ std::string GetTitle() const final { return {}; } -+ std::string GetCurrentVersion() const final { return {}; } -+ InstallationState GetInstallationState() const final { -+ return InstallationState::Installing; -+ } -+ base::Time GetInstallationTime() const final { return {}; } -+ base::TimeDelta GetExpirationInterval() const final { return {}; } -+ -+ private: -+ friend class base::RefCountedThreadSafe; -+ ~OngoingInstallation() final = default; -+ GURL url_; -+}; -+ -+FilteringConfigurationMaintainerImpl::FilteringConfigurationMaintainerImpl( -+ FilteringConfiguration* configuration, -+ std::unique_ptr storage, -+ std::unique_ptr downloader, -+ std::unique_ptr -+ preloaded_subscription_provider, -+ std::unique_ptr updater, -+ ConversionExecutors* conversion_executor, -+ SubscriptionPersistentMetadata* persistent_metadata, -+ SubscriptionUpdatedCallback subscription_updated_callback) -+ : configuration_(std::move(configuration)), -+ storage_(std::move(storage)), -+ downloader_(std::move(downloader)), -+ preloaded_subscription_provider_( -+ std::move(preloaded_subscription_provider)), -+ updater_(std::move(updater)), -+ conversion_executor_(conversion_executor), -+ persistent_metadata_(persistent_metadata), -+ subscription_updated_callback_(std::move(subscription_updated_callback)) { -+ DCHECK(configuration_->IsEnabled()) -+ << "Disabled configurations should not be maintained"; -+ configuration_->AddObserver(this); -+} -+ -+FilteringConfigurationMaintainerImpl::~FilteringConfigurationMaintainerImpl() { -+ configuration_->RemoveObserver(this); -+} -+ -+std::unique_ptr -+FilteringConfigurationMaintainerImpl::GetSubscriptionCollection() const { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ std::vector> state = current_state_; -+ if (custom_filters_) { -+ state.push_back(custom_filters_); -+ } -+ base::ranges::move( -+ preloaded_subscription_provider_->GetCurrentPreloadedSubscriptions(), -+ std::back_inserter(state)); -+ VLOG(2) << "[eyeo] FilteringConfiguration " << configuration_->GetName() -+ << " produces " << state.size() << " subscriptions for Snapshot"; -+ return std::make_unique( -+ state, configuration_->GetName()); -+} -+ -+std::vector> -+FilteringConfigurationMaintainerImpl::GetCurrentSubscriptions() const { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ // Result will contain the currently installed subscriptions: -+ std::vector> result; -+ base::ranges::copy(current_state_, std::back_inserter(result)); -+ // And all preloaded subscriptions: -+ auto preloaded_subscriptions = -+ preloaded_subscription_provider_->GetCurrentPreloadedSubscriptions(); -+ base::ranges::move(preloaded_subscriptions, std::back_inserter(result)); -+ // Also, dummy subscriptions that represent ongoing installations (unless -+ // already present, in which case they'd represent updates). -+ base::ranges::copy_if( -+ ongoing_installations_, std::back_inserter(result), -+ [&](const auto& ongoing_installation) { -+ return base::ranges::find(result, ongoing_installation->GetSourceUrl(), -+ &Subscription::GetSourceUrl) == result.end(); -+ }); -+ return result; -+} -+ -+void FilteringConfigurationMaintainerImpl::OnFilterListsChanged( -+ FilteringConfiguration* config) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK_EQ(config, configuration_); -+ if (status_ == StorageStatus::Initialized) { -+ InstallMissingSubscriptions(); -+ RemoveUnneededSubscriptions(); -+ } -+} -+ -+void FilteringConfigurationMaintainerImpl::OnAllowedDomainsChanged( -+ FilteringConfiguration* config) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK_EQ(config, configuration_); -+ OnCustomFiltersChanged(config); -+} -+ -+void FilteringConfigurationMaintainerImpl::OnCustomFiltersChanged( -+ FilteringConfiguration* config) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK_EQ(config, configuration_); -+ SetCustomFilters(); -+} -+ -+bool FilteringConfigurationMaintainerImpl::IsInitialized() const { -+ return status_ == StorageStatus::Initialized; -+} -+ -+void FilteringConfigurationMaintainerImpl::InstallMissingSubscriptions() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(IsInitialized()); -+ // Subscriptions that are either installed or being installed: -+ auto installed_subscriptions = GetReadySubscriptions(); -+ base::ranges::copy(GetPendingSubscriptions(), -+ std::back_inserter(installed_subscriptions)); -+ // Subscriptions that are demanded by the FilteringConfiguration: -+ auto demanded_subscriptions = configuration_->GetFilterLists(); -+ base::ranges::sort(installed_subscriptions); -+ base::ranges::sort(demanded_subscriptions); -+ // Missing subscriptions is the difference between the two: -+ std::vector missing_subscriptions; -+ base::ranges::set_difference(demanded_subscriptions, installed_subscriptions, -+ std::back_inserter(missing_subscriptions)); -+ for (const auto& url : missing_subscriptions) { -+ DownloadAndInstallSubscription(url); -+ } -+} -+ -+void FilteringConfigurationMaintainerImpl::RemoveUnneededSubscriptions() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(IsInitialized()); -+ // Subscriptions that are either installed or being installed: -+ auto installed_subscriptions = GetReadySubscriptions(); -+ base::ranges::copy(GetPendingSubscriptions(), -+ std::back_inserter(installed_subscriptions)); -+ // Subscriptions that are demanded by the FilteringConfiguration: -+ auto demanded_subscriptions = configuration_->GetFilterLists(); -+ base::ranges::sort(installed_subscriptions); -+ base::ranges::sort(demanded_subscriptions); -+ installed_subscriptions.erase(std::unique(installed_subscriptions.begin(), -+ installed_subscriptions.end()), -+ installed_subscriptions.end()); -+ // Unneeded subscriptions is the difference between the two: -+ std::vector unneeded_subscriptions; -+ base::ranges::set_difference(installed_subscriptions, demanded_subscriptions, -+ std::back_inserter(unneeded_subscriptions)); -+ for (const auto& url : unneeded_subscriptions) { -+ UninstallSubscription(url); -+ } -+} -+ -+void FilteringConfigurationMaintainerImpl::InitializeStorage() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(!IsInitialized()); -+ VLOG(1) << "[eyeo] FilteringConfigurationMaintainer starting."; -+ TRACE_EVENT_ASYNC_BEGIN1( -+ "eyeo", "FilteringConfigurationMaintainerImpl::InitializeStorage", -+ TRACE_ID_LOCAL(this), "name", configuration_->GetName()); -+ storage_->LoadSubscriptions( -+ base::BindOnce(&FilteringConfigurationMaintainerImpl::StorageInitialized, -+ weak_ptr_factory_.GetWeakPtr())); -+} -+ -+void FilteringConfigurationMaintainerImpl::StorageInitialized( -+ std::vector> loaded_subscriptions) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(!IsInitialized()); -+ DCHECK(current_state_.empty()) -+ << "current state was modified before initial state was loaded"; -+ current_state_ = std::move(loaded_subscriptions); -+ status_ = StorageStatus::Initialized; -+ // SubscriptionPersistentStorage allows multiple Subscriptions with same URL, -+ // which is a legal transitive state during ex. installing an update. -+ // However, current_state_ should always contain only -+ // one subscription with a given URL. This normally happens automatically by -+ // virtue of |SubscriptionAddedToStorage| calling |UninstallSubscription| but -+ // this invariant might not hold if ex. the application exits after -+ // SubscriptionPersistentStorage stores the update but before -+ // SubscriptionServiceImpl uninstalls the old version. It's difficult to -+ // make installing subscription updates atomic, so solve potential race -+ // condition here: -+ RemoveDuplicateSubscriptions(); -+ // Synchronize current state with the demands of the FilteringConfiguration: -+ OnFilterListsChanged(configuration_); -+ OnCustomFiltersChanged(configuration_); -+ // Start periodic updates: -+ updater_->StartSchedule( -+ base::BindRepeating(&FilteringConfigurationMaintainerImpl::RunUpdateCheck, -+ weak_ptr_factory_.GetWeakPtr())); -+ TRACE_EVENT_ASYNC_END1( -+ "eyeo", "FilteringConfigurationMaintainerImpl::InitializeStorage", -+ TRACE_ID_LOCAL(this), "name", configuration_->GetName()); -+} -+ -+void FilteringConfigurationMaintainerImpl::RemoveDuplicateSubscriptions() { -+ // std::sort + std::unique is not good for this use case, as we need to -+ // perform actions on the duplicates, not just discard them, and std::unique -+ // leaves moved elements in unspecified state. std::adjacent_find or -+ // std::unique_copy could be used as well, but using a helper std::set seems -+ // simplest. -+ const auto comparator = [](const auto& lhs, const auto& rhs) { -+ return lhs->GetSourceUrl() < rhs->GetSourceUrl(); -+ }; -+ std::set, decltype(comparator)> -+ unique_subscriptions(comparator); -+ for (auto subscription : current_state_) { -+ if (!unique_subscriptions.insert(subscription).second) { -+ // This element already exists in the set, we found a duplicate. -+ storage_->RemoveSubscription(subscription); -+ } -+ } -+ current_state_.assign(unique_subscriptions.begin(), -+ unique_subscriptions.end()); -+} -+ -+void FilteringConfigurationMaintainerImpl::RunUpdateCheck() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ VLOG(1) << "[eyeo] Running update check"; -+ for (auto& subscription : current_state_) { -+ // Update subscriptions that are expired and aren't already in the process -+ // of installing an update. -+ const auto& url = subscription->GetSourceUrl(); -+ if (persistent_metadata_->IsExpired(url) && -+ base::ranges::find(ongoing_installations_, url, -+ &Subscription::GetSourceUrl) == -+ ongoing_installations_.end()) { -+ VLOG(1) << "[eyeo] Updating expired subscription " << url; -+ DownloadAndInstallSubscription(url); -+ } else { -+ VLOG(1) << "[eyeo] Skipping update of " << url << ": " -+ << (!persistent_metadata_->IsExpired(url) -+ ? "not expired yet" -+ : "already downloading"); -+ } -+ } -+ // TODO(mpawlowski): remove after DPD-1154. If Acceptable Ads is not -+ // installed, but it would have been expired, send HEAD request for Acceptable -+ // Ads filter list just to count the user, without the intention of -+ // downloading it. -+ // This is to support legacy behavior. -+ if (configuration_->GetName() == "adblock" && -+ base::ranges::none_of(GetCurrentSubscriptions(), -+ [](const auto& subscription) { -+ return subscription->GetSourceUrl() == -+ AcceptableAdsUrl(); -+ }) && -+ persistent_metadata_->IsExpired(AcceptableAdsUrl())) { -+ PingAcceptableAds(); -+ } -+} -+ -+void FilteringConfigurationMaintainerImpl::DownloadAndInstallSubscription( -+ const GURL& subscription_url) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(IsInitialized()); -+ const bool is_an_update = -+ base::ranges::any_of(current_state_, [&](const auto candidate) { -+ return candidate->GetSourceUrl() == subscription_url; -+ }); -+ -+ // We do not retry downloading subscription updates, they will be retried -+ // by the SubscriptionUpdater in due time anyway. -+ auto retry_policy = -+ is_an_update ? SubscriptionDownloader::RetryPolicy::DoNotRetry -+ : SubscriptionDownloader::RetryPolicy::RetryUntilSucceeded; -+ -+ auto ongoing_installation = -+ base::MakeRefCounted(subscription_url); -+ ongoing_installations_.insert(ongoing_installation); -+ UpdatePreloadedSubscriptionProvider(); -+ -+ downloader_->StartDownload( -+ subscription_url, retry_policy, -+ base::BindOnce( -+ &FilteringConfigurationMaintainerImpl::OnSubscriptionDataAvailable, -+ weak_ptr_factory_.GetWeakPtr(), ongoing_installation)); -+} -+ -+void FilteringConfigurationMaintainerImpl::OnSubscriptionDataAvailable( -+ scoped_refptr ongoing_installation, -+ std::unique_ptr raw_data) { -+ if (ongoing_installations_.find(ongoing_installation) == -+ ongoing_installations_.end()) { -+ // Installation was canceled. -+ UpdatePreloadedSubscriptionProvider(); -+ return; -+ } -+ if (!raw_data) { -+ // Download failed. -+ ongoing_installations_.erase(ongoing_installation); -+ UpdatePreloadedSubscriptionProvider(); -+ return; -+ } -+ -+ storage_->StoreSubscription( -+ std::move(raw_data), -+ base::BindOnce( -+ &FilteringConfigurationMaintainerImpl::SubscriptionAddedToStorage, -+ weak_ptr_factory_.GetWeakPtr(), ongoing_installation)); -+} -+ -+void FilteringConfigurationMaintainerImpl::SubscriptionAddedToStorage( -+ scoped_refptr ongoing_installation, -+ scoped_refptr subscription) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ if (ongoing_installations_.find(ongoing_installation) == -+ ongoing_installations_.end()) { -+ // Installation was canceled. We must now remove the subscription from -+ // storage. Do not add it to |current_state|. -+ storage_->RemoveSubscription(subscription); -+ UpdatePreloadedSubscriptionProvider(); -+ return; -+ } -+ ongoing_installations_.erase(ongoing_installation); -+ -+ if (!subscription) { -+ // There was an error adding subscription to storage. -+ LOG(WARNING) << "[eyeo] Failed to add subscription, current number " -+ << "of subscriptions: " << current_state_.size(); -+ UpdatePreloadedSubscriptionProvider(); -+ return; -+ } -+ // Remove any subscription that already exists with the same URL -+ bool subscription_existed = -+ UninstallSubscriptionInternal(subscription->GetSourceUrl()); -+ // Add the new subscription -+ current_state_.push_back(subscription); -+ if (subscription_existed) { -+ VLOG(1) << "[eyeo] Updated subscription " << subscription->GetSourceUrl() -+ << ", current version " << subscription->GetCurrentVersion(); -+ } else { -+ VLOG(1) << "[eyeo] Added subscription " << subscription->GetSourceUrl() -+ << ", current number of subscriptions: " << current_state_.size(); -+ } -+ UpdatePreloadedSubscriptionProvider(); -+ // Notify "observer" -+ subscription_updated_callback_.Run(subscription->GetSourceUrl()); -+} -+ -+void FilteringConfigurationMaintainerImpl::PingAcceptableAds() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(IsInitialized()); -+ downloader_->DoHeadRequest( -+ AcceptableAdsUrl(), -+ base::BindOnce(&FilteringConfigurationMaintainerImpl::OnHeadRequestDone, -+ weak_ptr_factory_.GetWeakPtr())); -+} -+ -+void FilteringConfigurationMaintainerImpl::OnHeadRequestDone( -+ const std::string version) { -+ if (version.empty()) { -+ return; -+ } -+ persistent_metadata_->SetVersion(AcceptableAdsUrl(), version); -+ persistent_metadata_->SetExpirationInterval( -+ AcceptableAdsUrl(), kDefaultHeadRequestExpirationInterval); -+} -+ -+void FilteringConfigurationMaintainerImpl::UninstallSubscription( -+ const GURL& subscription_url) { -+ DVLOG(1) << "[eyeo] Removing subscription " << subscription_url; -+ if (!UninstallSubscriptionInternal(subscription_url)) { -+ VLOG(1) << "[eyeo] Nothing to remove, subscription not installed " -+ << subscription_url; -+ return; -+ } -+ if (subscription_url != AcceptableAdsUrl()) { -+ // Remove metadata associated with the subscription. Retain (forever) -+ // metadata of the Acceptable Ads subscription even when it's no longer -+ // installed, to allow continued HEAD-only pings for user counting purposes. -+ persistent_metadata_->RemoveMetadata(subscription_url); -+ } -+ UpdatePreloadedSubscriptionProvider(); -+ VLOG(1) << "[eyeo] Removed subscription " << subscription_url; -+} -+ -+bool FilteringConfigurationMaintainerImpl::UninstallSubscriptionInternal( -+ const GURL& subscription_url) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(IsInitialized()); -+ bool subscription_removed = false; -+ auto it = base::ranges::find(current_state_, subscription_url, -+ &Subscription::GetSourceUrl); -+ if (it != current_state_.end()) { -+ storage_->RemoveSubscription(*it); -+ current_state_.erase(it); -+ subscription_removed = true; -+ } -+ -+ auto ongoing_installation_it = base::ranges::find( -+ ongoing_installations_, subscription_url, &Subscription::GetSourceUrl); -+ if (ongoing_installation_it != ongoing_installations_.end()) { -+ ongoing_installations_.erase(ongoing_installation_it); -+ DVLOG(1) << "[eyeo] Canceling installation of subscription " -+ << subscription_url; -+ downloader_->CancelDownload(subscription_url); -+ DVLOG(2) << "[eyeo] Canceled installation of subscription " -+ << subscription_url; -+ subscription_removed = true; -+ } -+ return subscription_removed; -+} -+ -+void FilteringConfigurationMaintainerImpl::SetCustomFilters() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ -+ std::vector filters = configuration_->GetCustomFilters(); -+ base::ranges::transform(configuration_->GetAllowedDomains(), -+ std::back_inserter(filters), -+ &utils::CreateDomainAllowlistingFilter); -+ for (const auto& filter : filters) { -+ VLOG(1) << "[eyeo] Setting custom filter: " << filter; -+ } -+ if (filters.empty()) { -+ custom_filters_.reset(); -+ return; -+ } -+ -+ custom_filters_ = conversion_executor_->ConvertCustomFilters(filters); -+} -+ -+void FilteringConfigurationMaintainerImpl:: -+ UpdatePreloadedSubscriptionProvider() { -+ preloaded_subscription_provider_->UpdateSubscriptions( -+ GetReadySubscriptions(), GetPendingSubscriptions()); -+} -+ -+std::vector FilteringConfigurationMaintainerImpl::GetReadySubscriptions() -+ const { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ std::vector result; -+ result.reserve(current_state_.size()); -+ base::ranges::transform(current_state_, std::back_inserter(result), -+ &Subscription::GetSourceUrl); -+ return result; -+} -+ -+std::vector -+FilteringConfigurationMaintainerImpl::GetPendingSubscriptions() const { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ std::vector result; -+ result.reserve(ongoing_installations_.size()); -+ base::ranges::transform(ongoing_installations_, std::back_inserter(result), -+ &Subscription::GetSourceUrl); -+ return result; -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/subscription/filtering_configuration_maintainer_impl.h b/components/adblock/core/subscription/filtering_configuration_maintainer_impl.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/filtering_configuration_maintainer_impl.h -@@ -0,0 +1,119 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_IMPL_H_ -+ -+#include "base/functional/callback.h" -+#include "base/functional/callback_forward.h" -+#include "base/memory/raw_ptr.h" -+#include "base/memory/weak_ptr.h" -+#include "components/adblock/core/configuration/filtering_configuration.h" -+#include "components/adblock/core/subscription/conversion_executors.h" -+#include "components/adblock/core/subscription/filtering_configuration_maintainer.h" -+#include "components/adblock/core/subscription/preloaded_subscription_provider.h" -+#include "components/adblock/core/subscription/subscription_downloader.h" -+#include "components/adblock/core/subscription/subscription_persistent_metadata.h" -+#include "components/adblock/core/subscription/subscription_persistent_storage.h" -+#include "components/adblock/core/subscription/subscription_updater.h" -+ -+namespace adblock { -+ -+class FilteringConfigurationMaintainerImpl -+ : public FilteringConfigurationMaintainer, -+ public FilteringConfiguration::Observer { -+ public: -+ using SubscriptionUpdatedCallback = -+ base::RepeatingCallback; -+ FilteringConfigurationMaintainerImpl( -+ FilteringConfiguration* configuration, -+ std::unique_ptr storage, -+ std::unique_ptr downloader, -+ std::unique_ptr -+ preloaded_subscription_provider, -+ std::unique_ptr updater, -+ ConversionExecutors* conversion_executor, -+ SubscriptionPersistentMetadata* persistent_metadata, -+ SubscriptionUpdatedCallback subscription_updated_callback); -+ ~FilteringConfigurationMaintainerImpl() override; -+ -+ std::unique_ptr GetSubscriptionCollection() -+ const override; -+ -+ std::vector> GetCurrentSubscriptions() -+ const override; -+ -+ // FilteringConfiguration::Observer: -+ void OnFilterListsChanged(FilteringConfiguration* config) final; -+ void OnAllowedDomainsChanged(FilteringConfiguration* config) final; -+ void OnCustomFiltersChanged(FilteringConfiguration* config) final; -+ -+ void InitializeStorage(); -+ -+ private: -+ enum class StorageStatus { -+ Initialized, -+ Uninitialized, -+ }; -+ class OngoingInstallation; -+ bool IsInitialized() const; -+ void InstallMissingSubscriptions(); -+ void RemoveUnneededSubscriptions(); -+ void StorageInitialized( -+ std::vector> loaded_subscriptions); -+ void RemoveDuplicateSubscriptions(); -+ void RunUpdateCheck(); -+ void DownloadAndInstallSubscription(const GURL& subscription_url); -+ void OnSubscriptionDataAvailable( -+ scoped_refptr ongoing_installation, -+ std::unique_ptr raw_data); -+ void SubscriptionAddedToStorage( -+ scoped_refptr ongoing_installation, -+ scoped_refptr subscription); -+ void PingAcceptableAds(); -+ void OnHeadRequestDone(const std::string version); -+ void UninstallSubscription(const GURL& subscription_url); -+ bool UninstallSubscriptionInternal(const GURL& subscription_url); -+ void SetCustomFilters(); -+ void UpdatePreloadedSubscriptionProvider(); -+ std::vector GetReadySubscriptions() const; -+ std::vector GetPendingSubscriptions() const; -+ -+ SEQUENCE_CHECKER(sequence_checker_); -+ StorageStatus status_ = StorageStatus::Uninitialized; -+ raw_ptr configuration_; -+ std::unique_ptr storage_; -+ std::unique_ptr downloader_; -+ std::unique_ptr -+ preloaded_subscription_provider_; -+ std::unique_ptr updater_; -+ raw_ptr conversion_executor_; -+ // TODO(mpawlowski): Should not need to update metadata after DPD-1154, when -+ // HEAD requests are removed. Move all use of SubscriptionPersistentMetadata -+ // into SubscriptionPersistentStorage. -+ raw_ptr persistent_metadata_; -+ SubscriptionUpdatedCallback subscription_updated_callback_; -+ std::set> ongoing_installations_; -+ std::vector> current_state_; -+ scoped_refptr custom_filters_; -+ base::WeakPtrFactory weak_ptr_factory_{ -+ this}; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_IMPL_H_ -diff --git a/components/adblock/core/subscription/installed_subscription.cc b/components/adblock/core/subscription/installed_subscription.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/installed_subscription.cc -@@ -0,0 +1,42 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/subscription/installed_subscription.h" -+ -+namespace adblock { -+ -+InstalledSubscription::Selectors::Selectors() = default; -+InstalledSubscription::Selectors::~Selectors() = default; -+InstalledSubscription::Selectors::Selectors(const Selectors&) = default; -+InstalledSubscription::Selectors::Selectors(Selectors&&) = default; -+InstalledSubscription::Selectors& InstalledSubscription::Selectors::operator=( -+ const Selectors&) = default; -+InstalledSubscription::Selectors& InstalledSubscription::Selectors::operator=( -+ Selectors&&) = default; -+ -+InstalledSubscription::Snippet::Snippet() = default; -+InstalledSubscription::Snippet::Snippet(const Snippet&) = default; -+InstalledSubscription::Snippet::Snippet(Snippet&&) = default; -+InstalledSubscription::Snippet::~Snippet() = default; -+InstalledSubscription::Snippet& InstalledSubscription::Snippet::operator=( -+ const Snippet&) = default; -+InstalledSubscription::Snippet& InstalledSubscription::Snippet::operator=( -+ Snippet&&) = default; -+ -+InstalledSubscription::~InstalledSubscription() = default; -+ -+} // namespace adblock -diff --git a/components/adblock/core/subscription/installed_subscription.h b/components/adblock/core/subscription/installed_subscription.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/installed_subscription.h -@@ -0,0 +1,137 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_H_ -+ -+#include -+#include -+#include -+#include -+ -+#include "absl/types/optional.h" -+ -+#include "base/time/time.h" -+#include "components/adblock/core/common/content_type.h" -+#include "components/adblock/core/common/header_filter_data.h" -+#include "components/adblock/core/common/sitekey.h" -+#include "components/adblock/core/subscription/subscription.h" -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+enum class SpecialFilterType { -+ // Allows all ads on the frame and its children, overrides any URL blocking -+ // or element hiding: -+ Document, -+ // Disables element hiding on the frame and its children, URL blocking is -+ // still allowed: -+ Elemhide, -+ // Only consider domain-specific URL filters on this frame and its children: -+ Genericblock, -+ // Only consider domain-specific element hiding selectors on this frame and -+ // its children: -+ Generichide, -+}; -+enum class FilterCategory { Allowing, Blocking, DomainSpecificBlocking }; -+ -+// Represents an installed subscription that can be queried for filters. -+class InstalledSubscription : public Subscription { -+ public: -+ struct Selectors { -+ Selectors(); -+ ~Selectors(); -+ Selectors(const Selectors&); -+ Selectors(Selectors&&); -+ Selectors& operator=(const Selectors&); -+ Selectors& operator=(Selectors&&); -+ // The final set of selectors to apply on a page is |elemhide_selectors| -+ // minus |elemhide_exceptions|. This difference is not computed by this -+ // Subscription because there may be multiple subscriptions and -+ // |elemhide_exceptions| from one subscriptions may remove -+ // |elemhide_selectors| from another. -+ std::vector elemhide_selectors; -+ std::vector elemhide_exceptions; -+ }; -+ -+ class Snippet { -+ public: -+ Snippet(); -+ Snippet(const Snippet&); -+ Snippet(Snippet&&); -+ ~Snippet(); -+ Snippet& operator=(const Snippet&); -+ Snippet& operator=(Snippet&&); -+ base::StringPiece command; -+ std::vector arguments; -+ }; -+ -+ virtual bool HasUrlFilter(const GURL& url, -+ const std::string& document_domain, -+ ContentType content_type, -+ const SiteKey& sitekey, -+ FilterCategory category) const = 0; -+ virtual bool HasPopupFilter(const GURL& url, -+ const std::string& document_domain, -+ const SiteKey& sitekey, -+ FilterCategory category) const = 0; -+ virtual bool HasSpecialFilter(SpecialFilterType type, -+ const GURL& url, -+ const std::string& document_domain, -+ const SiteKey& sitekey) const = 0; -+ // CSP filters have a payload: a string that gets injected to a network -+ // response's Content-Security-Policy header. If a filters is found, it will -+ // be append to |results|. -+ virtual void FindCspFilters(const GURL& url, -+ const std::string& document_domain, -+ FilterCategory category, -+ std::set& results) const = 0; -+ // Find all rewrite filters matching category. -+ virtual std::set FindRewriteFilters( -+ const GURL& url, -+ const std::string& document_domain, -+ FilterCategory category) const = 0; -+ -+ virtual void FindHeaderFilters(const GURL& url, -+ ContentType content_type, -+ const std::string& document_domain, -+ FilterCategory category, -+ std::set& results) const = 0; -+ -+ virtual std::vector MatchSnippets( -+ const std::string& document_domain) const = 0; -+ -+ virtual Selectors GetElemhideSelectors(const GURL& url, -+ bool domain_specfic) const = 0; -+ // Note there's no "domain_specific". Emulation filters are always -+ // domain-specific. -+ virtual Selectors GetElemhideEmulationSelectors(const GURL& url) const = 0; -+ -+ // Instructs to remove the file which contains this subscription's data during -+ // destruction. NOP if there is no backing file, when the subscription is -+ // created in-memory. -+ // Operation is atomic and thread-safe. Consecutive calls are NOPs. -+ virtual void MarkForPermanentRemoval() = 0; -+ -+ protected: -+ friend class base::RefCountedThreadSafe; -+ ~InstalledSubscription() override; -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_H_ -diff --git a/components/adblock/core/subscription/installed_subscription_impl.cc b/components/adblock/core/subscription/installed_subscription_impl.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/installed_subscription_impl.cc -@@ -0,0 +1,553 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/subscription/installed_subscription_impl.h" -+ -+#include -+#include -+#include -+ -+#include "absl/types/optional.h" +#include "base/logging.h" -+#include "base/ranges/algorithm.h" -+#include "base/strings/string_piece.h" -+#include "base/strings/string_util.h" -+#include "base/trace_event/trace_event.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/common/regex_filter_pattern.h" -+#include "components/adblock/core/common/sitekey.h" -+#include "components/adblock/core/subscription/domain_splitter.h" -+#include "components/adblock/core/subscription/pattern_matcher.h" -+#include "components/adblock/core/subscription/regex_matcher.h" -+#include "components/adblock/core/subscription/subscription.h" -+#include "components/adblock/core/subscription/url_keyword_extractor.h" -+#include "net/base/registry_controlled_domains/registry_controlled_domain.h" -+#include "url/url_constants.h" -+ -+namespace adblock { -+namespace { -+ -+bool NeedsLowercasing(const std::string& input) { -+ return base::ranges::any_of( -+ input, [](const char c) { return base::IsAsciiUpper(c); }); -+} -+ -+bool IsThirdParty(const GURL& url, const std::string& domain) { -+ return !net::registry_controlled_domains::SameDomainOrHost( -+ url, GURL(url.scheme() + "://" + domain), -+ net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); -+} -+ -+bool DomainMatches(base::StringPiece filter_domain, -+ base::StringPiece document_domain) { -+ // document_domain is same as filter_domain: -+ // - document: subdomain.example.com -+ // - filter: subdomain.example.com -+ // Or document_domain ends with ".filter_domain": -+ // - document: subdomain.example.com -+ // - filter: example.com -+ // (document ends with ".example.com") -+ -+ return document_domain == filter_domain || -+ (base::EndsWith(document_domain, filter_domain) && -+ base::EndsWith(document_domain.substr( -+ 0, document_domain.size() - filter_domain.size()), -+ ".")); -+} -+ -+bool DomainOnList( -+ base::StringPiece document_domain, -+ const flatbuffers::Vector>* list) { -+ return std::any_of(list->begin(), list->end(), [&](auto* filter_domain) { -+ return DomainMatches( -+ base::StringPiece(filter_domain->c_str(), filter_domain->size()), -+ document_domain); -+ }); -+} -+ -+} // namespace -+ -+InstalledSubscriptionImpl::InstalledSubscriptionImpl( -+ std::unique_ptr data, -+ InstallationState installation_state, -+ base::Time installation_time) -+ : buffer_(std::move(data)), -+ installation_state_(installation_state), -+ installation_time_(installation_time), -+ regex_matcher_(std::make_unique()) { -+ DCHECK(buffer_); -+ index_ = flat::GetSubscription(buffer_->data()); -+ regex_matcher_->PreBuildRegexPatternsWithNoKeyword(index_); -+} -+ -+InstalledSubscriptionImpl::~InstalledSubscriptionImpl() = default; -+ -+GURL InstalledSubscriptionImpl::GetSourceUrl() const { -+ return index_->metadata()->url() ? GURL(index_->metadata()->url()->str()) -+ : GURL(); -+} -+ -+std::string InstalledSubscriptionImpl::GetTitle() const { -+ return index_->metadata()->title() ? index_->metadata()->title()->str() : ""; -+} -+ -+std::string InstalledSubscriptionImpl::GetCurrentVersion() const { -+ return index_->metadata()->version() ? index_->metadata()->version()->str() -+ : ""; -+} -+ -+Subscription::InstallationState -+InstalledSubscriptionImpl::GetInstallationState() const { -+ return installation_state_; -+} -+ -+base::Time InstalledSubscriptionImpl::GetInstallationTime() const { -+ return installation_time_; -+} -+ -+base::TimeDelta InstalledSubscriptionImpl::GetExpirationInterval() const { -+ return base::Milliseconds(index_->metadata()->expires()); -+} -+ -+bool InstalledSubscriptionImpl::HasUrlFilter(const GURL& url, -+ const std::string& document_domain, -+ ContentType content_type, -+ const SiteKey& sitekey, -+ FilterCategory category) const { -+ return !FindInternal(category != FilterCategory::Allowing -+ ? index_->url_subresource_block() -+ : index_->url_subresource_allow(), -+ url, content_type, document_domain, sitekey.value(), -+ category, FindStrategy::FindFirst) -+ .empty(); -+} -+ -+bool InstalledSubscriptionImpl::HasPopupFilter( -+ const GURL& url, -+ const std::string& document_domain, -+ const SiteKey& sitekey, -+ FilterCategory category) const { -+ return !FindInternal(category != FilterCategory::Allowing -+ ? index_->url_popup_block() -+ : index_->url_popup_allow(), -+ url, absl::nullopt, document_domain, sitekey.value(), -+ category, FindStrategy::FindFirst) -+ .empty(); -+} -+ -+void InstalledSubscriptionImpl::FindCspFilters( -+ const GURL& url, -+ const std::string& document_domain, -+ FilterCategory category, -+ std::set& results) const { -+ for (auto* filter : FindInternal(category != FilterCategory::Allowing -+ ? index_->url_csp_block() -+ : index_->url_csp_allow(), -+ url, absl::nullopt, document_domain, "", -+ category, FindStrategy::FindAll)) { -+ DCHECK(category == FilterCategory::Allowing || filter->csp_filter()) -+ << "Blocking CSP filter must contain payload"; -+ results.insert(filter->csp_filter() -+ ? base::StringPiece(filter->csp_filter()->c_str(), -+ filter->csp_filter()->size()) -+ : base::StringPiece()); -+ } -+} -+ -+std::set InstalledSubscriptionImpl::FindRewriteFilters( -+ const GURL& url, -+ const std::string& document_domain, -+ FilterCategory category) const { -+ std::set result; -+ for (auto* filter : FindInternal(category != FilterCategory::Allowing -+ ? index_->url_rewrite_block() -+ : index_->url_rewrite_allow(), -+ url, absl::nullopt, document_domain, "", -+ category, FindStrategy::FindAll)) { -+ result.insert(RewriteUrl(filter->rewrite()->replace_with())); -+ } -+ return result; -+} -+ -+void InstalledSubscriptionImpl::FindHeaderFilters( -+ const GURL& url, -+ ContentType content_type, -+ const std::string& document_domain, -+ FilterCategory category, -+ std::set& results) const { -+ for (auto* filter : FindInternal(category != FilterCategory::Allowing -+ ? index_->url_header_block() -+ : index_->url_header_allow(), -+ url, content_type, document_domain, "", -+ category, FindStrategy::FindAll)) { -+ DCHECK(category == FilterCategory::Allowing || filter->header_filter()) -+ << "Blocking header filter must contain header_filter() payload"; -+ results.insert({base::StringPiece(filter->header_filter()->c_str(), -+ filter->header_filter()->size()), -+ GetSourceUrl()}); -+ } -+} -+ -+bool InstalledSubscriptionImpl::HasSpecialFilter( -+ SpecialFilterType type, -+ const GURL& url, -+ const std::string& document_domain, -+ const SiteKey& sitekey) const { -+ const UrlFilterIndex* index = nullptr; -+ switch (type) { -+ case SpecialFilterType::Document: -+ index = index_->url_document_allow(); -+ break; -+ case SpecialFilterType::Elemhide: -+ index = index_->url_elemhide_allow(); -+ break; -+ case SpecialFilterType::Genericblock: -+ index = index_->url_genericblock_allow(); -+ break; -+ case SpecialFilterType::Generichide: -+ index = index_->url_generichide_allow(); -+ break; -+ } -+ return !FindInternal(index, url, absl::nullopt, document_domain, -+ sitekey.value(), FilterCategory::Allowing, -+ FindStrategy::FindFirst) -+ .empty(); -+} -+ -+std::vector InstalledSubscriptionImpl::GetSelectorsForDomain( -+ const flat::ElemHideFiltersByDomain* category, -+ base::StringPiece domain) const { -+ TRACE_EVENT1("eyeo", "InstalledSubscriptionImpl::GetSelectorsForDomain", -+ "domain", domain); -+ -+ if (!category || !category->filter()) { -+ // No filters found for this domain. -+ return {}; -+ } -+ -+ std::vector selectors; -+ for (auto* filter : *category->filter()) { -+ const bool filter_disallowed_by_excludes = -+ // Some exclusions apply on this domain: -+ filter->exclude_domains()->size() > 0 && -+ // And those exclusions contain |domain| or one of its subdomains: -+ DomainOnList(domain, filter->exclude_domains()); -+ if (filter_disallowed_by_excludes) { -+ continue; -+ } -+ selectors.emplace_back(filter->selector()->c_str(), -+ filter->selector()->size()); -+ } -+ -+ return selectors; -+} -+ -+InstalledSubscription::Selectors -+InstalledSubscriptionImpl::GetElemhideSelectors(const GURL& url, -+ bool domain_specific) const { -+ Selectors result; -+ const std::string domain(base::ToLowerASCII(url.host())); -+ if (!domain_specific) { -+ result.elemhide_selectors = -+ GetSelectorsForDomain(index_->elemhide()->LookupByKey(""), domain); -+ result.elemhide_exceptions = GetSelectorsForDomain( -+ index_->elemhide_exception()->LookupByKey(""), domain); -+ } -+ -+ DomainSplitter domain_splitter(domain); -+ while (auto subdomain = domain_splitter.FindNextSubdomain()) { -+ auto specific_selectors = GetSelectorsForDomain( -+ index_->elemhide()->LookupByKey(subdomain->data()), domain); -+ std::move(specific_selectors.begin(), specific_selectors.end(), -+ std::back_inserter(result.elemhide_selectors)); -+ auto specific_exceptions = GetSelectorsForDomain( -+ index_->elemhide_exception()->LookupByKey(subdomain->data()), domain); -+ std::move(specific_exceptions.begin(), specific_exceptions.end(), -+ std::back_inserter(result.elemhide_exceptions)); -+ } -+ -+ return result; -+} -+ -+InstalledSubscription::Selectors -+InstalledSubscriptionImpl::GetElemhideEmulationSelectors( -+ const GURL& url) const { -+ const std::string& domain = url.host(); -+ Selectors result; -+ DomainSplitter domain_splitter(domain); -+ while (auto subdomain = domain_splitter.FindNextSubdomain()) { -+ auto elemhide_selectors = GetSelectorsForDomain( -+ index_->elemhide_emulation()->LookupByKey(subdomain->data()), domain); -+ std::move(elemhide_selectors.begin(), elemhide_selectors.end(), -+ std::back_inserter(result.elemhide_selectors)); -+ auto elemhide_exceptions = GetSelectorsForDomain( -+ index_->elemhide_exception()->LookupByKey(subdomain->data()), domain); -+ std::move(elemhide_exceptions.begin(), elemhide_exceptions.end(), -+ std::back_inserter(result.elemhide_exceptions)); -+ } -+ return result; -+} -+ -+std::vector InstalledSubscriptionImpl::FindInternal( -+ const UrlFilterIndex* index, -+ const GURL& url, -+ absl::optional content_type, -+ const std::string& document_domain, -+ const std::string& sitekey, -+ FilterCategory category, -+ FindStrategy strategy) const { -+ if (!index) { -+ // No filters of this type were parsed. -+ return {}; -+ } -+ const std::string& normalized_domain = -+ NeedsLowercasing(document_domain) ? base::ToLowerASCII(document_domain) -+ : document_domain; -+ const std::string normalized_sitekey = base::ToUpperASCII(sitekey); -+ const GURL& lowercase_url = -+ NeedsLowercasing(url.spec()) ? GURL(base::ToLowerASCII(url.spec())) : url; -+ const bool is_third_party_request = IsThirdParty(url, document_domain); -+ std::vector results; -+ -+ UrlKeywordExtractor keyword_extractor(lowercase_url.spec()); -+ while (auto current_keyword = keyword_extractor.GetNextKeyword()) { -+ FindFiltersForKeyword(index, *current_keyword, url, lowercase_url, -+ content_type, normalized_domain, normalized_sitekey, -+ category, is_third_party_request, strategy, results); -+ if (strategy == FindStrategy::FindFirst && !results.empty()) { -+ return results; -+ } -+ } -+ -+ FindFiltersForKeyword(index, "", url, lowercase_url, content_type, -+ normalized_domain, normalized_sitekey, category, -+ is_third_party_request, strategy, results); -+ return results; -+} -+ -+void InstalledSubscriptionImpl::FindFiltersForKeyword( -+ const UrlFilterIndex* index, -+ base::StringPiece keyword, -+ const GURL& url, -+ const GURL& lowercase_url, -+ absl::optional content_type, -+ const std::string& document_domain, -+ const std::string& sitekey, -+ FilterCategory category, -+ bool is_third_party_request, -+ FindStrategy strategy, -+ std::vector& out_results) const { -+ const auto* idx = index->LookupByKey(keyword.data()); -+ -+ if (!idx) { -+ return; -+ } -+ -+ for (const auto* filter : *(idx->filter())) { -+ if (!CandidateFilterViable(filter, content_type, document_domain, sitekey, -+ category, is_third_party_request)) { -+ continue; -+ } -+ -+ if (filter->pattern()->size() == 0u) { -+ // This filter applies to all URLs, assuming prior checks passed. -+ out_results.push_back(filter); -+ if (strategy == FindStrategy::FindFirst) { -+ return; -+ } -+ } -+ // During flatbuffer conversion, the pattern is lowercased for -+ // case-insensitive filters, and left in original form for case-sensitive -+ // filters. -+ const base::StringPiece pattern(filter->pattern()->c_str(), -+ filter->pattern()->size()); -+ if (const auto regex_pattern = ExtractRegexFilterFromPattern(pattern)) { -+ if (regex_matcher_->MatchesRegex(*regex_pattern, url, -+ filter->match_case())) { -+ out_results.push_back(filter); -+ if (strategy == FindStrategy::FindFirst) { -+ return; -+ } -+ } -+ } else { -+ const auto& normalized_url = filter->match_case() ? url : lowercase_url; -+ if (DoesPatternMatchUrl(pattern, normalized_url)) { -+ out_results.push_back(filter); -+ if (strategy == FindStrategy::FindFirst) { -+ return; -+ } -+ } -+ } -+ } -+} -+ -+bool InstalledSubscriptionImpl::CandidateFilterViable( -+ const flat::UrlFilter* candidate, -+ absl::optional content_type, -+ const std::string& document_domain, -+ const std::string& sitekey, -+ FilterCategory category, -+ bool is_third_party_request) const { -+ if (content_type && (candidate->resource_type() & *content_type) == 0) { -+ return false; -+ } -+ if (category == FilterCategory::DomainSpecificBlocking && -+ IsGenericFilter(candidate)) { -+ return false; -+ } -+ if (!CheckThirdParty(candidate, is_third_party_request)) { -+ return false; -+ } -+ if (!IsActiveOnDomain(candidate, document_domain, sitekey)) { -+ return false; -+ } -+ return true; -+} -+ -+bool InstalledSubscriptionImpl::CheckThirdParty( -+ const flat::UrlFilter* filter, -+ bool is_third_party_request) const { -+ switch (filter->third_party()) { -+ case flat::ThirdParty_Ignore: -+ // This filter applies to first- and third-party requests requests. -+ return true; -+ case flat::ThirdParty_FirstPartyOnly: -+ // This filter applies only to first-party requests. -+ return !is_third_party_request; -+ case flat::ThirdParty_ThirdPartyOnly: -+ // This filter applies only to third-party requests. -+ return is_third_party_request; -+ } -+} -+ -+bool InstalledSubscriptionImpl::IsGenericFilter( -+ const flat::UrlFilter* filter) const { -+ const auto* sitekeys = filter->sitekeys(); -+ DCHECK(sitekeys); -+ -+ if (sitekeys->size()) { -+ return false; -+ } -+ -+ return IsEmptyDomainAllowed(filter->include_domains(), -+ filter->exclude_domains()); -+} ++#include "base/ranges/algorithm.h" ++#include "base/strings/string_split.h" ++#include "base/strings/string_util.h" + -+bool InstalledSubscriptionImpl::IsActiveOnDomain( -+ const flat::UrlFilter* filter, -+ const std::string& document_domain, -+ const std::string& sitekey) const { -+ const auto* sitekeys = filter->sitekeys(); -+ DCHECK(sitekeys); ++namespace adblock { + -+ if (sitekeys->size() != 0u) { -+ if (std::none_of( -+ sitekeys->begin(), sitekeys->end(), [&sitekey](const auto* it) { -+ return base::StringPiece(it->c_str(), it->size()) == sitekey; -+ })) { -+ // This filter requires a sitekey, and the one provided doesn't match. -+ return false; -+ } -+ } ++namespace { + -+ const auto* include_domains = filter->include_domains(); -+ const auto* exclude_domains = filter->exclude_domains(); -+ return IsActiveOnDomain(document_domain, include_domains, exclude_domains); ++void RemoveDuplicates(std::vector& data) { ++ sort(data.begin(), data.end()); ++ auto unique_end = unique(data.begin(), data.end()); ++ data.erase(unique_end, data.end()); +} + -+bool InstalledSubscriptionImpl::IsActiveOnDomain( -+ const std::string& document_domain, -+ const Domains* include_domains, -+ const Domains* exclude_domains) const { -+ if (IsEmptyDomainAllowed(include_domains, exclude_domains)) { -+ return true; -+ } ++} // namespace + -+ // If |document_domain| matches any exclusion-type mapping for this filter, -+ // the filter may not be applied to this domain. -+ if (exclude_domains && DomainOnList(document_domain, exclude_domains)) { -+ return false; -+ } ++DomainOption::DomainOption() {} + -+ if (include_domains && include_domains->size()) { -+ if (DomainOnList(document_domain, include_domains)) { -+ return true; -+ } -+ return false; -+ } ++// static ++DomainOption DomainOption::FromString(base::StringPiece domains_list, ++ base::StringPiece separator) { ++ static const std::string_view kExclusionPrefix = "~"; ++ auto lower_domains_list = base::ToLowerASCII(domains_list); ++ auto domains = ++ base::SplitStringPiece(lower_domains_list, separator, ++ base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + -+ // But if there are no include requirements for the filter, only exclude -+ // domains, the filter applies. -+ return true; -+} ++ const auto first_include_domain_it = std::partition( ++ domains.begin(), domains.end(), [](base::StringPiece domain) { ++ return base::StartsWith(domain, kExclusionPrefix); ++ }); + -+bool InstalledSubscriptionImpl::IsEmptyDomainAllowed( -+ const Domains* include_domains, -+ const Domains* exclude_domains) const { -+ const bool has_no_exclude_domains = -+ !exclude_domains || exclude_domains->size() == 0u; -+ return // optimization: instead of checking domains->LookupByKey(""), just -+ // check first element is empty (list is sorted) -+ (!include_domains || !include_domains->size() || -+ !include_domains->Get(0)->size()) && -+ has_no_exclude_domains; -+} ++ std::vector exclude_domains(domains.begin(), ++ first_include_domain_it); ++ std::vector include_domains(first_include_domain_it, ++ domains.end()); + -+std::vector -+InstalledSubscriptionImpl::MatchSnippets( -+ const std::string& document_domain) const { -+ std::vector result; -+ if (!index_->snippet()) { -+ return result; ++ // Remove the ~ prefix that indicates an exclude domain. ++ for (auto& domain : exclude_domains) { ++ base::RemoveChars(domain, kExclusionPrefix, &domain); + } + -+ DomainSplitter domain_splitter(document_domain); -+ while (auto subdomain = domain_splitter.FindNextSubdomain()) { -+ const auto* idx = index_->snippet()->LookupByKey(subdomain->data()); ++ RemoveDuplicates(exclude_domains); ++ RemoveDuplicates(include_domains); + -+ if (!idx) { -+ continue; -+ } ++ return DomainOption(std::move(exclude_domains), std::move(include_domains)); ++} + -+ for (const auto* cur : (*idx->filter())) { -+ if (IsActiveOnDomain(document_domain, nullptr, cur->exclude_domains())) { -+ for (const auto* line : (*cur->script())) { -+ InstalledSubscription::Snippet obj; -+ obj.command = base::StringPiece(line->command()->c_str(), -+ line->command()->size()); -+ obj.arguments.reserve(line->arguments()->size()); ++const std::vector& DomainOption::GetExcludeDomains() const { ++ return exclude_domains_; ++} + -+ for (const auto* arg : (*line->arguments())) { -+ obj.arguments.emplace_back(arg->c_str(), arg->size()); -+ } ++const std::vector& DomainOption::GetIncludeDomains() const { ++ return include_domains_; ++} + -+ result.push_back(std::move(obj)); -+ } -+ } -+ } -+ } ++void DomainOption::RemoveDomainsWithNoSubdomain() { ++ exclude_domains_.erase( ++ base::ranges::remove_if( ++ exclude_domains_, ++ [](auto it) { return !HasSubdomainOrLocalhost(it); }), ++ exclude_domains_.end()); + -+ return result; ++ include_domains_.erase( ++ base::ranges::remove_if( ++ include_domains_, ++ [](auto it) { return !HasSubdomainOrLocalhost(it); }), ++ include_domains_.end()); +} + -+void InstalledSubscriptionImpl::MarkForPermanentRemoval() { -+ buffer_->PermanentlyRemoveSourceOnDestruction(); ++bool DomainOption::UnrestrictedByDomain() const { ++ return base::ranges::count_if(exclude_domains_, &HasSubdomainOrLocalhost) == ++ 0 && ++ base::ranges::count_if(include_domains_, &HasSubdomainOrLocalhost) == ++ 0; ++} ++ ++DomainOption::DomainOption(std::vector exclude_domains, ++ std::vector include_domains) ++ : exclude_domains_(std::move(exclude_domains)), ++ include_domains_(std::move(include_domains)) {} ++DomainOption::DomainOption(const DomainOption& other) = default; ++DomainOption::DomainOption(DomainOption&& other) = default; ++DomainOption& DomainOption::operator=(const DomainOption& other) = default; ++DomainOption& DomainOption::operator=(DomainOption&& other) = default; ++DomainOption::~DomainOption() = default; ++ ++// static ++bool DomainOption::HasSubdomainOrLocalhost(base::StringPiece domain) { ++ return (domain == "localhost") || ++ (domain.find(".") != base::StringPiece::npos); +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/installed_subscription_impl.h b/components/adblock/core/subscription/installed_subscription_impl.h +diff --git a/components/adblock/core/converter/parser/domain_option.h b/components/adblock/core/converter/parser/domain_option.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/installed_subscription_impl.h -@@ -0,0 +1,150 @@ ++++ b/components/adblock/core/converter/parser/domain_option.h +@@ -0,0 +1,59 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -23707,144 +11323,53 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_IMPL_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_DOMAIN_OPTION_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_DOMAIN_OPTION_H_ + -+#include -+#include ++#include +#include + -+#include "absl/types/optional.h" -+#include "base/memory/raw_ptr.h" +#include "base/strings/string_piece.h" + -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/schema/filter_list_schema_generated.h" -+#include "components/adblock/core/subscription/installed_subscription.h" -+#include "components/adblock/core/subscription/regex_matcher.h" -+ +namespace adblock { + -+// A flatbuffer-based implementation of Subscription. -+class InstalledSubscriptionImpl final : public InstalledSubscription { ++class DomainOption { + public: -+ InstalledSubscriptionImpl(std::unique_ptr buffer, -+ InstallationState installation_state, -+ base::Time installation_time); -+ // Subscription -+ GURL GetSourceUrl() const final; -+ std::string GetTitle() const final; -+ std::string GetCurrentVersion() const final; -+ InstallationState GetInstallationState() const final; -+ base::Time GetInstallationTime() const final; -+ base::TimeDelta GetExpirationInterval() const final; ++ DomainOption(); + -+ // InstalledSubscription -+ bool HasUrlFilter(const GURL& url, -+ const std::string& document_domain, -+ ContentType content_type, -+ const SiteKey& sitekey, -+ FilterCategory category) const final; -+ bool HasPopupFilter(const GURL& url, -+ const std::string& document_domain, -+ const SiteKey& sitekey, -+ FilterCategory category) const final; -+ bool HasSpecialFilter(SpecialFilterType type, -+ const GURL& url, -+ const std::string& document_domain, -+ const SiteKey& sitekey) const final; -+ void FindCspFilters(const GURL& url, -+ const std::string& document_domain, -+ FilterCategory category, -+ std::set& results) const final; -+ std::set FindRewriteFilters( -+ const GURL& url, -+ const std::string& document_domain, -+ FilterCategory category) const final; -+ void FindHeaderFilters(const GURL& url, -+ ContentType content_type, -+ const std::string& document_domain, -+ FilterCategory category, -+ std::set& results) const final; ++ static DomainOption FromString(base::StringPiece domains_list, ++ base::StringPiece separator); + -+ Selectors GetElemhideSelectors(const GURL& url, -+ bool domain_specific) const final; -+ Selectors GetElemhideEmulationSelectors(const GURL& url) const final; ++ DomainOption(const DomainOption& other); ++ DomainOption(DomainOption&& other); ++ DomainOption& operator=(const DomainOption& other); ++ DomainOption& operator=(DomainOption&& other); ++ ~DomainOption(); + -+ std::vector MatchSnippets( -+ const std::string& document_domain) const final; ++ const std::vector& GetExcludeDomains() const; ++ const std::vector& GetIncludeDomains() const; + -+ void MarkForPermanentRemoval() final; ++ void RemoveDomainsWithNoSubdomain(); ++ bool UnrestrictedByDomain() const; + + private: -+ friend class base::RefCountedThreadSafe; -+ ~InstalledSubscriptionImpl() final; -+ enum class FindStrategy { -+ FindFirst, -+ FindAll, -+ }; ++ DomainOption(std::vector exclude_domains, ++ std::vector include_domains); + -+ using UrlFilterIndex = -+ flatbuffers::Vector>; -+ using Domains = flatbuffers::Vector>; -+ // Finds the first filter in |category| that matches the remaining parameters. -+ // Finds all filters in category that matchers the remaining parameters. -+ std::vector FindInternal( -+ const UrlFilterIndex* index, -+ const GURL& url, -+ absl::optional content_type, -+ const std::string& document_domain, -+ const std::string& sitekey, -+ FilterCategory category, -+ FindStrategy strategy) const; -+ void FindFiltersForKeyword( -+ const UrlFilterIndex* index, -+ base::StringPiece keyword, -+ const GURL& url, -+ const GURL& lowercase_url, -+ absl::optional content_type, -+ const std::string& document_domain, -+ const std::string& sitekey, -+ FilterCategory category, -+ bool is_third_party_request, -+ FindStrategy strategy, -+ std::vector& out_results) const; -+ bool CandidateFilterViable(const flat::UrlFilter* candidate, -+ absl::optional content_type, -+ const std::string& document_domain, -+ const std::string& sitekey, -+ FilterCategory category, -+ bool is_third_party_request) const; -+ bool IsGenericFilter(const flat::UrlFilter* filter) const; -+ bool CheckThirdParty(const flat::UrlFilter* filter, -+ bool is_third_party_request) const; -+ bool IsActiveOnDomain(const flat::UrlFilter* filter, -+ const std::string& document_domain, -+ const std::string& sitekey) const; -+ bool IsActiveOnDomain(const std::string& document_domain, -+ const Domains* include_domains, -+ const Domains* exclude_domains) const; -+ bool IsEmptyDomainAllowed(const Domains* include_domains, -+ const Domains* exclude_domains) const; -+ std::vector GetSelectorsForDomain( -+ const flat::ElemHideFiltersByDomain* category, -+ base::StringPiece domain) const; ++ static bool HasSubdomainOrLocalhost(base::StringPiece domain); + -+ const std::unique_ptr buffer_; -+ const InstallationState installation_state_; -+ const base::Time installation_time_; -+ raw_ptr index_ = nullptr; -+ const std::unique_ptr regex_matcher_; ++ std::vector exclude_domains_; ++ std::vector include_domains_; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_IMPL_H_ -diff --git a/components/adblock/core/subscription/ongoing_subscription_request.h b/components/adblock/core/subscription/ongoing_subscription_request.h ++#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_DOMAIN_OPTION_H_ +diff --git a/components/adblock/core/converter/parser/filter_classifier.cc b/components/adblock/core/converter/parser/filter_classifier.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/ongoing_subscription_request.h -@@ -0,0 +1,50 @@ ++++ b/components/adblock/core/converter/parser/filter_classifier.cc +@@ -0,0 +1,39 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -23862,44 +11387,84 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_H_ -+ -+#include "base/files/file_path.h" -+#include "base/functional/callback.h" -+#include "services/network/public/cpp/simple_url_loader.h" ++#include "components/adblock/core/converter/parser/filter_classifier.h" + +namespace adblock { + -+// State machine of a download request of a single subscription (GET or HEAD). -+// It implements observing network state and retries. -+class OngoingSubscriptionRequest { -+ public: -+ using ResponseCallback = base::RepeatingCallback headers)>; -+ enum class Method { GET, HEAD }; ++// static ++FilterType FilterClassifier::FilterTypeFromString(base::StringPiece separator) { ++ if (base::StartsWith(separator, kElemHideFilterSeparator)) { ++ return FilterType::ElemHide; ++ } ++ if (base::StartsWith(separator, kElemHideExceptionFilterSeparator)) { ++ return FilterType::ElemHideException; ++ } ++ if (base::StartsWith(separator, kElemHideEmulationFilterSeparator)) { ++ return FilterType::ElemHideEmulation; ++ } ++ if (base::StartsWith(separator, kSnippetFilterSeparator)) { ++ return FilterType::Snippet; ++ } ++ return FilterType::Url; ++} + -+ virtual ~OngoingSubscriptionRequest() = default; ++} // namespace adblock +diff --git a/components/adblock/core/converter/parser/filter_classifier.h b/components/adblock/core/converter/parser/filter_classifier.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/converter/parser/filter_classifier.h +@@ -0,0 +1,46 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ + -+ virtual void Start(GURL url, -+ Method method, -+ ResponseCallback response_callback) = 0; -+ virtual void Retry() = 0; -+ virtual void Redirect(GURL redirect_url) = 0; ++#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_FILTER_CLASSIFIER_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_FILTER_CLASSIFIER_H_ + -+ virtual size_t GetNumberOfRedirects() const = 0; ++#include "base/strings/string_piece.h" ++#include "base/strings/string_util.h" ++ ++namespace adblock { ++ ++static constexpr char kElemHideFilterSeparator[] = "##"; ++static constexpr char kElemHideExceptionFilterSeparator[] = "#@#"; ++static constexpr char kElemHideEmulationFilterSeparator[] = "#?#"; ++static constexpr char kSnippetFilterSeparator[] = "#$#"; ++ ++enum class FilterType { ++ ElemHide, ++ ElemHideException, ++ ElemHideEmulation, ++ Snippet, ++ Url, ++}; ++ ++class FilterClassifier { ++ public: ++ static FilterType FilterTypeFromString(base::StringPiece separator); +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_H_ -diff --git a/components/adblock/core/subscription/ongoing_subscription_request_impl.cc b/components/adblock/core/subscription/ongoing_subscription_request_impl.cc ++#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_FILTER_CLASSIFIER_H_ +diff --git a/components/adblock/core/converter/parser/metadata.cc b/components/adblock/core/converter/parser/metadata.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/ongoing_subscription_request_impl.cc -@@ -0,0 +1,190 @@ ++++ b/components/adblock/core/converter/parser/metadata.cc +@@ -0,0 +1,145 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -23917,184 +11482,139 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/ongoing_subscription_request_impl.h" -+ -+#include ++#include "components/adblock/core/converter/parser/metadata.h" + -+#include "base/task/thread_pool.h" -+#include "base/trace_event/trace_event.h" -+#include "net/http/http_request_headers.h" -+#include "services/network/public/cpp/resource_request.h" -+#include "services/network/public/mojom/url_response_head.mojom.h" ++#include "base/logging.h" ++#include "base/ranges/algorithm.h" ++#include "base/strings/string_number_conversions.h" ++#include "base/strings/string_util.h" ++#include "third_party/re2/src/re2/re2.h" + +namespace adblock { -+namespace { -+ -+const net::NetworkTrafficAnnotationTag kTrafficAnnotation = -+ net::DefineNetworkTrafficAnnotation("adblock_subscription_download", R"( -+ semantics { -+ sender: "SubscriptionDownloaderImpl" -+ description: -+ "A request to download ad-blocking filter lists, as the user " -+ "selects a new filter list source or as a filter list update " -+ "is fetched." -+ trigger: -+ "Interval or when user selects a new filter list source" -+ data: -+ "Version (timestamp) of the filter list, if present. " -+ "Application name (ex. Chromium) " -+ "Application version (93.0.4572.0) " -+ destination: WEBSITE -+ } -+ policy { -+ cookies_allowed: NO -+ setting: -+ "You enable or disable this feature via 'Ad blocking' setting." -+ policy_exception_justification: "Not implemented." -+ })"); -+ -+} // namespace + -+OngoingSubscriptionRequestImpl::OngoingSubscriptionRequestImpl( -+ const net::BackoffEntry::Policy* backoff_policy, -+ scoped_refptr url_loader_factory) -+ : backoff_entry_(std::make_unique(backoff_policy)), -+ url_loader_factory_(url_loader_factory), -+ retry_timer_(std::make_unique()), -+ number_of_redirects_(0) { -+ net::NetworkChangeNotifier::AddNetworkChangeObserver(this); -+} -+ -+OngoingSubscriptionRequestImpl::~OngoingSubscriptionRequestImpl() { -+ if (!url_.is_empty()) { -+ VLOG(1) << "[eyeo] Cancelling download of " << url_; -+ } -+ net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); -+} ++// Parses the stream line by line until it finds comments. After the first non ++// comment line any upcoming comments will be skipped. ++// static ++absl::optional Metadata::FromStream(std::istream& filter_stream) { ++ static re2::RE2 comment_re("^!\\s*(.*?)\\s*:\\s*(.*)"); + -+void OngoingSubscriptionRequestImpl::Start(GURL url, -+ Method method, -+ ResponseCallback response_callback) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(url_.is_empty()) << "Start() called twice"; -+ url_ = std::move(url); -+ method_ = method; -+ response_callback_ = std::move(response_callback); -+ if (!net::NetworkChangeNotifier::IsOffline()) { -+ StartInternal(); -+ } -+} ++ std::string homepage; ++ std::string title; ++ std::string version; ++ absl::optional redirect_url; ++ base::TimeDelta expires = kDefaultExpirationInterval; + -+void OngoingSubscriptionRequestImpl::Retry() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(!url_.is_empty()) << "Retry() called before Start()"; -+ if (!url_loader_factory_) { -+ // This happens in unit tests that have no network. -+ return; ++ std::string line; ++ std::getline(filter_stream, line); ++ if (!IsValidAdblockHeader(line)) { ++ VLOG(1) << "[eyeo] Invalid filter list. Should start with [Adblock Plus " ++ ".]."; ++ return {}; + } -+ backoff_entry_->InformOfRequest(false); -+ VLOG(1) << "[eyeo] Will retry downloading " << url_ << " in " -+ << backoff_entry_->GetTimeUntilRelease(); -+ retry_timer_->Start( -+ FROM_HERE, backoff_entry_->GetTimeUntilRelease(), -+ base::BindOnce(&OngoingSubscriptionRequestImpl::StartInternal, -+ // Unretained is safe because destruction of |this| will -+ // remove |retry_timer_| and abort the callback. -+ base::Unretained(this))); -+} + -+void OngoingSubscriptionRequestImpl::Redirect(GURL redirect_url) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(!url_.is_empty()) << "Redirect() called before Start()"; -+ DCHECK(url_ != redirect_url) << "Invalid redirect. Same URL"; -+ VLOG(1) << "[eyeo] Will redirect " << url_ << " to " << redirect_url; -+ ++number_of_redirects_; -+ url_ = std::move(redirect_url); -+ StartInternal(); -+} ++ std::string key, value; ++ // Process stream until the line is a comment ++ auto position_in_stream = filter_stream.tellg(); ++ while (std::getline(filter_stream, line)) { ++ base::TrimWhitespaceASCII(line, base::TRIM_ALL, &line); ++ if (!re2::RE2::FullMatch(line, comment_re, &key, &value)) { ++ break; ++ } + -+size_t OngoingSubscriptionRequestImpl::GetNumberOfRedirects() const { -+ return number_of_redirects_; -+} ++ key = base::ToLowerASCII(key); ++ if (key == "homepage") { ++ homepage = value; ++ } else if (key == "redirect") { ++ auto url = GURL(value); ++ if (url.is_valid()) { ++ redirect_url = url; ++ } else { ++ VLOG(1) << "[eyeo] Invalid redirect URL: " << value ++ << ". Will not redirect."; ++ } ++ } else if (key == "title") { ++ title = value; ++ } else if (key == "version") { ++ version = value; ++ } else if (key == "expires") { ++ expires = ParseExpirationTime(value); ++ } + -+void OngoingSubscriptionRequestImpl::StartInternal() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ TRACE_EVENT_NESTABLE_ASYNC_BEGIN2("eyeo", "Downloading subscription", this, -+ "url", url_.spec(), "method", -+ MethodToString()); -+ if (!url_loader_factory_) { -+ // This happens in unit tests that have no network. The request will hang -+ // indefinitely. -+ return; ++ position_in_stream = filter_stream.tellg(); + } -+ VLOG(1) << "[eyeo] Downloading " << url_; -+ auto request = std::make_unique(); -+ request->url = url_; -+ request->method = MethodToString(); -+ loader_ = -+ network::SimpleURLLoader::Create(std::move(request), kTrafficAnnotation); + -+ if (method_ == Method::GET) { -+ loader_->DownloadToTempFile( -+ url_loader_factory_.get(), -+ base::BindOnce(&OngoingSubscriptionRequestImpl::OnDownloadFinished, -+ // Unretained is safe because destruction of |this| will -+ // remove |loader_| and will abort the callback. -+ base::Unretained(this))); -+ } else { -+ loader_->DownloadHeadersOnly( -+ url_loader_factory_.get(), -+ base::BindOnce(&OngoingSubscriptionRequestImpl::OnHeadersReceived, -+ base::Unretained(this))); -+ } -+} ++ // NOTE: Rewind stream after last header line ++ filter_stream.seekg(position_in_stream, std::ios_base::beg); + -+void OngoingSubscriptionRequestImpl::OnDownloadFinished( -+ base::FilePath downloaded_file) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ TRACE_EVENT_NESTABLE_ASYNC_END0("eyeo", "Downloading subscription", this); -+ GURL::Replacements strip_query; -+ strip_query.ClearQuery(); -+ GURL url = url_.ReplaceComponents(strip_query); -+ response_callback_.Run( -+ url, std::move(downloaded_file), -+ loader_->ResponseInfo() ? loader_->ResponseInfo()->headers : nullptr); -+ // response_callback_ may delete this, do not call any member variables now. ++ return Metadata(std::move(homepage), std::move(title), std::move(version), ++ std::move(redirect_url), std::move(expires)); +} + -+void OngoingSubscriptionRequestImpl::OnHeadersReceived( -+ scoped_refptr headers) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ TRACE_EVENT_NESTABLE_ASYNC_END0("eyeo", "Downloading subscription", this); -+ response_callback_.Run(GURL(), base::FilePath(), headers); -+ // response_callback_ may delete this, do not call any member variables now. ++// static ++Metadata Metadata::Default() { ++ Metadata metadata; ++ return metadata; +} + -+const char* OngoingSubscriptionRequestImpl::MethodToString() const { -+ return method_ == Method::GET ? net::HttpRequestHeaders::kGetMethod -+ : net::HttpRequestHeaders::kHeadMethod; -+} ++Metadata::Metadata(std::string homepage, ++ std::string title, ++ std::string version, ++ absl::optional redirect_url, ++ base::TimeDelta expires) ++ : homepage(std::move(homepage)), ++ title(std::move(title)), ++ version(std::move(version)), ++ redirect_url(std::move(redirect_url)), ++ expires(std::move(expires)) {} + -+bool OngoingSubscriptionRequestImpl::IsStarted() const { -+ return loader_ != nullptr || retry_timer_->IsRunning(); ++Metadata::Metadata() : expires(kDefaultExpirationInterval) {} ++Metadata::Metadata(const Metadata& other) = default; ++Metadata::Metadata(Metadata&& other) = default; ++Metadata::~Metadata() = default; ++ ++// static ++bool Metadata::IsValidAdblockHeader(const std::string& adblock_header) { ++ static re2::RE2 adblock_header_re("^\\[Adblock.*\\]"); ++ std::string adblock_header_trimmed; ++ ++ base::TrimWhitespaceASCII(adblock_header, base::TRIM_ALL, ++ &adblock_header_trimmed); ++ if (!re2::RE2::FullMatch(re2::StringPiece(adblock_header_trimmed.data(), ++ adblock_header_trimmed.size()), ++ adblock_header_re)) { ++ return false; ++ } ++ return true; +} + -+void OngoingSubscriptionRequestImpl::OnNetworkChanged( -+ net::NetworkChangeNotifier::ConnectionType connection_type) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ if (!IsStarted() && !url_.is_empty() && -+ !net::NetworkChangeNotifier::IsOffline()) { -+ StartInternal(); -+ DCHECK(IsStarted()); ++// NOTE: This is done by the logic described here: ++// https://eyeo.gitlab.io/adblockplus/abc/core-spec/#appendix-filter-list-syntax ++// static ++base::TimeDelta Metadata::ParseExpirationTime( ++ const std::string& expiration_value) { ++ static re2::RE2 expiration_time_re("\\s*([0-9]+)\\s*(h)?.*"); ++ std::string expiration_unit; ++ uint64_t expiration_time; ++ ++ if (!re2::RE2::FullMatch(expiration_value, expiration_time_re, ++ &expiration_time, &expiration_unit)) { ++ VLOG(1) << "[eyeo] Invalid expiration time format: " << expiration_value ++ << ". Will use default value of " ++ << kDefaultExpirationInterval.InDays() << " days."; ++ return kDefaultExpirationInterval; + } ++ return base::ranges::clamp(expiration_unit == "h" ++ ? base::Hours(expiration_time) ++ : base::Days(expiration_time), ++ kMinExpirationInterval, kMaxExpirationInterval); +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/ongoing_subscription_request_impl.h b/components/adblock/core/subscription/ongoing_subscription_request_impl.h +diff --git a/components/adblock/core/converter/parser/metadata.h b/components/adblock/core/converter/parser/metadata.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/ongoing_subscription_request_impl.h -@@ -0,0 +1,74 @@ ++++ b/components/adblock/core/converter/parser/metadata.h +@@ -0,0 +1,64 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -24112,68 +11632,58 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_IMPL_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_METADATA_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_METADATA_H_ + ++#include +#include + -+#include "base/functional/callback.h" -+ -+#include "base/files/file_path.h" -+#include "base/timer/timer.h" -+#include "components/adblock/core/subscription/ongoing_subscription_request.h" -+#include "components/adblock/core/subscription/subscription_downloader.h" -+#include "net/base/backoff_entry.h" -+#include "net/base/network_change_notifier.h" -+#include "services/network/public/cpp/shared_url_loader_factory.h" -+#include "services/network/public/cpp/simple_url_loader.h" ++#include "base/time/time.h" ++#include "third_party/abseil-cpp/absl/types/optional.h" ++#include "url/gurl.h" + +namespace adblock { + -+class OngoingSubscriptionRequestImpl final -+ : public OngoingSubscriptionRequest, -+ public net::NetworkChangeNotifier::NetworkChangeObserver { ++class Metadata { + public: -+ OngoingSubscriptionRequestImpl( -+ const net::BackoffEntry::Policy* backoff_policy, -+ scoped_refptr url_loader_factory); -+ ~OngoingSubscriptionRequestImpl() final; -+ void Start(GURL url, Method method, ResponseCallback response_callback) final; -+ void Retry() final; -+ void Redirect(GURL redirect_url) final; ++ static absl::optional FromStream(std::istream& filter_stream); ++ static Metadata Default(); + -+ size_t GetNumberOfRedirects() const final; ++ Metadata(const Metadata& other); ++ Metadata(Metadata&& other); ++ ~Metadata(); + -+ // NetworkChangeObserver: -+ void OnNetworkChanged( -+ net::NetworkChangeNotifier::ConnectionType connection_type) final; ++ const std::string homepage; ++ const std::string title; ++ const std::string version; ++ const absl::optional redirect_url; ++ const base::TimeDelta expires; ++ ++ static constexpr base::TimeDelta kDefaultExpirationInterval = base::Days(5); ++ static constexpr base::TimeDelta kMaxExpirationInterval = base::Days(14); ++ static constexpr base::TimeDelta kMinExpirationInterval = base::Hours(1); + + private: -+ bool IsStarted() const; -+ void StartInternal(); -+ void OnDownloadFinished(base::FilePath downloaded_file); -+ void OnHeadersReceived(scoped_refptr headers); -+ const char* MethodToString() const; ++ Metadata(std::string homepage, ++ std::string title, ++ std::string version, ++ absl::optional redirect_url, ++ base::TimeDelta expires); ++ Metadata(); + -+ SEQUENCE_CHECKER(sequence_checker_); -+ std::unique_ptr backoff_entry_; -+ scoped_refptr url_loader_factory_; -+ GURL url_; -+ Method method_ = Method::GET; -+ ResponseCallback response_callback_; -+ std::unique_ptr loader_; -+ std::unique_ptr retry_timer_; -+ size_t number_of_redirects_; ++ static bool IsValidAdblockHeader(const std::string& adblock_header); ++ static base::TimeDelta ParseExpirationTime( ++ const std::string& expiration_value); +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_IMPL_H_ -diff --git a/components/adblock/core/subscription/pattern_matcher.cc b/components/adblock/core/subscription/pattern_matcher.cc ++#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_METADATA_H_ +diff --git a/components/adblock/core/converter/parser/snippet_filter.cc b/components/adblock/core/converter/parser/snippet_filter.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/pattern_matcher.cc -@@ -0,0 +1,265 @@ ++++ b/components/adblock/core/converter/parser/snippet_filter.cc +@@ -0,0 +1,62 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -24191,259 +11701,107 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/pattern_matcher.h" ++#include "components/adblock/core/converter/parser/snippet_filter.h" + -+#include "absl/types/optional.h" +#include "base/logging.h" -+#include "base/notreached.h" -+#include "base/ranges/algorithm.h" -+#include "base/strings/string_piece.h" -+#include "base/strings/string_util.h" -+#include "components/adblock/core/common/regex_filter_pattern.h" + +namespace adblock { -+namespace { -+ -+constexpr int kMaxRecursionDepth = 50; + -+bool CharacterIsValidSeparator(char c) { -+ // The separator character can be anything but a letter, a digit, or one of -+ // the following: _, -, ., % -+ return !base::IsAsciiAlphaNumeric(c) && -+ base::StringPiece("_-.%").find(c) == base::StringPiece::npos; -+} ++static constexpr char kDomainSeparator[] = ","; + -+// Returns if |candidate| (e.g. "https://sub") is a valid start of |url|'s host. -+// If url is "https://sub.domain.com/path" then: -+// Valid candidates: -+// - https:// -+// - https://sub. -+// - https://sub.domain. -+// - https://sub.domain.com -+// Invalid candidates: -+// - https://s -+// - https://sub -+// - https://sub.domain.com/ -+// - https://sub.domain.com/p -+bool IsValidStartOfHost(base::StringPiece candidate, const GURL& url) { -+ const GURL trimmed_url = url.GetWithEmptyPath(); -+ if (url.has_scheme()) { -+ DCHECK(base::StartsWith(candidate, url.scheme_piece())); -+ candidate = candidate.substr(url.scheme_piece().size()); ++// static ++absl::optional SnippetFilter::FromString( ++ base::StringPiece domain_list, ++ base::StringPiece snippet) { ++ if (snippet.empty()) { ++ VLOG(1) << "[eyeo] Filter has no snippet script."; ++ return {}; + } -+ candidate = -+ base::TrimString(candidate, ":/", base::TrimPositions::TRIM_LEADING); -+ return candidate.empty() || candidate == url.host_piece() || -+ (base::EndsWith(candidate, ".") && -+ candidate.find_first_of("/") == base::StringPiece::npos); -+} -+ -+class PatternTokenizer { -+ public: -+ explicit PatternTokenizer(base::StringPiece filter_pattern) -+ : consumed_filter_pattern_(filter_pattern) {} + -+ base::StringPiece NextToken() { -+ if (consumed_filter_pattern_.empty()) { -+ return {}; -+ } -+ // If the previous call left us on a wildcard character, return it and -+ // and advance to first non-wildcard position. -+ if (consumed_filter_pattern_[0] == '*') { -+ consumed_filter_pattern_ = -+ base::TrimString(consumed_filter_pattern_, "*", base::TRIM_LEADING); -+ return "*"; -+ } -+ // If the previous call left us on a ^ separator, return it and advance -+ if (consumed_filter_pattern_[0] == '^') { -+ consumed_filter_pattern_ = consumed_filter_pattern_.substr(1); -+ return "^"; -+ } -+ // If the previous call left us on a | anchor (or anchors), return it and -+ // advance to first non-anchor position. -+ if (consumed_filter_pattern_[0] == '|') { -+ const auto token = consumed_filter_pattern_.substr( -+ 0, consumed_filter_pattern_.find_first_not_of("|")); -+ consumed_filter_pattern_ = consumed_filter_pattern_.substr(token.size()); -+ return token; -+ } ++ DomainOption domains = ++ DomainOption::FromString(domain_list, kDomainSeparator); ++ // Snippet filters require that the domains have ++ // at least one subdomain or is localhost ++ domains.RemoveDomainsWithNoSubdomain(); ++ if (domains.GetIncludeDomains().empty()) { ++ VLOG(1) << "Snippet " ++ "filters require include domains."; ++ return {}; ++ } + -+ // The next token is whatever characters are between current position and -+ // the next separator (or EOF) -+ const auto next_token = consumed_filter_pattern_.substr( -+ 0, consumed_filter_pattern_.find_first_of(kSeparators)); -+ // Advance to next token. -+ consumed_filter_pattern_ = -+ consumed_filter_pattern_.substr(next_token.size()); -+ return next_token; ++ auto snippet_script = SnippetTokenizer::Tokenize(snippet); ++ if (snippet_script.empty()) { ++ VLOG(1) << "Could not tokenize snippet script"; ++ return {}; + } + -+ private: -+ constexpr static base::StringPiece kSeparators{"*^|"}; -+ // The tokenizer consumes |consumed_filter_pattern_| from the left as it -+ // advances. This is cheap, just incrementing the begin index. -+ base::StringPiece consumed_filter_pattern_; -+}; ++ return SnippetFilter(std::move(snippet_script), std::move(domains)); ++} + -+absl::optional FindNextTokenInInput( -+ base::StringPiece consumed_input, -+ PatternTokenizer tokenizer, -+ int recursion_depth); ++SnippetFilter::SnippetFilter(SnippetTokenizer::SnippetScript snippet_script, ++ DomainOption domains) ++ : snippet_script(std::move(snippet_script)), domains(std::move(domains)) {} ++SnippetFilter::SnippetFilter(const SnippetFilter& other) = default; ++SnippetFilter::SnippetFilter(SnippetFilter&& other) = default; ++SnippetFilter::~SnippetFilter() = default; + -+// Check if |consumed_input| starts with next token from |tokenizer| and -+// continues matching subsequent tokens (recursively). -+bool NextTokenBeginsInput(base::StringPiece consumed_input, -+ PatternTokenizer tokenizer, -+ int recursion_depth) { -+ if (++recursion_depth > kMaxRecursionDepth) { -+ return false; -+ } -+ const auto token = tokenizer.NextToken(); -+ if (token.empty()) { -+ // Matching finished, no more tokens in the filter. -+ return true; -+ } -+ if (token == "^") { -+ // The next character must either be a valid separator, or EOF. "^" matches -+ // either. -+ if (!consumed_input.empty()) { -+ // This is not an EOF, ^ must match a valid separator, followed by -+ // subsequent matching tokens. -+ return CharacterIsValidSeparator(consumed_input[0]) && -+ NextTokenBeginsInput(consumed_input.substr(1), tokenizer, -+ recursion_depth); -+ } -+ // ^ is a valid match for EOF, but only if there aren't any tokens left -+ // that want to match text. -+ return NextTokenBeginsInput({}, tokenizer, recursion_depth); -+ } else if (token == "*") { -+ // The next characters can be anything, as long as subsequent tokens are -+ // matched further in |consumed_input| (recursively). -+ return FindNextTokenInInput(consumed_input, tokenizer, recursion_depth) -+ .has_value(); -+ } else if (token == "|") { -+ // "|" is an end-of-URL anchor, verify we indeed reached end of input. -+ // TODO(mpawlowski) A literal "|"" character can occur in a URL, we should -+ // probably check this as well: DPD-1755. -+ return consumed_input.empty(); -+ } else { -+ // The next characters should exactly match the token, and then subsequent -+ // tokens must continue matching the input. -+ if (!base::StartsWith(consumed_input, token)) { -+ return false; -+ } -+ return NextTokenBeginsInput(consumed_input.substr(token.size()), tokenizer, -+ recursion_depth); -+ } -+} ++} // namespace adblock +diff --git a/components/adblock/core/converter/parser/snippet_filter.h b/components/adblock/core/converter/parser/snippet_filter.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/converter/parser/snippet_filter.h +@@ -0,0 +1,46 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ + -+// Returns characters skipped in order to reach next token from |tokenizer|, or -+// nullopt if not found. -+absl::optional FindNextTokenInInput( -+ base::StringPiece consumed_input, -+ PatternTokenizer tokenizer, -+ int recursion_depth) { -+ if (++recursion_depth > kMaxRecursionDepth) { -+ return absl::nullopt; -+ } -+ const auto token = tokenizer.NextToken(); -+ // We're searching for |token| anywhere inside |consumed_input|, we may skip -+ // any number of characters while we try to find it. -+ DCHECK(token != "*") << "PatternTokenizer failed to handle multiple " -+ "consecutive wildcards in the filter pattern"; -+ if (token == "^") { -+ // We're looking for input that matches the ^ separator, followed by next -+ // tokens (recursively). -+ // It is possible that the first separator we find won't be followed by the -+ // correct next token. This is ok, this algorithm cannot be greedy. Keep -+ // skipping characters until we match a separator followed by subsequent -+ // tokens. -+ for (size_t i = 0; i < consumed_input.size(); i++) { -+ if (!CharacterIsValidSeparator(consumed_input[i])) { -+ continue; -+ } -+ if (NextTokenBeginsInput(consumed_input.substr(i + 1), tokenizer, -+ recursion_depth)) { -+ return consumed_input.substr(0, i + 1); -+ } -+ } -+ // Reached the end of the input without matching a valid separator (that was -+ // followed by the right tokens, recursively). -+ // It is OK as long as there are no further tokens that require matching -+ // input. The "^" symbol matches EOF too. -+ return NextTokenBeginsInput(base::StringPiece(), tokenizer, recursion_depth) -+ ? absl::optional{consumed_input} -+ : absl::nullopt; -+ } else if (token == "|") { -+ // If we're skipping characters, we can always skip enough to reach the end -+ // anchor. -+ return consumed_input; -+ } else { -+ // The searched token is just ASCII text. Keep searching for occurrences of -+ // it within consumed_input. -+ for (auto match_pos = consumed_input.find(token); -+ match_pos != base::StringPiece::npos; -+ match_pos = consumed_input.find(token, match_pos + 1)) { -+ if (NextTokenBeginsInput(consumed_input.substr(match_pos + token.size()), -+ tokenizer, recursion_depth)) { -+ return consumed_input.substr(0, match_pos); -+ } -+ // If the first occurrence of token inside consumed_input isn't the right -+ // one, keep looking. Subsequent tokens didn't match, but the algorithm is -+ // not greedy, there might be another match. -+ } ++#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_FILTER_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_FILTER_H_ + -+ return absl::nullopt; -+ } -+} ++#include "components/adblock/core/converter/parser/domain_option.h" ++#include "components/adblock/core/converter/parser/snippet_tokenizer.h" ++#include "third_party/abseil-cpp/absl/types/optional.h" + -+} // namespace ++namespace adblock { + -+bool DoesPatternMatchUrl(base::StringPiece filter_pattern, const GURL& url) { -+ DCHECK(!ExtractRegexFilterFromPattern(filter_pattern)) -+ << "This function does not support regular expressions filters"; -+ const base::StringPiece input(url.spec()); -+ PatternTokenizer tokenizer(filter_pattern); -+ const auto first_token = tokenizer.NextToken(); -+ if (first_token == "|") { -+ return NextTokenBeginsInput(input, tokenizer, 0); -+ } else if (first_token == "||") { -+ { -+ // If the next token is *, we discard the start-from-host anchor, behave -+ // as if the filter started from * -+ auto empty_or_wildcard_tokenizer = tokenizer; -+ const auto token = empty_or_wildcard_tokenizer.NextToken(); -+ if (token == "*") { -+ return FindNextTokenInInput(input, empty_or_wildcard_tokenizer, 0) -+ .has_value(); -+ } -+ // If the next token is empty we have a filter "||" matching any domain. -+ if (token.empty()) { -+ return true; -+ } -+ } -+ const auto skipped_characters = FindNextTokenInInput(input, tokenizer, 0); -+ if (!skipped_characters) { -+ return false; -+ } -+ return IsValidStartOfHost(*skipped_characters, url); ++class SnippetFilter { ++ public: ++ static absl::optional FromString(base::StringPiece domain_list, ++ base::StringPiece snippet); + -+ } else if (first_token == "*") { -+ return FindNextTokenInInput(input, tokenizer, 0).has_value(); -+ } else { -+ // Behave as if the first token is a wildcard, recreate tokenizer to restart -+ // from the first token. -+ return FindNextTokenInInput(input, PatternTokenizer(filter_pattern), 0) -+ .has_value(); -+ } -+} ++ SnippetFilter(const SnippetFilter& other); ++ SnippetFilter(SnippetFilter&& other); ++ ~SnippetFilter(); ++ ++ const SnippetTokenizer::SnippetScript snippet_script; ++ const DomainOption domains; ++ ++ private: ++ SnippetFilter(SnippetTokenizer::SnippetScript snippet_script, ++ DomainOption domains); ++}; + +} // namespace adblock -diff --git a/components/adblock/core/subscription/pattern_matcher.h b/components/adblock/core/subscription/pattern_matcher.h ++ ++#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_FILTER_H_ +diff --git a/components/adblock/core/converter/parser/snippet_tokenizer.cc b/components/adblock/core/converter/parser/snippet_tokenizer.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/pattern_matcher.h -@@ -0,0 +1,33 @@ ++++ b/components/adblock/core/converter/parser/snippet_tokenizer.cc +@@ -0,0 +1,103 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -24461,27 +11819,97 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PATTERN_MATCHER_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PATTERN_MATCHER_H_ ++#include "components/adblock/core/converter/parser/snippet_tokenizer.h" + -+#include "url/gurl.h" ++#include "base/strings/string_number_conversions.h" ++#include "base/strings/string_util.h" ++#include "base/strings/utf_string_conversion_utils.h" ++#include "base/third_party/icu/icu_utf.h" + +namespace adblock { + -+// Returns whether the URL is matched by a filter pattern. -+// Example: filter_pattern "||example.com^" will match url -+// "https://subdomain/example.com/path.png" -+// filter_pattern must NOT be a regex filter -+bool DoesPatternMatchUrl(base::StringPiece filter_pattern, const GURL& url); ++SnippetTokenizer::SnippetScript SnippetTokenizer::Tokenize( ++ base::StringPiece input) { ++ SnippetScript script; ++ std::string token; ++ std::vector arguments; ++ bool escape = false; ++ bool quotes_just_closed = false; ++ bool within_quotes = false; ++ for (char ch : input) { ++ if (escape) { ++ AddEscapeChar(token, ch); ++ escape = false; ++ quotes_just_closed = false; ++ } else if (ch == '\\') { ++ escape = true; ++ quotes_just_closed = false; ++ } else if (ch == '\'') { ++ within_quotes = !within_quotes; ++ quotes_just_closed = !within_quotes; ++ } else if (within_quotes || (ch != ';' && !base::IsAsciiWhitespace(ch))) { ++ token += ch; ++ quotes_just_closed = false; ++ } else { ++ AddArgument(arguments, token, quotes_just_closed); ++ if (ch == ';') { ++ AddFunctionCall(script, arguments, within_quotes, escape); ++ } ++ quotes_just_closed = false; ++ } ++ } ++ AddArgument(arguments, token, quotes_just_closed); ++ AddFunctionCall(script, arguments, within_quotes, escape); ++ return script; ++} + -+} // namespace adblock ++void SnippetTokenizer::AddEscapeChar(std::string& token, char ch) { ++ switch (ch) { ++ case 'r': ++ token += '\r'; ++ break; ++ case 'n': ++ token += '\n'; ++ break; ++ case 't': ++ token += '\t'; ++ break; ++ case 'u': ++ token += "\\u"; ++ break; ++ default: ++ token += ch; ++ } ++} + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PATTERN_MATCHER_H_ -diff --git a/components/adblock/core/subscription/preloaded_subscription_provider.h b/components/adblock/core/subscription/preloaded_subscription_provider.h ++void SnippetTokenizer::AddArgument(std::vector& arguments, ++ std::string& token, ++ bool quotes_just_closed) { ++ if (quotes_just_closed || !token.empty()) { ++ arguments.push_back(token); ++ token.clear(); ++ } ++} ++ ++void SnippetTokenizer::AddFunctionCall(SnippetScript& script, ++ std::vector& arguments, ++ bool within_quotes, ++ bool escape) { ++ // if within quote whole script is invalid ++ // or if detected escape char but ended ++ if (arguments.empty() || within_quotes || escape) { ++ return; ++ } ++ script.push_back(arguments); ++ arguments.clear(); ++} ++ ++} // namespace adblock +diff --git a/components/adblock/core/converter/parser/snippet_tokenizer.h b/components/adblock/core/converter/parser/snippet_tokenizer.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/preloaded_subscription_provider.h -@@ -0,0 +1,56 @@ ++++ b/components/adblock/core/converter/parser/snippet_tokenizer.h +@@ -0,0 +1,47 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -24499,50 +11927,41 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_TOKENIZER_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_TOKENIZER_H_ + ++#include +#include + -+#include "base/memory/scoped_refptr.h" -+#include "components/adblock/core/subscription/installed_subscription.h" -+#include "components/keyed_service/core/keyed_service.h" -+#include "url/gurl.h" ++#include "base/strings/string_piece.h" + +namespace adblock { + -+// Provides temporary preloaded subscriptions when needed. -+// Preloaded subscriptions are filter lists bundled with the browser. They can -+// be used to provide some level of ad-filtering while waiting for the download -+// of up-to-date filter lists from the Internet. -+class PreloadedSubscriptionProvider { ++class SnippetTokenizer { + public: -+ virtual ~PreloadedSubscriptionProvider() = default; ++ using SnippetScript = std::vector>; + -+ // The collection of preloaded subscriptions returned by -+ // |GetCurrentPreloadedSubscriptions()| is built by comparing the list of -+ // installed (ie. available) subscriptions with the list of pending (ie. -+ // desired) subscriptions. -+ virtual void UpdateSubscriptions(std::vector installed_subscriptions, -+ std::vector pending_subscriptions) = 0; ++ static SnippetScript Tokenize(base::StringPiece input); + -+ // Returns preloaded subscriptions that were deemed necessary, based on the -+ // difference between pending and installed subscriptions, to provide relevant -+ // temporary ad-filtering. This may include easylist.txt and -+ // exceptionrules.txt. The subscriptions are kept in memory and released when -+ // no longer needed. -+ virtual std::vector> -+ GetCurrentPreloadedSubscriptions() const = 0; ++ private: ++ static void AddEscapeChar(std::string& token, char ch); ++ static void AddArgument(std::vector& arguments, ++ std::string& token, ++ bool quotes_just_closed); ++ static void AddFunctionCall(SnippetScript& script, ++ std::vector& arguments, ++ bool within_quotes, ++ bool escape); +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_H_ -diff --git a/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc b/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc ++#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_SNIPPET_TOKENIZER_H_ +diff --git a/components/adblock/core/converter/parser/url_filter.cc b/components/adblock/core/converter/parser/url_filter.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc -@@ -0,0 +1,121 @@ ++++ b/components/adblock/core/converter/parser/url_filter.cc +@@ -0,0 +1,218 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -24560,115 +11979,212 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/preloaded_subscription_provider_impl.h" ++#include "components/adblock/core/converter/parser/url_filter.h" + -+#include "base/functional/bind.h" +#include "base/logging.h" -+#include "base/memory/scoped_refptr.h" -+#include "base/ranges/algorithm.h" -+#include "base/strings/pattern.h" -+#include "base/strings/string_piece.h" -+#include "base/trace_event/trace_event.h" -+#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/subscription/installed_subscription_impl.h" -+#include "components/adblock/core/subscription/subscription.h" -+#include "components/adblock/core/subscription/subscription_config.h" ++#include "base/strings/string_util.h" ++#include "components/adblock/core/common/regex_filter_pattern.h" ++#include "third_party/icu/source/i18n/unicode/regex.h" ++#include "third_party/re2/src/re2/re2.h" + +namespace adblock { +namespace { + -+bool HasSubscriptionWithMatchingUrl(const std::vector& collection, -+ base::StringPiece pattern) { -+ return std::find_if(collection.begin(), collection.end(), -+ [pattern](const GURL& url) { -+ return base::MatchPattern(url.spec(), pattern); -+ }) != collection.end(); ++// Converts patterns like ||abc.com/aa|bb into ||abc.com/aa%7Cbb. ++// Non-anchor pipe characters must be escaped to properly match components of ++// a URL. GURL escapes "|" as seen in url/url_canon_path.cc ++// Pipe characters in anchor position (beginning & end) must be left as-is, in ++// order for the tokenizer to see them as anchors. ++std::string SanitizePipeCharacters(std::string pattern) { ++ auto piece = base::StringPiece(pattern); ++ // Skip up to 2 leading | characters, they are treated as anchors. These ++ // may not be replaced by the escaped variant. ++ int number_of_left_anchors = 0; ++ if (base::StartsWith(piece, "|")) { ++ number_of_left_anchors++; ++ piece.remove_prefix(1); ++ } ++ if (base::StartsWith(piece, "|")) { ++ number_of_left_anchors++; ++ piece.remove_prefix(1); ++ } ++ // Skip up to one trailing | characters, this is the right anchor. ++ bool pattern_has_right_anchor = base::EndsWith(piece, "|"); ++ if (pattern_has_right_anchor) { ++ piece.remove_suffix(1); ++ } ++ if (piece.find('|') == base::StringPiece::npos) { ++ // The most common case, pattern has no pipe characters apart from anchors. ++ // Avoid allocating new strings, pass the input out. ++ return pattern; ++ } ++ // Escape instances of | the same way GURL does it. ++ std::string output; ++ CHECK(base::ReplaceChars(piece, "|", R"(%7C)", &output)); ++ // Re-add the unmodified anchors. ++ for (int i = 0; i < number_of_left_anchors; i++) { ++ output.insert(output.begin(), '|'); ++ } ++ if (pattern_has_right_anchor) { ++ output.push_back('|'); ++ } ++ return output; +} + +} // namespace + -+class PreloadedSubscriptionProviderImpl::SingleSubscriptionProvider { -+ public: -+ explicit SingleSubscriptionProvider(PreloadedSubscriptionInfo info) -+ : info_(info) {} ++static constexpr char kAllowingSymbol[] = "@@"; ++static constexpr char kOptionSymbol = '$'; + -+ void UpdatePreloadedSubscription( -+ const std::vector& installed_subscriptions, -+ const std::vector& pending_subscriptions) { -+ const bool needs_subscription = -+ HasSubscriptionWithMatchingUrl(pending_subscriptions, -+ info_.url_pattern) && -+ !HasSubscriptionWithMatchingUrl(installed_subscriptions, -+ info_.url_pattern); -+ if (needs_subscription && !subscription_) { -+ TRACE_EVENT1("eyeo", "Creating preloaded subscription", "url_pattern", -+ info_.url_pattern); -+ subscription_ = base::MakeRefCounted( -+ utils::MakeFlatbufferDataFromResourceBundle( -+ info_.flatbuffer_resource_id), -+ Subscription::InstallationState::Preloaded, base::Time()); -+ VLOG(1) << "[eyeo] Preloaded subscription now in use: " -+ << subscription_->GetSourceUrl(); -+ } else if (!needs_subscription && subscription_) { -+ VLOG(1) << "[eyeo] Preloaded subscription no longer in use: " -+ << subscription_->GetSourceUrl(); -+ subscription_.reset(); -+ } ++bool IsGenericFilterIsNotSpecificEnough( ++ base::StringPiece filter_str, ++ const absl::optional& options) { ++ if (options.has_value() && (!options->Domains().GetExcludeDomains().empty() || ++ !options->Domains().GetIncludeDomains().empty() || ++ !options->Sitekeys().empty())) { ++ return false; + } ++ const size_t kMinLength = 4; ++ const auto trimmed_filter_str = ++ base::TrimString(filter_str, "|", base::TRIM_LEADING); ++ return trimmed_filter_str.size() < kMinLength && ++ trimmed_filter_str.find('*') == std::string::npos; ++} + -+ scoped_refptr subscription() const { -+ return subscription_; ++// static ++absl::optional UrlFilter::FromString(std::string filter_str) { ++ absl::optional options; ++ bool is_allowing = base::StartsWith(filter_str, kAllowingSymbol); ++ if (is_allowing) { ++ filter_str.erase(0, 2); + } + -+ void Reset() { subscription_.reset(); } ++ // TODO(DPD-1277): Support filters that contain multiple '$' ++ size_t option_selector_it = filter_str.rfind(kOptionSymbol); ++ if (option_selector_it != std::string::npos && ++ !ExtractRegexFilterFromPattern(filter_str)) { ++ std::string option_list = filter_str.substr(option_selector_it + 1); ++ options = UrlFilterOptions::FromString(option_list); + -+ private: -+ PreloadedSubscriptionInfo info_; -+ scoped_refptr subscription_; -+}; ++ if (!options.has_value()) { ++ return {}; ++ } + -+PreloadedSubscriptionProviderImpl::~PreloadedSubscriptionProviderImpl() = -+ default; -+PreloadedSubscriptionProviderImpl::PreloadedSubscriptionProviderImpl() { -+ for (const auto& info : config::GetPreloadedSubscriptionConfiguration()) { -+ providers_.emplace_back(info); ++ if (options->Csp().has_value() && options->Csp().value().empty() && ++ !is_allowing) { ++ VLOG(1) << "[eyeo] Invalid CSP filter. Blocking CSP filter requires " ++ "directives"; ++ return {}; ++ } ++ ++ if (options->Headers().has_value() && options->Headers().value().empty() && ++ !is_allowing) { ++ VLOG(1) << "[eyeo] Invalid header filter. Blocking header filter " ++ "requires directives"; ++ return {}; ++ } ++ ++ if (!options->IsSubresource() && !options->ExceptionTypes().empty() && ++ !is_allowing) { ++ VLOG(1) << "[eyeo] Exception options can only be used with allowing " ++ "filters"; ++ return {}; ++ } ++ ++ filter_str.erase(option_selector_it); + } -+} + -+void PreloadedSubscriptionProviderImpl::UpdateSubscriptions( -+ std::vector installed_subscriptions, -+ std::vector pending_subscriptions) { -+ installed_subscriptions_ = std::move(installed_subscriptions); -+ pending_subscriptions_ = std::move(pending_subscriptions); -+ UpdateSubscriptionsInternal(); -+} ++ if (filter_str.empty() && !options.has_value()) { ++ return {}; ++ } + -+std::vector> -+PreloadedSubscriptionProviderImpl::GetCurrentPreloadedSubscriptions() const { -+ std::vector> result; -+ for (const auto& provider : providers_) { -+ auto sub = provider.subscription(); -+ if (sub) { -+ result.push_back(sub); ++ if (!ExtractRegexFilterFromPattern(filter_str)) { ++ // It's rare, but some filters contain pipe characters ("|") that are not ++ // anchors but are instead integral parts of the URL they intend to match. ++ // GURL escapes "|"" characters and we need to similarly escape such ++ // occurrences in the filter. ++ filter_str = SanitizePipeCharacters(std::move(filter_str)); ++ ++ // Most filters are case-insensitive, we may lowercase them along with ++ // lowercasing the URL during matching. This simplifies and speeds up the ++ // matching algorithm. Do not lowercase case-sensitive filters. ++ if ((!options || !options->IsMatchCase())) { ++ filter_str = base::ToLowerASCII(filter_str); + } + } -+ return result; ++ ++ if (options.has_value() && options->Rewrite().has_value()) { ++ if (options->ThirdParty() == ++ UrlFilterOptions::ThirdPartyOption::ThirdPartyOnly) { ++ VLOG(1) << "[eyeo] Rewrite filter must not be used together with the " ++ "third-party filter option"; ++ return {}; ++ } ++ ++ if (!base::StartsWith(filter_str, "||") && filter_str != "*" && ++ !filter_str.empty()) { ++ VLOG(1) << "[eyeo] Rewrite filter pattern must either be a star (*) " ++ "or start with a domain anchor double pipe (||)"; ++ return {}; ++ } ++ ++ if (options->Domains().GetIncludeDomains().empty() && ++ options->ThirdParty() == UrlFilterOptions::ThirdPartyOption::Ignore) { ++ VLOG(1) << "[eyeo] Rewrite filter must be restricted to at least one " ++ "domain using the domain filter option or have ~third-party " ++ "option"; ++ return {}; ++ } ++ } ++ ++ if (IsGenericFilterIsNotSpecificEnough(filter_str, options)) { ++ VLOG(1) << "[eyeo] Generic url filter is not specific enough. Must be " ++ "longer than 3 characters or domain-specific."; ++ return {}; ++ } ++ ++ if (!options.has_value()) { ++ options = UrlFilterOptions(); ++ } ++ ++ return UrlFilter(is_allowing, std::move(filter_str), ++ std::move(options.value())); +} + -+void PreloadedSubscriptionProviderImpl::UpdateSubscriptionsInternal() { -+ for (auto& provider : providers_) { -+ provider.UpdatePreloadedSubscription(installed_subscriptions_, -+ pending_subscriptions_); ++UrlFilter::UrlFilter(bool is_allowing, ++ std::string pattern, ++ UrlFilterOptions options) ++ : is_allowing(is_allowing), ++ pattern(std::move(pattern)), ++ options(std::move(options)) {} ++UrlFilter::UrlFilter(const UrlFilter& other) = default; ++UrlFilter::UrlFilter(UrlFilter&& other) = default; ++UrlFilter::~UrlFilter() = default; ++ ++// static ++bool UrlFilter::IsValidRegex(const std::string& pattern) { ++ re2::RE2::Options options; ++ options.set_never_capture(true); ++ options.set_log_errors(false); ++ const re2::RE2 re2_pattern(pattern.data(), options); ++ if (re2_pattern.ok()) { ++ return true; ++ } ++ const icu::UnicodeString icu_pattern(pattern.data(), pattern.length()); ++ UErrorCode status = U_ZERO_ERROR; ++ const icu::RegexMatcher matcher(icu_pattern, 0u, status); ++ if (U_FAILURE(status)) { ++ return false; + } ++ return true; +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/preloaded_subscription_provider_impl.h b/components/adblock/core/subscription/preloaded_subscription_provider_impl.h +diff --git a/components/adblock/core/converter/parser/url_filter.h b/components/adblock/core/converter/parser/url_filter.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/preloaded_subscription_provider_impl.h -@@ -0,0 +1,50 @@ ++++ b/components/adblock/core/converter/parser/url_filter.h +@@ -0,0 +1,48 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -24686,211 +12202,310 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_IMPL_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_H_ + -+#include ++#include + -+#include "components/adblock/core/subscription/preloaded_subscription_provider.h" ++#include "components/adblock/core/converter/parser/url_filter_options.h" ++#include "third_party/abseil-cpp/absl/types/optional.h" + +namespace adblock { + -+class PreloadedSubscriptionProviderImpl final -+ : public PreloadedSubscriptionProvider { ++class UrlFilter { + public: -+ ~PreloadedSubscriptionProviderImpl() final; -+ PreloadedSubscriptionProviderImpl(); ++ static absl::optional FromString(std::string filter_str); + -+ void UpdateSubscriptions(std::vector installed_subscriptions, -+ std::vector pending_subscriptions) final; ++ UrlFilter(const UrlFilter& other); ++ UrlFilter(UrlFilter&& other); ++ ~UrlFilter(); + -+ std::vector> -+ GetCurrentPreloadedSubscriptions() const final; ++ const bool is_allowing; ++ const std::string pattern; ++ const UrlFilterOptions options; ++ ++ private: ++ UrlFilter(bool is_allowing, std::string pattern, UrlFilterOptions options); ++ ++ static bool IsValidRegex(const std::string& pattern); ++}; ++ ++} // namespace adblock ++ ++#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_H_ +diff --git a/components/adblock/core/converter/parser/url_filter_options.cc b/components/adblock/core/converter/parser/url_filter_options.cc +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/converter/parser/url_filter_options.cc +@@ -0,0 +1,263 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ ++ ++#include "components/adblock/core/converter/parser/url_filter_options.h" ++ ++#include "base/logging.h" ++#include "base/strings/string_split.h" ++#include "base/strings/string_util.h" ++#include "third_party/re2/src/re2/re2.h" ++ ++namespace adblock { ++ ++using SiteKeys = std::vector; ++ ++static constexpr char kDomainOrSitekeySeparator[] = "|"; ++static constexpr char kInverseSymbol = '~'; ++ ++// static ++absl::optional UrlFilterOptions::FromString( ++ const std::string& option_list) { ++ bool is_match_case = false; ++ bool is_popup_filter = false; ++ bool is_subresource = false; ++ ThirdPartyOption third_party = ThirdPartyOption::Ignore; ++ absl::optional rewrite; ++ DomainOption domains; ++ SiteKeys sitekeys; ++ absl::optional csp; ++ absl::optional headers; ++ uint32_t content_types = 0; ++ std::set exception_types; ++ ++ bool is_inverse_option; ++ std::string key, value; ++ for (auto& option : base::SplitString(option_list, ",", base::KEEP_WHITESPACE, ++ base::SPLIT_WANT_NONEMPTY)) { ++ if (option.empty()) { ++ continue; ++ } ++ ++ is_inverse_option = option.front() == kInverseSymbol; ++ if (is_inverse_option) { ++ option.erase(0, 1); ++ } + -+ private: -+ void UpdateSubscriptionsInternal(); ++ size_t delimiter_pos = option.find('='); ++ if (delimiter_pos != std::string::npos) { ++ key = option.substr(0, delimiter_pos); ++ value = option.substr(delimiter_pos + 1); ++ } else { ++ key = option; ++ } + -+ class SingleSubscriptionProvider; -+ std::vector installed_subscriptions_; -+ std::vector pending_subscriptions_; -+ std::vector providers_; -+}; ++ key = base::ToLowerASCII(key); ++ base::RemoveChars(key, base::kWhitespaceASCII, &key); + -+} // namespace adblock ++ if (key == "match-case") { ++ is_match_case = !is_inverse_option; ++ } else if (key == "popup") { ++ is_popup_filter = true; ++ } else if (key == "third-party") { ++ third_party = !is_inverse_option ? ThirdPartyOption::ThirdPartyOnly ++ : ThirdPartyOption::FirstPartyOnly; ++ } else if (key == "rewrite") { ++ rewrite = ParseRewrite(value); ++ if (!rewrite.has_value()) { ++ VLOG(1) << "[eyeo] Invalid rewrite filter value: " << value; ++ return {}; ++ } ++ } else if (key == "domain") { ++ if (value.empty()) { ++ VLOG(1) << "[eyeo] Domain option has to have a value."; ++ return {}; ++ } ++ domains = DomainOption::FromString(value, kDomainOrSitekeySeparator); ++ } else if (key == "sitekey") { ++ if (value.empty()) { ++ VLOG(1) << "[eyeo] Sitekey option has to have a value."; ++ return {}; ++ } ++ sitekeys = ParseSitekeys(value); ++ } else if (key == "csp") { ++ if (!IsValidCsp(value)) { ++ VLOG(1) << "[eyeo] Invalid CSP filter directives: " << value; ++ return {}; ++ } ++ csp = value; ++ } else if (key == "header") { ++ ParseHeaders(value); ++ headers = value; ++ } else { ++ ContentType content_type = ContentTypeFromString(key); ++ if (content_type != ContentType::Unknown) { ++ is_subresource = true; ++ if (is_inverse_option) { ++ if (content_types == 0) { ++ content_types = ContentType::Default; ++ } + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_IMPL_H_ -diff --git a/components/adblock/core/subscription/regex_matcher.cc b/components/adblock/core/subscription/regex_matcher.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/regex_matcher.cc -@@ -0,0 +1,162 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++ content_types &= ~content_type; ++ } else { ++ content_types |= content_type; ++ } ++ continue; ++ } + -+#include "components/adblock/core/subscription/regex_matcher.h" ++ auto exception_type = ExceptionTypeFromString(key); ++ if (exception_type) { ++ // NOTE: Inverse exception types are not supported ++ exception_types.emplace(exception_type.value()); ++ continue; ++ } + -+#include "base/logging.h" -+#include "base/memory/ptr_util.h" -+#include "base/notreached.h" -+#include "base/strings/string_util.h" -+#include "base/timer/elapsed_timer.h" -+#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/common/regex_filter_pattern.h" -+#include "re2/re2.h" -+#include "re2/stringpiece.h" -+#include "third_party/re2/src/re2/re2.h" -+#include "unicode/utypes.h" ++ VLOG(1) << "[eyeo] Unknown filter option: " << key; ++ return {}; ++ } ++ } + -+namespace adblock { ++ if (exception_types.empty() && !is_popup_filter && !csp.has_value() && ++ !rewrite.has_value() && !headers.has_value()) { ++ is_subresource = true; ++ } + -+RegexMatcher::RegexMatcher() = default; -+RegexMatcher::~RegexMatcher() = default; ++ if (content_types == 0) { ++ content_types = ContentType::Default; ++ } + -+void RegexMatcher::PreBuildRegexPatternsWithNoKeyword( -+ const flat::Subscription* index) { -+ base::ElapsedTimer timer; -+ PreBuildPatternsFrom(index->url_csp_allow()); -+ PreBuildPatternsFrom(index->url_csp_block()); -+ PreBuildPatternsFrom(index->url_document_allow()); -+ PreBuildPatternsFrom(index->url_genericblock_allow()); -+ PreBuildPatternsFrom(index->url_header_allow()); -+ PreBuildPatternsFrom(index->url_popup_allow()); -+ PreBuildPatternsFrom(index->url_popup_block()); -+ PreBuildPatternsFrom(index->url_elemhide_allow()); -+ PreBuildPatternsFrom(index->url_rewrite_allow()); -+ PreBuildPatternsFrom(index->url_rewrite_block()); -+ PreBuildPatternsFrom(index->url_subresource_allow()); -+ PreBuildPatternsFrom(index->url_subresource_block()); -+ VLOG(1) << "Added " << CacheSize() << " precompiled regular expressions in " -+ << timer.Elapsed(); ++ return UrlFilterOptions(is_match_case, is_popup_filter, is_subresource, ++ third_party, content_types, std::move(rewrite), ++ std::move(domains), std::move(sitekeys), ++ std::move(csp), std::move(headers), ++ std::move(exception_types)); +} + -+void RegexMatcher::PreBuildRegexPattern(base::StringPiece regular_expression, -+ bool case_sensitive) { -+ auto re2_pattern = BuildRe2Expression(regular_expression, case_sensitive); -+ if (re2_pattern) { -+ re2_cache_[std::make_pair(regular_expression, case_sensitive)] = -+ std::move(re2_pattern); ++UrlFilterOptions::UrlFilterOptions() ++ : is_match_case_(false), ++ is_popup_filter_(false), ++ is_subresource_(true), ++ third_party_(ThirdPartyOption::Ignore), ++ content_types_(ContentType::Default) {} ++ ++// static ++absl::optional UrlFilterOptions::ParseRewrite( ++ const std::string& rewrite_value) { ++ if (rewrite_value == "abp-resource:blank-text") { ++ return RewriteOption::AbpResource_BlankText; ++ } else if (rewrite_value == "abp-resource:blank-css") { ++ return RewriteOption::AbpResource_BlankCss; ++ } else if (rewrite_value == "abp-resource:blank-js") { ++ return RewriteOption::AbpResource_BlankJs; ++ } else if (rewrite_value == "abp-resource:blank-html") { ++ return RewriteOption::AbpResource_BlankHtml; ++ } else if (rewrite_value == "abp-resource:blank-mp3") { ++ return RewriteOption::AbpResource_BlankMp3; ++ } else if (rewrite_value == "abp-resource:blank-mp4") { ++ return RewriteOption::AbpResource_BlankMp4; ++ } else if (rewrite_value == "abp-resource:1x1-transparent-gif") { ++ return RewriteOption::AbpResource_TransparentGif1x1; ++ } else if (rewrite_value == "abp-resource:2x2-transparent-png") { ++ return RewriteOption::AbpResource_TransparentPng2x2; ++ } else if (rewrite_value == "abp-resource:3x2-transparent-png") { ++ return RewriteOption::AbpResource_TransparentPng3x2; ++ } else if (rewrite_value == "abp-resource:32x32-transparent-png") { ++ return RewriteOption::AbpResource_TransparentPng32x32; + } else { -+ auto icu_pattern = BuildIcuExpression(regular_expression, case_sensitive); -+ if (!icu_pattern) { -+ LOG(ERROR) << "Even ICU cannot parse this regular expression, " -+ "this should have been caught during parsing. Will " -+ "ignore this filter: " -+ << regular_expression; -+ return; -+ } -+ icu_cache_[std::make_pair(regular_expression, case_sensitive)] = -+ std::move(icu_pattern); ++ return {}; + } +} + -+bool RegexMatcher::MatchesRegex(base::StringPiece regex_pattern, -+ const GURL& url, -+ bool case_sensitive) const { -+ const base::StringPiece input = url.spec(); -+ const auto cache_key = std::make_pair(regex_pattern, case_sensitive); -+ -+ const auto cached_re2_expression = re2_cache_.find(cache_key); -+ if (cached_re2_expression != re2_cache_.end()) { -+ return re2::RE2::PartialMatch(input.data(), *cached_re2_expression->second); -+ } -+ -+ const auto cached_icu_expression = icu_cache_.find(cache_key); -+ if (cached_icu_expression != icu_cache_.end()) { -+ const icu::UnicodeString icu_input(input.data(), input.length()); -+ UErrorCode status = U_ZERO_ERROR; -+ std::unique_ptr regex_matcher = base::WrapUnique( -+ cached_icu_expression->second->matcher(icu_input, status)); -+ bool is_match = regex_matcher->find(0, status); -+ DCHECK(U_SUCCESS(status)); -+ return is_match; ++// static ++SiteKeys UrlFilterOptions::ParseSitekeys(const std::string& sitekey_value) { ++ SiteKeys sitekeys; ++ for (auto& sitekey : base::SplitString( ++ base::ToUpperASCII(sitekey_value), kDomainOrSitekeySeparator, ++ base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) { ++ sitekeys.emplace_back(std::move(sitekey)); + } -+ VLOG(1) << "Matching a non-prebuilt expression, this will be slow"; -+ return utils::RegexMatches(regex_pattern, input, case_sensitive); ++ std::sort(sitekeys.begin(), sitekeys.end()); ++ return sitekeys; +} + -+void RegexMatcher::PreBuildPatternsFrom(const UrlFilterIndex* index) { -+ if (!index) { -+ return; -+ } -+ const auto* idx = index->LookupByKey(""); -+ if (!idx) { -+ return; -+ } -+ for (const auto* filter : *(idx->filter())) { -+ if (CacheSize() >= kMaxPrebuiltPatterns) { -+ return; -+ } -+ if (!filter->pattern()) { -+ continue; // This filter has no keyword because it has an empty pattern. -+ } -+ const base::StringPiece filter_string(filter->pattern()->c_str(), -+ filter->pattern()->size()); -+ const auto regex_string = ExtractRegexFilterFromPattern(filter_string); -+ if (!regex_string) { -+ continue; // This is not a regex filter. -+ } -+ PreBuildRegexPattern(*regex_string, filter->match_case()); -+ } ++// static ++bool UrlFilterOptions::IsValidCsp(const std::string& csp_value) { ++ static re2::RE2 invalid_csp( ++ "(;|^) " ++ "?(base-uri|referrer|report-to|report-uri|upgrade-insecure-requests)\\b"); ++ ++ return !(re2::RE2::PartialMatch( ++ re2::StringPiece(csp_value.data(), csp_value.size()), invalid_csp)); +} + -+std::unique_ptr RegexMatcher::BuildRe2Expression( -+ base::StringPiece regular_expression, -+ bool case_sensitive) { -+ re2::RE2::Options options; -+ options.set_case_sensitive(case_sensitive); -+ options.set_never_capture(true); -+ options.set_log_errors(false); -+ options.set_encoding(re2::RE2::Options::EncodingLatin1); -+ auto prebuilt_re2 = std::make_unique( -+ re2::StringPiece(regular_expression.data(), regular_expression.size()), -+ options); -+ if (!prebuilt_re2->ok()) { -+ return nullptr; -+ } -+ return prebuilt_re2; ++// static ++void UrlFilterOptions::ParseHeaders(std::string& headers_value) { ++ // replace \x2c with actual , ++ static re2::RE2 r1("([^\\\\])\\\\x2c"); ++ re2::RE2::GlobalReplace(&headers_value, r1, "\\1,"); ++ ++ // remove extra escape for \\x2c which left ++ static re2::RE2 r2("\\\\x2c"); ++ re2::RE2::GlobalReplace(&headers_value, r2, "x2c"); +} + -+std::unique_ptr RegexMatcher::BuildIcuExpression( -+ base::StringPiece regular_expression, -+ bool case_sensitive) { -+ const icu::UnicodeString icu_pattern(regular_expression.data(), -+ regular_expression.length()); -+ UErrorCode status = U_ZERO_ERROR; -+ const auto icu_case_sensetive = case_sensitive ? 0u : UREGEX_CASE_INSENSITIVE; -+ std::unique_ptr prebuilt_pattern = base::WrapUnique( -+ icu::RegexPattern::compile(icu_pattern, icu_case_sensetive, status)); -+ if (U_FAILURE(status) || !prebuilt_pattern) { -+ return nullptr; ++// static ++absl::optional ++UrlFilterOptions::ExceptionTypeFromString(const std::string& exception_type) { ++ if (exception_type == "document") { ++ return ExceptionType::Document; ++ } else if (exception_type == "genericblock") { ++ return ExceptionType::Genericblock; ++ } else if (exception_type == "elemhide") { ++ return ExceptionType::Elemhide; ++ } else if (exception_type == "generichide") { ++ return ExceptionType::Generichide; + } -+ return prebuilt_pattern; ++ return {}; +} + -+int RegexMatcher::CacheSize() const { -+ return re2_cache_.size() + icu_cache_.size(); -+} ++UrlFilterOptions::UrlFilterOptions( ++ const bool is_match_case, ++ const bool is_popup_filter, ++ const bool is_subresource, ++ const ThirdPartyOption third_party, ++ const uint32_t content_types, ++ const absl::optional rewrite, ++ const DomainOption domains, ++ const SiteKeys sitekeys, ++ const absl::optional csp, ++ const absl::optional headers, ++ const std::set exception_types) ++ : is_match_case_(is_match_case), ++ is_popup_filter_(is_popup_filter), ++ is_subresource_(is_subresource), ++ third_party_(third_party), ++ content_types_(content_types), ++ rewrite_(std::move(rewrite)), ++ domains_(std::move(domains)), ++ sitekeys_(std::move(sitekeys)), ++ csp_(std::move(csp)), ++ headers_(std::move(headers)), ++ exception_types_(std::move(exception_types)) {} ++UrlFilterOptions::UrlFilterOptions(const UrlFilterOptions& other) = default; ++UrlFilterOptions::UrlFilterOptions(UrlFilterOptions&& other) = default; ++UrlFilterOptions& UrlFilterOptions::operator=(const UrlFilterOptions& other) = ++ default; ++UrlFilterOptions& UrlFilterOptions::operator=(UrlFilterOptions&& other) = ++ default; ++UrlFilterOptions::~UrlFilterOptions() = default; + +} // namespace adblock -diff --git a/components/adblock/core/subscription/regex_matcher.h b/components/adblock/core/subscription/regex_matcher.h +diff --git a/components/adblock/core/converter/parser/url_filter_options.h b/components/adblock/core/converter/parser/url_filter_options.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/regex_matcher.h -@@ -0,0 +1,73 @@ ++++ b/components/adblock/core/converter/parser/url_filter_options.h +@@ -0,0 +1,122 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -24908,67 +12523,171 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_REGEX_MATCHER_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_REGEX_MATCHER_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_OPTIONS_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_OPTIONS_H_ + -+#include -+#include "components/adblock/core/schema/filter_list_schema_generated.h" -+#include "third_party/icu/source/i18n/unicode/regex.h" -+#include "third_party/re2/src/re2/re2.h" -+#include "url/gurl.h" ++#include ++#include ++#include ++ ++#include "components/adblock/core/common/content_type.h" ++#include "components/adblock/core/common/sitekey.h" ++#include "components/adblock/core/converter/parser/domain_option.h" ++#include "third_party/abseil-cpp/absl/types/optional.h" + +namespace adblock { + -+class RegexMatcher { ++class UrlFilterOptions { + public: -+ RegexMatcher(); -+ ~RegexMatcher(); -+ RegexMatcher(const RegexMatcher&) = delete; -+ RegexMatcher(RegexMatcher&&) = delete; -+ RegexMatcher& operator=(const RegexMatcher&) = delete; -+ RegexMatcher& operator=(RegexMatcher&&) = delete; ++ enum class ThirdPartyOption { ++ Ignore, ++ ThirdPartyOnly, ++ FirstPartyOnly, ++ }; + -+ // Max number of patterns that PreBuildRegexPatternsWithNoKeyword() will -+ // build and store in memory. If there are more regex patterns in |index|, -+ // they will not be pre-built and MatchesRegex() will build them on demand. -+ static constexpr int kMaxPrebuiltPatterns = 500; ++ enum class RewriteOption { ++ AbpResource_BlankText, ++ AbpResource_BlankCss, ++ AbpResource_BlankJs, ++ AbpResource_BlankHtml, ++ AbpResource_BlankMp3, ++ AbpResource_BlankMp4, ++ AbpResource_TransparentGif1x1, ++ AbpResource_TransparentPng2x2, ++ AbpResource_TransparentPng3x2, ++ AbpResource_TransparentPng32x32, ++ }; + -+ // Regex patterns that have no keyword attached must be matched to every URL. -+ // There are typically few of them and they are matched very often, so -+ // pre-build them. -+ void PreBuildRegexPatternsWithNoKeyword(const flat::Subscription* index); -+ void PreBuildRegexPattern(base::StringPiece regular_expression, -+ bool case_sensitive); ++ enum class ExceptionType { ++ Document, ++ Elemhide, ++ Generichide, ++ Genericblock, ++ }; + -+ bool MatchesRegex(base::StringPiece regex_pattern, -+ const GURL& url, -+ bool case_sensitive) const; ++ static absl::optional FromString( ++ const std::string& option_list); ++ ++ UrlFilterOptions(); ++ UrlFilterOptions(const UrlFilterOptions& other); ++ UrlFilterOptions(UrlFilterOptions&& other); ++ UrlFilterOptions& operator=(const UrlFilterOptions& other); ++ UrlFilterOptions& operator=(UrlFilterOptions&& other); ++ ~UrlFilterOptions(); ++ ++ inline bool IsMatchCase() const { return is_match_case_; } ++ inline bool IsPopup() const { return is_popup_filter_; } ++ inline bool IsSubresource() const { return is_subresource_; } ++ inline ThirdPartyOption ThirdParty() const { return third_party_; } ++ inline const absl::optional& Rewrite() const { ++ return rewrite_; ++ } ++ inline const DomainOption& Domains() const { return domains_; } ++ inline const std::vector& Sitekeys() const { return sitekeys_; } ++ inline const absl::optional& Csp() const { return csp_; } ++ inline const absl::optional& Headers() const { return headers_; } ++ inline uint32_t ContentTypes() const { return content_types_; } ++ inline const std::set& ExceptionTypes() const { ++ return exception_types_; ++ } + + private: -+ using UrlFilterIndex = -+ flatbuffers::Vector>; -+ void PreBuildPatternsFrom(const UrlFilterIndex* index); -+ std::unique_ptr BuildRe2Expression( -+ base::StringPiece regular_expression, -+ bool case_sensitive); -+ std::unique_ptr BuildIcuExpression( -+ base::StringPiece regular_expression, -+ bool case_sensitive); -+ int CacheSize() const; ++ UrlFilterOptions(bool is_match_case, ++ bool is_popup_filter, ++ bool is_subresource, ++ ThirdPartyOption third_party, ++ uint32_t content_types, ++ absl::optional rewrite, ++ DomainOption domains, ++ std::vector sitekeys, ++ absl::optional csp, ++ absl::optional headers, ++ std::set exception_types); + -+ using CacheKey = std::tuple; -+ std::map> re2_cache_; -+ std::map> icu_cache_; ++ static absl::optional ParseRewrite( ++ const std::string& rewrite_value); ++ static std::vector ParseSitekeys(const std::string& sitekey_value); ++ static bool IsValidCsp(const std::string& csp_value); ++ static void ParseHeaders(std::string& headers_value); ++ static absl::optional ExceptionTypeFromString( ++ const std::string& exception_type); ++ ++ bool is_match_case_; ++ bool is_popup_filter_; ++ bool is_subresource_; ++ ThirdPartyOption third_party_; ++ uint32_t content_types_; ++ absl::optional rewrite_; ++ DomainOption domains_; ++ std::vector sitekeys_; ++ absl::optional csp_; ++ absl::optional headers_; ++ std::set exception_types_; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_REGEX_MATCHER_H_ -diff --git a/components/adblock/core/subscription/subscription.cc b/components/adblock/core/subscription/subscription.cc ++#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_PARSER_URL_FILTER_OPTIONS_H_ +diff --git a/components/adblock/core/converter/serializer/BUILD.gn b/components/adblock/core/converter/serializer/BUILD.gn +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/converter/serializer/BUILD.gn +@@ -0,0 +1,50 @@ ++# ++# This file is part of eyeo Chromium SDK, ++# Copyright (C) 2006-present eyeo GmbH ++# ++# eyeo Chromium SDK is free software: you can redistribute it and/or modify ++# it under the terms of the GNU General Public License version 3 as ++# published by the Free Software Foundation. ++# ++# eyeo Chromium SDK is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with eyeo Chromium SDK. If not, see . ++ ++source_set("serializer") { ++ sources = [ ++ "filter_keyword_extractor.cc", ++ "filter_keyword_extractor.h", ++ "flatbuffer_serializer.cc", ++ "flatbuffer_serializer.h", ++ "serializer.h", ++ ] ++ ++ public_deps = [ ++ "//base", ++ "//components/adblock/core/common", ++ "//components/adblock/core:schema", ++ "//third_party/re2", ++ "//url", ++ ] ++ ++ deps = [ ++ "//components/adblock/core/converter/parser", ++ ] ++} ++ ++source_set("unit_tests") { ++ testonly = true ++ sources = [ ++ "test/filter_keyword_extractor_test.cc", ++ ] ++ ++ deps = [ ++ ":serializer", ++ "//testing/gmock", ++ "//testing/gtest", ++ ] ++} +diff --git a/components/adblock/core/converter/serializer/filter_keyword_extractor.cc b/components/adblock/core/converter/serializer/filter_keyword_extractor.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription.cc -@@ -0,0 +1,24 @@ ++++ b/components/adblock/core/converter/serializer/filter_keyword_extractor.cc +@@ -0,0 +1,63 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -24986,18 +12705,58 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/subscription.h" ++#include "components/adblock/core/converter/serializer/filter_keyword_extractor.h" ++ ++#include ++#include ++ ++#include "base/strings/string_util.h" ++#include "components/adblock/core/common/keyword_extractor_utils.h" ++#include "third_party/re2/src/re2/re2.h" + +namespace adblock { + -+Subscription::~Subscription() = default; ++absl::optional FilterKeywordExtractor::GetNextKeyword() { ++ std::string current_keyword; ++ do { ++ // In case that we are extracting keyword to store a filter ++ // we need to be careful as only one keyword will be used. ++ // So a keyword at the end of the filter might mismatch with keyword ++ // when trying to fetch the filter ++ // for example: ++ // a filter ||domain.cc/in_discovery should not retrieve "discovery" as a ++ // keyword because when we have a valid to block url like this one ++ // domain.cc/in_discovery5 returns with "discovery5" as ++ // one of the extracted keywords instead of "discovery" ++ const static re2::RE2 filter_keyword_extractor( ++ "([^a-zA-Z0-9%*][a-zA-Z0-9%]{2,})"); ++ const static re2::RE2 has_a_following_keyword("(^[^a-zA-Z0-9%*])"); ++ const static re2::RE2 following_keyword_consume("(^[a-zA-Z0-9%*]*)"); ++ if (!RE2::FindAndConsume(&input_, filter_keyword_extractor, ++ ¤t_keyword)) { ++ return absl::nullopt; ++ } ++ if (!RE2::PartialMatch(input_, has_a_following_keyword)) { ++ RE2::Consume(&input_, following_keyword_consume); ++ current_keyword.clear(); ++ continue; ++ } ++ current_keyword = current_keyword.substr(1); ++ } while (utils::IsBadKeyword(current_keyword)); ++ return base::ToLowerASCII(current_keyword); ++} ++ ++FilterKeywordExtractor::FilterKeywordExtractor(base::StringPiece url) ++ : input_(url.data(), url.size()), end_of_last_keyword_(input_.begin()) {} ++FilterKeywordExtractor::~FilterKeywordExtractor() = default; + +} // namespace adblock -diff --git a/components/adblock/core/subscription/subscription.h b/components/adblock/core/subscription/subscription.h +diff --git a/components/adblock/core/converter/serializer/filter_keyword_extractor.h b/components/adblock/core/converter/serializer/filter_keyword_extractor.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription.h -@@ -0,0 +1,78 @@ ++++ b/components/adblock/core/converter/serializer/filter_keyword_extractor.h +@@ -0,0 +1,59 @@ ++ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -25015,72 +12774,52 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FILTER_KEYWORD_EXTRACTOR_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FILTER_KEYWORD_EXTRACTOR_H_ + +#include + -+#include "base/memory/ref_counted.h" -+#include "base/time/time.h" ++#include "absl/types/optional.h" ++#include "base/strings/string_piece.h" ++#include "third_party/re2/src/re2/re2.h" +#include "url/gurl.h" + +namespace adblock { + -+// Represents a single filter list, ex. Easylist French or Acceptable Ads. -+// Read-only and thread-safe. -+class Subscription : public base::RefCountedThreadSafe { ++// Keywords allow selecting filters that could potentially match a URL faster ++// than an exhaustive search. ++// This is how it works: ++// ++// 1. A filter pattern is split into keywords via GetNextKeyword() ++// like so: ++// ||content.adblockplus.com/ad ++// becomes: ++// "content", "adblockplus" ++// - "com" is skipped because it's a very common component ++// - "ad" is skipped, explanation in .cc ++// ++// 2. Once we have keywords that describe the filter, the longest or most unique ++// keyword gets chosen to index the filter within the flatbuffer. In this case, ++// "adblockplus". ++class FilterKeywordExtractor { + public: -+ enum class InstallationState { -+ // Subscription is installed and in use. -+ Installed, -+ // A preloaded version of this subscription is in use, a full version is -+ // likely being downloaded from the Internet. -+ Preloaded, -+ // Subscription is being downloaded and not yet in use. No preloaded -+ // substitute is available. -+ Installing, -+ // State is unknown when FilteringConfiguration is disabled. -+ Unknown, -+ }; -+ // Returns the URL of the text version of the subscription, ex. -+ // https://easylist-downloads.adblockplus.org/easylist.txt. -+ // Note that this may be different than the URL from which the subscription -+ // was downloaded. -+ virtual GURL GetSourceUrl() const = 0; -+ -+ // Returns the value of the `! Title:` field of the filter list, ex. "EasyList -+ // Germany+EasyList". This is an optional field and may be empty. -+ virtual std::string GetTitle() const = 0; -+ -+ // Returns the value of the `! Version:` field of the filter list, ex. -+ // "202108191121". This is an optional field and may be empty. -+ virtual std::string GetCurrentVersion() const = 0; -+ -+ // Returns whether this subscription is installed and in use, or whether it's -+ // still being downloaded. -+ virtual InstallationState GetInstallationState() const = 0; -+ -+ // Returns the time the subscription was installed or last updated. -+ // Only valid when GetInstallationState() returns Installed, otherwise zero. -+ virtual base::Time GetInstallationTime() const = 0; -+ -+ // Returns amount of time until subscription expires. -+ // Typically, update checks are performed once per expiration interval. -+ virtual base::TimeDelta GetExpirationInterval() const = 0; ++ explicit FilterKeywordExtractor(base::StringPiece url); ++ ~FilterKeywordExtractor(); ++ absl::optional GetNextKeyword(); + -+ protected: -+ friend class base::RefCountedThreadSafe; -+ virtual ~Subscription(); ++ private: ++ re2::StringPiece input_; ++ re2::StringPiece::iterator end_of_last_keyword_; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_H_ -diff --git a/components/adblock/core/subscription/subscription_collection.h b/components/adblock/core/subscription/subscription_collection.h ++#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FILTER_KEYWORD_EXTRACTOR_H_ +diff --git a/components/adblock/core/converter/serializer/flatbuffer_serializer.cc b/components/adblock/core/converter/serializer/flatbuffer_serializer.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_collection.h -@@ -0,0 +1,98 @@ ++++ b/components/adblock/core/converter/serializer/flatbuffer_serializer.cc +@@ -0,0 +1,394 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -25098,450 +12837,388 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_H_ -+ -+#include -+#include ++#include "components/adblock/core/converter/serializer/flatbuffer_serializer.h" + -+#include "absl/types/optional.h" -+#include "base/containers/span.h" ++#include "base/logging.h" ++#include "base/notreached.h" +#include "base/strings/string_piece.h" -+#include "base/values.h" -+#include "components/adblock/core/common/content_type.h" -+#include "components/adblock/core/common/header_filter_data.h" -+#include "components/adblock/core/common/sitekey.h" -+#include "components/adblock/core/subscription/installed_subscription.h" -+#include "url/gurl.h" ++#include "base/strings/string_util.h" ++#include "components/adblock/core/common/adblock_constants.h" ++#include "components/adblock/core/common/regex_filter_pattern.h" ++#include "components/adblock/core/converter/parser/filter_classifier.h" ++#include "components/adblock/core/converter/serializer/filter_keyword_extractor.h" + +namespace adblock { + -+// Represents a collection of all currently active Subscriptions and allows -+// bulk queries to be made towards all of them. -+// Represents a snapshot of a state of the browser. -+// Cheap to create and copy, non-mutable and thread-safe. -+class SubscriptionCollection { ++class Buffer : public FlatbufferData { + public: -+ virtual ~SubscriptionCollection() = default; -+ -+ // Name of the FilteringConfiguration this collection represents -+ virtual const std::string& GetFilteringConfigurationName() const = 0; -+ -+ virtual absl::optional FindBySubresourceFilter( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey, -+ FilterCategory category) const = 0; -+ virtual absl::optional FindByPopupFilter( -+ const GURL& popup_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey, -+ FilterCategory category) const = 0; -+ virtual absl::optional FindByAllowFilter( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey) const = 0; -+ virtual absl::optional FindBySpecialFilter( -+ SpecialFilterType filter_type, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey) const = 0; -+ -+ virtual std::vector GetElementHideSelectors( -+ const GURL& frame_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey) const = 0; -+ virtual std::vector GetElementHideEmulationSelectors( -+ const GURL& frame_url) const = 0; -+ -+ virtual base::Value::List GenerateSnippets( -+ const GURL& frame_url, -+ const std::vector& frame_hierarchy) const = 0; ++ explicit Buffer(flatbuffers::DetachedBuffer&& buffer) ++ : buffer_(std::move(buffer)) {} + -+ virtual std::set GetCspInjections( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy) const = 0; ++ const uint8_t* data() const override { return buffer_.data(); } + -+ virtual std::set GetRewriteFilters( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ FilterCategory category) const = 0; ++ size_t size() const override { return buffer_.size(); } + -+ virtual std::set GetHeaderFilters( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ FilterCategory category) const = 0; ++ private: ++ flatbuffers::DetachedBuffer buffer_; +}; + -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_H_ -diff --git a/components/adblock/core/subscription/subscription_collection_impl.cc b/components/adblock/core/subscription/subscription_collection_impl.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/subscription_collection_impl.cc -@@ -0,0 +1,353 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/subscription/subscription_collection_impl.h" -+ -+#include -+#include -+#include -+#include ++FlatbufferSerializer::FlatbufferSerializer(GURL subscription_url, ++ bool allow_privileged) ++ : subscription_url_(subscription_url), allow_privileged_(allow_privileged) { ++ SerializeMetadata(Metadata::Default()); ++} + -+#include "base/ranges/algorithm.h" -+#include "components/adblock/core/common/adblock_utils.h" ++FlatbufferSerializer::~FlatbufferSerializer() = default; + -+namespace adblock { -+namespace { ++std::unique_ptr ++FlatbufferSerializer::GetSerializedSubscription() { ++ auto subscription = flat::CreateSubscription( ++ builder_, metadata_, WriteUrlFilterIndex(url_subresource_block_), ++ WriteUrlFilterIndex(url_subresource_allow_), ++ WriteUrlFilterIndex(url_popup_block_), ++ WriteUrlFilterIndex(url_popup_allow_), ++ WriteUrlFilterIndex(url_document_allow_), ++ WriteUrlFilterIndex(url_elemhide_allow_), ++ WriteUrlFilterIndex(url_generichide_allow_), ++ WriteUrlFilterIndex(url_genericblock_allow_), ++ WriteUrlFilterIndex(url_csp_block_), WriteUrlFilterIndex(url_csp_allow_), ++ WriteUrlFilterIndex(url_rewrite_block_), ++ WriteUrlFilterIndex(url_rewrite_allow_), ++ WriteUrlFilterIndex(url_header_block_), ++ WriteUrlFilterIndex(url_header_allow_), ++ WriteElemhideFilterIndex(elemhide_index_), ++ WriteElemhideFilterIndex(elemhide_emulation_index_), ++ WriteElemhideFilterIndex(elemhide_exception_index_), ++ WriteSnippetFilterIndex(snippet_index_)); + -+std::string DocumentDomain(const GURL& request_url, -+ const std::vector& frame_hierarchy) { -+ return frame_hierarchy.empty() ? request_url.host() -+ : frame_hierarchy[0].host(); ++ builder_.Finish(subscription, flat::SubscriptionIdentifier()); ++ return std::make_unique(builder_.Release()); +} + -+std::vector ReduceSelectors( -+ InstalledSubscription::Selectors& combined_selectors) { -+ // Populate result with blocking selectors. -+ std::vector final_selectors = -+ std::move(combined_selectors.elemhide_selectors); -+ // Remove exceptions. -+ final_selectors.erase( -+ std::remove_if( -+ final_selectors.begin(), final_selectors.end(), -+ [&](const auto& selector) { -+ return std::find(combined_selectors.elemhide_exceptions.begin(), -+ combined_selectors.elemhide_exceptions.end(), -+ selector) != -+ combined_selectors.elemhide_exceptions.end(); -+ }), -+ final_selectors.end()); -+ return final_selectors; ++void FlatbufferSerializer::SerializeMetadata(const Metadata metadata) { ++ metadata_ = flat::CreateSubscriptionMetadata( ++ builder_, builder_.CreateString(CurrentSchemaVersion()), ++ builder_.CreateString(subscription_url_.spec()), ++ builder_.CreateString(metadata.homepage), ++ builder_.CreateString(metadata.title), ++ builder_.CreateString(metadata.version), ++ metadata.expires.InMilliseconds()); +} + -+bool SubscriptionContainsSpecialFilter( -+ const scoped_refptr subscription, -+ SpecialFilterType filter_type, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey) { -+ for (auto it = frame_hierarchy.begin(); it < frame_hierarchy.end(); ++it) { -+ const GURL& current_url = *it; -+ const std::string& current_domain = std::next(it) != frame_hierarchy.end() -+ ? std::next(it)->host() -+ : current_url.host(); -+ if (subscription->HasSpecialFilter(filter_type, current_url, current_domain, -+ sitekey)) { -+ return true; -+ } ++void FlatbufferSerializer::SerializeContentFilter( ++ const ContentFilter content_filter) { ++ auto offset = flat::CreateElemHideFilter( ++ builder_, {}, ++ content_filter.type == FilterType::ElemHideEmulation ++ ? builder_.CreateString(content_filter.selector.data(), ++ content_filter.selector.size()) ++ : builder_.CreateString(EscapeSelector(content_filter.selector)), ++ CreateVectorOfSharedStrings(content_filter.domains.GetExcludeDomains())); ++ ++ // Insert the filter under the correct index. ++ switch (content_filter.type) { ++ case FilterType::ElemHide: ++ AddElemhideFilterForDomains( ++ elemhide_index_, content_filter.domains.GetIncludeDomains(), offset); ++ break; ++ case FilterType::ElemHideException: ++ AddElemhideFilterForDomains(elemhide_exception_index_, ++ content_filter.domains.GetIncludeDomains(), ++ offset); ++ break; ++ case FilterType::ElemHideEmulation: ++ AddElemhideFilterForDomains(elemhide_emulation_index_, ++ content_filter.domains.GetIncludeDomains(), ++ offset); ++ break; ++ default: ++ break; + } -+ return false; +} + -+bool HasAllowFilter( -+ const scoped_refptr subscription, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey) { -+ if (subscription->HasUrlFilter( -+ request_url, DocumentDomain(request_url, frame_hierarchy), -+ content_type, sitekey, FilterCategory::Allowing)) { -+ return true; ++void FlatbufferSerializer::SerializeSnippetFilter( ++ const SnippetFilter snippet_filter) { ++ if (!allow_privileged_) { ++ VLOG(1) << "[eyeo] Snippet filters not allowed"; ++ return; + } -+ if (SubscriptionContainsSpecialFilter(subscription, -+ SpecialFilterType::Document, -+ frame_hierarchy, sitekey)) { -+ return true; ++ ++ std::vector> offsets; ++ offsets.reserve(snippet_filter.snippet_script.size()); ++ for (const auto& cur : snippet_filter.snippet_script) { ++ offsets.push_back(flat::CreateSnippetFunctionCall( ++ builder_, builder_.CreateSharedString(cur.front()), ++ builder_.CreateVectorOfStrings(++cur.begin(), cur.end()))); + } -+ return false; ++ ++ auto offset = flat::CreateSnippetFilter( ++ builder_, {}, ++ CreateVectorOfSharedStrings(snippet_filter.domains.GetExcludeDomains()), ++ builder_.CreateVector(offsets)); ++ AddSnippetFilterForDomains( ++ snippet_index_, snippet_filter.domains.GetIncludeDomains(), offset); +} + -+bool HasSpecialFilter( -+ const scoped_refptr subscription, -+ SpecialFilterType filter_type, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey) { -+ if (subscription->HasSpecialFilter( -+ filter_type, request_url, -+ DocumentDomain(request_url, frame_hierarchy), sitekey)) { -+ return true; ++void FlatbufferSerializer::SerializeUrlFilter(const UrlFilter url_filter) { ++ const auto& options = url_filter.options; ++ if (!allow_privileged_ && options.Headers().has_value()) { ++ VLOG(1) << "[eyeo] Header filters not allowed"; ++ return; + } -+ return SubscriptionContainsSpecialFilter(subscription, filter_type, -+ frame_hierarchy, sitekey); -+} + -+} // namespace ++ auto offset = flat::CreateUrlFilter( ++ builder_, {}, builder_.CreateString(url_filter.pattern), ++ options.IsMatchCase(), options.ContentTypes(), ++ ThirdPartyOptionToFb(options.ThirdParty()), ++ CreateVectorOfSharedStringsFromSitekeys(options.Sitekeys()), ++ CreateVectorOfSharedStrings(options.Domains().GetIncludeDomains()), ++ CreateVectorOfSharedStrings(options.Domains().GetExcludeDomains()), ++ options.Rewrite().has_value() ++ ? flat::CreateRewrite(builder_, ++ RewriteOptionToFb(options.Rewrite().value())) ++ : flatbuffers::Offset(), ++ options.Csp().has_value() ++ ? builder_.CreateSharedString(options.Csp().value()) ++ : flatbuffers::Offset(), ++ options.Headers().has_value() ++ ? builder_.CreateSharedString(options.Headers().value()) ++ : flatbuffers::Offset()); + -+SubscriptionCollectionImpl::SubscriptionCollectionImpl( -+ std::vector> current_state, -+ const std::string& configuration_name) -+ : subscriptions_(std::move(current_state)), -+ configuration_name_(configuration_name) {} ++ const absl::optional keyword_pattern = ++ ExtractRegexFilterFromPattern(url_filter.pattern).has_value() ++ ? absl::optional() ++ : url_filter.pattern; + -+SubscriptionCollectionImpl::~SubscriptionCollectionImpl() = default; -+SubscriptionCollectionImpl::SubscriptionCollectionImpl( -+ const SubscriptionCollectionImpl&) = default; -+SubscriptionCollectionImpl::SubscriptionCollectionImpl( -+ SubscriptionCollectionImpl&&) = default; -+SubscriptionCollectionImpl& SubscriptionCollectionImpl::operator=( -+ const SubscriptionCollectionImpl&) = default; -+SubscriptionCollectionImpl& SubscriptionCollectionImpl::operator=( -+ SubscriptionCollectionImpl&&) = default; ++ if (options.Headers().has_value()) { ++ AddUrlFilterToIndex( ++ url_filter.is_allowing ? url_header_allow_ : url_header_block_, ++ keyword_pattern, offset); ++ return; ++ } + -+const std::string& SubscriptionCollectionImpl::GetFilteringConfigurationName() -+ const { -+ return configuration_name_; -+} ++ if (options.IsPopup()) { ++ AddUrlFilterToIndex( ++ url_filter.is_allowing ? url_popup_allow_ : url_popup_block_, ++ keyword_pattern, offset); ++ } + -+absl::optional SubscriptionCollectionImpl::FindBySubresourceFilter( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey, -+ FilterCategory category) const { -+ const auto subscription = std::find_if( -+ subscriptions_.begin(), subscriptions_.end(), -+ [&](const auto& subscription) { -+ return subscription->HasUrlFilter( -+ request_url, DocumentDomain(request_url, frame_hierarchy), -+ content_type, sitekey, category); -+ }); -+ if (subscription != subscriptions_.end()) { -+ return (*subscription)->GetSourceUrl(); ++ if (options.Csp().has_value()) { ++ AddUrlFilterToIndex( ++ url_filter.is_allowing ? url_csp_allow_ : url_csp_block_, ++ keyword_pattern, offset); ++ } ++ ++ if (options.Rewrite().has_value()) { ++ AddUrlFilterToIndex( ++ url_filter.is_allowing ? url_rewrite_allow_ : url_rewrite_block_, ++ keyword_pattern, offset); ++ } ++ ++ if (options.IsSubresource()) { ++ AddUrlFilterToIndex(url_filter.is_allowing ? url_subresource_allow_ ++ : url_subresource_block_, ++ keyword_pattern, offset); ++ } ++ ++ for (auto exception_type : options.ExceptionTypes()) { ++ switch (exception_type) { ++ case UrlFilterOptions::ExceptionType::Genericblock: ++ AddUrlFilterToIndex(url_genericblock_allow_, keyword_pattern, offset); ++ break; ++ case UrlFilterOptions::ExceptionType::Generichide: ++ AddUrlFilterToIndex(url_generichide_allow_, keyword_pattern, offset); ++ break; ++ case UrlFilterOptions::ExceptionType::Document: ++ AddUrlFilterToIndex(url_document_allow_, keyword_pattern, offset); ++ break; ++ case UrlFilterOptions::ExceptionType::Elemhide: ++ AddUrlFilterToIndex(url_elemhide_allow_, keyword_pattern, offset); ++ break; ++ default: ++ break; ++ } + } -+ return absl::nullopt; +} + -+absl::optional SubscriptionCollectionImpl::FindByPopupFilter( -+ const GURL& popup_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey, -+ FilterCategory category) const { -+ const auto subscription = -+ std::find_if(subscriptions_.begin(), subscriptions_.end(), -+ [&](const auto& subscription) { -+ return subscription->HasPopupFilter( -+ popup_url, DocumentDomain(popup_url, frame_hierarchy), -+ sitekey, category); -+ }); -+ if (subscription != subscriptions_.end()) { -+ return (*subscription)->GetSourceUrl(); -+ } -+ return absl::nullopt; ++void FlatbufferSerializer::AddUrlFilterToIndex( ++ UrlFilterIndex& index, ++ absl::optional pattern_text, ++ flatbuffers::Offset filter) { ++ const auto keyword = ++ pattern_text ? FindCandidateKeyword(index, *pattern_text) : ""; ++ index[keyword].push_back(filter); +} + -+absl::optional SubscriptionCollectionImpl::FindByAllowFilter( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey) const { -+ for (const auto& subscription : subscriptions_) { -+ if (HasAllowFilter(subscription, request_url, frame_hierarchy, content_type, -+ sitekey)) { -+ return (*subscription).GetSourceUrl(); ++void FlatbufferSerializer::AddElemhideFilterForDomains( ++ ElemhideIndex& index, ++ const std::vector& include_domains, ++ flatbuffers::Offset filter) const { ++ if (include_domains.empty()) { ++ // This is a generic filter, we add those under "" index. ++ index[""].push_back(filter); ++ } else { ++ // Index this filter under each domain it is included for. ++ for (const auto& domain : include_domains) { ++ index[domain].push_back(filter); + } + } -+ return absl::nullopt; +} + -+absl::optional SubscriptionCollectionImpl::FindBySpecialFilter( -+ SpecialFilterType filter_type, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey) const { -+ for (const auto& subscription : subscriptions_) { -+ if (HasSpecialFilter(subscription, filter_type, request_url, -+ frame_hierarchy, sitekey)) { -+ return (*subscription).GetSourceUrl(); -+ } ++void FlatbufferSerializer::AddSnippetFilterForDomains( ++ SnippetIndex& index, ++ const std::vector& domains, ++ flatbuffers::Offset filter) const { ++ for (const auto& domain : domains) { ++ index[domain].push_back(filter); + } -+ return absl::nullopt; +} + -+std::vector -+SubscriptionCollectionImpl::GetElementHideSelectors( -+ const GURL& frame_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey) const { -+ const bool domain_specific = !!FindBySpecialFilter( -+ SpecialFilterType::Generichide, frame_url, frame_hierarchy, sitekey); -+ -+ InstalledSubscription::Selectors combined_selectors; -+ for (const auto& subscription : subscriptions_) { -+ auto selectors = -+ subscription->GetElemhideSelectors(frame_url, domain_specific); -+ std::move(selectors.elemhide_selectors.begin(), -+ selectors.elemhide_selectors.end(), -+ std::back_inserter(combined_selectors.elemhide_selectors)); -+ std::move(selectors.elemhide_exceptions.begin(), -+ selectors.elemhide_exceptions.end(), -+ std::back_inserter(combined_selectors.elemhide_exceptions)); -+ } -+ return ReduceSelectors(combined_selectors); ++flatbuffers::Offset< ++ flatbuffers::Vector>> ++FlatbufferSerializer::CreateVectorOfSharedStrings( ++ const std::vector& strings) { ++ std::vector> shared_strings; ++ std::transform( ++ strings.begin(), strings.end(), std::back_inserter(shared_strings), ++ [&](const std::string& s) { return builder_.CreateSharedString(s); }); ++ return builder_.CreateVector(std::move(shared_strings)); +} + -+std::vector -+SubscriptionCollectionImpl::GetElementHideEmulationSelectors( -+ const GURL& frame_url) const { -+ InstalledSubscription::Selectors combined_selectors; -+ for (const auto& subscription : subscriptions_) { -+ auto selectors = subscription->GetElemhideEmulationSelectors(frame_url); -+ std::move(selectors.elemhide_selectors.begin(), -+ selectors.elemhide_selectors.end(), -+ std::back_inserter(combined_selectors.elemhide_selectors)); -+ std::move(selectors.elemhide_exceptions.begin(), -+ selectors.elemhide_exceptions.end(), -+ std::back_inserter(combined_selectors.elemhide_exceptions)); -+ } -+ return ReduceSelectors(combined_selectors); ++flatbuffers::Offset< ++ flatbuffers::Vector>> ++FlatbufferSerializer::CreateVectorOfSharedStringsFromSitekeys( ++ const std::vector& sitekeys) { ++ std::vector> shared_strings; ++ std::transform( ++ sitekeys.begin(), sitekeys.end(), std::back_inserter(shared_strings), ++ [&](const SiteKey& s) { return builder_.CreateSharedString(s.value()); }); ++ return builder_.CreateVector(std::move(shared_strings)); +} + -+base::Value::List SubscriptionCollectionImpl::GenerateSnippets( -+ const GURL& frame_url, -+ const std::vector& frame_hierarchy) const { -+ base::Value::List snippets; -+ auto document_domain = DocumentDomain(frame_url, frame_hierarchy); ++flatbuffers::Offset< ++ flatbuffers::Vector>> ++FlatbufferSerializer::WriteUrlFilterIndex(const UrlFilterIndex& index) { ++ std::vector> offsets; ++ offsets.reserve(index.size()); + -+ for (const auto& subscription : subscriptions_) { -+ auto matched = subscription->MatchSnippets(document_domain); -+ for (const auto& snippet : matched) { -+ base::Value::List call; -+ call.Append(base::Value(snippet.command)); -+ for (const auto& arg : snippet.arguments) { -+ call.Append(base::Value(arg)); -+ } -+ snippets.Append(std::move(call)); -+ } ++ for (const auto& cur : index) { ++ offsets.push_back(flat::CreateUrlFiltersByKeyword( ++ builder_, builder_.CreateSharedString(cur.first), ++ builder_.CreateVector(cur.second))); + } + -+ return snippets; ++ return builder_.CreateVector(offsets); +} + -+std::set SubscriptionCollectionImpl::GetCspInjections( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy) const { -+ std::set blocking_filters{}; -+ std::set allowing_filters{}; -+ for (const auto& subscription : subscriptions_) { -+ subscription->FindCspFilters(request_url, -+ DocumentDomain(request_url, frame_hierarchy), -+ FilterCategory::Blocking, blocking_filters); -+ } -+ if (blocking_filters.empty()) { -+ return {}; -+ } ++flatbuffers::Offset< ++ flatbuffers::Vector>> ++FlatbufferSerializer::WriteElemhideFilterIndex(const ElemhideIndex& index) { ++ std::vector> offsets; ++ offsets.reserve(index.size()); + -+ // If blocking filters found, check if can be overruled by allowing filters. -+ for (const auto& subscription : subscriptions_) { -+ // There may exist an allowing rule for this request and its immediate -+ // parent frame. We also check for document-wide allowing filters. -+ if (HasSpecialFilter(subscription, SpecialFilterType::Document, request_url, -+ frame_hierarchy, SiteKey())) { -+ return {}; -+ } -+ subscription->FindCspFilters(request_url, -+ DocumentDomain(request_url, frame_hierarchy), -+ FilterCategory::Allowing, allowing_filters); ++ for (const auto& cur : index) { ++ offsets.push_back(flat::CreateElemHideFiltersByDomain( ++ builder_, builder_.CreateSharedString(cur.first), ++ builder_.CreateVector(cur.second))); + } ++ // Filters must be sorted (by domain), in order for LookupByKey() to work ++ // correctly. This can be also achieved by making ElemhideIndex an ordered ++ // map, but profiling shows sorting an unordered_map at the end is faster by ++ // about 15% (on exceptionrules.txt). ++ return builder_.CreateVectorOfSortedTables(offsets.data(), offsets.size()); ++} + -+ // Remove overruled filters. -+ for (const auto& a_f : allowing_filters) { -+ if (a_f.empty()) { -+ return {}; -+ } -+ blocking_filters.erase(a_f); -+ } -+ if (blocking_filters.empty()) { -+ return {}; ++flatbuffers::Offset< ++ flatbuffers::Vector>> ++FlatbufferSerializer::WriteSnippetFilterIndex(const SnippetIndex& index) { ++ std::vector> offsets; ++ offsets.reserve(index.size()); ++ ++ for (const auto& cur : index) { ++ offsets.push_back(flat::CreateSnippetFiltersByDomain( ++ builder_, builder_.CreateSharedString(cur.first), ++ builder_.CreateVector(cur.second))); + } ++ return builder_.CreateVector(offsets); ++} + -+ // Last chance to avoid blocking: maybe there is a Genericblock filter and -+ // we should re-search for domain-specific filters only? -+ if (base::ranges::any_of(subscriptions_, [&](const auto& sub) { -+ return HasSpecialFilter(sub, SpecialFilterType::Genericblock, -+ request_url, frame_hierarchy, SiteKey()); -+ })) { -+ // This is a relatively rare case - we should have searched for -+ // domain-specific filters only. -+ std::set domain_specific_blocking{}; -+ for (const auto& subscription : subscriptions_) { -+ subscription->FindCspFilters( -+ request_url, DocumentDomain(request_url, frame_hierarchy), -+ FilterCategory::DomainSpecificBlocking, domain_specific_blocking); -+ // There is a domain-specific blocking filter. No point in -+ // searching for a domain-specific allowing filter, since the -+ // previous search for non-specific allowing filters would have found -+ // it. -+ } -+ if (!domain_specific_blocking.empty()) { -+ for (const auto& a_f : allowing_filters) { -+ if (a_f.empty()) { -+ return {}; -+ } -+ domain_specific_blocking.erase(a_f); -+ } -+ } ++std::string FlatbufferSerializer::FindCandidateKeyword( ++ UrlFilterIndex& index, ++ base::StringPiece value) { ++ FilterKeywordExtractor keyword_extractor(value); ++ size_t last_size = std::numeric_limits::max(); ++ std::string keyword; ++ while (auto current_keyword = keyword_extractor.GetNextKeyword()) { ++ std::string candidate = *current_keyword; ++ auto it = index.find(candidate); ++ auto size = it != index.end() ? it->second.size() : 0; + -+ return domain_specific_blocking; ++ if (size < last_size || ++ (size == last_size && candidate.size() > keyword.size())) { ++ last_size = size; ++ keyword = candidate; ++ } + } ++ return keyword; ++} + -+ return blocking_filters; ++// static ++std::string FlatbufferSerializer::EscapeSelector( ++ const base::StringPiece& value) { ++ std::string escaped; ++ base::ReplaceChars(value, "{", "\\7b ", &escaped); ++ base::ReplaceChars(escaped, "}", "\\7d ", &escaped); ++ return escaped; +} + -+std::set SubscriptionCollectionImpl::GetRewriteFilters( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ FilterCategory category) const { -+ std::set result; -+ for (const auto& subscription : subscriptions_) { -+ const auto filters = subscription->FindRewriteFilters( -+ request_url, DocumentDomain(request_url, frame_hierarchy), category); -+ result.insert(filters.begin(), filters.end()); ++// static ++flat::ThirdParty FlatbufferSerializer::ThirdPartyOptionToFb( ++ UrlFilterOptions::ThirdPartyOption option) { ++ if (option == UrlFilterOptions::ThirdPartyOption::ThirdPartyOnly) { ++ return flat::ThirdParty_ThirdPartyOnly; + } -+ return result; ++ if (option == UrlFilterOptions::ThirdPartyOption::FirstPartyOnly) { ++ return flat::ThirdParty_FirstPartyOnly; ++ } ++ return flat::ThirdParty_Ignore; +} + -+std::set SubscriptionCollectionImpl::GetHeaderFilters( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ FilterCategory category) const { -+ std::set filters{}; -+ for (const auto& subscription : subscriptions_) { -+ subscription->FindHeaderFilters( -+ request_url, content_type, DocumentDomain(request_url, frame_hierarchy), -+ category, filters); ++// static ++flat::AbpResource FlatbufferSerializer::RewriteOptionToFb( ++ UrlFilterOptions::RewriteOption option) { ++ switch (option) { ++ case UrlFilterOptions::RewriteOption::AbpResource_BlankText: ++ return flat::AbpResource_BlankText; ++ case UrlFilterOptions::RewriteOption::AbpResource_BlankCss: ++ return flat::AbpResource_BlankCss; ++ case UrlFilterOptions::RewriteOption::AbpResource_BlankJs: ++ return flat::AbpResource_BlankJs; ++ case UrlFilterOptions::RewriteOption::AbpResource_BlankHtml: ++ return flat::AbpResource_BlankHtml; ++ case UrlFilterOptions::RewriteOption::AbpResource_BlankMp3: ++ return flat::AbpResource_BlankMp3; ++ case UrlFilterOptions::RewriteOption::AbpResource_BlankMp4: ++ return flat::AbpResource_BlankMp4; ++ case UrlFilterOptions::RewriteOption::AbpResource_TransparentGif1x1: ++ return flat::AbpResource_TransparentGif1x1; ++ case UrlFilterOptions::RewriteOption::AbpResource_TransparentPng2x2: ++ return flat::AbpResource_TransparentPng2x2; ++ case UrlFilterOptions::RewriteOption::AbpResource_TransparentPng3x2: ++ return flat::AbpResource_TransparentPng3x2; ++ case UrlFilterOptions::RewriteOption::AbpResource_TransparentPng32x32: ++ return flat::AbpResource_TransparentPng32x32; ++ default: ++ NOTREACHED(); + } -+ return filters; +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/subscription_collection_impl.h b/components/adblock/core/subscription/subscription_collection_impl.h +diff --git a/components/adblock/core/converter/serializer/flatbuffer_serializer.h b/components/adblock/core/converter/serializer/flatbuffer_serializer.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_collection_impl.h -@@ -0,0 +1,97 @@ ++++ b/components/adblock/core/converter/serializer/flatbuffer_serializer.h +@@ -0,0 +1,129 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -25559,91 +13236,169 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_IMPL_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FLATBUFFER_SERIALIZER_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FLATBUFFER_SERIALIZER_H_ + ++#include ++#include ++#include ++#include +#include + -+#include "base/containers/span.h" -+#include "base/memory/scoped_refptr.h" -+#include "components/adblock/core/subscription/subscription_collection.h" ++#include "components/adblock/core/common/flatbuffer_data.h" ++#include "components/adblock/core/converter/parser/content_filter.h" ++#include "components/adblock/core/converter/parser/metadata.h" ++#include "components/adblock/core/converter/parser/snippet_filter.h" ++#include "components/adblock/core/converter/parser/url_filter.h" ++#include "components/adblock/core/converter/parser/url_filter_options.h" ++#include "components/adblock/core/converter/serializer/serializer.h" ++#include "components/adblock/core/schema/filter_list_schema_generated.h" ++#include "url/gurl.h" + +namespace adblock { + -+class SubscriptionCollectionImpl final : public SubscriptionCollection { ++class FlatbufferSerializer final : public Serializer { + public: -+ explicit SubscriptionCollectionImpl( -+ std::vector> current_state, -+ const std::string& configuration_name); -+ ~SubscriptionCollectionImpl() final; -+ SubscriptionCollectionImpl(const SubscriptionCollectionImpl&); -+ SubscriptionCollectionImpl(SubscriptionCollectionImpl&&); -+ SubscriptionCollectionImpl& operator=(const SubscriptionCollectionImpl&); -+ SubscriptionCollectionImpl& operator=(SubscriptionCollectionImpl&&); ++ explicit FlatbufferSerializer(GURL subscription_url, bool allow_privileged); ++ ~FlatbufferSerializer() override; + -+ const std::string& GetFilteringConfigurationName() const final; ++ std::unique_ptr GetSerializedSubscription(); + -+ absl::optional FindBySubresourceFilter( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey, -+ FilterCategory category) const final; ++ void SerializeMetadata(const Metadata metadata) override; ++ void SerializeContentFilter(const ContentFilter content_filter) override; ++ void SerializeSnippetFilter(const SnippetFilter snippet_filter) override; ++ void SerializeUrlFilter(const UrlFilter url_filter) override; + -+ absl::optional FindByPopupFilter( -+ const GURL& popup_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey, -+ FilterCategory category) const final; ++ private: ++ using UrlFilterIndex = ++ std::map>>; ++ using ElemhideIndex = std::unordered_map< ++ std::string, ++ std::vector>>; ++ using SnippetIndex = ++ std::map>>; + -+ absl::optional FindByAllowFilter( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey) const final; ++ void AddUrlFilterToIndex(UrlFilterIndex& index, ++ absl::optional pattern_text, ++ flatbuffers::Offset filter); ++ void AddElemhideFilterForDomains( ++ ElemhideIndex& index, ++ const std::vector& include_domains, ++ flatbuffers::Offset filter) const; ++ void AddSnippetFilterForDomains( ++ SnippetIndex& index, ++ const std::vector& domains, ++ flatbuffers::Offset filter) const; + -+ absl::optional FindBySpecialFilter( -+ SpecialFilterType filter_type, -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey) const final; ++ flatbuffers::Offset< ++ flatbuffers::Vector>> ++ CreateVectorOfSharedStrings(const std::vector& strings); + -+ std::vector GetElementHideSelectors( -+ const GURL& frame_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey) const final; -+ std::vector GetElementHideEmulationSelectors( -+ const GURL& frame_url) const final; -+ base::Value::List GenerateSnippets( -+ const GURL& frame_url, -+ const std::vector& frame_hierarchy) const final; -+ std::set GetCspInjections( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy) const final; -+ std::set GetRewriteFilters( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ FilterCategory category) const final; ++ flatbuffers::Offset< ++ flatbuffers::Vector>> ++ CreateVectorOfSharedStringsFromSitekeys(const std::vector& sitekeys); + -+ std::set GetHeaderFilters( -+ const GURL& request_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ FilterCategory category) const final; ++ flatbuffers::Offset< ++ flatbuffers::Vector>> ++ WriteUrlFilterIndex(const UrlFilterIndex& index); + -+ private: -+ std::vector> subscriptions_; -+ std::string configuration_name_; ++ flatbuffers::Offset< ++ flatbuffers::Vector>> ++ WriteElemhideFilterIndex(const ElemhideIndex& index); ++ ++ flatbuffers::Offset< ++ flatbuffers::Vector>> ++ WriteSnippetFilterIndex(const SnippetIndex& index); ++ ++ std::string FindCandidateKeyword(UrlFilterIndex& index, ++ base::StringPiece value); ++ ++ static std::string EscapeSelector(const base::StringPiece& value); ++ ++ static flat::ThirdParty ThirdPartyOptionToFb( ++ UrlFilterOptions::ThirdPartyOption option); ++ static flat::AbpResource RewriteOptionToFb( ++ UrlFilterOptions::RewriteOption option); ++ ++ GURL subscription_url_; ++ bool allow_privileged_ = false; ++ flatbuffers::FlatBufferBuilder builder_; ++ flatbuffers::Offset metadata_; ++ UrlFilterIndex url_subresource_block_; ++ UrlFilterIndex url_subresource_allow_; ++ UrlFilterIndex url_popup_block_; ++ UrlFilterIndex url_popup_allow_; ++ UrlFilterIndex url_document_allow_; ++ UrlFilterIndex url_elemhide_allow_; ++ UrlFilterIndex url_generichide_allow_; ++ UrlFilterIndex url_genericblock_allow_; ++ UrlFilterIndex url_csp_block_; ++ UrlFilterIndex url_csp_allow_; ++ UrlFilterIndex url_rewrite_block_; ++ UrlFilterIndex url_rewrite_allow_; ++ UrlFilterIndex url_header_allow_; ++ UrlFilterIndex url_header_block_; ++ ElemhideIndex elemhide_exception_index_; ++ ElemhideIndex elemhide_index_; ++ ElemhideIndex elemhide_emulation_index_; ++ SnippetIndex snippet_index_; ++}; ++ ++} // namespace adblock ++ ++#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_FLATBUFFER_SERIALIZER_H_ +diff --git a/components/adblock/core/converter/serializer/serializer.h b/components/adblock/core/converter/serializer/serializer.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/converter/serializer/serializer.h +@@ -0,0 +1,41 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ ++ ++#ifndef COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_SERIALIZER_H_ ++#define COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_SERIALIZER_H_ ++ ++#include ++ ++namespace adblock { ++ ++class ContentFilter; ++class Metadata; ++class SnippetFilter; ++class UrlFilter; ++ ++class Serializer { ++ public: ++ virtual ~Serializer() = default; ++ virtual void SerializeMetadata(const Metadata metadata) = 0; ++ virtual void SerializeContentFilter(const ContentFilter content_filter) = 0; ++ virtual void SerializeSnippetFilter(const SnippetFilter snippet_filter) = 0; ++ virtual void SerializeUrlFilter(const UrlFilter url_filter) = 0; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_IMPL_H_ -diff --git a/components/adblock/core/subscription/subscription_config.cc b/components/adblock/core/subscription/subscription_config.cc ++#endif // COMPONENTS_ADBLOCK_CORE_CONVERTER_SERIALIZER_SERIALIZER_H_ +diff --git a/components/adblock/core/features.cc b/components/adblock/core/features.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_config.cc -@@ -0,0 +1,338 @@ ++++ b/components/adblock/core/features.cc +@@ -0,0 +1,25 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -25661,332 +13416,55 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/subscription_config.h" -+ -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/grit/components_resources.h" -+ -+namespace { -+int g_port_for_testing = 0; -+ -+std::string GetHost() { -+ GURL url("https://easylist-downloads.adblockplus.org"); -+ if (!g_port_for_testing) { -+ return url.spec(); -+ } -+ GURL::Replacements replacements; -+ const std::string port_str = base::NumberToString(g_port_for_testing); -+ replacements.SetPortStr(port_str); -+ return url.ReplaceComponents(replacements).spec(); -+} -+} // namespace ++#include "components/adblock/core/features.h" + +namespace adblock { + -+const GURL& AcceptableAdsUrl() { -+ static GURL kAcceptableAds(GetHost() + "exceptionrules.txt"); -+ return kAcceptableAds; -+} -+ -+const GURL& AntiCVUrl() { -+ static GURL kAntiCV(GetHost() + "abp-filters-anti-cv.txt"); -+ return kAntiCV; -+} ++const base::Feature kAdblockPlusFeature{"AdblockPlus", ++ base::FEATURE_ENABLED_BY_DEFAULT}; + -+const GURL& DefaultSubscriptionUrl() { -+ static GURL kEasylistUrl(GetHost() + "easylist.txt"); -+ return kEasylistUrl; +} +diff --git a/components/adblock/core/features.h b/components/adblock/core/features.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/features.h +@@ -0,0 +1,31 @@ + -+KnownSubscriptionInfo::KnownSubscriptionInfo() = default; -+KnownSubscriptionInfo::~KnownSubscriptionInfo() = default; -+KnownSubscriptionInfo::KnownSubscriptionInfo(const KnownSubscriptionInfo&) = -+ default; -+KnownSubscriptionInfo::KnownSubscriptionInfo(KnownSubscriptionInfo&&) = default; -+KnownSubscriptionInfo& KnownSubscriptionInfo::operator=( -+ const KnownSubscriptionInfo&) = default; -+KnownSubscriptionInfo& KnownSubscriptionInfo::operator=( -+ KnownSubscriptionInfo&&) = default; -+ -+KnownSubscriptionInfo::KnownSubscriptionInfo( -+ GURL url_param, -+ std::string title_param, -+ std::vector languages_param, -+ SubscriptionUiVisibility ui_visibility_param, -+ SubscriptionFirstRunBehavior first_run_param, -+ SubscriptionPrivilegedFilterStatus privileged_status_param) -+ : url(url_param), -+ title(title_param), -+ languages(languages_param), -+ ui_visibility(ui_visibility_param), -+ first_run(first_run_param), -+ privileged_status(privileged_status_param) {} -+ -+const std::vector& config::GetKnownSubscriptions() { -+ // The current list of subscriptions can be downloaded from: -+ // https://gitlab.com/eyeo/filterlists/subscriptionlist/-/archive/master/subscriptionlist-master.tar.gz -+ // The archive contains files with subscription definitions. The ones we're -+ // interested in are ones that declare a [recommendation] keyword in either -+ // the "list" or "variant" key. -+ // Here's a script that parses the archive into a subscriptions.json: -+ // https://gitlab.com/eyeo/adblockplus/abc/adblockpluscore/-/blob/next/build/updateSubscriptions.js -+ // The list isn't updated very often. If it starts to become a burden to -+ // align the C++ representation, better to update it manually because it also -+ // contains visibility and first run behavior options. -+ static std::vector recommendations = { -+ {GURL(GetHost() + "abpindo+easylist.txt"), -+ "ABPindo+EasyList", -+ {"id", "ms"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "abpvn+easylist.txt"), -+ "ABPVN List+EasyList", -+ {"vi"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "bulgarian_list+easylist.txt"), -+ "Bulgarian list+EasyList", -+ {"bg"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "dandelion_sprouts_nordic_filters+easylist.txt"), -+ "Dandelion Sprout's Nordic Filters+EasyList", -+ {"no", "nb", "nn", "da", "is", "fo", "kl"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {DefaultSubscriptionUrl(), -+ "EasyList", -+ {"en"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "easylistchina+easylist.txt"), -+ "EasyList China+EasyList", -+ {"zh"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "easylistczechslovak+easylist.txt"), -+ "EasyList Czech and Slovak+EasyList", -+ {"cs", "sk"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "easylistdutch+easylist.txt"), -+ "EasyList Dutch+EasyList", -+ {"nl"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "easylistgermany+easylist.txt"), -+ "EasyList Germany+EasyList", -+ {"de"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "israellist+easylist.txt"), -+ "EasyList Hebrew+EasyList", -+ {"he"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "easylistitaly+easylist.txt"), -+ "EasyList Italy+EasyList", -+ {"it"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "easylistlithuania+easylist.txt"), -+ "EasyList Lithuania+EasyList", -+ {"lt"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "easylistpolish+easylist.txt"), -+ "EasyList Polish+EasyList", -+ {"pl"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "easylistportuguese+easylist.txt"), -+ "EasyList Portuguese+EasyList", -+ {"pt"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "easylistspanish+easylist.txt"), -+ "EasyList Spanish+EasyList", -+ {"es"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "global-filters+easylist.txt"), -+ "Global Filters+EasyList", -+ {"th", "el", "sl", "hr", "sr", "bs"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "indianlist+easylist.txt"), -+ "IndianList+EasyList", -+ {"bn", "gu", "hi", "pa", "as", "mr", "ml", "te", "kn", "or", "ne", "si"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "japanese-filters+easylist.txt"), -+ "Japanese Filters+EasyList", -+ {"ja"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "koreanlist+easylist.txt"), -+ "KoreanList+EasyList", -+ {"ko"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "latvianlist+easylist.txt"), -+ "Latvian List+EasyList", -+ {"lv"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "liste_ar+liste_fr+easylist.txt"), -+ "Liste AR+Liste FR+EasyList", -+ {"ar"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "liste_fr+easylist.txt"), -+ "Liste FR+EasyList", -+ {"fr"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "rolist+easylist.txt"), -+ "ROList+EasyList", -+ {"ro"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "ruadlist+easylist.txt"), -+ "RuAdList+EasyList", -+ {"ru", "uk", "uz", "kk"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "turkish-filters+easylist.txt"), -+ "Turkish Filters+EasyList", -+ {"tr"}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {AcceptableAdsUrl(), -+ "Acceptable Ads", -+ {}, -+ SubscriptionUiVisibility::Invisible, -+ SubscriptionFirstRunBehavior::Subscribe, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {AntiCVUrl(), -+ "ABP filters", -+ {}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::Subscribe, -+ SubscriptionPrivilegedFilterStatus::Allowed}, -+ {GURL(GetHost() + "i_dont_care_about_cookies.txt"), -+ "I don't care about cookies", -+ {}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::Ignore, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "" -+ "fanboy-notifications.txt"), -+ "Fanboy's Notifications Blocking List", -+ {}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::Ignore, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "easyprivacy.txt"), -+ "EasyPrivacy", -+ {}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::Ignore, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {GURL(GetHost() + "fanboy-social.txt"), -+ "Fanboy's Social Blocking List", -+ {}, -+ SubscriptionUiVisibility::Visible, -+ SubscriptionFirstRunBehavior::Ignore, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {CustomFiltersUrl(), -+ "User filters", -+ {}, -+ SubscriptionUiVisibility::Invisible, -+ SubscriptionFirstRunBehavior::Ignore, -+ SubscriptionPrivilegedFilterStatus::Allowed}, -+ {TestPagesSubscriptionUrl(), -+ "ABP Test filters", -+ {}, -+ SubscriptionUiVisibility::Invisible, -+ SubscriptionFirstRunBehavior::Ignore, -+ SubscriptionPrivilegedFilterStatus::Allowed} -+ -+ // You can customize subscriptions available on first run and in settings -+ // here. Items are displayed in settings in order declared here. See -+ // components/adblock/docs/integration-how-to.md, section 'How to change -+ // the default filter lists?'. For example: -+ -+ // clang-format off -+ /* -+ {"https://domain.com/subscription.txt", // URL -+ "My Custom Filters", // Display name for settings -+ {}, // Supported languages list, considered for -+ // SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch -+ SubscriptionUiVisibility::Visible, // Should the app show a subscription in the settings -+ SubscriptionFirstRunBehavior::Subscribe, // Should the app subscribe on first run -+ SubscriptionPrivilegedFilterStatus::Forbidden // Allow or forbid snippets and header filters -+ }, -+ */ -+ // clang-format on -+ -+ }; -+ -+ return recommendations; -+} ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ + -+bool config::AllowPrivilegedFilters(const GURL& url) { -+ for (const auto& cur : GetKnownSubscriptions()) { -+ if (cur.url == url) { -+ return cur.privileged_status == -+ SubscriptionPrivilegedFilterStatus::Allowed; -+ } -+ } ++#ifndef COMPONENTS_ADBLOCK_CORE_FEATURES_H_ ++#define COMPONENTS_ADBLOCK_CORE_FEATURES_H_ + -+ return false; -+} ++#include "base/feature_list.h" + -+const std::vector& -+config::GetPreloadedSubscriptionConfiguration() { -+ static const std::vector preloaded_subscriptions = -+ {{"*easylist.txt", IDR_ADBLOCK_FLATBUFFER_EASYLIST}, -+ {"*exceptionrules.txt", IDR_ADBLOCK_FLATBUFFER_EXCEPTIONRULES}, -+ {"*abp-filters-anti-cv.txt", IDR_ADBLOCK_FLATBUFFER_ANTICV}}; -+ return preloaded_subscriptions; -+} ++namespace adblock { + -+void SetFilterListServerPortForTesting(int port_for_testing) { -+ g_port_for_testing = port_for_testing; -+} ++// Controls whether ad-blocking feature is enabled. ++extern const base::Feature kAdblockPlusFeature; + +} // namespace adblock -diff --git a/components/adblock/core/subscription/subscription_config.h b/components/adblock/core/subscription/subscription_config.h ++ ++#endif // COMPONENTS_ADBLOCK_CORE_FEATURES_H_ +diff --git a/components/adblock/core/schema/filter_list_schema.fbs b/components/adblock/core/schema/filter_list_schema.fbs new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_config.h -@@ -0,0 +1,120 @@ ++++ b/components/adblock/core/schema/filter_list_schema.fbs +@@ -0,0 +1,165 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -26003,115 +13481,160 @@ new file mode 100644 + * You should have received a copy of the GNU General Public License + * along with eyeo Chromium SDK. If not, see . + */ ++namespace adblock.flat; ++file_identifier "ABP2"; + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_CONFIG_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_CONFIG_H_ -+ -+#include ++// Filter types ++// ============ + -+#include "url/gurl.h" ++enum AbpResource: byte { ++ BlankText, ++ BlankCss, ++ BlankJs, ++ BlankHtml, ++ BlankMp3, ++ BlankMp4, ++ TransparentGif1x1, ++ TransparentPng2x2, ++ TransparentPng3x2, ++ TransparentPng32x32 ++} + -+namespace adblock { ++table Rewrite { ++ replace_with: AbpResource; ++} + -+const GURL& AcceptableAdsUrl(); -+const GURL& AntiCVUrl(); -+const GURL& DefaultSubscriptionUrl(); ++table Header { ++ header: string (required); ++ pattern: string; ++} + -+// Sets the port used by the embedded http server required for browser tests. -+// Must be called before the first call to GetKnownSubscriptions(). -+void SetFilterListServerPortForTesting(int port_for_testing); ++enum ThirdParty: byte { ++ Ignore, ++ FirstPartyOnly, ++ ThirdPartyOnly, ++} + -+enum class SubscriptionUiVisibility { Visible, Invisible }; ++enum ResourceType: uint32 { ++ Other = 1, ++ Script = 2, ++ Image = 4, ++ Stylesheet = 8, ++ Object = 16, ++ Subdocument = 32, ++ WebSocket = 128, ++ WebRtc = 256, ++ Ping = 1024, ++ XmlHttpRequest = 2048, ++ Media = 16384, ++ Font = 32768, ++ WebBundle = 65536 ++} + -+enum class SubscriptionFirstRunBehavior { -+ // Download and install as soon as possible. -+ Subscribe, -+ // Download and install as soon as possible but only if the device's region -+ // matches one of the |languages| defined in KnownSubscriptionInfo. -+ SubscribeIfLocaleMatch, -+ // Do not install automatically. -+ Ignore -+}; ++// usage note: you figure out if this is blocking or allowing based on if ++// it's stored in a 'block' or 'allow' list. ++table UrlFilter { ++ filter_text: string; ++ pattern: string (required); ++ match_case: bool; ++ resource_type: uint32; // this is a bitset mask of ResourceTypes ++ third_party: ThirdParty = Ignore; ++ sitekeys: [string]; ++ include_domains: [string]; ++ exclude_domains: [string]; ++ rewrite: Rewrite; ++ csp_filter: string; ++ header_filter: string; ++ header: Header; ++} + -+// Privileged filters include: -+// - Snippet filters -+// - Header filters -+enum class SubscriptionPrivilegedFilterStatus { Allowed, Forbidden }; ++// usage note: you figure out if this is blocking or allowing based on if ++// it's stored in a 'block' or 'allow' list. You also need to use ++// where it's stored to determine its domains, and whether it needs elem ++// hide emulation or not. ++table ElemHideFilter { ++ filter_text: string; ++ selector: string (required); ++ exclude_domains: [string]; ++} + -+// Description of a subscription that's known to exist in the Internet. -+// Can be used to populate a list of proposed or recommended subscriptions in -+// UI. -+struct KnownSubscriptionInfo { -+ KnownSubscriptionInfo(); -+ KnownSubscriptionInfo(GURL url, -+ std::string title, -+ std::vector languages, -+ SubscriptionUiVisibility ui_visibility, -+ SubscriptionFirstRunBehavior first_run, -+ SubscriptionPrivilegedFilterStatus privileged_status); -+ ~KnownSubscriptionInfo(); -+ KnownSubscriptionInfo(const KnownSubscriptionInfo&); -+ KnownSubscriptionInfo(KnownSubscriptionInfo&&); -+ KnownSubscriptionInfo& operator=(const KnownSubscriptionInfo&); -+ KnownSubscriptionInfo& operator=(KnownSubscriptionInfo&&); ++table SnippetFunctionCall { ++ command: string (required); ++ arguments: [string]; ++} + -+ GURL url; -+ std::string title; -+ std::vector languages; -+ SubscriptionUiVisibility ui_visibility = SubscriptionUiVisibility::Visible; -+ SubscriptionFirstRunBehavior first_run = -+ SubscriptionFirstRunBehavior::Subscribe; -+ SubscriptionPrivilegedFilterStatus privileged_status = -+ SubscriptionPrivilegedFilterStatus::Forbidden; -+}; ++table SnippetFilter { ++ filter_text: string; ++ exclude_domains: [string]; ++ script: [SnippetFunctionCall]; ++} + -+// Describes an available preloaded subscription that will be used to provide -+// some level of ad-filtering while a desired subscription is being downloaded -+// from the Internet. -+// Preloaded subscriptions are bundled with the browser and stored in the -+// ResourceBundle. They might be out-of-date and have reduced quality, but they -+// allow some level of ad-filtering immediately upon first start. -+struct PreloadedSubscriptionInfo { -+ // Wildcard-aware pattern that matches subscription URL. Examples: -+ // "*easylist.txt" (will match URLs like -+ // https://easylist-downloads.adblockplus.org/easylist.txt or -+ // https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt). -+ // This preloaded subscription will be used as a substitute for a -+ // subscription with a URL that matches |url_pattern|. -+ base::StringPiece url_pattern; + -+ // Resource ID containing the binary flatbuffer data that defines this -+ // preloaded subscription. Examples: -+ // IDR_ADBLOCK_FLATBUFFER_EASYLIST -+ int flatbuffer_resource_id; -+}; ++// Indexes ++// ======= + -+namespace config { ++table UrlFiltersByKeyword { ++ keyword: string (key); ++ filter: [UrlFilter]; ++} + -+// Returns the list of all known subscriptions. This list is static -+// and may change with browser updates, but not with filter list updates. -+// The list contains recommendations for all languages. -+const std::vector& GetKnownSubscriptions(); ++// encoder note: the same ElemHideFilter may appear in multiple ++// domains. Ensure that the same offset is stored rather than reencoding ++// the filter multiple times. ++table ElemHideFiltersByDomain { ++ domain: string (key); ++ filter: [ElemHideFilter]; ++} + -+// Returns whether a subscription from |url| is allowed to provide -+// privileged filters. -+bool AllowPrivilegedFilters(const GURL& url); ++// encoder note: the same SnippetFilter may appear in multiple ++// domains. Ensure that the same offset is stored rather than reencoding ++// the filter multiple times. ++table SnippetFiltersByDomain { ++ domain: string (key); ++ filter: [SnippetFilter]; ++} + -+// Returns the configuration of available preloaded subscriptions. Used by -+// PreloadedSubscriptionProvider. -+const std::vector& -+GetPreloadedSubscriptionConfiguration(); + -+} // namespace config ++// Root ++// ==== + -+} // namespace adblock ++table SubscriptionMetadata { ++ flatbuffers_schema_version: string; ++ url: string; ++ homepage: string; ++ title: string; ++ version: string; ++ expires: uint64; ++} + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_CONFIG_H_ -diff --git a/components/adblock/core/subscription/subscription_downloader.h b/components/adblock/core/subscription/subscription_downloader.h ++table Subscription { ++ metadata: SubscriptionMetadata; ++ url_subresource_block: [UrlFiltersByKeyword]; ++ url_subresource_allow: [UrlFiltersByKeyword]; ++ url_popup_block: [UrlFiltersByKeyword]; ++ url_popup_allow: [UrlFiltersByKeyword]; ++ url_document_allow: [UrlFiltersByKeyword]; ++ url_elemhide_allow: [UrlFiltersByKeyword]; ++ url_generichide_allow: [UrlFiltersByKeyword]; ++ url_genericblock_allow: [UrlFiltersByKeyword]; ++ url_csp_block: [UrlFiltersByKeyword]; ++ url_csp_allow: [UrlFiltersByKeyword]; ++ url_rewrite_block: [UrlFiltersByKeyword]; ++ url_rewrite_allow: [UrlFiltersByKeyword]; ++ url_header_block: [UrlFiltersByKeyword]; ++ url_header_allow: [UrlFiltersByKeyword]; ++ elemhide: [ElemHideFiltersByDomain]; ++ elemhide_emulation: [ElemHideFiltersByDomain]; ++ elemhide_exception: [ElemHideFiltersByDomain]; ++ snippet: [SnippetFiltersByDomain]; ++} ++ ++root_type Subscription; +diff --git a/components/adblock/core/session_stats.h b/components/adblock/core/session_stats.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_downloader.h -@@ -0,0 +1,66 @@ ++++ b/components/adblock/core/session_stats.h +@@ -0,0 +1,42 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -26129,60 +13652,36 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_SESSION_STATS_H_ ++#define COMPONENTS_ADBLOCK_CORE_SESSION_STATS_H_ + -+#include ++#include + -+#include "base/functional/callback.h" -+#include "components/adblock/core/common/flatbuffer_data.h" ++#include "components/keyed_service/core/keyed_service.h" +#include "url/gurl.h" + +namespace adblock { + -+// Downloads filter lists from the Internet and converts them into flatbuffers. -+// See also: OngoingSubscriptionRequest for more details about allowing and -+// retrying downloads. -+class SubscriptionDownloader { ++/** ++ * @brief Stores statistics about blocked and allowed URLs ++ * in current session (runtime). ++ * Lives in the UI thread. ++ */ ++class SessionStats : public KeyedService { + public: -+ using DownloadCompletedCallback = -+ base::OnceCallback)>; ++ virtual std::map GetSessionAllowedAdsCount() const = 0; + -+ // For head requests we only need the parsed version as result -+ using HeadRequestCallback = base::OnceCallback; -+ // Controls retry behavior when download or conversion failed. -+ enum class RetryPolicy { -+ // Will retry with a progressive back-off until download succeeded. -+ RetryUntilSucceeded, -+ // Will only try to download and convert the subscription once. -+ DoNotRetry, -+ }; -+ virtual ~SubscriptionDownloader() = default; -+ // Starts downlading |subscription_url|. |on_finished| will be called with -+ // the converted flatbuffer. |retry_policy| controls failure-handling -+ // behavior. If downloading is disallowed due to current network state, it is -+ // deferred until conditions allow it. -+ virtual void StartDownload(const GURL& subscription_url, -+ RetryPolicy retry_policy, -+ DownloadCompletedCallback on_finished) = 0; -+ // Cancels ongoing downloads for matching |url|, including retry attempts or -+ // downloads deferred due to network conditions. -+ virtual void CancelDownload(const GURL& subscription_url) = 0; -+ // Triggers head request on |subscription_url|. |on_finished| will be called -+ // with the parsed date from response headers, or with the empty string if -+ // the request was not successful. -+ virtual void DoHeadRequest(const GURL& subscription_url, -+ HeadRequestCallback on_finished) = 0; ++ virtual std::map GetSessionBlockedAdsCount() const = 0; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_H_ -diff --git a/components/adblock/core/subscription/subscription_downloader_impl.cc b/components/adblock/core/subscription/subscription_downloader_impl.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SESSION_STATS_H_ +diff --git a/components/adblock/core/sitekey_storage.h b/components/adblock/core/sitekey_storage.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_downloader_impl.cc -@@ -0,0 +1,289 @@ ++++ b/components/adblock/core/sitekey_storage.h +@@ -0,0 +1,53 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -26200,283 +13699,198 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/subscription_downloader_impl.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_H_ ++#define COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_H_ + -+#include -+#include -+#include -+#include ++#include + -+#include "base/files/file_path.h" -+#include "base/functional/bind.h" -+#include "base/ranges/algorithm.h" -+#include "base/strings/escape.h" -+#include "base/strings/strcat.h" -+#include "base/strings/string_number_conversions.h" -+#include "base/strings/string_piece.h" -+#include "base/time/time.h" -+#include "base/trace_event/trace_event.h" -+#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/subscription/subscription_config.h" -+#include "net/base/url_util.h" ++#include "absl/types/optional.h" ++#include "components/adblock/core/common/sitekey.h" ++#include "components/keyed_service/core/keyed_service.h" +#include "net/http/http_response_headers.h" ++#include "url/gurl.h" + +namespace adblock { -+namespace { -+ -+// To retain user anonymity, we clamp the download count sent to subscription -+// servers - any number higher than 4 is reported as just "4+". -+std::string GetClampedDownloadCount(int download_count) { -+ DCHECK_GE(download_count, 0); -+ if (download_count > 4) { -+ return "4+"; -+ } -+ return base::NumberToString(download_count); -+} + -+// Returns a version of |subscription_url| with added GET parameters that -+// describe client and request metadata. -+GURL AddUrlParameters(const GURL& subscription_url, -+ const SubscriptionPersistentMetadata* persistent_metadata, -+ const utils::AppInfo& client_metadata, -+ const bool is_disabled) { -+ const std::string query = base::StrCat( -+ {"addonName=", "eyeo-chromium-sdk", "&addonVersion=", "1.0", -+ "&application=", base::EscapeQueryParamValue(client_metadata.name, true), -+ "&applicationVersion=", -+ base::EscapeQueryParamValue(client_metadata.version, true), "&platform=", -+ base::EscapeQueryParamValue(client_metadata.client_os, true), -+ "&platformVersion=", "1.0", "&lastVersion=", -+ base::EscapeQueryParamValue( -+ persistent_metadata->GetVersion(subscription_url), true), -+ "&disabled=", is_disabled ? "true" : "false", "&downloadCount=", -+ GetClampedDownloadCount( -+ persistent_metadata->GetDownloadSuccessCount(subscription_url))}); ++/** ++ * @brief Parses response headers in search for AdblockPlus sitekeys and stores ++ * them. ++ * Some filters can only be applied on pages that provide a valid sitekey. ++ * Storage is not persistent. ++ * Lives in the UI thread. ++ */ ++class SitekeyStorage : public KeyedService { ++ public: ++ // Attempts to extract a sitekey from |headers|. If successful, the sitekey ++ // is added to storage and can be retrieved by |FindSiteKeyForAnyUrl|. ++ virtual void ProcessResponseHeaders( ++ const GURL& request_url, ++ const scoped_refptr& headers, ++ const std::string& user_agent) = 0; + -+ GURL::Replacements replacements; -+ replacements.SetQueryStr(query); -+ return subscription_url.ReplaceComponents(replacements); -+} ++ virtual absl::optional> FindSiteKeyForAnyUrl( ++ const std::vector& urls) const = 0; ++}; + -+int GenerateTraceId(const GURL& subscription_url) { -+ return std::hash{}(subscription_url.spec()); -+} ++} // namespace adblock + -+} // namespace ++#endif // COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_H_ +diff --git a/components/adblock/core/sitekey_storage_impl.cc b/components/adblock/core/sitekey_storage_impl.cc +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/sitekey_storage_impl.cc +@@ -0,0 +1,146 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ + -+SubscriptionDownloaderImpl::SubscriptionDownloaderImpl( -+ utils::AppInfo client_metadata, -+ SubscriptionRequestMaker request_maker, -+ ConversionExecutors* conversion_executor, -+ SubscriptionPersistentMetadata* persistent_metadata) -+ : client_metadata_(std::move(client_metadata)), -+ request_maker_(std::move(request_maker)), -+ conversion_executor_(conversion_executor), -+ persistent_metadata_(persistent_metadata) {} ++#include "components/adblock/core/sitekey_storage_impl.h" + -+SubscriptionDownloaderImpl::~SubscriptionDownloaderImpl() = default; ++#include "absl/types/optional.h" ++#include "base/base64.h" ++#include "base/logging.h" ++#include "base/trace_event/trace_event.h" ++#include "components/adblock/core/common/adblock_utils.h" ++#include "crypto/openssl_util.h" ++#include "crypto/signature_verifier.h" + -+void SubscriptionDownloaderImpl::StartDownload( -+ const GURL& subscription_url, -+ RetryPolicy retry_policy, -+ DownloadCompletedCallback on_finished) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ if (!IsUrlAllowed(subscription_url)) { -+ LOG(WARNING) << "[eyeo] Download from URL not allowed, will not download " -+ << subscription_url; -+ std::move(on_finished).Run(nullptr); -+ return; -+ } ++namespace adblock { + -+ ongoing_downloads_[subscription_url] = OngoingDownload{ -+ request_maker_.Run(), retry_policy, std::move(on_finished)}; -+ std::get(ongoing_downloads_[subscription_url]) -+ ->Start( -+ AddUrlParameters(subscription_url, persistent_metadata_, -+ client_metadata_, false), -+ OngoingSubscriptionRequest::Method::GET, -+ base::BindRepeating(&SubscriptionDownloaderImpl::OnDownloadFinished, -+ weak_ptr_factory_.GetWeakPtr())); ++SitekeyStorageImpl::SitekeyStorageImpl() { ++ crypto::EnsureOpenSSLInit(); +} + -+void SubscriptionDownloaderImpl::CancelDownload(const GURL& subscription_url) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ ongoing_downloads_.erase(subscription_url); -+} ++SitekeyStorageImpl::~SitekeyStorageImpl() = default; + -+void SubscriptionDownloaderImpl::DoHeadRequest( -+ const GURL& subscription_url, -+ HeadRequestCallback on_finished) { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ if (ongoing_ping_) { -+ std::move(std::get(*ongoing_ping_)).Run(""); ++void SitekeyStorageImpl::ProcessResponseHeaders( ++ const GURL& request_url, ++ const scoped_refptr& headers, ++ const std::string& user_agent) { ++ if (user_agent.empty()) { ++ LOG(WARNING) << "[eyeo] No user agent info"; ++ return; + } + -+ ongoing_ping_ = HeadRequest{request_maker_.Run(), std::move(on_finished)}; -+ std::get(*ongoing_ping_) -+ ->Start(AddUrlParameters(subscription_url, persistent_metadata_, -+ client_metadata_, true), -+ OngoingSubscriptionRequest::Method::HEAD, -+ base::BindRepeating( -+ &SubscriptionDownloaderImpl::OnHeadersOnlyDownloaded, -+ weak_ptr_factory_.GetWeakPtr())); -+} -+ -+bool SubscriptionDownloaderImpl::IsUrlAllowed( -+ const GURL& subscription_url) const { -+ if (net::IsLocalhost(subscription_url)) { -+ // We trust all localhost urls, regardless of scheme. -+ return true; -+ } -+ if (!subscription_url.SchemeIs("https") && -+ !subscription_url.SchemeIs("data")) { -+ return false; ++ auto site_key = adblock::utils::GetSitekeyHeader(headers); ++ if (site_key.value().empty()) { ++ VLOG(1) << "[eyeo] No site key header"; ++ return; + } -+ return true; ++ ++ ProcessSiteKey(request_url, site_key, user_agent); +} + -+void SubscriptionDownloaderImpl::OnHeadersOnlyDownloaded( -+ const GURL&, -+ base::FilePath downloaded_file, -+ scoped_refptr headers) { ++absl::optional> ++SitekeyStorageImpl::FindSiteKeyForAnyUrl(const std::vector& urls) const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(ongoing_ping_.has_value()); -+ base::Time date; -+ std::string version(""); -+ -+ // Parse date or Date from response headers. -+ if (headers && headers->GetDateValue(&date)) { -+ version = utils::ConvertBaseTimeToABPFilterVersionFormat(date); ++ for (const auto& url : urls) { ++ auto elem = url_to_sitekey_map_.find(url); ++ if (elem != url_to_sitekey_map_.cend()) { ++ return {*elem}; ++ } + } -+ -+ std::move(std::get(*ongoing_ping_)) -+ .Run(std::move(version)); -+ ongoing_ping_.reset(); -+ // A ping may fail. We don't retry, SubscriptionUpdater will send a new ping -+ // in an hour anyway. ++ return {}; +} + -+void SubscriptionDownloaderImpl::OnDownloadFinished( -+ const GURL& subscription_url, -+ base::FilePath downloaded_file, -+ scoped_refptr headers) { ++void SitekeyStorageImpl::ProcessSiteKey(const GURL& request_url, ++ const SiteKey& site_key, ++ const std::string& user_agent) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ -+ auto download_it = ongoing_downloads_.find(subscription_url); -+ DCHECK(download_it != ongoing_downloads_.end()); -+ -+ // For compatibility with existing Appium tests. To be removed after DPD-808. -+ if (headers) { -+ LOG(INFO) << "[eyeo] Response status for " -+ << AddUrlParameters(subscription_url, persistent_metadata_, -+ client_metadata_, false) -+ << " : " << headers->response_code(); ++ DCHECK(!site_key.value().empty()); ++ auto site_key_pair = FindSiteKeyForAnyUrl({request_url}); ++ if (site_key_pair.has_value() && ++ site_key.value() == site_key_pair->second.value()) { ++ DVLOG(3) << "[eyeo] Public key already stored for url: " ++ << site_key_pair->first; ++ return; + } + -+ if (downloaded_file.empty()) { -+ persistent_metadata_->IncrementDownloadErrorCount(subscription_url); -+ if (std::get(download_it->second) == -+ RetryPolicy::RetryUntilSucceeded) { -+ DLOG(WARNING) << "[eyeo] Failed to retrieve content for " -+ << subscription_url << ", will retry"; -+ std::get(download_it->second)->Retry(); -+ } else { -+ DLOG(WARNING) << "[eyeo] Failed to retrieve content for " -+ << subscription_url << ", will abort"; -+ std::move(std::get(download_it->second)) -+ .Run(nullptr); -+ ongoing_downloads_.erase(download_it); -+ } ++ GURL url = request_url.GetAsReferrer(); ++ TRACE_EVENT1("eyeo", "ProcessSiteKeyImpl", "url", request_url.spec()); ++ size_t delimiter = site_key.value().find("_"); ++ if ((delimiter == std::string::npos) || ++ (delimiter >= (site_key.value().length() - 1))) { ++ LOG(ERROR) << "[eyeo] Wrong format of site key header value: " ++ << site_key.value(); + return; + } + -+ VLOG(1) << "[eyeo] Finished downloading " << subscription_url -+ << ", starting conversion"; ++ std::string public_key = site_key.value().substr(0, delimiter); ++ std::string public_key_stripped = public_key.substr(0, public_key.find("==")); ++ std::string signature = site_key.value().substr(delimiter + 1); ++ DVLOG(1) << "[eyeo] Found site key header, public key: " << public_key ++ << ", signature: " << signature; + -+ TRACE_EVENT_NESTABLE_ASYNC_BEGIN1( -+ "eyeo", "Converting subscription", -+ TRACE_ID_LOCAL(GenerateTraceId(subscription_url)), "url", -+ subscription_url.spec()); ++ auto path_with_query = url.path(); ++ if (url.has_query()) { ++ path_with_query += "?" + url.query(); ++ } ++ DLOG(INFO) << "[eyeo] Calling IsSitekeySignatureValid(publicKey, signature, " ++ "uri, host," ++ " userAgent) with arguments: (" ++ << public_key << ", " << signature << ", " << path_with_query ++ << ", " << url.host() << ", " << user_agent << ")"; + -+ conversion_executor_->ConvertFilterListFile( -+ subscription_url, downloaded_file, -+ base::BindOnce(&SubscriptionDownloaderImpl::OnConversionFinished, -+ weak_ptr_factory_.GetWeakPtr(), subscription_url)); ++ std::string data = path_with_query + '\0' + url.host() + '\0' + user_agent; ++ if (IsSitekeySignatureValid(public_key, signature, data) && ++ !request_url.is_empty() && request_url.is_valid() && ++ !site_key.value().empty()) { ++ url_to_sitekey_map_[url] = SiteKey{public_key_stripped}; ++ } else { ++ LOG(ERROR) << "[eyeo] Sitekey verification failed"; ++ } +} + -+void SubscriptionDownloaderImpl::OnConversionFinished( -+ const GURL& subscription_url, -+ ConversionResult converter_result) { ++bool SitekeyStorageImpl::IsSitekeySignatureValid( ++ const std::string& public_key_b64, ++ const std::string& signature_b64, ++ const std::string& data) const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ TRACE_EVENT_NESTABLE_ASYNC_END0( -+ "eyeo", "Converting subscription", -+ TRACE_ID_LOCAL(GenerateTraceId(subscription_url))); -+ const auto download_it = ongoing_downloads_.find(subscription_url); -+ if (download_it == ongoing_downloads_.end()) { -+ VLOG(1) << "[eyeo] Conversion result discarded, subscription download " -+ "was cancelled."; -+ return; ++ std::string signature; ++ if (!base::Base64Decode(signature_b64, &signature, ++ base::Base64DecodePolicy::kForgiving)) { ++ DLOG(WARNING) << "[eyeo] Signature decode failed"; ++ return false; + } + -+ if (absl::holds_alternative>( -+ converter_result)) { -+ VLOG(1) << "[eyeo] Finished converting " << subscription_url -+ << " successfully"; -+ std::move(std::get(download_it->second)) -+ .Run(std::move( -+ absl::get>(converter_result))); -+ ongoing_downloads_.erase(download_it); -+ } else if (absl::holds_alternative(converter_result)) { -+ const GURL& redirect_url = absl::get(converter_result); -+ if (!IsUrlAllowed(redirect_url)) { -+ AbortWithWarning(download_it, "Redirect URL not allowed."); -+ return; -+ } -+ if (redirect_url == subscription_url) { -+ AbortWithWarning(download_it, -+ "Redirect to the same URL is not permitted."); -+ return; -+ } -+ if (std::get(download_it->second) -+ ->GetNumberOfRedirects() >= kMaxNumberOfRedirects) { -+ AbortWithWarning(download_it, "Maximum number of redirects exceeded."); -+ } else { -+ auto ongoing_download = ongoing_downloads_.extract(download_it); -+ ongoing_download.key() = redirect_url; -+ auto redirected_download_it = -+ ongoing_downloads_.insert(std::move(ongoing_download)).position; -+ std::get(redirected_download_it->second) -+ ->Redirect(AddUrlParameters(redirect_url, persistent_metadata_, -+ client_metadata_, false)); -+ } -+ } else { -+ persistent_metadata_->IncrementDownloadErrorCount(subscription_url); -+ AbortWithWarning(download_it, -+ *absl::get(converter_result)); -+ return; ++ std::string public_key; ++ if (!base::Base64Decode(public_key_b64, &public_key, ++ base::Base64DecodePolicy::kForgiving)) { ++ DLOG(WARNING) << "[eyeo] Public key decode failed"; ++ return false; + } -+} + -+void SubscriptionDownloaderImpl::AbortWithWarning( -+ const OngoingDownloadsIt ongoing_download_it, -+ const std::string& warning) { -+ if (ongoing_download_it == ongoing_downloads_.end()) { -+ return; ++ crypto::SignatureVerifier verifier; ++ if (verifier.VerifyInit(crypto::SignatureVerifier::RSA_PKCS1_SHA1, ++ base::as_bytes(base::make_span(signature)), ++ base::as_bytes(base::make_span(public_key)))) { ++ verifier.VerifyUpdate(base::as_bytes(base::make_span(data))); ++ return verifier.VerifyFinal(); + } -+ DLOG(WARNING) << "[eyeo] " << warning << " Aborting download of " -+ << ongoing_download_it->first; -+ std::move(std::get(ongoing_download_it->second)) -+ .Run(nullptr); -+ ongoing_downloads_.erase(ongoing_download_it); ++ ++ DLOG(WARNING) << "[eyeo] Verifier initialization failed"; ++ return false; +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/subscription_downloader_impl.h b/components/adblock/core/subscription/subscription_downloader_impl.h +diff --git a/components/adblock/core/sitekey_storage_impl.h b/components/adblock/core/sitekey_storage_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_downloader_impl.h -@@ -0,0 +1,102 @@ ++++ b/components/adblock/core/sitekey_storage_impl.h +@@ -0,0 +1,59 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -26494,96 +13908,236 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_IMPL_H_ -+ -+#include -+#include -+#include ++#ifndef COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_IMPL_H_ ++ ++#include + +#include "absl/types/optional.h" -+#include "base/files/file_path.h" -+#include "base/functional/callback_forward.h" -+#include "base/memory/raw_ptr.h" -+#include "base/memory/weak_ptr.h" -+#include "base/sequence_checker.h" -+#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/converter/flatbuffer_converter.h" -+#include "components/adblock/core/subscription/conversion_executors.h" -+#include "components/adblock/core/subscription/ongoing_subscription_request.h" -+#include "components/adblock/core/subscription/subscription_downloader.h" -+#include "components/adblock/core/subscription/subscription_persistent_metadata.h" + -+class PrefService; ++#include "components/adblock/core/common/sitekey.h" ++#include "components/adblock/core/sitekey_storage.h" + +namespace adblock { + -+class SubscriptionDownloaderImpl final : public SubscriptionDownloader { ++class SitekeyStorageImpl final : public SitekeyStorage { + public: -+ // Used to create OngoingSubscriptionRequests to implement concurrent HEAD and -+ // GET requests. -+ using SubscriptionRequestMaker = -+ base::RepeatingCallback()>; ++ SitekeyStorageImpl(); ++ ~SitekeyStorageImpl() final; + -+ SubscriptionDownloaderImpl( -+ utils::AppInfo client_metadata, -+ SubscriptionRequestMaker request_maker, -+ ConversionExecutors* conversion_executor, -+ SubscriptionPersistentMetadata* persistent_metadata); -+ ~SubscriptionDownloaderImpl() final; -+ void StartDownload(const GURL& subscription_url, -+ RetryPolicy retry_policy, -+ DownloadCompletedCallback on_finished) final; -+ void CancelDownload(const GURL& subscription_url) final; -+ void DoHeadRequest(const GURL& subscription_url, -+ HeadRequestCallback on_finished) final; ++ void ProcessResponseHeaders( ++ const GURL& request_url, ++ const scoped_refptr& headers, ++ const std::string& user_agent) final; + -+ static constexpr int kMaxNumberOfRedirects = 5; ++ absl::optional> FindSiteKeyForAnyUrl( ++ const std::vector& urls) const final; + + private: -+ using OngoingRequestPtr = std::unique_ptr; -+ // Represents subscription downloads in progress. -+ using OngoingDownload = -+ std::tuple; -+ using OngoingDownloads = std::map; -+ using OngoingDownloadsIt = OngoingDownloads::iterator; -+ // There's never more than one concurrent HEAD request - for the -+ // Acceptable Ads subscription, a special case in user counting. This will -+ // be replaced by a dedicated solution for user counting (Telemetry) -+ // eventually. -+ using HeadRequest = std::tuple; ++ void ProcessSiteKey(const GURL& request_url, ++ const SiteKey& site_key, ++ const std::string& user_agent); + -+ bool IsUrlAllowed(const GURL& subscription_url) const; -+ bool IsConnectionAllowed() const; -+ void OnDownloadFinished(const GURL& subscription_url, -+ base::FilePath downloaded_file, -+ scoped_refptr headers); -+ void OnHeadersOnlyDownloaded(const GURL& subscription_url, -+ base::FilePath downloaded_file, -+ scoped_refptr headers); -+ void OnConversionFinished(const GURL& subscription_url, -+ ConversionResult converter_result); -+ void AbortWithWarning(const OngoingDownloadsIt ongoing_download_it, -+ const std::string& warning); ++ bool IsSitekeySignatureValid(const std::string& public_key_b64, ++ const std::string& signature_b64, ++ const std::string& data) const; + + SEQUENCE_CHECKER(sequence_checker_); -+ utils::AppInfo client_metadata_; -+ SubscriptionRequestMaker request_maker_; -+ raw_ptr conversion_executor_; -+ raw_ptr persistent_metadata_; -+ OngoingDownloads ongoing_downloads_; -+ absl::optional ongoing_ping_; -+ base::WeakPtrFactory weak_ptr_factory_{this}; ++ std::map url_to_sitekey_map_; ++ base::WeakPtrFactory weak_ptr_factory_{this}; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_IMPL_H_ -diff --git a/components/adblock/core/subscription/subscription_persistent_metadata.h b/components/adblock/core/subscription/subscription_persistent_metadata.h ++#endif // COMPONENTS_ADBLOCK_CORE_SITEKEY_STORAGE_IMPL_H_ +diff --git a/components/adblock/core/subscription/BUILD.gn b/components/adblock/core/subscription/BUILD.gn new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_persistent_metadata.h -@@ -0,0 +1,86 @@ ++++ b/components/adblock/core/subscription/BUILD.gn +@@ -0,0 +1,178 @@ ++# ++# This file is part of eyeo Chromium SDK, ++# Copyright (C) 2006-present eyeo GmbH ++# ++# eyeo Chromium SDK is free software: you can redistribute it and/or modify ++# it under the terms of the GNU General Public License version 3 as ++# published by the Free Software Foundation. ++# ++# eyeo Chromium SDK is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with eyeo Chromium SDK. If not, see . ++ ++source_set("subscription") { ++ sources = [ ++ "conversion_executors.h", ++ "domain_splitter.cc", ++ "domain_splitter.h", ++ "filtering_configuration_maintainer.h", ++ "filtering_configuration_maintainer_impl.cc", ++ "filtering_configuration_maintainer_impl.h", ++ "installed_subscription.cc", ++ "installed_subscription.h", ++ "installed_subscription_impl.cc", ++ "installed_subscription_impl.h", ++ "ongoing_subscription_request.h", ++ "ongoing_subscription_request_impl.cc", ++ "ongoing_subscription_request_impl.h", ++ "pattern_matcher.cc", ++ "pattern_matcher.h", ++ "preloaded_subscription_provider.h", ++ "preloaded_subscription_provider_impl.cc", ++ "preloaded_subscription_provider_impl.h", ++ "regex_matcher.cc", ++ "regex_matcher.h", ++ "subscription.cc", ++ "subscription.h", ++ "subscription_collection.h", ++ "subscription_collection_impl.cc", ++ "subscription_collection_impl.h", ++ "subscription_config.cc", ++ "subscription_config.h", ++ "subscription_downloader.h", ++ "subscription_downloader_impl.cc", ++ "subscription_downloader_impl.h", ++ "subscription_persistent_metadata.h", ++ "subscription_persistent_metadata_impl.cc", ++ "subscription_persistent_metadata_impl.h", ++ "subscription_persistent_storage.h", ++ "subscription_persistent_storage_impl.cc", ++ "subscription_persistent_storage_impl.h", ++ "subscription_service.h", ++ "subscription_service_impl.cc", ++ "subscription_service_impl.h", ++ "subscription_updater.h", ++ "subscription_updater_impl.cc", ++ "subscription_updater_impl.h", ++ "subscription_validator.h", ++ "subscription_validator_impl.cc", ++ "subscription_validator_impl.h", ++ "url_keyword_extractor.cc", ++ "url_keyword_extractor.h", ++ ] ++ ++ deps = [ ++ "//components/adblock/core/common:utils", ++ "//components/adblock/core/converter", ++ "//components/resources:components_resources_grit", ++ "//net", ++ ] ++ ++ public_deps = [ ++ "//base", ++ "//components/adblock/core:schema", ++ "//components/adblock/core/common", ++ "//components/adblock/core/common", ++ "//components/adblock/core/configuration", ++ "//components/keyed_service/core", ++ "//components/prefs", ++ "//services/network/public/cpp", ++ "//third_party/abseil-cpp:absl", ++ "//third_party/re2", ++ "//url:url", ++ ] ++} ++ ++source_set("test_support") { ++ testonly = true ++ sources = [ ++ "test/load_gzipped_test_file.cc", ++ "test/load_gzipped_test_file.h", ++ "test/mock_conversion_executors.cc", ++ "test/mock_conversion_executors.h", ++ "test/mock_filtering_configuration_maintainer.cc", ++ "test/mock_filtering_configuration_maintainer.h", ++ "test/mock_installed_subscription.cc", ++ "test/mock_installed_subscription.h", ++ "test/mock_subscription.cc", ++ "test/mock_subscription.h", ++ "test/mock_subscription_collection.cc", ++ "test/mock_subscription_collection.h", ++ "test/mock_subscription_downloader.cc", ++ "test/mock_subscription_downloader.h", ++ "test/mock_subscription_persistent_metadata.cc", ++ "test/mock_subscription_persistent_metadata.h", ++ "test/mock_subscription_service.cc", ++ "test/mock_subscription_service.h", ++ "test/mock_subscription_updater.cc", ++ "test/mock_subscription_updater.h", ++ ] ++ ++ public_deps = [ ++ ":subscription", ++ "//components/adblock/core/configuration:test_support", ++ "//testing/gmock", ++ "//testing/gtest", ++ ] ++ ++ deps = [ "//third_party/zlib/google:compression_utils" ] ++} ++ ++source_set("unit_tests") { ++ testonly = true ++ sources = [ ++ "test/filtering_configuration_maintainer_impl_test.cc", ++ "test/installed_subscription_impl_test.cc", ++ "test/ongoing_subscription_request_impl_test.cc", ++ "test/pattern_matcher_test.cc", ++ "test/preloaded_subscription_provider_impl_test.cc", ++ "test/subscription_collection_impl_test.cc", ++ "test/subscription_downloader_impl_test.cc", ++ "test/subscription_persistent_metadata_impl_test.cc", ++ "test/subscription_persistent_storage_impl_test.cc", ++ "test/subscription_service_impl_test.cc", ++ "test/subscription_updater_impl_test.cc", ++ "test/subscription_validator_impl_test.cc", ++ "test/url_keyword_extractor_test.cc", ++ ] ++ ++ deps = [ ++ ":test_support", ++ "//components/adblock/core", ++ "//components/adblock/core/configuration:test_support", ++ "//components/adblock/core/converter", ++ "//components/prefs:test_support", ++ "//components/resources:components_resources_grit", ++ "//components/sync_preferences:test_support", ++ "//net:test_support", ++ "//services/network:test_support", ++ "//testing/gtest", ++ ] ++} ++ ++source_set("perf_tests") { ++ testonly = true ++ sources = [ ++ "test/pattern_matcher_perftest.cc", ++ "test/regex_matcher_perftest.cc", ++ ] ++ ++ deps = [ ++ ":subscription", ++ ":test_support", ++ "//base", ++ "//components/adblock/core", ++ "//testing/gtest", ++ "//testing/perf", ++ ] ++ ++ data = [ ++ "//components/test/data/adblock/40_regex_patterns.txt.gz", ++ "//components/test/data/adblock/5000_patterns.txt.gz", ++ "//components/test/data/adblock/5000_url.txt.gz", ++ ] ++} +diff --git a/components/adblock/core/subscription/conversion_executors.h b/components/adblock/core/subscription/conversion_executors.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/subscription/conversion_executors.h +@@ -0,0 +1,50 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -26601,80 +14155,45 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_CONVERSION_EXECUTORS_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_CONVERSION_EXECUTORS_H_ + +#include ++#include ++ ++#include "base/files/file_path.h" ++#include "base/functional/bind.h" ++#include "base/functional/callback.h" ++#include "components/adblock/core/converter/flatbuffer_converter.h" ++#include "components/adblock/core/subscription/installed_subscription.h" + -+#include "base/time/time.h" -+#include "components/keyed_service/core/keyed_service.h" +#include "url/gurl.h" + +namespace adblock { + -+// Persistently stores metadata about Subscriptions. -+// Metadata is data about Subscriptions that may not be encoded in the -+// Subscriptions themselves, like number of errors encountered while -+// downloading. -+// Subscription metadata is used to control subscription update behavior and -+// provide data for GET/HEAD query parameters. -+class SubscriptionPersistentMetadata : public KeyedService { ++class ConversionExecutors { + public: -+ // Sets the expiration date to Now() + |expires_in|. -+ // Expiration time can be: -+ // - Parsed from the filter list (see Subscription::GetTimeUntilExpires()) -+ // - Set to 5 days by default, if expiration time is not specified in filter -+ // list -+ // - Set to 1 day by default for the special case of HEAD-only request. -+ virtual void SetExpirationInterval(const GURL& subscription_url, -+ base::TimeDelta expires_in) = 0; -+ // The version of a subscription can be: -+ // - parsed from the filter list (see Subscription::GetCurrentVersion()) -+ // - for HEAD requests, created by parsing the received "Date" header. -+ // - not set -+ // It is common for custom subscriptions to not have a version available. -+ virtual void SetVersion(const GURL& subscription_url, -+ std::string version) = 0; -+ // Increments the total number of successful downloads. -+ // Successful HEAD-only requests, which don't deliver an actual subscription, -+ // still count towards this number. -+ // Resets the download error count to 0, as it breaks the error streak. -+ virtual void IncrementDownloadSuccessCount(const GURL& subscription_url) = 0; -+ // Increments the number of consecutive download failures, used to determine -+ // whether to fall back to an alternate download URL. -+ // Incrementing the error count does *not* influence the success count. -+ virtual void IncrementDownloadErrorCount(const GURL& subscription_url) = 0; -+ -+ // Returns whether the expiration time (see SetExpirationInterval()) is -+ // earlier than Now(). -+ // A subscription for which SetExpirationInterval() was never called is -+ // considered expired, as otherwise it would never be selected for updating. -+ virtual bool IsExpired(const GURL& subscription_url) const = 0; -+ // Returns time of last installation/update time, which is set when -+ // SetExpirationInterval() is called. -+ virtual base::Time GetLastInstallationTime( -+ const GURL& subscription_url) const = 0; -+ // Returns version set in SetVersion() or "0" when not set. -+ // Subscriptions are allowed to not have a version defined. -+ virtual std::string GetVersion(const GURL& subscription_url) const = 0; -+ // Returns the number of successful downloads of this subscription in the -+ // past. -+ virtual int GetDownloadSuccessCount(const GURL& subscription_url) const = 0; -+ // Returns number of consecutive download errors. -+ virtual int GetDownloadErrorCount(const GURL& subscription_url) const = 0; ++ // Synchronous ++ virtual scoped_refptr ConvertCustomFilters( ++ const std::vector& filters) const = 0; ++ // Asynchronous ++ virtual void ConvertFilterListFile( ++ const GURL& subscription_url, ++ const base::FilePath& path, ++ base::OnceCallback result_callback) const = 0; + -+ // Remove metadata associated with |subscription_url|. -+ virtual void RemoveMetadata(const GURL& subscription_url) = 0; ++ virtual ~ConversionExecutors() = default; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_H_ -diff --git a/components/adblock/core/subscription/subscription_persistent_metadata_impl.cc b/components/adblock/core/subscription/subscription_persistent_metadata_impl.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_CONVERSION_EXECUTORS_H_ +diff --git a/components/adblock/core/subscription/domain_splitter.cc b/components/adblock/core/subscription/domain_splitter.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_persistent_metadata_impl.cc -@@ -0,0 +1,170 @@ ++++ b/components/adblock/core/subscription/domain_splitter.cc +@@ -0,0 +1,46 @@ ++ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -26692,164 +14211,40 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/subscription_persistent_metadata_impl.h" ++#include "components/adblock/core/subscription/domain_splitter.h" + -+#include "base/json/values_util.h" -+#include "base/time/time.h" -+#include "base/values.h" -+#include "components/adblock/core/common/adblock_prefs.h" -+#include "components/prefs/scoped_user_pref_update.h" ++#include "base/strings/string_util.h" + +namespace adblock { -+namespace { -+constexpr base::StringPiece kExpirationTimeKey = "expiration_time"; -+constexpr base::StringPiece kLastInstallationTimeKey = "last_installation_time"; -+constexpr base::StringPiece kVersionKey = "version"; -+constexpr base::StringPiece kDownloadCountKey = "download_count"; -+constexpr base::StringPiece kErrorCountKey = "error_count"; -+} // namespace -+ -+struct SubscriptionPersistentMetadataImpl::Metadata { -+ base::Time expiration_time; -+ base::Time last_installation_time; -+ std::string version{"0"}; -+ int download_count{0}; -+ int error_count{0}; -+}; -+ -+SubscriptionPersistentMetadataImpl::SubscriptionPersistentMetadataImpl( -+ PrefService* prefs) -+ : prefs_(prefs) { -+ LoadFromPrefs(); -+} -+ -+SubscriptionPersistentMetadataImpl::~SubscriptionPersistentMetadataImpl() = -+ default; -+ -+void SubscriptionPersistentMetadataImpl::SetExpirationInterval( -+ const GURL& subscription_url, -+ base::TimeDelta expires_in) { -+ const auto now = base::Time::Now(); -+ metadata_map_[subscription_url].last_installation_time = now; -+ metadata_map_[subscription_url].expiration_time = now + expires_in; -+ UpdatePrefs(); -+} -+ -+void SubscriptionPersistentMetadataImpl::SetVersion( -+ const GURL& subscription_url, -+ std::string version) { -+ metadata_map_[subscription_url].version = std::move(version); -+ UpdatePrefs(); -+} -+ -+void SubscriptionPersistentMetadataImpl::IncrementDownloadSuccessCount( -+ const GURL& subscription_url) { -+ metadata_map_[subscription_url].download_count++; -+ metadata_map_[subscription_url].error_count = 0; -+ UpdatePrefs(); -+} -+ -+void SubscriptionPersistentMetadataImpl::IncrementDownloadErrorCount( -+ const GURL& subscription_url) { -+ metadata_map_[subscription_url].error_count++; -+ UpdatePrefs(); -+} -+ -+bool SubscriptionPersistentMetadataImpl::IsExpired( -+ const GURL& subscription_url) const { -+ auto it = metadata_map_.find(subscription_url); -+ if (it == metadata_map_.end()) { -+ return true; -+ } -+ return it->second.expiration_time <= base::Time::Now(); -+} -+ -+base::Time SubscriptionPersistentMetadataImpl::GetLastInstallationTime( -+ const GURL& subscription_url) const { -+ auto it = metadata_map_.find(subscription_url); -+ if (it == metadata_map_.end()) { -+ return base::Time(); -+ } -+ return it->second.last_installation_time; -+} -+ -+std::string SubscriptionPersistentMetadataImpl::GetVersion( -+ const GURL& subscription_url) const { -+ auto it = metadata_map_.find(subscription_url); -+ if (it == metadata_map_.end()) { -+ return "0"; -+ } -+ return it->second.version; -+} -+ -+int SubscriptionPersistentMetadataImpl::GetDownloadSuccessCount( -+ const GURL& subscription_url) const { -+ auto it = metadata_map_.find(subscription_url); -+ if (it == metadata_map_.end()) { -+ return 0; -+ } -+ return it->second.download_count; -+} -+ -+int SubscriptionPersistentMetadataImpl::GetDownloadErrorCount( -+ const GURL& subscription_url) const { -+ auto it = metadata_map_.find(subscription_url); -+ if (it == metadata_map_.end()) { -+ return 0; -+ } -+ return it->second.error_count; -+} -+ -+void SubscriptionPersistentMetadataImpl::RemoveMetadata( -+ const GURL& subscription_url) { -+ metadata_map_.erase(subscription_url); -+ UpdatePrefs(); -+} + -+void SubscriptionPersistentMetadataImpl::UpdatePrefs() { -+ base::Value::Dict dict; -+ for (const auto& pair : metadata_map_) { -+ base::Value::Dict subscription; -+ subscription.Set(kExpirationTimeKey, -+ TimeToValue(pair.second.expiration_time)); -+ subscription.Set(kLastInstallationTimeKey, -+ TimeToValue(pair.second.last_installation_time)); -+ subscription.Set(kVersionKey, pair.second.version); -+ subscription.Set(kDownloadCountKey, pair.second.download_count); -+ subscription.Set(kErrorCountKey, pair.second.error_count); -+ dict.Set(pair.first.spec(), std::move(subscription)); -+ } -+ prefs_->SetDict(common::prefs::kSubscriptionMetadata, std::move(dict)); -+} ++DomainSplitter::DomainSplitter(base::StringPiece domain) ++ : domain_(base::TrimString(domain, ".", base::TRIM_ALL)) {} + -+void SubscriptionPersistentMetadataImpl::LoadFromPrefs() { -+ const base::Value& dict = -+ prefs_->GetValue(common::prefs::kSubscriptionMetadata); -+ DCHECK(dict.is_dict()); -+ for (const auto dict_item : dict.GetDict()) { -+ Metadata subscription; -+ DCHECK(dict_item.second.is_dict()); -+ const auto* d = dict_item.second.GetIfDict(); -+ subscription.expiration_time = -+ ValueToTime(d->Find(kExpirationTimeKey)).value_or(base::Time()); -+ subscription.last_installation_time = -+ ValueToTime(d->Find(kLastInstallationTimeKey)).value_or(base::Time()); -+ const auto* version = d->FindString(kVersionKey); -+ if (version) { -+ subscription.version = *version; ++absl::optional DomainSplitter::FindNextSubdomain() { ++ const auto old_dot_pos = dot_pos_; ++ if (dot_pos_ < domain_.size()) { ++ // Find next dot in domain, for future iteration to consume. ++ dot_pos_ = domain_.find('.', dot_pos_ + 1); ++ // First run is special because we found no dots yet. ++ if (old_dot_pos == 0) { ++ return domain_; + } -+ subscription.error_count = d->FindInt(kErrorCountKey).value_or(0); -+ subscription.download_count = d->FindInt(kDownloadCountKey).value_or(0); -+ metadata_map_.emplace(dict_item.first, std::move(subscription)); ++ // Return the part of domain *after* the dot we found in previous iteration. ++ return domain_.substr(old_dot_pos + 1); + } ++ // Reached end of domain_. ++ // Reset in anticipation of future calls to FindNextSubdomain(). ++ dot_pos_ = 0; ++ return absl::nullopt; +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/subscription_persistent_metadata_impl.h b/components/adblock/core/subscription/subscription_persistent_metadata_impl.h +diff --git a/components/adblock/core/subscription/domain_splitter.h b/components/adblock/core/subscription/domain_splitter.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_persistent_metadata_impl.h -@@ -0,0 +1,62 @@ ++++ b/components/adblock/core/subscription/domain_splitter.h +@@ -0,0 +1,45 @@ ++ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -26867,56 +14262,38 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_IMPL_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_DOMAIN_SPLITTER_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_DOMAIN_SPLITTER_H_ + -+#include ++#include "absl/types/optional.h" + -+#include "base/memory/raw_ptr.h" -+#include "components/adblock/core/subscription/subscription_persistent_metadata.h" -+#include "components/prefs/pref_service.h" ++#include "base/strings/string_piece.h" + +namespace adblock { + -+// Stores persistent subscription metadata in PrefService. -+class SubscriptionPersistentMetadataImpl final -+ : public SubscriptionPersistentMetadata { ++// When constructed with a full domain like "aaa.bbb.ccc.com", subsequent calls ++// to FindNextSubdomain() will yield "aaa.bbb.ccc.com", "bbb.ccc.com", ++// "ccc.com", "com" and then nullopt. ++class DomainSplitter { + public: -+ explicit SubscriptionPersistentMetadataImpl(PrefService* prefs); -+ ~SubscriptionPersistentMetadataImpl() final; -+ -+ void SetExpirationInterval(const GURL& subscription_url, -+ base::TimeDelta expires_in) final; -+ void SetVersion(const GURL& subscription_url, std::string version) final; -+ void IncrementDownloadSuccessCount(const GURL& subscription_url) final; -+ void IncrementDownloadErrorCount(const GURL& subscription_url) final; -+ -+ bool IsExpired(const GURL& subscription_url) const final; -+ base::Time GetLastInstallationTime(const GURL& subscription_url) const final; -+ std::string GetVersion(const GURL& subscription_url) const final; -+ int GetDownloadSuccessCount(const GURL& subscription_url) const final; -+ int GetDownloadErrorCount(const GURL& subscription_url) const final; -+ -+ void RemoveMetadata(const GURL& subscription_url) final; ++ // |domain| must outlive this, no copy made. ++ explicit DomainSplitter(base::StringPiece domain); ++ // Returns reference to part of |domain|. ++ absl::optional FindNextSubdomain(); + + private: -+ struct Metadata; -+ using MetadataMap = std::map; -+ void UpdatePrefs(); -+ void LoadFromPrefs(); -+ -+ raw_ptr prefs_; -+ MetadataMap metadata_map_; ++ const base::StringPiece domain_; ++ size_t dot_pos_ = 0; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_IMPL_H_ -diff --git a/components/adblock/core/subscription/subscription_persistent_storage.h b/components/adblock/core/subscription/subscription_persistent_storage.h ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_DOMAIN_SPLITTER_H_ +diff --git a/components/adblock/core/subscription/filtering_configuration_maintainer.h b/components/adblock/core/subscription/filtering_configuration_maintainer.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_persistent_storage.h -@@ -0,0 +1,60 @@ ++++ b/components/adblock/core/subscription/filtering_configuration_maintainer.h +@@ -0,0 +1,52 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -26934,54 +14311,46 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_H_ + +#include +#include + -+#include "base/functional/callback.h" +#include "base/memory/scoped_refptr.h" -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/subscription/installed_subscription.h" ++#include "components/adblock/core/subscription/subscription.h" ++#include "components/adblock/core/subscription/subscription_collection.h" + +namespace adblock { + -+// Provides a persistent, disk-based storage for installed subscription files. -+class SubscriptionPersistentStorage { ++// Maintains a set of subscriptions needed to fulfil filtering requirements of a ++// single FilteringConfiguration. ++// Downloads and installs missing subscriptions, removes no-longer-needed ++// subscriptions, periodically updates installed subscriptions. ++class FilteringConfigurationMaintainer { + public: -+ virtual ~SubscriptionPersistentStorage() = default; -+ using LoadCallback = base::OnceCallback>)>; -+ // Loads subscriptions from a directory on disk and returns them via -+ // |on_loaded|. -+ virtual void LoadSubscriptions(LoadCallback on_loaded) = 0; ++ virtual ~FilteringConfigurationMaintainer() = default; + -+ using StoreCallback = -+ base::OnceCallback)>; -+ // Stores |raw_data| to disk and returns a Subscription created from -+ // flatbuffer parsed from |raw_data|. -+ // |on_finished| gets called after the store to disk and parsing has finished, -+ // nullptr argument signifies there was an error. -+ // |raw_data| is assumed to be valid against the current flatbuffer schema, it -+ // is not validated internally for performance reasons. Validate flatbuffers -+ // downloaded from the Internet externally. -+ virtual void StoreSubscription(std::unique_ptr raw_data, -+ StoreCallback on_finished) = 0; ++ // Returns a SubscriptionCollection that implements the blocking logic ++ // demanded by a FilteringConfiguration. This becomes part of a ++ // SubscriptionService::Snapshot. ++ virtual std::unique_ptr GetSubscriptionCollection() ++ const = 0; + -+ // Removes |subscription|'s file from disk. -+ virtual void RemoveSubscription( -+ scoped_refptr subscription) = 0; ++ // Allows inspecting what Subscriptions are currently in use. This includes ++ // ongoing downloads, preloaded subscriptions and installed subscriptions. ++ virtual std::vector> GetCurrentSubscriptions() ++ const = 0; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_H_ -diff --git a/components/adblock/core/subscription/subscription_persistent_storage_impl.cc b/components/adblock/core/subscription/subscription_persistent_storage_impl.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_H_ +diff --git a/components/adblock/core/subscription/filtering_configuration_maintainer_impl.cc b/components/adblock/core/subscription/filtering_configuration_maintainer_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_persistent_storage_impl.cc -@@ -0,0 +1,229 @@ ++++ b/components/adblock/core/subscription/filtering_configuration_maintainer_impl.cc +@@ -0,0 +1,489 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -26999,223 +14368,483 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/subscription_persistent_storage_impl.h" -+ -+#include -+#include ++#include "components/adblock/core/subscription/filtering_configuration_maintainer_impl.h" + -+#include "base/files/file_enumerator.h" -+#include "base/files/file_path.h" -+#include "base/files/file_util.h" +#include "base/functional/bind.h" +#include "base/logging.h" -+#include "base/memory/scoped_refptr.h" -+#include "base/task/task_traits.h" -+#include "base/task/thread_pool.h" +#include "base/trace_event/common/trace_event_common.h" +#include "base/trace_event/trace_event.h" -+#include "base/unguessable_token.h" -+#include "components/adblock/core/schema/filter_list_schema_generated.h" -+#include "components/adblock/core/subscription/installed_subscription.h" -+#include "components/adblock/core/subscription/installed_subscription_impl.h" -+#include "components/adblock/core/subscription/subscription.h" -+#include "components/adblock/core/subscription/subscription_validator.h" ++#include "components/adblock/core/common/adblock_utils.h" ++#include "components/adblock/core/subscription/subscription_collection_impl.h" ++ ++// TODO(mpawlowski): Remove in DPD-1154. This class should not need to know ++// anything about particular subscriptions, it should be generic. ++#include "components/adblock/core/subscription/subscription_config.h" + +namespace adblock { +namespace { ++constexpr base::TimeDelta kDefaultHeadRequestExpirationInterval = base::Days(1); + -+GURL UrlFromFlatbufferData(const FlatbufferData& flatbuffer) { -+ DCHECK(flat::GetSubscription(flatbuffer.data())->metadata()); -+ DCHECK(flat::GetSubscription(flatbuffer.data())->metadata()->url()); -+ return GURL( -+ flat::GetSubscription(flatbuffer.data())->metadata()->url()->str()); ++} // namespace ++ ++class FilteringConfigurationMaintainerImpl::OngoingInstallation final ++ : public Subscription { ++ public: ++ explicit OngoingInstallation(const GURL& url) : url_(url) {} ++ ++ GURL GetSourceUrl() const final { return url_; } ++ std::string GetTitle() const final { return {}; } ++ std::string GetCurrentVersion() const final { return {}; } ++ InstallationState GetInstallationState() const final { ++ return InstallationState::Installing; ++ } ++ base::Time GetInstallationTime() const final { return {}; } ++ base::TimeDelta GetExpirationInterval() const final { return {}; } ++ ++ private: ++ friend class base::RefCountedThreadSafe; ++ ~OngoingInstallation() final = default; ++ GURL url_; ++}; ++ ++FilteringConfigurationMaintainerImpl::FilteringConfigurationMaintainerImpl( ++ FilteringConfiguration* configuration, ++ std::unique_ptr storage, ++ std::unique_ptr downloader, ++ std::unique_ptr ++ preloaded_subscription_provider, ++ std::unique_ptr updater, ++ ConversionExecutors* conversion_executor, ++ SubscriptionPersistentMetadata* persistent_metadata, ++ SubscriptionUpdatedCallback subscription_updated_callback) ++ : configuration_(std::move(configuration)), ++ storage_(std::move(storage)), ++ downloader_(std::move(downloader)), ++ preloaded_subscription_provider_( ++ std::move(preloaded_subscription_provider)), ++ updater_(std::move(updater)), ++ conversion_executor_(conversion_executor), ++ persistent_metadata_(persistent_metadata), ++ subscription_updated_callback_(std::move(subscription_updated_callback)) { ++ DCHECK(configuration_->IsEnabled()) ++ << "Disabled configurations should not be maintained"; ++ configuration_->AddObserver(this); +} + -+} // namespace ++FilteringConfigurationMaintainerImpl::~FilteringConfigurationMaintainerImpl() { ++ configuration_->RemoveObserver(this); ++} + -+SubscriptionPersistentStorageImpl::SubscriptionPersistentStorageImpl( -+ base::FilePath base_storage_dir, -+ std::unique_ptr validator, -+ SubscriptionPersistentMetadata* persistent_metadata) -+ : base_storage_dir_(std::move(base_storage_dir)), -+ validator_(std::move(validator)), -+ persistent_metadata_(persistent_metadata) {} ++std::unique_ptr ++FilteringConfigurationMaintainerImpl::GetSubscriptionCollection() const { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ std::vector> state = current_state_; ++ if (custom_filters_) { ++ state.push_back(custom_filters_); ++ } ++ base::ranges::move( ++ preloaded_subscription_provider_->GetCurrentPreloadedSubscriptions(), ++ std::back_inserter(state)); ++ VLOG(2) << "[eyeo] FilteringConfiguration " << configuration_->GetName() ++ << " produces " << state.size() << " subscriptions for Snapshot"; ++ return std::make_unique( ++ state, configuration_->GetName()); ++} + -+SubscriptionPersistentStorageImpl::~SubscriptionPersistentStorageImpl() { ++std::vector> ++FilteringConfigurationMaintainerImpl::GetCurrentSubscriptions() const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ // Result will contain the currently installed subscriptions: ++ std::vector> result; ++ base::ranges::copy(current_state_, std::back_inserter(result)); ++ // And all preloaded subscriptions: ++ auto preloaded_subscriptions = ++ preloaded_subscription_provider_->GetCurrentPreloadedSubscriptions(); ++ base::ranges::move(preloaded_subscriptions, std::back_inserter(result)); ++ // Also, dummy subscriptions that represent ongoing installations (unless ++ // already present, in which case they'd represent updates). ++ base::ranges::copy_if( ++ ongoing_installations_, std::back_inserter(result), ++ [&](const auto& ongoing_installation) { ++ return base::ranges::find(result, ongoing_installation->GetSourceUrl(), ++ &Subscription::GetSourceUrl) == result.end(); ++ }); ++ return result; +} + -+// static -+SubscriptionPersistentStorageImpl::LoadedBuffer -+SubscriptionPersistentStorageImpl::WriteSubscription( -+ const base::FilePath& storage_dir, -+ std::unique_ptr raw_data, -+ SubscriptionValidator::StoreTrustedSignatureThreadSafeCallback -+ store_signature) { -+ // To avoid conflict between existing subscription files, generate a new -+ // unique path. -+ base::FilePath subscription_path = storage_dir.AppendASCII( -+ base::UnguessableToken::Create().ToString() + ".fb"); -+ // UnguessableToken is a 128-bit, cryptographically-safe random number, -+ // conflicts are less likely than disk failure. The DCHECK is to express -+ // intent. -+ DCHECK(!base::PathExists(subscription_path)); -+ if (base::WriteFile(subscription_path, -+ reinterpret_cast(raw_data->data()), -+ raw_data->size()) == -1) { -+ // Disk write failed. -+ return std::make_pair(nullptr, base::FilePath{}); ++void FilteringConfigurationMaintainerImpl::OnFilterListsChanged( ++ FilteringConfiguration* config) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK_EQ(config, configuration_); ++ if (status_ == StorageStatus::Initialized) { ++ InstallMissingSubscriptions(); ++ RemoveUnneededSubscriptions(); + } -+ auto buffer = std::make_unique(subscription_path); -+ if (!buffer->data()) { -+ // Creating the memory-mapped region failed. -+ // TODO(DPD-1278) revert to in-memory buffer? -+ return std::make_pair(nullptr, base::FilePath{}); ++} ++ ++void FilteringConfigurationMaintainerImpl::OnAllowedDomainsChanged( ++ FilteringConfiguration* config) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK_EQ(config, configuration_); ++ OnCustomFiltersChanged(config); ++} ++ ++void FilteringConfigurationMaintainerImpl::OnCustomFiltersChanged( ++ FilteringConfiguration* config) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK_EQ(config, configuration_); ++ SetCustomFilters(); ++} ++ ++bool FilteringConfigurationMaintainerImpl::IsInitialized() const { ++ return status_ == StorageStatus::Initialized; ++} ++ ++void FilteringConfigurationMaintainerImpl::InstallMissingSubscriptions() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK(IsInitialized()); ++ // Subscriptions that are either installed or being installed: ++ auto installed_subscriptions = GetReadySubscriptions(); ++ base::ranges::copy(GetPendingSubscriptions(), ++ std::back_inserter(installed_subscriptions)); ++ // Subscriptions that are demanded by the FilteringConfiguration: ++ auto demanded_subscriptions = configuration_->GetFilterLists(); ++ base::ranges::sort(installed_subscriptions); ++ base::ranges::sort(demanded_subscriptions); ++ // Missing subscriptions is the difference between the two: ++ std::vector missing_subscriptions; ++ base::ranges::set_difference(demanded_subscriptions, installed_subscriptions, ++ std::back_inserter(missing_subscriptions)); ++ for (const auto& url : missing_subscriptions) { ++ DownloadAndInstallSubscription(url); ++ } ++} ++ ++void FilteringConfigurationMaintainerImpl::RemoveUnneededSubscriptions() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK(IsInitialized()); ++ // Subscriptions that are either installed or being installed: ++ auto installed_subscriptions = GetReadySubscriptions(); ++ base::ranges::copy(GetPendingSubscriptions(), ++ std::back_inserter(installed_subscriptions)); ++ // Subscriptions that are demanded by the FilteringConfiguration: ++ auto demanded_subscriptions = configuration_->GetFilterLists(); ++ base::ranges::sort(installed_subscriptions); ++ base::ranges::sort(demanded_subscriptions); ++ installed_subscriptions.erase(std::unique(installed_subscriptions.begin(), ++ installed_subscriptions.end()), ++ installed_subscriptions.end()); ++ // Unneeded subscriptions is the difference between the two: ++ std::vector unneeded_subscriptions; ++ base::ranges::set_difference(installed_subscriptions, demanded_subscriptions, ++ std::back_inserter(unneeded_subscriptions)); ++ for (const auto& url : unneeded_subscriptions) { ++ UninstallSubscription(url); ++ } ++} ++ ++void FilteringConfigurationMaintainerImpl::InitializeStorage() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK(!IsInitialized()); ++ VLOG(1) << "[eyeo] FilteringConfigurationMaintainer starting."; ++ TRACE_EVENT_ASYNC_BEGIN1( ++ "eyeo", "FilteringConfigurationMaintainerImpl::InitializeStorage", ++ TRACE_ID_LOCAL(this), "name", configuration_->GetName()); ++ storage_->LoadSubscriptions( ++ base::BindOnce(&FilteringConfigurationMaintainerImpl::StorageInitialized, ++ weak_ptr_factory_.GetWeakPtr())); ++} ++ ++void FilteringConfigurationMaintainerImpl::StorageInitialized( ++ std::vector> loaded_subscriptions) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK(!IsInitialized()); ++ DCHECK(current_state_.empty()) ++ << "current state was modified before initial state was loaded"; ++ current_state_ = std::move(loaded_subscriptions); ++ status_ = StorageStatus::Initialized; ++ // SubscriptionPersistentStorage allows multiple Subscriptions with same URL, ++ // which is a legal transitive state during ex. installing an update. ++ // However, current_state_ should always contain only ++ // one subscription with a given URL. This normally happens automatically by ++ // virtue of |SubscriptionAddedToStorage| calling |UninstallSubscription| but ++ // this invariant might not hold if ex. the application exits after ++ // SubscriptionPersistentStorage stores the update but before ++ // SubscriptionServiceImpl uninstalls the old version. It's difficult to ++ // make installing subscription updates atomic, so solve potential race ++ // condition here: ++ RemoveDuplicateSubscriptions(); ++ // Synchronize current state with the demands of the FilteringConfiguration: ++ OnFilterListsChanged(configuration_); ++ OnCustomFiltersChanged(configuration_); ++ // Start periodic updates: ++ updater_->StartSchedule( ++ base::BindRepeating(&FilteringConfigurationMaintainerImpl::RunUpdateCheck, ++ weak_ptr_factory_.GetWeakPtr())); ++ TRACE_EVENT_ASYNC_END1( ++ "eyeo", "FilteringConfigurationMaintainerImpl::InitializeStorage", ++ TRACE_ID_LOCAL(this), "name", configuration_->GetName()); ++} ++ ++void FilteringConfigurationMaintainerImpl::RemoveDuplicateSubscriptions() { ++ // std::sort + std::unique is not good for this use case, as we need to ++ // perform actions on the duplicates, not just discard them, and std::unique ++ // leaves moved elements in unspecified state. std::adjacent_find or ++ // std::unique_copy could be used as well, but using a helper std::set seems ++ // simplest. ++ const auto comparator = [](const auto& lhs, const auto& rhs) { ++ return lhs->GetSourceUrl() < rhs->GetSourceUrl(); ++ }; ++ std::set, decltype(comparator)> ++ unique_subscriptions(comparator); ++ for (auto subscription : current_state_) { ++ if (!unique_subscriptions.insert(subscription).second) { ++ // This element already exists in the set, we found a duplicate. ++ storage_->RemoveSubscription(subscription); ++ } ++ } ++ current_state_.assign(unique_subscriptions.begin(), ++ unique_subscriptions.end()); ++} ++ ++void FilteringConfigurationMaintainerImpl::RunUpdateCheck() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ VLOG(1) << "[eyeo] Running update check"; ++ for (auto& subscription : current_state_) { ++ // Update subscriptions that are expired and aren't already in the process ++ // of installing an update. ++ const auto& url = subscription->GetSourceUrl(); ++ if (persistent_metadata_->IsExpired(url) && ++ base::ranges::find(ongoing_installations_, url, ++ &Subscription::GetSourceUrl) == ++ ongoing_installations_.end()) { ++ VLOG(1) << "[eyeo] Updating expired subscription " << url; ++ DownloadAndInstallSubscription(url); ++ } else { ++ VLOG(1) << "[eyeo] Skipping update of " << url << ": " ++ << (!persistent_metadata_->IsExpired(url) ++ ? "not expired yet" ++ : "already downloading"); ++ } ++ } ++ // TODO(mpawlowski): remove after DPD-1154. If Acceptable Ads is not ++ // installed, but it would have been expired, send HEAD request for Acceptable ++ // Ads filter list just to count the user, without the intention of ++ // downloading it. ++ // This is to support legacy behavior. ++ if (configuration_->GetName() == "adblock" && ++ base::ranges::none_of(GetCurrentSubscriptions(), ++ [](const auto& subscription) { ++ return subscription->GetSourceUrl() == ++ AcceptableAdsUrl(); ++ }) && ++ persistent_metadata_->IsExpired(AcceptableAdsUrl())) { ++ PingAcceptableAds(); ++ } ++} ++ ++void FilteringConfigurationMaintainerImpl::DownloadAndInstallSubscription( ++ const GURL& subscription_url) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK(IsInitialized()); ++ const bool is_an_update = ++ base::ranges::any_of(current_state_, [&](const auto candidate) { ++ return candidate->GetSourceUrl() == subscription_url; ++ }); ++ ++ // We do not retry downloading subscription updates, they will be retried ++ // by the SubscriptionUpdater in due time anyway. ++ auto retry_policy = ++ is_an_update ? SubscriptionDownloader::RetryPolicy::DoNotRetry ++ : SubscriptionDownloader::RetryPolicy::RetryUntilSucceeded; ++ ++ auto ongoing_installation = ++ base::MakeRefCounted(subscription_url); ++ ongoing_installations_.insert(ongoing_installation); ++ UpdatePreloadedSubscriptionProvider(); ++ ++ downloader_->StartDownload( ++ subscription_url, retry_policy, ++ base::BindOnce( ++ &FilteringConfigurationMaintainerImpl::OnSubscriptionDataAvailable, ++ weak_ptr_factory_.GetWeakPtr(), ongoing_installation)); ++} ++ ++void FilteringConfigurationMaintainerImpl::OnSubscriptionDataAvailable( ++ scoped_refptr ongoing_installation, ++ std::unique_ptr raw_data) { ++ if (ongoing_installations_.find(ongoing_installation) == ++ ongoing_installations_.end()) { ++ // Installation was canceled. ++ UpdatePreloadedSubscriptionProvider(); ++ return; ++ } ++ if (!raw_data) { ++ // Download failed. ++ ongoing_installations_.erase(ongoing_installation); ++ UpdatePreloadedSubscriptionProvider(); ++ return; ++ } ++ ++ storage_->StoreSubscription( ++ std::move(raw_data), ++ base::BindOnce( ++ &FilteringConfigurationMaintainerImpl::SubscriptionAddedToStorage, ++ weak_ptr_factory_.GetWeakPtr(), ongoing_installation)); ++} ++ ++void FilteringConfigurationMaintainerImpl::SubscriptionAddedToStorage( ++ scoped_refptr ongoing_installation, ++ scoped_refptr subscription) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ if (ongoing_installations_.find(ongoing_installation) == ++ ongoing_installations_.end()) { ++ // Installation was canceled. We must now remove the subscription from ++ // storage. Do not add it to |current_state|. ++ storage_->RemoveSubscription(subscription); ++ UpdatePreloadedSubscriptionProvider(); ++ return; ++ } ++ ongoing_installations_.erase(ongoing_installation); ++ ++ if (!subscription) { ++ // There was an error adding subscription to storage. ++ LOG(WARNING) << "[eyeo] Failed to add subscription, current number " ++ << "of subscriptions: " << current_state_.size(); ++ UpdatePreloadedSubscriptionProvider(); ++ return; ++ } ++ // Remove any subscription that already exists with the same URL ++ bool subscription_existed = ++ UninstallSubscriptionInternal(subscription->GetSourceUrl()); ++ // Add the new subscription ++ current_state_.push_back(subscription); ++ if (subscription_existed) { ++ VLOG(1) << "[eyeo] Updated subscription " << subscription->GetSourceUrl() ++ << ", current version " << subscription->GetCurrentVersion(); ++ } else { ++ VLOG(1) << "[eyeo] Added subscription " << subscription->GetSourceUrl() ++ << ", current number of subscriptions: " << current_state_.size(); + } -+ std::move(store_signature).Run(*buffer, subscription_path); -+ return std::make_pair(std::move(buffer), std::move(subscription_path)); ++ UpdatePreloadedSubscriptionProvider(); ++ // Notify "observer" ++ subscription_updated_callback_.Run(subscription->GetSourceUrl()); +} + -+// static -+std::vector -+SubscriptionPersistentStorageImpl::ReadSubscriptionsFromDirectory( -+ const base::FilePath& storage_dir, -+ SubscriptionValidator::IsSignatureValidThreadSafeCallback -+ is_signature_valid) { -+ DLOG(INFO) << "[eyeo] Reading subscriptions from directory"; -+ TRACE_EVENT0("eyeo", "ReadSubscriptionsFromDirectory"); -+ // Does nothing if directory already exists: -+ base::CreateDirectory(storage_dir); ++void FilteringConfigurationMaintainerImpl::PingAcceptableAds() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK(IsInitialized()); ++ downloader_->DoHeadRequest( ++ AcceptableAdsUrl(), ++ base::BindOnce(&FilteringConfigurationMaintainerImpl::OnHeadRequestDone, ++ weak_ptr_factory_.GetWeakPtr())); ++} + -+ std::vector result; -+ base::FileEnumerator enumerator(storage_dir, false /* recursive */, -+ base::FileEnumerator::FILES); -+ // Iterate through |storage_dir| and try to load all files within. -+ for (base::FilePath flatbuffer_path = enumerator.Next(); -+ !flatbuffer_path.empty(); flatbuffer_path = enumerator.Next()) { -+ std::string contents; ++void FilteringConfigurationMaintainerImpl::OnHeadRequestDone( ++ const std::string version) { ++ if (version.empty()) { ++ return; ++ } ++ persistent_metadata_->SetVersion(AcceptableAdsUrl(), version); ++ persistent_metadata_->SetExpirationInterval( ++ AcceptableAdsUrl(), kDefaultHeadRequestExpirationInterval); ++} + -+ TRACE_EVENT_BEGIN1("eyeo", "ReadFileToString", "path", -+ flatbuffer_path.AsUTF8Unsafe()); -+ if (!base::ReadFileToString(flatbuffer_path, &contents)) { -+ // File could not be read. -+ base::DeleteFile(flatbuffer_path); -+ continue; -+ } -+ TRACE_EVENT_END1("eyeo", "ReadFileToString", "path", -+ flatbuffer_path.AsUTF8Unsafe()); -+ TRACE_EVENT_BEGIN0("eyeo", "VerifySubscriptionBuffer"); -+ if (!is_signature_valid.Run(InMemoryFlatbufferData(std::move(contents)), -+ flatbuffer_path)) { -+ // This is not a valid subscription file, remove it. -+ base::DeleteFile(flatbuffer_path); -+ continue; -+ } -+ TRACE_EVENT_END0("eyeo", "VerifySubscriptionBuffer"); -+ auto buffer = std::make_unique(flatbuffer_path); -+ if (!buffer->data()) { -+ // Could not create mapped memory region to file content. -+ // TODO(mpawlowski) revert to in-memory buffer? -+ continue; -+ } -+ result.emplace_back(std::move(buffer), std::move(flatbuffer_path)); ++void FilteringConfigurationMaintainerImpl::UninstallSubscription( ++ const GURL& subscription_url) { ++ DVLOG(1) << "[eyeo] Removing subscription " << subscription_url; ++ if (!UninstallSubscriptionInternal(subscription_url)) { ++ VLOG(1) << "[eyeo] Nothing to remove, subscription not installed " ++ << subscription_url; ++ return; + } -+ DLOG(INFO) << "[eyeo] Finished reading and validating subscriptions. Loaded " -+ << result.size() << " subscriptions."; -+ return result; ++ if (subscription_url != AcceptableAdsUrl()) { ++ // Remove metadata associated with the subscription. Retain (forever) ++ // metadata of the Acceptable Ads subscription even when it's no longer ++ // installed, to allow continued HEAD-only pings for user counting purposes. ++ persistent_metadata_->RemoveMetadata(subscription_url); ++ } ++ UpdatePreloadedSubscriptionProvider(); ++ VLOG(1) << "[eyeo] Removed subscription " << subscription_url; +} + -+void SubscriptionPersistentStorageImpl::LoadSubscriptions( -+ LoadCallback on_loaded) { ++bool FilteringConfigurationMaintainerImpl::UninstallSubscriptionInternal( ++ const GURL& subscription_url) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ TRACE_EVENT_ASYNC_BEGIN0( -+ "eyeo", "SubscriptionPersistentStorageImpl::LoadSubscription", -+ TRACE_ID_LOCAL(this)); -+ base::ThreadPool::PostTaskAndReplyWithResult( -+ FROM_HERE, {base::MayBlock()}, -+ base::BindOnce(&ReadSubscriptionsFromDirectory, base_storage_dir_, -+ validator_->IsSignatureValid()), -+ base::BindOnce(&SubscriptionPersistentStorageImpl::LoadComplete, -+ weak_ptr_factory.GetWeakPtr(), std::move(on_loaded))); ++ DCHECK(IsInitialized()); ++ bool subscription_removed = false; ++ auto it = base::ranges::find(current_state_, subscription_url, ++ &Subscription::GetSourceUrl); ++ if (it != current_state_.end()) { ++ storage_->RemoveSubscription(*it); ++ current_state_.erase(it); ++ subscription_removed = true; ++ } ++ ++ auto ongoing_installation_it = base::ranges::find( ++ ongoing_installations_, subscription_url, &Subscription::GetSourceUrl); ++ if (ongoing_installation_it != ongoing_installations_.end()) { ++ ongoing_installations_.erase(ongoing_installation_it); ++ DVLOG(1) << "[eyeo] Canceling installation of subscription " ++ << subscription_url; ++ downloader_->CancelDownload(subscription_url); ++ DVLOG(2) << "[eyeo] Canceled installation of subscription " ++ << subscription_url; ++ subscription_removed = true; ++ } ++ return subscription_removed; +} + -+void SubscriptionPersistentStorageImpl::StoreSubscription( -+ std::unique_ptr raw_data, -+ StoreCallback on_finished) { ++void FilteringConfigurationMaintainerImpl::SetCustomFilters() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ base::ThreadPool::PostTaskAndReplyWithResult( -+ FROM_HERE, {base::MayBlock()}, -+ base::BindOnce(&WriteSubscription, base_storage_dir_, std::move(raw_data), -+ validator_->StoreTrustedSignature()), -+ base::BindOnce(&SubscriptionPersistentStorageImpl::SubscriptionStored, -+ weak_ptr_factory.GetWeakPtr(), std::move(on_finished))); -+} + -+void SubscriptionPersistentStorageImpl::RemoveSubscription( -+ scoped_refptr subscription) { -+ auto it = backing_file_mapping_.find(subscription); -+ DCHECK(it != backing_file_mapping_.end()) -+ << "Attempted to remove subscription not governed by this " -+ "SubscriptionPersistentStorageImpl"; -+ validator_->RemoveStoredSignature().Run(it->second); -+ backing_file_mapping_.erase(it); -+ subscription->MarkForPermanentRemoval(); ++ std::vector filters = configuration_->GetCustomFilters(); ++ base::ranges::transform(configuration_->GetAllowedDomains(), ++ std::back_inserter(filters), ++ &utils::CreateDomainAllowlistingFilter); ++ for (const auto& filter : filters) { ++ VLOG(1) << "[eyeo] Setting custom filter: " << filter; ++ } ++ if (filters.empty()) { ++ custom_filters_.reset(); ++ return; ++ } ++ ++ custom_filters_ = conversion_executor_->ConvertCustomFilters(filters); +} + -+void SubscriptionPersistentStorageImpl::LoadComplete( -+ LoadCallback on_loaded, -+ std::vector loaded_buffers) { -+ std::vector> loaded_subscriptions; -+ for (LoadedBuffer& loaded_buffer : loaded_buffers) { -+ const auto url = UrlFromFlatbufferData(*loaded_buffer.first); -+ const auto last_installation_time = -+ persistent_metadata_->GetLastInstallationTime(url); -+ auto installed_subscription = -+ base::MakeRefCounted( -+ std::move(loaded_buffer.first), -+ Subscription::InstallationState::Installed, last_installation_time); -+ backing_file_mapping_[installed_subscription] = -+ std::move(loaded_buffer.second); -+ loaded_subscriptions.push_back(installed_subscription); -+ } -+ TRACE_EVENT_ASYNC_END0("eyeo", -+ "SubscriptionPersistentStorageImpl::LoadSubscription", -+ TRACE_ID_LOCAL(this)); -+ std::move(on_loaded).Run(std::move(loaded_subscriptions)); ++void FilteringConfigurationMaintainerImpl:: ++ UpdatePreloadedSubscriptionProvider() { ++ preloaded_subscription_provider_->UpdateSubscriptions( ++ GetReadySubscriptions(), GetPendingSubscriptions()); +} + -+void SubscriptionPersistentStorageImpl::SubscriptionStored( -+ StoreCallback on_finished, -+ LoadedBuffer storage_result) { -+ if (!storage_result.first) { -+ // There was an error storing the subscription. -+ std::move(on_finished).Run(nullptr); -+ return; -+ } ++std::vector FilteringConfigurationMaintainerImpl::GetReadySubscriptions() ++ const { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ std::vector result; ++ result.reserve(current_state_.size()); ++ base::ranges::transform(current_state_, std::back_inserter(result), ++ &Subscription::GetSourceUrl); ++ return result; ++} + -+ const auto url = UrlFromFlatbufferData(*storage_result.first); -+ const auto last_installation_time = base::Time::Now(); -+ auto installed_subscription = base::MakeRefCounted( -+ std::move(storage_result.first), -+ Subscription::InstallationState::Installed, last_installation_time); -+ persistent_metadata_->IncrementDownloadSuccessCount(url); -+ persistent_metadata_->SetExpirationInterval( -+ url, installed_subscription->GetExpirationInterval()); -+ const auto parsed_version = installed_subscription->GetCurrentVersion(); -+ if (!parsed_version.empty()) { -+ persistent_metadata_->SetVersion(url, parsed_version); -+ } -+ backing_file_mapping_[installed_subscription] = -+ std::move(storage_result.second); -+ std::move(on_finished).Run(installed_subscription); ++std::vector ++FilteringConfigurationMaintainerImpl::GetPendingSubscriptions() const { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ std::vector result; ++ result.reserve(ongoing_installations_.size()); ++ base::ranges::transform(ongoing_installations_, std::back_inserter(result), ++ &Subscription::GetSourceUrl); ++ return result; +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/subscription_persistent_storage_impl.h b/components/adblock/core/subscription/subscription_persistent_storage_impl.h +diff --git a/components/adblock/core/subscription/filtering_configuration_maintainer_impl.h b/components/adblock/core/subscription/filtering_configuration_maintainer_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_persistent_storage_impl.h -@@ -0,0 +1,80 @@ ++++ b/components/adblock/core/subscription/filtering_configuration_maintainer_impl.h +@@ -0,0 +1,119 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -27233,74 +14862,113 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_IMPL_H_ -+ -+#include ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_IMPL_H_ + -+#include "base/files/file_path.h" ++#include "base/functional/callback.h" ++#include "base/functional/callback_forward.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/weak_ptr.h" -+#include "base/sequence_checker.h" -+#include "components/adblock/core/common/flatbuffer_data.h" ++#include "components/adblock/core/configuration/filtering_configuration.h" ++#include "components/adblock/core/subscription/conversion_executors.h" ++#include "components/adblock/core/subscription/filtering_configuration_maintainer.h" ++#include "components/adblock/core/subscription/preloaded_subscription_provider.h" ++#include "components/adblock/core/subscription/subscription_downloader.h" +#include "components/adblock/core/subscription/subscription_persistent_metadata.h" +#include "components/adblock/core/subscription/subscription_persistent_storage.h" -+#include "components/adblock/core/subscription/subscription_validator.h" ++#include "components/adblock/core/subscription/subscription_updater.h" + +namespace adblock { + -+class SubscriptionPersistentStorageImpl final -+ : public SubscriptionPersistentStorage { ++class FilteringConfigurationMaintainerImpl ++ : public FilteringConfigurationMaintainer, ++ public FilteringConfiguration::Observer { + public: -+ SubscriptionPersistentStorageImpl( -+ base::FilePath base_storage_dir, -+ std::unique_ptr validator, -+ SubscriptionPersistentMetadata* persistent_metadata); -+ ~SubscriptionPersistentStorageImpl() final; ++ using SubscriptionUpdatedCallback = ++ base::RepeatingCallback; ++ FilteringConfigurationMaintainerImpl( ++ FilteringConfiguration* configuration, ++ std::unique_ptr storage, ++ std::unique_ptr downloader, ++ std::unique_ptr ++ preloaded_subscription_provider, ++ std::unique_ptr updater, ++ ConversionExecutors* conversion_executor, ++ SubscriptionPersistentMetadata* persistent_metadata, ++ SubscriptionUpdatedCallback subscription_updated_callback); ++ ~FilteringConfigurationMaintainerImpl() override; + -+ void LoadSubscriptions(LoadCallback on_loaded) final; -+ void StoreSubscription(std::unique_ptr raw_data, -+ StoreCallback on_finished) final; -+ void RemoveSubscription( -+ scoped_refptr subscription) final; ++ std::unique_ptr GetSubscriptionCollection() ++ const override; ++ ++ std::vector> GetCurrentSubscriptions() ++ const override; ++ ++ // FilteringConfiguration::Observer: ++ void OnFilterListsChanged(FilteringConfiguration* config) final; ++ void OnAllowedDomainsChanged(FilteringConfiguration* config) final; ++ void OnCustomFiltersChanged(FilteringConfiguration* config) final; ++ ++ void InitializeStorage(); + + private: -+ using SubscriptionFileMapping = -+ std::map, base::FilePath>; -+ using LoadedBuffer = -+ std::pair, base::FilePath>; -+ static LoadedBuffer WriteSubscription( -+ const base::FilePath& storage_dir, -+ std::unique_ptr raw_data, -+ SubscriptionValidator::StoreTrustedSignatureThreadSafeCallback -+ store_signature); -+ static std::vector ReadSubscriptionsFromDirectory( -+ const base::FilePath& storage_dir, -+ SubscriptionValidator::IsSignatureValidThreadSafeCallback -+ is_signature_valid); -+ void LoadComplete(LoadCallback on_initialized, -+ std::vector loaded_buffers); -+ void SubscriptionStored(StoreCallback on_finished, -+ LoadedBuffer storage_result); ++ enum class StorageStatus { ++ Initialized, ++ Uninitialized, ++ }; ++ class OngoingInstallation; ++ bool IsInitialized() const; ++ void InstallMissingSubscriptions(); ++ void RemoveUnneededSubscriptions(); ++ void StorageInitialized( ++ std::vector> loaded_subscriptions); ++ void RemoveDuplicateSubscriptions(); ++ void RunUpdateCheck(); ++ void DownloadAndInstallSubscription(const GURL& subscription_url); ++ void OnSubscriptionDataAvailable( ++ scoped_refptr ongoing_installation, ++ std::unique_ptr raw_data); ++ void SubscriptionAddedToStorage( ++ scoped_refptr ongoing_installation, ++ scoped_refptr subscription); ++ void PingAcceptableAds(); ++ void OnHeadRequestDone(const std::string version); ++ void UninstallSubscription(const GURL& subscription_url); ++ bool UninstallSubscriptionInternal(const GURL& subscription_url); ++ void SetCustomFilters(); ++ void UpdatePreloadedSubscriptionProvider(); ++ std::vector GetReadySubscriptions() const; ++ std::vector GetPendingSubscriptions() const; + + SEQUENCE_CHECKER(sequence_checker_); -+ base::FilePath base_storage_dir_; -+ std::unique_ptr validator_; ++ StorageStatus status_ = StorageStatus::Uninitialized; ++ raw_ptr configuration_; ++ std::unique_ptr storage_; ++ std::unique_ptr downloader_; ++ std::unique_ptr ++ preloaded_subscription_provider_; ++ std::unique_ptr updater_; ++ raw_ptr conversion_executor_; ++ // TODO(mpawlowski): Should not need to update metadata after DPD-1154, when ++ // HEAD requests are removed. Move all use of SubscriptionPersistentMetadata ++ // into SubscriptionPersistentStorage. + raw_ptr persistent_metadata_; -+ // Maps Subscriptions to files that they access. -+ SubscriptionFileMapping backing_file_mapping_; -+ base::WeakPtrFactory weak_ptr_factory{ ++ SubscriptionUpdatedCallback subscription_updated_callback_; ++ std::set> ongoing_installations_; ++ std::vector> current_state_; ++ scoped_refptr custom_filters_; ++ base::WeakPtrFactory weak_ptr_factory_{ + this}; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_IMPL_H_ -diff --git a/components/adblock/core/subscription/subscription_service.h b/components/adblock/core/subscription/subscription_service.h ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_FILTERING_CONFIGURATION_MAINTAINER_IMPL_H_ +diff --git a/components/adblock/core/subscription/installed_subscription.cc b/components/adblock/core/subscription/installed_subscription.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_service.h -@@ -0,0 +1,87 @@ ++++ b/components/adblock/core/subscription/installed_subscription.cc +@@ -0,0 +1,42 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -27318,81 +14986,178 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_H_ ++#include "components/adblock/core/subscription/installed_subscription.h" + -+#include ++namespace adblock { ++ ++InstalledSubscription::Selectors::Selectors() = default; ++InstalledSubscription::Selectors::~Selectors() = default; ++InstalledSubscription::Selectors::Selectors(const Selectors&) = default; ++InstalledSubscription::Selectors::Selectors(Selectors&&) = default; ++InstalledSubscription::Selectors& InstalledSubscription::Selectors::operator=( ++ const Selectors&) = default; ++InstalledSubscription::Selectors& InstalledSubscription::Selectors::operator=( ++ Selectors&&) = default; ++ ++InstalledSubscription::Snippet::Snippet() = default; ++InstalledSubscription::Snippet::Snippet(const Snippet&) = default; ++InstalledSubscription::Snippet::Snippet(Snippet&&) = default; ++InstalledSubscription::Snippet::~Snippet() = default; ++InstalledSubscription::Snippet& InstalledSubscription::Snippet::operator=( ++ const Snippet&) = default; ++InstalledSubscription::Snippet& InstalledSubscription::Snippet::operator=( ++ Snippet&&) = default; ++ ++InstalledSubscription::~InstalledSubscription() = default; ++ ++} // namespace adblock +diff --git a/components/adblock/core/subscription/installed_subscription.h b/components/adblock/core/subscription/installed_subscription.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/subscription/installed_subscription.h +@@ -0,0 +1,137 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ ++ ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_H_ ++ ++#include ++#include +#include +#include + -+#include "base/functional/callback.h" -+#include "base/memory/scoped_refptr.h" -+#include "base/observer_list_types.h" -+#include "components/adblock/core/configuration/filtering_configuration.h" ++#include "absl/types/optional.h" ++ ++#include "base/time/time.h" ++#include "components/adblock/core/common/content_type.h" ++#include "components/adblock/core/common/header_filter_data.h" ++#include "components/adblock/core/common/sitekey.h" +#include "components/adblock/core/subscription/subscription.h" -+#include "components/adblock/core/subscription/subscription_collection.h" -+#include "components/adblock/core/subscription/subscription_persistent_metadata.h" -+#include "components/keyed_service/core/keyed_service.h" +#include "url/gurl.h" + +namespace adblock { + -+// Maintains a state of available Subscriptions needed for all installed -+// FilteringConfigurations. -+class SubscriptionService : public KeyedService { ++enum class SpecialFilterType { ++ // Allows all ads on the frame and its children, overrides any URL blocking ++ // or element hiding: ++ Document, ++ // Disables element hiding on the frame and its children, URL blocking is ++ // still allowed: ++ Elemhide, ++ // Only consider domain-specific URL filters on this frame and its children: ++ Genericblock, ++ // Only consider domain-specific element hiding selectors on this frame and ++ // its children: ++ Generichide, ++}; ++enum class FilterCategory { Allowing, Blocking, DomainSpecificBlocking }; ++ ++// Represents an installed subscription that can be queried for filters. ++class InstalledSubscription : public Subscription { + public: -+ using Snapshot = std::vector>; -+ class SubscriptionObserver : public base::CheckedObserver { ++ struct Selectors { ++ Selectors(); ++ ~Selectors(); ++ Selectors(const Selectors&); ++ Selectors(Selectors&&); ++ Selectors& operator=(const Selectors&); ++ Selectors& operator=(Selectors&&); ++ // The final set of selectors to apply on a page is |elemhide_selectors| ++ // minus |elemhide_exceptions|. This difference is not computed by this ++ // Subscription because there may be multiple subscriptions and ++ // |elemhide_exceptions| from one subscriptions may remove ++ // |elemhide_selectors| from another. ++ std::vector elemhide_selectors; ++ std::vector elemhide_exceptions; ++ }; ++ ++ class Snippet { + public: -+ // Called only on successful installation or update of a subscription. -+ // TODO(mpawlowski) add error reporting. -+ virtual void OnSubscriptionInstalled(const GURL& subscription_url) {} -+ // Called on installation of new filtering configuration -+ virtual void OnFilteringConfigurationInstalled( -+ FilteringConfiguration* config) {} ++ Snippet(); ++ Snippet(const Snippet&); ++ Snippet(Snippet&&); ++ ~Snippet(); ++ Snippet& operator=(const Snippet&); ++ Snippet& operator=(Snippet&&); ++ base::StringPiece command; ++ std::vector arguments; + }; -+ // Returns currently available subscriptions installed for |configuration|. -+ // Includes subscriptions that are still being downloaded. -+ virtual std::vector> GetCurrentSubscriptions( -+ FilteringConfiguration* configuration) const = 0; -+ // Subscriptions and filters demanded by |configuration| will be installed and -+ // will become part of future Snapshots. SubscriptionService will maintain -+ // subscriptions required by the configuration, download and remove filter -+ // lists as needed. -+ virtual void InstallFilteringConfiguration( -+ std::unique_ptr configuration) = 0; -+ // Removes configuration from the list of known configurations and reset its -+ // all persistent data. Use it only when configuration is no longer needed, -+ // otherwise prefer to disable configuration via FilteringConfiguration API. -+ // IMPORTANT: After calling this method any pointer pointing to uninstalled -+ // configuration becomes invalid. -+ virtual void UninstallFilteringConfiguration( -+ const std::string& configuration_name) = 0; -+ // Returns a list of FilteringConfigurations previously installed via -+ // InstallFilteringConfiguration. -+ virtual std::vector -+ GetInstalledFilteringConfigurations() = 0; -+ // Get default "adblock" filtering configuration. -+ virtual FilteringConfiguration* GetAdblockFilteringConfiguration() const = 0; -+ // Returns a snapshot of subscriptions as present at the time of calling the -+ // function that can be used to query filters. -+ // The result may be passed between threads, even called -+ // concurrently, and future changes to the installed subscriptions will not -+ // impact it. -+ virtual Snapshot GetCurrentSnapshot() const = 0; + -+ virtual void AddObserver(SubscriptionObserver*) = 0; -+ virtual void RemoveObserver(SubscriptionObserver*) = 0; ++ virtual bool HasUrlFilter(const GURL& url, ++ const std::string& document_domain, ++ ContentType content_type, ++ const SiteKey& sitekey, ++ FilterCategory category) const = 0; ++ virtual bool HasPopupFilter(const GURL& url, ++ const std::string& document_domain, ++ const SiteKey& sitekey, ++ FilterCategory category) const = 0; ++ virtual bool HasSpecialFilter(SpecialFilterType type, ++ const GURL& url, ++ const std::string& document_domain, ++ const SiteKey& sitekey) const = 0; ++ // CSP filters have a payload: a string that gets injected to a network ++ // response's Content-Security-Policy header. If a filters is found, it will ++ // be append to |results|. ++ virtual void FindCspFilters(const GURL& url, ++ const std::string& document_domain, ++ FilterCategory category, ++ std::set& results) const = 0; ++ // Find all rewrite filters matching category. ++ virtual std::set FindRewriteFilters( ++ const GURL& url, ++ const std::string& document_domain, ++ FilterCategory category) const = 0; ++ ++ virtual void FindHeaderFilters(const GURL& url, ++ ContentType content_type, ++ const std::string& document_domain, ++ FilterCategory category, ++ std::set& results) const = 0; ++ ++ virtual std::vector MatchSnippets( ++ const std::string& document_domain) const = 0; ++ ++ virtual Selectors GetElemhideSelectors(const GURL& url, ++ bool domain_specfic) const = 0; ++ // Note there's no "domain_specific". Emulation filters are always ++ // domain-specific. ++ virtual Selectors GetElemhideEmulationSelectors(const GURL& url) const = 0; ++ ++ // Instructs to remove the file which contains this subscription's data during ++ // destruction. NOP if there is no backing file, when the subscription is ++ // created in-memory. ++ // Operation is atomic and thread-safe. Consecutive calls are NOPs. ++ virtual void MarkForPermanentRemoval() = 0; ++ ++ protected: ++ friend class base::RefCountedThreadSafe; ++ ~InstalledSubscription() override; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_H_ -diff --git a/components/adblock/core/subscription/subscription_service_impl.cc b/components/adblock/core/subscription/subscription_service_impl.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_H_ +diff --git a/components/adblock/core/subscription/installed_subscription_impl.cc b/components/adblock/core/subscription/installed_subscription_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_service_impl.cc -@@ -0,0 +1,211 @@ ++++ b/components/adblock/core/subscription/installed_subscription_impl.cc +@@ -0,0 +1,553 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -27410,205 +15175,547 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/subscription_service_impl.h" ++#include "components/adblock/core/subscription/installed_subscription_impl.h" + +#include ++#include +#include -+#include -+#include + -+#include "base/functional/bind.h" ++#include "absl/types/optional.h" +#include "base/logging.h" -+#include "base/memory/scoped_refptr.h" -+#include "base/memory/weak_ptr.h" -+#include "base/parameter_pack.h" +#include "base/ranges/algorithm.h" -+#include "base/trace_event/common/trace_event_common.h" ++#include "base/strings/string_piece.h" ++#include "base/strings/string_util.h" +#include "base/trace_event/trace_event.h" +#include "components/adblock/core/common/adblock_constants.h" +#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/configuration/filtering_configuration_prefs.h" -+#include "components/adblock/core/subscription/filtering_configuration_maintainer.h" -+#include "components/adblock/core/subscription/subscription_collection.h" -+#include "components/adblock/core/subscription/subscription_service.h" ++#include "components/adblock/core/common/flatbuffer_data.h" ++#include "components/adblock/core/common/regex_filter_pattern.h" ++#include "components/adblock/core/common/sitekey.h" ++#include "components/adblock/core/subscription/domain_splitter.h" ++#include "components/adblock/core/subscription/pattern_matcher.h" ++#include "components/adblock/core/subscription/regex_matcher.h" ++#include "components/adblock/core/subscription/subscription.h" ++#include "components/adblock/core/subscription/url_keyword_extractor.h" ++#include "net/base/registry_controlled_domains/registry_controlled_domain.h" ++#include "url/url_constants.h" + +namespace adblock { ++namespace { + -+class EmptySubscription : public Subscription { -+ public: -+ EmptySubscription(const GURL& url) : url_(url) {} -+ GURL GetSourceUrl() const override { return url_; } -+ std::string GetTitle() const override { return ""; } -+ std::string GetCurrentVersion() const override { return ""; } -+ InstallationState GetInstallationState() const override { -+ return InstallationState::Unknown; ++bool NeedsLowercasing(const std::string& input) { ++ return base::ranges::any_of( ++ input, [](const char c) { return base::IsAsciiUpper(c); }); ++} ++ ++bool IsThirdParty(const GURL& url, const std::string& domain) { ++ return !net::registry_controlled_domains::SameDomainOrHost( ++ url, GURL(url.scheme() + "://" + domain), ++ net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); ++} ++ ++bool DomainMatches(base::StringPiece filter_domain, ++ base::StringPiece document_domain) { ++ // document_domain is same as filter_domain: ++ // - document: subdomain.example.com ++ // - filter: subdomain.example.com ++ // Or document_domain ends with ".filter_domain": ++ // - document: subdomain.example.com ++ // - filter: example.com ++ // (document ends with ".example.com") ++ ++ return document_domain == filter_domain || ++ (base::EndsWith(document_domain, filter_domain) && ++ base::EndsWith(document_domain.substr( ++ 0, document_domain.size() - filter_domain.size()), ++ ".")); ++} ++ ++bool DomainOnList( ++ base::StringPiece document_domain, ++ const flatbuffers::Vector>* list) { ++ return std::any_of(list->begin(), list->end(), [&](auto* filter_domain) { ++ return DomainMatches( ++ base::StringPiece(filter_domain->c_str(), filter_domain->size()), ++ document_domain); ++ }); ++} ++ ++} // namespace ++ ++InstalledSubscriptionImpl::InstalledSubscriptionImpl( ++ std::unique_ptr data, ++ InstallationState installation_state, ++ base::Time installation_time) ++ : buffer_(std::move(data)), ++ installation_state_(installation_state), ++ installation_time_(installation_time), ++ regex_matcher_(std::make_unique()) { ++ DCHECK(buffer_); ++ index_ = flat::GetSubscription(buffer_->data()); ++ regex_matcher_->PreBuildRegexPatternsWithNoKeyword(index_); ++} ++ ++InstalledSubscriptionImpl::~InstalledSubscriptionImpl() = default; ++ ++GURL InstalledSubscriptionImpl::GetSourceUrl() const { ++ return index_->metadata()->url() ? GURL(index_->metadata()->url()->str()) ++ : GURL(); ++} ++ ++std::string InstalledSubscriptionImpl::GetTitle() const { ++ return index_->metadata()->title() ? index_->metadata()->title()->str() : ""; ++} ++ ++std::string InstalledSubscriptionImpl::GetCurrentVersion() const { ++ return index_->metadata()->version() ? index_->metadata()->version()->str() ++ : ""; ++} ++ ++Subscription::InstallationState ++InstalledSubscriptionImpl::GetInstallationState() const { ++ return installation_state_; ++} ++ ++base::Time InstalledSubscriptionImpl::GetInstallationTime() const { ++ return installation_time_; ++} ++ ++base::TimeDelta InstalledSubscriptionImpl::GetExpirationInterval() const { ++ return base::Milliseconds(index_->metadata()->expires()); ++} ++ ++bool InstalledSubscriptionImpl::HasUrlFilter(const GURL& url, ++ const std::string& document_domain, ++ ContentType content_type, ++ const SiteKey& sitekey, ++ FilterCategory category) const { ++ return !FindInternal(category != FilterCategory::Allowing ++ ? index_->url_subresource_block() ++ : index_->url_subresource_allow(), ++ url, content_type, document_domain, sitekey.value(), ++ category, FindStrategy::FindFirst) ++ .empty(); ++} ++ ++bool InstalledSubscriptionImpl::HasPopupFilter( ++ const GURL& url, ++ const std::string& document_domain, ++ const SiteKey& sitekey, ++ FilterCategory category) const { ++ return !FindInternal(category != FilterCategory::Allowing ++ ? index_->url_popup_block() ++ : index_->url_popup_allow(), ++ url, absl::nullopt, document_domain, sitekey.value(), ++ category, FindStrategy::FindFirst) ++ .empty(); ++} ++ ++void InstalledSubscriptionImpl::FindCspFilters( ++ const GURL& url, ++ const std::string& document_domain, ++ FilterCategory category, ++ std::set& results) const { ++ for (auto* filter : FindInternal(category != FilterCategory::Allowing ++ ? index_->url_csp_block() ++ : index_->url_csp_allow(), ++ url, absl::nullopt, document_domain, "", ++ category, FindStrategy::FindAll)) { ++ DCHECK(category == FilterCategory::Allowing || filter->csp_filter()) ++ << "Blocking CSP filter must contain payload"; ++ results.insert(filter->csp_filter() ++ ? base::StringPiece(filter->csp_filter()->c_str(), ++ filter->csp_filter()->size()) ++ : base::StringPiece()); + } -+ base::Time GetInstallationTime() const override { -+ return base::Time::UnixEpoch(); ++} ++ ++std::set InstalledSubscriptionImpl::FindRewriteFilters( ++ const GURL& url, ++ const std::string& document_domain, ++ FilterCategory category) const { ++ std::set result; ++ for (auto* filter : FindInternal(category != FilterCategory::Allowing ++ ? index_->url_rewrite_block() ++ : index_->url_rewrite_allow(), ++ url, absl::nullopt, document_domain, "", ++ category, FindStrategy::FindAll)) { ++ result.insert(RewriteUrl(filter->rewrite()->replace_with())); + } -+ base::TimeDelta GetExpirationInterval() const override { -+ return base::TimeDelta(); ++ return result; ++} ++ ++void InstalledSubscriptionImpl::FindHeaderFilters( ++ const GURL& url, ++ ContentType content_type, ++ const std::string& document_domain, ++ FilterCategory category, ++ std::set& results) const { ++ for (auto* filter : FindInternal(category != FilterCategory::Allowing ++ ? index_->url_header_block() ++ : index_->url_header_allow(), ++ url, content_type, document_domain, "", ++ category, FindStrategy::FindAll)) { ++ DCHECK(category == FilterCategory::Allowing || filter->header_filter()) ++ << "Blocking header filter must contain header_filter() payload"; ++ results.insert({base::StringPiece(filter->header_filter()->c_str(), ++ filter->header_filter()->size()), ++ GetSourceUrl()}); + } ++} + -+ private: -+ ~EmptySubscription() override {} -+ const GURL url_; -+}; ++bool InstalledSubscriptionImpl::HasSpecialFilter( ++ SpecialFilterType type, ++ const GURL& url, ++ const std::string& document_domain, ++ const SiteKey& sitekey) const { ++ const UrlFilterIndex* index = nullptr; ++ switch (type) { ++ case SpecialFilterType::Document: ++ index = index_->url_document_allow(); ++ break; ++ case SpecialFilterType::Elemhide: ++ index = index_->url_elemhide_allow(); ++ break; ++ case SpecialFilterType::Genericblock: ++ index = index_->url_genericblock_allow(); ++ break; ++ case SpecialFilterType::Generichide: ++ index = index_->url_generichide_allow(); ++ break; ++ } ++ return !FindInternal(index, url, absl::nullopt, document_domain, ++ sitekey.value(), FilterCategory::Allowing, ++ FindStrategy::FindFirst) ++ .empty(); ++} + -+SubscriptionServiceImpl::SubscriptionServiceImpl( -+ FilteringConfigurationMaintainerFactory maintainer_factory, -+ FilteringConfigurationCleaner configuration_cleaner) -+ : maintainer_factory_(std::move(maintainer_factory)), -+ configuration_cleaner_(std::move(configuration_cleaner)) {} ++std::vector InstalledSubscriptionImpl::GetSelectorsForDomain( ++ const flat::ElemHideFiltersByDomain* category, ++ base::StringPiece domain) const { ++ TRACE_EVENT1("eyeo", "InstalledSubscriptionImpl::GetSelectorsForDomain", ++ "domain", domain); + -+SubscriptionServiceImpl::~SubscriptionServiceImpl() { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ for (auto& entry : maintainers_) { -+ entry.first->RemoveObserver(this); ++ if (!category || !category->filter()) { ++ // No filters found for this domain. ++ return {}; ++ } ++ ++ std::vector selectors; ++ for (auto* filter : *category->filter()) { ++ const bool filter_disallowed_by_excludes = ++ // Some exclusions apply on this domain: ++ filter->exclude_domains()->size() > 0 && ++ // And those exclusions contain |domain| or one of its subdomains: ++ DomainOnList(domain, filter->exclude_domains()); ++ if (filter_disallowed_by_excludes) { ++ continue; ++ } ++ selectors.emplace_back(filter->selector()->c_str(), ++ filter->selector()->size()); + } ++ ++ return selectors; +} + -+std::vector> -+SubscriptionServiceImpl::GetCurrentSubscriptions( -+ FilteringConfiguration* configuration) const { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) { -+ return entry.first.get() == configuration; -+ }); -+ DCHECK(it != maintainers_.end()) << "Cannot get Subscriptions from an " -+ "unregistered FilteringConfiguration"; -+ if (!it->second) { -+ // Configuration is disabled -+ auto urls = it->first->GetFilterLists(); -+ std::vector> result; -+ base::ranges::transform( -+ urls, std::back_inserter(result), [](const auto& url) { -+ return base::MakeRefCounted(url); -+ }); -+ return result; ++InstalledSubscription::Selectors ++InstalledSubscriptionImpl::GetElemhideSelectors(const GURL& url, ++ bool domain_specific) const { ++ Selectors result; ++ const std::string domain(base::ToLowerASCII(url.host())); ++ if (!domain_specific) { ++ result.elemhide_selectors = ++ GetSelectorsForDomain(index_->elemhide()->LookupByKey(""), domain); ++ result.elemhide_exceptions = GetSelectorsForDomain( ++ index_->elemhide_exception()->LookupByKey(""), domain); + } -+ return it->second->GetCurrentSubscriptions(); ++ ++ DomainSplitter domain_splitter(domain); ++ while (auto subdomain = domain_splitter.FindNextSubdomain()) { ++ auto specific_selectors = GetSelectorsForDomain( ++ index_->elemhide()->LookupByKey(subdomain->data()), domain); ++ std::move(specific_selectors.begin(), specific_selectors.end(), ++ std::back_inserter(result.elemhide_selectors)); ++ auto specific_exceptions = GetSelectorsForDomain( ++ index_->elemhide_exception()->LookupByKey(subdomain->data()), domain); ++ std::move(specific_exceptions.begin(), specific_exceptions.end(), ++ std::back_inserter(result.elemhide_exceptions)); ++ } ++ ++ return result; +} + -+void SubscriptionServiceImpl::InstallFilteringConfiguration( -+ std::unique_ptr configuration) { -+ VLOG(1) << "[eyeo] FilteringConfiguration installed: " -+ << configuration->GetName(); -+ configuration->AddObserver(this); -+ std::unique_ptr maintainer; -+ if (configuration->IsEnabled()) { -+ // Only enabled configurations should be maintained. Disabled configurations -+ // are observed and added to the collection, but a Maintainer will be -+ // created in OnEnabledStateChanged. -+ maintainer = MakeMaintainer(configuration.get()); ++InstalledSubscription::Selectors ++InstalledSubscriptionImpl::GetElemhideEmulationSelectors( ++ const GURL& url) const { ++ const std::string& domain = url.host(); ++ Selectors result; ++ DomainSplitter domain_splitter(domain); ++ while (auto subdomain = domain_splitter.FindNextSubdomain()) { ++ auto elemhide_selectors = GetSelectorsForDomain( ++ index_->elemhide_emulation()->LookupByKey(subdomain->data()), domain); ++ std::move(elemhide_selectors.begin(), elemhide_selectors.end(), ++ std::back_inserter(result.elemhide_selectors)); ++ auto elemhide_exceptions = GetSelectorsForDomain( ++ index_->elemhide_exception()->LookupByKey(subdomain->data()), domain); ++ std::move(elemhide_exceptions.begin(), elemhide_exceptions.end(), ++ std::back_inserter(result.elemhide_exceptions)); + } -+ auto* ptr = configuration.get(); -+ maintainers_.insert( -+ std::make_pair(std::move(configuration), std::move(maintainer))); -+ for (auto& observer : observers_) { -+ observer.OnFilteringConfigurationInstalled(ptr); ++ return result; ++} ++ ++std::vector InstalledSubscriptionImpl::FindInternal( ++ const UrlFilterIndex* index, ++ const GURL& url, ++ absl::optional content_type, ++ const std::string& document_domain, ++ const std::string& sitekey, ++ FilterCategory category, ++ FindStrategy strategy) const { ++ if (!index) { ++ // No filters of this type were parsed. ++ return {}; ++ } ++ const std::string& normalized_domain = ++ NeedsLowercasing(document_domain) ? base::ToLowerASCII(document_domain) ++ : document_domain; ++ const std::string normalized_sitekey = base::ToUpperASCII(sitekey); ++ const GURL& lowercase_url = ++ NeedsLowercasing(url.spec()) ? GURL(base::ToLowerASCII(url.spec())) : url; ++ const bool is_third_party_request = IsThirdParty(url, document_domain); ++ std::vector results; ++ ++ UrlKeywordExtractor keyword_extractor(lowercase_url.spec()); ++ while (auto current_keyword = keyword_extractor.GetNextKeyword()) { ++ FindFiltersForKeyword(index, *current_keyword, url, lowercase_url, ++ content_type, normalized_domain, normalized_sitekey, ++ category, is_third_party_request, strategy, results); ++ if (strategy == FindStrategy::FindFirst && !results.empty()) { ++ return results; ++ } ++ } ++ ++ FindFiltersForKeyword(index, "", url, lowercase_url, content_type, ++ normalized_domain, normalized_sitekey, category, ++ is_third_party_request, strategy, results); ++ return results; ++} ++ ++void InstalledSubscriptionImpl::FindFiltersForKeyword( ++ const UrlFilterIndex* index, ++ base::StringPiece keyword, ++ const GURL& url, ++ const GURL& lowercase_url, ++ absl::optional content_type, ++ const std::string& document_domain, ++ const std::string& sitekey, ++ FilterCategory category, ++ bool is_third_party_request, ++ FindStrategy strategy, ++ std::vector& out_results) const { ++ const auto* idx = index->LookupByKey(keyword.data()); ++ ++ if (!idx) { ++ return; ++ } ++ ++ for (const auto* filter : *(idx->filter())) { ++ if (!CandidateFilterViable(filter, content_type, document_domain, sitekey, ++ category, is_third_party_request)) { ++ continue; ++ } ++ ++ if (filter->pattern()->size() == 0u) { ++ // This filter applies to all URLs, assuming prior checks passed. ++ out_results.push_back(filter); ++ if (strategy == FindStrategy::FindFirst) { ++ return; ++ } ++ } ++ // During flatbuffer conversion, the pattern is lowercased for ++ // case-insensitive filters, and left in original form for case-sensitive ++ // filters. ++ const base::StringPiece pattern(filter->pattern()->c_str(), ++ filter->pattern()->size()); ++ if (const auto regex_pattern = ExtractRegexFilterFromPattern(pattern)) { ++ if (regex_matcher_->MatchesRegex(*regex_pattern, url, ++ filter->match_case())) { ++ out_results.push_back(filter); ++ if (strategy == FindStrategy::FindFirst) { ++ return; ++ } ++ } ++ } else { ++ const auto& normalized_url = filter->match_case() ? url : lowercase_url; ++ if (DoesPatternMatchUrl(pattern, normalized_url)) { ++ out_results.push_back(filter); ++ if (strategy == FindStrategy::FindFirst) { ++ return; ++ } ++ } ++ } ++ } ++} ++ ++bool InstalledSubscriptionImpl::CandidateFilterViable( ++ const flat::UrlFilter* candidate, ++ absl::optional content_type, ++ const std::string& document_domain, ++ const std::string& sitekey, ++ FilterCategory category, ++ bool is_third_party_request) const { ++ if (content_type && (candidate->resource_type() & *content_type) == 0) { ++ return false; ++ } ++ if (category == FilterCategory::DomainSpecificBlocking && ++ IsGenericFilter(candidate)) { ++ return false; ++ } ++ if (!CheckThirdParty(candidate, is_third_party_request)) { ++ return false; ++ } ++ if (!IsActiveOnDomain(candidate, document_domain, sitekey)) { ++ return false; ++ } ++ return true; ++} ++ ++bool InstalledSubscriptionImpl::CheckThirdParty( ++ const flat::UrlFilter* filter, ++ bool is_third_party_request) const { ++ switch (filter->third_party()) { ++ case flat::ThirdParty_Ignore: ++ // This filter applies to first- and third-party requests requests. ++ return true; ++ case flat::ThirdParty_FirstPartyOnly: ++ // This filter applies only to first-party requests. ++ return !is_third_party_request; ++ case flat::ThirdParty_ThirdPartyOnly: ++ // This filter applies only to third-party requests. ++ return is_third_party_request; + } +} + -+void SubscriptionServiceImpl::UninstallFilteringConfiguration( -+ const std::string& configuration_name) { -+ VLOG(1) << "[eyeo] FilteringConfiguration uninstalled: " -+ << configuration_name; -+ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) { -+ return entry.first.get()->GetName() == configuration_name; -+ }); -+ if (it == maintainers_.end()) { -+ LOG(WARNING) << "[eyeo] Trying to uninstall not installed configuration " -+ << configuration_name; -+ return; ++bool InstalledSubscriptionImpl::IsGenericFilter( ++ const flat::UrlFilter* filter) const { ++ const auto* sitekeys = filter->sitekeys(); ++ DCHECK(sitekeys); ++ ++ if (sitekeys->size()) { ++ return false; + } -+ it->first->RemoveObserver(this); -+ it->second.reset(); -+ configuration_cleaner_.Run(it->first.get()); -+ maintainers_.erase(it); -+} + -+std::vector -+SubscriptionServiceImpl::GetInstalledFilteringConfigurations() { -+ std::vector result; -+ base::ranges::transform(maintainers_, std::back_inserter(result), -+ [](const auto& pair) { return pair.first.get(); }); -+ return result; ++ return IsEmptyDomainAllowed(filter->include_domains(), ++ filter->exclude_domains()); +} + -+FilteringConfiguration* -+SubscriptionServiceImpl::GetAdblockFilteringConfiguration() const { -+ const auto it = base::ranges::find_if(maintainers_, [](const auto& pair) { -+ return pair.first->GetName() == kAdblockFilteringConfigurationName; -+ }); -+ DCHECK(it != maintainers_.end()); -+ return it->first.get(); -+} ++bool InstalledSubscriptionImpl::IsActiveOnDomain( ++ const flat::UrlFilter* filter, ++ const std::string& document_domain, ++ const std::string& sitekey) const { ++ const auto* sitekeys = filter->sitekeys(); ++ DCHECK(sitekeys); + -+SubscriptionService::Snapshot SubscriptionServiceImpl::GetCurrentSnapshot() -+ const { -+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ Snapshot snapshot; -+ for (const auto& entry : maintainers_) { -+ if (!entry.second) { -+ continue; // Configuration is disabled ++ if (sitekeys->size() != 0u) { ++ if (std::none_of( ++ sitekeys->begin(), sitekeys->end(), [&sitekey](const auto* it) { ++ return base::StringPiece(it->c_str(), it->size()) == sitekey; ++ })) { ++ // This filter requires a sitekey, and the one provided doesn't match. ++ return false; + } -+ snapshot.push_back(entry.second->GetSubscriptionCollection()); + } -+ return snapshot; ++ ++ const auto* include_domains = filter->include_domains(); ++ const auto* exclude_domains = filter->exclude_domains(); ++ return IsActiveOnDomain(document_domain, include_domains, exclude_domains); +} + -+void SubscriptionServiceImpl::AddObserver(SubscriptionObserver* o) { -+ observers_.AddObserver(o); ++bool InstalledSubscriptionImpl::IsActiveOnDomain( ++ const std::string& document_domain, ++ const Domains* include_domains, ++ const Domains* exclude_domains) const { ++ if (IsEmptyDomainAllowed(include_domains, exclude_domains)) { ++ return true; ++ } ++ ++ // If |document_domain| matches any exclusion-type mapping for this filter, ++ // the filter may not be applied to this domain. ++ if (exclude_domains && DomainOnList(document_domain, exclude_domains)) { ++ return false; ++ } ++ ++ if (include_domains && include_domains->size()) { ++ if (DomainOnList(document_domain, include_domains)) { ++ return true; ++ } ++ return false; ++ } ++ ++ // But if there are no include requirements for the filter, only exclude ++ // domains, the filter applies. ++ return true; +} + -+void SubscriptionServiceImpl::RemoveObserver(SubscriptionObserver* o) { -+ observers_.RemoveObserver(o); ++bool InstalledSubscriptionImpl::IsEmptyDomainAllowed( ++ const Domains* include_domains, ++ const Domains* exclude_domains) const { ++ const bool has_no_exclude_domains = ++ !exclude_domains || exclude_domains->size() == 0u; ++ return // optimization: instead of checking domains->LookupByKey(""), just ++ // check first element is empty (list is sorted) ++ (!include_domains || !include_domains->size() || ++ !include_domains->Get(0)->size()) && ++ has_no_exclude_domains; +} + -+void SubscriptionServiceImpl::OnEnabledStateChanged( -+ FilteringConfiguration* config) { -+ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) { -+ return entry.first.get() == config; -+ }); -+ DCHECK(it != maintainers_.end()) << "Received OnEnabledStateChanged from " -+ "unregistered FilteringConfiguration"; -+ VLOG(1) << "[eyeo] FilteringConfiguration " << config->GetName() -+ << (config->IsEnabled() ? " enabled" : " disabled"); -+ if (config->IsEnabled()) { -+ // Enable the configuration by creating a new -+ // FilteringConfigurationMaintainer. This triggers installing missing -+ // subscriptions etc. -+ it->second = MakeMaintainer(config); -+ } else { -+ // Disable the configuration by removing its -+ // FilteringConfigurationMaintainer. This cancels all related operations and -+ // frees all associated memory. -+ it->second.reset(); ++std::vector ++InstalledSubscriptionImpl::MatchSnippets( ++ const std::string& document_domain) const { ++ std::vector result; ++ if (!index_->snippet()) { ++ return result; + } -+} + -+void SubscriptionServiceImpl::OnSubscriptionUpdated( -+ const GURL& subscription_url) { -+ for (auto& observer : observers_) { -+ observer.OnSubscriptionInstalled(subscription_url); ++ DomainSplitter domain_splitter(document_domain); ++ while (auto subdomain = domain_splitter.FindNextSubdomain()) { ++ const auto* idx = index_->snippet()->LookupByKey(subdomain->data()); ++ ++ if (!idx) { ++ continue; ++ } ++ ++ for (const auto* cur : (*idx->filter())) { ++ if (IsActiveOnDomain(document_domain, nullptr, cur->exclude_domains())) { ++ for (const auto* line : (*cur->script())) { ++ InstalledSubscription::Snippet obj; ++ obj.command = base::StringPiece(line->command()->c_str(), ++ line->command()->size()); ++ obj.arguments.reserve(line->arguments()->size()); ++ ++ for (const auto* arg : (*line->arguments())) { ++ obj.arguments.emplace_back(arg->c_str(), arg->size()); ++ } ++ ++ result.push_back(std::move(obj)); ++ } ++ } ++ } + } ++ ++ return result; +} + -+std::unique_ptr -+SubscriptionServiceImpl::MakeMaintainer(FilteringConfiguration* configuration) { -+ return maintainer_factory_.Run( -+ configuration, -+ base::BindRepeating(&SubscriptionServiceImpl::OnSubscriptionUpdated, -+ weak_ptr_factory_.GetWeakPtr())); ++void InstalledSubscriptionImpl::MarkForPermanentRemoval() { ++ buffer_->PermanentlyRemoveSourceOnDestruction(); +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/subscription_service_impl.h b/components/adblock/core/subscription/subscription_service_impl.h +diff --git a/components/adblock/core/subscription/installed_subscription_impl.h b/components/adblock/core/subscription/installed_subscription_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_service_impl.h -@@ -0,0 +1,97 @@ ++++ b/components/adblock/core/subscription/installed_subscription_impl.h +@@ -0,0 +1,150 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -27626,91 +15733,144 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_IMPL_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_IMPL_H_ + -+#include ++#include +#include +#include + -+#include "base/functional/callback.h" ++#include "absl/types/optional.h" ++#include "base/memory/raw_ptr.h" ++#include "base/strings/string_piece.h" + -+#include "base/functional/callback_forward.h" -+#include "base/memory/weak_ptr.h" -+#include "base/observer_list.h" -+#include "base/sequence_checker.h" -+#include "components/adblock/core/configuration/filtering_configuration.h" -+#include "components/adblock/core/subscription/filtering_configuration_maintainer.h" ++#include "components/adblock/core/common/flatbuffer_data.h" ++#include "components/adblock/core/schema/filter_list_schema_generated.h" +#include "components/adblock/core/subscription/installed_subscription.h" -+#include "components/adblock/core/subscription/preloaded_subscription_provider.h" -+#include "components/adblock/core/subscription/subscription_downloader.h" -+#include "components/adblock/core/subscription/subscription_persistent_metadata.h" -+#include "components/adblock/core/subscription/subscription_persistent_storage.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/adblock/core/subscription/subscription_updater.h" ++#include "components/adblock/core/subscription/regex_matcher.h" + +namespace adblock { + -+class SubscriptionServiceImpl final : public SubscriptionService, -+ public FilteringConfiguration::Observer { ++// A flatbuffer-based implementation of Subscription. ++class InstalledSubscriptionImpl final : public InstalledSubscription { + public: -+ // Used to notify this about updates to installed subscriptions. -+ using SubscriptionUpdatedCallback = -+ base::RepeatingCallback; -+ // Used to create FilteringConfigurationMaintainers for newly installed -+ // FilteringConfigurations. -+ using FilteringConfigurationMaintainerFactory = -+ base::RepeatingCallback( -+ FilteringConfiguration* configuration, -+ SubscriptionUpdatedCallback observer)>; -+ using FilteringConfigurationCleaner = -+ base::RepeatingCallback; -+ explicit SubscriptionServiceImpl( -+ FilteringConfigurationMaintainerFactory maintainer_factory, -+ FilteringConfigurationCleaner configuration_cleaner); -+ ~SubscriptionServiceImpl() final; ++ InstalledSubscriptionImpl(std::unique_ptr buffer, ++ InstallationState installation_state, ++ base::Time installation_time); ++ // Subscription ++ GURL GetSourceUrl() const final; ++ std::string GetTitle() const final; ++ std::string GetCurrentVersion() const final; ++ InstallationState GetInstallationState() const final; ++ base::Time GetInstallationTime() const final; ++ base::TimeDelta GetExpirationInterval() const final; + -+ // SubscriptionService: -+ std::vector> GetCurrentSubscriptions( -+ FilteringConfiguration* configuration) const final; -+ void InstallFilteringConfiguration( -+ std::unique_ptr configuration) final; -+ void UninstallFilteringConfiguration( -+ const std::string& configuration_name) final; -+ std::vector GetInstalledFilteringConfigurations() -+ final; -+ FilteringConfiguration* GetAdblockFilteringConfiguration() const final; -+ Snapshot GetCurrentSnapshot() const final; -+ void AddObserver(SubscriptionObserver*) final; -+ void RemoveObserver(SubscriptionObserver*) final; ++ // InstalledSubscription ++ bool HasUrlFilter(const GURL& url, ++ const std::string& document_domain, ++ ContentType content_type, ++ const SiteKey& sitekey, ++ FilterCategory category) const final; ++ bool HasPopupFilter(const GURL& url, ++ const std::string& document_domain, ++ const SiteKey& sitekey, ++ FilterCategory category) const final; ++ bool HasSpecialFilter(SpecialFilterType type, ++ const GURL& url, ++ const std::string& document_domain, ++ const SiteKey& sitekey) const final; ++ void FindCspFilters(const GURL& url, ++ const std::string& document_domain, ++ FilterCategory category, ++ std::set& results) const final; ++ std::set FindRewriteFilters( ++ const GURL& url, ++ const std::string& document_domain, ++ FilterCategory category) const final; ++ void FindHeaderFilters(const GURL& url, ++ ContentType content_type, ++ const std::string& document_domain, ++ FilterCategory category, ++ std::set& results) const final; + -+ // FilteringConfiguration::Observer: -+ void OnEnabledStateChanged(FilteringConfiguration* config) final; ++ Selectors GetElemhideSelectors(const GURL& url, ++ bool domain_specific) const final; ++ Selectors GetElemhideEmulationSelectors(const GURL& url) const final; ++ ++ std::vector MatchSnippets( ++ const std::string& document_domain) const final; ++ ++ void MarkForPermanentRemoval() final; + + private: -+ void OnSubscriptionUpdated(const GURL& subscription_url); -+ std::unique_ptr MakeMaintainer( -+ FilteringConfiguration* configuration); ++ friend class base::RefCountedThreadSafe; ++ ~InstalledSubscriptionImpl() final; ++ enum class FindStrategy { ++ FindFirst, ++ FindAll, ++ }; + -+ SEQUENCE_CHECKER(sequence_checker_); -+ FilteringConfigurationMaintainerFactory maintainer_factory_; -+ FilteringConfigurationCleaner configuration_cleaner_; -+ using MaintainersCollection = -+ std::map, -+ std::unique_ptr>; -+ MaintainersCollection maintainers_; -+ base::ObserverList observers_; -+ base::WeakPtrFactory weak_ptr_factory_{this}; ++ using UrlFilterIndex = ++ flatbuffers::Vector>; ++ using Domains = flatbuffers::Vector>; ++ // Finds the first filter in |category| that matches the remaining parameters. ++ // Finds all filters in category that matchers the remaining parameters. ++ std::vector FindInternal( ++ const UrlFilterIndex* index, ++ const GURL& url, ++ absl::optional content_type, ++ const std::string& document_domain, ++ const std::string& sitekey, ++ FilterCategory category, ++ FindStrategy strategy) const; ++ void FindFiltersForKeyword( ++ const UrlFilterIndex* index, ++ base::StringPiece keyword, ++ const GURL& url, ++ const GURL& lowercase_url, ++ absl::optional content_type, ++ const std::string& document_domain, ++ const std::string& sitekey, ++ FilterCategory category, ++ bool is_third_party_request, ++ FindStrategy strategy, ++ std::vector& out_results) const; ++ bool CandidateFilterViable(const flat::UrlFilter* candidate, ++ absl::optional content_type, ++ const std::string& document_domain, ++ const std::string& sitekey, ++ FilterCategory category, ++ bool is_third_party_request) const; ++ bool IsGenericFilter(const flat::UrlFilter* filter) const; ++ bool CheckThirdParty(const flat::UrlFilter* filter, ++ bool is_third_party_request) const; ++ bool IsActiveOnDomain(const flat::UrlFilter* filter, ++ const std::string& document_domain, ++ const std::string& sitekey) const; ++ bool IsActiveOnDomain(const std::string& document_domain, ++ const Domains* include_domains, ++ const Domains* exclude_domains) const; ++ bool IsEmptyDomainAllowed(const Domains* include_domains, ++ const Domains* exclude_domains) const; ++ std::vector GetSelectorsForDomain( ++ const flat::ElemHideFiltersByDomain* category, ++ base::StringPiece domain) const; ++ ++ const std::unique_ptr buffer_; ++ const InstallationState installation_state_; ++ const base::Time installation_time_; ++ raw_ptr index_ = nullptr; ++ const std::unique_ptr regex_matcher_; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_IMPL_H_ -diff --git a/components/adblock/core/subscription/subscription_updater.h b/components/adblock/core/subscription/subscription_updater.h ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_INSTALLED_SUBSCRIPTION_IMPL_H_ +diff --git a/components/adblock/core/subscription/ongoing_subscription_request.h b/components/adblock/core/subscription/ongoing_subscription_request.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_updater.h -@@ -0,0 +1,35 @@ ++++ b/components/adblock/core/subscription/ongoing_subscription_request.h +@@ -0,0 +1,50 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -27728,29 +15888,44 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_H_ + -+#include "base/functional/callback_forward.h" ++#include "base/files/file_path.h" ++#include "base/functional/callback.h" ++#include "services/network/public/cpp/simple_url_loader.h" + +namespace adblock { + -+// Periodically updates installed subscriptions. -+class SubscriptionUpdater { ++// State machine of a download request of a single subscription (GET or HEAD). ++// It implements observing network state and retries. ++class OngoingSubscriptionRequest { + public: -+ virtual ~SubscriptionUpdater() = default; -+ virtual void StartSchedule(base::RepeatingClosure run_update_check) = 0; -+ virtual void StopSchedule() = 0; ++ using ResponseCallback = base::RepeatingCallback headers)>; ++ enum class Method { GET, HEAD }; ++ ++ virtual ~OngoingSubscriptionRequest() = default; ++ ++ virtual void Start(GURL url, ++ Method method, ++ ResponseCallback response_callback) = 0; ++ virtual void Retry() = 0; ++ virtual void Redirect(GURL redirect_url) = 0; ++ ++ virtual size_t GetNumberOfRedirects() const = 0; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_H_ -diff --git a/components/adblock/core/subscription/subscription_updater_impl.cc b/components/adblock/core/subscription/subscription_updater_impl.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_H_ +diff --git a/components/adblock/core/subscription/ongoing_subscription_request_impl.cc b/components/adblock/core/subscription/ongoing_subscription_request_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_updater_impl.cc -@@ -0,0 +1,65 @@ ++++ b/components/adblock/core/subscription/ongoing_subscription_request_impl.cc +@@ -0,0 +1,190 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -27768,59 +15943,184 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/subscription_updater_impl.h" ++#include "components/adblock/core/subscription/ongoing_subscription_request_impl.h" + -+#include -+#include ++#include + -+#include "base/functional/bind.h" -+#include "base/functional/callback_helpers.h" -+#include "base/logging.h" -+#include "base/time/time.h" ++#include "base/task/thread_pool.h" ++#include "base/trace_event/trace_event.h" ++#include "net/http/http_request_headers.h" ++#include "services/network/public/cpp/resource_request.h" ++#include "services/network/public/mojom/url_response_head.mojom.h" + +namespace adblock { ++namespace { + -+SubscriptionUpdaterImpl::SubscriptionUpdaterImpl(base::TimeDelta initial_delay, -+ base::TimeDelta check_interval) -+ : initial_delay_(initial_delay), check_interval_(check_interval) {} ++const net::NetworkTrafficAnnotationTag kTrafficAnnotation = ++ net::DefineNetworkTrafficAnnotation("adblock_subscription_download", R"( ++ semantics { ++ sender: "SubscriptionDownloaderImpl" ++ description: ++ "A request to download ad-blocking filter lists, as the user " ++ "selects a new filter list source or as a filter list update " ++ "is fetched." ++ trigger: ++ "Interval or when user selects a new filter list source" ++ data: ++ "Version (timestamp) of the filter list, if present. " ++ "Application name (ex. Chromium) " ++ "Application version (93.0.4572.0) " ++ destination: WEBSITE ++ } ++ policy { ++ cookies_allowed: NO ++ setting: ++ "You enable or disable this feature via 'Ad blocking' setting." ++ policy_exception_justification: "Not implemented." ++ })"); ++ ++} // namespace ++ ++OngoingSubscriptionRequestImpl::OngoingSubscriptionRequestImpl( ++ const net::BackoffEntry::Policy* backoff_policy, ++ scoped_refptr url_loader_factory) ++ : backoff_entry_(std::make_unique(backoff_policy)), ++ url_loader_factory_(url_loader_factory), ++ retry_timer_(std::make_unique()), ++ number_of_redirects_(0) { ++ net::NetworkChangeNotifier::AddNetworkChangeObserver(this); ++} ++ ++OngoingSubscriptionRequestImpl::~OngoingSubscriptionRequestImpl() { ++ if (!url_.is_empty()) { ++ VLOG(1) << "[eyeo] Cancelling download of " << url_; ++ } ++ net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); ++} ++ ++void OngoingSubscriptionRequestImpl::Start(GURL url, ++ Method method, ++ ResponseCallback response_callback) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK(url_.is_empty()) << "Start() called twice"; ++ url_ = std::move(url); ++ method_ = method; ++ response_callback_ = std::move(response_callback); ++ if (!net::NetworkChangeNotifier::IsOffline()) { ++ StartInternal(); ++ } ++} ++ ++void OngoingSubscriptionRequestImpl::Retry() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK(!url_.is_empty()) << "Retry() called before Start()"; ++ if (!url_loader_factory_) { ++ // This happens in unit tests that have no network. ++ return; ++ } ++ backoff_entry_->InformOfRequest(false); ++ VLOG(1) << "[eyeo] Will retry downloading " << url_ << " in " ++ << backoff_entry_->GetTimeUntilRelease(); ++ retry_timer_->Start( ++ FROM_HERE, backoff_entry_->GetTimeUntilRelease(), ++ base::BindOnce(&OngoingSubscriptionRequestImpl::StartInternal, ++ // Unretained is safe because destruction of |this| will ++ // remove |retry_timer_| and abort the callback. ++ base::Unretained(this))); ++} ++ ++void OngoingSubscriptionRequestImpl::Redirect(GURL redirect_url) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK(!url_.is_empty()) << "Redirect() called before Start()"; ++ DCHECK(url_ != redirect_url) << "Invalid redirect. Same URL"; ++ VLOG(1) << "[eyeo] Will redirect " << url_ << " to " << redirect_url; ++ ++number_of_redirects_; ++ url_ = std::move(redirect_url); ++ StartInternal(); ++} ++ ++size_t OngoingSubscriptionRequestImpl::GetNumberOfRedirects() const { ++ return number_of_redirects_; ++} ++ ++void OngoingSubscriptionRequestImpl::StartInternal() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ TRACE_EVENT_NESTABLE_ASYNC_BEGIN2("eyeo", "Downloading subscription", this, ++ "url", url_.spec(), "method", ++ MethodToString()); ++ if (!url_loader_factory_) { ++ // This happens in unit tests that have no network. The request will hang ++ // indefinitely. ++ return; ++ } ++ VLOG(1) << "[eyeo] Downloading " << url_; ++ auto request = std::make_unique(); ++ request->url = url_; ++ request->method = MethodToString(); ++ loader_ = ++ network::SimpleURLLoader::Create(std::move(request), kTrafficAnnotation); + -+SubscriptionUpdaterImpl::~SubscriptionUpdaterImpl() = default; ++ if (method_ == Method::GET) { ++ loader_->DownloadToTempFile( ++ url_loader_factory_.get(), ++ base::BindOnce(&OngoingSubscriptionRequestImpl::OnDownloadFinished, ++ // Unretained is safe because destruction of |this| will ++ // remove |loader_| and will abort the callback. ++ base::Unretained(this))); ++ } else { ++ loader_->DownloadHeadersOnly( ++ url_loader_factory_.get(), ++ base::BindOnce(&OngoingSubscriptionRequestImpl::OnHeadersReceived, ++ base::Unretained(this))); ++ } ++} + -+void SubscriptionUpdaterImpl::StartSchedule( -+ base::RepeatingClosure run_update_check) { ++void OngoingSubscriptionRequestImpl::OnDownloadFinished( ++ base::FilePath downloaded_file) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ DCHECK(!timer_.IsRunning()); -+ run_update_check_ = std::move(run_update_check); -+ VLOG(1) << "[eyeo] Starting update schedule, first check scheduled for " -+ << base::Time::Now() + initial_delay_; -+ timer_.Start(FROM_HERE, initial_delay_, -+ base::BindOnce(&SubscriptionUpdaterImpl::RunUpdateCheck, -+ weak_ptr_factory_.GetWeakPtr())); ++ TRACE_EVENT_NESTABLE_ASYNC_END0("eyeo", "Downloading subscription", this); ++ GURL::Replacements strip_query; ++ strip_query.ClearQuery(); ++ GURL url = url_.ReplaceComponents(strip_query); ++ response_callback_.Run( ++ url, std::move(downloaded_file), ++ loader_->ResponseInfo() ? loader_->ResponseInfo()->headers : nullptr); ++ // response_callback_ may delete this, do not call any member variables now. +} + -+void SubscriptionUpdaterImpl::StopSchedule() { ++void OngoingSubscriptionRequestImpl::OnHeadersReceived( ++ scoped_refptr headers) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+ VLOG(1) << "[eyeo] Stopping update schedule"; -+ timer_.Stop(); ++ TRACE_EVENT_NESTABLE_ASYNC_END0("eyeo", "Downloading subscription", this); ++ response_callback_.Run(GURL(), base::FilePath(), headers); ++ // response_callback_ may delete this, do not call any member variables now. +} + -+void SubscriptionUpdaterImpl::RunUpdateCheck() { -+ VLOG(1) << "[eyeo] Running subscription update check"; -+ run_update_check_.Run(); -+ VLOG(1) -+ << "[eyeo] Subscription update check completed, next one scheduled for " -+ << base::Time::Now() + check_interval_; -+ timer_.Start(FROM_HERE, check_interval_, -+ base::BindOnce(&SubscriptionUpdaterImpl::RunUpdateCheck, -+ weak_ptr_factory_.GetWeakPtr())); ++const char* OngoingSubscriptionRequestImpl::MethodToString() const { ++ return method_ == Method::GET ? net::HttpRequestHeaders::kGetMethod ++ : net::HttpRequestHeaders::kHeadMethod; ++} ++ ++bool OngoingSubscriptionRequestImpl::IsStarted() const { ++ return loader_ != nullptr || retry_timer_->IsRunning(); ++} ++ ++void OngoingSubscriptionRequestImpl::OnNetworkChanged( ++ net::NetworkChangeNotifier::ConnectionType connection_type) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ if (!IsStarted() && !url_.is_empty() && ++ !net::NetworkChangeNotifier::IsOffline()) { ++ StartInternal(); ++ DCHECK(IsStarted()); ++ } +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/subscription_updater_impl.h b/components/adblock/core/subscription/subscription_updater_impl.h +diff --git a/components/adblock/core/subscription/ongoing_subscription_request_impl.h b/components/adblock/core/subscription/ongoing_subscription_request_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_updater_impl.h -@@ -0,0 +1,52 @@ ++++ b/components/adblock/core/subscription/ongoing_subscription_request_impl.h +@@ -0,0 +1,74 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -27838,46 +16138,68 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_IMPL_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_IMPL_H_ + +#include -+#include + -+#include "base/memory/weak_ptr.h" -+#include "base/sequence_checker.h" ++#include "base/functional/callback.h" ++ ++#include "base/files/file_path.h" +#include "base/timer/timer.h" -+#include "components/adblock/core/subscription/subscription_updater.h" ++#include "components/adblock/core/subscription/ongoing_subscription_request.h" ++#include "components/adblock/core/subscription/subscription_downloader.h" ++#include "net/base/backoff_entry.h" ++#include "net/base/network_change_notifier.h" ++#include "services/network/public/cpp/shared_url_loader_factory.h" ++#include "services/network/public/cpp/simple_url_loader.h" + +namespace adblock { + -+class SubscriptionUpdaterImpl final : public SubscriptionUpdater { ++class OngoingSubscriptionRequestImpl final ++ : public OngoingSubscriptionRequest, ++ public net::NetworkChangeNotifier::NetworkChangeObserver { + public: -+ SubscriptionUpdaterImpl(base::TimeDelta initial_delay, -+ base::TimeDelta check_interval); -+ ~SubscriptionUpdaterImpl() final; -+ void StartSchedule(base::RepeatingClosure run_update_check) final; -+ void StopSchedule() final; ++ OngoingSubscriptionRequestImpl( ++ const net::BackoffEntry::Policy* backoff_policy, ++ scoped_refptr url_loader_factory); ++ ~OngoingSubscriptionRequestImpl() final; ++ void Start(GURL url, Method method, ResponseCallback response_callback) final; ++ void Retry() final; ++ void Redirect(GURL redirect_url) final; ++ ++ size_t GetNumberOfRedirects() const final; ++ ++ // NetworkChangeObserver: ++ void OnNetworkChanged( ++ net::NetworkChangeNotifier::ConnectionType connection_type) final; + + private: -+ void RunUpdateCheck(); ++ bool IsStarted() const; ++ void StartInternal(); ++ void OnDownloadFinished(base::FilePath downloaded_file); ++ void OnHeadersReceived(scoped_refptr headers); ++ const char* MethodToString() const; + + SEQUENCE_CHECKER(sequence_checker_); -+ base::RepeatingClosure run_update_check_; -+ const base::TimeDelta initial_delay_; -+ const base::TimeDelta check_interval_; -+ base::OneShotTimer timer_; -+ base::WeakPtrFactory weak_ptr_factory_{this}; ++ std::unique_ptr backoff_entry_; ++ scoped_refptr url_loader_factory_; ++ GURL url_; ++ Method method_ = Method::GET; ++ ResponseCallback response_callback_; ++ std::unique_ptr loader_; ++ std::unique_ptr retry_timer_; ++ size_t number_of_redirects_; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_IMPL_H_ -diff --git a/components/adblock/core/subscription/subscription_validator.h b/components/adblock/core/subscription/subscription_validator.h ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_ONGOING_SUBSCRIPTION_REQUEST_IMPL_H_ +diff --git a/components/adblock/core/subscription/pattern_matcher.cc b/components/adblock/core/subscription/pattern_matcher.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_validator.h -@@ -0,0 +1,59 @@ ++++ b/components/adblock/core/subscription/pattern_matcher.cc +@@ -0,0 +1,265 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -27895,203 +16217,259 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_H_ ++#include "components/adblock/core/subscription/pattern_matcher.h" + -+#include "base/files/file_path.h" -+#include "base/functional/callback_forward.h" -+#include "components/adblock/core/common/flatbuffer_data.h" ++#include "absl/types/optional.h" ++#include "base/logging.h" ++#include "base/notreached.h" ++#include "base/ranges/algorithm.h" ++#include "base/strings/string_piece.h" ++#include "base/strings/string_util.h" ++#include "components/adblock/core/common/regex_filter_pattern.h" + +namespace adblock { ++namespace { + -+// Validates potentially untrusted Subscriptions read from disk. -+// Is thread-safe, returned callbacks can be called from a background thread. -+class SubscriptionValidator { -+ public: -+ virtual ~SubscriptionValidator() = default; -+ // Verifies if |data| has a signature that matches a previously stored -+ // signature for |path| and whether the schema version is supported. To avoid -+ // race conditions, only the state current for the time of retrieving the -+ // callback is considered, subsequent calls to |StoreTrustedSignature| will -+ // not affect the results. You need to recreate the callback to read new -+ // state. -+ using IsSignatureValidThreadSafeCallback = -+ base::RepeatingCallback; -+ virtual IsSignatureValidThreadSafeCallback IsSignatureValid() const = 0; -+ -+ // Asynchronously persistently store the signature of |data| associated with -+ // |path|. -+ using StoreTrustedSignatureThreadSafeCallback = -+ base::OnceCallback; -+ virtual StoreTrustedSignatureThreadSafeCallback StoreTrustedSignature() = 0; ++constexpr int kMaxRecursionDepth = 50; + -+ // Asynchronously removes the signature of file |path| from persistent -+ // storage. -+ using RemoveStoredSignatureThreadSafeCallback = -+ base::OnceCallback; -+ virtual RemoveStoredSignatureThreadSafeCallback RemoveStoredSignature() = 0; -+}; ++bool CharacterIsValidSeparator(char c) { ++ // The separator character can be anything but a letter, a digit, or one of ++ // the following: _, -, ., % ++ return !base::IsAsciiAlphaNumeric(c) && ++ base::StringPiece("_-.%").find(c) == base::StringPiece::npos; ++} + -+} // namespace adblock ++// Returns if |candidate| (e.g. "https://sub") is a valid start of |url|'s host. ++// If url is "https://sub.domain.com/path" then: ++// Valid candidates: ++// - https:// ++// - https://sub. ++// - https://sub.domain. ++// - https://sub.domain.com ++// Invalid candidates: ++// - https://s ++// - https://sub ++// - https://sub.domain.com/ ++// - https://sub.domain.com/p ++bool IsValidStartOfHost(base::StringPiece candidate, const GURL& url) { ++ const GURL trimmed_url = url.GetWithEmptyPath(); ++ if (url.has_scheme()) { ++ DCHECK(base::StartsWith(candidate, url.scheme_piece())); ++ candidate = candidate.substr(url.scheme_piece().size()); ++ } ++ candidate = ++ base::TrimString(candidate, ":/", base::TrimPositions::TRIM_LEADING); ++ return candidate.empty() || candidate == url.host_piece() || ++ (base::EndsWith(candidate, ".") && ++ candidate.find_first_of("/") == base::StringPiece::npos); ++} + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_H_ -diff --git a/components/adblock/core/subscription/subscription_validator_impl.cc b/components/adblock/core/subscription/subscription_validator_impl.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/subscription_validator_impl.cc -@@ -0,0 +1,145 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++class PatternTokenizer { ++ public: ++ explicit PatternTokenizer(base::StringPiece filter_pattern) ++ : consumed_filter_pattern_(filter_pattern) {} + -+#include "components/adblock/core/subscription/subscription_validator_impl.h" ++ base::StringPiece NextToken() { ++ if (consumed_filter_pattern_.empty()) { ++ return {}; ++ } ++ // If the previous call left us on a wildcard character, return it and ++ // and advance to first non-wildcard position. ++ if (consumed_filter_pattern_[0] == '*') { ++ consumed_filter_pattern_ = ++ base::TrimString(consumed_filter_pattern_, "*", base::TRIM_LEADING); ++ return "*"; ++ } ++ // If the previous call left us on a ^ separator, return it and advance ++ if (consumed_filter_pattern_[0] == '^') { ++ consumed_filter_pattern_ = consumed_filter_pattern_.substr(1); ++ return "^"; ++ } ++ // If the previous call left us on a | anchor (or anchors), return it and ++ // advance to first non-anchor position. ++ if (consumed_filter_pattern_[0] == '|') { ++ const auto token = consumed_filter_pattern_.substr( ++ 0, consumed_filter_pattern_.find_first_not_of("|")); ++ consumed_filter_pattern_ = consumed_filter_pattern_.substr(token.size()); ++ return token; ++ } + -+#include "base/base64.h" -+#include "base/containers/span.h" -+#include "base/functional/bind.h" -+#include "base/logging.h" -+#include "base/task/bind_post_task.h" -+#include "base/task/sequenced_task_runner.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/common/adblock_prefs.h" -+#include "components/adblock/core/schema/filter_list_schema_generated.h" -+#include "components/prefs/scoped_user_pref_update.h" -+#include "crypto/sha2.h" ++ // The next token is whatever characters are between current position and ++ // the next separator (or EOF) ++ const auto next_token = consumed_filter_pattern_.substr( ++ 0, consumed_filter_pattern_.find_first_of(kSeparators)); ++ // Advance to next token. ++ consumed_filter_pattern_ = ++ consumed_filter_pattern_.substr(next_token.size()); ++ return next_token; ++ } + -+namespace adblock { -+namespace { ++ private: ++ constexpr static base::StringPiece kSeparators{"*^|"}; ++ // The tokenizer consumes |consumed_filter_pattern_| from the left as it ++ // advances. This is cheap, just incrementing the begin index. ++ base::StringPiece consumed_filter_pattern_; ++}; + -+std::string ComputeSubscriptionHash(const FlatbufferData& buffer) { -+ return base::Base64Encode( -+ crypto::SHA256Hash(base::make_span(buffer.data(), buffer.size()))); -+} ++absl::optional FindNextTokenInInput( ++ base::StringPiece consumed_input, ++ PatternTokenizer tokenizer, ++ int recursion_depth); + -+// When the schema version used to create installed subscriptions is different -+// from the schema version known by this browser, we should not attempt to read -+// the flatbuffers - we would misinterpret their content. -+// Clear the stored subscription signatures to indicate the files are invalid. -+void ClearSignaturesIfSchemaVersionChanged( -+ PrefService* pref_service, -+ const std::string& current_schema_version) { -+ if (pref_service->GetString(common::prefs::kLastUsedSchemaVersion) != -+ current_schema_version) { -+ if (!pref_service->FindPreference(common::prefs::kSubscriptionSignatures) -+ ->IsDefaultValue()) { -+ LOG(INFO) << "[eyeo] Schema version has changed, invalidating stored " -+ "subscriptions."; -+ pref_service->ClearPref(common::prefs::kSubscriptionSignatures); ++// Check if |consumed_input| starts with next token from |tokenizer| and ++// continues matching subsequent tokens (recursively). ++bool NextTokenBeginsInput(base::StringPiece consumed_input, ++ PatternTokenizer tokenizer, ++ int recursion_depth) { ++ if (++recursion_depth > kMaxRecursionDepth) { ++ return false; ++ } ++ const auto token = tokenizer.NextToken(); ++ if (token.empty()) { ++ // Matching finished, no more tokens in the filter. ++ return true; ++ } ++ if (token == "^") { ++ // The next character must either be a valid separator, or EOF. "^" matches ++ // either. ++ if (!consumed_input.empty()) { ++ // This is not an EOF, ^ must match a valid separator, followed by ++ // subsequent matching tokens. ++ return CharacterIsValidSeparator(consumed_input[0]) && ++ NextTokenBeginsInput(consumed_input.substr(1), tokenizer, ++ recursion_depth); + } -+ pref_service->SetString(common::prefs::kLastUsedSchemaVersion, -+ current_schema_version); ++ // ^ is a valid match for EOF, but only if there aren't any tokens left ++ // that want to match text. ++ return NextTokenBeginsInput({}, tokenizer, recursion_depth); ++ } else if (token == "*") { ++ // The next characters can be anything, as long as subsequent tokens are ++ // matched further in |consumed_input| (recursively). ++ return FindNextTokenInInput(consumed_input, tokenizer, recursion_depth) ++ .has_value(); ++ } else if (token == "|") { ++ // "|" is an end-of-URL anchor, verify we indeed reached end of input. ++ // TODO(mpawlowski) A literal "|"" character can occur in a URL, we should ++ // probably check this as well: DPD-1755. ++ return consumed_input.empty(); ++ } else { ++ // The next characters should exactly match the token, and then subsequent ++ // tokens must continue matching the input. ++ if (!base::StartsWith(consumed_input, token)) { ++ return false; ++ } ++ return NextTokenBeginsInput(consumed_input.substr(token.size()), tokenizer, ++ recursion_depth); + } +} + -+bool IsSignatureValidInternal( -+ const base::Value::Dict& initial_subscription_signatures, -+ const FlatbufferData& data, -+ const base::FilePath& path) { -+ const auto* expected_hash = initial_subscription_signatures.FindString( -+ path.BaseName().AsUTF8Unsafe()); -+ if (!expected_hash) { -+ DLOG(WARNING) << "[eyeo] " << path << " has no matching signature in prefs"; -+ return false; -+ } -+ if (*expected_hash != ComputeSubscriptionHash(data)) { -+ DLOG(WARNING) << "[eyeo] " << path << " has invalid signature in prefs"; -+ return false; ++// Returns characters skipped in order to reach next token from |tokenizer|, or ++// nullopt if not found. ++absl::optional FindNextTokenInInput( ++ base::StringPiece consumed_input, ++ PatternTokenizer tokenizer, ++ int recursion_depth) { ++ if (++recursion_depth > kMaxRecursionDepth) { ++ return absl::nullopt; + } -+ return true; -+} ++ const auto token = tokenizer.NextToken(); ++ // We're searching for |token| anywhere inside |consumed_input|, we may skip ++ // any number of characters while we try to find it. ++ DCHECK(token != "*") << "PatternTokenizer failed to handle multiple " ++ "consecutive wildcards in the filter pattern"; ++ if (token == "^") { ++ // We're looking for input that matches the ^ separator, followed by next ++ // tokens (recursively). ++ // It is possible that the first separator we find won't be followed by the ++ // correct next token. This is ok, this algorithm cannot be greedy. Keep ++ // skipping characters until we match a separator followed by subsequent ++ // tokens. ++ for (size_t i = 0; i < consumed_input.size(); i++) { ++ if (!CharacterIsValidSeparator(consumed_input[i])) { ++ continue; ++ } ++ if (NextTokenBeginsInput(consumed_input.substr(i + 1), tokenizer, ++ recursion_depth)) { ++ return consumed_input.substr(0, i + 1); ++ } ++ } ++ // Reached the end of the input without matching a valid separator (that was ++ // followed by the right tokens, recursively). ++ // It is OK as long as there are no further tokens that require matching ++ // input. The "^" symbol matches EOF too. ++ return NextTokenBeginsInput(base::StringPiece(), tokenizer, recursion_depth) ++ ? absl::optional{consumed_input} ++ : absl::nullopt; ++ } else if (token == "|") { ++ // If we're skipping characters, we can always skip enough to reach the end ++ // anchor. ++ return consumed_input; ++ } else { ++ // The searched token is just ASCII text. Keep searching for occurrences of ++ // it within consumed_input. ++ for (auto match_pos = consumed_input.find(token); ++ match_pos != base::StringPiece::npos; ++ match_pos = consumed_input.find(token, match_pos + 1)) { ++ if (NextTokenBeginsInput(consumed_input.substr(match_pos + token.size()), ++ tokenizer, recursion_depth)) { ++ return consumed_input.substr(0, match_pos); ++ } ++ // If the first occurrence of token inside consumed_input isn't the right ++ // one, keep looking. Subsequent tokens didn't match, but the algorithm is ++ // not greedy, there might be another match. ++ } + -+void StoreTrustedSignatureInternal( -+ scoped_refptr main_task_runner, -+ base::OnceCallback -+ signature_receiver, -+ const FlatbufferData& data, -+ const base::FilePath& path) { -+ // Compute the hash on the current, background thread. -+ const auto hash = ComputeSubscriptionHash(data); -+ // Post the hash for storing into the main thread. -+ main_task_runner->PostTask( -+ FROM_HERE, -+ base::BindOnce(std::move(signature_receiver), std::move(hash), path)); ++ return absl::nullopt; ++ } +} + +} // namespace + -+SubscriptionValidatorImpl::SubscriptionValidatorImpl( -+ PrefService* pref_service, -+ const std::string& current_schema_version) -+ : pref_service_(pref_service) { -+ ClearSignaturesIfSchemaVersionChanged(pref_service_, current_schema_version); -+} -+ -+SubscriptionValidatorImpl::~SubscriptionValidatorImpl() = default; -+ -+SubscriptionValidator::IsSignatureValidThreadSafeCallback -+SubscriptionValidatorImpl::IsSignatureValid() const { -+ return base::BindRepeating( -+ &IsSignatureValidInternal, -+ pref_service_->GetDict(common::prefs::kSubscriptionSignatures).Clone()); -+} -+ -+SubscriptionValidator::StoreTrustedSignatureThreadSafeCallback -+SubscriptionValidatorImpl::StoreTrustedSignature() { -+ return base::BindOnce( -+ &StoreTrustedSignatureInternal, -+ base::SequencedTaskRunner::GetCurrentDefault(), -+ base::BindOnce( -+ &SubscriptionValidatorImpl::StoreTrustedSignatureOnMainThread, -+ weak_ptr_factory_.GetWeakPtr())); -+} -+ -+SubscriptionValidator::RemoveStoredSignatureThreadSafeCallback -+SubscriptionValidatorImpl::RemoveStoredSignature() { -+ return base::BindPostTask( -+ base::SequencedTaskRunner::GetCurrentDefault(), -+ base::BindOnce( -+ &SubscriptionValidatorImpl::RemoveStoredSignatureInMainThread, -+ weak_ptr_factory_.GetWeakPtr())); -+} -+ -+void SubscriptionValidatorImpl::StoreTrustedSignatureOnMainThread( -+ std::string signature, -+ const base::FilePath& path) { -+ ScopedDictPrefUpdate pref_update(pref_service_, -+ common::prefs::kSubscriptionSignatures); -+ const auto key = path.BaseName().AsUTF8Unsafe(); -+ pref_update->Set(key, base::Value(signature)); -+} ++bool DoesPatternMatchUrl(base::StringPiece filter_pattern, const GURL& url) { ++ DCHECK(!ExtractRegexFilterFromPattern(filter_pattern)) ++ << "This function does not support regular expressions filters"; ++ const base::StringPiece input(url.spec()); ++ PatternTokenizer tokenizer(filter_pattern); ++ const auto first_token = tokenizer.NextToken(); ++ if (first_token == "|") { ++ return NextTokenBeginsInput(input, tokenizer, 0); ++ } else if (first_token == "||") { ++ { ++ // If the next token is *, we discard the start-from-host anchor, behave ++ // as if the filter started from * ++ auto empty_or_wildcard_tokenizer = tokenizer; ++ const auto token = empty_or_wildcard_tokenizer.NextToken(); ++ if (token == "*") { ++ return FindNextTokenInInput(input, empty_or_wildcard_tokenizer, 0) ++ .has_value(); ++ } ++ // If the next token is empty we have a filter "||" matching any domain. ++ if (token.empty()) { ++ return true; ++ } ++ } ++ const auto skipped_characters = FindNextTokenInInput(input, tokenizer, 0); ++ if (!skipped_characters) { ++ return false; ++ } ++ return IsValidStartOfHost(*skipped_characters, url); + -+void SubscriptionValidatorImpl::RemoveStoredSignatureInMainThread( -+ const base::FilePath& path) { -+ ScopedDictPrefUpdate pref_update(pref_service_, -+ common::prefs::kSubscriptionSignatures); -+ const auto key = path.BaseName().AsUTF8Unsafe(); -+ pref_update->Remove(key); ++ } else if (first_token == "*") { ++ return FindNextTokenInInput(input, tokenizer, 0).has_value(); ++ } else { ++ // Behave as if the first token is a wildcard, recreate tokenizer to restart ++ // from the first token. ++ return FindNextTokenInInput(input, PatternTokenizer(filter_pattern), 0) ++ .has_value(); ++ } +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/subscription_validator_impl.h b/components/adblock/core/subscription/subscription_validator_impl.h +diff --git a/components/adblock/core/subscription/pattern_matcher.h b/components/adblock/core/subscription/pattern_matcher.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/subscription_validator_impl.h -@@ -0,0 +1,53 @@ ++++ b/components/adblock/core/subscription/pattern_matcher.h +@@ -0,0 +1,33 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -28109,47 +16487,27 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_IMPL_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_IMPL_H_ -+ -+#include "base/memory/raw_ptr.h" -+#include "base/memory/weak_ptr.h" -+#include "base/values.h" -+#include "components/adblock/core/subscription/subscription_validator.h" -+#include "components/prefs/pref_service.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PATTERN_MATCHER_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PATTERN_MATCHER_H_ + -+class PrefService; ++#include "url/gurl.h" + +namespace adblock { + -+// Stores the hash of FlatbufferData in a Tracked Pref. -+class SubscriptionValidatorImpl final : public SubscriptionValidator { -+ public: -+ SubscriptionValidatorImpl(PrefService* pref_service, -+ const std::string& current_schema_version); -+ ~SubscriptionValidatorImpl() final; -+ -+ IsSignatureValidThreadSafeCallback IsSignatureValid() const final; -+ StoreTrustedSignatureThreadSafeCallback StoreTrustedSignature() final; -+ RemoveStoredSignatureThreadSafeCallback RemoveStoredSignature() final; -+ -+ private: -+ void StoreTrustedSignatureOnMainThread(std::string signature, -+ const base::FilePath& path); -+ void RemoveStoredSignatureInMainThread(const base::FilePath& path); -+ -+ raw_ptr pref_service_; -+ base::WeakPtrFactory weak_ptr_factory_{this}; -+}; ++// Returns whether the URL is matched by a filter pattern. ++// Example: filter_pattern "||example.com^" will match url ++// "https://subdomain/example.com/path.png" ++// filter_pattern must NOT be a regex filter ++bool DoesPatternMatchUrl(base::StringPiece filter_pattern, const GURL& url); + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_IMPL_H_ -diff --git a/components/adblock/core/subscription/test/filtering_configuration_maintainer_impl_test.cc b/components/adblock/core/subscription/test/filtering_configuration_maintainer_impl_test.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PATTERN_MATCHER_H_ +diff --git a/components/adblock/core/subscription/preloaded_subscription_provider.h b/components/adblock/core/subscription/preloaded_subscription_provider.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/filtering_configuration_maintainer_impl_test.cc -@@ -0,0 +1,907 @@ ++++ b/components/adblock/core/subscription/preloaded_subscription_provider.h +@@ -0,0 +1,56 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -28167,901 +16525,50 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/filtering_configuration_maintainer_impl.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_H_ + -+#include -+#include -+#include +#include + -+#include "absl/types/optional.h" -+#include "base/functional/callback_helpers.h" -+#include "base/memory/raw_ptr.h" +#include "base/memory/scoped_refptr.h" -+#include "base/ranges/algorithm.h" -+#include "base/test/gmock_callback_support.h" -+#include "base/test/gmock_move_support.h" -+#include "base/test/mock_callback.h" -+#include "base/test/task_environment.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/common/header_filter_data.h" -+#include "components/adblock/core/common/sitekey.h" -+#include "components/adblock/core/configuration/test/fake_filtering_configuration.h" +#include "components/adblock/core/subscription/installed_subscription.h" -+#include "components/adblock/core/subscription/subscription_config.h" -+#include "components/adblock/core/subscription/test/mock_conversion_executors.h" -+#include "components/adblock/core/subscription/test/mock_subscription.h" -+#include "components/adblock/core/subscription/test/mock_subscription_downloader.h" -+#include "components/adblock/core/subscription/test/mock_subscription_persistent_metadata.h" -+#include "components/adblock/core/subscription/test/mock_subscription_updater.h" -+#include "gmock/gmock.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+using testing::_; -+using testing::NiceMock; ++#include "components/keyed_service/core/keyed_service.h" ++#include "url/gurl.h" + +namespace adblock { -+namespace { -+ -+class FakePersistentStorage final -+ : public NiceMock { -+ public: -+ MOCK_METHOD(void, MockLoadSubscriptions, ()); -+ -+ void LoadSubscriptions(LoadCallback on_initialized) final { -+ on_initialized_ = std::move(on_initialized); -+ MockLoadSubscriptions(); -+ } -+ -+ void StoreSubscription(std::unique_ptr raw_data, -+ StoreCallback on_finished) final { -+ store_subscription_calls_.emplace_back(std::move(raw_data), -+ std::move(on_finished)); -+ } -+ void RemoveSubscription( -+ scoped_refptr subscription) final { -+ remove_subscription_calls_.push_back(std::move(subscription)); -+ } -+ -+ LoadCallback on_initialized_; -+ std::vector, StoreCallback>> -+ store_subscription_calls_; -+ std::vector> remove_subscription_calls_; -+}; -+ -+class FakeBuffer final : public FlatbufferData { -+ public: -+ const uint8_t* data() const final { return nullptr; } -+ size_t size() const final { return 0u; } -+}; -+ -+class FakeSubscription final : public InstalledSubscription { -+ public: -+ explicit FakeSubscription( -+ std::string name, -+ InstallationState state = InstallationState::Installed) -+ : name_(std::move(name)), state_(state) {} -+ -+ GURL GetSourceUrl() const final { -+ if (GURL{name_}.is_valid()) { -+ return GURL{name_}; -+ } -+ return GURL{"https://easylist-downloads.adblockplus.org/" + name_}; -+ } -+ std::string GetTitle() const final { return name_; } -+ -+ std::string GetCurrentVersion() const final { return name_; } -+ -+ InstallationState GetInstallationState() const final { return state_; } -+ -+ base::Time GetInstallationTime() const final { return base::Time(); } -+ -+ base::TimeDelta GetExpirationInterval() const final { return base::Days(5); } -+ -+ bool HasUrlFilter(const GURL& url, -+ const std::string& document_domain, -+ ContentType type, -+ const SiteKey& sitekey, -+ FilterCategory category) const final { -+ return false; -+ } -+ bool HasPopupFilter(const GURL& url, -+ const std::string& document_domain, -+ const SiteKey& sitekey, -+ FilterCategory category) const final { -+ return false; -+ } -+ bool HasSpecialFilter(SpecialFilterType type, -+ const GURL& url, -+ const std::string& document_domain, -+ const SiteKey& sitekey) const final { -+ return false; -+ } -+ void FindCspFilters(const GURL& url, -+ const std::string& document_domain, -+ FilterCategory category, -+ std::set& results) const final {} -+ std::set FindRewriteFilters( -+ const GURL& url, -+ const std::string& document_domain, -+ FilterCategory category) const final { -+ return {}; -+ } -+ void FindHeaderFilters(const GURL& url, -+ ContentType type, -+ const std::string& document_domain, -+ FilterCategory category, -+ std::set& results) const final {} -+ Selectors GetElemhideSelectors(const GURL& url, -+ bool domain_specific) const final { -+ Selectors result; -+ result.elemhide_selectors = {name_}; -+ return result; -+ } -+ Selectors GetElemhideEmulationSelectors(const GURL& url) const final { -+ return {}; -+ } -+ -+ std::vector MatchSnippets( -+ const std::string& document_domain) const final { -+ return {}; -+ } + -+ void MarkForPermanentRemoval() final {} -+ -+ std::string name_; -+ InstallationState state_; -+ -+ private: -+ ~FakeSubscription() final = default; -+}; -+ -+class MockPreloadedSubscriptionProvider -+ : public NiceMock { -+ public: -+ MOCK_METHOD(void, -+ UpdateSubscriptions, -+ (std::vector installed_subscriptions, -+ std::vector pending_subscriptions), -+ (override)); -+ MOCK_METHOD(std::vector>, -+ GetCurrentPreloadedSubscriptions, -+ (), -+ (override, const)); -+}; -+ -+} // namespace -+ -+class AdblockFilteringConfigurationMaintainerImplTest : public testing::Test { ++// Provides temporary preloaded subscriptions when needed. ++// Preloaded subscriptions are filter lists bundled with the browser. They can ++// be used to provide some level of ad-filtering while waiting for the download ++// of up-to-date filter lists from the Internet. ++class PreloadedSubscriptionProvider { + public: -+ void CreateTestee(std::vector> -+ demanded_subscriptions) { -+ filtering_configuration_ = std::make_unique(); -+ filtering_configuration_->name = "adblock"; -+ for (auto& sub : demanded_subscriptions) { -+ filtering_configuration_->AddFilterList(sub->GetSourceUrl()); -+ } -+ auto storage = std::make_unique(); -+ storage_ = storage.get(); -+ auto downloader = std::make_unique(); -+ downloader_ = downloader.get(); -+ auto preloaded_subscription_provider = -+ std::make_unique(); -+ preloaded_subscription_provider_ = preloaded_subscription_provider.get(); -+ auto updater = std::make_unique(); -+ updater_ = updater.get(); -+ -+ testee_ = std::make_unique( -+ filtering_configuration_.get(), std::move(storage), -+ std::move(downloader), std::move(preloaded_subscription_provider), -+ std::move(updater), &conversion_executor_, &persistent_metadata_, -+ observer_.Get()); -+ testee_->InitializeStorage(); -+ } -+ -+ void FinishStorageInitialization( -+ std::vector> loaded_subscriptions) { -+ // When storage becomes initialized, testee starts the update checks -+ // schedule. -+ EXPECT_CALL(*updater_, StartSchedule(_)) -+ .WillOnce(testing::SaveArg<0>(&run_update_check_callback_)); -+ std::move(storage_->on_initialized_).Run(loaded_subscriptions); -+ } -+ -+ void TearDown() override { -+ // Avoid danging pointers during destruction. -+ storage_ = nullptr; -+ preloaded_subscription_provider_ = nullptr; -+ updater_ = nullptr; -+ downloader_ = nullptr; -+ } -+ -+ void AddSubscription( -+ scoped_refptr subscription, -+ SubscriptionDownloader::RetryPolicy expected_retry_policy = -+ SubscriptionDownloader::RetryPolicy::RetryUntilSucceeded) { -+ DCHECK(filtering_configuration_) << "Call CreateTestee() first"; -+ const auto url = subscription->GetSourceUrl(); -+ // The downloader will be called to fetch the raw_data for subscription. -+ EXPECT_CALL(*downloader_, -+ StartDownload(url, expected_retry_policy, testing::_)) -+ .WillOnce([](const GURL&, SubscriptionDownloader::RetryPolicy, -+ base::OnceCallback)> -+ callback) { -+ // The downloader responds by running the callback with a new -+ // buffer, simulating a successful download. -+ std::move(callback).Run(std::make_unique()); -+ }); -+ filtering_configuration_->AddFilterList(url); -+ -+ // Storage was asked to store the buffer provided by downloader. -+ ASSERT_EQ(storage_->store_subscription_calls_.size(), 1u); -+ EXPECT_TRUE(storage_->store_subscription_calls_[0].first); -+ // Storage runs the callback provided by SubscriptionService to indicate -+ // store succeeded. This triggers the SubscriptionObserver. -+ EXPECT_CALL(observer_, Run(url)); -+ std::move(storage_->store_subscription_calls_[0].second).Run(subscription); -+ storage_->store_subscription_calls_.clear(); -+ } -+ -+ void RemoveSubscription(scoped_refptr subscription) { -+ DCHECK(filtering_configuration_) << "Call CreateTestee() first"; -+ // Simulates a single call to UninstallSubscription that forwards the -+ // subscription to storage_ for removal. -+ EXPECT_CALL(persistent_metadata_, -+ RemoveMetadata(subscription->GetSourceUrl())); -+ filtering_configuration_->RemoveFilterList(subscription->GetSourceUrl()); -+ ASSERT_EQ(storage_->remove_subscription_calls_.size(), 1u); -+ EXPECT_EQ(storage_->remove_subscription_calls_[0], subscription); -+ storage_->remove_subscription_calls_.clear(); -+ } ++ virtual ~PreloadedSubscriptionProvider() = default; + -+ void InitializeTesteeWithNoSubscriptions() { -+ CreateTestee({}); -+ FinishStorageInitialization({}); -+ } ++ // The collection of preloaded subscriptions returned by ++ // |GetCurrentPreloadedSubscriptions()| is built by comparing the list of ++ // installed (ie. available) subscriptions with the list of pending (ie. ++ // desired) subscriptions. ++ virtual void UpdateSubscriptions(std::vector installed_subscriptions, ++ std::vector pending_subscriptions) = 0; + -+ const GURL kRequestUrl{"https://domain.com/resource.jpg"}; -+ const GURL kParentUrl{"https://domain.com"}; -+ const SiteKey kSitekey{"abc"}; -+ -+ std::unique_ptr filtering_configuration_; -+ raw_ptr storage_; -+ raw_ptr preloaded_subscription_provider_; -+ raw_ptr updater_; -+ raw_ptr downloader_; -+ MockSubscriptionPersistentMetadata persistent_metadata_; -+ MockConversionExecutors conversion_executor_; -+ base::test::TaskEnvironment task_environment_; -+ base::MockCallback< -+ FilteringConfigurationMaintainerImpl::SubscriptionUpdatedCallback> -+ observer_; -+ base::RepeatingClosure run_update_check_callback_; -+ std::unique_ptr testee_; ++ // Returns preloaded subscriptions that were deemed necessary, based on the ++ // difference between pending and installed subscriptions, to provide relevant ++ // temporary ad-filtering. This may include easylist.txt and ++ // exceptionrules.txt. The subscriptions are kept in memory and released when ++ // no longer needed. ++ virtual std::vector> ++ GetCurrentPreloadedSubscriptions() const = 0; +}; + -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, Initialization) { -+ std::vector> initial_subscriptions = { -+ base::MakeRefCounted("fake_subscription1"), -+ base::MakeRefCounted("fake_subscription2")}; -+ CreateTestee(initial_subscriptions); -+ -+ // Before storage is initialized, no subscriptions are returned. -+ EXPECT_TRUE(testee_->GetCurrentSubscriptions().empty()); -+ -+ // Storage completes initialization, loads two subscriptions. -+ FinishStorageInitialization(initial_subscriptions); -+ -+ // The subscriptions provided by storage are visible. -+ EXPECT_THAT(testee_->GetCurrentSubscriptions(), -+ testing::UnorderedElementsAre(initial_subscriptions[0], -+ initial_subscriptions[1])); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, AddSubscription) { -+ // Storage has no initial subscriptions: -+ InitializeTesteeWithNoSubscriptions(); -+ -+ // When storage calls its callback, the provided subscription is added to the -+ // service and |on_finished| is triggered with the parsed URL. -+ auto fake_subscription1 = -+ base::MakeRefCounted("fake_subscription1"); -+ AddSubscription(fake_subscription1); -+ -+ // Added subscription is reflected in |GetCurrentSubscriptions|. -+ EXPECT_THAT(testee_->GetCurrentSubscriptions(), -+ testing::ElementsAre(fake_subscription1)); -+ -+ // The snapshot has a SubscriptionCollection that queries the added -+ // subscription. We can check whether FakeSubscription's title appears in -+ // Elemhide selectors. -+ auto snapshot = testee_->GetSubscriptionCollection(); -+ auto selectors = snapshot->GetElementHideSelectors(GURL(), {}, SiteKey()); -+ EXPECT_THAT(selectors, testing::ElementsAre(fake_subscription1->GetTitle())); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ AddMultipleSubscriptionsAndRemoveOne) { -+ InitializeTesteeWithNoSubscriptions(); -+ -+ // Add 3 subscriptions. -+ auto fake_subscription1 = -+ base::MakeRefCounted("fake_subscription1"); -+ auto fake_subscription2 = -+ base::MakeRefCounted("fake_subscription2"); -+ auto fake_subscription3 = -+ base::MakeRefCounted("fake_subscription3"); -+ AddSubscription(fake_subscription1); -+ AddSubscription(fake_subscription2); -+ AddSubscription(fake_subscription3); -+ -+ // Remove middle one. -+ RemoveSubscription(fake_subscription2); -+ -+ // Two remaining subscription are reflected in |GetInstalledSubscriptions|. -+ EXPECT_THAT( -+ testee_->GetCurrentSubscriptions(), -+ testing::UnorderedElementsAre(fake_subscription1, fake_subscription3)); -+ -+ // The snapshot has a SubscriptionCollection that queries the remaining -+ // subscriptions. We can check whether FakeSubscription's title appears in -+ // Elemhide selectors. -+ auto snapshot = testee_->GetSubscriptionCollection(); -+ auto selectors = snapshot->GetElementHideSelectors(GURL(), {}, SiteKey()); -+ EXPECT_THAT(selectors, -+ testing::UnorderedElementsAre(fake_subscription1->GetTitle(), -+ fake_subscription3->GetTitle())); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ SnapshotNotAffectedByFutureAddition) { -+ InitializeTesteeWithNoSubscriptions(); -+ // Add one subscription -+ auto fake_subscription1 = -+ base::MakeRefCounted("fake_subscription1"); -+ AddSubscription(fake_subscription1); -+ -+ // Take snapshot now. -+ auto snapshot = testee_->GetSubscriptionCollection(); -+ -+ // Add new subscription after snapshot. -+ auto fake_subscription2 = -+ base::MakeRefCounted("fake_subscription2"); -+ AddSubscription(fake_subscription2); -+ -+ // Snapshot only contains the first subscription. -+ auto selectors = snapshot->GetElementHideSelectors(GURL(), {}, SiteKey()); -+ EXPECT_THAT(selectors, -+ testing::UnorderedElementsAre(fake_subscription1->GetTitle())); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ SnapshotNotAffectedByFutureRemoval) { -+ InitializeTesteeWithNoSubscriptions(); -+ auto fake_subscription1 = -+ base::MakeRefCounted("fake_subscription1"); -+ auto fake_subscription2 = -+ base::MakeRefCounted("fake_subscription2"); -+ AddSubscription(fake_subscription1); -+ AddSubscription(fake_subscription2); -+ -+ // Take snapshot now. -+ auto snapshot = testee_->GetSubscriptionCollection(); -+ -+ // Remove second subscription. -+ RemoveSubscription(fake_subscription2); -+ -+ // Snapshot still contains both subscriptions. -+ auto selectors = snapshot->GetElementHideSelectors(GURL(), {}, SiteKey()); -+ EXPECT_THAT(selectors, -+ testing::UnorderedElementsAre(fake_subscription1->GetTitle(), -+ fake_subscription2->GetTitle())); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ UpgradeExistingSubscription) { -+ InitializeTesteeWithNoSubscriptions(); -+ auto expired_subscription = -+ base::MakeRefCounted("expired_subscription"); -+ auto young_subscription = -+ base::MakeRefCounted("young_subscription"); -+ AddSubscription(expired_subscription); -+ AddSubscription(young_subscription); -+ -+ // Pretend one of the subscriptions expired. -+ EXPECT_CALL(persistent_metadata_, -+ IsExpired(expired_subscription->GetSourceUrl())) -+ .WillRepeatedly(testing::Return(true)); -+ EXPECT_CALL(persistent_metadata_, -+ IsExpired(young_subscription->GetSourceUrl())) -+ .WillRepeatedly(testing::Return(false)); -+ // Even though Acceptable Ads is not installed, its expiration will be checked -+ // to make a HEAD request if needed. -+ EXPECT_CALL(persistent_metadata_, IsExpired(AcceptableAdsUrl())) -+ .WillRepeatedly(testing::Return(false)); -+ -+ // Expect that the expired subscription will be re-downloaded. -+ EXPECT_CALL(*downloader_, -+ StartDownload(expired_subscription->GetSourceUrl(), -+ SubscriptionDownloader::RetryPolicy::DoNotRetry, -+ testing::_)) -+ .WillOnce(base::test::RunOnceCallback<2>(std::make_unique())); -+ -+ // The young subscription will not be re-downloaded. -+ EXPECT_CALL(*downloader_, StartDownload(young_subscription->GetSourceUrl(), -+ testing::_, testing::_)) -+ .Times(0); -+ -+ run_update_check_callback_.Run(); -+ -+ // In a second run, even though |expired_subscription| might be marked as -+ // expired by persistent_metadata_, there will be no new download since one is -+ // already under way. -+ EXPECT_CALL(*downloader_, StartDownload(expired_subscription->GetSourceUrl(), -+ testing::_, testing::_)) -+ .Times(0); -+ run_update_check_callback_.Run(); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ CallOnFilterListsChangedDuringUpgradeExistingSubscriptions) { -+ InitializeTesteeWithNoSubscriptions(); -+ auto expired_subscription = -+ base::MakeRefCounted("expired_subscription"); -+ auto young_subscription = -+ base::MakeRefCounted("young_subscription"); -+ AddSubscription(expired_subscription); -+ AddSubscription(young_subscription); -+ -+ // Pretend one of the subscriptions expired. -+ EXPECT_CALL(persistent_metadata_, -+ IsExpired(expired_subscription->GetSourceUrl())) -+ .WillRepeatedly(testing::Return(true)); -+ EXPECT_CALL(persistent_metadata_, -+ IsExpired(young_subscription->GetSourceUrl())) -+ .WillRepeatedly(testing::Return(false)); -+ // Even though Acceptable Ads is not installed, its expiration will be checked -+ // to make a HEAD request if needed. -+ EXPECT_CALL(persistent_metadata_, IsExpired(AcceptableAdsUrl())) -+ .WillRepeatedly(testing::Return(false)); -+ -+ // Expect that the expired subscription will be re-downloaded and call -+ // OnFilterListsChanged during update -+ EXPECT_CALL(*downloader_, -+ StartDownload(expired_subscription->GetSourceUrl(), -+ SubscriptionDownloader::RetryPolicy::DoNotRetry, -+ testing::_)) -+ .WillOnce(testing::DoAll( -+ [&]() { -+ testee_->OnFilterListsChanged(filtering_configuration_.get()); -+ }, -+ base::test::RunOnceCallback<2>(std::make_unique()))); -+ -+ // The young subscription will not be re-downloaded. -+ EXPECT_CALL(*downloader_, StartDownload(young_subscription->GetSourceUrl(), -+ testing::_, testing::_)) -+ .Times(0); -+ -+ run_update_check_callback_.Run(); -+ -+ // In a second run, even though |expired_subscription| might be marked as -+ // expired by persistent_metadata_, there will be no new download since one is -+ // already under way. -+ EXPECT_CALL(*downloader_, StartDownload(expired_subscription->GetSourceUrl(), -+ testing::_, testing::_)) -+ .Times(0); -+ run_update_check_callback_.Run(); -+ -+ // After OnFilterListsChanged, check if number of subscriptions is unchanged -+ // (DPD-2015) -+ EXPECT_EQ(2u, testee_->GetCurrentSubscriptions().size()); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ UpdatePingStoresAAversion) { -+ InitializeTesteeWithNoSubscriptions(); -+ // Once the update check runs, even though Acceptable Ads is not installed, -+ // pretend its expired. This will trigger a HEAD request. -+ EXPECT_CALL(persistent_metadata_, IsExpired(AcceptableAdsUrl())) -+ .WillRepeatedly(testing::Return(true)); -+ -+ SubscriptionDownloader::HeadRequestCallback download_completed_callback; -+ EXPECT_CALL(*downloader_, DoHeadRequest(AcceptableAdsUrl(), testing::_)) -+ .WillOnce(MoveArg<1>(&download_completed_callback)); -+ -+ run_update_check_callback_.Run(); -+ -+ // When the HEAD request finishes, the service will store the parsed version -+ // and the expiration interval. -+ const std::string version("202107210821"); -+ EXPECT_CALL(persistent_metadata_, SetVersion(AcceptableAdsUrl(), version)); -+ // The next ping should happen in a day. -+ EXPECT_CALL(persistent_metadata_, -+ SetExpirationInterval(AcceptableAdsUrl(), base::Days(1))); -+ std::move(download_completed_callback).Run(version); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ SendPingOnlyForAdblockConfig) { -+ InitializeTesteeWithNoSubscriptions(); -+ EXPECT_CALL(persistent_metadata_, IsExpired(AcceptableAdsUrl())) -+ .WillRepeatedly(testing::Return(true)); -+ SubscriptionDownloader::HeadRequestCallback download_completed_callback; -+ -+ // For default "adblock" config ping is sent -+ EXPECT_CALL(*downloader_, DoHeadRequest(AcceptableAdsUrl(), testing::_)) -+ .WillOnce(MoveArg<1>(&download_completed_callback)); -+ run_update_check_callback_.Run(); -+ -+ // For non "adblock" config ping is not sent -+ filtering_configuration_->name = "crumbs"; -+ EXPECT_CALL(*downloader_, DoHeadRequest(AcceptableAdsUrl(), testing::_)) -+ .Times(0); -+ run_update_check_callback_.Run(); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ RemoveDuplicatesDuringInitialLoad) { -+ // Storage returns 3 subscriptions in initial load, however there is a -+ // duplicate, due to a race condition or corruption. -+ auto fake_subscription1 = -+ base::MakeRefCounted("subscription"); -+ auto fake_subscription2 = -+ base::MakeRefCounted("unique_subscription"); -+ auto fake_subscription3 = -+ base::MakeRefCounted("subscription"); -+ ASSERT_EQ(fake_subscription1->GetSourceUrl(), -+ fake_subscription3->GetSourceUrl()); -+ -+ CreateTestee({fake_subscription1, fake_subscription2}); -+ FinishStorageInitialization( -+ {fake_subscription1, fake_subscription2, fake_subscription3}); -+ -+ // Service noticed one subscription is duplicated and it removes one instance -+ // - it is unspecified which. -+ ASSERT_EQ(storage_->remove_subscription_calls_.size(), 1u); -+ EXPECT_EQ(storage_->remove_subscription_calls_[0]->GetSourceUrl(), -+ fake_subscription1->GetSourceUrl()); -+ -+ // Installed subscriptions do not contain duplicates. -+ std::vector current_subscriptions_urls; -+ base::ranges::transform(testee_->GetCurrentSubscriptions(), -+ std::back_inserter(current_subscriptions_urls), -+ [](const auto& sub) { return sub->GetSourceUrl(); }); -+ EXPECT_THAT( -+ current_subscriptions_urls, -+ testing::UnorderedElementsAre(fake_subscription1->GetSourceUrl(), -+ fake_subscription2->GetSourceUrl())); -+ -+ // Selectors returned by snapshot do not contain duplicates. -+ const auto snapshot = testee_->GetSubscriptionCollection(); -+ -+ const auto selectors = -+ snapshot->GetElementHideSelectors(GURL(), {}, SiteKey()); -+ EXPECT_EQ(selectors.size(), 2u); -+ EXPECT_THAT(selectors, -+ testing::UnorderedElementsAre(fake_subscription1->GetTitle(), -+ fake_subscription2->GetTitle())); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ CancellingInstallationDuringDownload_WithPreloadedFallback) { -+ // Storage has no initial subscriptions: -+ InitializeTesteeWithNoSubscriptions(); -+ -+ auto fake_subscription1 = -+ base::MakeRefCounted("fake_subscription1"); -+ const GURL& url = fake_subscription1->GetSourceUrl(); -+ -+ // SubscriptionDownloader will be called to fetch the subscription. We will -+ // trigger the response later, after cancelling installation. -+ SubscriptionDownloader::DownloadCompletedCallback download_completed_callback; -+ EXPECT_CALL(*downloader_, StartDownload(url, testing::_, testing::_)) -+ .WillOnce(MoveArg<2>(&download_completed_callback)); -+ -+ // There is a preloaded fallback available for this URL. -+ auto preloaded_subscription = base::MakeRefCounted( -+ "fake_subscription1", Subscription::InstallationState::Preloaded); -+ EXPECT_CALL(*preloaded_subscription_provider_, -+ GetCurrentPreloadedSubscriptions()) -+ .WillRepeatedly( -+ testing::Return(std::vector>{ -+ preloaded_subscription})); -+ -+ // Start installation. -+ filtering_configuration_->AddFilterList(url); -+ -+ // We should see the preloaded fallback in GetCurrentSubscriptions(). -+ EXPECT_THAT(testee_->GetCurrentSubscriptions(), -+ testing::UnorderedElementsAre(preloaded_subscription)); -+ -+ // We now uninstall the subscription, this should cancel the download. -+ // The observer is never notified about success. -+ EXPECT_CALL(observer_, Run(testing::_)).Times(0); -+ // The downloader is told to cancel the download. -+ EXPECT_CALL(*downloader_, CancelDownload(url)); -+ filtering_configuration_->RemoveFilterList(url); -+ -+ // The subscription is no longer listed. -+ EXPECT_CALL(*preloaded_subscription_provider_, -+ GetCurrentPreloadedSubscriptions()) -+ .WillRepeatedly( -+ testing::Return(std::vector>{})); -+ EXPECT_TRUE(testee_->GetCurrentSubscriptions().empty()); -+ -+ // Even when the download callback delivers the FakeBuffer, it will not -+ // be sent to storage. -+ std::move(download_completed_callback).Run(std::make_unique()); -+ // There are no attempts to store the buffer received from Downloader. -+ EXPECT_TRUE(storage_->store_subscription_calls_.empty()); -+ EXPECT_TRUE(testee_->GetCurrentSubscriptions().empty()); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ CancellingInstallationDuringStorage_NoFallback) { -+ // Storage has no initial subscriptions: -+ InitializeTesteeWithNoSubscriptions(); -+ -+ auto fake_subscription1 = -+ base::MakeRefCounted("fake_subscription1"); -+ const GURL& url = fake_subscription1->GetSourceUrl(); -+ -+ // There are no preloaded fallback available for this URL. -+ EXPECT_CALL(*preloaded_subscription_provider_, -+ GetCurrentPreloadedSubscriptions()) -+ .WillRepeatedly( -+ testing::Return(std::vector>{})); -+ // SubscriptionDownloader will be called to fetch the subscription. It is -+ // immediately successful. -+ EXPECT_CALL(*downloader_, StartDownload(url, testing::_, testing::_)) -+ .WillOnce( -+ [&](const GURL&, SubscriptionDownloader::RetryPolicy, -+ SubscriptionDownloader::DownloadCompletedCallback callback) { -+ std::move(callback).Run(std::make_unique()); -+ }); -+ -+ // Start installation. -+ filtering_configuration_->AddFilterList(url); -+ -+ // The downloader immediately returned a FakeBuffer, it should have been sent -+ // to storage. -+ ASSERT_EQ(storage_->store_subscription_calls_.size(), 1u); -+ -+ // We should see the ongoing installation in GetCurrentSubscriptions(). -+ const auto current_subscriptions = testee_->GetCurrentSubscriptions(); -+ ASSERT_EQ(current_subscriptions.size(), 1u); -+ EXPECT_EQ(current_subscriptions[0]->GetSourceUrl(), url); -+ EXPECT_EQ(current_subscriptions[0]->GetInstallationState(), -+ Subscription::InstallationState::Installing); -+ -+ // We now uninstall the subscription, this should cancel the installation. -+ // The observer is never notified about success. -+ EXPECT_CALL(observer_, Run(testing::_)).Times(0); -+ filtering_configuration_->RemoveFilterList(url); -+ -+ // The subscription is no longer listed. -+ EXPECT_TRUE(testee_->GetCurrentSubscriptions().empty()); -+ -+ // Even when the storage callback delivers the Subscription, it will not -+ // be installed in SubscriptionService. -+ std::move(storage_->store_subscription_calls_[0].second) -+ .Run(fake_subscription1); -+ // In fact, the subscription will be scheduled for removal from storage, it -+ // is not desired. -+ ASSERT_EQ(storage_->remove_subscription_calls_.size(), 1u); -+ EXPECT_EQ(storage_->remove_subscription_calls_[0], fake_subscription1); -+ -+ EXPECT_TRUE(testee_->GetCurrentSubscriptions().empty()); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, CustomFilterIsAdded) { -+ auto fake_subscription1 = -+ base::MakeRefCounted("subscription"); -+ InitializeTesteeWithNoSubscriptions(); -+ AddSubscription(fake_subscription1); -+ -+ std::string filter = "test"; -+ std::vector filters = {filter}; -+ EXPECT_CALL(conversion_executor_, ConvertCustomFilters(filters)) -+ .WillOnce(testing::Return( -+ base::MakeRefCounted(CustomFiltersUrl().spec()))); -+ filtering_configuration_->AddCustomFilter(filter); -+ -+ // The in-memory subscription containing the custom filter is not reported -+ // among current subscriptions, only the subscription added by client is. -+ EXPECT_THAT(testee_->GetCurrentSubscriptions(), -+ testing::UnorderedElementsAre(fake_subscription1)); -+ -+ // However, the SubscriptionCollection *does* get the custom filter -+ // subscription. -+ auto snapshot = testee_->GetSubscriptionCollection(); -+ -+ auto selectors = snapshot->GetElementHideSelectors(GURL(), {}, SiteKey()); -+ EXPECT_THAT(selectors, testing::UnorderedElementsAre( -+ CustomFiltersUrl().spec(), "subscription")); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ PreloadedSubscriptionProviderUpdatedDuringChanges) { -+ testing::InSequence sequence; -+ InitializeTesteeWithNoSubscriptions(); -+ // When starting a download, inform provider about new pending subscription. -+ auto first_subscription = -+ base::MakeRefCounted("subscription"); -+ EXPECT_CALL(*preloaded_subscription_provider_, -+ UpdateSubscriptions( -+ std::vector{}, -+ std::vector{first_subscription->GetSourceUrl()})); -+ -+ // Start download. -+ SubscriptionDownloader::DownloadCompletedCallback download_completed_callback; -+ EXPECT_CALL(*downloader_, StartDownload(testing::_, testing::_, testing::_)) -+ .WillOnce(MoveArg<2>(&download_completed_callback)); -+ filtering_configuration_->AddFilterList(first_subscription->GetSourceUrl()); -+ // When download completes, update the provider about new installed -+ // subscription, and no pending subscriptions. -+ EXPECT_CALL( -+ *preloaded_subscription_provider_, -+ UpdateSubscriptions(std::vector{first_subscription->GetSourceUrl()}, -+ std::vector{})); -+ -+ // Download completes. -+ EXPECT_CALL(observer_, Run(first_subscription->GetSourceUrl())); -+ std::move(download_completed_callback).Run(std::make_unique()); -+ std::move(storage_->store_subscription_calls_.back().second) -+ .Run(first_subscription); -+ -+ // Second subscription added. -+ auto second_subscription = -+ base::MakeRefCounted("subscription2"); -+ // Provider updated with both the old installed subscription and the new -+ // ongoing download. -+ EXPECT_CALL(*preloaded_subscription_provider_, -+ UpdateSubscriptions( -+ std::vector{first_subscription->GetSourceUrl()}, -+ std::vector{second_subscription->GetSourceUrl()})); -+ -+ // Second download starts. -+ EXPECT_CALL(*downloader_, StartDownload(testing::_, testing::_, testing::_)) -+ .WillOnce(MoveArg<2>(&download_completed_callback)); -+ -+ filtering_configuration_->AddFilterList(second_subscription->GetSourceUrl()); -+ -+ // When second download completes, provider has two installed and zero pending -+ // subscriptions. -+ EXPECT_CALL(*preloaded_subscription_provider_, -+ UpdateSubscriptions( -+ std::vector{first_subscription->GetSourceUrl(), -+ second_subscription->GetSourceUrl()}, -+ std::vector{})); -+ EXPECT_CALL(observer_, Run(second_subscription->GetSourceUrl())); -+ std::move(download_completed_callback).Run(std::make_unique()); -+ std::move(storage_->store_subscription_calls_.back().second) -+ .Run(second_subscription); -+ -+ // First subscription is uninstalled, provider informed about new state -+ // containing only the second subscription. -+ EXPECT_CALL(*preloaded_subscription_provider_, -+ UpdateSubscriptions( -+ std::vector{second_subscription->GetSourceUrl()}, -+ std::vector{})); -+ filtering_configuration_->RemoveFilterList( -+ first_subscription->GetSourceUrl()); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ PreloadedSubscriptionProviderUpdatedDuringFailedDownload) { -+ testing::InSequence sequence; -+ InitializeTesteeWithNoSubscriptions(); -+ // When starting a download, inform provider about new pending subscription. -+ auto first_subscription = -+ base::MakeRefCounted("subscription"); -+ EXPECT_CALL(*preloaded_subscription_provider_, -+ UpdateSubscriptions( -+ std::vector{}, -+ std::vector{first_subscription->GetSourceUrl()})); -+ -+ // Start download. -+ SubscriptionDownloader::DownloadCompletedCallback download_completed_callback; -+ EXPECT_CALL(*downloader_, StartDownload(testing::_, testing::_, testing::_)) -+ .WillOnce(MoveArg<2>(&download_completed_callback)); -+ filtering_configuration_->AddFilterList(first_subscription->GetSourceUrl()); -+ // When download fails, inform the provider about returning to previous state. -+ EXPECT_CALL(*preloaded_subscription_provider_, -+ UpdateSubscriptions(std::vector{}, std::vector{})); -+ -+ // Download fails. -+ std::move(download_completed_callback).Run(nullptr); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ PreloadedSubscriptionProviderUpdatedWhenInstallationCancelled) { -+ testing::InSequence sequence; -+ InitializeTesteeWithNoSubscriptions(); -+ // When starting a download, inform provider about new pending subscription. -+ auto first_subscription = -+ base::MakeRefCounted("subscription"); -+ EXPECT_CALL(*preloaded_subscription_provider_, -+ UpdateSubscriptions( -+ std::vector{}, -+ std::vector{first_subscription->GetSourceUrl()})); -+ -+ // Start download. -+ SubscriptionDownloader::DownloadCompletedCallback download_completed_callback; -+ EXPECT_CALL(*downloader_, StartDownload(testing::_, testing::_, testing::_)) -+ .WillOnce(MoveArg<2>(&download_completed_callback)); -+ filtering_configuration_->AddFilterList(first_subscription->GetSourceUrl()); -+ // When installation is cancelled, inform the provider about returning to -+ // previous state. -+ EXPECT_CALL(*preloaded_subscription_provider_, -+ UpdateSubscriptions(std::vector{}, std::vector{})) -+ .Times(testing::AtLeast(1)); -+ filtering_configuration_->RemoveFilterList( -+ first_subscription->GetSourceUrl()); -+ -+ // Download completes, but the installation was cancelled in the mean time. -+ std::move(download_completed_callback).Run(std::make_unique()); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ PreloadedSubscriptionProviderConsultedForSnapshot) { -+ auto subscription_in_service = -+ base::MakeRefCounted("subscription_in_service"); -+ auto preloaded_subscription = base::MakeRefCounted( -+ "preloaded_subscription", Subscription::InstallationState::Preloaded); -+ InitializeTesteeWithNoSubscriptions(); -+ AddSubscription(subscription_in_service); -+ -+ EXPECT_CALL(*preloaded_subscription_provider_, -+ GetCurrentPreloadedSubscriptions()) -+ .WillOnce( -+ testing::Return(std::vector>{ -+ preloaded_subscription})); -+ -+ // Snapshot provides both the subscription in service and the preloaded -+ // subscription returned by provider. -+ const auto snapshot = testee_->GetSubscriptionCollection(); -+ const auto selectors = -+ snapshot->GetElementHideSelectors(GURL(), {}, SiteKey()); -+ EXPECT_EQ(selectors.size(), 2u); -+ EXPECT_THAT(selectors, testing::UnorderedElementsAre( -+ subscription_in_service->GetTitle(), -+ preloaded_subscription->GetTitle())); -+} -+ -+TEST_F(AdblockFilteringConfigurationMaintainerImplTest, -+ AcceptableAdsMetadataRetained) { -+ auto aa_subscription = -+ base::MakeRefCounted("exceptionrules.txt"); -+ auto easylist_subscription = -+ base::MakeRefCounted("easylist.txt"); -+ InitializeTesteeWithNoSubscriptions(); -+ AddSubscription(aa_subscription); -+ AddSubscription(easylist_subscription); -+ -+ // Removing EasyList clears the subscription's metadata. -+ EXPECT_CALL(persistent_metadata_, -+ RemoveMetadata(easylist_subscription->GetSourceUrl())); -+ filtering_configuration_->RemoveFilterList( -+ easylist_subscription->GetSourceUrl()); -+ -+ // Removing the Acceptable Ads subscription retains metadata, in order to -+ // allow sending continued HEAD-only update-like requests with consistent -+ // expiry date. -+ EXPECT_CALL(persistent_metadata_, -+ RemoveMetadata(aa_subscription->GetSourceUrl())) -+ .Times(0); -+ filtering_configuration_->RemoveFilterList(aa_subscription->GetSourceUrl()); -+} -+ +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/installed_subscription_impl_test.cc b/components/adblock/core/subscription/test/installed_subscription_impl_test.cc ++ ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_H_ +diff --git a/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc b/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/installed_subscription_impl_test.cc -@@ -0,0 +1,111 @@ ++++ b/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc +@@ -0,0 +1,121 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -29079,105 +16586,115 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/installed_subscription_impl.h" -+ -+#include -+#include ++#include "components/adblock/core/subscription/preloaded_subscription_provider_impl.h" + ++#include "base/functional/bind.h" ++#include "base/logging.h" +#include "base/memory/scoped_refptr.h" -+#include "base/strings/stringprintf.h" -+#include "components/adblock/core/common/content_type.h" ++#include "base/ranges/algorithm.h" ++#include "base/strings/pattern.h" ++#include "base/strings/string_piece.h" ++#include "base/trace_event/trace_event.h" ++#include "components/adblock/core/common/adblock_utils.h" +#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/converter/flatbuffer_converter.h" -+#include "components/adblock/core/subscription/installed_subscription.h" -+#include "components/adblock/core/subscription/regex_matcher.h" -+#include "components/grit/components_resources.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" ++#include "components/adblock/core/subscription/installed_subscription_impl.h" ++#include "components/adblock/core/subscription/subscription.h" ++#include "components/adblock/core/subscription/subscription_config.h" + +namespace adblock { +namespace { + -+// NOTE! More tests of InstalledSubscriptionImpl are in converter_test.cc. The -+// behavior of InstalledSubscriptionImpl is tightly coupled with the flatbuffer -+// data generated by the Converter, so they're tested together. ++bool HasSubscriptionWithMatchingUrl(const std::vector& collection, ++ base::StringPiece pattern) { ++ return std::find_if(collection.begin(), collection.end(), ++ [pattern](const GURL& url) { ++ return base::MatchPattern(url.spec(), pattern); ++ }) != collection.end(); ++} ++ ++} // namespace + -+class MockBuffer : public FlatbufferData { ++class PreloadedSubscriptionProviderImpl::SingleSubscriptionProvider { + public: -+ MockBuffer() -+ : real_data_( -+ FlatbufferConverter::Convert({}, -+ GURL{"http://data.com/filters.txt"}, -+ false)) {} -+ MOCK_METHOD(void, PermanentlyRemoveSourceOnDestruction, (), (override)); ++ explicit SingleSubscriptionProvider(PreloadedSubscriptionInfo info) ++ : info_(info) {} ++ ++ void UpdatePreloadedSubscription( ++ const std::vector& installed_subscriptions, ++ const std::vector& pending_subscriptions) { ++ const bool needs_subscription = ++ HasSubscriptionWithMatchingUrl(pending_subscriptions, ++ info_.url_pattern) && ++ !HasSubscriptionWithMatchingUrl(installed_subscriptions, ++ info_.url_pattern); ++ if (needs_subscription && !subscription_) { ++ TRACE_EVENT1("eyeo", "Creating preloaded subscription", "url_pattern", ++ info_.url_pattern); ++ subscription_ = base::MakeRefCounted( ++ utils::MakeFlatbufferDataFromResourceBundle( ++ info_.flatbuffer_resource_id), ++ Subscription::InstallationState::Preloaded, base::Time()); ++ VLOG(1) << "[eyeo] Preloaded subscription now in use: " ++ << subscription_->GetSourceUrl(); ++ } else if (!needs_subscription && subscription_) { ++ VLOG(1) << "[eyeo] Preloaded subscription no longer in use: " ++ << subscription_->GetSourceUrl(); ++ subscription_.reset(); ++ } ++ } ++ ++ scoped_refptr subscription() const { ++ return subscription_; ++ } + -+ const uint8_t* data() const override { return real_data_->data(); } -+ size_t size() const override { return real_data_->size(); } ++ void Reset() { subscription_.reset(); } + -+ std::unique_ptr real_data_; ++ private: ++ PreloadedSubscriptionInfo info_; ++ scoped_refptr subscription_; +}; + -+} // namespace ++PreloadedSubscriptionProviderImpl::~PreloadedSubscriptionProviderImpl() = ++ default; ++PreloadedSubscriptionProviderImpl::PreloadedSubscriptionProviderImpl() { ++ for (const auto& info : config::GetPreloadedSubscriptionConfiguration()) { ++ providers_.emplace_back(info); ++ } ++} + -+TEST(AdblockInstalledSubscriptionImplTest, -+ MarkForPermanentRemovalTriggersSourceRemoval) { -+ auto buffer = std::make_unique(); -+ EXPECT_CALL(*buffer, PermanentlyRemoveSourceOnDestruction()); -+ auto subscription = base::MakeRefCounted( -+ std::move(buffer), Subscription::InstallationState::Installed, -+ base::Time()); -+ subscription->MarkForPermanentRemoval(); ++void PreloadedSubscriptionProviderImpl::UpdateSubscriptions( ++ std::vector installed_subscriptions, ++ std::vector pending_subscriptions) { ++ installed_subscriptions_ = std::move(installed_subscriptions); ++ pending_subscriptions_ = std::move(pending_subscriptions); ++ UpdateSubscriptionsInternal(); +} + -+TEST(AdblockInstalledSubscriptionImplTest, -+ NormalDestructionDoesNotTriggerSourceRemoval) { -+ auto buffer = std::make_unique(); -+ EXPECT_CALL(*buffer, PermanentlyRemoveSourceOnDestruction()).Times(0); -+ auto subscription = base::MakeRefCounted( -+ std::move(buffer), Subscription::InstallationState::Installed, -+ base::Time()); -+ subscription.reset(); -+} -+ -+TEST(AdblockInstalledSubscriptionImplTest, InstallationStateAndDateReported) { -+ const auto installation_time = -+ base::Time::FromDeltaSinceWindowsEpoch(base::Seconds(30)); -+ const auto installation_state = Subscription::InstallationState::Preloaded; -+ auto subscription = base::MakeRefCounted( -+ std::make_unique(), installation_state, installation_time); -+ EXPECT_EQ(subscription->GetInstallationState(), installation_state); -+ EXPECT_EQ(subscription->GetInstallationTime(), installation_time); -+} -+ -+TEST(AdblockInstalledSubscriptionImplTest, -+ ConvertMoreRegexFiltersThanCacheCapacity) { -+ std::vector filters; -+ // Create a lot of regex filters -+ for (int i = 0; i < RegexMatcher::kMaxPrebuiltPatterns; i++) { -+ // Match any word followed by the numerical value of i, then another word. -+ filters.push_back(base::StringPrintf("/.*word%dword.*/", i)); ++std::vector> ++PreloadedSubscriptionProviderImpl::GetCurrentPreloadedSubscriptions() const { ++ std::vector> result; ++ for (const auto& provider : providers_) { ++ auto sub = provider.subscription(); ++ if (sub) { ++ result.push_back(sub); ++ } ++ } ++ return result; ++} ++ ++void PreloadedSubscriptionProviderImpl::UpdateSubscriptionsInternal() { ++ for (auto& provider : providers_) { ++ provider.UpdatePreloadedSubscription(installed_subscriptions_, ++ pending_subscriptions_); + } -+ // Add one more, this one will not get prebuilt -+ filters.push_back(base::StringPrintf("/.*word%dword.*/", 1000)); -+ -+ auto buffer = FlatbufferConverter::Convert( -+ filters, GURL{"http://data.com/filters.txt"}, false); -+ ASSERT_TRUE(buffer); -+ auto subscription = base::MakeRefCounted( -+ std::move(buffer), Subscription::InstallationState::Installed, -+ base::Time()); -+ // Ensure a URL that matches our "extra" regex filter is matched. -+ EXPECT_TRUE(subscription->HasUrlFilter( -+ GURL("https://word1000word.com/ad.jpg"), "example.com", -+ ContentType::Image, {}, FilterCategory::Blocking)); +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/load_gzipped_test_file.cc b/components/adblock/core/subscription/test/load_gzipped_test_file.cc +diff --git a/components/adblock/core/subscription/preloaded_subscription_provider_impl.h b/components/adblock/core/subscription/preloaded_subscription_provider_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/load_gzipped_test_file.cc -@@ -0,0 +1,43 @@ ++++ b/components/adblock/core/subscription/preloaded_subscription_provider_impl.h +@@ -0,0 +1,50 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -29195,77 +16712,44 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/test/load_gzipped_test_file.h" -+ -+#include "base/base_paths.h" -+#include "base/files/file_path.h" -+#include "base/files/file_util.h" -+#include "base/path_service.h" -+#include "third_party/zlib/google/compression_utils.h" -+ -+namespace adblock { ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_IMPL_H_ + -+std::string LoadGzippedTestFile(base::StringPiece filename) { -+ base::FilePath path; -+ CHECK(base::PathService::Get(base::DIR_SOURCE_ROOT, &path)); -+ path = path.AppendASCII("components") -+ .AppendASCII("test") -+ .AppendASCII("data") -+ .AppendASCII("adblock") -+ .AppendASCII(filename); -+ CHECK(base::PathExists(path)); -+ std::string content; -+ CHECK(base::ReadFileToString(path, &content)); -+ CHECK(compression::GzipUncompress(content, &content)); -+ return content; -+} ++#include + -+} // namespace adblock -diff --git a/components/adblock/core/subscription/test/load_gzipped_test_file.h b/components/adblock/core/subscription/test/load_gzipped_test_file.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/load_gzipped_test_file.h -@@ -0,0 +1,35 @@ ++#include "components/adblock/core/subscription/preloaded_subscription_provider.h" + -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++namespace adblock { + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_LOAD_GZIPPED_TEST_FILE_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_LOAD_GZIPPED_TEST_FILE_H_ ++class PreloadedSubscriptionProviderImpl final ++ : public PreloadedSubscriptionProvider { ++ public: ++ ~PreloadedSubscriptionProviderImpl() final; ++ PreloadedSubscriptionProviderImpl(); + -+#include ++ void UpdateSubscriptions(std::vector installed_subscriptions, ++ std::vector pending_subscriptions) final; + -+#include "base/strings/string_piece.h" ++ std::vector> ++ GetCurrentPreloadedSubscriptions() const final; + -+namespace adblock { ++ private: ++ void UpdateSubscriptionsInternal(); + -+// Loads and extracts a file from components/test/data/adblock/|filename| -+// The file is assumed to exist and be gzipped. The function CHECKs and will -+// crash otherwise. -+std::string LoadGzippedTestFile(base::StringPiece filename); ++ class SingleSubscriptionProvider; ++ std::vector installed_subscriptions_; ++ std::vector pending_subscriptions_; ++ std::vector providers_; ++}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_LOAD_GZIPPED_TEST_FILE_H_ -diff --git a/components/adblock/core/subscription/test/mock_conversion_executors.cc b/components/adblock/core/subscription/test/mock_conversion_executors.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_PRELOADED_SUBSCRIPTION_PROVIDER_IMPL_H_ +diff --git a/components/adblock/core/subscription/regex_matcher.cc b/components/adblock/core/subscription/regex_matcher.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/mock_conversion_executors.cc -@@ -0,0 +1,25 @@ ++++ b/components/adblock/core/subscription/regex_matcher.cc +@@ -0,0 +1,162 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -29283,101 +16767,156 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/test/mock_conversion_executors.h" ++#include "components/adblock/core/subscription/regex_matcher.h" + -+namespace adblock { ++#include "base/logging.h" ++#include "base/memory/ptr_util.h" ++#include "base/notreached.h" ++#include "base/strings/string_util.h" ++#include "base/timer/elapsed_timer.h" ++#include "components/adblock/core/common/adblock_utils.h" ++#include "components/adblock/core/common/regex_filter_pattern.h" ++#include "re2/re2.h" ++#include "re2/stringpiece.h" ++#include "third_party/re2/src/re2/re2.h" ++#include "unicode/utypes.h" + -+MockConversionExecutors::MockConversionExecutors() = default; -+MockConversionExecutors::~MockConversionExecutors() = default; ++namespace adblock { + -+} // namespace adblock -diff --git a/components/adblock/core/subscription/test/mock_conversion_executors.h b/components/adblock/core/subscription/test/mock_conversion_executors.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/mock_conversion_executors.h -@@ -0,0 +1,44 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++RegexMatcher::RegexMatcher() = default; ++RegexMatcher::~RegexMatcher() = default; + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_CONVERSION_EXECUTORS_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_CONVERSION_EXECUTORS_H_ ++void RegexMatcher::PreBuildRegexPatternsWithNoKeyword( ++ const flat::Subscription* index) { ++ base::ElapsedTimer timer; ++ PreBuildPatternsFrom(index->url_csp_allow()); ++ PreBuildPatternsFrom(index->url_csp_block()); ++ PreBuildPatternsFrom(index->url_document_allow()); ++ PreBuildPatternsFrom(index->url_genericblock_allow()); ++ PreBuildPatternsFrom(index->url_header_allow()); ++ PreBuildPatternsFrom(index->url_popup_allow()); ++ PreBuildPatternsFrom(index->url_popup_block()); ++ PreBuildPatternsFrom(index->url_elemhide_allow()); ++ PreBuildPatternsFrom(index->url_rewrite_allow()); ++ PreBuildPatternsFrom(index->url_rewrite_block()); ++ PreBuildPatternsFrom(index->url_subresource_allow()); ++ PreBuildPatternsFrom(index->url_subresource_block()); ++ VLOG(1) << "Added " << CacheSize() << " precompiled regular expressions in " ++ << timer.Elapsed(); ++} + -+#include "components/adblock/core/subscription/conversion_executors.h" -+#include "testing/gmock/include/gmock/gmock.h" ++void RegexMatcher::PreBuildRegexPattern(base::StringPiece regular_expression, ++ bool case_sensitive) { ++ auto re2_pattern = BuildRe2Expression(regular_expression, case_sensitive); ++ if (re2_pattern) { ++ re2_cache_[std::make_pair(regular_expression, case_sensitive)] = ++ std::move(re2_pattern); ++ } else { ++ auto icu_pattern = BuildIcuExpression(regular_expression, case_sensitive); ++ if (!icu_pattern) { ++ LOG(ERROR) << "Even ICU cannot parse this regular expression, " ++ "this should have been caught during parsing. Will " ++ "ignore this filter: " ++ << regular_expression; ++ return; ++ } ++ icu_cache_[std::make_pair(regular_expression, case_sensitive)] = ++ std::move(icu_pattern); ++ } ++} + -+namespace adblock { ++bool RegexMatcher::MatchesRegex(base::StringPiece regex_pattern, ++ const GURL& url, ++ bool case_sensitive) const { ++ const base::StringPiece input = url.spec(); ++ const auto cache_key = std::make_pair(regex_pattern, case_sensitive); + -+class MockConversionExecutors : public ConversionExecutors { -+ public: -+ MockConversionExecutors(); -+ ~MockConversionExecutors() override; -+ MOCK_METHOD(scoped_refptr, -+ ConvertCustomFilters, -+ (const std::vector& filters), -+ (override, const)); -+ MOCK_METHOD(void, -+ ConvertFilterListFile, -+ (const GURL& subscription_url, -+ const base::FilePath& path, -+ base::OnceCallback), -+ (override, const)); -+}; ++ const auto cached_re2_expression = re2_cache_.find(cache_key); ++ if (cached_re2_expression != re2_cache_.end()) { ++ return re2::RE2::PartialMatch(input.data(), *cached_re2_expression->second); ++ } + -+} // namespace adblock ++ const auto cached_icu_expression = icu_cache_.find(cache_key); ++ if (cached_icu_expression != icu_cache_.end()) { ++ const icu::UnicodeString icu_input(input.data(), input.length()); ++ UErrorCode status = U_ZERO_ERROR; ++ std::unique_ptr regex_matcher = base::WrapUnique( ++ cached_icu_expression->second->matcher(icu_input, status)); ++ bool is_match = regex_matcher->find(0, status); ++ DCHECK(U_SUCCESS(status)); ++ return is_match; ++ } ++ VLOG(1) << "Matching a non-prebuilt expression, this will be slow"; ++ return utils::RegexMatches(regex_pattern, input, case_sensitive); ++} + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_CONVERSION_EXECUTORS_H_ -diff --git a/components/adblock/core/subscription/test/mock_filtering_configuration_maintainer.cc b/components/adblock/core/subscription/test/mock_filtering_configuration_maintainer.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/mock_filtering_configuration_maintainer.cc -@@ -0,0 +1,28 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++void RegexMatcher::PreBuildPatternsFrom(const UrlFilterIndex* index) { ++ if (!index) { ++ return; ++ } ++ const auto* idx = index->LookupByKey(""); ++ if (!idx) { ++ return; ++ } ++ for (const auto* filter : *(idx->filter())) { ++ if (CacheSize() >= kMaxPrebuiltPatterns) { ++ return; ++ } ++ if (!filter->pattern()) { ++ continue; // This filter has no keyword because it has an empty pattern. ++ } ++ const base::StringPiece filter_string(filter->pattern()->c_str(), ++ filter->pattern()->size()); ++ const auto regex_string = ExtractRegexFilterFromPattern(filter_string); ++ if (!regex_string) { ++ continue; // This is not a regex filter. ++ } ++ PreBuildRegexPattern(*regex_string, filter->match_case()); ++ } ++} + -+#include "components/adblock/core/subscription/test/mock_filtering_configuration_maintainer.h" ++std::unique_ptr RegexMatcher::BuildRe2Expression( ++ base::StringPiece regular_expression, ++ bool case_sensitive) { ++ re2::RE2::Options options; ++ options.set_case_sensitive(case_sensitive); ++ options.set_never_capture(true); ++ options.set_log_errors(false); ++ options.set_encoding(re2::RE2::Options::EncodingLatin1); ++ auto prebuilt_re2 = std::make_unique( ++ re2::StringPiece(regular_expression.data(), regular_expression.size()), ++ options); ++ if (!prebuilt_re2->ok()) { ++ return nullptr; ++ } ++ return prebuilt_re2; ++} + -+namespace adblock { ++std::unique_ptr RegexMatcher::BuildIcuExpression( ++ base::StringPiece regular_expression, ++ bool case_sensitive) { ++ const icu::UnicodeString icu_pattern(regular_expression.data(), ++ regular_expression.length()); ++ UErrorCode status = U_ZERO_ERROR; ++ const auto icu_case_sensetive = case_sensitive ? 0u : UREGEX_CASE_INSENSITIVE; ++ std::unique_ptr prebuilt_pattern = base::WrapUnique( ++ icu::RegexPattern::compile(icu_pattern, icu_case_sensetive, status)); ++ if (U_FAILURE(status) || !prebuilt_pattern) { ++ return nullptr; ++ } ++ return prebuilt_pattern; ++} + -+MockFilteringConfigurationMaintainer::MockFilteringConfigurationMaintainer() = -+ default; -+MockFilteringConfigurationMaintainer::~MockFilteringConfigurationMaintainer() { -+ Destructor(); ++int RegexMatcher::CacheSize() const { ++ return re2_cache_.size() + icu_cache_.size(); +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/mock_filtering_configuration_maintainer.h b/components/adblock/core/subscription/test/mock_filtering_configuration_maintainer.h +diff --git a/components/adblock/core/subscription/regex_matcher.h b/components/adblock/core/subscription/regex_matcher.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/mock_filtering_configuration_maintainer.h -@@ -0,0 +1,45 @@ ++++ b/components/adblock/core/subscription/regex_matcher.h +@@ -0,0 +1,73 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -29395,39 +16934,67 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_FILTERING_CONFIGURATION_MAINTAINER_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_FILTERING_CONFIGURATION_MAINTAINER_H_ -+ -+#include "components/adblock/core/subscription/filtering_configuration_maintainer.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_REGEX_MATCHER_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_REGEX_MATCHER_H_ + -+#include "testing/gmock/include/gmock/gmock.h" ++#include ++#include "components/adblock/core/schema/filter_list_schema_generated.h" ++#include "third_party/icu/source/i18n/unicode/regex.h" ++#include "third_party/re2/src/re2/re2.h" ++#include "url/gurl.h" + +namespace adblock { + -+class MockFilteringConfigurationMaintainer -+ : public FilteringConfigurationMaintainer { ++class RegexMatcher { + public: -+ MockFilteringConfigurationMaintainer(); -+ ~MockFilteringConfigurationMaintainer() override; -+ MOCK_METHOD(std::vector>, -+ GetCurrentSubscriptions, -+ (), -+ (override, const)); -+ MOCK_METHOD(std::unique_ptr, -+ GetSubscriptionCollection, -+ (), -+ (override, const)); -+ MOCK_METHOD(void, Destructor, (), ()); ++ RegexMatcher(); ++ ~RegexMatcher(); ++ RegexMatcher(const RegexMatcher&) = delete; ++ RegexMatcher(RegexMatcher&&) = delete; ++ RegexMatcher& operator=(const RegexMatcher&) = delete; ++ RegexMatcher& operator=(RegexMatcher&&) = delete; ++ ++ // Max number of patterns that PreBuildRegexPatternsWithNoKeyword() will ++ // build and store in memory. If there are more regex patterns in |index|, ++ // they will not be pre-built and MatchesRegex() will build them on demand. ++ static constexpr int kMaxPrebuiltPatterns = 500; ++ ++ // Regex patterns that have no keyword attached must be matched to every URL. ++ // There are typically few of them and they are matched very often, so ++ // pre-build them. ++ void PreBuildRegexPatternsWithNoKeyword(const flat::Subscription* index); ++ void PreBuildRegexPattern(base::StringPiece regular_expression, ++ bool case_sensitive); ++ ++ bool MatchesRegex(base::StringPiece regex_pattern, ++ const GURL& url, ++ bool case_sensitive) const; ++ ++ private: ++ using UrlFilterIndex = ++ flatbuffers::Vector>; ++ void PreBuildPatternsFrom(const UrlFilterIndex* index); ++ std::unique_ptr BuildRe2Expression( ++ base::StringPiece regular_expression, ++ bool case_sensitive); ++ std::unique_ptr BuildIcuExpression( ++ base::StringPiece regular_expression, ++ bool case_sensitive); ++ int CacheSize() const; ++ ++ using CacheKey = std::tuple; ++ std::map> re2_cache_; ++ std::map> icu_cache_; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_FILTERING_CONFIGURATION_MAINTAINER_H_ -diff --git a/components/adblock/core/subscription/test/mock_installed_subscription.cc b/components/adblock/core/subscription/test/mock_installed_subscription.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_REGEX_MATCHER_H_ +diff --git a/components/adblock/core/subscription/subscription.cc b/components/adblock/core/subscription/subscription.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/mock_installed_subscription.cc -@@ -0,0 +1,26 @@ ++++ b/components/adblock/core/subscription/subscription.cc +@@ -0,0 +1,24 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -29445,21 +17012,18 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/test/mock_installed_subscription.h" ++#include "components/adblock/core/subscription/subscription.h" + +namespace adblock { + -+MockInstalledSubscription::MockInstalledSubscription() = default; -+ -+MockInstalledSubscription::~MockInstalledSubscription() = default; ++Subscription::~Subscription() = default; + +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/mock_installed_subscription.h b/components/adblock/core/subscription/test/mock_installed_subscription.h +diff --git a/components/adblock/core/subscription/subscription.h b/components/adblock/core/subscription/subscription.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/mock_installed_subscription.h -@@ -0,0 +1,102 @@ -+ ++++ b/components/adblock/core/subscription/subscription.h +@@ -0,0 +1,78 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -29477,95 +17041,72 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_INSTALLED_SUBSCRIPTION_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_INSTALLED_SUBSCRIPTION_H_ -+ -+#include "components/adblock/core/subscription/installed_subscription.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_H_ + -+#include "testing/gmock/include/gmock/gmock.h" ++#include + -+using testing::NiceMock; ++#include "base/memory/ref_counted.h" ++#include "base/time/time.h" ++#include "url/gurl.h" + +namespace adblock { + -+class MockInstalledSubscription : public NiceMock { ++// Represents a single filter list, ex. Easylist French or Acceptable Ads. ++// Read-only and thread-safe. ++class Subscription : public base::RefCountedThreadSafe { + public: -+ MockInstalledSubscription(); -+ MOCK_METHOD(GURL, GetSourceUrl, (), (override, const)); -+ MOCK_METHOD(std::string, GetTitle, (), (override, const)); -+ MOCK_METHOD(std::string, GetCurrentVersion, (), (override, const)); -+ MOCK_METHOD(InstallationState, GetInstallationState, (), (override, const)); -+ MOCK_METHOD(base::Time, GetInstallationTime, (), (override, const)); -+ MOCK_METHOD(base::TimeDelta, GetExpirationInterval, (), (override, const)); -+ MOCK_METHOD(bool, -+ HasUrlFilter, -+ (const GURL& url, -+ const std::string& document_domain, -+ ContentType type, -+ const SiteKey& sitekey, -+ FilterCategory category), -+ (override, const)); -+ MOCK_METHOD(bool, -+ HasPopupFilter, -+ (const GURL& url, -+ const std::string& document_domain, -+ const SiteKey& sitekey, -+ FilterCategory category), -+ (override, const)); -+ MOCK_METHOD(bool, -+ HasSpecialFilter, -+ (SpecialFilterType type, -+ const GURL& url, -+ const std::string& document_domain, -+ const SiteKey& sitekey), -+ (override, const)); -+ MOCK_METHOD(void, -+ FindCspFilters, -+ (const GURL& url, -+ const std::string& document_domain, -+ FilterCategory category, -+ std::set& results), -+ (override, const)); -+ MOCK_METHOD(std::set, -+ FindRewriteFilters, -+ (const GURL& url, -+ const std::string& document_domain, -+ FilterCategory category), -+ (override, const)); -+ MOCK_METHOD(void, -+ FindHeaderFilters, -+ (const GURL& url, -+ ContentType type, -+ const std::string& document_domain, -+ FilterCategory category, -+ std::set& results), -+ (override, const)); -+ MOCK_METHOD(Selectors, -+ GetElemhideSelectors, -+ (const GURL& url, bool domain_specific), -+ (override, const)); -+ MOCK_METHOD(Selectors, -+ GetElemhideEmulationSelectors, -+ (const GURL& url), -+ (override, const)); -+ MOCK_METHOD(std::vector, -+ MatchSnippets, -+ (const std::string& document_domain), -+ (override, const)); -+ MOCK_METHOD(void, MarkForPermanentRemoval, (), (override)); ++ enum class InstallationState { ++ // Subscription is installed and in use. ++ Installed, ++ // A preloaded version of this subscription is in use, a full version is ++ // likely being downloaded from the Internet. ++ Preloaded, ++ // Subscription is being downloaded and not yet in use. No preloaded ++ // substitute is available. ++ Installing, ++ // State is unknown when FilteringConfiguration is disabled. ++ Unknown, ++ }; ++ // Returns the URL of the text version of the subscription, ex. ++ // https://easylist-downloads.adblockplus.org/easylist.txt. ++ // Note that this may be different than the URL from which the subscription ++ // was downloaded. ++ virtual GURL GetSourceUrl() const = 0; ++ ++ // Returns the value of the `! Title:` field of the filter list, ex. "EasyList ++ // Germany+EasyList". This is an optional field and may be empty. ++ virtual std::string GetTitle() const = 0; ++ ++ // Returns the value of the `! Version:` field of the filter list, ex. ++ // "202108191121". This is an optional field and may be empty. ++ virtual std::string GetCurrentVersion() const = 0; ++ ++ // Returns whether this subscription is installed and in use, or whether it's ++ // still being downloaded. ++ virtual InstallationState GetInstallationState() const = 0; ++ ++ // Returns the time the subscription was installed or last updated. ++ // Only valid when GetInstallationState() returns Installed, otherwise zero. ++ virtual base::Time GetInstallationTime() const = 0; ++ ++ // Returns amount of time until subscription expires. ++ // Typically, update checks are performed once per expiration interval. ++ virtual base::TimeDelta GetExpirationInterval() const = 0; + + protected: -+ ~MockInstalledSubscription() override; ++ friend class base::RefCountedThreadSafe; ++ virtual ~Subscription(); +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_INSTALLED_SUBSCRIPTION_H_ -diff --git a/components/adblock/core/subscription/test/mock_subscription.cc b/components/adblock/core/subscription/test/mock_subscription.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_H_ +diff --git a/components/adblock/core/subscription/subscription_collection.h b/components/adblock/core/subscription/subscription_collection.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/mock_subscription.cc -@@ -0,0 +1,36 @@ ++++ b/components/adblock/core/subscription/subscription_collection.h +@@ -0,0 +1,98 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -29583,31 +17124,92 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/test/mock_subscription.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_H_ ++ ++#include ++#include ++ ++#include "absl/types/optional.h" ++#include "base/containers/span.h" ++#include "base/strings/string_piece.h" ++#include "base/values.h" ++#include "components/adblock/core/common/content_type.h" ++#include "components/adblock/core/common/header_filter_data.h" ++#include "components/adblock/core/common/sitekey.h" ++#include "components/adblock/core/subscription/installed_subscription.h" ++#include "url/gurl.h" + +namespace adblock { + -+MockSubscription::MockSubscription() = default; ++// Represents a collection of all currently active Subscriptions and allows ++// bulk queries to be made towards all of them. ++// Represents a snapshot of a state of the browser. ++// Cheap to create and copy, non-mutable and thread-safe. ++class SubscriptionCollection { ++ public: ++ virtual ~SubscriptionCollection() = default; ++ ++ // Name of the FilteringConfiguration this collection represents ++ virtual const std::string& GetFilteringConfigurationName() const = 0; ++ ++ virtual absl::optional FindBySubresourceFilter( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const SiteKey& sitekey, ++ FilterCategory category) const = 0; ++ virtual absl::optional FindByPopupFilter( ++ const GURL& popup_url, ++ const std::vector& frame_hierarchy, ++ const SiteKey& sitekey, ++ FilterCategory category) const = 0; ++ virtual absl::optional FindByAllowFilter( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const SiteKey& sitekey) const = 0; ++ virtual absl::optional FindBySpecialFilter( ++ SpecialFilterType filter_type, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ const SiteKey& sitekey) const = 0; + -+MockSubscription::~MockSubscription() = default; ++ virtual std::vector GetElementHideSelectors( ++ const GURL& frame_url, ++ const std::vector& frame_hierarchy, ++ const SiteKey& sitekey) const = 0; ++ virtual std::vector GetElementHideEmulationSelectors( ++ const GURL& frame_url) const = 0; + -+scoped_refptr MakeMockSubscription( -+ GURL url, -+ Subscription::InstallationState state) { -+ auto subscription = base::MakeRefCounted(); -+ ON_CALL(*subscription, GetSourceUrl()).WillByDefault(testing::Return(url)); -+ ON_CALL(*subscription, GetInstallationState()) -+ .WillByDefault(testing::Return(state)); -+ return subscription; -+} ++ virtual base::Value::List GenerateSnippets( ++ const GURL& frame_url, ++ const std::vector& frame_hierarchy) const = 0; ++ ++ virtual std::set GetCspInjections( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy) const = 0; ++ ++ virtual std::set GetRewriteFilters( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ FilterCategory category) const = 0; ++ ++ virtual std::set GetHeaderFilters( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ FilterCategory category) const = 0; ++}; + +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/mock_subscription.h b/components/adblock/core/subscription/test/mock_subscription.h ++ ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_H_ +diff --git a/components/adblock/core/subscription/subscription_collection_impl.cc b/components/adblock/core/subscription/subscription_collection_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/mock_subscription.h -@@ -0,0 +1,51 @@ -+ ++++ b/components/adblock/core/subscription/subscription_collection_impl.cc +@@ -0,0 +1,353 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -29625,44 +17227,347 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_H_ ++#include "components/adblock/core/subscription/subscription_collection_impl.h" + -+#include "testing/gmock/include/gmock/gmock.h" ++#include ++#include ++#include ++#include + -+#include "components/adblock/core/subscription/subscription.h" ++#include "base/ranges/algorithm.h" ++#include "components/adblock/core/common/adblock_utils.h" ++ ++namespace adblock { ++namespace { ++ ++std::string DocumentDomain(const GURL& request_url, ++ const std::vector& frame_hierarchy) { ++ return frame_hierarchy.empty() ? request_url.host() ++ : frame_hierarchy[0].host(); ++} ++ ++std::vector ReduceSelectors( ++ InstalledSubscription::Selectors& combined_selectors) { ++ // Populate result with blocking selectors. ++ std::vector final_selectors = ++ std::move(combined_selectors.elemhide_selectors); ++ // Remove exceptions. ++ final_selectors.erase( ++ std::remove_if( ++ final_selectors.begin(), final_selectors.end(), ++ [&](const auto& selector) { ++ return std::find(combined_selectors.elemhide_exceptions.begin(), ++ combined_selectors.elemhide_exceptions.end(), ++ selector) != ++ combined_selectors.elemhide_exceptions.end(); ++ }), ++ final_selectors.end()); ++ return final_selectors; ++} ++ ++bool SubscriptionContainsSpecialFilter( ++ const scoped_refptr subscription, ++ SpecialFilterType filter_type, ++ const std::vector& frame_hierarchy, ++ const SiteKey& sitekey) { ++ for (auto it = frame_hierarchy.begin(); it < frame_hierarchy.end(); ++it) { ++ const GURL& current_url = *it; ++ const std::string& current_domain = std::next(it) != frame_hierarchy.end() ++ ? std::next(it)->host() ++ : current_url.host(); ++ if (subscription->HasSpecialFilter(filter_type, current_url, current_domain, ++ sitekey)) { ++ return true; ++ } ++ } ++ return false; ++} ++ ++bool HasAllowFilter( ++ const scoped_refptr subscription, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const SiteKey& sitekey) { ++ if (subscription->HasUrlFilter( ++ request_url, DocumentDomain(request_url, frame_hierarchy), ++ content_type, sitekey, FilterCategory::Allowing)) { ++ return true; ++ } ++ if (SubscriptionContainsSpecialFilter(subscription, ++ SpecialFilterType::Document, ++ frame_hierarchy, sitekey)) { ++ return true; ++ } ++ return false; ++} ++ ++bool HasSpecialFilter( ++ const scoped_refptr subscription, ++ SpecialFilterType filter_type, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ const SiteKey& sitekey) { ++ if (subscription->HasSpecialFilter( ++ filter_type, request_url, ++ DocumentDomain(request_url, frame_hierarchy), sitekey)) { ++ return true; ++ } ++ return SubscriptionContainsSpecialFilter(subscription, filter_type, ++ frame_hierarchy, sitekey); ++} ++ ++} // namespace ++ ++SubscriptionCollectionImpl::SubscriptionCollectionImpl( ++ std::vector> current_state, ++ const std::string& configuration_name) ++ : subscriptions_(std::move(current_state)), ++ configuration_name_(configuration_name) {} ++ ++SubscriptionCollectionImpl::~SubscriptionCollectionImpl() = default; ++SubscriptionCollectionImpl::SubscriptionCollectionImpl( ++ const SubscriptionCollectionImpl&) = default; ++SubscriptionCollectionImpl::SubscriptionCollectionImpl( ++ SubscriptionCollectionImpl&&) = default; ++SubscriptionCollectionImpl& SubscriptionCollectionImpl::operator=( ++ const SubscriptionCollectionImpl&) = default; ++SubscriptionCollectionImpl& SubscriptionCollectionImpl::operator=( ++ SubscriptionCollectionImpl&&) = default; ++ ++const std::string& SubscriptionCollectionImpl::GetFilteringConfigurationName() ++ const { ++ return configuration_name_; ++} ++ ++absl::optional SubscriptionCollectionImpl::FindBySubresourceFilter( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const SiteKey& sitekey, ++ FilterCategory category) const { ++ const auto subscription = std::find_if( ++ subscriptions_.begin(), subscriptions_.end(), ++ [&](const auto& subscription) { ++ return subscription->HasUrlFilter( ++ request_url, DocumentDomain(request_url, frame_hierarchy), ++ content_type, sitekey, category); ++ }); ++ if (subscription != subscriptions_.end()) { ++ return (*subscription)->GetSourceUrl(); ++ } ++ return absl::nullopt; ++} ++ ++absl::optional SubscriptionCollectionImpl::FindByPopupFilter( ++ const GURL& popup_url, ++ const std::vector& frame_hierarchy, ++ const SiteKey& sitekey, ++ FilterCategory category) const { ++ const auto subscription = ++ std::find_if(subscriptions_.begin(), subscriptions_.end(), ++ [&](const auto& subscription) { ++ return subscription->HasPopupFilter( ++ popup_url, DocumentDomain(popup_url, frame_hierarchy), ++ sitekey, category); ++ }); ++ if (subscription != subscriptions_.end()) { ++ return (*subscription)->GetSourceUrl(); ++ } ++ return absl::nullopt; ++} ++ ++absl::optional SubscriptionCollectionImpl::FindByAllowFilter( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const SiteKey& sitekey) const { ++ for (const auto& subscription : subscriptions_) { ++ if (HasAllowFilter(subscription, request_url, frame_hierarchy, content_type, ++ sitekey)) { ++ return (*subscription).GetSourceUrl(); ++ } ++ } ++ return absl::nullopt; ++} ++ ++absl::optional SubscriptionCollectionImpl::FindBySpecialFilter( ++ SpecialFilterType filter_type, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ const SiteKey& sitekey) const { ++ for (const auto& subscription : subscriptions_) { ++ if (HasSpecialFilter(subscription, filter_type, request_url, ++ frame_hierarchy, sitekey)) { ++ return (*subscription).GetSourceUrl(); ++ } ++ } ++ return absl::nullopt; ++} ++ ++std::vector ++SubscriptionCollectionImpl::GetElementHideSelectors( ++ const GURL& frame_url, ++ const std::vector& frame_hierarchy, ++ const SiteKey& sitekey) const { ++ const bool domain_specific = !!FindBySpecialFilter( ++ SpecialFilterType::Generichide, frame_url, frame_hierarchy, sitekey); ++ ++ InstalledSubscription::Selectors combined_selectors; ++ for (const auto& subscription : subscriptions_) { ++ auto selectors = ++ subscription->GetElemhideSelectors(frame_url, domain_specific); ++ std::move(selectors.elemhide_selectors.begin(), ++ selectors.elemhide_selectors.end(), ++ std::back_inserter(combined_selectors.elemhide_selectors)); ++ std::move(selectors.elemhide_exceptions.begin(), ++ selectors.elemhide_exceptions.end(), ++ std::back_inserter(combined_selectors.elemhide_exceptions)); ++ } ++ return ReduceSelectors(combined_selectors); ++} ++ ++std::vector ++SubscriptionCollectionImpl::GetElementHideEmulationSelectors( ++ const GURL& frame_url) const { ++ InstalledSubscription::Selectors combined_selectors; ++ for (const auto& subscription : subscriptions_) { ++ auto selectors = subscription->GetElemhideEmulationSelectors(frame_url); ++ std::move(selectors.elemhide_selectors.begin(), ++ selectors.elemhide_selectors.end(), ++ std::back_inserter(combined_selectors.elemhide_selectors)); ++ std::move(selectors.elemhide_exceptions.begin(), ++ selectors.elemhide_exceptions.end(), ++ std::back_inserter(combined_selectors.elemhide_exceptions)); ++ } ++ return ReduceSelectors(combined_selectors); ++} ++ ++base::Value::List SubscriptionCollectionImpl::GenerateSnippets( ++ const GURL& frame_url, ++ const std::vector& frame_hierarchy) const { ++ base::Value::List snippets; ++ auto document_domain = DocumentDomain(frame_url, frame_hierarchy); ++ ++ for (const auto& subscription : subscriptions_) { ++ auto matched = subscription->MatchSnippets(document_domain); ++ for (const auto& snippet : matched) { ++ base::Value::List call; ++ call.Append(base::Value(snippet.command)); ++ for (const auto& arg : snippet.arguments) { ++ call.Append(base::Value(arg)); ++ } ++ snippets.Append(std::move(call)); ++ } ++ } ++ ++ return snippets; ++} ++ ++std::set SubscriptionCollectionImpl::GetCspInjections( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy) const { ++ std::set blocking_filters{}; ++ std::set allowing_filters{}; ++ for (const auto& subscription : subscriptions_) { ++ subscription->FindCspFilters(request_url, ++ DocumentDomain(request_url, frame_hierarchy), ++ FilterCategory::Blocking, blocking_filters); ++ } ++ if (blocking_filters.empty()) { ++ return {}; ++ } ++ ++ // If blocking filters found, check if can be overruled by allowing filters. ++ for (const auto& subscription : subscriptions_) { ++ // There may exist an allowing rule for this request and its immediate ++ // parent frame. We also check for document-wide allowing filters. ++ if (HasSpecialFilter(subscription, SpecialFilterType::Document, request_url, ++ frame_hierarchy, SiteKey())) { ++ return {}; ++ } ++ subscription->FindCspFilters(request_url, ++ DocumentDomain(request_url, frame_hierarchy), ++ FilterCategory::Allowing, allowing_filters); ++ } ++ ++ // Remove overruled filters. ++ for (const auto& a_f : allowing_filters) { ++ if (a_f.empty()) { ++ return {}; ++ } ++ blocking_filters.erase(a_f); ++ } ++ if (blocking_filters.empty()) { ++ return {}; ++ } + -+using testing::NiceMock; ++ // Last chance to avoid blocking: maybe there is a Genericblock filter and ++ // we should re-search for domain-specific filters only? ++ if (base::ranges::any_of(subscriptions_, [&](const auto& sub) { ++ return HasSpecialFilter(sub, SpecialFilterType::Genericblock, ++ request_url, frame_hierarchy, SiteKey()); ++ })) { ++ // This is a relatively rare case - we should have searched for ++ // domain-specific filters only. ++ std::set domain_specific_blocking{}; ++ for (const auto& subscription : subscriptions_) { ++ subscription->FindCspFilters( ++ request_url, DocumentDomain(request_url, frame_hierarchy), ++ FilterCategory::DomainSpecificBlocking, domain_specific_blocking); ++ // There is a domain-specific blocking filter. No point in ++ // searching for a domain-specific allowing filter, since the ++ // previous search for non-specific allowing filters would have found ++ // it. ++ } ++ if (!domain_specific_blocking.empty()) { ++ for (const auto& a_f : allowing_filters) { ++ if (a_f.empty()) { ++ return {}; ++ } ++ domain_specific_blocking.erase(a_f); ++ } ++ } + -+namespace adblock { ++ return domain_specific_blocking; ++ } + -+class MockSubscription : public NiceMock { -+ public: -+ MockSubscription(); -+ MOCK_METHOD(GURL, GetSourceUrl, (), (override, const)); -+ MOCK_METHOD(std::string, GetTitle, (), (override, const)); -+ MOCK_METHOD(std::string, GetCurrentVersion, (), (override, const)); -+ MOCK_METHOD(InstallationState, GetInstallationState, (), (override, const)); -+ MOCK_METHOD(base::Time, GetInstallationTime, (), (override, const)); -+ MOCK_METHOD(base::TimeDelta, GetExpirationInterval, (), (override, const)); ++ return blocking_filters; ++} + -+ protected: -+ ~MockSubscription() override; -+}; ++std::set SubscriptionCollectionImpl::GetRewriteFilters( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ FilterCategory category) const { ++ std::set result; ++ for (const auto& subscription : subscriptions_) { ++ const auto filters = subscription->FindRewriteFilters( ++ request_url, DocumentDomain(request_url, frame_hierarchy), category); ++ result.insert(filters.begin(), filters.end()); ++ } ++ return result; ++} + -+scoped_refptr MakeMockSubscription( -+ GURL url, -+ Subscription::InstallationState state = -+ Subscription::InstallationState::Installed); ++std::set SubscriptionCollectionImpl::GetHeaderFilters( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ FilterCategory category) const { ++ std::set filters{}; ++ for (const auto& subscription : subscriptions_) { ++ subscription->FindHeaderFilters( ++ request_url, content_type, DocumentDomain(request_url, frame_hierarchy), ++ category, filters); ++ } ++ return filters; ++} + +} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_H_ -diff --git a/components/adblock/core/subscription/test/mock_subscription_collection.cc b/components/adblock/core/subscription/test/mock_subscription_collection.cc +diff --git a/components/adblock/core/subscription/subscription_collection_impl.h b/components/adblock/core/subscription/subscription_collection_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/mock_subscription_collection.cc -@@ -0,0 +1,26 @@ ++++ b/components/adblock/core/subscription/subscription_collection_impl.h +@@ -0,0 +1,97 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -29680,210 +17585,91 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/test/mock_subscription_collection.h" -+ -+namespace adblock { -+ -+MockSubscriptionCollection::MockSubscriptionCollection() = default; -+ -+MockSubscriptionCollection::~MockSubscriptionCollection() = default; -+ -+} // namespace adblock -diff --git a/components/adblock/core/subscription/test/mock_subscription_collection.h b/components/adblock/core/subscription/test/mock_subscription_collection.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/mock_subscription_collection.h -@@ -0,0 +1,102 @@ -+ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_IMPL_H_ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_COLLECTION_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_COLLECTION_H_ ++#include + ++#include "base/containers/span.h" ++#include "base/memory/scoped_refptr.h" +#include "components/adblock/core/subscription/subscription_collection.h" + -+#include "testing/gmock/include/gmock/gmock.h" -+ -+using testing::NiceMock; -+ +namespace adblock { + -+class MockSubscriptionCollection : public NiceMock { ++class SubscriptionCollectionImpl final : public SubscriptionCollection { + public: -+ MockSubscriptionCollection(); -+ ~MockSubscriptionCollection() override; -+ MOCK_METHOD(const std::string&, -+ GetFilteringConfigurationName, -+ (), -+ (const, override)); -+ MOCK_METHOD(absl::optional, -+ FindBySubresourceFilter, -+ (const GURL& frame_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey, -+ FilterCategory category), -+ (const, override)); -+ MOCK_METHOD(absl::optional, -+ FindByPopupFilter, -+ (const GURL& popup_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey, -+ FilterCategory category), -+ (const, override)); -+ MOCK_METHOD(absl::optional, -+ FindByAllowFilter, -+ (const GURL& frame_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ const SiteKey& sitekey), -+ (const, override)); -+ MOCK_METHOD(absl::optional, -+ FindBySpecialFilter, -+ (SpecialFilterType filter_type, -+ const GURL& frame_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey), -+ (const, override)); -+ MOCK_METHOD(std::vector, -+ GetElementHideSelectors, -+ (const GURL& frame_url, -+ const std::vector& frame_hierarchy, -+ const SiteKey& sitekey), -+ (const, override)); -+ MOCK_METHOD(std::vector, -+ GetElementHideEmulationSelectors, -+ (const GURL& frame_url), -+ (const, override)); -+ MOCK_METHOD(base::Value::List, -+ GenerateSnippets, -+ (const GURL& frame_url, const std::vector& frame_hierarchy), -+ (const, override)); -+ MOCK_METHOD(std::set, -+ GetCspInjections, -+ (const GURL& frame_url, const std::vector& frame_hierarchy), -+ (const, override)); -+ MOCK_METHOD(std::set, -+ GetRewriteFilters, -+ (const GURL& frame_url, -+ const std::vector& frame_hierarchy, -+ FilterCategory blocking_filter_category), -+ (const, override)); -+ MOCK_METHOD(std::set, -+ GetHeaderFilters, -+ (const GURL& frame_url, -+ const std::vector& frame_hierarchy, -+ ContentType content_type, -+ FilterCategory category), -+ (const, override)); -+}; -+ -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_COLLECTION_H_ -diff --git a/components/adblock/core/subscription/test/mock_subscription_downloader.cc b/components/adblock/core/subscription/test/mock_subscription_downloader.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/mock_subscription_downloader.cc -@@ -0,0 +1,25 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/subscription/test/mock_subscription_downloader.h" -+ -+namespace adblock { ++ explicit SubscriptionCollectionImpl( ++ std::vector> current_state, ++ const std::string& configuration_name); ++ ~SubscriptionCollectionImpl() final; ++ SubscriptionCollectionImpl(const SubscriptionCollectionImpl&); ++ SubscriptionCollectionImpl(SubscriptionCollectionImpl&&); ++ SubscriptionCollectionImpl& operator=(const SubscriptionCollectionImpl&); ++ SubscriptionCollectionImpl& operator=(SubscriptionCollectionImpl&&); + -+MockSubscriptionDownloader::MockSubscriptionDownloader() = default; -+MockSubscriptionDownloader::~MockSubscriptionDownloader() = default; ++ const std::string& GetFilteringConfigurationName() const final; + -+} // namespace adblock -diff --git a/components/adblock/core/subscription/test/mock_subscription_downloader.h b/components/adblock/core/subscription/test/mock_subscription_downloader.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/mock_subscription_downloader.h -@@ -0,0 +1,48 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++ absl::optional FindBySubresourceFilter( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const SiteKey& sitekey, ++ FilterCategory category) const final; + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_DOWNLOADER_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_DOWNLOADER_H_ ++ absl::optional FindByPopupFilter( ++ const GURL& popup_url, ++ const std::vector& frame_hierarchy, ++ const SiteKey& sitekey, ++ FilterCategory category) const final; + -+#include "components/adblock/core/subscription/subscription_downloader.h" ++ absl::optional FindByAllowFilter( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ const SiteKey& sitekey) const final; + -+#include "testing/gmock/include/gmock/gmock.h" ++ absl::optional FindBySpecialFilter( ++ SpecialFilterType filter_type, ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ const SiteKey& sitekey) const final; + -+using testing::NiceMock; ++ std::vector GetElementHideSelectors( ++ const GURL& frame_url, ++ const std::vector& frame_hierarchy, ++ const SiteKey& sitekey) const final; ++ std::vector GetElementHideEmulationSelectors( ++ const GURL& frame_url) const final; ++ base::Value::List GenerateSnippets( ++ const GURL& frame_url, ++ const std::vector& frame_hierarchy) const final; ++ std::set GetCspInjections( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy) const final; ++ std::set GetRewriteFilters( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ FilterCategory category) const final; + -+namespace adblock { ++ std::set GetHeaderFilters( ++ const GURL& request_url, ++ const std::vector& frame_hierarchy, ++ ContentType content_type, ++ FilterCategory category) const final; + -+class MockSubscriptionDownloader : public NiceMock { -+ public: -+ MockSubscriptionDownloader(); -+ ~MockSubscriptionDownloader() override; -+ MOCK_METHOD(void, -+ StartDownload, -+ (const GURL& subscription_url, -+ RetryPolicy retry_policy, -+ DownloadCompletedCallback on_finished), -+ (override)); -+ MOCK_METHOD(void, -+ DoHeadRequest, -+ (const GURL& subscription_url, HeadRequestCallback on_finished), -+ (override)); -+ MOCK_METHOD(void, CancelDownload, (const GURL& subscription_url), (override)); ++ private: ++ std::vector> subscriptions_; ++ std::string configuration_name_; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_DOWNLOADER_H_ -diff --git a/components/adblock/core/subscription/test/mock_subscription_persistent_metadata.cc b/components/adblock/core/subscription/test/mock_subscription_persistent_metadata.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_COLLECTION_IMPL_H_ +diff --git a/components/adblock/core/subscription/subscription_config.cc b/components/adblock/core/subscription/subscription_config.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/mock_subscription_persistent_metadata.cc -@@ -0,0 +1,27 @@ ++++ b/components/adblock/core/subscription/subscription_config.cc +@@ -0,0 +1,338 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -29901,143 +17687,332 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/test/mock_subscription_persistent_metadata.h" ++#include "components/adblock/core/subscription/subscription_config.h" + -+namespace adblock { ++#include "components/adblock/core/common/adblock_constants.h" ++#include "components/grit/components_resources.h" + -+MockSubscriptionPersistentMetadata::MockSubscriptionPersistentMetadata() = -+ default; -+MockSubscriptionPersistentMetadata::~MockSubscriptionPersistentMetadata() = -+ default; ++namespace { ++int g_port_for_testing = 0; + -+} // namespace adblock -diff --git a/components/adblock/core/subscription/test/mock_subscription_persistent_metadata.h b/components/adblock/core/subscription/test/mock_subscription_persistent_metadata.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/mock_subscription_persistent_metadata.h -@@ -0,0 +1,76 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++std::string GetHost() { ++ GURL url("https://easylist-downloads.adblockplus.org"); ++ if (!g_port_for_testing) { ++ return url.spec(); ++ } ++ GURL::Replacements replacements; ++ const std::string port_str = base::NumberToString(g_port_for_testing); ++ replacements.SetPortStr(port_str); ++ return url.ReplaceComponents(replacements).spec(); ++} ++} // namespace + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_PERSISTENT_METADATA_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_PERSISTENT_METADATA_H_ ++namespace adblock { + -+#include "components/adblock/core/subscription/subscription_persistent_metadata.h" ++const GURL& AcceptableAdsUrl() { ++ static GURL kAcceptableAds(GetHost() + "exceptionrules.txt"); ++ return kAcceptableAds; ++} + -+#include "testing/gmock/include/gmock/gmock.h" ++const GURL& AntiCVUrl() { ++ static GURL kAntiCV(GetHost() + "abp-filters-anti-cv.txt"); ++ return kAntiCV; ++} + -+using testing::NiceMock; ++const GURL& DefaultSubscriptionUrl() { ++ static GURL kEasylistUrl(GetHost() + "easylist.txt"); ++ return kEasylistUrl; ++} + -+namespace adblock { ++KnownSubscriptionInfo::KnownSubscriptionInfo() = default; ++KnownSubscriptionInfo::~KnownSubscriptionInfo() = default; ++KnownSubscriptionInfo::KnownSubscriptionInfo(const KnownSubscriptionInfo&) = ++ default; ++KnownSubscriptionInfo::KnownSubscriptionInfo(KnownSubscriptionInfo&&) = default; ++KnownSubscriptionInfo& KnownSubscriptionInfo::operator=( ++ const KnownSubscriptionInfo&) = default; ++KnownSubscriptionInfo& KnownSubscriptionInfo::operator=( ++ KnownSubscriptionInfo&&) = default; + -+class MockSubscriptionPersistentMetadata -+ : public NiceMock { -+ public: -+ MockSubscriptionPersistentMetadata(); -+ ~MockSubscriptionPersistentMetadata() override; -+ MOCK_METHOD(void, -+ SetExpirationInterval, -+ (const GURL& subscription_url, base::TimeDelta expires_in), -+ (override)); -+ MOCK_METHOD(void, -+ SetVersion, -+ (const GURL& subscription_url, std::string version), -+ (override)); -+ MOCK_METHOD(void, -+ IncrementDownloadSuccessCount, -+ (const GURL& subscription_url), -+ (override)); -+ MOCK_METHOD(void, -+ IncrementDownloadErrorCount, -+ (const GURL& subscription_url), -+ (override)); -+ MOCK_METHOD(bool, -+ IsExpired, -+ (const GURL& subscription_url), -+ (override, const)); -+ MOCK_METHOD(base::Time, -+ GetLastInstallationTime, -+ (const GURL& subscription_url), -+ (override, const)); -+ MOCK_METHOD(std::string, -+ GetVersion, -+ (const GURL& subscription_url), -+ (override, const)); -+ MOCK_METHOD(int, -+ GetDownloadSuccessCount, -+ (const GURL& subscription_url), -+ (override, const)); -+ MOCK_METHOD(int, -+ GetDownloadErrorCount, -+ (const GURL& subscription_url), -+ (override, const)); -+ -+ MOCK_METHOD(void, RemoveMetadata, (const GURL& subscription_url), (override)); -+}; ++KnownSubscriptionInfo::KnownSubscriptionInfo( ++ GURL url_param, ++ std::string title_param, ++ std::vector languages_param, ++ SubscriptionUiVisibility ui_visibility_param, ++ SubscriptionFirstRunBehavior first_run_param, ++ SubscriptionPrivilegedFilterStatus privileged_status_param) ++ : url(url_param), ++ title(title_param), ++ languages(languages_param), ++ ui_visibility(ui_visibility_param), ++ first_run(first_run_param), ++ privileged_status(privileged_status_param) {} + -+} // namespace adblock ++const std::vector& config::GetKnownSubscriptions() { ++ // The current list of subscriptions can be downloaded from: ++ // https://gitlab.com/eyeo/filterlists/subscriptionlist/-/archive/master/subscriptionlist-master.tar.gz ++ // The archive contains files with subscription definitions. The ones we're ++ // interested in are ones that declare a [recommendation] keyword in either ++ // the "list" or "variant" key. ++ // Here's a script that parses the archive into a subscriptions.json: ++ // https://gitlab.com/eyeo/adblockplus/abc/adblockpluscore/-/blob/next/build/updateSubscriptions.js ++ // The list isn't updated very often. If it starts to become a burden to ++ // align the C++ representation, better to update it manually because it also ++ // contains visibility and first run behavior options. ++ static std::vector recommendations = { ++ {GURL(GetHost() + "abpindo+easylist.txt"), ++ "ABPindo+EasyList", ++ {"id", "ms"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "abpvn+easylist.txt"), ++ "ABPVN List+EasyList", ++ {"vi"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "bulgarian_list+easylist.txt"), ++ "Bulgarian list+EasyList", ++ {"bg"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "dandelion_sprouts_nordic_filters+easylist.txt"), ++ "Dandelion Sprout's Nordic Filters+EasyList", ++ {"no", "nb", "nn", "da", "is", "fo", "kl"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {DefaultSubscriptionUrl(), ++ "EasyList", ++ {"en"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "easylistchina+easylist.txt"), ++ "EasyList China+EasyList", ++ {"zh"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "easylistczechslovak+easylist.txt"), ++ "EasyList Czech and Slovak+EasyList", ++ {"cs", "sk"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "easylistdutch+easylist.txt"), ++ "EasyList Dutch+EasyList", ++ {"nl"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "easylistgermany+easylist.txt"), ++ "EasyList Germany+EasyList", ++ {"de"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "israellist+easylist.txt"), ++ "EasyList Hebrew+EasyList", ++ {"he"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "easylistitaly+easylist.txt"), ++ "EasyList Italy+EasyList", ++ {"it"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "easylistlithuania+easylist.txt"), ++ "EasyList Lithuania+EasyList", ++ {"lt"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "easylistpolish+easylist.txt"), ++ "EasyList Polish+EasyList", ++ {"pl"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "easylistportuguese+easylist.txt"), ++ "EasyList Portuguese+EasyList", ++ {"pt"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "easylistspanish+easylist.txt"), ++ "EasyList Spanish+EasyList", ++ {"es"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "global-filters+easylist.txt"), ++ "Global Filters+EasyList", ++ {"th", "el", "sl", "hr", "sr", "bs"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "indianlist+easylist.txt"), ++ "IndianList+EasyList", ++ {"bn", "gu", "hi", "pa", "as", "mr", "ml", "te", "kn", "or", "ne", "si"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "japanese-filters+easylist.txt"), ++ "Japanese Filters+EasyList", ++ {"ja"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "koreanlist+easylist.txt"), ++ "KoreanList+EasyList", ++ {"ko"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "latvianlist+easylist.txt"), ++ "Latvian List+EasyList", ++ {"lv"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "liste_ar+liste_fr+easylist.txt"), ++ "Liste AR+Liste FR+EasyList", ++ {"ar"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "liste_fr+easylist.txt"), ++ "Liste FR+EasyList", ++ {"fr"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "rolist+easylist.txt"), ++ "ROList+EasyList", ++ {"ro"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "ruadlist+easylist.txt"), ++ "RuAdList+EasyList", ++ {"ru", "uk", "uz", "kk"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "turkish-filters+easylist.txt"), ++ "Turkish Filters+EasyList", ++ {"tr"}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {AcceptableAdsUrl(), ++ "Acceptable Ads", ++ {}, ++ SubscriptionUiVisibility::Invisible, ++ SubscriptionFirstRunBehavior::Subscribe, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {AntiCVUrl(), ++ "ABP filters", ++ {}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::Subscribe, ++ SubscriptionPrivilegedFilterStatus::Allowed}, ++ {GURL(GetHost() + "i_dont_care_about_cookies.txt"), ++ "I don't care about cookies", ++ {}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::Ignore, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "" ++ "fanboy-notifications.txt"), ++ "Fanboy's Notifications Blocking List", ++ {}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::Ignore, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "easyprivacy.txt"), ++ "EasyPrivacy", ++ {}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::Ignore, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {GURL(GetHost() + "fanboy-social.txt"), ++ "Fanboy's Social Blocking List", ++ {}, ++ SubscriptionUiVisibility::Visible, ++ SubscriptionFirstRunBehavior::Ignore, ++ SubscriptionPrivilegedFilterStatus::Forbidden}, ++ {CustomFiltersUrl(), ++ "User filters", ++ {}, ++ SubscriptionUiVisibility::Invisible, ++ SubscriptionFirstRunBehavior::Ignore, ++ SubscriptionPrivilegedFilterStatus::Allowed}, ++ {TestPagesSubscriptionUrl(), ++ "ABP Test filters", ++ {}, ++ SubscriptionUiVisibility::Invisible, ++ SubscriptionFirstRunBehavior::Ignore, ++ SubscriptionPrivilegedFilterStatus::Allowed} + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_PERSISTENT_METADATA_H_ -diff --git a/components/adblock/core/subscription/test/mock_subscription_service.cc b/components/adblock/core/subscription/test/mock_subscription_service.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/mock_subscription_service.cc -@@ -0,0 +1,36 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++ // You can customize subscriptions available on first run and in settings ++ // here. Items are displayed in settings in order declared here. See ++ // components/adblock/docs/integration-how-to.md, section 'How to change ++ // the default filter lists?'. For example: ++ ++ // clang-format off ++ /* ++ {"https://domain.com/subscription.txt", // URL ++ "My Custom Filters", // Display name for settings ++ {}, // Supported languages list, considered for ++ // SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch ++ SubscriptionUiVisibility::Visible, // Should the app show a subscription in the settings ++ SubscriptionFirstRunBehavior::Subscribe, // Should the app subscribe on first run ++ SubscriptionPrivilegedFilterStatus::Forbidden // Allow or forbid snippets and header filters ++ }, ++ */ ++ // clang-format on ++ ++ }; + -+#include "components/adblock/core/subscription/test/mock_subscription_service.h" -+#include "gtest/gtest.h" ++ return recommendations; ++} + -+namespace adblock { ++bool config::AllowPrivilegedFilters(const GURL& url) { ++ for (const auto& cur : GetKnownSubscriptions()) { ++ if (cur.url == url) { ++ return cur.privileged_status == ++ SubscriptionPrivilegedFilterStatus::Allowed; ++ } ++ } + -+MockSubscriptionService::MockSubscriptionService() = default; -+MockSubscriptionService::~MockSubscriptionService() = default; ++ return false; ++} + -+void MockSubscriptionService::AddObserver(SubscriptionObserver* observer) { -+ ASSERT_FALSE(observer_) << "Adding observer twice"; -+ observer_ = observer; ++const std::vector& ++config::GetPreloadedSubscriptionConfiguration() { ++ static const std::vector preloaded_subscriptions = ++ {{"*easylist.txt", IDR_ADBLOCK_FLATBUFFER_EASYLIST}, ++ {"*exceptionrules.txt", IDR_ADBLOCK_FLATBUFFER_EXCEPTIONRULES}, ++ {"*abp-filters-anti-cv.txt", IDR_ADBLOCK_FLATBUFFER_ANTICV}}; ++ return preloaded_subscriptions; +} + -+void MockSubscriptionService::RemoveObserver(SubscriptionObserver* observer) { -+ ASSERT_EQ(observer_, observer) << "Removing unknown observer"; -+ observer_ = nullptr; ++void SetFilterListServerPortForTesting(int port_for_testing) { ++ g_port_for_testing = port_for_testing; +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/mock_subscription_service.h b/components/adblock/core/subscription/test/mock_subscription_service.h +diff --git a/components/adblock/core/subscription/subscription_config.h b/components/adblock/core/subscription/subscription_config.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/mock_subscription_service.h -@@ -0,0 +1,75 @@ ++++ b/components/adblock/core/subscription/subscription_config.h +@@ -0,0 +1,120 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -30055,142 +18030,114 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_SERVICE_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_SERVICE_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_CONFIG_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_CONFIG_H_ + +#include + -+#include "base/memory/raw_ptr.h" -+#include "components/adblock/core/configuration/filtering_configuration.h" -+#include "components/adblock/core/configuration/test/fake_filtering_configuration.h" -+#include "components/adblock/core/subscription/subscription_service.h" ++#include "url/gurl.h" + -+#include "testing/gmock/include/gmock/gmock.h" ++namespace adblock { + -+using testing::NiceMock; ++const GURL& AcceptableAdsUrl(); ++const GURL& AntiCVUrl(); ++const GURL& DefaultSubscriptionUrl(); + -+namespace adblock { ++// Sets the port used by the embedded http server required for browser tests. ++// Must be called before the first call to GetKnownSubscriptions(). ++void SetFilterListServerPortForTesting(int port_for_testing); + -+class MockSubscriptionService : public NiceMock { -+ public: -+ MockSubscriptionService(); -+ ~MockSubscriptionService() override; -+ MOCK_METHOD(std::vector>, -+ GetCurrentSubscriptions, -+ (FilteringConfiguration*), -+ (override, const)); -+ MOCK_METHOD(Snapshot, GetCurrentSnapshot, (), (override, const)); -+ MOCK_METHOD(void, -+ InstallFilteringConfiguration, -+ (std::unique_ptr configuration), -+ (override)); -+ MOCK_METHOD(void, -+ UninstallFilteringConfiguration, -+ (const std::string& configuration_name), -+ (override)); -+ MOCK_METHOD(std::vector, -+ GetInstalledFilteringConfigurations, -+ (), -+ (override)); -+ MOCK_METHOD(FilteringConfiguration*, -+ GetAdblockFilteringConfiguration, -+ (), -+ (override, const)); -+ void AddObserver(SubscriptionObserver* observer) final; -+ void RemoveObserver(SubscriptionObserver* observer) final; -+ -+ void WillRequireFiltering(bool filtering_required) { -+ filtering_configuration_.is_enabled = filtering_required; -+ EXPECT_CALL(*this, GetInstalledFilteringConfigurations()) -+ .WillRepeatedly(testing::Return( -+ std::vector{&filtering_configuration_})); -+ } ++enum class SubscriptionUiVisibility { Visible, Invisible }; + -+ raw_ptr observer_ = nullptr; -+ FakeFilteringConfiguration filtering_configuration_; ++enum class SubscriptionFirstRunBehavior { ++ // Download and install as soon as possible. ++ Subscribe, ++ // Download and install as soon as possible but only if the device's region ++ // matches one of the |languages| defined in KnownSubscriptionInfo. ++ SubscribeIfLocaleMatch, ++ // Do not install automatically. ++ Ignore +}; + -+} // namespace adblock -+ -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_SERVICE_H_ -diff --git a/components/adblock/core/subscription/test/mock_subscription_updater.cc b/components/adblock/core/subscription/test/mock_subscription_updater.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/mock_subscription_updater.cc -@@ -0,0 +1,25 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++// Privileged filters include: ++// - Snippet filters ++// - Header filters ++enum class SubscriptionPrivilegedFilterStatus { Allowed, Forbidden }; + -+#include "components/adblock/core/subscription/test/mock_subscription_updater.h" ++// Description of a subscription that's known to exist in the Internet. ++// Can be used to populate a list of proposed or recommended subscriptions in ++// UI. ++struct KnownSubscriptionInfo { ++ KnownSubscriptionInfo(); ++ KnownSubscriptionInfo(GURL url, ++ std::string title, ++ std::vector languages, ++ SubscriptionUiVisibility ui_visibility, ++ SubscriptionFirstRunBehavior first_run, ++ SubscriptionPrivilegedFilterStatus privileged_status); ++ ~KnownSubscriptionInfo(); ++ KnownSubscriptionInfo(const KnownSubscriptionInfo&); ++ KnownSubscriptionInfo(KnownSubscriptionInfo&&); ++ KnownSubscriptionInfo& operator=(const KnownSubscriptionInfo&); ++ KnownSubscriptionInfo& operator=(KnownSubscriptionInfo&&); + -+namespace adblock { ++ GURL url; ++ std::string title; ++ std::vector languages; ++ SubscriptionUiVisibility ui_visibility = SubscriptionUiVisibility::Visible; ++ SubscriptionFirstRunBehavior first_run = ++ SubscriptionFirstRunBehavior::Subscribe; ++ SubscriptionPrivilegedFilterStatus privileged_status = ++ SubscriptionPrivilegedFilterStatus::Forbidden; ++}; + -+MockSubscriptionUpdater::MockSubscriptionUpdater() = default; -+MockSubscriptionUpdater::~MockSubscriptionUpdater() = default; ++// Describes an available preloaded subscription that will be used to provide ++// some level of ad-filtering while a desired subscription is being downloaded ++// from the Internet. ++// Preloaded subscriptions are bundled with the browser and stored in the ++// ResourceBundle. They might be out-of-date and have reduced quality, but they ++// allow some level of ad-filtering immediately upon first start. ++struct PreloadedSubscriptionInfo { ++ // Wildcard-aware pattern that matches subscription URL. Examples: ++ // "*easylist.txt" (will match URLs like ++ // https://easylist-downloads.adblockplus.org/easylist.txt or ++ // https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt). ++ // This preloaded subscription will be used as a substitute for a ++ // subscription with a URL that matches |url_pattern|. ++ base::StringPiece url_pattern; + -+} // namespace adblock -diff --git a/components/adblock/core/subscription/test/mock_subscription_updater.h b/components/adblock/core/subscription/test/mock_subscription_updater.h -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/mock_subscription_updater.h -@@ -0,0 +1,38 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++ // Resource ID containing the binary flatbuffer data that defines this ++ // preloaded subscription. Examples: ++ // IDR_ADBLOCK_FLATBUFFER_EASYLIST ++ int flatbuffer_resource_id; ++}; + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_UPDATER_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_UPDATER_H_ ++namespace config { + -+#include "base/functional/callback.h" -+#include "components/adblock/core/subscription/subscription_updater.h" ++// Returns the list of all known subscriptions. This list is static ++// and may change with browser updates, but not with filter list updates. ++// The list contains recommendations for all languages. ++const std::vector& GetKnownSubscriptions(); + -+#include "testing/gmock/include/gmock/gmock.h" ++// Returns whether a subscription from |url| is allowed to provide ++// privileged filters. ++bool AllowPrivilegedFilters(const GURL& url); + -+namespace adblock { ++// Returns the configuration of available preloaded subscriptions. Used by ++// PreloadedSubscriptionProvider. ++const std::vector& ++GetPreloadedSubscriptionConfiguration(); + -+class MockSubscriptionUpdater : public SubscriptionUpdater { -+ public: -+ MockSubscriptionUpdater(); -+ ~MockSubscriptionUpdater() override; -+ MOCK_METHOD(void, StartSchedule, (base::RepeatingClosure), (override)); -+ MOCK_METHOD(void, StopSchedule, (), (override)); -+}; ++} // namespace config + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_TEST_MOCK_SUBSCRIPTION_UPDATER_H_ -diff --git a/components/adblock/core/subscription/test/ongoing_subscription_request_impl_test.cc b/components/adblock/core/subscription/test/ongoing_subscription_request_impl_test.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_CONFIG_H_ +diff --git a/components/adblock/core/subscription/subscription_downloader.h b/components/adblock/core/subscription/subscription_downloader.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/ongoing_subscription_request_impl_test.cc -@@ -0,0 +1,336 @@ ++++ b/components/adblock/core/subscription/subscription_downloader.h +@@ -0,0 +1,66 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -30208,330 +18155,60 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/ongoing_subscription_request_impl.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_H_ + -+#include ++#include + -+#include "base/files/file_util.h" -+#include "base/functional/callback_helpers.h" -+#include "base/test/mock_callback.h" -+#include "base/test/task_environment.h" -+#include "net/base/mock_network_change_notifier.h" -+#include "net/base/net_errors.h" -+#include "services/network/public/cpp/resource_request.h" -+#include "services/network/public/cpp/url_loader_completion_status.h" -+#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" -+#include "services/network/public/mojom/url_response_head.mojom.h" -+#include "services/network/test/test_url_loader_factory.h" -+#include "services/network/test/test_utils.h" -+#include "testing/gtest/include/gtest/gtest.h" -+#include "third_party/googletest/src/googletest/include/gtest/gtest.h" ++#include "base/functional/callback.h" ++#include "components/adblock/core/common/flatbuffer_data.h" ++#include "url/gurl.h" + +namespace adblock { + -+class AdblockOngoingSubscriptionRequestImplTest -+ : public testing::TestWithParam { ++// Downloads filter lists from the Internet and converts them into flatbuffers. ++// See also: OngoingSubscriptionRequest for more details about allowing and ++// retrying downloads. ++class SubscriptionDownloader { + public: -+ void SetUp() final { -+ SetOnline(); -+ ongoing_request_ = std::make_unique( -+ &kRetryBackoffPolicy, test_shared_url_loader_factory_); -+ } -+ -+ base::StringPiece MethodAsString(OngoingSubscriptionRequest::Method method) { -+ return method == OngoingSubscriptionRequest::Method::GET -+ ? net::HttpRequestHeaders::kGetMethod -+ : net::HttpRequestHeaders::kHeadMethod; -+ } -+ -+ void VerifyRequestSent(OngoingSubscriptionRequest::Method method) { -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 1); -+ EXPECT_EQ(test_url_loader_factory_.GetPendingRequest(0)->request.url, kUrl); -+ EXPECT_EQ(test_url_loader_factory_.GetPendingRequest(0)->request.method, -+ MethodAsString(method)); -+ } -+ -+ void VerifyRequestSent() { VerifyRequestSent(GetParam()); } -+ -+ void SetOffline() { -+ network_change_notifier_->SetConnectionTypeAndNotifyObservers( -+ net::NetworkChangeNotifier::CONNECTION_NONE); -+ } -+ -+ void SetOnline() { -+ network_change_notifier_->SetConnectionTypeAndNotifyObservers( -+ net::NetworkChangeNotifier::CONNECTION_WIFI); -+ } ++ using DownloadCompletedCallback = ++ base::OnceCallback)>; + -+ base::test::TaskEnvironment task_environment_{ -+ base::test::TaskEnvironment::TimeSource::MOCK_TIME}; -+ std::unique_ptr -+ network_change_notifier_ = net::test::MockNetworkChangeNotifier::Create(); -+ network::TestURLLoaderFactory test_url_loader_factory_; -+ scoped_refptr -+ test_shared_url_loader_factory_{ -+ base::MakeRefCounted( -+ &test_url_loader_factory_)}; -+ const GURL kUrl{"https://url.com/filter"}; -+ const net::BackoffEntry::Policy kRetryBackoffPolicy = { -+ 0, // Number of initial errors to ignore. -+ 5000, // Initial delay in ms. -+ 2.0, // Factor by which the waiting time will be multiplied. -+ 0, // Fuzzing percentage. -+ 10000, // Maximum delay in ms. -+ -1, // Never discard the entry. -+ false, // Use initial delay. ++ // For head requests we only need the parsed version as result ++ using HeadRequestCallback = base::OnceCallback; ++ // Controls retry behavior when download or conversion failed. ++ enum class RetryPolicy { ++ // Will retry with a progressive back-off until download succeeded. ++ RetryUntilSucceeded, ++ // Will only try to download and convert the subscription once. ++ DoNotRetry, + }; -+ std::unique_ptr ongoing_request_; ++ virtual ~SubscriptionDownloader() = default; ++ // Starts downlading |subscription_url|. |on_finished| will be called with ++ // the converted flatbuffer. |retry_policy| controls failure-handling ++ // behavior. If downloading is disallowed due to current network state, it is ++ // deferred until conditions allow it. ++ virtual void StartDownload(const GURL& subscription_url, ++ RetryPolicy retry_policy, ++ DownloadCompletedCallback on_finished) = 0; ++ // Cancels ongoing downloads for matching |url|, including retry attempts or ++ // downloads deferred due to network conditions. ++ virtual void CancelDownload(const GURL& subscription_url) = 0; ++ // Triggers head request on |subscription_url|. |on_finished| will be called ++ // with the parsed date from response headers, or with the empty string if ++ // the request was not successful. ++ virtual void DoHeadRequest(const GURL& subscription_url, ++ HeadRequestCallback on_finished) = 0; +}; + -+TEST_P(AdblockOngoingSubscriptionRequestImplTest, -+ RequestDeferredUntilConnectionAvailable) { -+ SetOffline(); -+ base::MockCallback -+ response_callback; -+ ongoing_request_->Start(kUrl, GetParam(), response_callback.Get()); -+ -+ // Download did not start yet. -+ EXPECT_EQ(test_url_loader_factory_.NumPending(), 0); -+ -+ SetOnline(); -+ -+ // Request started. -+ VerifyRequestSent(); -+} -+ -+TEST_P(AdblockOngoingSubscriptionRequestImplTest, -+ RequestConnectionAvailableTriggersDownloadsOnlyAfterStart) { -+ SetOffline(); -+ base::MockCallback -+ response_callback; -+ -+ // Download did not start yet. -+ EXPECT_EQ(test_url_loader_factory_.NumPending(), 0); -+ -+ SetOnline(); -+ -+ // Download did not start yet. -+ EXPECT_EQ(test_url_loader_factory_.NumPending(), 0); -+ -+ ongoing_request_->Start(kUrl, GetParam(), response_callback.Get()); -+ -+ // Request started. -+ VerifyRequestSent(); -+} -+ -+TEST_P(AdblockOngoingSubscriptionRequestImplTest, -+ RequestCompletedSuccessfully) { -+ base::MockCallback -+ response_callback; -+ ongoing_request_->Start(kUrl, GetParam(), response_callback.Get()); -+ -+ VerifyRequestSent(); -+ -+ const std::string content = "downloaded content"; -+ -+ auto header_response = network::CreateURLResponseHead(net::HTTP_OK); -+ header_response->headers->AddHeader("Date", "Today"); -+ -+ EXPECT_CALL(response_callback, Run(testing::_, testing::_, testing::_)) -+ .WillOnce([&](const GURL, base::FilePath downloaded_file, -+ scoped_refptr headers) { -+ ASSERT_TRUE(headers); -+ EXPECT_TRUE(headers->HasHeaderValue("Date", "Today")); -+ // We expect a downloaded_file in GET mode, HEAD requests deliver -+ // only headers. -+ if (GetParam() == OngoingSubscriptionRequest::Method::GET) { -+ std::string content_in_file; -+ EXPECT_TRUE( -+ base::ReadFileToString(downloaded_file, &content_in_file)); -+ EXPECT_EQ(content_in_file, content); -+ } else { -+ EXPECT_TRUE(downloaded_file.empty()); -+ } -+ }); -+ -+ test_url_loader_factory_.SimulateResponseForPendingRequest( -+ kUrl, network::URLLoaderCompletionStatus(net::OK), -+ std::move(header_response), content); -+ task_environment_.RunUntilIdle(); -+ // No additional tasks are expected. -+ EXPECT_EQ(task_environment_.GetPendingMainThreadTaskCount(), 0u); -+} -+ -+TEST_P(AdblockOngoingSubscriptionRequestImplTest, -+ RetriesDeferredProgressively) { -+ base::MockCallback -+ response_callback; -+ ongoing_request_->Start(kUrl, GetParam(), response_callback.Get()); -+ -+ VerifyRequestSent(); -+ -+ EXPECT_CALL(response_callback, Run(testing::_, testing::_, testing::_)) -+ .WillRepeatedly([&](const GURL&, base::FilePath downloaded_file, -+ scoped_refptr headers) { -+ // The response callback triggers a Retry(), simulating that the -+ // received content was invalid. -+ ongoing_request_->Retry(); -+ }); -+ -+ test_url_loader_factory_.SimulateResponseForPendingRequest(kUrl.spec(), -+ "content"); -+ task_environment_.RunUntilIdle(); -+ // A retry attempt task has been posted. -+ EXPECT_EQ(task_environment_.GetPendingMainThreadTaskCount(), 1u); -+ // The delay matches the retry policy -+ EXPECT_EQ(task_environment_.NextMainThreadPendingTaskDelay().InMilliseconds(), -+ kRetryBackoffPolicy.initial_delay_ms); -+ -+ // Fast-forward time until the retry task is executed. -+ task_environment_.FastForwardBy( -+ task_environment_.NextMainThreadPendingTaskDelay()); -+ -+ // A retry request was sent. -+ VerifyRequestSent(); -+ // The response comes back, triggers the response_callback which, again, -+ // results in a retry. -+ test_url_loader_factory_.SimulateResponseForPendingRequest(kUrl.spec(), -+ "content"); -+ task_environment_.RunUntilIdle(); -+ -+ EXPECT_EQ(task_environment_.GetPendingMainThreadTaskCount(), 1u); -+ // The delay is now multiplied, according to backoff policy. -+ EXPECT_EQ(task_environment_.NextMainThreadPendingTaskDelay().InMilliseconds(), -+ kRetryBackoffPolicy.initial_delay_ms * -+ kRetryBackoffPolicy.multiply_factor); -+ // Fast-forward time until the retry task is executed. -+ task_environment_.FastForwardBy( -+ task_environment_.NextMainThreadPendingTaskDelay()); -+ // A retry request was sent. -+ VerifyRequestSent(); -+} -+ -+TEST_P(AdblockOngoingSubscriptionRequestImplTest, RequestCancelledDuringRetry) { -+ base::MockCallback -+ response_callback; -+ ongoing_request_->Start(kUrl, GetParam(), response_callback.Get()); -+ -+ VerifyRequestSent(); -+ -+ EXPECT_CALL(response_callback, Run(testing::_, testing::_, testing::_)) -+ .WillRepeatedly([&](const GURL&, base::FilePath downloaded_file, -+ scoped_refptr headers) { -+ ongoing_request_->Retry(); -+ }); -+ -+ test_url_loader_factory_.SimulateResponseForPendingRequest(kUrl.spec(), -+ "content"); -+ task_environment_.RunUntilIdle(); -+ // A retry attempt task has been posted. -+ EXPECT_EQ(task_environment_.GetPendingMainThreadTaskCount(), 1u); -+ // The delay matches the retry policy -+ EXPECT_EQ(task_environment_.NextMainThreadPendingTaskDelay().InMilliseconds(), -+ kRetryBackoffPolicy.initial_delay_ms); -+ -+ // We now cancel the download by destroying ongoing_request_. -+ ongoing_request_.reset(); -+ -+ // Fast-forward time until the retry task was scheduled to execute. -+ task_environment_.FastForwardBy( -+ task_environment_.NextMainThreadPendingTaskDelay()); -+ -+ // A retry request was not sent, as the request is cancelled. -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 0); -+} -+ -+TEST_P(AdblockOngoingSubscriptionRequestImplTest, RedirectCallStartsDownload) { -+ base::MockCallback -+ response_callback; -+ ongoing_request_->Start(kUrl, GetParam(), response_callback.Get()); -+ -+ // Redirect counter is 0 by default -+ EXPECT_EQ(ongoing_request_->GetNumberOfRedirects(), 0u); -+ -+ VerifyRequestSent(); -+ -+ const GURL kRedirectUrl{"https://redirect_url.com"}; -+ EXPECT_CALL(response_callback, Run(testing::_, testing::_, testing::_)) -+ .WillOnce([&](const GURL&, base::FilePath downloaded_file, -+ scoped_refptr headers) { -+ // The response callback triggers a Redirect() -+ ongoing_request_->Redirect(kRedirectUrl); -+ }); -+ -+ test_url_loader_factory_.SimulateResponseForPendingRequest(kUrl.spec(), -+ "content"); -+ task_environment_.RunUntilIdle(); -+ -+ // Redirect counter is incremented by 1 -+ EXPECT_EQ(ongoing_request_->GetNumberOfRedirects(), 1u); -+ -+ // A redirect request was sent with the redirect URL and same method -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 1); -+ EXPECT_EQ(test_url_loader_factory_.GetPendingRequest(0)->request.url, -+ kRedirectUrl); -+ EXPECT_EQ(test_url_loader_factory_.GetPendingRequest(0)->request.method, -+ MethodAsString(GetParam())); -+} -+ -+TEST_P(AdblockOngoingSubscriptionRequestImplTest, -+ RequestCancelledAfterStarting) { -+ base::MockCallback -+ response_callback; -+ ongoing_request_->Start(kUrl, GetParam(), response_callback.Get()); -+ -+ VerifyRequestSent(); -+ -+ // We now cancel the download by destroying ongoing_request_. -+ ongoing_request_.reset(); -+ // The response callback will not be called after the request has been -+ // cancelled... -+ EXPECT_CALL(response_callback, Run(testing::_, testing::_, testing::_)) -+ .Times(0); -+ // ... even when the response arrives. -+ test_url_loader_factory_.SimulateResponseForPendingRequest(kUrl.spec(), -+ "content"); -+ task_environment_.RunUntilIdle(); -+} -+ -+TEST_F(AdblockOngoingSubscriptionRequestImplTest, -+ ResponseCallbackCalledWithTrimmedUrlGET) { -+ base::MockCallback -+ response_callback; -+ const GURL kUrlWithQPs{"https://url.com/filter?qp1=qp1_val&qp2=qp2_val"}; -+ ongoing_request_->Start(kUrlWithQPs, OngoingSubscriptionRequest::Method::GET, -+ response_callback.Get()); -+ EXPECT_CALL(response_callback, Run(kUrl, testing::_, testing::_)).Times(1); -+ test_url_loader_factory_.SimulateResponseForPendingRequest(kUrlWithQPs.spec(), -+ "content"); -+ task_environment_.RunUntilIdle(); -+} -+ -+TEST_F(AdblockOngoingSubscriptionRequestImplTest, -+ ResponseCallbackCalledWithTrimmedUrlHEAD) { -+ base::MockCallback -+ response_callback; -+ const GURL kUrlWithQPs{"https://url.com/filter?qp1=qp1_val&qp2=qp2_val"}; -+ ongoing_request_->Start(kUrlWithQPs, OngoingSubscriptionRequest::Method::HEAD, -+ response_callback.Get()); -+ EXPECT_CALL(response_callback, Run(GURL(), testing::_, testing::_)).Times(1); -+ test_url_loader_factory_.SimulateResponseForPendingRequest(kUrlWithQPs.spec(), -+ "content"); -+ task_environment_.RunUntilIdle(); -+} -+ -+INSTANTIATE_TEST_SUITE_P( -+ All, -+ AdblockOngoingSubscriptionRequestImplTest, -+ testing::Values(OngoingSubscriptionRequest::Method::GET, -+ OngoingSubscriptionRequest::Method::HEAD)); -+ +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/pattern_matcher_perftest.cc b/components/adblock/core/subscription/test/pattern_matcher_perftest.cc ++ ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_H_ +diff --git a/components/adblock/core/subscription/subscription_downloader_impl.cc b/components/adblock/core/subscription/subscription_downloader_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/pattern_matcher_perftest.cc -@@ -0,0 +1,68 @@ ++++ b/components/adblock/core/subscription/subscription_downloader_impl.cc +@@ -0,0 +1,289 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -30548,659 +18225,284 @@ new file mode 100644 + * You should have received a copy of the GNU General Public License + * along with eyeo Chromium SDK. If not, see . + */ -+#include "components/adblock/core/subscription/pattern_matcher.h" ++ ++#include "components/adblock/core/subscription/subscription_downloader_impl.h" + +#include -+#include ++#include ++#include +#include + ++#include "base/files/file_path.h" ++#include "base/functional/bind.h" +#include "base/ranges/algorithm.h" ++#include "base/strings/escape.h" ++#include "base/strings/strcat.h" ++#include "base/strings/string_number_conversions.h" +#include "base/strings/string_piece.h" -+#include "base/strings/string_split.h" +#include "base/time/time.h" -+#include "base/timer/elapsed_timer.h" -+#include "components/adblock/core/subscription/test/load_gzipped_test_file.h" -+#include "testing/gtest/include/gtest/gtest.h" -+#include "testing/perf/perf_result_reporter.h" -+#include "url/gurl.h" ++#include "base/trace_event/trace_event.h" ++#include "components/adblock/core/common/adblock_utils.h" ++#include "components/adblock/core/common/flatbuffer_data.h" ++#include "components/adblock/core/subscription/subscription_config.h" ++#include "net/base/url_util.h" ++#include "net/http/http_response_headers.h" + +namespace adblock { +namespace { -+constexpr char kMetricRuntime[] = ".runtime"; -+ -+void MatchPatterns(const std::vector& patterns, -+ const GURL& url) { -+ for (const auto p : patterns) { -+ DoesPatternMatchUrl(p, url); -+ } -+} -+ -+} // namespace + -+TEST(AdblockPatternMatcherPerfTest, FilterMatchingSpeed) { -+ const auto url_file_content = LoadGzippedTestFile("5000_urls.txt.gz"); -+ std::vector urls; -+ base::ranges::transform( -+ base::SplitStringPiece(url_file_content, "\n", base::TRIM_WHITESPACE, -+ base::SPLIT_WANT_NONEMPTY), -+ std::back_inserter(urls), -+ [](const auto string_piece) { return GURL(string_piece); }); -+ const auto pattern_file_content = LoadGzippedTestFile("5000_patterns.txt.gz"); -+ const auto patterns = -+ base::SplitStringPiece(pattern_file_content, "\n", base::TRIM_WHITESPACE, -+ base::SPLIT_WANT_NONEMPTY); -+ perf_test::PerfResultReporter reporter("pattern_matcher", -+ "5000 patterns, 5000 urls"); -+ reporter.RegisterImportantMetric(kMetricRuntime, "ms"); -+ base::ElapsedTimer timer; -+ for (const auto& url : urls) { -+ MatchPatterns(patterns, url); ++// To retain user anonymity, we clamp the download count sent to subscription ++// servers - any number higher than 4 is reported as just "4+". ++std::string GetClampedDownloadCount(int download_count) { ++ DCHECK_GE(download_count, 0); ++ if (download_count > 4) { ++ return "4+"; + } -+ reporter.AddResult(kMetricRuntime, timer.Elapsed()); -+} -+ -+} // namespace adblock -diff --git a/components/adblock/core/subscription/test/pattern_matcher_test.cc b/components/adblock/core/subscription/test/pattern_matcher_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/pattern_matcher_test.cc -@@ -0,0 +1,350 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/subscription/pattern_matcher.h" -+ -+#include -+ -+#include "base/strings/string_piece.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+TEST(AdblockPatternMatcherTest, EmptyPatternMatchesInputs) { -+ // Filters that have no pattern will match any URL. An example of such filter: -+ // $third_party,domain=abc.com -+ // (Nothing before the '$' character that denotes start of options) -+ // This means "block *all* third party URLs while on abc.com". -+ EXPECT_TRUE(DoesPatternMatchUrl("", GURL("https://ads.com"))); -+} -+ -+TEST(AdblockPatternMatcherTest, NonAnchoredPatternMatchesAnywhere) { -+ // Filter patterns that have no anchoring characters will match anywhere URL. -+ const auto pattern = base::StringPiece("ad-970"); -+ -+ // Inside the host: -+ EXPECT_TRUE(DoesPatternMatchUrl(pattern, GURL("https://x-ad-970-x.com"))); -+ // Start of host: -+ EXPECT_TRUE(DoesPatternMatchUrl(pattern, GURL("https://ad-970-x.com/"))); -+ // End of host: -+ EXPECT_TRUE(DoesPatternMatchUrl(pattern, GURL("https://x-ad-970.com/"))); -+ // Somewhere in path: -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://ad.com/path/ad-970/x"))); -+ // The very end: -+ EXPECT_TRUE(DoesPatternMatchUrl(pattern, GURL("https://ad.com/path/ad-970"))); -+ -+ // Does not mach partial appearance. -+ EXPECT_FALSE(DoesPatternMatchUrl(pattern, GURL("https://ad.com/ad/970"))); -+} -+ -+TEST(AdblockPatternMatcherTest, -+ HostAnchoredPatternMatchesDomainsAndSubdomains) { -+ // Filter pattern that starts from || will match if the prefix is a subdomain -+ // or is empty. -+ -+ const auto pattern = base::StringPiece("||example.com/banner.gif"); -+ -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/banner.gif"))); -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("http://example.com/banner.gif"))); -+ EXPECT_TRUE(DoesPatternMatchUrl( -+ pattern, GURL("https://subdomain.example.com/banner.gif"))); -+ EXPECT_TRUE(DoesPatternMatchUrl( -+ pattern, GURL("https://deep.subdomain.example.com/banner.gif"))); -+ -+ // Partial match is not a match: -+ EXPECT_FALSE(DoesPatternMatchUrl(pattern, GURL("https://example.com/"))); -+ // nonexample.com is not a subdomain of example.com -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("http://nonexample.com/banner.gif"))); -+} -+ -+TEST(AdblockPatternMatcherTest, HostAnchoredPatternWithImmediateWildcard) { -+ // This is a weird kind of filter but it appears in the wild. It is equivalent -+ // to one that has no host anchor, since the wildcard matches anything anyway. -+ const auto pattern = base::StringPiece("||*/banner.gif"); -+ -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/banner.gif"))); -+ EXPECT_TRUE(DoesPatternMatchUrl( -+ pattern, GURL("http://example.com/foobar/banner.gif"))); -+} -+ -+TEST(AdblockPatternMatcherTest, StartAnchoredPatternMatchesOnlyStartOfUrl) { -+ const auto pattern = base::StringPiece("|https"); -+ -+ // Pattern appears at the start of the URL, this is matched: -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/banner.gif"))); -+ -+ // Partial match = not a match -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("http://example.com/banner.gif"))); -+ // Pattern appears in the middle of the URL, not a match. -+ EXPECT_FALSE(DoesPatternMatchUrl( -+ pattern, GURL("http://example.com/https/banner.gif"))); -+} -+ -+TEST(AdblockPatternMatcherTest, EndAnchoredPatternMatchesOnlyEndOfUrl) { -+ const auto pattern = base::StringPiece("/popup/log|"); -+ -+ // Pattern appears at the end of the URL, this is matched: -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/popup/log"))); -+ -+ // Partial match = not a match -+ EXPECT_FALSE(DoesPatternMatchUrl(pattern, GURL("http://example.com/log"))); -+ // Pattern appears in the middle of the URL, not a match. -+ EXPECT_FALSE(DoesPatternMatchUrl( -+ pattern, GURL("http://example.com/popup/log/banner.gif"))); -+} -+ -+TEST(AdblockPatternMatcherTest, SeparatorCharacterBetweenHostAndPath) { -+ // This is a *very* common filter pattern: -+ const auto pattern = base::StringPiece("||example.com^"); -+ -+ EXPECT_TRUE(DoesPatternMatchUrl(pattern, GURL("https://example.com/ad.gif"))); -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com:8000/ad.gif"))); -+ -+ // '.' is not a character matched by ^. This treats example.com.ar as a -+ // different domain -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com.ar/ad.gif"))); -+} -+ -+TEST(AdblockPatternMatcherTest, SeparatorCharacterAtTheEndOfUrl) { -+ const auto pattern = base::StringPiece("||example.com^"); -+ -+ EXPECT_TRUE(DoesPatternMatchUrl(pattern, GURL("https://example.com"))); -+} -+ -+TEST(AdblockPatternMatcherTest, -+ SeparatorCharacterContinuesMatchingAfterEndOfUrl) { -+ // The ^ separator matches the end of URL, but in this filter we still expect -+ // more tokens. -+ const auto pattern = base::StringPiece("file^more"); -+ -+ EXPECT_FALSE(DoesPatternMatchUrl(pattern, GURL("https://start.com/file"))); -+} -+ -+TEST(AdblockPatternMatcherTest, SeparatorCharacterInsideUrl) { -+ const auto pattern = base::StringPiece("foo^bar"); -+ -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("http://example.com/foo/bar?a=12"))); -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("http://example.com/foo?bar=12"))); -+} -+ -+TEST(AdblockPatternMatcherTest, MultipleSeparatorCharacters) { -+ const auto pattern = base::StringPiece("^foo.bar^"); -+ -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("http://example.com/foo.bar?a=12"))); -+} -+ -+TEST(AdblockPatternMatcherTest, SeparatorCharactersNotMatchedTooEagerly) { -+ const auto pattern = base::StringPiece("^foo^"); -+ -+ // The first "foo" is not a valid match for the filter, since it's surrounded -+ // by dots which are not considered separators. But the filter should match -+ // the second "foo". -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("http://example.foo.com/foo?a=12"))); -+} -+ -+TEST(AdblockPatternMatcherTest, SeparatorCharacterDoesNotMatchWords) { -+ const auto pattern = base::StringPiece("^foo.bar^"); -+ -+ EXPECT_FALSE(DoesPatternMatchUrl(pattern, GURL("https://nonfoo.bar.com/"))); -+ EXPECT_FALSE(DoesPatternMatchUrl(pattern, GURL("https://foo.barbara.com/"))); -+} -+ -+TEST(AdblockPatternMatcherTest, SeparatorCharacterExceptions) { -+ // The separator character can be anything but a letter, a digit, or one of -+ // the following: _, -, ., %. -+ const auto pattern = base::StringPiece("foo^bar"); -+ -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/foo-bar"))); -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/foo_bar"))); -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/foo.bar"))); -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/foo%bar"))); -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/fooXbar"))); -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/foo5bar"))); -+} -+ -+TEST(AdblockPatternMatcherTest, SeparatorCharacterMatchesOnlySingleCharacter) { -+ const auto pattern = base::StringPiece("http^value"); -+ -+ // More than one character between "http" and "value" -+ EXPECT_FALSE(DoesPatternMatchUrl(pattern, GURL("http://value.com/"))); -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/http/?value"))); -+} -+ -+TEST(AdblockPatternMatcherTest, WildcardInPattern) { -+ const auto pattern = base::StringPiece("&gerf=*&guro="); -+ -+ // Wildcard matches zero characters -+ EXPECT_TRUE(DoesPatternMatchUrl( -+ pattern, GURL("https://example.com/data?x&gerf=&guro="))); -+ -+ // Matches one digit -+ EXPECT_TRUE(DoesPatternMatchUrl( -+ pattern, GURL("https://example.com/data?x&gerf=1&guro="))); -+ -+ // Matches a long string with non-alphanumerical characters -+ EXPECT_TRUE(DoesPatternMatchUrl( -+ pattern, GURL("https://example.com/data?x&gerf=abcd&yyy=zzzz&guro=asd"))); -+} -+ -+TEST(AdblockPatternMatcherTest, HostWildcard) { -+ const auto pattern = base::StringPiece("||ad.*.example.net^"); -+ -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://ad.host.example.net/data"))); -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://ad.server.example.net/data"))); -+ EXPECT_TRUE(DoesPatternMatchUrl( -+ pattern, GURL("https://subdomain.ad.server.example.net/data"))); -+ -+ // Does not match because there need to be at least two dots between "ad" and -+ // "example", and possibly something between the dots. -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("https://ad.example.net/data"))); -+ // Does not match the host anchor, even though it matches the wildcard. -+ EXPECT_FALSE(DoesPatternMatchUrl( -+ pattern, GURL("https://domain.com/ad.x.example.net/"))); -+} -+ -+TEST(AdblockPatternMatcherTest, SeveralWildcardsInPattern) { -+ const auto pattern = base::StringPiece("||example.com^*_*.php"); -+ -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/data_file.php"))); -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/_file.php"))); -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/data_.php"))); -+ EXPECT_TRUE(DoesPatternMatchUrl(pattern, GURL("https://example.com/_.php"))); -+ -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("https://example.com/datafile.php"))); -+} -+ -+TEST(AdblockPatternMatcherTest, NonGreedyWildcardMatch) { -+ const auto pattern = base::StringPiece("start*foobar^"); -+ -+ // The first match of "foobar" isn't followed by a separator (but instead by -+ // "bad"). But the algorithm doesn't stop searching and finds the next match -+ // that is followed by a separator. -+ EXPECT_TRUE(DoesPatternMatchUrl( -+ pattern, GURL("https://start.com/foobarbad/foobar/file.png"))); ++ return base::NumberToString(download_count); +} + -+TEST(AdblockPatternMatcherTest, MultipleConsecutiveWildcards) { -+ const auto pattern = base::StringPiece("start***foobar"); ++// Returns a version of |subscription_url| with added GET parameters that ++// describe client and request metadata. ++GURL AddUrlParameters(const GURL& subscription_url, ++ const SubscriptionPersistentMetadata* persistent_metadata, ++ const utils::AppInfo& client_metadata, ++ const bool is_disabled) { ++ const std::string query = base::StrCat( ++ {"addonName=", "eyeo-chromium-sdk", "&addonVersion=", "1.0", ++ "&application=", base::EscapeQueryParamValue(client_metadata.name, true), ++ "&applicationVersion=", ++ base::EscapeQueryParamValue(client_metadata.version, true), "&platform=", ++ base::EscapeQueryParamValue(client_metadata.client_os, true), ++ "&platformVersion=", "1.0", "&lastVersion=", ++ base::EscapeQueryParamValue( ++ persistent_metadata->GetVersion(subscription_url), true), ++ "&disabled=", is_disabled ? "true" : "false", "&downloadCount=", ++ GetClampedDownloadCount( ++ persistent_metadata->GetDownloadSuccessCount(subscription_url))}); + -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://start.com/foobar/file.png"))); ++ GURL::Replacements replacements; ++ replacements.SetQueryStr(query); ++ return subscription_url.ReplaceComponents(replacements); +} + -+TEST(AdblockPatternMatcherTest, UrlEndsWithSeparator) { -+ const auto pattern = base::StringPiece("file^|"); -+ -+ // URL ends with "file" followed by a separator character, good match. -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://start.com/foobar/file/"))); -+ -+ // Ends without a separator, but ^ matches EOF too, good match. -+ EXPECT_TRUE(DoesPatternMatchUrl(pattern, GURL("https://start.com/file"))); -+ -+ // Has file/ but doesn't end with it. -+ EXPECT_FALSE( -+ DoesPatternMatchUrl(pattern, GURL("https://start.com/file/foobar"))); ++int GenerateTraceId(const GURL& subscription_url) { ++ return std::hash{}(subscription_url.spec()); +} + -+TEST(AdblockPatternMatcherTest, MatchAfterPartialMatch) { -+ const auto pattern = base::StringPiece("barbar^"); ++} // namespace + -+ // This checks that we don't skip too far forward when the first match -+ // position fails. The first position of "barbar" is not followed by a -+ // separator, the second position is but it also overlaps with the first -+ // match. -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://start.com/barbarbar/"))); -+} ++SubscriptionDownloaderImpl::SubscriptionDownloaderImpl( ++ utils::AppInfo client_metadata, ++ SubscriptionRequestMaker request_maker, ++ ConversionExecutors* conversion_executor, ++ SubscriptionPersistentMetadata* persistent_metadata) ++ : client_metadata_(std::move(client_metadata)), ++ request_maker_(std::move(request_maker)), ++ conversion_executor_(conversion_executor), ++ persistent_metadata_(persistent_metadata) {} + -+TEST(AdblockPatternMatcherTest, UrlEndsWithWildcardAndSeparator) { -+ const auto pattern = base::StringPiece("file*^|"); ++SubscriptionDownloaderImpl::~SubscriptionDownloaderImpl() = default; + -+ // URL ends with "file" followed by a separator character, good match. -+ EXPECT_TRUE( -+ DoesPatternMatchUrl(pattern, GURL("https://start.com/foobar/file/"))); ++void SubscriptionDownloaderImpl::StartDownload( ++ const GURL& subscription_url, ++ RetryPolicy retry_policy, ++ DownloadCompletedCallback on_finished) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ if (!IsUrlAllowed(subscription_url)) { ++ LOG(WARNING) << "[eyeo] Download from URL not allowed, will not download " ++ << subscription_url; ++ std::move(on_finished).Run(nullptr); ++ return; ++ } + -+ // Ends without a separator, but ^ matches EOF too, good match. -+ EXPECT_TRUE(DoesPatternMatchUrl(pattern, GURL("https://start.com/file"))); ++ ongoing_downloads_[subscription_url] = OngoingDownload{ ++ request_maker_.Run(), retry_policy, std::move(on_finished)}; ++ std::get(ongoing_downloads_[subscription_url]) ++ ->Start( ++ AddUrlParameters(subscription_url, persistent_metadata_, ++ client_metadata_, false), ++ OngoingSubscriptionRequest::Method::GET, ++ base::BindRepeating(&SubscriptionDownloaderImpl::OnDownloadFinished, ++ weak_ptr_factory_.GetWeakPtr())); +} + -+TEST(AdblockPatternMatcherTest, FirstTokenIsWildcard) { -+ // This is redundant and equivalent to not having the starting wildcard, but -+ // some filters do this. -+ const auto pattern = base::StringPiece("*file"); -+ -+ EXPECT_TRUE(DoesPatternMatchUrl(pattern, GURL("https://start.com/file"))); ++void SubscriptionDownloaderImpl::CancelDownload(const GURL& subscription_url) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ ongoing_downloads_.erase(subscription_url); +} + -+TEST(AdblockPatternMatcherTest, DeepRecursion) { -+ auto recursive_input_maker = [](int depth) -> std::pair { -+ std::string pattern; -+ GURL url("https://example.com"); -+ for (int i = 0; i < depth; i++) { -+ pattern += "a^"; -+ url = url.Resolve("a/"); -+ } -+ return std::make_pair(pattern, url); -+ }; -+ // For patterns that are simple enough, match normally. -+ const auto [shallow_pattern, short_url] = recursive_input_maker(5); -+ EXPECT_TRUE(DoesPatternMatchUrl(shallow_pattern, short_url)); -+ -+ // Malicious, long filters are never matched. -+ const auto [deep_pattern, long_url] = recursive_input_maker(100); -+ EXPECT_FALSE(DoesPatternMatchUrl(deep_pattern, long_url)); -+} ++void SubscriptionDownloaderImpl::DoHeadRequest( ++ const GURL& subscription_url, ++ HeadRequestCallback on_finished) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ if (ongoing_ping_) { ++ std::move(std::get(*ongoing_ping_)).Run(""); ++ } + -+TEST(AdblockPatternMatcherTest, EmptyDoublePipe) { -+ const auto pattern = base::StringPiece("||"); -+ EXPECT_TRUE(DoesPatternMatchUrl(pattern, GURL("https://url.com"))); ++ ongoing_ping_ = HeadRequest{request_maker_.Run(), std::move(on_finished)}; ++ std::get(*ongoing_ping_) ++ ->Start(AddUrlParameters(subscription_url, persistent_metadata_, ++ client_metadata_, true), ++ OngoingSubscriptionRequest::Method::HEAD, ++ base::BindRepeating( ++ &SubscriptionDownloaderImpl::OnHeadersOnlyDownloaded, ++ weak_ptr_factory_.GetWeakPtr())); +} + -+TEST(AdblockPatternMatcherTest, EmptySinglePipe) { -+ const auto pattern = base::StringPiece("|"); -+ EXPECT_TRUE(DoesPatternMatchUrl(pattern, GURL("https://url.com"))); ++bool SubscriptionDownloaderImpl::IsUrlAllowed( ++ const GURL& subscription_url) const { ++ if (net::IsLocalhost(subscription_url)) { ++ // We trust all localhost urls, regardless of scheme. ++ return true; ++ } ++ if (!subscription_url.SchemeIs("https") && ++ !subscription_url.SchemeIs("data")) { ++ return false; ++ } ++ return true; +} + ++void SubscriptionDownloaderImpl::OnHeadersOnlyDownloaded( ++ const GURL&, ++ base::FilePath downloaded_file, ++ scoped_refptr headers) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK(ongoing_ping_.has_value()); ++ base::Time date; ++ std::string version(""); + -+} // namespace adblock -diff --git a/components/adblock/core/subscription/test/preloaded_subscription_provider_impl_test.cc b/components/adblock/core/subscription/test/preloaded_subscription_provider_impl_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/preloaded_subscription_provider_impl_test.cc -@@ -0,0 +1,149 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/subscription/preloaded_subscription_provider_impl.h" -+ -+#include "base/ranges/algorithm.h" -+#include "base/test/task_environment.h" -+#include "components/adblock/core/subscription/subscription.h" -+#include "components/adblock/core/subscription/subscription_config.h" -+#include "components/prefs/testing_pref_service.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+class PreloadedSubscriptionProviderImplTest : public testing::Test { -+ public: -+ base::test::TaskEnvironment task_environment_; -+ PreloadedSubscriptionProviderImpl provider_; -+}; ++ // Parse date or Date from response headers. ++ if (headers && headers->GetDateValue(&date)) { ++ version = utils::ConvertBaseTimeToABPFilterVersionFormat(date); ++ } + -+TEST_F(PreloadedSubscriptionProviderImplTest, -+ NoSubscriptionsYieldsNoPreloadedSubscriptions) { -+ EXPECT_TRUE(provider_.GetCurrentPreloadedSubscriptions().empty()); -+ provider_.UpdateSubscriptions({}, {}); -+ EXPECT_TRUE(provider_.GetCurrentPreloadedSubscriptions().empty()); -+} -+ -+TEST_F(PreloadedSubscriptionProviderImplTest, -+ CustomSubscriptionYieldsNoPreloadedSubscriptions) { -+ const GURL kCustomSubscription{"https://subs.com/1.txt"}; -+ provider_.UpdateSubscriptions({}, {kCustomSubscription}); -+ EXPECT_TRUE(provider_.GetCurrentPreloadedSubscriptions().empty()); -+} -+ -+TEST_F(PreloadedSubscriptionProviderImplTest, EasyListRequired) { -+ const GURL kInstalledSubscription{"https://subs.com/1.txt"}; -+ const GURL kPendingSubscription{ -+ "https://easylist-downloads.adblockplus.org/easylist.txt"}; -+ provider_.UpdateSubscriptions({kInstalledSubscription}, -+ {kPendingSubscription}); -+ const auto preloaded_subscriptions = -+ provider_.GetCurrentPreloadedSubscriptions(); -+ ASSERT_EQ(preloaded_subscriptions.size(), 1u); -+ EXPECT_EQ(preloaded_subscriptions[0]->GetSourceUrl(), -+ DefaultSubscriptionUrl()); -+ EXPECT_EQ(preloaded_subscriptions[0]->GetInstallationState(), -+ Subscription::InstallationState::Preloaded); -+} -+ -+TEST_F(PreloadedSubscriptionProviderImplTest, ExceptionrulesRequired) { -+ const GURL kInstalledSubscription{"https://subs.com/1.txt"}; -+ const GURL kPendingSubscription{ -+ "https://easylist-downloads.adblockplus.org/exceptionrules.txt"}; -+ provider_.UpdateSubscriptions({kInstalledSubscription}, -+ {kPendingSubscription}); -+ const auto preloaded_subscriptions = -+ provider_.GetCurrentPreloadedSubscriptions(); -+ ASSERT_EQ(preloaded_subscriptions.size(), 1u); -+ EXPECT_EQ(preloaded_subscriptions[0]->GetSourceUrl(), AcceptableAdsUrl()); -+} -+ -+TEST_F(PreloadedSubscriptionProviderImplTest, AnticvRequired) { -+ const GURL kInstalledSubscription{"https://subs.com/1.txt"}; -+ const GURL kPendingSubscription{ -+ "https://easylist-downloads.adblockplus.org/abp-filters-anti-cv.txt"}; -+ provider_.UpdateSubscriptions({kInstalledSubscription}, -+ {kPendingSubscription}); -+ const auto preloaded_subscriptions = -+ provider_.GetCurrentPreloadedSubscriptions(); -+ ASSERT_EQ(preloaded_subscriptions.size(), 1u); -+ EXPECT_EQ(preloaded_subscriptions[0]->GetSourceUrl(), AntiCVUrl()); -+} -+ -+TEST_F(PreloadedSubscriptionProviderImplTest, -+ LanguageSpecificEasyListRequired) { -+ const GURL kInstalledSubscription{"https://subs.com/1.txt"}; -+ // Even though the required subscription is not exactly easylist.txt, it is -+ // based on easylist.txt and so we provide the preloaded subscription. -+ const GURL kPendingSubscription{ -+ "https://easylist-downloads.adblockplus.org/easylistpolish+easylist.txt"}; -+ provider_.UpdateSubscriptions({kInstalledSubscription}, -+ {kPendingSubscription}); -+ const auto preloaded_subscriptions = -+ provider_.GetCurrentPreloadedSubscriptions(); -+ ASSERT_EQ(preloaded_subscriptions.size(), 1u); -+ EXPECT_EQ(preloaded_subscriptions[0]->GetSourceUrl(), -+ DefaultSubscriptionUrl()); -+} -+ -+TEST_F(PreloadedSubscriptionProviderImplTest, -+ SubscriptionInstalledAndUpdating) { -+ const GURL kInstalledSubscription{ -+ "https://easylist-downloads.adblockplus.org/exceptionrules.txt"}; -+ const GURL kPendingSubscription{ -+ "https://easylist-downloads.adblockplus.org/exceptionrules.txt"}; -+ provider_.UpdateSubscriptions({kInstalledSubscription}, -+ {kPendingSubscription}); -+ const auto preloaded_subscriptions = -+ provider_.GetCurrentPreloadedSubscriptions(); -+ // No need to provide a preloaded subscription because the required -+ // subscription is already installed, an update is under way. -+ EXPECT_TRUE(provider_.GetCurrentPreloadedSubscriptions().empty()); -+} -+ -+TEST_F(PreloadedSubscriptionProviderImplTest, MultipleRequiredSubscriptions) { -+ const GURL kAcceptableAdsSubscription{ -+ "https://easylist-downloads.adblockplus.org/exceptionrules.txt"}; -+ const GURL kEasyListPolishSubscription{ -+ "https://easylist-downloads.adblockplus.org/easylistpolish+easylist.txt"}; -+ const GURL kAntiCVSubscription{ -+ "https://easylist-downloads.adblockplus.org/abp-filters-anti-cv.txt"}; -+ const GURL kOtherInstalledSubscription1{"https://subs.com/1.txt"}; -+ const GURL kOtherInstalledSubscription2{"https://subs.com/2.txt"}; -+ const GURL kOtherNonInstalledSubscription1{"https://subs.com/3.txt"}; -+ provider_.UpdateSubscriptions( -+ {kOtherInstalledSubscription1, kOtherInstalledSubscription2}, -+ {kOtherInstalledSubscription2, kOtherNonInstalledSubscription1, -+ kAcceptableAdsSubscription, kEasyListPolishSubscription, -+ kAntiCVSubscription}); -+ auto preloaded_subscriptions = provider_.GetCurrentPreloadedSubscriptions(); -+ ASSERT_EQ(preloaded_subscriptions.size(), 3u); -+ base::ranges::sort(preloaded_subscriptions, {}, &Subscription::GetSourceUrl); -+ EXPECT_EQ(preloaded_subscriptions[0]->GetSourceUrl(), AntiCVUrl()); -+ EXPECT_EQ(preloaded_subscriptions[1]->GetSourceUrl(), -+ DefaultSubscriptionUrl()); -+ EXPECT_EQ(preloaded_subscriptions[2]->GetSourceUrl(), AcceptableAdsUrl()); -+ EXPECT_EQ(preloaded_subscriptions[0]->GetInstallationState(), -+ Subscription::InstallationState::Preloaded); -+ EXPECT_EQ(preloaded_subscriptions[1]->GetInstallationState(), -+ Subscription::InstallationState::Preloaded); -+ EXPECT_EQ(preloaded_subscriptions[2]->GetInstallationState(), -+ Subscription::InstallationState::Preloaded); ++ std::move(std::get(*ongoing_ping_)) ++ .Run(std::move(version)); ++ ongoing_ping_.reset(); ++ // A ping may fail. We don't retry, SubscriptionUpdater will send a new ping ++ // in an hour anyway. +} + -+} // namespace adblock -diff --git a/components/adblock/core/subscription/test/regex_matcher_perftest.cc b/components/adblock/core/subscription/test/regex_matcher_perftest.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/regex_matcher_perftest.cc -@@ -0,0 +1,82 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+#include "components/adblock/core/subscription/regex_matcher.h" ++void SubscriptionDownloaderImpl::OnDownloadFinished( ++ const GURL& subscription_url, ++ base::FilePath downloaded_file, ++ scoped_refptr headers) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + -+#include -+#include -+#include ++ auto download_it = ongoing_downloads_.find(subscription_url); ++ DCHECK(download_it != ongoing_downloads_.end()); + -+#include "base/ranges/algorithm.h" -+#include "base/strings/string_piece.h" -+#include "base/strings/string_split.h" -+#include "base/time/time.h" -+#include "base/timer/elapsed_timer.h" -+#include "components/adblock/core/subscription/test/load_gzipped_test_file.h" -+#include "testing/gtest/include/gtest/gtest.h" -+#include "testing/perf/perf_result_reporter.h" -+#include "url/gurl.h" ++ // For compatibility with existing Appium tests. To be removed after DPD-808. ++ if (headers) { ++ LOG(INFO) << "[eyeo] Response status for " ++ << AddUrlParameters(subscription_url, persistent_metadata_, ++ client_metadata_, false) ++ << " : " << headers->response_code(); ++ } + -+namespace adblock { -+namespace { ++ if (downloaded_file.empty()) { ++ persistent_metadata_->IncrementDownloadErrorCount(subscription_url); ++ if (std::get(download_it->second) == ++ RetryPolicy::RetryUntilSucceeded) { ++ DLOG(WARNING) << "[eyeo] Failed to retrieve content for " ++ << subscription_url << ", will retry"; ++ std::get(download_it->second)->Retry(); ++ } else { ++ DLOG(WARNING) << "[eyeo] Failed to retrieve content for " ++ << subscription_url << ", will abort"; ++ std::move(std::get(download_it->second)) ++ .Run(nullptr); ++ ongoing_downloads_.erase(download_it); ++ } ++ return; ++ } + -+constexpr char kMetricInitialization[] = ".initialization"; -+constexpr char kMetricRuntime[] = ".runtime"; ++ VLOG(1) << "[eyeo] Finished downloading " << subscription_url ++ << ", starting conversion"; + -+void MatchPatterns(const std::vector& patterns, -+ const GURL& url, -+ const RegexMatcher& matcher) { -+ for (const auto p : patterns) { -+ matcher.MatchesRegex(p, url, false); -+ } ++ TRACE_EVENT_NESTABLE_ASYNC_BEGIN1( ++ "eyeo", "Converting subscription", ++ TRACE_ID_LOCAL(GenerateTraceId(subscription_url)), "url", ++ subscription_url.spec()); ++ ++ conversion_executor_->ConvertFilterListFile( ++ subscription_url, downloaded_file, ++ base::BindOnce(&SubscriptionDownloaderImpl::OnConversionFinished, ++ weak_ptr_factory_.GetWeakPtr(), subscription_url)); +} + -+} // namespace ++void SubscriptionDownloaderImpl::OnConversionFinished( ++ const GURL& subscription_url, ++ ConversionResult converter_result) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ TRACE_EVENT_NESTABLE_ASYNC_END0( ++ "eyeo", "Converting subscription", ++ TRACE_ID_LOCAL(GenerateTraceId(subscription_url))); ++ const auto download_it = ongoing_downloads_.find(subscription_url); ++ if (download_it == ongoing_downloads_.end()) { ++ VLOG(1) << "[eyeo] Conversion result discarded, subscription download " ++ "was cancelled."; ++ return; ++ } + -+TEST(AdblockRegexMatcherPerfTest, FilterMatchingSpeed) { -+ const auto url_file_content = LoadGzippedTestFile("5000_urls.txt.gz"); -+ std::vector urls; -+ base::ranges::transform( -+ base::SplitStringPiece(url_file_content, "\n", base::TRIM_WHITESPACE, -+ base::SPLIT_WANT_NONEMPTY), -+ std::back_inserter(urls), -+ [](const auto string_piece) { return GURL(string_piece); }); -+ const auto pattern_file_content = -+ LoadGzippedTestFile("40_regex_patterns.txt.gz"); -+ const auto patterns = -+ base::SplitStringPiece(pattern_file_content, "\n", base::TRIM_WHITESPACE, -+ base::SPLIT_WANT_NONEMPTY); -+ -+ perf_test::PerfResultReporter reporter("regex_match", -+ "40 patterns, 5000 urls"); -+ reporter.RegisterImportantMetric(kMetricInitialization, "us"); -+ reporter.RegisterImportantMetric(kMetricRuntime, "ms"); -+ -+ RegexMatcher matcher; -+ base::ElapsedTimer init_timer; -+ for (const auto pattern : patterns) { -+ matcher.PreBuildRegexPattern(pattern, false); ++ if (absl::holds_alternative>( ++ converter_result)) { ++ VLOG(1) << "[eyeo] Finished converting " << subscription_url ++ << " successfully"; ++ std::move(std::get(download_it->second)) ++ .Run(std::move( ++ absl::get>(converter_result))); ++ ongoing_downloads_.erase(download_it); ++ } else if (absl::holds_alternative(converter_result)) { ++ const GURL& redirect_url = absl::get(converter_result); ++ if (!IsUrlAllowed(redirect_url)) { ++ AbortWithWarning(download_it, "Redirect URL not allowed."); ++ return; ++ } ++ if (redirect_url == subscription_url) { ++ AbortWithWarning(download_it, ++ "Redirect to the same URL is not permitted."); ++ return; ++ } ++ if (std::get(download_it->second) ++ ->GetNumberOfRedirects() >= kMaxNumberOfRedirects) { ++ AbortWithWarning(download_it, "Maximum number of redirects exceeded."); ++ } else { ++ auto ongoing_download = ongoing_downloads_.extract(download_it); ++ ongoing_download.key() = redirect_url; ++ auto redirected_download_it = ++ ongoing_downloads_.insert(std::move(ongoing_download)).position; ++ std::get(redirected_download_it->second) ++ ->Redirect(AddUrlParameters(redirect_url, persistent_metadata_, ++ client_metadata_, false)); ++ } ++ } else { ++ persistent_metadata_->IncrementDownloadErrorCount(subscription_url); ++ AbortWithWarning(download_it, ++ *absl::get(converter_result)); ++ return; + } -+ reporter.AddResult(kMetricInitialization, init_timer.Elapsed()); ++} + -+ base::ElapsedTimer runtime_timer; -+ for (const auto& url : urls) { -+ MatchPatterns(patterns, url, matcher); ++void SubscriptionDownloaderImpl::AbortWithWarning( ++ const OngoingDownloadsIt ongoing_download_it, ++ const std::string& warning) { ++ if (ongoing_download_it == ongoing_downloads_.end()) { ++ return; + } -+ reporter.AddResult(kMetricRuntime, runtime_timer.Elapsed()); ++ DLOG(WARNING) << "[eyeo] " << warning << " Aborting download of " ++ << ongoing_download_it->first; ++ std::move(std::get(ongoing_download_it->second)) ++ .Run(nullptr); ++ ongoing_downloads_.erase(ongoing_download_it); +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/subscription_collection_impl_test.cc b/components/adblock/core/subscription/test/subscription_collection_impl_test.cc +diff --git a/components/adblock/core/subscription/subscription_downloader_impl.h b/components/adblock/core/subscription/subscription_downloader_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/subscription_collection_impl_test.cc -@@ -0,0 +1,1019 @@ ++++ b/components/adblock/core/subscription/subscription_downloader_impl.h +@@ -0,0 +1,102 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -31218,1013 +18520,96 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/subscription_collection_impl.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_IMPL_H_ + -+#include ++#include ++#include ++#include + +#include "absl/types/optional.h" -+#include "base/memory/scoped_refptr.h" -+#include "components/adblock/core/subscription/subscription.h" -+#include "components/adblock/core/subscription/test/mock_installed_subscription.h" -+#include "gmock/gmock-actions.h" -+#include "gmock/gmock-matchers.h" -+#include "gmock/gmock.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" ++#include "base/files/file_path.h" ++#include "base/functional/callback_forward.h" ++#include "base/memory/raw_ptr.h" ++#include "base/memory/weak_ptr.h" ++#include "base/sequence_checker.h" ++#include "components/adblock/core/common/adblock_utils.h" ++#include "components/adblock/core/converter/flatbuffer_converter.h" ++#include "components/adblock/core/subscription/conversion_executors.h" ++#include "components/adblock/core/subscription/ongoing_subscription_request.h" ++#include "components/adblock/core/subscription/subscription_downloader.h" ++#include "components/adblock/core/subscription/subscription_persistent_metadata.h" + -+namespace adblock { ++class PrefService; + -+using testing::_; -+using testing::Return; ++namespace adblock { + -+class AdblockSubscriptionCollectionImplTest : public ::testing::Test { ++class SubscriptionDownloaderImpl final : public SubscriptionDownloader { + public: -+ const GURL kImageAddress{"https://address.com/image.png"}; -+ const GURL kParentAddress{"https://parent.com/"}; -+ const SiteKey kSitekey{"abc"}; -+ const GURL kSourceUrl{"https://subscription.com/easylist.txt"}; -+}; ++ // Used to create OngoingSubscriptionRequests to implement concurrent HEAD and ++ // GET requests. ++ using SubscriptionRequestMaker = ++ base::RepeatingCallback()>; ++ ++ SubscriptionDownloaderImpl( ++ utils::AppInfo client_metadata, ++ SubscriptionRequestMaker request_maker, ++ ConversionExecutors* conversion_executor, ++ SubscriptionPersistentMetadata* persistent_metadata); ++ ~SubscriptionDownloaderImpl() final; ++ void StartDownload(const GURL& subscription_url, ++ RetryPolicy retry_policy, ++ DownloadCompletedCallback on_finished) final; ++ void CancelDownload(const GURL& subscription_url) final; ++ void DoHeadRequest(const GURL& subscription_url, ++ HeadRequestCallback on_finished) final; + -+TEST_F(AdblockSubscriptionCollectionImplTest, -+ AllowingFilterFoundForFrameHierarchy) { -+ auto sub1 = base::MakeRefCounted(); ++ static constexpr int kMaxNumberOfRedirects = 5; + -+ const std::vector frame_hierarchy{ -+ GURL("https://frame.com/frame1.html"), -+ GURL("https://frame.com/frame2.html"), -+ GURL("https://frame.com/"), -+ }; ++ private: ++ using OngoingRequestPtr = std::unique_ptr; ++ // Represents subscription downloads in progress. ++ using OngoingDownload = ++ std::tuple; ++ using OngoingDownloads = std::map; ++ using OngoingDownloadsIt = OngoingDownloads::iterator; ++ // There's never more than one concurrent HEAD request - for the ++ // Acceptable Ads subscription, a special case in user counting. This will ++ // be replaced by a dedicated solution for user counting (Telemetry) ++ // eventually. ++ using HeadRequest = std::tuple; + -+ // Subscription has a blocking filter. -+ EXPECT_CALL(*sub1, HasUrlFilter(kImageAddress, frame_hierarchy[0].host(), -+ ContentType::Image, kSitekey, -+ FilterCategory::Blocking)) -+ .WillOnce(Return(true)); -+ -+ // The entire |frame_hierarchy| is queried to see if there's an allowing -+ // filter present for any step in the chain. The final one reports a match. -+ EXPECT_CALL(*sub1, HasUrlFilter(kImageAddress, frame_hierarchy[0].host(), -+ ContentType::Image, kSitekey, -+ FilterCategory::Allowing)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, frame_hierarchy[0], -+ frame_hierarchy[1].host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, frame_hierarchy[1], -+ frame_hierarchy[2].host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, frame_hierarchy[2], -+ frame_hierarchy[2].host(), kSitekey)) -+ .WillOnce(Return(true)); -+ -+ // The resource is allowlisted -+ EXPECT_CALL(*sub1, GetSourceUrl()).WillRepeatedly(Return(kSourceUrl)); -+ -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1}, {}); -+ EXPECT_TRUE(!!collection.FindBySubresourceFilter( -+ kImageAddress, frame_hierarchy, ContentType::Image, kSitekey, -+ FilterCategory::Blocking)); -+ EXPECT_TRUE(!!collection.FindByAllowFilter(kImageAddress, frame_hierarchy, -+ ContentType::Image, kSitekey)); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, -+ ElemhideSelectorsCombinedFromSubscriptions) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ // First, we establish whether to search for domain-specific selectors only by -+ // querying for Generichide filters. One subscription does have a Generichide -+ // filter. -+ -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Generichide, kParentAddress, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Generichide, kParentAddress, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(true)); -+ const bool domain_specific = true; -+ -+ // Now all subscriptions are queried for selectors. -+ InstalledSubscription::Selectors sub1_selectors; -+ sub1_selectors.elemhide_selectors = {"div", "ad_frame", "billboard"}; -+ sub1_selectors.elemhide_exceptions = {"billboard"}; -+ EXPECT_CALL(*sub1, GetElemhideSelectors(kParentAddress, domain_specific)) -+ .WillOnce(Return(sub1_selectors)); -+ -+ InstalledSubscription::Selectors sub2_selectors; -+ sub2_selectors.elemhide_selectors = {"header", "ad_content", "billboard"}; -+ sub2_selectors.elemhide_exceptions = {"ad_frame"}; -+ EXPECT_CALL(*sub2, GetElemhideSelectors(kParentAddress, domain_specific)) -+ .WillOnce(Return(sub2_selectors)); -+ -+ // sub1's "billboard" exception cancels out the "billboard" selectors from -+ // both subscriptions. sub2's "ad_frame" exception cancels out the "ad_frame" -+ // selector from sub1. -+ std::vector expected_selectors{"div", "header", -+ "ad_content"}; -+ -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ auto actual_selectors = -+ collection.GetElementHideSelectors(kParentAddress, {}, kSitekey); -+ std::sort(actual_selectors.begin(), actual_selectors.end()); -+ std::sort(expected_selectors.begin(), expected_selectors.end()); -+ EXPECT_EQ(actual_selectors, expected_selectors); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, -+ ElemhideEmulationSelectorsCombinedFromSubscriptions) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ // This works very similarly to Elemhide selectors, only all Elemhide -+ // Emulation selectors are by design domain-specific, so we don't search for -+ // Generichide allow filters. -+ -+ // Now all subscriptions are queried for selectors. -+ InstalledSubscription::Selectors sub1_selectors; -+ sub1_selectors.elemhide_selectors = {"a", "b", "c"}; -+ sub1_selectors.elemhide_exceptions = {"c"}; -+ EXPECT_CALL(*sub1, GetElemhideEmulationSelectors(kParentAddress)) -+ .WillOnce(Return(sub1_selectors)); -+ -+ InstalledSubscription::Selectors sub2_selectors; -+ sub2_selectors.elemhide_selectors = {"d", "b", "e"}; -+ sub2_selectors.elemhide_exceptions = {"b"}; -+ EXPECT_CALL(*sub2, GetElemhideEmulationSelectors(kParentAddress)) -+ .WillOnce(Return(sub2_selectors)); -+ -+ std::vector expected_selectors{"a", "d", "e"}; -+ -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ auto actual_selectors = -+ collection.GetElementHideEmulationSelectors(kParentAddress); -+ std::sort(actual_selectors.begin(), actual_selectors.end()); -+ std::sort(expected_selectors.begin(), expected_selectors.end()); -+ EXPECT_EQ(actual_selectors, expected_selectors); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, GenerateSnippetsJson) { -+ auto subscription = base::MakeRefCounted(); -+ -+ InstalledSubscription::Snippet snippet; -+ snippet.command = "say"; -+ snippet.arguments = {"Hello"}; -+ EXPECT_CALL(*subscription, MatchSnippets("parent.com")) -+ .WillOnce(Return(std::vector{snippet})); -+ -+ SubscriptionCollectionImpl collection( -+ std::vector>{subscription}, {}); -+ auto snippets = collection.GenerateSnippets(kParentAddress, {}); -+ EXPECT_EQ("say", snippets.front().GetList().front().GetString()); -+ EXPECT_EQ("Hello", snippets.front().GetList().back().GetString()); -+ EXPECT_EQ("[ [ \"say\", \"Hello\" ] ]\n", snippets.DebugString()); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, OneHasAllowingDocumentFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ EXPECT_CALL(*sub1, HasSpecialFilter(SpecialFilterType::Document, kSourceUrl, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, HasSpecialFilter(SpecialFilterType::Document, kSourceUrl, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(true)); -+ -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ EXPECT_TRUE(!!collection.FindBySpecialFilter( -+ SpecialFilterType::Document, kSourceUrl, {kParentAddress}, kSitekey)); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, NoneHasAllowingDocumentFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ EXPECT_CALL(*sub1, HasSpecialFilter(SpecialFilterType::Document, kSourceUrl, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, HasSpecialFilter(SpecialFilterType::Document, kSourceUrl, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ EXPECT_FALSE(!!collection.FindBySpecialFilter( -+ SpecialFilterType::Document, kSourceUrl, {kParentAddress}, kSitekey)); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, OneHasAllowingElementHideFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ EXPECT_CALL(*sub1, HasSpecialFilter(SpecialFilterType::Elemhide, kSourceUrl, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Elemhide, kParentAddress, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, HasSpecialFilter(SpecialFilterType::Elemhide, kSourceUrl, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(true)); -+ -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ EXPECT_TRUE(!!collection.FindBySpecialFilter( -+ SpecialFilterType::Elemhide, kSourceUrl, {kParentAddress}, kSitekey)); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, -+ NoneHasAllowingElementHideFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ EXPECT_CALL(*sub1, HasSpecialFilter(SpecialFilterType::Elemhide, kSourceUrl, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Elemhide, kParentAddress, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, HasSpecialFilter(SpecialFilterType::Elemhide, kSourceUrl, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Elemhide, kParentAddress, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ EXPECT_FALSE(!!collection.FindBySpecialFilter( -+ SpecialFilterType::Elemhide, kSourceUrl, {kParentAddress}, kSitekey)); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, OneHasGenericblockFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kSourceUrl, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kSourceUrl, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(true)); -+ -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ EXPECT_TRUE(collection.FindBySpecialFilter( -+ SpecialFilterType::Genericblock, kSourceUrl, {kParentAddress}, kSitekey)); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, NoneHasGenericblockFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kSourceUrl, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kSourceUrl, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), kSitekey)) -+ .WillOnce(Return(false)); -+ -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ EXPECT_FALSE(collection.FindBySpecialFilter( -+ SpecialFilterType::Genericblock, kSourceUrl, {kParentAddress}, kSitekey)); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, CspBlockingFilterNotFound) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ // There are no blocking filters found. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)); -+ EXPECT_CALL(*sub2, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)); -+ -+ // Since there are no blocking CSP filters, no need to check allow filters. -+ EXPECT_CALL(*sub1, HasSpecialFilter(_, _, _, _)).Times(0); -+ EXPECT_CALL(*sub2, HasSpecialFilter(_, _, _, _)).Times(0); -+ EXPECT_CALL(*sub1, FindCspFilters(_, _, FilterCategory::Allowing, _)) -+ .Times(0); -+ EXPECT_CALL(*sub2, FindCspFilters(_, _, FilterCategory::Allowing, _)) -+ .Times(0); -+ -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ -+ // Empty result means no CSP injection necessary. -+ EXPECT_TRUE( -+ collection.GetCspInjections(kImageAddress, {kParentAddress}).empty()); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, CspBlockingFilterFound) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ // First subscription contains a blocking CSP filter. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert("block"); }))); -+ EXPECT_CALL(*sub2, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)); -+ -+ // Since a blocking filter is found, implementation will try to find allowing -+ // rules. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)); -+ -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)); -+ -+ // Check for Genericblock filter. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ -+ // In presence of a blocking CSP filters and absence of any allowing -+ // filters, the string returned by first subscription becomes the CSP -+ // injection. -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ -+ std::set filters = -+ collection.GetCspInjections(kImageAddress, {kParentAddress}); -+ EXPECT_THAT(filters, testing::UnorderedElementsAre("block")); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, MultipleCspBlockingFilterFound) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ // First subscription contains a blocking CSP filter. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert("first"); }))); -+ EXPECT_CALL(*sub2, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert("second"); }))); -+ -+ // Since a blocking filter is found, implementation will try to find allowing -+ // rules. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)); -+ -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)); -+ -+ // Check for Genericblock filter. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ -+ // In presence of a blocking CSP filters and absence of any allowing -+ // filters, the string returned by first subscription becomes the CSP -+ // injection. -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ -+ std::set filters = -+ collection.GetCspInjections(kImageAddress, {kParentAddress}); -+ EXPECT_THAT(filters, testing::UnorderedElementsAre("first", "second")); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, -+ SameCspBlockingFilterFoundInMultipleSubs) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ // First subscription contains a blocking CSP filter. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert("block"); }))); -+ EXPECT_CALL(*sub2, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert("block"); }))); -+ -+ // Since a blocking filter is found, implementation will try to find allowing -+ // rules. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)); -+ -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)); -+ -+ // Check for Genericblock filter. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ -+ // In presence of a blocking CSP filters and absence of any allowing -+ // filters, the string returned by first subscription becomes the CSP -+ // injection. -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ -+ std::set filters = -+ collection.GetCspInjections(kImageAddress, {kParentAddress}); -+ EXPECT_THAT(filters, testing::UnorderedElementsAre("block")); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, -+ CspBlockingFilterOverruledViaDocumentAllowingRule) { -+ auto sub1 = base::MakeRefCounted(); -+ -+ // Subscription contains a blocking CSP filter. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>( -+ testing::Invoke([](std::set& res) { -+ res.insert("script-src 'none'"); -+ }))); -+ -+ // A document-wide allowing rule exists. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(true)); -+ -+ // No need to query GenericBlock rules since the blocking CSP filter was -+ // overruled already. -+ EXPECT_CALL(*sub1, HasSpecialFilter(SpecialFilterType::Genericblock, _, _, _)) -+ .Times(0); -+ -+ // The allowing Document filter overrules the blocking CSP filter. -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1}, {}); -+ -+ std::set results = -+ collection.GetCspInjections(kImageAddress, {kParentAddress}); -+ EXPECT_TRUE(results.empty()); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, -+ CspBlockingFilterOverruledViaMatchingAllowingCspFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ -+ // Subscription contains a blocking CSP filter. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>( -+ testing::Invoke([](std::set& res) { -+ res.insert("script-src 'none'"); -+ }))); -+ -+ // Since a blocking filter is found, implementation will try to find allowing -+ // rules. -+ -+ // Document-wide allowing filters may or may not be consulted, but if they -+ // are, there are no matches. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ -+ // An allowing CSP rule, with specific payload, is found for parent. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)) -+ .WillOnce(testing::WithArgs<3>( -+ testing::Invoke([](std::set& res) { -+ res.insert("script-src 'none'"); -+ }))); -+ -+ // No need to query GenericBlock rules since the blocking CSP filter was -+ // overruled already. -+ EXPECT_CALL(*sub1, HasSpecialFilter(SpecialFilterType::Genericblock, _, _, _)) -+ .Times(0); -+ -+ // The allowing CSP filter overrules the blocking CSP filter. -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1}, {}); -+ std::set results = -+ collection.GetCspInjections(kImageAddress, {kParentAddress}); -+ EXPECT_TRUE(results.empty()); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, -+ TwoCspBlockingFilterWithOneOverruledViaMatchingAllowingCspFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ -+ // Subscription contains a blocking CSP filter. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>( -+ testing::Invoke([](std::set& res) { -+ res.insert("first"); -+ res.insert("second"); -+ }))); -+ -+ // Since a blocking filter is found, implementation will try to find allowing -+ // rules. -+ -+ // Document-wide allowing filters may or may not be consulted, but if they -+ // are, there are no matches. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ -+ // An allowing CSP rule, with specific payload, is found for parent. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert("second"); }))); -+ -+ // Check for Genericblock filter. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ -+ // The allowing CSP filter overrules the blocking CSP filter. -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1}, {}); -+ std::set results = -+ collection.GetCspInjections(kImageAddress, {kParentAddress}); -+ EXPECT_THAT(results, testing::UnorderedElementsAre("first")); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, -+ TwoCspBlockingFilterOverruledViaMatchingAllowingCspFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ // Subscription contains a blocking CSP filter. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert("first"); }))); -+ EXPECT_CALL(*sub2, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert("second"); }))); -+ -+ // Since a blocking filter is found, implementation will try to find allowing -+ // rules. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert("second"); }))); -+ -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert("first"); }))); -+ -+ // No need to query GenericBlock rules since the blocking CSP filter was -+ // overruled already. -+ EXPECT_CALL(*sub1, HasSpecialFilter(SpecialFilterType::Genericblock, _, _, _)) -+ .Times(0); -+ EXPECT_CALL(*sub2, HasSpecialFilter(SpecialFilterType::Genericblock, _, _, _)) -+ .Times(0); -+ -+ // The allowing CSP filter overrules the blocking CSP filter. -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ std::set results = -+ collection.GetCspInjections(kImageAddress, {kParentAddress}); -+ EXPECT_TRUE(results.empty()); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, -+ CspBlockingFilterOverruledViaGenericAllowingCspFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ -+ // Subscription contains a blocking CSP filter. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>( -+ testing::Invoke([](std::set& res) { -+ res.insert("script-src 'none'"); -+ }))); -+ -+ // Since a blocking filter is found, implementation will try to find allowing -+ // rules. -+ -+ // Document-wide allowing filters may or may not be consulted, but if they -+ // are, there are no matches. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ -+ // An allowing CSP rule, with no payload, is found for request. A CSP allowing -+ // filter with no payload overrules any blocking CSP filter. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert(""); }))); -+ -+ // No need to query GenericBlock rules since the blocking CSP filter was -+ // overruled already. -+ EXPECT_CALL(*sub1, HasSpecialFilter(SpecialFilterType::Genericblock, _, _, _)) -+ .Times(0); -+ -+ // The allowing CSP filter overrules the blocking CSP filter. -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1}, {}); -+ std::set results = -+ collection.GetCspInjections(kImageAddress, {kParentAddress}); -+ EXPECT_TRUE(results.empty()); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, -+ CspBlockingFilterNotOverruledViaMismatchedAllowingCspFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ -+ // Subscription contains a blocking CSP filter. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>( -+ testing::Invoke([](std::set& res) { -+ res.insert("script-src 'none'"); -+ }))); -+ -+ // No document-wide allowing filters present. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ -+ // Allowing CSP rules with different payloads do NOT match the blocking -+ // CSP filter. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)) -+ .WillOnce(testing::WithArgs<3>( -+ testing::Invoke([](std::set& res) { -+ res.insert("script-src *"); -+ }))); -+ -+ // The blocking filter is not overruled yet, will now check generic block -+ // rules. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ -+ // The blocking CSP filter was NOT overruled by an allowing CSP filter because -+ // the payloads did not match. -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1}, {}); -+ -+ std::set results = -+ collection.GetCspInjections(kImageAddress, {kParentAddress}); -+ EXPECT_THAT(results, testing::UnorderedElementsAre("script-src 'none'")); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, GenericBlockCspFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ // First subscription contains a blocking CSP filter. Second does not. -+ // Both are consulted, because the first subscription's blocking CSP filter -+ // gets overruled as not domain-specific. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert("block"); }))); -+ EXPECT_CALL(*sub2, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)); -+ -+ // Neither subscription contains allowing rule. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)); -+ -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)); -+ -+ // Second subscription contains a genericblock rule. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub2, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(true)); -+ -+ // Search is retried but now for domain-specific CSP filters only. No matches. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::DomainSpecificBlocking, _)) -+ .WillOnce(testing::WithArgs<3>( -+ testing::Invoke([](std::set& res) { -+ res.insert("domain-block"); -+ }))); -+ -+ EXPECT_CALL(*sub2, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::DomainSpecificBlocking, _)); -+ -+ // Finally, no CSP filter found. -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ std::set results = -+ collection.GetCspInjections(kImageAddress, {kParentAddress}); -+ EXPECT_THAT(results, testing::UnorderedElementsAre("domain-block")); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, -+ GenericBlockCspFilterWithDomainAllowingFilter) { -+ auto sub1 = base::MakeRefCounted(); -+ -+ // First subscription contains a blocking CSP filter. Second does not. -+ // Both are consulted, because the first subscription's blocking CSP filter -+ // gets overruled as not domain-specific. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking, _)) -+ .WillOnce(testing::WithArgs<3>(testing::Invoke( -+ [](std::set& res) { res.insert("block"); }))); -+ -+ // Neither subscription contains allowing rule. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Document, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Allowing, _)) -+ .WillOnce(testing::WithArgs<3>( -+ testing::Invoke([](std::set& res) { -+ res.insert("domain-block"); -+ }))); -+ -+ // Second subscription contains a genericblock rule. -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kImageAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(*sub1, -+ HasSpecialFilter(SpecialFilterType::Genericblock, kParentAddress, -+ kParentAddress.host(), SiteKey())) -+ .WillOnce(Return(true)); -+ -+ // Search is retried but now for domain-specific CSP filters only. No matches. -+ EXPECT_CALL(*sub1, FindCspFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::DomainSpecificBlocking, _)) -+ .WillOnce(testing::WithArgs<3>( -+ testing::Invoke([](std::set& res) { -+ res.insert("domain-block"); -+ }))); -+ -+ // Finally, no CSP filter found. -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1}, {}); -+ std::set results = -+ collection.GetCspInjections(kImageAddress, {kParentAddress}); -+ EXPECT_TRUE(results.empty()); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, RewriteBlockingFilterNotFound) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ -+ // There are no blocking filters found. -+ EXPECT_CALL(*sub1, FindRewriteFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking)) -+ .WillOnce(Return(std::set{})); -+ EXPECT_CALL(*sub2, FindRewriteFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking)) -+ .WillOnce(Return(std::set{})); -+ -+ // Since there are no blocking filters, no need to check allow filters. -+ EXPECT_CALL(*sub1, HasSpecialFilter(_, _, _, _)).Times(0); -+ EXPECT_CALL(*sub2, HasSpecialFilter(_, _, _, _)).Times(0); -+ -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ -+ // Empty result means no redirect necessary. -+ EXPECT_THAT(collection.GetRewriteFilters(kImageAddress, {kParentAddress}, -+ FilterCategory::Blocking), -+ testing::UnorderedElementsAre()); -+} -+ -+TEST_F(AdblockSubscriptionCollectionImplTest, RewriteBlockingFiltersFound) { -+ auto sub1 = base::MakeRefCounted(); -+ auto sub2 = base::MakeRefCounted(); -+ constexpr const char* redirect1 = "about::blank/1"; -+ constexpr const char* redirect2 = "about::blank/2"; -+ -+ EXPECT_CALL(*sub1, FindRewriteFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking)) -+ .WillOnce(Return(std::set{redirect1})); -+ EXPECT_CALL(*sub2, FindRewriteFilters(kImageAddress, kParentAddress.host(), -+ FilterCategory::Blocking)) -+ .WillOnce(Return(std::set{redirect2})); -+ -+ // In presence of a blocking filters and absence of any allowing filters, -+ // the string returned by first subscription becomes the redirect. -+ SubscriptionCollectionImpl collection( -+ std::vector>{sub1, sub2}, {}); -+ EXPECT_THAT(collection.GetRewriteFilters(kImageAddress, {kParentAddress}, -+ FilterCategory::Blocking), -+ testing::UnorderedElementsAre(GURL(redirect1), GURL(redirect2))); -+} ++ bool IsUrlAllowed(const GURL& subscription_url) const; ++ bool IsConnectionAllowed() const; ++ void OnDownloadFinished(const GURL& subscription_url, ++ base::FilePath downloaded_file, ++ scoped_refptr headers); ++ void OnHeadersOnlyDownloaded(const GURL& subscription_url, ++ base::FilePath downloaded_file, ++ scoped_refptr headers); ++ void OnConversionFinished(const GURL& subscription_url, ++ ConversionResult converter_result); ++ void AbortWithWarning(const OngoingDownloadsIt ongoing_download_it, ++ const std::string& warning); ++ ++ SEQUENCE_CHECKER(sequence_checker_); ++ utils::AppInfo client_metadata_; ++ SubscriptionRequestMaker request_maker_; ++ raw_ptr conversion_executor_; ++ raw_ptr persistent_metadata_; ++ OngoingDownloads ongoing_downloads_; ++ absl::optional ongoing_ping_; ++ base::WeakPtrFactory weak_ptr_factory_{this}; ++}; + +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/subscription_downloader_impl_test.cc b/components/adblock/core/subscription/test/subscription_downloader_impl_test.cc ++ ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_DOWNLOADER_IMPL_H_ +diff --git a/components/adblock/core/subscription/subscription_persistent_metadata.h b/components/adblock/core/subscription/subscription_persistent_metadata.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/subscription_downloader_impl_test.cc -@@ -0,0 +1,577 @@ ++++ b/components/adblock/core/subscription/subscription_persistent_metadata.h +@@ -0,0 +1,86 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -32242,571 +18627,80 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/subscription_downloader_impl.h" -+ -+#include ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_H_ + -+#include "base/files/file.h" -+#include "base/files/file_path.h" -+#include "base/functional/bind.h" -+#include "base/functional/callback_helpers.h" -+#include "base/strings/string_split.h" -+#include "base/test/bind.h" -+#include "base/test/mock_callback.h" -+#include "base/test/task_environment.h" -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/subscription/subscription_downloader.h" -+#include "components/adblock/core/subscription/test/mock_conversion_executors.h" -+#include "components/adblock/core/subscription/test/mock_subscription_persistent_metadata.h" -+#include "components/prefs/pref_service.h" -+#include "gmock/gmock-actions.h" -+#include "gmock/gmock-matchers.h" -+#include "services/network/public/mojom/url_response_head.mojom.h" -+#include "services/network/test/test_utils.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" ++#include + -+using testing::NiceMock; ++#include "base/time/time.h" ++#include "components/keyed_service/core/keyed_service.h" ++#include "url/gurl.h" + +namespace adblock { + -+class MockOngoingRequest : public NiceMock { -+ public: -+ MOCK_METHOD(void, -+ Start, -+ (GURL url, Method method, ResponseCallback response_callback), -+ (override)); -+ MOCK_METHOD(void, Retry, (), (override)); -+ MOCK_METHOD(void, Redirect, (GURL redirect_url), (override)); -+ MOCK_METHOD(size_t, GetNumberOfRedirects, (), (const, override)); -+}; -+ -+class FakeBuffer final : public FlatbufferData { -+ public: -+ const uint8_t* data() const final { return nullptr; } -+ size_t size() const final { return 0u; } -+}; -+ -+class AdblockSubscriptionDownloaderImplTest : public testing::Test { ++// Persistently stores metadata about Subscriptions. ++// Metadata is data about Subscriptions that may not be encoded in the ++// Subscriptions themselves, like number of errors encountered while ++// downloading. ++// Subscription metadata is used to control subscription update behavior and ++// provide data for GET/HEAD query parameters. ++class SubscriptionPersistentMetadata : public KeyedService { + public: -+ AdblockSubscriptionDownloaderImplTest() { -+ app_info_.name = "test_app"; -+ app_info_.version = "123"; -+ app_info_.client_os = "Linux"; -+ downloader_ = std::make_unique( -+ app_info_, request_maker_.Get(), &conversion_executor_, -+ &persistent_metadata_); -+ } -+ -+ void TestDateHeaderParsing(network::mojom::URLResponseHeadPtr header_response, -+ base::StringPiece expected_parsed_string) { -+ base::MockCallback -+ head_request_callback; -+ -+ // SubscriptionRequestMaker is asked to create a request, -+ OngoingSubscriptionRequest::ResponseCallback response_callback; -+ EXPECT_CALL(request_maker_, Run()).WillOnce([&]() { -+ // Expect that the request gets started, record the response callback. -+ auto mock_ongoing_request = std::make_unique(); -+ EXPECT_CALL(*mock_ongoing_request, -+ Start(testing::_, OngoingSubscriptionRequest::Method::HEAD, -+ testing::_)) -+ .WillOnce(testing::SaveArg<2>(&response_callback)); -+ return mock_ongoing_request; -+ }); -+ -+ downloader_->DoHeadRequest(kSubscriptionUrlHttps, -+ head_request_callback.Get()); -+ -+ // The HeadRequestCallback is called with parsed date, or empty string if -+ // parsing failed. -+ EXPECT_CALL(head_request_callback, -+ Run(testing::StrEq(expected_parsed_string))); -+ response_callback.Run(GURL(), base::FilePath(), header_response->headers); -+ } ++ // Sets the expiration date to Now() + |expires_in|. ++ // Expiration time can be: ++ // - Parsed from the filter list (see Subscription::GetTimeUntilExpires()) ++ // - Set to 5 days by default, if expiration time is not specified in filter ++ // list ++ // - Set to 1 day by default for the special case of HEAD-only request. ++ virtual void SetExpirationInterval(const GURL& subscription_url, ++ base::TimeDelta expires_in) = 0; ++ // The version of a subscription can be: ++ // - parsed from the filter list (see Subscription::GetCurrentVersion()) ++ // - for HEAD requests, created by parsing the received "Date" header. ++ // - not set ++ // It is common for custom subscriptions to not have a version available. ++ virtual void SetVersion(const GURL& subscription_url, ++ std::string version) = 0; ++ // Increments the total number of successful downloads. ++ // Successful HEAD-only requests, which don't deliver an actual subscription, ++ // still count towards this number. ++ // Resets the download error count to 0, as it breaks the error streak. ++ virtual void IncrementDownloadSuccessCount(const GURL& subscription_url) = 0; ++ // Increments the number of consecutive download failures, used to determine ++ // whether to fall back to an alternate download URL. ++ // Incrementing the error count does *not* influence the success count. ++ virtual void IncrementDownloadErrorCount(const GURL& subscription_url) = 0; + -+ base::test::TaskEnvironment task_environment_; -+ utils::AppInfo app_info_; -+ base::MockCallback -+ request_maker_; -+ MockConversionExecutors conversion_executor_; -+ MockSubscriptionPersistentMetadata persistent_metadata_; -+ std::unique_ptr downloader_; ++ // Returns whether the expiration time (see SetExpirationInterval()) is ++ // earlier than Now(). ++ // A subscription for which SetExpirationInterval() was never called is ++ // considered expired, as otherwise it would never be selected for updating. ++ virtual bool IsExpired(const GURL& subscription_url) const = 0; ++ // Returns time of last installation/update time, which is set when ++ // SetExpirationInterval() is called. ++ virtual base::Time GetLastInstallationTime( ++ const GURL& subscription_url) const = 0; ++ // Returns version set in SetVersion() or "0" when not set. ++ // Subscriptions are allowed to not have a version defined. ++ virtual std::string GetVersion(const GURL& subscription_url) const = 0; ++ // Returns the number of successful downloads of this subscription in the ++ // past. ++ virtual int GetDownloadSuccessCount(const GURL& subscription_url) const = 0; ++ // Returns number of consecutive download errors. ++ virtual int GetDownloadErrorCount(const GURL& subscription_url) const = 0; + -+ const GURL kSubscriptionUrlHttps{"https://subscription.com/filterlist.txt"}; ++ // Remove metadata associated with |subscription_url|. ++ virtual void RemoveMetadata(const GURL& subscription_url) = 0; +}; + -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ NoDownloadFromNotAllowedUrlScheme) { -+ base::MockCallback -+ callback; -+ // Callback is immediately run with Null since the download cannot start. -+ EXPECT_CALL(callback, Run(testing::IsNull())); -+ // No requests are made. -+ EXPECT_CALL(request_maker_, Run()).Times(0); -+ -+ const GURL kSubscriptionUrlHttp{"http://subscription.com/filterlist.txt"}; -+ downloader_->StartDownload(kSubscriptionUrlHttp, -+ SubscriptionDownloader::RetryPolicy::DoNotRetry, -+ callback.Get()); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ DownloadStarted_QueryParamsPresent) { -+ EXPECT_CALL(persistent_metadata_, GetVersion(kSubscriptionUrlHttps)) -+ .WillRepeatedly(testing::Return("555")); -+ EXPECT_CALL(persistent_metadata_, -+ GetDownloadSuccessCount(kSubscriptionUrlHttps)) -+ .WillRepeatedly(testing::Return(6)); -+ -+ GURL requested_url; -+ // SubscriptionRequestMaker is asked to create a request, -+ EXPECT_CALL(request_maker_, Run()).WillOnce([&]() { -+ // Expect that the request gets started, record the requested url. -+ auto mock_ongoing_request = std::make_unique(); -+ EXPECT_CALL( -+ *mock_ongoing_request, -+ Start(testing::_, OngoingSubscriptionRequest::Method::GET, testing::_)) -+ .WillOnce(testing::SaveArg<0>(&requested_url)); -+ return mock_ongoing_request; -+ }); -+ -+ downloader_->StartDownload(kSubscriptionUrlHttps, -+ SubscriptionDownloader::RetryPolicy::DoNotRetry, -+ base::DoNothing()); -+ -+ const auto query_params = -+ base::SplitStringPiece(requested_url.query_piece(), "&", -+ base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); -+ -+ EXPECT_THAT(query_params, -+ testing::UnorderedElementsAre( -+ "addonName=eyeo-chromium-sdk", "addonVersion=1.0", -+ "application=test_app", "applicationVersion=123", -+ "platform=Linux", "platformVersion=1.0", "lastVersion=555", -+ "disabled=false", "downloadCount=4+")); -+ -+ // The request's base url is |subscription_url|. -+ GURL::Replacements strip_query; -+ strip_query.ClearQuery(); -+ EXPECT_EQ(requested_url.ReplaceComponents(strip_query), -+ kSubscriptionUrlHttps); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ RetryWhenDownloadResponseIsEmpty) { -+ base::MockCallback -+ download_completed_callback; -+ -+ // SubscriptionRequestMaker is asked to create a request, -+ OngoingSubscriptionRequest::ResponseCallback response_callback; -+ EXPECT_CALL(request_maker_, Run()).WillOnce([&]() { -+ testing::InSequence sequence; -+ // Expect that the request gets started, record the response callback. -+ auto mock_ongoing_request = std::make_unique(); -+ EXPECT_CALL( -+ *mock_ongoing_request, -+ Start(testing::_, OngoingSubscriptionRequest::Method::GET, testing::_)) -+ .WillOnce(testing::SaveArg<2>(&response_callback)); -+ // There will be a retry attempt due to empty response. -+ EXPECT_CALL(*mock_ongoing_request, Retry()); -+ return mock_ongoing_request; -+ }); -+ -+ EXPECT_CALL(persistent_metadata_, -+ IncrementDownloadErrorCount(kSubscriptionUrlHttps)); -+ -+ downloader_->StartDownload( -+ kSubscriptionUrlHttps, -+ SubscriptionDownloader::RetryPolicy::RetryUntilSucceeded, -+ download_completed_callback.Get()); -+ -+ // DownloadCompletedCallback will not be called because the download gets -+ // retried. -+ EXPECT_CALL(download_completed_callback, Run(testing::_)).Times(0); -+ // OngoingSubscriptionRequest calls ResponseCallback with empty path, -+ // indicating no content. This will trigger a retry. -+ response_callback.Run(kSubscriptionUrlHttps, base::FilePath(), nullptr); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ DoNotRetryWhenDownloadResponseIsEmptyIfPolicyForbids) { -+ base::MockCallback -+ download_completed_callback; -+ -+ // SubscriptionRequestMaker is asked to create a request, -+ OngoingSubscriptionRequest::ResponseCallback response_callback; -+ EXPECT_CALL(request_maker_, Run()).WillOnce([&]() { -+ testing::InSequence sequence; -+ // Expect that the request gets started, record the response callback. -+ auto mock_ongoing_request = std::make_unique(); -+ EXPECT_CALL( -+ *mock_ongoing_request, -+ Start(testing::_, OngoingSubscriptionRequest::Method::GET, testing::_)) -+ .WillOnce(testing::SaveArg<2>(&response_callback)); -+ // There will be NO retry attempt due to empty response because of -+ // RetryPolicy. -+ EXPECT_CALL(*mock_ongoing_request, Retry()).Times(0); -+ return mock_ongoing_request; -+ }); -+ -+ EXPECT_CALL(persistent_metadata_, -+ IncrementDownloadErrorCount(kSubscriptionUrlHttps)); -+ -+ downloader_->StartDownload(kSubscriptionUrlHttps, -+ SubscriptionDownloader::RetryPolicy::DoNotRetry, -+ download_completed_callback.Get()); -+ -+ // DownloadCompletedCallback will be called with nullptr; -+ EXPECT_CALL(download_completed_callback, Run(testing::IsNull())); -+ // OngoingSubscriptionRequest calls ResponseCallback with empty path, -+ // indicating no content. -+ response_callback.Run(kSubscriptionUrlHttps, base::FilePath(), nullptr); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ ConvertWhenDownloadResponseIsValid) { -+ base::MockCallback -+ download_completed_callback; -+ -+ // SubscriptionRequestMaker is asked to create a request, -+ OngoingSubscriptionRequest::ResponseCallback response_callback; -+ EXPECT_CALL(request_maker_, Run()).WillOnce([&]() { -+ testing::InSequence sequence; -+ // Expect that the request gets started, record the response callback. -+ auto mock_ongoing_request = std::make_unique(); -+ EXPECT_CALL( -+ *mock_ongoing_request, -+ Start(testing::_, OngoingSubscriptionRequest::Method::GET, testing::_)) -+ .WillOnce(testing::SaveArg<2>(&response_callback)); -+ return mock_ongoing_request; -+ }); -+ -+ downloader_->StartDownload( -+ kSubscriptionUrlHttps, -+ SubscriptionDownloader::RetryPolicy::RetryUntilSucceeded, -+ download_completed_callback.Get()); -+ -+ const base::FilePath downloaded_flatbuffer_path(FILE_PATH_LITERAL("file.fb")); -+ // DownloadCompletedCallback will be called with a correctly converted -+ // FlatbufferData. -+ EXPECT_CALL(download_completed_callback, Run(testing::NotNull())); -+ EXPECT_CALL(conversion_executor_, -+ ConvertFilterListFile(kSubscriptionUrlHttps, -+ downloaded_flatbuffer_path, testing::_)) -+ .WillOnce(testing::WithArgs<2>( -+ testing::Invoke([](base::OnceCallback cb) { -+ std::move(cb).Run(std::make_unique()); -+ }))); -+ // OngoingSubscriptionRequest calls ResponseCallback with a path to file with -+ // valid flatbuffer content: -+ response_callback.Run(kSubscriptionUrlHttps, downloaded_flatbuffer_path, -+ nullptr); -+ // The conversion will happen in a thread pool, we will need to run the entire -+ // task environment to have all the callbacks execute. -+ task_environment_.RunUntilIdle(); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ RedirectWhenConverterResultIsRedirect) { -+ base::MockCallback -+ download_completed_callback; -+ const GURL redirect_url = -+ GURL("https://redirect_subscription.com/filterlist.txt"); -+ -+ // SubscriptionRequestMaker is asked to create a request, -+ OngoingSubscriptionRequest::ResponseCallback response_callback; -+ EXPECT_CALL(request_maker_, Run()).WillOnce([&]() { -+ testing::InSequence sequence; -+ // Expect that the request gets started, record the response callback. -+ auto mock_ongoing_request = std::make_unique(); -+ EXPECT_CALL( -+ *mock_ongoing_request, -+ Start(testing::_, OngoingSubscriptionRequest::Method::GET, testing::_)) -+ .WillOnce(testing::SaveArg<2>(&response_callback)); -+ // The request gets redirected to the expected URL -+ EXPECT_CALL(*mock_ongoing_request, Redirect(testing::_)); -+ return mock_ongoing_request; -+ }); -+ -+ downloader_->StartDownload( -+ kSubscriptionUrlHttps, -+ SubscriptionDownloader::RetryPolicy::RetryUntilSucceeded, -+ download_completed_callback.Get()); -+ -+ const base::FilePath downloaded_flatbuffer_path(FILE_PATH_LITERAL("file.fb")); -+ // DownloadCompletedCallback will not be called -+ EXPECT_CALL(download_completed_callback, Run(testing::_)).Times(0); -+ EXPECT_CALL(conversion_executor_, -+ ConvertFilterListFile(kSubscriptionUrlHttps, -+ downloaded_flatbuffer_path, testing::_)) -+ .WillOnce(testing::WithArgs<2>(testing::Invoke( -+ [&redirect_url](base::OnceCallback cb) { -+ std::move(cb).Run(redirect_url); -+ }))); -+ // OngoingSubscriptionRequest calls ResponseCallback with a path to file with -+ // valid flatbuffer content: -+ response_callback.Run(kSubscriptionUrlHttps, downloaded_flatbuffer_path, -+ nullptr); -+ // The conversion will happen in a thread pool, we will need to run the entire -+ // task environment to have all the callbacks execute. -+ task_environment_.RunUntilIdle(); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ AbortWhenExceedingMaxNumberOfRedirects) { -+ base::MockCallback -+ download_completed_callback; -+ const GURL redirect_url = -+ GURL("https://redirect_subscription.com/filterlist.txt"); -+ -+ // SubscriptionRequestMaker is asked to create a request, -+ OngoingSubscriptionRequest::ResponseCallback response_callback; -+ EXPECT_CALL(request_maker_, Run()).WillOnce([&]() { -+ testing::InSequence sequence; -+ // Expect that the request gets started, record the response callback. -+ auto mock_ongoing_request = std::make_unique(); -+ EXPECT_CALL( -+ *mock_ongoing_request, -+ Start(testing::_, OngoingSubscriptionRequest::Method::GET, testing::_)) -+ .WillOnce(testing::SaveArg<2>(&response_callback)); -+ // Redirect counter check gets called and returns kMaxNumberOfRedirects -+ EXPECT_CALL(*mock_ongoing_request, GetNumberOfRedirects()).WillOnce([&]() { -+ return SubscriptionDownloaderImpl::kMaxNumberOfRedirects; -+ }); -+ return mock_ongoing_request; -+ }); -+ -+ downloader_->StartDownload( -+ kSubscriptionUrlHttps, -+ SubscriptionDownloader::RetryPolicy::RetryUntilSucceeded, -+ download_completed_callback.Get()); -+ -+ const base::FilePath downloaded_flatbuffer_path(FILE_PATH_LITERAL("file.fb")); -+ // DownloadCompletedCallback will be called with null due to exceeding max -+ // number of redirects -+ EXPECT_CALL(download_completed_callback, Run(testing::IsNull())).Times(1); -+ EXPECT_CALL(conversion_executor_, -+ ConvertFilterListFile(kSubscriptionUrlHttps, -+ downloaded_flatbuffer_path, testing::_)) -+ .WillOnce(testing::WithArgs<2>(testing::Invoke( -+ [&redirect_url](base::OnceCallback cb) { -+ std::move(cb).Run(redirect_url); -+ }))); -+ // OngoingSubscriptionRequest calls ResponseCallback with a path to file with -+ // valid flatbuffer content: -+ response_callback.Run(kSubscriptionUrlHttps, downloaded_flatbuffer_path, -+ nullptr); -+ // The conversion will happen in a thread pool, we will need to run the entire -+ // task environment to have all the callbacks execute. -+ task_environment_.RunUntilIdle(); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, NoRetryWhenConversionFailed) { -+ base::MockCallback -+ download_completed_callback; -+ -+ // SubscriptionRequestMaker is asked to create a request, -+ OngoingSubscriptionRequest::ResponseCallback response_callback; -+ EXPECT_CALL(request_maker_, Run()).WillOnce([&]() { -+ testing::InSequence sequence; -+ // Expect that the request gets started, record the response callback. -+ auto mock_ongoing_request = std::make_unique(); -+ EXPECT_CALL( -+ *mock_ongoing_request, -+ Start(testing::_, OngoingSubscriptionRequest::Method::GET, testing::_)) -+ .WillOnce(testing::SaveArg<2>(&response_callback)); -+ // There should not be a retry since download was successful -+ EXPECT_CALL(*mock_ongoing_request, Retry()).Times(0); -+ return mock_ongoing_request; -+ }); -+ -+ EXPECT_CALL(persistent_metadata_, -+ IncrementDownloadErrorCount(kSubscriptionUrlHttps)); -+ -+ downloader_->StartDownload( -+ kSubscriptionUrlHttps, -+ SubscriptionDownloader::RetryPolicy::RetryUntilSucceeded, -+ download_completed_callback.Get()); -+ -+ const base::FilePath downloaded_flatbuffer_path(FILE_PATH_LITERAL("file.fb")); -+ -+ // DownloadCompletedCallback gets called with nullptr, due to conversion -+ // error. -+ EXPECT_CALL(download_completed_callback, Run(testing::IsNull())); -+ EXPECT_CALL(conversion_executor_, -+ ConvertFilterListFile(kSubscriptionUrlHttps, -+ downloaded_flatbuffer_path, testing::_)) -+ .WillOnce(testing::WithArgs<2>( -+ testing::Invoke([](base::OnceCallback cb) { -+ std::move(cb).Run(ConversionError("Error")); -+ }))); -+ // OngoingSubscriptionRequest calls ResponseCallback with a path to file with -+ // invalid flatbuffer content: -+ response_callback.Run(kSubscriptionUrlHttps, downloaded_flatbuffer_path, -+ nullptr); -+ // The conversion will happen in a thread pool, we will need to run the entire -+ // task environment to have all the callbacks execute. -+ task_environment_.RunUntilIdle(); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ DoNotRetryWhenConversionFailedIfPolicyForbids) { -+ base::MockCallback -+ download_completed_callback; -+ -+ // SubscriptionRequestMaker is asked to create a request, -+ OngoingSubscriptionRequest::ResponseCallback response_callback; -+ EXPECT_CALL(request_maker_, Run()).WillOnce([&]() { -+ testing::InSequence sequence; -+ // Expect that the request gets started, record the response callback. -+ auto mock_ongoing_request = std::make_unique(); -+ EXPECT_CALL( -+ *mock_ongoing_request, -+ Start(testing::_, OngoingSubscriptionRequest::Method::GET, testing::_)) -+ .WillOnce(testing::SaveArg<2>(&response_callback)); -+ // There will be NO retry attempt due to conversion failure because of -+ // RetryPolicy. -+ EXPECT_CALL(*mock_ongoing_request, Retry()).Times(0); -+ return mock_ongoing_request; -+ }); -+ -+ EXPECT_CALL(persistent_metadata_, -+ IncrementDownloadErrorCount(kSubscriptionUrlHttps)); -+ -+ downloader_->StartDownload(kSubscriptionUrlHttps, -+ SubscriptionDownloader::RetryPolicy::DoNotRetry, -+ download_completed_callback.Get()); -+ -+ const base::FilePath downloaded_flatbuffer_path(FILE_PATH_LITERAL("file.fb")); -+ // DownloadCompletedCallback will be called with nullptr. -+ EXPECT_CALL(download_completed_callback, Run(testing::IsNull())); -+ EXPECT_CALL(conversion_executor_, -+ ConvertFilterListFile(kSubscriptionUrlHttps, -+ downloaded_flatbuffer_path, testing::_)) -+ .WillOnce(testing::WithArgs<2>( -+ testing::Invoke([](base::OnceCallback cb) { -+ std::move(cb).Run(ConversionError("Error")); -+ }))); -+ // OngoingSubscriptionRequest calls ResponseCallback with a path to file with -+ // invalid flatbuffer content: -+ response_callback.Run(kSubscriptionUrlHttps, downloaded_flatbuffer_path, -+ nullptr); -+ // The conversion will happen in a thread pool, we will need to run the entire -+ // task environment to have all the callbacks execute. -+ task_environment_.RunUntilIdle(); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ HeadRequestReturnsConverterHeaderDate) { -+ auto header_response = network::CreateURLResponseHead(net::HTTP_OK); -+ header_response->headers->AddHeader("Date", "Mon, 27 Sep 2021 13:53:01 GMT"); -+ TestDateHeaderParsing(std::move(header_response), "202109271353"); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ HeadRequestReturnsConverterHeaderDateLowerCaseDate) { -+ auto header_response = network::CreateURLResponseHead(net::HTTP_OK); -+ header_response->headers->AddHeader("date", "Mon, 27 Sep 2021 13:53:01 GMT"); -+ TestDateHeaderParsing(std::move(header_response), "202109271353"); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ HeadRequestReturnsConverterHeaderDateMalformed) { -+ auto header_response = network::CreateURLResponseHead(net::HTTP_OK); -+ header_response->headers->AddHeader("Date", "Invalid format"); -+ TestDateHeaderParsing(std::move(header_response), ""); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ HeadRequestReturnsConverterHeaderDateMissing) { -+ auto header_response = network::CreateURLResponseHead(net::HTTP_OK); -+ TestDateHeaderParsing(std::move(header_response), ""); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, -+ HeadRequestSetsSubscriptionAsDisabled) { -+ EXPECT_CALL(persistent_metadata_, GetVersion(kSubscriptionUrlHttps)) -+ .WillRepeatedly(testing::Return("222")); -+ EXPECT_CALL(persistent_metadata_, -+ GetDownloadSuccessCount(kSubscriptionUrlHttps)) -+ .WillRepeatedly(testing::Return(3)); -+ -+ GURL requested_url; -+ // SubscriptionRequestMaker is asked to create a request, -+ EXPECT_CALL(request_maker_, Run()).WillOnce([&]() { -+ // Expect that the request gets started, record the requested url. -+ auto mock_ongoing_request = std::make_unique(); -+ EXPECT_CALL( -+ *mock_ongoing_request, -+ Start(testing::_, OngoingSubscriptionRequest::Method::HEAD, testing::_)) -+ .WillOnce(testing::SaveArg<0>(&requested_url)); -+ return mock_ongoing_request; -+ }); -+ -+ downloader_->DoHeadRequest(kSubscriptionUrlHttps, base::DoNothing()); -+ -+ // The request's URL contains expected query parameters. -+ const auto query_params = -+ base::SplitStringPiece(requested_url.query_piece(), "&", -+ base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); -+ EXPECT_THAT(query_params, -+ testing::UnorderedElementsAre( -+ "addonName=eyeo-chromium-sdk", "addonVersion=1.0", -+ "application=test_app", "applicationVersion=123", -+ "platform=Linux", "platformVersion=1.0", "lastVersion=222", -+ "disabled=true", "downloadCount=3")); -+ -+ // The request's base url is |subscription_url|. -+ GURL::Replacements strip_query; -+ strip_query.ClearQuery(); -+ EXPECT_EQ(requested_url.ReplaceComponents(strip_query), -+ kSubscriptionUrlHttps); -+} -+ -+TEST_F(AdblockSubscriptionDownloaderImplTest, TwoConcurrentDoHeadRequests) { -+ EXPECT_CALL(persistent_metadata_, GetVersion(kSubscriptionUrlHttps)) -+ .WillRepeatedly(testing::Return("222")); -+ EXPECT_CALL(persistent_metadata_, -+ GetDownloadSuccessCount(kSubscriptionUrlHttps)) -+ .WillRepeatedly(testing::Return(3)); -+ -+ testing::StrictMock< -+ base::MockCallback> -+ head_request_callback; -+ // SubscriptionRequestMaker is asked to create a request, -+ EXPECT_CALL(request_maker_, Run()).WillOnce([&]() { -+ // Expect that the request gets started, record the requested url. -+ auto mock_ongoing_request = std::make_unique(); -+ EXPECT_CALL(*mock_ongoing_request, -+ Start(testing::_, OngoingSubscriptionRequest::Method::HEAD, -+ testing::_)); -+ return mock_ongoing_request; -+ }); -+ downloader_->DoHeadRequest(kSubscriptionUrlHttps, -+ head_request_callback.Get()); -+ -+ // The HeadRequestCallback is called with empty version string before -+ // concurrent ping overrides ongoing one. -+ EXPECT_CALL(head_request_callback, Run(testing::StrEq(""))); -+ // SubscriptionRequestMaker is asked to create a request, -+ EXPECT_CALL(request_maker_, Run()).WillOnce([&]() { -+ // Expect that the request gets started, record the requested url. -+ auto mock_ongoing_request = std::make_unique(); -+ EXPECT_CALL(*mock_ongoing_request, -+ Start(testing::_, OngoingSubscriptionRequest::Method::HEAD, -+ testing::_)); -+ return mock_ongoing_request; -+ }); -+ downloader_->DoHeadRequest(kSubscriptionUrlHttps, base::DoNothing()); -+} -+ +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/subscription_persistent_metadata_impl_test.cc b/components/adblock/core/subscription/test/subscription_persistent_metadata_impl_test.cc ++ ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_H_ +diff --git a/components/adblock/core/subscription/subscription_persistent_metadata_impl.cc b/components/adblock/core/subscription/subscription_persistent_metadata_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/subscription_persistent_metadata_impl_test.cc -@@ -0,0 +1,213 @@ ++++ b/components/adblock/core/subscription/subscription_persistent_metadata_impl.cc +@@ -0,0 +1,170 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -32826,556 +18720,162 @@ new file mode 100644 + +#include "components/adblock/core/subscription/subscription_persistent_metadata_impl.h" + -+#include -+ -+#include "base/test/task_environment.h" ++#include "base/json/values_util.h" +#include "base/time/time.h" ++#include "base/values.h" +#include "components/adblock/core/common/adblock_prefs.h" -+#include "components/prefs/testing_pref_service.h" -+#include "testing/gtest/include/gtest/gtest.h" ++#include "components/prefs/scoped_user_pref_update.h" + +namespace adblock { ++namespace { ++constexpr base::StringPiece kExpirationTimeKey = "expiration_time"; ++constexpr base::StringPiece kLastInstallationTimeKey = "last_installation_time"; ++constexpr base::StringPiece kVersionKey = "version"; ++constexpr base::StringPiece kDownloadCountKey = "download_count"; ++constexpr base::StringPiece kErrorCountKey = "error_count"; ++} // namespace + -+// We check two scenarios - whether testee retains relevant values as it is -+// used, and whether it persists them into Prefs. -+enum class PersistenceType { ValuesPersistInMemory, ValuesPersistInPrefs }; -+ -+class AdblockSubscriptionPersistentMetadataImplTest -+ : public testing::TestWithParam { -+ public: -+ AdblockSubscriptionPersistentMetadataImplTest() { -+ common::prefs::RegisterProfilePrefs(prefs_.registry()); -+ metadata_ = std::make_unique(&prefs_); -+ } -+ -+ void MaybeRecreateMetadata() { -+ if (GetParam() == PersistenceType::ValuesPersistInPrefs) { -+ // Recreate SubscriptionPersistentMetadataImpl to make sure it re-reads -+ // its state from prefs. -+ metadata_ = std::make_unique(&prefs_); -+ } else { -+ // Do nothing, verify SubscriptionPersistentMetadataImpl maintains a -+ // consistent state in memory/ -+ } -+ } -+ -+ protected: -+ TestingPrefServiceSimple prefs_; -+ std::unique_ptr metadata_; -+ base::test::TaskEnvironment task_environment_{ -+ base::test::TaskEnvironment::TimeSource::MOCK_TIME}; -+ const GURL kUrl1{"https://subscription.com/filters1.txt"}; -+ const GURL kUrl2{"https://subscription.com/filters2.txt"}; ++struct SubscriptionPersistentMetadataImpl::Metadata { ++ base::Time expiration_time; ++ base::Time last_installation_time; ++ std::string version{"0"}; ++ int download_count{0}; ++ int error_count{0}; +}; + -+TEST_F(AdblockSubscriptionPersistentMetadataImplTest, -+ UntrackedSubscriptionConsideredExpired) { -+ // Normally, production code should only ask about expiration of installed -+ // subscriptions, and subscriptions should always have an expiration date set -+ // during installation. If there's any corruption though, consider the -+ // subscription expired to trigger an update and, hopefully, force setting a -+ // real expiration time. -+ EXPECT_TRUE(metadata_->IsExpired(kUrl1)); -+} -+ -+TEST_F(AdblockSubscriptionPersistentMetadataImplTest, -+ UnversionedSubscriptionReturnsZeroVersion) { -+ // It is valid for a subscription to not have a version set. In that case, -+ // we're expected to send "0" in download request's relevant query param. -+ EXPECT_EQ("0", metadata_->GetVersion(kUrl1)); -+} -+ -+TEST_F(AdblockSubscriptionPersistentMetadataImplTest, -+ UntrackedSubscriptionErrorAndDownloadCountAreZero) { -+ // During first-time installation, it is expected that there's no download -+ // count or error count registered yet. -+ EXPECT_EQ(0, metadata_->GetDownloadSuccessCount(kUrl1)); -+ EXPECT_EQ(0, metadata_->GetDownloadErrorCount(kUrl1)); ++SubscriptionPersistentMetadataImpl::SubscriptionPersistentMetadataImpl( ++ PrefService* prefs) ++ : prefs_(prefs) { ++ LoadFromPrefs(); +} + -+TEST_P(AdblockSubscriptionPersistentMetadataImplTest, ExpirationTimeTracked) { -+ const auto expiration1 = base::Days(1); -+ const auto expiration2 = base::Days(2); -+ metadata_->SetExpirationInterval(kUrl1, expiration1); -+ metadata_->SetExpirationInterval(kUrl2, expiration2); -+ -+ // Last installation time gets set. -+ EXPECT_EQ(metadata_->GetLastInstallationTime(kUrl1), base::Time::Now()); -+ EXPECT_EQ(metadata_->GetLastInstallationTime(kUrl2), base::Time::Now()); -+ -+ // Both expiration dates are in the future. -+ EXPECT_FALSE(metadata_->IsExpired(kUrl1)); -+ EXPECT_FALSE(metadata_->IsExpired(kUrl2)); -+ -+ // Forward clock by 1 day to trigger first expiration. -+ task_environment_.AdvanceClock(base::Days(1)); -+ -+ // Last installation time is now in the past. -+ EXPECT_EQ(metadata_->GetLastInstallationTime(kUrl1), -+ base::Time::Now() - base::Days(1)); -+ EXPECT_EQ(metadata_->GetLastInstallationTime(kUrl2), -+ base::Time::Now() - base::Days(1)); -+ -+ // First subscription is now expired. -+ EXPECT_TRUE(metadata_->IsExpired(kUrl1)); -+ EXPECT_FALSE(metadata_->IsExpired(kUrl2)); -+ -+ MaybeRecreateMetadata(); -+ -+ // Forward clock by another day to trigger second expiration. -+ task_environment_.AdvanceClock(base::Days(1)); -+ -+ // Both subscriptions are now expired. -+ EXPECT_TRUE(metadata_->IsExpired(kUrl1)); -+ EXPECT_TRUE(metadata_->IsExpired(kUrl2)); ++SubscriptionPersistentMetadataImpl::~SubscriptionPersistentMetadataImpl() = ++ default; + -+ // Last installation time is even further in the past. -+ EXPECT_EQ(metadata_->GetLastInstallationTime(kUrl1), -+ base::Time::Now() - base::Days(2)); -+ EXPECT_EQ(metadata_->GetLastInstallationTime(kUrl2), -+ base::Time::Now() - base::Days(2)); ++void SubscriptionPersistentMetadataImpl::SetExpirationInterval( ++ const GURL& subscription_url, ++ base::TimeDelta expires_in) { ++ const auto now = base::Time::Now(); ++ metadata_map_[subscription_url].last_installation_time = now; ++ metadata_map_[subscription_url].expiration_time = now + expires_in; ++ UpdatePrefs(); +} + -+TEST_P(AdblockSubscriptionPersistentMetadataImplTest, VersionTracked) { -+ const std::string version1 = "1.0"; -+ const std::string version2 = "2.0"; -+ metadata_->SetVersion(kUrl1, version1); -+ metadata_->SetVersion(kUrl2, version2); -+ -+ MaybeRecreateMetadata(); -+ -+ EXPECT_EQ(version1, metadata_->GetVersion(kUrl1)); -+ EXPECT_EQ(version2, metadata_->GetVersion(kUrl2)); -+ -+ // Versions can be overwritten later. -+ const std::string new_version = "3.0"; -+ metadata_->SetVersion(kUrl1, new_version); -+ -+ MaybeRecreateMetadata(); -+ -+ EXPECT_EQ(new_version, metadata_->GetVersion(kUrl1)); ++void SubscriptionPersistentMetadataImpl::SetVersion( ++ const GURL& subscription_url, ++ std::string version) { ++ metadata_map_[subscription_url].version = std::move(version); ++ UpdatePrefs(); +} + -+TEST_P(AdblockSubscriptionPersistentMetadataImplTest, DownloadCountTracked) { -+ metadata_->IncrementDownloadSuccessCount(kUrl1); -+ metadata_->IncrementDownloadSuccessCount(kUrl1); -+ metadata_->IncrementDownloadSuccessCount(kUrl1); -+ -+ metadata_->IncrementDownloadSuccessCount(kUrl2); -+ -+ MaybeRecreateMetadata(); -+ -+ EXPECT_EQ(3, metadata_->GetDownloadSuccessCount(kUrl1)); -+ EXPECT_EQ(1, metadata_->GetDownloadSuccessCount(kUrl2)); ++void SubscriptionPersistentMetadataImpl::IncrementDownloadSuccessCount( ++ const GURL& subscription_url) { ++ metadata_map_[subscription_url].download_count++; ++ metadata_map_[subscription_url].error_count = 0; ++ UpdatePrefs(); +} + -+TEST_P(AdblockSubscriptionPersistentMetadataImplTest, ErrorCountTracked) { -+ metadata_->IncrementDownloadErrorCount(kUrl1); -+ metadata_->IncrementDownloadErrorCount(kUrl1); -+ metadata_->IncrementDownloadErrorCount(kUrl1); -+ -+ metadata_->IncrementDownloadErrorCount(kUrl2); -+ -+ MaybeRecreateMetadata(); -+ -+ EXPECT_EQ(3, metadata_->GetDownloadErrorCount(kUrl1)); -+ EXPECT_EQ(1, metadata_->GetDownloadErrorCount(kUrl2)); -+ -+ // A successful download resets the error count. -+ metadata_->IncrementDownloadSuccessCount(kUrl1); -+ -+ MaybeRecreateMetadata(); -+ -+ EXPECT_EQ(0, metadata_->GetDownloadErrorCount(kUrl1)); ++void SubscriptionPersistentMetadataImpl::IncrementDownloadErrorCount( ++ const GURL& subscription_url) { ++ metadata_map_[subscription_url].error_count++; ++ UpdatePrefs(); +} + -+TEST_P(AdblockSubscriptionPersistentMetadataImplTest, RemovingMetadata) { -+ // Set some values for kUrl1 -+ metadata_->IncrementDownloadSuccessCount(kUrl1); -+ metadata_->IncrementDownloadErrorCount(kUrl1); -+ metadata_->SetVersion(kUrl1, "version"); -+ metadata_->SetExpirationInterval(kUrl1, base::Days(1)); -+ -+ // Also set a value for kUrl2 -+ metadata_->IncrementDownloadErrorCount(kUrl2); -+ -+ metadata_->RemoveMetadata(kUrl1); -+ -+ MaybeRecreateMetadata(); -+ -+ // The value set for kUrl2 is left untouched. -+ EXPECT_EQ(1, metadata_->GetDownloadErrorCount(kUrl2)); -+ -+ // The values for kUrl1 are back to defaults. -+ EXPECT_TRUE(metadata_->IsExpired(kUrl1)); -+ EXPECT_EQ("0", metadata_->GetVersion(kUrl1)); -+ EXPECT_EQ(0, metadata_->GetDownloadSuccessCount(kUrl1)); -+ EXPECT_EQ(0, metadata_->GetDownloadErrorCount(kUrl1)); ++bool SubscriptionPersistentMetadataImpl::IsExpired( ++ const GURL& subscription_url) const { ++ auto it = metadata_map_.find(subscription_url); ++ if (it == metadata_map_.end()) { ++ return true; ++ } ++ return it->second.expiration_time <= base::Time::Now(); +} + -+INSTANTIATE_TEST_SUITE_P( -+ All, -+ AdblockSubscriptionPersistentMetadataImplTest, -+ testing::Values(PersistenceType::ValuesPersistInMemory, -+ PersistenceType::ValuesPersistInPrefs)); -+ -+} // namespace adblock -diff --git a/components/adblock/core/subscription/test/subscription_persistent_storage_impl_test.cc b/components/adblock/core/subscription/test/subscription_persistent_storage_impl_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/subscription_persistent_storage_impl_test.cc -@@ -0,0 +1,346 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/subscription/subscription_persistent_storage_impl.h" -+ -+#include -+#include -+#include -+ -+#include "base/base_paths.h" -+#include "base/containers/span.h" -+#include "base/files/file_enumerator.h" -+#include "base/files/file_path.h" -+#include "base/files/file_util.h" -+#include "base/files/scoped_temp_dir.h" -+#include "base/functional/bind.h" -+#include "base/functional/callback_helpers.h" -+#include "base/memory/raw_ptr.h" -+#include "base/memory/scoped_refptr.h" -+#include "base/path_service.h" -+#include "base/test/bind.h" -+#include "base/test/mock_callback.h" -+#include "base/test/task_environment.h" -+#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/subscription/subscription_config.h" -+#include "components/adblock/core/subscription/test/mock_subscription_persistent_metadata.h" -+#include "components/grit/components_resources.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+namespace { -+ -+class MockSubscriptionValidator : public SubscriptionValidator { -+ public: -+ MOCK_METHOD(bool, -+ MockIsSignatureValid, -+ (const FlatbufferData& data, const base::FilePath& path), -+ (const)); -+ MOCK_METHOD(void, -+ MockStoreTrustedSignature, -+ (const FlatbufferData& data, const base::FilePath& path), -+ ()); -+ MOCK_METHOD(void, -+ MockRemoveStoredSignature, -+ (const base::FilePath& path), -+ ()); -+ -+ IsSignatureValidThreadSafeCallback IsSignatureValid() const final { -+ return base::BindRepeating(&MockSubscriptionValidator::MockIsSignatureValid, -+ base::Unretained(this)); ++base::Time SubscriptionPersistentMetadataImpl::GetLastInstallationTime( ++ const GURL& subscription_url) const { ++ auto it = metadata_map_.find(subscription_url); ++ if (it == metadata_map_.end()) { ++ return base::Time(); + } ++ return it->second.last_installation_time; ++} + -+ StoreTrustedSignatureThreadSafeCallback StoreTrustedSignature() final { -+ return base::BindRepeating( -+ &MockSubscriptionValidator::MockStoreTrustedSignature, -+ base::Unretained(this)); ++std::string SubscriptionPersistentMetadataImpl::GetVersion( ++ const GURL& subscription_url) const { ++ auto it = metadata_map_.find(subscription_url); ++ if (it == metadata_map_.end()) { ++ return "0"; + } ++ return it->second.version; ++} + -+ RemoveStoredSignatureThreadSafeCallback RemoveStoredSignature() final { -+ return base::BindRepeating( -+ &MockSubscriptionValidator::MockRemoveStoredSignature, -+ base::Unretained(this)); ++int SubscriptionPersistentMetadataImpl::GetDownloadSuccessCount( ++ const GURL& subscription_url) const { ++ auto it = metadata_map_.find(subscription_url); ++ if (it == metadata_map_.end()) { ++ return 0; + } -+ -+ ~MockSubscriptionValidator() override = default; -+}; -+ -+MATCHER_P(BufferMatches, expected_span, "") { -+ const auto arg_span = base::make_span(arg.data(), arg.size()); -+ return std::equal(arg_span.begin(), arg_span.end(), expected_span.begin(), -+ expected_span.end()); ++ return it->second.download_count; +} + -+} // namespace -+ -+class AdblockSubscriptionPersistentStorageImplTest : public ::testing::Test { -+ public: -+ void SetUp() final { -+ ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); -+ RecreateStorage(); ++int SubscriptionPersistentMetadataImpl::GetDownloadErrorCount( ++ const GURL& subscription_url) const { ++ auto it = metadata_map_.find(subscription_url); ++ if (it == metadata_map_.end()) { ++ return 0; + } ++ return it->second.error_count; ++} + -+ void TearDown() final { -+ // Avoid dangling pointers during destruction. -+ validator_ = nullptr; -+ } ++void SubscriptionPersistentMetadataImpl::RemoveMetadata( ++ const GURL& subscription_url) { ++ metadata_map_.erase(subscription_url); ++ UpdatePrefs(); ++} + -+ void RecreateStorage() { -+ auto validator = std::make_unique(); -+ validator_ = validator.get(); -+ storage_ = std::make_unique( -+ temp_dir_.GetPath(), std::move(validator), &metadata_); ++void SubscriptionPersistentMetadataImpl::UpdatePrefs() { ++ base::Value::Dict dict; ++ for (const auto& pair : metadata_map_) { ++ base::Value::Dict subscription; ++ subscription.Set(kExpirationTimeKey, ++ TimeToValue(pair.second.expiration_time)); ++ subscription.Set(kLastInstallationTimeKey, ++ TimeToValue(pair.second.last_installation_time)); ++ subscription.Set(kVersionKey, pair.second.version); ++ subscription.Set(kDownloadCountKey, pair.second.download_count); ++ subscription.Set(kErrorCountKey, pair.second.error_count); ++ dict.Set(pair.first.spec(), std::move(subscription)); + } ++ prefs_->SetDict(common::prefs::kSubscriptionMetadata, std::move(dict)); ++} + -+ base::FilePath PathRelativeToTemp(base::StringPiece file_name) const { -+ return temp_dir_.GetPath().AppendASCII(file_name); ++void SubscriptionPersistentMetadataImpl::LoadFromPrefs() { ++ const base::Value& dict = ++ prefs_->GetValue(common::prefs::kSubscriptionMetadata); ++ DCHECK(dict.is_dict()); ++ for (const auto dict_item : dict.GetDict()) { ++ Metadata subscription; ++ DCHECK(dict_item.second.is_dict()); ++ const auto* d = dict_item.second.GetIfDict(); ++ subscription.expiration_time = ++ ValueToTime(d->Find(kExpirationTimeKey)).value_or(base::Time()); ++ subscription.last_installation_time = ++ ValueToTime(d->Find(kLastInstallationTimeKey)).value_or(base::Time()); ++ const auto* version = d->FindString(kVersionKey); ++ if (version) { ++ subscription.version = *version; ++ } ++ subscription.error_count = d->FindInt(kErrorCountKey).value_or(0); ++ subscription.download_count = d->FindInt(kDownloadCountKey).value_or(0); ++ metadata_map_.emplace(dict_item.first, std::move(subscription)); + } -+ -+ const std::unique_ptr kEasylistFlatbuffer = -+ utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST); -+ const base::span kEasylistData = -+ base::make_span(kEasylistFlatbuffer->data(), kEasylistFlatbuffer->size()); -+ const std::unique_ptr kExceptionrulesFlatbuffer = -+ utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EXCEPTIONRULES); -+ const base::span kExceptionrulesData = -+ base::make_span(kExceptionrulesFlatbuffer->data(), -+ kExceptionrulesFlatbuffer->size()); -+ -+ base::test::TaskEnvironment task_environment_; -+ base::ScopedTempDir temp_dir_; -+ MockSubscriptionPersistentMetadata metadata_; -+ raw_ptr validator_; -+ std::unique_ptr storage_; -+}; -+ -+TEST_F(AdblockSubscriptionPersistentStorageImplTest, -+ ReadsValidSubscriptionsAndDeletesInvalid) { -+ // Populate temp_dir_ with two valid flatbuffer files and two invalid ones. -+ ASSERT_TRUE( -+ base::WriteFile(PathRelativeToTemp("easylist.fb"), kEasylistData)); -+ ASSERT_TRUE(base::WriteFile(PathRelativeToTemp("exceptionrules.fb"), -+ kExceptionrulesData)); -+ ASSERT_TRUE(base::WriteFile(PathRelativeToTemp("invalid1.fb"), "some_data")); -+ ASSERT_TRUE(base::WriteFile(PathRelativeToTemp("invalid2.fb"), "bogus")); -+ -+ // Initialize the storage, it should attempt to read contents of temp_dir_. -+ base::MockCallback callback; -+ -+ // Save the argument passed to callback. -+ std::vector> loaded_subscriptions; -+ EXPECT_CALL(callback, Run(testing::_)) -+ .WillOnce(testing::SaveArg<0>(&loaded_subscriptions)); -+ -+ // Storage will query metadata for the subscriptions in managed to read from -+ // disk. -+ const auto installation_time_easylist = -+ base::Time::FromDeltaSinceWindowsEpoch(base::Seconds(30)); -+ const auto installation_time_exceptionrules = -+ base::Time::FromDeltaSinceWindowsEpoch(base::Seconds(60)); -+ EXPECT_CALL(metadata_, GetLastInstallationTime(DefaultSubscriptionUrl())) -+ .WillOnce(testing::Return(installation_time_easylist)); -+ EXPECT_CALL(metadata_, GetLastInstallationTime(AcceptableAdsUrl())) -+ .WillOnce(testing::Return(installation_time_exceptionrules)); -+ -+ // Subscriptions found on disk will be validated. -+ // First two files are OK. -+ EXPECT_CALL(*validator_, -+ MockIsSignatureValid(BufferMatches(kEasylistData), -+ PathRelativeToTemp("easylist.fb"))) -+ .WillOnce(testing::Return(true)); -+ EXPECT_CALL(*validator_, -+ MockIsSignatureValid(BufferMatches(kExceptionrulesData), -+ PathRelativeToTemp("exceptionrules.fb"))) -+ .WillOnce(testing::Return(true)); -+ // The other two are invalid. -+ EXPECT_CALL(*validator_, -+ MockIsSignatureValid(BufferMatches(std::string("some_data")), -+ PathRelativeToTemp("invalid1.fb"))) -+ .WillOnce(testing::Return(false)); -+ EXPECT_CALL(*validator_, -+ MockIsSignatureValid(BufferMatches(std::string("bogus")), -+ PathRelativeToTemp("invalid2.fb"))) -+ .WillOnce(testing::Return(false)); -+ -+ storage_->LoadSubscriptions(callback.Get()); -+ task_environment_.RunUntilIdle(); -+ -+ // The two valid subscriptions were loaded. -+ ASSERT_EQ(loaded_subscriptions.size(), 2u); -+ base::ranges::sort(loaded_subscriptions, {}, &Subscription::GetSourceUrl); -+ -+ EXPECT_EQ(loaded_subscriptions[0]->GetSourceUrl(), DefaultSubscriptionUrl()); -+ EXPECT_EQ(loaded_subscriptions[0]->GetInstallationState(), -+ Subscription::InstallationState::Installed); -+ EXPECT_EQ(loaded_subscriptions[0]->GetInstallationTime(), -+ installation_time_easylist); -+ -+ EXPECT_EQ(loaded_subscriptions[1]->GetSourceUrl(), AcceptableAdsUrl()); -+ EXPECT_EQ(loaded_subscriptions[1]->GetInstallationState(), -+ Subscription::InstallationState::Installed); -+ EXPECT_EQ(loaded_subscriptions[1]->GetInstallationTime(), -+ installation_time_exceptionrules); -+ -+ // The storage directory no longer contains the invalid files. -+ EXPECT_FALSE(base::PathExists(PathRelativeToTemp("invalid1.fb"))); -+ EXPECT_FALSE(base::PathExists(PathRelativeToTemp("invalid2.fb"))); -+} -+ -+TEST_F(AdblockSubscriptionPersistentStorageImplTest, StoreValidSubscription) { -+ storage_->LoadSubscriptions(base::DoNothing()); -+ task_environment_.RunUntilIdle(); -+ -+ // Attempt to store a valid subscription. -+ base::MockCallback callback; -+ // The callback will be called with parsed Subscription. Save the argument. -+ scoped_refptr loaded_subscription; -+ EXPECT_CALL(callback, Run(testing::_)) -+ .WillOnce(testing::SaveArg<0>(&loaded_subscription)); -+ // The subscription will get its signature stored. -+ base::FilePath signature_path; -+ EXPECT_CALL(*validator_, MockStoreTrustedSignature( -+ BufferMatches(kEasylistData), testing::_)) -+ .WillOnce(testing::SaveArg<1>(&signature_path)); -+ -+ storage_->StoreSubscription(utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST), -+ callback.Get()); -+ task_environment_.RunUntilIdle(); -+ -+ ASSERT_TRUE(loaded_subscription); -+ EXPECT_EQ(loaded_subscription->GetSourceUrl(), DefaultSubscriptionUrl()); -+ -+ // The storage directory is not empty, contains the subscription file with -+ // unspecified filename. -+ EXPECT_FALSE(base::IsDirectoryEmpty(temp_dir_.GetPath())); -+ base::FileEnumerator enumerator(temp_dir_.GetPath(), false, -+ base::FileEnumerator::FILES); -+ base::FilePath subscription_path = enumerator.Next(); -+ EXPECT_FALSE(subscription_path.empty()); -+ // The base file API operates on chars and flatbuffer data is stored in -+ // unsigned chars. To compare the content of a file with flatbuffer data, we -+ // need to reinterpret cast. -+ std::string file_content; -+ ASSERT_TRUE(base::ReadFileToString(subscription_path, &file_content)); -+ const base::span reinterpreted_content( -+ reinterpret_cast(file_content.data()), -+ file_content.size()); -+ EXPECT_TRUE(base::ranges::equal(reinterpreted_content, kEasylistData)); -+ // SignatureValidator was given the same path as the one used for storage. -+ EXPECT_EQ(subscription_path, signature_path); -+} -+ -+TEST_F(AdblockSubscriptionPersistentStorageImplTest, -+ StoreAndRemoveSubscription) { -+ // Temp directory is empty in the begining -+ EXPECT_TRUE(base::IsDirectoryEmpty(temp_dir_.GetPath())); -+ -+ storage_->LoadSubscriptions(base::DoNothing()); -+ task_environment_.RunUntilIdle(); -+ -+ // Store a valid subscription. -+ base::MockCallback callback; -+ scoped_refptr loaded_subscription; -+ EXPECT_CALL(callback, Run(testing::_)) -+ .WillOnce(testing::SaveArg<0>(&loaded_subscription)); -+ -+ // The subscription will get its signature stored. -+ base::FilePath signature_path; -+ EXPECT_CALL(*validator_, MockStoreTrustedSignature( -+ BufferMatches(kEasylistData), testing::_)) -+ .WillOnce(testing::SaveArg<1>(&signature_path)); -+ -+ storage_->StoreSubscription(utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST), -+ callback.Get()); -+ task_environment_.RunUntilIdle(); -+ ASSERT_TRUE(loaded_subscription); -+ -+ // Directory is not empty, contains the subscription. -+ EXPECT_FALSE(base::IsDirectoryEmpty(temp_dir_.GetPath())); -+ -+ // The subscription will get its signature removed. -+ EXPECT_CALL(*validator_, MockRemoveStoredSignature(signature_path)); -+ -+ // Remove the subscription. -+ storage_->RemoveSubscription(loaded_subscription); -+ -+ // Reset the pointer to trigger the destructor of loaded_subscription -+ // This is done by FilteringConfigurationMaintainerImpl -+ loaded_subscription.reset(); -+ -+ task_environment_.RunUntilIdle(); -+ -+ // Directory is now empty again. -+ EXPECT_TRUE(base::IsDirectoryEmpty(temp_dir_.GetPath())); -+} -+ -+TEST_F(AdblockSubscriptionPersistentStorageImplTest, StorageIsPersistent) { -+ // Initially, no loaded subscriptions. -+ base::MockCallback callback; -+ std::vector> loaded_subscriptions; -+ EXPECT_CALL(callback, Run(testing::_)) -+ .WillOnce(testing::SaveArg<0>(&loaded_subscriptions)); -+ storage_->LoadSubscriptions(callback.Get()); -+ task_environment_.RunUntilIdle(); -+ -+ ASSERT_TRUE(loaded_subscriptions.empty()); -+ -+ // Validator will be asked to store the signature. -+ base::FilePath signature_path; -+ EXPECT_CALL(*validator_, MockStoreTrustedSignature( -+ BufferMatches(kEasylistData), testing::_)) -+ .WillOnce(testing::SaveArg<1>(&signature_path)); -+ -+ // Metadata will be updated. -+ EXPECT_CALL(metadata_, -+ SetExpirationInterval(DefaultSubscriptionUrl(), base::Days(1))); -+ EXPECT_CALL(metadata_, SetVersion(DefaultSubscriptionUrl(), testing::_)); -+ EXPECT_CALL(metadata_, -+ IncrementDownloadSuccessCount(DefaultSubscriptionUrl())); -+ -+ // Store a valid subscription. -+ storage_->StoreSubscription(utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST), -+ base::DoNothing()); -+ task_environment_.RunUntilIdle(); -+ -+ // Destroy and re-create storage. -+ RecreateStorage(); -+ -+ // Validator will be asked to check the signature of subscription on disk. -+ // Will query the path passed to |StoreTrustedSignature| before. -+ EXPECT_CALL(*validator_, MockIsSignatureValid(BufferMatches(kEasylistData), -+ signature_path)) -+ .WillOnce(testing::Return(true)); -+ -+ // Load subscriptions. -+ EXPECT_CALL(callback, Run(testing::_)) -+ .WillOnce(testing::SaveArg<0>(&loaded_subscriptions)); -+ storage_->LoadSubscriptions(callback.Get()); -+ task_environment_.RunUntilIdle(); -+ -+ // This time, we see the subscription added in storage's "previous life". -+ ASSERT_EQ(loaded_subscriptions.size(), 1u); -+ EXPECT_EQ(loaded_subscriptions[0]->GetSourceUrl(), DefaultSubscriptionUrl()); +} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/subscription_service_impl_test.cc b/components/adblock/core/subscription/test/subscription_service_impl_test.cc +diff --git a/components/adblock/core/subscription/subscription_persistent_metadata_impl.h b/components/adblock/core/subscription/subscription_persistent_metadata_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/subscription_service_impl_test.cc -@@ -0,0 +1,287 @@ ++++ b/components/adblock/core/subscription/subscription_persistent_metadata_impl.h +@@ -0,0 +1,62 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -33393,281 +18893,56 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/subscription_service_impl.h" -+#include ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_IMPL_H_ + -+#include "base/functional/bind.h" -+#include "base/memory/raw_ptr.h" -+#include "base/memory/scoped_refptr.h" -+#include "base/ranges/algorithm.h" -+#include "components/adblock/core/configuration/filtering_configuration.h" -+#include "components/adblock/core/configuration/filtering_configuration_prefs.h" -+#include "components/adblock/core/configuration/persistent_filtering_configuration.h" -+#include "components/adblock/core/configuration/test/fake_filtering_configuration.h" -+#include "components/adblock/core/subscription/filtering_configuration_maintainer.h" -+#include "components/adblock/core/subscription/subscription_collection.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/adblock/core/subscription/test/mock_filtering_configuration_maintainer.h" -+#include "components/adblock/core/subscription/test/mock_subscription.h" -+#include "components/adblock/core/subscription/test/mock_subscription_collection.h" -+#include "gmock/gmock.h" -+#include "gtest/gtest.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+#include "url/gurl.h" ++#include + -+using testing::Return; ++#include "base/memory/raw_ptr.h" ++#include "components/adblock/core/subscription/subscription_persistent_metadata.h" ++#include "components/prefs/pref_service.h" + +namespace adblock { -+namespace { -+class MockSubscriptionObserver -+ : public SubscriptionService::SubscriptionObserver { -+ public: -+ MOCK_METHOD(void, -+ OnSubscriptionInstalled, -+ (const GURL& subscription_url), -+ (override)); -+}; -+} // namespace + -+class AdblockSubscriptionServiceImplTest : public testing::Test { ++// Stores persistent subscription metadata in PrefService. ++class SubscriptionPersistentMetadataImpl final ++ : public SubscriptionPersistentMetadata { + public: -+ struct MaintainerFactoryCall { -+ raw_ptr input_configuration; -+ SubscriptionServiceImpl::SubscriptionUpdatedCallback input_update_callback; -+ raw_ptr output_maintainer; -+ }; ++ explicit SubscriptionPersistentMetadataImpl(PrefService* prefs); ++ ~SubscriptionPersistentMetadataImpl() final; + -+ AdblockSubscriptionServiceImplTest() -+ : testee_( -+ base::BindRepeating( -+ &AdblockSubscriptionServiceImplTest::MockMakeMaintainer, -+ base::Unretained(this)), -+ base::BindRepeating( -+ &AdblockSubscriptionServiceImplTest::MockCleanupConfiguration, -+ base::Unretained(this))) {} -+ -+ void TearDown() override { -+ // Avoid dangling pointers during destruction. -+ maintainer_factory_calls_.clear(); -+ } ++ void SetExpirationInterval(const GURL& subscription_url, ++ base::TimeDelta expires_in) final; ++ void SetVersion(const GURL& subscription_url, std::string version) final; ++ void IncrementDownloadSuccessCount(const GURL& subscription_url) final; ++ void IncrementDownloadErrorCount(const GURL& subscription_url) final; + -+ void DisableConfigurationAndEnsureMaintainerDestroyed( -+ MaintainerFactoryCall* entry) { -+ bool maintainer_destroyed = false; -+ EXPECT_CALL(*entry->output_maintainer, Destructor()).WillOnce([&]() { -+ maintainer_destroyed = true; -+ }); -+ entry->output_maintainer = nullptr; -+ entry->input_configuration->SetEnabled(false); -+ // Explicitly verifying the maintainer was destroyed now, because the -+ // destructor will always be called *eventually*. We want to make sure it -+ // was called in response to SetEnabled(false). -+ EXPECT_TRUE(maintainer_destroyed); -+ } ++ bool IsExpired(const GURL& subscription_url) const final; ++ base::Time GetLastInstallationTime(const GURL& subscription_url) const final; ++ std::string GetVersion(const GURL& subscription_url) const final; ++ int GetDownloadSuccessCount(const GURL& subscription_url) const final; ++ int GetDownloadErrorCount(const GURL& subscription_url) const final; + -+ std::unique_ptr MockMakeMaintainer( -+ FilteringConfiguration* configuration, -+ SubscriptionServiceImpl::SubscriptionUpdatedCallback update_callback) { -+ auto maintainer = std::make_unique(); -+ maintainer_factory_calls_.push_back( -+ {configuration, update_callback, maintainer.get()}); -+ return maintainer; -+ } ++ void RemoveMetadata(const GURL& subscription_url) final; + -+ void MockCleanupConfiguration(FilteringConfiguration* configuration) { -+ cleaned_configs_.push_back(configuration->GetName()); -+ } ++ private: ++ struct Metadata; ++ using MetadataMap = std::map; ++ void UpdatePrefs(); ++ void LoadFromPrefs(); + -+ std::vector maintainer_factory_calls_; -+ std::vector cleaned_configs_; -+ MockSubscriptionObserver observer_; -+ SubscriptionServiceImpl testee_; ++ raw_ptr prefs_; ++ MetadataMap metadata_map_; +}; + -+TEST_F(AdblockSubscriptionServiceImplTest, EmptySnapshotWithoutConfigurations) { -+ EXPECT_TRUE(testee_.GetCurrentSnapshot().empty()); -+ EXPECT_TRUE(testee_.GetInstalledFilteringConfigurations().empty()); -+} -+ -+TEST_F(AdblockSubscriptionServiceImplTest, -+ InstallingDisabledConfigurationDoesNotCreateMaintainer) { -+ auto config = std::make_unique(); -+ config->is_enabled = false; -+ auto* config_bare_ptr = config.get(); -+ testee_.InstallFilteringConfiguration(std::move(config)); -+ -+ EXPECT_TRUE(maintainer_factory_calls_.empty()); -+ EXPECT_EQ(testee_.GetInstalledFilteringConfigurations(), -+ std::vector{config_bare_ptr}); -+} -+ -+TEST_F(AdblockSubscriptionServiceImplTest, -+ InstallingEnabledConfigurationCreatesMaintainer) { -+ auto config = std::make_unique(); -+ auto* config_bare_ptr = config.get(); -+ config->is_enabled = true; -+ testee_.InstallFilteringConfiguration(std::move(config)); -+ -+ ASSERT_EQ(maintainer_factory_calls_.size(), 1u); -+ EXPECT_EQ(maintainer_factory_calls_[0].input_configuration, config_bare_ptr); -+ EXPECT_EQ(testee_.GetInstalledFilteringConfigurations(), -+ std::vector{config_bare_ptr}); -+} -+ -+TEST_F(AdblockSubscriptionServiceImplTest, -+ UninstallingConfigurationRemovesData) { -+ auto config = std::make_unique(); -+ auto config_name = config->GetName(); -+ auto* config_bare_ptr = config.get(); -+ // Install and confirm. -+ testee_.InstallFilteringConfiguration(std::move(config)); -+ EXPECT_EQ(testee_.GetInstalledFilteringConfigurations(), -+ std::vector{config_bare_ptr}); -+ ASSERT_EQ(0u, cleaned_configs_.size()); -+ // Avoid dangling pointers after UninstallFilteringConfiguration(). -+ maintainer_factory_calls_[0].input_configuration = nullptr; -+ maintainer_factory_calls_[0].output_maintainer = nullptr; -+ // Uninstall and confirm. -+ testee_.UninstallFilteringConfiguration(config_name); -+ EXPECT_TRUE(testee_.GetInstalledFilteringConfigurations().empty()); -+ ASSERT_EQ(1u, cleaned_configs_.size()); -+ EXPECT_EQ(cleaned_configs_[0], config_name); -+} -+ -+TEST_F(AdblockSubscriptionServiceImplTest, -+ EnablingConfigurationCreatesMaintainer) { -+ auto config = std::make_unique(); -+ auto* config_bare_ptr = config.get(); -+ config->is_enabled = false; -+ testee_.InstallFilteringConfiguration(std::move(config)); -+ -+ EXPECT_TRUE(maintainer_factory_calls_.empty()); -+ config_bare_ptr->SetEnabled(true); -+ -+ ASSERT_EQ(maintainer_factory_calls_.size(), 1u); -+ EXPECT_EQ(maintainer_factory_calls_[0].input_configuration, config_bare_ptr); -+} -+ -+TEST_F(AdblockSubscriptionServiceImplTest, -+ DisablingConfigurationDestroysMaintainer) { -+ auto config = std::make_unique(); -+ auto* config_bare_ptr = config.get(); -+ config->is_enabled = true; -+ testee_.InstallFilteringConfiguration(std::move(config)); -+ -+ DisableConfigurationAndEnsureMaintainerDestroyed( -+ &maintainer_factory_calls_[0]); -+ // The configuration remains installed, even if it is disabled and there is -+ // no maintainer for it. -+ EXPECT_EQ(testee_.GetInstalledFilteringConfigurations(), -+ std::vector{config_bare_ptr}); -+} -+ -+TEST_F(AdblockSubscriptionServiceImplTest, -+ EnabledMaintainersConsultedForSubscriptions) { -+ testee_.InstallFilteringConfiguration( -+ std::make_unique()); -+ testee_.InstallFilteringConfiguration( -+ std::make_unique()); -+ testee_.InstallFilteringConfiguration( -+ std::make_unique()); -+ -+ ASSERT_EQ(maintainer_factory_calls_.size(), 3u); -+ EXPECT_THAT(testee_.GetInstalledFilteringConfigurations(), -+ testing::UnorderedElementsAre( -+ maintainer_factory_calls_[0].input_configuration, -+ maintainer_factory_calls_[1].input_configuration, -+ maintainer_factory_calls_[2].input_configuration)); -+ auto disabled_entry = std::move(maintainer_factory_calls_[1]); -+ // We disable one configuration. The maintainer of that configuration will -+ // be destroyed, so it won't be consulted for subscriptions. -+ DisableConfigurationAndEnsureMaintainerDestroyed(&disabled_entry); -+ EXPECT_TRUE( -+ testee_.GetCurrentSubscriptions(disabled_entry.input_configuration) -+ .empty()); -+ // A maintainer of the wrong configuration is not consulted, even if it's -+ // enabled. -+ auto& entry_of_different_config = maintainer_factory_calls_[2]; -+ EXPECT_CALL(*entry_of_different_config.output_maintainer, -+ GetCurrentSubscriptions()) -+ .Times(0); -+ // The maintainer of the right configuration is consulted for Subscriptions -+ auto& entry_of_config_in_question = maintainer_factory_calls_[0]; -+ auto subscription1 = base::MakeRefCounted(); -+ auto subscription2 = base::MakeRefCounted(); -+ EXPECT_CALL(*entry_of_config_in_question.output_maintainer, -+ GetCurrentSubscriptions()) -+ .WillOnce(Return(std::vector>{ -+ subscription1, subscription2})); -+ -+ EXPECT_THAT(testee_.GetCurrentSubscriptions( -+ entry_of_config_in_question.input_configuration), -+ testing::UnorderedElementsAre(subscription1, subscription2)); -+} -+ -+TEST_F(AdblockSubscriptionServiceImplTest, -+ EnabledMaintainersConsultedForSnapshot) { -+ testee_.InstallFilteringConfiguration( -+ std::make_unique()); -+ testee_.InstallFilteringConfiguration( -+ std::make_unique()); -+ testee_.InstallFilteringConfiguration( -+ std::make_unique()); -+ ASSERT_EQ(maintainer_factory_calls_.size(), 3u); -+ // We disable one configuration. The maintainer of that configuration will -+ // not take part in populating the Snapshot because it will be destroyed. -+ DisableConfigurationAndEnsureMaintainerDestroyed( -+ &maintainer_factory_calls_[1]); -+ // The maintainers of enabled configurations will be asked to provide -+ // SubscriptionCollections for the Snapshot. -+ auto collection1 = std::make_unique(); -+ auto collection2 = std::make_unique(); -+ const std::vector returned_collection_ptrs{ -+ collection1.get(), collection2.get()}; -+ -+ EXPECT_CALL(*maintainer_factory_calls_[0].output_maintainer, -+ GetSubscriptionCollection()) -+ .WillOnce(Return(testing::ByMove(std::move(collection1)))); -+ EXPECT_CALL(*maintainer_factory_calls_[2].output_maintainer, -+ GetSubscriptionCollection()) -+ .WillOnce(Return(testing::ByMove(std::move(collection2)))); -+ -+ // The SubscriptionCollections that comprise the Snapshot are the ones -+ // returned by maintainers. -+ const auto snapshot = testee_.GetCurrentSnapshot(); -+ EXPECT_TRUE(base::ranges::is_permutation( -+ snapshot, returned_collection_ptrs, {}, -+ &std::unique_ptr::get)); -+} -+ -+TEST_F(AdblockSubscriptionServiceImplTest, -+ SubscriptionObserverNotifiedByMaintainerCallbacks) { -+ const GURL kUrl("https://test.com"); -+ testee_.InstallFilteringConfiguration( -+ std::make_unique()); -+ testee_.InstallFilteringConfiguration( -+ std::make_unique()); -+ ASSERT_EQ(maintainer_factory_calls_.size(), 2u); -+ -+ MockSubscriptionObserver observer; -+ testee_.AddObserver(&observer); -+ EXPECT_CALL(observer, OnSubscriptionInstalled(kUrl)).Times(2); -+ maintainer_factory_calls_[0].input_update_callback.Run(kUrl); -+ maintainer_factory_calls_[1].input_update_callback.Run(kUrl); -+ testee_.RemoveObserver(&observer); -+ // Observer no longer notified after being removed. -+ EXPECT_CALL(observer, OnSubscriptionInstalled(kUrl)).Times(0); -+ maintainer_factory_calls_[0].input_update_callback.Run(kUrl); -+ maintainer_factory_calls_[1].input_update_callback.Run(kUrl); -+} -+ +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/subscription_updater_impl_test.cc b/components/adblock/core/subscription/test/subscription_updater_impl_test.cc ++ ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_METADATA_IMPL_H_ +diff --git a/components/adblock/core/subscription/subscription_persistent_storage.h b/components/adblock/core/subscription/subscription_persistent_storage.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/subscription_updater_impl_test.cc -@@ -0,0 +1,98 @@ ++++ b/components/adblock/core/subscription/subscription_persistent_storage.h +@@ -0,0 +1,60 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -33685,92 +18960,54 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/subscription_updater_impl.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_H_ + +#include -+#include +#include + -+#include "base/test/mock_callback.h" -+#include "base/test/task_environment.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" ++#include "base/functional/callback.h" ++#include "base/memory/scoped_refptr.h" ++#include "components/adblock/core/common/flatbuffer_data.h" ++#include "components/adblock/core/subscription/installed_subscription.h" + +namespace adblock { -+namespace { -+constexpr auto kInitialDelay = base::Minutes(1); -+constexpr auto kCheckInterval = base::Hours(1); -+} // namespace + -+class AdblockSubscriptionUpdaterImplTest : public testing::Test { ++// Provides a persistent, disk-based storage for installed subscription files. ++class SubscriptionPersistentStorage { + public: -+ base::test::TaskEnvironment task_environment_{ -+ base::test::TaskEnvironment::TimeSource::MOCK_TIME}; -+ base::MockRepeatingClosure run_update_check_; -+ SubscriptionUpdaterImpl updater_{kInitialDelay, kCheckInterval}; -+}; ++ virtual ~SubscriptionPersistentStorage() = default; ++ using LoadCallback = base::OnceCallback>)>; ++ // Loads subscriptions from a directory on disk and returns them via ++ // |on_loaded|. ++ virtual void LoadSubscriptions(LoadCallback on_loaded) = 0; + -+TEST_F(AdblockSubscriptionUpdaterImplTest, UpdatesRanContinuously) { -+ updater_.StartSchedule(run_update_check_.Get()); -+ // Schedule will run indefinitely after starting, with the first check -+ // performed after initial delay and following checks after normal check -+ // interval. -+ EXPECT_CALL(run_update_check_, Run()).Times(1); -+ task_environment_.FastForwardBy(kInitialDelay); -+ EXPECT_CALL(run_update_check_, Run()).Times(1); -+ task_environment_.FastForwardBy(kCheckInterval); -+ EXPECT_CALL(run_update_check_, Run()).Times(1); -+ task_environment_.FastForwardBy(kCheckInterval); -+} -+ -+TEST_F(AdblockSubscriptionUpdaterImplTest, -+ UpdatesNotRanAfterStoppingImmediately) { -+ updater_.StartSchedule(run_update_check_.Get()); -+ // Stop immediately. -+ updater_.StopSchedule(); -+ EXPECT_CALL(run_update_check_, Run()).Times(0); -+ task_environment_.FastForwardBy(kInitialDelay); -+ task_environment_.FastForwardBy(kCheckInterval); -+ task_environment_.FastForwardBy(kCheckInterval); -+} -+ -+TEST_F(AdblockSubscriptionUpdaterImplTest, UpdatesNotRanAfterStopping) { -+ updater_.StartSchedule(run_update_check_.Get()); -+ // Let the checks run for some time. -+ EXPECT_CALL(run_update_check_, Run()).Times(1); -+ task_environment_.FastForwardBy(kInitialDelay); -+ EXPECT_CALL(run_update_check_, Run()).Times(1); -+ task_environment_.FastForwardBy(kCheckInterval); -+ -+ // Stop now. -+ updater_.StopSchedule(); -+ EXPECT_CALL(run_update_check_, Run()).Times(0); -+ task_environment_.FastForwardBy(kCheckInterval); -+ task_environment_.FastForwardBy(kCheckInterval); -+} -+ -+TEST_F(AdblockSubscriptionUpdaterImplTest, Restarting) { -+ updater_.StartSchedule(run_update_check_.Get()); -+ EXPECT_CALL(run_update_check_, Run()).Times(1); -+ task_environment_.FastForwardBy(kInitialDelay); -+ updater_.StopSchedule(); -+ -+ updater_.StartSchedule(run_update_check_.Get()); -+ // After restarting, the schedule starts from initial delay. -+ EXPECT_CALL(run_update_check_, Run()).Times(1); -+ task_environment_.FastForwardBy(kInitialDelay); -+ EXPECT_CALL(run_update_check_, Run()).Times(1); -+ task_environment_.FastForwardBy(kCheckInterval); -+ EXPECT_CALL(run_update_check_, Run()).Times(1); -+ task_environment_.FastForwardBy(kCheckInterval); -+} ++ using StoreCallback = ++ base::OnceCallback)>; ++ // Stores |raw_data| to disk and returns a Subscription created from ++ // flatbuffer parsed from |raw_data|. ++ // |on_finished| gets called after the store to disk and parsing has finished, ++ // nullptr argument signifies there was an error. ++ // |raw_data| is assumed to be valid against the current flatbuffer schema, it ++ // is not validated internally for performance reasons. Validate flatbuffers ++ // downloaded from the Internet externally. ++ virtual void StoreSubscription(std::unique_ptr raw_data, ++ StoreCallback on_finished) = 0; ++ ++ // Removes |subscription|'s file from disk. ++ virtual void RemoveSubscription( ++ scoped_refptr subscription) = 0; ++}; + +} // namespace adblock -diff --git a/components/adblock/core/subscription/test/subscription_validator_impl_test.cc b/components/adblock/core/subscription/test/subscription_validator_impl_test.cc ++ ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_H_ +diff --git a/components/adblock/core/subscription/subscription_persistent_storage_impl.cc b/components/adblock/core/subscription/subscription_persistent_storage_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/test/subscription_validator_impl_test.cc -@@ -0,0 +1,252 @@ ++++ b/components/adblock/core/subscription/subscription_persistent_storage_impl.cc +@@ -0,0 +1,229 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -33788,398 +19025,223 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/subscription/subscription_validator_impl.h" ++#include "components/adblock/core/subscription/subscription_persistent_storage_impl.h" + -+#include "base/base64.h" ++#include ++#include ++ ++#include "base/files/file_enumerator.h" +#include "base/files/file_path.h" -+#include "base/test/task_environment.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/common/adblock_prefs.h" -+#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/common/flatbuffer_data.h" ++#include "base/files/file_util.h" ++#include "base/functional/bind.h" ++#include "base/logging.h" ++#include "base/memory/scoped_refptr.h" ++#include "base/task/task_traits.h" ++#include "base/task/thread_pool.h" ++#include "base/trace_event/common/trace_event_common.h" ++#include "base/trace_event/trace_event.h" ++#include "base/unguessable_token.h" +#include "components/adblock/core/schema/filter_list_schema_generated.h" -+#include "components/grit/components_resources.h" -+#include "components/prefs/pref_service.h" -+#include "components/prefs/testing_pref_service.h" -+#include "crypto/sha2.h" -+#include "testing/gtest/include/gtest/gtest.h" ++#include "components/adblock/core/subscription/installed_subscription.h" ++#include "components/adblock/core/subscription/installed_subscription_impl.h" ++#include "components/adblock/core/subscription/subscription.h" ++#include "components/adblock/core/subscription/subscription_validator.h" + +namespace adblock { ++namespace { + -+class AdblockSubscriptionValidatorImplTest : public testing::Test { -+ public: -+ void SetUp() override { -+ common::prefs::RegisterProfilePrefs(pref_service_.registry()); -+ } -+ -+ std::unique_ptr MakeValidator( -+ const std::string& current_schema_version) { -+ return std::make_unique(&pref_service_, -+ current_schema_version); -+ } -+ -+ base::test::TaskEnvironment task_environment_; -+ TestingPrefServiceSimple pref_service_; -+}; -+ -+TEST_F(AdblockSubscriptionValidatorImplTest, EmptyPrefMeansNoSignature) { -+ auto validator = MakeValidator(CurrentSchemaVersion()); -+ auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST); -+ base::FilePath path(FILE_PATH_LITERAL("x.fb")); -+ EXPECT_FALSE(validator->IsSignatureValid().Run(*buffer, path)); -+} -+ -+TEST_F(AdblockSubscriptionValidatorImplTest, -+ StoredSignatureVisibleOnlyAfterRecreatingCallback) { -+ auto validator = MakeValidator(CurrentSchemaVersion()); -+ auto initial_callback = validator->IsSignatureValid(); -+ // Store a new signature after the initial callback was created. -+ auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST); -+ base::FilePath path(FILE_PATH_LITERAL("x.fb")); -+ validator->StoreTrustedSignature().Run(*buffer, path); -+ task_environment_.RunUntilIdle(); -+ // |initial_callback| uses the initial state of prefs, not the -+ // current state, to avoid race conditions. It will still return the old -+ // result. -+ EXPECT_FALSE(initial_callback.Run(*buffer, path)); -+ // Recreate the callback. -+ auto new_callback = validator->IsSignatureValid(); -+ // The new state has the signature stored in previous life. -+ EXPECT_TRUE(new_callback.Run(*buffer, path)); -+ // Only the file component of the path is the key, this allows moving -+ // to a different storage directory if needed. -+ base::FilePath reparented_path( -+ base::FilePath(FILE_PATH_LITERAL("parent")).AppendASCII("x.fb")); -+ EXPECT_TRUE(new_callback.Run(*buffer, reparented_path)); -+} -+ -+TEST_F(AdblockSubscriptionValidatorImplTest, StoreAndRemoveSignature) { -+ auto validator = MakeValidator(CurrentSchemaVersion()); -+ auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST); -+ base::FilePath path(FILE_PATH_LITERAL("x.fb")); -+ validator->StoreTrustedSignature().Run(*buffer, path); -+ validator->RemoveStoredSignature().Run(path); -+ task_environment_.RunUntilIdle(); -+ // Recreate the validator. -+ validator = MakeValidator(CurrentSchemaVersion()); -+ // The signature was removed so it's no longer returned. -+ EXPECT_FALSE(validator->IsSignatureValid().Run(*buffer, path)); -+} -+ -+TEST_F(AdblockSubscriptionValidatorImplTest, -+ SchemaVersionChangeInvalidatesSignatures) { -+ auto validator = MakeValidator(CurrentSchemaVersion()); -+ -+ // Store a valid signature. -+ auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST); -+ base::FilePath path(FILE_PATH_LITERAL("x.fb")); -+ validator->StoreTrustedSignature().Run(*buffer, path); -+ task_environment_.RunUntilIdle(); -+ -+ // Simulate a schema version change by storing a kLastUsedSchemaVersion -+ // different than the current one. -+ pref_service_.SetString(common::prefs::kLastUsedSchemaVersion, "000"); -+ -+ // Recreate the validator. -+ validator = MakeValidator(CurrentSchemaVersion()); -+ // The signature is invalid because we're not allowed to read flatbuffers -+ // created with a different schema version. -+ EXPECT_FALSE(validator->IsSignatureValid().Run(*buffer, path)); -+} -+ -+TEST_F(AdblockSubscriptionValidatorImplTest, SignatureStoredViaKey) { -+ auto validator = MakeValidator(CurrentSchemaVersion()); -+ -+ // Store a valid signature. -+ auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST); -+ base::FilePath path(FILE_PATH_LITERAL("x.fb")); -+ validator->StoreTrustedSignature().Run(*buffer, path); -+ task_environment_.RunUntilIdle(); -+ -+ // When storing dictionary keys with dots in them, there's a difference if -+ // you use "SetIntKey" vs "SetIntPath". -+ // "Path" interprets dict["x.fb"]="hash" as {"x":{"fb":"hash"}} - the dot -+ // indicates a deeper level of dict -+ // "Key" interprets dict["x.fb"]="hash" as {"x.fb":"hash"} - the dot is part -+ // of the key name -+ const base::Value::Dict& pref = -+ pref_service_.GetDict(common::prefs::kSubscriptionSignatures); -+ ASSERT_TRUE(pref.FindString("x.fb")); -+ EXPECT_EQ(*pref.FindString("x.fb"), -+ base::Base64Encode(crypto::SHA256Hash( -+ base::make_span(buffer->data(), buffer->size())))); -+} -+ -+TEST_F(AdblockSubscriptionValidatorImplTest, -+ DifferentBufferFailsSignatureValidation) { -+ auto validator = MakeValidator(CurrentSchemaVersion()); -+ -+ // Store signature for IDR_ADBLOCK_FLATBUFFER_EASYLIST subscription. -+ auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST); -+ base::FilePath path(FILE_PATH_LITERAL("x.fb")); -+ validator->StoreTrustedSignature().Run(*buffer, path); -+ task_environment_.RunUntilIdle(); -+ // Recreate the validator. -+ validator = MakeValidator(CurrentSchemaVersion()); -+ // If a different buffer resides on the same path, the signature does not -+ // match. -+ auto different_buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EXCEPTIONRULES); -+ EXPECT_FALSE(validator->IsSignatureValid().Run(*different_buffer, path)); -+} -+ -+TEST_F(AdblockSubscriptionValidatorImplTest, -+ NewSchemaVersionInvalidatesSubscriptions) { -+ auto validator = MakeValidator(CurrentSchemaVersion()); -+ -+ // Store signature for IDR_ADBLOCK_FLATBUFFER_EASYLIST subscription. -+ auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST); -+ base::FilePath path(FILE_PATH_LITERAL("x.fb")); -+ validator->StoreTrustedSignature().Run(*buffer, path); -+ task_environment_.RunUntilIdle(); -+ -+ // Recreate the validator with new schema version. -+ validator = MakeValidator(CurrentSchemaVersion() + std::string("new")); -+ // Same buffer, same path, but it's no longer valid because schema has -+ // changed. -+ EXPECT_FALSE(validator->IsSignatureValid().Run(*buffer, path)); -+} -+ -+TEST_F(AdblockSubscriptionValidatorImplTest, -+ IsSignatureValidCallbackAfterValidatorDestroyed) { -+ auto validator = MakeValidator(CurrentSchemaVersion()); -+ -+ // Store a valid signature. -+ auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST); -+ const base::FilePath path(FILE_PATH_LITERAL("x.fb")); -+ validator->StoreTrustedSignature().Run(*buffer, path); -+ task_environment_.RunUntilIdle(); -+ -+ auto is_signature_valid = validator->IsSignatureValid(); -+ -+ // Validator dies now: -+ validator.reset(); -+ -+ // |is_signature_valid| still works, using the remembered initial state. -+ const auto bad_path = base::FilePath().AppendASCII("bad_path.fb"); -+ EXPECT_TRUE(is_signature_valid.Run(*buffer, path)); -+ EXPECT_FALSE(is_signature_valid.Run(*buffer, bad_path)); -+} -+ -+TEST_F(AdblockSubscriptionValidatorImplTest, -+ StoreSignatureCallbackAfterValidatorDestroyed) { -+ auto validator = MakeValidator(CurrentSchemaVersion()); -+ -+ // Retrieve callback. -+ auto store_signature = validator->StoreTrustedSignature(); -+ -+ // Validator dies now: -+ validator.reset(); -+ -+ // Store a valid signature. This does nothing, since validator is dead. -+ const auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST); -+ const base::FilePath path(FILE_PATH_LITERAL("x.fb")); -+ std::move(store_signature).Run(*buffer, path); -+ task_environment_.RunUntilIdle(); -+ -+ // Verify that storing a signature did not have effects on future validators. -+ validator = MakeValidator(CurrentSchemaVersion()); -+ // The signature wasn't stored and it is not recognized. -+ EXPECT_FALSE(validator->IsSignatureValid().Run(*buffer, path)); -+} -+ -+TEST_F(AdblockSubscriptionValidatorImplTest, -+ RemoveSignatureCallbackAfterValidatorDestroyed) { -+ auto validator = MakeValidator(CurrentSchemaVersion()); -+ -+ // Store a valid signature. This does nothing, since validator is dead. -+ const auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST); -+ const base::FilePath path(FILE_PATH_LITERAL("x.fb")); -+ validator->StoreTrustedSignature().Run(*buffer, path); -+ task_environment_.RunUntilIdle(); -+ -+ auto remove_signature = validator->RemoveStoredSignature(); -+ -+ // Validator dies now: -+ validator.reset(); -+ -+ // Try removing signature after the validator has died, this does nothing. -+ std::move(remove_signature).Run(path); -+ -+ // Verify that removing a signature did not have effects on future validators. -+ validator = MakeValidator(CurrentSchemaVersion()); -+ // The signature wasn't removed and it is still recognized. -+ EXPECT_TRUE(validator->IsSignatureValid().Run(*buffer, path)); ++GURL UrlFromFlatbufferData(const FlatbufferData& flatbuffer) { ++ DCHECK(flat::GetSubscription(flatbuffer.data())->metadata()); ++ DCHECK(flat::GetSubscription(flatbuffer.data())->metadata()->url()); ++ return GURL( ++ flat::GetSubscription(flatbuffer.data())->metadata()->url()->str()); +} + -+} // namespace adblock -diff --git a/components/adblock/core/subscription/test/url_keyword_extractor_test.cc b/components/adblock/core/subscription/test/url_keyword_extractor_test.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/test/url_keyword_extractor_test.cc -@@ -0,0 +1,74 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/subscription/url_keyword_extractor.h" -+ -+#include "absl/types/optional.h" -+#include "gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" ++} // namespace + -+namespace adblock { ++SubscriptionPersistentStorageImpl::SubscriptionPersistentStorageImpl( ++ base::FilePath base_storage_dir, ++ std::unique_ptr validator, ++ SubscriptionPersistentMetadata* persistent_metadata) ++ : base_storage_dir_(std::move(base_storage_dir)), ++ validator_(std::move(validator)), ++ persistent_metadata_(persistent_metadata) {} + -+TEST(AdblockUrlKeywordExtractor, NoKeywordExtractedFromEmptyInput_Request) { -+ UrlKeywordExtractor extractor(""); -+ EXPECT_EQ(extractor.GetNextKeyword(), absl::nullopt); ++SubscriptionPersistentStorageImpl::~SubscriptionPersistentStorageImpl() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +} + -+TEST(AdblockUrlKeywordExtractor, DoesNotExtractCommonKeywords) { -+ // Common keywords include "http", "https", "com" and "js". These should be -+ // skipped. -+ UrlKeywordExtractor extractor("http://www.base.com/path?query.js"); -+ std::vector extracted_keywords; -+ while (auto keyword = extractor.GetNextKeyword()) { -+ extracted_keywords.push_back(keyword->data()); ++// static ++SubscriptionPersistentStorageImpl::LoadedBuffer ++SubscriptionPersistentStorageImpl::WriteSubscription( ++ const base::FilePath& storage_dir, ++ std::unique_ptr raw_data, ++ SubscriptionValidator::StoreTrustedSignatureThreadSafeCallback ++ store_signature) { ++ // To avoid conflict between existing subscription files, generate a new ++ // unique path. ++ base::FilePath subscription_path = storage_dir.AppendASCII( ++ base::UnguessableToken::Create().ToString() + ".fb"); ++ // UnguessableToken is a 128-bit, cryptographically-safe random number, ++ // conflicts are less likely than disk failure. The DCHECK is to express ++ // intent. ++ DCHECK(!base::PathExists(subscription_path)); ++ if (base::WriteFile(subscription_path, ++ reinterpret_cast(raw_data->data()), ++ raw_data->size()) == -1) { ++ // Disk write failed. ++ return std::make_pair(nullptr, base::FilePath{}); + } -+ EXPECT_THAT(extracted_keywords, -+ testing::ElementsAre("www", "base", "path", "query")); -+} -+ -+TEST(AdblockUrlKeywordExtractor, DoesExtractLastKeywordsForRequest) { -+ UrlKeywordExtractor extractor("http://domain.cc/in_discovery5"); -+ std::vector extracted_keywords; -+ while (auto keyword = extractor.GetNextKeyword()) { -+ extracted_keywords.push_back(keyword->data()); ++ auto buffer = std::make_unique(subscription_path); ++ if (!buffer->data()) { ++ // Creating the memory-mapped region failed. ++ // TODO(DPD-1278) revert to in-memory buffer? ++ return std::make_pair(nullptr, base::FilePath{}); + } -+ EXPECT_THAT(extracted_keywords, -+ testing::ElementsAre("domain", "cc", "in", "discovery5")); ++ std::move(store_signature).Run(*buffer, subscription_path); ++ return std::make_pair(std::move(buffer), std::move(subscription_path)); +} + -+TEST(AdblockUrlKeywordExtractor, SingleLetterKeywordsSkipped) { -+ UrlKeywordExtractor extractor("http://a.b/cc"); -+ std::vector extracted_keywords; -+ while (auto keyword = extractor.GetNextKeyword()) { -+ extracted_keywords.push_back(keyword->data()); -+ } -+ EXPECT_THAT(extracted_keywords, testing::ElementsAre("cc")); -+} ++// static ++std::vector ++SubscriptionPersistentStorageImpl::ReadSubscriptionsFromDirectory( ++ const base::FilePath& storage_dir, ++ SubscriptionValidator::IsSignatureValidThreadSafeCallback ++ is_signature_valid) { ++ DLOG(INFO) << "[eyeo] Reading subscriptions from directory"; ++ TRACE_EVENT0("eyeo", "ReadSubscriptionsFromDirectory"); ++ // Does nothing if directory already exists: ++ base::CreateDirectory(storage_dir); ++ ++ std::vector result; ++ base::FileEnumerator enumerator(storage_dir, false /* recursive */, ++ base::FileEnumerator::FILES); ++ // Iterate through |storage_dir| and try to load all files within. ++ for (base::FilePath flatbuffer_path = enumerator.Next(); ++ !flatbuffer_path.empty(); flatbuffer_path = enumerator.Next()) { ++ std::string contents; + -+TEST(AdblockUrlKeywordExtractor, KeywordSymbolVsSeparatorSymbols) { -+ // Keyword symbols are alphanumeric characters plus the % symbol. Everything -+ // else is a separator. -+ UrlKeywordExtractor extractor("http://alpha.beta/data123-data2%4?"); -+ std::vector extracted_keywords; -+ while (auto keyword = extractor.GetNextKeyword()) { -+ extracted_keywords.push_back(keyword->data()); ++ TRACE_EVENT_BEGIN1("eyeo", "ReadFileToString", "path", ++ flatbuffer_path.AsUTF8Unsafe()); ++ if (!base::ReadFileToString(flatbuffer_path, &contents)) { ++ // File could not be read. ++ base::DeleteFile(flatbuffer_path); ++ continue; ++ } ++ TRACE_EVENT_END1("eyeo", "ReadFileToString", "path", ++ flatbuffer_path.AsUTF8Unsafe()); ++ TRACE_EVENT_BEGIN0("eyeo", "VerifySubscriptionBuffer"); ++ if (!is_signature_valid.Run(InMemoryFlatbufferData(std::move(contents)), ++ flatbuffer_path)) { ++ // This is not a valid subscription file, remove it. ++ base::DeleteFile(flatbuffer_path); ++ continue; ++ } ++ TRACE_EVENT_END0("eyeo", "VerifySubscriptionBuffer"); ++ auto buffer = std::make_unique(flatbuffer_path); ++ if (!buffer->data()) { ++ // Could not create mapped memory region to file content. ++ // TODO(mpawlowski) revert to in-memory buffer? ++ continue; ++ } ++ result.emplace_back(std::move(buffer), std::move(flatbuffer_path)); + } -+ EXPECT_THAT(extracted_keywords, -+ testing::ElementsAre("alpha", "beta", "data123", "data2%4")); ++ DLOG(INFO) << "[eyeo] Finished reading and validating subscriptions. Loaded " ++ << result.size() << " subscriptions."; ++ return result; +} + -+} // namespace adblock -diff --git a/components/adblock/core/subscription/url_keyword_extractor.cc b/components/adblock/core/subscription/url_keyword_extractor.cc -new file mode 100644 ---- /dev/null -+++ b/components/adblock/core/subscription/url_keyword_extractor.cc -@@ -0,0 +1,67 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "components/adblock/core/subscription/url_keyword_extractor.h" -+ -+#include -+#include -+ -+#include "base/ranges/algorithm.h" -+#include "base/strings/string_util.h" -+#include "components/adblock/core/common/keyword_extractor_utils.h" -+ -+namespace adblock { -+namespace { -+ -+bool IsSeparatorCharacter(char c) { -+ return !(std::isalnum(c) || c == '%'); ++void SubscriptionPersistentStorageImpl::LoadSubscriptions( ++ LoadCallback on_loaded) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ TRACE_EVENT_ASYNC_BEGIN0( ++ "eyeo", "SubscriptionPersistentStorageImpl::LoadSubscription", ++ TRACE_ID_LOCAL(this)); ++ base::ThreadPool::PostTaskAndReplyWithResult( ++ FROM_HERE, {base::MayBlock()}, ++ base::BindOnce(&ReadSubscriptionsFromDirectory, base_storage_dir_, ++ validator_->IsSignatureValid()), ++ base::BindOnce(&SubscriptionPersistentStorageImpl::LoadComplete, ++ weak_ptr_factory.GetWeakPtr(), std::move(on_loaded))); +} + -+} // namespace ++void SubscriptionPersistentStorageImpl::StoreSubscription( ++ std::unique_ptr raw_data, ++ StoreCallback on_finished) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ base::ThreadPool::PostTaskAndReplyWithResult( ++ FROM_HERE, {base::MayBlock()}, ++ base::BindOnce(&WriteSubscription, base_storage_dir_, std::move(raw_data), ++ validator_->StoreTrustedSignature()), ++ base::BindOnce(&SubscriptionPersistentStorageImpl::SubscriptionStored, ++ weak_ptr_factory.GetWeakPtr(), std::move(on_finished))); ++} + -+absl::optional UrlKeywordExtractor::GetNextKeyword() { -+ base::StringPiece current_keyword; -+ do { -+ const auto start_of_next_keyword = input_.find_first_not_of('\0'); -+ if (start_of_next_keyword == base::StringPiece::npos) { -+ return absl::nullopt; -+ } -+ input_.remove_prefix(start_of_next_keyword); -+ const auto end_of_keyword = input_.find_first_of('\0'); -+ current_keyword = input_.substr(0, end_of_keyword); -+ input_.remove_prefix(current_keyword.size()); -+ } while (utils::IsBadKeyword(current_keyword)); -+ return current_keyword; ++void SubscriptionPersistentStorageImpl::RemoveSubscription( ++ scoped_refptr subscription) { ++ auto it = backing_file_mapping_.find(subscription); ++ DCHECK(it != backing_file_mapping_.end()) ++ << "Attempted to remove subscription not governed by this " ++ "SubscriptionPersistentStorageImpl"; ++ validator_->RemoveStoredSignature().Run(it->second); ++ backing_file_mapping_.erase(it); ++ subscription->MarkForPermanentRemoval(); +} + -+UrlKeywordExtractor::UrlKeywordExtractor(base::StringPiece url) -+ : url_with_nulls_(url.data(), url.size()) { -+ // The keywords returned by GetNextKeyword() will be passed to -+ // flatbuffers::Vector::LookupByKey(const char* key) which assumes |key| is -+ // null-terminated. In order to avoid allocating a null-terminated -+ // std::string for every extracted keyword, we instead replace separator -+ // characters by nulls, so that a StringPiece referring to a keyword is also -+ // null-terminated. -+ // This isn't elegant, but it's a valid workaround for the limitations of -+ // the flatbuffers generated API. -+ base::ranges::replace_if(url_with_nulls_, &IsSeparatorCharacter, '\0'); -+ input_ = url_with_nulls_; ++void SubscriptionPersistentStorageImpl::LoadComplete( ++ LoadCallback on_loaded, ++ std::vector loaded_buffers) { ++ std::vector> loaded_subscriptions; ++ for (LoadedBuffer& loaded_buffer : loaded_buffers) { ++ const auto url = UrlFromFlatbufferData(*loaded_buffer.first); ++ const auto last_installation_time = ++ persistent_metadata_->GetLastInstallationTime(url); ++ auto installed_subscription = ++ base::MakeRefCounted( ++ std::move(loaded_buffer.first), ++ Subscription::InstallationState::Installed, last_installation_time); ++ backing_file_mapping_[installed_subscription] = ++ std::move(loaded_buffer.second); ++ loaded_subscriptions.push_back(installed_subscription); ++ } ++ TRACE_EVENT_ASYNC_END0("eyeo", ++ "SubscriptionPersistentStorageImpl::LoadSubscription", ++ TRACE_ID_LOCAL(this)); ++ std::move(on_loaded).Run(std::move(loaded_subscriptions)); +} + -+UrlKeywordExtractor::~UrlKeywordExtractor() = default; ++void SubscriptionPersistentStorageImpl::SubscriptionStored( ++ StoreCallback on_finished, ++ LoadedBuffer storage_result) { ++ if (!storage_result.first) { ++ // There was an error storing the subscription. ++ std::move(on_finished).Run(nullptr); ++ return; ++ } ++ ++ const auto url = UrlFromFlatbufferData(*storage_result.first); ++ const auto last_installation_time = base::Time::Now(); ++ auto installed_subscription = base::MakeRefCounted( ++ std::move(storage_result.first), ++ Subscription::InstallationState::Installed, last_installation_time); ++ persistent_metadata_->IncrementDownloadSuccessCount(url); ++ persistent_metadata_->SetExpirationInterval( ++ url, installed_subscription->GetExpirationInterval()); ++ const auto parsed_version = installed_subscription->GetCurrentVersion(); ++ if (!parsed_version.empty()) { ++ persistent_metadata_->SetVersion(url, parsed_version); ++ } ++ backing_file_mapping_[installed_subscription] = ++ std::move(storage_result.second); ++ std::move(on_finished).Run(installed_subscription); ++} + +} // namespace adblock -diff --git a/components/adblock/core/subscription/url_keyword_extractor.h b/components/adblock/core/subscription/url_keyword_extractor.h +diff --git a/components/adblock/core/subscription/subscription_persistent_storage_impl.h b/components/adblock/core/subscription/subscription_persistent_storage_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/subscription/url_keyword_extractor.h -@@ -0,0 +1,60 @@ -+ ++++ b/components/adblock/core/subscription/subscription_persistent_storage_impl.h +@@ -0,0 +1,80 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -34197,53 +19259,74 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_URL_KEYWORD_EXTRACTOR_H_ -+#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_URL_KEYWORD_EXTRACTOR_H_ -+ -+#include ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_IMPL_H_ + -+#include "absl/types/optional.h" ++#include + -+#include "base/strings/string_piece.h" -+#include "url/gurl.h" ++#include "base/files/file_path.h" ++#include "base/memory/raw_ptr.h" ++#include "base/memory/weak_ptr.h" ++#include "base/sequence_checker.h" ++#include "components/adblock/core/common/flatbuffer_data.h" ++#include "components/adblock/core/subscription/subscription_persistent_metadata.h" ++#include "components/adblock/core/subscription/subscription_persistent_storage.h" ++#include "components/adblock/core/subscription/subscription_validator.h" + +namespace adblock { + -+// Keywords allow selecting filters that could potentially match a URL faster -+// than an exhaustive search. -+// This is how it works: -+// 1. Each URL is split into keywords using -+// GetNextKeyword(). -+// "https://content.adblockplus.com/advertisment" becomes: -+// "content", "adblockplus", "advertisment" -+// - "https" and "com" are skipped because they're common -+// -+// 2. The keyword index in the flatbuffer is queried only for filters that match -+// these keywords. A keyword may index multiple filters, a filter is only -+// indexed by one (or none) keywords. -+// -+// 3. If we fail to extract keywords from a filter, we index it under an empty -+// keyword. All filters without a keyword are checked for all URLs, as they -+// could match anything. -+class UrlKeywordExtractor { ++class SubscriptionPersistentStorageImpl final ++ : public SubscriptionPersistentStorage { + public: -+ explicit UrlKeywordExtractor(base::StringPiece url); -+ ~UrlKeywordExtractor(); -+ absl::optional GetNextKeyword(); ++ SubscriptionPersistentStorageImpl( ++ base::FilePath base_storage_dir, ++ std::unique_ptr validator, ++ SubscriptionPersistentMetadata* persistent_metadata); ++ ~SubscriptionPersistentStorageImpl() final; ++ ++ void LoadSubscriptions(LoadCallback on_loaded) final; ++ void StoreSubscription(std::unique_ptr raw_data, ++ StoreCallback on_finished) final; ++ void RemoveSubscription( ++ scoped_refptr subscription) final; + + private: -+ std::string url_with_nulls_; -+ base::StringPiece input_; ++ using SubscriptionFileMapping = ++ std::map, base::FilePath>; ++ using LoadedBuffer = ++ std::pair, base::FilePath>; ++ static LoadedBuffer WriteSubscription( ++ const base::FilePath& storage_dir, ++ std::unique_ptr raw_data, ++ SubscriptionValidator::StoreTrustedSignatureThreadSafeCallback ++ store_signature); ++ static std::vector ReadSubscriptionsFromDirectory( ++ const base::FilePath& storage_dir, ++ SubscriptionValidator::IsSignatureValidThreadSafeCallback ++ is_signature_valid); ++ void LoadComplete(LoadCallback on_initialized, ++ std::vector loaded_buffers); ++ void SubscriptionStored(StoreCallback on_finished, ++ LoadedBuffer storage_result); ++ ++ SEQUENCE_CHECKER(sequence_checker_); ++ base::FilePath base_storage_dir_; ++ std::unique_ptr validator_; ++ raw_ptr persistent_metadata_; ++ // Maps Subscriptions to files that they access. ++ SubscriptionFileMapping backing_file_mapping_; ++ base::WeakPtrFactory weak_ptr_factory{ ++ this}; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_URL_KEYWORD_EXTRACTOR_H_ -diff --git a/components/adblock/core/test/activeping_telemetry_topic_provider_test.cc b/components/adblock/core/test/activeping_telemetry_topic_provider_test.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_PERSISTENT_STORAGE_IMPL_H_ +diff --git a/components/adblock/core/subscription/subscription_service.h b/components/adblock/core/subscription/subscription_service.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/test/activeping_telemetry_topic_provider_test.cc -@@ -0,0 +1,327 @@ ++++ b/components/adblock/core/subscription/subscription_service.h +@@ -0,0 +1,87 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -34261,321 +19344,81 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/activeping_telemetry_topic_provider.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_H_ + ++#include +#include ++#include + -+#include "base/json/json_reader.h" -+#include "base/system/sys_info.h" -+#include "base/test/mock_callback.h" -+#include "base/test/task_environment.h" -+#include "base/uuid.h" -+#include "components/adblock/core/common/adblock_prefs.h" -+#include "components/adblock/core/configuration/test/mock_filtering_configuration.h" -+#include "components/adblock/core/subscription/subscription_config.h" -+#include "components/adblock/core/subscription/test/mock_subscription_service.h" -+#include "components/prefs/pref_value_store.h" -+#include "components/prefs/testing_pref_service.h" -+#include "gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" ++#include "base/functional/callback.h" ++#include "base/memory/scoped_refptr.h" ++#include "base/observer_list_types.h" ++#include "components/adblock/core/configuration/filtering_configuration.h" ++#include "components/adblock/core/subscription/subscription.h" ++#include "components/adblock/core/subscription/subscription_collection.h" ++#include "components/adblock/core/subscription/subscription_persistent_metadata.h" ++#include "components/keyed_service/core/keyed_service.h" ++#include "url/gurl.h" + +namespace adblock { + -+enum class AcceptableAds { Enabled, Disabled }; -+ -+class AdblockActivepingTelemetryTopicProviderTest -+ : public testing::TestWithParam { ++// Maintains a state of available Subscriptions needed for all installed ++// FilteringConfigurations. ++class SubscriptionService : public KeyedService { + public: -+ void SetUp() override { -+ app_info_.name = "MyApp"; -+ app_info_.version = "1234"; -+ app_info_.client_os = "UNUSED"; // base/sys_info.h used instead. -+ common::prefs::RegisterProfilePrefs(pref_service_.registry()); -+ EXPECT_CALL(subscription_service_, GetAdblockFilteringConfiguration()) -+ .WillRepeatedly(testing::Return(&adblock_configuration_)); -+ EXPECT_CALL(adblock_configuration_, GetFilterLists()) -+ .WillRepeatedly(testing::Return( -+ AcceptableAdsEnabled() ? std::vector{AcceptableAdsUrl()} -+ : std::vector{})); -+ RecreateProvider(); -+ } -+ -+ bool AcceptableAdsEnabled() const { -+ return GetParam() == AcceptableAds::Enabled; -+ } -+ -+ void RecreateProvider() { -+ provider_ = std::make_unique( -+ app_info_, &pref_service_, &subscription_service_, kBaseUrl, -+ kAuthToken); -+ } -+ -+ void ExpectPayloadAndTimeConsistentAfterRestart() { -+ // Current state of provider_ is stored persistently and remains consistent -+ // after recreating the provider_. -+ const auto time_of_next_request = provider_->GetTimeOfNextRequest(); -+ const auto payload = GetPayload(); -+ RecreateProvider(); -+ EXPECT_EQ(time_of_next_request, provider_->GetTimeOfNextRequest()); -+ EXPECT_EQ(payload, GetPayload()); -+ } -+ -+ std::string GetPayload() { -+ base::MockCallback -+ callback; -+ std::string payload; -+ EXPECT_CALL(callback, Run(testing::_)) -+ .WillOnce(testing::SaveArg<0>(&payload)); -+ provider_->GetPayload(callback.Get()); -+ return payload; -+ } -+ -+ void ExpectPayloadContainsValue(const std::string& json, -+ std::string key, -+ base::Value expected_value) { -+ auto root = base::JSONReader::ReadDict(json); -+ ASSERT_TRUE(root) << "JSON is invalid"; -+ auto* value = root->FindByDottedPath("payload." + key); -+ ASSERT_TRUE(value); -+ EXPECT_EQ(*value, expected_value); -+ } -+ -+ void ExpectPayloadDoesNotContainValue(const std::string& json, -+ std::string key) { -+ auto value = base::JSONReader::ReadDict(json); -+ ASSERT_TRUE(value) << "JSON is invalid"; -+ EXPECT_FALSE(value->FindByDottedPath("payload." + key)); -+ } -+ -+ void ExpectPayloadContainsRequiredStaticValues(const std::string& json) { -+ ExpectPayloadContainsValue(json, "aa_active", -+ base::Value(AcceptableAdsEnabled())); -+ ExpectPayloadContainsValue( -+ json, "platform", base::Value(base::SysInfo::OperatingSystemName())); -+ ExpectPayloadContainsValue( -+ json, "platform_version", -+ base::Value(base::SysInfo::OperatingSystemVersion())); -+ ExpectPayloadContainsValue(json, "application", -+ base::Value(app_info_.name)); -+ ExpectPayloadContainsValue(json, "application_version", -+ base::Value(app_info_.version)); -+ ExpectPayloadContainsValue(json, "addon_name", -+ base::Value("eyeo-chromium-sdk")); -+ ExpectPayloadContainsValue(json, "addon_version", base::Value("2.0.0")); -+ } -+ -+ void ExpectLastPingTagValid(const std::string& json, -+ base::Uuid* parsed_tag = nullptr) { -+ auto root = base::JSONReader::ReadDict(json); -+ ASSERT_TRUE(root); -+ const std::string* tag = -+ root->FindStringByDottedPath("payload.last_ping_tag"); -+ ASSERT_TRUE(tag); -+ const auto uuid = base::Uuid::ParseLowercase(*tag); -+ EXPECT_TRUE(uuid.is_valid()); -+ if (parsed_tag) { -+ *parsed_tag = uuid; -+ } -+ } -+ -+ void ExpectFailureAndRetryForResponse( -+ std::unique_ptr bad_response_contents) { -+ const std::string first_attempt_payload = GetPayload(); -+ provider_->ParseResponse(std::move(bad_response_contents)); -+ -+ // Next ping after shorter delay, since the previous one failed: -+ EXPECT_EQ(provider_->GetTimeOfNextRequest(), -+ base::Time::Now() + kRetryPingInterval); -+ -+ // Payload is the same as after first ping. -+ const std::string retry_payload = GetPayload(); -+ EXPECT_EQ(first_attempt_payload, retry_payload); -+ ExpectPayloadAndTimeConsistentAfterRestart(); -+ } ++ using Snapshot = std::vector>; ++ class SubscriptionObserver : public base::CheckedObserver { ++ public: ++ // Called only on successful installation or update of a subscription. ++ // TODO(mpawlowski) add error reporting. ++ virtual void OnSubscriptionInstalled(const GURL& subscription_url) {} ++ // Called on installation of new filtering configuration ++ virtual void OnFilteringConfigurationInstalled( ++ FilteringConfiguration* config) {} ++ }; ++ // Returns currently available subscriptions installed for |configuration|. ++ // Includes subscriptions that are still being downloaded. ++ virtual std::vector> GetCurrentSubscriptions( ++ FilteringConfiguration* configuration) const = 0; ++ // Subscriptions and filters demanded by |configuration| will be installed and ++ // will become part of future Snapshots. SubscriptionService will maintain ++ // subscriptions required by the configuration, download and remove filter ++ // lists as needed. ++ virtual void InstallFilteringConfiguration( ++ std::unique_ptr configuration) = 0; ++ // Removes configuration from the list of known configurations and reset its ++ // all persistent data. Use it only when configuration is no longer needed, ++ // otherwise prefer to disable configuration via FilteringConfiguration API. ++ // IMPORTANT: After calling this method any pointer pointing to uninstalled ++ // configuration becomes invalid. ++ virtual void UninstallFilteringConfiguration( ++ const std::string& configuration_name) = 0; ++ // Returns a list of FilteringConfigurations previously installed via ++ // InstallFilteringConfiguration. ++ virtual std::vector ++ GetInstalledFilteringConfigurations() = 0; ++ // Get default "adblock" filtering configuration. ++ virtual FilteringConfiguration* GetAdblockFilteringConfiguration() const = 0; ++ // Returns a snapshot of subscriptions as present at the time of calling the ++ // function that can be used to query filters. ++ // The result may be passed between threads, even called ++ // concurrently, and future changes to the installed subscriptions will not ++ // impact it. ++ virtual Snapshot GetCurrentSnapshot() const = 0; + -+ static constexpr base::TimeDelta kNormalPingInterval = base::Hours(12); -+ static constexpr base::TimeDelta kRetryPingInterval = base::Hours(1); -+ const GURL kBaseUrl{"https://telemetry.com/"}; -+ const std::string kAuthToken{"AUTH_TOKEN"}; -+ base::test::TaskEnvironment task_environment_{ -+ base::test::TaskEnvironment::TimeSource::MOCK_TIME}; -+ utils::AppInfo app_info_; -+ TestingPrefServiceSimple pref_service_; -+ MockSubscriptionService subscription_service_; -+ MockFilteringConfiguration adblock_configuration_; -+ std::unique_ptr provider_; ++ virtual void AddObserver(SubscriptionObserver*) = 0; ++ virtual void RemoveObserver(SubscriptionObserver*) = 0; +}; + -+TEST_P(AdblockActivepingTelemetryTopicProviderTest, StaticFields) { -+ EXPECT_EQ(provider_->GetEndpointURL(), -+ "https://telemetry.com/topic/eyeochromium_activeping/version/1"); -+ EXPECT_EQ(provider_->GetAuthToken(), kAuthToken); -+} -+ -+TEST_P(AdblockActivepingTelemetryTopicProviderTest, DefaultBaseUrl) { -+ EXPECT_EQ(ActivepingTelemetryTopicProvider::DefaultBaseUrl(), -+ GURL(EYEO_TELEMETRY_SERVER_URL)); -+} -+ -+TEST_P(AdblockActivepingTelemetryTopicProviderTest, DefaultAuthToken) { -+#if defined(EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN) -+ EXPECT_EQ(ActivepingTelemetryTopicProvider::DefaultAuthToken(), -+ EYEO_TELEMETRY_ACTIVEPING_AUTH_TOKEN); -+#else -+ EXPECT_EQ(ActivepingTelemetryTopicProvider::DefaultAuthToken(), ""); -+#endif -+} -+ -+TEST_P(AdblockActivepingTelemetryTopicProviderTest, FirstRun) { -+ // On first run, next ping should happen ASAP. -+ EXPECT_EQ(provider_->GetTimeOfNextRequest(), base::Time::Now()); -+ -+ // There are no values for "last_ping", "previous_last_ping", "last_ping_tag" -+ // and "first_ping". But there are values for other required fields: -+ const std::string payload = GetPayload(); -+ ExpectPayloadContainsRequiredStaticValues(payload); -+ ExpectPayloadDoesNotContainValue(payload, "last_ping"); -+ ExpectPayloadDoesNotContainValue(payload, "previous_last_ping"); -+ ExpectPayloadDoesNotContainValue(payload, "last_ping_tag"); -+ ExpectPayloadDoesNotContainValue(payload, "first_ping"); -+ ExpectPayloadAndTimeConsistentAfterRestart(); -+} -+ -+TEST_P(AdblockActivepingTelemetryTopicProviderTest, FirstRunSucceeded) { -+ // Successful server response: -+ auto response = std::make_unique(R"({"token":"Monday"})"); -+ provider_->ParseResponse(std::move(response)); -+ -+ // Next ping after normal delay, since the previous one succeeded: -+ EXPECT_EQ(provider_->GetTimeOfNextRequest(), -+ base::Time::Now() + kNormalPingInterval); -+ -+ // Payload now contains "first_ping" and "last_ping" set to "Monday", as this -+ // was the "token" received from server: -+ const std::string payload = GetPayload(); -+ ExpectPayloadContainsRequiredStaticValues(payload); -+ ExpectPayloadContainsValue(payload, "last_ping", base::Value("Monday")); -+ ExpectPayloadContainsValue(payload, "first_ping", base::Value("Monday")); -+ // There's no "previous_last_ping" because we need at least two successful -+ // pings for that. -+ ExpectPayloadDoesNotContainValue(payload, "previous_last_ping"); -+ -+ // "last_ping_tag" is some valid UUID4. -+ ExpectLastPingTagValid(payload); -+ ExpectPayloadAndTimeConsistentAfterRestart(); -+} -+ -+TEST_P(AdblockActivepingTelemetryTopicProviderTest, -+ FirstRunFailedDueToErrorInResponse) { -+ // "error" in server response: -+ ExpectFailureAndRetryForResponse( -+ std::make_unique(R"({"error":"1111","token":"Monday"})")); -+} -+ -+TEST_P(AdblockActivepingTelemetryTopicProviderTest, -+ FirstRunFailedDueToNoResponse) { -+ // No server response: -+ ExpectFailureAndRetryForResponse(nullptr); -+} -+ -+TEST_P(AdblockActivepingTelemetryTopicProviderTest, -+ FirstRunFailedDueToNoTokenInResponse) { -+ // No "token" in server response: -+ ExpectFailureAndRetryForResponse( -+ std::make_unique(R"({"data":"1111"})")); -+} -+ -+TEST_P(AdblockActivepingTelemetryTopicProviderTest, -+ FirstRunFailedDueToInvalidJsonResponse) { -+ // Not a valid JSON: -+ ExpectFailureAndRetryForResponse( -+ std::make_unique(R"(rubbish data)")); -+} -+ -+TEST_P(AdblockActivepingTelemetryTopicProviderTest, SecondRunSucceeded) { -+ // Successful first server response: -+ provider_->ParseResponse( -+ std::make_unique(R"({"token":"Monday"})")); -+ -+ // Store first last_ping_tag to compare against the next one: -+ base::Uuid first_response_uuid; -+ ExpectLastPingTagValid(GetPayload(), &first_response_uuid); -+ -+ // Next ping after normal delay, since the previous one succeeded: -+ EXPECT_EQ(provider_->GetTimeOfNextRequest(), -+ base::Time::Now() + kNormalPingInterval); -+ -+ task_environment_.FastForwardBy(kNormalPingInterval); -+ -+ // Successful second server response: -+ provider_->ParseResponse( -+ std::make_unique(R"({"token":"Tuesday"})")); -+ ExpectPayloadAndTimeConsistentAfterRestart(); -+ -+ // Payload now contains all ping dates set. -+ const std::string payload = GetPayload(); -+ ExpectPayloadContainsRequiredStaticValues(payload); -+ ExpectPayloadContainsValue(payload, "last_ping", base::Value("Tuesday")); -+ ExpectPayloadContainsValue(payload, "previous_last_ping", -+ base::Value("Monday")); -+ ExpectPayloadContainsValue(payload, "first_ping", base::Value("Monday")); -+ -+ base::Uuid second_response_uuid; -+ ExpectLastPingTagValid(payload, &second_response_uuid); -+ -+ // Different tag was generated: -+ EXPECT_NE(second_response_uuid, first_response_uuid); -+ ExpectPayloadAndTimeConsistentAfterRestart(); -+} -+ -+TEST_P(AdblockActivepingTelemetryTopicProviderTest, -+ PreviousLastPingTracksCorrectly) { -+ provider_->ParseResponse( -+ std::make_unique(R"({"token":"Monday"})")); -+ provider_->ParseResponse( -+ std::make_unique(R"({"token":"Tuesday"})")); -+ provider_->ParseResponse( -+ std::make_unique(R"({"token":"Wednesday"})")); -+ provider_->ParseResponse( -+ std::make_unique(R"({"token":"Thursday"})")); -+ -+ const std::string payload = GetPayload(); -+ ExpectPayloadContainsRequiredStaticValues(payload); -+ // "last_ping" is the one received most recently. -+ ExpectPayloadContainsValue(payload, "last_ping", base::Value("Thursday")); -+ // "previous_last_ping" is the one received before "last_ping". -+ ExpectPayloadContainsValue(payload, "previous_last_ping", -+ base::Value("Wednesday")); -+ // "first_ping" never changes, after the initial successful response. -+ ExpectPayloadContainsValue(payload, "first_ping", base::Value("Monday")); -+ // Note: "Wednesday" does not appear in results, it would be a -+ // "previous_previous_last_ping" which we don't track. -+ ExpectPayloadAndTimeConsistentAfterRestart(); -+} -+ -+TEST_P(AdblockActivepingTelemetryTopicProviderTest, TimeToNextPingAfterDelay) { -+ // At first, require next request to happen ASAP. -+ EXPECT_EQ(provider_->GetTimeOfNextRequest(), base::Time::Now()); -+ task_environment_.FastForwardBy(base::Seconds(30)); -+ provider_->ParseResponse( -+ std::make_unique(R"({"token":"Monday"})")); -+ // After a success, next ping should happen after a normal delay. -+ EXPECT_EQ(provider_->GetTimeOfNextRequest(), -+ base::Time::Now() + kNormalPingInterval); -+ -+ ExpectPayloadAndTimeConsistentAfterRestart(); -+} -+ -+INSTANTIATE_TEST_SUITE_P(All, -+ AdblockActivepingTelemetryTopicProviderTest, -+ testing::Values(AcceptableAds::Enabled, -+ AcceptableAds::Disabled)); +} // namespace adblock -diff --git a/components/adblock/core/test/adblock_controller_impl_test.cc b/components/adblock/core/test/adblock_controller_impl_test.cc ++ ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_H_ +diff --git a/components/adblock/core/subscription/subscription_service_impl.cc b/components/adblock/core/subscription/subscription_service_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/test/adblock_controller_impl_test.cc -@@ -0,0 +1,449 @@ ++++ b/components/adblock/core/subscription/subscription_service_impl.cc +@@ -0,0 +1,211 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -34593,443 +19436,205 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/adblock_controller_impl.h" ++#include "components/adblock/core/subscription/subscription_service_impl.h" + ++#include +#include +#include -+#include -+#include ++#include + -+#include "base/functional/callback_forward.h" ++#include "base/functional/bind.h" ++#include "base/logging.h" +#include "base/memory/scoped_refptr.h" -+#include "base/test/gmock_callback_support.h" -+#include "base/test/task_environment.h" -+#include "base/value_iterators.h" -+#include "components/adblock/core/adblock_controller.h" ++#include "base/memory/weak_ptr.h" ++#include "base/parameter_pack.h" ++#include "base/ranges/algorithm.h" ++#include "base/trace_event/common/trace_event_common.h" ++#include "base/trace_event/trace_event.h" +#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/common/adblock_prefs.h" -+#include "components/adblock/core/configuration/filtering_configuration.h" -+#include "components/adblock/core/configuration/test/mock_filtering_configuration.h" -+#include "components/adblock/core/subscription/subscription_config.h" -+#include "components/adblock/core/subscription/test/mock_subscription.h" -+#include "components/adblock/core/subscription/test/mock_subscription_service.h" -+#include "components/prefs/pref_member.h" -+#include "components/prefs/testing_pref_service.h" -+#include "gmock/gmock.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" ++#include "components/adblock/core/common/adblock_utils.h" ++#include "components/adblock/core/configuration/filtering_configuration_prefs.h" ++#include "components/adblock/core/subscription/filtering_configuration_maintainer.h" ++#include "components/adblock/core/subscription/subscription_collection.h" ++#include "components/adblock/core/subscription/subscription_service.h" + +namespace adblock { + -+using InstallationState = Subscription::InstallationState; -+using testing::_; -+using testing::Return; -+ -+bool operator==(const KnownSubscriptionInfo& lhs, -+ const KnownSubscriptionInfo& rhs) { -+ return lhs.url == rhs.url && lhs.languages == rhs.languages && -+ lhs.title == rhs.title; -+} -+ -+class AdblockControllerImplTest : public testing::Test { ++class EmptySubscription : public Subscription { + public: -+ AdblockControllerImplTest() { -+ common::prefs::RegisterProfilePrefs(pref_service_.registry()); -+ RecreateController(); -+ custom_subscriptions_pref_.Init( -+ common::prefs::kAdblockCustomSubscriptionsLegacy, &pref_service_); -+ subscriptions_pref_.Init(common::prefs::kAdblockSubscriptionsLegacy, -+ &pref_service_); -+ } -+ -+ void RecreateController( -+ std::string locale = "pl-PL", -+ std::vector known_subscriptions = -+ config::GetKnownSubscriptions()) { -+ if (testee_) { -+ testee_.reset(); -+ } -+ testee_ = std::make_unique( -+ &filtering_configuration_, &subscription_service_, locale, -+ std::move(known_subscriptions)); -+ } -+ -+ void ExpectInstallationTriggered(const GURL& subscription_url) { -+ EXPECT_CALL(filtering_configuration_, AddFilterList(subscription_url)); -+ } -+ -+ void ExpectNoInstallation(const GURL& subscription_url) { -+ EXPECT_CALL(filtering_configuration_, AddFilterList(subscription_url)) -+ .Times(0); ++ EmptySubscription(const GURL& url) : url_(url) {} ++ GURL GetSourceUrl() const override { return url_; } ++ std::string GetTitle() const override { return ""; } ++ std::string GetCurrentVersion() const override { return ""; } ++ InstallationState GetInstallationState() const override { ++ return InstallationState::Unknown; + } -+ -+ void ExpectRemoval(const GURL& subscription_url) { -+ EXPECT_CALL(filtering_configuration_, RemoveFilterList(subscription_url)); ++ base::Time GetInstallationTime() const override { ++ return base::Time::UnixEpoch(); + } -+ -+ void ExpectNoRemoval(const GURL& subscription_url) { -+ EXPECT_CALL(filtering_configuration_, RemoveFilterList(subscription_url)) -+ .Times(0); ++ base::TimeDelta GetExpirationInterval() const override { ++ return base::TimeDelta(); + } + -+ base::test::TaskEnvironment task_environment_; -+ TestingPrefServiceSimple pref_service_; -+ MockFilteringConfiguration filtering_configuration_; -+ MockSubscriptionService subscription_service_; -+ StringListPrefMember custom_subscriptions_pref_; -+ StringListPrefMember subscriptions_pref_; -+ std::unique_ptr testee_; -+ const GURL kRecommendedSubscription{ -+ "https://easylist-downloads.adblockplus.org/easylistpolish+easylist.txt"}; ++ private: ++ ~EmptySubscription() override {} ++ const GURL url_; +}; + -+TEST_F(AdblockControllerImplTest, EnableAndDisableAdBlocking) { -+ EXPECT_CALL(filtering_configuration_, IsEnabled()).WillOnce(Return(true)); -+ EXPECT_TRUE(testee_->IsAdblockEnabled()); -+ EXPECT_CALL(filtering_configuration_, IsEnabled()).WillOnce(Return(false)); -+ EXPECT_FALSE(testee_->IsAdblockEnabled()); ++SubscriptionServiceImpl::SubscriptionServiceImpl( ++ FilteringConfigurationMaintainerFactory maintainer_factory, ++ FilteringConfigurationCleaner configuration_cleaner) ++ : maintainer_factory_(std::move(maintainer_factory)), ++ configuration_cleaner_(std::move(configuration_cleaner)) {} + -+ // Switching state notifies observers and stores into FilteringConfiguration. -+ EXPECT_CALL(filtering_configuration_, SetEnabled(true)); -+ testee_->SetAdblockEnabled(true); -+} -+ -+TEST_F(AdblockControllerImplTest, GetKnownSubscriptions) { -+ EXPECT_EQ(config::GetKnownSubscriptions(), testee_->GetKnownSubscriptions()); ++SubscriptionServiceImpl::~SubscriptionServiceImpl() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ for (auto& entry : maintainers_) { ++ entry.first->RemoveObserver(this); ++ } +} + -+TEST_F(AdblockControllerImplTest, InstallingSubscription) { -+ const GURL subscription_url("https://subscription.com/1.txt"); -+ ExpectInstallationTriggered(subscription_url); -+ -+ testee_->InstallSubscription(subscription_url); ++std::vector> ++SubscriptionServiceImpl::GetCurrentSubscriptions( ++ FilteringConfiguration* configuration) const { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) { ++ return entry.first.get() == configuration; ++ }); ++ DCHECK(it != maintainers_.end()) << "Cannot get Subscriptions from an " ++ "unregistered FilteringConfiguration"; ++ if (!it->second) { ++ // Configuration is disabled ++ auto urls = it->first->GetFilterLists(); ++ std::vector> result; ++ base::ranges::transform( ++ urls, std::back_inserter(result), [](const auto& url) { ++ return base::MakeRefCounted(url); ++ }); ++ return result; ++ } ++ return it->second->GetCurrentSubscriptions(); +} + -+TEST_F(AdblockControllerImplTest, UninstallingSubscription) { -+ const GURL subscription_url("https://subscription.com/1.txt"); -+ -+ // Uninstalling subscription just removes from FilteringConfiguration. -+ ExpectRemoval(subscription_url); -+ testee_->UninstallSubscription(subscription_url); ++void SubscriptionServiceImpl::InstallFilteringConfiguration( ++ std::unique_ptr configuration) { ++ VLOG(1) << "[eyeo] FilteringConfiguration installed: " ++ << configuration->GetName(); ++ configuration->AddObserver(this); ++ std::unique_ptr maintainer; ++ if (configuration->IsEnabled()) { ++ // Only enabled configurations should be maintained. Disabled configurations ++ // are observed and added to the collection, but a Maintainer will be ++ // created in OnEnabledStateChanged. ++ maintainer = MakeMaintainer(configuration.get()); ++ } ++ auto* ptr = configuration.get(); ++ maintainers_.insert( ++ std::make_pair(std::move(configuration), std::move(maintainer))); ++ for (auto& observer : observers_) { ++ observer.OnFilteringConfigurationInstalled(ptr); ++ } +} + -+TEST_F(AdblockControllerImplTest, SubscriptionsPrefsMigrated) { -+ const GURL subscription_url1("https://subscription.com/1.txt"); -+ const GURL subscription_url2("https://subscription.com/2.txt"); -+ subscriptions_pref_.SetValue( -+ {subscription_url1.spec(), subscription_url2.spec()}); -+ -+ ExpectInstallationTriggered(subscription_url1); -+ ExpectInstallationTriggered(subscription_url2); -+ -+ RecreateController(); -+ testee_->MigrateLegacyPrefs(&pref_service_); -+ -+ // When recreating again, no installations triggered because migration is -+ // only done once. -+ ExpectNoInstallation(subscription_url1); -+ ExpectNoInstallation(subscription_url2); -+ RecreateController(); -+ testee_->MigrateLegacyPrefs(&pref_service_); ++void SubscriptionServiceImpl::UninstallFilteringConfiguration( ++ const std::string& configuration_name) { ++ VLOG(1) << "[eyeo] FilteringConfiguration uninstalled: " ++ << configuration_name; ++ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) { ++ return entry.first.get()->GetName() == configuration_name; ++ }); ++ if (it == maintainers_.end()) { ++ LOG(WARNING) << "[eyeo] Trying to uninstall not installed configuration " ++ << configuration_name; ++ return; ++ } ++ it->first->RemoveObserver(this); ++ it->second.reset(); ++ configuration_cleaner_.Run(it->first.get()); ++ maintainers_.erase(it); +} + -+TEST_F(AdblockControllerImplTest, CustomSubscriptionsMigratedFromPrefs) { -+ const GURL subscription_url1("https://subscription.com/1.txt"); -+ const GURL subscription_url2("https://subscription.com/2.txt"); -+ custom_subscriptions_pref_.SetValue( -+ {subscription_url1.spec(), subscription_url2.spec()}); -+ ExpectInstallationTriggered(subscription_url1); -+ ExpectInstallationTriggered(subscription_url2); -+ -+ RecreateController(); -+ testee_->MigrateLegacyPrefs(&pref_service_); -+ -+ // When recreating again, no installations triggered because migration is -+ // only done once. -+ ExpectNoInstallation(subscription_url1); -+ ExpectNoInstallation(subscription_url2); -+ RecreateController(); -+ testee_->MigrateLegacyPrefs(&pref_service_); ++std::vector ++SubscriptionServiceImpl::GetInstalledFilteringConfigurations() { ++ std::vector result; ++ base::ranges::transform(maintainers_, std::back_inserter(result), ++ [](const auto& pair) { return pair.first.get(); }); ++ return result; +} + -+TEST_F(AdblockControllerImplTest, EnableAcceptableAdsfPrefMigrated) { -+ pref_service_.SetBoolean(common::prefs::kEnableAcceptableAdsLegacy, false); -+ // Acceptable Ads is not installed (and even removed, if it was installed -+ // before) as old profile had it disabled. -+ ExpectRemoval(AcceptableAdsUrl()); -+ RecreateController(); -+ testee_->MigrateLegacyPrefs(&pref_service_); -+ // Migration only happens once. -+ ExpectNoRemoval(AcceptableAdsUrl()); -+ RecreateController(); -+ testee_->MigrateLegacyPrefs(&pref_service_); -+ -+ pref_service_.SetBoolean(common::prefs::kEnableAcceptableAdsLegacy, true); -+ // Acceptable Ads is installed but only once. -+ ExpectInstallationTriggered(AcceptableAdsUrl()); -+ RecreateController(); -+ testee_->MigrateLegacyPrefs(&pref_service_); ++FilteringConfiguration* ++SubscriptionServiceImpl::GetAdblockFilteringConfiguration() const { ++ const auto it = base::ranges::find_if(maintainers_, [](const auto& pair) { ++ return pair.first->GetName() == kAdblockFilteringConfigurationName; ++ }); ++ DCHECK(it != maintainers_.end()); ++ return it->first.get(); ++} + -+ ExpectNoInstallation(AcceptableAdsUrl()); -+ RecreateController(); -+ testee_->MigrateLegacyPrefs(&pref_service_); ++SubscriptionService::Snapshot SubscriptionServiceImpl::GetCurrentSnapshot() ++ const { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ Snapshot snapshot; ++ for (const auto& entry : maintainers_) { ++ if (!entry.second) { ++ continue; // Configuration is disabled ++ } ++ snapshot.push_back(entry.second->GetSubscriptionCollection()); ++ } ++ return snapshot; +} + -+TEST_F(AdblockControllerImplTest, EnabledStatePrefMigrated) { -+ // Pref is migrated once. -+ pref_service_.SetBoolean(common::prefs::kEnableAdblockLegacy, false); -+ EXPECT_CALL(filtering_configuration_, SetEnabled(false)); -+ RecreateController(); -+ testee_->MigrateLegacyPrefs(&pref_service_); -+ EXPECT_CALL(filtering_configuration_, SetEnabled(_)).Times(0); -+ RecreateController(); -+ testee_->MigrateLegacyPrefs(&pref_service_); -+ -+ // Works for true value as well. -+ pref_service_.SetBoolean(common::prefs::kEnableAdblockLegacy, true); -+ EXPECT_CALL(filtering_configuration_, SetEnabled(true)); -+ RecreateController(); -+ testee_->MigrateLegacyPrefs(&pref_service_); -+ EXPECT_CALL(filtering_configuration_, SetEnabled(_)).Times(0); -+ RecreateController(); -+ testee_->MigrateLegacyPrefs(&pref_service_); ++void SubscriptionServiceImpl::AddObserver(SubscriptionObserver* o) { ++ observers_.AddObserver(o); +} + -+TEST_F(AdblockControllerImplTest, DisableEyeoFilteringPrefAppliedOnFirstRun) { -+ { -+ auto flag_not_set = OverrideEyeoFilteringDisabledByDefault(false); -+ // Check normal 1st run. -+ pref_service_.SetBoolean(common::prefs::kInstallFirstStartSubscriptions, -+ true); -+ EXPECT_CALL(filtering_configuration_, SetEnabled(_)).Times(0); -+ testee_->RunFirstRunLogic(&pref_service_); -+ } -+ -+ // Confirm disabled on 1st run when flag is set. -+ { -+ auto flag_set = OverrideEyeoFilteringDisabledByDefault(true); -+ pref_service_.SetBoolean(common::prefs::kInstallFirstStartSubscriptions, -+ true); -+ EXPECT_CALL(filtering_configuration_, SetEnabled(false)); -+ testee_->RunFirstRunLogic(&pref_service_); -+ -+ // Assure it happens once during 1st run only. -+ EXPECT_CALL(filtering_configuration_, SetEnabled(_)).Times(0); -+ testee_->RunFirstRunLogic(&pref_service_); -+ } ++void SubscriptionServiceImpl::RemoveObserver(SubscriptionObserver* o) { ++ observers_.RemoveObserver(o); +} + -+TEST_F(AdblockControllerImplTest, EnablingAcceptableAdsInstallsSubscription) { -+ // Initially, AA is not installed. -+ EXPECT_CALL(filtering_configuration_, GetFilterLists()) -+ .WillRepeatedly(Return(std::vector{DefaultSubscriptionUrl()})); -+ EXPECT_FALSE(testee_->IsAcceptableAdsEnabled()); -+ -+ // Enabling AA adds new filter list. -+ ExpectInstallationTriggered(AcceptableAdsUrl()); -+ testee_->SetAcceptableAdsEnabled(true); -+ -+ // FilteringConfiguration now reports AA is installed. -+ EXPECT_CALL(filtering_configuration_, GetFilterLists()) -+ .WillRepeatedly(Return( -+ std::vector{DefaultSubscriptionUrl(), AcceptableAdsUrl()})); -+ EXPECT_TRUE(testee_->IsAcceptableAdsEnabled()); -+} -+ -+TEST_F(AdblockControllerImplTest, DisablingAcceptableAdsRemovesSubscription) { -+ // Initially, AA is installed. -+ EXPECT_CALL(filtering_configuration_, GetFilterLists()) -+ .WillRepeatedly(Return( -+ std::vector{DefaultSubscriptionUrl(), AcceptableAdsUrl()})); -+ EXPECT_TRUE(testee_->IsAcceptableAdsEnabled()); -+ -+ // Disabling AA removes the filter list. -+ ExpectRemoval(AcceptableAdsUrl()); -+ testee_->SetAcceptableAdsEnabled(false); -+ -+ // FilteringConfiguration now reports AA is not installed. -+ EXPECT_CALL(filtering_configuration_, GetFilterLists()) -+ .WillRepeatedly(Return(std::vector{DefaultSubscriptionUrl()})); -+ EXPECT_FALSE(testee_->IsAcceptableAdsEnabled()); -+} -+ -+TEST_F(AdblockControllerImplTest, CustomFilters) { -+ const auto installed_filters = std::vector{"abc", "def"}; -+ EXPECT_CALL(filtering_configuration_, GetCustomFilters()) -+ .WillOnce(Return(installed_filters)); -+ EXPECT_EQ(testee_->GetCustomFilters(), installed_filters); -+ -+ EXPECT_CALL(filtering_configuration_, AddCustomFilter("ggg")); -+ testee_->AddCustomFilter("ggg"); -+ -+ EXPECT_CALL(filtering_configuration_, RemoveCustomFilter("ggg")); -+ testee_->RemoveCustomFilter("ggg"); -+} -+ -+TEST_F(AdblockControllerImplTest, AllowedDomains) { -+ const auto installed_allowed_domains = -+ std::vector{"abc.com", "def.com"}; -+ EXPECT_CALL(filtering_configuration_, GetAllowedDomains()) -+ .WillOnce(Return(installed_allowed_domains)); -+ EXPECT_EQ(testee_->GetAllowedDomains(), installed_allowed_domains); -+ -+ EXPECT_CALL(filtering_configuration_, AddAllowedDomain("ggg.com")); -+ testee_->AddAllowedDomain("ggg.com"); -+ -+ EXPECT_CALL(filtering_configuration_, RemoveAllowedDomain("ggg.com")); -+ testee_->RemoveAllowedDomain("ggg.com"); -+} -+ -+TEST_F(AdblockControllerImplTest, -+ InstallLanguageBasedRecommendationAndAntiCvOnFirstRun) { -+ // Default prefs state indicates a first run situation. -+ pref_service_.SetBoolean(common::prefs::kInstallFirstStartSubscriptions, -+ true); -+ // Since there aren't any pre-existing subscriptions migrated, we will install -+ // a language-based recommendation. -+ ExpectInstallationTriggered(kRecommendedSubscription); -+ // By default, Acceptable Ads are enabled, so they will be installed as well. -+ ExpectInstallationTriggered(AcceptableAdsUrl()); -+ // Anti-CV filter list is installed as well, to enable snippets. -+ ExpectInstallationTriggered(AntiCVUrl()); -+ -+ RecreateController(); -+ testee_->RunFirstRunLogic(&pref_service_); -+} -+ -+TEST_F(AdblockControllerImplTest, -+ InstallDefaultRecommendationForNonMatchingLanguage) { -+ pref_service_.SetBoolean(common::prefs::kInstallFirstStartSubscriptions, -+ true); -+ // Since the language does not have a language-specific recommendation, we -+ // install a default list. -+ ExpectInstallationTriggered(DefaultSubscriptionUrl()); -+ // By default, Acceptable Ads are enabled, so they will be installed as well. -+ ExpectInstallationTriggered(AcceptableAdsUrl()); -+ // Anti-CV filter list is installed as well, to enable snippets. -+ ExpectInstallationTriggered(AntiCVUrl()); -+ -+ RecreateController("hu-HU"); -+ testee_->RunFirstRunLogic(&pref_service_); -+} -+ -+TEST_F(AdblockControllerImplTest, InstallAntiCvOnFirstRunIfMigrating) { -+ // Previous version of eyeo Chromium SDK had a specific subscription -+ // installed. Note that this is a different subscription from the recommended -+ // one for the user's locale. It will be installed on first run in the current -+ // version. -+ const GURL kMigratedSubscription{ -+ "https://easylist-downloads.adblockplus.org/" -+ "easylistgermany+easylist.txt"}; -+ subscriptions_pref_.SetValue({kMigratedSubscription.spec()}); -+ -+ pref_service_.SetBoolean(common::prefs::kInstallFirstStartSubscriptions, -+ true); -+ ExpectInstallationTriggered(kMigratedSubscription); -+ ExpectInstallationTriggered(kRecommendedSubscription); -+ ExpectInstallationTriggered(AntiCVUrl()); -+ ExpectInstallationTriggered(AcceptableAdsUrl()); -+ -+ RecreateController(); -+ testee_->RunFirstRunLogic(&pref_service_); -+ testee_->MigrateLegacyPrefs(&pref_service_); -+} -+ -+TEST_F(AdblockControllerImplTest, AADefaultOffFirstRun) { -+ pref_service_.SetBoolean(common::prefs::kInstallFirstStartSubscriptions, -+ true); -+ const std::vector recommendations = { -+ {AcceptableAdsUrl(), -+ "AA", -+ {}, -+ SubscriptionUiVisibility::Invisible, -+ SubscriptionFirstRunBehavior::Ignore, -+ SubscriptionPrivilegedFilterStatus::Forbidden}}; -+ ExpectNoInstallation(AcceptableAdsUrl()); -+ RecreateController("pl-PL", recommendations); -+ testee_->RunFirstRunLogic(&pref_service_); ++void SubscriptionServiceImpl::OnEnabledStateChanged( ++ FilteringConfiguration* config) { ++ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) { ++ return entry.first.get() == config; ++ }); ++ DCHECK(it != maintainers_.end()) << "Received OnEnabledStateChanged from " ++ "unregistered FilteringConfiguration"; ++ VLOG(1) << "[eyeo] FilteringConfiguration " << config->GetName() ++ << (config->IsEnabled() ? " enabled" : " disabled"); ++ if (config->IsEnabled()) { ++ // Enable the configuration by creating a new ++ // FilteringConfigurationMaintainer. This triggers installing missing ++ // subscriptions etc. ++ it->second = MakeMaintainer(config); ++ } else { ++ // Disable the configuration by removing its ++ // FilteringConfigurationMaintainer. This cancels all related operations and ++ // frees all associated memory. ++ it->second.reset(); ++ } +} + -+TEST_F(AdblockControllerImplTest, AADefaultOnFirstRun) { -+ pref_service_.SetBoolean(common::prefs::kInstallFirstStartSubscriptions, -+ true); -+ const std::vector recommendations = { -+ {AcceptableAdsUrl(), -+ "AA", -+ {}, -+ SubscriptionUiVisibility::Invisible, -+ SubscriptionFirstRunBehavior::Subscribe, -+ SubscriptionPrivilegedFilterStatus::Forbidden}}; -+ ExpectInstallationTriggered(AcceptableAdsUrl()); -+ RecreateController("pl-PL", recommendations); -+ testee_->RunFirstRunLogic(&pref_service_); ++void SubscriptionServiceImpl::OnSubscriptionUpdated( ++ const GURL& subscription_url) { ++ for (auto& observer : observers_) { ++ observer.OnSubscriptionInstalled(subscription_url); ++ } +} + -+TEST_F(AdblockControllerImplTest, -+ NoInstallationWhenDefaultSubscriptionIgnored) { -+ pref_service_.SetBoolean(common::prefs::kInstallFirstStartSubscriptions, -+ true); -+ const std::vector recommendations = { -+ {DefaultSubscriptionUrl(), -+ "EasyList", -+ {}, -+ SubscriptionUiVisibility::Invisible, -+ SubscriptionFirstRunBehavior::Ignore, -+ SubscriptionPrivilegedFilterStatus::Forbidden}}; -+ ExpectNoInstallation(DefaultSubscriptionUrl()); -+ RecreateController("pl-PL", recommendations); -+ testee_->RunFirstRunLogic(&pref_service_); -+} -+ -+TEST_F(AdblockControllerImplTest, SeveralLanguageSpecificSubscriptions) { -+ pref_service_.SetBoolean(common::prefs::kInstallFirstStartSubscriptions, -+ true); -+ const auto kEnglishUrl1 = GURL("https://english.com/filter1.txt"); -+ const auto kEnglishUrl2 = GURL("https://english.com/filter2.txt"); -+ const auto kGermanUrl1 = GURL("https://german.com/filter1.txt"); -+ const std::vector recommendations = { -+ {DefaultSubscriptionUrl(), -+ "EasyList", -+ {}, -+ SubscriptionUiVisibility::Invisible, -+ SubscriptionFirstRunBehavior::Subscribe, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {kEnglishUrl1, -+ "English list 1", -+ {"en"}, -+ SubscriptionUiVisibility::Invisible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {kEnglishUrl2, -+ "English list 2", -+ {"en"}, -+ SubscriptionUiVisibility::Invisible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}, -+ {kGermanUrl1, -+ "German list 1", -+ {"de"}, -+ SubscriptionUiVisibility::Invisible, -+ SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch, -+ SubscriptionPrivilegedFilterStatus::Forbidden}}; -+ // Installed because SubscriptionFirstRunBehavior::Subscribe, not specific to -+ // any language. -+ ExpectInstallationTriggered(DefaultSubscriptionUrl()); -+ // No installation because locale doesn't match. -+ ExpectNoInstallation(kGermanUrl1); -+ // All matching language-specific lists installed. -+ ExpectInstallationTriggered(kEnglishUrl1); -+ ExpectInstallationTriggered(kEnglishUrl2); -+ RecreateController("en-US", recommendations); -+ testee_->RunFirstRunLogic(&pref_service_); ++std::unique_ptr ++SubscriptionServiceImpl::MakeMaintainer(FilteringConfiguration* configuration) { ++ return maintainer_factory_.Run( ++ configuration, ++ base::BindRepeating(&SubscriptionServiceImpl::OnSubscriptionUpdated, ++ weak_ptr_factory_.GetWeakPtr())); +} + +} // namespace adblock -diff --git a/components/adblock/core/test/adblock_telemetry_service_unittest.cc b/components/adblock/core/test/adblock_telemetry_service_unittest.cc +diff --git a/components/adblock/core/subscription/subscription_service_impl.h b/components/adblock/core/subscription/subscription_service_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/test/adblock_telemetry_service_unittest.cc -@@ -0,0 +1,409 @@ ++++ b/components/adblock/core/subscription/subscription_service_impl.h +@@ -0,0 +1,97 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -35047,403 +19652,131 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/adblock_telemetry_service.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_IMPL_H_ + ++#include +#include ++#include + -+#include "base/test/mock_callback.h" -+#include "base/test/task_environment.h" -+#include "base/time/time.h" -+#include "components/adblock/core/configuration/test/mock_filtering_configuration.h" -+#include "net/base/load_flags.h" -+#include "net/base/net_errors.h" -+#include "services/network/public/cpp/resource_request.h" -+#include "services/network/public/cpp/url_loader_completion_status.h" -+#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" -+#include "services/network/public/mojom/url_response_head.mojom.h" -+#include "services/network/test/test_url_loader_factory.h" -+#include "services/network/test/test_utils.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" ++#include "base/functional/callback.h" + -+using testing::NiceMock; -+using testing::Return; -+using testing::ReturnRef; ++#include "base/functional/callback_forward.h" ++#include "base/memory/weak_ptr.h" ++#include "base/observer_list.h" ++#include "base/sequence_checker.h" ++#include "components/adblock/core/configuration/filtering_configuration.h" ++#include "components/adblock/core/subscription/filtering_configuration_maintainer.h" ++#include "components/adblock/core/subscription/installed_subscription.h" ++#include "components/adblock/core/subscription/preloaded_subscription_provider.h" ++#include "components/adblock/core/subscription/subscription_downloader.h" ++#include "components/adblock/core/subscription/subscription_persistent_metadata.h" ++#include "components/adblock/core/subscription/subscription_persistent_storage.h" ++#include "components/adblock/core/subscription/subscription_service.h" ++#include "components/adblock/core/subscription/subscription_updater.h" + +namespace adblock { + -+namespace { -+ -+class MockTopicProvider -+ : public NiceMock { -+ public: -+ MOCK_METHOD(GURL, GetEndpointURL, (), (const, override)); -+ MOCK_METHOD(std::string, GetAuthToken, (), (const, override)); -+ MOCK_METHOD(void, GetPayload, (PayloadCallback), (const, override)); -+ MOCK_METHOD(base::Time, GetTimeOfNextRequest, (), (const, override)); -+ MOCK_METHOD(void, ParseResponse, (std::unique_ptr), (override)); -+ MOCK_METHOD(void, FetchDebugInfo, (DebugInfoCallback), (const, override)); -+}; -+ -+const auto kInitialDelay = base::Seconds(30); -+const auto kCheckInterval = base::Minutes(5); -+} // namespace -+ -+class AdblockTelemetryServiceTest : public testing::Test { ++class SubscriptionServiceImpl final : public SubscriptionService, ++ public FilteringConfiguration::Observer { + public: -+ void SetUp() override { -+ const std::string adblock_name = "adblock"; -+ telemetry_service_ = std::make_unique( -+ &filtering_configuration_, test_shared_url_loader_factory_, -+ kInitialDelay, kCheckInterval); -+ } -+ -+ MockTopicProvider* RegisterFooMock() { -+ auto* mock_provider = RegisterNewMockTopicProvider(); -+ ON_CALL(*mock_provider, GetEndpointURL()).WillByDefault(Return(kFooUrl)); -+ ON_CALL(*mock_provider, GetAuthToken()).WillByDefault(Return("foo_token")); -+ ON_CALL(*mock_provider, GetPayload(testing::_)) -+ .WillByDefault([](MockTopicProvider::PayloadCallback callback) { -+ std::move(callback).Run("foo_data"); -+ }); -+ ON_CALL(*mock_provider, GetTimeOfNextRequest()) -+ .WillByDefault(Return(base::Time::Now() + kFooDelay)); -+ return mock_provider; -+ } -+ -+ void ExpectFooMadeRequest(int pending_request_idx) { -+ const auto& resource_request = -+ test_url_loader_factory_.GetPendingRequest(pending_request_idx) -+ ->request; -+ EXPECT_EQ(resource_request.url, kFooUrl); -+ AssertRequestContainsRequiredData(resource_request, "foo_data", -+ "foo_token"); -+ } -+ -+ MockTopicProvider* RegisterBarMock() { -+ auto* mock_provider = RegisterNewMockTopicProvider(); -+ ON_CALL(*mock_provider, GetEndpointURL()).WillByDefault(Return(kBarUrl)); -+ ON_CALL(*mock_provider, GetAuthToken()).WillByDefault(Return("bar_token")); -+ ON_CALL(*mock_provider, GetPayload(testing::_)) -+ .WillByDefault([](MockTopicProvider::PayloadCallback callback) { -+ std::move(callback).Run("bar_data"); -+ }); -+ ON_CALL(*mock_provider, GetTimeOfNextRequest()) -+ .WillByDefault(Return(base::Time::Now() + kBarDelay)); -+ return mock_provider; -+ } ++ // Used to notify this about updates to installed subscriptions. ++ using SubscriptionUpdatedCallback = ++ base::RepeatingCallback; ++ // Used to create FilteringConfigurationMaintainers for newly installed ++ // FilteringConfigurations. ++ using FilteringConfigurationMaintainerFactory = ++ base::RepeatingCallback( ++ FilteringConfiguration* configuration, ++ SubscriptionUpdatedCallback observer)>; ++ using FilteringConfigurationCleaner = ++ base::RepeatingCallback; ++ explicit SubscriptionServiceImpl( ++ FilteringConfigurationMaintainerFactory maintainer_factory, ++ FilteringConfigurationCleaner configuration_cleaner); ++ ~SubscriptionServiceImpl() final; + -+ void ExpectBarMadeRequest(int pending_request_idx) { -+ const auto& resource_request = -+ test_url_loader_factory_.GetPendingRequest(pending_request_idx) -+ ->request; -+ EXPECT_EQ(resource_request.url, kBarUrl); -+ AssertRequestContainsRequiredData(resource_request, "bar_data", -+ "bar_token"); -+ } ++ // SubscriptionService: ++ std::vector> GetCurrentSubscriptions( ++ FilteringConfiguration* configuration) const final; ++ void InstallFilteringConfiguration( ++ std::unique_ptr configuration) final; ++ void UninstallFilteringConfiguration( ++ const std::string& configuration_name) final; ++ std::vector GetInstalledFilteringConfigurations() ++ final; ++ FilteringConfiguration* GetAdblockFilteringConfiguration() const final; ++ Snapshot GetCurrentSnapshot() const final; ++ void AddObserver(SubscriptionObserver*) final; ++ void RemoveObserver(SubscriptionObserver*) final; + -+ protected: -+ MockTopicProvider* RegisterNewMockTopicProvider() { -+ auto provider = std::make_unique(); -+ auto* provider_bare_ptr = provider.get(); -+ telemetry_service_->AddTopicProvider(std::move(provider)); -+ return provider_bare_ptr; -+ } ++ // FilteringConfiguration::Observer: ++ void OnEnabledStateChanged(FilteringConfiguration* config) final; + -+ void AssertRequestContainsRequiredData( -+ const network::ResourceRequest& resource_request, -+ const std::string& expected_upload_data, -+ const std::string& expected_auth_token) { -+ // Cookies are not sent nor stored: -+ EXPECT_FALSE(resource_request.SavesCookies()); -+ EXPECT_FALSE(resource_request.SendsCookies()); -+ -+ // Authorization token is being sent: -+ std::string auth_header; -+ ASSERT_TRUE(resource_request.headers.GetHeader( -+ net::HttpRequestHeaders::kAuthorization, &auth_header)); -+ EXPECT_EQ(auth_header, "Bearer " + expected_auth_token); -+ -+ // "Accept: application/json" is sent. -+ std::string accept_header; -+ ASSERT_TRUE(resource_request.headers.GetHeader( -+ net::HttpRequestHeaders::kAccept, &accept_header)); -+ EXPECT_EQ(accept_header, "application/json"); -+ -+ // Cache is being bypassed: -+ EXPECT_EQ(resource_request.load_flags, -+ net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE); -+ -+ // Payload is being sent: -+ std::string upload_data; -+ for (const auto& elem : *(resource_request.request_body->elements())) { -+ auto piece = elem.As().AsStringPiece(); -+ upload_data.append(piece.data(), piece.size()); -+ } -+ EXPECT_EQ(upload_data, expected_upload_data); -+ } ++ private: ++ void OnSubscriptionUpdated(const GURL& subscription_url); ++ std::unique_ptr MakeMaintainer( ++ FilteringConfiguration* configuration); + -+ base::test::TaskEnvironment task_environment_{ -+ base::test::TaskEnvironment::TimeSource::MOCK_TIME}; -+ MockFilteringConfiguration filtering_configuration_; -+ network::TestURLLoaderFactory test_url_loader_factory_; -+ scoped_refptr -+ test_shared_url_loader_factory_{ -+ base::MakeRefCounted( -+ &test_url_loader_factory_)}; -+ constexpr static base::TimeDelta kFooDelay{base::Minutes(4)}; -+ constexpr static base::TimeDelta kBarDelay{base::Minutes(6)}; -+ const GURL kFooUrl{"https://telemetry.com/topic/eyeo_foo/version/3"}; -+ const GURL kBarUrl{"https://telemetry.com/topic/eyeo_bar/version/2"}; -+ -+ std::unique_ptr telemetry_service_; ++ SEQUENCE_CHECKER(sequence_checker_); ++ FilteringConfigurationMaintainerFactory maintainer_factory_; ++ FilteringConfigurationCleaner configuration_cleaner_; ++ using MaintainersCollection = ++ std::map, ++ std::unique_ptr>; ++ MaintainersCollection maintainers_; ++ base::ObserverList observers_; ++ base::WeakPtrFactory weak_ptr_factory_{this}; +}; + -+TEST_F(AdblockTelemetryServiceTest, RequestNotMadeBeforeInitialDelay) { -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(true)); -+ -+ auto* mock = RegisterFooMock(); -+ EXPECT_CALL(*mock, GetTimeOfNextRequest()) -+ .WillOnce(Return(base::Time::Now())); -+ -+ telemetry_service_->Start(); -+ -+ // Despite the Foo topic provider declaring a next request time of Now(), -+ // we wait until kInitialDelay has passed. -+ task_environment_.RunUntilIdle(); -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 0); -+ -+ // Only after initial delay has passed, there's a network request made. -+ task_environment_.FastForwardBy(kInitialDelay); -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 1); -+ ExpectFooMadeRequest(0); -+} -+ -+TEST_F(AdblockTelemetryServiceTest, -+ ScheduleStartsImmediatelyWhenAdblockEnabled) { -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(true)); -+ -+ RegisterFooMock(); -+ -+ telemetry_service_->Start(); -+ -+ // There are no TopicProviders that are due already after the initial delay. -+ task_environment_.FastForwardBy(kInitialDelay); -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 0); -+ -+ // The topic should have scheduled a request according to its -+ // GetTimeOfNextRequest(). It will be checked after kCheckInterval. -+ task_environment_.FastForwardBy(kCheckInterval); -+ -+ // A request was sent to a URL built according to topic provider's data. -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 1); -+ ExpectFooMadeRequest(0); -+} -+ -+TEST_F(AdblockTelemetryServiceTest, ScheduleStartupDelayedWhenAdblockDisabled) { -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(false)); -+ -+ RegisterFooMock(); -+ -+ telemetry_service_->Start(); -+ -+ // No requests initially. -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 0); -+ -+ // A lot of time passes. -+ task_environment_.FastForwardBy(kCheckInterval * 5); -+ // There was no network request made, because IsAdblockEnabled() is false. -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 0); -+ -+ // IsAdblockEnabled() becomes true: -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(true)); -+ for (auto& o : filtering_configuration_.observers_) { -+ o.OnEnabledStateChanged(&filtering_configuration_); -+ } -+ -+ // Schedule is started, first request made after kInitialDelay. -+ task_environment_.FastForwardBy(kInitialDelay); -+ -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 1); -+ ExpectFooMadeRequest(0); -+} -+ -+TEST_F(AdblockTelemetryServiceTest, ScheduleAbortedWhenAdblockDisabled) { -+ // Schedule starts normally, without delay: -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(true)); -+ RegisterFooMock(); -+ telemetry_service_->Start(); -+ -+ // User disables Adblocking. -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(false)); -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(false)); -+ for (auto& o : filtering_configuration_.observers_) { -+ o.OnEnabledStateChanged(&filtering_configuration_); -+ } -+ -+ // A lot of time passes with no requests, schedule is stopped. -+ task_environment_.FastForwardBy(kCheckInterval * 5); -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 0); -+} -+ -+TEST_F(AdblockTelemetryServiceTest, MultipleProvidersMakeRequests) { -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(true)); -+ -+ RegisterFooMock(); -+ RegisterBarMock(); -+ -+ telemetry_service_->Start(); -+ -+ // No requests initially. -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 0); -+ -+ // Time for Foo topic provider to make a request. -+ task_environment_.FastForwardBy(kInitialDelay); -+ task_environment_.FastForwardBy(kCheckInterval); -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 1); -+ ExpectFooMadeRequest(0); -+ -+ // Time for Bar topic provider to make a request. -+ task_environment_.FastForwardBy(kCheckInterval); -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 2); -+ ExpectBarMadeRequest(1); -+} -+ -+TEST_F(AdblockTelemetryServiceTest, SuccessfulResponseReceived) { -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(true)); -+ -+ auto* mock = RegisterFooMock(); -+ -+ telemetry_service_->Start(); -+ -+ task_environment_.FastForwardBy(kInitialDelay); -+ task_environment_.FastForwardBy(kCheckInterval); -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 1); -+ ExpectFooMadeRequest(0); -+ -+ const std::string response = "response_content"; -+ -+ // Response will trigger TopicProvider's ParseResponse(). -+ EXPECT_CALL(*mock, ParseResponse(testing::Pointee(response))); -+ test_url_loader_factory_.SimulateResponseForPendingRequest(kFooUrl.spec(), -+ response); -+} -+ -+TEST_F(AdblockTelemetryServiceTest, Non200ResponseStillParsed) { -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(true)); -+ -+ auto* mock = RegisterFooMock(); -+ -+ telemetry_service_->Start(); -+ -+ task_environment_.FastForwardBy(kInitialDelay); -+ task_environment_.FastForwardBy(kCheckInterval); -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 1); -+ ExpectFooMadeRequest(0); -+ -+ const std::string response = "error_content"; -+ -+ // Even with a non-200 response code, TopicProvider is still shown the body -+ // of the response. The response may contain an error description which the -+ // TopicProvider may want to parse. -+ EXPECT_CALL(*mock, ParseResponse(testing::Pointee(response))); -+ test_url_loader_factory_.SimulateResponseForPendingRequest( -+ kFooUrl.spec(), response, net::HTTP_FORBIDDEN); -+} -+ -+TEST_F(AdblockTelemetryServiceTest, RequestAbortedWhenAdblockDisabled) { -+ // Start schedule normally: -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(true)); -+ auto* mock = RegisterFooMock(); -+ telemetry_service_->Start(); -+ task_environment_.FastForwardBy(kInitialDelay); -+ task_environment_.FastForwardBy(kCheckInterval); -+ // Request is made: -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 1); -+ ExpectFooMadeRequest(0); -+ -+ // Adblocking is disabled before response arrives: -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(false)); -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(false)); -+ for (auto& o : filtering_configuration_.observers_) { -+ o.OnEnabledStateChanged(&filtering_configuration_); -+ } -+ -+ // Now, TopicProvider is not triggered even when response arrives. -+ EXPECT_CALL(*mock, ParseResponse(testing::_)).Times(0); -+ -+ test_url_loader_factory_.SimulateResponseForPendingRequest(kFooUrl.spec(), -+ "response"); -+} -+ -+TEST_F(AdblockTelemetryServiceTest, NegativeTimeToNextRequest) { -+ EXPECT_CALL(filtering_configuration_, IsEnabled()) -+ .WillRepeatedly(Return(true)); -+ -+ auto* mock = RegisterFooMock(); -+ // TopicProvider returns a negative time to next request, as if the request -+ // was supposed to happen in the past. This is a normal scenario, ex. when -+ // the browser was shut down for longer than the duration of request interval. -+ EXPECT_CALL(*mock, GetTimeOfNextRequest()) -+ .WillOnce(testing::Return(base::Time::Now() - base::Seconds(30))); -+ -+ telemetry_service_->Start(); -+ task_environment_.FastForwardBy(kInitialDelay); -+ // Request is made: -+ ASSERT_EQ(test_url_loader_factory_.NumPending(), 1); -+ ExpectFooMadeRequest(0); -+} ++} // namespace adblock + -+TEST_F(AdblockTelemetryServiceTest, CollectDebugInfoFromProviders) { -+ auto* foo_mock = RegisterFooMock(); -+ auto* bar_mock = RegisterBarMock(); -+ base::MockCallback -+ service_callback; ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_SERVICE_IMPL_H_ +diff --git a/components/adblock/core/subscription/subscription_updater.h b/components/adblock/core/subscription/subscription_updater.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/subscription/subscription_updater.h +@@ -0,0 +1,35 @@ ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ + -+ // foo_mock provides the debug info synchronously. -+ EXPECT_CALL(*foo_mock, FetchDebugInfo(testing::_)) -+ .WillOnce([](MockTopicProvider::DebugInfoCallback callback) { -+ std::move(callback).Run("foo_debug_info"); -+ }); ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_H_ + -+ // bar_mock provides the debug info asynchronously, after foo_mock. -+ AdblockTelemetryService::TopicProvider::DebugInfoCallback bar_callback; -+ EXPECT_CALL(*bar_mock, FetchDebugInfo(testing::_)) -+ .WillOnce([&bar_callback](MockTopicProvider::DebugInfoCallback callback) { -+ bar_callback = std::move(callback); -+ }); ++#include "base/functional/callback_forward.h" + -+ // The service callback is called only after both providers have provided -+ // their debug info. -+ // Not yet: -+ EXPECT_CALL(service_callback, Run(testing::_)).Times(0); -+ telemetry_service_->GetTopicProvidersDebugInfo(service_callback.Get()); ++namespace adblock { + -+ // Now bar_mock provides its debug info. -+ EXPECT_CALL(service_callback, -+ Run(testing::ElementsAre("foo_debug_info", "bar_debug_info"))); -+ std::move(bar_callback).Run("bar_debug_info"); -+} ++// Periodically updates installed subscriptions. ++class SubscriptionUpdater { ++ public: ++ virtual ~SubscriptionUpdater() = default; ++ virtual void StartSchedule(base::RepeatingClosure run_update_check) = 0; ++ virtual void StopSchedule() = 0; ++}; + +} // namespace adblock -diff --git a/components/adblock/core/test/bundled_subscription_test.cc b/components/adblock/core/test/bundled_subscription_test.cc ++ ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_H_ +diff --git a/components/adblock/core/subscription/subscription_updater_impl.cc b/components/adblock/core/subscription/subscription_updater_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/test/bundled_subscription_test.cc -@@ -0,0 +1,49 @@ ++++ b/components/adblock/core/subscription/subscription_updater_impl.cc +@@ -0,0 +1,65 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -35461,43 +19794,59 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include ++#include "components/adblock/core/subscription/subscription_updater_impl.h" + -+#include "components/adblock/core/common/adblock_utils.h" -+#include "components/adblock/core/common/flatbuffer_data.h" -+#include "components/adblock/core/schema/filter_list_schema_generated.h" -+#include "components/grit/components_resources.h" -+#include "testing/gtest/include/gtest/gtest.h" ++#include ++#include ++ ++#include "base/functional/bind.h" ++#include "base/functional/callback_helpers.h" ++#include "base/logging.h" ++#include "base/time/time.h" + +namespace adblock { + -+TEST(AdblockBundledSubscriptionTest, EasyListIsValid) { -+ auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EASYLIST); -+ flatbuffers::Verifier verifier(buffer->data(), buffer->size()); -+ EXPECT_TRUE(flat::VerifySubscriptionBuffer(verifier)); ++SubscriptionUpdaterImpl::SubscriptionUpdaterImpl(base::TimeDelta initial_delay, ++ base::TimeDelta check_interval) ++ : initial_delay_(initial_delay), check_interval_(check_interval) {} ++ ++SubscriptionUpdaterImpl::~SubscriptionUpdaterImpl() = default; ++ ++void SubscriptionUpdaterImpl::StartSchedule( ++ base::RepeatingClosure run_update_check) { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ DCHECK(!timer_.IsRunning()); ++ run_update_check_ = std::move(run_update_check); ++ VLOG(1) << "[eyeo] Starting update schedule, first check scheduled for " ++ << base::Time::Now() + initial_delay_; ++ timer_.Start(FROM_HERE, initial_delay_, ++ base::BindOnce(&SubscriptionUpdaterImpl::RunUpdateCheck, ++ weak_ptr_factory_.GetWeakPtr())); +} + -+TEST(AdblockBundledSubscriptionTest, ExceptionrulesIsValid) { -+ auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_EXCEPTIONRULES); -+ flatbuffers::Verifier verifier(buffer->data(), buffer->size()); -+ EXPECT_TRUE(flat::VerifySubscriptionBuffer(verifier)); ++void SubscriptionUpdaterImpl::StopSchedule() { ++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ VLOG(1) << "[eyeo] Stopping update schedule"; ++ timer_.Stop(); +} + -+TEST(AdblockBundledSubscriptionTest, AnticvIsValid) { -+ auto buffer = utils::MakeFlatbufferDataFromResourceBundle( -+ IDR_ADBLOCK_FLATBUFFER_ANTICV); -+ flatbuffers::Verifier verifier(buffer->data(), buffer->size()); -+ EXPECT_TRUE(flat::VerifySubscriptionBuffer(verifier)); ++void SubscriptionUpdaterImpl::RunUpdateCheck() { ++ VLOG(1) << "[eyeo] Running subscription update check"; ++ run_update_check_.Run(); ++ VLOG(1) ++ << "[eyeo] Subscription update check completed, next one scheduled for " ++ << base::Time::Now() + check_interval_; ++ timer_.Start(FROM_HERE, check_interval_, ++ base::BindOnce(&SubscriptionUpdaterImpl::RunUpdateCheck, ++ weak_ptr_factory_.GetWeakPtr())); +} + +} // namespace adblock -diff --git a/components/adblock/core/test/mock_adblock_controller.cc b/components/adblock/core/test/mock_adblock_controller.cc +diff --git a/components/adblock/core/subscription/subscription_updater_impl.h b/components/adblock/core/subscription/subscription_updater_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/test/mock_adblock_controller.cc -@@ -0,0 +1,26 @@ ++++ b/components/adblock/core/subscription/subscription_updater_impl.h +@@ -0,0 +1,52 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -35515,20 +19864,46 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/test/mock_adblock_controller.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_IMPL_H_ ++ ++#include ++#include ++ ++#include "base/memory/weak_ptr.h" ++#include "base/sequence_checker.h" ++#include "base/timer/timer.h" ++#include "components/adblock/core/subscription/subscription_updater.h" + +namespace adblock { + -+MockAdblockController::MockAdblockController() = default; ++class SubscriptionUpdaterImpl final : public SubscriptionUpdater { ++ public: ++ SubscriptionUpdaterImpl(base::TimeDelta initial_delay, ++ base::TimeDelta check_interval); ++ ~SubscriptionUpdaterImpl() final; ++ void StartSchedule(base::RepeatingClosure run_update_check) final; ++ void StopSchedule() final; ++ ++ private: ++ void RunUpdateCheck(); + -+MockAdblockController::~MockAdblockController() = default; ++ SEQUENCE_CHECKER(sequence_checker_); ++ base::RepeatingClosure run_update_check_; ++ const base::TimeDelta initial_delay_; ++ const base::TimeDelta check_interval_; ++ base::OneShotTimer timer_; ++ base::WeakPtrFactory weak_ptr_factory_{this}; ++}; + +} // namespace adblock -diff --git a/components/adblock/core/test/mock_adblock_controller.h b/components/adblock/core/test/mock_adblock_controller.h ++ ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_UPDATER_IMPL_H_ +diff --git a/components/adblock/core/subscription/subscription_validator.h b/components/adblock/core/subscription/subscription_validator.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/test/mock_adblock_controller.h -@@ -0,0 +1,71 @@ ++++ b/components/adblock/core/subscription/subscription_validator.h +@@ -0,0 +1,59 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -35546,65 +19921,53 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_TEST_MOCK_ADBLOCK_CONTROLLER_H_ -+#define COMPONENTS_ADBLOCK_CORE_TEST_MOCK_ADBLOCK_CONTROLLER_H_ -+ -+#include "base/observer_list.h" -+#include "components/adblock/core/adblock_controller.h" -+#include "components/adblock/core/subscription/installed_subscription.h" -+#include "testing/gmock/include/gmock/gmock.h" ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_H_ + -+using testing::NiceMock; ++#include "base/files/file_path.h" ++#include "base/functional/callback_forward.h" ++#include "components/adblock/core/common/flatbuffer_data.h" + +namespace adblock { + -+class MockAdblockController : public NiceMock { ++// Validates potentially untrusted Subscriptions read from disk. ++// Is thread-safe, returned callbacks can be called from a background thread. ++class SubscriptionValidator { + public: -+ MockAdblockController(); -+ ~MockAdblockController() override; -+ -+ MOCK_METHOD(void, SetAdblockEnabled, (bool enabled), (override)); -+ MOCK_METHOD(bool, IsAdblockEnabled, (), (const, override)); -+ MOCK_METHOD(void, SetAcceptableAdsEnabled, (bool enabled), (override)); -+ MOCK_METHOD(bool, IsAcceptableAdsEnabled, (), (const, override)); -+ MOCK_METHOD(void, InstallSubscription, (const GURL& url), (override)); -+ MOCK_METHOD(void, UninstallSubscription, (const GURL& url), (override)); -+ MOCK_METHOD(std::vector>, -+ GetInstalledSubscriptions, -+ (), -+ (const, override)); -+ MOCK_METHOD(void, AddAllowedDomain, (const std::string& domain), (override)); -+ MOCK_METHOD(void, -+ RemoveAllowedDomain, -+ (const std::string& domain), -+ (override)); -+ MOCK_METHOD(std::vector, -+ GetAllowedDomains, -+ (), -+ (const, override)); -+ MOCK_METHOD(std::vector, -+ GetKnownSubscriptions, -+ (), -+ (const, override)); -+ MOCK_METHOD(void, AddCustomFilter, (const std::string& filter), (override)); -+ MOCK_METHOD(void, -+ RemoveCustomFilter, -+ (const std::string& filter), -+ (override)); -+ MOCK_METHOD(std::vector, -+ GetCustomFilters, -+ (), -+ (const, override)); ++ virtual ~SubscriptionValidator() = default; ++ // Verifies if |data| has a signature that matches a previously stored ++ // signature for |path| and whether the schema version is supported. To avoid ++ // race conditions, only the state current for the time of retrieving the ++ // callback is considered, subsequent calls to |StoreTrustedSignature| will ++ // not affect the results. You need to recreate the callback to read new ++ // state. ++ using IsSignatureValidThreadSafeCallback = ++ base::RepeatingCallback; ++ virtual IsSignatureValidThreadSafeCallback IsSignatureValid() const = 0; ++ ++ // Asynchronously persistently store the signature of |data| associated with ++ // |path|. ++ using StoreTrustedSignatureThreadSafeCallback = ++ base::OnceCallback; ++ virtual StoreTrustedSignatureThreadSafeCallback StoreTrustedSignature() = 0; ++ ++ // Asynchronously removes the signature of file |path| from persistent ++ // storage. ++ using RemoveStoredSignatureThreadSafeCallback = ++ base::OnceCallback; ++ virtual RemoveStoredSignatureThreadSafeCallback RemoveStoredSignature() = 0; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_TEST_MOCK_ADBLOCK_CONTROLLER_H_ -diff --git a/components/adblock/core/test/mock_sitekey_storage.cc b/components/adblock/core/test/mock_sitekey_storage.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_H_ +diff --git a/components/adblock/core/subscription/subscription_validator_impl.cc b/components/adblock/core/subscription/subscription_validator_impl.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/test/mock_sitekey_storage.cc -@@ -0,0 +1,26 @@ ++++ b/components/adblock/core/subscription/subscription_validator_impl.cc +@@ -0,0 +1,145 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -35622,20 +19985,139 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/test/mock_sitekey_storage.h" ++#include "components/adblock/core/subscription/subscription_validator_impl.h" ++ ++#include "base/base64.h" ++#include "base/containers/span.h" ++#include "base/functional/bind.h" ++#include "base/logging.h" ++#include "base/task/bind_post_task.h" ++#include "base/task/sequenced_task_runner.h" ++#include "components/adblock/core/common/adblock_constants.h" ++#include "components/adblock/core/common/adblock_prefs.h" ++#include "components/adblock/core/schema/filter_list_schema_generated.h" ++#include "components/prefs/scoped_user_pref_update.h" ++#include "crypto/sha2.h" + +namespace adblock { ++namespace { ++ ++std::string ComputeSubscriptionHash(const FlatbufferData& buffer) { ++ return base::Base64Encode( ++ crypto::SHA256Hash(base::make_span(buffer.data(), buffer.size()))); ++} ++ ++// When the schema version used to create installed subscriptions is different ++// from the schema version known by this browser, we should not attempt to read ++// the flatbuffers - we would misinterpret their content. ++// Clear the stored subscription signatures to indicate the files are invalid. ++void ClearSignaturesIfSchemaVersionChanged( ++ PrefService* pref_service, ++ const std::string& current_schema_version) { ++ if (pref_service->GetString(common::prefs::kLastUsedSchemaVersion) != ++ current_schema_version) { ++ if (!pref_service->FindPreference(common::prefs::kSubscriptionSignatures) ++ ->IsDefaultValue()) { ++ LOG(INFO) << "[eyeo] Schema version has changed, invalidating stored " ++ "subscriptions."; ++ pref_service->ClearPref(common::prefs::kSubscriptionSignatures); ++ } ++ pref_service->SetString(common::prefs::kLastUsedSchemaVersion, ++ current_schema_version); ++ } ++} ++ ++bool IsSignatureValidInternal( ++ const base::Value::Dict& initial_subscription_signatures, ++ const FlatbufferData& data, ++ const base::FilePath& path) { ++ const auto* expected_hash = initial_subscription_signatures.FindString( ++ path.BaseName().AsUTF8Unsafe()); ++ if (!expected_hash) { ++ DLOG(WARNING) << "[eyeo] " << path << " has no matching signature in prefs"; ++ return false; ++ } ++ if (*expected_hash != ComputeSubscriptionHash(data)) { ++ DLOG(WARNING) << "[eyeo] " << path << " has invalid signature in prefs"; ++ return false; ++ } ++ return true; ++} ++ ++void StoreTrustedSignatureInternal( ++ scoped_refptr main_task_runner, ++ base::OnceCallback ++ signature_receiver, ++ const FlatbufferData& data, ++ const base::FilePath& path) { ++ // Compute the hash on the current, background thread. ++ const auto hash = ComputeSubscriptionHash(data); ++ // Post the hash for storing into the main thread. ++ main_task_runner->PostTask( ++ FROM_HERE, ++ base::BindOnce(std::move(signature_receiver), std::move(hash), path)); ++} ++ ++} // namespace ++ ++SubscriptionValidatorImpl::SubscriptionValidatorImpl( ++ PrefService* pref_service, ++ const std::string& current_schema_version) ++ : pref_service_(pref_service) { ++ ClearSignaturesIfSchemaVersionChanged(pref_service_, current_schema_version); ++} ++ ++SubscriptionValidatorImpl::~SubscriptionValidatorImpl() = default; ++ ++SubscriptionValidator::IsSignatureValidThreadSafeCallback ++SubscriptionValidatorImpl::IsSignatureValid() const { ++ return base::BindRepeating( ++ &IsSignatureValidInternal, ++ pref_service_->GetDict(common::prefs::kSubscriptionSignatures).Clone()); ++} ++ ++SubscriptionValidator::StoreTrustedSignatureThreadSafeCallback ++SubscriptionValidatorImpl::StoreTrustedSignature() { ++ return base::BindOnce( ++ &StoreTrustedSignatureInternal, ++ base::SequencedTaskRunner::GetCurrentDefault(), ++ base::BindOnce( ++ &SubscriptionValidatorImpl::StoreTrustedSignatureOnMainThread, ++ weak_ptr_factory_.GetWeakPtr())); ++} + -+MockSitekeyStorage::MockSitekeyStorage() = default; ++SubscriptionValidator::RemoveStoredSignatureThreadSafeCallback ++SubscriptionValidatorImpl::RemoveStoredSignature() { ++ return base::BindPostTask( ++ base::SequencedTaskRunner::GetCurrentDefault(), ++ base::BindOnce( ++ &SubscriptionValidatorImpl::RemoveStoredSignatureInMainThread, ++ weak_ptr_factory_.GetWeakPtr())); ++} ++ ++void SubscriptionValidatorImpl::StoreTrustedSignatureOnMainThread( ++ std::string signature, ++ const base::FilePath& path) { ++ ScopedDictPrefUpdate pref_update(pref_service_, ++ common::prefs::kSubscriptionSignatures); ++ const auto key = path.BaseName().AsUTF8Unsafe(); ++ pref_update->Set(key, base::Value(signature)); ++} + -+MockSitekeyStorage::~MockSitekeyStorage() = default; ++void SubscriptionValidatorImpl::RemoveStoredSignatureInMainThread( ++ const base::FilePath& path) { ++ ScopedDictPrefUpdate pref_update(pref_service_, ++ common::prefs::kSubscriptionSignatures); ++ const auto key = path.BaseName().AsUTF8Unsafe(); ++ pref_update->Remove(key); ++} + +} // namespace adblock -diff --git a/components/adblock/core/test/mock_sitekey_storage.h b/components/adblock/core/test/mock_sitekey_storage.h +diff --git a/components/adblock/core/subscription/subscription_validator_impl.h b/components/adblock/core/subscription/subscription_validator_impl.h new file mode 100644 --- /dev/null -+++ b/components/adblock/core/test/mock_sitekey_storage.h -@@ -0,0 +1,49 @@ ++++ b/components/adblock/core/subscription/subscription_validator_impl.h +@@ -0,0 +1,53 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -35653,43 +20135,47 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef COMPONENTS_ADBLOCK_CORE_TEST_MOCK_SITEKEY_STORAGE_H_ -+#define COMPONENTS_ADBLOCK_CORE_TEST_MOCK_SITEKEY_STORAGE_H_ ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_IMPL_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_IMPL_H_ + -+#include -+#include ++#include "base/memory/raw_ptr.h" ++#include "base/memory/weak_ptr.h" ++#include "base/values.h" ++#include "components/adblock/core/subscription/subscription_validator.h" ++#include "components/prefs/pref_service.h" + -+#include "components/adblock/core/sitekey_storage.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "url/gurl.h" ++class PrefService; + +namespace adblock { + -+class MockSitekeyStorage : public SitekeyStorage { ++// Stores the hash of FlatbufferData in a Tracked Pref. ++class SubscriptionValidatorImpl final : public SubscriptionValidator { + public: -+ MockSitekeyStorage(); -+ ~MockSitekeyStorage() override; -+ MOCK_METHOD(void, -+ ProcessResponseHeaders, -+ (const GURL& request_url, -+ const scoped_refptr& headers, -+ const std::string& user_agent), -+ (override)); -+ -+ MOCK_METHOD((absl::optional>), -+ FindSiteKeyForAnyUrl, -+ (const std::vector& urls), -+ (const, override)); ++ SubscriptionValidatorImpl(PrefService* pref_service, ++ const std::string& current_schema_version); ++ ~SubscriptionValidatorImpl() final; ++ ++ IsSignatureValidThreadSafeCallback IsSignatureValid() const final; ++ StoreTrustedSignatureThreadSafeCallback StoreTrustedSignature() final; ++ RemoveStoredSignatureThreadSafeCallback RemoveStoredSignature() final; ++ ++ private: ++ void StoreTrustedSignatureOnMainThread(std::string signature, ++ const base::FilePath& path); ++ void RemoveStoredSignatureInMainThread(const base::FilePath& path); ++ ++ raw_ptr pref_service_; ++ base::WeakPtrFactory weak_ptr_factory_{this}; +}; + +} // namespace adblock + -+#endif // COMPONENTS_ADBLOCK_CORE_TEST_MOCK_SITEKEY_STORAGE_H_ -diff --git a/components/adblock/core/test/sitekey_storage_impl_test.cc b/components/adblock/core/test/sitekey_storage_impl_test.cc ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_SUBSCRIPTION_VALIDATOR_IMPL_H_ +diff --git a/components/adblock/core/subscription/url_keyword_extractor.cc b/components/adblock/core/subscription/url_keyword_extractor.cc new file mode 100644 --- /dev/null -+++ b/components/adblock/core/test/sitekey_storage_impl_test.cc -@@ -0,0 +1,155 @@ ++++ b/components/adblock/core/subscription/url_keyword_extractor.cc +@@ -0,0 +1,67 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -35707,144 +20193,121 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "components/adblock/core/sitekey_storage_impl.h" ++#include "components/adblock/core/subscription/url_keyword_extractor.h" + -+#include "components/adblock/core/common/adblock_constants.h" -+#include "gtest/gtest.h" -+#include "testing/gtest/include/gtest/gtest.h" ++#include ++#include + -+namespace { -+static constexpr char test_uri[] = -+ "/info/" -+ "Liquidit%C3%A4t.html?ses=" -+ "Y3JlPTEzNTUyNDE2OTImdGNpZD13d3cuYWZmaWxpbmV0LXZlcnplaWNobmlzLmRlNTB" -+ "jNjAwNzIyNTlkNjQuNDA2MjE2MTImZmtpPTcyOTU2NiZ0YXNrPXNlYXJjaCZkb21haW49Y" -+ "WZmaWxpbmV0LXZlcnplaWNobmlzL" -+ "mRlJnM9ZGZmM2U5MTEzZGNhMWYyMWEwNDcmbGFuZ3VhZ2U9ZGUmYV9pZD0yJmtleXdvcmQ" -+ "9TGlxdWlkaXQlQzMlQTR0JnBvcz0" -+ "yJmt3cz03Jmt3c2k9OA==&token=AG06ipCV1LptGtY_" -+ "9gFnr0vBTPy4O0YTvwoTCObJ3N3ckrQCFYIA3wod2TwAjxgAIABQv5" -+ "WiAlCH8qgOUJGr9g9QmuuEG1CDnK0pUPbRrk5QhqDgkQNxP4Qqhz9xZe4"; -+static constexpr char test_host[] = "http://www.affilinet-verzeichnis.de"; -+static constexpr char test_user_agent[] = -+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like " -+ "Gecko) Chrome/25.0.1349.2 Safari/537.21"; -+static constexpr char test_public_key[] = -+ "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANnylWw2vLY4hUn9w06zQKbhKBfvjFUC" -+ "sdFlb6TdQhxb9RXWXuI4t31c+o8fYOv/s8q1LGP" -+ "ga3DE1L/tHU4LENMCAwEAAQ=="; -+static constexpr char not_the_right_public_key[] = -+ "GSwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANnylWw2vLY4hUn9w06zQKbhKBfvjFUC" -+ "sdFos6TdQhxb9RXWXuI4t31c+o8fYOv/s8q1LGP" -+ "ga3DE1L/tHU4LENMCAwEAAQ=="; -+static constexpr char test_signature[] = -+ "nLH8Vbc1rzmy0Q+Xg+bvm43IEO42h8rq5D9C0WCn/Y3ykgAoV4npzm7eMlqBSwZBLA/" -+ "0DuuVsfTJT9MOVaurcA=="; -+} // namespace ++#include "base/ranges/algorithm.h" ++#include "base/strings/string_util.h" ++#include "components/adblock/core/common/keyword_extractor_utils.h" + +namespace adblock { ++namespace { + -+class AdblockSitekeyStorageFlatbufferTest : public testing::Test { -+ public: -+ AdblockSitekeyStorageFlatbufferTest() = default; -+ -+ void SetUp() override { storage_ = std::make_unique(); } -+ -+ void ProcessResponseHeader(const std::string& public_key, -+ const std::string& signature, -+ const std::string& host, -+ const std::string& uri, -+ const std::string& user_agent) { -+ std::string sitekey = public_key + "_" + signature; -+ auto headers = base::MakeRefCounted(""); -+ headers->SetHeader(adblock::kSiteKeyHeaderKey, sitekey); -+ -+ GURL url = GURL{host + uri}; -+ storage_->ProcessResponseHeaders(url, headers, user_agent); -+ } ++bool IsSeparatorCharacter(char c) { ++ return !(std::isalnum(c) || c == '%'); ++} + -+ GURL test_url{std::string(test_host) + std::string(test_uri)}; -+ std::unique_ptr storage_; -+}; ++} // namespace + -+TEST_F(AdblockSitekeyStorageFlatbufferTest, NoUserAgentInfo) { -+ ProcessResponseHeader(test_public_key, test_signature, test_host, test_uri, -+ ""); -+ EXPECT_FALSE(storage_->FindSiteKeyForAnyUrl({test_url}).has_value()); ++absl::optional UrlKeywordExtractor::GetNextKeyword() { ++ base::StringPiece current_keyword; ++ do { ++ const auto start_of_next_keyword = input_.find_first_not_of('\0'); ++ if (start_of_next_keyword == base::StringPiece::npos) { ++ return absl::nullopt; ++ } ++ input_.remove_prefix(start_of_next_keyword); ++ const auto end_of_keyword = input_.find_first_of('\0'); ++ current_keyword = input_.substr(0, end_of_keyword); ++ input_.remove_prefix(current_keyword.size()); ++ } while (utils::IsBadKeyword(current_keyword)); ++ return current_keyword; +} + -+TEST_F(AdblockSitekeyStorageFlatbufferTest, NoSiteKeyHeader) { -+ auto headers = base::MakeRefCounted(""); ++UrlKeywordExtractor::UrlKeywordExtractor(base::StringPiece url) ++ : url_with_nulls_(url.data(), url.size()) { ++ // The keywords returned by GetNextKeyword() will be passed to ++ // flatbuffers::Vector::LookupByKey(const char* key) which assumes |key| is ++ // null-terminated. In order to avoid allocating a null-terminated ++ // std::string for every extracted keyword, we instead replace separator ++ // characters by nulls, so that a StringPiece referring to a keyword is also ++ // null-terminated. ++ // This isn't elegant, but it's a valid workaround for the limitations of ++ // the flatbuffers generated API. ++ base::ranges::replace_if(url_with_nulls_, &IsSeparatorCharacter, '\0'); ++ input_ = url_with_nulls_; ++} + -+ storage_->ProcessResponseHeaders(test_url, headers, test_user_agent); ++UrlKeywordExtractor::~UrlKeywordExtractor() = default; + -+ EXPECT_FALSE(storage_->FindSiteKeyForAnyUrl({test_url}).has_value()); -+} ++} // namespace adblock +diff --git a/components/adblock/core/subscription/url_keyword_extractor.h b/components/adblock/core/subscription/url_keyword_extractor.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/subscription/url_keyword_extractor.h +@@ -0,0 +1,60 @@ + -+TEST_F(AdblockSitekeyStorageFlatbufferTest, WrongFormatOfSitekeyHeader) { -+ std::string sitekey = std::string(test_public_key) + "NotAnUnderscore" + -+ std::string(test_signature); -+ auto headers = base::MakeRefCounted(""); -+ headers->SetHeader(adblock::kSiteKeyHeaderKey, sitekey); ++/* ++ * This file is part of eyeo Chromium SDK, ++ * Copyright (C) 2006-present eyeo GmbH ++ * ++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 3 as ++ * published by the Free Software Foundation. ++ * ++ * eyeo Chromium SDK is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with eyeo Chromium SDK. If not, see . ++ */ + -+ storage_->ProcessResponseHeaders(test_url, headers, test_user_agent); ++#ifndef COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_URL_KEYWORD_EXTRACTOR_H_ ++#define COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_URL_KEYWORD_EXTRACTOR_H_ + -+ EXPECT_FALSE(storage_->FindSiteKeyForAnyUrl({test_url}).has_value()); -+} ++#include + -+TEST_F(AdblockSitekeyStorageFlatbufferTest, InvalidSitekeyPublicKeyNotB64) { -+ ProcessResponseHeader("NotAB64EncodedKey", test_signature, test_host, -+ test_uri, test_user_agent); -+ EXPECT_FALSE(storage_->FindSiteKeyForAnyUrl({test_url}).has_value()); -+} ++#include "absl/types/optional.h" + -+TEST_F(AdblockSitekeyStorageFlatbufferTest, InvalidSitekeySignatureNotB64) { -+ ProcessResponseHeader(test_public_key, "NotAB64EncodedSignature", test_host, -+ test_uri, test_user_agent); -+ EXPECT_FALSE(storage_->FindSiteKeyForAnyUrl({test_url}).has_value()); -+} ++#include "base/strings/string_piece.h" ++#include "url/gurl.h" + -+TEST_F(AdblockSitekeyStorageFlatbufferTest, InvalidSitekeyCannotVerify) { -+ ProcessResponseHeader(not_the_right_public_key, test_signature, test_host, -+ test_uri, test_user_agent); -+ EXPECT_FALSE(storage_->FindSiteKeyForAnyUrl({test_url}).has_value()); -+} ++namespace adblock { + -+TEST_F(AdblockSitekeyStorageFlatbufferTest, ValidSignature) { -+ ProcessResponseHeader(test_public_key, test_signature, test_host, test_uri, -+ test_user_agent); -+ std::pair expected{ -+ GURL{test_url}, -+ SiteKey{std::string(test_public_key) -+ .substr(0, std::string(test_public_key).find("=="))}}; -+ EXPECT_EQ(expected, storage_->FindSiteKeyForAnyUrl({test_url}).value()); -+} ++// Keywords allow selecting filters that could potentially match a URL faster ++// than an exhaustive search. ++// This is how it works: ++// 1. Each URL is split into keywords using ++// GetNextKeyword(). ++// "https://content.adblockplus.com/advertisment" becomes: ++// "content", "adblockplus", "advertisment" ++// - "https" and "com" are skipped because they're common ++// ++// 2. The keyword index in the flatbuffer is queried only for filters that match ++// these keywords. A keyword may index multiple filters, a filter is only ++// indexed by one (or none) keywords. ++// ++// 3. If we fail to extract keywords from a filter, we index it under an empty ++// keyword. All filters without a keyword are checked for all URLs, as they ++// could match anything. ++class UrlKeywordExtractor { ++ public: ++ explicit UrlKeywordExtractor(base::StringPiece url); ++ ~UrlKeywordExtractor(); ++ absl::optional GetNextKeyword(); + -+// DPD-1912: This test works with Base64DecodePolicy::kForgiving and fails -+// with Base64DecodePolicy::kStrict. Uses data from a real page. -+TEST_F(AdblockSitekeyStorageFlatbufferTest, -+ SignatureValidWithRelaxedDecodePolicy) { -+ constexpr char public_key[] = -+ "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJRmzcpTevQqkWn6dJuX/N/" -+ "Hxl7YxbOwy8+73ijqYSQEN+WGxrruAKtZtliWC86+ewQ0msW1W8psOFL/b00zWqsCAwEAAQ"; -+ constexpr char signature[] = -+ "kJCR9f/Vb/" -+ "NJwTNvLcnLVpM82hW+" -+ "6DiMmiBNLSpCBF0LuCTQ0LQZzUaNf5RK8TPaRZKOpTahrMY0B1fCr82MwA"; -+ constexpr char host[] = "http://skillpanda.com"; -+ constexpr char uri[] = "/"; -+ constexpr char user_agent[] = -+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) " -+ "Chrome/114.0.0.0 Safari/537.36"; -+ auto url = GURL{std::string(host) + std::string(uri)}; -+ ProcessResponseHeader(public_key, signature, host, uri, user_agent); -+ std::pair expected{ -+ GURL{url}, SiteKey{std::string(public_key) -+ .substr(0, std::string(public_key).find("=="))}}; -+ EXPECT_EQ(expected, storage_->FindSiteKeyForAnyUrl({url}).value()); -+} ++ private: ++ std::string url_with_nulls_; ++ base::StringPiece input_; ++}; + +} // namespace adblock ++ ++#endif // COMPONENTS_ADBLOCK_CORE_SUBSCRIPTION_URL_KEYWORD_EXTRACTOR_H_ diff --git a/components/adblock/docs/ad-filtering/README.md b/components/adblock/docs/ad-filtering/README.md new file mode 100644 --- /dev/null @@ -46905,7 +31368,7 @@ new file mode 100644 diff --git a/components/resources/BUILD.gn b/components/resources/BUILD.gn --- a/components/resources/BUILD.gn +++ b/components/resources/BUILD.gn -@@ -77,6 +77,11 @@ grit("components_resources") { +@@ -78,6 +78,11 @@ grit("components_resources") { if (is_android && safe_browsing_mode == 2) { deps += [ "//components/safe_browsing/content/resources/real_time_url_checks_allowlist:make_real_time_url_allowlist_protobuf" ] } @@ -67847,86780 +52310,6 @@ diff --git a/components/resources/components_resources.grd b/components/resource -diff --git a/components/test/data/adblock/40_regex_patterns.txt.gz b/components/test/data/adblock/40_regex_patterns.txt.gz -new file mode 100644 -index 0000000000000000000000000000000000000000..17ab19defc7f2e386e88b04acd061ff446d35262 -GIT binary patch -literal 904 -zcmV;319$u%iwFoQr3qvJ12iySa%E>_cwcZ~baZ8MZgVblcys`zR$Y^-I1qiG-!WSy -zu0|Qu8TVys|Hc}3DnP)vkg!P*#rD5%2R~*|n7a4w1Cn&QPfm9_2SX+$*M5(*YB6#`j&$!B`?0;w>*2HWa+#8mpv{o -zen3fpZoWV7by>JgdRLLV|JES%xXc}cCBg@N9<(|JXrv_PIKNJw{{G@K2Wx9EhVav;46^3L;3CmfnB&!T1k;>_0#m32Wyj&k=bEMQv -zN6q|gQ9#vND8F#Q4;(Kh$7^3>8238g5&%qQd;vl)Ll>P@Yu|v}VLvsUp258J;v?ds(JjbF%YK3IkxORL`mz2Ks -zK*|puWH`V;$DrYaF1XJiEM=T=sF;>QreN#=XQ5KoSj`FuHIp&sVlZm^Z^`vxT#B=o -z0j{;ukg3#_CFXlb*iJ-B;yTl?;VkCbopgb~kue^9U;R1$3t2X$cinMEF^VN6w@iZ3 -z;+o3p8q{RBHP3gMg~AT9gZJ)^4s*oeUH{;zx&oN$f=)ihYwV!K2`G`uisV3v_fRnG -zsLE}J#4!fBWAJb5o4N9qka-c?RYI@Kdsl%@(#|QeuF2OEj7!+jMeQiPO@BD -zIw^}xvDmoq7Uaw|LpP!p>Bd&r(UM<8;6ikH$Mo%I&I9jFE@Z?@{aC@pJy7rs&`wyE -z3*kz5)+Z!~&wccd@~Skdjy4fXuzX6V|EE`~s`_#VKlSEj@<+4IJ9w2%CznoOoceWK -zLo(PFDQpX#LMjq)+F*7mYN>*)0lT+OD!^z9J8PYy7T&|HTs1^y*AktFNU4XB>w&Z4 -zUWD6Nh4O59w1KqLB}ADj<3{g)T(pwK<{Iwa!Wa - -literal 0 -HcmV?d00001 - -diff --git a/components/test/data/adblock/5000_patterns.txt.gz b/components/test/data/adblock/5000_patterns.txt.gz -new file mode 100644 -index 0000000000000000000000000000000000000000..086e5a9cc047ead9455268c90de24bcc4337da7a -GIT binary patch -literal 41646 -zcmV(nK=QvIiwFoRr3qvJ12r%(Fkf(CbaZ8MZgVblcys`by=$-JxUwboz5a*KhX(SU -zxihzoMxkfMV_$e|T;SR>fIrLzB~cPn4=PD1l}el+?^r>K#Z=Yf`h&rU -zd{m>Nk2Rg{t&)?mqsZFu3Hq%wD^#}rd!DspU%bWh6~06FqwL4+py#K`q~3NCKek1y -z^XZ<;_PPGeN{(CG>QU#y*5MJ_mzCxjzOY;91$uf2lWE;-dpYhzVRv}?;yzVXD-C|g -zpQqbGw4!|#)`I` -z`YL=zmJNsPF!MhPK|dWtzpM{XC_A)bDcdDHy)f;d#%#))Y5ke)Xn8V2k5g}7%NswM -zhEa7gFZ%Fzh9#R+TUedb;?RDGHtsR4$PoANISkXoOhxWrVcdQ0YN_nbKIL5P{-D3J -zjNNeB4(()jnfS5GX+fpghyt%E%F0~V50gzNY<%{1ocdCzu`Z`}FtX5{>O~(;OVtcn -z`&y=9eGU3Mmfo#hgvrB(8krdx*Y}J5fsPiwTJ?pJyaVC1_O&!>6n!o=ojf`#(uUvc -z#F*C`e6OJAA8jvGyZ$MCbEb+5K6R``6*s+ArNr7Az0m6{8J&L>*RsqyStzl|8~>wS -zr;DkT77vO)*R^a%J;f!ddR3~New?o_Jt}Ewo9U_BMispn!qup?s3pC?dOGCrq(|1g -z$vZpH{i3T`Z0oUWvE?E+qRmAn{9=8L@-=?ZF>z}}OELCxwsdmdD!hRe)*qW)p~@2X -z!q)V$w(AW3c0ByG&X4P(7+Q8cPDXU}c>X==%TYEbwJqqn?iSoJ9G(6(4(sLI&BG>l -zw|hs2sZzbgkL)ziX`(YZ4V%H}-*^!J(C&Po$Z8r&Y%5tek^^hFVl9^gTLD_8U|(mrUDEbL2lDi3!%lWi%CoWu3iPemtg^KHfH;div&($Hr7#4DGN -z{I$MmP8WI9hR%*?jMiPIjnQ+wY&orPzsbnZH`2rt+CD|0&G8&9!t*#x-i7R*s*oCA -zi*rL4^{vT8Ni!Ym>2^2!&v^G#zZn%hZuq{37VBl9dq~SeS5p*OvZY0)tnN3ogo@65 -z@{YNl=#|;h^8S#`4!`wi%SUr>r)M~FQ*YEDH&3l{xuu15mZfiIZN~L-*qRo1x89qo -z)kf*b(iMh3@<-^WD5hSGJ>9!Mu@K^2JVn;6UvoUauC$Bvq2a_$%XxnemqotJm{}7% -zs6OV`qOoVbv@m@}N=3UFU0f#{Wptyq+EmUc(IsdX-bqPsG8jdd&c8Ytn=iUVBdub) -z<$ses-Ez5$z7lRgV96VB~CME~B4iaxSZhHMm;UM1kd -zif$l(KImz69~(GrJ+cYR$ocm1&Dx#Avz6`AVz1@EWtsa(WY^yVWAl -zPgViU1 -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 -zMHN{imJqnxH#%A2T8l@RtTh)5sZm` -zT()aO4X6Mp#Fvi4OBbb$v~YA1R3UQO@t7cfK4*H2ISIuoso#p;Y{}2HI>wX?3dEi# -zb2x@oAfF7ph`5l>)LK|{$+iua5Udw}n_9Q;59qGB~)Yg*$@Gtbd8t@$!&f#Rvu=h=*@6Zo& -zqhlH-7vy;iMLa$jaTQtML)cTRTXG?0bsvss+63!4ECl9a$!qE>aI&Oz1*vx7+F2g) -z#V)4>p|_-?*SjFXEK+g_R_FON1P5e9b;`wcyohef%#AD~?Mlo7gRPNP0bpbXiZJL^ -z1qBw-XNc0uCugyveJi)^0_L4BF1pi4QN4b}(3GB-7LyE3$9y#xt(qqnZwM5ke$78C -z#3R!$tW+mDiq|Dw^CTLA(O769G|Xu+xg<30XcA>Rb~5Ek8bIac%jMFX -zxt2GV3mcOmxHvEm%`8!x$gBR4-IL -zCGW_$2*Ia9YCUoue?ZbGA1mFz*OeoXD@I?v8COsfW38~}u6CLWiZqM|IQ*{k=O8A3 -z4P0!wYvlOL?x$NyIwrK1-vTuE_j82BE}VHvj`u2hNCWsfpV -zgmE36+$M%4$Y_mv?y*nq#6$ysI9}K&)ROkCB*U&E1SKn>bUXFY<&nLFQ>u|8_7NkB -z2m?poKLST~tO2E#kPdU{3LG#BLqe?rps<~yrA5$NgF(n|Do1;lrg57+DA=&kv*5R# -zer?Am93H59?RqbYW0^JYMdf#O&CkCIaGr?|?Vpdfk -z^_ZTZ@|>2&$N^DsMxk6tR-A8_VxJYKGS;Pi>NRB+C-ui?LyNFFpmopb=Hlwy$@Q{7 -zRFBEsEc!({sMCw%_`SS+Uav(F^W}7797hTzjJcL=7oL_84&B|uut99G0hHoBqBsIv -zzZ^b>PD*Mi&X?ktWo34Z1RC9!oVpiDnqye#pTb?@{j7CcSSCf=1u<1Tz;v|Vix|TB -z1|$t;Yv;=Z6itHKcyjDt(Kh-`4;OQrx@8Z%7Vep%OW|p!#}d5oF(HT0RY9^arS -z*dP*#MT{;(5u<-DX`P04UJe_wmucm_R$Yw*UEkO?g!8n5BXS?wRc7;hdA!`4*36GF -zE*DtZcUnY$OkUvsb41Hfvcd6v_4Z_^la-o(Sc{LOyFQP9iZy-?|o8U_Qo?}l -zHQuA=LL_~I^IZt-UYvd2xtg(0t#4(%rf7RH(g7^K5zGNrdT^slnGo*>vr@hoG0~ax -zn>cbx4E_rCf2q_k$#9X|N7@9XL9-(q*hpvLy)F9TYk`u?eSB52ZkZZ;N#Mn<`RChR -zEc^Uv(` -zaVf)3GDC(#klRma;T6vGIBu&vO$#++VT!UK>+^bs`pHvvWlJZW9J=T-8T`jxJjPjN -zbhkt5u{d@r-K!bgxaBS*+YTI5;Af2n&wNox#I|sng)8%*hvhN)(%)Ma94PTjL4>NMkdK`2k -zm&Ah^WJPo!o7!1qWZVpLQXmVFMdOR0>0739%yf7fP`l{d2ll>irV2ev104iKmxf!e -zX65hR|H5h9&0p??5nIihQ8PYL{S+7Opx)E-d3-F_8VLMv@J>G|$bFc6e%MF(Dr2pb -zAkI*0vc3Hlki!{g#y0-1lwkeJ7`A%`0$HbE5aTNf@;{ZOyRUM)IwppvJ`ejGgre8_ -zLLK|$>ev*oTKtW8esDIxr9y2vKyJ>qtbPTs{5h5Ctp~MM1PE~8te#+Za_5Nel`QU6 -zbtx~Q@}h_RahoY$n4AwGhxb4?l#1jW=OJAIT*SIV|FCU0PIi72p&=;e&@pU<9Asp? -z0yNS)h>UoK9XavO}do@*-<>%w=seZG&jc!EW>4pNeHDiOM -z6uG%h8a -zM$_khBUrMbChW1DEw3QOSOatH@TtW@(R{O}#n31~;kfavQMwyn9!o1w(Qzy(%$rcI -z#_?-W;7RP~)N;3|jO2G?=(H9ZRi0jlwV_~-jHW30I;FHa!(NXc%)1vka4d})p`v>d -z_^s@MkS^pd%a&rf~tFP^thy<0~&84(fHvma5gO{7%aY8L&31( -zuCq?3dsxv*_jD40^@=I!w}Rtp(UwusVNq%5!s&UWb|T>TmNh{+l8*cU>VDp&FgRBx -zpE}E@#xg$(S%Y9J$Qkq#JWS+Z3}X2RMWKwAUbn#xJk_w_|3+gl^+SzLoH5c%ilaF$ -zk9@dU+RcyOT;?txrnE`!E;emu(19 -z_2j%NZEZrAU!HyS`lKZo>iOLmGunIIXUqHYw)S=?UQ6|QwvS>T>^5E9DQU()oWt85 -zZ?6I)eem5JJC_ACbXC{_)jDwQiVa)WNQ>)dIJVkVk1k%imO)fQ2jDC3?_nbo-#X!qvMaZ^ra`c -zU@})&E?K`|Ae%K-a2jz_5a&#^OKXGo)X;@`$NNC;9G%3d=d-QL@C5LfUE4-ZCpV0s -z3Lq;cfhG4w3p#mb48~*x^N_;mR%h|C$^8$$yq0|Als!c*5Jo3qi3M@D$O7`8r7ncb -zi+t(>3^rq?iXuA2T+h-7({VdU1P^4u58|C}id&}`1d2){sJX4+mVFr^?6O4DQ^Vwu -zb>$`9t}aGOh1wr)?K01cyxQMfT~u3D7CH8GJ&kHGoz_G&FS0fyGx6f}|s%V;G=oJ9Ja9)3h%Yfe-QvvEn_G1zl`fRG(2ApSdxS -zTu--@A}!B4WDIt90w!8*WdUA$Oc2v?=CU^YeW<6hbt$q1ck%Vg^TO7F_FJ~%+<)}) -zYHkY!K6S3|eXo<)@kzeH-Dy{H_H-~i4!=YvpX2a(FV2JKC>?s$Mcz!#WD+u#jVcT-5r9$HV2;>t|U;WeI|phY -z->MG9z8cIFPD*k$PNTp_Z&SF-jiLczHo|Il%5%5ZB~!Fx5INgTH`Vg)FB|$seJ+DB -zeh?SnxDHi|kg46CKW?v^=kDTeseVNsu1)mY5uwvcSbD?F)h^$`bzeiMvR%lW(=U^k -znq#$P9ulR1qABQ1Es^U;M<0q1vFz~w>$K5YF%@fQT$C{tF@f*gZkr%9kA?6z -z5HO5e{zDlYu2_xn%1#41u18q{(bc$c?p^_c2K3r%u6L;<$1;-7w94i+#T6#*4FXm9 -z0`^IL!b_w*=6Qn}u1LAP6o~TOFDKyeeh7I=gy8p~`pG~JeS?Z{RJ2WWKudDJxzul3 -zy0D@%eMq~AszTI}Uc`_cbJzAs->r41rHdz;<2llLqF$R1gR?!o&5@ -z#&!E+^KXQSH-8nI{|34RUmir-piEfxmQKYfPZO<0fzmt0PkFf1cUh8|QqLv4cqCX* -zfIhl@!VGo@=9ja2MAwWncl-Wq$a)grbHXS63eLqB~kB!gcNp&2-5J#0+ID -z1!v`Fekk%=o~Wiwa7_8odHn+a1YeL*5N${m+Hpb$5aRilBtlT$@R8?JaM$nsDK -zY|!NrZAX*0ae74o<`vJQ6QR>8?EVj8C| -z21Rsb)FbI3)?~end`yV6W%x0t>nIY?1$jk@azv-B|DlLIyR?F4>BSH~uDHvVa7APb -z+1_ma?!IJiv`nr)vwg!K(syu2=6XbGBVLu5$yUd9h(eS1qj0E7td3re$L`}Lm;KHB -zE{jeFDf2)Sig+S8t75WwEA=$giKx}JJDB{ozZWY^X2ejB9gZ12qt8gMwe7X#QIR2$ -zd5xGh;{F2#oGTq1fE|r6^BQov&RY*hiqA`NEw1}`!k>Nfc!?(km#=U|C~_-IF-(h! -zUqVqHl99=(S_UNF{Ma`OYAGJ(JUvHYVBx2@9o@;GdIT2q1;2r+|dPirvuN^NWtgGE}i#a&dP(-Z-TW -z9;M@F1&*r3RNt- -zILhIrS`;v*u1hL*Wb8Zo6%(Qd+6c0zW!h?`3dI14#ha26nBcC@B=N*u37fH2gkaMi -zX9}{%RaPj`K%rAvkZ0eF(2EG>Tn|stqe2Zbbg-4#6oXIt8rLWVks;Zl-&=|#E!1lk -z!Xb0e;BVQ9sciAj2?cQz-kNJ63x&Fz8j_+NN(9IKdYPtzi90KicGruozXR)+Fs=)~ -z-)9}+xYDCkJ1RocO;Y?Pz{Sl1u0=exmi*1Yj-DYQhRvM(ao_48P=87RO$#OvsqU%z -zXT-pkmaw7kfcIxZ>ve+&FcMN%T^4hfMo%+EMK9i+6Q|FQV-bEb(@7Xc6~NkC0z!`=^Km$Q(2YGEvIrTAp57vSan)KoglpM~1&xch -zn+Qc4a3wg)w3e44-coo%-Z1qYc}!!QBt0}TA&fvvoA4p%xOmFD>olVXf{tY!$*WwA -zAcOJc%)=ASHoA8wh0b!>22IPKMwWm6NZK7CWH`t6KB)7ALR-$-1XZjNdOb8VRnS+l -zHsUHrgT#l0?DOqRVeH5C^Bk6sE_^nHi^JVTY9s?fNM!wCHTBg1gqtk69M^!}sSi-p -z8@{(fKYPJxW^w`2i+ZwcgiHxoo{=%9`a443AC88JjEORyj+GTVL>0_<L|$ex3m)#S7q%&Ar3meto`mTw8?!K^shN1N -zRy~Y(!vh!vMmSx}SVPVorh0PKe-(=y=UL5NUDkDSO-D&5ea%H60h`I7`nH=gwyC9L -zl?|qoMg%!<*MdlNoa9Ti>mu8!^rT|NFyR~AZfmsDwtbx_oUk*4=3KyFgRK!!lg&=t -z!CgxF&nTu4bkNnw=IVYQUTV^z4}T#M6%C%Kw?TgVb -zQl(o^XF!~)`glfRFZTy0b_;CC!F5E;Xk1v2g+d;puJdIi>#+WCfBU@EapT8UxS|Vo -zIU#laaGkdKqIyuBGx~~HkE458YuhIjWKcRO5{$JqK`ymmuj!y2GFM-&>8Fy~o#ibZ -zv+unhQ{U*NdOly%%Hv_`#X!bx8ty4t8R`U2-9;x)_TzfjpG$sD2vu!6YtwI#r}Szg -zUb0D={}Zn8>&HLVlKh`*N`hOqm0_J^e_@n*$vl6*9`9ASh8u?2PP^`E3N{&*eYt)r -zyyo?MIi9aadHo2NjO$CIm?LrC^)E|gQR&#VvG(Aai+!hf)+YI+V(G1Uj!WSG%}l?f -z$M{w>WVMS;!Ko<@GuQM0pc3H7JGsGLwD!AxSMukul4fWVk^^)sb4k&iCnpt$OErF0 -z^J~7$)BZR1uu|xUCcDPUh3-knUE6k{LoUBnXV%V0G+3smBd42SViC?(js($1Z$tp#kWR6le5U?0Uy6DrP%WtY6N5xws73 -z`TBa_-={MFojV*Uyf+A&QD6^}MQD2oiqcO>_>-<`dW^@y^5e<1r{yB{pVyDWTDQdY -z^IdITg;avL>;EwCZ0M+`tFUAyY0S;&!l|M_D|pg<*tV7xJIhwRwuo+>KQx3ZXzjz_ -zlVc5q!My1?t5_j;!yV33L2lWjn+V%3s%XJ2gnOLK%2Z5I?#)E4`8Q0R&yf_xGrP;$ -zOw;|c{AOh-mOKUkff9~{BDGGb7j!wBX_`*=hiUuk@9u(N{rB)Ggb?(a?xAbmM@>iB -zO%3Qb!O4h%TNwDw7Co_+EA|b_{bCAt7m%ScNyg-II==GPGIT>9ZZsrTX{(D(HjQI6 -zS;aUV8v=p@ZA10DBr3Uxdg`M#xiSmxMG#GqV2I{}8rGJ=Qoa7orKA2T{#V~6n3u=> -zaeugecsRNppDR(6lYeA`S2RsmZIv>IK!KE*=Zx%J&!dycNc)#}7Mb=!t^%4)k&NtJ -zWmXBp9a_gizX1J{Rrz|mK;JxCN_m`ihB5+j$4ExHhc%#RaSn`Za_)OlWPYn -zra7(Qf;iO`0*7b)n68jWg-cdENqWjhpKtouq8 -zTRREj5ae-5h?tS0xKPPRr6b5ASy`z{M-*iJ!iw{=OGs;A~p#=dP3(3{#8^q -z66^_TA~D635oDp$lBXJ7t}ZYIul013hiShLkCpAUlIPc5X6K~gTJ=x*H+0L8`$>{2 -zKf*0kMhHI9ohsCglSnKJAynNNo5aLGHzszmbt%4~? -z$W<8>ghtWS$~0m{E9Cq8G3Xd-4)1?O?m-0zKoP5hQEGG1;7!SsX28~|eSVxxL3hu0KxnC!kxVNr?4%ILY -zF;h~|$)vE`wSqw{6e_U^B%saJB_<|_$ek1futoNM%cam!kDjIO*x;^rG4G~YuSsO) -z5Lg&N#`a{mpj8a;JP>#z4`;v0Db>1IY&=|3J2i#NMrJHX8~QcMUQC5U(f-W%#1N{_ -zKtj^avI>MjCt3y-0PABS#d>5(i;I}xiRd8{BI&s}<;UYK59>D2CuFpZZ^`*T|KUNK -zknu%XI$~&YLVuxfxDqs7h5B1qleJSZCkjQe3NY42y%saB-^3C` -zS>!=9o{kB{vJ}NQX7y_Pk3JzFg -zLsun-nVuXh3VNYD8c9z0klzDK;=uEI5SNi-rjv@Irxpc!$V&DGjg9~MU;hK6jlX!4 -zzePS|{NExYAVZHh_ZW8(4iyTsNY!x3ktZiC$X*4%H;tQ*cqwn!{B{(FxCA=8bJ7?N -zcQka`W08HK?{NfbzuJ6TJEsRY*-5klRN{CBOrEt(Q!B#BTWGIyO6 -z(zS{67rw6h{nx=u`;N~GZOZU*g2Lyo`@_db6mQr=If?p7{y5NWim_SyhU`cvZ0p*y -z8JYiBtIi|Kio^t0i@cHtRM1uuRVNZ|O$Y6Tan*WTt-|zvhf3oJ-D>g@p}_TpF+I&s -zI^!avn=QU-ZZN_ZJoNi1Bh(c`Mf<9&WCw(@&v(DX)^OWc;0}$eOzbV1F{YEd( -zclD#iCLNV%e&&h=ItJs933w?aoBZlJ^t$oMI6%h3=|o}lAM0DajyF(CelT5QoJ{7g -z!D*MUO#j2)D8#|CIsOh0yJ>pFY8C5R;=S6JT-Py&Ws#7?P -z-c&CiHjo0?MrEN*MGdp4>ey;R|EKEvCD>eutrJ?ZVYhW#H&tEVU!(5YM%945N-xNvkxD0&Z1XizcUZ|AsxKO8|FY42AMB6s%1VyfCGW6_rrfM|$<0+lOH>7I4iC -zFBzJuu}v}Fn;LbVB9YCwx?a3c+2eF0g;;N#?>{Jc=ql^s4WpXVqVBHPNy -zhLvVgsuP41Mm8iRhIi$X?#{SL)r;CGR|WlZCzFzG=#4J{5_|DY+zjDD^trXF<*egq -z2(q@lASe^7$5w2Spf%hQvc3i_Pz%MZPCsSJ-5MX}S&lX1h* -zl9d2%V^6)V;?yDBUL9ZhH4S7S;vhQ|Eln?ZB@!kjt%1@`)FTNN=$oNW0S$F;(KY~E -z*S)jYS%$`?m6_-ydz^0LltJMshGz7%ECb3Mf*n^#sx75U(!Cl@ewR-C@(H37X+{EJ=x=E>t=`NN#vWRPf4&xwsw7yU5iE -zDY(DE5SQc03`=L$1dXR2`x~h|;PXNRS+rBCSjUa=vntWvkn-Rm?oY;{n6my`?8R@> -zL=Bv&_k)R;16RvLgcsSaSjp(`9XZnB@m5)&HI_m_s4heb;{s6_+Fub4(!V2mIDvH`)Hxn{hsbP+P^#P_?|vMK{6!-!*xRF6uyZ$h8+1MTYWQ12?nht4yN@nRJ5SDN4+3qrUs++s4LRKA^To0-)! -zuj1llos=-Xk}6FJYVe8)sLsSKTW9F4XW3R -z6L8$px+0k4OJyXQ>QzoVrudSbyXi1@=1Hpt;L{Vc{(iqgP)}oO0RLN-oSHk^a!eQ_f2D=NbS6>mFFpwsjLGj4A -zR&P)Ni#!J&y#o0uaG`mENMcCICxcpz5oi@t%_96^JxiyaxJ#7^kjvjV8F==jtOVi? -z|1xzA^!wK@IGIB;)3U8(Ekfl3q^T&V9VUaj8o+R02@rdg_5yO;v2LaeWW|PQmJv4O -z+b2&+#Qttrw$hAlTw(+fP9BSvQ>dVE?15rBBq0L=J}*(`0-X)ed0Gwlj&1eMw^Cp7 -z&;9v$I7g9Q+T#ZO*;u-$c_rwFQz3FSQg~FRQ_IHZ#@#%a#L~Ezx6q>66d(|-$!O0d -zpif#TfKKN=bOjVa2a2~ZwLM?X=6p)wIn#{0^6#<1=EuhW10CBRKCL^nUMJc8>`7Lg -zU~C|Hy}I@rr;V&aHAycc91eRonuv9Do?vYxMs46tlzM{RzW=n%mB9VyJ`w#9NLc0) -z+6-?0DB?vaCytgGR?1S<>J9#zR4lc%^->rzs;RKYXqxsJp68(!!6F+`y$9_R!Xlji -z<~hvBd@jEZ;A>iP`~eG*OK2lZC){Tpk%^o|CVBK^g$SijT*)f-zwyT~JiyFdOURg| -zTH1%(c6A7G@DavrY+YTG2|dq3cLfV^glBm!jg2jM*K)tlKFhcq7bi*Lu1W`eA-WlLH0}k3Mj06}U4~oe^1M1o>9{0bI9!3* -z>^fzN_T61S_u-;_{!*V-8G*hCzUUb&p%N3X9+*93l2`7xLizuR^m~l?>7m<9R2dA^ -zw^DRrbtJx><>{K8FSl!$F-*oUi5^yCoX%S*j93bCrkP48i+aXD)Lvt_webMmNe9In -z$Ao>haUsj0J3rbW+#!18c+dV{$6-2Bs0^-D(IK<>{;KoW_wIq -zU_ml&J1Xf@XsMdd=OF|nWSwf!S@bU^Q7fiU`IcLPW+Jb%R)>>X3B#>+v_cULv);_i -zmSoW*p$;d17+RQjoa8{3!_6bw`N7YItRE(5jp|$L82W-RH#J~|7xXH}IOGMnqT_{! -zYkoOzx|ZOZS6e*ug)ZAVmksmR2IQ>Q>gSHJ7{7!Uw52G0{8jOe;w_7CbTW$@0><4L -z?k~7LWnX5*q3gswST9v;ky#xCjVbzf@m$OxxnZ0@uO)sv1`11$DL?wPR8bOwPQ_E? -z`7fdauSYc#5Dm2F)9G~kI0eS;Q*FMb(~B%G9>euWm-2c4P0(b>l2J6}s`a1Z^l=jB -z&wb#!(w&@7ZjJ!`bE6^)Wpa^Dls(UpQXz=T4vMZbhIZ0%m1(y5GcT?m+4=l&%)+^v -zde^gCh(X0eO~&x`dVQa!VNtm=#5yF(p -z{31L9nG3^{{bHvS&g6;+cnwA~1$ut>*6p>8<9c6Y=N%CxNEr@8yH-vaL=MO}Q7k5~ -z3+zDGb!6#}SJ+GQ@sUhX!VwR>++7@&?6c^|XMM}yK;a!5ZbQFMq>-qIY> -z?yI6X287No;x+!so=FvuoLL8X1%9R?GdNQ3>RX>(a#os0tv;`98Dx?Jit*ZEHu2mDuEO))gh5}+6 -zu9a6e#4SR;XPj`+<9R}S;72;oQV!`{i~O0=RvkK;9Rl+h`~JvT{kL2H)w)5-VmkYH?0VG<%BPqda(3#8!h&cf2ikZa`M`5Nrx -z*o=N;78LloT2D70$N#t|L;mr3{S0E}#c{cf<1$und42p&Djj6&RYZ3bL#W&M9v{bR -zc~-A-8dTiz{q20Zo)6bsR6Lpn@`JGsos$u2Z2@J-xEf<-$4ZqWGXV0&-Ayjda{WG8 -zY2P=GZ>o$7bjyDEyX4i*)xf)8Ty;hSorhXT3_5 -zP@_)9uUQbcSC)TXsZF+~Nmjv77q44SlyMcHls&^H(fw7v4(3?hyPe`?-$xO$_{j2!Tt8TxU`Z*ax#Qn$8EHZUJ -zbPJsK@(2BHca{E+qiLNF=PB%oP)y5)p2CU+ih8N|+&jC!+c}SEHi3`@Rj(wi|C?mq -z;ry|^d~T1&)An}qb>*Y0D^oBsgi)zqNO3u+-OH}(60 -zzC{+_)glx{8G7yNz-%p<@kRHudXb%C1*Ivk0~H+XD_V*uw1SJh5uJGBq6v3cR|}Rp -zifS0W`jk^H8l0vy(!TC*f#HWfGADwL_jxIhr*QgoSteu?dM`KBl@?)$l=RZ0i0B -zIi!=rt!~7{81#PAn)*U_$wc1#h)&8x8#hdHOnD;;QzCI}r!K@BeNl_EMV9rW3OCFb -zd`gfe@}R`Nk~rOGIQxu-auj!LtH9lhS_L3Obul3|$XGQbvj+Uott;|T%H#QZIhCM@QM!EQI4E=BUIoD8_@-;k0ZFT$znm?NT7 -zNC&Pc$j;F3!lM06L5GVUDlm@3<2s2;CvF$|H3_>MU#=SC~nOtxg!K -zKWa>iOvnO)h4tyyl~YU6 -zRV=s{r>^V!{?i_dynFnza64P8&h;Src{tDOczrC-YQccXzpwJsPF+*JhWRl|5t$N} -z8^R19A0J9_SAh>kQ^SDKd6-4b<=~KxZbbtO{T5a -zAeR}h4$64}W#i_Ib4ndDp?Kt0eV^@CiXrE`_iC^}c9c&|6W1 -zPYO}ERtKGS?u?H%;HXY}b*n#=lWe6GK!&SzwWNF$HYv!fjwNg`|G8!L%_+6p6p30} -zK2ERpIAX%z-_HrUOu+m>Xc)CMFgNmU&K7gc&CCjjqX}a-o00i9tb$CwZ4`8hnpnDUVdJVA9?TqPkTJXDG#2ruj4>J -zpmH&piQuB*#?uuGgHXEGL>@~~-<3%k6qIV=AVeRGYje3;kq? -zSu{Ff=zo$pog57Gx4S|m1c_lb*-#-37Y6$1B`?p$@x!^J?COwZ}5&W7rQ$1ZG-NocL8FNUouZgW?S)#~Lp@vbY -z2sANKQ_&4`^%e?SI<@*X6nfXWpkM5aQ5R@24mlm>yr#xmGy(Sc68|ZhC1%uodB3AN -z-E;kY61XXJXkxiaHWb)AR2e$>3zr{vWjP~f3`#}iavIR#l-%F(DeNZO4zq($w6^p* -z(4iXVFz|gxh|mKvTEH-{k-IZhA{NqF^Gvitn|kP`?DKqmL3!(M`xAgkE30a;T159| -z58UO7d-3Zu?sK-kWFO)pukoBf!HVfkkxm%;Ohr_o5k(&Bqs!DzWLbeg)=D&mM=cw> -zITQ$)J}fGp>+;a0o|h&ZXj&tRaan{vONM2$_;NH7C1^Y$X4w72J0UemE?BLUQ8Q21v|8%jmv|(=tJLHweW2F`uDJwN4P?2G2Erl8^uy4GrMYvA{Ar -z$Xvuoy0}#P{?%ngGkyGBt_BcGKng^}ewlV$MAoSKZe<>VZ7WLft6U@+dzm+=#^DVQ -zm~p&*0`im;O)EE%XU#`^?DI@qi!5|$(Cg>7=%5H&7;^|Yuv{yabz#CY1w0hpbQA~- -z(<)k(Z7RBRhyg-Rc89yi#dKwJHM9u@0si2y9T-+tV^-8Ao+s!Q>#+`j4Y~79wTbDR -zrVMt!$d5V^vxEi@VqLcH)9u`w1N_l-T#<~R< -zQ(>xmQ4U{s=T!5dbAv40AN>h+Ao?$lwqe->+IKM~y}0DvD$6Yl(IJ(LPNEaN(|H-y -zv?TN&%Tp*Io#)W)UtY;cz2mPHkNwB=*^U>{nB#AbiL}e*d?jVdLd_TEgNtz#tbf@j9m|>=x|rsWUBHLt -z1QSa%ldv3mG%bseHxRZy<3Z(YWLcrp)2lu>Nw5ez2Z~tem)_wEYWgK+xS^$`S}@P5 -zjouJqjh!GIOaBv()cH`9*N^<;dOIBV`%3^o(|#X&Zmb!bP~ztadzmoE#Whl*ns{kd|1nMx -z$hKv&nzpiGOBWkqK3xJ`mb-EycTZqP`1 -z2(qKUH_=O2SZXwtGSC$DrINa<{)7VFMt`or%#7Ga2Ng_Ca>Dhe5nEN4Ly~O5e5I(c -zC5C4-t@OI+NezD)m45jgR{gAy>T@%@04ZfZn6`dAp67e{8??|)-7C?4BkM$NmL4DM -z0;m=zmI*2EZ?n4Zo%trENoS!V+=3~Z^p97kQ#w`GQH6d -zGC+a?eAt+smi-$;jdI$#$VO82dy+$af5l39(I3{QlGpvQB$OgQi_;}P1q|E~rt2uO -zL@sxI0XJZV+>78MVb3xxQIiH~4!e%ko%(nuq|jv&srWW%B$H4i;V?VaR9Fw9cD<-b -zpSyv3I&Jv73XvCC45ez-bH7C5`Dlw?n5i5C_}-1-UQGo>9Rj$K@JC7ql+P}5ifkeXsR%R?TeUk9QmD&80+@*^q0`)rF0f72=buNDZ6-{>QR -z_+*k<90WHc))dU7iv?nVC`09`n))y*dp&5Zikyh2GWeWqUFkWVhl(CysH6BV>M}m@ -z#GSG0{X+rW=U9vU(%j1Gq6kp`PI~^|)2nfZG{VrVPJ71Z8G6{{QNx>`Php}#Nz0Iy -zv@At-6s8T3HE=&ev4neejVnV{$v8IQ+I^WLLg#&vZ89PUkrJ|`z#M$;(I2Bi#FN)! -z@=OaV-oscYUE(D&xwf66p+csnqIja>LJ^coqUc7BMjN`I31z_NP{DOUwFgXe7&}Zs -zO!Cl#&GY^F<1>prE6sh8^3^`FD!YfK5f~tt_+L;I7|TFGYe^YR#JcpdXc*pEwuCKR -zT~V40B-IV-_9*T-6#2yiV;G&jnmcXyD>`1$FBF-{zJexrr;9!9P8tF8QS*a{BCc*4ITL!5qyY?LcS2Rx@g2@mnE9scOHkF^!GQC -z2Re;Y5Z>V)V?5a~giH~Xw!i -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 -zM{XXWfV$9qvSPlaTj->O0$^-vD3-& -zILy5DT2}z?yKiIR@yFz7TiJ{R!)%f?9$0#d3`Nju0><)_#w9(oS@kDeR2|#2Tvw{@ -z(5bO*aL$VRrZ(y8 -zd19_k%omZ_sb#)U{NxfmP91|>L8cRp2|&jUB9SDHalC<7uAy^8=E?<^VxllNs-us~ -zyH9GcIR;Hczn!&-M%XY8C0dMDY6Rg3F^xLP6K$MeG|Ll{^P~?#C_2l6;@BbZ{gxkZb1>Prjl34c16*y{*724HGUPS%92mOd&6&!3;2zXgd@ -zfEnXQ(?U%yXvVQL)tb&J=Izi|YlDFw<@wwc>WO=7J2O@hK=qizdv0rF={}X -zZd<96BfSx75_H=)XfK4CR}izhJEVqo>{G~I6rGf&5s{&nzsdVogo7h4?xs-7^$8Z& -z)+TQO`_NWEaP}@!B4|d&&NhM~ -zi0_K$stIyaU%oTYPh{gRi3FiaF&4k}^s-CcS_yH5^$@tc_m?P{K`cgAGa(b_tWY?Z -zoW97XP%RR6YJkF?$q{H+!#baKPuJ73^Q!O!;NIU_K#W-0R3?r-6EiGUZ!n=h$W=s} -zS~l}kR&y3lo`LF?`GvHPRP#9SZ1PwtZ(8*T*s;-s=8mbbC0W~g^-^eTJgthbu=^eX -z6T~OCA1BN4Od$(bD+5!RN5IcQ#q1QW7L2Md+hVj03g6*ei+Q1M_G%|P#DP1W#Ep@k -zKWpyCgb>ebIE2&BZ6q8rOUx&s1xrj>T|C<7qKZ}~v#kiFzZK@CuGPUo?Z@{V3A_L9 -zd@x)tYYANQSiuf?zb;F(6ES7+CD7JMRuaUcRI`gvB_Ui;WW$!xDpnYU=kEvCRKo?K -zD5Po=mM(9iEZc8V^-*JJwK4&v^r`?{Px|%Vwnr0=FdZ`06GZhgIzC}=PlWf!& -zkq$+15kgNeU{sLn4{u*!NKlD(shA(u@Y57Qq)j%Zgwh-|OColy<-MGHQ&(t%37<%q -zE{2{S0IGNA$y-06a4i3ZmN3OTYrf0S2~fx8>A3bbz$hl1=Ea -z2wX3oKVL2lfRqVa#rfb{z -z{#;^(iNeWI)SS-zb4Xoo|2$UcvkIMa}B -zFqeAQr5$~*Z5A}c(t#>9y;jnjNM->?631vlL6|N~?^J-C;5Av;q~yWC%FUK7%+#v( -zA#Zc_@pnmSI(Qox_;?ahHpDLJ!!C1io -z%@Gr;5^mqf`6>uX+E$}vU)?cuHoVH^cKbLTKKAETlzS!B_zgr;FKxj0c)pQtoL@+z -z{7YAPi-dX8G7My(c$#1dhSJi}^yL<-DF#l4u-q{u<1Lcj8x#<~&T-U(&su9RbJFk{QuOVE)`5G_N)OVVt5r@uYr -zvC4-2A!NXCVG7B)t~6gY8D_7ykUUB^E5ElcJcvmR7s(?bpIBfF|7BpZru!R4@7L+bV<+^ROFMIWxsK~H_p@|q?av64N12~@pzsu=5(6&?f5&sL?>Vz -z`Y=gl_ZGc=?ZUJ2v{d>pGmPnyb#=KU@ipxp1{&E!6=@m;x~tzQiGYk3VTZN?|1Sm# -zIZ8nE-zY5)CYpREN-Pxc0`|#5tZ8>lxIk3v##rTKfQ4b;L|bZ1t)*Dim=k@*ppFD7 -zY&TJ<{5G~0m0~@OJWqliDp6X;aGDS?Tt4=t+@Hwx1ougo4x$kvN|)ZnYmGQ^vk)q8 -zSHfC!nBV(1b_FZ_n}rSw$A7x7VQ0y_4Rw&9q3!KC9^3I?kHs5(x~hXh1dxek`^U}+ -z)Vs+=C?l!WkojDI0RMVpxGdw7RTJ|n333eds|ml%O~aUm^Y+K)aAaS${Xqzk?428Y -ztjFBNUQK3zlNd_ao@CatW>g?XVT{kT87Xg=pIkNPrbZetnJCX_bL -zH>|VQt%Fn^?NdhKj0`urDr@@t>mDt&U7w!LDH?KDniCj>U+Z9Y$-;7G+lW@sQ^qm~ -zTG2&5B?63qBRy!ZQ=ZOzdcL)`_i+xx?cqWVc*DlkkTXNjf9XVCOtEPQOd(A{YUd|$ -zpvn>Mw&-~rqNUK6?2?TQ7xX7Ec(?sNzurF1G9kZn{QZ6A^?-AZp2R?@&L~83jnE+; -z>Zj*>szYwWaqB|xiJWNHChxnj1}mAHumoCuk$ZDZHJ5lBCV-F!7Onc4X@%kt4gjxp3E -zWWYj#sodZM@&qb`tQA}{Zqtft)@^6;wL72RDS%p -zls9>h;Z$Uoo4kF$RnsKKN890suidhkNjS2SCL*kSiaqZQ9XRo=heec?2{!gV -z`-bBnTA!m&1&_T!St$7=o0Wu|lhjGuPOo2NANq-h%f_JW^?HFzOHP~rPSRjJ^@>8w -z9gTADvISz5we5Np*NB&wu$*EX2_Oww#i5(kshX;$g)u@+H{r8uQgdr -zN0=-&M5_};R=abhLrqxC0ePfG*7E2&6z$*$qY&alBajR@?>8J7G%ZRp#2X$e%^!Na -zo^N?6AVK;K@-kSX--{U}`t$`HvV^x-vP%xhGd)MDR?BpX-bZE4jvly1AJh?6pFGi; -zpW;u>Xqo%G?!-_>5o5Zn58IU8P`>(XOUUTI2d&->hQoSs8N1&HYt-m=T%ZsfV-kV^ -z4}utD?6wI$4*sF9zNffqdP{`JAzQqh4_(X!-7ee1`MN!ww}<10Lsevq^ICA}GTtQB -zB4pL8G9Nb>JWn1d7t9^uTpnwGi1@S*0-|M15c9mOif2Qy_(wdyza=dK6w!NiDgPVU -z9{j6Al4v^(bca$9!fG4e0^*eA?%)F~TQFNWX5>#GZ{gy~coy2H{1%iG_Jk;rn@)gv -zHx*j}H;ck40%YQI85?~WuE)Qtk?x%0X&|_{lb;V=IY*M)mkZ95;RT${q7WqJn57&s -z-89_UTJiqIHNDdIi`&O>A93R>7EX_K-vs?SZOBPlfmqH{13Sn~-jm^3(l$%pV%Fbc -zCvsdO2~OYU+1Ks743A;H&*3H3NR`L6)`W1gfF1luc??BU5fK(QQJ%}}mal~&aK+Y0 -z->=q*PV9KK>Y8=s-$z!VmEoAbvuQuJWA*q|p5Co3gC<6BBL-cdc;ZqWv$jVr>Ed>b -zuFEH8u=1`gA4LGo6z6ELFKJOQ-Q%vKMDUUB>EV+u(DAT69QY@>yzD=U!)NfggueVJ -zx$(Ihhr)j^5Ftt)bY2r8#$XP+ -z`AOub)BYMv(p-yznOck40Ys1;f&l15o! -zDzX|(fMWSbmu%Z`wii0M>{6UFF?w042b<4;VZ>fu&Y3vGK)5&!xA{8i^Zw(*{!X~4 -zTkl*rv(N`HcCM{Vy?q7FjbsL5R6^AmI$%&yilywPRYTgoZdkds(@<^*D+5+K1f^v} -zc1{kOydtKUhdU1{O{|NPtzG;x#lTC4%J~M#hYhT=n-xVd?ufIb=WisaAsN&Y>Z+hO -zRf*O>Apvd+$I!^WN%8EHu35`b7peUlKwUISAUkZL9g?EEjo%f -zKi?usx*b^jC>%Rl_X8?k&qE$P7Dl^3EkxM5OSOhEF+NH!?R<931_?r4REl5*#Y2gN -z=i2C(ara=6Xh0+8L7Hw%MrvcuN=cr%O(yL?U!_1*H|k=OKbAbi(ji*Tbfo%!m3(&Q -zt`j~)AySznIhnkn1Kw9*F>$l~aM@!B*NX*;KxEY-q#MbAV-mdk$sgo^PhZkcTlrPh -zjW)U{B|?@+Bp@8Z3AS9Pf*!q^=_J<4U?uFLgQPWg_mGK9W@poRL^>t0!EW>{-E2bN -zAcHB6a+CR{n69EK@HVtzE-&V~D6~?q^?SD -z35~sQM8Y29pLxne#rEOXh6IY^H%vwJTbpxf(It%0-mtJ(Af{~uLxvRdEL5ygPqxhO -zb6F$>BQ$-{ZRc4?E|CM5^5!t}=<#cdARDhr2>0}@ -z_qDq}zOo=-LQY(coLHhuHF&WPgxY`8-=b5#yk0LqDhMIT;dGOYI0c@o_0fi-WtNlc -zu8Lw8qR*Gii4g5Xz6<|;w?8rTKoxwSOU8)gS>_szX;B#nJqAynw&P96T~JlZ-xv--x_MdaA%(S5J|Q>l~36iGQzaXZz508kFj56(X;qG1=Oe -z7Ng4(CsnYS-J|-ncD^r{km6dSG@drUn28w}URe<+dbYF;1a@58C -zGt6F@GOzIu4J$H=j`(L!DC?YsRZ9fL9^!f{z>gcy!W2hs- -z)yi-c`Kg@f5FNqTR5Z|WXpM{-CexUa;}>4bdgn(X?QmDz8tI0%AvX~Io -ztCC#qM61{YJdD|01X7bO-&Qyr9vv*%8@kwe9hHy_k_pInQGn6K&wedMHe`L&|A8)S -zba)h?)3pp$E?@8TMMMGqhIArkyLtGcBg2jDEE>yb(F(Hbq2UB!FEV|qR%FLWPMO$`K{c3( -zm1J8m&pmqIq(Y8}XRX6^WX7A=v9&`IJqH1~aEgGe=oBWDN~FoXje;h@m(wID%0*AQ -zwS~`L`LTvLlrtSIvca)5^?KctmZAG`e>x;-?X00Enu}_>zoYcDY8pMXst6UJ_cFxn -zK6m1Pz(c#9a67Vzz!c>Eg7e!U(?owl@q2c@e3UW{wZTYEy?GO?2nQU(zY{^WmAdK& -z`2krwhM3Y%Wm=ac@&-O8R| -z4oJS_4uZ_}gm$Q4z9-JO4NN#d`QuN2nf>tIf4I!m$kQO0cw@^cR?`Zk&TiM^M}W@?kcli! -zjcksJ1BE|}u77^M_tmJACVtElE?z|#06s_or7jG%Km%U*hq%ZHc?1*bhG+x`=O*1! -z>|&;5iWR#R*wsdc*2sBy`w5rHwzEP8q6$KhHjvmwL3f09t{O&%U&kRGhE@u?j!7A! -zK%z*-65CqWgg1#K6_`W}OTl$4P^yrz=mAUsr6jOFV>##dY~AkJWwAlQ&umitlOny` -z$k=_(ZGowbA)SXsP(0c7X@#md+RuK;PZx1KUVb-BplV-8-+KWhP)3{zslyr1a$c6# -zJG;lGqwFr4Sm5c%^eaNSqKX0hj7fH>+@H{<0B=0>mrdvxSOoN-Rl0y2cEDCk9+1NG -zLKlj6zOme$C>OuU2Gr)&U)CKNjFieEv%-W_MBbP(P}82Gt&rENrV7K`S6K)Pf`5X_ -zi^KSFJv7(j{d0Kbf6oE?t7TnDiqo+8A1SZb@Kte)dkqO)h!*8g|Ndw6}j|9X`O -z>?C9?471=_7VA$I-E)6Mn@F=5%%&`$QWZlEROng+4Jgu3R1}6n`uf&d6Qgf%)cNVr -zn0IET(CLgZFRZWWT1~pnmim#^VVo@?(PDZ|^kSw_8uQx|E8F6VAI=hKXgD?Z==g*`= -z*FX>p{pLu0`jlUBlEdjfXNRupPtEV-YH2fdm1IT){N>1LZ<)57kKM+{fED-FF>5hA -zPfiXFF6aAboAr8yv7?bCE1x>ouPG+9AU6nYk-O;V%uapOVrkU4h>qb;GBm0q#IP{M -zG4>J@;QV8oqrEveO)-G>z1#(yN^~$Y1@n*aX?;x&Tn=v&eR>pZ^2L8sJs-J!J(7+& -zB*5XxF2be@<-`B-XfI$K61j4sLq6 -zbetSrZ+B@{F`Gsk47jk84p&UVfhJl&*54S2c*N4p@wPw7!$BOw29&fc&&Aeps&>s{ -z9>65u7-<_vE++fB&K6o79Huo`IxBiKTc5CSF8L0bZX4r@sX|*`G8LXB0y5b;nnCP< -zNM`=+Aj(}$%xiY4uq=VIRCSud;X&IxyG^k82so@JIZ=%+Z5+$Z6OVY*Pl$xZSwXxf -z_>FEeH}YPdj_tiTp3eJE7w^SLpWI3$Q0N6W>`$_;AR)yoHJX;9Bl6ClpUI7o7{#~F0cSfg)7g{r@pF#y -z8)5iOEBlK1I4cgGML$kD8UEHNZJYE3RdQ9W$-g)5qM;>*N9Ng~@0eQySO|uEh40xT -z>*jxn!7Q!Y&r}`WI(c|#XN;_=4|&#BRh8D^7MJBED{jSSc`H`BsbA==3zHfxGBMex -zTA;0jSplyBqn -zR|LM|6G5GTaZERT%ig+`J?MUKRdJUj){L9U-I~y6~ -zHR{k+SfXhlv(S@?ZxW6MLD|m6q8H*iWxGKZZcdkra?5@x6^5eZ6cnv3hz+w@xRprH -zNr%3{z&V**n+cyq=c-<0q?IA4TR<@9hGeeatlseT&Yw;2x|JL^jzJ!;3vC#BevDV) -zLoLsN_?75Tn#V(n@$;7Vzr9aB@B~%r6%R9^(O9mPtr#$w#MecC8C{*5VT?iDjv|wB -z5@;E!UE7mr9#eE!%W^BL_L#-4848lMYdB#AIBt=0Gbh6NB;$x=LOSr(kr3$*5At=^ -zva9GEMDZ+cjQAsRzBrpnK$1W&lSSi}Q(!4V;s2N)#Ua~YZn13ed!)$XF7|s8pR<)b -z$Tju|)tY<*3N?{1<;FQ=T;hx)3U;x4$!)gF5DMD6()1ny5f(BE4c%ib>Xt&BK0hy4 -z5fF0^fnlSqiFucHqF3NyL?SZpOO&MOS#mzJ7zv2m70nNj2r`;h6$2hoZwFvZtv)e8#S^ieFgMGT1uYDag5%v1Pnn5Gy|BaMbr -zJ3eg?DsHDHO`>x~twK!=WVApe@5d+YVR$Ntr*=-?AY62t)A}Sto4dq7sXPq9LJLhP -zUcT3iY@xEy>-PJJC16fHmXoaFynx7%M|yCp%W(pAx~ALrPFQw%E~5@uM*yYQNtJ+k -zGC}Mh$7tSuU2mT@0KGnux9NM7nr*HblSjmd&O?gJpgaIN0U3^jnBpUfnT~ou6TAPU -zEI`!%aQqK{c{vT<YUH7-wg||L?k%wQ2hDwh_*?FXXPdTV*2LT -zJCXc=F08hjq$RN9X(KBnoIz)KK40 -z83vBRQ6)Eb1}|Y0ahy6G%QqdzF1DQ5FW-mHL{l)Rnobwf+I}gf5yxQUDIls)NhcW! -ztSCxhW=1%#wdh*taB!=wQ)l;2!)vLy=a1=I+*xa4(tl7d+4A-KNL5bBrz{w_XIShj -zk!n2b^W$E~qKpG{KoFpVAG*><#aP8+z*3}f))~2nw_2O&S%@3G)C{wh=U{A;=S_3J -zcR@Hpy-oj&aT)nWvek4qB8jzzc0_nlCu-pfv0wDvU!oga;RWL@>cyf+p9tg-Fad3* -zERiCbhQLNwJxeob_~F~%uJ(=O -zmf!WdUPK!iTNFA8_3-n(eDbSH#Fl3*Q2#(_)7Mld%=%5r=-npi)lWJ@TAk5zhh<#I -zJ`8j)8t@X5@V#qlJCtEJZdn{P;ydKF=mQ1`kQ_8X6|LatQ~(FGimGI|#E{J9Df$zC -z`R?_46{1HW-Tl*+YrlBHd@ji?1WyeOG6HK>Bm=ES+4S6@4eQ72w+wU-lb(}81F9A= -zA5O?4>o7+$WHQ}^AvG?@+tbdG6ReiOMkX6)Ap&{0L{mwmsCJN;X)C2Woi9+`#@Un}R&U -zdM9hBAB5xR=hi-1>H-1*I%iAcg}h>nM<$^Cww;X%0QvlJ`$EszE|GoM`HQe|PmTb7 -zHc9KX?s_tt)jiBR!90h46{6pMAKWYK@M6(xH_RJ}IX_p-$yv(cFNb0%>QMAgT{~v| -z(KXTQ;qF=xvKW|Ob4l`ABQm{{f -z3JGyiuCJ{#Av@n9!>V?Wf}|VdW2onR#-PLcc&dL#l`dYD{=A4C33M!ZE^TUY3p<*T9wcY=~ybDc$M_sE<6z4YM$&u?%UBLhy!od{vybUfki9P@vMY2n^STYr(Z98b)tRrCnISJN< -z6Qin9zjE@1ekOn@y!<9T0D87M(LU2U>r=F`Z%UPmV*W$c8?ufpZA!1x3~i9m&JgOm -z?hjpiwV^e{W^uwcF=e%QT21a3iTBlJYudox#!h0MegcNa<{np`M`F;&a_{e2{srj| -zIs;E$#B8|RINcSk8YTCZt?oF3?q(s+;X@mYy`6?IBTm@ZIRiY?aV*Y^0$D=qhXO$8 -zu>&Tn_B**>;;Jjj}oE^{m*YmU9KW={~@-s`P*7HC3!aX&Cs&UN`(Ugt3CYF=6YD%;~MlmU&j46e;HcN?Qv= -zvm*(%>XOK3hQ43q$ik1&=OmJGWs}XL*2A3e=ry^?YU~1Q8)-e1E2w9BAeZ7IL_SQ -zmrFt;paWPhW|ZWR2M7%#TjItHfek#Oh7hqa#aFE4m`qBAn2Dw<@x_F5uOImZy5QF1 -zreO<>${l?Fm)l$}R?nwW3?8YwpH~iU3ad -z_g4~>agx*V9U{g)z7C&CoUi&;&E0R#CB1BmESEHKY*wU;yTsNP7Z4CrIJ=DuYZd#J -zt$ZxXbXC3H1ymcJsG&!@iOIug#gD(`JxCV;81b|d52pMTm$Ej -z-EEkkUhrCWUj__ -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 -zT1Rr(X8NYkLXIE-nLwp>MnV<;B`{Wq -zg-POl>(L*`8H-2ZFTEhOCDVQ=N~*T -z7QDM1_yhRF&(kdv;!s9q;-}MXLZmD5@z24DTH1e%%OK%&T(e*#_qFruo`~D^g^;ot -zFn2iEdtDoF2ot$b)pb!}PjElS`frf0+#napX?_chN=5S7pe#>>Q}(|6sy?fu!r7Ml^0kA*HGX3=lLjY~g_ -zkzr7)X9}I5RTW}s3UAGz6-8IQp9|XaR3Db5a4I9*=0pHz#OOV*$pcrh8H3(x)I;wv -z?g{~*^EU~_1iU`$KmdgUzmAgJC>s^3FXioAo{L*lxv_PUI6Gd&@sj74&k%?+ZGj@m -zj3>~TgzP{Vwx|CIKe-eiCz&6MuekL?4EzFu3RcxiW#U$l4K66$ -z5+?MVTBEA$^$O@E`=-q)GU!~b6cs!q>YSbw1@#*a-iJwm222BP$BrYk2uYScCJQ*cvAoCoxL -zd5dAe+?h;BZ0XL5xrwRNAT5(|6Zn`^4p`KkQ0NrRg+|jxJR`D0Hw>m92mK_VyM!di -zHV)%Z{2btQaAIBp46|tm^Bz3~lih$|7mN;FaDscmmdC!T9W+Cxfs4>jLhj8V@1`3= -zB-K3SD=IKSQCy)yp2w$J=!b@4*i{v(+V6LNc%cDs&d3QG(8|}l<5ZmX!Lpa9<7b|U -z^FAhKMVqvi>zu-?WDNIu+0vr>pd~$1H6@bBV?CMZ7F+K3(ux&fQcIMBR8Kc^K<;5o -zSS*>UbVx0O4ko|10tuJBc8h7a7-J?^Z_48)b1($(6xw|(Pl#_;b?D%tmOd?rkwNF$ -ziqGw=CQ!`_MuGd{SmeutWZJ`Z`nLXsxm7hrJKWRh< -zzY(vO=r;b_Pp1#? -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 -zNkt)z5fYm@=1;n2^E63YES*=oIY+h -zdHFnkM3R^t=|9$nRzHW>y}us@sBA%!Jy>+#W47jos~Q0-PkqeSNdGqi70hMN6x%N^ -z@HI}{7a!zK&WAFm6Y+TpT)|dKl&C{dmZeyK3XZ)8uML>!3W=QTEy!&w4;y=ZqE?td -zqKrv6;S7K>Gtc-{@ew`kSkZ!s=mGNdEK=lK?os)A{X4;(S$MzoTsj6%cfyy -zrl@Fw4<$s?Wmz?B+wKruvu)G1R7IG<728lXT{msPT{<&U6}FBgE1IFHiuV7RHvK54 -zEZJmfQFg*8W<_U}=0TRTqTt<9WMWIQB2B8Oq`5eyQ7(p2&cs#LnProckBY`oxp8b+ -zD9RkVOXFBrIjW)vQ%51H;O8m4!|rML)|<2{E3ba-O<72OQFu{;m&7cl8XqyHuZIjN{X)&O|b)8Q=v$6Kw-9Tvd{=ZLuRHDXo{@UFfc9CS12_tC6GOX -znZ8W%-FIDDbl95uC7skCGV0JGTc4D^qY>YPhpU?BDLSF5X_%_v>58t}CS~^i8>lLU -z{uhN9bkd9^>rTQ-X(f@4EKz@ULL-NoA=Q+SiYg6FQ42gxq>3DhrcDWDl!mIM2&tpM -zD=VI+drF{EO_)^0fW(n4>V6{ -zqoNf3G+DBwjM7Am8C1y&5vIu;|3+}7D5DAGS97*xG-d%DWNBWCIDJG}5ebomS?&lP -zgZZ50p(6{lf(fdtmaZ7Yu;H|DOvPHmMDl!R>bVNdBEc&inA@`8cVK4tYyq8cynHb@ -z^9SrS*EhbI&(HiMUI*}s=MT5=3okG)(+tnAAFtp~8L?c!7D7kSu_@no@Xuu7Xe#~< -zp&Rg*PKcu@{6KM3nIEX|4Fy;Xux{kF0smmhW%0zx7J@%@o*qY{C6rr7G-P2_IAl$P -zD9mxmu6DQVJ~Az)9Y1F7f65S*}j~*VA$2%Jb{|E!)i7YW|Yp)0?v@rjAZ@Sc}?k2i*udCW$%$lZtc! -zlU9mT{G!dD&TPNbCTWM|sYnB86{bOy)DxV+T+d^mUAv0QC@80kPMXtBxrFyD7_90n -zPXh^tF4{6FjMglW3=LMMZcC<03~el{#^!eqq=JRrG5_Ds*Reap~oPsr#5zDFMKmg6^N1pncZgqC69Em;gJKj$wD -z7Ye#4s$?QgXiV1|u^_VOM@d3GpussTFE6ebRIA%<$IKB@Z^r!6EjJl+;4R?0uv};l -zoRWHJ8dHIfqXSx!a6{3uDBbhd%}eQNt&z&RiB_S>@Db9`hvG{CyB -zwqOD9Z^mE6B)VZMds5AUh!&lgeN<7#I$2k$Tm?W -zpNd$n>6S$-mDmJWo}t-?D?FQK{8fDFPg&4`(~}a!2?gq#2C;D$1;(7eYgDZ>PMMIYF`Y7*g^Fk}i-?+Os-o@7 -zn&`3lT#|(YMB8OTxuif3faBn@&6X(m=?3va!xRbC6;Wd$yaqg63>DQ=Kx9x%V5&H$ -zIH`cCQ^L22fz`vyWI*5&SXl>BTT#MX^VjQ62uv6Tdd^=OZcAXvN$bF+xfhi{qH}4v -z5y#Vs7hY*g{LU?f)b_$o)R{-gjKa#Q`N@Q?;GIOiG$p>=q$)#hBo(4qUM7)v=01s{ -z4lqhfcHnx2dZb+HW7OCI7Z^HB**W)6|dRJfT$r -zBQsyvGBA-W*|VH_g^LO8@YPtK)yuU0w!B0-m%3!SHs~dLHm*8ux9>jO!}R@4F%0*J -zh0Tgi5l8+!07~&#NRYI!P=AK$M!XfM@8E -zOeA7RL^cdnk&2_oWqDLAC?7o$gjqu;;xzC&G)Naw{hdxe9JaY2^yMzPi7rgN+W)vlAc6yqBjkID4zS#j|`K -zt)lnW_t;DBw|7Z==besb?=J+;2cB{tpU*N6`n;vDS?q7ljTa&p=Zk0M{Y97Y9IkEN -zUq|Hq^_ri*s73U)i0AL8&ztjE8a>6&{fDRP+sEj_zB>Cqd+m-~Ts#k-Z_g9CfPP2x -z<$nJDdX8f}c$&vg_fJ+7KCI32#YOghdLR1{jNSbD;oRhv&__*GkvPe0$r#Y_MDx)0BjFWQaY{vX{RUtixn -zUp(DC-9O$xU%cEupa0L*nU8LsMi&=PGUp)i^!rckt~WAD_M)+k>lEhocIhLY8O*U?2-29|u9~jH`^Dg3%mUH>wXHX|JC_ -zFyNf8KknEzQHa_pw{8{->&*FP_P!~Kn`TfC4p3g^C0xELni3sLro3$|(Ffm@J{-U; -z*FX-NN{aF)eZe|rb6c_6-NFCEGLUF?h0}DwkYU#MaJvf&eX1L#FA~M~Ma`h0Xsf<1 -zf~qfvR_Ni6;Fn8B)pXlbeZlujP!eksjV)Uy=(>LKsYu`RB_!g>x)Bsv38KXbD&ghE -z0f|W{a=(+)Byi-8YU+leSwy#0-85}O@Y8_R`rUM(iiu# -z96Sre!A2b5&yCZ`$*^=D&y%PWZqEb9B%T^5Al?|dZ&{kD*_L4j%+l;21W`K_`tb{m -zN>FIst8@Z4$ii7#l%MPn30tvA&His|J)-@~jVIsK(Rs-hFrBY0Wk?K5)rm!j4&TM_ -z7j6OC{ot(mAnt%h@dlZ#=!&EM -zi>Zob7^ZcskOqsaQ}S81=G_fIU+0n@1+fPghb7=qShX7ZRa6b+C3P?C*VWYny)0Gr -zy8HA=L&sZuyal8O!H4fD%OC}Sl#Z4>RhBjVNWeZ4yUJYJ_pa8sKrF8fXK;|_6DeSE -zgsPUbfH933%5O;}xQgB(na10fmz5xA@fl8T9I%WEWU@y{y#v71V>Zv#> -zK_xFvp!27XWAX96_jo&g6-o!niOCm+ZL6Sn*>Y`;wBXhDbBtzDC)+I6I&W)9B+!&V -z9^yJ_abQxb1)8tKFoXENUWA$#|JsOQZy-e*Kt|}VGh%pe{ovo -z^FtK|6_-vKeYCP#g;o(9?$+Y5pixrWGw@PJu{4z1Dp=W7sdY5HgHsGtKoeE0{hKD8 -z4GcTXo4kT1GWgt5U9kUtl&;095E(7XMl*y@SZoTI{QSvlX@aWI2`qL;MVk~(6`|O2 -zQxgp3b0c0W9T4Yd4c$a7dzHhm?uZxY)CJpH%U@zwg(cKO^A$_o96o4XYwx?-K#|$!x+vY_V_=p}e((Z0 -zn;f?C^su|Kvl8w*6jVUEb`@})v%H^HNtthUl?KE8;DELpN6EbS_8mJ2m{C -z3+guLP*awl|M|e8W#PJ7)OBQJC)FpzP?Xw0WVWz;)5an+Lw!$N(L`K<79^%gyb*ED -zR5?QnLMqaa3I-o-*c -zxb;Z6@=vJtxIjRspJe6XI>Pl60Cj<{+9}F%8c7-|qmrtr(o)h-l8ics7R;tIpY~5+eZfcov!`W>hRhRCfzXJG56kJQfYJ@t -z-K(|ChvDmhB1*(?(piNq1*o;OTv9`wf=;f5s^$m8pn+lwY8MYJ)dViCh5MN2niQ?X^O{YokYZG1oN5U^sbBG&j!R$cs`R<A@ -zAE;hv*rFYJOw>Fd#2d>9MaBqaCNWLZ(}0&2G-gGZ<~|c}7gecN(*#?h?!$-o<29pR);PidX_7 -zhF<|KT!7kyyJd9~=^~@a#%%h%mU -z;ey5yExv239U)>-^XiX`Po?^2Y#;?;Yg -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 -zi!uA -zw{qT2d)>*f+xur7)MjfIEGI)3CU~l#W4o#t-19_HEY$ndCK3*PhSWA{4i*)$WEF%# -zfydJj4XVKGRgNm}<)rbeGQgD=5Zp9jaGyK=*ZKugx1L#$|fv-Xtwac -z*%W;y!vlThTe2arb9j*8Cq+^^y&F&MZ9M!Xad+13^?IY;t=NVC1sC4+x%ZaRRr=7a -z&MxEUNq5@qe#Ddhq`T?fb%%G|{$2O2+Z}fM58Yuj={=#J{+VfSv><^L0? -z2fbXy2QCWDMsQ8s#6nyYi3p#eQD3&K)?eV`h&6T1C6J1Ns3BjMYA3%akb1p~M*=E1 -zYG+f27{UsF7BHPYxXkaALJI$4Clo^GkVO64JS4cU959F(#XQhZPF -zgK1oATg`@Cw4~)6bS6}(M$;$`nOL7T-?g^kAQ328ZJg1H?)jEJY`SteuCxy$ji)bn -z-QMl%CERu3yB+s~d{CfQbGC7Qwuv&Gv&2D;W*?hp;5CbA -zQM8J9Jv^WbwtOC4Tuwk0KJXv-2@_uweDWFrA?NEGCRr)f7u^UXWETkTk%!XHDhKMp -zQifR;<4kCx5%UG^JS73nSq!)_g^D_$q}l{Hi78~0T2ap?sS^vuft>_hTc>P6W47DY -zs&~7950s$R;GT#qH4(ECWfC<^Qwded0usXinc-P7a3c`w4MQPTpmr9S*4`-UUrqTh -zj54aN{)tfr#N`Ua(6U0uj75Y|$!S=AHub`1UO-dbB?YM|O8mG2xt{MoHi9F_Z_SQm -zPV-G8lwDzjY0yLkIckS=tb-_)$rtvmEN33jtR*?nnI^!k9aSBH}q7!M`XGdoj=ou8SS)(t?uc=T*`u^IvZQn38OuQx~wZI;M(%@S|Cz -zcCbEK!6K6dWNY$QAOUO87@|hY0`ib2QoRk{3ivH+&Ct>HyRGvhhv^($L1QkJC4+P^DgI~At3Uve#kn;Ai4L2s3#cl~p%*qca^ -z5vuyNoCj|=S3}eAuDe_1ZtyxHTUpU3X{;pH=ISCe&G@_>3JhV3XtIeq9*u(P*dB|! -z0We8Ru{NKhHPn+VRnjcUkR{UsTJ2h@W*IR3B@nz_P9X5bk5njHbe1rZFzcEoib84& -zc#sDW3RXLiN*52nlE87~CP;!QVhV&DD1#`lBnbRNGWrce -z=U~wg1AiNmqC;$xxZq|B3S%H6D%g_x~8;P23YM_;9T~+I;LroL7HAXjKecCoq2U|B3*)V05 -zKp8PDUBf74AR4MHP`ZexAmRC~rk51X(a7+yO^k4Hj>H7D%axDG7o_4~q>*5NBsF}x -z$6fiu285dII-hRfPkTHF5*3!RQ#*3kapXn4C8c7=J?H*%n%!@$c|K9fs~aPmRIe|Y -zp2qX8|CB^`Z?|W3{PHphF4Xn*_T_F7%;b$wg18RL%~tSZ)h^LWUzif-vmAsk7!zj^ -zU|=~=7Sw(F^;yAU4^|WK{@pHDO=jB@V4SX=O9G&sPYH0NqR -z$~#4)=_@ks@!)_3(6;`s-MEAse`*c+3Td=tMX3*#aL`OBUs2mK^}C7aEBbCBa6wr_ -z)unM?Lw~KE?<-ol(f`$ec8o7qiLY1=ZYkjQ^b${P=bPEbZE$P}83*4zg!fX(Va27Y -z{Gg(*+U;8`HK?TY2psIEgs&N2%<(0Zwt;0(#dN4vy67@5!zBym$bqM3k}fvOu%0kD -zTQs|wcuQUX@+FtL<$T{$^!aQ?TetuG35NVtmkr~)PqQ?YFP;R&-&IBWv$VAROD`>> -zeGQv{EMS261S9+y1h1Cny?PsN;e!MPw7fgC -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 -zAx?P&`Qgk15xB -z#{YGecl)agV{DVFTPsZ1;*NR7 -z1*7F^e%E~%oNnB-_jd70qw~wRp3&`T=Y4f@cYEHwJI%V4k}ciMlb)Z8AKh_p)4jdw -zU8ckIZgeYO4?xvI?#d=dMt=Y@f>BUEvY`yc@>bx9ZdV1A2 -z`oo1+jR$1NuFvB!yZx}HsTs~)aYNLB8S14PUAbrTyVopR=_!lKVW^CsHUs%Geyg_1 -z)0=g%v_gG;IjV^GXwK}HqU^`{Y-xJ4v-j@Eyu5O~D0%#tecaj47nE6Jeen9eitkUy -zmMbfMwys!j;OANV)bEDR>-)spWUpuE&slo2@I|XTw9fOhkFnO9Po9ST?%iAW{e0Bx -zPDZEQ2N;~0yE!w`o@U;h8j~~P&%KW>OM4%aGsQ39IK18Vs$dmFA0J#;d4ULK!^W5Wtow{Jq31y1+$WqPqF!|NBj -zisovxREOm4shZwHKg4w}dVO`XkM-8@AN8rS+T6UZ{?3fyp-0E+1P~aNNZY)0V<4SX -z_C3;B&VnE+4^~El1*WW}e$CZE!s^$~_yw8*|9NyWLgYex{y)cQa0M$YN+x)CSAo{L -zJHV<1p0S)uY|VKUm;aQ5AjBjm9aE=7r-siIrg#{gqWH>ZoBV;taP!VVUP@JTK>MOj -z#_~l~HgQ6rDRkrp!SQ777?vulzU+(e5CmT$nrH>^qi8zQZBvs&LjN@z>d%rw+%Eot -z4n`fIkDG(fU~nHCOY$W|Lz9SZS&}T_Zxl-g3qd#r0avzdLsd;33SCtLzGKRreW~kj -zKPI0T3cLgE^dX$y=DV2H+KX-P=-+zAa#)g6w|{fL+P>a~Zco6Vj|l<_{*-H5G|X-^ -zX;VtE#1i-EL6T>hzg*3eLR}mUqFO_(Yn?FeY*?J_K<~0?TBg$3?A+?kz5Bs3x34ed -zsJJp;9ww44AH$Bfq`VUb#dtD9S7qC^;By$30)nipqgSm$3^(Drk(>A~A`BA&kEW&bRX>Du -z>ezCiSe6Vo6Wb4w{i_;NOlA^Ldq@a%n4|YcJ+*7@H|y$s9N=4Durd)u|CXE8_4qJ? -z3Og%AuL6M)rLG!0zd&bu@c@uRMCqMo1^c|(3YyI6yuv%<2JYxjAQie>gnI-Dfr;mF -zj2K!GNIqgegY6NgY{_i(VtLw3IQ9 -zi{nCwAS)bg1M{pk;sn@(m##Sg*Q)3MPX;o+Vo+cClp$yYsv+o%znXh1d^=AL{Ilyh -zh{@uLG&v~~bXo+-56@hCMj2F_2?)I)V*sUYBLstkh(`6@0w>8Y -zX&yL&A3KT=FC38wh$dkj!n{t8PTgM@D?Fv|d2F?;`jx+TG6gNpHmQK(}eFD8Cnr_)dwaoq2 -z(Z3Mb(n873at!p;Ay&VDsQK@F&YW{5Sg*JRSl?HqmJ -z1k_v1gM@M30tYT|c6WaXWyk!5dcxM<)B$g?wq_eO+M%L7+}=FCwjc(ATc=s_rwqF2 -z!bjvzHn?FE*q*Ff28jQ@FA~CR(GEN+5*^XiJXsE8;|qo3=OCv4mTg+oRE&l(Z3DN# -zF;#)Qi#kyc67!Wbo_Dq^Pp2$sMzFCzae8q?0OZaps|~J_-jO>hPM%!=6wVa1)JZ%~ -zlh{T-@g2GEJT3kzk_{*bw@?%(lOW98oPD69#S$ZOk^k$KY6AyFaljP(G|yR#L7ff= -zE0{l`jQVH6euj~sQb9|cZN -zDD;EX0m4B3aTBA@4`oEhtPhE5?hbW}gUDGH;_eE|d;(*y36si?90JlDA~GuVUjczf -z9F!e+oA_5KkUkXQ(y5_8gs8%7U1i~bS^$css-T>**hRwkfh5x;^5G~4R-B=;dcXET -zY(Vhf!#76>&&24W|5?T*jkct|vq>n`+_E^jg<)!^w7FDc?KKanPXaFRf~@SKuZ|m4 -zg(J6tDezB)e~sXERHlDXW_(d*eo -z7Q_&ato8^uKkIt@s4Y}>hj=^Ta0UHZeBh-AyK>Q5S9du)7?a5i=}=F#R~JV%!z4HHn{pgLl5Sm*+0J2 -z&dSf_pXcZgt{>0XuNvp`*O+>)7X>b-=sOP#P=_tkjP{qCKr=)~uR@oz?_tAU_Lck$ -z)3Yf4QHcwbi&el{KV9O8*}Nn8DT@7tW|#AeKGLNZH|RQT`=AmuT~|#^)B=;#puyU$ -z-GbGD=KpZ~ng#pS$ar52`@v%Ve5qO5d4x!hpn=!P0}H3d`N52)D(E%{FCUdLLlFqu -zLvTG^=}$m$K#~N98BKgT#}flsGe^aNilE9M$HjM4keotAP&_SuAj_6rALxcwUjnhM -zE&Es|z{1O8%+L$6?l9pD+*=`>lOc!3`s -zUjh@#Fj{O7-l&Wg_(4A^U{`p@r*jO7&C-0127~&|mkbk`U>;Wf!Z=-9H4FQywJ)M* -z^;^pt?`tEM@iZjrAa8+24DRHP69LDsH4^Z5;JJUH2MvbRQDM`XJ7*jGFa@9CYyQ0U -z3wdc&6v#<*+tsOul`nf{Vr0?&;mt(_0sz -za)~ZbZ;jx=@uC6S!$vq_&i>3Kwh+VzC5El2pkhLasTv#^Pmu*LYNCIlI{YUEW`KEd -z*9AH_pjd-6sBduYqG-r&70gl9CmKKG+=w%9xM>3{RO5`L{#9+PPizyJ6b6suEhet) -zzN+yCG)=?CG#%s~8qDE-Vt~wN%3P#U5LF66T2wA-p|C4k_~rVlty@qBsSt2Df)%kC -zr7<0pT$^)66LEcQPA-6BTEKc0t?mQS3`9siDrzx-?~l5>ZK5GV -zQ#2whiWH`R0h%lV(A4ILVBtF`iRSJax8vdO2HpCh9WKQj2q|V?UhjYRLX4s+pGvG& -zKH^QlWB-kfVJMR$cWe_TZsB8e^n|+0AE6^nFt9b)uLK)Qra04e#P~8~_%f@)IW!Ws -z|Bj4@f8RMkC&pPW4hE;uRmZ*W-i+Ou~`Ri>#25eZL -ztHkRDk1uy>*% -zZF{e=eHl&4ZCl?I2NQF(O4|CTtD)-Oi<`E-{c!f4l-7NFK3R%cw|9Qu)*mNK*ZRex -zZSQ4rzkUiXcJ+fN>(__dc+_4WoF>N0B71DFKb*~O$5%$#UMJ!}`M94&?e)9-rMl1G -z#ddt;^Mz+zeeBxPE??eHFZ<7JecyXfpDtk>n*P02R&X_3@80LidJ`{3!zn*^xxM4S -z*4X7=_38YlKr{Xt#PK9KaKrjJ5KoR7l9!$vc#A!fXM0rm$LKUT@i2!+b?no_`^7!T -zxWh>ST3eKqaXLwlydFba$K>y=rIg!>xaWyfMQb;pct77?sT~nc+@)g~R1HX=9a#`D -z(45;%crO;0{qx(8eyAvZ@e)2*k6!=v;q-d?_~uAqREkl8VUcT1hqD+_TYkqh$p0CJ -z;eYX$I%=)mpz?fp1s~%LK|GB>pxJ}uLBoj?nfW^s* -zDm6);PPhTD_^4>kjt2OrQ+kn4DZRKgi{xueBh&_JDbf)j%$~j|9Y5IFbiX2hVz)`a6VcdZiK`QPt=T+K3f*B1Q_;-h -z&?vq^aNro=N`;S*S6R_!<#2I)=1#ipOwd1o??88+*ZHa#JUCB{J=@1DRki_tZE}Ye!low9-^y<;?-#lIpx7*WHwQg@u0AxU$zsdORDm+!6 -z6jD7-Pwyn(bNJKvhDG2Wq6B4_o+~@{7cEaf?LgEf6oeFA;A(|~K@13#Z43uiU$X}w -zJK1P0R0;YbsvuQ?q8IrKOa!1=x~#+5jEe;@1)OJ-y>$Dd$?fYL7J^J`@+JCt)md1;v(JmcmFY@Yi -z7}490+iY-8(wnI)5|c37T?Y5>-s^_3&9b|8H{znQyru0=@KHSto@S`pqt?B<>qZ=( -zu7Ah>Tz1btZXprh~-R{E#D$4K5V>Xz7SW^zK*B@U6gMqeW-q|a? -zRz-QU??->@n%D02<#1uyshr;SpYE@oLxkunpKZLZ_;=$j>sCD%DRe_1Kr)p$aZQ~f$G-m_vR>f7n1 -zT5UfrC%JaUeKv{ov$|UtJA4p -zPOMOyXT^(rv#s79b7Llp{@v@_>RR5iDJ(v#myV-&GQAmz@z6M9=GE!tg?_rYe~cck -z)R#+gDw0K#Jx_05Z_DTW=3?v3-@W;pr&t?u+M6%l(&Qny7~R;tD{{6DigD%__sMPV -zbr92wyWL#vUih2$>lM!Fp7Nw$81FAu2ur5-9|Bv~(4|6&@bE&A`l|!hxJ3xsk{G7d -znTjpf^B1^%TDm+_sf&&dCoPbNgEB~lzNks*`l(yZ1(aGGXhqsP_zzi -zuR%!yiUF%!H*)&fP2aS9ohJzmzi_(aDQ8-D=hiQ&76B35E|NgUR``!;ST<&C)8Ma2mlX5V -z9Qp=;2(w_A%%oGyL8MC1%Cz^aS}?wO)_@r_U%^lF48zhxo-*y|E2K$+!@m<-dF)d( -zNodSLIbbqL2y{*0EiD@n9jue31M|P5$wKZF+-rItAHT}tdfyW>Q{x#Xm@p)?y>qYp -zsUsR74a+c#4S_jKD6uh2z9%FOys&BL81#sExuzvhSk|s;^wP=L95QOj)64!`d+{eL -zfuSWSTRJB81YI3K4q=PPA%<;aDJ8LCu7wQEAt4pKSq;E1?wG`R1JPigN -zp)dvLQ}$(2vbMcqny!i(q-Y@`o;_~F=>+6m^uGYKUdD$E#7K^cRin6gCg7q&ti7cSaQz;2Pj9VX{IjvnyQEz -z)0jwAm5HWldAg?fzD+!#wdNKuL!)AhNN8M2uGJ-ndMd0UP+C+W!jF8X@6yL-wv$A6Nm~m3kG-7x#%ZfIMm8r`eS(kC5n5r!l -z8(c_=t_yDHEJ1)*`1;aq6=rY)hK%!le>bcUZ;v{hB6(#M=(cpH`jnUl6tf<)WC8?S -zvg9zZ4Q65VvTu3J)7gtSFrZQBphvi=XAYjxDtQo&zWwk_p2)EakhkRKtjmZlls -z%>f#mhctr4foER222N9kakTy}!_G2|a`Xu;Iv{?4&Ww<=A{Izq3MzL*6EUCCtVn~6 -z2<+n6S(RsQ>tN!{2_}|lOh}8ON+!VFd%Kj`pIG@{TX@h%gPV7boH1%3-cEx7T~1*p -zBwUW*7n>EJsxv} -zb~Cy|W#VhndBSU$MQ3-p4*DN4FR%ESOd6ykbYzLsJV5?5D?|m|lY}y%jvoq{vtk~m -zTpU)2Uj)tfSPp`u5Z94M;?o1hmwuPBQK+r;&DKrr1LCX1XXxe+4BZg5z_Ue*FQTCZ7Y97MR7*I$JbV3=LB~E7W9x7uX)Uw5dR%Eacpvzpov(x!Arb)7X0%MmNz# -z_O7hS&Ek6LJ?L9+VXOY>dKoCA>g{E%2dDAO-yD>0?3t(N^84#l_BZy2uh^BZT&M3Z -zWO}t7mgBy>I*(S-`{_u2dpI{<)FSfL`{|of;Ip>=>1abY7xwGxUdT^7G>u!~zOm)N -z6e?8d^y;Q3VR)}(qM3%szskSrYMYb;y0Ipj{2x-ikuJeZlt3oKIBLn#KSe6n+1+8D -zmnaU36(gNOJ$5%l4h&Sd%*9&7Ltk#*n}!LCGJ1&kT44EJD2v3?{41@Z&>vwy-;dQ^q6AsLt -zb@%qwOZpeul(q}M+mcJF%U-3jWB=kIW} -zx4Q36yQh=x{oNqy7pLO$%_MO3(sk8s^m?66x_bdOWgt-_rR54qBq4fJIR*M9WvXTA -zhIY&={(fTM!vwEKp2IDw+Y38;|CQ7As6U<8W9z -z+$(SlcMnQX)Iep+?W!jKm}0ld_9s=L6qF4o&4R4aA3AV&kmbhEfj!!?VIIwtl?t;c -zP2=KlvF!?>%!L={C}(^2&{=G12h!-H)-YgJoMdP=?A{D-ukS&IPSJlA#QNhk7i0?< -z)CKMeB$!-f6nS_tsB=j3z!#JsgRH7rKg)xx(%d&B!aex9RjA(Od;I+8bFX+IPgxE1 -zFo{5b2ZN@Ec-5dOFOvC5mh*>V0iL5ziP;+rT>f-8#vgezUm3ZGIw@C5Q?koig2)CcH!KZ+TnPxK&3@IZ_u?c59O5l^BNER-?Y7S -zY)t=A9@wWkr`rQ7G1FVhSyKM_vwpQXg;2D(Jq1d^euD}fVL+vYFS*;2YFs0l^XY34mFf(Q5lZCj(PJv!uDB4>tq#?JnwRlVl=#iS=~9?p~ii9V0)qXIWKDo$lH7h^UvB4`s1lO+8z_ -zH|29`x$)BImBtf$x!HcK*^PfI${*E!aqxiVW28|j$3&SaC}oy(Il77a$;Ys=l~GQ{ -zi-zpp$=4Rx5S!k>>&Q> -zx~-59^m4@vRL`^0?4G7T<`D@ZCtpQxIpW8PUEL3N3YaXm-Y -zwpkIdI9leleJg8lYJe&HUkH?h8%v-P)Lz)_mG8W+Vd3(8h-fm+Yp?f6Oj1PGL_q*; -z0yrfa_0Lp+V;KaUbW}w>rXN4K8Q1TM(+{3tly5Hgf%;VoG&&X1Yk%yHX#(`yMYL+! -zP~8Ci6y4zx(`Pc4xFf!Q$9L#-O?J=Vayb=m8y(;6qxG%5*Qf5ZzTVmZpa`zlZL(dP -z;Zd6+LJlHCq6zP4f|C4Gpol!fXKfWO#2~Lg-N+dVdA!c|NQw2bsG*7Z&gldRJ2HZz -z;*!desPJvFDiUko%g>74hJubg#{@D6jEl6r(P+8X&==405yH2ILP8Zdr~_|{DF@W; -z@Z>o(#u@S#rq0$dnN3rcL~9OKQll4i^GStfqH1w)$YBc*ViD^c7-*q -zG_t{|0+rAP^5c_`smxb3-3$ZE^L#t>WFK@BAVI2c__9J3N-a-As}+ -z-SV_5(n9*M%=Jf3Xg&)HcNM6LeCR6C_&OvQ%mW{-L|@PezR`hO0cPMuY_Qo%Y_b>E -zB_a?W5#3K~c$OMKEQNWoK9o?2@0CF_q -zTtDQUieb{WNnGE@u40a_&+eYRdH)I))aqiA&dODIVeOnv6w_L3vJ5M-<2@GZ@ob{p -zJPzgYw*0u+4%M5-Hx2%7#)GbTJ?N70pitm=^?4B$8BOM}mg_Ht*_IKym;=H|pk@J` -zKQ>!^Mt4Hjl?wWeQHPklPEsYhq)~iiudgw6zVe{}E$D8)wDHzHD##pyR|WoxyB)+(@xo0G -zi_Zb|#>5nbs)~k0ID;8YY;+sNUb~uxE0s7 -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 -zaQ6o8IqK=xIyr||(-oD=6yk5O2-cs?e -z!pf4LqU-7X{Adre04cJO__k=MT~G7BR)t*`76=!E;qPkc=pB?0;TQuN;7{V%HPV_8pDYksRS!O2eBg=4NN!QU`;MEnbS?+qf$$hQ$g -z9w(1+v$&bN_aLp}JpHo5O%iiV8kp@k??*Xfyvv9IXxYTJU?pNfUOy;vcxV^Dca$ce -z^3?5(_)WXTi!O8~?;-V3|I#?(rcFdXO1|v1tW)KO&B(9y@Y$pwaYlOG*^Q-Kxq -z_}yE6_u)nOKObCleEQEiWA%T1GyD9B$@gUo+{O6M1m5Dmpjkews7vBdJ0H{TSN|LS -zv)#@uI@2o8qYdL*{+)8SGhHtymj__c6)Vz3z4_l9AMNvlYN5f@kw0xt=9Pyuz6}$r -zp$#+iZ9(IUj$Z`1nZn~{s?zawq6fA~L`FkZ)ItO1Oh5urRV>d?e5$h0-|0~5cc>eG -z<&%QQu_JHw+`aZMKO@HuYTwFdL|?y3ClgQ-KcU8=az=x&&Nrs$x?w07hS;m(xwKSH -zkR?0l?);{VO8<0}y(@Z1U+$ut*@RqgpH}1kD)JZ4TmKYYrk}&$G%nvC&W-Wo+xn`1 -z5&Ox-(vQv!wz-&j%6)u3OE=@ey&XQR&GW_e)O+ns=}S<(D)AhysW*@Q=6W_M&J(y- -z?Jd3JI(}8}GwV;7Nn~Ht(<3D^Jn4@6WbOUkHD{o5y)^zIfjF -z3wv`u%kVvy@29-~tLw8L_H%Q+o$KSxkH)jR{*_g@TST8fyYIL6=*j6_(MQQ+1Rlrw&Ol3`4>@xb50 -z+*rfhBIE6N+tdO@zpc4@0Rb49=LFaNP=33;pOk$~zLF>Mm3dbLr(iU_>%Pm|hVtV2^i;lb?hrsjdw%!JJ71XKw -zVcu2t=~%uBp^yCyzrVz~OYFOT-c50uM}=5cxrZ*=F?XL4n^aJZ@*E{DcSNsM6023B -zvAl(M#0$p$!mhHSwHo(9#ij_6_UZzl?mIoaF0tGDFglN;&mG*Dvkx~(8wE+m&G<}l -z!Zcc8&?e$?1~rsc7Su>u*&JB8yqIrTff1P#0llqt#WWSoR&6*Vjt;Ats0Mnf -zDThqUKMH5|mXoW=IYzqQkkbqQ^>w0^uZ4H_`hF7+i*o_9v=tFY)>@+0P{fWv1F->> -z6M2Z9Wt(Pe(A5lE*7#kZMXf*#o+471sT#n7Oxe;b#ZvJ|7pekuobFvXelBib&eVs= -zJk-pOm!(pEq|5T+>TV%Vuiqw#dG=wE_oYAH8zE^xK>=g|TQ^|n2=`%uC}Zl)#n~|< -z{MvmSA=IboiXOoRA7vS@N<^#Aat7@3$j=gp=mxQU&=k5 -z?6;7C_WRo~=59*pLR6;crqjW2Jz(2kT;UFUMfqDd#|Vdgd5d8D+e69S@4vV*rrB=~ -z(CBrw@IX(Eicyq+0RR0Rm<;kIDyQFHK?kssU;BDs%5rv6=aaQG)2h?2H(+R(Q+<(g -z9MQsQfX|vT3S1z;_iS?`?ozeKn2)qJ@P~Uv;NO`q^rwX`joe?qvdDijt~&0+712K> -zK#TOwiaWPTLAa6(H4N-fw?)%1nWSr~?WqJi*Gb5mz_huMQ-(wrqV@vLoX7|jjnEjS8o4=F{WpyumZ4^JjQZ-K>wO1zeHCDQ_1vu1S*`ZMnqxX;G7A;aU>3|V(^N&pnNy&|4G`=oF%!Juplf9==seX5)^Eiv*D4ku|I -zz?AW5GDo;dT293xLr2^auhw{ST=-o&2RoTZxj$=fyFoT$gG_!+yTdpW)9-S977KXb -z(e!~?93}G&8cTNh7Hj~okvqUk#PvlZ<#x%}(w -zCK|CTm9AN7{V-4J{|gyL48&-)fYaEr^?iboe-kDeUUDP8H&gs}c;fQ30d9>(_isi@ -zJ2V?iIvaGA+`0U>o7z5*oT7<;Z;W*A7ica`PRZ{h=lLdd(^&Ho9u4Z;9Uy)r<>rVm -zmU#!{axbS*^98xRzYZ~Bh+P3>M+vCunM~GgpjX86DZ>O}hV2KYW~s7}dfhDAp#*hM -zOs(hsZTEEOKA#U?zSm;QDdVVrUoBOPbCkrn}q -z6BR?`DbxzyvRdb#amy)G4TLl+Z>rMa-p&Gs89A~h8>Xi5?Qv5zmA%!~Ux>v71cH3R -zb0G1>Rxk1Fn$f$6JXdmjCJL$d#r1&1*_OB%ti -zI2axiuTB-U;q?{Pmb4CmdDM~HX`f;AK&STo;NcpdeW?)VD(lQvyL@?dREM;bEReEv -z?!{0ZXA6P3!79>Oq65Q`!$<&&@Th-j0MFykCbcMx<}?^NAW6@PtJ*LA7$#EewIw -zG|(P6Sx{b6EyKc;j8oxX!s3LNla&tcAOP_NF*8RCC+Kx{c_bae$l3< -z@h^Ax%F_!Co}$8#oK$4jHku9{`Mj2MtSw7478i`^n9Rt%amE;?d8g#m$P5a -zeo@bdH_Mep`Y#uS{mf4L?4d~3Wj~+4&q$Wty>|WUe7RA5@|2AA=P}*f`q9Ove{-Ys -zMMDfl{nePU)kp71IUT&r#~W`Ld{oab+VJIZ+}FLV+CDDB?dfoKrA~-AsABOxI{&aA -zZ(q#d>NyS{Mi1}y<#uf(Pt()4;C0+jU#44@+^hnv@Rf&113^)Y?yKN+IGm8Nu>^``FQ)w@Lug%z4Kl*yj13e@t|$q@1n)< -zb#kVj4sAnx^RHuLco$vicayWO8TOLL`-_*UJbb>J%^zlI-i`b7XcbI0&)F~Uvr1Gl -zdf8iR51Wv&kBH9hF3Uv~YTfgP``cHAW$C#rPxSTEpm+V0&x}y+4_4RdFa6h*4S{gEPv6v^DAXNIMdgs -z{zlWcq`X>L`rX@A*CLyb)60jETG^YIkLPUUo!|AY<7sbo7o1yHcW*cOb^qp_%3Jd? -zou2j+stkI)yPLCQC@&sXgYm>)*;f&0F?Yk+<>dCf^j^Ae_x)d9X4_wes5FzKjO9iL!cMo)x{9a9G*PXXRz+-JdL0AP2AfWzs&E;=iHdE -zhwIbw^7-vfHmN^WN9(uAwf6S95w~Z?hjDKGvNc}KB+ILZUJNW@HP_G1RjtP?fADtq -zm}e_ff7M>h(b<)MGZ+lbr~b{`uy~nV%deLgLHat9?PvP>_Cd^rlE);U=A-+Uayxom -zy-qHAvX)&|r{^qX_v^rTzL<{{+RJBei?d6s7Z37m)CKxAt>lLf{qEu2n9Rq|x1P6r -zJ-fLkFN+5vd)eu_r-yW-_TrDlYxnwjdnw*ctdG-&+tK>bf4v;MRCZcDl5VjyFGp)w -zu4kub-HSyzetz!0hvi^(rL4|hH?y0InelW1OYQx1t)=&8w~t#xx5>on-{!sQIW8~q -z!9^+iYBwcM-N -zUd77vNt~C-yYf6feb3$|m-mVOWONaB_bT_7-IQ-X3Jeo?=)G_Hz&U-E*}XV4&jz!u -zwzz*&va?5E9=8v7@Auaho!<=aFR!2G7wP5~U%P$ijT3RUxVPtb+BoyYr|ROm7p}zT -zOKQa<#iJkPOSxI<>E(QKcf0L=Jjs-)r`syuW|yj!z7F%%nSZ@JPrCQMMyS!fn3=cR -zLcOvElmU;5FGu9De}@*_zM)>NF6#|bpc%(2U_>nEk?BZvZMp-DQ8aQ}+u -z+|60|Ni_+hVmgnSa8P)4_+5&NC}%t*qHJ-&#P4H2kM7(AJh#|aNqGMd21X7GJHos=ag>~<?$9`ZbVS! -z*``hD^!f(TCtOfk+hatHxMnN20p=~-{$m%RBXk%?)zFR4pz%NlqHt5YL42j#BYKps{$G}n)JAatrOB(MvkErX5}(j)zA~=vd)v) -zWKJlgDdHdoZKlcuv!%IVh9Jj#?8SnBg1ZPf_M+E99ina~DYnXNL$N}W+Jt#w7|4d< -zo3dsYG$c&tmbbGoisMh!5HtC>q_%v1ZVb_Q -zkIVAP%cGC#)7>uk5YKE<4WWr;x3 -zxW54UIpQJbJCrM)aQ5)AJbdIl7*jt_ox0kd>o?7~JPeGl?E2w*3>dSKU_YUt7_XPiU|I -zmQ=&5C<)S)8>W6$xJjD0(@l`m17VFD9|Ny5=c^BiAO|!GtD@ilj)+Tu(6@yI1H(s1 -zC6;X+1FQs_m6`a-2VsehkntGEh$+?iICCHDmMOvflyqPMo@weP4TEEZ)k5wli{|ra -zL`Typ?$z6}Zm5cC!H}Kaie5bb0^J4PGomcZx=D6;K$bIg_2aeY)_8(p;L$j5t -z9Gl4hUq~yBn*^9D9bxnv_v8ePesz$NgcL@kG0RJd|L$*$%cKL+Y`Ta#F~ts{;rgIq -zKG+DqfPS}VTcb;k!VpIpjLp3MK6%xF!UOxY=uJBtF9V@^n$}B*Qz4ET9aB%Th($mw -zv&GPduc6tYCE7%lMcwdyP4g|)J4gXeJMeUvuP|-ffr~l|6w*Op@CXsUqh=C9Xv5el -zKOl>UPp6KSxc`a?Gq>{QBDvT7(B=5Ip6k~$5PlUSizbr| -z29(ucgEa!ji4gZJv0wqaEalZ>R?Xv{CN}cMEOp8NuuFXgLWqAD#YMD+{+rW5u -z;DVnJyS*x=e0o5e*{0bRT`|cd=tBi$4zbfFxWg0qoM0=OX{oAd9&fXBvT4#<6q-F{ -zkLI8u$(^GurlLv=C`DlbsTSw22DGLSX<7f(6b&S11HQPWQX_ef)z{&Q1JBYWbq>=- -zO~gW66p4uL-}R8dMB-xtADF@?hBuN>SS&Z7B=mYkveZW%xbI}@n1--IEGS{&7{Uin -zf$5Y2=+i>%><6929x#ARq$@;D7s*!31i#Fk^93tq8uVM4kU_s{T%7x;=I>KZjg -zEex4x*}g7@imd>#r?ze%;O2IMbb_%zC4%XH09S6ds<>H0A{}CPtUY`jM*I|CAqRwX -zTlZ}WN|INVCEx8SilYJqu{TrPENjwA!_39+e# -zf+oP&mShkq6c9?HB*J}bwoMBWk%KZZV_XE{;xFaw)8YJ7sFT4tH}yS2HsO9MXAPg< -zOF@{GjIXUa&q%<--7pAy9k@I@nSe)O)gqXlYraXko2f!xhoj);@oGC#qWLETQ@q8m -zcorcW?N*q!50)qbX@bxT^1z-8Msf#q1eD?UcuK0JNUExX@MI~!p?m3Xp;MxMpNs24 -zVi8DqpI`|oTJ7dZ>$-$$Mj=f)wN{UgLAFAmAF8JApPHv287vTZktcaT?``PC-m@l; -zKoTfR#A^a|G+i>jOj`&SB7YL(Kn~deU1)c-`L25nk`Yj!g}^$9!YrAYO!h)a`(2e* -zE-{tgd^e63Q7QFaUc_6NE^ZHIaWsh-5P;N=XnZVbip=kL2QvAZXF_NwEj*MVcKI53 -zo@Ao$l3ph_DsSXp{( -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 -zx?;j!9mGs)U`=iKxr)let -zTF{N-jLLt&8#y?&Mfs032jcWcQY~sDkB#v4x*`8DDHo2invh)ng92p?e218_YC>E3 -zezGa{AC>0(QR(}Pj(=3f;fd)4WZp~ew(sep|5jal-JZ9)91s4etix(VhE@oHo>WBP -z{+sweL)BGX)}c&2s;nKI9X*^F_+sKRg2T@c_MaB?SIA_I%PTI~ubo~o#Um$Rpf~bw -zg6>z`^%V+k+PjU~{S}H@2iQOUnSLMP{C~1TC;QpHP}QQ1mIDyUOO~@_zL=nuXW>`F2aDi`Q9lroWS`PEuYiZU@&d{^)Mmu}q*G7&*3Z -zmf0eieT2XnxM2wzniNSDr^O`j=aaOYLZ>!GT+q!tUqn&?3&+v>hB8n_R@apEo^A9% -z0C0We|F}`0syaw|h!<<=z^wJ%p(gV~BBL8sT}&`QS0npl-KdW>gbTFmV+(=aEf>X% -zj3d#S{Z;dK+x$(NzqI+ACGCawfR-5kk2@LJD)m{ymLEx;Evrsp4b=d11VT2XwO$}j48c}~ckYA!!ESC&oF;!U1Z_ul6IvC}i*zI5rR -z9nw)XX^mV++Mw|rKW)8hI0r?f$|(m`b1h!pI)$Ruf0E{#U7d*6;&mFZp?w`7s?c2i -z+k$QV?Pi-$UJX(3{6>{-vNiH@PF|fPmBOVXN^!<39K;|>st$8v` -zVRd38>e@@!XzD?q>N=E;(=!AjI07;(IvW(sXW5P+fyM`%5%hpGmNppGQ_&#gNA5CO -zWE}6Q#R!m(_eu^x!T77R8QCyf39`47#wEh>UPjyC^m!BZ?bv&Ho?a<&`SudT{>Gkp -z3MoBBTl%LX9j;YDpDg{e`wU^*uhi9cJQ$Mjw61@p_NsSvwS0de@!Nx)LA%NO>v;L5 -z*roSkS8#pG;F_1*m7dy@DU`u8((BWwB|RO@uD0{-^&`TR`||j)tBxNhm4B)y;oxoa -z{&=@}Ta4!KgZugT^i3PjCffLMsK3vq(fH+D9V^4__362S_m2nh^i4Te-nLJho6|e> -z{q#P%p1tYUr_YPGmy76TFqYp32iC2haBZ#~e^rp4FqRVzAJ6XH+wr-3-{4-j4+tm; -zvS97Lf?M>hfWMm}hZq^$IcS+3x5xYzH -zpc?uU8=AbtpTkd>{_hXzzRJbrin0Xc8rcs~>2Nhog!MYQh3%$uzeNWVbA3 -zH-o=1m0gwtLAN?Ox?E{W2Lu~fLTGIR%7_*>cbP#Y4>3CIPiESG$@yK?V6IrQjw!xn -zc-zBI4PuOeh#Q8ipygI>KWZGzrhn!5-d?`V)AdHLJ>J78+<$}C`CTQtjhic~Wtqe@ -z{$0-R7Lu*#BPh7ZHfA2<;s^-s6B^@WwCyzkW(HE@8e~K`G8JoWx2k*X_HLVUU4#d9 -z5z<67(CiKseRpV>?cqUPP*>VRT|R6<=6>{Z^a2MOxc!LGTfX0R84f`nuN{KZe9>H^ -z0b0I^!B3l)f+Kt_mcyzpksdd75l#SPs37&xiL!oiIIpw5e7?iLc5%X^>pXu>EqK*- -zZvlf?TrLz9AOj(1g=>?g%T3P|# -zSCiuwr-)XRvD%S;U%ZGwWTBs$OuYic8r(xUEG@b7W>hSWOH&WG4S5-mCl~F5+`?XN -zT+kq62CD~iF~`-q?KxJ1&*p9!x?`mkwpkT!EfvG{8kyIgR;K%Pi)ccuJ5jhi$f3q% -zEDp=sV{c~`sn3yHv-ZvQmyg

g>z@vPbyD5+O9w;}3aEGnGKo%+OK;!wXE=I;5E< -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 -zUi^>J>&^S3Pb&@0p2_+?dUN -z7Ig~4@H^Tr(+ZJ6RspG`NOwACCn1uU3Nw(HCm*F08IdL)DQBF4OCr)QgXbG7X2BiV>48}FM -zVI?OBDaV-5lz=Gf!jO|iT^22gH+V-Et}0Gk0G(mdAMJ~0cX*KjdOm@LRW4;Bm%$Se -zcOA5reT0di+aP2>eQ>r6uLZ`DsNes+10&(z|NJ8;PDz}GjDxZ(?Q}F486y$$ghYH$ -zoQn7`qOG?fQNI7XjwV5Ul%K03K|o@7nf`>iEZ3KKkH23iZl<>^Y((6F=h)%s-kV^S -zDO@&2B*XmZp!S_RdA?f&CK`*c$ebV%5fPPi{ep=q3z`VaJCs?)By6dbrwEOq9mLOh -zPrs8!ryG$j3tfUu$&M&&K#R>Y60!YrJ=PG1-M$wMoiHGBIxS#787 -z?yIqx%BHY97_DJ_Jh6Av$3ADw#*1EHuZDqooNyg}KDE8Q1Mm~U3bh;IoI-;Wpl&9XmRoh)uzTQrH(Ym>)m({GrY -z_}Sj{q-kr_vQPcld~ClhHY$P^Pzw|S^{&#iS+#pdF6fRs^|0ID)wS_!b1zH{W$iv= -z)(5PD5%ehxKcvVFc^OSnXyjGF%g`iwfFcMU9t{@cJUiBlP0Z2?_0Y(J4msBdKo`31 -z)2>Cg>@{8?7obadHUQ?NAjSd~=O}^t7GVM#d4us1HkpKt27fM1mb>LCePG^dcyOE1 -zz&&hS`g?x+FarG_L+Bh=6L`yEIEix@(UN7x)GPxAk>m<0NXHVQ7|I3eYMw9C==!z+ -z^P9Z&bU(5v_!5SYB39ag3HFS@V2vXmU;~AuyVr!{UwGl)u)lfB(1U)cT`{!pQX94z -z%0oHB+SQ7glvf6<3un0wcdR?!@s!f~AgmqFQ*4@Yu2tR{8vix4CjUrUG%vl&isnVb -zlq{KNEZO84QR6s96-@z@6;rhpMO1D6n(O^3`mLMjts#qsP7p$KyNDy8nGcE9CEIq0 -z;MkHR8nPl-qQ&ucX=_waI!Hp@Nw305d<+g!UJXT6Qc%gQ^Pb%9hk|JGgS1mc)j*d3 -zee1Virbs!Z-54tfrXYlO`hiF}!_!cnq-Vm$GYz!4sGNB^F|M*Lgbsp%7kepu_*wS+ -zaQ(-^-xfDJ&Du@6sUj$dt0;=O+({%(hPDNHkV>GkL=mI3tL7_HA-ktqMi8HKcyO7)1R$h#;6NfplnN9G;S>>iEQ8d7%#M2( -zr1rVl97+oaV>soGR^<~4Qyx?g^l^Rv0Z}P-qO)P0>b=%EGmnCtWSrt01MW5w_xBy@*?*W{ -z%%!Kqs~U%BlRU+u&xu!I00|05=-1nMqt$=?|9g^F7ui>lxz*VguktI}*7FB%ZwojL -zhOYnv9;-OUhQrin1<6kC?eq7%8SHn8tO+$M$tqDLi5EEJ&A2$EKh@t|L=$n!*$%B& -zbeq9^*lgu6HccDAsT5;jJ@*`NcY~N9@SIvo^B9gakLmb;osLd%t`xyV&|l5C;+o}) -zhno{+k(0_qg-U`gK`nXN&D}Xw!ub8-!O0tF(arIt4oq1DT^q){3UUX>nIM{&jD$Qz -ziYXWpX9zA#m?BOqie%XsU?&qwylA -ztS33w$@e^GNWC$P{R8nFxpU-Skw3+2h@YhjssME-sN7xt6bxew!Ux?KQ~^!=hx4b% -zC4VZtCQwlh5?I`?G$J6aTxdj4Vazv)z+E?$e?fi~CIUgXoj#_g}N7JG%!)h6e*%5m{~FXf2Vuf6zx|OAq!__It5&JOT|fgdV&FRKt1{zwMi4V -zu9PI#z|JC`6Sw#a{ECzZ_q#sEPhnN89P|{IJVYxg9)y`#P_a25$uq)X;W)?K=yTzN -z;k&pLRc)P6Rt|EP6h+gx?ms)v(aOJ@CKX$hwH68k!_uSlke>htV0u9I-SheRR)kqu -zPPi+i_`A#-SCS+}F*s3l;ICobXWnS -znyTJp-oT#5Yqyy;=5a -z!!(9W-k6mGjgM_uaDe)D;nuY=F~|*?49gHp6|@%S+?*-3#A5ypjttDdQB@GM -z6<$_&MHPNC`{o8KNRSU8cw!z--ph-EALipIFuiC9=v}@x{=0M>1ZywSagYQ=Rt2c< -zb3P7K_zm48&f=J65Xec{+2*vJb`XEJRt`+>v;*ew-`AOwpl=)l!OpY)B~Y^nAA&go -zasLj2qTn`jVWIfB0|34lgL0ER!RIF^r)e6)#F^V8Pq$$|dEUgGt0CFOnScBw*nW+9 -zkl#ZKbHYGe5H*n*j&B8W%o73m@~2rN9abj8ka_!C^Y!7WtXJ#$Xbvl>e$RUsIyqfR -z5t2cjH+e-XCPpbk4aus>h$gQxhNSR}#+yWS1i|J_4w22iUseuXU&q(h+ua4q<|%}_ -z#L>{Kd+J1sAQzjnT;}J}%Vv%_EWp&*QK5cLMpd>?PwbA^ezVQaFk&ZT8wq?xnTP_1 -z=nXe*;e#^cdVY|DzJ0S(?{RL9X6w5Zy|utili -zekn?#HVQJC4BDdrngZouLpieG1p8c^M88CsC(ck4mUo*jxHI4=lWwh5#;iOaz4%*~ -zDJZrXW*dOW88TUfAqAKd%D~XZ^ug1Xfq`KpCejmyj4Gje%jfWtKN3wr5ay&?Qntb> -z`}ayKf3M#WTgi{aR!NgJp)6^j`N+_Aw^FOBK=Dtc*0^lNhjJFNF-?ZzS=hU^G$mz_ -zxo7}p-mPdxT5hUCy7CIg*`~(J7SFi~CqavfmdOiHA%-d%95E!f6q(i7n-(-1Fjs{o1IqzXs|AMxs;~+TSSUObBcO$IVJV6; -zkVlHIH$md4fSxC6Ajx4yKEg#`V=ZkvF_uVql-lwy_?WP9tc3l*AA2S7P?cCmV6^z -zR@|hNBS_y6{rx()U&1w*gDEghx4xqjRXoVrP2j#rK)jIehAa+^7z4#9&>@D)P*)+_ -zxt23%kaC$GHF=cxk?US#|Gm|1bZW85cq4?!b~QaiCBtJajwIhX)0Aajq>>1dc7@_frz&@(u<#Rhvq<>uAXwK!zam%J@c|}9+ -z_pW2)%(d8oSwR(bo?^lk;5ASdbF6$~HJBhc`J@H!fQ7wF@Gny&0N@}>*$n2FgymV8 -zl~{pQ;8$Z~i%DaU3>}8E6qn;|Qx#cnWggo?QKz~3;2-++U1 -z!aFm#-WP}A)6stw7MELsth@anDW&#znoXu~3K{@P&{Z*^lPD4fnM=@};Z0SA^24B* -zdc(DK<7luYhQ2GEnOK6%z4(tMlvS4w6CQ5Et2vzs++2`v-1y6F**=C@vMF@^0}CI` -zA`BP~jbpf}z`mGdqM3>A5(88|3j9B*Fg%J?mdEI$4*``c^g^9$5P2cBYe8O#Q20_E -zj{D8w8I${mp*C9|V@NOj(Fh!!ZLiB#a_fkRk?#u>jtczKbAODU%O<5fyQV@NX6E*W -zx4LZm2e^futqSWgOiBzPs>Y^_AQSQX#j^$1Vv;=#^uZ&gHPNFn&b0C2N3ph$>j`jC9Xdp^?RLDL|j!B4QNY**E$&5mq`oj$? -zgE=BJl4Frxk8zy+XT3TZKcL*ooM+H#eawK&%~1X!4VeHKkV7}l5jws}U{yCQOSMFY -z7^-Ef7ShLAitX5r$jGwI379A=Dhi^-5{WSl**uST#Etx=gA8dN%Tw&;<##`z86h%Cy*F`KyQ~~+ -zHa^ULJK+}onddQ*TmcQ}5Mv_hyFAES6`_!Fi>&%}lzsP$fRjB{QHl(bpM;bccHrdh -zf^-+b+GH>Vk{pUrqj!XBizM9kl!;JIp@3X>qrr<6jPc#WwkyzA$~2z?k`FE#FudO@7zQQAe&(GB%N -z;6O!z&~GMaWJF^}p;6}66(>2Hp((TprM9P5SNz<(j6sC{sP0)@7c(N;M -zyui7JY+GXadQ~nCaQ{)qk`|Wy1s+rlPE6fpK*N4~@JwsxPO5sScMV&czaEq7@TfEV -z#MGaolevtY-Z2p#eO>XB#ethze*K))kveZTz>}XvZzeE#XBfGuvX8B2zaG9dw;ITA -zq!-L4zFVzX+Fi`%Z`<-z;*0aA(Ls=ZXv_Oy9L9C;#ukC*O=^FJ{kTqz(+(7YKSaI$fZbYopdi)qlYASa&>13g90LmI{rdiMCtPeH -zZ>O{WelWaB^|AWAhMTUp*?Q4dhGraPoZpoR|MXxVU#Ch>d`n)!ncHT1%BZFZ@~oZI -zR^6?#8a%zc>aWRby}mfSKF&ws>S4<{QGL|st7#}r+w%H{le&?`~{Fi5Mq$Y`V -zn#&^p{PMILaSv5XVRolgs}?>jpR7UuZ5qAAJ$*8N>)G+Tkd?$%C+O?M4Kl(T!O9mB_D -zzTfxio$yV3@eWVHV$+FFJJ%nQ+2N_9Gj`K@tM1;Om&qGxOixGCtBJjSq_!W8u{=7> -zhVDzhD-YU@MPS-SZ#%am*;qV9B~Z{S^(9wL9=oGcTWUmO#tEPNRe_!9eIyN|t

N|R#4fe2G07tBp^cPed2G5J=n(Nvz&<( -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 -z%WNH`dkW%~7tHLUozJ@z7bS@a(R -zZdQFN>!XqQ&UW;t)DcQ@g02az$lgLVE&E<&0pDu-kTqlkuc3s?h$$>{m$U&nZ=kOi$U`= -zr!WCCd1_oDA2FSuA>aQUs{P;pDTx7B#7%O@EptVXElfoR+hg+yTCjO&9M@LhC3u;4 -zEK@?ej4DDs5!aADfC-l`BLL|W;Im-LW71Uwi(e3DM>^H~lPZ1Q@5`?5T`-8_fR!~1 -z6h7k;XZg^$ccK0n%hBPJxZXqJxFAb~hVC44D09p%0L4KOco?>@ik9FQ&H+3oY$kSP -z{%*w<%0&!Vbf-aFmjG-X)=c9vkL=+#XBeU*x;D({BB%r)W^;z-n5sj{%hP>2*s=@? -zkY(6;4~PBlRKK^q6oWyEh^#1%F~7M2uj&{I9Prd^xk~+LmB7;NM_EM`6i(9U_Dhsv -z_K2~p@B+~^w5=M;ypZ}P^G&Qt_~K2fs^ZF*JY#2Xmx&*3q~+Npa1kibA!eBs%nDIe -z#Fmy6Q6uDc=M5y%xY);Uf>U-?HL=v#Tl&KA#q&l+G~<%pp#7RX`1Rds!E8^@y_fwq -z^f%((8!ku3EMq3e)zMyZwdq@U%GUeF12<}}qk4DXlSl3)8b8dt)lJ$TlT;hnt!Xx> -z@21RX#XKG~BRwTaXVhpmv@jVRR>^UnE!M5)CP|vR?QH-(K*GPsNc1p$P5EBcXbE;| -z>{Q?C8&#Wm6q@VPy6f{^8JinM~Tivbgb%c>27PT)`N6qapVl-}D-k2$eKf|Dv-8BPJYF5fT>>{X_L*bBxENidxV -zZg9<0<0K-;G(Q@|w^9;ApOs5qirK#b{p-UNU5ZkN=0n3gMpJ()n6iec?Vtgd(%UbL -z=||g+Spj(#|Hq+TAZQFPFCrWKEC~d8ZT-wI?j@dG+G&<9gY -z=H7v@>!U@>qTgV_(xUJOjb`c<%JS`k`wzpmQ;i7bceKr@0i|6~%e+Kav-6Qkb25Y$z1_WAKn)aEvu!cGd{9J;jROm5U|t6XsjJ&SdfcA -zFrio~$GZ$jeHN_0qRkkNYcP^1+mh`N$+2WA{9J8vzc1K1M<>dRPoz477uB*;IJt6` -zqZKTqrekE~Gso)rD84J_q9%&J_H>VBVs`n00nSL -z1mmxN{p;|H(EO{n^K>YJ|I43 -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 -zn@#38t$5Qp-+q5aej%8*&7tD -z0wgjt^S)L1QnDEL7AI$3y -zzgow{^FgorhmC{3oh*$fWnmd%0ylYdg~(w@BTbUVTqfvq?+{mlvb9ZMi7Uh)473Ph -z{Pzh%+OHtVp*JeLt*S7{9g`6)ObP^}}9XmwgRS6L!VXl%fOzNNKP`RN{F_IfA1w+J(tA|LO -za`o@X{{q$&RFy>N_3*PqyAr%aj0lyj9D5BJA9$5JD170gDJ-rqM!W*D0%{$}0HFkS -zFn}^$9Wx~Ll_|8L(4cq9VGiZkE--6@%tk%x|Ojl+P%V`5wy4eT1wO8t1S4kt^ongF#o8c=5r|J%Ny`4+cvRE<5+Z -z$mj$9l@BI&!BB<~STx~wngqRzI$+5EKAp(<%kP{oyqr5%qI#_RcMIcVPo(eSoWf#MRT%v`Ui9r -zCby}h0Wos3J%$h3jth#Cjm&YF6qsx+)EnW9F(^=*>Jml2=__-lK5U`Man?f|F_2mi -z*ZgxT21Qk&$|w~>5f%A&8YOwd&EVPT-w`D93(w!&5TQz?#_f5ioBh2~;F;lpo#Ahx -zgu6Wn5jX!{xxOd%ap8J=a-LuvbdQcr_ND(+94Jwv3MmqnHc^ -zi*PQb+=e>|uBV=s?`1lg5_dsj4nU9;L0B;2m`3Q}(_JTn`ni?v -z(5S(1qzu2y!a(YUu&}1A=n9%kY@2Z`LtsF$5Ez5Fgs~8E-Xt#U@VRb)kAfHFFBB`s -zqQwm?EYpSGnyY^hVFp -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 -z_qxj)0M -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 -zbu@t4ZEYT-m -zC?m#GV>q0k@F2t+X@qBJYKcCBhEfPbBBVrJ=}6c6g?A5uUusZ0Hv*9dF)^Dq(?bRA2#0#`#@s>u$QqhBpj2fS_c;O#!C;BP?;kJ$;cW7r -z5DwD{@$9&wQ!I8fEhm<#Yey~Q?i$T^3>X5D>m!{{!Sa)MQ3msA9`!`Za+w#!D^@JR -zJ5w@b2C4GGC6hxzZPN{AVqo+<4KLOd5CE!0huoXFx}pC52T($mPIO10MESU!iXfG?cIA?fR(cC7|M7*db<8hH -zeXT}cgjV-I)|-v<#3`Af|Ft{p{hOR=FiY3_UxeoIFBnJgYVIb2qW`tO8o9OQ>XZk1 -zei3S9`1*yH{6TN3VV0l#KQD4O{7d>5xY7~!Gj0pgVy!BHFz#&s?FrUA9`<1kcp58k -z-4~I2+xMc5fQ3SBxqMsIgo*ecaPPk+lSn0SwTNlJr=+8jsZ{Pi|7CV~{c8`ol7+^< -zJ@Lq%{1^l;jzBijD_qz9A~oR$-Z+c53j-eShL+`ov+m% -zt>*d^)HYfDMN`^vMSDLCf@badUue{3f>d`}2JFNK?zsg|tc@i><1=ITXi1NC`*doh -zN_f6vXbp}-_^rq5=gV!zPc7xatt*eA^2{~on|iIrbs~2NP4ZGd)RalhTxamFR_E*| -zZ9H7PsgIJ>*5s#%b2`KEsph>o+fjZqMB-3NZ|G`Uo)B&WbB|XcdeHZk(i=iWykQ8@ -zn@hb#Zw?I@d&?Qn-j?}ZP+?^FG4MRZm3Tw=j<+?sS|ZF==P=uXr>(;i9uA=n=6H&c-V!1>q;qtRrnGB$8(a* -zVI)XJQg~4#ux_F1hVf=bQqcsLw+xQS9d&OQSw-QGw(lvB5WDu9T1!b{_3G0_-%a&n?mSYvq=vRyzFcAyAQq~zN -z1Z0a!qllHs&-SCNW8)h#pfF?7MqXZ}^2a&x2$TZMNy!iOdQ-hueT8d^d%E$*yD*X^ -z^EM)*nM8C;Zidg+AaH4YtJSmw`Ma0-*sO*v%=i34db(21#WVm}T_uwo=OCN(t$UB#j3-Cp0RU*)FRBJOmM5xvPnQHajd+U6dJy`TF~rG=|*K -zm-yD4ss{}#NDw1vk|2uL2v<>(6ipl<8XW6&}yM7)M`M(_kyIoO%m^z_wsTELJ=7rOeVxywqbb-5;+i&S#tr)S<_Sgn+6mt9ktD{BeW< -ztj3qR^hImod9dr{dr&pLgK=pbjaD^{aAOn!t~D9n$tjM)YkaATUuwjM9eA7b4*f}B -z;l^i` -zE!xXkwd7DtN^CmJ_bTs5ms`Xh0_+dob8wsDlIjv{;Y -zq~7S-rf3`L+zF<$>N#vz6J!mPZsg7Tw2R&c>lWOU&h}SKl^UtVtC!d5eEP#2l0OHq -z_)o6owR-==wE~{C4;hFuOT3hn!M1E_P^`#}3 -zc8C>01nVY|*Uo~nwerw@$qJ&Z!Rl`k(^Omw1SwZmc?~m7ZDOg0Y`darhzcpNra`>` -z70yQ!2qPJsSwz`WPS#>lcW7l>ZCCex9Nyipy;v91*UhLkD_{ -zO*g22l@{Wfg)x@-UOSJLrBl%JOS#Xm&oqs|tdws5jwB|11aJEp{$N1Y!GG -zXW~At&FnF{_Sv6e`?4OUp9i__ADRXW;s{GexEaBe!LFh$O^se**5e-j+y|d9dGrt( -zge`cRd{zkJ{NM-y4biryp7E`hbeU+5n$5?MAHOZC`)agU91XSa_f4sJKFy-oDE|^r -zY$M%l&25-%^XO-qII0oQ5)_zZqip3Q42X6SlS2JF;f=i**4i=#AG-!7>o0GIoQTi` -zN={t8sc@3*5?MhGRuDKSU!%-P(DJIF!W2R{31zf=Jgh3Y=e~>`GY{1%`9)OysG=Hz -z$&0qBi5wAZ=v%UCScW6Xpt}%GC8h1QVro#txuOlr81!4B@G|Vew5Yk7Xrmpi>4k{* -z;)EC3wL>2U8;>B|M(GE5^bhZZ90WO*9}RO~dLf7uMMx1Mei`ZN3ooyHivFcHng|aT -z!A`LiW?s0(6Z6OL5^XE -z&xsCZe8H%9ELRnI#VLg`YTUnZVu7txAT8zcZd|$lwo(>Rt=>lA*D8`SGJHbhpJPoc -z^plWu6qW!1$(u_%yO3yTN3hDJU0Nxvtcr+pW-gDVX_4Vk{33BK{({I{AXEA0jpT|| -zRcxHkG0q#7TTx*8v}9MdMZpExikKp?OwrU}#pI#C;%s=j&Lh^|K@1%)ecPThm$t|a -zgyP0J{Z1;HDk!{qZ_TB-uOP2d&I2^v(cqVlxltS`!|nYPT5uU%X#?&tvEx;gMa#s9 -zS4Z~37{h`TaS(~XzQCLjVbpEUNI;=-biFuox5UzvZk#BP8ah2kHjY~TeUH3y;fvg1 -zw)F(`C~3HDJ9=PMSR!*2`G#Y6q-;0RQ|~n3o*Ny-Sf_{nX(RSe>7lo-?w?OhzSpQK -zz4c(02s3NuCu2@^sm0_cZ5^O<|PM{b$Qoq|qvWcS@*1mrz!0XoY^_%ga -z@=Y$wn@uvM{=D;-Z+DI)&xHC659y7A{a@o(w?rsQU&c++Kh4EY@uks?{V7S_)fvpJ -z5ChDkWB0^@T%@tiYN;<#J3+Jl`v&$s+b`!BP;}t3xww+2ihsbfE!gexyP^=T2|&$5 -z7kR;q!D3HNnMRYLLx3r`1*nTolQ>wlMS-Kq&SxaIHRW?G@3I^i`rRZ$)zNZF$`+`} -z$ZCi|S^~$ZysGawqTlncoOy&U?Td~!C)6h+)-`kJ*E^0O{}dX#cS-3ufGMsptp_I0 -z{s*;;XEf8Y48d~XBP`B9(xWT=U;g#vr+{JbX&wVdkM|@LzpL`{q$fN#dW&@rG?8H) -zqz{4AdSNgXcY`PFpkF!SY&x&wwX`|!Kkn*pkGS#p-!AR5(A>B&8lCq$b4^QoQ||nHVdA%@FWU6{ey^{~?Qy+coZmlu -zNXPEDGd^FxYst&j(L9{@tJ7o{X7VfD*J)Tub<(NRIEs{g038L>w9)=9kB;n -zRh%WJ1xAWKo(yZxFvdrZ3;gVBnu2Xj0M{PNLD^3dnXy^Os%kPLW`Lj-dI!kq>AeWGjnTCx5+h -z$$QXB@686i(_XQb!tt6c5c=M>_i6n^ -zUMBmh9A-~#)ixWgXQjLEKIviqrM}IMqrEG?42ScbH=oU(=0SC{%S^8Sl-1SxNI%H0 -z!*FFyxgH-b8jZ)j|FD^*W-ID2L2QqdK{nxD-`}6i^0p(cbhNTYBJ=L2^qaTi-iz7n{3`&oTj7pgER{{BBRVGNQxYvvdyF{ -zh-Yv{UI^llP)1YJojEL@5t6NmL6LD1VIX3WnjE9#{C!suVfro6STIoEN(e8n5}uPq -zA`7yHEETH6V+L&OVN$Hj{f@|n=DS;I?Hw4!b)L#mXeu<#4(8tyBCpzi)&M0EkX -z@;L1dhtEQ%q;Jr6&8wPXa1LRJD~gQh5|z;e8Fo!juPvF^c+-MYtyrhf3N$lxn>l%r -zUCHI6_4Vkw+P}wuZhrpeqe+3QH%_sn(qwD=^XFF4B-jVZ}VsJv%TeyaFrM -z^-@Z;ncI6WcXOq{kuB>r1-6CP<-vA@{Ahl -z{qX{Ww;l!1wC@jI&?nBN?>_jp`1;|urFRt&8~Qf!^Za7x)2c=}fS!lMo%&7e(#Ix& -zlPE-Lj%xVyg;zS4Q!Yq0_~8f)N1<-C!ip7nsh1R1b!+Pv{%Q(nW9KKrCxTW7>Q1>_ -z&L364Az>WmO{Zb5Ax!ivD+@Cnq3CF!L4qy&OaM93j4u!8h@h7<0*1ji?(r8*cWzFhDXpkSZPQ8)df~i#&^cZ8n&y6e)g8qa -zjpM=`kW;n>Fkd7fEubF+j}=wnqo708=Azt4{qk7|D2k}e;3R2zX_P7Lc2Qo0ZKh?z -z%#1WUzAr|^HQS5d-vwTV+Wp_3zDdvsd4Dbyd=UN3bAEED9EBh~9#z<6UxQw$O5ZIg#Pn2-G52vcNgK#Tx>sDxzy4 -z09`<$zpS~XXs~X9Mr*)R&Wjyv<}hin6l*dD56KD=1@fxGsS5fxKm)tn`;wkr@$Xi= -z;&5ObDxyjwkU0M4GB3<+TDheJ4(BX<*tkW=)wNCw2;gF<-P{|#`}2FJyTXu;H%_*9 -zQ$pTHD)+@S#uOI#YYClm;s{w(uHOo8jFkyp^sXylZhh)Q2i@MhHpmn@^>_2KeAE8< -z2UipsdIfiTHh%tx;-WHWxkT=3y^>;BmVp3Qmqcyd$Xwcmc6XZr-3&}4EJ}0qHQc$a -zHblXJH4pCjzIu$)kru(F@0JWYx#YEl`MPwOzl@v{h;5kQFVGCEysa=9pWwed(~IOF -z(>Y>Sj^CAMdTGUBDL+8y0YVRu`~aZ`czOW;(lbeZwRoHhDC_}J|P>|}rD_UWIwy(WFQ`#VJjk=H3^OimPluk^`9x49$8Y+v+-^VimS`3kaR -zd7zbDViG7Fb?&_3F#nK9tSS=L*umuq5qS=C5LB7{kD%gs_Pp)<QqUOul`?nbfqyA7uMBw0`UY7GgobyFE5xqMU -zp)cn(Hhe}=9Nw^bQROY0$EY6HGAvg>4ksdUh+`Tr3$)l3bixal2Tj#0{7XN{PZ3y7 -zpuY^KGQ7$duA66ofz-)h60dhM68oR=H=tAu0xqoeW%zFVlV`@cRDXBP1Hw;w;^sau -zEJm)g;LI)MndvthHCROa%74j=c^;T@at`9cnBsM=qU| -zl_UYCPu4QxbPF#N&n)(mNev7L$)SN&1@qlHyk= -zewE@^EPmzUS1o>d`pYZitE6e1sH)#fZiI-Isa~9bNWWhRC%``u{z>pp`$`CG6AjJH -zAOa#?4hjMs6jbiaElEVl9buWuqQd-JRH=>lwmDbadk+_U2MPrX^N}cC-SMti -zHZ9Z3&N;wK))0t>Ts<)P>i48BSy*0q)Kuyl$VrfeEP*MBQ)HIb^4-bHZP`A8+`1`} -z#|{W%#BNhMTH(kB?I~iCiDo9c%Tk)gA7LE-X^1236Nsai>Tuj|4$mwqmlwu?swidW -zkn4*^k#VXxdv5SVW~&nZpcB3?rbKe4sP%CCuuiyf>mG5wV0~ -zU4FD=_?ceprWLe-s8lj5#mJv{K}!2kns;rT=6|bFwN`Bn>y13k`=IFge_HXgJ?YOo -zeW$y+E(neaB|F{M6`g^DTb&UETV!;yb2aVg282;ukZwRoQx%W`c>Q&o=(?m~nzx|$ -znm>Sm_ldKQlY_1Fq8?kcb2k^?xJ*AiOqGY -z`!oWBlm)rWl@5h%r<_r)T$Avc$uW{?@{DM@GJ_cdAPKl8uR25$92qL^1_kgONtwj( -zgeXcXT$v-dmq&*oY^NWgH!CN);mVRKijt}lg(#8)THVbWQU=kMLFz!9GKx?e#j!XW -z+L!`yrw+!P^2{bN*09Rpd~+MV5Ft|f(n|v;b0WM);bBhTQdmb1*jwQ+#j;Nk6<$xa -zx?u<|r|%FJH}s%dK>0~Gpms#3m1i693Lf$%`r*-|i~*5Bves`ro^1q2v=nfhPKTToT6{&nJ$f-qpCBM8`@6eJP -zh@ouD;I{q}ry^$ev9)GhVb?Gwi@*4Z#&FjeKlN0kdXC)brcXxL>1;f8zg4M -zmN<>Y1TTrW4$q1*V>(0tu}@JLPBcKrU=^2^IW`=_q;n@NB&tb(9> -zL*_ds5`v`ATtBU>@yZvz#-TSCVKgxu8~)~g_SoJR;F<)aZ&@WO%&Ca+S%K+Gg`p(k -zv7}OpcevEV`wEX>sG$7j3BfmbI34kMY+;xlY)=lwS!jPL&V2XUrK6ABuCT)LrK5S> -z%reYr*GgW>WZT3)igo;m&4l#+$ZohJof?MM%LZ~ -z+z?UvF~H3SIGZ2g1r{fVk@f{rP#IT -zUladsDlm(|kAwFEy@Lo9G|1%JYUSK4xLm-AXMB(wq -zTZ^B%cH7SuqmJBfR8LR!u5X3io#l08=h&q|cb#=~>@|j(J31(xpuaL-Yb#@BZ(n(T -z1IL8taZ~D_I%y|_YlYg*4Ez48FpSOF1fDtId*0q#ympVK(D9x_d@pT-&+EMs?djpO -z_q4=*!#e%=J?G*-@}BUHq_^Ju;5{wA|Bt=r;rR#e`P>-%=sgeaE3r#Ccv{o$PB_w< -zHm5JoUSqJMKxr=sw8c@ducywEdqfbkc8!8^A&}SeW7S7sGY!GFltHQ?Fqo2qlHFcE -zPbq*|ir{DzgzS7@VYoi-3y?AdReM74wEa`Pdg}CVk3S7Pt=*#cM)0xut^gVn5C9C$ -zdqv>0XSnXrgZH85U>Q9JLBjBz_2J4BAA5G)E#8$uP_eXLee7lL%P6SZ{sIU`0n8># -zuKPMjv;14(o1Z$>=)`qD0cPvIAOKpecs7E@4R%pvkxRaHUzj(O#N -zTsK8cQbEks2uv(lC5`VnmjzzQv&Iwz*Aqlhpou<2=0!v(lX#qro+u*I7oPh8UGgRC -zVpJeAQOBx>URWA|Ul2uaVA8)*zMb#caJGongn5`BvNZnh*{MPDFDRySrMY02wlNM0 -zG_HF#p?5GZfn%iGgt}!}|GQ(Nud4dAQtHM~Y1HeH&DYb{t?@btx06-9ez0Rj*lI0a2)lu^;%>GFV?On%-rpR=U9_vQ(YwsqrFaqpdFgA!cE`gePG;N+ZDzPjc88ID` -zmt~1lO;gaIP*RAc2#Q2_1x`>1aU9K2WbN8VB7_mhc11E|9#em3n+v_A<1_XL{39b- -ze_ww#81@1Tl_;XFavTqbz{lQiAw@Czmy)P#zz|=9RA;S<1gslP_rQw?e1DG9%mZPv -z{Z$h-QHro_8)I=Clapo5V4#nHxNd7AV;ZuDrQK6V4@!gq;62m1V$8Gi4lqA -zFscTsw=HTQzd;o`8nx$3f`XzoBfB7&iwbBXnqg`ngo8lHYrH5BtrSLi#AV^u6%mL} -zEE!vh1%bDXE`M|62iB@H0>anRKX$vX+ -zW(L9wD0^!|p9oFn@gaD34N*Axxxjmuff0dB{dNK9i -z!Xof_RzmO8ThH&%{?KT5pO=tp$K%#nHP)MbM8JV*_TT^WWm4-^$DO)9=`{ZP5--p3 -z<)aZ(cstZsa-2J&NxT4)L@w;#+4Xif5`%J-7}(DXvj@dq%Ev29;~H35t#B -z3HiWrwq-s6j`}rTmCAA|+e(bk@=_~e=vKt^p!Fl)*#@5=Ql(7p*>IdV%TpwlERRrI -zyvB+ee-L=M=Ycz%w~dD(XFc@fr=tdfS}R<<_A(p(;Ur)Mecw7tr`}N_){*%0*FH!Q -z&Fy?fU;9q;ZQG**~2+``&n&^%_>z8&`MGR!0!hq$hsp^-t3k>>v8; -zxwL2xr1`oA0^c;~k6W8XdwyEXnq053@}7ctzc^_eW}x&=&0}x8k@^kzHy-@;{zLOj -zp;eTvjoc6m6W`Xy#066_4bHM$Nw6JTRzWY( -zAG`ZJn>O4omquaFfPKu}q3#q};br9Hs5qi*2#Ur#nyVSG`e=lh#4;t~YPM}$BZIG8 -zSXX*1Tm>(*SVnNVro57}yGMsy?6dnFE32$XSW!kl9MR)&S*F|NPf^v|!oK>;{N~PE*y;_tb!|~Iy|x<(>)PURJ+qE$ -zx82y(ov5wt?K2jehej~z79`?)n@zt}M+3d@9J0%XZo0u`J;u(d -zN-`+0?I7qJrlp@ANT2doOx8YJ>%TQ;& -zt%n5BCwWoi1^BJ%gs0IzigNWUeAYj@DYWC(gwcpEyQ`>-Xt26oeJd-**^=@O -z9)6dbbY`2l!|psv>FvfgXwiOd(SK%kV3T4xPK6&mbviuPbv3 -zad=BMVW}2XTQXsVMmOm9&&qG?%X~S*nzM -zY6>rV7&X1Bvl?X8*2|MHm>fD^q!ymjIt9D5xti1mPoq?d`%p9;bVeZXjH$ -z3fJyhIPj{E^M}>4@z6l<=_-Yq#?ps}UFYF3ZuaRp)!KBz4XVTGbX2YHL3wX1YvZTl -zP<1e==Xcsy<9bJM2XwEDAwO0EB679(Pi?4FU~XAq?pKm{^0I{Y;qATGA$GOb>^SPN -zq0ZmlIy}5aRBbe?m;V}3cj$L(y>WEvpQ>c=Ja3PN>Dyr!n3Lx{+-5Sko;9%jhvwZYYk0k3>Kc5+r@-W_Y5E-f4OQ -zce^WHBeQv?GmA0} -z)Im*@X_=K@DZ`?iUzbM_U*1ZRYC#s~TX_MmTJ%2fKaB{2z@bc9oC>|PaeJ;*>oi)` -z`;u+3d#>;ZcN)O*OYSFCpG3R$yFojY5(Wj)&(ki|sugbis_`Gh4 -ziGddVGl;V2O(#V%br~_Zj54VFR8^&uqOMye0${@0N&oU^SbZdc3sJjHS$Y{e!@o5n -zIm$Q@}| -z$G#lr?hcG^zwX1O>DIhE;Q>x~xjn(KZ|+RPhG8wXnM>XQ6GuCSzupge;S^CE)BK`v -zOF4{@4=so@sMgE9F0^GAo4KNCgcoJ06z_0#b!0~(nqn~yXugaHGah4Fs?2C6w5W<{ -zzZNMSDhf!x)y7Eg^z~_{IV)M&p#rT}%fq>oxRSex)A9~RJm~D7+QDzS5Y4!*l!|OL -zkW(t#bRU$`UBxcrsie%6vR!3IVRiBjWP8DFf7|3?Ot7jV;`CT_o=^28%gB*Ki%rH`v01$JzGo<83Q*1H1+54&tS_P>sG=gPf(p8UdiO5I&dZ`Q -zN_?zkomm(qi!(9!!f+f*b2!1Z9QiIJDCeU0{9_PZ;l^R$!_10=NHlAdX6>*CSOPP9 -z{heBv(INk_`@Fjm?Lsui1v(Op7?hDoDRlNm99J+p`1btJiNcZ}VFh4+%kxF@p#HsM -z;*XoJA(+gD)v(qqs6_cYfoqm5szh-l9e?kEus|w2XlmdWLFr`N384!mB -z2Gj|T(G=chOi|$_%d$C*y9qg5Io8VCIpy4%iK{uKBc#=M2EG?HkqGdAokwyhnP`Zu -zFA7jVI8Ko{UXV0ZRY8`~6j_g`!=rFEpr?WQ5GsgoU)rNGbYmCIFslpkd{#75>jH*P -zdvD%qIQgb*o+&b=*;n69KUyMjp)80fv4~13Fb+c}+a{QFd8d1;)&@WhshUbh9)&I>$lvp0B4rPpITTzIb@3E*j(y4W`Ul@ -zMtCs@UyWlw!&^b973PG9eD_hZ$)>z=d@oAxAnm;%{(h=Z`TDW?uy~tHTaTg5RHu$y -z54%sCu5%4;YrJ;t;M5#7#{&{+ZEFo0t62-5M$OJD=A%(N>xd_Nl$uA)Zc04~dhp?p -zzSe7_TI;FtSbG`7i=$~KV{fele!S?&hj9L;kAf^9!`8^^2j=>eY37{gpI@fUP;weC -z(+!#Io2zQfEJlyYo`38QMwuV+^=z9O>FyHuC2pGLXmngp#ANS{THX{!)$!rfoouZnp14|jsH?kIM_wttr=g#1 -z2J@)JJxOUSG#^6Mm8_oBY<9EGVmEq|jhBY`m~CICa`d(z&7Q{YLpa`WuWDa-vAnLR -z&xe*^J$Bt)XTZIY+PF%5e_Zb=N$qi-wEf4$dNv~DQJ6O$WOsPjwXE%+$sD)DZB@<4 -zPTS^7>nJI^-s9Gub@cAE#U)MVY10+bSvOnmjL@{1#Ba&XNo_iQUJhS0+v=v(UVAVa -zG}`mfJw7a~ezT@@m;8g!S-tkny~f2&Z|2s$!D_qe1eT#_pPqX*DEk>J;62vonRdgr5TH`Hq1^y=0VWff>i?Q13b4j=7xYU`l&JMb -zAp)f&kqWa8%uSNO^YZO^)IbDNiok1%QX_QA5lB;p@ -z|Bi}6prQ0I18TCMVNBAmxF|lI#AEw=><36ey{f3TX-KL~7+$tjMidQ!F$_~>BugTK -zY}lNt*jK;6Jr{AYVj>z&6lVo0g6=y@!#e5(x~F{(sr}w)PH!!$XA?PdO_eTNhdfr5 -z-d%J#Q?&)j)NG=uFgcp4X{eH=f@mjbh9p{qSfT>@ooPutXPCTWiH2qwrl`r(rF%1v -z{hZGRLuaLYF?(%44W6l8;xLMqQTNUW930{>=OXewGi3ws028g_Gd$xP7~A?jNHw2# -znaDpl+xPLIdFUw|ihY_m;@C6{_)gg1Wycj<)m9x-(FD%6%{xVk`U)tm -zS+GosMD27-ZOB#--@Xe?o++m%sO1w~@^*y91&Ee^FBGau811}pa|9s-7dQQ*-3fbI -zaT44J3O3OubJl197B$fSMFvDb_~z7iV#<=|`AnX2XnEMwrv&QDIKdHS7ulf~FdH;e -zZ$C2-eHXvdG9h+GFKE=iPE|p!n2*thM^CM)vg&f~$o{YpovjK13A0H -z0RO9YY=kgJAwCa^*(nw*@tQb$zU09->`v>15F4$fumJ1q+vc -z#`oqFXi|-Z(aP?5!rd3i*u{K5+u{8TY6kv|F -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 -z)2cbMVSO-LjQgkl!-SXiM)R(&<~thw-4)9 -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 -zcTo0^FRzIHORlJ#5=)VD$X-Ni(2m3_SG^!h> -zNENCW;#fokJ%lbN6-6DQ;IjPvpvc+*LS)qCUHp))eU`!$uVKb@f;K&3Fc=EfD47yZ -zbSJWLxPc-AW5)&qpYM&OqSNH8cyHyK>p*`L#vAYL`T6oCe7k0=arfF~#E{qT{oc(> -ze{gU18GZSSuK&lh9oa&8LYySZL=23O-)pY2w~jPx&@+43nFUX3@mH(OVD -z5Vni{M7_HAy&#=ET=mbB^;`1rc*lgh{3YAwoq-UpCIfpow0AOD?nakwO`1KtUyZb0 -zCR}G=Ew}G?n(l`~%gaWVvmHE-uhr3}tJ&rYWiRiq(yF_@f4NAmgY9(netE7ufq9|d -zt#6ds#p_^xF?}D7LMQO-m42s9V|yLh(d{C9jI#4lrgW{Fr$;@VU9{boqP;0zgLe9S -zp2r;$p1&`%Y -zR_D`Q_|PHxySrLnT~8j@Hy28}$p?zImTuO!>GjmeovyhqI+NXvO9t;(!3$kET`Js> -z&2{_c{c>a%qi!%x3Uz*Yzq20OTWfMJ@0`@ReUC0~ZnCFMSMeqj$c02#_B;-5 -zwz;!rZ=2QpDc6HEdww`~h3EIXapG7P=MU@6YIsAh&D8~24Q58f?Du@Mant<%E>g0~ -z`O~f1@q*#?{cJq!Pve(mtk)ocQtUA&ldt1LfIAnc2vHh7~+&sLg!TUvK -z`?k5XvfIJ@sW1ogmy{WI&g}B?HosLDbaHNt6Un`rKTeG|rx$h}(#Pm-bGvTe25WVe -z-QCCe&6Dl7`kA#dRTXFFC%@odY#@k?4TvfL{)s1g7Ks{f}%1*V5(vY)R!q` -zrVm4mHf$R`WDfIf-&DYKavWVyJXHrfOCf?sZRV@4Oy{g;L|K=rU&N?Tn@s3re2zQAL#hbc%&rTw*0J7QnME`q|`;neO5B>G(bfxJPedn -zt2m8(k+C=r`Q(AfPILh4^KdzZ9|9}}F2*$Yo>f^1D8N73U+uMQc#;B${5b!(6F(?y -z0ds-RfC5&({nBy9QwkFao38#gjL{uycW1CPD&tYrXe>trKjN#1Lhh@pq?wi`}0h} -z@FiW497oZar@L5>#Ao46(ORPmt!UJb7)ui*RWnEi!5V9PRbF;uNz91ND7Ob|2 -z_gGDN2~_&O3syn#HSv8iB&u)9MB$L!KKsyv5#7u8182TO>;|-ji+LFoK^L -zS(@@2LK;d~{pvk?_H}?|FRH9JWv$%p`eHJ?DMNf=ut36+bI(~Mnqo4%l-C4%D -z;|ID77bk1F$lBTjIB07AmKt+!&Hw -z!KiXZ$_g1(?(tf*qX&~8`pT1+-MX=X_AC#fplY#Ixy#r!o&XP4dDbjS^j7?#Dg&vzOy~GE(?!|5e4dTY4 -ziIH6n+=5l^NMU-4R>2*O%|()V6>?S$2Lgg{p-|QHsclQ1t~nUFlLP`>tcTUURW23DDu_x67i72mgog(0PbX -zLJqZ}#b@M3j3s~;*8P2%x>JWNzlJ&=Jy!V!7d%NJWURY6_$T)56t~q{=7TI<73YxQiEEA@EZrJOGRpla5+1kdkGu>nL>#ty^Sl!TqFG -z<|xH{?%gbH!7#EZi1IM@O5)Yt$% -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 -z>4FF@Zzi7S+RPAxp;EN<-kY% -z!2g~SRY!x_;)H|z7F<&`bW_0z1+UaqbWe7erkaNDU@kj6l*-Rc6ifv^>W8GcP2+md -zL@m#_9$!xx{Nqu7LPR2qL_xGrRjx{vS%^s(>lqHpX^@4&952IR0*phD9xk631ZRd- -zfAO@eiL-;L!2N14DZ$4Fmo)6X$Rp5E_*JZ^D2dtb{dGCNx-r9{-S)1ZyI!PBUMJ?_ -z>Av$ej)(nh@~&N7pRexDuX?My_iKGSrjzz?H`u)O&U2P&EqhrMcx|)v3??M>n^9e%nkH#F(UeBHx+G9Xl`n{wp0y5& -zS))p+`Iu|Z)gI(dK7}uZePa#{I@q`t%j|$-NDT0AwH1c5sqNn=E9g_0hhGX$c;brk -z8Ue@ODbc534vyF-My6^4c0Mg~<;B6<_QCt-h=o1bUlEK(E&v -z9`C5?b-~=m_-xTEzj%2ooEzqZG6|b%Mk7p+f2y(#z&?TJRoY%wWp(~WyFB3qzIn70 -zD=qW-haG@M;<9c1yPDk*wXX$w)3$*OPA!gY+kg$M{i|SknMtz0kaY8lp7)yjk<_|k -z?i_j1hx5KNoL|bL`Q>^vZ*NC)4r;F4R+Wi+1v5G^ElLNUA13QkVe*BtB}YsumpC$3 -z0b@*4rV>V_70TiDu>MDrH68Jsv6@l`WgLM+@ap-6x5{3os#wYA>artCIxJ|0OFY@P -zo0YQg;r!@zNwG$?!2ZUM2Hgxj|D}rs-CruD)%3`h_g#iYnJ@)YKCYY5l?F?kobtn_ -zKf0_ByMi!wywWvzy1PRa6J)=nGuyLa^cjZaGDrTfJNtCnuOI2h{i-+MeLAhJ%bp`6 -zf~={^s;fFM`gQvC?mu^G`e9$p1G~g*(~?WEJb?7^*q3hpi-*^HjRMC+@r9esE&KeZ -z5rDa9PJYx6HVmhL_I3Mqo)_DfiSo*1!K0aXX}*r$pC6uQY}nJ{wvijwT6f#>`}^hV -z)$Z~=h}XsKqqhkR^ICm*d8ftA3yoD0Z{z8mvy$&KV-#4))5zbw_P1&fJn3P6_pl+o -z&TyB#ucep#&cBlEx$U~|ONq7VJxHBAn8M|Br&2q+z8de&jl9>*hWb=l^xOTCozf3B -z)uaWgrpMfQx`YMkK8W)R)4!hbe+mWI?uU{_Tvdz^(?uOT$9hiUT=Ywi*H-W}Jz$dKUQm=br|1LVOJPAaYhN^ltb!951LEx`I@kFN#s{a!cnUMYxyO -zcdn*e?XLEo&Q1&x!uIZc -z+H13mZWfMygButA`$_-OKPgy}6@p^6WfH=JLIB`M&8s$=A1o#r4a1q&8y+ZW!w;C8I_Ze@qYymKKv-4g5W -z?%{oOq4bvI<#s{ak3H`$Tsw;G^d7pKx9jcs{2|w`c1ip7VcPZ$tx%Kqws*UmEt8J< -za&@jvFW%vybCPPA^{j>tXdC<7HI6 -zNK&*9<#f5B5t6fS@NwpVPC@|d%V9kK3 -zBx{6|n-W_0o2nlkdg7@@;;=l3lV+6hnP#t&xSr7CJ$o?ap)XhnVn5*vJU=?|1=r*A -z0ZeBl+JIUz*Qy@>{ijMku7lW3)-6mwh!+j8^gc<;FGhmv@|n}cnRBF5givo1lgP3x -zwR<<0-OJlYBuDLFoX;>oHKnpH>6)q1-{g+#pb?BZoYBN=I^I&sDg}8D;SbvK9Vgu_ -zvoPfjvbS={#KPv(LU6R7p@Zp?ldg4B@i3U1<-G+yH@7q8!?|MJ0xuEX2ip6(eP6v7VzC -z%3U-ZP|D>+fiez-Q<^z=TYo>075AUcynGp#=trkj@`cA?g;wG^m?lD;2$)s>6CR12 -zx%Lw4hs8fTc?uWkW%8dzs)CsX+P*1Cs9nplq1H}|jBWE1R|VLcO-ux0YcEeCugYx; -zJ(k1PE48ULWsDV;@a{en@&qOx0gn6yj{C30k~$t+7Joj&!QmQwjMb9@OQ+HhDqt03V*sJ{q3CZ -z@Ru=*j{*Wp({}8j%8M(a6irBx17YwuEDJ3}i6K_`#H}cZE!~hE)di!_@R{tYzJ%r- -zlRV0Z=TgZ(4tV_0r6RcyzoPF-d6g&6)@8_OUGQY8C3-hzEG(As6axYg|L}w$68JW; -zn0v8{E9VLNaRhWYxCp!~tS~DfgpFfi#tOj;V%W{~JYgMp0>Uit7DP{qcX8rj@MP)p -z&0>KA5KVM>I(o-*1%#?$dF{z`1K$@5=pwviN37AjN`n&yM_xH5u=wp$ -zGUu20CFmN(T+p=mT*`MuON~9U%6>*aFv13j5`o(jO8=Vx4|rLDyPXU-MfHODYBrtI -za(G~zvUH9tylqP(s;4>BVY+H~nh(>tq^XYX$<+63&vr_XHdB=hN0v;1x(E^5LtTyIceL4s%M{cI}`Y82)7}AEwDh_^XmY*hKiJXq+%8z((FJgzmibfXZ -zwI398R8`j~HB``836;-2kp_L0d<&zd^4^lP1Qg*8b9BKQDk!1i8G3w@sE&5%5@^JF -z!&$Y=hM(_~?aO}+q!J(vd)o5(zs3|_%k8MKv`QYMrB%`zEiG0zu)2j82jZ3iVjwN8 -z5*cA>VF6}UFSfK|>_#nYjuE2)mZnA2q6s4z!YstD-Ks$5c&5(XGWsHNdm_?iwiZpm~HCE_E -z1)`$6PSHa62y0bfYyB{F1!j3r9pL47dD<$)Zgf4_+V`_=e%r{R!YV>c{R+~owLQ)N -z{U|rUUfFYRh*%SMIOwr1P9W~-9RJV)1j>QPP7d`Fi|NmYHrWxi{gR3?Nvn(TWA -zl&|8T3UF`d8RIx5t-V*V3(~uhmZ>V#lysff^%056s@%YQfqxHT=-#-~rTZVeI=|w#jtJF2 -zf;Opc$_njVo_E{h%h7G;c03k4M1ot@h|(k~r5aX0{x#pV$cB_}T+t+qh!Fbs^qIn6 -zveu!`L@;!CXB03xC-|W9nOu!HMug)TdNG#B*1}FCsw`2(AcoRZsA~1K?Y(DPFvot< -zdLpN;@6VRy93mnNj0}?TY#pIE*LfciKFffJ=SU&IO*J{<)5!RyCkR)-AP -zZwCUNxbUmybXBj<`N2VHHYHP6RBX%M@kn^c3>Q>QF%4Z&@cL)y=xBpAr0a&x&+6tJ -zk&SlokI49`D%H>WPmxt@HcF$X{9n}xe;)jB{O0jonhH0A=LxF^##4UbQt?#$niakt -zE-|d`Api6rmPZX52ucL$RQW^0O(#6&A>Hwpk5F>(IlP@*^dD~e<8iZlJFI2D@>}~< -z%MUWtVpnx7ewi~UrpwgAWdDi?s??53JX)+IIBu<~3xv#@B9gCAnHSuk_>h_Dc|7;4 -ztWm+dKafs_Cuty7o4h*q13ydJ465Y)UA-4*b8g}+aip#}H_0zyQr56oFfyVPGcwOH -zNcbr;W}lJSzPqePc$8$GRVMKsk6q+eF?2&}f+EZ@9WdX=sp}NVYz+(M6?j4UEP*DF -z&!~9tZ`CwJN~y)IN{r -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 -z=Q~weAh(N#V -zU+FZz@Ppp_n9TF*`{#A&ucl;@4HnbE-4EpS&*LcI)};@dv$B*5QoiIKw4-*U{QA3d -zqarMP2lJt@JyujuJ2t2g89KeUdwdG6lVN~o>J^8zXEW%jtvJb%p{sJ0RKHSI%us;} -zkratz7{HG>O?dAp0&nqQG6KE7o*3OAkG(D2MO_r!AK#6H+fjdfIq5f_`yJu#;kGA2 -zS9%Z@v$_t?U_Z@}qpypakKGV@LT7eZfNDX -zK$!8F-NCc`{in#wSb4~?+T}D=$zBGbi+Yb{5Y^EUjr*WK89! -z)-^*caVZ42@e^;e8whT}U>3pm0h4Z7l}*squ(!})CH5+?DzU1zwKfdPO~N(9Vo(>U -z?lNaFfteo@c*>weRc?Rj?i0xnb(;u^rkD!IDMiwy$}@EXZ^6^GMkQMQV3%+VM?T&L -z>;A!1G!;#j6%A?D8sSs$aT7x@Bo)cJV4?*xx={)PJay7Yr%!9tA1AlMeitzJBtfAv -z65gqjfhxVf48yzWC~CPr3{AN`O)%S{hSfP*Y_RO-woAk5C0Z|axUB2)eH!SrhGp2X -zVP~#`)^TgUQ}_0v|8&{w-(L1wszEf{wV7=bhk3TE*@{n@P8;poI| -zaXs#j$CtMwXf>JR!?08ZnK_Q&IJPdBDzyc$tz=zx6jyV+{r2PjJzU~-@2>wenzTyG -z?IvL^j5}!TwI|k7`{uFVT3~u^#-3!D6%WQf0{Nt1Zad9ted${g5j={TFwN{2C8@0R -zN9>73P+aBW5*-k}6}X~8OwgQ7+TeY9#KAByg`@ueaGUU>(SDrVmR_5?oA&F?uu2 -ze+@qWB=zsi^O4dmW|)ew`ni6x8r=QNMh}m8*wx_i^ChmvV+=w6%yIJSIQdt{$uGvp -zW0{1{?I)O`m8RNM40v94=qz9!D-cACXN#f3EH1DMqg3lg3@Jos34%oX<-3{tRq|)& -za`Mog^r4gWuw%Cb(m3yrCYO_&e(Su-+^iCICNtF3o*4%z>2W~|3tgB7SiJqME#Z!j -z4>zB$8+t0z&7sEtPI1#8wG7gDzC5oRxzM_F$2?u9g>t)WYP)y*%HvkM+i)EuviL=7 -zFiVdNzHvC*JUvdy6L~C#k4AAnpY?~+R!NeB@z-Oo4gwbTeZBl_JMB)VKk9Z$z``fh -zx_hzX?v*l`kvo-)7WebZ?t8m?+3v2}_w9C$gj<*0c6-|CUiRDfoy+zVT|<{|u(q>) -zXwTZ`)AqxCFX-my!qe^4wbTLu3xk(YGHoABWEkno{1m_%+r+aJbW70mT7-h;&w1Jj -zm0=vavS8Yh4Px8Y1jAJntex;Zonlq?Ax#^xL!2mw`Q`(12sGBFxJVw%8|8JZ-S@{s -zq99MVjtL){aRUDJJGna|&)k8Fty6VcpctQ|>7Z4v!3?8HoEKaI%lQ*cj<-qjY;^)X -z1S+?x8zS`;gHR@Usv$YPL~Ww0k`0G2TL39PhVV*nIX~{RXFpW< -z;^L&tGXsgJirw*8d>psM=jZ1!0yVo$qJS}1@!A~E1Ez4S1O{t-ijX=&X)(U?YN8T`~3KA~sgKxCkn8$aqVW -zFE;b?9;8MRD!K|gt?S8%6}&y1@#c@!?5|H16HL4YVUCr~FGzP(g+pac0O -zX31I2`vO8O-~d@Lt3wZKVL8vXQHP<4-dJZyc%QjmT40h#jX=mDers%|8gGd-WxY|- -z!owVzwHAdiEA#ytYtR`o5TId8IYD$em -zL#l;1SYD9^jz~bGB$6zaEtYLYaX(8IS^q&jpS|5JOszLwa}cE8%i*O2hBOt)8O#-e -z6T<9{q1dnUc>N%sErP0+m-jg|E_ff*g#}xH-Wu536@$xMB`$*xVU>B&oCz_5hS-aP -zIjgGTWKe>6!UhILh58_%K$;3DPp3)2oCpoC=fIHmMV>IG#HQ84Ax&5}4GkmC|8SbH -z_QS+rgosv85`*ESy7r5S!7QsYgxPV1FzCGm-w|lR`aVOL)EUB5*HjrEp0Upm23e?M -z@(ulzA&juaT~NC|qzJ=v$9ONnOt?dmFjZyqkR>dC$Orb8)kXYKVsQN+mPZY$rsH$f -z`720Mo_mZXo|K+?uR%a>lWbAVB2`$kI}~wrW7>r1fG9(Iilga%%#O8}q0OcY26^?ps(pbxPG0<#||5f?yAqFoqR;cZpZTtng$H%z#J)W;gjlZS?0}$aOCP -z^dsaU;iCJ@+kmtQcu%h|;{?#d0?cLN);`M{`65U!qckgRwi1Hp$I`Zd`IIMu!P~|# -z2y%OAGC_b~G;g2K;rykq*@?Y9eOBOrF~FnO*b0Weox?{8;}R5t*cE158z$#mKx`&N -zK^1H-F9e$_V_P8%d~}^PKu9!#T8})GcR-f~^SF_h@$S5gcYmsyYOq!j6&?$NWrRHF -zQX|2eYWQ~A@@;g!)<=^-J7`ig9d$)j8$oe&B0?1OKUCL{y+^I{{^VC8ygcXTD**jn -zRzP1#7R&V1@$*a2X!HX#njP*y9DeF-Q;|nxIVxrODPT;@$(UaVRB#kuQ9a#ennE$& -zb&5!rxK4AuL|?@;OW^yEu2Za?0N2!6I1P!IrVz0>x)a(QVudB6|{lc-j^gD{c&WjOJTU0gGP(?w3`AXMym<&uAqqCG6BG<(& -zOxCcF7>bz6-|cbzC4ARC-FOKcx=u2eOE!M|x)i%WC!fDXA0zr0D#3>UBxn?{P*@=D -zeU=MFB4G8QfVEIzF1X1$7Pg?K3werl!(6dHtI|s_w}fYnv`{fs@78W=$fyOnfccB1n;d@+q;6guGAmt#Qx`#f*P0-PkIkRd -zb*fGaret1L5bf0qNg@_HVlKQa5n(R8@%#eJzVx)D`VUxHmbOq;4&z*+NnqfL6{dxb -z{}fF@y$)os@v%f4k#whEpUg_gh7iRw5HVGZjbeyIk!7sJun3s`U~?EC -zTqK2R7Kj`bQ}-2xm7_EgucdYeuu=CYYajseobsZpl4FMlCibasA`IYjOit>8Ao|RWbfQYt -z*p;;@a*SIEH%%qbrgbnNq|z$+R{~U0gE7UFbcGt!{D@D9un=Ig!c$I4gX|Qc@(XB_ -zPkSIlC8dsG*bY+_LuJOVKvbfu7SWTrC$UT%g!e5qW;GVniB$S@@%Jeg9@NmGltPS`T -zZ4z3cS*q$`Hu&Al6BSe=daCombd|tNT+MbLs4780I863IGjoeNClGF4sA~z`*eV$_ -zK(oM1FkX!?_28K@v>7UPAoRMdTE6Kxh}o!mgb~S+ZIdWA@f<~BSX+r@-v-k?`y}qP0$*GiV$riNY4ZLsCCN~}@66{8>n(0GGi$d`$dr;MOTzm4t1;yUQ7((; -zH@6)T^$AfSRNH{9FBO9y= -zl#EM{G;_Hs@?h(_R+xLhz|iN{Q7NPXYM=vJJt6&mRr2ORZ|RyrpuF0EbfhdJ(g}2|5Wh^63}WWqwN_ja -zkQ$qcV!4S~H88PhzNh$tZ|ahuDAb1z^3IH}h$-nDC(ap?jd~jAQdFS>Vaa|A=8<@Kgqk)%lD -z@5cqKIsTD-_Yb_xLyoaj(Ke=FDw3cg<`S}pdgvo}Tn#K}oj6qSY!}ueF_SEA-$cx`$5G}Lf_!48ptoe^ -zg+Y=xQCBP~w1Xf@&vq>g!S>pqYj(ofe6+chD0_bjAKY8of0j0#?c+dEgY_tW>`sf3 -zySwR-V9|ed)7vLElkb=Bcke@|d%K(8XXG(cBiVfJ*;~C&t}YDUHeQ+MF?;P_v*mSq -zua9W|U3dz&Yo9KjXG3L5a+cifyx4r4t`_v>j&|P=fTcZ|%J;>qF|nK%byLg}N146! -z&u_fA&*tyr$rI^p2D>N1f^*GRwCjiSp41Pv7L^n2N#8}b8w`dwk3;iirN8X1FK-=L -z?hYd9$r?@H2#fA}i%ht<$j2{j*PpCuFX*L0_tMI>{BiU6`to|WJJ<8uNwB`2y;!@D -z&CIvaD9fMqzLKnakuk8M5nEWVgU8PMLhh?d{=R)No}JuH41YNaHF|lKn_cZyA1?-8 -z@{$*_3Wx -z!rkhEb;2ZD4X>#pPhG}_M!&yZKSfWQV_HSI=NqBrLt>b4vzmV(lU>q!$sK;2}Tfe8v_&VXJ<=*8b^Q)w8wW$y#tRR{2!% -z+NG9?U!-z2!lF@~2Ck^O3SGf0Y9jBqAyTV95+296x!F2zBksnRPZATu(ct2V;XD-_ -z-(7CqbuIo9dFiaHwm>o{v9szuzT3e<=_#P&Jr^#||Axz8_4VX%J@B=yZk^|M=PYA0 -zYmSG7-v(%Nm}8B`AA&fT -zt|;re39p18oVOvn0k@O`hF2}&3+v{M*55% -zL*eGI;1UzB6A;`UN0qalJ=?1EJd2{zTm9e=GMVR>WC}-n{6;ly?N}JiLO@-o$inIe -z)n;I?q8YJ{l=h7CvdHju9Tm^=RW%VniQRi(oq9*IYiQ@4S5x> -z+}rD_TCfjHbJ`wQ7sQ~ov(UmR@kEQ33}4nYV(YpOmZ0sO*3B83e5ysuR4UdFmN}&F -z30*F3-rDyge9|DDj1q3Mfh(+RVAYW)A>vVc9uaa7;bZBnua -zbEg9Of_TqH2vP@SaWIV=9D@`+?mvhF%5dXJ64rjy4Q5>p%6tI*~vOH~6>TT;) -z?xb%$G8@icmErtxH`=wM*XIGWNfCQ~h+ZdB^!n0Sv*&yBDjpH%qLX_QY2DyRVMoMo -z{}9y4S^S~q=;vcKnx;?;2uLa+AejHr5=2jRf3A^~;VR7|2EdV_(9491~*WzBpML|K)mTa}=t -z0SqgADd+=n&`r4E!FY*uCUiV{c)K1>dZzYl5QDVG()D$>#4-NQ-zWub!{Jq_^gH~S -z^hJg_iqdcJSH8gzqhFuqj8#~OJ63siX#aWIIe -zB1*d{Bh|C-S(YJLALzY{%xM-3`es-sw^jMt$_U?!CC(7)-RX?}Nul`u^U -zfw_WifWA&JW+!QyW>O3re9QCizo{KCEx+m1XqwVDQwKd=Ex+L>tocpteFOVU=2QTZ -zEcQ2CR~0Xk$op2n88}P$Z+h?N&r7TGf&$D>_CIqLwl3^U8yr9%s$nP3RM^JWu7~zRJ>(9Ac|f6I?1Qf+l&spn_>5-_xvi^i=UgJ~)p5NFYL{75qBY{kiV=_y4KJ}Ip2rl_ -zZHp+4Q+VBfn2zC68SNf99mA+M{2C$W-|ueP-9F}l-9A2`x9;-%{I%2WUSnn0?d|nt -ze~b_i{fGX4{Jt=$RBDhW!qGG;F4x7+F==qDe(n{;6h>#6p+Y1kxod@7H{g2t8Lz+K -za85}4u6#HJlc%nqvwIX!`<#X;zRuS%VptNl0x{ -zQM6k8(F;7nbDD7O&>yl@D6(FD%0yK^uvKsbvQTh$XuT#&V9cX#e?!p;1k;p?_M6hUk#W7D!X{KBa^prpi$FF&dT5m3Fdg$FD2hQP -z!)%Oc^-EPXv%$gmE9WJGL8=WH-dLlo!#t=f=xm?4aU;q3tx)&`IYRK3_+9LV@Gzdv -zA1`|?Mi|oM8G@@guAqQ2ATZU}1cOL6n0vaWJFMKki#3wR_lVKF5+M~emK+rikU}9U -zpu&2#6^_yyg*Ci0!G>;E2%e1AHrU#jt_}06prNusjq)sa;}+QQ)$)Y9WUcBf4I3^L -zp7eW527Mi0n~gWdbMSE~L8Cdu`(v1K8si_n-5fz~(&8we{pX4>)5xqn -z3i{3jMUphr_qVpa^WTGQoGnh!{eD*;#H_J$AX`{+f(hc{)(b<>atX9pd319AsOfD$ -zFtTYiR?+O=oYiiGmSWp7Q(X{V67`|;+osJ3$1kRm>S+|DJ@+(pOGg3Pk}KZO$YQtk -z)&bSOzZ&$t#ioI_OO8`5nnCC&L<~z%&uO(UH&eQ3l)y1cBl={s{d%xRJ&@hm=QW7k -zv2W#dK5Q2AV0g6wrc52}Hb{A?nz!C#IOJvhS-rW(GQ>*ycpg+`6R@QBYYxUneGk9Z?H%%Hwa4au>M#$w~AEoL$b7L8=X)J=8G -zC$>a%-H~0@)jS=$lQl)H!z&!7WQNH$ -zT>0fisTyW+>oBdESOZ|nXhrfuo`Ggiov5;|s->4(QIVGwr)p3+TQb#6Sfxm`vBoL) -z;CI=Gcpq7zIzHES#`g{miBWxPDI_A0A7(R56;!3H0v+|sqr -zo!~^T{r%iGt~Me!X`yR7;iVuSBMQ7?MEa%B!sogYjCAOV&SM=EUGQH8NATricm&@l -z4|GU6Y8o0mmyiDVIz}fMDuNIzX!xrL3sVMG!o+Fyhj)|LeU#zv?HL)K)ngv!dpRvl -z)ex;Eh+4-5uJ~t2r%PIym!8>9FsXh31>W!y;9dD!wB -zsgEc1L1zMGxS~6#Xb1REC^BPX(_%V}%pG)3P&CyefS|7^JdsSw4|8!Rx{d{wXRCYn -zynfHmm&LN(9X#%K?mBVP?fva-`>z-RfX)bAO0HSR3QLkW2N^6b15hkDy_AYbGNw)_ -z)@S^+q;hjfCjFIxcmqA}-~RgF$!FSTPPT)Gsg+WvLiT`}lv842VkG?d$1x9n61&3> -zzJM~jS>E0ZoX+Ove)+I`*Y$IMayP%8_t@%o6ML)S#ASCL?XHiM%+cgt9!>fL30a2o -z%iU;qza8!_cf)q;G->G92u0gFjB(wt*b^?paEY~N7y;`h+-)FqGIX*F{m`3YRRhR} -zkH#F_wI2rMdC-TQ#4HSUTwMia6znt56;PZaJO$3lJ&x{jR@!_RAH}MHhVK>5j8{J* -z)>V|aEW{$<7KgI>=a)&vY{gAR0k;gmAekY_(FyI$|Fq8mL?{LZDEw12Q&vs=V8|D7 -z^8i&K5?Z~rs+v-iF`1s0S-Xd93JLl4aLVRaF2Y*-}@a}Yc7U-=}V!)=hi -zEshB$*4D*DR|Ob9p$v>^ByC>4J_&_(JLGy&zWJem66K+gTO%#GrU -zMY42Y4*l!Qh4cQkoKgRZa}+~LSrFGA(4c9)?gKL -zLT*09STHrX>avDb#6nYEDnTV_VXeqn{+_mkgl(gB|F%1t_WL(U_p&{>91q%^=XM{a -zk5>D3%9QuWx_es{lW4d~=ac8l?0&T@2A9F*;9`DA-?1U=_xd+? -z7nfbD`*_*=uYVGfi}rg+F657pT)?{j0?I``fpS>~d0ucN&^Y;s4-b{{r#y=oKabT9^jm5C3xkPt$&-lsB{=OO>eP6<(%EZ() -zm^@TdQ+4fBBEjQ^&Q~ITRq}_^UEn&HzBXqrCe*-e7&kDlm+;I@Mb#xmGKj2Dvyp>o -zbeQKWk9)*t)RMLeu{WyU3k%b~leHCoQq=5Zxt;Pd3s6{-=$Ioi%Ej5zmid8@r+^xQ -zw{gNHazK2lKF%>CHwS6FL}g=*{uG$WLAwIMY=Z|L*zrx -zCR_vg5a{(hn{Au;!SS2G7V+Gi`)*3-B&=A7rK9T%`Aq^ZzpHRixwI=#zijpTl#S+W&f)dUThCKO3$0*Dt`&@|hDxz=@U4UAYk6>MDC)ao=s1b8LgY8Eds -zK+8t@p^?LZEO}AZkvBPs^Cc#&ABV>de5Gd5nDNa9++!6C4P4O1 -z4Um0gvu(;QSmKiJqJx5J)N^cAbv)3)bYCJqQx8?n+$a;WWfK%zxMQqTz=M{9q@<6l -z3DHZa8rT%>5>*v)h!(lUm)QVrQRV=cR8tM5!4MtRb78njiYKU^;Rr-_T!HwKE@*}U -zZ^lLEsnaM{t^ahsD`Yy(U%p}a#02K-@9MV#zc5GP8=Ar2({B#w#^3+_Kht3K9d7vB -zD*qmQ%f5eGe<$B&@K=1-RrSBV@%1KwW}O@kht -zBM`SaSzwsVrP|ZiEyXcqF>+yyV^;CNO -zu9x7kH1)?`f&PL3qqGh9I8_#HkAY0ui$G{W^?;{DU_|;ic~A*O%#*B6bKnWKmOKUi -zH!9x^t;ccy!MZ#|9!iBpDBt*3+V>J{a}c$tf=A1+2!s>1V_lPJ1G*)rV{U=11aGqV -z>57ZAsOpEYt|zpxe{=Q~OO{T|wl5uuzw=&$7y%VvpE6_bqh17RbFwPo?0k>a?-Fmk -z{1jYgD%8gKX^z1(5hA2Y_V^9h2^wN7o{EDvYCa0*&;5=j4Aj^2kud6++CUiVPtTKj -z;;BwQb2D$ZU`^(TLFr>7BGtu}Z&1hcsj0b|zsZQYR+Z^#M{2@&iz>_s?MS9$dM07iCWN|@?ue2FOJM11nnkE0ff9yRorn$GQB>y55>09x -zAx)vN(JEsd4L>Ma5!*EKmg(CP=$?kDy0T{z#iNR+$g)Gh*fR~|fU|)X;VPJN_f8!g -zu5wO47|2P?mTrK#t)+b&q1EfQ!cLKg+Dc|`PwQ-Ww+Lr -z8Bg5giM&V@Jm9_Gi7cnEexqv6Ydxk_MG5TsgA8SRRwC7I3RH0G6lHtHzc5CK;4<>S -zP4KJ7To+epDFX7tZx!ZIuzRq{Tk)13-N%ubm^N!X*oyEW7d5mq!~%iH5YJI03Noyy -zpm8C%I81^t=^QKHfoH(BRTXjWpE#pGdjBNF5M`K9O;|ulte-kJd9r9#&d}U!cgG&$ -zilV;U2D7vdK2w+)Lfix7(m~<+883LnTyDA19?IH@j`~rWH-l*@eJkVu?xhejuvO4) -zt2LFTBGz$B=9!qKdO|L?YOYg!%4sOtRF!UGcQtt$JwDD;cf2O;hnaJ2Po2S2U%9{U -zT+vBCf0;bx?0z@B8gJU8m;Rvlx>?^0+T{FsCRy$21gUylX9ykAQR01&@`M;qj!h=;M -z+xH2R6rcFAZfi^d4VR!{sS?AJ^y52T#=(1-G;;@xO1+%8sxJtVp5=O0`O_lS8jOt@{5j;G=8saStnK|#x}vDk-W?^YFl4p8H;Sm0i)a}y;$$8F -zz)b}9mz#qA#;R~tzT_;Ce2NN6YR<2nIz(&IQ>PBqh-)*02~@>Y0?m^J+eCkd?x_mX -z;JAkUcfys_t`1XG5my+C!wds#j<28zs}62YMNhqs+r4C<6#?0hQK4O{lVaLiZSQW@ -zo5?yVo|37l#>s5lKb2*iIV1`&0kQTI=$=4-UWg4NLp)jJ^4D5Tw -zWK7l-Ch{ZXiC=Js6TE-)mtj7t!1GT9e1{)WQSroKk{8gOBShat!Wy{t6jUg|+j;_a -z;!~i;S%UbXWp&4_Xu3EvmZ-5cAmKiPwJc8CdvgR35~M=;|D5tyNqGm$*_l;l_nu)c -z#^Lo=l_(wdgeCn4h<-oDg4Sh4 -zKgEJROv7Krkemp8X9PXE9%#}IBc32RR2Ce@3_)^TS&&T4mf$f;hOIZ!S&O=as)Tuh -z?#rxnRNF2EVeV59wIIMHn>ErfYGHQosa#=fgTA=ZgcV@0ZJ}pI^@IX{o)gI+V7v_o -zi1Jd)GCnS8e%&rsNay12ZR_hf*u_@oT>8fUvj#)xL#3fib;%k(5MB9(ODEHBWYi3zDqx**>-AuNoO`b<{`zcZL -z`~EJA1~LP^Z+@@cJ`6Ty9xhj-cjaxOZ6$52Z>d4g=~BN~#;;3%Y?&~#GhsTp8GF=| -zpQslIPku1!8kfJ(ZqqT&-Mg#q%YB^AgU-YIrsuqww^ydT1k<~F64)(MMwS>MM?2`? -zgz=k;Af7YfC_}z>z3_~6bZ)}!*5AAK3dHq{ -z6**?(VfQ;pUKxp*7`Vv*j6|=U?oLH7^p9l*^JAs=%@HCoFGQjvbd`Yl@wgG{f1sj7 -zR^<^!l%Q4(DP>ABm46X>M#ZF)5_*Q9Zz&4gm;P?At4Nm98OFr+Cd#i&Q(qydBbcyND+nk2r0e2*eiKeX>u9gGxpLVa2J*Betij9>X0rAb?Dfxc*lLm? -z>yk>2afX~_tN-}$J8(lFcUUnCp;%QlRp<$1|uAeD$h7-9QqoFI17X;0giX^9a8Pfx}K6|Dpd -zBE&@K0aI5vY*6odB2ZnIZC@q=C@~twSHVp1O -zFQNOx7(yKnA$N$@YJ<|SMFa;txYCLf{5D&|WEX@XmVc{F#CQ5%F9bvVuyhl|%ME;Q -z49(J%{|k?rrlI%j+1CMT1gZ?;P{UoWFDApA@`Z%~#|%IBoJE4WTp(K~$eivhOE5Ql -zpvz4OcGFFMwlVWr7VHm(xIqdB>rqS09#wCF+B^Bjm44kENWD)BL1@7j#h(4QesUV_}LuZjjuWSArq9Tp;I7 -zgq88P0w|(Eh|dJ!5t=+t6hzwsi-E8K4!`iWEzQ&@XpzuEb;l$y%^8l4PEymSOz~_< -zQcd4uo>`G+!o*ZnJGNHTA~1VNy6h5{87iT^gXomD=gTG|rs7b`He8(JRKeG&4ZWG@ -zf-QT{o8h#Yi?x=vDimOa%Blm8&$X&VX_z>U7rP_2o=;!zb9*hEU%hV@iND?4`8|8v -z?p(L~>)T#nE9}QY{&C;*(b7Y -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 -z2=O+YMS*ZLwcZN1zCjMFcFOjluRFHg$cvXvs_ -zvmn~n2(DVat#LiS$%4^h{E&syhb#8fPF~#A<~H0J@LZLLr-$h6D&O=D^mLJZBKLDV -z5(lAgVRKR(q+{~)B`3cVw@?&fP@B6$w4mCa -z?8DUce_qf+mUWC*z-+KhvIT12(P8DNU*P*c)~ -zDyf=FsN%wtJ9zS)Vq>AFuqM<1Qx@Suxm^hIe!n`4E7A@phHZJ#Mvn&_c!Lv_|xC~D&PxIoH -zRaW5E_g7#r8ZRPqi~TAu!uNAnUE{y;(;uxpZssw>3fmtqEZ{0Ko-pS+W#zbBmfS(* -zK2Drl2he`4NuhfjA1)7M4p1jQSEd9k-+-}y%&Z6x)rL` -zSdd_GEJR#ufNiRos$Q?L%enW}po)$dV+OvBWu95~qOiObI$O=7mYi=cA8(YR -zkJhX=N>`3$=T+RNZlKC6tGx7elPtMME%`}H{$5lEfF;~FKiU+Y0s4!1ZYMOYV%K6U -zvX*559aS`4hyN9#^b;j7J8$Bp=UbXC%kSAn;t -z8T7-lG$b!6X(UNTt)WXOE*}=_Rs=!ii&*t6k^Lf}<)X6RjV~Ux%7;beut*Mz>S0kk -zEb50vCnf#1wY9FON6VM`E(RtV;O8RF==h?51q2H^~%@(_8(ys$b$0?G?$2ys##ew!>3 -zD~Y*o+%1)qATM_Vtv<4#dx7#)-Z%s0#j=xdhxwz`^*C_5fd`MFD5^*1AxM{n`2}lG -z2EKU6Xu4NQbysR4PZXt!DTA=6`;^o)WTJuaP)iD1rEbRb21Sx(18i|aQRKQ=)375O -z1{M+;y0&iyZAO<=%qRsVQmLE48mEYG4ECQ&h*39#Q7@~=)u|a8H#^E^NzoBALy_^! -zs#-N`CZ?o;a8p3UsYZPz8uDJLlA#kysVeQ8Rh=ksVQ^|t5%$*&(=Y{|f_V;cdYL -za{s?MU@8sK;_;$#n3TBNK74qY=OT@DxcHwPTqjR^{eOndp_yPP8M-#~eroJHw~S#d -z9XUjhE?_?t{(nEn>KB=F6`HA<;WKIry6-!JVz`RHY*`i*)n-n2?6IijF6CG&`a5`L)?J*J?< -zE2D&Gk`P7Hej<~kN*IyKoDc=k44|uF;po*w#vx?r^e0n24up=JbTKnGu|2oo)qkQ+T*tQI`BT~PG@E+F@e~(^m8+YK$P#0& -z>^r74N -z%{)aU8SXDBv05B@mbEnM8?vh^Fra)20*E<+X);~#Y+JEy5X*#^Lf*vrLXiZwDI12V -zQNeXU#DbpCV0ev0Yq(xvxjeICop5ww9{tAFHI~;LeA`Vo&V_uIq#O}IAaK7=i0x8^fZ$i5#c+wN+PbHRMDt|N@I1qYSwVIjEXq3wwbF- -znhfGrhS$byPaz6%;Q2wjOF_2!uKy{jUBM<)3{XdaGVV5JQQ(O1-bG@_i0FiA?r>IO -zodP8M9E;KWGAX>K6We7hjsFxd%!>1T9oi^2g4VMtSaj)fP#2yGGxUmC;UG;$#)Xi*3`{iBvO19i|wQ@_KS2ysrYp4*C3wXGt+H$p&G#l|KX`sRn2o=#kG? -zts^u`7&LNy~N2MaQDem!_nYWM8yy2NDf7EYEV2Bm@XrJ -zd5d+6pQ;h(mbIV6h^~NUg>6n%%IBRsZFSA$Ax%=5f -zNGCsHwmaLfpw+%^-_G;m)>_Vn-N)czH_C6q(-ho6=X>cpOPR6;{>Aw0&{yyFAUZ?A5CAFuIY$L4I#ao_J?c!y%wWY=RXt?nF -zMC~jW@9f%qUtXrqV?9@cv_E^?=7QzAaW}q8^G1#rHuOW`^`Wh$$@+cl^rDBSr(n6e -zdGDC>@r+zYuX8n9Wh?b^y;FwoPeSKrYdznOUv@V)o9$Gk1`(JjEwD^@YF05VT9>17!$H0t2XnB%C<`(A>hRle+^RIH -zaR|+S6iy&~4pTr1gBxWc2U_^w1*_5xnq|ULQ`2OR!EuQ939IJI^7rh^0(f|!CKweI -zj&of6{^P3mk9N}6W$%+2);y1phfI3qoBw=)dUxJ#KVItX_IF!^-d-xu75@)OKyn7Z}sP&Q=vy -zV6ud~Q#SET3S!dGcpds}dvbd5*V1HWuJvC3fo$@u^q%C?;$=#o5%=Taxd& -z60sG=Y)$txD!aZaISdqh(?>crUc*kPu9`^Mz -z&4efAr1>ht1RZ#L#K^sr7#2}wLpD@+)L_M){kgwML(q{%Y-K$KIp_fo$@DkuU#;wY$||i-!#j#l_Nca -zn@}+eLZMD26p0EZudYyPG@)B77VCi(Q&%SI?ocqK -zDBpFBLV7f^owG>C{mtEMawi4p?M*=C-s5UCHj{#nGZcnDM3vG_gsdV6p7HNvxTJ`o+v7i4zp0%s_$N=mtMdKk@S}rH#$(pU6f-*z -zON8&r54Fs~Q_{q0YXoOJUQrIi{awI94d1xm<%Ioka5=uXz8v)@CF5ba1x%vI4VlCz -zm#{8>m?o)cFw5Tx+3%MxZLr_c{guOWP)%cFIA_0eE6QXTDN_x+CLmIhz@;nMk={F(dyiC11e=%5JyU-%qcuk>v4RI0k8 -z!`5c^bbr3*p`}}2M2D{`Pex8o{P$nwSG)hhV^aTAjy4<=LlA=Xc=&(c8;aoSfAEg} -zAAb4e)9=9yaDz2%rPMCv)YbTQB;54&O(&p%Xecy|rXqpOk@J+n1~2VMU`{X^zMZyw -z8_6iD2|_gyLr4Z&9mCgZBPb4Y2T^47c_r1f;^i$&^5Z2cjqE*Yo%bilB`k=o`@zkD -z4hVOFlQjCJA}0S4(BeT)t%)%Nd)stEmIccQ-5zCLH_XeebzzN&d;T1`!>5-g>FK#x -zyuP>-ha~FblX>+V4-%WES2w#$Y1r$N+g@8408&7$zs>Kp;bfo;C;b*YCl!In!Hm%i -z&2*6m($kqLxxQh$E~0PxuBl3%ObpZ38#xkwgF2_k6zR@qd+`67octJkuw+X>m;D-* -zLJ>*X6`0%4))D3(>zvj_sAEcdvAIWfpK@DZ#%>(b6Mim{0HXeWzm8!gG+~ibSr~;_wF}W$>3DIf^X;S@9 -zh)(%KLA61_2ZcpZcm`bNm#9d3c}Zb)P5Gz$UY<0-RT&t-!z19PM^dGGBs7lYfO^!@ -zt)-1}B+EP1s_G!H+^HpuQEyL<4kaD!dpybP_v#pTH}QmoNip@%W9yR -zm$BNv9H$W?ucizxM%OjZkrmHjwhKd6l}+=L{6DTM|1p{;5horz_`nHREP!Rgc@Kp= -zfoVZVS?qv2I?Mzpn-`U?W__4jXairbW -zn@;4we(EvKHMy|=ql<+r!L?gOB6kS -zyYCEU=mJKn(Yruk;On9X=W-&FJ$* -zZ?0-++?h*M)4_oAOx3pRLZd_4s(iYV#$7fS*}|hffRwe;<&% -zlP;~Vz~q0q8d=e(1XHpGa+Jt2RTRnGlw*At@_e*#idEuq4%yT>#$L>Rgqu3~?j*9D4H;F3ores+l5=Vlr -zJE=(|Octb=>SmY}u8wcx2EN}?6pq)S$R7bayp}2{x-3hQ{t3JTa{x^f)mb<$DDr;< -z-r+_mV*4_;;_r5$FPSQQ6+ef$UXcPTx(-UAsv1Zyt;o<1PhyCex&wXfP?1?SU}|2A -zD2@7;0|EwAEdmOusUn&WXi;*#cJ-@l0C~m5%l)0FRrx%;p0Qw>qronKFX3on -zn4eyW1Ex)!H*>bfam05o))iejx1AXO6Dr;R1U+Te+88(S>am%NE3oMphN@J}v6*gAQ2!;9Fq;=GNti*TZA`0# -zbU9^dtJ2WI(3@t-QAR+Lf^Ze9c0{F}C6R}nLL4$oaF!5ZOQb>jw$Cmm(MvLlCvmRk -zuXFi9Si|5EW^fIsCGADroCUn{Ib`A#kDYC8=qw;qWCcgv>1+LfHSq3&a4c9zb@)fY -zm;g&gEVnorW;4NC(&j2nva&A}qO5_{NC}u}qAQ -zWU8@v%1-a774vMXy8GYs&U3$WYjrQVFSbungGXCszwzGdiac1B_r45LuVE+4*zqdf -zm?Uap&Z4GcVDiulNi+9d=ctG5X?+-oTTF9+Y^7GZvecsUcZmV~XN|TQ8lZXXwM{;7i^HsXSO{;d&%+(IguTTh$Q|vP@8j -z%miCjTtUKV3t@#F>2RVVYvwUak)XW15$IfJKLxc>B5g>zO;kstf}`28pnzT_m^yU@ -z8(y61I4<1Q0f}P8<92zmbb|!6e=J5%{NkgIUd8O%E9NpWh@Eih!p|_+6TgDpfKm)v -zGL~(T?XJj+jKREWPSsgBgda{}dpE6?;UAU?!j=8Bqh0>@-uT -ziBUur`pdkY8Zu08;;b+IXnDslvnuyc{I@3q-hK)ag>NsPvCJ!G8RGqy4;E?Ok>j2N -zRC9JFQv&@6Grw#?nW6c_u|fS)8r3HCtInf|)?PlI>vVU7UiFh~f@R%regc)xnW|FI -z7=oP_ZfjqgK@p=*Rt)2#y@pU*AT3Hin;}ty^u;i=n6)fZ!v-)G2oY~!vm4k -z=`z(d5Wd}ZWY_&@A|9AHtLdGj0zOv(XK>L_sA|d*k;JoF4wQKiaw-{ZdwVokw2hmCupSrgV@ltr#t6%oexe2$evoF)gANT~A2{#uEr# -z8#5$8BD8oAn^#s>#ostp{U&$H_A;{QAp9fJ31B+>k5bS<)nH*#a=(KLX|vX4uiw78 -zt*8S)l$tVv{s%m_B5T4YNM{L)b)>t@3vw8N@O%Sj)?nDdF)21GT5`j2odWJO$gNf3 -z9KZPNJLXcp=@q -z`s&*w(G90Pv=ICOOqNd^?=xhqM+uB)s+4fMH26d>aa|A)pP2ppFh8&mq25A7n>*Nv -zczY+d>2UDar!UvW+j#u?9R!1*gHAxGCJ<9cTD|Y1yY{`QwlC>qp)u6A?D~c4vW41<}iI;gIrbH9WKw=sQ4^+}7eRZ`QA;GRO2pkD@DbLEm(g~nL -zL7Q!3o2erXLh2lrL-(*;NC&7`(*#k85D88mRp=CKi7tN|o%Nts1~Gy)xWDP$qjv5i -zodp~+qd+;;dm0DRc$wb%ehKkgHpe(DK@`@SINu(Q(i=$KKK_NvF8m8_e*5D~IP5GoVZd?X^8|FyNZOA`rI<;T4 -zVoHEX5+c;`)ZL@m!1+~V@7Q0#!rMj+Q^BCS -zgP?*=#;>4mKC3hAc-}3{#}2Vo+tei)LESPG1t@MyRf?L;!>kJfC?`}lnwy}goV7v0 -zf1IHpld%jdr&wy0wnAocuW}f`!?QrPM3{Z=egDq!$nx*srzk!w*Mkvf#oXuyWi~>n -zq8K;lEJGmGV8nzVAD5ZsBiOR#pgV2~qLsIS(QcJlzg`@}vLzEkgHG58<0+;DK8_oK -zo3@Ceg0X~nA-YT(^A${gAj$R#fEfQ%nrhQ%%tF|9qbeJ{u}=`(PzC;PbJFT&yygt -zo3w|8%?m6P>EMlGujLGUik#Bh=J+ -zb9VeJK|+_;{$J3+{6m4oFGLM4q^)Ah+T)(UUE{oT#Q26wr}2ZY2=qjx&O7rqt!VF? -z#gtI4iO8V&NH9z>S5<~z+QGY4IRL(l0acnZ%8bf@f#+UXvZAT#So%djsLZ+vrl1U? -z>r`dlH=nA^U+aGVT1EOtYO#|9afC(eg~QTH4XZTjlI|9@FWhLaGT-bQr2lm@=_2D2 -z%vz4OXV1!NCav1vcy@s8YDmH!|;pcG> -zM0lah_x9-zC4w9(ukoeZGO4Cw9TN2ZOLXCJbngZXS^TBQ&`U6D0Jo&*3`S@#hx33z -zi>`rM3tBsD-L2r2FtSM$1QCVC+sws@5%fVs40G(3YDx%S0Gl*QxKE_ivTiOr{fGAC -z68b>dN?SO$H_Gd_zBW?A!1l7zPg~NSRazhN|-zpmJIz2f`j;GsS2f6F3#ebP4%KXT|6-)8JP -z`8JK|aOQ?NBz7bJ;t+yrVW(zn%j -zqBoT$(adi-T*$X|_Py?L`C&1E4)ym&_&>z;tI5juet+sZ7bR0{^X4H(u4|`hE`r75 -zt=YEXbr;8AjfI|geK|Vs-43mbe*0lEw#t=FtJ^^c4a3kS-8yx^Ri&S99@@v}1YK0u -zPquUe(%c@37^9YFT#v7(4E}NGYRM1@FH6-GqN`#VY-FKmi0c{Z*Xvo5d4i9mkG3OF -z!T6A`A2zWZfx7|GgH$qMW@UhnCM -z!Q7Tq|0D3W6)>ccrQ&0w{8b}oxA@SgBLdoKBR*K=^Og#TWA0Wgud#-bY5m*bk#5&| -z?8NWHi`B5{gvrw7K7ZbKxYJPN#MK6c|EZ>nsw2bYOEz?7YJf&AeRj1tdDcXze+;S+ -zUC}6!x!3fp3NtRC2YCgnw`qjS)=|b7CeX;bK_ywI2KTzOhPS;P5mNO`RT$pmd2<#L*O^%7}KIFZoVRlpdHDjzb1VG0Q5%R>c!b -zzwlYNi;$n75^TX5Yvg(QdCtoUTX1l$Z*r)A7^xh0vC>6&u%(1I4#2#w<0WPBdWl&= -z4-I7`4;o)@A0KK+^FsgvvjrFB;DOU%butX%W*KZnfCm#^0SGL5q&ae)+ZpC~fVN#! -zDAgL8PDhWBsPOnHmW86aDC-y}KOVT#C8((xyvk(n8$WYEB>^)G47Qe&SuMnkPAb5t$+0wEfbooyz*@|=vnKtJGn5PXj6gy6(xSY-DM%xe8oD7WCf&#s -z#FD%rioQ`y0zY+;T|7w6#ZbH1nyLLfh~Hj@g$sWU1*Ih#h0a#p4Yw+Bwj_Lg8A&&j -z{_^#i%)H24zP`A-n`pGM$ENi5Ox8EM%k^;L6vN&n{PkDE-GYn)GkEI_*SF{Qo7dgL -z;;lEB-#))8x6gxM_&l1uO|Isn-YgtV+Pk-|`tF=NmfMpyqu!L2tllfD57kTUfomxZ>6Z2tC(q@2~5_ot=loDerhqFkIP);z(Dw}~L| -zy)YJGsIV~bgsB(6?x4?3y$l4@e_Jb|{m^T}T*8*Hf5~HY@|2A_R9zEH=g1i#f!d_Q -zRq3t^B2rTD5!(_nDZ8p~xSHvG0$y2yyegLeH+z4=+&Ge?4THa>&8BEG^Cn0HZe$xR -zU+@$uk`ix`V`DI!BuHEWz_X|Ox37Buyd-5+R?p0?eY;zgB7ndZ03tlxJ=~us_n(uB -zAe)Bl2m%v(Ru(aq5k{eB89qZt#)s*m$g&ug;RK>EJV!{Gltb4)rj(Sv0^b=-P=Oc~ -z$w5#o!(=U$HBG1tC-SW2T7s*B3_*ShnI8D?bXWckurj><0MIxV2qerAmd=1jQlxFMqm}9D(c4|84eL>S;V)HMM)OeB)>8j!!<0yq&9T~V2C^lQ@wK$lr -ze-sBIV!Lju?n>VI|E#|J(}-9+9R$h2fdlfmjl5oIOurlh&r9*P3_pXmgioo$%e$U_ -zGK#N2T`)N9&g2S4T4BqCuv{f)YS0b)c(?k{8wv^#CT}WtnESM#k_SCpG7osBLCfx;GeqpnZR2m -z$USxES0`v`-9!^|OQF0eA|{R%Fk60Hkf~7~Rmc2WqyI9Uh+<3Nn~mYJ)fqRmU+Dm@ -zNzH}ye_5D)5MewILPZ3voq$FsBdpq^2*VGSU2gmk7Rka82(~H+Ki=XU#S}%J=M@9w -zAqV3P&s#3*%DgJb;-_R-0}0EE1lT-K4x#^r%l9=b=2BQjinHvhuYLa$oFeDQ-=*uV -z@gaD7#h}H-SV77p8FLLr!RUmtu?4f%J3DrPPmjek^n-74q!mjj=J51<8Myh<$NeHMVHG}J`l?LtiyY21a7$@9+|C^C~PaWSa -zv)@*53i~Z};U|V;$lt$#DZBdqAAdvV8}yoQ`}Di_E&2ZKfYD9h;6M~c>!WVAB$MQ=}KRF7& -zncMI?eUSeU#ecvd|M?9{alJV8KmQI7QB)~l>Yr%BvE%@?hRBf?lS4$b59w$dCL0j@_Sl%%J5}+_V@oNa0TednxigN -zK*=C5OnD*xt#t0&FC3%OX(0pAt8^Wn1ySMhcpVrtL1OVtxG_%9I&q#T`F1@RUJ;BA -zPV4YpknqLYrH}dEEGyelSwerky%PQ%Vb$*t9c-9tZbe(tN3> -zs5>}1cVt}0lx>&iKxr6NyEmOL -zM2HoCMI#2SI7YA)SX5s(l7cXLR?zAjVePo&)T6nL4x?$yn1{>RXnK5kKKIX)w~;?1 -zE#sx#?Tm^2I%&n(GVG?at$J|UiePc#(P(tewm+CJgW2Mx)kzjppPK~g)@gQ*M%YiL -zPotf|uaCx5Jd8I>am2NP1)J^6dbWS&XOh*Jt)I#IWxUOf%jQfRY}f5R*X@oc%VZLC -zN3-VYJZR6}#(~|pW&@D!oQW@!wPA(bMZdigjd~Ug!qI*_ -z_ZQ=q?f2WWj`dU%#`96bVrRYSr1n1K$lG$>oeegvrs>!CLEx`v9APIl=-FRX@ -z_j$WMMwL|G0_tZOY`>ie|*-opstma(MBD*1417TGPoUF`OK}Uvx -z@gFeWl?`4u|3QcXy+Y^mmG^(({y3qFvqB3A>*h<&fTdg}vXF1fQob}U%T=-56w4Tv -ze3{t3jz@5?w$asmpM9qF5vsmfHr#(iKE135qc&&y|9}Ofrt}B`Y9xIT;yY9pl(2t* -z1SPO4m5KEatPcDt^jF1Sj-^-PNWS38>iHk=tZIHgxmvFY!}@wv>ok<;^<2|lv{v-W -z*R++^Ue-ISS~Pk-Xv4Ok4V(X{*Q5N{rWOqwwdRX9{71c(4r{b*8;vJ5=cSgH)xFwt -zzTe9Cx2$M(t}S1*K{VrQOSpbxDy(WN@^W|mPJV2Mtv|zG|9Me=srk|7&^^Sft}y6n -zHO*Yrv_o-=#;~?oxv;Uy>($u~p5d?Goeo~KW8|&K!Pkgz;5kjRV#U+iZkYz*ls|&} -z{ecp`Gcm5m^;VUHPB5s12f55(Igw?FQ_$(mBC+@*5Up{9Vek@OSgg`%1e`prYTBDD -z@y~UslS;Zp@uXpe29` -zu2uw97Fm{KGU-8c{-?tO2*w*ooT$nlLuw@s>`CEMNNrJ^#|QX^>G)Mw*oXCJeX^N% -zhR0>{BtuL1e?sH{euBt9mSYUp&k&^fvX|mauG`V^&rTQxF_kkwjIM1>Q7N -zVhOTkaR>oT@B`z)uk~uagce!_X>YN-WT}p&2qtH!j;JVzf1ZFNK%i)2ui*KYXmh+oY#Twoyu1{_`dpz2nJ+Qyi1WMvtMTHx2>T#Wq;JOw -z?@r4LZfDWdhlUfwCiIM)GVB$nenu$pF!Gn4@RFcvnl(*AitJQL`FcvnI%ltZGe7t>d(w3W8cI?bEEBCEMyj -zQEqRmC`_yALvem#Q1%*CMHB=<;#6K0dBhP_S%sBZ!mF60B5|@xWMrJVtB#)6 -z@#w5yy!+&sTPrKb~Lb!@%CKr_23%Pj^_ue`;Fr -zXdC$A48Lr9>3c!!=mh2?xww^lon2)mKeo=Pn(O>~?hC>5IGdIy#ah4dEy`QLV;F2P -zOPE~f%YMRgTFmHtRgKGjJfj8mq3KkYI_1e&oU}Lmol_)hi2{q$jh%e;CTqmepoFy}c!`aYc1ly3nM&eYfyr($3KR{mQ -ztr>>h5^NN0z1XU)syVy%_1sa+ -zkCnYS&M{vp^WHD6{v8xhXkQe@=nl*gcColDU@p*)UAC|8GNCL;WkiG{lp|70_+Q=QpE)GMx0J_mOITjx6 -z+*rV*Qjl}9tr|!w!P^`oh=@4LgM4KTLvjUp0E?(UkU%BZ0uWDkd(7ijZsY>b$?jMV -zL3S89bm{g;DGx65K01Ow+yp&B738Ud^s)L*IZfOj2cvpOy;bOipiP#NI1Tp{wYX@V -z9P*cxFxsUmmF2P|2|OHjh^zftM<0)Sr98mN3=ObEZz7a(!hG? -zpg-f4_nPsGP&q{vznJy0l1XjQ2=`9U|P&5zG|F -z%^2=62#+g&iiExd+vKy`D6ingM5>_FdpP-@z;m-)IshZ8MCt`8^rSqijoucy0zm2! -zMXDSaB1&t9<1l1Wfq|3#3Hs^>3Hv1ywIbn+mI^xlF9A{Soiy`ckVC-}S=4_2jnc34 -z4W2;z#pd)CG&Kcu&_SUqz -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 -zqM8cNJ2s~ZlBv43Wr8Zni8fCR6%1vr7YWO -zPM@`Cu^#Bd3MgsF5nYiKrNRl67QAdx`aGJPt0;ne$LIWe&M4bNOXCMDbPJ8sz-1ca -zwd=hmrn(-9&$FZVerjmh8;R$;)>B~deU3Ht(>!WEwf2WsMc%o6{h3jkXMXwivR6pg -zdFna?w}h9pi%V+9{%e~!gE!B2U!%IT=}DyhA~$Va+_`V*&T6gnH<5Vq>yDYcsGL-n -zx{K{86()_|Yi)M$I<42O+-bEN`$p^O<>-u9>2Q=`0Ne-OU~LcUTx;^O8thc2_d0RC -zUBEVw&TuWbjJ!FS{8I75Rx;qzWGlKVvBJ~P&vs3I(ya}TZ+**|iQ}Eg4I2tGIlTD$ -z?eJxB40-F=>k4m)*Kq4Y!s$|bKJ5+a$$Hmydt*IXtt_{puiTpc-s4a6GZ^QqJ9ypQbqurqrbO0p5K1Jz!xPIG5j -z@4QG|=o+Wqw0~TzpEyBm3hw6IU)DC^K3hM_srx$KjSu_hzW-DoC-T-EkKf0AsrCj& -zxY%7duiIqhHiL|;&*_nv_4IYH+@z}PpM87K*1cKlv?S9$H?uUq{YsR{!XCeMn6y!E -z&Y8Y7kWYN_YCYAYXz2}~pP&27V0vmF{YcoI-#U`v$glm^vwYqUI>aHP=4*ev-79?~ -zc82GJNG!u{Mq?!z8UDsOY}Y&flQw-`FiiAb#TR5w-L^cWVF=PhH-os -zC2g8oh9Zu(3J*=jJ~jqV%PbxwM_pbq!fgAb1i^g4)a4~_)a@598!9hPFIj)(MV%Hu -zed}n8*1}2Js{gK;YR#RuMolkflvXsJCeG-Djv$zJNOp43_x_l^EIId)#{ -zxuz&D*;&ip?f9^LdSTkuIJEjNT5tN+*p0y|kn4l^S#yHMeEdG#Of~i>y;y>N$keUG -zwT+j%F_G3B8)!bf2|TYaLs@_WC+o)kaBkW-0HT -zl=mibItV7_@o7|lk~^HElVAx&9!4|NBq;Qhjn?+sal{o3+h*XF6SU-kj4r -z@$LOGJDFmu*H`V7NFymRgVR|}qNXcO1%8s8#e|9XL(SSUS~jn(_q|mbSw}9N$!w=H -zvZ5@OgGEmsk(oPblm2;R&6a!R90+7crcaUEmgF7@+Jp%g%=;i4y$zpTcYHAGX3yH& -zv$1I_?b@bxRNh*GusOG$yyhwP{ioh~vJRPP?>*$hH`90y?5>~)rnu4AntP0<0;3V; -zU8y%ZuZwKHPV`B$K^9MQ^ll_GQa`AvPlUe1wMNh$?PqhUPEAjk%{t?^Mk|=xXIDF# -zTZT#D@<&hu4?dV8k!{ai{k_wEo*o8GM}3*8?PlL|Ht}*w<|{Jgx?$e~WhdZf9-FE) -zXWU|sBmKPS)s^=04E>5(Eo2g(R>S$G7CvPovVU`o7k3hhs#1S$n@`EeNQT-OEIJ$3?bXh~>v1_-1gH6G{T4mHTYX!r8v|*`E9U+r9GSx=bgb<;(QTEP -zERj^d`|(&# -z&g8j1YYJ~;wq-4?7dIH5ce;_(byl|*Qp;!zR#ErenQlR?kZZ%07rrkJllew>WH3HQ -zUB&C3ZGCg-i%*OwJ}>riFIL#FGYnov&&L6ne8P*LzUhPED5|T?F&Xwj1!^q%wbmiB -z`~{2vcEXN&wLyQ+sxS6tID29{hHk#VWz0i;V~*DRj*GWs-tX)hVZF7Uy*%#>uil(B -zX5D_)Je{Aq^Zk}p4=Klw>H|GpvhUs@5z<(B&t4^~HxvWrd9H7|@p6Cmg?M{dJ;U34 -zBeVI7{-oIJC*v%<&uZk*>qRg9!%N4SZkmUecSlnN4~FKx7$2I_J4r+#?S{{d-kUO- -z3hyH!ed@%_M2I`bS)*aSdh6wBRFl^OPhYO*gA?D_4Lf8y8a7PM^=2dcW!G@`18=u{ -zHcn#QRM>9Yn#iQVB)tQ_cs9iyvzYRF^vpKg?nZv8?|5I(LlB;|nW$?%sDr0Wu*F(; -z89Fmnmxt~kao4trR~#dFnDVAmmM~e>oaE9pQXK|v)FG}PfzlE -zwS4Mm%H9h{TfZOlwG-D82Z8tc=Ei;HdH7W0o)SmN>Q5GH4!!wnvgJBfXWrwRPSZG! -zjSZ)BS$kf~gzjEuoZUT0<>4-5NwULQP<#qFle3QKMN -z7R6`7+?(xHcg&ja5qzP8VTj)IK|5R8Q%k8mIo9IM?M~fUy_JTWr~2Ha(I9nA8#i~O -zsBa|AX|T?^v(_8mn)$|lyl)=<*g;8Dimycq4`l$Cv~5!o9aUhE8I!SGS7AUiR~X4M -z3`cQ9gC}As_HaJ>f?WGZ#F<(+v6lJOm)$-=z$bQxp^R|r7@=ZW6HGJ&Glf+edk0x8B~DQ}jPSmhKK9RO;FDw*{II}6Nn`3O;>l;)52CO# -zhwPO+p(zduC$XP-;y*k1kV!dr@cqWOkO0i2VX>G9@cVET7_4dd>E)dfo&`fd5IIgz -z6joAyd?Jj!H=vm`6Us@JFqg==N?h>|I+1vI2I&L1?Fl`2oA_$>I|ibn=GZodUkTw| -zRAMirBw!VENGWWEuzH9w|N81ziO_Q5DFng596cU+uVkKZ@-03-+Q(%t@ly1E_@0@9 -zEo#K*ld0^v3f*xj_{2wBaF$gr(Tiy%OF2>DIe1kJsX!wl3=0ooVbH!`SlGMx!S8@J -zv9XUVCqu^CRZhoJ(ACfwRyxH%Kl2g9k)0kq1bfNZvWvuzyamCxMHW-3Xgj}AvK;t_ -zWOc}ugT&@iO6lO>Y#R23i0o#1(4i?C0hCLY%PNx1GOlHc7&ojiio*+x%vr8u@s8yf -zw@_Fo4l|laM!^y<;ITi_tg6)~omsPF#nb`FOVDYFESLN%2(6n{kv|WlR%cYqY -z*q7Yj_*yBm;Gy%VF|}m*asDm>4`U3rRl~;#ARiOt)=}t`KsejT4ao8!j<0!diN7fZYq|Huy7xP#!>-5G> -zlLOOmcY)buujt}u8UcF_ncOY>sr4idg}%bz_zG?ykdf{9nZcx$Vo9S0ADRoaXHq^p -z$tui)+z^C~l>`BS7=IEOd!5=%?{f-nNt`+jd;b7!^f(zz9b&&b7i=dxd*vh!4a~lm -zuK%M^@4rvQ`oBlNY6K}^9(a=yTZeD+<1+F0D=@}R_3%E?`QdX`-w!PfRBcVu8roo? -z)rQT^@!9JMhv{%X&}RqRJTuP&w%zr*s<>YrW8=B*MO=Nv#_n2Tnu(@2hqdQc@ZOc* -z4|;n@L&@T|*HrH~qD)%MKJ97xvvYWpJIl})oTS2a$Xue8~Fqz&5#ZCDqy -z;ghBf-#Xf`H`IoW1^lhx5B4=AZS1GUyz5&*i#6uz?u}cX-uT*S`8GH&XDYv(ciqL? -zD0t)6dviWJzj4G{fCbiHMD^{VMV2riEyh;bX>`OvW5Es1O;~S|L1QbvG&FwD(Bc<< -z7ChJOQ}=XO^(P%+Fln-biN^No+Ho)$iZ7GZVQ?NEo+nv;y+c#!G#1DH8O}dX;d+9q -z)kh(oKR9d0eq$kw*R0lQZ$r2S+-JzXG~zeywI**@y|v~wv)OhX%-Z(*yssSR%dwLW~Sd4=WjD{ -z+E^#UE!=N7Z79v5FlwpBaMnFrZ)?t+cV`pcb_dPYlfn6tvuV}l?a}j+k50pBD;%WyMJ*S1|jPRT$ -zJ*P3kYt)8s_7l7pe#H4T`#kEt@yn+f+Z_+5vnTjtt>${YoT|t1bkw#ve`XRt8Et2^ -z1-^%K|2zxq?n{$|%XVhWNE|I&w$N{@;bb;yjHk!>8)pyT{Y6W*+n)|w`$Jda$|ZwA7kW -zZ!$bgnm&9ZwKi%_{f0KJO`D_r*l*4Hv(aGIR;5W8x13q)bw0Hx)6I5OYt2Tr@uH;- -zYj01()9SG5F7Mzzd7HNYSwN=0cE)_e=LHrv*1v7jLzL=`Cu_ -z#yVThN3lI;)n(g1TkYf88AJK;xLM4}VKMhZb2aswE!BJDhJiNfHecuV*7Vggr#*+Y -z7p?xT4m;ASWAuWlHg}283znyz-l;ba(d!WU^sK24-dOTFYR>v^tlw;|8YgWXJ-0TU -zxmK_BN7GjOjTLK?>9qDVTsif1#61nQ&TuxEY7_YovVMC!oxyovQXSeI_#0}6`a(N8 -zD_DQm4h>C{4)v4P*EsEU8F>>ZZ$$7XzWW> -z-eA+&^*2qnx6yVllQ9UQ`l+TV9XPSp9;{lORuq8*)n2q`p$03pevju5E(odyTvvg9 -ztnn}PL2WYYA73_ozCY<1HLcUp9IdIjTJ!Y!vUy#sTG|r+p0$=v|5Iw(aacQOQ|&aI -z*Bn^WUNxOvO}q8smWojh+JOLn(rUV{uLi^l4q(hqYx7sFmD<}avzj*HjSRJ}*4DbK -zw$_8cezRSlZnsK9@6=Weqqbf=H?{4sJ!~$Tnzn$4XluiAxs+B78krB}BGZ -zgO?Q0qIlcjcvo_4#gtv!EtxjbQ2fHsW7=6%s8FWuxfu3orrGuvPW|>ja!Bb@-22yb -zoD3M2$k9h5k(eN|4P?i$oujVv9CE)&4|>W9v?C)#oGw(%aH7v#RSFKBJM$pPY}6KZ -zp_iQsjn4EV#2QbW@&T?N9n$-#CX9#8b+!uPVU{uc-cnS{P+j*|ImwGOfGfi*vjJSyUNvmPqum?N5AP_Be1}1*+Q>tNH_!GB0^jke#ZZYi6-ljd -zR>kEj4(ONx6561Gn>hkzT3%!G{yfGa+@Al!tY23`P$CaMP&-6&O&K1v6l402h=Ao3 -zFoP1}a)MOKf;5Y(L`5<+q{Q8Oa9VX-+Ie0T*|gC($JlX+2HiLA^cj*>}j{1QT7t}?KAg!ep&AFX|r=XfxMu+WFXKF#4N3SvA=5QuO& -zB1W^WSVtCAPSiP0;dR0hs9~1xu>(W~VDk-1lm#-S*o=_x3;)YE(*tZ{$aKE7M&l43 -zuBfF=d0X+S$quiR?F$MbzLw@C6#2km>|MeHJ3nWuhMU)l++W(M@!EXtcB2c(51#I% -zTM$`Th-_yBK29SyHog!xP8wn=ERqeSmu%s$ZlAlC!pN{Kb6ZUf==A7cDuN(sVpCNT -zk+Kl+^-Go!$26Y26j+IEW>qY`?~VxVkFex8lTBS^H1;3@F%u;}G7Qv1TCY-!c&jC@ -zDs!v|%~?Xq6nyW9XkQk~d`bTBP_c2MG7OBZop+%I1T#OykDfa3dcFhsj(lIIx7R~s -zU*f^~k)SC`sz6wUgEmMZ$W}R9AgiC!DrioW#kZvag`Of#de@_dQ>=9hYu!oDrPE3w;(A -zv6QNcuKgxA=tj0Ljzv(z%dyu&zAVc{p>16X2gaZ%^Bp%U3Pt3s%&D-V_)>4MSQljxF8Av6TPhYjc9R!LP!KcIG)xX(N#M3 -z<&?u28Dcs4T%5H>XDZ!gGo*~%UmU!PAC_5_c^Pc_TLhmamSZDJoWiShaT69$5Gxou -zu>D&`r9EM^e3cm&FDRjC&ViId=z^og>Zm -zgDaMITRODcCqzcFDuk6PoFX0xj2Y0(k(X5ag9GkD&cDi -zBGYiaYHk>#q^JPy6O{wCJ3<_tyn83|n%SIeInOp6#E< -zJ(5m6L#wgRhh5kk$x~<0sy{EcPfuZcUteaSf+WUIrb$8}+c2xIE{`nM1 -zQ8$WQUvOi=V95T|a!&dt@kV~kP1}wax0Ge$NgPg(;$)<3dqFziuf*i}B#mo~!_2lp -zeMLfRthY~ZU32B~+W2g?`00_Ews&t?SALh8?An_i-kkkzHnx=WPI#}61f#AGyTWN_ -zhHd}3{l;vcwUMElQM*HB3F|V@Q$+P)7WZGmnZm?&~ -zAtXr~y>TGd43pVUl74&B+XO99&73&nmPx%81nuo(LPk3^EM`CM@=Nvi5;A_>-&Ro- -zg;$^niyt}F5Klz?h?#aRzQ;@(?bb^DW&ZLWvct8&1?2GmLCmy!ptP^>iUi~oAwt>p -z(~o@tCoeDn5;SuU27B9rK@IhT`ZH+g*>esPxsX)*5ZM#C*-C~~#h}_xe$|^!;qE{+ -zRFOTgW*MlUAUXupqP8Qb5a9}ssr$Gh;0lY#54a`f)XBIi!74*=O}?&yO4L}H^g@&h -zm1h-NPVl-I*N3PHw1C5NIEf{SqS6B4dJ%#*aYClJ(Ct11Z=|)3-kCf1v?s;z;~KO) -zaoV)m99szwQYe%YuBn9zx8v9kx99MpZ4GlM3D3hg#Dc6WUm6ihAC;4@r(ZA0i`UBV -z*Lp<>&LCJ4XrU^`91;-XU~>}Q1T6;fz+H|AaIseDYa8?~V+{?!uYu@(jW@Af;nWIT -z%=Vp%9V63|Tp`daB#y0!B5JtBLN_y4j}2=}EFEK5%lfd#v3k8GvMfS{DXRVzH4wDh -z3^AfUn{RpgDMPm|A<~X{HPDb7L*eec#Ifbs_X$*cQYpwno#gw<$#U4>j!hB1w9eTW -zpEODIn@`iGckZNv%r^%S<8#kMu_uzkhN;oN3u}h)Ji=Kuv^dd*BCKWFvOr9pH%!^V -zlu%+wf-Qmm$1CvFTtzTU^O5H2cNw3GH%`F{9`)*nIjf%;@fbh51M`XkbI~!9aTSA; -zY}aNMv6?ryZ#L?Vc)L~t5N0Gkl4 -zLufqW4GHe65dJudV}wW9i=a1q?Nh95_e%F^)tV)}*U8R$%36;h{P5^sqLw5TUEgH^ -zrPP7tVP6%?av5YQ*r1r}lLcXw!+>=K%v2t?*ZK5|xl6qe(Gd!C2HU}%R$73P;Q2S? -z4A{B@&%k}w1z!U;u8=0MPJuOG>H1X$mv&aI6?giLV>|iH5If1)Asr41BU&kH)q=t& -zORPX^pXBGq)!dRnV7lq}H%{t+&}~fUIoIJ%5>-W}4`)~i&_PqP5&oXOfE&Ejd?~-l -zGy0rXmA*HMdnY590NA``!ipS{qVmE;21*k9vsG&6*63Bvk5{=n2>z#U6|4WRdBV)U -z{U+CG4Z_c50ZPz+4WrQcH=NSM_lYltgXa?!%mKp}g8>Hlr`=WG18t>gHL$AMH9DiS -zq8rVB+@4mZdGzpww#JF;26;*Z!K9YG3`adYVh{_^%#ABx|+X+g#yqhD;PQsE( -zK7WVhc4BYa7Z#-`t8{X4;6~eBY8r5-3K-MLBb`!K4o+YV?F`?0&wWyeW)x#gL~Z)q -zc^!;sdQtUyJmS%r{?6GJ37M3Fi6ij3F=6CiZZp<@cAP+d-KeXKk70KL3VnUVeiI1y -z4U@>}k3M}P9|$Xo-u&nVL-Fo{t>K^OEcO4vIchWqk>ka)z6sYg>Avh68jLiQXJ;ZL -zrw;-m{AQgJ&xa!zu-U$?635xz*1mxeKtU8z=Nmnm?z)`u&(6j=_Rcaa7$|lTspwbALD6{emFYFdPATg~dpM!7-o?@C&x{-}K -zmh*vZl>HU5Q7S5s%`gYH#x=&tn0>TMX+KVp>gl3A*_~T_ZG4ne!9;&|fC-p}ajN>MEEah{2wBU>;@9_98mp^q^_(()58n_A)U-c{M?u -zP{H`YkRwSFWzb3_NhUJlAIhTo!5;Y^ik11ykqVtc8WRNuT)sJqG2NNlI_ -zZn#!fc^s?;(s00`}h_-2jn4V8x -z6SQ=S)s`BS9112aD~`#5*=E5=K|o6+rY*4_^Gd&F>@q7-#UZ9>OQtHCtN~IUzL{;a -zGAMy678s&pTb3#6IWO`<1NabHctfO&cQEeJ7|ah!gz11p&%iu{rfGy_9A_&Z6}CS{ -zCjqlPkcrF1;ZJi#znt-lef_nE@RIj0=OaZRX6fR4iW0Qo;p?N6sPHJzJpW-fG-DjA -zY~I^+H{{FA^(&ae8SA->!C$@bZd5qgQf#8|ob5;kPdMI0s1DH-VQd2Ho0zPv+N}M^ -zh6@%m;*F$WEj!enFJ4Cif-j1*ip(BG7OdSp90;8n=`HkRr<)2i27PO6^$3%XS6&kB -zLB{K846QWvcjvWv(nCYvN9TP4hOV`CLeGH{Vo*|{Jd6?>_UeiIsqb$SFjC6K)&6%` -zWE8a@jQ$Km6pa&&__UCd*K<9`PU)-3XC+|AwvsbV{{TsvfGzUsBov*WFI^`0s*UFO -zdGhjFy5adD*n#MBGKW#~sv|LiWx0%^5|$AK!If+o0o<(8d-VVVIdtL@y(yfQnVeoL -zp@(&_3rrY+*tjeJ4Jy1rQ&TRu!u)wn@gZ`1qAkzdn9_8BLhlNEx;0 -zAhwWf&tse|26iW&_wZzYHoW4_$5d7f+a{Kxa+VXf`r@1+qj3>=*uimat1=4wE -zd;MTBX2myB?3DB%Z+QGJz -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 -z?KyjzJ9YN}4t!5@HO -z+`8kJ0n=+-iyqzHpFD}kI)(m8A}S@x`FwW(sWuZGL -zbrJLwdiR|t7m65_ujEW#X>lBN>|vC9%H+|l*jA#D-VtR3lVjmMxFmlm);EdoqI)l^ -z@ebav_B3b_zUvXv^GIVHk2_O_olK$?udZJ?VUe9?+2N_?KaZY;m&eGtIPy=>5PfuC -z?YYWzvj~GP2KKaSJFcQQ5z_YSI_yQkiW{WPz*b+@b!qy#o3{O)&1&2sNu6cT*2nY7 -zbQ|`cTk6Ye&)L>G%Xyfvr`p@`^|f_=Wv6nGMXNyR&o*=Q&>!)y!)W7@t$1wSdBLf( -zHcFVByBULv*BNx8n>Mp&3m4!uYS4qx+{IiRufR<>94>FB;^SO_APG7rk!uJZmc?vE -zI#*6AtVrjRDwz)oEGc^dLRlg^8ivb54{ss6>WjI_eaSy;OXM8)j=lEJ@e}bZ!K)zE -zCr=dhK`FYJ3+cV$0Dcqc;>_yJ^#Z*;yAJbcN*^Nyd -zNzfeTD+7qpi`JxG7A7~X_7$uGM-YsWQeC3J;G5qm`eVNEw -zWSvxYMg@7!yoafchls5L@%FOM+5G{P6tCvgi~ln1H2$2!9)#VMxVLg8?WO4h`lUHO -z1qzVi&&WUt~$na&M -ze4A?ey|{MQH&$td=PE%|kxd)fBn`nb6@yb%TPB8Mv9fEpjze6*MpMM)ziyL1fpSYJ -z5F3+43^t$w#myCMo)<*!VJ67gVmgND!+1mU@Nan+IJ;XZoNae+CI5&wcvjok#YpB? -z_6-X<708<%h1Six@Er%cIrhB|gIZ*pSGw~e64molY8+k+w;Rs(T@+)Up@^Fdj7FXX -zYD)_%1`8I`6iwsAfbM88o5;g-YK9{`z6^LIYlmUvXb>}NXzGlM2?}_j910_)fC*`0 -zO+VfrJ_e#if2ze@2?BppY%RQmlcB1c=D>f6V-;(8JZX2_v8&y&PD%(yFwh1s^G18Z -z5=ywvUbDllWbH=0FH{+f_kEMpP&57Jg`s=Dfgvde-W64j=SxxA%k#_->mKyQc^*FC -zg--?EeUg{JN?u~vrf+R8x1fWFo!577=27E3_@f%Vf01P^G^8GF}R;{q467Ru8 -zgm&U!-Yau3)(HZNILKsatx>G!SomqSv%SbdiOj45bFEY7nJ9BA&k$B%kCOTrM;jUG -zCM|CboMJW0UWO3pD=$Jgz6)Ue2cZwb5Cj~w)hNM^hWxS<)V|^Uj~p0U?H^Qmr50^9 -zHauHL$I~v>LHP{fB*)g#=t5dT=nzzL+NJyy8Y^>44k;N~mK2uh+DLUwd9ig1v)*kZ -zE9_MKe7T8rMUT*tq5jdLetMZSdt-gvdzt9$)hMIK6@3N|Wb;*cM@2(cu`u -z;7!I*q3If`h@h7?F!Uatfn3`P)S=-q+pcK=%6+PztC7;XFQg{HkP+uP-7jAE4jG{sgEORRF0ys=!SkZ?<$H=j%{f{Qb-GZD2z_7W -zZGo_+z$p~zO%-^au(o8#j%ukcr#OGo^fN&2tndRL^a};I&Z~-eu>!5&mIQiP+xbRS -z5Lr-FB~B>ipqr*`N-kp^M7g1{6o{X6D%+!3A2bs!H=NU5 -z9Q&sqadrK2dV6}ZCY!qe3(AyD83~d1lA;WJ$Z|(zH=}3^R0P6+O!LX>)LobZMf+~aXyvicSrlb<|jPuZ1Z+doG -zc1})|gjt;i~3s?{`~gddSjScyVgHN()=xPUu7*F -zFo*aw?Y_STQ~mkPee2fk{;<6w(VOcx>r1yamJK)N-`}2tErxp+(JPy>}yS8)1D;J8W#8@5ql9^>;UA@v2&;%X5VU>S7BB@T{GPQu6r!jlLL -z*nPi~<(#f4R?m?^9wYdmhbY-r2xT=||0oVbR~#onBY{TGaE?t1NDy09K_gT#OqmCp -zO8R8mJ@^|`PF7@SfiCB;j%rGZZE=pO@~&#ag+!>W>j*^t%HLq9u51x2_cyQ#i-2sd -z`oOQ8>^`vg7PcxWOI(?+_=FAV&)5D3%0ZKNFcLEezQADbtbo1?!<(Q=T;&I}=^X-E -z}@Nna!7i=&(IHC;5C9qqv8uwVON|~PuB|V -z%ZC`jDPq6UZ%nztW_n(DQ+C=|FP&9u-+!_?rq);H?N-pK)!6Y6IfH4bCfS&N(g -zX=Zi~M6P?SWT|E9Tf6n*@HM~A4XowV7wn+(?2x0>9Cw1(mL=8s^tp2y@RLLJW)DSW -zBk~_3rooU7(jV`L(UhIQ>?&PJqcLz1v=I0$(L?oJ;(d_Fh}IOXiVGH5bnBgq{-G=i -zktQq$dCwu9Z&onDADU=b$~$D$GA&uPh~T)EV>*r~gW6T1p}pv%1nDE1ChN$o?MSvI -zIm95mX@Qa^IiMZ5vTVzW!QR2*dSz&&r~5$`C%*+jsMrd%<(rc{mMUz;%E;=kH^JtqWdL#i|q$u9*9}ak7Y6C58(ld7wn^ebP -zPv7HAAt-N0Js<1KNGf2Ntm)d8%AktP2(krMJ|_x{$$>;-MOl(L3F-txkOP_`PHJ6{ -z8j~3A5JgFqEpxb0_^wC^T^MQ6l3=GQBicKnoe9vB)ti)A-*J@kbpbr@EZA&qYj;PLltBb#Bgx(B#dVagSjLL%s6w=s3yessm_#ELnE|Ke}z86{?(|)jA*W%gDiDxmisRK -z^=oLrRRotT=7lik6|eBYSB^l+$R3(UF7S;jxITX={Hq%qFfQYw`pPoUPb5{A3BvEu -z@k&(%q6mKtQ#i(gF7em*O^Uz!s$dZntZfR&!b+Ti5OKWxS1YLg6}`xRMTpbC-oR0h -zobXqW`_=HTHV%7#b*?k|m>dK=U%zNU?Wq2t -z9`zhC;<4Jfx=#->5Xc1;A;Z6`JPZAlB?ikHw#{OsoMYomCVU1%6$R10Towmgmjfq^fP3zW&YId0bKwHYY(bN*$#>`sqn#~K7t -z|LSw2K-CYy6eswmrWaBmk3uztVV>b_#QJ{Bgu=rQrhP;wf1Eg`XIDU;%Vm~hAn?i$&|}T2-G5Hl?qrw_>L<3>81C$Lo$XCm>;l#Y?Hb#YhiO(n -zu#4VkQ-7-OP7QC>9j@43GTdkNGuwl6>y6RMt}AftXqB}!w)ck1erHhE*`BaspL@ft -z*BGYox3$5#!E38^f$j0bY+PLLSs(80It%9xcUimE%jzCoSK;`cK3Wax4BLCf<$>*; -zhkIDoH%~*KZuhYMBGeJDhsOx);tA`A&y?3?tUdR$x_puGrqU1PS2ad -z^Nv<3mTjuy5l>?XKnZ4os2wq=KS5g;j<9>jtA{0wzpchKhL5ZOC0)pQHC19;^iv24*0WLdFU -z$FvOB -z^Po7&Zx+I8j3~l!@SXiT9MYtdFyH^j%1`j&kMgr?vA4%NnQ4ZY$7>3cY^2})Z{{}q{x{tFA1V?5!T#qrD5b0UiU0Zc -zzyIf@Ds?mu5hVEr>P(l;cSKR%p!NFAhBc5(1%R_UemUd-&N*Q7e-ZJ&i1c4X{x1R- -zrymK{V86oA9}a)uKn4EP>j5h4Gw_e2KX8x%`_1cq6N*ia{=hyH_F30`78Kj?=lmCO -z|BI~t{kmfXg)2O1eL<04{d4-oQZH#a -zEeDa2(K+gRDBohcDyXF$uJ1f7UgL3VJS@ev6xU4G -zfJ=b!ThLaQdW5E4fOR1#YN^N3Es{?^lzKd!2P7)kW^nDEfEm>y8jOSm>#Q`!lLZ0> -zCx=_yWec996eU;VltU6U32YvMRCuz2OxaMOYPilyQA!_xgJ0X*6MPU_`Ews$!K^*) -zG^(x$5`efYVrVmSg3|*QcZ2?a^q_>$qx0S$5r=RB05VZiD?^ -zG94QoKkrqp6z=fVnph1Bej;3p)|fwnwK34+72+R$fi#96bW8sN$mLJ5jp=m1lMAFD -z7Q*dSF&2)nD!E|?ug$U-th{`JNHD>45>3|SO$U^InKfKl;teneIoY)p#SsO^kX4Sl -zP%*@%ilM|9zVR&&4ubcbRjnk7p=t0UUpiDJB0=NeEsK*4A{Z`ObAl@HqG^k)q8cn` -zxa8hD`X%y)u&zc733WhDZ9AWK;*^-n#EcX*sHU&Z^(T9253x?w>9|o!K`fLN -zRc3k64rPgmF!tX%hadTQgZXG0(jJb^PlS+3bL2{VDPeSA^5jxvDs9&)u0?plnUc$j -zu4J07Ac4yHlaH~%KcC+JS>P+}?8Pi8Ml)0b -z{XH#+Bny?qiykK0ewk8FA}{tPtF`-^pJH5oO#p%bDlE=HE1u1(#(}G)$@aCa1R1-K -zx7^d3CCtcEM(d$x%kN&=-<|qsmE;5}9}JSmDN>xn!gRPeIyecM7pa}bm#I=TSP -z7@CUX++h?^u#riz`8d1md;0|BJI(9$(mVE#8!Y!f0jm4dS#jg~k>55_&KwV$&dX$P -zB)Zd>2D4q)N|;gPlBeFZGmkpnDcTG5cVqcvzAyRmX?jST=h0#FHe3hcdU8-+I@&pH^ml`qx-*pEpdM9L -z>MV9oew^&L=g#wb_$ma=v-bM_W;LEWPOuwfHEtC?`R^m(@>{e1GCPN_JZrzN -z*VCo`WEkD&mmxE1I1@dX4PHWy)a%n_HtT_qKkQ!XJ!z#lX;*192I9F@Z?K9y-eqs8 -zF;tkY++FNv=1Y7293vE)qqE`3^5+qG;qKvh;|41+u{Kf~ueFBXKTKEhF>Ef@Y2Tku -zq#?IaJ27-wXEA5pw>qz!U;EE&cfmY&)z?rSTTVA+?fP*)Z}cba?z%pFeSH2+KRSelgFWbYI`fEXMG*tASz@XimYNkKzz8^HLb~s7Tl)A~P -zbyHl{9vyL|kKVgRv-y(n^GQ!UdEI*SMw;4eVttV})ng}e|6P66&dfxaC#xV>CB~EF -zK6@`OyLWSX-o}ITuz$G4k~yS&Fu*vqR}ONlT@vI$F;+;k0!FWq>N^4}{6&7lKtoaP -zAI6tI6Gw%%Il5%%=ef7eJrU~SqXmAKA7i_Rir~7cC0Qy%EQwUM9HUzfuUfLiF_s~+ -zNExdzCU4t}VY-g2T7nB!L3vLea}oXtFy~y8`JcSR2hJKJdy=s8^EOZU3Y~{sIU|gV}#5qzr2VEtCO8)OHpMsT3o~;*0qd}Li6=(s~ -z*<}`&fW`)ADk5Tp39|6P8Y;t6XE^zZ+IT@!z^i=al|FNUsPWK%_V8AmEJIBGEe&eP -zfzhcH2jwT}roWUr>78u#!1yxo|$0e9Y2KqJTuu#_{V@HRuBCsDb|H|;y -zK=9Zx;!o1a<~;w&J3E!&Kxi?jk|fIF)9Q58&!vuul#BvBQ3M`mT)kp)wB -z6h%=jLslgjR&FVZ)Y6T2(0>^m-f7rycEWW0B0QNFD6KHZKMJb{T$oE%?IkLL4m3s_ -z=Rr>j$I2|;R$yfg=fuL$`52J#CBs_GF8B%Zy7@}b! -z_cn)QuRLoJ*;Z@?BlM}31iNxT&IqZZkc%mg>X&j3D%ee<_`q`3FxsF+f4)2e%3Y4L -z6vYI!P*6kzZ<07Z?fP&X1nNLU1iC0)*&*{eHH_p%_fMWjn9q{YX12b}W9nMAU -zQW&sy31cO)&IvMz`%>Y(audBZ!r=evCUQZT`PQJ<1nI?3at1|~+m$$kBEl5GYicPRK!pHW2if(&esuPH -zA4fB>OmRXv<&ESN=xh(U0$_PmBpp-jFqTk@W8axO=Cg;QM&#u(FXg8_KTZ0*0(;Bb -zVzhkQv9?iu8Yscv2H$% -zQf=z&q!*QMJhy5LmIg=Gq`S2SQoZQ;dLFg)@M6+iTfulojA5ry$yXM``=g8bvg;YP -z^Z24x_uy^j>ETq0`&I11cv5Tqu-ixyFURT1(daza`;gb1fkEPBQQ(z*qhfliEUXY- -z5?CH7!YIV%N9u%s+Sb7_;TmaaWt)5gIf;C96m8Nnt2(A7%ESO6XyfEA$Zwu?43`L& -zV#vxDL(?@aa%C`>6OD-^2wXx+hKFr{|9O!vIt -zjLEW6+Thd}&#EFcVXma_s~edwovRWrDY6P`|Gn;VwTSOoQ+dAc%6@9D9-*E7r&`F$19b%F -zvvE=Ar+0%x5rdY`hgwGJPI1c5^nl&Rc|TG`>u>LJ5-x(LeZvgEGkDTvM!|WL_0%wx|gO -zV81zg&u8vdK`BkqbtW+|BEyX-i7;b;RTzTucZ|UdboBT4y;J6t$0UAq>DkUmGRoJql4ZsutPoi9?L1}nbtXsQp?NTk52X@tv(-|&9-!`%98p` -z=A>`3EPdkyRfH85{^Sxy7GjoNRxRyz)o|zgr6e?#N-^Zs1d%JKL_o)KY4=`LWw7=@dMm70MsOWLDt(TS-r^@K$3FGIK;JTGShPey -z#g6rr9VgXNNE5d>9_Mrvg_l@K75?d7PN_I!+HHQu%9)yFih+ktXr!`4=!iVt=7&X~ -z^;ldL<6byPmP%o&>(@LOmFGoX#4@WoowOJQS3MVoHEUnx%dk+Yeb0trCrI;j6eUlY -zY5a|AC$&x?3NEfb=(QD*cCWdKIrkB+v -z=aY76Skm|;)Gbw(7dVwIS?V8LDnI{jmWMId<&zngPsTcmu5(3|Aa%0}59%8AC97Zw -zNW4rW{s;YzY{}UneGa-0?=mz~9EyV+o5~5IjfW_fGIx}@3UR?8VH_65aQe&9Uy=Sg -zw{qG2G$!pm!vzZ?2jd{F!y5(%h9*2w<+|&B4wk})ab;YXyCf|1f`7R1Oh&kZ6OI)c -zWs>Q1TesFmjB`mp%vH73QdQ*rT2%%5U&#o);4Zq$I~ZKqi~Te=V3jfyJlNqo({j9*V48N>lzlD=qknFrQSXs}EjvBgYTl -z?QsCv8wo9-_e7)pGV)TOxH}LK44qE%Luq~w9aL-v4CI{yW5Wu~K=j>+3=tSNahTSq -z()-zgbV}WS)G7WT2x_?M4C8=xrD1y>F_T$)A9P!8^IcQln-k})r9BPzlf~;|H(vZK -z2#Wftd~apg$D(cL{vqlQ;&^lq(bYe5tA_|DGdu_9t#$M=#!kbs;lo3EMPtnI{@@iB -zK)^Z%ZGa}DBhnvsHyu764dnQ7WQsExYNS@ReCwLzwuhERja9Y_y2zO7BCx@ic@7Q# -z+u2~G7Md;QXVeDE{_?s0)|osU<1vVKr}8Xku#RBxysHvk6fH%yL`7Cqo97(KynQAs -zDQBlJcbVMlLWp*j$IzlyRJAiV2~U!8O8D1WXqfUQdCF=fumb;@f+*BY0(@k!H3V;}9UINH|f+4|#A-=G}=Ae83pCXNhn3DC*NX^a&G&hht#DvF$p~d4Gh>!~P>{=KBa8~N -zzj$By0n(ZiSx%~RoC5j-tCG^R_gej(6F?DwAz!K!6!=KO$d4}CRp^GJD|Fre6g;*={4;%yp&n -z`WicO8g;foAdp6Tz8;VEu`{uSSm9Vs -z%ZZW3rjsP6*vl>L+}odzuWXe>1VeL5M`KA;B`|;_H~w*wseY%BZOG2;WDnp8;l?zHlGQi7L!0^ -z!8L71aZ37jXF$7KRS_VDZk)Ziny*3AF4k5!Et=p4$i@Od6agM@x-#~U%YbWEXdIQ5 -zy}t%cbt5E_7p;xw?OqNBFC{;yN_V6tsvya%P_o17xTDodaOFGo)G|}-AHo;V_*Y!~ -z;uz{OyrSao_Aw31&I)wXD|YyGrJTpAAZnF_)Bt4|B{=fn5y5v{HUc8%X#ytv6Ghun -zCDDD1j1Q2?=wr|j9V}xP)JYv9!?RR3ePgF@AA6v8@U|ebtsTxlxfuGBy8y8lQe}(= -z3*;`QY8~pW*-*o$C~!(e&HBh%P|~LzBpaE`i;J`pn*Up7WS-MZYX)Mr#_3 -zd9kcvNc$0Fx^u)iyf1BkEU#E@X -zE-e{Gv19oHz~JXmqWcT$#)n*_`?>~RTGTbd3Bva(`<-J;P;rp=98XkEE#aOlif>Yl -z3TC$K8s}V`r7Nhh)bTe(5{ -z=OWU+lV_-2C5d;+a~{iCavAD#j43q4g9xA!+K!$AxdFeVDJ04o@NfKA84FoYdLIL3AMI0473 -zPpCm{jDSh08=8q++F`ROFd4YLT{yi#af4@so#_r#U+7aP0*nM{N!D5LD>(DoNEg1s -znI|m&M@aMMWzwz3z4;eN^9c1Pm;BVODmJKZil8v6U|9@;8Z!n5o1o@{YDY}VbX`0! -zy8_&aaJ=$}QlC}(Gv%<@)PiNBwe6pm!E!S2mh2JG4*G0G%f9CZ;yzZ^EE1*7k1k^94 -zQNPX+%To$r=Z_1hqk;KtjEWTZEDhf!yNUs_jHmWEJJJa`aqJf>sg -zoIneK204XLxU5#->L(-iK?9;4Mz=5KG1%J4E`e9Mt@0w;;;8Bwwu=xRL;%}gz_el+ -zu{DD0HwIInwAxu-m6Bz^|6IPjw50snrLSSD?(2bAf{uX+;|S~l%frg2IaG*-Hkg#` -zyIaaoxsn;jRY543xI+?2$%Pe3Ko)RV@@gqv@2l68Ot2F!TZAX2)bQ=3Y8WL@E@^yY -zlvE`}fvba=DzUOaArLvfNQA7bdoQ}*DxICdFo|-N! -zh;xzujjL1qWa#*?3i5%K5zq>YSs3a-^pqkvoX0TCYP0`3S(I@6{^Mqm;2j+U=iA^7 -zN+Nvw#756JT>Abm$8))@y$(iF5c+tUcay^LPCvxJZnZQb1g3-D9HZH~S -z#;>}i*u{IgyDFkKluR&SMR*m^%1e1$e`j|akkY(p%0|ge5kkPu5YFZnk^N4EibM*a1Z3Bt(rDZoz;!AEw9(TL#sMTJvav6k}W-dI_VM -zqza;d!SL&oo@UMgw4Ddd0PEV8TvJe8m8g2ZUzF(2;xWA$vc -z{cZ0&t$+xsJhrtzfI*kVdl2+jZ8RA)M^wYTdxO6Z^UXtdpfKO~^$07f1VP@w8W9u_ -zC^(muFZ55-S$QrWJQV1VNkxK&0PR?21ZW71U>k%{Swm$MS#XIA-@p(p9dt^OgFYv_ -ztZeg=A=$Pivq-{Va<A;l!s~;TeVfyrT^V!hW-NLI=b{Q -zAelNAze;rY6J%w=hbZ0uZt%sQgN)B8P&@*}6ZtbjJgCmlI@ON=@n~6yFnCBHc_dZ( -zLwxvO3}4_XoQ$ky`YVMx){(;O!6kty^%m8EDe_YOvWiJZYTQ+Rcxj4qtALTf$AXce -z*g^?_!KRXH3D8R!(Q*|=;1!24Y!+IZ;i{|!GRooIJAFU?L>7!?m3{UjHmiRjfe3%X -zUx>&3g@ZrdWB(#}oGAT;3;4efhy4qe22d)9971TS!e976g)*ui{)JEBM|6nt7s3Su -z4wvW}p2*98p+zZuRJ`S11c#*>uhuym<5P_rGb@!}D6i_4^$jBd+g}+@LS?IjU8Bto -zVZ7NoVHG+FuUsqv4|)iEBiq9PC)rU`sA9<#$u>Akc31_p+m9r4pcH|S&Ot%3aZ;BR -zw*E?y6ae)*RS6OKYi5A{Sp!N7@e1!64Kybx#yiIfcm#4gg4DU)31m_3T;YV9xALRc -zdyTR5)Ekwzp9~Yc(34yNnZy5ThX75pz&J&XNn%x;>dG}x+PqmsLXAL@1@2=!lI3F* -zG`&m&<|Vr7xU$HMn!TnrZkDYzjD#Q0`6&ws`a^C+AbCzYv-8k*iqY&_Z0G4?JU>E# -zRy)M^05Ll4x+ID%iYixvHU^aA9SWR+ -zd}`N^lFGFJHW-e!z5+ccA1pBSO}{v^2|4ZnHpwhU{>-{ck+sQKpRH@S(Mud{sH`dDxZ1A0E}!ZYz-?MSdAV_&Wp|2Waz -z{3fv>oO}#zbjYr4mmYMv&jzoep+)_ -z+>e1ig?PHl6QZ=Jw0qKD9b~%iU-`<4Jje^Hhye125dASpB)B8EguwulcLIz^N~#sUVteX-q@+Ci8NtlInBW}^YegtO6;_6QTx(WTeWeP8mT{d+JmdD~CR0Sspa -zmKRl%os2nyj%r61y0T?~uP`DE6N<{pDnULWOis-KICTVq(?Jd&iTaQ^4j+lIMbyV1 -z#d~O~ve1c6H2{f2w+A&sW%UCG2d2yBS={@`D>8BDCI;K=5X}u)Uhf&4g7QHWts>q5 -zdixD_InAo=(aZF;UrO+upr1A=2Xs^=MOg8k`vK!03_~+c=T(^q1Zh0W=%I&OLAidw -zs6+g-ZZR7F_ -zFJ*=gBYr>~coZcEXR9xR57-cKdXL>!09g4Rh?(rPM;S^T{fq&|coaB{P?o{EL@{w+ -zd_jT1)Q8&x{Fy|5YCe$Uh*^+Vg$YgS$`|>TKkO75N$$?P$j+NVeYM1kyk;A*igB{A -zb!U-hxkbJr{mqbjX)Mrx9^`Y1t>47j=0MT7i-G&R-#8U3;&4jP?Y -zznpZ)m#~4TUzUnU*sovC#hK&oFq58fJtr6O6dr@lt$~C{Q$0NeX5@beiO&w6k;nR? -zc}Wvvuh{4~zm1^_m?(4cK9kZlM(r|%Bbl5aD7?$4g3EzHX~LSrD~tl>oW&By67Pma -z>f~Zro|5vdy*Q5YDSSG~g};vPM|sxe4`dw?$z7-Ur!AR}zVwf(_5&zDf+7Z3NmCGHllvm -zjLMn3Ok7?Bg&1CM>|q8a$xlQ3Ca#Jl1k`!3`b*c`;_9EuEM6bb1IU#NO&ytOsP-UN -zC|xK>(zHS<3Jd?hUWbJwfQnx%^n6+@h=n`NjLQEnu?t1g;rc6WZNL5$yYPR&riMF0)%vY|huvnPAwaaQoEsW5x;v4IetmyhKvLSqVnqzY=tJ@;8rBIWdb -zXC!$-)_u0UsG5S{*otLYq9w}6Gw%v2Yr{APR*`I|h?{|sRhH#C@VZ%-tq_rLqM%4J -z;=5BvQcAW@^B>tq4X~B7EY=+$CX=#Q3bvjWi74jVzjRrI)XuC -zvK$H%gfA@m7_Vp8pz?dvZDQE(l^^d_B1uU6W5q#{-mRyX8uj$|*#Ye;8E( -zX_na%C_IEHW!7S4i>T0=s)M1`=#TnZW4dTgr~OWScpP+(+AD|~tL`5b%~5~cT(5hr -zl~$iMv*z1sIBL#Tjn+YXtr4wePOU-hm_9WR1swytwW@%#W7l+};=>%mlSM6`3mOy# -zmZPlEb5c4?dW6<+g6{$wB_pm%LdkThga_r&MK`h}A{sT%acs$Ot4@-9JFb&&X%>Ei -z?)eQQMJaX?w@4_%_!-I`{XO4~TwE_yNkvs8QT|pWVtr?E&AqPKw2;eJF~##cuYN01 -zyo%K{zZkuQRU9JXM)H2Yfr-uEMZ)JBPQE433;Xm6M5Oy{kDkR5dU48TecQ?}&vArq -z(MrI(pjYu9Hk^D*#uPI8Y{uSO8AT@Q_gk_Uf-1z-!KgXymqFQ^pojON4}~Y3HOhP6 -z-n$~8-J@v~s3(kMx~8b|f~69Zg9ax$k4!BoVbF}VgG*d-YpA`l6$$MC=3SdTC{q7D -zEs!5HrjOv!UriTbY(q1A&3`pZtJRu=dY-VpnTh)An;F)-!emWeMKah9H=X*sR_|!_ -zgErK(w4-UwPF>ShwR)$i4Qm~31;tut343dYk+#;_D{VAvc=fc+%wATuE@l|p;Jpo^ -zmG((3`s%_TGh+ma+u?;Xw(RMU`Ix9B>esB#2`E9kY=)k$j* -zaA}PuZQ{JG>M!m-?gtK+Zr$y)*-1sa -zZW&K+FN^6S45QbD-%H+luctwHbY2+qP2u8hcJiMj>$FTJN%H*Kn(W<|tz2^#Gj9Dn -zjkf&T>t-gA#1i-(yYB=h_d0t!)VJCDd)j>N_JX?KdNxO#9`;`Ky1VdK@v_(N)xvYM -zeVNy%(y6mrXqsrsWc9ASwWjtPKij=b?ykY4m>ajPl03g;{VcD)A09$ -z4^G1$W4{1*O5^y>*aUf%=Ly)pFBXG8D8Z1Voe94BZT7vBwa?XY;2^=zG -z!^&fx4h0?yylj07>ZaPHk*)7D8rGKT+JYpCA{ZYMCrXyY8#t+L8nyyjn|w#%_-9P^ -zb(ND;yeQ9F7U5)5GH51(%87<-JCb!r4u3~0h(=r`XFOpj-2JEAJ>Rn_QS$|miOvCm -z(zo_Lr}^F6IT_9u+SL!#b|q(DeFb4Q^PEG;{ssQI-#8w0yHes;OP*TT3Gqc>>*~_knYbnJqO4NnH`wA-1dD+o-=d&I9Sm|L -zbbc6)t{27=2FM_~sEma#3C8Aw-omR;0Mbc>OQ=MFLrOUjLUrD(>Ag;^InpMbmqAg= -zRo66(oYwn`$;AAtn@*BjzmzQaax`T>H%!}ozm#lJ%;v9t1Bt0xCMP5BjU%ceBRQtS -zfI)6E4(m#?X$bHud_&@!bwBNWL!Oyk_Tpkw_{8!Ogx`%gCcF`N-{R~$VURlT3qBgq -zsLGNgN@aMpWq7q$Mw(AMe$GjgeBXUD%>DP!_-2IP!*3v6zN5lQ%Bv&}$c0_TW!(?# -zG6Xl_m!rQt{msio`YYit?!-SHj+N*c5FqtX=*Ikws_nPzql^s)HOCoe>nVs -z`Z>sE!_glOf3S#yLtQ9xp~S^Yy22g9%?b}(;el)9yMc{0k3=}w4{#j|d0GmGc(CPh -z^oPSA{z8uf=X{I(?>R>fd*#UKv_@LLSrFu~Uy>bN$$_#pvg^P}7;W|~g7(SFk_Zx9 -zKuUGCpj4L$%djj5T?b4>M|HmKzZ1DEl!>H*<_s4&B;POXExoNq(3ozc7F%B1sc+^% -z!)}_-NQr_#v-JKi+K%xLL{SF~{WjL^w?$F_SU@>4Bn)ZPo-NS?kSd)ARWQ`~iCy>g&235zi7j5U?{xw)v<0a3l@%nADU}w{Yu>Cg< -zB_aE0K7x$&J@@qJHnHMLWM=V4kI6qxYjW?-7Qj&9F{K~mJ&Vzmyuyo>_A7G$735*U -ziPAUF1SIN7%%7i@B93HbhMrWPyR-(5i9@Wxv2^Y97=O7+MLBD3|dipo3=6w9t{>&<1bg>%D&$v`(o!w_bvJ -z_}<*9aCOq(3BmEToMpFAonK2ajRVKLq=jOt-d&2R8BXm(Ba4RebCw;Rym?<+@dfJD -z<*={jP^s;sJlH-^da-_BwG*tyMM|DyAy*+nTjEj#Qx+$#gBXhinx%Kyzbn$1(vNve -zcsJq0-NgI*!NwRNH)-|~OAOAE!{c3;E7xD)F^&O%M%?WQz@z;w~12xtj$#0E{ls -z>F@fy=~vsr)6i`n?<|K`4zI$kR -z1McN;{kR~3Qm6q~HAX^xo)sFQC-KrFyW$t=m1Z_+WYWeRC!+i$8P9%qCLh$t^h#M( -z1Xki?Os^c(JF`5!vIN@x<1CwpX+Z_h32wsQB~J+P|3n;1jx0rCmY{N?VzIo%I)du3 -zD$08C9v9O{!KOGE$tusT#P<3lr*+g3co!+ruE~no`k#&IOlV3f&h>tX?nLiu2I}gS -zpQ<9DZ$8K2hA|DAr}POL^cTFMYK7%0-JS0_Ow&Ff5N2{!4hSSXP6b0vD^VgT(a64dfq*ASIKt3%b$|QpodB(L%&qF4 -zc{4HhT#;~uNo4Nab}f_VMU%ix?P}I_2M6J4SLKVPk1u1rPZusew(nvG8B*RV3`z$}sB+;1>t -zoh(!C-myYm0$X{JeZBj<;Vvr_tE}t9zDekCO6CnwG6mO?31bS9%!rl^ONK!h;s_X2 -zu`R(7Du3F=+d#(H!Yt*@u4F+q;r+rchQ^2w4Af|fl_)gX(g~bAju=!InYA0t))Dtc -zF2Ox)44P1mgOuKIlwf3uA~55D|Bg@2AGdsBbt#F!BID<@V7H(VvCU!g<8h?-n$tTl -z9m|2x?eu4llYVo+zV=5v+wAGLuWY9~eV9Ey>37}9Bl|e$u$?>oRe!r3=&wc^z8GaE -z)5*53w_7kmzy^|3RsS>;eL*ni0i-q>NLHkCdnss06PG -z6)0a#cUSpQRZTaAwyYp2jRuG;MFQo8ujLKwi1@%Y9Ye%l`e!!A&NckBnlTX4-!c-o -z6U0cv2^jP+J=xBwCRPO%WEJL)T7mH!rpRixQvs3LdE@o`Y#alBk2JRv;bFjq_d}#|zowxaKB$ -zcb8_o-R|ujXK&4CPuwf}l^sRmIn)RPQ*qrgG6Qk34^GUI_>y+8o2-G*Ixry=UuA6i -zNOo5yhoA|vrXNgI-U`Z2PG@eoN)jVJBTSf-M14phfM>dw#`7az;dgsYapc8xcz} -zz8jyPL9eD4n5yX!yhdbDk}n;*h%5y*Z0WW*C_G6TV>p^k=3p9@h$W0Hs*-#O(^B@2 -zV_33OA@C;|D_L09#qoy96W10*%R)E1W3u9Rf!*jt;lEiRK|?=hY5J+Er-GnJ%B3$L -z^%3U$oZs#`V>H82gGs>I6<5h=2gQwZXwd@ngDs)ZQ!qqnq)1VSMnC>B4QZWVx)Lf# -zs`k0I2V{UE2w*Ql`I!I0c<9X(Mnk^Dyk+*vMiq; -z3W`L7-*_bDo?eEpPeKhe!p6TuF=E_-w)(HIjwIEVEi^jS7_@A$VbZ5H@_3K4fx=5P -z^X8NqLh%K2e|4l#LwW=^H6qJ_8QujsTCSj)Tr$<-5p}{-NV|O9C~~nbigkqVxvLB@jC1`wLCgf1VpERG3#+E`uw7Qi -zU}&zSJZn6HmGRdp*f!r~?kh_0tAUw*t*wD!FKM!-aX%W97elfl=BoxI=$3hmtk^Ku -z@{-E%5@QB%08>ugOoi-_F>z}9kpW6+mKUyz&SN{l`BW8M-Vp?caZSf!L{n24LvVOT -zRb<)aY}rsO_3P2jOH?mYT6jHF&gd0sWeE3DT^5x%7eA`2Q{|6dzmf&*)6@L6B$!r; -zT`37bIYXv4LDNc^AgTg#+H-s*9AKW5U?vt$+8ckweCGuPGsoiPQMHFPha%{McZ{Q}<^T}oIQ$yU3Vx)_rZCI)(?{NWb -z`x-}obooD2?hj2vS=Is@6D$tgGdFOG9 -zj~Dwo&iMJRU(Tl+(wgzp(d6S{IO}Ngs|tEU -zbILtDv`bo%|3J9?!lc|!n99WS8vh37wJ73iC^NNa7oeF_{|nQ<;xMB$)n!}LLvY*N -zNYS}>})&8uE?e}ey44hoMq+DPXq_mmJ8mYv->IU5o6DE -zQ&OZC=LW0ZNqtZbX$JH8O=F6&MJXK4wjQ%(t93L=j1$-y-G;>t1_=D{Y+Lme`k0~} -zyZPC!lRx=zP|4D=2kR9RR}Kw>TrB5D8P*xm=HVS73wT=8QD3U=k0Li3HaulcOSjHX -zX~qSGp+#k&+6F@=Evq7}d3-RD4$YZjo#Xk-g4@J%*wNvE{x@yolD7eS(HF|yWxwea -zXw-pNLVnTEK?*f6(DMlMWhyK+IG~N~%&itRJl1N7|IZFfuKy@u*5m7T- -z(-kdHIc3+>c#&5OMuSS?0c)2h=ErmCSaHKd-^F&lQjbqmw -z#4piK$hvjLX;P+aV)z*CS<`kwnNt)&0+q}%8BJCM#^3}KG)03L -zA|jN-tmUAVi@MlyTY5rI837Mzv8_iLCMrSlLo -zwDG|BcY?E&j~tk15SQqNhvz^f?6RJk_B&9P_%rC;AJQF^;HPKp<631s(YeR{!jI;K -zjpi_Fcj6=&w#Ak3B3q;8ZF~MWn37$5*K`RN7~AxtSB%%*$H#WNnr82UD)n38-W|2# -zzPIf1)_Oa78wr^*YfYnx{?5g2H=NBs9#dcAyC0zIJcQzQs@iRLeSbH-4PG9H?>~`0 -zu5$#iFA;O`vy2AJ(J^y@w2KnpJb)R*#~KZMQMI{|Au}A!sJx2cQd}_Tqh-y)4aJAm -zR8m$o)3h^Lbu3;0DJ@}n6;BwGI42%-{ek`)vcBofhi@hS*f-!SOfq(QxklyS{2jlhSl9l<a4BLA16vp%a5Wwn-{y|h_Yr9BV8p3tWg`22=T -z*VDgRpO?8CWsa?77#S--{|F3wXBL>Ck=*Eqs6M)&1m*mu{wyNLFQV;Vl*O-Kxz<9y -zyL(!1MkD$4y@=%fptyTBIP$vhyH6v=3Z{Z&EbPRwq-OW^! -zJl%B?zCE5i&L_ikwX;xR+(we3e9ZV=UrH-gJXJ%%<=XA7-!Z -z@kiY37oC=BZIwjITMP5?^`UEv-SA1+rd%ND+JM(4?c2%gtv(u01`bgli+yV)EFZE$ -z51YZAP|L7EhHk*TkDqtko7-*6ZN<)_zBc9`9)pg!z3uk~(#YvOc|!B!!`LmR_u@i( -z?moP4<@Q#J%|X-7d}$~Zz4kPnFVa=qKl(#Vs)Q0~i!=(guECkor2By&6!VdB_KYxu@Ir7?ps8m1F(B0P%W -z3Acs6-{UL%@i@DHfhNC(fu4LccO;(}gK76UdCBiL-8hdx3YoLMJl~F_yqLD9&7jj6 -zkk+_kzfSl_UA*oyPJG*3qCi)b*VjDL|F314HnO@MWem0&&6FyWLI`Jz29d3!YnLjZ -zw9=G@EX$%(CO1r`jE#Na^>tFFz%mi)w>Y=8tAcNI%b+OMG)<@zR*+OeK=0t--`}E` -z*3^-|!F*+84HGPw`m(+*>Tw;~I~D7oQ`9ZP+N?rd4)p%?=@66C`=i<50F;{hPD=h} -zg)me5_TNC`%^Eu=`x~s3{wATWNPk;5_`jVO$_g^K1Es>QCZ6QLH)}P-$$q^Q-yhb> -zNAzs3Zwqb|#aZgU1)coiz5O((Kg`{MZFu&AX_4{M;KA+XiYT??=I+f}ek|$(H4?{T -zr6YRHyD+FHlld!O=hW$L(+Pt2r%;%h&t$1S&9$Lb*xPuM+d;i9aYK^?NheRd?qjeY -zlcAO+Y1WIH&rfdfAjjj?Jb8+9dpLdTs-Dz)czw8c9v<6w9jpBj`Qy%ZH%~SB*&6RU -zlh)!P%~v5G?59G!ac8e@AM@>C(47k5{J|2Q@1GV-(Tv-SCym+x0nvHCv$glds_A$A -z-c)*2eWlRe;@iX=NN)wx@832D+wS|_K*Y`Ej+ivc0FaQ}YC -zf0+AaZZfNV!S|X0pByw? -z-#q~fA0TXrDoYiFEw3WX7F`rLA|Dq;<*Wz_zd9kJ0PVKp-u8BK)q=-0I9- -zHweQq0$=kB49{R?kVHhJSnPF2`ede0=kX@1W%~v%(aNLJ$9=X`dbtHf-XddoW+jby -zYa(K4xlgC;4edDyQQu|+(-b5{v>aX|90DHGTFpLYaBHe1nFubcDz?d~F5KnpkO8D< -z2y8AirxoQW$qIwafus@(8X9TZ6mg#%u%Fji5ECUK-^sV77if2pRkjE -zA2K;Z2iYO~@O1zrJp?^4#)CdpGmb;XENJLl1fxwqiwNtANk@qM47yitHx6*cc4#%!Pq51g{1}ONur4h;TZYlLrW}{ha+x(h -zp;i-4&;*I+#bXT}yxwcrYUKo5&8v#Qsc;^5lQk~$e#-Y8TqIpTm_48DLb!;2ZK4?PH{L-@=0a=hP -zk_2R$BtSUm?HYd;pZqbDmg6^WA0KZA-4aUcvJ-!m$3|n#ppt;bc*t@B -zKkl^dV*QobPF@t|VK|nX`;}wApL$qaH{#$bo5=RV?56ZffyAIN;MG?)PyJ|FqsQq* -z>R*Q6&(DRSk_-oT#bb#DJ-&?r)t;=nqF`x)sDkh@5U^6>G}9oOf|(eKMvJ;+05L$$ -zzg`kS^ZWx@P$OzI!MLbZfc^$CK+hB$VhWTUPqDEg*7qU<^CTNCZ-AaGYlM2yPD74sXI18`163Q<)-yFq!kBID^^NyI4$ -zw;Nr%otbXj@vs;-NZKZH25&WF6381#a8|dhzzGDYmeBNim6H(YRG0-WL -zEnLUh73_NH7p`Nme~VN5aAPv%LcjT~AdcT|tweUWVuPwKiLAs2=fQh>kMGW3jE(kk -z>gOfn39hndRYb}5CT%FSq(MZr2KvWAYphuX&c2`I&AG6}5kO(1S6GJM<7{kBflApUWU8Fqa{y9|0qZI4Eh06G>&uBV-P1ou#m -zfr@yR?ZkN-{V|(F&*qMk^EZDP^&h(W)9ce#_)G0CFb8psc83RLStn{IzneaXx9{_R#^blGFa2m?FlYMd5g=#>&4~AoF(V2C;;O_{Ow4#!BuC~5 -zhr|}Vt(sWkWk5ThJ2uPw3!2}qQ4;D?F0^Cvbs_NGinh+QjT@A!XX>Jze~D0G=Ldia -z5$xoek-@U7Akw0wBGRA6aIS4JilY)n6Aj)`L{Kh3tp_#oKM=#g-)O-%41|4`BvJl` -zxmMquZ+`gwKay9&&%cAU`z;wjQ+*d4=mN-PNa -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 -ze!E|HUvH;LIn<)=l5P- -z47g$X9QO8aUC)cRma{by^77JhUv{KpXTySjxb5zikI)gbVI=Za^yc?pG}nB6n-s?D -ztk~}}?-!-VpfA7o7CiGF5w;`7Ah^^3eUqvuxm%D-jm(owq6>o^%b -z?;f;p@bDD*^SMxT?)lAIQ)sR|(`vgLemt^2qClFhp8WaSNbNHG?&)duxb+;R9o_MF -zeSMI+lS%XOi5ofMym&JtXD)UOEm*GGP4na3e7?*}zBlLkE@l>k*79e0$<7iqW|){@ -zJmhs7!C0WDAUa{Xb&b`ARS;8G64?H*dE3>SgIRYnYR+PbN!~aMGr|mcQ4II<`o4EIg$Ch1B8`jEUV1^=_FE*-RmuDL5BD&? -zRWx>(2#nHCU;_jFKOlmgEhZb>SP01?aa>6alkRjH=t+xO8XeP<1R2BcmoCb}b^>Qv -zPXa2|kqbw-aM}fR(?Q`~Y9J_Y;o_nQHjkik0xN(i%HtnmZ`>S66;9pnA7NM4_$zYd -zVB^WVd_3!RKAsUtozM&d=;pk7D!^H$#g^X~JBxDthE+PVbq1h=&%2E(Tp^fk5qvmx -zTu@!oOTTRxn}+MB7ZYg~ThIY3a>Yx!uTl#tOlbF_w1o&On=}zqVaoTE7&hZyGf)2p -z4RX6(wal(TL>iH8s$#nbW1dl35@AHKM;MK7tMI|KWToAfdd<@t&cZq+%tfPzg(ZD& -zR8u7uK}3}B##x^&qS{hAcM)yCNStl8n(4%z@9X>(q9e}C$NJ3brGYNAwSDxEZFhCS -z=0T}&ZG~_!ck+$}+K}adwV}8iaSiEGr8%gqby{`?m%ZR0I_$+>8reo_-+YlKVM|Pj -zBuoSB)(Z1ODI_$(|0HNo -zXBLGAZMbQzELJ>Yu&0G?pqd{lIsMCt9`8;#>Op`r5}5y4=y{Fr5TfjJ3wX -z*k0QNxDB;$gx>Lrz`zbj>QY@htTUmLWi-lut$$xK%9dW<1eu>QHbjVM{7B=#U@*lH -zSLi~*J`MX%!`6ss!w&1AJ0FyO`hy$iNWe#&`K%=kCpxn+E?G;v1MynJkF&j48?GK9}_UT4|NYifdceI5K~z -zv|8MT6Y06ka`3{{XF(Yc@tOt$rSgVKLhM!5=*+X+&RZ?l`P -z(6O%}#lOsmLWuA~M%2GN_Q#YI^ItDy*9n25%pApj!xKy%xO@+20$B7#*RgkCmSO4s -z0QvM(Wb;0Kr6=?7K*9T!B41AQsLSW`G%mb3lDw2yK7rkydOVg&tvX -zJ7#w4Q3(AEld3^fo0#*RhCj^s2F7sK^-nfp;ym$IdZv+0>1@K#$qEj -z&REW3HP%Ut5CmWpr@9-*xk)vC{l}M~r$=S%W)q^`r_?C6?vZot_$HvQUqDq;hJ?A1 -z!suxfxyz`v60$92D7{JU!!HTupJA~yE@MT5TcEcM{?>F0-JhhpOFuQ9^8lI|!!L1ozrGFLJ< -z7`caklllWE1HhQ$Gm<5b@^j;qQSJ23Yl{2cKiniu}9^fcM -zmTbkb$#vG`66UwK%5^+A>6c-|TmoNQ&ia{OgsjMGfYS&0wO=;0e)nXmK_VcBo`%mZ8~(0ZO`IVa<_ga3XJ7vi8eBhpF+3 -zs;E4ou5pfL%BpSgj;0B&X4;x234-Q2Sg`O_po3Eo%%Kc)D7I~LoFqH;#hY-0x}C;} -z8E-#7Fj}&H;7~|1N(|*8(ZUaNHo37kzD_EV`Oz6AZh!rcEppgJrz!9@H$mZg|TB -zK?^9WEDvfody_32Jji7Yv~nKP(4pmcMG~c2VmE4ZaHy6caheN5!clETv_+FKHQ8VU -zVhA#rB{G;QHD}v^KdVtg*r;t_mZ%vS4{MRxs0HMtx8pmem8x-q -zko5ZlP%LyQ7^MxrmNa-?0V~&QWb<0ls1*+WZNa1k3*Hi8M2kdn6+==@FeO9>J)@dx -zz#OP>(D@X-*&_nq;bpDaNpvf0brh^3KXF7a}A(2Wh(1vQ-_5iJ9~q-W6pL7w(WsOn|DJLssK%Uz8A}Z>b~a(#I;fDEQkttU($sgp$@e}w+{ekU -z12gFfJIoJtP-;DK@;JMn4b?#wS(1PMEJ(`UX)+A6RXJt{e-Ve+UIF856JgGn$O>TN -zKGWXOPs?%fAG>0W(5`~vglCXbP7pbjSsIanYYa}emm#*V%DX^u#(+jzqQA3O6<++8 -z1zv>Hcyflvh5Up>sBfXil>tjXrz(&P3B&w5n>Vw -zFwjv9M2*^(z#rc@9x$8eyGRe9%_#9-x1%CS=!iJ6ut-SiRz9nQp)anM -z;PN8-{D`Nfsaiq-b?tMLf_$S{iJDM0Y0^M_-|++eDGnSRLDFJhpFFofrr|3k_^L*a -z?co&P*9?rQ42>)Y-)2chT$|W=<1zYL`TQ{%!>}X1%$NaHmbb&M7|riDUs9Ewn&_AfnVoyDPnPV33SnGk -zaL~W(hSHhSO1U~LrM_iEM`Nd6vZshxN+d%6!SmOmtmI*w`?l>wHG|fP==3y^v99ng -zn2PS=u$%sZ7UqOOc`PXKr4E8ys@rW~Ry|>OL9FwZDR44hGlP}xG$>vwT~5!Iv$N%O -zqk^JQAJKcH`*>I--_>b1Xc+gGEH;@~84nTc@FoU>H{Pp5;P?z4ozw1^*^CW$Np -zLUM}Almq0VtJ`w!@7+8|lOlGnJ#Up7L#HC%1*=bTv54NV9l@gT;eraC!jx2AFi%7E -zhs+mXlIH1+eJJ1UST7F$*czQYsb(~gaPKo{L8tb^gEKQa|lv4Iuo>O_+ -zGY{iKt-xa#U+2OjChKJpUg%S%Ao=%WlN0u4O -za$QDLMUl~D(`6*vR$&V+KAc5TEv@fLKA*BRFAEDOK!H=gBGf?!rbq0$sk5VOPl2;zOGn;qwHXCTx#J2@y9Xzp(Gz#^#9(jHDzB3Gx@P5; -zPHW}+FHH~Y7dcwS2-_>tBVi=5}@S -z7yoT!uJ5I{k=Jw=dokR!#x)0qNSHO+^Jd?BTHTAA=P^k-^Z344ZJl`5opa5+`8=A+ -zyXia^#!q*)Nc7ck+1vRGZ$<7$58__1qsTj8$Aa=H2pmyF`3JAnPtwNjXQ{Kp*?9BX -zS&CKa>~7-G)Y&IXdnI@GTlO!yq|~2Aw>O}VP`Z`hPN6@c_6r>M4NT~7SZ{WoPhUw~ -z5U|V{yfs^F^2-#*GuIiBxGm-_@Pu`d+XEI{)362C(QFm7WkrzimZ>?MX)CHFT>4f2 -zL`-Etd8RHrg&}HC#?k;AV(*kHFGXHEFH%JNLf<&4S)j!XjS-aYcZ9GJu1G7e9&u^- -zr?9vHGLYQVsB^*8L|ax-54KHECBBMac+l(hUX|JgvKL;&afGR}X^O>AGY(U8I-cH3QT#Fq9BR6K~2*Stqx! -z4BPi21S+`LO+(1Og`|TZG)k-k8riEn1%a6`Fe@>aDGC=AuSJgj0T}n^q%psZVkwh} -zmFM<@5e@2kdqPz18~2THl1e}H=QpBA7oF0f)Q_NdnrWQTAa#Od@uzL<%{8h=tNAkO -z3PZ1LerR0NGoP#uvwOd2HDm4PB^D`bS;vyGj5Sr2n4$^;#1JnE*MC)6L{ovw$|BC> -zIFU!{v#ZLYpF3P4Hf4i5;+vB|x_ww(R^9&yKjfHq494Lh5wSr7@oo6Lf)F{2?!oAa -zy%UHCWlShs7Zlb!jQix?*ie?efapB<{M^Z%Y -z94SOFO;zDkhqGMORY4FrykH1|YPhBXT8=17sw#mry7G@j@!F5jJGN&DudxakTbjm1 -zAa|(FPMAb;?DU^Z@mmY+?IapIv+=D}$hWNz^L{EluI~M?*D~8f-`vd8&6^R7)>_9P -zxyZGWN3yh%!EoER=OP$NTSIVO0`1x8%#G>d_Ho~PRqx)PKkl03BiZiWUIu$le=5kn -z-5-2BD=&{~Z}jxeO+zzy?-$FF;A|MX=Wk}iwf=e=r|O&c)E>5X1@peWd&>;#Z5Qji -z_KW0LJL#n`!nQSPnP8(#VDxlEH%Ol!ioUQFmRzpCtcRI6d7RE&c{_Z+pM_(Ow{~~j -z6C>E&`A6uP%@^+}?!lD#))@uvs55#Tldj0<Kb=~#kxt=G$qGnJxq8`J4Tl%3BncHey2`fy_eGorDS22>A2qil|15i;k5uQX;PXH>ItLuje!fjNl1*S5WqVSVMe3-PJoauP%X?>X}+~R2# -zn)B?}I7feu=8^z^mWccmtl^Q -zh{-WWF}n#Zm~*oRl5(knc!+gS@eJlLQZ*QPd``b$!92>O&bn|I+hI`W&0wiu2+z3A -zI)%xUW{2v$sK~-saD!*_=OQ_)zevnQR-YS~%F&G4tz(w7UQq5nTPCt>$&%(0FfEeI -zXi$<|LPSlGIj|QIJgN*1)Q%?mrKrb_KKGL(u0*|E;nC_#jOXd0;~6xQ(Sm(vX=1ci -z+Fw(n79-z8U>C%iwK%T0o%$Yoqd|x_inCX#+H$D#>mTCJm;81!K^dx}EbRGxx6{`K0o^H#}thfwO -zoI#k8&opOPU8WFCxMV2X+6KJ(wG$vbYxyFvWwSE!L3nmb9Y)za&ao?~*fj*g7&$}g -zM6MH!c^Wd6dVWs%@iVRu%!ji4Ww85{5qMr`JuPED*|N-!#10o@^4^Xr*z1O@IErmT -zd&{oq*X3-qm<+wDL)LS6+d3~@4(?J5J{#N#%n@r+rI_j{ -zk}rCZ2~U8M5xX_^ay-&>`h&PUX*fw#((*duJnWxTj30ulDl%+%sGd3Ci8}_1s11jpgA$)`9 -zJv>vCW0CF%J-)5kBfXJo_iI_8$9)5pc2pooOM~Dtt>tPUOo){m*omGF+k|f=5Bw+| -z!e}V(3sc6Ym|Weg?wZaoZ3hFGQ`w0#EoD^OL^!q^d`@o__RY@ -zWWxOpFl~v-DsZyK35WvQo83+Hr(s{8RJiLpEn%qH)eA&7{lS}bN>n;yP_Mz8Ypj!V -zJX=}Nh$xCgP-W1dNG*3QEWwKsoP*AgaVwbHExP)REEf?JRu;Lf2qsAp;WIn7erR&U -zNlB63^orLMR{e%3+BJkoYp8H#0yDEL%c{nU6hjqJ{A5H{kP-egZUnU$v9~H$S!SaG -zgYkecp`5uDZZ4f(F7RXpS%mpVmP}-lHD&G`PgX^5(FLCDdor2r+q1E{y!Y<5uLHOF -zueuxwJ(kn!Er?NqnS@Q#&z<-eUDNmUab`|{sRLj5&upkZuz(2TRI#3-*YQn-DXFzS@o -zg+9lIMG6@sUED0bqTsYgqhC -zVeLtHAGNsAo^bE4_u0qWIJEA@($m{^W$k;M8TIDFjvbGpd&zjSdGofvHSe~n+r;7r -zp;P;DZ_cqi2Nik+B(261UX~>o@>qjI=Vc75ehGCL`qc|SJ=vge%^;4TnGdaefCL32 -zm_q=?io&vDv|Km%x>^^(YG`DLpWxIS3j}9O5$s$uX}D&+f?=-CAk>K}ff9+p;x#`% -zJG-E2C}OJ%r>n4W+nt?itLkBF&;kfrui$J@#3#iP-T)yq^?;zM@u;xpIA=@3!iybpalU-cHS-=DB;RM5nMcrW9gF<0c -z2?a2E^}sjr*I12KRlj2x`IzPLH0V!fP5lq4#r+|5C@EFDvS5c>`nlilJl3B;oR?_0s?%S$`szttPC3IyT1|>H -zWO+UVniHEM4w>iEVlrxJau*1(D|@ -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 -z;?y`GO4;UL(X@W -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 -z&2Psnn4o>N355d{;B^Qh5kdO_MO{!X -z%S}PIl97H|R0T~sbOX#wpvKk_9=>tZ`sy^3xw@0X?x!@~?)Vz+YPi08dRK?aOrpvn -zCIS&eb5ylzkry%1vfRqaQf-}j4S^$Hm-1p-N(0HrRs0ElL(f8FUj+E3HB_~7NbxiY -z6T>zoMZ0w%qKh(6(hsOv6keMifQ}^W@6beBEX%c$Mv@^dk0x`OQNYz)#}+xvbW*d_ -z3l&(9(oNxGMwAOG{!+qSS|-{SEZE-82wYh3HkMPYuqadp#Xh0u;i3Y6#i{;Y#cU^+ -z$oyW0g|$NFB5omaN0#k*Y^!-As*wm-*9EW@pV*II6^fWs}} -z-rXp8E!zsCT@DNRT#XaV*b=3LGw>KrG{e-!U1=flcnM9mO))5#Eoa?6(=- -zhRN@W4PGnu-4Jh;x3w+3u?#^wa7$qNyp3ljaVl~6c9pq2_h{;uDsDtf=2}YPIuvPj -z?s|=G=e8We^%II6Xn3lJ_p?ZyH9osHH;N_RM#6>p9vghQOV;WFZ#8vEO50FM{9TCe -zLJ_zXUTZD*dkx=(<`}YxkIeC@XVX{UI|{+RW`u&5;FHc{P^$5Lt(1kCVuE!ZX%20T -zjI3P`@0p(~o{P=vihQ!cmXCscHpd54gK*8^mQ;b&0k{|6_Iv=${rPNH!{AI%wOeOym^6_{Ux49P3^$LpId3U0vHcK5f-}yQPnuF4lW&x?B!p3*YJ1lC{;Gw$Ikf@NqOT -z*)0V+;y6#m_Sq~5!DOX&U=cgSPP)vz&#~&wc|2xmuHp<|uC(-b8a|*J -z+GdEaa;;{WwZ(>7^UEZr-6l#98L^$%W}0BL6e4Ia^u^7W#KAUH5)BM_Y*ky$yqKOD -zggV}{IbU%OZMuaMd-&`EvWVl25n2OySWv44g4ytd9Cs0NItG8mi}?G)0)JRI?h+3R -z -zb5MHA8uWkE(H|nP&=SGgXcL!gKF5vc@eRkUC$V!uu7+4$9(&vRfwS#*(72%S2nL8% -zv6eUJ?bRae?K<`%`^s#%g4r)wdqVp432Gk(&>7f%%}yGB=I}3pyKWI)2?>XxShOWrzzl2r@1!?8+ZoUY0{|XSD^%J=%WsM_c%#sr?@4m18xk;_pKV -z5Q4sd?wXcZnKc>+DPKCRFw@IOA4SV*Qb$Fr`w1>fB8ntv8ZRC^k)o^|a?~UwPm(Z4 -zjiP1o94O?Xpz`YZv6f955ds%kOIYTQ%lif|NwUJJ^2wX$*S&(GJRPzOO5ddbEu-2h -zs9>%v!;}a{k>IFA6Ku`JN(;&6T*XohRw6`Kd0EGX)Ipka6)qh0BUAFQO-W=Ta%t4V3^qz -zG}iWusPKimv|6r4Oz8)8b+}oaS9QEMR1UkTzv@I+h)BkZQ*YTZZ->c&s9n(7! -zCt|CC@k94)0!oVA{2C#JS} -z*m&*Q!`a>z#?QUh^mTM=FZ%moX*RPws8Ot!{vo)h$%mH&avVr*n+@W7a%Qp$EFkWixzKHEcJHx1FK6~aMy3XJhc@bt{MQy91 -zq==#<@?Xf_L+!rlv5xc*H9K)n&V8~aqg;NFX1Ui{@16#m?Q9d~FR`adQ9Pe^FN&AL -zy6=_3K4)P`$N2vdVeW`y38UTA$$D?2tMHR+@V}9?!{;z*ssxe8k;DlcDLopTZg#G6t2xkJ)mGp*1A=SF!yxKQG$I)?Nk0 -z!9=kRjXXWW<32!;n=@F?8Rt*0oS?cHb?t-SrI%&j0<1v2DWKq1)9YrxU -zyZ$=>K|f{##F+uHZ%reE;YY{T4~rzK1WxY~X{U%}Myg{<1$s1T2=M83=M24&o9;&U -zwz&*i(rXaBeLTFFcAM;i`_A?$ZnDdf(%#(d{qA&F-)^^G2VcE1ynN=81Q|f90vJ0> -zN+p;guOKce*ml7oAvlAHFbQ@yu+X;~paN&fGu$IA|K+*gp^(od@bf`o6BS-mR87^0 -za4MjJ8L8MC*dxkbX5_hH%_(v}RtTlOeS!uCLxEL!ft88K#%p%DQ@H7#k8W49o)$JE -zesQM{E-|dWq9^|epySKqXhcXkvBC6v!bCTc7;~k4bcjXv6`S;$RFr$#I$!&n)jCTy -zYo2+kpuGPEnw3npU;v$^(|aj%mZ4qsLOYJ_z+uyvf;;OQ$64z1)~e(s-AgZ_U+`Vp -z5<}B;sK&Qq!Qx_xq_7GroP5uq7^s3q+DwP^I7T3X!l*MIw$G|kFpu(F -zsAU_92utzEjcZE7e_%k+2nL8XgkV7yqcTsLR<0azy{JGq4_aK*1{p~bIokpxS$Hwb -z{>l2||3=yQ!+hj8LA3C)IFPA;6n%uV(REIg5pUz-wknd&Y`IIE^Zr7+Ba4JY8n2e{ -zn-u+u5$cG@c_mK&Aw)(Pr3zSJ68fOwwxpjSG7q{Is -z3lrfEdRb!P;rghr$(knf`iB$wxt<_2M&bl|0=*($fR-Pp#(oa_V0o=)4(O(^;MfL? -z)!&7MV_5Bbt46%8P -zs2pEA5{oxv!ts(Qn3^dPQ?mp`AhyN1qU+j*N)S<6uvLLSMVUY4M_?oVI6Yz+=f<)) -zCei*=9vKkQ)FY$(k9lM)m(xs{wu9)xm!rrESkVS?cvrRrtdMiAaYsQIgUr~0<%K31 -zsGjFmgTiuR$yy3l@Dl9C$FuJ9~KOa)%PMO48O3`aBtS2J8*v1HSb9B2aKPz-if=DB~r -z@+Hu|oPkg?(ZPhW6rp($VgW1+4OKk``g**iwi1}mAm}NBA8HV)B8dd%TKYqrZG~zP -zCS1N&dJN%`m+kCi$ZJx8te2=ohi#{YL&iR4S04adF&UJhD5jU0NvJK?QTV%tpH^8u -z2T|*6bHse29=8iWf0z;GLL9ECi~QyX9QG8Tsmk9*_gY>@uT-z*G&ZZ5E{q3WXVvmr -zn`X1Q>AW_Z&#m^;bm=q0UU%s7fxBMvPiyCX>op%1@ArlA_Ocwz-|oB3NipW`?^{dw -zVaIcl@p9bmPHs2Nq&to_`5s}c+TMikF2|j=kq_Q`k9}1e!{4-dKh8wPyC*)UKNGKc -z>krghNi6Q0J+Ikq`Chm4@-pf!;d}D(G7Xz|?=7R*dR=*~R@!Ve2VSc=Y_?iM_|9Q{ -z1mBPF{e*vU>)~y(dw-SoAK}Z+eC_QFVO)INKIb2|FMC6ntgSYQO`ZgUw-K>!Uv}?d -zuQ1_Q-|H*(>wA39ccVeOxkI#(VaMZOc{`eorN^1K87?gTVV08*kX{zd5&e$08}7Sg -zIP(NJuDJ6$8}FmvX2#w5jGHXSZ!axlX7STE`(g6DeR{stI`1TCVU7M9dEVGuulvFE -zCgYd;d-Ui%zmnba{=WSZ+O5}@mitCD_p#TSkDu>_@yk3K!}iJZeKLN2X&YRxHx3D| -zuW{Xa?)4^jBUtZ|=V$xL3|je1x7QlK29p`=pAt`a>D~KgZw~h|c^JRIzUOYMDb2^@ -z7j^gi{NhiAkw1Fnws4;D;JMcxzqDS)OE~VOH+c>1&iFZpd+!Zjo`wr9`LXzSd4K?sd-Dcdh-SudZ#u76#E|H!7N~aa-Rt=iP_ave$hHwEIb` -ze}|>CeJg3IUVqm1H0-y}Gmf~kXRSMV-n8IWai7tizwe-Pd$aCKYZ7RW<7d)qPPqP^ -z7aOBF*KButvzKO9KOY{yz++4P4h8pW?rXhd!4mA -z{t#im41Wyl_nPD8(i`6ngcoigyzfI;kG=6=wCERbuiRkKEFNdmxYca$T1~YNBc^pb -z@_PMV95*{n7)B3b3l`w74}a5EQxqOM{e7S7jh^>idDQ9hqfy*#dR|L}bF0niejzs_ -zALK^Zd~U|gH-uf&TjSw-(`xpb!(|U;O7E$ubKdiPd;C1GG3*4_Y&x*tiF;iyzMDSx -zW^a6NX+xXZFczKX?b_ZxzqD@W^TGVN$u-pnXiNl#nYQ>zVDUL;3Lv>A!-vl8B(TF^ -z@$ozlj8{8`b96?F=0^6O2W@Y({D}I~R%e+FXR}rBwb?gshtomWY~D6U8&eog+rmgP -zTQ8)2JITxmw^}wg4^94_`x?z3g9G&;+xVKiv0);cIU( -z0NH`^Y1C=??>pj;7BBO`>u~?Ec;`N5!_Dw^Ox|}JVZ?X$qkUg|pOWz7w!a_D#{4Mk -z=Z~GPG-`AE$4-;~02%do3*&IH%sx6E0U0 -z=J9pB{g_$YpwpYbgUoyEEXBd>#UI_i!#&*xBcJ$>w_Uj2hdl3+!H)YAI{whAK{)pX7{lDKK$ss?}vC#@LoO^9(ly)eSKMc_#F4X -zz^^ws-}B+D -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 -z6uB31Jef|(UkV3pwMOH7qeP8N8C*On<} -z=T{ekeVN6<&P=zVF&!+sGI1T=94seRxr|`kfqh!exkG8TqKTp+ivm3nsNNkb3)`S$ -zPbo1XathK@;vTTe%5$Er1oqiVPR`G&sz@9JXXVe%n%E&dAAf$nYNfo%vz45`I$wF0 -z!rA%ONqIiu^sB_GRy2CPvz1)9I-f|-C!RmGQ=U&e{VK7<^Yfjp@O^)sNmJTWQ8Ru<~f?&6oWt8z2Bz^C|1U;iHi9#bVzhBvK3uT{9;V1@fX1qXr`1Qh{d6&@9|3+K74QSm0|N;y|1s=`3hvT%ehGf5l@8*PA&K=iV8b9*AzjtIjh;gv -z!A+pqY<1|`m;;2#vvs}Q5>+A!$giPaRX>{X74(FD)MaEv(ZC|x+A%r_ZvyoEBck9_ -zJ#BCF`(1C?|L9NJtNXdsx5k4fo!_lC_WsEp@$G?}F1WY)yHay<>iVzE5ws27DVE{J -z5k>BIwqQRsYBUc6AtmAEBfk5-!N{<@ZZNeU=$M<`GEU%TQDcZfufhopUDTd$)YEDQ -zLM1k8WtGjL`Y*-TgqkC!pqAdTV_{%G>lt_=)q;%9p0{n`Zn7H%#ZqZn;q**WZBdF1lmSeq40v0K{fTt6H)pzuiU9l -zjHyvcXdj%22Skr5Wk`}iJcFrk!n^@G?*$c0&Nx=xJWE5R*yD#sn8&#ju)M-;L1?j{ -z#!8Z^NCc~;lAC3NlTfvF49Au=i6^dYbHs)rZwi`8ER%OR$5u6qa|FXR1Y0yzjpGc{ -zkxkiA;GNdu3u0ml3u-S9i!59w2$*FQZz7mCQjoF^f;HC>jOBzC!<3M_=!>XmZcEP% -zOs6?3z$~8OWbw~rjamdL?Htdm68`W9Bf6na^@gXCSA?##uPL94K)1{v5DmZ%7z)bpaCVPTSf1gIewdI)v-mnBtaV6mX_ -zuy&Z1&ig3Ll521MuV8kPyqeM}pQkQx)bVmawK+YlSNEeRURO|!dAhvGsXI#{NBjI} -z)Ia$8l-8Z8;S -z{ph~zPZ(xtfidz-z39IwSPs5_c0F3TMd2EY|ECJq?r_*Rd!aniF|g<$v|geu6|R -zieGz^sYAMW4`+L4VFXe*_a*awJ$mf#mFfL<=)-zv2qV;(iLdXcu@GH4lh!|N7qzqG9HO%qs$PO_4}C(Iiok5Zs&7R9-@4jj~(_kH#1= -zFL4)gwty~vMxtJcTjUit9mUoRkz;JZ<{43vUB(bBnc)mWb`fIMBH9gB?br^+%CXRA -zxh?h26EfCAT5RhPCPtS%Yq`ZoN)GL&!-dXZ>S&azEbOB%*#ecjEV~Soa_1EG-C$w% -znF}h(%5z`iV*A;_m@5xpL&q}^yp@_pNw!WIv)C~lVVnZQvXP`jz4=QQ@!C^oWUTcU -zKP!x25^w%;YO=Wl;?B2W{t1Gz*Q3Yp=Q$Oh@p~WI#Ov=iC4TSI8u5ESrklHLO!0dK -z=>D20m-xL@SaTeqAimJ$jfg`C-{H*K4;DjVu;_0`zPKGu#bZk8XyNgr*>L;VdEfo5 -z5E~qkRfp#+8B|@Ebg_cLmNZV3cvD4;85hfhI9cHkT={Q>28IM&LjFR#JkA`L(oZ!@ -zJwe|IE#^A_2CI!^PCTpDDtBzY^nzY5-Vh4r``Jc~hBhU^|?k=cqb>7D5ia)ZEc$Vr3$+lE4Wn -zwdyNdOOjX_hNGq%HVEPzBu{i%?fidJOq-%3fLU6m+0Z4%$(eOrlmtoHvEIJ)E1VS( -zR3ph>6%G^OCz?@|%LFEri^e}7X&Q&Q3?Y0`(qgSICiVY2D3xVZdp(Fj{4yTs%XP^V -zOvQ0E&Afa!UfrZBhBZgtjQ`E{d(YdF>12mRb@s6N?H#oyGC?~ -zID!ae_V6<7*kUop1)~L&K@}zhSrlM=i?SpO3QHr3I;bIuE{Nh5TJKWqeoe>+(~lAL -zK|AAkQLEu3i&gKux&?z5ls#DCRUUB?6;w>{NTeH)!OFPs>=RJ|5kq7Jf7GsY9XP2Z -zatcgf5>IzL(x?MZR7nsCY=VBA$6*5=65X8)^?Fqs`9>ZmjA6!W=#Iv^+A1_^+|xN+l~ -zZ-18rFpM}?Wi-wd7@1fiBZ898*c|5=rp?Km#eK8Bi^Lq=zI@Aq?=V|}R_i;PZ%+6f -z<2>KowEPaE@1P}#DvZ}}N&cNM5<{eK8|yo|V4#nn8|Ir~eHY|9%!FDU-f&%mE#Y_n -zoAqgP;;+AR-(oNo;VYlR2fWejd+^OnzZc&ObNxLsz8TT?=v!um-_e30buUdq^34su -zr}L@cbszsq$lnS7cOv|qh<_*2---NpqWoK(_A^+5o$B9-2F)-ulJBtRTM~T#h82e2 -z3H`F2{ClVWQeS2DEc%v)cmw2{lflho@L1pG2CRA^eB}A}1x_Y#r}$&|9S+c`*Z -zk}znll{A!?aE5h^5_bd+uY602Dyk}X0uL`Y%M?M5tANB0Fya4?0)k)a1!pMjRW%R= -z_HI88pPpyk3Bpgqz*h}t%oAUrxv*Ew!IG&wJ+k}OFQ{{zJJG|crpz*27?RQ}z` -zB@d<&DAq6!Ye&Dd(LQD{iL2bpl$eZ#nW2-7=yZ0K)5lOJ=qLo0!EJD -z5ikzY-R5PAO20IQB#Z_>K0frj@NM44lG__G~K -z%M2m`LHj|nF%GCbSYIY+3ZsCkui6av?__(K=>pn>2Tux0l2?Gv2J;kjjS6+mj#v#* -z7)sWjIZPCYkKbGxf&Z!SFI)O{8gEjkECxO3ejsOq0)bC3tC4C76yu9IP%zK}xdTQ9 -zC9IY}dY#o#gKj>@3AgkD!JJ_q_{PE`*okS_Fi}E7(Hgj$GyJYBPyM8U@1VA!qi9Y` -z?s3LE^Pl{Kyu(#)66oZ!tK6jPG$a_?-(}7O(I8n2*mW8s62V|hL4;R=#v&-`u62ge -zQW`&I>iD^7RQN%qc5--T8z&r_LG+CT6pILSXa*XK*?^VCP=2y3W_Ut~23>;T5r19! -z5y;Y&LY;n%x2JHt1cFOaYk33ZA9Zu<6ejUnd?YcbcfNBDzJgm*e{ER1n*CMr;ql0N -zu`K6R>h5-QDtQhkJe>u_(U(wr9Z)=@%$gVZ-bt4M#mN&>Dqy%jy8It1_lJgD0zW;D -z3aSz8g7wUVhL1d0q7Z)P=O~5C?}6~?MdQ8OYBsygRtcpCGnPUW%wM9IdIS_EMNm{p -zqJ;p2Q#6rNVcI(2MuG-)fY(EEKUD%Fmz4N=L=Zsj(iBcTKUhci&>kcrOiTnFT_;C% -z9;9{3_E*tgocXGmk_Y+*zEBgCdB@NsL9h&wI4Av2M^eq@aJ%yq<;{HROxx-HWgTvW -z&h}|so0|vDH&W-3020RGVT*uXb~vKsNNki`IkkiDAa%eB#1ztU8ape3{V7@W;zSA? -zIUA;8gubS)qX{EsT(X|#VT2F-Yv;()GsF8Ac?x#BiDP}6iIir`E_d2n_=|S -zxAjNyvTDWRc;()%ZinGwzFOr^A7a|yw$$CadGcbSz5#~w?vVBCApP2A2dx*vo45$R -zULq*5gz)rFW623XNfU*3vqw~p?|=$&R=d2&lln#ZHIgK{JF4n1IM&N^7+__wwRsF` -z3?+Lz`vtWYA}456&=1$vBeL4&CfEr_Tl~1;+_(B?q9YWtbPK}1^mM@+b8d{rxYlY2 -z+&^uI8>XiRSmb_%f%ZQVXb0IUAnBzba`1}4^!in#y$YR1#?J$(eO4xK?|<;EUCXxQ -zL0z8?U?RA*?khSbXa+=Om35B#_$3vj3Q?~vSkK)2U_c*=&~;EcD4Q4)d~+!Z!Z-Az -z;sO}M0tW^U?|{i8+Z<}-GGmG|VbDP(IF{y0uE7#YkEwvfgpnGX4%pgM7)hl4+`|DpC&%$cM(M8!gOPen6}DhTQ^H_bQmzPt -z;c+t@pa^<-ESW3ET*e+q3UMc6J2|>Iv3(WgtTDgDxOP*$H^Bh$KQ8G(Z2=3o^!%XA -zH|#Jr8!nao@~?8N1ciVslvN}dQ-96vi1OaD4*Yn&H{UpB730JFeOj(jKx^bhi1cW* -zpbu*{ZZu6+UBTuJBA;m5f6ZTL5~@_}!N82FggW$kQ00hvAX!8Yyc~)@sd~V@XiMXP -zLJz4|Q2=1>-=Pcw*D0v|MJWVq)%B0(K77`)vjU5M5V+Ac%1TE%ReG!&!1#rpaN)u) -zvR`0Ep*;LDbcjGwnpC*r${g$!a~;8`*Q~IcKRp=Xqr2Xz>qVl5o;e*S=lZ7;)RCDS -z&I3PKU{5V!hY~u@*9|ZVNDX6UJTD40oCw}-2V>1^HalCHSRWk;(QpcaX%;Y?PmMBnf*`I3D|$c-CJ)H0h~>vaZ(@Qv`=mUK(@_$Tw{iNe -z6B=7!wRyHr%v@p78OF=9M#v2qXrR|~AkRbVbi-@+R!6e#*^CLmFsIoze_pLq$j*6--}f^Gl)7dc6uXHabKgYy(#p>m -z?CgPKm(>Ut{B5Qoy1XmPjLeBVBbuDVn1bLkoNMxmVQP-#NbI09(APxgB#?Po#>^el -zjv0{n0;U>p+GngKrYxPSTj=LI<~~&9Yl1*nRpwaGMFj0aqszn0zk;JhP7B*gi_k2| -zOV4Y5PsD{;4&B+Z4p>W~X1bOt5Z93`$$@9m1aeXEgwVt5a9%GWe@*iRN`aonWqb?< -zMzzcuibSA|Ohz_1hY_J^8Iuzg#*h^Sp5N94OT4(D|1JRSQV^^PkhjMohjJsEFuc_6 -zFQb+2Og$n~qs+HyUQs248kge-BeExyXiTFjr8oW5Y4Q}UdG{kvFW=HJU??NXv8?l- -z+(uu3-kxgCD*RSbC){TM*PoXcSF;s}S+TAh)-H@gH>S{$p!TFb+U%!e`{lV# -zEXQt=F}V{sV41*cPBX@$h2x)q(Y~zw!Ad$xc!6RU%p01KCCf1QMPxQ0L{YS(y?Z(J -zm5sjLUY7<{ss}7>ZQV#ske@gQ;@^754CkKd4#YJ)EzF7)7bzC8h=1?`tvPXd8Ee^P -zQL!`wd1~ZRQGi{ve0>T3f|70<_Qff*O7w$zm(Rz;Mpp!5Omj5T5M-KMPfe5ZE?^=? -z#k2e>YmxMeVkA^e;a;Fem71mk7EBe0CFpiNB(|O)2Jsf4@eY{>be&elq_OVntHKAf -zQV(M2m6)lj8(xg4q(W3QC`!H;if#4i+h% -zZ@Fqn|5cI1t`;F(1RFiN@O}kw?3ECe=@sCtFJ)omkPRw{1^ -z83B?Ieh(HvxoTynO=VIf-Tn!c8#_#qB^7cg%`s;{c2F5WQK?HSgRT6N=rJmnF76Q~ -zB&?)93*=Xu*!7y`1J?`VWQx=?2F#u`&SJO9h;qPgVcWxLznq^3SUfT -zaDKMRmVTt8aMQ1|_!1_oM}_AZrHYVRH@E;sK)JsbHIPJJ;=qQIYPcaQ6*&Qi@|hz1 -zKM$}g5`mL=bmhqkhio#}0J~rlF`$H3BqW%FLLa0^e3;>FcII`ZAawmQ-gq^&z(Z%- -zq%^5u3?)^>kp>loUS5V6(Km~eLk7aOqhJ+RQBdoN1HDcXRfBPO6V(~wGAeWy2J~If -zWCV$qk*5-WSpDD+Ui?F8&4wUuyA!?N`9rw`#x=4ECAbVt*~e7r0X$tm*jb!l9XYG< -z(nTLTgW(u1-ucnKE8I6neDh6ucpBf6*XZN*y~&YRzd5qGzW?$z?%BQjxOta6SaXSc -z<+%svS<{+tr1ubr>&`TB?pt&2^>*|;;D#&q;wH1u$A|&ez}79#zcK8j!D}_!UpG4a -z7kxVH>t~>`4yilg*7nK)3HH^E-LQ#7VSN;d!;EZR<7FP1;XwQSGwC)OFRCbd%Y2(E -zZ}X6FBN9YwkPitryh4Zyn#M)KjfkKRumfg{i;NoqPOC}0sz~Zt#*GN7woI_Vqe{8C -zv;mGeHwphazXqPr5(qIE-YH$S8lzf@%5WU!BB`=vC}It4ehnejk>Bj+X)~8sE~!b= -z{P3MIYooA&0?U%mb8$@DU44;3V~DnE@uJAsDn}U65H0A>V8d9dX(_HOsixu33>rUq -zZ~jgO4dH*4K_kH;n5A`iXLWdI#}u0D?U+Nu|1(K6+Vt_`%Osk=6BV;(c>2NP2kchi -zPy4re*{@&`b{hD{(+@bxfCEfeF?sp{TTIwu!HNxk&fkgqcjCd4hx_M;yd3Szyqx~< -zw!X^#WKxc-ax^JN1DU9r5_jI8M2j5ylgc}m^N%FuBuPC;MD$l+b)=-Rs?DlAET}d# -zljMk!L2O5pY{!x0 -zfWako7fxxsWn;QBhN?hs+JW+I1d+qqNEPEqlHu5{pt=&_9m#eT&QM*#*@}9!t#ED- -z>K5X&IQ9_^Y@SrN6k;JLSZxPGT4qJKO$j;8L`h%smu%)(el$nNUfoI@P`Y5GmwY=J -zf6Q*=Pqu4l9ds6ul$0xx6zJ9!6ARm5d|(m` -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 -z*YQV}{ooo&ky~anrjftQh -zE#?4Qc8Vh4G0Z!6KKEE?iBcQyl=**=eo4atFVOL%3EK)LRG|8$HA~s6O@r -zSOXBDJ8z4o9+-dv;WW`vI9ZZ4&XFvi(+t^DF$~3a{EC~@EZ41|X$Zq;uL2S+ijF|> -zEa7q8@1o7DY -zFj}n4RoN4{68a~Y&=Q-f*qx78Y%IcRJGF&vrnZT7d)0~yB*Lv3mIn+@Q#eJ$Xc^to -zIGcc|ZL6-}5?v5sII!xd>)Vd(>KyTPo0Bco;cQ9MIa%~=;)=c`5aZ`hvou?S0oFLr -zkt9yGiOLzeu5!eM*N*NQLsPK4DG)7%*eIDx@RBq`fWB$aHwQXws|vKD!D*main?Z5 -zoJ@3|lT}0E3_%h&55YctA{vsf|NLn_)*`VKpF`{bPWFBDx5;pt<;kjUDTeCFKY3aO -zRt~L2Q3ehW{3lhcO8j@gki$ -zv~IRaC)d^G|6m`w?0Rlqqr!rXkvG84oB8T+{zM0|ozM~smu=H7K+|rnGtasGx;lWH -zFqpVHWkHfaeZ#qR+SV`IhH|xyHFUAevkX*5xY|!XpI@FMUu}~Ltmm4yHa73C(dzwG -z5uX3L9-Z|5HWudV7x;b%-(L*j{k2oPNe_`Dji?d0`TsTe|26o(yunM>9$N9%Rd3I7 -zTqx_rT|6SU3vwl>35Hl%V!5TT2Gma$RYL^<&X5F<+;mv;imd69C<2ECwy7(ER@p~7 -z4K<>mJy-Ed|F(o6*Q@5K6|aE81Xt4Gsh%-k#^!(=&9ReJ1dl^y86x*-uwQAEP3VlWs=6XlA^E-h*g -z75eO`OZ|#mNn@4H5r(&!C3J*n4U$qXKgsXZY>dQXc<*k=#zMWT}_;tNKCGkL}~Jn@IZeb5|V9`+irN5pgqJbVoeMu=EZr -zrTz+2%PqbPHF1j*u#2D>6)T5L#g`?+Qa}{bY=ct-S?5Gq@;S-1bmGIxvO%vbwzdBo -zBPM*e(0)fn7%gFcD8Hix>WoV_fe$b@97cjNk25{0Du4|5E{4^Ph0i|MffUXTQqJ|F8cJPf&KHi4Hjo -zXZRF6;{9<6cyM7$)=3$~p|+n7KZ@e0(sy$T=U_1$I-Fsg4$vr$(+>>iuunfQlEeA0 -zr(ZOR<3B|26t&^}R~E4$oFg_~d&Ab#YZ4B|+sy(4{q1y$u0JFjTs#id~2i6~k%WfrAt=T3oP!#Q8au+fZ` -z(cZ)kE`HE!H#RO`+vC?xzN2f@qp0@(elm{-)`@NTVRn-fafZ1-tPfxTk;m^gs|0w# -z=P1cCiru}bD_5%1@T_H+rb$stK4+pMf*%dGAixJz2@SE0O|;^-1dUpG?N!RdIq4Km -zx0AjT1&dmSPs>0YE@#TqWEVQ?m!s1)HV%35-ELI8PkQR`IL~{)w4Jqa=q*#Nw;pbR -zal>`J-SA#C`uAV8=^UT1m}m3rHlJGcAGFyq{K+1FFYLF*!g_T#ZzNjvmWlKVqU}o;1S$4bWN6wc2zcKbQn%o -zhruzBVVspgfWjDvPwZ^04q0CDxf2zb=61~;Hb+8#J6;aEO`-ob4u(xb=(ol}(UgUL -zf0Q@tq42OB2S)c^m@h}gq%|srO--2VfzUs~{w5LT{%C{O&2!i%jS9Eh?1ge5Jeb%X -z*BdtX!n_6Nz&++iXhYugnnEBvnxoi&w)$|aXzs8dVUX;F2l#Dt2g1CMZPl^Ooc3=y -z%Hh0Tvp-rJ-4@(;91fczv@g(SIJ8FFA?)wlSF8oQ7hKkNiVmB>0In*zy>9|pDGw8n3Q?82BOD8M$nW1VWT<$h*6 -zVh7aAf%C~kF85uZD4$M@Jipwf$r{^*HPzUapsllA)KL|AYw -zFRSN*4hAfw$|euuTK#46EbXIWJl%g3>HK&U<>_+#5I%DoIk(N#{!QpTiw#n=2iJMM -zVT_hAuW&%dqaGxdcZdQyf;iv_{1^1Q6hzM2+qkL#OKBN -zDF9EWF-5Y0QF&}-mF7g;u`1*B{4~P`F{xfsi7HaE>%`^J-Q_yiI?`nbA9%BKV!R?M -z3dRF^#r2KxCLT6J#{t_cn~W@agxg@B;=(U?r`yx&s8 -z%<(7U9Zyfax!Ix1vLFhwf^Pv&ZQ{)NjR?ISe4J+wY;P|)&NunrpB%!LwZByC;XrUX -zHDx!Y*Z9alWOY{$os -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 -zpeg7?(-cJ_Ae*WGQ|ly)l1vnt-W~KgwWqHjjR -zaMTiIdt@36{8ZUncA+l=3VsT&7-lnHuvDND0+kw%rN0A#ie()HMYsj-`f(DQc$LKF -zg>SvCC4R)l_jp_fW{W#VVU{C9*Xaf;ZAOSkMb%yqr+foM>sxfrRT6B9YJ%!YQe~gm -z4)tJ!7MAS=*&Tjvfv)7I-REK@2?xr4xK6mTdRD@1tq3EHVhfINn>frYF0eplr;4i9i4(&vSKoZf{_)xt_G7L*sd6e!u-qnFu3_)QwRdP)~V -zF8w@f4C>Qf(;QD5KS)R(zqZa*>CkALfA?r#1v4=WJR1Z^juvTfyw8{E)dh2x?{>Tw -z^UT4=msNZCvet@OX6-yoF5W0=si0{+ER-zC0v>rD)rs)KJQx$%YpdRv-@||DOBt@tZ!ct@I{56MysD;x4so{}R^<{K@|kL-k)Il;nR&Arby1 -zhrrtYMb^^4L{In^$=9%3R*0x#UDba{Yf*-sUd+uV|B`a}P&`rpmq^wkoUhU?yi(Hs -zMR(;i6BO@?N8nx_!Nv(5p;=k~B1h+-2v5tw(Z3&T-lu8q-`6+pGTpwf=Q%s}pu>0c -zwBGAZQz1`lWBnfdOUCX=p@>x%G^K(SR_eW@H96FUVz7}v)FfKGj_Qr)x9Rif{Wuao -z{HNExTz_9xSZs$T3+k2c5vC54E?{Ygepw%K%h8O*n<(R`h+$<=jG)K@2_%X@C!$f- -zya3TySp`qMJsK1l7czl;1$vVVUp`df*-_N>s2KJ>=Xc}!n>^~1nF -zw0lJm51%^Dvi$+m^YJly6?aAZJ)7zMPVs!S8{UKduJ&CucycG^hxO4b-kra -z#XmePr)E@iTGRVt^VTBceJgt1Sb^Eo(`~R5A0J&w)tr^_+z}p(?c)BpHPl|_=^yW- -z{(3u`JzB2t+Sqd+vT*-CT&(=}r=$2*e+%VNL$uA!b}YJ^rQviwy5f8Lt)*GUq&|OJ -z?4y^-Q+?~F4XfU?XYO<#r_uKDW#n7U*1e{S+xu;2*{kF@AOk<*=2Jz`pZnp1p~2%n -z?bG&?yYMt4FpHu0|)wYK`xBynpJR#R8821Us#NYAvwffK$q4aShQ^<9KTj~s -z=QV4(SY;S<=dTxRY5hk_-{yEIR+Q%RlXaaNddbiVFC^#7RM-=1-o!4|Wf|rx<;$OC -z#J|E*?_xy4o?{5ZCHvy3gMeWkbBwKaNO?r{bO4gbbHVqv`yx_`RhO&tY231V|_p9j-)|r -zB|UX#^0505_2b6oeb;JUiT5n(Iou}ulg`ab&hs031Yxz)eJ$8bf@Y*53?|yrMXZ+# -z+8O9{ -z6H!z6@5*|0d(litHrlooH>dXgHT*a}J`Dca4ZLoeny0*3V{7#xEkY?6IY%jb+}1&r -zKDv7IE$SJE=L>|7^JP?(W$g(MvISO$xn?`mrOm*q^E4?+tb@{aL*>Xj%cT|{cyNYR -ziXsk-r>HB47%JZz`;w5xd01aHgV#Nv?8i=l_GC$~Ytv1)3aL;3|4=lZD>ZMM)w* -zfHCBjNs``rI;kz?R>Z^}@i||A^bd}GaFx1a*W=fa%wu7{=#1^daUy>VKE#)eGk6JJ -zwu?=qynRfJ`&Iq$FbCP+bMA^`t&IT<9^de?=n4_|FHCcod~}wot^|wXr9W5NU90mU -z8~wMILzMT!(6v=#HZRQkdH1dEYFM -zvAUEG@n&H5M}lB%juSl)SJ`qKCgVwd%QM^R@ -zVpFg6Z={Ldw>2!u8fd`U?_YdW&Ibkde(W$%WtD?L3DM)g+m>j#7ebPXEx?3&0C_+OMc1bLA;B5``9 -z!2W|UU&(4)3>O4JI9yjYPED+LcRw&e3E=_GhMU1Nsto_u{Pa_P*?K^2^A1pDjnL=ph{q -z+|3~2UiaI6>%L8$rRh4CHRB7#Xi0Tr=otp#XSfLR -z48!v)g_G7KxNiuv5SEJ*v2Qbg87~p64Qj(4K|u$2uiK~x=h~yp?Mw3Z!>A -z+vFT8OMtsatZ15m@W5Xj{SwVT2C=Ke{5;urTx$&?I(IzslO)=(l(PU+YaNeDXQodB -z{krYW)418D7K!g_&RpAle+*fu^Q5sLWuZzgshNAVeYW$TC=E?<rbwbL>AI#1vOo;rTBXw@a+eFB;8BEHTJ3B&!BVqPwd};{@N<^z4>H2A -zM=*wde(`aj-QTpzQjVu^D$FAg5vf|!Pn)`~mYWi_`j?x~ooyD>ut;FAaY8K2i)B5k -zgnc8>JkS|*E#f7ZRRA(HENZ!u(~NE(NGHw4u7n#ziZ6g8ONcerjJ@4~Wy?4~7@HuN -zQzR)`{~g24DqifEY36}=x&iiF)`io&n`QNbbz&osH;bz=^Nk%_+uw+KJ`Hm^TIk+)fOX-L -zgP-4ZxjYQdBek5hx%LVVYrA3aA@sd@-h}|Uri+PRYMSIGh8|-vB)E!P-}7p}aJ?Td -z|3Q~cq2gr-EQg3`INlaWGuHYT+pLrW`ljJmT5fM+*OXloTc%lwImLDOZa0kBcL&f6 -zUtnqNFAjWl{>nQb1^WK{)$a4@n>@Seju&rD*F$UJ>1|O%Jq};y7Ux6W8YkoBu*pOT -z^ZGT>LA*NiN2j20VwQE9KE3J7aTxNObLa%X&N8?^tbfGnTF{&*dYu#J=A}rJTE#4? -znzH<4Mm?N%5P5+QFJJAF1ovuBezPb4D9Q$4 -z3$M+uPDN8I7O`SMOmv1=*4iv9jSv~A4g5m`HV6}lc?T*T2)Kr9ARw12X*8PWe4T?q -zm2hFcz21rM0(4moi)PWiX$DKp3n;K1dWA7IN1_8S((TKp%r-%yKJCR#@p6JfHxW(@ -z)AMjsKDR(Oul7opP5H7ZUN)7>rh3`bE}Qyg(>QO6mlnj!-Neh?#7hg}EJPFo1j=qZs;#Ai#%t+Hj1kI -z7O^?a_Z?2wU753NMC4LzOZQyGa#09AUBiNX3|&$^V3Zs&5ZKEg9%oCQi&*u74;0^# -z4DoW!o?dfe3>4p{?-yn(x64%dMIn&rB-tI7@*Z|nW%t*Se!Dn3?iY>fB7Y1_15UJ2j;8-%$%MBhcJkNAlMB{ -z;I%`R(3?FK-Wz<(GnLApPN<1&R;`QDsBWVAywgO}@3IZPLuzdeKD_ -zxnptqHI_pRx(=%AOVJ6vCP|l$6I9C7WwQXC-#a`c@2{QJ``g2j!Xm^E5#lAizxBeW -zC=adsvEbYf)c(PcT*=wkuldG_XWL#R8vexwNULM|VU~mTc}lTCq1+G6@6(oGepJg6 -zBQA#EpwNo}ru}ti<&c+|LpHTdWLbD%1rDl3Mq{rc -z>v+H@_o7s3K)Z&4sqq1@Ru6Rb4PFt2+{$vpIE>*N!+bd_ux#%Ta!$A^LJnpt8gW4x -zMQI6U@U4aXwqR7NU3v)e!~xBi?Nn6B{2WLI{g8j)Lz$oxrL=+eS~a4b(06C>O97%l -zp?6(b^02_E0LmC~Im1vKTXA(wy7HGUEc+%nf=($_#cI^dAHabwNTC{w+ftJ&|`n*NmdyU6U4gS|pJR;$*S#a>v7Tmo)g@ -zk4&0_g41H_{T`SMANTi#iDh0tOkMbWXR5NmV`93lD~2Wr7{PE}y{5$#i3?Iu#;Re* -zKw7PWm8VFszQifpae)EOv~&e@mRrM&_+0O^M0RER7U-m#y?M5;T%w{W8t*lLwBy=$ -zX|V-qzET$0L2x2nsaRX2q&xVmN-8KHj$P9Pq5-Fpg)4Yo==SayM7pze!tLjQMIjt5 -zO)zX&GY8eut8^&nTA38F4NXj1;^&?E^Umx@%R|8DZdu~=%i6m?VYARrE+RG^^75Ob -z8TdOGR`e9fDkzACCY!f)ZqdFLqH^gJceJkPl%eQUQj?Zs4Uu3L`xrM8QD1H<9)(1z -z{iZbV9}AF1YcPuwra{3<3;tCK5Wy`FgRM1PeTdv?(pPQLTC!nrVEdRqkJ|E3B|GeQwuY^ -zWTNT7C@P7)1R`*qQWzyc6|{0YgXM6VAh0j+vdIYqmf4oNR2icHP6&$>M%xVn6N=;M!yU& -znLV{EV97Vfmn~6~HOsaw#iCWK1Q7N$U%>|bN&@OTa7zoPNBRk76i!-fZ9nT%h5=-lMTWHP~KnnmC^4FP0 -z>q8lvR84`)1zF;qiXmb`5v;;T?*LNW>|^g6)3?QPZFS|;9-%%}T3TjVbX^_SLJ5}& -zzdmJ`m?+df|W;f2Zo=d1zzM+5O{c;S%!kO -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 -z`3!de_63bo}4Z -z)Gt2IpYefTXzpu1@hjte#YcYO^6&V}KWgJUKJ-fy=L=5xPr?THQi -z%B5fP$$!|=Eg$`b#?E~9A9m!55C1|-*L?a{7VtG6|0e`Z_y;feD>>ljoB1CiCw$BN -zn()o4rCj@Y_9BfwvPXA6+I;)kow3W8C&*LAf^$|e2-B4?@(Oyxt+)u-I~UTMa~21b -zg}cy8L|TqH5p_RZk!dZA4(N;+tB{&&Ynf!|Eh542pS9h&hf2+Dyu~NRvZ&76Z|a+qFV81uRtN~UwjGWwaqJ!9o_`j3_8rbj78H^ -zezC$^GSLJ53$)x0I|kDx*)cA4fGLAlQ?7-*C=$xM@CjItuC`Yo6~^)@49l!eBh()@CQm%=)A5`VIH -zi4v{Jp-Mcy{3LWuO%pwvSSlQ|MMV;Q+ZSEQfuF8zYu0UEUa_t2QjD@4zAD>6cfOxb -z-vE6;g1={-Rw1~-Fz@Z%fqfW|*Y$%q>WroLxA~*Lo()Fv-n3^0c^@a8he@z`30K@q -zSaHLN(doUud^DE9^0_g}p1Vo6_u7`b$Ao)bEOxz?(0i^grroLj(b~7O-u>#m-yE9F -zX7uqk>M6rR>iXmPXk0Hs>nJO|_QU*n+B5Day~A4+7?0BavDtdRuP;Y=zcJ3<--h?z -z+e$Emz|ZaS+$ -zq^A#IAl^?_q}?9%=M!KHQm0#gYnaw-kvw$7z9+fq+fo*q4Otl+R(*?%g_)!`{C3jo -zwR?^E(aG -z=FRr9-t8V7GTrHuL9_1nkHcAa(Gvy@Vf_43ciQ2Obej3@r86|^Z+fqPnDx4cUNnI5 -zb%Oc9e|^ZNOF0^eL#|FD*Y9>(?V}FY!`<i}jC37+>c&Y_*!n#+uH& -z`&Cb$AB=4)6uPaEEI34WTCWXtx>%SkaqhL>j7~qyrRi=kYXswEzpHq??ulc!IDAOI*IoirU^!D-i|D{~SO7J7Ec#m;E7Ej*t-h#f{@BKzV%Cg&iY1LkfXM2LgqCPC>wr(a6a-`ri%gg<2D9DR&9_L~ -z*3~4ls>Swn86`Q)(aZbc-g9}3s)l>=nnc41IEv`Y-I9qYN60LY?bqQZM{*J6K<97M -z>TRIWW#-st_X@9Cyrn9><$10qS*q$AzTy!mP<5$zs5hAE;FoUBuNHQG=*qYO)>5+CVAIBNANQ6mm-WXjk~z}E`*2S -z@1F|%z>ZFm6gCweJ9Vd^?t987TULz7gH{9*G?(T9XQe5YFvze+Ift&cO_n2W?K;fq -z6&Uq{@rz|BCv)d#o>OkIAmWEf&#g^5E%RkOF~y3HQND^?@#~FRoS2pkH!mtazTlcv -z@nI%ll&(O5--h+!(`&0c6~Xn -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 -zOd6-)W$=0^gIS@uWf05+<gX|3 -z6!=AuwWva+RYSa(${OJdB}6_{4G|`*uIf6X(?D-QA=5F1Uk0jSXlli>*3qJ-R-6;- -z!8d_5=W9*&G>%mXm^JY9y9^#;yw!1P&3dcC!Y*#lJ3%JWFN95QvMqu)wQFiuJj8RS -z|GWuD`}up8AI)_2;rF}7Ver;SZE}25-0g!qA3YqO-+F6zDI6+}NS|;kR<>eoy76+? -zf}MozB$X|xNz~=_Jg7J_+bdVLXFP+7qp+PyWvc*pMGe5utcs)2-Mk!)X_&Jl_tYt -zhi<85w^ZnsdhRn5@fe!95tDT3Ob_ -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 -zngzqAPKIr_*&8+w@aG8q3D!_A# -zLu<4dHVwG{sBpV=p)cWgv(Nf5$_>26XXo_mj{~>45ce)+FmJ*0G`aHmR5~_AQxy6zZUy#tIoiOu#k3#y*iTKEA8`!&^gi^tU|;{O -z?5i{m5AYmCa|Uf=AC7b!CV#h$#@u@CZ0*-o&C`ViM&*rZAt5BZLX#2bxv+*O|H>tV#OX+X$q2|01M{(t-iSx -zO@Z*+q{uuDtJWr*yTN2QHw2o*`QA1QF})~>Jk+kyFUCa{M-4xoN5N!tLj-~K79?X~ -zWwzypOeL1?ju^=(N|IEG1FS575vFND%ORjQX@?&+I_Vf;%S$@vv@##a&rQapyZVxssQ~4_)BIl|>lU$QKgG*;txiyYPYXlo0@* -z#l3UY=9|k{(gyk$X$blz%h2bWoSPobuu^-@lIDKI+n8RgUmiK>@QE1I7aCr!&d~ -znx94#x4JDv6z`81q&R`egF>dDGjMSjD&X3{`E^$4$UyX0T|R+_Lu)W3C}f?`#x)V4 -zV>v@B(Z;bs6+>dKFEDA9g);*8w5hgU?ki3p)@~m=hkZbvoj`&QAlO$!3BO70QVtk? -zO5b1X%6OfEA8PG{b^t%Li!;#GYlGw%MiKgnlqxz#{>z&P;y?qF3}GbqzhR7>YN|4V -zSJl%r@?Jgr5rK`+wNa&xlK=8}KOOX$?<@)_@=@1wRta8m4>LLfhTB|Z&;z(ild1w- -zrWy2Z6U(=-YE{`7MOt?vEb8!qS@*6e&}SFvCqdi+LBvfqB=iAA`h=odOEy?^2Dh~u -z`WZGM{h`yt27VIS8lkNb7}_HSGiais>4J1k^ALxa;#d@jG(^Sx-Hu0xVBigsIK&t! -z8W~pnjkrH2zgnqxdn>HfAL~!ce6tR_lkuka#L0bO#tky}_%ihKt*n^RfLrLC^}5fj -zZ1c2k6~{$7dK$zJ>*Z?LcB1ZrTee;gcOVa2!wtqSOaIwGi*A_Ce0(ifZr -zQl4&9A`n=y0~VeNsx)dc+jU+GyrdGrs;TVVkXCH1AqoW=tyLiT`E`F&`UtLP({k|w -z@)!gD*Ey|HU{A0@M@Y3HxB&E_vJ_#IIA7R=KV<=x$XY88|)Z24? -zFTfhL+$=@GnxH8ljjn@N>GQhvLlNnt0_06KDXkPwc4<<7yCbnyp^%O -zXJ8X-!=L^jX=^B$cR=Azqg_ -z5)o$v^l2TaFv#cXsgzOVE*F(k8NJ$>Ggh(wRkiHJ>F{%w><=Iiz@eHS`j=8e9wqvM -zN@O~b=%$XDOLS8bWXuFqFuF|Cw8}OMYOt>oY@DzrRx#RNfKU2e!C18#DpEM5sN7%4 -z9TYbFEuDlCsj!Mr1TkAg6+>CD)aoW?jsX+ss#!W>ObP2Vl|P`Fw3d1PhL#GvzT`Ke -zQoIQ>$dV1P-4>?Al|P8OKyW#!C1MqFRM5++=$5-@C>7=JFwTnxs9~&dD*EZrcobb7 -zNo{lmUF`so%l+y^TBU~8H)q}?^-@rn!ZX0JGRc-Id^aVYJl}9-N0B_@+rBD)s*tT} -zm>_>C@nj#wx4orVPp$SUdANUW`0^&M3(|dHj$pa0sayGasJ<_ot?I&6*=!ZdyUW*Q -zvsFzILEXi&*@{AhiiZ`oXzgt2yV}_yNR$%&UQh$bxt4a#ptZCyzFUzPokdTjB1oc) -z)wFB=Hcae;9|5aa)4JMd30c)-jQj;{TmAP{*^U?ZE3{w=|G@WkJGDAM+0&mmi&o(l -z)v^k=Bx$Pt6XmvlSYBHcWsRtUqN~;Oix5B6*H(4$R9~BjGKO@i2Cc766!nJKxtL0Y -z)@aQ2x`>PXF3b^>WVMNkO~w~RQ5I+L_E>|I-?#}EA#zM?ds)B{LHtS!NVH%8CMl=3iFvalI<^e6!B0h)zlu)TvC_m(nzx{|YBQUrrP{^!lHb -zii@>{<7#LcklU&VJer7xPV`g799j9{CcXN2ef8Br_#cisITD%w!esgX{WqeJ8a_YInh(#bpgHUJpSP=rIp^<( -z^Lis$Jal63fg3g8M}3|&>f+0E{LpLEg_oCE8Z?r+71aHt@lkJgb9k|vdb_c!w>yV= -zyD7kL0)I06>F~z|?QFh|^7p2)dY_1^_qSo@c8y*Cb)UYkUzl_5#YpY-IP#j}(S2(~ -z&iY|tuayWmPcy1_#P=|W=MyLIwcz=dD|vXF;kGzzt(4($B@ULo^htVIKQ`UN!(kT; -zrUPZz8pwlI{m^gs{Ccagr2Ci7VKD6-2CZH`TFCXst`qm0b!o7ii-Y4_94~}=y}N3> -zE=D`pCk&4cxgWK5yN6zLH|i~%Zn1WyMQp`U(w{blNyMNCnFHvJ8jKnu#wsVC} -z`(5aaN3(|q>t!U)-U4BCd}zL`-Nx&zXpBgwF^b*Br0X`|yw2z~YK&){Y&3gm+B5jQ -zHsJTe9)CM{{Ox5to<79m_QTUOZftF_1NVIp#@#@ftc=ZcmG8#wv@x4OyXN>v^kCudwb+=Y0cwE8bgEkzWKEUs`fWL<;_&uT5$D^5u&ohMQiKjE8 -zHF;GIL*kC1pObfCIKciwAMdSMM}m8&?{DwoX!X#TwxRvEF+9gZWA@sK$M+pFYc1N- -zuF)QeFWqVMqK>EULvLNE)3=w#xb+gxmt(m1cnSTL`f1XfPdd?PHGXwthm7m(r2qOZ -zPgn4cUSVw8vqrjGHG=kdJBd0kgO~B}rE92DaXj>1I?t~&cRGuQd++|em`5+qpp(AL -zMyt3!YS&-(!r*NfG$V2h>Z!DQ-XzT_xj2tq$(8ym(rz}5+?t8{L(@3A)CoU~thdpo -zGpfJbAL<2~+=s^i=I#99X|+h)u9)jVZ`=&t8{^KqKbegtjbmFL;{>TMTC=v(>9obS -z`gqi9%!Z@-cu;S4y1njmui36AoykmZbn5l{>1(GB?M$12(Rz6q&ZdIs!`QdSvt8qU -zJi=pEb1^@3f_gA*!`MZ}6TGKReJu3ugTxxb{BO29)0cXi(;wa+#;d3^ZuIIweb5Nu -zZ&iPq=wWkS-+MuQ*ZrvPTJ^fRYaZYjsXwL5z=r*;1pZ_=4#cB50Rpmh-$q+^`80>$ -zVWXatK`6sI9Bl?oSs6YC?Rvl0ZtVh~7VSBy&w|$w?g-?pp24vJ>>j}P5YAaTu&!rI -z=<{?iO^#2~!GQ#$X0v`DH0t-e2Bl+ndcEx# -zt$L#&H4g8uV(PvMlg8`&!iM*(1~VA{Jw)mp6r@3Gu=k^hsXPm#<=&`B%|oQv45i>R*hcksoA#c^?Wg3G!E@xr1W8#JT_L3jkpm{*PY^h -z++LtPUWEH2yyx9xojeHd%a@OOJ!m|Q_Ch;o?|Sb;r%uM}`M%c}a7m{XBoA{E -z`NLyR_FAhQoFn$Eao$*u*Kgu*G}-sMK%e}XIP61TUtn!7ZO}RF{h!Scr2O1uS)s7fQX)+L~t>b(fyr=u!>l?#c0HMlgH -zRJLx-DgIOVk1YF7I0>DPq*82aC_-zTxX3FTtL9L1BOCyYKSDcZWnbG?(A7wF4A8<9 -zRb#ayD^7;p`s5VYq48F$qzh&Q{$%s_iz|EnPoc|PBAyHMQG(_XuF*ggY{D|{@Z#3M -z;6kx##UVb@6?Pm}yG%B4;gb_b3k(FGkfjZ-GRfcEUP -zrqVLTRZzp^N*>p!848qF7*fpmt=L&yV`kgRE~NVH0>dc<3OiS+znIUnM!z??Z;yMe -znxZ>Iv28SPd%i5|wkYVD<*F65lGZAgFkGTSo$%Vhf((62h*MJk^sF)s+#{3mQ~>!#Xvn -z8NTAH7BxpIwj(&0HA)*K4$LA?HGJoEFI#rmA=T0>L3SNiriT=bh@c?S1~t{NL{BHO -z@>Lj18DY;Oj`D^<`18@7XX6mn`wOjUfzZi4-q+W{y>v)duGo1~ntFBF5c|_@b2M#F+dpmp -zL;Lq9%lB4t^uD|Ingb44d~>pT_GZJ`lRMnBT{{7B%)+&(JPaXygUkDVP2#P`{17`rWwdt4poPemX$jQ(+Tcn#<7 -zluQImkA-~d?tl$hn{LP9h8aVb5O5&&S1~$UkKFD9=ap -zkNek;r5u@$V(b28ynNix)&1DsujU`zc(-#!(j6Lw^s=99w0@&Ldy_)@<<%d@EAufE -z+vEPr{Q3CuI@2cmwLYkMpP@BLP5FF(HsVzOOJ -z+kBKgOqRuKJ95X#YGy2~_|m+JgJTQ%AT#hiTDPTS(N0>qx1%X8>+uFq+gYnd1 -z>Sc~cD{hq8iSZT`tlc(nfsbQkky#xbbi=WOIK_GuhGPwpU9he`oYlvse-_IDSxrZoFca}?S5TdNAU-@c(V$n~cwENMI -z4+Bn=w*za|17WVU>mGVfQPz5K27OW=KT0pJ-Eq-2cFRsz_km1>hnMI>&jziA6K!6K -z1^1|~qD(4eL(}&!o!wjX5jN{rv6UXe;=tH_Mhar!d8a@Deyj3%f)$4N6EKe{5p%b| -z*vRW3J9d7R+T$XNl~6_ag(N9*7^d`d6r_##MtM=@hLkC*n*bOqj49Tc>zRGHjVX5al&OM6of0~1E#S%lxa#{ezMYy>1 -zHe;y@W5MN%B&8W-EMiU+T-g#;n%=!m+)V_-dv(z-6s?s+R;^4??(S%nWX~x+8#}A6&tZ*MY8G3UaI~1qkBLXr?SMWR3`Q)y8MJ9M9n)MS -zV8%-G>FKf8X4{vcR`zs1?M@Xz!&QDma$=qBvAO!)WK`AMXNx13Y(N>&cq -zO^O?gZkD8m7G#jGO85%5TnB}>FEBBN!>Rb$V(qvXa=eLIFzN#a8|T^1<#!Q}Up69l -z@>ojXa}3ILvfhso$^;$@Hl!!G6`;|a%<133^(=NcN16Svy@L5n9yA21sI)_!90w;117goqd7r@loau^v&+_} -ziqBPVQ)S6?=afMByF+j5f@*1N3=d$vtVt@Y)5-_z2VF_{PW;Fv49i9wy%PK9x^mT3 -z{ud}p=&{W|Hdcno*mMU+aS?Dvqr_4vHOLxga$#p`9o}>AY2ys`agdE)xR?8ijh^mH -zf?}Fm-kNj0ZI$MS#kRAFS#lrjzezC#?v(DUMZ)_G?d~q6(M1xxEKJO+EPw)f=qs=I -zaKOG6A#nQ+{y!xM1#huP^FN$(t3FW(9o)JdaGX8Ew -z{f(04qVVU)6hDQX^WBqDurG>TWddn4X=uS`gw9Jw$|=MOSFUtkxz~EoHJ}OZ0N%dI -zvhcv9Ul0TNQg6M?k!rq1m@TWCuTTCHCrf{U6L_7MH25bQyck-insXQ7ggO7$XSugd)dTEX2`lvnZxD#pp -z7Kw`)sDQIssyz*ltNEm*e#G-_GwaL^vV1P=dy&iS`fw2(wy*nV$@UM+NU@y9x0lDs -z@t(+U19>kyZa2Bo#YTCsypMO;Yx0mp!(DgwVeMXX>;AbN?VqRfKz<^PnUQp@`Tlh> -zeSK}rUc0Y~6r_vnW!OEgwB7w{Kk~#xKep?x@!WefoN-foc-k7P#ePoYTb--Fy|<=e -z_rrZOQ0GE{zFDtNI@~ystw!fb>bdD#l9>zNn9oe*Xlj<`PdYTZ03l6e34~Ye&!f1M -zPal=5Bc~`Xk>D}qcLLuCGIxsMQqaaEUShZiAuNVVg1gcfE`!h*F1qn$6jzp?!z>it -z&^3VuUSLC63P&)SAjb#-8ts+j9yQaQqrMDHq5(RF@#CN`{9jc#os%R^lult^#E@y& -z7fp2*g};dVN}_#W^Z-L>l`gev18)zl#03LHb~6VxabbzTxpsp7}gYilCXrC;cHO -zhEQGaPvS4IhxMLxL6~U1+ILf_B!1{ -z$S_$Uq6%`L`;FmFA=>J<80H}_@aN`<2&54IgZY7!m?x@C|6p10lBm#cL(q9cF?fTZ -z{sP>L=n9+(PtMDrv$KzH(e@N`Li;T!6a)YCTNO2-gdoxdSSTVWhOS_Xj$^q3D2STv -z3670Ov+lP9I6*DS+6V~%Cn-)O>d0^&!+!)Xz%@P@hQ=Z+{U*6;W%?E*uz -zd=DffEWyVLUhrt&u8JChNvp>7973F!ECCjGNpw8z;!bRnqkX5ac$ckPz5hBLbQ4=a -zh=^`iS(zfw5SI`*<+R`PqUr?1$Q*~HM9v2s$og^J*Eij6WPKw5klP -z8I!=pg1bfC{3g@NL7eLW!h6%oT8|w;3Y#;1z4oO{AlQsN?@K5MV78l -zrIAaR4M1N6O%C|7$zu)XDHg91FB9~i*i5Z$QC+WA5pbNXbOo?p3BUR?yr6KCF -zXxz-c|A95YKGz)ueb`WO_*Fz~`b+RjSF&W{X!~5=#_&Y2hFl8!!iWKt`v0`{#NP*J -z%I#{7Lyc*vh!SdLpzl-aPc6Kok8z-6+gA<4^K@JHK#?>&$sn=@jM#Q1*}fuTput{)r(jh&u1wQq -z)$H<{Awdf!hm}9St3h`6DH&^VW$>i+r#DC@(8+9^7^NY}v_9bH-#`jF)NoiZ%b})V -zC^Tk0GTfr;Qf23atgl>GY_?H*>{klnF)KiXOjeupdw+pzVK(wxJ(A2BIsX -z@~WC45_nUZ@Yl6;^E|m?&4_@SFo1tJz;CSxCy58!W$G+NCV)Q+RQ>g%#8k1abxS1vZy?<+|iO=FMl`nR6^a -zM^N^nwpTzmIu}C?T~O8(QA203jNbI+78NCy9~Kt*AAfvo5?~df7yt1GCVs%HG*20X -zfBcbbwpo~&?7*j=K+er53}W1%-<6!yh*uC&8Z#e+vAm@Tb9_4u1yxVeZym -zq(A^yB~!OnbxTpb7{nGU8<~c~W&RH}SnbF6-Ut+`f%T!t!=t62FVo=wKOGKVAnJ}@|G_u`Vm&m-=KGXb~-NqXlLHT0n%gyuC_{~LDOFZ3SDMNqXVF{Tkp1dH|N`JD|a8Y{<} -zAVgS&szLDU)XGUyGGFUs^Yc!IFdA8Luz_E26@8@@yQYegfU!T4CWAz&fXpS_0+j!h -zOZ#UE1fE+x6jC(^(govtuRFy&x`Rcg3>%R&(UXqZSSTB}#jPiO?kRdyr>!@8Fn;gV -z1@3pF+UayUoW`{jRJw&Ye^ -zocx?`r@pVt{2}KfP=(A^n-`X{v)!%YT)J`Qf+oeuh%bkkA+R3Udg}D%Mn5q--HH3y -z5T}hv{`BszHxH^ds_`(ud!Ax+@Sa9}gPKo3wlpO8;kvr)S%z<0vSbTjRqqQ7h!|5pO71nw -zbhye1Ch$~SQ6{+!w(cc8+tg&C$EcroS<+CvG^(`p=>iO(&UskoeZjDK*mutN6Tn_WJ4n8%*)KZ}MNfw-Y -zz4`vKtA1j+SWkzA=Sh;x$&%=D2I$NjQ5?_z!al1Zkx6JzVayRAbQ@g2y%@uLg -z2SISfO2fzk2BuNW4x)p$CS9x_)Jm6a&?NJg!dwlTd;K~lj2S68y1uB!e0P!FB}}vvD+x%-ps+G7W97j9Zdy9W -zGjO-c_AZP?It-d7-D=ujRT8;GhTO=LJKNpUNW2xIKDm2-D^y7t(t(1JNe^HE!q@mL -z*UGz?a@bW4-L1T?F(Z@4-(^+|I{7)F5%|BRR-A3ksQ71J3D$Z=WVU#N5DJI_U3(h- -ztpwmx%J3&)~OIQN3&e$rRK?^Ea{>rx{9kfqOX9sDC*h|>K|dSMTtiN)Ph3B -z0nx}Tj83V5;8oPn#9*kpDyllxg}Ta)MnhMcB>`eo7e&a#V;VS=!zi7jiYn(VGiSj> -zC-lc_X9&oAUJ#U#n^fZW>~V=3&QHoXh}oph59x^y6TT51`6er_^PHrcw2JD5P!&Hd -zMNn47YF1<%l?8EpQ+~fQMOBhSR*U3JF_}|p0jl$H1q2LMDmwoRo?x}iSQAvkGJs=A -zmTCo(5@}+1D{oVybY5M{O%LT=>fe+Kv&(cxF`&TViG6zKFZ^?qQC}~yB?yG`UhQJyTL+J -zpf5Mg5dqV;iIP?`KP(GN^Nz)+HS7vqhlVFBh-LxemIl*Q162eLSv1Vda8_nR=hChKK5&si~#nVYycs -z{$mUvR9$Sen|%_qnY5c{70k(o|ap9 -z&Y~=EjCmtz$V*j$H*^Hp;w6I^A~Ddn4`N5XHElQVzr_hizJ5*o=B!;LQ{Ui^qM0B- -zB>8s6gJA(_NaEmp(~})X_g&qz71wnf!8I?DVOD%v@U%>FVez6ODVlM|pb*>p$d1R0 -ze*7TznnEBvNC*RX5c=9UaJx;R9|Xc<3nBj+!kj|%$vyU`QwYIfbJrUp?BN?i7IH#= -zitv5U&1G*toF=;`2CbL~5A^`y4D(^PL))fMf?En9h%kdfzdsI*rqV-r!+r~)5=Dgn -zV^DwynMffSk8tfMM;OI^PVkFd*)BX2LLYA7 -zd1kbW^;qkg!*HK&rcy1;XXx^LLPDmd05cr#Brf8k4*}HXwY#mvE7Bi+S|g| -z^x>Iu{0mzMyU5Z0x!sm9U()AdV+ZXQ2<<3CU+?kRHMZTyK8m|6$LAZZu%9pv8+vcr -zw`V%uY@dFCYqa4v9IGeCk9*ZWSu#;EU -zz&pRE@3m;kF#h8Og|XZP?ELe5Q0O;32i_BoH$qL$kK-kSxRemuv2a=Yo5KnEQN!`W -z_g=pL=g~Gi^%LGt6W)i>g!Uwa=@jvOzjR-+`P(qDrgNAl*e-4BfbABvZ#j&gjrTHy -zc}$@*+55q{jN?0_{R`>bJK{5|4Biso_ZvQgR=z{=G^aQ4oP8I^M8kgUaC~_zvMcb>Y3SIcGFy?e{1|C|xrtK)bRO)2Q~)Sk4?EwV9rCIbNcQJ)(`BTfX{>PEvI8g=d?`MHJzg{S70sTc&$n} -z({0(8^SvH%?c%#UviF7%pOg;Z8hJyA()xMKDP4MF>u>%%4jgEMy*nHanZ19rgj0oi -z>z?6VX*=a}G!Whu&w+acv@b69ZOh&lef|u`W>-E(7vB%gSHAbOjxo4;f8D -znzN`xwx%&E1mjvU!2e^^9<`bWOndjNZI48b#No1Z#+{i^*k-`ixH) -z?7bGlPjihPqieUE%M8*tFL?+XqgMHzv2Sc_&XBZ}?gRfh(DCLN4Z-o8mFooFC(zlv -zV11$d2il-xPTwDWH}E_0Ip5HK~;}47ZmhPo(sYvjDGfuBiA)q- -zk_AJ&alQ&wvMwWL5X~+_lNZfODDxbyM{w3lYaK -zc1x4m(PK8Xt;n+qxuB-ovMz3=g+RFHK8x1;mSf?tJ-G!Xz4CLOU7Y-f_F?V(g}uK~ -z6lf+k=Q3nScq+uTU#5Ha)l8NA4KzXafYBYA_Wvohaq<0To=A2?iJ_s7nbjQ!p;B1NtY#YwbJ~?=?aQ*yc)B(#cJk+*E}bH5#6K3E+MXgur7ZBBH!fYrX`(TRm2;Sr`5WENHE{RC|# -z-szjmH=xTOT+jb(MZc~b1D6+>!#j3P{pc*Mhl8K2HagGBKisrnWghUWY79iUG-X|^ -z5Mp}RZS5rb5NtvI9Dx~rxWFs;qZh*BkHXjkI(}o~_pQ7DlI#KRwvhs+S%NjpS^NeK -zMLM5B*ynkIm3a&0!LqVT -z7uQm_;wGosF0Y-=F{O%2g>*qC6w7huxDI*dPYU1rsz7B1Qi`tzzpIeoIvq0|`s -z<6G-6I@J0}X8j=x!tWaV!8cYb4juf(wyykZdG!*Pf3Ow_i!Xxxccny$^RPaszdsEt -z-o6&VD8`p0hSFS5O~o7xM&>zTTH5bXIH1L&a$XVkiolDKs>6G{vE$)DZ<8;B0GBRjfFA -zt%ZUHhW}GhgRXC3fsSH9!aM|&J5K2cSYrEsgf!zAm)J_6W-*eobI=nKM3%aagSgD^ -z7MN4z35I3cvMB3@D!7I&da4BcPVqfgPz=XG0IfBs3|VY?`Q=q0iR42Xy6 -zQ-M~T{IMVn?P=N6c&jY?C(~Nv(!*wUCXhX7 -zlrEsKIIw+XHV$KFHR03Z`!V=pY$0G(D9O;rWGjP3pt -z0E8S!a_9x1%1|(`9{?fzMT~+fDblTr2!^OQl)ej_ry0an?=5-|cF#|l8ZPJ7W7Ko? -ze1vJ7!c~B-sKQW^iW}F)&E88T%#*7Zi3Ht3%w}f+>WamRFMOBZ24|e$O&F{2;Dlry -zVj`v&Y$7Y;641rVT40}eMp?}-w*IQNpQ!LIs~2DDf@=>*2}8JeLZ=R2e`$%LE^B5J -z3&SBh>qMwH^WEW-$u`Z~bIzxjifHT=88c?gX5GAh!V-b9p{NEZU*xt#pts>R-_@LR -z)^x}fStD3KPZwpIlRe4fbW8R*NpS=jm^{pG5mD?sM;Bee);LE7b}w5p;cP>*ID}%e -zd{x$52>}vrDHPWAW5tuHhx6>YVKNH~w5KJZLwK+fk)`B4G{=JGWS#aevvfy+=x&fM3 -zzaMr)>0#-8+~2Fmju+~N)>yfmXp;HSTh0yAe|(+VL82b>_66SvL2UBFIxUhDNpSge -ze`iuoC4$ygF;gtoSaTf1Q$;~{eMQk_U$?Q|v9IYKaV1C7T{v%pb|EaBCK-r+hZ-m- -zpP=TNH()rI)EE0EGa{$yF)-L3rH2?&q2qv~apzozdp7IcL>^&TyW|vi!DmutJU~;IK;FDAy;l~GkC3}2R|GvtG2aoX3D8WG -z9Z-5UO-b}+Oqltu;3y~u_9l! -zLB^mbc=s->xr)6ub{jwXh-BRobKl!ktePRamS(7yp*xc0x&)XGns+q8bp*vHl7SWz -zL()~%IMp};+3G5?o%6f=y66Ay=W -zV{b~@Z9D^<=U6$L&0LucU4|IF)tghaw8DzdS?YHV>*db5hC~UK>duO2X0*TKW#2a( -z)iF3(^HhFCI8&2c$+kTelw^l+vMkx0<+(bi0%O%Z-%&Knt8OU>3NTf_2}oLJWHB-LZcvalClZmZ9{8@vSTGyMV0+lDC!uHn{m=*#42X(B64qjEeDfyj$Ad#x-)1sth{ -zw@+dDtSKTuYK3l@C8fxO5E1zEqQY<_Tn)*F;|Q>PJz14~!*FStJKuIi$5utxChi4u -zZJ$P11;uj9`bjS01!BAzT{_m@rP2W*72NcZt2HK;-k#W<_GBl#w(!sA8sV(o2>n%K -zqT%=D&(AU>skf5YCeN#I--K2Lq%nWUOi?rgfgq=1l?p-yW=i@j*%j@6XL;aSBmjXH -z1G?B($taymWpB2hb9L9k>vB0~h-K8my?9&OrZ;t~L{QOW9mv0^i;|{P3g2;QElMmTbX5YY -ztY@`fN9Gm?n2e>LWGp3&p}aAwU!IGmL&a%}ie^y=W(wbtg6%5?4ZNvm+qTe)-Eg2UHzSo}_+DVZ^|c;Arh-C>oaSi`Lh#-qQ}NaJ%}wGBbl -z9LMz(;6{dJTe1fFzbCuCYOAhwD^9w_VqLD8(~`zSUuQkb8wfKE0sjbXhzIg~}E!ge8QJ3-hrQ3v5(k!4Mg{*V8I=z^w5y70Ry -zz~FYM0!VpnY{Ez?m -z50PGAEb86aJZ?{VkIrN(ZKd#~x#^EyVzD1LJ5e_@*2^e{F_V(lWlo|J9Z#GlY -z_F^~`)W_hZrCWz&uuXf|sBoDie~~$GXP(R&f`X6rS*G2EE8xU&!d49(N5#^8P!<(V -zvJf3u(+rwL$!UhKDzdH!mgVsbA)!c^Po4tz@RIPE`~H;;qsJ>^`~HKwpT^IW`&P}# -zScG>$B;f~OFMm~&*0jn%*DKo_GYX{Zyu@*#K;H-}x4%o1gj%%_sr{tdf#w#wSgRKv -z{o>V0F`0RNio6C1)f+C-D;ViHR{i))yteBR9}q;%#4fvMFoV!$$213 -zr}cMl$eSaK>yJXhdE(KA3FQB+PKpr3%+ -zBZ2Jx^G^H|RFvy15}W`$y2oy$QcG3|hJ9n^55)=w2Dt{Z5-~VfCS96{FM-H}*Js~? -z!r1A_qC^oJF`gR7(N1Xu^|f3th*j4LqXYVDPK)nL&{-NvKcVg!Zn8)&IiiBjSp{cQ -ziCUE;u0G&AT(GK)^&|}2w482LHld5WGyaSU6Rz`AqfjiHpXpdC0u8FQB -z7x_|5DnMx0VeU;B=xwdYHr_uDp}4`>T;^sO{1M&yOKJ8KvsD%u79jnBG<|apM=hD< -zGoA1%adH+Mx*yB=No@yo$P~n`0+H~u%L`O_7MFr0rd|9=Q^F)eQx%W_Dt@grJ$2xd -ztM9x#DdD|vw--gpEwb0zTfsU&Nm5(LR#0s6l@}Ny3AUoM+)0uu*ov^&ts^T}rLFj} -z-5-{6s(O1v+pXp3xL1}RqHK5qaaV@7-V|=I%|CMT5jepeT|)%k{DqbZr&J#XsHwyF -zOOl`gom78Mfp-1w*9s3y33B;&v&6G4HurNU!m*n;h`JW_Z#>!v8h{F^YgbnxV&~z_ -zPPQ6$Q#;@gXb;n;xg50e>-&6$`9%V3S_c0Q=-s8k?`Ym+Q;s)&}3z$P2kOe+A -z;SmAHcd#ZhZs&zLx~Sur%aff2lM1F8o<_Y%C>C=oE96o?vfw3in;3)HKr83qn1^YG -za5#ne>A^1B%i@KVx!eL1tTK8sh=S+{2R&iq!4!=Gj{|uf)Mo(;Gy?a5q0d}ZmQ6?2 -z36cMi?vYF7SXwN({WE6=8nZ0fox`&qoQ%;R)U}jf7vA+&$PDZV<^;&HE41Jxn99h5 -z(7M!@yrzhPE=YWDQ17>(oxUQl@Eu86J~SrznSSRP^NtKO2TP$KBvt!fD0s@aau8M+7K?71MO -z7_!GXvSE9&WgD7zp#&67JaZ8R>PnZi3tYTuxB?dG;cWKC(x5KiYg(YXFA5*j8EOQ;4+=%2<{K -ze<VK?}24wya^)&6pegaA?$i$%HCIs``*pDgV!YvU}FfFhaE(=1XwT#w@ -zRlI<-idNVs%C>2G90Dj+x0u0&s{=z5@K=f|)al2zyy|r7_RCgIJEhbqm5Le8A_t$V<$=#fK@ZVoy(rq6SF-0`QKSc0GhJpyzj;Pv_EWuK7fw_LClAm(CF^Y{(K`mq(u*g|J8y0)d5ph2Q0pV6t -z`*$q^%dO`7QeC5dqLT!AN6|JHNnT)~3DEE>R6`d8-&SPZ;yhx5*dU8O2TFs>p($2! -zB!#HDffvw|-@5&Ax~tdg-M4oRbk&MU%f)@(eVMx?u!_Pn5<^*9$>-3|QtCkBz=^gj -z8MfwIs-h7aR2Sd&d{Gr~m{mz5zN`_?*F8;C4c8VuS#yc#7;u>=*oLUzqUJI^=Ni|L -zLRB(Pd`*;<3VPvdUjFdWXg{iBl6^eLi?_M!X_LwFq6GfD@mdm8Ly$xrHmCPv^LfxS -z$K~rWsWkYdh58b?arG*{FisO0v?xOnHH`b$G~;g>r&U?l%lf~?I1M8QvMY#Opy{fb -zAyDHqfwiHE7z*>xjMI`TTdJojwuVIlRpG`sEr5o1W1OC+c!!T`|D9bY{w_4oNvega*>i$T_aRf94>iG0Uld~U4>DdLh; -zchhns&M(008j-O8fK<;}4pNDfi91&1>3*7F?huYAh!msuMP2QQ>O$5zTlB8wj3HrR`}@XOs+R&J!$=|nt%$cjj)(MiINW*^uj -zhT>LS; -z*i~|?So70`_unSrI{$B<6!vvmE&Y>=jqhXF<&|>DdA931SZYL)biK;1t#M#as4#Qq|wd}OjaMW%Kuc7Ygy4QPuG8blGif`NI`>Xfr%?FD^ -z9(YM;hEb>PPAASheeLhZT3Ua3PNJ23zh1{XUurn_uipBpJ$+gQ+o!i_{=VD3y^KbC -zq4Ut(N@vEnylwEq0MsK)+UPxL|#+&6dMMw3*nR -z`t;#Nlm5W@SPh<&U9!1vwx5h+{ViOLcZ0Vx#_xE4ih*ON2*#!a#kM3aT&`Ojj -z%20k{2O?n!5(FR^y0d3~`&}y&bdsv8&EDsp_r|SmN$@6-xpLX(nLZP52@l=7*B>va -zklc5pi(BW`ee5PWy`0!XwSPM>yB$AY^=>7}97@)D)qTEudYpC6vuYAgXg7R*w_Z~B -zlz(OTY*goty)5bSw>U3RKJ%^sW_J{DC!n`1GaErB(b_N92+(LM$N>Oz6_G%^YmDv1 -zYv~e^6{C?M(}xB|wyIh(1A2nnVD1eV^EihR4J59NlU$A_8FFT&2^f$KP&56orGotf -zQcf~pogZ`5IU6p{#bBx-Mhn3;OfPDIFiyY}MfVs?XtVHrk9*9LT%+L=sG9GdF@IDG -zlbOl}qTB!Iz=lg1v#)Gm+w#4EuR5^Tl$-`MADU)F`oUcO#jFLo9a#4x*m22s@cjNB -zy1JGu$v=!!2R6&n4pxUjU`c7fs0JeRu_O1u6m3-odIoS)}FpqrRg6&5EX&S?;UXtXoTv)V1Y=v;xRHk{TwxQevD -zAYt{3r-*o(h9$dl1I^qPsDRvJWeJ&fL9v%`5HT=BK)FDEp9p)cnP;>paE`Vrij^wJI;!_2tZc1fWmVN4i#p7!*#db072-;R)qUnis-(g`}(} -z$!Z*ZTg8`&QZU&l2<0Yv3YhtGQfl~*L&$tXSmy(8ZPa^=dmUR!d8n%|F`BesNO0S!E}=W+D#z -zGcF9f7sJ~cjIZZ|TyUpY+>WyA*>?(`0S8OtyvaFPqyVA%I$e}^-E;wlBuY&rRJnk& -zHcSel#JfllXI1K>;KRIZ95@YhEKJ~nU;BgIX_VF8U`&K-hd4=SO)R?lw-*AsZU>e| -zQBonu;M&w}UHx}N5Jcw^JnB`1sNR}lG!-3Bxw?3`9`Q$uqd7jzx$n+XJmmtULku=m -zmle;zS%w0_R>5R(yxW8ZG>`TdV^1@pdu)C;jhVR(CT#2UaT-{Ei^ZczTE@!?5yo+i -z2###dV`zJb_FePnpnxU1Y&ICxBk1K#0$Y9L3`mo#VYd_ujA`8hh2tQi_N-A=;`)A_ -z#&jH_VSXJK%DmO^KDTAt9 -z)P=X-lwJ{LNMr$0rD_Mou3Ujj~0 -zx|U(SFE~}e{$QmUFnVa{J7FM3`99hh(16GiC?dY1=w{%%&|TEPF*FQtI;wGESN=vR -zX5jD`>nW?PTQt1|J{Tf(EYc)}Uoi4THOkg9v37s6Q!3|zQUqX+>MA@KA-GmUvSXwI -zshBS(U~=nCNi3K*#IV35F=gvC3I%!vG7sZC&0OY;;2VF1;#%B@s%HgMH%tMP -zDr2_Vtiw+U5nw6TdQk*J7A2>MQYZ0uMRav*vU*0Fl|b6NJR_cJvP+rpv1ozE#5h=r -zkI**kI9XQJ!{_BeP*6V5RVB-kswS6w#|ZDBbfx_9klqeZGrs -zX72XpVZOfUt|E8wv~|y|%9Wo2?>sKwCPV$^;k6hpo;L2n+6-rzFzkhYhoAHM;aVO)-2LD=-Sv3$gXer9*2`UuVT7zepN$7}WWi);VrZqqd~cY) -z_th-Ep`h~4_ZAmuZqk-GTPs2U8nQ5r!fDI{xL95ic{VpXk1>}v -zSIKPPj5QcOx6*RjZ1(E{z;JB^nWQ&2w`PaTs)hr~&&wBbe~M`=-Z04*@V*7t@9sgbwV -zhgpzW>M(_)1$m14{mgdtanify`?Qb2k^-NqMjk*+ -z1(u=DV2LDlF!xV&v9L1=BIcor&^Aj_M4|BfAWD$BUSfejw~ROZgoi2WugIYoF=~4$ -zqv&H`#u|borH;qh6J&`c3F0;mo^*V9iYKx_;1VyFRGdyt{=(n(8UCiod^e&jMvj&L -zOpQ&_CFM9l%&)f3q-ixMv-TG0Hi~1UWv=bM_0H~#KiPdOsbJ+h^AC3494D6(yD!|? -zebd_RbHBFxiVt=l=sfPc^?&YX_$Ia4DfR!fWac?E!Re>Tm-M8^VqWP!>bS(rMihhi -zqY&xezq;s+!_btzDMyu|O8+n1Ns~?O%R700@}f*gW54*~ntt<^c@KvPW|M+GoZ(Kb -zL$QUA#@nBN8O8ka#_c?;SZUDDTW(i;^5KU2RdzGYV9`zG%bVr%CW0b-zVvU0x)6&h -z!{4V+Dk{GtVUASm5IQac;(3q^3kH+FDv(@BDIzau&NExxso&ZcE&Q=6=D!4o -z1C}7@6tb+zSO}xaAK`G|l_b(!`Egu;zz)-cE2?&Y)#fOJy9yDBX#=kn_>3<>vjO9hO -zbX`(V^=mBLwAF~E)*7Muu+$MA@ -zukI1(vA~R1*BAL#;jl&c;HUXrqzs1yH|S+ibx7og3m|(lq78YDU+!G!yMiK)A7H_M -zx?))f=fJ2tZ72Mkc&Imbq$unXZEwN@n~z-46HS}?&}vxDs_^17Wv -z+JxY{P3H)!q|WHY07wnPRI`-eUtuL8Z4{ARsz^$pQq}Pd8W73XJt7g!Qza_7zDcNh -zniq()3w4G#hzJp@XC)1^VsuAiELt^nOv+Nh%3vvazG7JD#1c%&^aRyHDiXz11&Qb+ -z(1-{B1qf!0!B^AXajgIm+ziuLgRq=NBv)HF4ZvQKQZjrC6tH -zz(as|mp$w{svJOPlJpN41b-?!bytr=%PHL;0~%)SBOOwd>~WkSxS7!GLEp0tlq -zI@X%&^~nV>Kb89+VQKBzG0Xp%aYMC7TQewVeT)rK*0D6&HQ6f$W=} -zsyalc4$M$6nAuRmJyGmWqby77@*y5*`~m6mhl6p85;&?#Em_q(S8*9>GcR<3OMu#o -za~%KE*hBSjOCFQ=KVxx!xWfReWpNzaa|VLB@Iz{2su?EaqWNiH+=zP&TD2pb)m${< -z6w7XF>Qt;En5F)v!9w?S$eTfKu;gIAVJ}Q%>1WbJ6-^j!#8gq7pakYiAC02r(Nbj3Gx?9CJ`E;^OS66ln -zM)~Ug?fE*en`L>3;1-}Puvtjh1=DvEG_qN{FffU1C?e5}wMd_`$FKE9>S-9*ftR}iLR%TAUg)e2t6TyqhSIGOu^BqC1{R>`jD?^27}Ex!c3Ai -z>HC!ZW^hTEmp4Z|BBT!NO^)Hhi!mFOXO~&o -z@;8_1+w)-l_Hwypp8n)Aep@_k-d={$Osea72N%1FongdICiLO$)I5bmhY(4CsNSJ7ArP(7F^Q&;bI~@!_9N)2i86Y*g)uUcryHrVu5aEmuheLI-|b%A -zj-d-}l$i?$KG4zC^K7j4!*Twwco^T^zQ~W0OZ_U4t~SHxUHBm`nGjxv+qjWwtso1x -zE9Ot7o|mJ?)SYGV>V0!?Z)WSX6~6R>&Rw9dsi0|U^)^bf`SVtP>_0m0$bWp8PP3`d -zFT=;7eI-1+=d0i%wjUo~uZF!rcz$zvDReBg4O5mj$A@5m$I*Kn2L*GPwh#ZN=rX+( -z{PQP0Ty4AkioCm7L4UEcXd5kc9kox;(v+ZI6?i>T%POv-`Oc1wF#k{^Mb -z*!M8c2bJFQ6Bhw`6$zC@7_#(3!d_lBLE_HwC*(*3RT;%%1xn`$Y{4IkbpG*d+U5OV -z_^8d@Y^}^6*6C8s-feqTXy$r#9xu=B_t0rSgs)fH@P7PkS))r|dQj3JTRe|b=OVH~ -zYn_`4Q3g+U0)3^@>m<0f!`sRIvs_p=gF?G|)t=J6U<$(rvuFF`&R`J8m&OBqa3yc; -zUr&V6xwPf$sJFQoE{3C?6(sGcwqDrJ_ku91Lc_njD)P>)elKkAx|g%1Fn%|mU-Bw> -zdC6aI!g3Sb`NI8hbLUn5<|()vdx`ZnyKOJFm*-D~J>GQV?Ty=yRojqZWFBY5D(BOZ -z^gBIwJDQR3d~=>|6;B(ho0k_=R_^79YW&&&A~ro*Bij_mR(kW1(G -z{&7^jk6-7{H!teB?S=H>ZMd0^H`>4oC*#f}Y2V!q22bY`;Xbyt%e&yA>pd?|vtrxp -z=f}%nIa*3rm=*gW88*eq+OKvd%VL>jtPpWusGH@ipqGc;WOXg8Cv)is$Vjd;(E>UO -zOQMUQnbo(s{uI|U#lzueH|vWPO{z3W8d`)+Wjh0eX8F2<#DA7-=i{oHQf907m23n8yQ(ARP`u1+sR -zvrHXqQhy-xd4&Q$7T(l`MMZ@$@sLnKY!X%<$ejDzH;Sw -z{`NR1UX!QN-CpNUvbAx}?^dxkFS4u#<_>x%QiDu>A{r#$-3YA@khp?q>o)Xbt}SCA+x -z`dY+U-x31}7Cb9Js|{}BN~S~HK-MMG#aY8N)!;-+gJ!LeQ>9J~ILe;fduJp`5lxwh -zs;r4I^4o}$QP5Gthb*_k>-l+>UU%$SygGTl@W|c4MWTzi8O*F=AihK6b6`QHLdmRN6Ghd=tGRHS54;r -z_jWu_r)dm_gU0PA-v@Ys+>hMp_hpo%cmZ7@x(3Rp)fz><Qh6pZQbJ!ocj -z4@J{u(8V>qb?!S=Uc$b+3e+q(ZbLuXGZJYsl>VkW6}?Tg5Cix$hABSCiu4_()7^L9 -z!K7fKt|k&wQ*=wwMMLDk9}Ya`XS7XDwt8gz)I6B-x`v4@{`))%%HqFoq2K-YJv+Lo -z>Y8JDvaS=42A<^+MLj{!WqN5smtL)Uvr@|}FPXEiG0&?t!XSl@M4Bb(pDy=wsu)BO -z=IXMgkmjHcVD~tfb~z=&F$6L1dTj74Wi*|T86rDlC0ipb)@)z5J9qs-`);;;PnWaK -zeXm@;PQr40u`!bn`sc>^D#FrR*;Fse3K!bNiOU_ -zO2ymB!`Nmt6#2&PGIzVX`E$d$Ak7$YwXlGleL{|31md6QK2Z%vL#`#&@T5SIb<6cs -zSTd#4!glUK;MMIr#LyER5U%gSW0d}^&T_6-5TiuH(`5Z)z2aBS1N1c)GyxruXviU9 -zzS8r8$oh5kmUY^~mh{8X0g_IvOK9_Q@GOo(X->gLwFfN!S_$L`S&(p+j(ozgrIygxE`XShkI&rTipWY1~R&k11%ZE~p!w%7}@-zSgKf+2u -ztnHK}mh%^t>Acl{UcaA@@6HcRyaTQK%9h|h7_6lNg923QZd6XE=i_noGCHSSjYdM~ -zgo<+>_O#yBCVhLF)04>eZQA|I_q(B) -z8}^;z3!B^bu-A6O-fA^@?~L5egVptV(fQNVyqe#w!)UHQ&S!7sP@SE}BRd>*x5H^p -zil=F}M+fW6%(Rr^-fA-=I7bI2B3wM(d -zq1bju?S8zPpOdn?aUREsD;saC*|PAhB}_OjsCF>KHDfi4uU3op`srqS>8t76T(H&i -z&2)2juTQs&ZE-UhUcOb9Ns4XsHqq8^k)={?_}rGOyYi{(cOTwDZ}mER>6akDwrg_z -zM6LJ!yZZb(tkllk`|C?qDE_MbVCy##M@9h8-;41Ct;rV;p*E{dwh3po%{dU{I?Nm6o!i)Cp@S=0y)wWjHk;3q@ -zJM2wi>s|Xk?1t^MBX_R5QRl9M_R6%idRzL>>*?F$JZQ*D$Pm=NdB)5}FM -z>6vT8=zA+ogU7#EPSv3h=+&(&j4m?a_0}}!!J{>}>BR@n$bunoV@}AiUouH;w)BCG -z9V9X`YS5baZ_1hb*mi`tC`48~%TR=KTejpig5)9l9z#ykEK`@XBQQxAQp^YE`dNt} -zL2;R5#xTn%y2mn!;cjm~36b=w%~01dj&RMA_*-2V{*9+Pn`koZH_;i{l;p;p-5m}4 -zutXUv&PBL2SMq^{!aK-`^d?{XAdXBe&%&Q)h%IcI=;gbmT@u( -z)3fru_5Ly?@-Tn2!qMb9s*J3d4u@*uy~pu+(UppJLE_DMJAH8pXjpfPP5$^8EiTV5 -zUl&(pyA-y`$lHt`ujz~L4D83vrf)276Kh=+G+vw4`@J&%)Q72RHxx4nnHveqU< -zSl_HhM@Hv-I(jTG9`2vJx@TF7`2?;l_p)<$&}|Qep3{wm$B8ODXX|JC -z?oACZ+s|1P4Ldg-Ll18U?^GCsVOxG$Y~?jgN5l2@sx!FGhi|u_)ov%L7x``X;rzy| -zI+O0h(0fw+G`JZ6IzYw08@eQ{JNfgK>5o0{`XYZhzmv|jhsof59>=}gF1>t|+nf7z -zm{phCx$_V`Uq9rUM^pFt#U1qQ>hh*9Y;5OY)KlnW8$T2<)SoY^ZC_or7vuXk{VqMf -zeuBX?H$fV|-`U&wopx;s;oIxw`sFSwZ-&X;9Nzi4++0o_Z@qOky{jt8#zA{v_@n2^ -zUG-YMTt_3p4-<(*tf16D;{`-mUhzFOm^P$+w(`Qh+q1{>vbrtpRBH8 -z@!1I8Cc*NG-jKWZ-t;0^ -z!&o43*K9vL^lr1;$MHfw7vA*Ol{}d{gHEQ6U+t-Ir@H!!^?Lq5uNPi%E%F&@=YbW;uJaPEpVf<5|4tef)%-b`UfnL*>H6wHeeb-zr&mdPm3iJa3FeBa -zT)mcV_-x;f&HKS3?Jh__M-SWaV(luUrz^pY-BD!6Z`zywC}o%H+c#Iakggu`Wf&4+ -zW;}Id>8W!rMS~@DB{H5A4JT?T$k`fbvY;xeE2tVZ1*)lFjDiX#Q!DT&ksFSKTBb#b -zp%6zG9NmHAHHiwQBs47cj4ct9Nk_HYO|6`<;pFn@ZSAn+GG@@aB7Ki?}5SE<~ -z1aSF?t|I>gU1bR`!fVTy*`g}_eKj!$T=5i#5W~gdjEE?!>|hxY3;QE1W03pI5W~Mtx)u-YjX&~* -zB9C2Gx>H6?DWmCzFfI&R^sN3WttB?GY?+t@bOg`JgMWFsIZh|Je}BCZS9vPJ$ilL9 -z#CXY@8Df1O*CS~^z@CC1uD_>K5FXHxv2y#wJ;qdi7_19q*sKiz^fWLn-$v;GKc)rt -zod)BCXo6v=rfd>P0Lv2$YRyO52~Rfz6QrT)1&R-&Ng)b#ErSr9`T{|NiwOAECbYUP -z3m`%SMfNSQV>MG1co0RltW%V0FRSJTSzD`kF%Ldg!F~qIEz@jDOM$H&xPMMyaZlR% -zGjD2rA=tsH7wdXTktcH1f0_$Ffre&>BEa8Sw$MD?_+-8Xi*mVh`R;tajO2m`b;LDD -zhLcbDQ#puYP{bS^u{XH2$(mp|I_Ci?n|T5K97PlCX_PJM)n*#PW$*bSLG`6u=mNG+ -z^8_T+;R+46<@v6r`aaBE3bh1P4-|na78N{$AT$qERBAOcCH1v*shhkMv#xQ1wfOeD-n4?|~>q1S2x1KambUDzBr?lgXeL97Cy -zS!Kk(l(kq?blp;+Z+*sRJI>(A5%>c%Zme405HS{|??~qapD216o>TIkSo0GE$Dcw% -zhm_a;vt&nT0<6UT(`duTAh5A(F?)6<_?PQ)*6-h}X6@@$PwNj>dFiB)@-R^P#q6!j -z&L_^_dh%eXbfvdWaRUm_(@M_U3+-leOT+hz%OSmyAK(9WyNQPIQtE~Ee06o(jiR@Q -zO{Mj2jkMehK-~u;r92-8uD-0?lhGO*e&?eTpQw$7kWA~kHVLG|n?yfcrI85MR0UPxDn!^{H^JaEC=2}!ObS^Yk> -zHADZ-!4-c&lG5)1TmFu)ipY7dfp7*{uj%4D6_HC**5s3BWP_hBimKKy{n8bAh9DNI -zha$&Y!BJf>{B;C^2y=?4rDYvD5wg?tQkX9p!!4MhNfp9?Vj?hi&u}eiF=j?n)n%=L -z8wv)SV8A#)J(g|CBkzmK#SjUAF~62!5Fk$Viov@KPN(rB-{yyT{B+8$J!G~GcKwNn -z;8`L~7sF9Czpv+gcTyVJANGbOJ7*w?6{(Z5TuCC9VG&y(F!;Uk6VIc -z|9qZ@@?AWR!ObE@ERkTI@!TEMtZGT7p_{ru7$S@Y(?946nqY!KB&bC71azWcCaUS9 -zPC*ohAy@n6#`*kWejjA=n^wwK -zZBxs~k5{ANxi`oz@6B0yA4xaEn<{%~pWoly>0Ei6JXEjmX@7N;k??T+++I3!;#S5qs5X=3=!W?Igmkj) -z#)|Cu?RK-im0zMKg(~`}-9h~9jsEuj{`fYzS>N4Uyj9hm=00k@ORso+PA=?ed-3`b -zZ%MyeK<69G?kfG>=HDd(yA& -zQ!h`Fpgj++)-M;n2DbjiEDhQ?v!N=mXrwLeJ7|&(u&xd1yNt{vjN|+}11~r%F5D#; -zS&D2l7A06^(s$`Qt{r|gPBy~=n0!SGl+i{RBR{yNHNuujnwAC~Sv5d~FhSjFOuyKM -zyeOKcH(06?oR{x5lACe}5UL|lS%WSY1-=~p-N~c}WBAB0&6W&i -zL^cdvg9*@E0x4M~&bH`Wia+kKm->y3;# -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 -z=Qy4QRkDX$dq&#DhHHF~3sy+OU8<35wNAd)Fn -zs6v=Vi{ls|2is_3ZhwL9MIOo&m!_?WI0f5Ibjoh|=PCVUg;V;;<{zT;TC6KUoj=PnXY= -z$MN8CbLoj^bAQuPO+S!bDS+`|U|AI+_DED!1J_VAS2sKgFGRJ22!NM&X@Mx}?{&k6 -zHCGG9kRMWxZ^V>5=>MmcYcLIflIiZ%SdW87anqd>IYjQ+A+H_3rThZ`C4@~{GGaYv -zD{U^5d(Az6w5}&_@9tJwUviXV>v}sR*WEYC=}GJB*<8NvwUO8+3^zC~I0h5yhQ0pi -z_F~wzyN|=(e{o7%=@hQ#LnKN9$|PYE2NgJNb-i&&tpEWK8uHI_#aYwVm~ -zOrr6FKV?Hk;e*pv$!BgZcA`ai1{$irW_djgwuqm?AgXTZ -zlA>r5SVJ%%6?`5q`Z!e{*S~Von+gN015W&jZb)>If`mdu60L)PY2UQo5s1K7RcQze -zc*gskonXJnvIJ-NM!n5l?3N0bk#m_EJSiA)pu=fkg~3xFd_D;B+{`Nn2RO(8R)NlB -zHtsmfm_ypIFuUM@iTKmJ!%wJ14Arq7N0@OcE^MBqZ?i064077jjhCNfCwl9q6T!?u -zo1ibIpo!DE0Fo#Dd}?b?6WCX*!OPw;#!gtI9l^&2_`?vGp#8IIkB?IW04zAt+6Z0f??P|69FuCO$F^x(i(QKvTJFuTRcbv*Vzp@#XPPR<2h#~ -z-I){c13Dw~<1ui(|5?&Hzp05(5<#4>k+qZ7}O -zz2L+A0m`ml{f_Dw6;yyG5p`%`%albdkNIg;3?Vvl^d72WXcfTmv!Y2|hE)d(RbV5z -zJiW!Ne(5AHi%0qg$Vd&B1ctol#2wa=G!ZU?rlD86Yc*3zEZhAqI(g)J!C -zCsnY?@`;emZAhv-80KW0&F=J@^RWFZ@A3b?f2xu=n@i)#Pn1O64J1?dBq4AeO;9!6 -z6ii=H1(>7*-&K6qrw7!fS&AAwI*)jf6_OM2+HHhykFevZj%5%~?iAm1gTNug^A*Fi -zJeg2g@-*jU0$cJVa=Z=QR77GxN7Phb$^R_Fm^|wq|-u0#8 -z{%+bUs*6td-J+A%yF<4q6Qp`d7f};zLYQdEL?nu?O2|(vA-Nt{VV^Cr6Y!i}n4?al -zYVO(nYJgCeziu5M#R-EeOKd-zKx~9e6AVK(B-!ym;|J|e)?}Bs -zAC#9rqPzZ9-9a>pHC5a^iE)j@4f?n3W3HUOcQW1+{aB5B!1yHz-^q+E=*zON`xE%ZkIF> -zR#m}MnwP#G3vhuPdS)V^6PT6-o_cUP85aBoJ@UlqWVXJ^#yPtxqMpNb;SXFHeNCJV -zuRu@jiUG>wP2dmS2EDiJsQsx=wnY8 -zM(~MHdtoqkM4L&3G^@r(tXWdqqyRP8P)LKxr=o==m)bvM_>cTU`UfI`>*ha9 -zT~$?B+cOmXgJ{1H{TJ2xhb8HzWc-5|c(nWv;~(lj6n^dzq3Sl5J96+4R1-=l+>%_Ew;zkm~q8i-fmbEDDB(pST0~VYyLCqh3Sn6t?7!eDx4moAKcZe^@~J -zzLip07qJ*tF_a${kWN^FAacUiC8WA)5veXAl|T(7>W30i{?&v%f;*p+_G`yPp0(Qo -zX55T}L*TIFT_%Tac$$mAy4Dn)ot@+#VclTP7omzJxB&+K70VQ;s|JFr6ImvX?#nV2 -zlvC&%umyv%i6Ap!-N4=^5tw#UmD4njwzbs>>J3jA>%g(YUJGVl%hHs_cHMGKU3Xn- -z3IS1l0kkPiurwVV&bs0UjzJaUXqe#_MF+{TKZ(zt$2t?-Fz^_98=u7;#Z-3vD5nVT -zFEY+f7z@&=AKw*HFoa+@aB_tvW(T9Mn^!7T0Y`{W(v^6R3*&Uv?0%ZO|C}m2bL9K@ -z_F=dlZ^3RjUs=}=Lv1{3uRf`;-FAP{@Ak{L13XEzo&P$^7x$VkDUoLS@#qZT5HK9#YP|M;L! -zpXhhg2JQHeKcYRl$cgZ&e9iUTx;Ms=gW#+zj)PpNI3{+5225lhYliY=y|G~aUlQg%VU~))GEDC1q$u=)S -z;33Hs3~;kCMIx{Ue&-g?CTs*z*}`yTUvX*JmDo#nEvCpR%*LkwKrvZ -zvudxkb~*27F&>sn0}>C4Vh~q@GU>?l)nHzB)&wsL$5d%wDhEYp -z5M-Od-{$gQQD2Zo(Eb5^UMFiPm1pZ53`>wb!e*Qns~qd%A!-_GPs_ijzTS -z^FAG{2_CO0ZEcJH%W%Q{xt;#s=F-4ehwat-Ae#@Y{hmd8Rp1-PRtN4c$?Yv^FQ$EH -zDr?c6t_G3SxgHEU{lQ=|=-v)GlRbpmawM+?ol#5% -zT~S^Syxt~;ry9gtFh~ZZ7!=#V3>p&}BNT$oM47*sN`jY3k*Eoo3PiL5`|R(NDZAjgs;sLCBGt|LDnhM1!69 -zRX!NZ>hzbTESv6V>TpZW8Ex -zJ5PdFo0XBc$vg2AE&d1oC7&iT#N`%F3D6n@6#HZi)5Nv9@^ -zW(PDuQ}PIvEMIdKCm<$KNuatgT2Ik(eya&mFec&qM;J@lL(*U)S@66PRb1K*vCarN#;^idLG@ -z_sVb7;`9eePO7RlrxgaKc_G}afWCszTVDxOhF*_1j#*c$FO5Ec-M6WOYRkfp!o1>+ -z+B(U?UkQldBf^f2Ks~w;BEetMkD0-L+ToIA@6}8TW!=Rr1Gg%{_Rpdw^p=&65UF(r -z23^$-GfV_w?y_UES8lF$)MBgy%c{OsWD}oWMCv>QqlCXYA-X_5eIS^mz;8mAVA-E9_!+;c>^WSKgondyO -zJ8ePp!<=_GkFH@t6MRf^`YL~Ajnrt=J1cUxr6^Lv#mbx=5)$0>IAWX4YPM;NEUYm9 -zkCQvY@4B9~W`o|rs@t5!l^uaTKhCQo)LgE3B=u~J$L)^-s~3IO`~4tF=6(sfhI=@M -zzsCL$-s$boPi^Md;;8rgqj~A~>9J^y;cZ}eggFd=R4Jp9*Md%vl)zV0aNYpXHAQ4?Qyl(QF0@* -z&IegAPtp|#Bsg`kV}r&;%#Vx$feH@hU}5^Bn^v(WEa0;@W`*mt=wh2->?d^@wsB@3 -zg0ZYA?62H-KTNteHLQNI6z!vur6{JQn7^%LIbkbc|NeKVTQKXlM_k!LOthTw -zAZJYDLQN`Wzhav2<0!+ce!D@@1C09NZz)(r)^$shbVK@sneW^~A7zL-4UdF5pV%C1 -zGT)V~pg$b51$Myhb!m&DN=*aZpAuHE8(49jF1p8ME@gVWdWan}U^?tKO&-B5Dkcq& -zwquvvr>cW?;4f3yiU%E%v)j1+3AT@6ENY^M;J!zW(Y;Pn8&wP$fD7=_SQfsimo^ub<$?r+I*w<|#Zz&E413aIMJ&3Ws-K -zL5mjWblabq_@ud_Fjd2hjvBvPhjmR!Hc4NMV-OK`MPNZ;=za5f3IjfzmQK3<*f_td -zHU}~?MjN34&MQ~ZG~HZ({cli#SeGM`2*;< -zptcDUmseTArb*>=cQwoMVAvB>^_wzyVEJMMv}jZ3LZvxuX1R^`H~5{BLeUW| -z$5f3!C@CW7%P}t_DB}Vf=%kqO%Q%m1S72lz69xQTEn8aCXu{Vh7e!0OKM9ufTSQR} -z!q%tUkiuaIiYK?{V6)#c|4sS7b}62Gc>lWvo6g(+j{DuBj%VYQbL;`E<`&kL+3{N8 -zLZ=X%sKk{D(MX|h;_?i?J^T&gmVke~vNbw-hPtV{oX(WjX6*K(Rm@tJ6=@(eamg+@ -z<;C@eX+nFmC(HS@GpvY5YR}yjY<|9da`vH88-|O-8i%@wGNuqP1TBGWaorYcVT1}H -zU>(9NtY}RlX)tCiVygQZV@>|iBJ}2Oa)(`IdwP|lgWx~b%7~@;Z(Ke5cbK8r6C|Iv -zEwJ{!t#I44muBy-8bj?nnUoR4CB#b?9Fv-Dr6vD{YigF -zqmF!KM60|#>m?P)n9cD1MX6t4z1aW{GISC%};$@QZDXa${)Yn{@F -z{4ws;55%j#jRpE5=Hk^d)j+X%e!6-&@eOz-hSO=_v%)R6^m(3^SDw*i$T(&U3*->y -zga)c&QOyt>!?6TSQcZ!VN+2j6HRXU1(@{yIT(6;2z(X#V^tK{Fm>mUldrI{({__)i(jPwfMKih-}E;gT*iTbfWifH-97K -zADB9#{DY|fAlg5Oj%g#rY_g973$WXS{U#h>!V%VPhXp$*{5ZP}4y?HUv0HOt&HD%O -zzenCR&3=JB-!Zd;y=90s|ZQ -zdeIjYL>L+sP&14{t3j7LtVCtRVaPzC$BcB)ZPA})Adt*XTY=7CC|E>*bqF%(-IjIO -zrRi#8RqQ98WeX-fttlZ|Btk(q(5fpCqMcjf#lZ^nqNM<17n(!>fojt-IGBR?_(L#+B!TUt{%UhWtb=H$FB#=R)-l&o}uqkDAmn_3H=J|H=dIF8%dmX}yEflV-)v2g%kE -zZ(x4!zgK=y)=yOX>)5@g=rfy8gj^YM_P*m|3|7g5+5d5UdCoY$f8Zn)+(pJ8<1Yo4 -z7EzwFV!dWH|Df9ne&{yWEc>U}SL82+eYvM%p-#sW5Ap>+e`T~QvGiwj(yAo1JnK&;u(tXc(MS0bpa`*1@smOo+=xfCHsaE -z(8h0NoL#TRvmwtoo3+>DS-bV2wU)A=HbHYmI})0=Ol!Y>T{K-2zwx{&);MFoDk%Dw -zZu3;=ri+ZaU9x*1&>Opptl@n$yp#6f -zUfTX{aM134u-Ico_*#8W-0-uz?gq*%McP|1=VAP2Q$AABVfOqm?42-AdWp76Q$G;2 -zaew4dAF$N6Drx;MY}sazu6IxfyKV~|2?q48Q?M8vrX1D;9=XWFNk{%anGnzbHTBfR -zPnS`dLJtOW)OAJfG%Q4)`hiR(UDv4PDw5_q&PmxMO2;VJurkqRT9qIkqPjYhRgNw| -zgGNM9j~b5QOPb|tlsGQ+b;LrmT+dKVMQV5-ooCQCtX}R%dVWT8mbDiOEZ!j?D57-u}p?R_)5yg{8ASu3aitY7d -zntK?vjEx78^HdYAVp^&u8B~#66-i+o#dIwA%E)%psA!Al#oB&xT6%xn5$)ABPMF8H -zs5ydM$8}5}jC@U}zD0CZlY`HR_f4O|6u6tVFb$JJQ`OnzhUj>bgGoo0?`pnHY(+m! -zkoP0ysL+W|f_OHxiYO_V`U4$Lh8EtZeG={87A^mMr7l7W|Ni~o7Sq<~LRhRe{_CsY -zhTh}L&A*>E{H@KHq -zpi}4m9+2c$+RB92r+N2EcGXf>dd05{zN%=|Ip0KTW`ZxjPxVr`sY>}VZ2sm258khM -z>%xHY^Wq~VWG$d@<_>e@Q4nLAcsLA$UHs6Yg)cZRe0x{Xeb?{;O9~v2XFhaTUsj3d -z1qks0rUvy?SCXjiQAu+>lYoTrWYrB!%lD|G>K2iFi%K5$eATDAPh4n2Uy?oF2ZESo`~K+ij6hg+5~3g^g>yi~Zt1+yN_ZCTc!zo@DPHU|jr5~<44 -z*o%CuTL#?^0R_0D3&e$QGhAz!P>-+u$4G6ss>$NzjNXQNi_~cajOIrF%yOe3%MC~+ -zgdK&3gBH`}PmDK2(^XxyOwE*3MV1>s%SifbgfxfC&=97)=zTZ*D%gOjN)i5IRc!?; -z-((pcxU*@RD0ixI*{VvlscOjEX-XQrm?|BreSQZ;E_#RJz|Or7OiXFQ(${OSBWTS+ -zyh;2C+cfE2olL~PYgog^MH24DaaMuEY+sBAM7gr>s<*Oug>Hh?Fp1I+l^|9I-Clh6 -z7z(elzM2>M?!@WhND(bEX#Jup;wofNjj(|aSFuQv&x~k=eVbwYXpv53D@ms8JTqN#0q(KG&CFEjRI* -z$Y`)gxrd%J#4={OIZH@%{Tf~wCTF^oH6)4EiK^(Pc7Tn#hMRRJmzaJ~8)3GIp5o(r -zv@a(z{*_VJ!8pB$iE$<|G(=_A6&2K+1XT7$-f}5oLH$M2q#a73mS+{P1W~_>8qzzE@89WFylu@e+E%qF%e<5hiTpf -zJ$FOxc{QIV@OQbHPgBoUNK+#AY4#q&=wq3I%|s}dXr5t$v@DsR3uDD44jf&FDH;>Z -zh%Q)I5hq?ytk88Zr3M#BPS%rvMqbY@ZRwjCCB)unz6hxtO` -z!w2*bx0ID-3B{CVr#yu#XE4WnmAxl -zoB#(cT!e4oxhy!0SP)`PYn-7IGaOCADiiilL?=~KsYC7JlzoqnS<>_tyDSL=;NJO;kJ_!)8_r)x -z`X+55`Q#e2Raru=Xj-7|tJGn|+ycN^G*Ah0b9rF6E!;&R9Nj{MNdx&mPLpM) -z6znuq4X}y}+X?0$coDX}R*s-^1g;1Qny8pQF2f=$!P|kt?t2O~EYG8=4F7>{cG6O4 -z4?kgdN0Li*Ab>=JzUWE|k+w4u{9J+d(|)D8-eEGZ34 -zdD#1wK1^IEr(zI(ffnJCAVLz%DClJPZzoWF!*f*)1d%1VAQ`}T(PYmsDQI7w63Bi4 -z^Dep@k`>R=V4!M>tmy`Wqz{)hWIcKYj}~`GIIyX6a|83s4gcMi+nr8-+@7=Qlb21q -z+iq{#!(sbGsvIXB*WgqzCORvol@s -zgR`%XUlBBBl=CMB><_3Puv0`y2#P6-E(Q4^o`f*4neT%gQV6vll2b#-HB*oDLt=S;Bg&OGYn0p$}#)=?FXE$rv51}|rXww=nY>(|A#H7CX9;c>W?jH~XO -zsr7|?wJN2hce@;G+iw5z?J_al^glp)SLj9GH8=*OP^vRtmm`2|n7&AJS-2pSVampu -z$3>OZ5s`cuV=>E=mKSjJ8Ot%{fy0yf377(I@*cXQ{3n`6C_(noQAY2E7DRCz#!Ohh -z-&HcajK_|AnK|c=h&i~gXkgi@yMx{qgTj?h4sg=)s2*Ybd>P+7xZCmeu6&yf*VkQ1 -zdg~2lqvyfm=3!orA0F3ly?FMz?aZ#9pXU3^#54)3Iuy-s^{gJ>28@rRI*_~Pb@BF0 -zrf;$q9}Y?53WxS%;U6C8?rHomc^W_7J!+5pBQZ}5`W_FmD((8)!1Qj)Y8{f6<=xbD -zh)Qp~s)?Tglb8=^bhgApwTG$ha&j}ayY11a)9zlK=n5ypR -zw}a@{8-bIx0td50cMl;Ovei@!V!?=)jYd=+o=;XVyE{$m-0S>((K_!x94v-F5g5c5 -z^up#e2HPBsk|K4Xkr06GtUtVg*{aOJenr<}3nptYazfDeuisu}wbMPwqBKqyktd)+ -z%0dEMU7l9XAxgl|@IS%Hd|mT}ZcT)I%uej=stKxbxu97yDw!LK$7h9`tjmm -zYJmY;7Yx=wJt6|PGj*P2$1AELE=BDu$>@<6r8eZ@xzpOIFhe*=T-z!8s2&*~)A4y3 -zLo;%O$cYXHZnJRK>$5Ozfffe37SC{#r3PZof)eH<^q&Wlzu_n#mkkXX%FO}E1%{P2PeNTdsWvT(yOvh3K2$GvRyTuR8K;9=s*z+*8VkUOzJ6NM)JKJs#A25mDjw&MmM5gVbywJ6UkNyIwfr+>N)!#_*?!TC!RRZcO#^kP73ti@IZ+OTCAnR -zZ}?}5UUUlR%&LrB5i8ix70aCIGqkaSTwJD69z^k?5LMmOB^zny8*bKIv>sR?oYeC% -zB*AiCqzR1*EOL{ux~QMQ3RZT;(ALc!5ph^jID_h -zj3&=kJD1g|Z#>`5id4vNLu0z=m(}3%ZlS(qDw9QD#PrMDJw{(d%`9ZP^~%p#y_{EM -zI5ZKnlA4&|H#u|tp22TuIFwIAt_3ZVW_9+DdMrAYf7g1H9 -zQ)%x+mrO}hB*fQBnY-vLZmEq`Yl@dcT?${${3xug1Du -zZEwm@z9_S+wt=b~%|oV|qsFlh=$$B@@GP`QDFd+P;5Bqc*CJCJ&*Er-LLH_Ul)<>Ihxq26U$~7FDO(?=G=cYpDa>y*c>U!m -zJa$nn79fn#9Z)-j9XB}({5?jYt}8I*Y_M3hN#Jud{5Wjs7O23A1UC*~O(sTT-P&%q -zO&BNZWiy;Ihr|0SMeWob?j;j+>En>}dJ9 -zlX>aUX>1{c-mCOZM_qS`M94DZ#ayA^(=wV8TRZNO?05l2tq@L|vlK;ZbGb~Lk+)pI -zu;5+vM*$M3g4@AReWW73nOxp+wUlQKi<-OHwXGofu`mzmOF3PU)5 -z-y0o1G|fJFb(g2QJ>CcxnyxB)ySuQ4M^pfDK#srbbjp|5QEb8J!vFbtz5y%P%W3A -zPnfP&@%s!1@~T=-G5K;D9If$wa{V;I_q@8F*l3+5Q{)xD>)qYIonJmn819HeT65=a -zrqvS14y+LgbX3gW)4c+@D8PbQ;zgJ74A%VV+Jh7*Ge?x8y#>opSSFpkfdZF_j_Q1+v57-oGkQ_h7G+0;D@bIp| -zJ17*e+Q0XezT@L>_q@00_4|EvhxOoJc-b`zW(!j^X)OU91Nr~ -z%7h||%I#^`^%HknSJ{ua-hanhYS+ah%!BYxxJ0AD7<)9ygw{P|Q8ryKDY!e}D8gA} -zzV9LHp>POn>W<TbVL`_r~(?p$zClC`$CP`D1beH(S -zX>ut`>1TkmU#Il*U7{*?R7ux`V!`sSv+xYzQf!`UbJW_2M^ly-$dfZf;#mPg5$n3C -ztARs&!;=h4QguVp2(%6C*DNPE&HnyF3=Mwu1&~|jon`T&r8lx^i^7Mb&@%-e8N^kE -z8iHdgM3A+BD2M^6DbANHV4WLhJHHyk@7RBAPuiV!e_W$s&d=f3p;sf*SM0mnBrRMH -zWSRNpS<$*$`Lj6~`-X0OH%#@rA;XU$f0tEDg9Q^d68I~@kJ7*xAch~yR->v~NfpN! -zb2oI8$U2cUvr)abEQ1jAd=kZKDzdC;jn86kjyJ76GDXH2jT%WyY8t9(=tNdjOOkY= -z9w?hiS7~O>>L`JLbs0s&9CVfN-;$;g;Ufieh!m)vfJr+!2!zPZ(;^K@XB{^cuO?WTh5w$PbYe_7p-@@jEDl -zFmli&qN14u#y_VJN}!A7L5uu~z>!7EZLSwabGvA+lxCP~n`WWr^XAk|;^npa?vdq -z3!2jS2r)4ls!x@A`e4mJx>6{n!kn_T-Ia}k0L-Gp<{y(1EV%C{0L^qHIUHw6Ni>4R|Ie=cO`kg -zdMl}`I^%~rYs^L1C;q@iG;5#u!`3wIDDelk=$5SU#2-zTdD4%>l72Asi|Ic26%WZh -zvd(gQWS9gsp56l!kuF=NL0Ec^%5r+Ne_j&L*98No-@ewXH)$oT(xenHb_UW@SWPJ> -z{t2+ONQe?ptRm2HVPfAW-B`P<8)6x%Dr<_a87P|?iz00iUH)M%j#TI1NG$h;!C>GlyY?!|FL!et#PSS7itC+j=8_*9h6SdC1Ih0?_DCl}$m0 -z;^b*yHOe5X^wY`>)GPfks-q@YUCOB%?2MU;q9^-`VmM%aNGc6fN};2ARKnC;&C_&H -z5>-bgdLV{apo%rg47KhnR)`$Fg#V$G6E)E)^XO5kHco=5wRzjfkCACHDR#K!7*J!_ -zyME#^orNJMO)#tbBx&{c=_lu+L>LVV=i%BFu(PHE?Tm-H?QREC3{6cnE&GI%B4u#7 -z)vm=C%Zw)k>@$rs#)2;LoB&x}%j!v*IOEyg)S0xo8!bOJ_$@wWK#O3aik2@sVCl=QrKnP%KsRhC1zuUU=7uos(|Gw{c)?%AW=E*t-{UbhgM;g70q=PrzoS)b%H64 -zXMB`)eE6c6ml81^fdxar)kFAB%o)r`24J4`b37)*+?lZCRIc-q&Z`)YZ>u>&$L&ME -z!LT12>L_{2hlj=9ul -zPb#E7&bYY`%cvE=?qK)WLjBOf{*fuBm4wGbHlYE{qy5F$(~S5$Bs@+Uj6@8TIWXfsbaM2xBF}RRrz18%aA>S? -zys&u=-n7MtMA>x5v?2@CFtdT?K@05~0$csC#bBnvKGZElTF_v!I~4t%*uWlE_=+Q$ -zTVA)t`BKCT%P~%Y_#F{WIfd`G`Hp=6Ce1d3 -zN##AprQf@UDn;ah?0&BiJzFc^K^x_Jx6UU0jVHz&8<=epJ)>)gq==BpL^OPWRCxkqj}bn-KzGgEgg)hB^Yjlid_M`cvi -z9a#^E+d$$3wrWc#eC!WRS6fwBxC4kiye$L&W#!; -z@$qa#Nj=IyUC_DTT&20k5iRMEKwa98yyrFk -zhc51?J`sAz@q6qYMCl@lU~-+E`i<(cKrWtOgV!34pZep6oBLP$wmq3(I=6lM*clBc -z7ybJNEfG|_Y)P_1G+pw2(7_Btb`@QBeHgr^r|71xxPN70XY;v(N_ozxvB?n#H+OCA -zDt7bALDLLWy&2ZM9~p~TL6OozK6T9Q(a7^k@%qYX3G4NT}hDiNu>)KqYyI)5^mI_%duGqff(1Jh~6Z{SZUi&(-le6I35 -z?BBf!R$V(ZKV|-A%vXzS_u|;i@^T5rA0n13L?)^sSrP&csnjb3oazNoI#1D+uqQC; -zmw3mV#nKnqXh*jeYDf;Yq0}^wHhfH;M%BpO363e~gD^uJLOL8yt#UxxRgM6=_V{UM -zG%!5h0dea42MmKxm~V(b{M(RkABu!ex}FoKDLUi0=2xc0QsyJq&eqd?m=`7->j=o` -zuO(OiF(%g!Nx)(eiY&f_nZ9-IuSgiZ?NmHF`Y9CO5L8XGV9xa%!SpNzEFK+( -z49vUcu^xL|Ygv^DbH_P~P97SDMxO4vGVgpCr(`{l!vWAd1!X7}S3b?5Q^h{9Y_dL? -zh61(exK6Yyr-xH<0Lw&Ibj?;y$0I`mOQI<>*K$|>zXzE9c|;braz_LnqMUZgtO-^U -zOzv!$u`#yBKwfsXid*%b+638q9S9gN)U#RPCvri9*3$^090B$l%(c&VS+b>>mRjp~ -zt0QBG>ldr2-UthPOa9)%Up6`@TB@mQ3UoM423ex@l#ba~p!4aSen*$V`e<+o2lt$@ -z0;XaI$LIxU!ygKnGP2L=a{SPV4s}oReg~#(AGW(k6fTFYAO!XO_U=Xd`qsW~56345 -z5bX$A@_4(k-!7f*Fu%B@-5*W*Cx@wrN41&<*q|JQ~;YD2{8%&F7z#@$33z1%IwU0WK>?v`cOl19DzFw$lYXdS~bt{Znn -z*%hSMi~F$bs>AVlM;h61?0H*y9o-e(b~*gfb;7g}WI1wGWNowEJ};tz1ciP%mD+cU -zDYnpl! -zfO@0q%|m0u{)&9<{9^HdXvg=Yu?+tI28BHM-G>kMSq~>2=Wx{Ew@E}4RW=lb7{<>? -zL_YF4{tMC4KER?8S(7B3mK36BhDCk~i}qKNq?S=pL6; -zADMS{n@|&DO=n%MW-`Px|l7uQ(KP-HGe^eTJH*AaHasrK?1UDOkaY0GiT9 -zhy`B(om9xcEEY0EK@q6O>Kb!_R%^`833v=9@#8{3TwK^XODn$u^94Eqr{|gAh0&GA -zE{(3b30xiha@^S&f0K8Z8;CIJikhT}g~&D@8(76cUeS%a5NH`U -zIXWJPA3Fk%L^hzTIa_7BRGT{9wiL~#(bPoPgBSrvmvs<;iOp?bOYzi`DVPT^K)@tw -zQO{#ls+vv|Q$rt`Z>fQ=dWNS4j%rwnCtIpVNZ`2|bzJ|*npFfgxMY|Rnj1epJQCu; -ziZ9RS(~C`ec-ifb@<6*Cje>5l5*4ZV6k7Spy9Wab#I~*?6o#bg_+-~O_R;d*x%Ymv -zfBwkFr>g|Cbr8P)IdMT|P_%{r-r}j&xb+5%sdJ3u{(VR0h(#~x!L(1H04`7OS8GP> -zU|wFhKd}G!@-*!AZ<^hk>$(e#{GHprZF!99mlc-gd`rOpAi0~*c45!M3?9}od8fzQ -z!ykA8esGGty~0j@+ue2PZkiNn%)#0ZPlpAC7|A%MZ~X8wlF#A_F&j@gD70+!uuKzp -z92iq|%_F}?eP0}g^kl%`!4)4cCy&~MwWk!p+@)n&#r~FEBU?U!^n4E~Sp)C+h>IDPJK(2e>9XJ~!E|JU#T-_`GV7sV{y5l(@} -zG90l*gi&w5>1P2QA1CmygE*kp8J5wM6bke|yIA(%tqN`_0UMwzzWR{geff7gBPKRrEl -zUT>dbZ8Vb2_~Al(dw#kckBIl!zE7Vo?w;tA)Vb(|-pj*d@%FH~zQ2F6oacM%@-CJ} -z?LqshGl%Wu@ueF-J@wn=%ix~F4S;fLnu^)@2#n3KR91|g4X5V@&A>cx{Fb6?jlgdq -z{#pa;Uo6RL(4gh#`SG0F$fnL$*l~))FCDX8 -z7Te`T>?C+KwpN_1`6p}aAxu>@aVl+G4M2^-XF -zGK`8%;^!f!VGRnwi4qZ6-BIOx8qeML=V%gDX~T)UqNPdbIYo{%#L&?iMde`Ztifzn -zwGo2Z$V@2Zr`n`U6vZ^rn`dGtlfG0ZKR`!J{h~^EKHv}4N$9hNNhITss*@*}RCR#- -zw{*ydDT5=al5am%<@li;K9lhzt?_0J&+KdLhvTLHXiOR3*KjH+5+AI9_Te|#Kf3LbqwKe5j{zele+e5&H`sodkQBhdu&@xl}= -z*zDVm&H8iG{)X0b&L-cIoxHX~hALUm -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 -z7C&@e2qRKR@`{#q-T}a3w!c2 -zyoVRETj2KFZ3nkg;oJ%@+PA}tPN!!IZD-PL&xhg7dAr|fch1}A?QVGc+F#ua2kjwd -z*GyaKLv(jLQfatx8@n;iG$Tz`8)fFT+UL*H%f(VR7RzXu$!ffI(j^^e@x9+3JbSid -z5<0ln-OF+_?#&;D_XmS_Ip0UhYg?Qd-8ISz6Mj_!BLU|G1QjyD_A*Z9wm+S~_ak>2 -zF)an|WGRxN!y76;M;mjUf>|Ux@w8abAE%MSSRtya{d17V;A&WxO`0;M%_H!(bx7Mp -z+CSa=ExOp>O=NwYqQ5#9`YfYgm{ggcV>(44JWPGz2DRsi#=;ZEs_}w?EFfH{fO)ET -zrBk&2<~&MfRM@HPAzjVk+B}(%XNvOsi-jO)lX$7N=PN-FT|0>4_go3&MuRxS -zf?rU*zK1psV}GC8U|@fLw@vB$%2o{tG!PHO&L&(sUN9}Id8|*vPfAT3c`-v?^ucza -zAuv+co -zzKj8Rwo6kOi=d$qS;jjUaD9fM4;GMYVu*}baJ0;JsS@E2s#pfzQ^!7F@CQ^Z{-hQh -zj&}!}m^}{BO~T$BHdur`yP<*H!CfX%Wjx))d?Lag489pYhGxRq3cH1*>FgG!sj-Jw -zRhd{v-!4ZHSWwpNu*WbCyEp_b)?#k{-qK)P9d_YpVHE`MdhFfs(w3pKCuR=?LxMet -zESc;N;eS{p52U`v{#fLj);o3;oWhUQ$(_H2KlUX=M&h_t9rbG>*$pjuo*t{HXG=(! -zi+~Xk+Pr18M9|REFA*@L5umM4VcJy?dOkuB2N3yE13}}~_ -z0#exhG@P`Rxhp>|VTNfq-qA|X!Z2m))MHe_^p?YP3OYqpV@$X?jLmPJI -z>B(I7$ADo<1_u)}FV|0SU_js*@R9_hfuMwGKgEGT3$duJ8Z;;-3>`kJwp*Mw(fmjg -zkK#!P(1QKMl>^Okh;x{x=(21s=JOb?wN&_UW7wWH2vBqgs+v&DeV826#4gg_8V7N--m@s%lf_#mnA@o}uP)ZBwLD(ERhjG$ -zlh>9AvRqmd=-eXM{$8)xj(e}G@$Al^vtm8o&eid@SYOZDtD9|qbKPqj*AL<9y8XvJ -zF)Dck1%345uDB=Wal$+?Cy=gxBGoH_RHW2`vE}D^nit61;iTT?w^9Id_`c0-nqm3TCJ}Qnz95lv -zA8Y4V?8E&mI)1fU-dkNNWOmjz5Z!4DHE4ICa%zI%D;xVvtc~C5WzZm*zLA?(AZv0;mHL> -zmTC^UlNaZ8WQR6p$pTRbT1HW)o{FFY5kmthV1VvItg}z1+aD9gpSnLoX=Rnt_AWyH -zF>m5SbsZ?zJ_|j83GK&X<_9_Rz1ClcGR!+T+Asajk(i>%KeJFyQ$$KeD~RpjzZn6W -zDKUyao(-U&@@stIz*L*NI?xD_k2&!sx93o}XbPnuON>Awp6ltV7xzY6;ON^#D -zQZUA#FB5xzj);?hlP3OtLHK|K%#3V`bv|e()?=w+10AQT?$P?#FK=^r -z0LJVX70`DwFtoAI5c0yyi(|kk$)`OevVP>uQ?z%6JLiuxoEC5 -z&8>4UlF;VJ^*pT(6UrZ`)wdj<~V4rm9f{oeqK(W -zhj;6@{KB}q{@(%7`BTikQzv8^uX*lf8i2?_2jtd=KEDzw2VUHt3tmhGcN(XeONBh$ -zE+U!>nj~nt&>i+nQyBI(Oa1Qk@XW~Oz8tMCOQ>2 -zCFp~TT?$(*?3iPqKrv`DYDRksnplj~Jj7sw9A*)gdiTLf2zS-bs9S)1Hblu1i2{1< -zNnQGHn3Jl~H~)$jS{~61oN3Fs5G0Fe2cl4>%}P$>Mw3ar|iqSlM74pz4RX1S$8EqPhKfEArJK -z?>O>}+3-J$3Ko*GxBJ0hLeqSUP6l>E_%!IK*e%P4M}alvWNjopeDO6K32k95orYA- -zr#AmzpyX6#Rgp}^P%KFynx-C8a;lQ7sHy>`vZAS&;P7WDImw=qvp8^aVzRPL;X!uf -zoU&%@$T@NF){BayYr91v$$QGqB%=%u^@O;S{9)ow8?zycmS!pvj4r$>GiIjQDrtZ< -zh|t7KJE{sKj6mR0UKH?Yu~8pq7u%x6IdZ=lT?2$G892UBk>$R+2u5J(4<5x4f^^Mhk;f?n4GS>Ye@TrjX+KH -zDGR$`;sRDVc_nPA>m(4DM(Lr0S+AjWv{5;OwVt1+U_}Y%!o!j8{z``0MIfeLV&_P++rk -zX;G7_E-|==l?}QJ8qjC -zciArqc~oJ@GOxc1BC*~!FIvQeagOlHgatTc3|4?nfguD#vrL#SE#z8-1EGsyH&Ynt -zD*2a_uI@U)F8!qbhy!R2Q$S-UVUD#Z5$4c|w^N!3RN!Y7CGJO#?*t1!IQOcebM93g -zA@wvJtPuTo(ygLAAqX$mJuI=TNXcX*tb5_LUy#<)Z;-MgN}35uiMo#`>-q^PEAI?7 -zDJ#L8EK`HYhO@HbXJTQY1BeBW+&5V~Jgf2o>pKuibH{ux{)((&7-Up_#j1i9Jm0UN -zr@>YQi<8V>nHe`Le&qr3UwMH1SFrzEkzE -z(Xe}EU$?vWH}>tQ-R)o8j9?x -zP%dAb{)%{HT-*-^uj8lA-FR+YJjGAFyZHL9-ATvY>nMwa>p?$!9O`ZNbL~NMk;7Q! -zrq?1A4OQ$8+E^lR;&=WNt~-BGp>X%2!f!78lTYwFh>DhstLTsyDub~7hEKguXgaa3PC9)F83Jg5t{KX7pOORxN$PWZruO$nA -z!N9~Iaz`R;t&w3SJpAS&EAzO-%5u^|ElM}Q20@JlL@#EB>O_H+k4bYU&jQLK%K2;s -zqS0R?zyPn|gI9D4+?7(7VXvaZK7!*jS=74TevH4TA9m~ywhV0t>UKD= -zJ}mZw(+%a0&csrb`ZN%^k+Z|)s}BPm+fLG5A*s;=WfDER0!WNfU}bI0`vjjMYlR?~ -zTkd<{G%~prD`Ccc}IG^xU0&pDvjph -z2}R1dYYYeXPfuN~`#e!Y=~6+8l#Mhp?nCdqD~&?fc5zpFU4zl4jL&=QTHPM|S&reF -zuf4mXovypH(cL2I-A}D9kw)A5aKrWs(#V1H&$~mUV1Z++F<$@WaQ)HfKC;dSNas>^ -z*?t9%eUz?xcd6HPrOUfey1KY~A9wFyy9z&H{d^sybg8;+d)Q7l(k0x_!+Ym*2n3*qvSD{h-~t5~rEzvF9o*)&@v9V@a>e -zyJZ*K1Mm01uM6$T+7;eo+3h?&J>6Az@f@jYT;6ug#TH^8Dn#N`|WbHD; -zXY29%KH|5k&kOL~R;=Bk75gT!*L9?;(cK)s1GYJ|Eqo^l?=`j9HSGGn>|U@>JGw4@ -zX9@pSNSpH-V7v3S>GF1jV->b;;XA$DN9_Jfq}3re5AaPc;kms%4UZwc+Uz?c9nWmj -zzPh%$59~XQ&u{DN!!_}Jk&fql1m6VvY*hwk3mrLD_nUP9tZkz -zu*qXD>4;Dk%UEQ@2)WH+i)=US3Y??B6V^g<_c`V|6=IN!NovC^gLC#t -zK5KI&AoGG)l~G)W9af^}3(R{6+E~1pBLq3cdIX$vc%FQVmW@?QkuiUQ991s;OJX-s -z)SG5g -zGgYQ+#9{?)mWTsZ%gMGdr&lh-*gpg(jXj3nc5u(9y0558<;h;tU;8fB+ajitUkNL} -zCMitkxT(GrVS4Q9*L$@SQC-t>u -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 -zOmEXp(aGr1C -z2)2}4jmTnJ1juDIjD=3hMkny9uBoELiF?8k0_{aoKNsPT2*vr*ETXLt$pe!!&~I7H -zozyXd6Hg%$9##oxef$-TA)LVA%rPncLM`%{!{Zy#e!}AM4I!X@#^V8({e;P*xa{w7 -zdEC77=7w^}wp7KDIo`4*PLeE{qq4|zpfFLQi!zn2n3u3bB8<&BUoP`z>1QAcs1cH) -z6IszrnJ1=3FpunVySrEtPAY+;0wFy&JFGj)yuYJ??$NvUgr5(l$`04=a8 -zi8nEbYv&pWr7(t-;v@*NY-Hu|%pm3%(8%AxT>Z05PeIg0&=y5e1+7Zqwd+hzjK|k` -zqC->Gh$R2hiJr$9evSVG?3zdKo_Ea$8 -zvh4(D8LX}o%)5JGnU|-1MbbI!)^Ab~R}5shb(4LkVJ<3f>7K+BR}t}r&)IjXF6;Ou -zm+U*LKC}kIA-8)_x7@q8=7+l6RPG0_kFj57-<{L$R2?SKbJ`u-5=7;ac8AI1Q1=o` -zyTiaVMYr=PGnWX3_Apl*HujtL`?j&Lxdq!bi(3x<)9 -z!}{YGR1^re9Et;O0c*gr?*y3?>32la6oUMoFbtDlOu$3vdN`kF*><=g{7H5lfi^2Z -zfuGH@n5=W1U02k3nO%prNR_~>!IJB)NHj2XmdUQXP<1!8JUUVMxD3Afu24(i?PXC> -zlx9;jh}z=YdZTT~iU4z^p$odMlM3PkK?OUx30=&UHha)*cSIESi-Wb2R-)^<{;@dh -zUcEr>S3&4e_w -zQC0=>6Qydn5X&c^WK&wM*rgwOyY;%Y7v9o;J?xL8#ex{!5A&g;PwD7I9t1BYm-NRw -z8a#TdcQ0y0_1_RFlQ!2l#l7?~>as-_B5 -z_4ukAbJOwH=qSGuqy49Ph+K=}wHN5?{rsNmCh{~0toFEqB${4BTbW?*$6kTDL|*!3$>|m9M?UY3bN{Gob3_9@wQ-dnxjyTSdOYojz(O1 -zvEn<2of_Nmhv3FCXfc{v0=@*ZmeV}QPU*3m -zbykx>)e{R+tOBf`1r?Y@jCqMvcXk0m&1{o0=<~u3VBr2&*gtUhxm-kp)|}K`nF#Wj -zeSQmcA{2h4V%Vv)K`jbBRMi8@3sl?Oy?azo6#tpetySZdf+1!;N5w<9Z=x -zyFY_?&ADs>5J3f#bV=kC&=-j!|DS;;6^N{f8ZT<-9EEy5#m3uq#Nqg{jsm#=@_}CF -zpv;hkH?i_8egmY(1xm=TR9~@Euu(|5F+#!KlNkyb*IqEJty4BR -zCPN|s@hRS8%JzJd8~wgH#f>Y#;lBlj^|ww&&K2mmINB5;)SBgqqUXx0Ocd(cT2UUD -ztL`DInI(G)FIk)_$dr?KN9T0O^+4O!G|9rGC+K_5npG4pR%~naIr#5>ia4k-P35lZ=Doe3cTW8Vq`o%Tc+{2iYt3r7K -zOgeb*|GK%CK!_(gq9Q?`S5&(^^}>F}PMVHe<$-l^At*rb2QrHar}Ek}TMEhw^ldep>s#83kFufG)Sak5^A`^zGJey -zq)@7hE@y+d#YrwNa+W1HoTE#UD@vZDYf5E(l7Ur01l72b*KtT=B&^WFPI-;R-BHu) -z6w2G-sWNN0m2?sJ$$>#(C!AELMFu>*yS+&;wCVt~ftF -z>MN*%%W-y5TEAidL+~prXXLong}KX0Q0cQ!<+HYzy$mypv4~B_6>Eu?!u3qKx3YT0 -zTEpM2j(%T+N(8ml-qv>kh#b2f&YHFhLXyVdbBfZ+0xQ4(1%$#m<>o6sa)M^;0@a3k -zmnDAVK3dDC;P|BFS3RZU>>ifkNG$ -zD%XD8-W(74D%r&WhV73dgB!TX00bkLvlArcK#(bDCl-U>#H>o1 -zF&<*h4!IcZ4xGSYo;wj)ANrC`?-_0PG>nncF9*l^(L=H5ohJ(+});O!9@Hkn^BVQjZ^tzQ&EU7qfkAC7D@YVP-@eNjm`Zu)+D?~2$A+?{Z -z=%7?-RSii6?h?VwSc*#a5^&doC!W2wP;q^q_f`Y}>k|QH|)gBFssyxrj(8 -zRf&!y*i`g5%j0F3vUQ%L5(v(!rYoN85KvYwdh{maHq~V9#)a8?2crgG%N+Fo$fC-t -zL{}69BCj`8jqkMdPNUVrpvI=$)FrtMDiCRjEu$%1j~~C19SWyNpb2nW{w6m1mneeQ -zk!ziVEN0Zbumz7Fi5V}9-f$QsAD*Z+ZN9CR9*S!@EKEkUK(tGm1Gb#(@ -z>ES^jR`DD(Q{!)ncm}^CWDZQo2qhXiW)T+dIwnfpIg$s#8QzB0?=GLhCW~rxa9kQ5 -ztEV*h>?(BQZw!5x)Pyzi@P&-{y2#jaodOddjY -zizd4383XQ^aLi1_G1v1gZWNR^5~oUvga)0@Z&SRZSqAUkoP9&u^-ow6|I&(3M2TM8 -z5>DvK=4jIR)!+e871zi#d|Kfg2Xk!~N#t@{@n+UcY@6dbA_*ENB9o+0jlFQ6C52Rx -z<~3KcEvtr -z;|i84J3rGMHBh}}MXbTlPYACGJR-i;WTKi4?%quk?j=p2M@C!|L^Km^IVh;GNC%WW -zSlsQW;;(|NQSvgLz{OCp#sOi${0WF^To!*F8CS*12kfsPvh?P&CP}IVI5&3*{4Uxb -ztdzmOxJm>BL+BL2k50Mc0`Lpcs8}f(*y{I(R!g3LXx_6vUhH~?{qm7b+Ry=150u9{vIt3nZqyns;?lS|$M#NfRRVNO@o1fpP-i^onc&?7fBx}0k?PB`4 -zYlz;k-wUI+hxhF}-x%BL6Ew90KRw?U+A8t)RHZeGR>MD#-$p1{D>A -zq=A96zR5ihuB- -zz7hmn%ILHO;REqDul_#&kEMZE!iV9v( -zDx-?HlH37p$Ow;*ih>UE@uGrOGKF_k*AaQ!23bgPVMg|J-4SG26+O!lY)cUwi#Qia -z_3y`pX<>S=x`UZ@VT%;{jf -zc-M{9lgq7l@6p47?8C4T8mqpsyv{P~n4_1`c(}0>-k)&~!3#+Zed*<$hu18crFmZw -zS}$H-3IuE7c7vZNxYbsoIOyS8ktg&D1N9*Fn -z)%a6?XOUF~ljD(EE{K_!3+Y|9*=8wW?p%v;inCbAJ0#tPMt?!JT2L!3=T&!C1PNkf -z2O|7jhmUH2}l;#SU6%Krljkd&-Pdgx3-B -zIx9E-$B9xJ#quz%W?qUhv-ozFyP(?|?BHMrjHS8)@)yzXDlT;j4wh^I{jifHdEZTK -znkVc?Oe446Dp&+LimaWN-D0oD{ -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 -z_9G7<_i)g9wWg)-_ -zQ^GOcrgVE^yKkD4Y6mlT)(AF<|2&y&8?AOBZd -zbM@Y|qd!>jfVZR9h4re5e`&!bPH0812L!=(x}Cu4zVdI!{;q%T9|n_#M`!ZUxkp!* -z;0<22Jp)ZXS#BjFsXB-{Ke60G#{>D{+VlzI>)Gw_8*;O=*qokohjb@K??}f7Ly^Pw -z{j?n%d)XiltwF+t5e&$j%s6dmA=uHTxlQGT=p5++_>d;TP -zVSnc|pDs5*gg@w3Fj!`rGn5048gdcPa&0j3LN)?@rOXRBBp`G|j^mP(!H(yb8j|aj -zomqun9?d2Ni~_V_A71yIk}jU})uH{K_u3X0Cz+iF>zpIP`4l8eZ6=O;K5vs=4uZ@z -zO~dn{FM=MDXuW|ckD+nlO*&qZZdfuB2yE0TLtXIoqQC`doAWkq%F)=PZj5j)I!H!H -zu-Q33lMNijBN>V5RbJ9xBannw2qe*L8g7kUHP5fCQ&ms!aSCH5ml{-MlGQ+>*@N1^ -za_+AYx!+#<4i7?ssz@AhZORESMsZZKY|iFA4`w+H_NqSwH4z@oo-ki939+ElsV#TK -z3a3@&s(jx397^{I#%bY(>zYSDvKllu*v+Nxj;7Eg?y%mT61(nQv<`a1H{wPK2&-FC -zQ^{T>HBc(Gn;D6Xi{$5qy1Ol6M%Aq&e|U&TvfYINaQwcs$S8c7^u$4H8adsa-k -zJ?dC)ej+Qv3F__$dM?^^Fdwes1l#(fzj*Rnjn;LLvV%q=yAWsXLbxsb8KAV1N*>k) -zUQ{a!yDotmcM8832?$fng#klHmc(0{vRMx^7D7(oH9_FINtk42wuQFp9E$wztzDYi -zF_d}-3d4AT^JwLG*w;lQP5}{Ey-LMggWl#wCoGA;%6=*3|; -z=`emgsBh6I@)s}7VE1JgAk;4Bz_Y+?jDqT>Lga_Nl>oR23xHn|LYp^;-=}P -zXCNQcLotP@R!9j|W4-Pth+CIcMP1Vb(epINvx!RGTjAkvB;T>vQ8c9MWlB7z;r&$> -zo=5~3dO+a<0YsIcR*NjW&r(Fhx-iz~m6Vp{8w*YNpHAk5OV4)>K~$3@6}0!-L{j*oJ6WmXZhhoU{eGB>{INRk9Pg_wwc@QAB+uB% -z!ks~1*1_9jzBr`q<>9DopM>?(!`sV&Plu1ya4V?GX?9;VRpjGLY2Dn!0rW;pb>S7^ -z=AFK&P4g5ekLxF&+m!}e%tqBkk}qiy0}&OCgQJ#gQQo#eCw5#%!8W3URtl1$CfSZ^ -z-6UYI*Hw@Pp@}5O;p<*wy4U|3ja5xElknHE5Hn9KGrf(dm -zK+Zu6hP}!2OJ-{j+u_D30%2j34dgKJhuApI8ML4bNmae7-OL_;;T0BmNdO5SM%_PsN0hju9jAiQ-UCF{RQG(^K;y4@ZsCWw5Jl{<|ozIs6pk?%?a1+*f -ziQz2vi)_77-r@Y9^NShM4=*NPJzBU5`z-dKJ_JSWPQ_M#C8pU+lH8)$sF`Vy6BSHQ -zQaL|~G1}RUR|yxpT(+Xe#fGyNdBUMtEOEGP7;HhrTT;+Mwuc25_-V3Aw%nGp;cUbk -z$QH{aL?%r47`t(t6mpWS*KeBc&*-#jhq#v3!h0dGMxoq&{P;w<%Dn2!^=T5`xfGqj -zW&UDV*kjf~yiNjy_70A&2D3A7#u&nPbE`05F8(q>zl0_{d+9;Y)@rXWX5U4))7Z@N -zTaU88;XuL#d18^ne9ngWFt9-QWv+Bi;3Q5zZ#kMJBfc8pKL=7|guwzh(J8}oI}gQv -z4b>R#Nqhe}jOIrM(swgW!|@q -zR(pi;*{#CZ4r?6#Rf77w*M4f5m_YUP)a$kfh+cu&R0HElsL-_TX*N$JkI}2fm17@X -zam2hlE{=t4dmJYD1avGHsd=AJGX46{*v(J-(e>DZkNxV{n0ju0`07YITIUD6kFkC>(hXpI|~(J9M}{-_Hu>A<_jv<}j_E~0I?VqYUXMFqUm*XB~8c7g>d -zM*0%N*kI?jBg;+Ar~EctTYcX^KQcZv_JqEhpM%|64cpg(Ugq0an?s|p>Dfp<8|BCz;m*Jp3Ry!n?N -z^*gAif-dT+tZKi9)PjfAn=r$on`eOE$j_4$)4ZS-=n)O{sf$4+&=7x5p)P-?^)>gf -zJaElJDh%GcqvP*Ck(3IOp)(uI>3)nD=5$AIO=Gwx{M27~4&;1Q)l^xQxw5k(wx1yW -z9z&`9Zo@e6`^PfF<+d)_f(|Md$Jl)ljZc(7!TsHi>c3-g{f=3|zh8857|DKjK?sU} -zcTgPt-93*dx}bvM_IrLzFzNqy7}x3rMQfEgjFE~1BoPyXj;oV}TR4`^#e~5EEGPz6 -zpu$780T1A&I>H=f~k^O+g!G6@@M`u4ehD@l6 -zj%Q*_W@w&x0M54~5}qRn8ZIRk!6D!si72t9%$6*`Ln`)*#m&yHV6lbFF?q1UDA0{{ -zwV#EAz+>q?iIeE|%rHUjWY+zWw-^fp_F6&cKzU?Ecs^5XeToT04d)Q=O{~pQ$!$!Y -z4XFB+8{QmTAHF__p)2f@WtK~d5lMfd(%@?pw${@NpYaDTJMbjV2jvnmL~z&-(fpcn -zrzaG5VG>rM+Vq}UMS@bdyogDbh?Dzzy7&VAQ9PvZ-4<{2YdVV{@=*NLrFX==IoFzO1Y3Q*h9SId|>GK1H~t+(l&B4n=h03}ofR -zUaiw0<6IAkAC?p*JujfyD#^KkTWw-Lqewr9Pr?ziQULXx225!8mo@0vXP9NRRbe2G -zmF$;Zv62-xKcz`x0VvR~Dp{Dbxey16Mq*|`7c -zxYj=e@(-+sf3Q$I=*xQ -z^dFUy$ow4Eu&J+E=TT)rR*9;*nxxsDEm2Aok+&q>@_5JPuMiZnkhATRpAZE6oof~0 -z{MZPZM)SUn@-QKmg0?}Bf^IyU=q7S9hObiKCL+RI=^aukCmF>RVTKck#VMj~aT0Hf -zobK5whoN1XsPmSk=*7v5t^?}_I>dSdLk-hGDps~D&|T|9cNAHYLFm#&xD^VwR6qzn -zogl6vl|7k!He9k4f>Wf^DcW?sNZdHsW8=LTBU85)CQ0Tp6D^uOSSW0EW8h>_F7i$_X*C@fPeM|5>kVY)oc60(gN&`txpbq8v -z5<`)O4EXCV*n%bcByO@|M+YUUpnTw?#{FJ=s%1)RY~C2vngiS}||RxKum}6Zuu1Ug76M -zXahzkfc1kuLj*>!l0CY73~@2y{P&EL-#Aq&9sty$~}f%v4|zCmM{HMr}g&TK8gR?kL -zgMn5fcd3hXmmtur7chR-QDdJJ;+X4fiV>qcw15!|Gkm0Sd*`|VKX{}5&RL>tlCE+c~P|`ZvO}b&QX>1EbpU_1P -z0e03iUWAcHnPaEtfMdo3`j}vxhhvHtnb8|`* -zg22Jn*!73=-q<?1Tno}&ga&Jhgst!f*PjH^aqF;xDr~al&4*>1^X|(hTwffP -znN7C>$fukWw9mtQ~OkqL$&Rl6NV5;z;@lM9-xmwp8{`fQlU5om5H -z!tBC)kmaT>$$OaCtKhlfB+0T+Sa1yRB`fCBFn}y2uAH@^Le$@jS$q= -zWZ#@Ud<mUA0+Sq;U8f3vc_XgfKdTt7< -z_p!Wq?=IHw#NSxaEB{2K?fk8=gLTPy>znhX5cMbXUBA_r-j{7*u=M%CtSz-i*}UHx -zMHY-K@T7*`<=g#Pm<_t`!F$|UJ-6EO`!bB)Tcg;SWxK&_c%08{Vt3c;emoZ_e2*37 -zg430kgGpocKAX#f$zs=!v|YcOuk8Rp5v3>2bl&qrUKd-xK@Yo%H-> -z2!n2aXU%xNFT%S`-nVr55cj)-HI3}ue9~ABmf?Or2|u1;TZ4u3);_@g -zoOT7FKZD*$-VavmHHETT+u|UyXWEfQ143tc;B<4Lf8Unolm2lKwfXt1v!1^_EcnI-+WC%ku^<(&BP;J6a#BwWz$U_Te%m+!6cI3V)sJ$_hIXg~e8heMyd -zFW$*3PotdlyPf4A+UHap9qqTF;7s6Nt;P2J?R8q -z;~^TfY`K3l$b2U6tX8;vZau8~U3kuNb+BiNXp8TOy?hTS*@@0K`o?mg*~=eN`#3zIMM)nSM`!2rjpC`Tm@15DLP72?$u;Sj{f$y5f1OEBGv3Xy1 -zGH64*1N-UQYxsVIwn+vb^V#Twik--gKy&Nr3uop-zkSaJ_YZ;HeTbo*?X2Z{2z9fk -z$8c%QUKeyZf;Jn%yBj>zdpKyVeBYl9q3!$99NLFP -z=CT#-SM%9!Z$(0Ciyi*CI}+?}2cFeg4Q8DX`Z}3Ma$wDdyfy2@w6)^j-v$EhzAoNd -z56eM!eYB5*U4Q0mt**YKP`88o`2pL#wOl~?bhglLp&T3Q=Skye9YNTJcI~{)1#9_0 -z-pTui-D-sWnJv<#bLdB-jSY3`M7`ahEAOr2bpJl{C7bNy0eOY{g!y3ho>;B-jUBx& -z>HX`$>cSYaTpj7e7W&>o#=4ddY;hW}c|uHSqYU&bSK`1;y< -zZHF(DP#;cLVQcipkK0H4(4X{qs9PAT4C%Qw6roQ@u#dKnbGTO<+Fkzuf4IJTo(#q3 -zmjBUc*?fOFR~n}=&Nf=9@zgVRt+}Bew#LS28P9&pc!9sfXd4f`c5AE)PE#lSgTAw) -zR~TQ$^M=t38b(I?fdua{-1M80Jb3imaI1FP@ZrMtJT-bg=eHBMBMkYEQUg}tuLpm$ -zVf1>23#WNTd&ANGF!4LaJN!Kwo%Opl^)(m}=fY}dOpODZ4;doY?nUo)n!}ZG{x^VY -zT$m?4qob(Wn)9daCd^XCgV8k}{4UHzU8CRbo=(?VX0PGH^B42Sw(;e^q0#US$(T1l -zNwXwgcLW>$=c%KCxUOoF=*g0(xGt3~mv}Y>LH;Vd2J{2Zv9Dq{k+bN+Q&hvF9ICum -z+(k??+$CuNyh>foCW4|#6eK!Zvs4SD9Ti4Gc)DUc_D!7a-vbN`9GPRF4@GdP01B9@ -z$^_I^RTC5$Etj&S)Px&ly$Iw1VKG3*kXwepq02F=*=h}>J4$K<^{SdETbgL|j>x;b -z?oq*YB`RsUr3xN#c$u0k=i5Z3Y7^bUYJ;j;1@*@UUGRj8c*pQd$}p9}4OS1Lbp=ji -zS!_s>R1chFZ{Z -zRG`u_w?ju-`J1gySAy?FC)>$&;5Gx}K&*QWb3sua)o-dLLw#qp!5HGu-G3GRv|)va -zHmd8mC!wlUFBT0}UC=%(fVR*IW}H*Pd+09V6u}{!LS&nxyecz3 -zK*^&vQndXlI@F(0U=e69s-($KwXz0{=b8dbRCS_hXa^T%QH1jUXF0IQnFA}kkYHgJ -zx=GN2Rta;>m!BdJQUrt5p1`GodL -z#S78(wQ$jrR@@7jv~n*qH(6Q&Xy>3DqK=Pz7y;AouU}9}8PYbCA2f1irBKq1^=VJY -ztOT@l-w>s+JS#GysDp|rphHfSM0}W^uF<3O4Ot2hFC>UPeDG=u>*!g@y&Vz+t6H%h -z;06q!TkqH4ZdYOSXwD*~rzVY$+D>pgro~#;&Zd5-|}! -zVrSbW3!{SVuz0r|t|E#XV~I+N%&O4aq-bR*!+WsCm~R+g#pPOUR)q+Ib>0L$7cZE# -zrz3VVymvtXs5plhS`%!yU}I5u=)weX+JpGKzS*A2EswCmB_12QgtXU9#fF7y2gO15 -zAq%?0k`IfMMScNii0q8rzP-QcvlZtW5P>(`o7F%ABcezcyQyHjO5dUlc!5@xxAmfvEUlr|4{~f**FKE~&*28*zAEWj~CB5<$7xkA525 -z*bgbjH?jD^S5%HR_G(3x+1v3tdp((*q3MLZxX!k8!hQr^71>LO#ZA#{gqI2uOl0g= -z)o^SRWS%`uP!LWN;VK2ppjYDJfr2O(cR@M_#V!i1_(t|_xM1&$o9uxi?i2A-CER4+ -z&I*>jxh$S=F)>@F$=EuJ_bLjvC|k7v&SdYcvi%x6r+DL{sI{U{i-Io7xnM&SiXvpo -zVsci->GLdt-FL!;(Fhu(BeI6_l{27Zpu3b~pA8A}a-v1?hVT{V`>9U6R -zm)W<=I^Ip;MYhB<74|I(dmlwA_9$%0N}s)(!rnnq*inTYWlvOCEhy~U75424d!oWh -zTVYRB*|Stu&MG6OR9R`Lth7~ZG)-0E*^;m&JD)vEWzSL-l`Yw|tPQB_=_>1nDw}^* -z*40$@J}N6cmA#3|YF}mV1JVdvvX0EYU1RNDWAy?u3NBflYOGE*t>`);Te6PBuF^5> -z43-L8YHW#D>5OZ$>|*S0y2#F9ON~yet#tNQI{P}k7)w}M8H_CKErgocg9q(oc6Lh6GrRcJ{T3lY-S}%I4Uclh$WiKteY1vQp -z;uO7jp3b_`r(v-mIpx{Y;iueUU6L7;ShM5r5 -z%&1&jW2gmNbNB0VEepz(-DyvW1aUgf&^ODC$Y1BD)y0}t+%%}mB|WR@#uQWuMozRfF0T&itxu3w@<$epU1nfP`J}t4her`B(I+SzS_PWLVAWL_w<6RaS>N -zLr3}yT|kaikh&Sks`%eYvRaB|mvjsi!8!%ksU#Fsr-+)TX^QlVET^a#a025vEmwa^ -zathT!bi^F1p39ZoaGaj^EEvNAOcAQ43koAS{bjxI3)J9E?7b%KH{N?3#UF3mnK^C_ -zjz;sikYjP$(w%kBp-(~b(iJCDZl$icMljr@#>yJaIEzWXD&;57xfC^o;iT!k -zrtw=h_V1++>NS1dZ*Qn9Ybzl8g8dbSF}`doMJfCiBH``SAYm(HU@@KJO}TIu-6$LCXO7Uv}JF)utn-bA=W>8nreb -zkFU-B!3jslqq1B{>C|sWTC|iN0{wx1nM}urh7~Ov`*v!M--b`h`g!8L=aYrg7!4MW -zAB&bR@>EoZ(Z|A(gIMl7tKBB|V8#05o_lzSW^~hErknc_ue!tWgZ?huH|`I&Xu*A7 -zz9;Y9{X^eHv|wnkUa*G-^9eTC5}1+U=teZoizuNJ+e$&#&62Zkn|hjCoXsv{XPn@& -z%cjpVG7HGB0Mw;&cq)w+OwnLS=%+pSG`80?-={rTew}X&!#~eFiACaZlAc4c3+P=6 -zP4qfMzzQ5p$}9;F3UUAoxpFa>u7_p}wL-TT6uv`BEP`eLOw)%UT@_*M5XGDK_*rU3 -z&|W`FwL@MDOH3zzDcRfID$c~{1|3qWTDBGBCwM-;#`DlGH5KF)Q@jo5OPwkMoOEO7 -zlCJNiu%G4rQ+ppI(e(&KzoAOz6@V$#G(2-McoHwDqJkE^Z=!eR+r;8_zNyx%-FP;e -znC*HYrAt`?D~r}?FVy&6$PhZk!6 -zr+=cQQ&5!!I9>~(K7z#9dZU63t@dX9&XP#~M2!bD-Zwp>q_1xF>8r$~+iTD7F` -zo~0wsk89f^)nNMYwoW}pJg!Tv`H7#fylX7-0)Ye@57ZJS`asjTZY>_o@(@{t(~X6o -zi6=T9W=v&pH|I0Z3Uxl$Ug+g25#Wm*$(;!05jQsn9St%iUT1q~5?$#8oXf -zD{B)3g!(34#mO%Il6SH3Y>CZTTr8Pm^}c7kb7-sXY>c*HOpT^tbbVvCtE8Vp^A|xC -z>2#C$Oo>^^S0?DxaO1VL%*+tO$+yt_WoZ6;vkZSjL#Qe_HqmU2vt?W6B+wW+-BEN- -zR3%U{9Npn9{8meHZN;%1PNbg7Nl;syrrHumY!Bpg(bH@RabiW$qM!|la8T6YZo18B -z)K)oF<{gj7q6x%2yo+ZH;?a0uUiL8ST -zBYT#usV+2K(bAmSbzBb!PZ;mOE%K^^qZLL)#?CcAHjC)mie?e%+bSftm-DGV?rFkB -z6R0i1f&`1)?PU_gY{BLJx@OVz#*&{?AH%$owaXxF%g06x$f-Pb%`UXI|2!yhnbp#Q -zcY{}I=LD+Ku~EZ}v&e)7h98Nzem|l?d=+d6La&{q4wr?9;Ql$9qhLZt9$w43lnPoOCTjmouIgYLkvSzAAh?_I33zexS~*Vd`lxHXA+97G4*w*|Rd2 -zn?JO)X?7fVru)&Dd3)2JOhwh1<{RZLo>;=hdumztTB;0!=0igeo0%2cZ?{CJ+rUR8 -zj^dSI2rS$nx3zeUc6?wwS{5|I5)NeRg$L{K;jC+pYqr`ohNN=sk>aaiytR)BGWpssgwUpvY^rz$xGUQ%&ej1GrZw#k?i0@RNBnsbiPVDm;@pJtC3hpP%i -zl_iD}s`0wa>$>CAp?}IlHv!HbPefMC5gi%;eQp! -z3MRNU;~#ai{1n7{SGd|T*YrUw!xUylPe>F&R(W{3AQ7c<0^7NQ7GO@Vf(_foUR;P= -zFkXJ5m0$-8sO2WEBHHp~(nvz*2dw44`#B|q&g~U;mfd+2{bu#&wHyBfpZA-@^WRm3 -z_uE)VVidw_$KUNk8ide-R%|C*y9#83@;qgh3m9rD -z^O!ma;*LdX2!v@76_gT}LIaUp%DcL5JJ3udn-{$=_(7|F%9S8>EZ7~Uu&f4?9O4uz -zk{Z=S3GEc3ev71+`aeqMu-65l7>4`X;9?iX_C*MTdkKDb?l>9D6af;`Fi|Hx)OIw; -zxf1N;M~IN>eqV(tu*})LnPX=l9rNGqG|95sM|7}zdb`(o*#8T@>@2DVelZ`x*x|?K -zkrphjD6F}Aj*)_0tvVT(?-CBjB{WZPn9xmaX!#jOQUEB}B-dB`}Ino;V>RifPv -zI7Jf0=WzE^igh7U)}T}7uJl8C!Hx7$;=y7o2cCTTDzV$9gClz2NX!&s^3$;w54O$lCG5@cg8M17gKmz=7TY{j6c3S4?tYlKZr -zn2ea!ChezV(49WtrHrr%8VP%JW}Z&LY8mvhoqMmxH}%O3A~_6z$Mf8H3Ms`K6wsJR -z{tjhycLs4YLKxBOJC`N=eugZRsI$YfLC=w75NT+TT2YISBC{ -z7f~)kL6)vSiv(@NVcql8$KBLRLYR1=Qi7Uidds)DM?F3cS~U% -z-o3U!zQGiR35>E16@dYLT(l4xUor3%;5$Vt-RGYrW5+FFN9@dEau-6o)Ij1-`tW%a -z@n*+4GMIJU{AO=IflL2O@O#eClr|H|Pj-OQ?pk!{F`Ci5%_v -zrh9yOlBlF4A8z_QSv)-C4dY|-v^l8L$~kSP^slJMHQ}B=NS3Hf85Mce9FIhW|1K%FQ{|VPJl&Y1DGG0>n4LcZL}O9?TR2ae -zs^Q2264fV|Cuqo^n*V<>%#-kwJlp>d0IFeW)c^m89Q13M-@MMNswyadmukq -zbxt4ZFmwkxY~*qt=oSoR73!MB2%hBS6P_jvoiG^ZNxV)<1&+bkm-=Px&H>pdhzr^` -zG!cvcl6qAb{P*iZwSb{{eMu2!!Wl@W6$idw<|{AvA_#A#YeW~3 -zR^u~$J$`S2=!~ggot(|OIYs#=GxHQ9P+;iPDz;o7vl|-hx{cnp2x#n?d(9e?>T2G(v+dJ6D%Ce$pK}KQ!;_#(!o*JvVIO>TX)u -z=`KwjE+|` -zBGLDt5HWnDTDiM6MjYm_Q>d=xB!9S-cbUT)W?Tf6U{v2IDwoPtR=D4?(rTYA64<57 -zyoz;zzk>#@qIlQ`0ea_p&Rh=PzU5hpBZZQo)?j)~(1|srA(m)ZZ%9wk6 -zKYw$xjakZPKL;SYPNk-&Eb4x<@i=?$;AkU=m2Ew*#C4xmvibtE$7Mm(D}G(#6;fH_ -z{shU+`AP^sGC=@ezRJr?gjpAaArdd>l7OLkvM3-Aj#XD=cv%qy%Zml*2D26iT$5#C -zGIJ!-C(1h92CuKZ&K`{U^!@p+$cU~ZEjwd1MWiC}3KNZ)grh|jxdemk><%bAs!ZuE -z*K1Uj1&c}+r%>MI&|k+{yrgneQB__P9bLQ*MZaRbhi_8F!q_RO1c|Q{L9TiHEiz-- -zJg#}$t&qm68@r3+Qx62+%wH}2DpHyt7y;V*&S*$CUGy_9!dHp0jL%sRYGY6fQ&0jq -zjGRt6qw~T^sco7I_X-E36HCmcJZ-)W-q -zRqi2Gnnin5`x=L53mufOdS|@!9^FG-RpeHObQBI&1P+uDnbRbZaE)eDXiAMXuWLr7 -zxT@!5b(dPu=p+wL7bFhV0uJV03;lbpq`I2sQSyhN%T&>c3&W;rbCRY)PjYOFqbjke -zV^dzR`9FBsrJhX`&elbWzCDN2bWP(NUepj2&r>|<4-rOPA}JCIs~RT}MTVQ`Jf{kh -z$6J!>Ns9Z2Wbv9PyE3P!5|4M{IZaR{&O&`f6$DEq^bd*H(9~rQ+Lca_GKEL%5S@c= -zBPyEa@*c1Mp~G!pLXbG#6Om1YY8-ru#wniY5=!w)wLhqWS33^pD7MI<6&1dYh@7a~ -z@Gx7`9GCn-J%Sn?G+ru-80Bqqy6#$VPvW{F)hy3a{t$WF)okj(rMiZ6S0ZO=0u+|5 -zXs)W;j%9m)xRz~!m@aWpRw~{J?&&BVoXLASM&b&R^oJ+$E_|-S$*v70?joIwXvr`( -zQH6IDUKXhLhwQ*t=#IysFOoyk8I(8_hOLTJfo==8v;S~(syG_dsH)=EX&QmofoIyX -zrpdNqTTsP+fELM1@X?&0=}>nt8gZ7x%TQRLE{YOQY@+`m%erdYo(GlTz~d+tIE~60 -zJkBPbLR43htUsvjA+(pxQQ3mZa1{ZnMG!cU928HnC8AmSAD#e9+kz5zWO$rr!#fF@ -z#JP^DfahOXkDlT;AcJlsqcKpC;IUxUOt#4h6xTI_L|R -z70%MB#}TM@cyHNuWb%ird#>$3ms2bY9_I>#(=6zQqTtFDT8boV{2zj?sJfs)mvXVU -zNN~DNRrn4adXMGmhywWsv2@-Rv9jQ6;ZAT|^AwR2BxtxALfWeI4~tkD2s_XvnHygd -zG){A%7F}6@ZVQFP^XeahWeGa8Q)s^MVUq1CoTfoxxeoCJTZXrhp)f%yaCzQ>=F3Cp -zlnLc535peFF6uy~65>jKI7H?>Dv8iQc&IyQW}HqyHHEj(9Qber29`ev6g)I+7;7w9 -z!lvSKnux$Zt`3ufEfQG%!Bb7MW$02Are&yL7%-qg%P?R-$5JFw78U;2y7?~#0`zMj -zi}ez3I6khZ_;}-|ltI@*lU&X5b~VZKpkLcMj8eK&TM^E*p`ct*usIc>KO_q8q9bvW -z3j07Jgpp6-t6SlgH^{FBpkIRsRa(|ocT8KtSo -z*X%(X%~^JwN9C#i)|OxlTDf_1Cd>1#dawqzJBivxGv6AYpc=0sB3L}wI;+VVG{-{M -zL(56w&-_G)VBY#D>PT@>#qX;5O_TPT1grFL3y~W$(4iAzOc+$dD7*NXY5_>b2vhV4iFOI+_%3_e -zE_K6F3XfA5PXz7r$rzx(h_eQ*C)+jXLymdh_x1Pwj6U$@W^rMBL7OTA!YidEP?+Q@FH{B2rg?UP -zT<2g&fxT$|uN4)N)$pP-*7c3=)=%;UjcQs0h7r;x4TFany(7uYb9(_Bv7>d>iF_t` -zuhU>l?Lz^nQ6p7S)oVfExkw{;K;`dqF|w<8=%>e`j@Jds(FWbrvAc*sCoC}C%AW`U -zRD*C6qr*=GSra4JH4Vv((J01CwGyb(EC>i{)-r)Rabc1le~>D_ig``XEIC_@o($HE -zeATflW?C1SZ+vRN5X}n&W__Vz7b%hg%zdJ8V#@~kL8vU58=c29b-iM4>vC1C668u& -zkuF4r4t6tC(b!3oa(E~`6Nt-Fkdv*~8HNBLO-P8?XEB;=!!R+0{cRXzoK|Ug1Rec| -zDqtgKuG_nw18XmJP&#@}lSb=0QLn;LmKbWo@XxT>K%>C6eQgQ)6SqszQs5AV(cQZA -zeK!f#RnWy$|L*p!6Y6)4I`QYVNE59e-G2gya(Y|zql -z&vOK5&W`P3PBq9nF3jknr^$}vNS17acuqYKL3B&k702aODxh6EIooKmJauV=M#PxC -zU(H3PLbqmz*rzkr<+WvOW4&;mBhig6lMWO#;XvnXfCkiVbB2QSq;jL(0gb7{Uj-4Cj7D1@ -zChAkG+T=l)of5Z+a1}9(ig!+c^HtS8bRbYK>!U%1@Te>iQlnh -z#Q{Nz*FlW{?cT9O*8_3(*0JKmT$W4KG)LIeEDz9^xUPjeQvj)7{A95@MdO6k{o*w9 -z?H63W4n+py#*#-fXcjd~wp3lGadUB#frs!#aQt&;U8kJ2 -zs2;3!^*|R%F)_2y_9*kozmQeq3i@xw|jqg -zj6>+T+xy--H*XK4?C9>tVdS>!HC55}f=q{ybUxD9 -z|6KK-LK=O_oluaoo5?gwaWa)olc@l*Gw3Oz$R<+|qE$(f)bm_QB&nE7c}WCyLr_GV -zOqZ$%Q>iS=1e4V-c!WhHJIz42^BKT7RBE;CCTg0ZfVNkK(*(^@ -zFiWeh5rvugFpJBpL+=wLS?8g4cbM*UoifI&%AdhEl$Og9N8t-MDh?%!V7*RC4=N^T -zCA%2=hY6yTSsHFJKK_*8wev%kEK_1nIM?q2s&&O$L)+CV795ZjM772LtrLsDVKzo)I$?y3}oKoidze3lLVYmVbSJy@L -zoEEptAuS%yJFd~aYfv&}p!aN(DlN24;MWPxsAW0NO8EQq5 -ziX=7=S|cZcGomc1i^>Tk8X47?Aa2N;6CU4eNK|Y7+eWvd0slD%JUk_ -zCYJ>GR9WDKGEFeWt6Ylrhfmc7Qn6Aei0Z7cul^WF#nl>vskp3{8G9*|M)FN<;$NJ& -z?G%2YHpBX0Tv@M|Vcn~&J$$0KsS8S(2#E=Z3T7kLmFm*U4%?MLPaCZ4yT?M -zN+ltn&K4&A68)%<%O=y1u?*6-b_H4lh2TPszz}X>T;a)eRP3%5OGk9Xr|2P=ALOM)_*?R# -z+eooy26~Q@r8}p#3v2kp_@8UmCeITV$#D0CfS54sB13E4ODkiLlzNy?#aG5m>U;{~ -zRaT!sqq=;%TMZJ5bdexA!s=ZHvr!VQF|(jzuj>;`0BM%Qt(9zB4+xB)h$mk^xLE}h -zkmd_I(!wCFKot%M!KA55O6o9c)W2YTt?Un1v>lZ&sk5}+25JK_`rde+_bLHlzc4hb -zl)9cG^CFdPg*XyiXt{Z;iC~P!8_4j&wLm5FFH1B}%T0 -zcK>ZC<%%LIvaX=)O~_wkl>fzhfJjn?km6*k@Ss=MN>K$?Rfz{-MGoF|8KD~| -z+d@O|T*~5Zq6Fk1Ont0HTm&K{sz*~$`apkgAgSXe90%0EtzGr~nxvvc0z0-v^y!T^ -z{ioVUvUcNrO{9*fiMGSpmLqah(a^`GIh<#?k^sV-;OMuZav7$#tv57-v$5TYAIhUSqQui=$qUs -zCMMj2!5)k-sju -zz<3;@brQ3PlVbWX5rg1Ab7bJiF`t*(I8^-S&NCy7fHrX`#I5rgc)nR?pWUU<%yUyv -z&?{JCH8VwhC_gctuSyu+9K*q^zFKNAm^<^k8Yt3_s5#+^!e%Te8S -zMXH1L?x8USwADb+;u`agV7X&Tz-PH(T?IvprjY=@!Fk*)y)Spj(Q!5A7vaZfqXJVBi8Mc%kp2tI!i6QYfMU$6`@^wdsz}z^rwr2{ -z-qLYSG4Ij3Hh{sISE>RCrJB&Z@4Zx8?OFr#UP0S{2~HFQN#a%UcZcBs)|=0*UaCE& -z`Nn8=Z1>UGCC-qn`U3;c$kUZcne`F@K@>?l?X+1=xhlZSNQB>$)IlsuWX&dc1_Bl0 -zFK91L{r8;uCMdtAy$C|bEKHj&#zMI?$IMYU!`smM-L(a=3JNb18lc1xh_mqU6{aE_ -zSZh?Z(Pyu6Iz_*-Lu^jxJ<7SLE~?biL_vjlPUl@1Z#klfFinY~&S^xmIFY9|j7+Ye -zQ@hr|U?5j=bsI)5$re405DKCTNHdl~J+xc9ZVhS+-7}0&)%?jgbHQHE^Cd=B36g>{ -zym;MCuyrRazkS(R*6f>o8gD=o5E$r$Y)(q6cq?VVu4dCP8_>>4W0M6j%tK~LPI>R9iMa;>)P%OZ -zCp>R{^@Q_nZED)Cc`~^><;}}`HG(j-5{yMV-3zXg2~l-P#z;{{_#x|pri!v^-t^6I -zA(rKbP4qf*etECC-N#mQyzOrK#xk}JV)rSr57U0*LvDnR(rEFZ&-zmHL6*0V_O$hC -zZ;jLuB#@@o40|0PP8tw -zpP(6nm=)02MrEaTML>K>WlWL-Edysu*IvoXh*^QR7WiK<&EfQxFVbY=FD?v@=#3FD -z4_Q-dcZ^)Iew>eDCKE~hfa&2}P*W -zW85J;ik(8^BtAsR=GK6_Sr@~^hB-D0Lq`>FdlF{Lgsp0X?)oAji_J%F&K2Wl4GK+^ -z_!>W+FPblT>t)LOZ^^^`bYzY>qjmrp^U_g404kcvv34`prb!Z^>{U!XKN4}JK`n&7 -z;U|uRsYWQUo)UYmY}fx??6yC+Cr@n<29R?QtY?|%!Zl@WFKac;(_tu-L4t#UU6N$Q -zbv>dx#D)36a#Y*msjg{`@`Zonvu4F&rjb~Otu88_yS_V|^1Y9{XR!+R4(^XEhiWGUT+duQ`WEcsiitc$#|XpqoL!yhWOKj^eB -znji)E`p?>}sA3>7=3B|UfJtD5h;kKe10#VG;S`MQ%_n}@wT%R4wQRxY!$B{)T3zS2 -zB8yOUvvquu3gOR!(L1dLcTkmxL5%sMpmA+j-;6DaJ(wO4m{^k-hgoG;C#q6Gm<6T6 -zT>b@-m0gk|)iu6?{g3646!ATOGf@wra#DxJ`E|0M9i7)!P_D+y0CX!}L+of#&|zLz -zL~`YNhOzMz1MdAm@y7Ka3yHCq_vu$akt98b@GJNhRW=mVVoLE<0 -zno1uZ@!S|~o+PvXM1*wMmk!3>fWIEHt}N_+f7X99?<2#Y&&T!C{ZbT%<4>$BgU;*g -zb@SW_%(ljdsy3Vuc0mI -zON$5|?S?UJ3jF(Qki3abI1lyQ>Au5$9nKwi*6d+nMZ-hjKfF1!dGbKo@l(^_2TNb- -zFWXtK)fSM+VQ^fDgX3`hEWSpMP3Q1%*!lhC{4iJ!4})pq8m&gm_DyX0xi#GPgPs4h -z%na=@7#kbD(VH};b8)nC2sEVo!C=&W?K{(V(Gi{Z;dIa*g}OAjcbcQF18P!dJbnus -zZl^=$p~DX+op|^fK2hFT45ts`aJ7hsGp8|{zOIMU*9PS~ona)v_QMvoC-$_{8Ql+H -zyCY1e^S%9s3@F0Rn!FC5+po;Wc?84!nNY>C9L8 -zalU-b`_s{J+7ueYRcH7*eP|4)9r#kp^9-EcSUY3FcO7Sjp|tr13K0 -zJMF>Dd4F0b&H1<^(Y7Q_S8bvh2Jd#~(mUL1I@95P&cb?4I!59P)BE*y96n^@)x+Sm -ztL-MQqtT$#d6`X}$uu79-TU`^9=^Ufg8n)k&Yl~?cKcOmcN)8C<89zK*Sm>tY@UYq -z&q?#KiwrxB<8z>GnN@iCBpTG;%!!^qkoX6i--0rj9wm>a$JzB8P@dy`dXFdDWU5C$K+%ihs2_Wj}OU}{X%U9bwf -zamfII^ -zEAck3%atYOJMv;>y+{c%msF*9byo>(uT1 -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 -zP3sX|VT@~;YeW~L**TWst&Iy -zVFExU$gggWhBDCf%jc#aQN7!qTnp6Ka{_FFv}Kji!)1;KQ$=uG-QO{{RuO@>329vy -zL|zrX^XDkp?1$`9`v5a*28t-6ud5n-8KM`Z^>1q98zF(i5VN5Gi6A&swk3}c9x8(2 -ze>d@rXkDHnH-5MV<|RodvcuadqsuO@u`rAwEze@t?23(o-5Ayv#Ws=4?L1jCak1Df -zd{bM+erU$mw?S78+TKo&XP=O=6HYq?G^sN -z^X=K)Pj4@`PABE=^(}EMIA3*RNMnZOFidO&G4;^6P$2R$SOt6GvMm#bZkw%s6I%q~ -zbD3~?eksr>&$ln%=F2Z*y8QXfg0krP{M7Zc>kB?zkLWE|g?G9NlLr3es#4`YKNdL` -z8_TR%8nV$aI-_QbaV{?Rs#*Ng%b(5BeBPQ{(=$y`bT!zsHA7Q1IXJj6IZ<>Z&J?zw -zl^(oE;8ZV9#e8jQDrk7beA}d^DZ{RF>MRP`kdYFy`UQq)hh+Eb^5i -znqex~I=yrE7;95cEtAF-55+*fLhJTrI{szK2U!UG1^4*We?S8Qh&!LG2Ta|7(H_yf -zXwA)SbaH|W4l@zkTibyoYbEZE=?bTfAJPfgh#NW987rpXGQDE}FuG++qH58KyRV;4 -zx=e2j47%!gSvA-)K%_DagJ>6^YOUtgT%yXhYRjr(%ZfxOZ_9$K%RH5+WZC#pF#k(? -z7-efWua&y%Q;vQPlcJlQ!`F)eotY*J%f~J+1YGlKrmbzWow-HW=t2~}Llj{cYj4T_ -zVz{mxXRph!*xhY4%h?zuYnI1&2}UxZ3vN@GkwMSNP0#a8BCYp7@Z9_jYOUg97igC& -zWDqg47f7&pN+3nHlHgLE^Bn5pN_zQE$892Nqd`{9k(l{v?7uW0U -zsUScID!?nRCASltB}Vswf|RrDxYFnr-_aPfC75(15$07ItzoMi>=DC)ArUA@?I5ca -zG%CUlnW(&`i)!U;tAw4B2ueK$@BMhQ`+KURwM{ -z@o#j!=5-LZzOVD&1Wx9V_R;*D_8xI;IETCqx-@aSvZ=3Jb+Wr>P?==1`{+`*R>LF?}6@xEcMHF2?#? -zRQ@3de+UHr#6JY-4?+H))uOe)D(qC?PsKk1e{hBhr)aRP!L|n5I;`smp$+R4))7wI -zf?o@M?LPzuimy-Czrk(4ufyNIV*>1N0{d~?{I^!`wfd1&v-o?8OrUVY&EOj{D3R|A -z3Y&fei#-2riRK;nK)e{P(**r{0u`gXo{D72SIt4=Rf*$yXqCLC5!KbcLm8=6sVXS? -z_YB_T`!4xIHp^#q6zE>=>U0%Z0VM9@4}wC=M4j98Gq2DBYl? -zR0U13vc^~}8R`c*q8DMT7W7J8ujEmduj>K`*P;rwSz*a#^>Jkr1b7AlV8Z|;g5Dsh -zI_Bp)r>Fr{6A+Qg#^6|4Vo}L30`Q6|%h2pK?Cz*@Xce5A{k#re_Fmm`q -zi4EKt!p^>nX}IN%watk41nG3fdW|JhtRrajCQ;Nz5rwSgTq*oNn@^(s;; -z-qHFtVg4f*3El9UYo*o=+MS@V`Ji-9sR+9DU#r0Xl#02S?s?(N%vf^{K~#hH(5Y9O -zfGGbRXZw?jvouBsHMzzk!>J-kL`5$5LPxh!H@Hnv^Fbkv5}KdTSeXpu)yP2Z2rP6Y42`L{jD5g+S%!CDq%^+lr*FB@t%YpffM#><>E+l{Pwuo@pbRaG88 -z0@ZIMNpstHZU)WghLSZux(z>QG&0_s@qXC%?0pPZt{Qw}-iQydI%q@<{uu1kbu(2C -zO(lIM(*7-)9~zF=Zjwgh(QYq~QDc=iUv#w#S9EuyC~7w@|6dH=XmU7YJ9q4WDgG`_-(G2&*$4ro;vEi*Hj;4^_g$aSItI)?ZCTwanqK(d3;ceKJ~nXpgeo)s?4&cYC7=-v~b3&A7N(CD_*0$_IiQ`A1kR -z5XNs2Bgo6H?#qOXq4+!B6y7%~A83U6z<`erkC|&e7~e_dV^M7R#a2}36!^iAkPizN -zn5prxgvC0kBewzJi$7Qj1P&o|Xi%R_M}zjL)p-#r3q-iIBM|&5D-0)DeBeuExY*zV -zFIeC!J25UTJnX^WvR+9LUivg9h(u8p86%ouw9s`0CL0v!FgApyb(Pwx=!zVuC!p|s -z)R}Y%Qtjr`oQvx2%=qJ -z6oFbf_Mv0>-0t6Qzl`fvoSHBNn7mNzx}RX05L=zKSmF>{pR|pBy%~aN -z5z^Q(8)>qOv*OVBxmnu1ihFkJC8~F^-I%`DVOo)kt=`ypdAUBlIUPOKL5jwllN9th -zkfl!n6UAN7m_am{!zF=>y%34;wxAFPIk%u02N$L=Msd{2l5mr|;em^j9I4khIJ%;s -z#6;X;6X(qPlySQt2kq(V?OX1)USc4W@Bd^>I?tni-MQX7a?z_)L?M(#*Z86A3}+e# -zKc4!W2L3n|wS%6Qv+9apVmvP1M3MoRW -zg!HNeclCS&Uy#CKdzZQ%NXZLKa==atG8+PgBCaSRUxTzMV~QGDkU@PUm6(FsNRR^)>q*=KJ#STB0phUL$b9k$}Q2@cjeUL9+<618wEE|1s@d;WSZrXDbVe -zSdbbTh+qrd)7d)7Q5UI!1obfHNL8%zwM>zT1huS71XK_0&KNcjL(^Fx7OaQU#i`Cg -zW;28E|Kk7es*}7VS&loiikmagWPxA=7#Hh>) -zLKl%XC`ejEMEqa1(IK3|QZV=qn-Lp$7LCG19c0^6A`VKd1H=RN%fX`JeYq=+$5{2z<6=EJYOB;I`O~wq_BU^{wVZ@2!-lRqoWI=D{%qzu590p# -zG8;zDl0Q^zp^ib5ThRW5dKd0FhI>{PLh(GC6h}#AOX{0d#TJWgv9cBGB{6xh#gxpQ -zi-K$M|7lFO<>G9)vX$$fTSUcHila(ptCUYui#=*(TdeuWOv!d>m918PWtte_@ik!( -zcI%8a?Sm%RcgDX#AUt;U*22*sO8AxRUU(A=E%)>YHb(UUYI!Thkp`tX9oxO2o -zt#1_P{>edGC`(F!qJnj70I;(x00Bw>)?plnSEHMJfpJ5awBjQmg!Qdtoa)Pz*mKzyFY@WHQWfq -zq%38PZ;1kSej;}|va0ijr1LGQ1v-)8B$oS}`W0i?zCyMFrB|qy&?Py}E!k(s^(kz~ -z$vGB?!00bZXL(j8wk>ZDpKRqUn5b}o@>k)cl;+gt|&;ysE63bxF}Q8N^~$ -zlF#AQibe!R$*9W+ZLTZG!*z9#RCd|f%*EFL<73Af`+qCX+s+s)*WI25b>q=^ -zUS`|Y=J~kwH>1Wl;rnsx$r0XPn=#kaqleM<@N~3kbZC#>54(nIHy+gHEO~xB%=QD> -zc^z%ZWMPE&5BsM^J~O=c+`Zqlo}Z#Yv(uSI>qGF=`jBVyelMNR2943v^tIc1&JI*C -z`DMRD)Wg;v<@@YZrnfviz -zy-$uC<;9hfW9onOm-;%hmUAt6dgx^1S8kuS)yHnWAMN7CYu;NO7OT24KF+eRC+9lT)AF#pj%a_gQ8 -zR)wtVxHUwwtApz9 -zLYOp0*JQ3X1&}(Ir!PsxT(RUN%k^{*Mr%&gMTe7YWc+kAhZBjTS*}WLNfawih#2hn -z!$8+=fffQMMC4#h;HqJ+9156RN&OQZZrXd9ne3<6VNe)mlObCxn!kBP4Qrx?ECrvi -z@jOsYK&5x9>Bhn^B~ba0hP2QgFaq#$1_Pr<$S6?p803cv^X8e}M-~LVa_0S!aDu8} -z4pVWkvSwN;3{^4cgD3m%4M!b%_S^AGu{3O>(P$5vjl#44Dw{8FR@{7$CJW(376z-~ -zve*1DnmwbrGlqtd^$erkYZ`{%X!hD5w)Yr*fYE!0qmA9jSQuU37!6xNGwX7%&%R^I -zIePYkw?X0?h&2AAtP9dmwu#SPw+KEC6WKKpaaCkkTSTeN<#f-Xp_GGx5RIk|2iI|M -zA&SSVUHx^O*VZyKLoC9rP!%y0U|*6URnZwjMZtp!U*;^{@;HgQ -zl%qtGIMH$~ojQ)_YC4o`;j2Zyk+W2huHgwFI3g{vfLq0wh>{1J#|myII0|#206Mv% -z!X$^n#b;kLJS9(PTm(BuZoFae*({)~N_1?7Hw`5wJ}bUm#}m+RpWHcmN=EF4sjeyP$c&!gwQ`@$YIipvi3ltUx)%~f -z>lN>kty27}#2Zv~Ex+!ue;44!zrnU~BI-C1cQC?^!cg`V6^EZkb&@zj3cU;@I}1@6 -za1deGYp9^0bEAkIE%VgA_AEOz%}@DaY@Ks+Zkym#-LWxOKE}8@5CdE!CbZo=XI3JZ -zUMVKIWO?9acnN}A2HSvc_HZ<$oRwg9E@&`V=Um9qkntU$|DA)AI0h_>H^Ym)Bz8c4 -zspNr0>rWKKZ7ccK6u%j5jD+IZDhN@0c{|*N-@u38h6RxAU9lh_(U3dE?4IHH*c?(RoT8>9U}P=gADs6T3Y#F3^BxgpRA`NI#ac@6mex|P -zi{G{H`gcM2E|Bkn_+5~`3-WhC`7WrHTrlB0Q-HoMo;C<viu(5zUa^vJA;ZGMeID-faG!_!js)KiR9;wzALxYmvnX~hi>>DfjYbRw5tntT5@)8FpPbmTq6(^t`|Q#D3;HW@&8Pi`P -z%VJL3`?0*)Q|@E4$jV9moY_#suwf1(3e9&=`f**rP+;`lSIU&qEDIU$j31=zH`>-C -zhBXd)DhNtOqt%fb4Y?__bVZXD4O)#Zb_AUWAaY18LFyQ)rjn{Iw4|0KwmY3pOEWr( -z&;n7I7#*Y8X>`O!Qzjjw)6%s{NpgvVgd5APc-vqNQw=CIbyd_!RaAruX4f8arNZWT -z$M{7}B|6DxZNE3ERzU(S-mR2m7 -zMY6h%wB4GDnHmXaw70#WtvB+gr|G>h@_V2-wcmSBD@AB~+R<#i<%|CQqtEwVn-#l0 -zYd7FkK>|Qnpn|-|j))y)Y#lyJVOizS8j$02zpl$N#`eP$hFLLi8rBHB6?{7^-2fI) -z3$Vm^;^x&?;ntch5c>mHK&pYC^TS~sN(Po#V)zr`0`DE+>CqMz<-6e;$P3L&^<%k| -zG0jbPzYZ|bD}!Q(%_L4MZcq<1Ie2>@_R~Dbh23Macub9^f%u04CIC>sPGq4HoyTn= -z>XqV7ut&y;T!SKxKytu176R9>4?)LpShPBO9oK`Y@yJ`w=5_Thm~y*SVH8$Sghkwl -zj^c;!)ZlKhu> -zBg|qziOp`Z$v+4~zG5f7V#jfkK|t`*VM`(-Qj+aYKULMuOHvZQ9bk8M@sL0!`(~e2 -z)m6XB{XL<35yU7;Q+H70o595H2u$q!{Vtf82P@qXrfXFW`&=$-kJ8c<3?bGKPq%?+yuK}N>{zuD -z4UsLUFQM@ojPL}ct9?Hqx|uL+bRIbqgDF{JB`-azz$g;-xojIFLYt7B0yuRw`T -z<1$0%G#x<-YKduK3M^yXB-8*X1FykteXXRt+M`XBGVRjNdD}-Rx%XLB1m7|qz`^m% -zq&W!BZq4{OTVGgg_U+wlaxs5Di}~&P+nnWJ`TO<7{AwNDc~=)KTVEfah^xop>xJdL -zgbzs`%})!+2V2_d;@hY5Rk%28Sp+KK4-y7IWV9%gd0H-4Xv2@|b%5$^h9#NjS)mt= -z`ty#qKWXt5mHFoYFGYb~gU`E76`U%1CvLqRs94|TmP^)~UJvpqoCx=RV$bZ+**9l= -z?B4SaFY)8>eE1}sk>h^b$Rj6xa3Ag-zpalhzNFDNnVU=Yviy3yyqM0OtkY&#l!VBD -z5gGO2Q;-CTwakw&KynR=5U1L@Z9u8g&L-y0VKNqtAOgN?kZejz1+M%4mTe! -zSJ{2In#P;S{K>W#-!6(ndwppq-wr=tzvfS;tMK*Z^V4L$din9>EZ8f5e|MIheK@>y -z-SnD$e%RbhuRnh|gG2x8%klZcnODx9u8*J7!!J+&c+GDw?)lXnyNm4i*WvYtiFCW7 -zjW9>j1G)AjUBC+0S2x;N4oR5+4i7vQ4AU~0^@%Ajba?aS^*e;m<^PZp&gqV8>s4Brv4dN{rd -z8s8ThUlrbjz#qK3BQ6oPhf>8af$c!Xa1_E>vr%CL%YX?(G-jyMkpo_{D6@sSS27<{ -z#Dd0Rvt==@!bYPdiaLQG1x`;lZc0_a_FXsYF{7X`&f;`73w7XhhM34R)JoEIB*+yd -zm~v4rr*mCgu?*8$Rbw_;P^QHq)78CXPsj{si%h*2Sv&<&vC!GWB%GsAXi<`gi+U+U -zHE9$%&0Y;4wyS0W(~c%{*kxr|bv0D|8d5h+i%m95a5y%krA))+2}G_E9v4Xd)xj=m -ztJ@ZYIhHF$9WEstnEnFLA -z2Mlq!bT}O8!1clea$JWwO}(a&Hv9;V)!TLz?s%4jJf16TOWJPT9!Gk}cDNF$c$klM -zxGkB0_Cfu&<2CJfERQT1pePe+k##up93?Wvsy(X-hp&ezZke`YHmxz?V{9N&pib30=S}rwKR7VVBJW2lk`x9lQsIrkIum-3?#Tgma*DJZXB&g)IyyrK9aD -zX(Cb6japO{nVRLRSqNL`4U&ln$Hw6QCsd~&>Yu)ecAba%4N|U&77mIjB2V@5vwco6 -zepXL@Tl&iV4P;a#aUHX)V;(fp`hx~uztQhE6D3mY<##&dPNkSGN~GZCKqwehfvfXl -z-%gUmO=N6XVPYF15;m~pOc+j-N|+TK{ztt65{AGOk3uUlLtjmr=yy%mbkE#bftky4nB -z2_wp+M0cye6nTOa@nJc@2=s!?$14};KtuIlFNpnkQ6Nli?-^R)aLaL=5XQ;!LPI36 -zg$7v608ZLTm?aXA0Vh74Grzi1*BI?Bt5~{DSGcfsxU&ChuKq~}s%0Tdf{tmns8du> -zn{^sxlu<=%_fU1LgAgIwCKuahRXPBq@pu!Klg64D)|$FxswRIMui?}DqZx54H0;rYc$a5emVIJ^xSy$EHr -z-|Dt%6A}N2@)g$)0?a;1aLfewFH0X@Ty<0R6hj -zmPyB+8Er}0${lt4+v**)K}{GqtSyt+VmFe?rx=7DqO6+#;qBbn;Rcndj{+q -z!uGVOb1oO{d>zf9cmV~!We#G(xHALec>qjcikIzpc~4}Y&R9p`oC}gs*)A#1iePKu -zD!rz?ZQqyD+?%pBzkl98K__pzSO;qR-Ra$C8?F*Bld?|S-EvzQf_n39w{Ktiy$R_= -z@17Kt81KNh8{Rn?C{_1xXqSrzSN9;G49!`v(}>nmRb@A;wLK-?vNdT)hGh^vl|i}= -z+iAUhX^OO~@MiBzl&?GG>=cx*;~?sk!}cYy#H7=Q*1kmCOn#ZB_)VJPNBPr+KpeKA -z_+_v0qf8nLuAiPI_RP1Mf5l1O6EE~;4XP1c!ED5*svxtlIu!V*o#>iVrc -zut-Gmde>m2N8WvH$1>K6MP9~aombZET3RW_ -zw0zngMv(-xnUOYTXTjH!gNh`bq^N}&RDy%*K-NJ4$_;`_YEU7@px_{=#0EN0Ne%)n -zH>gvN;b_r<10AMh2Z5Fx)PW>C2rAJ*b?ibtmF%EOnL$`1Jg7o}dJHP*LDfAZKnN=F -zK}~IH2|``o1Q9xv2tkLT6d@oPLPZTVVuYHah80!G5o#(XnTA1IkWd}6BufY?NrF`o -z(bLy3s6+|B8p1#wDV)G@nKhdOFk@X$o<$R1iz+v0~NYDWUmMC}M6ny4K) -zL>;v&ifE#Cq!CTjjzFS`+L1{#Q9ELZR#aCq(M0SBCt6Y4@`+Z|wuqvR+LcnYqPl{L -zpUf13e4VC$E%*P+%bnn@|61&SE%x6m_ALR$UyGeWHRlr$YIC!^p|oscjNk|F#LyGO -z?CF1NgV;Bgo4=O)zrW;d<}r@T5LT<@b`~OsMK2_}hGVvCc9!pd>PE3OO^Pn7_!imw -zo>KBHhVu=A`8}l|le>qpn9U+`7#HxStC~O<$vvUm+?$l|3*DEW32$GhyRTTbw^-Ji -zDXq%nz7K!ycHdiW722iXQg7t&oz8=`ZNXZA6||iJWyAp@n|IT@9C%1PM7GmcBKxj1 -zg}auJmPFM>ok1S=;t!MdMe^QTJP@7y2nTpn-V9PeBk@3}MHx-j0oE#AH=-n}QT -z1z@H=2#&Un0E(eQ;HbG!-o8!lTqU>fk+(0AcW;n;VL8uyl;_ivf-f`aIbUYE-*PY6 -zN4?d`)iDh8A}gnHI&d6>aa6$4zXi0~L9ZeoQiN~C1w(7yRk`+8rRWQ%-$u4-lyzI~ -zc3#Nn7X|~>W{eGb6fFq~el)wX#-_!);oImFn`DWqzSQ(ZrG7P5gsaGpD7cluTayF3GU}O)32M;4s!c1e=N`xsB -zZbz^UM>2Irkzd4nBhlD|bTF$dV -zL(31CsuP=+pXfi)gaMJ{sYuU<75|vDu -zkd1mK`gE;c0%rDt8XyY#j+=kh0KgoW&fsV{E&IU@ZhBo$1e<<>sJ?j^mqwW2r^JKR -z;2@illZwP;qfvq$k6^FpEt73^g<_wHKdPn1bN)Aesvslf;qdzEq{50s=)q%DX-6$R -z`24PmzdsLLo7zoy6W -z=Z`nRNfCTLy}7k6_b9$WnM3ACx7LeK5P`;iBl_Yne}5AQ5{HlvR%23}AIGv({OHHgX;RlIZak -zPWr;?D{WJJ{)umdR$544%qk^Xoy>^Fa4^|X1RHy2ro!wB=V%XvRyoQF^>6Htoi&aA -z6V+Y;ghPoQn9%?gPnZ`n?Bs$E)&u*1dx9!MT7|18zAovR=yoOR^oZUoh6|i0!IZ5 -z1#oL_FUnT129nko6iXljqVUDgnzy5zOonL99>BPw4fU#+&4A`cb5CWM1Ys#G(>US@ -zb6hiY-7p;iO_&IdMyS9djCw%G#Hr6?$(T7}skBq>u~F|a@zLq1C17K=`3U$(;Q%M& -z#E#$&xm$(}2mVQ(Ksb`Qz?}g96k}Q*LO6pIAr#Tr3qSXtri;hWXmw`g&{ApeCkFYS -z8BfY6dwwkXE)YyYpnp18SHSFra%A??g>irPQ{NTZdQz(=qgPo{2PgOEt0j6x8)OBV -z?H|MuDoWvcL)0TyjTcVxA`KB%DI^z4Sv1QYpTYq{dT7^Jxb-pdTDf*cy;_(ZgE%bk -z_LBg+TJ6Oe!g*fVrs1Mo!rVmXX#JrPn@h9F}WI0i3t%2@|+|bjER{mMDSXpi9mDmK=L=<$mIi -z1LhVwmFUIEKOxt6m45eOrl$B_T~dGdfsn=kW!(PVKS|Jp1!!;zq?a@gxcB*W -z*|_rRm@C2NvYI9b%F~_C8PHM)9w$APMBI%G7R9L{yilM5<;WC1`w1hop{bF2B#?k0PtTj>;dHWP%t1#A2=CP)A7C;m# -zQbTKj_Dwhu7*KCAwd@#n%_t7V{*&PihG|p8dJTOzYg`x_G_EccR6=h7#E?R!{kfGI -z8YpeFBQ~^$h7-Ib6EsrCtzY+=rVTL`c82@nZB}WpHQX$-7*4(o&@bg*PHl2MOco1RbfC3QM_}qz>PM+DB1283~+sP -zE0I{9Uw0lf(xkJ5Gk>eQAE_FSFMv$*@lCK91nuzc5B<@8-pHLC6))t`j)ozwj#%#PcDIK1>mg-{!K9mNDkv -zKb(EKydZg>iI#cr=Uo~L+% -zwxr>=X*St3BONs(9Lnuji1?Z~l-&_3MonhQ?@$&=lUPy?N%cv}AgMk{>7|K>d0pmT5z^ra+JC}dO|Q6An#=t$5c?^xN@>JlB{-Zr4mm@BN7I7FIIu`LvtWWk -zxa(N(=*vB|e9ixX<}*`Nl{jY1G&AE+6_8nA(NK(V9C|{Jgjk&i4Y9bSCqd7g -zTuiv!hJV1ksY*O2im4LYpVRKbOsPK2RewBkrC05Qu%E#sLMJlt#QaZay>23%s_<*x -z;Sbs@H#`2xS`m^MdZd&~DYKe>40gk7;Ha1MZ2LJihB<2Ml>WO}7Qt+p<1nDL01go9 -zYSUjFi8&6$9MZq~OmZ|-7Tbso{b)2V*V@-~p)BMTIW)`08T}Y0LocYsJe)jN@}e>pIQEI2ek}2|j-q#;eVJ7!MAB -zBFo|+2Ub1{6Rm1pW@R`#&f*8O1Xgz)ZsV#=#hs-Uh9VyVBd*M!Eck#=jRLV{0S5qF -z0%_7>`ORH21bmv7Ej4jvM|qhMAm~kf$1tqHv-Od?Yj4@y2(RX_uRiJ98M6)?uF4E% -z2XM)|(V>omZBd_UD!MU;7^nZL?oFGURkC%#@BJ@2;%vq3+eVPg>f3QpL?i+CeyJ@h0qV+*QvaH_n!F9?hC>E&_N(V(4 -zISU{2{agF(!Z38S@*1u`wBBJA7oO<=RI{?hzDL3oo&~f}5R_**nIepr(1~PDiA{9J -z_=JU~D3+q==2t8<(JZjgY6P_JakBn}xM(#P+Rrf0FzB!lB;06rAdnx+KaeyrXUj!U -z_*05y5QAkwB`M75Qd)zKBsgW~bQyw@FG;YY#PX1`X -ze-BWEd&q*k6kzfhT8R0cUOhZshfofTs -z#Yj&9V@_Z*Aa*9QF{AUQkT|055eXgK3Zjo7v@w|a711`G(T(8APG~vB6}4$Ki3~H! -z^nz}Cu)oa+U9uvk -z0zpd3S+LxECiUA5bN%-aZ_B6dtF;WzsnxYc!*lIkVPx>qc?OYL$yvgR=4Q~{3d%2$E{%T;}cV7nAo#$RQJfHN~ZKu0g_l(ISQOJE{_WIMS -zSsuA*`)YgjZfrLfZ-dGC`SbiTTD#+0Iy6@0XyacTBfs{jl|>h`xyM#NLw@}WkPrbj -zz`L6j@<0L2ZqUQTDz(=&JBH>A98(8faiA+oZy-BOfm(U+f|1+6=Mj*v+-98QKt7F% -z0-Xs}1OkJ@yA_0(god83X#>3trgh)ZC0*4NsSVSt)YS%>(L<1_Lj=wuJ{pb{^lBle -zvg2UJ2&k#jN|mA@i#VmkXYWW+P|gA$)@=6NgAI+y86U>mCRXOv2jNStF1BV~3Wvac -zxh&2s3&ul`3^@*6{Ez6d93zSdAf}*;S~P|q^|zGI!DE1i}tcuNg*RilvIXhc8kCVCyRnWW;(H8BaSLr=h*l!{c9O9+@@ -z%k&BkSjboPlGI7#;FBQWet5juU@l|tFXSK(CFa$SYrsg;Ob0*UY59lI@$)njEMXkn -z2Nqk%*LS>WDl~f7W|-=yZ5wPRn)0c6i_M}DK5g{DK3xQH$v$t~Uk1d{m#yd(#%=#6 -z-}1hsG3G@t!N%`*FWE*%p<%#K@tSx8tklxbdFR{y21iQ -z1xaZ676YTsF#{cRFqKfMYUpNn6nJx*sRV}OqjQdj>qAYWwr+>}51Y`e6kci{bXLa4 -zj`+GrQ9H@$7Ku;5vUM>-=*YSK*AbzK>KOVC5?V!ceS3!qjSz6Uy$6Lx4wATZtJR`~ -zxolkl+n^Ht6JYeW_{u3H;xbYi1`9f0)*CE5a;tsL7fo -zYgA^6OdRIueyCAJw~3*Ij^YI-H7PL-W(E4!u;`B?jte=L<8u;u_pxzy`Tp~W<4SG9 -zJ=Un}HRdOW@r2LDyNqo^_f|~Hwspl)8&$RK=WLYkA`^%gCuU?=+D9iaC=CCOBNSjs -z)djc6@cD -z(rk&+Y*|RqlVI+LmV!nF3a>ncFN6uJDs){{srBJ7cL(>4BAB;kDcd&cco6^o4e>CB -zp?nkA!8}4_9G}3ItJI-_hjm0er)(8@!_8ZI9k5VAr0AyQpi7>^&Vxm2AsK6P#|~@r -z00?NPjsq$S=qy!)2&_v-Q8i5ThH)6Wd9cTQMsz>SE4S>Udt4S-r8*{KZ#YI=cPbb{}7seCI~X%C(|zL8P}MzTJoSW{)4d-)^luu~(Z7`+_IYxR -z8GHqij}|g|sH9b@T9Jn38jZ#y>X8~X{~KO&7#Yo))cH^q49ai!56YSb9UU7u*+!MBJa~&Do!Os_p=m40Fdb9y>k3Grpr4 -z|2r}NPOQHZ8~MiZvj|@CnopeWT9H-U+pQtDIP!|a5Boa_|4t^zMP6;L$;P2U)fiC? -z;!9wVGRdcuNV=(lX2Bdy3z=nGngUaqySw)P6x`&>j+^{>c-^~su87Iuo5fM^=f4-U -za7`UXi*CBYo;$%N)luO6b2!KZbl}lH|94l;phrBe$L&2aPTBN$ -z7RS!c^H`4H?!|oPl!HDD1}fRvddK$9H)h;VjJWUYMBDtKoro644{bjXkUz2gbj3ch -z%?w2ixYo~XYI&Zocpm0wIclJJfkjm#1S32onCx!YM4_IcdSJ8}6lNpC)Apk7m#pC+ -zW@&)gc->*QJ-O^!1v@K>b^oq?Kk1An(~csI*xQ}I@%BE^NmNdkUQ_%W@BmexpoXI7 -zl$T)NFfai@G(rRVGN$jJl5T~4LFWuUX&Qdc=@ljiH#ICwGe_zG2{{g>bB^^S4H!pJ -z500sZe&G=?x!J4z%p;)dKlTV{2+;hsD_NiW2JcIn`4f*ob;y6OWp6W2S3_zt5Za1v -zhM<3dB4eq(9t5gp`Z_U)W~vqmk*0}RmTKA-H8n4!fv5ZXQk?{~&V}b!o=1-GC9sG^ -ztw9%YQrq3j07F2$zZUG+t?CIH(8pTCMa7hY^-`FdktU3%SS;X4TweLs5;P;N`uq}F -zBg+M5yi^H~TzOV35K9Kww-i)&P7i~8r@Q7z5ZW_Nn++=*H5pW7q%;McaDfo$&n)&u -zDcG2s$RcmY>OR0{QWa5A0jnJvaK4xJ!E)zdxqGnOJ6P@?EDsKr&kmN)50-}q%NMwu -zZt6@T0;_|V?bZb&fYF1@EZc>kdYM&Ui&uwR`2dDq7SMK-WFX$=Dg%@|)2NLxsF$~RX)kgyTcl&4sw`QtBxH`v-eWTQUy -z@p+4F!Lx~51>>+_VAGahJ6E@TbnZsB^a4Bq(JT$Cnr)|1h~0m955>~sw^5({XdEw& -z)~;`^ZrVMZJ~$Ogqdk7T?jBSt;C#1WP3o1js7f+^r$8(XXf8jQAFG>T+WW0U&Pj;{ -zT_^{6PL0uhxfrS3vR8G`e=W-)wP9}_`?Q-MEKjEl#&HelJ(BUZFYGg?LHs^b{}2f@E8w&N$B -z@Vs*rd*KK3X@YD)g2TZr=F#FXG1)~NdyEmd-R?+G%^sPdE8$_Iu^T1mP&=$(s~D&% -z4-4NdD8Mk^D+L(h6uz$3zP#ojER{8nlp_wv%!+VA&wO7xKQij8;kVn^q1 -zPVi_y-d^3kZ?K1Q~5`8XNf-*?kRcQ9G7?M2s59L-msw!>Lw4dbV+*BzR} -zWU2(`osXNyUU_G6^7cHPzN%&HN5(c7JIdR$v!yTb^y(#>zNwDtX&2M0?XVcmH&ZVO -z$m??u4`*rg_Nrr+=ToQ{X=0 -zkNYIv`WhUwxZeiPkHs+Vz`Z^_)0gWk=*M%sznh1Ve)BL?N3++D>xakn=wtG6-RqO< -z-rTt9^*6A*9eq6F{de95o#OTRI(}F@m9GiDuN3d)&N~~--X6vIuAc|d+u5sf^E^`C -zdXMYtKEHa5l)`xwhkHe5Q-ci%8}@4;F7@vI?Lb&S_jd -zJWXGd`{cS8&#uqz$f)-gU-yO@+>y0+oW8>XF^P})Z -zIp)}mf(edck-rau-jo$XzU@A{8ZnW0P*OEz0}AP9FLsm!UOjN+DB!*+oRz4hnAG$@ -zAh1oV-szvIWOA`~4GZ~r(g8-KTUgRW6z5>N`%L^P(n -zEWrc9G@DC>KgDXt@DG9(}S{zO;{`vgz!1$2=FX9Ru`Q9t1NTv)l`Ay;ocYy~ -zsEfZC4}(_w-W8lq*X`?@=ib?aLO||rkOaJPfh$B&6-`kaG+R|kO_&WaR!R7jFO)_V -zzU3Db`njfqu#XF5m^GMggha9|>PvbU>XPRX1(xhkVV)00sg67D$cf-Gw&^s|;)*UN -zEna8`H@kRl*`|UE=PgrH8ik)fi`peWKj%4FNcQf}>$~Hzsz5v{53N&F^1lr^9KFXm -zhr~j>h5>wP76l^Ywx)3@vHXLwDJ;-sAr%aCsYC+91%`=)#$=urY%$OAWYE!%ze4EE -zTl?!A`>nC#!SLCM=^_^l(&dUfaAjJ8X6-FY)C}fF{XKy3pXHjl&J#bGR|!Jc*(yrv -zBz1Su7?B8pCANmI7&bK(OYsBWH!YKaxkr5c2U%#Ct{&7SWn7&*WcDD(X!38BI`}-i -z@An!wfwYio7I|lbIxKeBgvDK8-5<2%BK;+A;gXBD)ZnV;Z`_>kwMPBXO|yMFY}OU( -zFxPn7B8?-)%iD`8xgIjF?78956|yH2`saenwz>;08yHO9#g`+eY6gk=djDICo)3=^grnE5a`4a!;)l`w;)`Q$UL@vS*E -z5DU}NG++Q*YF -zxn%W3$o6(ZmU%eL$#pinGjGl&?TS_TUoLQdsITwW4ijB|a4Fk@d -z36DaKm0d^Wwtq#R&FPxM!W>EGAHqo>f2WMv?u225kKR;Vw%~*Q*dR!k+X;u6k1<^a -zQ>T&?9qUO}G7Ufh;`b&>)@>7`?-*ut0-8s)IR8$?cMh^k? -zM0CSaO|@rQT}RhDFjv0lW%0h@w?yxqWJ?E_jT8% -z-|+p`i#tH-Ixmq<*}CuXXCHLnsZ=aK#{i-z)g+A-;WrhNR^m&?SF32-1o`-v -z%Zja7ex_?Sk3%3hl`j!Qy)o-$;?Sf)qO|4#rbK2E178uowFs63PAYSTQFhP`7w}225L@ZjGsZ}SpEK(h3gHUR$ -zbgX|Xm&l;IT)?|XCkv2;!5>;D73eHlCybCM9E<&U3ogu;eDOfDFj_QkCP7xcNAbZ1 -z2RoQYA8}>27AcYy|F>LyMU)m@q>F8W6x}PL@j`nL0&$3v=dg -zN3f{19#C1;G)$S%tkx|UB47)Yuws9A7GHB(1U`Sm*ByAAKddhL1>xu5USJD6MbAeN -z14C)?QI9)8Psav`k -zD7xn0bZnj{N!KPLig++tw4Xx{k -z2CAOO_}yT<>RB;WL2<_yEl!EY7j3O>g;~UCtnx`qQ}o7U=|}LT)h6aSsN%PQF5ebv -z^*HQ#xf+;QnDiH}T0~MLO>IO=#6yMYPBSc%APQ(#Sii7P8}1FZ@Hq{p8!Zc*4V79b -z@M@wTt~RP;+~T8XITmzE6Z)&A+8YN;qp(Fa>LtF7FIeKZ!p}H^6=&YidiBk~UccSi -zU^ynoVeoz~d@MY^ -zU8&X(hm6BzfUW>46R(Ved+^}B8#Sden#MW|j17jkH4_c7M6>Rsig{fe?xCr*} -zqG|+3VhAI8mIl3OQ?&3+@_(?pJzkxI#)QbCD%vyH7c5?SU|BeUtLTMsRHE7q=tM;e -zgHI~_(;88TuWw%mRo6xRekE0b&(4APepneLx?7X8%{GFf_-LunE&XBw6C!4lfj-kH -zN{r*JB94}j_$}3ve7i06HQ0ifCx1Y78?odan#YU?^RvSY`|w) -zfuZGC@Ma4iHJ}M~S7`LXFtb4KG@Az>4z}^x;;3cH6O1j@!tvS&*Ko63-tPW>!q6(I -zm!`2ONh&6Ct*}Z(kx4L5@!|=>Ye1%_)xL=J2WlDgxR#Hkw>qJc28ytxTLzPC!W2;G -z9G$63sKKpBCG=^{@IepL8t+S%Z(I8laS4dIpP*7!38bG?n`0#!T5B~L7D1856joHF -z;o$F;>CxtT*5=Ce=wWEU@*1x9Nu5UFi{l5bt3M9+C4^{Dq=-d{g-lTjLPNf~dVBGv -z_E{OtX8TtO@+v4X##IMiILsG3Bu1!HkVIhe^L7^`Qs(n++a3uh$_g|TmbHAPvDAYL@!X^%D9D;yy#UJyVPsjdTZyGdls6oC$n -zXnpeE7HP(E(DnaDmW^{{%zG#|MsszcG=cZt(tq>mFKc8Pm1yE -z`GLl7%3CaLSy-G!#fS2G(LVCKt0!2_qh-VKN>KW -zHN6NixdaYWA)gKG%d^39ri^+YvM?d`Pm3lj$v4=Sc@_$+t8$)XFw{?rrPmT=K@C0@ -z{|fG*(Yb$dA7T7(TwVcum`}ImH2DmBSYi7t=&z7|OyWhWmq+EQ$B}-T?)aYA%89Be -zU$S+}4SdK0xKzzDbyHPj>{;+RB`*!OM3ql5d!2@Vt2ZzGvZ$CbqBlxrD1fb*EfrF}}V+1f#bF6>1flgAnCTxu9IfLff!CZzoZK9P%#oMVd|NS4^W28T -zn#H9IvW7vMgq1n&>NuO4pXRs>T+XIx37;3_iER-t)Exz1R;W6jPaIQ|^*=Rv?P{ie -z;=6H_z|)T5hb|)NValG-{gD?>Y2-7hdwX=T8i0-K0%dhIc*sc}1^<<#7@PhtOe4mW -zhyNlFS!T$cj>O2#i+UqVP^b5BjvJ8(*++ -zlhmVO1)5V&Hnp-dWqHa9zV(>Z{;&Hee}Qti^rQ-q7@feT;t);tDdNV#!yptdDt^R) -zE^Qo%T@V2>hky -zQp~_8%4Rab0f3(TV#&cAS9n)RCTW>3`BMf8%okViu_s!_RBSMTc{htsnTL_$_SMwt -z(mPwfx!SzlOOblRJi{*MMPgH?kdFt_ecfnTtdM!XaIeBgk7_gbHQA`w7t9Sh{f_;y -z(jMNgC!1bTbj&y(U6xzo4Kwp;MOK~kxK{qR0aDFR0I5;VaY+w~kn;j|i%LZ;wsfn! -zZ_|${^u&+pip*ktyFIFI2fdNw{He_%ql>vmD>Vqz6j_%Y8N`YT{ZlHx1;G22SUiJy -z1KkhALMX#DNwEXS6ByrXUfhU^w(0uR-EZaAwHxNpHQg{qoN3$+w%tZ|RP3*Aw`1V+ -zX=}Ra9v9#K4n*e!&Z{c=X_b}9i7H#0FaxU(##$?E#ORyFN~l$9+N{P&gJGsI*q06_ -zWx>O_*rSYw-$LnSg3V+rrmi`L)%aBqL)bECKZ8OPgQ=PZ$0C_HHrM-`^fChQ9_PXZG-8(!PIZ$>rnqXuctVm3i5~eMtQ7`2MNmEgeUH -z8^8WGW}+p-Kie_)n2DN#?ojd>GtnksU>V1CO2r~wXEA7xYgQMtRZ48qtheo>Q*{gI -zF#D{oAjs(iKBoXAO~aVM*9C1;CQ6I{SDFx87R~W9QKd&_n%DG7N{bIts~C0p_!)j -z&BOmg^qPD*iT@~)t1IU$$07c#PpJJIvuu~IyB}H8aHA&v3^JQ}CCvH&i -zN?YA*unkWgja?q;gSLOGeE?YR109<-*+#fug>8>j#~24BrrwyqEHP{4jeL2W2g0#N -zo9Uu1->eKKFqSGYgq{!N3^Eg%WlT8t4ER6VPkfvdKk{OYbF^tFr?`iUxk0!WdMX5M -zkeeOC68|$QB^rNlgH^QwKX8}R#p_Ua+oVise!={x>shKfm>araII0@auzVJbO>O}; -z#MB`|x0pPFj*`Z-1+uBJZt0kKaAQ>>)fe6E*M6S9RUD1-}U^~K`0!o9j -zfqzFcuuqyr82AUe7c2cLErP=n;Z}*VL=qOp!6ui3JcuOcF;0qL(D`f(f>F9Zs46}# -z&CeM_j~UFVk)ZL$Zvb*6Nb}13))dObXDAhFSj{lq>}-(gjt`p-m%k|@vSkH&BiQB$ -zoy_7@RG`d?**0fOG*o#>&jA|L3u#Z%~g`JyLAC?HMCM|H3jhWI|rn=i~Iu -zxKW%UUOrfF?`#luy=Tq5zK@dOLwE8qEoN>{m2Ud_t3S(4Wv%DYeRq7}Z*D&<@60$O -z*|V~I-&_R2W^r*7Zf@F_`SSzQl<3XsXb)v+UB4T18V|3P#kNcDw^xo;c;x1NdFiH( -z`xu?Co`aiWN(aibGhWS2C%bu_mquKIMW4KQdV2BJi@Ke_u_nC$EcUjpJZ!J-q?sYz -z4%G3eA8j74l}-ER>A}BaH;YAd(F=ORpgo)3%wM|?i%l5a&fcc*w%!-pr_Ew*^lv5a -zdO93hu3|smZt1MQiSDglx_Mc)XXgWb7$v=Abn|HTykVoj7dQ%I>Gff@XupFh0E+u; -z+M8O-$>1qyD}(u&F2(;I~Lssf0_V7EBh@;M*m$Za02 -zsK2EFjE6LTL{DdPnHkQz1={wT(!7!VzjmH{yqZmO?fqKqH?Nw{a3Y$tI!IK|n#n-XM_M@N!O7#KUB0lBCoSmR -zcqdQm-p7EQJa^C35PwQLJ$cS3*O^?3& -zC$4wmme~n?*0R?V?tC&6-XH}FrG@jkfnPr}Q`CykwiZ`1hA -zI|(N<``$a5BroUWWO_NC!=|ZkK6=4PbkSyyC($)A&rhP~Tk`6i%x9MY+;zMTf_Zq7 -z47IC)cajA6*854Ss234C$vWoSdvKD?hTR@J$@}JL5}f4cv+M4Q++<5c?+^QwiZDo4XQjZ4g84fMEyawATHopNYgcdCfdoH4)hbvuiBvbkVX1*x(>@VUAz4U=)@` -zW7Q(4+Wa%95+jz2ZAD<%iiQjwP9E#2Kw$2?li6sVoR5YlVW))s$4O0 -zHpx>&g5s1RrW(x%3>qu0dh6vC?kU|4kB4KDi<~iGZg2lnk(ybi9!u= -zDc5jjpzwQf>dCfl=tNOvI|u`lcp5eIklKcgj)qVRNoasp;gdkF+`rPAMMWVMtBHiQ -z{l}1J!9tqE%_zy&X&wh);Rs!Gk*-876uw|T@eHDTHt2o=1ca97AqbGh4OYjn;LdeT -z|KAM)pUjjmyCeFK!<>*Bo@N?G@DG9i=!UYx -z{4w+zXothi?SXc7yMF6^N8Kxr{Hc(DMG2!cm9v#9gEem{nqkR;txB;7=Cp%GtjM7J -zmY+cPeqE+feK7nW8QAdHsjDU_2XQ444I!4aKrs~q`U+Sh2K&qgh({zDRyCFtG^wU+ -zH08i;0v3m5JBnf$NNi~9mPyQG2aPb5i}^NV2jwza9-t|@1vy{9XfH~M4}L}$a)Dt7 -z8B@VS?qd*Tgslo;vMFjnTcF3X6^mV%)7;FLRZUVIOAmZG^dyG{7Bys3m%yx`8j-_L -z(rnda47d7>nbed$MKV2NI8Horwj;@UJQ`gQC8sa4=* -zz;p&*vA)a07x`^$r*=$;-wGh4X?TjS2O6WA<5-lczN#|nYmUcYG@H69vVcX8|0a#p2H~0N?s=Z!=;_qblMn8Q#cI|#nI9!65DVKFX6+=jYsW}p& -z>J~oDn1o~P81d*IA*|#4Thla)!fiE-g(H~AFmT~|Hb|x&FlbIEa9tM~H}FsR+I)sy -z5zY_<+JT`e&^>kSFMH3H`HF3ui{)fO1K}=}1y!R|EHjpiWx4pXJ-&014rI6Ba*+JW -zC&N8?nyL}oQH}jaTY<8`HeUc3F$@i}YOPi9h@>p&Wu?$Ndbbh2uNWSgqR+fKpvL!8 -zOvLxAD<_DlX^LV&A47(zGz#2MvqIm7H>y(8q7Kz`YKN-h`!s;5h?-w?hTng0|H5F% -zrx1v0n!4&J7RXZ26&>}LA&`G2-&9kOj)EYky3O-{_xYxpV1P=TQ9Mv}uQcY7#9Y>6OGxaDe8bl|c1fnyT2DfPu -zVP_LO8odO?1q=+(k3l0UU34a6$gko9+UJKx#VCzSw%DhWrdf&POd?^l$ddUQmiMRn -zCS^5Rpo@BowFD*%e%v1fg89KS_>h0XoFYAh);lbI#8c;o39`Hez2rSV6D!NSPHe?3 -z2g}H#&6g=^qm(BU`LPSb4OZiHT@|XKI@#rX9ES}FOao%IN`h?-F>BodZPqtQ5Kv-J -zg_+PH9`OD}2Bqrg&@hIE_SN;!9eJ0x`Qjl}2knpd>0tKp@R56O9+L)P_wL)=TB||5 -z4La)%GHg}HILNStHODy0uvKl)IUSK<3wGh}WY|`jwIZVyMuw&7n&xOCZ+5}+WmWaR -zKVkOAC9Wc27P_{`nALUL(R2i)1f{}qjuU6UOPRGzWn<`yNRB1SM)@WYHY;F=cB9v! -zZn~G#&Y-Pawnwaep0<5+Xsl?rGi-O4H_N9p_%%m8cCWX)>gbByBR~7M2fi&0{q|=E -z*4ei(%{U4^jMCh9l~3unRm+r5V_>cs(4_JF+kJ{)IRzD)G*@6u9|iO&m;uK*G9@A> -zeOD?vpVGAWlr%7DVuC5p>!U|TI4{pD5p{~|XtiG)#Zt_D;vIy*y7A&p8f=@)3N1nv -z{i}!kTlrX9txM3}{ZFcn}dgaGb<* -zG+_2uRf{Nwa!ko#Iku`>SY&cU$zhqipiKEh$?-2F-`G>Z{T2@g8ieTI_u#91uD18R -zLV8MbEjL{TpD*Zi5 -ztYcZ01}3QW1JaW`0UapDDJ9DC)^@KU@<%H -z_kJ^oiuYx)qi?RFDq!X<6AWn)S<@|2g_|6nSP06h4ucsKR@E7ldEsXecVgd-(Xg98x3nqhA>-!e*6H4_YM5C+E#kKdC!2FRF^30Mf6!M|m2>{UBey=2VU -zL?g& -zNt&s`{w9(;(%!7y?YCi0zv~KqM=(ST5UE(3&Y2#GX%H1=1LAP>B*VZ25HOu;8b?HJ -zuOO6(uBybAw2JZ(b}&r^5k2<%+K9PK1fyYn8=P|Q;`tWt(r#K!LvYpc4pFiA!Q|Dd -zUw6fz);m}=k9O8c3v~8O@BxAZl{7;UOn_JDI`1dJ7y$V4_RJ@?$ -zc@kAUBI$(3pM;Hm{OpPdGKc)ALI~+}9hE~Hph4P;`; -ze&xgRx0A&ZVbQHdxMVNragphciD?ch7>~B0DV9+as6}N> -zX2$o=4(ZyyN^pFbI;H1;&+Lfc&FYDEFng-GQKM`BW?vlJ3S6o36Cn^rEDPGO)z6Hh2ZtLIw&MY(32=qtOQ+1P3CkPp} -zY>#=Sr}L?%I&!|+9R+sTpLhnIm6fH2A&7-o)h?2avQXRbOP -zhQNwrBBaMMisc&*Z3%jA1|O74AkARXsz -z8{LH^sDzm$V3^_SeG3)y`&`;OymkY115mW^O)VyZKN~Fb -zMT9wZVixK#zgFLFmSvEFCBo+>lM{gE?Dv$oCD;c@RLK>$Ww~mli&!j{Tt`Fg?XurP -z0P{|Nr@bApb6bvMYL4RQwf1G>>#oTzY+{rh^0Hf@v(ns -z%hI{1)%+gEr5%8Bi^HE+M+#*pX5}eXGotc>aHaT*6k!6uNvy%-&_EVWJ%YhXn -zX5|hZacbD6I=0rBvyg(##gVYkpq_c;_R*mN4I=zWOukYDOHHva0z*Zp -z>&#=&@@SIPhO`AAC0dAd(>A|11tuBQ+1=7jH7kfG1Je&Z$VwB_(&0b&T%dFtpgqqs -zFDbL*n+*IRy05?p#9vTc6vIM>xT4_RW35rF@>aVyR#jbb8mxNixzmYW2CviZy8CiI -zEuC#Qlx|;MBrwwNi%n(`<9$u&mD644ojJW`aA5s<_@QTDey-bVO5?L(F`xD3+4FdM -z5oLGp+M;tle%(B+%iOuXUzZ6Sy1#9H@Od8&?mf=E(RxOn^75=W@81=7Q*U_bJ?rzc -z!PY3l)rgEf<_$j|B1n5()jte4`t$um2Y-_c-WD^wB;P -zIS>7ho8Ig8=HYb%;>Q?0%=OXi)wrGw|MALHgS1IsJIj^gr#=IV -zd(;IGv4dbzOPC=o+fXdUMtB58(RFLD)z5?~9HEjc97*!Dlw(lly@Ds2&NxpH3`-~Q -zG)8RO4>dyrD~M`f{}@bx{{?oa5>I7nK#%4|T8evHM)HIkYA(9f{iJZk>VmH71P2~o -zL1lunWW>A%_Azq$vkYJ;fNj+qFz8 -zu`Q5Dh}EJhU_w?ScCY`5V!F@fvuKvZ-#`nrt3|N#lg*ri#J*fB?0FMkCD$wOuC>qm -z6qu~dJg&WBnq%0uiC*E;s_wu=Z>Zr|a7S2OX@WFWZKCb{TO!p<0(&X~4PgO_7X1MA -zfI}O6(z7af>2CX(c_Iq~Ra>69pV`PzJ+E -z_ydo5VEVq&e4BI=oCdAyi=@3S`>8g}7BSt#W_L7Q&Bs^TV!4&*>$B9pe7X$nn`_B^ -z*Zjon-H!b0=j~-ADL2x17GSb<31Q3=jTOw9~Aj`F}J!-rmp;4RnOFG=lOc{O3LtlE%oB{ -zU3Zl_KH{B$hVN1JfDrW`bp;aBHZ4=J6&22g-5Ik)e&7j2nnBDRN#L#j)Eg)e);S{m -zh;c=-M@xzc_dAZ|OE?#&eqZL*UcaXIs(DKm)4!VIG -zG{>%$K3z9z{ZLa>gGh!^JMvWB;)C#TSMJFBXla;_SW*XcQkHVKK1+L7_BU -zXkf;~BAxR500+%t7^6Ic;Dvzc2g(!LFn?ef+5(dXxYES&wnRl8w}wrTa#3QL7+CU? -zoMzL=cX#{7Y58?Chv7oln>vLeag!D1KEU4B=@|av)X3W>-?ks5GVq7{ns1S~m~~vi -zBPA}Djh0(H6)f-;IGRmhnqqkSNlHt1w~5~i9^PKjD8>YZ{jGd%&UgaHZ$O0^prry!|-r@}$v1?g?nMymZK+xGnSV|{lKjNb0$G^+?jP(`|7GoZ_k($Abkz5)ZjC3u7Sd^kSrX_>1p@(* -z@;$hHFq087TUO8xQFb-NpW$u_RYG@uknG&~uXi7jyis*UqP^EI0r@!M{0%tTuw)dj -zP|BxtMmGm>w=$+)uS;bW+^(*Tk8c0s?P6j3>Hloxa455xr)r@p -zsmu>0LYN~V%Dcp{>cmrtss&(2l&v0j4mSKFoO_t+LBqC96@Dz!h8?rR7$|hKPZcki -zi|=z#7%vJ0*8Q#p%-4Va518I?_!^p`f#zh!MJhNRTuT92dBE1!4E!-iGNW -z9PdnIE}?$(y(kRwC0OF1y@Huu3&J9p!>NoW561rGH82mdQXpJo+LzD<@lHWZ6V1^T -z%RwX#o4>(Q?4}v8pYOGZL$$znY)P?$P=XI+OE#f~WP-`y!6q#@uoEWfB;|!hC@(-< -z$m3|L_oCbO%Qqg*=flPn?10 -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 -z*h&s!No;=h -zkttEZ7V2A{ZM|J@FrZ%5d4mj_C7Nt*2tBi2TGeYhg~fa^UCT -zB{xlUrh`0V;%TQD{2vxv?vz7NX4y2UWBKq{en7!IRXxiC4ovPZv#Sl|YJ7a41$KIenw%(p2 -z+I=oUsS`c6J5e}?e_DSW;mTDR!5S#^g)Wcih+^pwYdU6QEqMRWpbC8Th|SRz_mdEvi2$fzT4u333=6@wgNK>hDSN`hBtn3e;2qoE=e#BUH@ -zAC@VH(P@f8f;a7IS#Ht}iA@j8GKQDER{7!G(i|;ge=m*1Ag7 -zw`y!1nPY2V7v)q+$Hlh?@a^ywkr!LQhaUD8L#p@!K+T@A96nmHueGfTeieoE`U;Ua -z;0`aR10_6hk&1}zb-*y@Q}1rRMF%#KJ&uu1D7ggeia1!#OeYm!}LDS!!`|hh)qAlWdnK{ZeRy1 -znSZbn2L~&qQsWBQiV0?!g^hlZ2sOV)mk~^B#Tx#2dAcr;4xo*U!4pho!j)o~VKAO? -zhab=U>oFwst3xSAL=Z$X7R_Y -zFznB`7THmf?LWvEqFB~3CgES;t`|%`pK9yjn0%G<=p%Ot%6<~!qypNJe_ED82<;M- -z8`uJ-4QjkWmRCQnU^zMo-Q^n=S8}lOf(Z!CF!xqdm`QCUMTAjp~E=Nc3KF}S==UjLE*5`Mb -zp2)`D&yqMd+Nt|k<)|YaACHz2RVGAcwxM{cr%GxV`jYP0xkZM9jO46WM1(TKgvt7|g -z)J!t{NT|{zs|&fXju$BHX{3bOc1Izgm1{a~jr -zXF;jLhmB;!ox~g=_*cE)O=0SjJOUMH%_H?ps$Tr2kg#3i1{;kfQEqj*hZpy8%tJu?8_HLb -zfbCEv0{_>lxCsI*7j=z)6#}ZuL%(s8AF6Ff*jzRyZz-Do6`D)8K^_198#Gt6iUbRE -z6$n5(6btu}gEvbvq!5ufNL3*)xBloUe>j5_e>#IdK%cNRzTDx<=v)Zps>KhjKvAdW! -zzFnWLQ$G>>wfJAVzBc^Teh(iEyMjf2g$|~CLI?Z*GI(Xc#LKZq|AoOTBoO^8k*f?e -zba)?Cm|r+qdfV;8W|h4t?RIC8KAnn8&=%(7<4q!x{09F0EnBgC -zQ2+PEu|La$+=AGQBX}nEj!d{p^N0?vXik@T9&JUTD_pcT1ncIVMOd$kG&^^9*bylF -zXJG9u#gZr9zRxJDv+e8dRuI*e6;1U$DjODKW~c=^vx#SWs?AizS2f+x!hHz(U&7)jju2IakAZfO45-F-H -zsX7cO^+$MpRV9Wz0UM$U6Y;A2Dw15biX012chGZ&V}g;ONg|V8QfeA1$8IXXs!$H;OoP^I$*csH79!OD5N4FXn*K3K1s=@Po;O5_3j@l?%HbPE>nogMo1}&m=Sw1r? -z-}4-Y83)Lryc5@z^TLY3pl}&3SzM)j)Yxf6F)(2QG-+Ek2~pu4*NLVj7(OM1@gCDE -z7L=z9)Ekj9UHu@1bvlu?DrxmJk6HmJJ-WpVN+}q6Fyehs;dL-t0#6TpO~H`-N_B(4 -z)?hZU0%lttVSyE@w#6*dM{xX5Q(YS?sC2M?oRF%Lu7;LGEmM&^6=}S^zzV=TD3^Yz -z8NOjTfxC;|IrXBdSZ?>4u4j|iyV(^^7M7wj)v*o_@+DU -zlWt^nIFuU@19&E+TaV|6o3dtdmzDW^lh3Mh9O$qehQBAB{s -z0VJ%6B{%$JKTeA;RNB9rT&Tr#sJF-Vx7vp&Y9vY%u25p!8Rs-X5uy=i+^hkvu76bhuV26^Gt0w!u&?Pp>GW#TJ30_z@e9V+}8AzXNAuJ*Ds@ -v!xECGti|W3_0J|KtA!ZI>. -diff --git a/components/test/data/adblock/anticv.txt.gz b/components/test/data/adblock/anticv.txt.gz -new file mode 100644 -index 0000000000000000000000000000000000000000..a7431749e274052313f7a844d94a5910dfc60539 -GIT binary patch -literal 40327 -zcmV(#K;*w4iwFn_7II?%17U7-X=8RSba-?C>|N`2+%}T_-%r6&dt_T__C>NRyR~ga -zR$?b(``BxFl5DhcACN>hA(8+?fPK-?6YRfzoc*;=Gw-og;I(zJotexz-#DhFfVn>BHLk?Nh4f; -z(fJb;@WMWGVgdC9T#LEnfnyXvnTN*lMds(pg2M|+IxNu610nr54}_fe93dSI^*cV( -zT=yIka*;VEV}1n54;>~0C}!pOnJ~gvWh!aN -zo3UlTs2EZEN*W-}7hy<%r92z3jCsQEo0Y*@psqJRo}P5}bkrBBhd)02;ICQqxDGl0 -z4W4xGb(sewag}t_Or<s2F2}I|>T{-7jnh9xkZ_8zi2)M5T{@3?E -zo~R^M654ZT*7tn={VMJ3saWL+wz_wq;soi|V`0n!7K_+E*6U0#V0517zU0QHCO|C6 -zV$<2RC=i81RW{-=sdB^Ydvg)&F=-!Ps4QU8mT8mLN*&k)`-sKRP{D1ATFN1&bi3?K -zL3b5?^l`FfLZSO%#%B|x+1B}2(~3{>9y(C>ll=}>uQ?B}2eraU6G?azw(Y4R -zX7T%b*k<4P9lfg)vL%ZwfFcAvJyV8B)?bK#f2Oln4Ssyk@i+)0B_;PwKi559WlEVo -z4ClE{l^vA5$Y2`_W`=4e)v}<7j{@xyYxXi2mKOzY7+=Cj;TcjeQ49Sj@5f@ndx;G~ -z=164>V8udmjKUC4_!>jLNLZ1DNs(|za|P&s|u&fI+($nrt6pn#?_J4x@q#IYKq#m?GzR5?xsG3WvAV1J%}V1EUE~F -z!^{qxhV3w%#AOUBfz8vzn$~=}AKu>6PYq0M^FB_|Cn3vDpi?*lloD5-QS8bCxY3}L -z7zg{0IxJeU1Um?e6e~o35we4|NK{o|RR)?gr1hK`-awrz=ntQqpl^Zr&s8wIJf1U{ -zw`5Dls3hh*<^dB>u7El2?~x?`MBIJ|6>EMC^#Pz3>EdzUVHF0qP=N3EXQMsmnbS}1A3Arv(Jh-b%}_gj -zcIL-S>vKn^Or8bIFxTW_o-;W=?~LGI3zQd#WNt%7aFB^jN)fm1f`0N_z5)G?KK0hS -zz&Q^d8fDfg?<0SHOu!E4d`ZKvH6suUr_cQw{O>Cx=CfOhDAih{Y_E!hG3!q%8Pi#w -z&gRkKUCDBN5v)6-gC~|!at;)epPHkluiqYjH+}y6bb9>V>2$Q)@g<0QIlrq_dyj`s -z*PCWs=dsbxV&U|?DGT0Z3TL9Mv%B|b{|n@i=H@#-V^GG2kSDyu!c4d!$4b87?LdLC -zg`?)ToM-D(9s`qAb{xkJOu28^T=>;ouAObCn$C5{2O*R&OO#Lbn(5R>p_(Q*gWFf{ -zRNAJ{b~IUW7DltLBi2AX9g3#~7uAAi8Pag`wg33_O&@aiwE-dN%vh{>OZbEV&Ne7S -zDM_76?uXYU<^Fz01R#w1KFpM>G_#>rw@Dac(e5fmr1$%S!Ooesa^8)(oSX2$w^lSf -zbpFlRAD$0pDvs3>leO@mrStI^M$B1}>3o3UYp;voAqb;Ac$Y~ZCS#QquiReCGw0FX -z`PJuOoPDd!I_8tDgk^If#}3PlI@~Ji-)+~lb2d7^Uz6bOh7a)70lQu)8d(Txe+c*o -zAo#9l(3y|vPi{1?qzIt-;_AiR-%e}WUpGCLngWo-55 -zHndZ?Log^+26mpfgzla)pFen5W`T-*9&B`yorjxTxwUblyBoKMZId9vWVFWCMR_Xl -zSEGBy2J#fGoy%Sbwv&!jirKndF#~;$pW&YwShyL8iq(0~DIX^@r6N$M<$87A87xkY -z7yTcP@t-eT6BY`+}l# -zDN)IUCqnzEjY05|OIyn&=+5xl8D!&~e^K<0q-ZK)HMzP@)7!|{YF7hhgZg(7TF9CD -z969P%UkCV3_~K{>|JEq2{BhCAN)hl;1dN-B31ONJ(EOe33>YXWfHU_hMXN^_bBU$b -z#?ouB^lB`6KXS)+oP^xz$%2LxdT_{O~kn -zfm(KIInwR+HPcg{qjRn2^wX8g0{F#;33?#F?1G;uh!zOKG~=c)fqBf2dQM?jVNTR4 -za}DzlPQN1fIN8FdTjc{g=Y2#?peWNO6fZN>{HB)sTQT6~nWtD5fH+Jn;f`E=gpF;_fqsOSzb4Vd!XZA -z@|fLL`Ht-in~2py2#ET;_D@-W0feo_S((- -znp;2Zq+H~h1|S`bN1h#N7c`8>@MGogmCV7L{-#DEokUEI_Fvjj14eP8-6y5~rtD%}M3 -zuV6r|aSwG19}oM*44c(tJmZo4^l0sQ4zk$f2 -z^$VD$o+~q@M$1C;m@74pd9zRr=C?Ie(H)Ze5i!V>vF@hO51_&zqefLv1?y+6iMyV+ -zeHE*0>|}F~8f2eIP?5?XTF@H9BIB|0nc?I_(k;9mJ9!pwom)GuPKL}|=MQON?`CQy -zS#&Wdw#hMuM4I>==>c$?hfw{;kpNDuDMQZeH -zkBcBY=MT2d@0t@H5bIB6M-Q`L_6szE9J)%6PEn73$EA61_2|}Ol}$PI?@W3Te{!?-G-Vw9 -z)HIhaE3Bcy@rA4HF_RI{v6(7y0r{}pIy$WOjuLCcUCzebB;+QG#+Bz!Hjx@mZ?3P= -z9$B|zjUBWmV)CI`r0F#q0ej8P#a?@(Vei@w$KJ+1#cD<`w|)G7ZDh^cayt^Rx0VA& -zrKo>3BP)tUbRz>%($wpAe;|#veS)j!&2A3#C7cw;AfDU3Ys5M(QnK1Bu@r#`$IjD( -zVY)hWLXO*#$Ijl!MgyVKn61Z7G4XtDt=Ro4TG400bSfk*P-rAM&z#K#_FMe)4|ezW -zdrtM|;UUT?>)tQ4ty@g4s=WI*bn(LaAKa(MA6G}~CB;=VJlA7&+T*}lyAYaDbW#+) -z!inTTVz5ZyD^Bk2wEBnu;+wKU+yf#Vd$PQiE7);m_@n1zPa_VJo9o -zAIxiSG^~}NS*&nlAs)CtY^`D7S!_sJj`7-pfJ<^pX3exT_jE>b+tRC;rCJJ~yCYi2 -zT1xPpO6vf(s8Z8hYo<@F$6&hQM3|nI&uC%pliNyNQ_P-%DKE{VMmE;=UHU9ZnV8d^ -zIhu{K_0chq+4R(|8n8!js>1`F)?RVTD>rC?YcV@BKhm3TT1OK-a^Si!7gn?3nijPF -z>B;oNbCiL!aMk?$jxo<3r=`Z!Lbv~c#g(h(9VigwKvpWPpJy7Ke5tb6F@6PW=iT?9 -z(*q7_`eXN92Brr;F<>NcpA#E5<#D8`NANsS;d#|QMb~ThjS>VqTiatlE!382bs%Kw -zOP`#=U*Ecbs)CR~9@|R_}DI5lRhtJqjmVQ8sg9m)wcy8X>MshFj;)80q!YJMWWd -zIn0epKd9H-h_4O$QSn)TNt*iGl#lnf?gAqPu-RjnCgl8r4VPn{Ml1qhb`ddZD6bts -z2dLy+=k4nUmc=or_XH0!weP-*d2oOZVRD^vt5(W58yHLaQ0_G -zFwMCCl_A#An%oAU&qLm&2Dutt_(7OSah*Lah<8o**NC>k~fgS7;1@?p{EAcZS -zlT<(2CJ1h@5PXSu1Ao-wl22x0^^qXTqexBg#`hIP5+0qLOhy!e755mw#XHQUxJL-s -zAQ>p^*tCWP?nFYP7c-#%#fTf;?^R%%<4m;D0ytT+Iz$WT^4}`Tm6_2z215 -zd}X2H4f)b{p -zJ;olf{ih?32af{wXc&wRb^{g+M|?Eg+nv#5|I|O|YxA5*io8c~9#vr4PpQ)F$a^&B -zhD|OmZcH+_0cus;l)2H4yCDA~pQ~woT&nFgXn%>R_35aMFFjrV#MI`8qMA=twLTeD -zfBLEZ7*zE!s?G0NH6Nt_rTXQEH#gY(F9Loc0SERF$3P_MQANYszr^t`l75n;o$XYl -zqfx>`lK!D=7y_F?)KCQHhw-k*NYZV=vr9fDhz$N8>>TYLko3iDqc7&QNQBXooo)NA -zZX*&-k;4NtO-h$^pCUg00QZ>TW-gilW0f+)^g{VCqY%V*XjhLWJJlDqD1XlI$di*B -zp9Lj^4?SJe%F|WCw5K+Dw|qH_67W=oF%OS(RRT5Bt?isf0tLvGs-xgQ028c&AXxzudNCqu$`k7i;uQIV2_ZQ9OJ -zq5>XIR$w7ehB<&9$_5qPfm_ck6(XJ8LE!K)ZYUgVE?8iLI@}BG08#7N2Em)UwMotc!*cu`r++D -zEhLEi&{MD2O8YErt%(xCcO=yWPzcf!Xd$0oqJW|;pAJ2S{Fa=wxIe_3OXBzy!%t`u -z#(9*mm_;v({o#~>V*mUhVDx*Z0!j2rSy@CE=D?T!^d4D>K2?!nb0sN56sParzW+cN -z;oyTv?E=SZF=upP?hc2;)#%Z1NEagBhu{*1XD4kbrjmIghzRoa^6D8TY&G*M*)VWG|gY8Dh7+aqZE({mFr)BU^)aNemjKU$hA|y@cvAlLK|DA>wgZ>gQC6zZh;SL -zV~Y)f*(((D5uHDU|AX+!T#E57h$F%>@z)85f2?>AvnxP7b<%?Y>z%=zn|iq1!#49DM0^zpfqdy4eSb -z>aQQ%&wlDo_MUe8(SWZZ^!q<|Cr`TF^@IH1et**awLAIiLHD@(aqXb*o0qw05=2Zr -zvj_9m90VHrXlgiY^kWqq8%G1D2aoNQ2y*l5jLRc}_BIR$Lwj9axr3mv+qKgAq=CWl -zxNA_l+Cq0VXxhy*0NE%S(Ghj2jhRpuRo?vmu -zY$%b~-0Zm1^xjx5!r5k=>=hIGeV~I7rpIvl*(WAFK|g+c)rh4liI;|Hsw{!oRtxe4 -zT^JJ$=oAuf=unLW(6U1t$!s0VIJBZNj|RjXX~Zf3jT3jsLWcrL;02}@49p+B4Rz~5 -zrI$;K>sgRG=-VdFzz4xPwi2>pkYOTz3UWouC21rx2i=(DYx3o-O3bzRpg6qvIxCt6nmFYvFMjj5FpkW@= -zz<8q6gZZ`s*bCwI6=?rbsj6!Wp9wxDxD(qcCH<>Xp>}+#!Bk&yqd2vJeKn@R-HBaj -z7zU5}I~tQ}Cze>lJvY(HszSr%TTg=nzxN9*qwW@(?Kg5|H!YaPVTfr;Q{dE{{~S*w -zKwWEYEoGv~S~F7}jsiXyz-MGo0gg;>I2Kk0FpJfXHgmy_Q`r|3EZ=~;9QU~@p6GE( -zb&svDXv1cvBd7}y*)$vM;sIlDYdS9r#_@ZBo2IRq07&85|@b=ykV@Xx3?=%8t%q7W3{|!RP{K3x|dD1DlD-SS2!%;oKvw -zaE6H|n0r)XFnevu{loiI0$)A)+n)Dzw^z<*P+>33#Z67YxcAPwZvo4(W@~|qSf!)W -zA@|9jyuCQj-kkeAXT=^}Fn1ixy#XHsTZ#J*hFoH%ZilWj*Fm$APC$z8t#Olt{g%b& -z-tegec!Rk{l*q|Fb#jFM=B+S@qPccr63bL#QM3u@q3Y=;n -zZak-+$t`NlwUBS#oIbIGs|8Bx7Ok1Ce{=~}-8*ZMbL`Cp~C-I_uLW|mGhm;*)tXC-qyUzUyINc}E&yfm2q*4kVewp< -zhWQ2|Ddk#deH% -za$adp)8jw7N8^pPv)nl>u~4nxp3Sme(pEc06r8%mTV6abnQF&V9YCh`6P`cb46kC7 -z9f9|Kd@fEn(7dUBLfbHM@XZ~XE+^;m)iVYM1xAX;rz(Bc&dweBc(h4iH56*x)BJ!# -z)ew*LU@_4|JnqDAWHRbbX06K6O=6vJ*QJ5Ui1P|`)G*+YXRRs^#1g9(Jsl2hIu+N* -zPF7x?R`&a3WmsYr*q_%?Tq;M%xFM(qUGx(N&3?>jJo;Iw*EoSpzM|8GWAv!(gRKC#el0ue! -z0S&N;P8rP?O;srO4Tj5Sq{HtXtX+=dqx{w2QOA}c4Fh6RE8re(O?Ps?S8Yd)^!=PV -z?-)do0iR4)C5?>b0<`T*YvCrfe9q8UMdFhDURfZB@{{Rpoc5I-UAbnA^zJT$ZilXx -zjMtb3`CWd=veg?-4kX?#XIbHIg*#82o>@DOXj -z3_83eJh^7fS)=L}t;lPacO@}FJ2G%?)67yK>JK>;eGnoZ4Q=?J_AfZM#I3Mi+7W8o -zoCi%1MU{70ZHj;H&|z^R{onsl^XMFcp&Jx&LRoCa -zJjuB_3@EiUu&v$H{3!L7_=KFC{_^Jc(+{_u;gppXg(3_n2z6>}R5s2x1w2}s^7akM -zh@!20D^R6mtGz?( -z_D~v!>DS{E`1%pQGWS@1&6)SJa-Ng8d4ApLRv9)^Uboz!nPhkF?!(hp{bh^E8v~PU -z=WXN~$=vBcYiHIrIwXS@FYO;Kv9kNPABO9#yNrm`_`hW%QdT)A3J_K@CU+q@{xcx1 -zB4HdT^5+Cc^jly)Cy*mEww_i^0Xgdz=iBvh#p>_FoNbbG|tVM%giPxynUCY_K -zEPx#-I!myei}Dte{>e3kJB2djBZ?N}tbbZfAt#v<$B;tqkXg8`qSp)J+#J&CZRh3? -zxkGZ;gf-OTf|lH_8TcKT$Hi!B#+RjP1Y6OOGwB+q0;Pcw_L5r`>CZaBT9)FHi+}2GTmWP){EMK=;uj=v -zrV&$?454(s&yi&renp4s+-#pBUKqw1h39NOW*!Db|S0Dg- -z63`JIj~|~`tS9b^`PXrLDStbK%a-xYd~|vEXTv;Q6DHEV2Ke9Gu;0w$478iMADZ0v -z{^zDmXTU?QDH}sWpPhQ@!Ls+2aEaqA^uVeU4!78iul$y%I_`~+o*#%aLmZcbAszH> -z?tkH*X~<+`9c%xYMmoasIv7@`qB!nZNT4LBQ5NH}?C+iP3s1aO9cJ;d@=;weB7D(l -zJm=$@223jWoM(}lQoq>LQ#R+aJ{xr#1A~irPgn&9f1ubhis^4Yy!*@BFYjK@#7KUi -zREbi=8YmL!M-Q~RhE_h$5-t7#1F*WZ6wiUn6Aa6Ke;lqCUzc&wqT_z-w$N7rsUFC3 -z*_cQ#DZ1pYU!CF(xf%1=z -zv5x7AL*A=-x?;?)`<_tcomFEvWqw^7cvJKAx`$|J!$(oR(_SYa!4|Rk-X6TBW}S(t -znhdlzC -zzRpTs_Xu7U47o{zX`QKAK9+y9DP#GufhNOtQK3zI657q}j;>?K*8m*~9qJ83`|(TM -zG1_Uq*xl=%eS2AUw9<)ZQm|114gO*rv%^F3O;$PEPHsdOJJ(x!tK)maBp!8n?<%13 -zs$LH_I>Bz|5vZ!ey~!TN8}@_`8o>)SsK2E3bN}wG&t5fLKr&sAkE>sbzyu1(6BwHk -zhg$H9S!cRx_3#i6wq8nShdSZNn%`KRXQ$ye>CpSvozSG(P6FN!lzC&@!# -zh)<^adVq`TPtcG98cusZ)&O4Ul=(7H>pDT*%YnTH;I`?{yuAi+_C8|J9*?a9sGn3g -zBga_>U|&T7uLx-C04ov}=(-lL{wvWWu)p -z@R4$l2eaVT*Q^F3O@wpy5a%b_tW}N}33}ZVFmD~dese4Y4e`v-r4}RWL*ZO@(yJ?Z -zr%-4ES9H!Vd=ZT0rH_^#pC04?V;W#IAOXu4*WbS?qFW=p0Gk{Na}m%Lx(bscbw{VZ -z_#7GIUUv&2`E0_X?G>NY7}(w?4y*I^m@#{w0=hP!lJzk}2E_UK>Ap=#xDIPQ+u@PT -z{bMS69)G$90P7C5_}v+;$V`q#e3q?^ZWjISs6^AW8udWaYXpvzBPz+44qYkk!R#OKqL@!m)bS+EQUkS0{%qGZSp_U{)Fz -zS<`9SLSl7K7j!hIv~KYT#-5Dy)VEysM@t_thoW_|$f~TlMY-($c`h`^31a+3g(ccJ -zYvg>lWAyUzdGMsoS2K41y26r_M-zfq#^;ul7NFYUd!aJvC29BK@ERE60;93WD&hFr -z9%IO$*y5y&g~T&Ui|LYTAsP1Gc`BZW%#VWCu>GY*OD?ng4F_DtJb$?fmlaH(Ha9!t -zbAb`oFv(E6nfyv)mnEkI2m1{Sp9qqXg4Gt31g71|2OB!2B67m`KTYGo5G2uTzGxnL -zJbawIk8S&tB+$xE;VUzF@r7jR&JFsM6ZEh6x2-x7}{^eoF(6gWlcu`ZIh -zbtN%FkItQ>dWm|_ilkk$^jp)+08jVe9bhVJ3ZHm!%g3H+^WXy$AruxNko`~1U*CN` -zX(d-6|HVkA4GWhnM9x$s-()_@EX)~J -zv)`TUn|sfog;uN8d_$3CR&x+=_pq6S#|X$pXUIZ3GVs1Y?z(`EV+ib!kOm_EtPw9{ -znmN{8BH*`fMbK;~oP^j(tmqF8x(#wpCc@?yA#w3TVfxN;nEMxf7?oW*=h!xsaQV^1XkqkZHe$!!~tpZ<0 -zA8T$Geo0)2L7nvEe1Erbb%ktm(A^L$DC%@TpZ$1b3cshsLxVxn+{WYh?Pg1D+qq<- -z?shCF)!dFeJb8`f41FFfYM^a+!%FJjHQRUNQp1D|teVBWNP$bFEl%MO^wt5>5@a6u(m+k?n)Vzml_g`zLy -zd$o5NYHAp?DU`8o>iF1EdxYf@yB@x}6vHpWQcTKtd(46`BF;GtB0(JL%9m3fg^@wI -zr>-H(cjv;7E-xLby7Z;6h$imv!R1TmMi+iJkXR^`-z&3E$L&u@EY`uVS)sjcTC?JmEkV{qHpaULI77BzY -zRz9$19m2R0hQo)$7)qH(_X2u`wu~rITg1BHfn%k0(U7z)!qhwhDnpPlW&jze^2BjM -zm@S54Oov3(kcA!YD8W>adU6WMr~%|xIKc$%vml*d+9C?ZY)l+4do^YuaT#NAfe^Sd -z0FkyaKD||%^k-b|(2zxAzO~Z?UEYMp=3|csE?{s8+RY~>eY~>+#&Js)Q+D&tS#M*b -zXnyaW#WuBU2JPwX#si!GXf`hxqsf)04rXZRFx3610v4(hn1F-ufqnI4pA6Un2734@ -zF7&{tKb%n*&^SPqdLu@GcIEz?$TJ@}R<8;0WvkaZ(+7BLc2VAMN~g%?}p&dbeXeAap=!#Mg -zv=H96yPNRfi$DMmcx<50l_twH9S)ol*}CxV@?`)U29f7Y&-sXo{pjvOcOmJ78$3xt -zWE2fdU=0ntrP4VBDu+l620Zq;!$M|?IdU5p5hw!|cjaA9px{E8-fYQTSc8cFXYbo~ -zB{`DA-uo+BhXjU0b@#c=yTtI#JYa-{`gfhs>gyOu33;rG#d5v?zKq(u0R~+zP -zDrHn&1EG=Fgv_pmNfksuHJ`D_4o#3TB8u2ZEs_KWfdS|+8=@;k8PGsy9PE;uH%%h` -zNpc&oA8<4OqyxR0VPMG|;zFYiv|qMm!_cgRw&5BF&vuc`0QGtsDqH}sOsg#f{JY|= -zMYWxb;s&xfA4v!vAJaSw=KD%-228l!Qql=C$H+RwLxz3GU8?|WuHo}G?^JW -zC;^*T8e>utd1XVj4KzzjXI1AY&epRM+@FdJ)Ewp_RNV%Hr-IH?UF&LGTl$BFanSZF -zto^B{+7t8BaDs-@H(kVJ$MLi%If|CCFH_6H)sQZz;vhK(Z123_wr6FhXcyT4iVwCh -z+pbnbb^^723bfp{xP1BP)*_{FFtfjoSs?f0P-A~Z%-zp@-*L59f}_ydV1nz&(O~7d -zhx8S(lv}v*GkaFdc5pS^@Ju7N%cGFTts`|Hk=vu8AVt>rSHIzv-|)(Bc;z>|@*7@> -zq;9RU_YX&zYD=}!j#E09hgBk`Ae(E6rstg}qe#k>WKjhY=v06nB|A2*lO;Q+ow`Yo -z-(;nFh+{47S#qk~ZeOU9?I|mP3zITAHi^?Uu<38Lyc<=zLfA0ad#-WcW -zzU_yjNU6vaM2(I_Pdjr2U~l7>2dPL8j6M=+Rdm>s0qDv$peqUQL|#cV;EVu$l|Ew; -zBI$}YStZCCl3a5dM4Fzled6((8vO|kJTF8Eji}_(z^U10@pS=2(8D6LJCFhtTbL}a -zlEob{Mb{jts&*KwMS}8;8XA#~sdQ09(K<*CQ!wHFR~A*~#XO8scUt$AS`XmbYJ7mu -zai&xesUBEbBU^`Wb(l?uu5>iTY+Y3A+gpIvA1kXiQnV?m*2@qB%PT%b9-^X7JC)MT -z;7CeF*Ygg1+t32wzT -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 -zm|$pm -zEI~71rRJ*l$dA<;C~UfY+=H;R{TfU&#D!dSo!5qKqN_#ae7!;FSwLdwHG7pk^u$FZ -z@)_LCRaREaL7tI(^*gJL%*fqjKu#$zqAb01d>aw!4hXBKveQLBAI!Zx=ss>$SItoO8 -z2Mnx&cAqpP1!Kzc9fY2#Fb(iR9*YPz69KX|C=QY&4PnFkyvPYCZlH~xYq1K0)NlqC -zwfkcARn*5@v8yUcLG(NHe7J1_K4Ok$Is&y*N;yv(M8RO7D>DY89A;1Mz9b!Q -zRTB_qGcQ&yObh`n_2yhhF%Kh>t$}a0^$2Z!6)lDj1`TkaF))uOu|xVi8XrUx{7RZ2 -z5N63ix4DK;=vHlUP)E6mCEB)Ii&UNK6x>HK?7Cf*i7}6%%N?JlFpShq6@>a|Za={y -zgCoP{K@PIkaOXITLO!XQ9Apwah+$X)$cawNHyF1+$Y9_tWiXo!?;eurRIiRhMwW4H;ouHCZiqo*Qi` -zrUNkn!XE2i`Lp$SGNl%*Ist?lj#P}mwqlT;P+q1fKqLe${=C?bZtLWmjAJxrc_ -zozvK^^HT~oJ_v(L4Bjq5Yqcg;;#XY2(6;tf7^;R^8(SPK<0!K+9Bj32fP*%j4feD+ -zV&IhTSl+~f4RLL-VyA$US#*Za4W65Z=0%P -zbfvUWxojK<3m9ddC!f{X8B7JsLkyGQG=OXC;%4_$n*js`bS^$raM-sn#rP6?X=t)H -zThjp}2h3VJEu@zqD|!Cd=kp$4dSEut4~|0jDp>b=5Q~s}y>B~6gQ7~@W#$0dk@f~4 -zk{GA9g$D8hq}kcWg`N7AK-oAp5h97W(P6|O3hMysc30i-d(5yL+LE_t>KVh*wuOdy -z;A)o61B92F8P!bb$i&p0wnkjw`0H@S$2^e(r1P>sz{rWtZ2?eT+~*3rrOCv=GqL`7 -z-f85%oXU!>q9W=&%?g=Rbos+gkFB_SWkFM`v8=a1E@{VQ|5kDJ9nSB)apku+=-z_w -z>JLn`6v?wf!@Y%by|UjrDs^ -zy|tk$I*adp=kO?5B+JE{Z+=(j>cPG1vR6=my1u&TwY^cr^^s~-=j~|Vg?HTp3*F-k -zmb8&4nQPu0P<5q81J{gar6Q;~-`cO==syzad!m$Myzpw|&$L`!aMUVcFOWJq8ol<~ -z*%{0h)Os-8E(VTQhqHy=dJnr$g?C^*qsuzTP%+wlIhD(^7s(OcJq(JUE432HzD;D@ -z35Ip`ELEu@1n3hUz)GLt=`QmL0Q8uh8fdNQ$&?uPS9!^5Rge(?=ywbKLUqG17L8$Y -zhH9jhF-%oJ*75Z!fYr`A4bAxQA4N0PHPB65pr6fdto1JW&Q2rI%t~A?wfMSnQ -z=3)w5#*vGI2q8-B&45fm{9a>V5e`=lUl@y?mifyu(TnA4zv)Wm&(4Lr$_w(uKm|D -zw!z{G`M$M*k2rr@QH=S`t~|%-Cj@Z`iq}^@jt%!nfWHn53nVh@u_If-atD7foE^#tyl>E6+Wx8 -zTknc~%&1#uxBmCP{XakZzkmIw@wollKgq{!1L0d||L}_+{`!Z1arO^?^~dn@>)-#u -zum8(0&(44O{qxWN{rNBd<@x7-dj9#(&p-c9=b!)c^Uwb)fj>F_{6AWx34ad%pPhgD -zlk-3O!}CvncK+$#oPYY$^FRAn=b!%3`KSN${L@d*Zaw|!)6bs%{OM=E`qB8yzj^wL -zr$71CkDmVd)6c&AeMI~K0^k4DkD!82fAZxIzWjqPfB5D1$4`HOfm>(iKmPpuvmc%R -z_>azi{O9MN{o(nKe|rAezc_o5P^m)}2o`j?O^|&L!jBsb~_V(5JuML_sR?XO8Fm02A -z8W;5*N!2S5=d+o@UsNhgcIblAYTB57={0&z3t49YoM-24DU<&( -zvU9L=`^l}Zv1hOC(Yx38=-1p|&(%-Q*a-_*)~5EIjPWhZZ&vXcNZB6qg|4`sRmgyj -zVZBscJJa@BfiMnUj7%Bq@%J<N}GO`djb)|0?y?c>m79 -z{^8v_5AGh^yL{$LK9EZq*pi=cV#D -zoT27&_m5x0hZ-O5R1!B?cj@vxy!(8IW^JPi_-39`H&fcJRXZ0sy9jx2$kdq+2dhHB -z=EH1)Md5M|FO$I{67u~am%p$oUAm0;X>@jB{+vC_#M$PuTRiwW{(m_W|0=5tFHpQ_ -z1ry*bp!~B-Nd9bRGKK+-MGM0TVU|C}0Nfr(95nO?znRQypIgt9hdX35Akhry%AmvL -z2&Zgbz0IG+rAo-|)?__;VqT@p6MC5|kY8yLn(Q1uqrCdU_Tu<(=R-UP_o2w4*s=I{ -zd%Axd&XSK?az1^ya~$Cftb~Z@4*rKbdpl2lGo?Wcm4?@{M$VrMXDQ6*u)N_D_u-=K -zXYz$NJ}1E{Hz0$p^7p?Ug7~T`i%D%7ZyqJtd2&&fc1;=oum5H=y9-e~*SRK+=TcWk -z3Ru(Ckpjkeb56v}u8!t8>eX?EERW)SeG8qjJ00BFA8DG?+FVuAs%u^{o~P#YMn!k; -zx@Up+NBAs>M57^k5=@qO?vA~KGKsoe@LJr}*}o_N-t?mft-4zZ;{b(Wy5UVau;mlz -zFT7wLUokV@M6#-mY^Hhg|-OI`kmJMxjO_akKcqqDOMNp=rkc~N(f-4nE12N&WwBlF>i -zcGOFA25{Cbq0lHVib#njx#U~j&F9eTmweGhj@Jwvmvwi^*HRVu3XER%$Az4?$E~Wb -zk45iFULNfQtl%4$SMY^}o7%CeUL>~};oVT(ZzdAN-QYr(+~{s3=Nzrh>0jZ8ilhtVmuuyv>dO -zD!qI~!NbnQQcdr^%%3jn+>`EP+k*^I*2Ae+sPx$N1Qrh@d|k;OsruFDEXxf1AQ3eBRVD~uKpjn|ZC>>hZl_b6 -zGhIp0#zMoYL8a2^lsxHP-OhiQ%X2k}QoC9WYr=JW_Q46d1!xYjJ5O$Jmv=*U!S-qQORtWz0|Pm2;q6A1W014QzxUP~w{H)VPa;)DqIYi|Lv|v}%yf0VmE-HlD`Uus -zGI{Q#Up3`Fsnq%-kc~b9kpokG#cUom;ZQ&}a#`m|D%ma!kbkdosFYoWl_&w3^##5k}l?bG)c5TJEAyE-SsMFQ)hS-Cd!R -zWKm-5i$e|7E^@<0Ar<xs`mED#t0RO>Xh2ViERUj+!7Ah{W6))H -zZh!5Wj$xWpw%e3F=rsD>d1ivyqOq5Knyb2cyA9rghkgTBmwfy3alWKj^IA_ZF)pLa -z%b39GddxoHj*Omr*=RL2sN5>f;g&u#jeZbau6BfGsuFH}T@|z0eg-7`&vP -z-=HTEfQl|Av`hlDGVB73t#_VG#vxwK=a_mt@k$J$^D@Pl0~{OHoe*&V%}EZ{#X72l -zxU-ZCC>Af8o;N_BLns(a%rBHSrGX<=y)a -zR8*g=?nhU}%hQU?I?pnZzx(+8_h!bEDWCV4^cfPxg%l0UPpP_gj3%$q9Iro-4RAqC -zFR{`5j|z}YB-?|#0vNu4WhAc_A}Rz-iPRj)=vtA{$$TwV?(*_Z%SQ9nH^7_X3|ff~ -zq{CW{-m?}jR&E)Y;Coh*-kp&#T3`7jEg)Cn`dGWm2abO!3PSlf=8)Oarp -zM3`oHM#Mj#S}y38WP297$WQeY-)5n=0rAn1bn5O7UVE2#i$X2AIr9goo?r>Md -zv`+RqPs^@imY-LuZ)A-3Duh|yaHIjB-kzcPs7fB82?t31AUoPm>sh;$bp6_nbUK5KIW3a%H;eK|i-vvx5rljlo$5-F`8%p|N3h0IQ#FR@x3)b-x%`uIG- -z&IWT7Qv+XJuJ3)t)Thg%>aLn8ak5y8`XtHJHC2cBD^=+BWVtTe?D~jFTFF|L-Ew(- -zJekW_tgnv)b6}ptHx!s_S;s3KT_0;6N68IM)bln@=%$oi5tsER!;>9&ce~;i8$oc5dZ9Kn|XWh{0kYm<^A4B -zo&q;$IC%T;XOX{(WGX0kE&H{$7WdcLAvP3XuI -z9>%0=uMtBC$oOhTF(~G@#_xXT@uLx{34DRA>Ii%dLZ-sUTSP1WY5IR%Qj -zJ0(n!w@^}VWAM4aA%>neDr6!SeA0oQ5lOh%S*|AZKrB9pLRappl`834&m6BKFdI1% -zne+f-E?mf@v35uPIt~*F5p-uoh*;(I0I|Qv_gd7pGIZ9Wj%KtYI5Ah|nI1NaVu-kw -zV~bWr(DSL#hx>GK!*#TQaU0P@bhexV2YdSusBQ#_IF@{^7Qy6I>mWQA;sNEuWe$rM -zFS`M}^<5?&W4bl~Hy&t%oVzM=SBw(^9T?#2)&22KF5i?b-5EZ@D{Fc7Trp?1Pg#zh -zX9_@XUVWmmLe1`bAAaW%-WFfMoVYBi8J6Q33QmP0rwqJFPvQ#zD?XV-vsDBDADBj- -zM-v4!gp4j?;1E=vo?@NRt`@$~8QG__HvGn^&7Sh3>%oJ2DiSU$IPH3&d9MrC$qzP$ -zSfRM9hMCe-I000fL~k)=iLn*f%E6mF-TPh5lf)an@Mxuxq;BrB7sszBZ{X^IZWTRffi1Jl -zPp&#bd3FX0+OiS(av-QZ`!UUWRz}mqQTUASwFko=k;BMnaA@=zE<`7~%^i?$+L3ub(?S=@L0NhBit+{-^K0^KFp(KQwax|6}jVwj?)_?B3%mQdvAxteS|(wKn!- -zH>=rfi4v!~RHV)vsaVY806YL>0B{tR*e1H)^%wetd66C@z0D8slVsO?fg{$eB8%M| -zH4n*jv%unTH#avkx8?8?cC3_>I!PzZ0Nd+K+MMu*gXe#IF9)>3Ba=n#z~;CmD-3+` -z+_cd&OqR2ckl5}!_3grWLeG!*hC -zgY`|D2!Zj#`>sje!$=9KTazm$uFXx<0**Fy-9UldCoTGbJQ=(sY?@4La-Z_%5{*54;mepcjU?7ewK#e -zdy%%K=h&t(DBAne_E7@8@4O%%f=Rx&e{|7@y;|Z90gF~z**4gRp-p6MaAf>RzzV{P -zD?8vXE(goD)ipzToN1)4+cBxlHT54xiJ2)BYHdlo#^Z>_@?Lj{$poH%gUcw&z>;(q -zqzWXLtBUAiQECmJFPZID?mbo6c)C8h7?75wIMKT=*9=8T+D@!=@+(17cuCAfQv_F8 -z2J0oxP7Bfp+j@wkoOP2{oZHT<0G);rngog*WhNtLh$Nq~fEJ^3KWZ#pAIU~VIz2o< -zlFZGqNC-m`4|pVsiOER@kuEHnh -z7MJ9ADXFBaYPq_KXfg3_A=>T7_x{2v+F*kea#*7G4^e$v(a|!)G2}(>L-5 -zFhCPjm_&C5ZfiTRKrl}!(<)Q?M2Cw7Rc$IsfS`Z+qgBbUBhX5EZFMIiQX#`e&|{cH -z`Y6r(SSl2ms+T$kK0d>wme#TfYKXt&;>6CRbjq>7h0T -z2oGcL8zZKO)>kj>0XOGukCQ8^6s2F#>hm`MDOCB@Y}n|7rNLFCNur1j+H -zk2pOSG1W#ar57<~&$ekQ7l?n-Z?#ph?{Ds_^Q!q~f2ubA`IX^KS5Kc0dZwKHkJaX` -zml54b5_DUh;s0zb_`=x@1~d)EM8s7FEW}B?H4$)`U1Fym6ox+3Wprn-%iit^^jdIS -zavpc!MWoHIxx*Nd%|g7XSb(N58CF@1^Ha7+dG)LmsuJm`jg*SUwbFkZ^H*o5=B8#x -z+{}bQ)%@4xEb2pSwCpN4kX(?P-zIIbnPPM^(T*EK%UbUILy7uY>4R8lav^iK4vF5rBQ8|=q<>zDW?l;<_GnER*SaJi9QBND5B2A -z(Gw^VU~IbfEsLrrt$L=_?t{~sOBszbmD#qgB1l4^cDSnTb|_t?QD);k^K8EC4vsVx -zcnDtbJ%s9kINRSq%=(DD50VNp=^;pA?Zc{?_7P40hV3&0%&PufZ=YW8!7Mg9*Ma)* -ztM}^6yWBf}bGVwjbB_}{AHm=3BS_Y}Crj-!QNt#;S>qlq+h@o=&-Iw>QI=|6WpTQ6 -z!;d?V9IrT?zK1#Ay6M=VC0fKVdPm8gz3Ui1@C5o_(DruEj}mHt6wQ%N50B1u#jx~d -zgrQAp*xxgY>(7xOIYF$tIEbScYFKQAHMqb -ztCwHje)H|iZ@;{~9dLM;#J3EK}<@;~+ -z?JfH=D8ueWPYX;P8+{IO4VOJ01q}zwV|gWE^UV;b08i4NUL@K7;@{DAdr~}Gr=Fdj -z2KvYF^~USXr1eY9 -zmhYA1Sio*RxVXM>dBHDi*&QdIT)5QZ4s{iat_0uJLe~SSS8_2(ZNR(7jqDqujQt)URkpOJ7W?H1tb3 -zplk;UnivzUy^gcA7iw-{UAu@T(caX81Wk>1MrnYU3iz77O{2J6cx?)&8JrAMv2=Oe -z4HDHNy+`Sc@!mCX`sIY|RtRPT_GmVN-xjyQj6oG00Ii3iyE5+XnZkjMUj;}Zg}tP9 -zp(h!}7$@KweBDRjSI7G^5m{pUGTs}j_YA2{bR4ooED&3(Vm|GJP -zHFar2YD}adFtn*twgzPo)%nPEoguGC24LN>klW0i%%w6jrRxk>Hvx5XY70;S5&JU= -zgeF)=&Oq_jj&gBaW*MaEN(KOfl3b2>8KH{_OD>x{hw!V&oo%E0J+$c$k5+%c3jE!00e(gJ9_ud0;G88I>KZ-{4h~U@V(D-gPin -zxLkBF*AQZYG1Wj!AM^+jsw+Pes6b`u)B;(y9C^PHIH!%n5RFpVT+O>eFuJCTY^hP9 -z8Y-AnK+~7Hk{v-C%0|?s%-TrXs8I?fXzM0d#Z;PECvZu(rq8Re!_4)be99x}1g@s#*dvlmS99T}&C4xG}HW -zA9yM)t{@(ip{7k;+7Aq66PhWkw-OiTm=+IAMHq7WmR -z$54z~l`HdmyXaUzL`!;E&tRjc=d^jL4KuuzZ52t>*t+gm5S(|+CMfALx3LjVMlHV( -z4Sh9xIg>=HPU55^_7eaRZ+IRN$hFbO=GKxNomwLCBfsNh0 -z8$U3wkIZqK*(WXD3NaS8ihzC*DllKT-#Z%sY}ACQlR7l!at&=T*$L@HrbSz=87(cE -zpllt^GcC%MR|eqf)|sEHN)HKGpFSi^6o1B8RKu85_d2o*5M$aelS~+{EQY$fY%dko -zstg@fEH$%%yMtI-a^dR`e5#G?-gw56c)rp*W1Pqa+NrR+8TK`jhGl_bXx++XbPE|J -z%cLvh11!sa`dQc#1EpR4V^yq_Wj_e28g=v;tHzD5p7CC%*}cJuE9MqNZq<3KXDShi -zV(B!|-WqM7gKmZ>nT@P_PAp5J5$1qR%Vrdf4=*hP?@%n^l3WYhrps2QBE1&8Mu|B? -z)F2;cdvJh4P?_FmH73NNGMkf+=}Z?|$HT0>_mJqDmkr9fXq -zo$I}l5tb$}!i;E0(^cm8*~p9~HLsqZ+a|Zm<2?39{B%Ykht5uan3 -zLkeT~p%&IK1RmI53Cv|?27-V>&h2F-NtqU137nzw4Q(1OuUwfz1YPS&VBMZFl?8Go -zBHD493O5_5sA%fv04SzTG?0za8-00K;98GMsLM7Dv)07C@^$o?xXn+QKErIk;sZKS0ReGTmtd|r*!jY4sgR_igj%Ds|v1m(+3*cEa%n7UL(KQ#`7 -z&-H5=U=9%u^YVJsb%^$252$BqmFC2p=bT(pKWRx5VSVQzhSJZ%2VEiHd>_$3~?!Q@4|uU;6Mww4=(WzE;=x`4vKtP?pC5O0f&(&}Odo0^AQgjVZOsQA~J -z4+_!7NwZvG)W<6^q`4xwQcp>d!XC3&cG^8*64@<^0tx&wTTzuUL=C9?TZ;+4D=}&r -zYNbIFY}63j_=t^Co#x9pE}CxYY6GE76>h6=cvr?50O*oFrgn%KZ8>5r8V?Ah2ZUN> -z>?6v|LlD>Q0FEkjP%VdQ%4Nig|}I3kdOT2!rnq -zVhLgOEf2ADUZ9LfoNNE)$*r1a?6k_BQlyx`%L|@N(v)2cwY!sm7*<&?OL|0FkBE6V -z!x&?NcG)&9Sf{?o^O}G+)TS2&Bc=^eDO=D8Zs6&L-&vO9=hBYP`=vf*4!M$~HJ|7U -z3VbXHmo#Pzi*nV -zhzBPKBL{?uFg5}WrFrRoi&CT70U(O$yYBEbblm{vooiaZ9<2;{&F53svm{D8@0di! -zv=loylQK+T#nak^t-{Xwf$`?hxBGh4o?7xXM-f -zW|;V?N~;boq}SHMc&H(w(#m^NC9TI9gIc??wi=)+bELuwpclB~As3_GjFG^u+-El4 -zsF~XJrYG$kEE^n5);m82W+{ah=}S~an+QiOv3 -ztlg=iLe2eO@GyJ4L7jIRQ6(FD8JIFjJl$(6;pECK-z$=}x+1U+026=|HdWg6;i+M@ -zASt*PonDi|5(!U_sD+7O&@KZZ2^!0|)#F%)P!nm0OpJ6bJ0*$Q(bE^EIjyU<62>#L -z@U~7+32o-n)IpGVSpa}}d1ld=Vy${=Y2Y-n -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 -z^ytI0Xr`eIU;~O&P$W6U**Os(&rz*HwUY-kQ -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 -zQr^N4;v1f~4>)`C{de`-f4(?BAO7j=6UbJw -zx-sg?2xE9d3@0-oHfP8XhO|E3L-359_hB8M-HDkn>04B@QnPe=Sm8Av!8zjbl=15( -z_$>khzu*D`8(oz=}H(Y_fhtO7#L|M|tAzB?Q9N+1^br%%o{k|uhCJLnDI`_Kw)Ws>RH -z`ERY)GE9j4c=+%8@kejj`g~&vdGcZa)`L86m%83ZEMkFFZim-pFX?U#f@x?e6S*QQ -zV@@k6l`{hGk)z)>EJbL}sOjLfQVoZ8q5LGW3Ei_pm)8xy{lPdO7C+5IE(U_Q&8U_- -zH94)NnaI+(ptY1n5!A-b3!3Q7JdK*<=Je|79Qg~?!iK4tM;9X#&a(N_8)N$}1?QAB -zVW*$bR?Oz_0bWqa8l|d;ULQQ*G<$E-NJq|&u8v=FeSMF|yf}D`T*$CY$`OCu@yjmp -zMu`V!X}}@^7s5e6&ITIfcZ-o3fRP~PjDw{f2p!~^;%$*yEH0Q+K6qe!Wxu~U4Kfvc -zW({WkMTp--hP_(UOTRdTi}d!c9pD6DET(NB17R*^!|brXe0%p8W7?DR0rE~Yx`bOu -z8-PtnDv4c&B&Ss~nVIrIdVjCgq&b|U$}^fiySN-Yi%`aj*z7aKT!Rad#FdH*q8_v} -z(PD!TRm|&xnYRNfojG0-|0sz8k(4s!`i8Q~(@YiIPU~c)+3 -ziT~%KPH5X!1|aFP(n)NYnhA%$hpJEu`fi4ADEgC9Io61!7t&^q_le*RlY7S(M%Xc85mY`%(q@7+$R+M{i<6yJ -zG82mqQd3T=T(z}Mg}R4P=`PWSAgujX3(tHU6sv^4>?$%Nbx=Ocmv^GzVOPYWbwXL5 -zQ%z^NbWLCpfH6%(u{mYDMDwzqsu>Te_7~N#ufJV#RY<$Mef`xpZ}0xN -zdHv@7o4faKUQ?26O757?zC%PM#b5h;+6BUG+b?$w0=e3!WzRs1mARI(!>-eBdz2P0 -z6MG;AnK;^rPg`frrm_~Fc;{%xIihoOztpM!>{m43iQS_{sF;EYsy&^@wK86&GG=JZ}0^7FIvhs -z9cm#Wze@qoB-U2Ktb!PT%#`xfTYZ+QJ6%+|M9|0L)sMhpB(nf1O-JxMVVsFvZIV4m75o4d -ze1sdWNy5a?LTLfSBw%DI$XG+VPTz)~{UuNhTPaE}2VdN49T}BpVsagwo4Kl%k=7Yd -zV#ekm;Zmh@ScnBXoIXTnyokpF(}|kWmkXN+_BdQV!08gi}9`?AvZ -z1kl!?d2CR+EJ45o&1;sNKN-V@b&I!{j^(zlO|Z4L0>Pu5T?AAia~X&{2b~1@?fLBb -z__!TKCmic?3(%Js5U9SOr;Q20iV}g?XZ&<_iA(1$Dz|%6-OX1Ru!viP2@PaqZra}ScWv3*)7Z>X;0;+(vJI(<+4_W0cD6=?nfu~AEVFNrS -zzU6AlC%=V>>wAF*(;qBI_eFJWE36!NqT?Ulz5N#TOzUD#YOxctoyWWHKKv=juUM-& -zIj%UDqP#7WH<;z!Sk4f4GPQ>@!Gd~E#VEfS%TmFEj6$2jpmzdE-Q1$S#?s6OoUiqV -z_jfEPKfAb3`afFLOk}#Z67;mP7i0CXE5q=MOCgkuVsjs>NPQuaT~gcP%l#66tky!! -ze1=2H)QaLf8=S+2ITobz{gRO7= -z$WdBdUSD0}vg9Cz2&}kvddDZkO{d#)K%US2!wH96K%S8@1!fN-M2+vRh+FP~tLd;| -z)~P#CP3x8mp=nN~iX!ErMHry%Q+3T1y(<8f%vY9;ntdWjaVf34(CEA_7ZF8(>a5q4)E}|P6+*;~qZ6)J0kc%>`JHBwkk4vRmqQ7Y;`K`QjR%%(9|%=XWyIiuto^a6c9 -zpheDVC{NzkLN{lde0lSV4$Nce7)EXtk{09JT^~I%624-5p|`)ElWIW2=pp3%}vSvOCYFGN{^tS4G0CBJ#C2cAzn9_F`81} -z;vJj77m4lyz89g~Icp!9xQc{^&;l2y6)_sOEM$`*+6DpWk}#2yjJCjafyzaF9)hgM -z1vsx0dKt(jUT0chRnia^6Q(CfAjf^C%!ma)035Z%U$Hc6`Xk*j0+rd4>%}Kgi1G~& -zDUmIC4h?mMl@rAR2qM-#fwqg3x5NwdcTh$G0lhKMm -z0>ib#Q4Kv0c)}U~VRF0?PJx2W2Vw#uPNro@HVd{KD`$O!h9i?$TcHG<$cX%K8$*S# -zsxd)NW@v55%8kZ*+y>MoWR2y6C=)P(Rbl|5@}_fHgfoQ)f&c{KjHQKb&5+D_hiMtY -zJ!a`A8-}|BYhn*p)LOGUa^TEl;Kp3fjGQQF;03;tE^ugcf#`z&VJTV|bS3z;Ef9)* -zD(`969)uyBPN>x(O#nz~GZvRbCR_5$Km&#;{MOOK0>A=ro`>!PV+pXHMalgcvT(Cu -zV>FfCo3wcyJ++Jg0ppE7@Bi%CkjY*Z=~`!Y0RSnJ#$ticImTu0kd)urzKrkCRDd$@ -zbQ}q8#>N2KnSN`tK}N!5Ea&xeE9>{FkRX&_tQyt~R_9v|{ro0-n21x)Og>Osv*CaQ -z@=gLplg*KvZ$<;A(Rv#bqEsf1c++nY^7F{FHT}q_RM0cNaXg-|p@iCYlK>fvYmkxP -zf$1GRo~=KTbHx_@Pq3amt1nUL!51%s7QmsYi7#QQZmcahI?(cDQ2XtUDLkfeBv${D -zJ=bsx1ZQ;n84xP4J{L%MH&{7QX-`(y>#K%@eq<&cAKL4nq8fL9>}^K*0gGVN_e?cWd;n3X -zaP&WtaD(O-$(<~89r9L^j>>nqa3qK;=#eL5B5-+MPW0)@#3kLsf}&+j9y`=ivtCix -zL{?;2XXk4|&n7K!s6FPQp&=cN?-$*yW-vwZzBWrSrB!gF4_3poUu#T-2b9wZWf{v4&K3$#C`AjiL<+$sl)M(L -z02J|>H)3txGHk&dGR%P-!mu1P@@@A|qr{!@aG^D_Y_pJMTOFYaLxL6%z8ph20CDpW -z$BQ2{$~N@4YD+oBI*=#tC7XHNSub=R017)POLE3m|2SFK!^{lrCgFbozzN@~CI1DH -z95^{EpkC{>RV%gscC2{Asydu7UzfvV!u4ip@!uY(P~K -z#l`B`HysW}vYvE?=jh4dM?PqKLq1)cJDVaVoNhfN+irHiI)H=`j%L+knF?ufa+pHl -zJ$y*;1#N>5AM+8Li;`DHaZ8g;0kOl@hRFsSsuOk^9+Ap%T&XQYHjureg~Ni^HQOne -z;?yk&^hA2XF#9@J+P9Gvs6qXYO1`0r5F4UN}W(wz8cqO#SYwNi~Rm{>}#@Rv@y*O^yj7G@iis64!*z;_RH4-8zZa -z0ckkfy!{lX=couK(g7~xG;84<6@h$I!+wQ7ZwFoibQ`HllyRW*}FZ9HiDW -z0y6)X2^?A_YjhnPr92_Jl4BrcRi&y(6E87NFd>oH*P<31VTk7hK+R*Vuc01}X-KI)!nj!mZ!w{x2@7IHV}l@QPLw&rO`= -zSEe#jtG}*Sfdx5aShO=pMR5K3Wu3}875a=GnzjHouKDo8H>;p4yDo$;h7|974&IH8 -v<&PkB>U9(7k0fh@@7ao+#EM^&&ZWBEs&0j+YF2#h3EY1Hk;iK~f4%|$K71)I - -literal 0 -HcmV?d00001 - -diff --git a/components/test/data/adblock/easylist.txt.gz b/components/test/data/adblock/easylist.txt.gz -new file mode 100644 -index 0000000000000000000000000000000000000000..130394309bbb2dce4d9bfbf172ef0d1bb0af9919 -GIT binary patch -literal 400550 -zcmV(uKr|!RhKYskLK5Xndnz&wf_!{F`weIKL_9XRWQw*60f47qh>N4ON@X?_R_I -z|Mu}G5c~Pmn?bwRv&F1ZXE*!9*jLKy*>=#skGd<*e*~dF+gA6gh7NY#_wIF3Xy~Yc -zj&g4c?97xP`%lWTrYjm2$#=eOuD*jh?;8-(vqATE@H5q&XJbb?(bY^<2R(QxxHd~^kl7%Co&n(3@nrkVXA4Ch~=HE%m)=A~`_ -znBz#YZ~ym;?)0D<8Ow}@X1aQ|HI0W=_$Re+W-ng6n1vo+2M|@VuDRhgwV3;p#|l@^ -zRh1u1_2$`^Q`_LwXaQg;p@2o-Ftn#NfwED~K?Npkr5WwCsdt{SsT_m7J|FEMvYqxo -z?75Y0Y&Uw~0@qln=*A5LZ(3>BpZf%H<#A}3^=LcIU2Rkcvy)+!jnN%9S=v$1wox^K -zdaz?JlBgI0t!^r6yd_=0Kq^~~Ei{A7PRVd!4*WZ|^ouseqj{*@`rV)26W6INi#t6W -zB9Q6E*&^VPPTndRPt?yyxLN9S$(!93~*EUk>|8+BIHratwms}$^;wL)#e4kWR%KaFkgyc#?#qa9j> -z6K>Q{gD{|0ow)zLA@!(gXPy5C(6%4Diu4W}upU(VX3z(>Q-gkvtb?~WC~yQLh`60S -z^0*OE%g(fYn2c*x(=fM%kq8r(#_Rh02A8;V*zDg1n9h5Jon1YLouw^^y0u_ckx~yv -zAE6G2qw<0E0yH`35+?QouZ$gxYVtt2;woDf&<_627Ypn>Tg~UE#eA-+Wqy^tT;64` -z=Gj%Is%$=AFj(Ay#Lc`vA`c8UU -zEmo)HYAGeF+tczc)VhZDsEG$4ZbQSj)Ye42l)Be}d3|$tx(oQ_^0d0WVd54W3?;8# -zN;hn=f=$h(8|%SXg*gK57?-$cb~p>QQ(YbEmOBe4hU5C^-X>H;1k1^=8QajL?L2r3 -zkr_8q4-PfOJUv*J)F%P8*+w90+`);L3mOdAhDReHdKep>O^~@}3wCyaxii`vIjQ_N -zggo9xZ#~O4rUhpaaJSC{9i*)W4Yd<3wyFa+Hx%F&{khR@r?r=Yz7R0%^$?^TY--{6 -z;|~NnedHnZ=A;|$t#8KKi1r5X8@A<2gN7i$?edfeB{;4;!GZ6eVtS2(`#Kt);$B)e|V> -zc$Y7!nH4E=az2d3iLqrv`%*Y+H{}5fm&Y3H6A2-*jP2Nk*Ize -zTf?*+YAoS4sO?RoO5O_)?$9p;kA7gyf}0Rkz+B*kDM5Yibkj@AU=o_= -zZdzCzY8wq$1`k`T;9oGshG1up(}*8Ihph9ZizJzEypb?DuZ$7gi2nxF1&gbk;I -zu#?$3@sFf>m%X*8zbY|0m;FgAKMq=`#LoZ$M*5r~yM{J6J~#P_FmgQ1AsBHksN1C; -z!eyP4Rw0ZisijDxdk`r&zN-X|WisVy$Gfo0Mf7N@TKfxvtls4u3wtqmpv{&+*cdK% -zM`jgKcX0k@0-V#HJ%lS_s|7?X!m}!rI$WMo>QM-gCm0NF(!~Ok6hh00RtbV_Oz4_< -z7;)m*Ud`FC-1^m;x0GAIHBCddzvdD&oiq1Bo{uYF#3FUc1!fbROi%qjs);Sum$*!~ -zmt8^eEF;?~F)?(KQ(LX}3hFr>i$Z%y&{#k8wsYX8rMmSzsC3vz^Z3ZzGboRbcdyIc -zcCcbS;8_#T05KXQJcth2VL^jF1Z4tn^b6iJTW~-{IwZ#1(1_4~dH?e-Srl*7M$R%K -z$$)pZsbqU0GrC?P#H0`}qR29$RYdEDv4%K1(#9o9MB@ateg0ySQb;!vlJmU64tmG|E6q -zyeun4)Kn9)bhB~!M7CtJAnUV_ata@K{FEO}$_B-_vGEFe3T34GZ}7Ln=P!@}p($L5 -zLI9&1)s_1HV{dWAwvgu=@JtkzLk6yg^O_8-hJeJ$T3{w6J{AbNMqmv^j7?3%MM;qo -zcqGQsB`(<*;;Lze9*#$0n7J3Bf}@*FJj03t>a4*i&quy~l*5?x>jA;J{S%4kjJ -z@V->)c6e(dZGLj8cZ3%93Ut|ZJan*vusH+7N=a}ma%NL-PZ*SD7f{sN_ye=i8VYK% -zH5IqrL5y?IPjG?wz|4QwN7_}82RiN%QKP*Negq^wc-We>YyP7H?kQL6H7nAdMK4W0ZIg_&u=S50*+g-Gr(Dd5^y@+kb-q6RhE*0=Lj8>_d|v -zb*G1x)xcW`;>x~PRAT##Zkr0i`b0ThxPlVcOMe2X-e3xhObB&;GNT@Lq$y3sHO5UV -zf#iTeI*%bh=n^lFR0l@OcJx<`$CJw>oT5ON0%aZmL99)}gKZ#B6ITZQ+2TbPwhtp2 -z%3T%-4D3W@ct;irU^%2NBjI7*ECgPo1?l~nxgYjt=u7qF_ql**U@YS85Z$^-E1Y!l -zbREx2S`y*`7f=XpGR&S%Q`EKtCHpW&&?gNB`Iy4Xinw!EE{O|=DvNrx*Y*%>6@pIi -zuRd&R%vEYKmCTmS -z0VTA7;1{#;E6IAEglkvX8FY!wV_KR;(h;3s<%^0(l&h7y@7}ziTS~ea&M|0D91aNM -zeHW(r3~i|dL3Ex5twdLviag#)c@_gRgb=4BBHx-0qd0=(_(OEYSmX&esRj -zN^4*r6O!*PX_de-`g20LJ&BvTRb26Cwgh?z7rVB#4^?hlO{M{Bn0CRfKB;T -zbEcdcq_mz8Y)dN(f-aQ+E*5Pr)VMeObHsXBiPm -zbzp)WUW4UmEnFc?U=yTDRnXxl06Ap<+m`3RfDWnefvSzLcR_F`vnZQAYpiTWi7UZ8 -zf)s&!1Z^QLAUc`=)xCJ6K%&dXFMEN;+kU}SOji>hk$K33U^S~KRXqDbQTC5~D5JkR -z|2W-Bf%!mya^l4N2=4i4Nx!&dbFy -z9*T6Qf{Cl0;dX#jomXJZd+?sUFd>vQa(gRxAP{tU+f}AE_?;{1?y!nlImDh1Q_qt= -zPEqg_iywuzQE?HH{8l*nL|X=7J;|9ii)_=bC)_tE1wk*$-M`0F`)<&eM=EL2uMw>_zDc91Qqj9X7nK18^z8UNn2GxbChTy$7z8kjSZD(-5~tYH!;B25|

PALN)&WGv -z%jBnj3CP7((6I@M)qLcIZa3W^XxqS155i1|=Rnw5Ow~_9^;_sJVEk71NopMG9gQy- -ze%HvM(gnln!jg6&Jm|tHZI#>7=VL@*sx`+f5OW3rx-1Dque)@o2;CgG=yX{kryoOS -z8#Ra+=THz;vGN&Ax5UCI0uY@q0_|cQ7iCb@j1I!1>k`xv67?h-b=QX|1NIwt$3R%T -zqZzCNpl51=4-*RI;4Z5-(@nqX%CW<{Q+hKdrymL?jsZ!i#4|twOw|d0%8>)b#HY}E -z*dl#c>3BIr6T~~AwLxD+P@W4RIlwxgQdN2#d%@+g9;MwuZ$X>9f8+th0~5it=*H)O -zb&(tF%mvGFy9n?(#0c8ptDu}%{7ee+#URDkEZm`ka9Xv3kK6mj^F)8hSUzRY(jg#z -ziYJ+v8VPOiQ5(HTBN9E);t8FQq)_m*l!rqLbYnyBUU-~H3koy$c)5$&3NnM*yzNP2 -z9^F_IfQtY{j#fBf(~iOR$Gr%T`;>!QfUbaw7x#ilC^&R{_2FbSIUm9y@TX+qvZ<^l -zcn$EVH?Ss<%cFJiJrFi?k3=|~j-iv2>2{+62lem{s-8~4J)h2D8js=3W{|{wo$4Mj -z@PiU44Tt@sSYz>BcxqV8iSq)$H9Ll4!5oRsg$Bt5XF&W*RTj&e3E^Xq^~1XlDH(2S -z0z>NGt{L3U$!Lqk%P@$=tHm;6wH^4|f3bWrq~&}O$BkI7zlB^RMXQOuO4!#4zDe*M -zUpE%Z>+B_I7LbbH=ZobHeea5&EF)(f^|_kQ=~za<1&n#7t2yfsem7?*4#epzys1;l -zr3BwA5`9Ar1LoI#BDj{{-V3_Ey^D`bkf5&kV_k$Sd3$qrdUbmukBqM@c-Z));chNF -zt>6a^vAvhKNKy&7jq2QeenIH4mMbWxa1)@G@8zB4Rk03=U$5e7u5rZl2n!<&e7->3 -z_{EibWzo8^8ws0{dLV8e!0E`=~ -zfFDN+&0m@);(8)h^H2iY5&o!Kezrknm(MzXl&w1Ifx4ax5drTD>wRA5==^p#Q2m2pq;?6q{}kKhTpd^ -zfiG$oOq3AzZRnj1Q;=lZdeqzmUhk!!0+5E|Xs{Hxki-rL-H159!Mz})UCLy~fu6i& -zffes-iH7h4Eh1D8q)Z-iE5(B0rk?PL9|1G94R7C=(A6}tKuK#`Bl@DWpr$u+MA9qu -zh{qN`Dug=2Bu4KnnJsbi<--6h*r{f_W>m^D@rP%@ww00Y>>)BoS#|J)oyUKRBLxrw -zMW8}OlMIRRJ>ymdm0WBh(}@aASDBLE*fNP1PEiO6d@iSdsLhor7vj -zC4_UM3_>1UMHskeJu7}&RCu&Z5coT_V6&0oHYN-J(_rCQ -z{uVIdJYve#n1Ic4u^*UIX(_JjsFN0>Hv;mo^2J2ax4b~(g*JU}iJXI$9nxyQvz6$f -zg)kVO9A+2P#c2MIvw!b$8%Od*(f{jHRIlB;*51A?DJ5m5?dj!}CvBIj+~e1Ax~h8S -z%xNx4q9kTgB8#9Nna8(3`;9jORJwZ3?P{lf5dc8|#3KL%B8-_gO%e-g?+>HVxw$ry -zZNAsRYhU0PisOZb(ZCZLf@?GVg01MT5U!m8w|! -zL0dE`xd?cA?jR|k6LD8=73tx*ypRva<(YclZiU|z^Pmuqz6G~?0j#<%ur44ypXY8j -z8z@?o+Hbk%@Kbn1u3%y;Z3G?6(uE9KdTO3h8WC1t5)dU64T~JEKWt4Jh8Ga!!MYhJ -zFpfrx3ZY1%5Fm)I9m-I{`t_w2O=REP>)LyYt^yDPq)ZNiH5aoE)HO;TCx;+J3BY3_ -z5Cjlyj+{A_rWPjnEa-5BLA@vhg}|U_Dh8`^`IP`|UlPKNMSjz5xI&3mu)JV{8XN*k -zZXqaFPOlUh;Dl-2EId49-)*Rv!?xhtN}K|1eM?#RaFOAiz9P_8E+QD$^OnEj5NnOm -zaZ~lLts(oq0!t2wG$U8U;K=jPm7NI4awXMENqMB+?ER -zfF&nC%dCb*PNWm;`I*CuqRY!l`k(M{wc=?DopFmE&5Cutr>i;g3LRKSAS-U~gb5Rq -zyeUeIqgmh;6$Xqg9nT&k7+2a{*@*e&xQ$A$zJ5J=L)s<6N9l)WC&mk|XuU9?RF^4$D!pO}a5~t*CBVsQdQV3JHa1U=ytFooUmwJ^;y8?u -z%D))BMSK<6nLyl1R(4mcS{eU<0?~pl6mYV)LE6=Gx&bJxW*63r`mj|-z17dvm$XK> -z7Eu9igbPwZb*>TWTsjyFRa!JJRspdx_DbeSgfeT5HaU&RT9KP_v5=`_v}tzA-BsOk -z7wC2g(sB|lHT5y)F?a-0&|MyQbRX5*RgJproI=B8<#@Pqm)6vfG@3d5l`%Xnk#V#g -z(u-uY)g;>jhXSE~-<4J-UIlZa(10pd;7v)5stSS{d{^b0dnHKJk+v>lunk<$wlMulob`f5@TWQeLK -z8VBSax)8vGssVaZ8xh~o$qeu08;2dd(GR@gu#`ts9Z*RaSV+N8>Gf_iGosvB6IID% -zWReM@vGFE`riM6U?)(1=P=Zy;kdTLBCvQFT0{xjD%Adg!W6z*&S6}}LB`9DG23ao) -zS$&+HokYQ>eV}^6XAQb5z9Yq=>l?v{YgSf8FtM%$IKgPppWO_{K*nYvL+k -z0^LR`A9snFH|2e!$@#F^t{6#_^QYK9N%KTFvf(s&j(Md_vV1d{!CFO{;AAf2(qyHA -zG@`Wz8jrrX)!Bnp4 -z^pbfRmX#YGP^T;ao%@`h)AbtsJv6d$Lyh{8vYhiLKF6yn{Hsk7;WL3*I^mx4J30HD -zu}hb6#M3F`r~Fr12>jxZ{ThDfvf~4AX<(wrDiLs7FBAp^_Uyrcg&hq@S74Yae10~F -zkRou|uVh>81rs7eUx`r+g1Z(5|Bm*_iGdf^8L@Oh@3?|BH3JztIR+b}7|{h?{;1i6 -zZtx18o@-Oi^z4ENZEYE!TNvih^9&Y{3@??3^*_FJ#D$Ji8Gir -zWjxR4Yw0|IH%(rywmtGHp@M}rU1_PH?IDG6qgM&e7Mo#Uglh(mQI_b_`V?tBIV}6e -zkFe}TTUb5W7m_u}&=Xb)TcI%2h9HC_fMbkiPdB2OB*PF-403!uj=2)5)3s)%I&wm2 -zOVh(4Pe@Xv9Id%6W_Dzd!JNbQBc;$hoL&j;T1lWd@=ijwl%0J^YDs1V6k!0z$5oF; -zDQz1NvE&+&))MI#;?|SJIu?su)5V3h22{E9Hn}q#4`2FNE-9Ix{LFTv964mO<=`DE;7|53;k -z8jf({uqCotDR-qTwhc6-VK=T#v$!_R_~1Yu3@jpNx7&OdD@RQoaU?n}V0ntM%^E~$ -zK&$yxJvX7;x2fE>=`UmxqZ3brBZmlt^f72b^4a;8uOh7#To5-_c`hTh%Lw6#5_2BM -zGy&PF0kDB+k`SLEc-$t0Jk0hP`1y^^AWl{#tX&I_0R)kv-_T*A=e7 -zIJ^wVQMR>?mw-y0o#j9s5uP3dG^EB)*4wz`&FaRY(G(+5++ji%J3xagOogmqfe>#E -zKKXOpn9rJWuBkSq)K{a6wv4s51cnz1O50U5N+R*Xe&`7c!SjQG5T(v8wrz9AW)Jqb0kLTu&K5=o_LC% -zg6b{`dBzlA46^`sBia>DG$fw+X1xFK9;WVOBEijvhzbX@2wTV2%rWunBnDN5W(lo_ -zY45fz4MIFjMS(<)ZZs~`oHP*I>i{I}vbX7x(H=*=)0bAY)UO!XAlT>=MBtW47bkk4(TbwPytj{YAL4YxMmi*<%SDnT -zrBVTz0ue~;EGT2ENrXyNLXfPw9NWAKH8|YOEn> -zR}0a>#9lz1N>2y3ZI&Gl95*LXC(!(Qy&^ju$ld1EJ-n22m~Tt@WFV~XGx)}{NYcf= -zdr6iV++om|hnTpL5Y?;bg}`7VQ%N35)PowxKI=ev&>H*scBZ^x;Hc{W<1Hx3O?k7-vbP<5^+VQZxB^uVO0|a -zQw1=4@C9_7R0gg;!P=911e*~BN!^IaWem8Iy#}_d+78AssESako)?Of&tdFnDy#}i63$R05nf#4#wat&U<$}k?8C_L36nXMI!b#+2hDz-eLSU&T -z3CESKt?#s=2uk9e@S^e;Le2V)2kqGovb~c~z9DVUapj@=P9`AQIuKMPnlMDqA2jGn -z0m^W#POQBRg?X=s5Z&%1h&4M9^x~{l_YCn@0o@rdn-DU9cd{}BT~Wo~LXR2sCiuzy -zLkXDY&8k50Soh!UqWIT;ZU&pd%5s3qZW--gE&1cm*KwK@ut+3Qdl;<8t-`aIPFtqN`Ro8G<~&` -zXsuG>ggf^{Ov}mHbQ9huMfM2SUk$<_neU9;<@!+eFCXHVxTTgvMTTV)iDhXqHB+*$ -zmJpKtRQGcp6m+c?@Yrodgu*M}lE}SjXDoD%z&$#jHKKVsA{Yvd74q#ucUBiguJh&s -zT9-&443*70eksM8bi$J@KL2uI&8dPHwcbY{EcZtoAweP8q+Z-_N7Lb%5nrGDmG8U! -z)fitLqgb$V!S&)tzMjYr7BbVoZ^pkXvTkW`7@7&di#W6># -zI9H5m%S+xaMzJYZOH&0~=5t#;GtMGpy-C47YszXt+6pd?Jlk$yAbISjs031xlKb)c -zT%rrAaVb#uhf`H)q=NC$CK@hYgwf5{5nUOQA#Vv4D23JirMTHld(FlR#;i;tUzXBX -z(E|KXfNY!)vZus$E7xV^?XLWbgj6J=B!}i^Pg$3nrXQIfaI8po8NNZMnQbK-N=8y>|Er -zPgB_Byb$K6er^|RFZKOp}Z8(c%W!vC={eRANMKK^PN>8+EqWv!elB1HJ=~TAi1v#r -z#dLqc`KE{=EWj(lZ*UdFP&cuV(oH=zQcW;jNf9kQ2QkMl?GRK?l!l&=SJ$HAuC?-W)`mXD+E_mJnUl# -z-IgzZINt59oJ*bI9GdekP5Jw-6h+{&t&^7n$ufJ{6*@zeHX@WquE<+ciofNR=WQ*o -zy(L@WjQHtW-u}JimDg>MMIUN|8sHdmISYPa;9wc&uDItnqNTD1T}4F9$yfS5zWS6J -zfCGk%NWA?OPc_Lp9FC0Fi+3Xzar8tO_ZD=oat$7d -zCYdehRs%`Ogt`5>BUX2as{P0$9t4{1vNL}SL~nTr1R+oqW~y?QyctNmAMsW21_U{1 -zx$C?wZ?`bRl2$WF>0kfZ9#mSd%4K&xG{iNE3ydUPQbrq=)z?UE42M!4x*Mbq-H~+x -zY5sH$+zTJ#4Dt0FkrVm5AK@L)x^l&^D+OAByU>4G7>uee_ztb&O)LPQ+#FyM8@m0y)l`M79V>Z%lbfXKwR|Z>Okx0TAv_ox@B4`Bw -zcbG=fZ-THW6tQQ5rc#=(IY|nd6`pRKIrJwfP1dgFvg*-Oi$_csYEWK1?AqLAh`7-X -zmrDkR@LoE1^_E;2<-Mp=|N6M$@~!B>m!jo^Kx5%S|DXT41TnCGO_BoH2b8`~cdD*m -zzt7t{O{3LaWrmqSslNB|#$x)VB74^6dsiXtP7Yc$*}Ys>VSR-(72?dwhZugv5SEn# -zL;gGUZ3)FVZZ{Ea@ZJg97uqt9>APW_y#1=Ej%aw>C{gSb@!=4nwefV6LL8qV6aNA& -zD(P`E422<((dt?0p4|n>seYcL%A6bAgwv@Tgq*OG{0BLi03?a7q=}=g)k%b$Rk1iPFgYYdMtTbYj|u#-J3%F%-?TOcZKjamrDAu2(`|y_>EGFvF>vtwQjM?e<)&n&N+aS -zrenN94bC#jP2R|=OUb>Y_bv0adFjp9mW7LMnLQ+s -z6349z{5nc7SE3NTsCK&8L<0qlDqWC4`NaD1iVrS!`Bx=bY#{jGj+qE?e;k#k+eX%P -z=~E{5G?_6~ZDW;NQZIA}cGjctme2@y$f(Xx^&f<>|6W4vZvcggyS89dD~ -z=5u_;-2R)A4-Xn`-eUB0=}12Q;^B8)FMbIc^M(9ou0e9eM2KyS-{F;{V|T7XRrGML?hZE8KB!y(+i97x`P -zMzkp+(%b+cIjI}Dtf|)yp(dnreG-*L`S?mfx2E&wYmCsnr8WAsXy5?PUs7z^a+CH0 -zVpQGYs}a%~CbSBr9ZvA%~%ac&GW(PIQuRC}Q;cE=LD>OwcB^UWg(!e?f<+ -zd*2rBR0W8|J??GCvbV)NHBmkvLRTrnAk^e#qd=qa9Iwhtz8!B0o9?2vw=&@sH`}6O -zFJz4C+(UVCqbjj#kV4ONnCBX`5dH)}SndQs6*`k*F-t~~&vO6s+cAU;KEZu$R2fX> -zXz}oCXZhRLmFc^+rHnItgyG*t41HJBcqcfoD|yP>(D*|O@nzpyygr_cr2j9T%lzqk -zTjLJDPly=tT)VBI*K=KcRtq8SR2^Zwd*9ZzmR8OUT2W6TjoG0g-i219_Xh3RxV`PQ -za1$k5AtpXVUnQH=?QW~TI#;y2#?ITrK<nos1t$`uo>2v7m -zb!_26N!YXJK8yrt3CWvMQ9D;;!&Df|7OYnUC@Reb@&*+oxw$M70mXxtFmMVRfgBS# -zD3t>Qd!dV1kNpEW5)#DQ@$wEg_aL#+sx9d<(?E%?t%HQ{7TH%J>O4Lkt07$y1hLLD -z^aQs8q?+AK>ZB+4GefS}B5{xuw)H^4qG*JPzIn*}=Lgce__eg?kA(b_LmI7}^nyCk -zUlm0ibfj>v#|_fR!l_5UUOWH(Ty4cQa8_1=-ta{Guc-JJ|>&hRt2DJetWn#ZXNc!hBZf -zHAbT}JLnaWKzHmI9H!E5M`Qh+TvQRZ3Pr7xkR&&f3TL~W%EKF>az!W6_Fzq-&;{GYbipXD#@jK4NNFaJNPSX<|0*7 -z!|_)MD;Eez<-!qapDB2IH%jP4m$Gx}PH@m93aRS;1)dosf%Rj{2#vMx};-F9G -z{rtkqg%`It)_k(xTBcDLm1I(lDBm= -zIN_Yeu_Pkv>V%V}9Q`C!d1tj1rLn|D7EllV5^)&W`6@zDSJXuC+{`Yh0|^Uxg`|FF -z@o1$HB8diR@EBebR_j^>Cszg)1)DcE+6A|{Y%?N^%S|CP`ZnL&6)K>hfk0Xkv(9Bb -zFtXdj1SM7IaVs1qEhNliO0ZgidAk%LcVvqf3wOp!jncrzfF5Ea+!mGL`*=SPNR@S) -zVmmJ_KW>u|iQUS|pvN|Z^ol4Eb{#d0;-;S9OmXN25#r{_%rdFhhV4!6O0rSCKux!; -zV?e!dII8Lz8K2qI5kr1*mwJ6HH>K4LZu`-q>1Om9T@(XyXxw#7SZp?C?!F>ZzW1lo@H<3 -zTg{Pb_r=>t#&3<#*tTOZO4hAJE$TRzqOD82G#W-pQDI4|Y`lhS4JmBO$+@N%jjaVe -z%M^mH8V@`%^u#2gbTJlMTOZJe>`xeBXUhgyFuGGOpzm1+Ey_6^yY7wTN(BS8+!kUO -zx+0AOB#!D9MvC!*OI!Fv@z56aqfVzI(v6N?2=%j9{&k@iaMV_53$gvgklg<@+Q#HW -zOy8THbr_j8eQ>to7>7vcFtFd?neU1JBnmqeR?`6e!aveiN>{KrDE!{a=s?ZRE#KJn -zNJ3cpcpVY#0qv}fs1E{w$Ih(=?(=nR1%D{o)z;EPS343St1ewD>JH@Db8QO}Fji6? -zu&n~yU>s{qiz@9_P1hmd+O%y5*?1p#A_)iQNLW`GJZUbswlD7$f@@m^w -zamLvMbAso$!jo1dRj$==A)j9MmBmb8u)4n_^Mk^bJ?E!N>Yfd1@mooOC=BUQNpROB -z1k2{kQ;i{M=|_1c^mF+U_Ep}L3r1>LNGRIDdm#k*U?ZqIJXavz=NrYc$YF{GU`-Xf -zz>5eoeLj;`oT>4&kVz{rBW%GeuZ2wNQ%tELdM>{z1!nnnk>wkeak6Ba$D20`sXa3w -zWrX$i$&}D13nh(9#yO!c_@Uo67Ls{udGcCS&l%wSZV!fxJa6pz2y5 -z;5%T9qxE1Q-iY>M@P?>@GdUG9xv-$`U}rKKw%r&%nvGIIN{b7|s|baw&K!cb#S}8X -z%1f**h3sS%5zP{X%t@umA|bIA6wvq&2vYLQMvkgOX2T33O@<8oON1teFChInL+5Q0 -z$D71KN=NxjUzk`MM-un7;yOjF#0-QWOBC`-@>M3#=?Vh{ui0t2@nBsO*QqI*9s!8v -zT#YZbLkOw0hLG*#%!$o&SbfW^jLqb?H?JfLO=XO88wpL*CFq^y=~(HQ%Jpr2{Orz; -zL+}1P(OXv44Avs-ZbYz~5rHlr3f!7m1H_%GdW7pwZ)4(Nn~Nh?MDulSC$vF!f=w|G -zGisJOLf%Q``W;>`A^2;lLg@PYF@M*1uo_6~QQcotOzE<-d-$_eJm0mt2Ryr9=9O*x -z0%eOzG)%DF$dv(D23DzmYhsB0A`^Tr%viKCnP8O$!sD1)_E>5bIxAOZREZd(qoWIW -zWc3f7<}+>lYLy_&t9qwTRJ&l~(7a9yQ^%szqU0XDR*({tNVRg}4up1(d81M*_dOUu -z2Prx9WSMX4P3c*rHCD8_) -zu$uT4ebB^H^q{-OOugoPVhOVOV{xZI2DHWf7KJ~P5ntbL-^Fp3ohl~Y)QQ7dB{xKH -zU8IUANUlhs3K6c|x_n4YKqA-Mh0TQh>uziYUZ$;)sYsp8Nz!jvyK2o+Fy&Hj1w8cu&!U?fW?V(+N-=ja$f^T(LL^@={o|%CK~!-0Bqw&!5Th_VTgRq$vi9Y} -z&iLg#R(P4-icl7-g9;V=lkR;$eKoB68jM{ey8U@grK^h0N|WAI3`HPU2uW6$WuK5p -zsl-mViV!hxnMmqveQRq*aj;gP4qSb9hdJ^!&Z$h!mr!M -z?TJ{G>Vvbli9v*t2;!hIwrs98;M6X>TBZjx*chtaYM>xfp!w7@y8bn@po_0dVQ*QB+o-*bdtElIlLFHgUJsmY*HFy~`qRkPVRO`*i0Ti~M?e!v!cajm!20Tw`` -zdvkzkLzJm{t4*xlk|MY~N~=W0=*Ns-BIhbhsDRao$VkR7y{|+sd{CgMToaM@OXTon -z7OOI3jp-ZSG^Rou-!zHv%20+wR&0lELmXjHD9umx+|a_TH6kcD9?t2s*DU2%WM$cj -zxJE?Buz)^AwQ<3kR<#pDyRvt#I92FFy6QAYpA{Wb1p2+>N}LXA1`%?WKB;*?e$Vd` -znK%6X8=14oW3b)l4LawxbK8${8qcA>)`x{JH4x3C=@5q#C1T--prp#Q2quPddk^8U -z%NH};_`sY=KZ*_FP$Qp-^Wn$e>^aYzJjVRl%>iCdH?*d#*}6Wc;+#oytsNS)dv}>G -z1aZd;C|;KfQ63~gWTA^@X9zb$i)LJ$i -zzD$gw+X4KRn+_FLR;7I#Iw9t2BX||LS%kNtw-tF4MboamQ=of-omjs>P(+@+Qv@X( -z1;05OQlQq;4i+jhG!c}}u-oRlPL`S~#AzGb=WU6GD&?{LT%Hk)|FCcMR{{>XNMrzv -zBZ;Yp#Bi_)7LjiF9Mmyq@aAfim?jiR0#(A;zx66FZdmdKH| -z2%YGJiz>gFJ7xpN!w7{+*V*Ym)wO6qf}91->ha>4D+y -z?yFLpg+`QD>yiRN_UN-3%DdyRguoZ;wLc7SVzR%Yf{CGXLzx29 -zOkr*`vl0i7uCD6Uy}*skiyf?IH_Fr-SzpjpuJJTO2q(tv)bE83N$3Pj#0~WQb!Jf8 -zEI_B?>AjT$-jpWN0u`q$AdF8!n6GwX%;{1Xu_TXtpgnXr3Ai$B?L-KR -zwq&uU!+IVVVqUZgt;UJatB?UY#@bcTSzu(S@UB`WoN}YHx4Cpj;3PfNDJd$uf37it -z#g(rUO?M-LTKg)P2iKh%i!@W-(USMh?$HzCczdySydO;D*X?{Op=P9%wr3Z`lC%B0uiT+-knLflmvxg9IePqwiOiEBfLQWc+Kj7ZmaW$Y_+X?jN$NMZ= -zn%rk@=VYI)%GG@?0j62JcV2h^Hv-(w$v&Rf?)A7^swujX+3SI=#8Vx?edc_S?z2{< -z?tSJ?TK3*6#y;!trjCAm^QEwlz6$oKvjX)6ASr{ik}dT<+&-^%7633aM0!B-N;0K0 -zfMnu@dlU-UQjc6ji;>)L|Ls_m!=N5!_jnV4-<6CV={T%rl!rn^gTwoU6m?OH^tdmo -zz1Z5{I|H=1FK+YnKD{QsXY({)72YedtJ+BHxAN%dikUz|i`FOal0l~2dQ<%_be+#BW*DcJ;?bJ!%6EBlTgwde -zNMc|6%Rpez#`O+Qi7*gkK!d(MVy9$%m-{5dZ0sA39hP24_Raf`*WVhgysvl2?KOx)YUZ>osb<{le5e -zWTQTaaoMDPFx~%#0q&DbN*t_5kU -ze5^8yW8+Qz#eh{??6$=gGJD$oVb-s9r`!syE0(Ql*Tn$Y$>^7K`#?6{;Wy=@gve$H -zBM$~+w5wZ((_S}h>$^vC6Xtc@JeGVwrQicJcN<+!+EG|H_56{_hk1IngU?guk5uKZ -zD~>q~xQkw5dl0McYSH}Km!gP~^vGn(!sMD2 -zyC-fso*z_=Iesi=S}y00+IWdG9OKgXg`PE#e;xU6!zWlWLj23LWYPAmv0zcH_t_&a -z8dWh~NJ*YUl6hmJx?_$!viqYCOIQ>a`XXK293qh!>#>NitBum?BC%2&#Sts@DvIOW#L8c%V{aM7t -zB0_07UIS>4*SLkMMKj}AYoP{+UNu><_*nRJ=k$SY^XvTPk|cNZ}gN8w>9-W6}_9Xibl!`*xhqx7oA7DhRQf4u*29Jw+b -z&9uWYId(Bkeevdb%x0*@h#uMHD;_g7xpH*-`^U^V46#$e&Tw(q7%Gt9TDJocog1Rfp8o`Jz4&`$+!>6<2Y0=gc=2oz -zNj~%LIhw%$+g4{{r8f4EA9%UU^2JqjRS&fL -zltx)(Yx~P3+ZJ8AOeIgI56+6b>t!SQ-^6_~XxJv&Ukl@90mORCBmqU2yjVctkC+&DUneG_y{W0Gf1RQXOg -z=o^7DP~mcrF098x~6n-XSo=IFN}6db%_v>#iHx;d~G -z3@p>7)Qp%nN)SInABwZn8FNRC=*bVU)wDF~oRguVx5v^l*jLtzVW2LvjT~V1r#98lZ@} -zeDsoTU2Jo-HZ;PD>MDIXA=W17w!*vyIk&vK=8U550)4}-%Ta8^*4}k;%jsGlaEz=+ -zzuK`Cuia$xEKBWpp+l>I<^&0cyB&(Rsy`_V=Vgh!YUR>ccU?U+BnCnDR>Avx+i};u -z-ebFz2nXm*(xVT>glqo*ZM@{&w?iS;%#Qe};DMR+OjNxZ(A%OC7AN`A=<5YJYn?ep -z+=OO63^~W6F7;;U%99hBq3-5nD>e$D0jN4=0Z6z2 -zwj%>Llag$+O?+*+VQnQM(D@j5FeW4m>|P5A5s2fayy%ot-5MT7MFHbUQcPqH2mfS9 -zqU~Lf$=b$p8iXQ0Vb=fb{775CJim&VJXs5|DwmOf3XFtSAmT$XK3ZTl{PgV1u+}Z( -zn5mH~?I5}k$!bnRfLmeC={Ogd2A?|}`?i*)1awrk&IOD0q2>12XGEnT7$Xv{NG+qCWL`;nC -zGAD6M*9POJkkWLyAc_C+`i90uA(M-!!V?29LOtYLHa4wvv8W^IYRC76d@&wGJaKsH -z;$J$PMHpQ4;GzVden9!#2YR>4%Cxf@W0d>YddSq1>k4SbVn>q`(_(_dNAX)I%pqs= -zo^V09&F4zSYt$!K35~Z=eK9@Lo-E0_4P#qhFbOhr;l@V0ts5EbT?ez0J-^w<5;nU{ -zY-x5w(UUGEr@fUjViZ^r|G;hVg=39YHCZPec^<6kaF_Ec^8A3!Wkh>pLi_QUjNV7W -zw>zZ9vC9)VPRPs?v89EP{|F%+!9zNPhhz*V7^3uPGhBR&t+>c{GT`wtgtu*^Un*m~lUP -za>a<7idf{t%O5hPgu=$yP+ThycNZ+er@Gl~7czDQTK97zJCqXm;hBEfnRg9L6p7i0 -z#uCm=2f##rr}BF)zZdd*DZfwU_nG{nCBE5Q7n6c0ODHvxP>K8n`!vnXw#{s@Kk#aS -zeFtbkln5z>)mp6ceOcSESjcG1E?H)YZP#-lfN2w?Rfsv$jl)jH(qF|~3qoP9%Nl1KaaPw-5T$&dm)J~E- -ziQBNfj8biVS8U~xaP9UZfD!Tm``;U|4|ZY*ibJvq@aDk-5O={&3r~PrPq&rQq7m_X -z&I3IrF?Wl_{Xr@pJ%C&865q7w>hA-c>olcUw -zu3{PLN^V%P8kO}iqU4(qzUCB|&94;9@wHI*)Gd?=m4&TWC^R~zc~XKNdU&wf-{*^t -z)ThuQABss_D|7sjZGCoz!i@%Sw+lL+<7OPWzryc;M)S}DS`4hJ5p=h5>8V>KG8Zjp -zYqJQiqqV4czBzB|W+JI?@>-^fp^(>1{v1y#fxX;46qfX+$;%ZEojOQo%-vb@o9F0M -zkZb7`;cKcS<4YuT2T@5ERnn-ym&8r><_rhkRbnt9)D^3`z1PKjSo5W1;4e#z#4qD@ -zP}t365c^BA$e+)s|2h$OK9hlW&ND5PWWJD%aI{s(xgZc2jl}=Z9DQF=s2utR!EIhy -z1u?1TQ7k;p3*FKJd3C_EQ%X@vk?I9zOclq1w-SJmgxA>LDw($^k#*kf+8Iu`v;>Lt -ztPuSGvRu1)W-d~MHdi3?HO!eT2oO|jpG*0^aZ!&0y9_Tz`k$ud&=vpDi1*>l{w;aSr&`Lj}mXNN-Ysq -zPdqVHHX?|)g691~uvRr)-IXn2IPrW??3wsKL1R| -zRkmmCvQ0iO7zS4awnL@yntWTj$BYb~zFxf9(dGqmpr_OBH5auht70L|;uVn4uc7m? -zTw$~d8uQ4AHRm`~8(Y7^W3ucdAbUJujxwpGNMxoh)hNn7Hg&e{6{F*$dk*a^UY8#W -z&Q8b8O!+*v=%Y+!o(O5!-jQ0(O2p@`T|kn08Y!Ayv|t>0#{S{svGU|s!*aLG-gN9T -z_o}0-B&2-2Bw&|U7KSG=w?SUfmLTI5v5aD{s7H^a`znn}15!(`m>I~n0_O`$hsP^j -zEy=WniUD38fxDDG3k)m?f2GjqpcdqqmcdX#Fjiof079T# -ztHj=7KQOwD-M`B>xIG)q9ixvv`#6C4T?8DDO0jFDA?`rnp0W0Y#0i~)Jhd3^odPp= -zJU(7XVj-?&BN1b|STOssp8?wl^3hDxCwi`JJBcNG=JQ=A1>L`9T`_J_`xyPO;yuJ% -zZG6t<3*PhMccC%qzEvb_>{Dp$V!OtBr*`)PncQ6%nN4I -z_Bz0*WIwq=HCFaCVa$|QXv(m#;}LQ(tN6NZgj8}6g6~G6r-E3^DKH}l!-i&Jp=aw0 -z8zIES<3PqAA$y_O35g9_DG`mlaDs^8}btB_5P~}{vF0_&_70*bSbF)2!2aUHO -zJxWI&Z)}|KN9x!dv23eyD$a*1Qj0kk0U_DyN3@RlitZ2bbTeixv$i0QXL7*?;jP6I -zQ?0@$yF(J+-tcyNyaUu;EuU2OH+0FozEN+K>y -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 -zt$VhYDg-qXo02!JIkoK_ -zuM`*sL;Hv_M#)1VvlTrB?~B1|cYDqG+Us5sLiz0EAYq^&2#dE4qQvTWw5Q^?7k-eM -zRn8}`@V -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 -z<85_0th$z0GWOBSsLBPLm3M>i!#bY4(R -zZR&9CQlz?B6*YSiGnP%-3F9=1zO{pyCB{c0#zkt(VGU{qIhZM=J#vI-(X!P7D&^Fr -z6E5wd7zc{=X~(u`ao#BAZu=h@vJnYzPvWYMIZQ_(rmc_1+VXI`$LqKiTC+iUSd!b> -zaRS0ym0kdwI~E}Pz6g`6dQaA3i3&pn8G*|Dt{QRWa7aRuXZ9}WHYACV2BGdE_QrUN -zkVen`{EcYEFrm_?ikLrmP<+k+xxpK~oY{bdu$+`t*{5IC1tRc&N0XdVf4|%Hkl$}bcKRJggKS2o>4Dhg(NyN| -zJBfkXxz~$Vc2AKeH{UCM-<7O%Ohygbf>nwvB#Y5jHNWS8HiWFvea`dnk*v#NVexti -zi~v8!DqUO4jGa=6dm_;15ycRidh5jA+2S&&oWD -zPZkoI!sk`K$vHuU#iIs0D3n~TEplyqLuQh8B|Cu;#|VP*t(lndq!~O8^m>^wcnzRr -zmLI606-z7Z5@zkS)FBhNh3Bl&e=e3cP4${?@PDbBcl7)nlxUz|fvBO|$R`>t4t1>t -zCma2bgy+d3;4g7%$mhG;VN-qmr^cJZsset(U1Y7={I)pML$tQ-qi%AjkL70A?jjFl -zr4>kNIV`QwG2<4Gsc~al!nslij;(BYEM`89@I1nce(`~`xzpf+Q^h;V3vH838BydR -z?k6CWtHYfZt$x>;0BdG~ -ziBBVAqR>4w_U1ks1wj@xvs+h=-w!NMsGCr0-;tDeg2)!9^v?3qX-2 -zLxPY=blMJUSA(Km(42Xq*a~4SEZ)8mCRteroL)8Ua=vEO0^0GDszxZyK;SjBb|SdirN0-{B^Stp5~c( -z#CA6$6CtxIpWoqe5tngS71MJo6jA$0q_3E<3oTe(|3(_ZH4$E7P!B*J-huv1ZHHF+hP{=z| -zh+^!!Q^@yw*}f06fz3>u+u4>5uCQ$LLA3Knsm`IB&hgre!*+V?40KtbIjjLr>s52Y -zTrFFg<_zi-*g1;RZHqS=Gb6AA;J!@ugm3TQrA!cY9&a7-dLtJ??=TKLkp^X+NFEcN -zg?ZtlEayH7nvvfWukt13?RUr;Wv|}G`vDsDA>Y#|v+7%x68J{y -zKt3E1^me?3{$vPEx1GPx04=Q&@e!?LzTPS?7N=njW)TK&o59?RM*CdQO?6<_?6(<=QcNTG3$NS5=$s#U38;NFp;7aXENSII?HbR*m)G`5zinJs6@-vc| -zJ&@T0nY@fp5GeHnh&C+;4i7bkMU`EjNK721A{o=S!C-uqYz;(0cS4bac6E7sLnvMo -zA~Da^oEK48=Xeh-NMWNF1f-lri5no_x(l$^8V9{dXmWNj1kbEmz9x(OxI>PVT#Sp1 -zn?}b<2oW};p`j3&{3!uvDW)66@`ODqWhFE=-o(%}A`>f^wvE$xsw^m`h#PE-_T8qD -z7_n?d*duI-Z|I546F#DJUM8+B0~C@jY>+*#tC;egd3HmJ^|pwJ#;`(J`7TeCK7ugFN+4elr#t0O_-^+T8b!FX -zGF#{;diR?Q%#jcur(9v_E9~%4WUPoZMv_sq-Ps*G$y9Q48yU{>6EmWt7#~gNVSoo` -z{!mKA8%;^^?nt$6GBB7i(t2Y!b$GAX>;oaeigk#%A>5fSLxh&`J9p$A?)0u28SEU& -zZzjLD!GhGTA`m?8VE&cXwtvTFZlgA1kHhIUcDQF!tZ-nW_0vC=P*g -z&S5m2j$H|Z7J(F6cdD3&ZpdX!K!@a#AAwnfK_gdO5=L|{dbUyqyrAO8TN6)PhzEzq7|xr3RRp>XmrZ6plC>Z@ZsIAWbco*@Q0yfbD(RGlNxPg;B% -zm*?b_%%=MPD?Q`*3Ov))jpR+u9s_gn4-0w>{c)>H_c(LPOiS+)writI8$~(SQzqc1W!D%@Hxs8>NLl*l_RiE -zur*Lz8TPjt)KBykE5N0pH!@_xdjqMvexC!92ORz`4~%-2GpS4%yerDU35 -zHoH$Ae_(!ox_oJLzg%(0)>v-Ur7TpG -zsaPS*cqipJ{R+gn>NDbUBC@G$k@Yia@xO+Z(>_)L#5l=qli#a8zwyE#Eo7A4jNYtt -zouw=VE}0B{4n=ZB&TW-im(7SBg@``73!t$ewv2#=zcd3~C7bnEIDQGq+d)dj+;(W9 -zP<>qy&F)0wW?SU#Q9mA8zwcn-FSCYXPLL=UAftw=uZLFE7y{doAhg$sFhtQgh?R-Z -z;X!^?Z`C3?Gg?)=3S>N7BuBzSeXbKXQHe#^ywI?bdqy*$MCNcvLiQ=;FTe^HG=$$;y#QR>!N8jj>%$Fvah|OGnaz#4=;>m=h(U -zEBJCZkaY-EA>%HUbVo`O5_`8?>NmaD18{;lADZy-v3%+qCU|DofZ$_ss=FC)zTjTr -zBopw!oOtyZh&UwdR=L`#GHe0zjdl%Nl!}|U!pQ_~>$Y3Bwdh@hy{HU^gO-s%5Z;Vd -zpaX}e34y5|$__VFO$@mC?fv!QliJ1$`ep97(ku{68O&LW3eW-?tEgBJ!*;t_N4`gd -zl**LI^l4nK`=yO?P%ofVNIyp#-0}I -z=@wAYk>x(hqsk0v9Bmw)K8a5?NBRR26zmMMW8cORWrjjz2I2aKB=mZxL7X(A@ler~ -z0!x7V#?KcP#kA7I0KmXd(S-*50Ax)@90^4N -z<429$PA$J6dpqC6vev7WdTQwE(w}4+sa}pcRIP36!?K?5*nKl}5RvLp!}U(D;<6^} -zBMQT;6`RYWTLBHv+6;`tsW!aT$bi!prFjMtE7Mq+j}>BQu;4u-O~aDl(Vc+Cn5~p! -z9g~>@vM6G{{~<>yFMeei_-jgT5TM_xYl>2FWfkZkU_T= -zkVL|pkIe$IFL3M4^BDB9IM$S|lOCOT9FmubtA -zB|NwD@bRLpw752fwpZ4T#+w7Xk>>NFRf&lzi>XX%3;ivasv#?xa`j -z?kv)sSZ>&D%UQK66x)mf7_W(|;lrKX#oRTEJf7wV#g_y5QeYjjZE@f&y&5N2Ou^&?1ej+V*}RX -zKffF8$NC&A9t{-`Ynmd+?f$}8PYpfSO47B>KCjry7Xr3QHt5j_VZ9}?WFX(?L0y9* -zlv#>BvYNSV43WIs7W$ry$wq3w%c=1Dc_k;WFdQywJ-%Wh{8NKkzSN}~SC|{UtxW#I -z3~@YBblc;=h^|oBv?3w$F@briuC(1BDCjnyPv}sLgw?vK&Nn -zOL~%-u+5ygvG}b>+=lqFLakF0mZqaPJ~K&%8e(NJBRr%j42~UB@Qqv<+uMl*b~#?(O$d&t)HDfO$LFdH8JUskqZP-dx(x2V9a3GrYu$$DzFLSP;9gDubU=&0 -zq4#a29SI8$kE{C~oORgUsya8GhP-jz!C|P&{2dFc}-zv4oJByc2OqL0W8`2aT6xq+iOWwl~!SKSD|6lclnHL&WPh24HYjs9_u|C;YyT3Ah?N$T!N=9cYm^EA}u`13FxJ7rMbupg> -zBi^C+0yWtXPvRhmUx)@zQ*xM+No>}yj-&+Y$(j}`ayB!K+Y2z;6r22^-VXHIGO7!) -zNeZ!f@r|c;Xu%#2FZj5Az;?dB5nGNjodWe^k=FAWnG4q(sCz_*xn%r{a=SeqHBmHJCHox5rc`FMa&lzD#*}+#ii_UvzT++KAPSDbl*IAK -zhT*>(-ShNE=RWovQFXf-mK6tKe#J@6JqSGFO;@1=10k~x;mnNneK-0KWYA6t1-V%M -zX~20?x)8p)t_-{cLD%w;LB`)3aWY9M6k(Q=?!^6C4HVp?GckD?!YZG+LMkWB%VIk( -zB#s+Am`2mn_oVzuylNpbCZKGy;)o#TN|i7gGRh3`i31}L>xzUpzkD|EG**-B(B6l6 -zHiv&`iWVuEOaZ8eTm1I-J9gqLeoFB92b5JGq#ZqI<9*0s6o4BQp!|lUY#T!A;l?wP^Y<`slJ$iZzsp2()(Vx8$NDAto{?CWIyRQrvyuKqz -zx2=U)RmG~U>Fkl{jsD^cFIexR2-$7w(9oBi*LZMS&UdVphoQ4_HLEu<_N*nJqekw+ -zJTJ&HN{%|2U&U)}Rc~fx&PG6EY?LwUt)ut5j`TK>Sl~q;+;MdefLMwr&UNIha!7bv -zle$4<(sD7<>%86P?P3TM6*JI%Vh%~UXKu?ntgSvz( -zmxl_*qG~t4yN@h%`BCj0t!@=OYjMc$cOiEyI^&rYK2`{HVrN<3gbqeP#@o64mYYz7 -z_|Ud&T5KA(4b$}kMiexZ6r$%z;s&< -zR-4&+IA04#G8wjcGhgQ}aTX6@O^7Q;$8N|TbYyfnh-;OrpRT;?>N`i*xPX2vm;3TA -zJjRE`YQPpJc|78ldjTCF#-Q<;^qQe9Lu(E4^bGGZ!el$EB!}1%_xUy~Yus2a_)hQF -ze=gyR&PkDXQ*7$Va7)+orAx3a*Z^G&Z&)8i9~XqodKV6By4h-j!2TPq-Mi}~+x3>^<>Y-sxKEP?H-3i^^qb1&=gSjGDEV3E2y(^&SD+7&}3och^Lk{w)i4=4B -zE%%6E|@k;|Q+}U&6qGs7oYYLgz>I6wNI$;#pqRUka+2#DZmlr}`RTeJ1 -zYa>(bUlK* -zGp5=GS0d6DqL-<30_CDCf`|*)S*U7uGZKsaRQ>Gi*%=88-~APY8Fb+D0uk+OWZ(UD -zzAIk9fbiEpi(T};^5O@Q!KDTK`GE~8zCb+i{_cojR#1qXPR@=OX9P1&=Ld%=Ikn;f -z5Y4aSQT_{7V?lt48(w(B}-g9FQZc7VIOhmuD0kMy^x(a -z1tqOY9AP13M&<|S9BzBpln)Qwmmvi*z|W4xBcg98NLm9w1BeqQLxHOGnqS&8n$ -zkfIs{^5G7=6jH_b5M?1ZTV6;n6SoN%!loQJrPoYcFJizoKhFvpxhH6!5y%1-EO$Ai -z{ZrB1@D3S2w9c#LKx}aXDeVMG1q3@a1)zTZ=$(9+c>|Kj4#UuY09kf_@#*>}RE~j{ -znB8RvZ?t&LMm;prxiowdv5$duWjCVfV$)Y(;Pp;onidPB5w8$__d+(nfyIQ~rn -z@L2@g-DZZ~coCaxUL^R~0uj`K0GJ3E9m++wCWy+y1jyk*IcHpf5W%P>N6>^{)w^x? -z;>7g@gwTyz$r@Qa?gSn){HX)`69_s)ygzjh^RC0|y(?I5!4qA@)BjN62m5P0L#a(t+ -z+#4a=AD(U#0^b-XJG6g3q$Y@ay41T}Tptw;sNKtAKs^qqxK`Zha!&AOnD1gj(9k&x -zbg)Q>1s~?34jH4J)Zh{SE|=^*yG8?QTu;|347`2)A{s&rzcz2Fjmq>-QDuO4*ulU5 -zgp)B^?7y1l+vWwS1pw@dRo&j>Z1dgK0&QZ;cPNf^hRaWU32qokFTr8rEzeL_t8q73 -zL#Dd%W^y-$c(if<;s^8eakZ+u8sdKa?n+#gNGjz*WgPyfFyY|PL#S!5u+37|*-6+7 -z>i1V4uWzu$eSQZ4AeYeiafRlBIXC2^7=nI(L8I`M*bU&41)5a@0vt%_0Qibp7X=f- -z0SzP!AaP{pfc@rr0Tut<)nNk#ZQ9KX5E_9`JCEe{7+1#K)ggiawdW8ionQ>fg-WoRTU(C{aQVd -z6IaYc5)N!6Gh+g;!y-Bxe`EcGf#b)Guc14)f()c-Jaq4xv3WrFhxu4&nZ`N)%;;yr -zf2ZeAEdzx7AX#t7oOyukS~2DKoI*Ll%b4LMjG=f`p-U5{prVVz;ZTC)QR3#!Np>&K -z`EC4l2tKF3S14!DY=s1m>-fq1H_9ew=Z5Ij1 -z1(gwvgSU8_pD^El!>Ya$`T@1nrTwz;k6j({$q0%Z7<({MPS7v6hT_~U<0LDj{ -zsf52ItBr(2g*9S{!RICj%^MUGEp1;gK?l2vEJ{JHfrY3yMU!hyksOrSGD4U*{A3XZ -z&Tk2GxFY9AP#G->TYE{O;eouMIn{F=+ -z+zldf2oPZwVUQRSb0x$1Y&FqeVU+xBQLmH$djjH=WZapdIF7#{^4}3>uC+*xf(X!H -zGmMZkfMX4Z%V4G_v5a+Cfzd&GCc{i%DRse})SnITURzUH=*SR1VQ$@kSQQ}Ql311L -zsSbgl5!UtmihpG+U{`YlT692;Xg4Dc?!Msf?T*_sb$JS@aK>Vu^lw~h>qkIaj`*wR -zF^t)*5MgmSEch-bWOrEsv+&6^i~YUT?!!x=%+^256cx?P438+{Ho%u<1_tX^*azZ; -zsKdea76xs{`QTgb3^w745jkTfbQ>g=%06Kjx;SWt(L8V|!-#6vV}8@fjmki5*Yz$G -z60K|m@Nt3=+{c+1bN^4nw~i1ikMledvb|KoVxk{qRwbj`kVlmgamuTok=XIvF@t=qJ?4H+C0ZJT>wQKZ^oAux@zc -zCW-9@;>dJE4l|Pi)@+{6Q=^2Mrh!>P#qyBHFpElxe2Ohjh-n4fQygmB32!$miAI-> -z5U9n(p-?(NpfDw%ltsi+EDl8H(Pr_*^I%e!n^2yev9Prannu;>)ZDIi?5Wn)dZ?C> -zvAKJVgp&nY(D}}-0XfZt9(^b4z=4Eq**W0AVb32qoH>kHlupV*j)m-HHQpS3I(v&k -z>GPx43&)L#P#@&$SvhX|WHa2*%J7CCCRyd%JIMk1QA!Y|!P2C#ji8XDlmgxB;O}mJ -z7o@=C7ea!~oeIE*2g)UFIm<_yuTG{!W#{_ccz!|$k_ch_DVCGXLQ6D{ -zV!X^p;M@=ql-LC>&(LAuFW4>^7MWn_OhXbctU2CNY&(*{^53!PBkvC0gY+5NZ -z3O_P55!^@Oba+F_V>OMP@g+jJ_2VhdHu~j|Ot*C-6!Puh1?sM-%mW>fES7VYfIwd& -zbO{NlBb0Q@m;AD2PIhDw&2SMxs;N91!rZqk_(~B5i`Jfl_?~5XlzWsJDf02njx16{ -zym|K@^i^fcfFqFJKX;gATf%a-x?k+525`TP)si@6YNxi@LX>SptfB;jZV!uAEOQve -z`vn*)ov>Hze)v1~AX?7lRYh%!H$DLpzT%J&BTr;XxFB)Dvmn0AHrVhSzfA9N&#-mBByO#C&{i{+}m0O5$nZWfhy4Q31-KWK+* -z+M;f?Lp5!wy@d@+aN=PnJoeZCh&%*wJ2IC)uvSCeOq7+pI~WcjS0qu;ysvk7H=5;K -zTjN=5I%nl~+RbiHm3y|VkVPL6nezq_@yOv!aEwiQp$av4vz0{T{9@VGI-{y-=ob;f -zQ)0ka5Jz-IfgLgOL}r9wklti22TJU?W<86mZaYz&AR#XrFU@Yy0qiviO3{R9riLVu -zt7i9TD?`ofMF~?m(7j8P155u!#6wH -zstCK)3azv3bp{DLSX;AK_>8UKxCI98dh&o9O}1oWZ{^RtqER}AV9vTVNC%QjJp7gP -zwQs5Mi%e`fvP}JrZrcrs%Wvmfb`)~G_=nIL(M~+(QIH=srFejxaq``_QwCCbhH -zYB_|~5jMMyj`2pzrXC)T$M0dh9I&s0??xhFhf$3eDb;)N6G)3})EC?DcWo8E8%=mC -zhGphIeUG{%;onB1=zVJhGUYw)^hAJif7y*LC(kdY<0eP -z^Y7@On6;W@f9*EtnfsrCLyH$Md>-i6@mGVW5Yi?yh<5D~V2~m*?aJmORS->H80K^Z9%3d*6-z>)-xs -z^j{;?#u+~OFHG#eM*mknc(@+?=h@)-|NZ|=&;IiN9sT(a>iAFJUoQqF+FHd~<$JDz -z@BddQitp>~zkNT4#mcNLyZb|dvrtvDg7aU#-`p?Jmo#Z8Rpqi^?tE8u^>UNXk^JA^ -z4WZlPN_Rf9>&2-xz*$ZQ()dvq=yDxZ-(Wym)uViyuZwc?SkSD-&8J5KP-gDx?PEb3 -z7>?Ivcr*yjh~!OOJs#ZV6&C%`pc;pi?(qV2sDMKO#R8Vfm@ljiyAM@7Wce&7;T5lv -z6c6)?s|)dRfNkBytw&EDtHHm-i%TfU4`=sZ71DSl`0l|Vsz(dl<&-kaiI1lJ-RQQc -zD)`J{o#gya-`^C~@_SsZ6booQ(q;lRnk}`Oa)#c1#BtRKukaj1^$Ge%iB96MUI2u} -z9Suy6^oamHEx^!S;3c+!m=XVuI@V_OLhTi0Gx1vEdCgLi}I>ti@hcab(Tx@1z#-cZNm062v2_QhfgpVHihth(tYr -zWdLsS6Xw@Y<2}}+ACEN;O+;qP7F7}mZu8i{{7^W88altYq%z_j#3CZq5o# -zI5@{yeSRybPJ+sOGZWKO#)C#MN|k%i?!sL`_db~eI$9C&nuc!n9H -z8U})1os*Fjr640zsx7oFq1VJmNgDA&6M-BbL)N4K9i(QokIm1M9G -z(4rks_cnV-$YS#d3s{0oCr{6`U3c>0??$xcvqfDFefw<#Q-i(pR`WQ(PjoQ;w%Nph -zW+u1yo7rukOfZCm4<#N@c?zS|ZG&@K&X%nu9d^1F8IMArmY8`~bu0?%8NWLS=7#C-e!kykBJ1A!c@0pQH;~8#?vD0IMD(bP* -zG)P0fh*^vkn%4CUpA8jd-~IEGh5qUL(dz6B)=l>5uZ1VIwOltH5jl;tL -zCP%_}{doq-k#2&D{@-gqM)Ml#m+CgqU1v7yO_x|=FMRd-0}L|(W>iQM_qRcghfXqI -zm7@laT2_;*C&SPbg=#R2xhbDSqT^IvUp^A3{s#IX?UP}?SXFogOwH=ia56{q=vy(E -z?uh0GD*h98F-D*8k+`VFQg3+``mOZT{5wnwTQocHNEBGyS0I|2|LyS2#Gt~e1?ftM -zMPAA!p2s5MRo*S%sC+CO#Sruf{>|XK30aeUEGP_NGW^3bLmaki^z8_Al1IzLZ$)`{ -zdiD&~X2X3w+`w1ZezW>!Th$`_MpE9TZT5&!eN@^TKKE3@$Cg#m?*gaZd -z1-yRK%(mZpKZb{f@54SC-q!vy$+x0KL$q=f`i*#a=u|;#JASim*jD#9!l~PD)~$&!>H7#Q}5HzheMvX -zj}1N4Mshl+dE`;bIay;`4gJv^mhw;EqqeFpY6{5H>P;{;92+khE>bH*F7AZL*fNYbPis$uvR4ZC~UFp2f3vI(#T?;wJ--S -zW}B;G3n^^^iW0DT6ho*W#+=$oB})~9C!@_0mJ_Jh3z_+C4M~4b*0q96W*`SvBRVe^ -zCl4ds5&2XUl}$pT3y;olNdU%GKZvk{Ygtw4@(LznHmr@-%ucze04h+!P;Q$siw66A -z_F64-GudP@MHKgDeBL|bV2~X#6};>P-{jRLI!y)&Rxm6>`Jo%79w|x#l2T1 -zWyXwdd@C-h1^X)iOtQYb7*oKeD5>_14Ph9z7Dleo0mW4%9%-N8IvE{}Q7RD*rS0Qa -zlY+ezV;?6S?sXaPit+!Pyu7v-EtrRgYcGYh+@W=1Zo!D@=$z}M+M(5vawhFM_8?kG -ztmdvu5e+fGhz-{@Mmn`p+1~GyW;mMOH-|JrKzn$!! -z^4WV{WzuNN4SQWA?}Yg5cYl$ipTBlhtFPGdYAOXfYGH#LqnM%Xj}typ-R_M2BP3IIJsUq -zu!}f^II(j~;u(QwgR!ul4Y2G2jFS<_lry_mbUf4Oh&bBOSQhK@Y^1>AG{-@N67Q)# -z@Jy3<7C9pYlEiZgdPdik1o4{*7-ysaAA5GmK^IU9Tx6&Vek}sL&@_08^+{n*`7YFe -z(enr>?AbuUPyqz}pkScDf<_851kaDp#~A0Cr2OnmE))&0nc-&yq-A>kjB9gft!HSh -zVrZ>mXm_uM_Q8kxMTYuChWbT@`bCCXSJJk9eYW)tieutMAQmsR+ -zgQ3>JQ0ri*bpW*{u}9LM28Ni2UnV1z84nQ-71r@a*0n}fIf^9WQ6pYp4`t>Bc2QxT -zpBYmVy3l8)miW{Xhi`MCC^K}NaJ-8%P5Q##d}-yowDMhAsV=Q3+WQp=&z?Qn6IQ%S -zd&yI*FA9D}O$i@?ihj<#=lU?-+`FV_p)%mxGJML-a3rHiL_bZ6MZGmkMYEwn91tRwC{xXV)PW!geNJGa{)nej_`qiu$m4r^14BbY5PCl0 -zo-m>zPyq+QcsF4V4}~Kg3P(B=j&vv#Ae?8)c}5i~L*md7N0aY@XrfPOuB4+1aBg^| -z!#+`Dk@KM;QL -zMNcmTNc1DAvX3s$Y3RW`T~g|h-^)w6`AUf1^AwY()`o~C1w=Ax5t=CCCiqle#q+~J -zfpPGaj4}e6DkI@({LJEK&tuq@184WjgRe0Z@JwELeEM9%G!vGsqa_MxY`iN4_T0?E -zXesd&KDiY9!m8lXs=#Uw5vOvgZ@<*HKa<*d#vcijeRgI%{5bF&%?s3)p7RKR=;Dm; -z>W-e%Xo)OI?1hZ*e=+n|K$r9aLBRXL&|eHesEjv%F*Gt1Lo-HGeu9UQzZe4EIkchk -zF(K-MKPdQ%f{_A?lQDQkfcgalsSNQ#WzH8mZ3@6RT+%Mm|Q_JzfLrq7?Br3gb! -zAVY}LSVs5t2NLnpig0N~fT8Z*AbxBKKTe)2nw~i%5ot!rWPTNNVTf8vW^-<4bFQM1 -zq0A88@54D)UV;soF1=55vdU~$&14208sboD(sa*kYzP8>Ff=eUG!*0I5zZt$8a9wD -zOzfG-RId1A3#RU?7u|m_B%#mveHSziMwAhfFNRm)@j&Xk3}u&R0;n4ZP!1k*oKx#C -z04beMpB?En2reVQAo|=x0upoylh2sLcw)|UV$OIz9w-9m`jKR=_X2*udrIgJA_-DXcCz_1Iob#QTUapbUP`t>iK0qbI*0HZ(0 -zFf_HG^K^E3rdB0ndj7$XhCWkdfS)|q7vbW9J1-(C^X1ctCX187l)!{*$mVWF7m6mz -zJJQUX!HSON+f0{s0x~lFF%S+<*qKhwnNG=>O~hm<#G*@mJrzka(}6wHDLFIC6*|Ia -zHX~;`5eq=c*x)cii~#c_f3~M0E)n2|&o8)*AmCS7pQTB}5J$f}=Wok^IFgNLHab5$ -zld69vqEz-=rS$CiR9Y8K(eyrC$>KzwJ=f;)|8lE_H|lhk<_A)yXEQc<9wsVk{#^G5 -z)z23Fwa5sciuUcN$ZneQ#giAfOJc0HUbQ(Hzo84IKWISvg6+(p)g)ytPkCkp2i0Wz -zJl=TMxMa0W%^Zz{Ih?b5mq>0#S73N -z?giuNWCM$1qp`X7qVSPWq+cQJpCN`laJ~3h?4s}yy+v!FQRCIg$e~;Mj%2U#F2W7n -z$#$=j``Gba6rK{5@rldG^JZ5B4sZU^{n}8Ts$=p_^ir&H^z)KAv5jFnwF_%rXvn -z#%|;D<~#?rgzg?~J61!T%dHw4@tqMzf(oaqTM3PY#w$W6t$>(GB_b!Ote{`MA<9# -zLd+ED#Qs97;Diy3qn`+`BP#O>4Si*8oM*4hte0`F7ib|n{mBoz4kngl*uOer9#2xyNk6k(Nr+wK`~L{zPv2|LM#Hlt -zaiA;#JtvV8|MdMUx;|drvswmmO^v+Xe!r<r}pY!@Qru?{{1H3-hWT-uOR8~yZU>Uo4ewBvJKNz1?LQ2i}x%34HcUD -zb5C_A_Vm6k7QIN{{b}%x|NX@B`S)@W{QGseAkC6pRfKOnGx*bgU+!O{9U~R^|HuFM -zAJ@;X7vVi!U42;}ztoK}KkmAZ%bO0C3BQrXiw_fjf*}ogt>>UAH5m8kNspci{qx87 -zKMvmg_~r}KXJ_)@n5-icoJ0suf5v+!MrFTVe=s6uL$+v`fTf+~_Q$_}`tkFZ?9(qd -zKfnI?+lPet`NvmZu0Q>IX#tu&$ -zo;rN)@Xf#f$IYwH*N`n?e!713aG?DNOpQm$3U_#1qA*RNlG%3gi^@a6jLhaW%Fyk1s#|J)2~&K1gHu)!hbX4(<*Ln(F739UviI=`ZBy^T&7Dc-mu3CVj@UKI3_h -zp%H$P-*@tBRhC)%%Fz0%Kpq|wLQEkDPwX5hMVf~~ppk8XcwL6ovY578%SyLdE)WMB -zhN#vhs6H|fYX`mL@XF+ub@7QV1u~0nx!yFpX&jNSddK}>-!fAv&%q(8UhAsF8n@q2I#A42yaYEiGWwBa~P_AA|TLoNI -zvD>qzm4j?VQLNGnpIGl`!0;SbQINV0ABZQ0bSOdmRE7h@?_mjo)fR+9rgDUMRad*s -zR`F(2wECHP)nKHx7IE~O5bw!eb@nD(u5%&vxc+Zub{&<9C -zy!&i#ieiCd5=MRdI;-GsS4a-u)JJ=c{1=QJo;WPc?`QXse@3$?pOX=B@pe`TAe9M* -zxZgn4#x(iA9Xl-Vc^7A#$>-g+UZN50lOSKej%{D~od}ul=|c4<%f& -z+gRSm$&kyD@YG?h-)osvm}gCdC@y6h<8u)}P7mWOXIjRG^uaG^?A@Ni -zy*9z?y1Aiym!J7}b}ICuAxsll|=Wb5M1fJUOhdt6FL0NO%)*AsDw3(~(5 -zZ06$TjnObvz+y;9GG}q7)d=5-m3~jM_XRJxWIXw1y#eYA*~5~dWh^#>BuE=H0N0s; -z@&hd?29xt~Cq*pyWxaRFtbc>vL|!=TEVao -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 -zqJQ`H!@pL{ElojM7LCBsswk#39 -zmEa@6|KjPX3zkK4)K3>yh47>`=o|6;UN8+d?|COgCu%u_Ru+Vs=8=fH@nIs;0+ujS!r*J&_vTLaTVr>X -zkBnMkH|%R;f5PB;=L0+~Ar@nxTU@r}ZB>TvHF`&egtlqVI3nF?#mX2a&wY6R8pWLB;vcvQxXGf27SxhLslzGIN5d(`?vaiUen#KEu -zpaUUsUl52W*!=o_0AlDszLaoed*&O=gS2np$v#aQ(U=zT(}!5LUklv0l=?G*YWBAe -zGDQ;Lb8do96-_MOxkWs;c;}af>=pwqV$gF%7CL^WXks8LFEL5BLB>6r9M<%B -zX%?9)gC@}=ohmgoVCdX{u`K$ffwPDP=r%5rdO{wlewKuLh;sySt?W+?SVC4oVr9%K -z!YcE*KBdV_dYPF-KxP<7(Vwiu3VUoo3qG;5CducVScEA_tuf%-02@^s_h?J-!oXQX -zs%VXrR`tZnrFAgTGHWiT{)!ROXATV#J~Z|PoxZSchAjWax)#}# -ziykKqBFH&Ui*%lr2*?XZUZ#<83FK0<2d#lmr`mX?vFe{1AX7U+X?r~%uxUFX_3ak} -z_I|0P@-_X-seub$rb~;duYGFGm+hKF;@BfB5h2}~og0ZI@G*uZXI1lbs^xsDKy&jf -zf`Q6ZKxr3yZbQ&>ji?)h;~uRqv&}S%5jh%1yHBoB@>v+ntY0vdhKO7$? -z66!Lco<^#!c3t5HcAb6+;d#!6whE1x=y)MVEqfc?SvMg(z)4*<#x;Ocv6PUFFoLLo -zL^8#pm>JWyDk3%DGbYDi=Y+~6uZ~ue9r}q{I4ZWE=qk?`+lb|GM@Dq -zxycp6nAMB>O=3N&s12Ll@7_iJ`IPM-EPYP_`i(Dj62S2<*AI!Zxe -zdOA?h2$H8GDSphwcDz;w!Crk}-J&DF=)Fab{-?&a?| -zAa`_*#v7H5Yg54LDar^pxnJ4mCGYIzau5nAqD#u<)jf9o9jSM4Mlix^d)^pQdMq*tymO|Oim!^V@jM^I5ysjd8X`i8=XQNMJSk*;N -zzQ`N&Z}LcF3;KhnrYAv3d}#8(dGvuij&~N2KNH5CE6}P!dzClmUDTM -z!m`M_U0W=YE>9y2P5Z{!7Y+`dUK}sZ^exM(NCzci#Hw6Yc;c;u|5_&+Pr_?j_%yv$ -zAk0yNjeQF{2~muWqWn8iiNkFPFrB`fSmYR07q+LLjU%N#m^BFfsvgP(Upp0s3Ip-Q -zk?A{AWKT{xZd&X=d57CKXJ -zd8JzVH>%Hsyr%QBU2EMM18{RB<@6)L*iS>1ZK4Rrx6t04r<>~nt;%HAb)1rul$@qy -z(i(;5G9#Q#?}f5(eT*jqVn0(!aeSM@Aq$?V@5*98)(K97={u_5utQN*{V*N68uys$ -z2c0l_br$)tKa~sIrDVJ8!r7<{SZ@7LA(SnN$R3(u)B{dLIzLabmml}NfB}syr6xv2 -zZJ}OKeNZy*_<%35Y^a>)y1{L3x$}ZF;fWC~)bfc`&g`T*tC;~2qw-d#&T7%p*so-4 -z#Z{7ooE_MpB8>i6F6^{2PP?;TmyaLgeIsEGojk_-!zYqi+Xwv7L&;F>1A6s!y1~%n -z{?S|5MT-*=PQs#y;5Cr5KS(osq_{qF%g#X^Oi^YSe}g~y27l`LZp(3m={F-zEW-xmr(GnrFy6E&h1rue(AjASew4^&r6wi)Rs|EV -zIF1sKu=)!bV7sCafetb^KCM*_y>;TqV0#U5X8{l;9?2-8GGWTck#ndc?dGISxh>;7 -zxiK9kBuvx>G?1KH1Ms|w<8^Y9dD5aW@W2Omku&x^#ZCDLdqF7rJid_KxM~HcX>5x_ -zM8O)RZnd6@QQNvTv4ybTj37pl+YBOhh7h?^5|D%%lOodk?tJy9Xjqx -zz~W`qXO2%8iJWZgNuMz_#tJJereg=cNR_sK=tVT{Ak&2EcNgZS0&>FhoU(@8d6#5&OCX>w$M%-JckgNEwcpqSS*>JX6?DHzC?`dm=?$Alj%^Eif( -zlS!qTymhY%Ys-HqZP$jjhn>)tR{F^sgr4;1X`iNhOFia!kG|;9mpwWz{*=@IfXa`H -z2*>HkZyG|Ml3YXd3l&59#fu^Rf^x{L>{c*Z^};~%uToa;jlI{90Fnp{KA>}7k9zdC -zH#@?e2_bQE#!)$rDoD*d*o=-3@dxmu$~* -z$Tvmc(_mLe7&i7q^15?R*vf(^6avP*VVwf}AV!Qd+`r7fE52&C>NiQe;?XNIy8C7M -zcYMm4oU*Jz*2@n4m1EAyo+%E@-xee+`oESrO#4c4tXHBY2^EhtLNrK1RF&H#X!}5e -zuEk@sdCCuw>>TWUedI(DC*WS!ikm^N0g?$MOA}_W1x9ikl5}8J#MjdKnQp3`bS}Im -zu2OmIXPz5(>6o3g9OAg9gBKUH5M4eqR926Ci!OI@+qg(!VxY=lCP;N44#tOz`T781 -z!Dt)x5!%S2JSU-dRkFa2*~c|VtZJmv%12H-`KG;R-`pePvBE-NvVM;YzYJ&Yvh!rz -z7eUh3ztJZj7DH5zS4gZDTsJwEYc{8QL!Db<5!Rjp%^ak`)0H>yb$pJ?pYGmdQnZ!4 -zggh>cE;|PYd|yinlyr~N;P}yenBz7r=2BlxcYi$|xHZ|KFi{xo{yg$kTsPB4XkRJubJc$$k+i7Sw+ZLTyhjq9ERd -zW6qgs@SLgUjxm&$k@`#~gfkI;&O`;_OghP!+^nAKe*M_Vj^oo#GEQrBe0FxJXskdq -zB^Ro0XS$OM(U?n!UbkRwR?BT2WnR3D=v{=L4StE-FOeHH?@Z4E_2(uAV{R_bUiETv -zdG=dU)=O2wN)9-La7|^b0DnM$zmjMycb3#)mJT5kSLGAGbvYT-kZifl9~qi$$eYmn -z1*5GJf%@)A=C|Y~&YB)ku1!twq#?M)t*NyoT5U*lsGM#j1X;HRk}O-k)H8C?Wiuj6 -zh&;k$5;8M1HxwrjB-|TOCD0#BPT6f~BqlxLz1!7MeKB>3rW#-3813;$e(ck*IY?JF -z6|0{%R}Df>5=JcD(ZB05!6|Y2BJ{~8w`qVO-A`AXs@h%#K{gDNcM~`22G3aL} -zWdQkJ_c5bgc*4o>1N7hByOTGs4Q*UfolENI9>sf9V^8Hl2Ly2hYB|4zGIl-Vg~SG? -zB%ujE*9v|9^z36TTBP5;5>CD_CCQggz;nj%jW|mv -zKLZKt@^M!B;KUQtgz)`^S?8Xx#$#k=4U1XNJ>grCaM~ijvpr(w`4%Mi_s!0Ma_l;e -zF|rn6KO6qV*T)eU=z`d+VL>3ZF21Qdl;6krQ*+CSM&w*Oej=rt|l -z+14v@KKgxQ;>5BbrA?t;+}q0$PaK{)eD3h2;;!>+h2%SEhd_hf;|T51qv`!3ejf2J -zSfih#Z1A#$<>2dL?UZ6nY;`x`gq -zGbbd(+qu3?7;0u27-c)BIa|AgF)mU@)SXAh<>c(|W6#KdlSK|%JbPy%50UQ+N4PqA -zrHWnA>V)E{5@^N@YRoq$W1`hz5KwlyVUGbIKX1EaJhg`R>Q#?HMt^!d9WWzf(q~K~ -z!y2y;KRdyVSVtF*Cdrt3jW&_d_LY#T(AbdGKj3piHrxR2buQqXtU7>)2VQ*4 -z#p-+GZ-z|188VF_cJw4fzEJH3X1^)X$AsdeZ>n!_&&G2n<(bK>FTBKw)_-5TmZ58%^kh+9mFs8amXa%*kP$;Klc8t#y>onv@>Mc;O!fN -zGm)pn#1qqm@be+F&OLGA2^p5&I!XWS_GQr>ieig)1cLHj)y=))wO&0(f&{UT+agX8 -z!uxWlJrBM~K1a>R@d@Yrg!9%(VQe&j@jF@Dy_4oDR9pwWi%SxMR^4oqMX>uS@6xaG -zuHWb#BRMN}{9o)@9kcXqG^25Z)(_RlzHR~-J?YWY9(}Gf+G!DN-RS+tmv7(w_~qj# -zAwT_Mz&EG&`AX%d_g0B)?w=Nq!qBaq_XXL>H=@jaSLj(OQD$WihhY5~q}Q>bi6N-e -zGcw84_?T!hw%o*=!Z0GX(KQa8W3n0fPkfl(8^zw&&=jrXys!7g&+%zJpa;!o_&>|NA8>>J0- -zPpo1l95*Wx_lCCGX|F*n1iV50O+NsBBi;?2;(a4x=j|X$h++u(_@(>!-pHs*3uB2@ -z}2K1)fx+^F-Mxf0Dy&sk+a}fMKoG&l|?{gSM;HXo_F(#NnyK -z=MG;u%yNnEh&P|!z5Vj)Lfu_cUblee^irA(=Ivd8}=?q1*6 -zRv#J4Adw={whyXp*`M?%?{_7&^WE5~BqB7kylAbufD=b{q+FZ0(KAc{+7ykEoLfd; -zOgTB#7?fKa8Xmj)h{3uvAv}rLu^o4kty*2pBRzGn7j*7mFDUbOD{iWt2qHJ}kd5G( -z!()$=fFxw%iK!>fJ#pcQOHVxY#4}GkcZ7e<#OG$>b2CYz`P@u=ZYDlAJ{E33mdiHI -zoW%8y`X_xcd?|b(d>N9SgN$TPmN~wy5W}`_{K`IU`b{NA@;_SQW~zt?J)(0Azs4m- -z=|nMNpwK>cG?{jdmxmJG#PJ@}wxOyTtkmxL@L#?-x1~SG-&*(mBhfx-Yi%2xwyHrQFhV1y^Q_{!+CC5R;p= -zxQii9T5Ro(es@0q_{s=Bfdcs-H=hhA9}md-=z6o8=DxTyTEd!rJ&XNis~Zh~CWfYp -z(DI1iX#d5|XMfGBoiKl$2Wj($H-_Yh_7QKqyeiMAG)#S^$*fctn9 -z(#zfD*)e&c&+F5R*r2lUbC+|?gRSBb#WlTt<19X&9G02A?{SazXB))qbur@61&Vgp -zn06j*5s5M_p3+a@c`N->G`lf1N|)PWINlNQq>D&@2#$j+5|ew5!&`kN})XP*+?`0TUt-7J^I -zDJ@DHB>o{SA -zl47*i*$l|4tOwD=#$eeMK%v54CZ{c%2-RMRxBNN0!(FQK}~` -z^c$ejlRg91)%Km^Ruf~B6PX$()Fh#LUyyiqA1f0NBh)(C^+poFrc(MLi+h7^tQG%) -z_M^gJU+(RrkLwE^GNMa7OH>ycP) -z1e#a1jjV)cofde$)thWtY5^kl(sXP@cBR*{i3;xH&1)M*5RM(5IP7Jgxac`M;q*#o -z{B%#(1;lGUJ!Tx#B0tS`k>ng_5ACvezL7QJddY>ORRuRnDZ6Q5C^QLPxqd~byps%M -zQHMC2L#xL#OKY>nnD!YL#sE>mr+PoDTkS}TWurG+?O-nx!y~)kUU&S6ePS-(4pW!uFtuu%afFsQS=w;TV6Dw`ov(8nm5Dev!kgmA)(g{V -z$>PoKw6sjbt3`#Q -z@u(qK%c1?KB6OR)o39_^oyYgOEq@^<2?Y0r0i~=FWS7z@Xkw{ -z`Agl&CWmjSgjJx~Re6k`jEreg_i0*(L)@%#rog%ABw(G4aII6a8zZeQx@w -z&*8Fjf^HRG9tUrC#>F_DE28hw=~qXZ7%>2$L3YD7wLb2;k4bK0Vq0NH(#GJ0ep -z9|6xDEoK|-*xq77=FNNnfg&eV<79e{mk`?G_ulF^ElVK2*x`x8+N131 -zYnB-CP^u@zN3QsxP5Jg_q@C>P>~%1>8J -z?N-{w(M>5|dMy^t(QORv9P|m+ZlG*hnjDStD;1$kGNvz=Qsh9ytx=lYtSaZ_!elkH -z^|5QnZ~?9}mED@DaqPTt{BZprp=VDVo;vI|O@wwmjW}~h`0*fa10;jZ>2ShEKE??( -zNvLT;T^L2)GG#Q53#Jo3*5(RYkA<^rf+1&*@M2Dyy6qmBfhFLyz)p`Uku1HbkL(YX -z`LaJ&;p5<#LpBa!QWw*FAU5vBV(#RGD_gg+h2_=!LSrlJHJ8YD -zVus_!&dp43%~o0cDZbCPA%g>YNxETJO|JCz;9KnY@dQ5;b1H*LkG9XLx3>``)fCrF -zt=lLe>;((9rr?)gW?mJMYuNqcO238A4qvUa8evwggQHqcrLDqQ5jo}9@u=e^M>LT?IpJid -z2_}8rvE44OYj?c*^ZkN2r^5`h%YET030d0f`ziDrJTbAJ9LsIAII|m!d)rdXi|4c< -zRZ>&W;4kB6^`43&jou5bQ=(~tw7((8md8ZQ98vk2^^$aAbR!D}I@`x$D;s|P1gS7@ -zVlN|qJ|=bwIZnw*N?xYq)0BLkkk2AzvS{dQeu0c(clI*1cWk76t8QkfXg7Mg;3XYw -zYyY;byZ=R&HsJmLTLZ}FSey-*)@@c4UQ$6$!f}QBXfTM-ew2&tp{G+$%aUa2iHuo4 -zMjRE8(hVlR(NBCY!lizehz8L<5?hnIfp8s9C~IF`(?4a59R2Qb!P;40=KTYAsv3=E -z5F9%^aX52Ud?Mo{#P*$+K>C{m(R9&2Wk>5K>oekDaG?Jwz)q32?qui--E!Q)532~MT?tQlz -z*h1gCrL6A@V(O;1K`UG`R~&a%Jl9QN!uG51Xg&Az@t*k`=ANCIxsu43^cmAWfLtuvn@+<3!|Pwi8l_F?M+3@VUb}bGV}R*_qQ6=0KHTb5qtl<)1#acSO=p -zkx{gGRW4y9n_j|0Be1)zuN`V`xnsn}OO(z-GaY=k*)Q*ZQQR6BXwA7=HIY2YF5y*P -zd(w4+z7v$#;_4&X3NQC%*yWWu*-4{%`!$2!gpI+ctg)eqA!t)3lt&$iY<$9rkEG%X -zGJM8byDUUdbZK4BLT*w^PF*3ZP@)vEbzx#uHCS0~SSuL1}mNh0{N1 -zg9UnS&~yxdW{ap1n?;}0AXpTMJq)&U5XyZFS6GS7wmA-5J50FZ!d# -zVZ5OxOgxD7tzX#w;LDl7L)$chQf*FDQ9bjGRkft-a49k-%9xjVZ3Hjr`1m>HCHn*? -zg9G|VNnQ+e%rB+jBJ*i#{AA`#S6~?mr*yQ;=eWJ%PUOf_t3Y?;BDw>9i6Ja+bZA+_ -zdg)}M>2ovZFNV%RX(>f06y5)J0anaqTaYCbcd-sxIzPs5oXWT9A$;8QL6of`w)lY8 -zJN3h~E`o`ljIZg^pXbCYB5RZ0{rV{`-cmCS>jxRX%EcIl-LVpr@ugzc$4D%SF`hia -zo2I-KWJ|MPN6P@t42=y<4V@d3r8nvGX8k)Z%#C`e%)Ny#vz^~NqGQYY79nJMb@FbK -zk>OY#0$gjoD{Tqv{b6`^)PzBdaI;L -zuW1N5NyuJga-F$Qj_*!Y#`F9F=6RiTtJBU@ed7Spbzy@3nl>?(eTHxNmDfu|BFxP; -zDJ^1Y=;+g;sZ_&exSc3oXU -zPTPqF^!I__o9!}GmD?^N%X^zJ8)v*IohF2rv4j;Xni;Qrlv?M)O|)Me8NT^%nw_8I -zjGP!9J3bJ8#SCPusUVGb12t7%XkXmwS`rUu1+Cb92XFnTV>68(Ju|@EB=4yk5E6GY -zN1fCpao(pFm`b8jv8^R54Chq@GTi -zIz-6>{(X=2`N#K@9_!}k>(@W_cwaugy1D7|e$|Vg -z#-cSLraAsrKrh3+cq*A2-Iw$=pqJ-fs^=-`8!PVIg4kpo%IO6F#I3+qEzdGHo(=a# -zaU=6S?S?kT^um|1XMMW&Y=79clbu$#5ZsLHy(kd&1t&(_np@QOjfv# -z%N%Qw>|G&|6xSOUq}O2V5D=X#xQnVljt$Az3u-MWLR -zQSg(3pB4POg1A%&W@0&x_#v@(5KcUQh3IEDM2EU=L<;6TH;B{R!M3&xx-n4*@8OVG -z@#(sA&{}91TR~*`TV0;- -zYOYsLD*m!>Oyw?Y_amS$O?%Vgpva4TN~u4D@#E}Ck6rptEWCK45PCJaPTI%X?^lP! -z2V8Kj1&xFI=V-%uk`9T7c%XK(O-#`j)}@*_ -za$r(C2qda^kA=hu^^q{^mYuzd4sd%NpLxlo9tL@oS`01Nk8thteR;CM?fw -zwG_;fd8zZLE!PpDqW*x7o~$Twj2C+s8e#f4`x~*JMz$L-#{SYKQZc7}DHS+r6VnV% -zk~AhRjmb$Gn&&9Jq{7P-E6X)lpzVq_5^IO=B0NrfddDO^e`H{^cTEzeYQ-vmm=wQN -zDl<*b&kict2K{*cigB=)YE{PuPS(U@^G9O_zLegYcSz(gxtpxne`*1&eBtzggQ@0( -zqz0ipFjSs7C3|8m?zj1-oF`)<@WndZC)+0sufBXxRBvYWnduZ7J?YWY9(~@UFM9N4 -zkA7-&+IEstiy)Q|j8YrAAsW#|IEio?;dz7?5ne{9d0?ZlpK2ZJ&=A5qGsqIW*};&Q -zf(>t9EAS#C5O&9niHRqsp3qE2GerR{_WWnmaxhvG!Ru#!<1LuQ%RVpq@Lzd4%UF|x5r_C{a2X=d#A=z|OYMheEeGOx_&S++cDqDfIjOda* -z?yDzU)4~eTK0y%U1LKsOq@>kl@)?rhQ8nPoq(IE`Ql^`EvUtW!c;fI$;>TVk`YZDx -zxx*gtGF`IV$maQ`$;;I?(ypH*x@}7Jz6>&36EyJF_pF{oDjfsU1MiT@Fn+VH4|7wu -z3Yqmwbk1PMjOit&(7R(DvbBM{TK@k?`@810jizlB{X2Ud&?SWeOw-lBIrfK38c>()X~ -z+*)TP-uA1_#a(KBJv*I9?>vQ&-rx|>%@x^ECjolG@0BoQ{hs+pC41=M8Jxyn)OJ#VkINEKs2|25)<67#DKm8ojTcZB9^*wDZC+%;o(~bHqeedTT12Y-(kbi_g2`y) -zT@M%>5xUB0-JC#E;UORNafINN*MYL=MNwkyawGA6$RH3G0fahnS<9@=X~gRsfvnq7 -z056un#9Vvk#xY}0`xXblH^}6myE9;;91e)JG;p_$HX$6iS!~A7c}uuW2e9fJzZLK3 -zjs-VD_%EunFsWZc^O=^nmZogukN3QfG3wS*1B%J?ozsxGgz3%IWjcuo?B!}1!Ar(Y -zGCr&TbUQ6g=`USYEzXe{1J1uGBVDyCmQ|rl*oPfkm4+m!)` -z6$;8x-z$qBb>)i%KKYi5v?H4PKG++?J&71V)0G2vXaeJ3mln~be_Kzn3}7}0>6%O( -zdS1c~v98>T%&b=|R>!kZ)yUuXA*2_1gIoy^48qmwB -z3@FC=GYNd&sChG@_o`Ct@5d17PuuZgX^?=_ZDD&@ZhKvmcX!Qdh0Zzk6SfxAf|!YC -zu8k3secs`H5re3>GZ+q!vfLcVHGlW*B)#Nqzbt@X-~0^rZ;9hVfmib7 -zMe|h}$5R3pj$S(2b;InYGTu#|IN$UL^s~qe7kzIA^H5Zy^aIkY4^j7R^R>c!Kj^e%@v -zZSvozjgA!>v@NyeDckhF%Xa-*wy9?O@gvAHm%~;MG=HRwzOA})uEa?ECr%XdcMsFf -z=tik`N;!R+VqO=USU+_p79UWHp9FYiCCJ7vj+8TAcYnUC7Ms7~jbDJ|h78hUM^79* -zb#$tS=JB1$r+5XDEJ>GQ(XdZ*-n)C`3p6my0L)YxjiWD>kqnIul$d -zUS1N6&d<7&IZr^d$TY+Wa_bTB_K86h7B277Q}?!O7d*tmSf9P1b@l;9&S}T#Et$?A -z%;pv8iKC}R`Kpd{*9+43nzOn -z?khV4KNqg4Bq9pd?ea2&>aVk=oxP|pGdQk##r$dQ{Pcq>_r`q)IlwjUBCfE`;mrCB -zuULs0%~{&5&G|xAmuK-d?z#;lu3@r?UU`4+d=B21&U$0^+}Grs3w6YFhRb1NM{D=l -zSKV`Sd=fUO>(9g9MbCx)x}VvdBRQgN1Q2JHsT$d{oaWy*&)zQ1<9@%OIGFJWB**lg -zhdZ)d!K&SLe)`Yum_8nLQ;J_t*i}>3kq|VoB=_Fr0Ih0J=Jy*ZO+l4Js#e1!-HM(4 -zosY8#1@>C?&u~^37H9R*aMoz_iF&J)GfM>{fzjC0a@>U6#L=abDu53no&oMWkx<(@ -z5Z|PUK0Kzi2%JBaXP|fa1@WafFh#`g*c~wPm*5chdwBxns0TUk`T>D{s}ZU~7qXz6 -z3>!p*cj49E5ewdukZU`5(hnB&!c(`IB!@3}pB{tO^PEzR^<-V6$on!PN -zp70oXh)v<*xB~lE-giu1L+08uH=cRx82<jggBEgpfA}qO0`q0!tH@D+h8U!Xe -z(0gRCXG;>AKURKPk`z)03?$v;fdBN5ULTGKS~taghr+o~+e?^)gg9!*1lg{q5yo-8 -z((`Y_&-o!XSRo-qlEd>^9UWtac0gc~1JfMveFx{|adDMHlRh*J(BPVZ;Rqm}%C2i0Oa?Y4j*VD#N$T8 -zC6K|<__c&dKVchJ6oKX7CalVm7-bkn`#;*7BpL6QqF>9e)W|HzA`H?t`w@Kr|Iuch -zh%#Jy*vBt__RB$=tH*)f@tK3%47SJT%r43$eXZAN!`=4q@5j37|9&PRc$C_rUn4HD -z-vU%8eR$vlDW0smQRUO}rAqNQ-zhv$-$QGZBsr%`9`-j7Jnr}T278mK9PZaNO~gGo -zUfBr=LlYXM49zBOIDYa8mtFkSp66S^znV?GK=&BLAp^nd!XZkMb(>Fd^?p4X7>@uC -z%v}KYMSxRq;NeTT@ -zCZxA@z=UF)1Ctz>_DYMI$kTq=e;YY|yXnD`-YZN2=%L}aipr`OSSKM}Eieu0FLi_t -zcVIL6&l56f1E5^sX4LB^9hz1WuX@##TC6t=8n`iIi9M}B-R{&K;Aq^#bK72*lrQ(a -z)!r6izV?|X{z5)Zzkr{|gtp~2TOxFY$XW~WL%t{hy6y>wP#v9Xkf?Y{pXWaf*{D+^ -zD5~WU8)v*&o#*g2PS^yJJzkq{4P3r<)Kkf|YC4j&ZJRkXH!PfADw@rmt@CD2d_P(O -z;rWA$IDdM_1IU|!7P4)w+lYM#xUj`>leRANaXR)|oORWlq%ff$?8?3BVviwq+BuY1 -ziqgH}$$OKCV>gg%-Gy) -z0LvgF3U#IPT#NI*=d>wp`)1Yz>mY)mgI1ywIiE%3?PQ{>6a()g@c#BT09sX-yLv4a -z_C)iyUV7{C<(nG-%-jUdt$de(^55X21RR -z%f0b&7DVJ(Rja^;wo1HP*Q;({OuL#qb<13_DoP)i6yzYUaKyvXrl!%>ZmF}K%hFd?23GNGUsjT*=fEMm&U_oSd4Z#|#R#Mk> -zddM$I9`Gl^36Ei=wrPb^5AEBn{x(K&iJbfxG4r-`d+c3}j^OtlhfdhF4{5kPZL8Vx -zlMjdPa4*E~e(c!*$+}j=#ske-jum$V1g -z`cvKwBs46MRz`;V>VDt6fEZgwHZ8u#vdH4^>|f61US87dv?t(}ohKrKrIQ_G0P#bP -zcTU{FtG -z91evS@6(PJ>~h1Tm1T*?psyts2U_C~bP@`tdeR|}<>#v0b{k&#_$!W8ISNrC06^b- -zrDhmU^&N>(n#^t`n{e68r#KY0kBr3bS&Zdmes}NzOD?oDzP<;@cQM&3Gq3<)H0`EoG?304`_ahRBEy$j~dF -zBk#87ie;ae^-obc#BYa4GaB1MF}|C8mBE+nVUC4Eg7(1*fpW*=j&qXIDLR@c0o -z&z7vu1c8XY*PN43J)OCT0nS`mgv4`1P_kzsG@>ek2Dpug%^j%~XCF--N|aZ70Bbs4 -zwi}D-4p9dl8LUqD9S)Zw^X%j_rk|bhwmAjd?gcWy8d~FUuns`(SkqGCN6K;+iztoB -zOziLmW0=qg={C$my-ezR-Y~kvIP^+R>Aj{6oNH(U1`EDj$M1_eDfZT6QB>Gf(@oYH -zzz=Cq{3#ssu{RNALQ{sHxV^m!Z4;U~Z@BkwZ;FABn=L)90x$=79l$5A;L}&|>sRob -zSMb|GeDX?pCa;ud@=AFouasx7d}k0A?(9e&s8}k?~X99KKKo_!TC%g+tbx^ -z#N4u^7`YaTSaw^=5;|YO1q5kX9Gif&k&87}=n^8Ft-U?mzbS@?Vo@(J{BW5Oqxl;!oh{#(6Vrcp1T&nXPW&VpuFfBhb&>`x2s))VDwQqD*7m^j<-TMG=I`I? -zDnaon!e$vQ8!?Pos_Hg?tc-KU=7gi!x63#)5-WNERy_{-C6lnbbVE9Z^5L2=K`k(y9nV&gLlM -z8u?8crTS7~i+W!x{Fhbc%-ANA~%z=I>C^FxFlWFp5CfQxS{u;?K{ns3~Sq|MS -zVHxu0`S!QzXF2US+H9J&dW>WiWD^})t7GF^1^YJs4|b)j8+0?~K&JI-!3PPxZkCJg -zjK72h4+pmIg`OC6UqxJ -z-#Dz))gxlQ$?JJn@2WP9407-7{7(3ir2my$aATlE_`PlCKPYgPX`jB53W2@7?!dXL -z`Rbue&7neZ^{Nkz2cYQycHPG&eQ4mxfd_B;(EP|3DhWorHwaR-uW`Z&^`iaTmE9jg -z3DVWYx|F{K+w53|)aEc*fk1>8xj=t(_4DNM&yy!VPoDlf`TFO{H$P9l{dw|RONJwe -zb~N+0fH+KV{yod>zh~+FP#U$%8qQqP7R#>s#vB^R?TU>w|1BTh7X5in4WIS%Y!pZ; -zRhisleI=)pZTL&aKh4y>`Xaa-i*-QCo?LB8zP&Rh-#o?-OF3xI#>T4D0j$~wHi0|$K#@B4B -z76h%~A8#Wk&Ildy%5#UTXi*en)C_xE915A|`E2X3@L+QZ^?HD~Im=kr=z}UEJfVg! -zp9MNJ=4^SFq{}A{eE4v8T0B)K;zh#2hk`X( -zaMQ1hT=p?QmkvedzUKPNqQcIht$})WugI}lhX#(Tk3!<_(vaRzEKF}Gd>gq}iVBVY -zN>cwvg84^|wXts&)g@Dc6HHT3ddH6*+;1`CgUll`r>RH;Mc2*&R-^?1c$>2opP0m48O7 -z?ntpKDMeMqNR9lN4kJ!TA=Awf+L+7AL3 -zK7C=)vE@rduO!)?#id7QCn1Gp?|y=uR5q6mP67B^4%{M#MX6!u-IX}T>Ec@ynhveA -z{*Mj#4>~EKn?L-1o$5f%;*XykKN@H6!8AOKtoJJ09N=DxCX=1I9608%8!dt^wl&wM -z#$C~(HP3C|D4JkgJF0b445abnZRuvR7StaH@%c9IR6+Ww0@dvl)7i-H -z(Yn10oz0E}`N<^hfBdebfcj!EF<|n@cU<|WPIwos)C0a#no2fdT}s;rGB%gi!a$ZP -z#VVKGV08&N`W7CZEj`Ur+IRq)c&rUfoOBTFPa_KJLBAmGW#ux&!p=b&$fuVy``g`- -z#6MIZ=m`gjWzLPR$wf72h2_TB;+kuAah-m{xiUun5na0;xykXmM>{u?JmD;Cp*Kff -zi{b<|#_tw}0y8d(=VeE#IAqJ&5FhYZ?y03THVX -zzcH8R<`Q9ZEVslLbI`yqD>$qjx!WX*`49RSIfoMvrWiSUq&BNW*biewnGqPA9s<QHv_fnkth}vFpOD)5D(R;OQSf=&*d+d(0bk} -z-Vr)N-Hbv&T*C|hup-Vh6%v}gDwV^?k4d&1dVGtaZGZBhWcb=SX8G<6K#1|`yat#nuYp81r_K+om7nFTOpSsRSq^(Xbv5Xi -z!ArZtAL2aK?3brH!QY$1=@2^e9}>#MYC9nhkr7l -z$ckCmg*B=d=-g}AzaN^z*x+vDGvTakTRR6zAcX7!y|L%~5i@TXdZDF;7NNv2xEQ1h -zx*nn_vK5c7b -zNnBkGfHxUV|w@2R6b -z&VR1{{$89&K*)iJ(ioA2=KmX1rY_=66N -zlUWfbWId2kQNds@nhARLY&gE^fo()D1xBJ-zSv|y=i+&`a)}iUSEkInm1H34i?`d} -z{y;LYj#b#9EP|Qr8t}A$(HjPX=x8D_KCV -zd(bcdKS`g&bSI&Y^AuXXKqZkS@r{mdwaZiB;wKnkf?<#fQoT%Qv+-}av_DXAggn(7 -zN)4uQOsc`Ofr_N*c-ezb2k?`G2lPKln!KJgjY({?Xs13QY4DeddMCG%49n#nIERIw -z4A9VA5j$~TFk(cVzwjY5r&3J!Fs-q_Jol0|3V0Xa?=ikgmdwZ~PInGJ){CcY)n!S` -z({A@N%HJ*g(TlZ5y_~mbyoyp7wlBa-@UxE(N=rEpFgagOrdPMbZVLFm@`-JY= -z4zw|-u?2M||Kb5p8fBI|)?Fp4jAQe>9M$VR2VVBP7keRq3i+6zP`DnTafA&C3hnu{n$M3 -z$3=JaW+$&d@|b#Idi(d&wymbOSFe3#c&1#AC+UCu0nl^)?N``1a!Gl0$$B;a>nW-G -zsxi!eQB+EKfXVWMOfKUBPm)mw`)>uuU2Ymo5So2lEYF`HboakKbV~bIR3<~8`}Dhg -zwAW_*cTfMXo-Mw^XQkr8`Q!sD`O*ud!X~|kouA>t)3fFH^?v-bhe+1>ewuIVb~D)f -zUVnP>|I1HK{{Q&N@1#72a-SCT+pia)pi{CmR!mVE(%YvO{}^o|$Hn=E#E-I<28|38 -zf#lRF!NP-4c4@zHADZS+rhCE^@_P?IAkn&A(wTYY{xklXU!_!u5FUq5@5 -zI6-N<@wpV2X@tQvDK&*B#p9o(O?+C5RfYZg%bi$9eYTAQX2WLX)G%HiMG~QjAgxqV -z2e{~rd$YY;i-^rW?$1}tpgp0uuMSn&p{w^TI3I-cX;F|{uNQlwTz)8zp3PgH4a)GG -z_1pJ9&@BQR)#ks>S^rAned+^+&K|#m=S<5ME!E7hm{OCJ;2UE*-*ULNnO|5rS9-~x -z-~?(3dOZBbvAh=#VF2wHKpx&~Lx=Y8WEh_IVgAD))-usuY{iuSz5xU50xgTOg~NKG -zpG@oS+*9Sc>~12VW#+nAvX03u7root6V=nE>x{3-FwMs4EWOw%h$?7)nw|21{LRpg8}V_oX-3`@$>eYjBVy -zsZZShQXPDxYqMnAgB?Al|8HMJ3&Ky|(;G~!E|eMXKYQo9pQODXOp7bfYt8c07C9|QAW(v*@7Fd3aFa(?5Pm<1IB7s= -zQ8IO>2lz=nBI-cM0k;a1$YLC}IV+AMDq7k!I|c8_i|$ge=NQ#WMu>jnG?(=yQBp=C -zTTd6YYP%C+`Q%O!(M%qX)0*ahX)4<#Z5xhk -zW(}H5=n^;AQx>oUA(2b9^-Hki<2?+y_2fAa-?{wKRl7SgTZYYtxV&GM2X`ul09Qb$ -zzZchYUiE421{vOLcTQ}O&mIiAd;u&}>=L~{P=Iizr;fgL^jk;2H=1HkGX2hIM{@3V -zgKhGOLtg)K*5gP`(_?tSPux69vB+I6)C+-}Zj#P&Nxrblt}JqXlJVEdX9I7!D3@uy -z=|*2w1C~K1)q`2&{z(eeY@?6ygzU^9=*mHvJvO8MqT|&o_;7x9&bKt5nNIn?e35zX6RA{ULdA^tA(B6jO3GUGAI5)gotRKP#D5h^GVttE -zoz~sgUya^bqrdv$l%Zz_hvv@*BzhY8NqOkJZm>X<1SzjR_p{PwIfmM3*R*n69+9EE -z>

No0$0&JVw($e$Z5S;D6|KadY%sgy@h_HBc7@M`KS@4$`Fw0z|qS?cgRK=(dz -zj`4<52A(~D+?N)RQ@ep+B(J9oJZrIq1MphTNe_4}=QIa~X0dj$slWr)Pbvm%qbC_Z -z&G}cJ8~n+H-{kx&`EGOmm3(h=ekfm8?hc`gGxBQQNgsJN@3fD+n)kYo4CIYV9>^?1 -zdBDD7+(%x`JLw~@=GA58^^~D!&p+u*A?Q+$_44xtIyO@A(6QR4ZS2w~seq-`vEG77 -zyq6ttNwauAaAZFuuGL^KlVrw@J@5hM7YTPw99^vG#ZTk35ITJ;(jI$v69uNLO}^^iwR)P#D+;$1AbsnYiKnkT;~$wi`mLis){E{l$^&6~4M}0Chm>FT-SH)C0R#T- -z>N39RZl@q|PC#L;GT&cLEM9h!YH9)PX} -zu%UdDJ~jYN`_OeCy6Ho=edui;de?{EJ7~47E{?7D5|f>Qyk`@7^tAtU86?WNcxnWa -zap*V)T*cJO(e>4pt7Op~17}ut`U+U9?!@)>zUn+4oQZ_5SRcC4r)?v?UIhBGpV5*( -z9z-XD=yVXh9z<^j(c3}vtw+CpybEPYvqsKOGCq{+;fdm?3cuq}s=(J^OL`1)$jG`u -zy$5|37;ubKA=QKRx7%h>n`I#&=bE%Hp(i|77{W)Ts0R1^Q{0AT;f!dLQBQj<51`C~)lEIYn?xq&U&QB^#iNeunYOB(4%4BHUvv?; -zFZWBGQG2I44y*TT=fVmSsLj9F!CV6AgotjU2*loS#u+bd`>{FARe4^Yf4MYY;Z|S# -z{!eH}&}uHeBa^f8o8+BJr*>fPR?xTCs3-IAsLFn(9tp;=r!2Ih2 -zgkB8X+smc@95w=%8l~+N7F*wd?jpo%fX93`ad5HR*CT&1&P5~h`>2#FTwGi3!Rn8C -zIUKngmX92~j{U&L3&=sTyOqqpUhD|8S6)At`K=vT4p>=kR&Ogn6j25F-l02^2f3(mD$Pq -zo0!Q5oGOI9@fmNvxs0D>hC9;}{8?vN!holzT>;fZYsWw}drmd_Gp*b4x>BZoIeePDwL6xhHuWxZxr3NXPMu9v8`Y1LiB%z3zpDwItkT-K;xfTsb{DlO -z7nSq$yDI&T(>NLVD=@v_8EwUvPRr#%>~2@7q}wFu7inh#UB5n8MGfZVg=~?)H5m^N -z_EJWlqKrB$Rm5kO4^U3mYKB7klD6bb|L*B)85&(yw2h#Az;{|s~7?ViY -zSGI8PEu5=Z1SIVO2OQ0O4SXqA0Hcd1GvL)cP -zWT_7@2IW;rI3MBBz0AT0%{~@e&$txV$(gqfPQY1d{SvZ=z(X;$i*sn6OXmcJTw#$5 -z8+(JpYor;B%{r_lsCWq1DHm-!kn!b%YxM0)dd}begFdhN8fG+M<|w%)LR>3ksabT7 -zqKt&oH9+Tf2k|Vaz=F(34X_L3hG{Td2kBPXFz8(rrqN-1>E96T=8Cv2SPYP7oX)?3 -zoFgawzyo?cH=u6U7V!9k14UY`d`+p;>acnj`6#2igkXplF;|S)($jbAz}f7l$i=fP -z0tzd3oWeW(lR)9uLNQvr+!1SSmeqN0OYC9yHn~e?ND+IxN02Q;rzuwNL6A$^ng~;@ur`2;W*J`?3*v*1Dj46;4i$lS;qhhJKq$gMD4dGJ -zp*|XDc%5^x?XL|A9p;lzArAt-j*^qr(V;kQ -zB;SGcia?Nw*!|48nK_T^cg-OohX -zlW2c!C$YQ$2;Y#CC+Lj^aO4iHH3Qi*Lw~Mj`b^9}>yb33-r!ZZFugpm}6iom%Tu&jT&;tdlN?A~-4GM~Hy2zLWSVYv;s@kq5L! -zW`@6&L=23#XDTKc2$V=}RbELI=U3}s0k>Aq+|1dw8RF864yU=$F<PW@3|wFC9#s&V{m`OVch@Q=+QLUJ)&`25!rayT})gQ87O -zp$)pLERz;lH$TdnodB??<;$Ba!M(w_F0KE~(co%lo=?`~i;%#7NtMJ`0ART9uf*?QNNV|N==#}SsP}UZnoDH28fS{*SmUjU$tqeTvWC$ -z2U<`VykTq -zT>=z7KyBpcjMwp|6zG9jAGYLw#m8BKIiGPL`Zg3#j)v=y2nZhRyHz(!O(PB#tB`Vb -z+D-*EG@~G^h2va6^oaCo$;FCvh`Gmy-!EXPv>Yx{69KlSuAPW4v`F~E-(^LxrIgt; -z>vhlL5EK3Ai1u4ZwHX -zX6=)(Xy0&m;o#NcL%(-Epyo9c{$bM`4y4++kK@Rtgz9=Y&BGfWlO+7n*uwW4n1rZ# -zamwExW702Q?*BmRc-@y-8m`$z+tEJC@PR=WVDCT9rWVdchkg+gJ%b_OYAZv01r(vf -zo0iP+<%edQL37_r5rM;OXiQx_V$vrR?VbH=mVRG87r&q3)OuMBBtPJJ5ZKQSB+^8b -zm)cS$11WUwu4crqw}q3Qb8O6RyoS;yKS`VZB<=bqX*WMfyZuR8kz}RiV1f#LmeA`i -zZNI;O`a7$UI3r}+_6$VJa~?>()q?wPZ)G8LZt>^vRTlu9;dy(dpa{E8oX?ZOr=M{k_tVun&JHWbbC`QYGqZ6F6H4vgjs0;VZ3 -zWnaT!@4}0wC%>ZkNnV%=??SyD5qiTGy$h1C&_xi7S)8x -z;69?|Zg$A9Zqr^*s}Qv0hQdn%B1LCf(_|^`c132%u3wAylg})5bZ77mNyRMXHh_}pSw}|qLT!j)dO7iGq>SW89X++QVQ!4I_}8DoCV%?9>7($4X1T-Gmi#U -zo5dZ%#Y}Q!|JFXPwsJe0C7f -z_#Nl)Gdu<%@bUYrJ{~$%4CX5!`ECuB#Ze_4V#ksUY~Z>{eEoKw@dN!@v5{}PR2QeX -z-yLP9O`MT;$|LbPEDokTeK#;r5{g0EJo2I68=R$y0AeyA{9mDC&U_^$<~neH<^5{r -zyUZ->F>;QLvOecnzKW6gf$@GzNXX$>?@BmTFetAAwT1x(4^7;r -zMKD)G7`o4esN2*xCImnWocS78VwRx6pM79X^k^G087?>oSV5ju0WB?q3X_T6RV%pc -z#bv-*_v^>|y9xg&0^ffBjV@kpod2Sc?v?}U0wE`yrfOoA8x^>=FIYxaEERN@UB!!( -zir&7+lSG`(5lByH35qlWhxWttbG{&_z4gRKkAj$Vk`x0fmJomTKDPve -zHGZdhLx-}-0U~iR24q=n>$4rtA?D)qAdkX4yG;xDn(Fqfh{;?o8|^W{@stDEU6b-o -z^$h%MX_VZhBF?hVHng>@VqwM0ow_^2c)k>=9!S`$+=-bL0Ony7IJseCNKtySXisyP -zXu7S+kCZ?c0-$*Vs1q;&7U?-Ob2fPbqSq-EiFT$4ffxPsXyNJ(F^+bo*sIY$FqJp& -zNT*>t36nd5?0d;Q(;g}pdqQFO;r#tZc`b=xVP2LH96gq|E6#<30#>$X;L+7BoWWGiB*-zoF}TlWpkCg47v?F}`@Y?<@99H&V|{`NvPs2))n -zPr>{#tsYPnmD^TJ4WapJJdd}kKOI~BU3J#Jf$$)eyS;|s0ez;7%=L;@$f3u}%ybAL -z;t~rhs!kIJIQ3gr4KYpuwmJMckzT`P0tBWZ8GO*se7~~kOOA5t_uE!3$<#E_OSHtg -zEcvtRIfPiE%O~7DYC3x_=%5a7$rXG7n9VYWa(v{wSC169_Gb@pNI2Bd72%%hPxFrd -z7kMZDi@ekSMc(V7yl9>yXAm{mu2P%T%WtK|=Hw}@Uh*m}N6Ph5-$(*rwOs=)~nq^!}o>Bzcu$SWt?-2A?oo!vXHG{)CMM4W3qFAbg?3>_kYrv12MD`Zs}?*L=+$kDOqjD -z47X{6C!e}^>q%m$gp#%(`xZ5MtJC)4qJ;&TZC`B0M%WvXAyBwy0?A!$s}P54Y8k*Q -z<+}5&_p5r(mjvOIi9cwyJ>l88$h~0o=5IyRdt5u@htc4!{-NcAb3T}NZ7|8D-@usK -zSRwmp+5mIo4L}pa{BMww&hs)!F`F&M1jlc4`)p+j7bu%Sx=$A}M!Gd7oSp*2QCh8n -zP1vXh1q?wch&x@{AWWA0)*!b>L%_Y*$?S=5&SjT&mDpwZ+i<@Zasl!|eQy)b{raw1 -zzIZqf2Myj$N{toie4S+9=62o6h{jd{k+BnSI)YaaRCnaBva#>3Z`H00W*d(*`0Fe? -z`&zj;X{!Jk<)Ne?#5}xboxpm)kao>L|$&6mu -zW~L7wn?i1m*ZZ@coYq5rSP6^=+4X^y4D~-Fu(;<*^`A@!0{}>z+ww)&uI5v7Wg>SS -zxSPP;dT!#Gsb|6~uEXoY``&rxePEbN^|DP1I6M3R9@Y=zj!vxjXKBv<>tnW$t&crJ -z2y#Eb`I-LCgVWe5=O;PvtDe6I`rw6o0^Rn4fKn3EtPs0$+n(}Wcv?7iBl5#NVvUDO -z`4x`a`LafR9?O=lJ|}^R$!GfecOidU4ok*-)wN=6{dWz*(!-`PBmTd4bVmixX|Mt3UUgV4T#N*&6 -z1BR@8csoLo2{N*5lOQ>&=LSni5~vp)%Q9q&9ga&=4v5h)+T#Um)lmS9h9iZTkXXT= -zP22Z(>m`N1Q`1Menq(meP;5zkAs~-*`UI@>+u*8eTb}ld&4J89q&Vm+r!A1+ -zjTO?5Uq8-1KKye3ry_;?#)}q3Wx -zqzC?f>U_!_1$r`|@Gma>t;ns@M+@x*b-`qs>0j^7obrr^uqa^WsT^NxAZap$y`FtK -zguR~qdI)h%M -zb-xhRO9*ZG2BjXu_0fDttill&@VrE$TSSbG$x#&z{b1kHn@|B_$Cw7F3_xtL+I5aQ -zF5R=OBOi8bd`!G`=N0>&bET#@b_2x;hh_kt^w+saID^J9Q7@WV2?~Hc=BHrB62Yr9_HdxUe=50I=Mh^V+cL6_F -zX1GjAk^)Yi3-5dxK)RjMD(j+JFPdY;Cx#wATHtK@6?mr$w+gRep8-3HO72MgAvd5E -z>Miw%qRq?uw;Vpv=eJQxtlfw8&qufzPp{Zp5~iAX;Mgc1?8?9OTyh|q@7`t4Aa&-{&P}?JiD@$^Lu7- -zZaEioj_nkXNe`L!kn4yX_xe<)ztQQi&kOi(zjRiGM$!yaRROecD2| -zrNFy8K#pzmCgl{>^X$rQvGL|;yE!VcM{eT4BX==T-z`WD43dsJS=niqw40-(E>(cTdJ?b{6-MlrZ -zt3XTZbAgR%(8MEJxE$c@l9y!S^Yax%)eGzVbd*Lw<+A&+#Q3in8$OFn*!~EZ_n@e{ -zp1EH!13h(a8x>t<3=F>A1f*S6Wis0iT>MHmPBk_9yE&n6*?6pj -zw{B!MGbjBhWq=wX{n%6hdm@_5NrkNIOp@De!rhWxUC=2-*|t@uOMkt9^Ga6JBG)#$ -zXWZ3la>rm6KT9jgjtWg@-(*>PRn(GCW^_Pd=f -z@OTQ`>AUR -z*Z=Ifro^2v?6!!7-_kf -z?iB@Osn#zlgKpM^HKg<-8l2^ixdv2=lE~VM -z@3R&3>r!V4|l6mqhQ<7sI;MwXukxqkZoa~1c -z&;lthUlJsb!>Q0Jl2d3RrDR@|0FK2ic1-ENMwh)rqL*x#S_N>kLE@Z^60$t>4kyLz -zcfymz@FwbTYALu7a!0YLH6fM)$mi185oFZZ6bTAmba%&Yv`^CZD6Mak(Rjo+@4oB) -zDNFwV5!9s|oCLz_X!81_-MZV+^Vi||R>qi$L9P7V&v5RSQn&l)n=Sz*$z}rquXmj@ -zz~89`eTUMPyE3~w6%%>iY1`FbQSBP53vi#uUCP;=4s0(Dlu{(e1UF7fiq7Q3df*v2gWynsAFnispozI(x-m_Y7x(P&?K<=?*4 -zD~ZA`a1)Y7EGonGyl`J0kIgf;A2I&ia9`$2_Z~dQ2XQ+g;Iwr+Ls5?=IN6a8rt!oe -zX@&eav$!SjhXIme`OfMJcQ4kjU6q>iNYJ?_5uqPpvqeg*{wn$@fvfGiT97jL8<8+~ -zIFvYN>R-HlcO~c=ODeTFFVkSaDPkr-sy3y6{gOD%Dr&Y?c)Z%PU*5VWU|#h6w|Z$0 -z{8=yk+ta92E4}@EF$*m=Uw|3jqHJa9-!Dx6NI=!yIV+3AJ~ziF=OJ@UFm#=f1vF(K -zGqz(C*I+eEaG-REii4sh;(O|+-^r=!5cVg`{tL0+O=+gj*`p1fb5_8B38(<*a*~*G -z$-@q5c?rl+&B8dnBC1f~BVagrqnBpimvAyblg;*PxCM;ERClV1yubMe0A9r_e29yL -zrVb>Fh#m^j8PImVC8hxVla4^u!|ZFZQo>QFAF##W<*A1=G)KK@6om&(kt&08GJUAq -zs8T_vsUDh*LNw(|Q^{eWA~9eqah|(BI4yANZl3IQU>(y)kT{NeDDzmUiBhO%*mr5l -z_@9RCbQ2?AajMR8*w%o#t;`Bd*%szE*tl_IC&H?KD`m!k(~NxbuBngZQ`N9hAM*4y -zOlr2$`5pis>_W2`YXD!~;vi|}c5~2m&yc3{W2b)HO&h+9*PQL#wUG#o#9(dWsp&cbL91eBr;f`Ql?kHC2t -zQCSXdq#j1zKZbEyz6?r&;<4LSon99@Ok}+yuEpC?{JJTMkSc>5ifvc?NWFzOQ^mt+ -zE~KX6kSXXI+6+C_RlGQe&2_j=D1HtygKQTgU^G20#aEw$wPyQQ;1Mwo7<56MH-p4b -z;~wmUjLDEm>lj=oxV<{?wlMJ=?g?J4XI++qI4Ps+9*LB702~}Te=G;kz@k!L9y6YcL)s`!?p$*r^9@f=9Pm(gRU6wC -zar+wcv2`f*diMe2t*HQ;*kc8QN-BL}cOK;7MUvRIOYiqtAzm`l?6*)OHf7>0mpYbA -z@<2){Qx5}s8`-@84u~)DCLE2#*=8m<$ -zS$SBe?n)nwi}+z9GsOqGxX{l2E-&OUUMgYJbd4K!$nKYV$piry1?CRzkVH>C4>;6G -z+TMx`b%2e$H~`c!kb_?9c&OQS>adlbx-GjwPw#p`qz#-F-2*mJ5lWF9dYM5xj*){6 -zi?lhnK6nHA7zB~Ia8AHjyDS~&rU_?HFSNc3m9r|MAGT7a9iE@kP~Efg>#*N)%*#aG -zSIerc*Y4~hfrSjW2e=GDZz9z)-@9Sy20-$H7diTw27@IQzFRii(yoIA#|sDhPWTFu -zRucm*9rYIuum!;tSCL{ -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 -zU~NiN}IB+~TRq -zGR3(;(Y)vtToK*Y`zm62_tlflp{}Zla2;X@7l*gKH`?t9L!AQ+1NTk#V!n>l4x^*x -zL5`WS#v_-#bbA18xZ6CD7LW|4W6y}8r;LG$>dhKe7`@dp4DD*!v#qd{eZ7knahLa9 -zfG*=4m;``tgM#luxOB{sRR)vA{xW3v#CF7=n;!ws`FuKHMI02TD@OWLWwk8&J-$#UV;Rh`M+|8W;@j4+^Emd_yn6b- -zhX|N{90yG*Wie&_eu;0w*i=Cyp0Cp -zg+z2&nbxjC9+UFjAdt=QgQfsL1X3lFAk -z;$washNYmBL3BEZUJs%-gXrxb`gRZvWgg7~C!;`kYf}KC3J0NnFjB(Nzy!iEEYTOm -zDs`_(Kf`NJw-vaV>KZ$4Cb%y>06tqf@-JWF!o9TcuR`Ci;%SzUQ;y?;VfJwW3U -zqGcrK`DbO6e%WSzYT6S7Np`#L(|pdC5E8j@_TY*2fhiIzj@fLpXqYqds@T%1NyZN^i_TuJMDIL=NtLt)Wj!raWeKan`t3*R;|6-Q$3e2nIbhH*<=*b -z=x3g*>JY8B5OIeq&nwZH07Xmwi};F8^{&<+FZ+e5Q4^z9#4jzJ!ocLRcv>Hu(;ngO -zEhTs5d}gXPM$ElEgx;eK#f-C)7s^o?*dnsRZMRwA`3{Vhy1%OGY5Ou8K)yEQ&VW!; -z5p;9bF(%@ku1-&wE&SlzJ&TkGBoiL|5HRR!- -z_lhaG=0@%-Mi|6Z&#D5bgAl^`XiGq7AN4{N+)7x|YE^IRMDY`;n#oc*_Ol8-6G5rT -zeYkBTobOI1Tcu$l>;a_9@AT+^sIif)BUxT^e(RZR9WCM$2_;5NjVx5i7RhB`XCf}Q -z`X)M(g4^c2SEV#=LS$EkIAxUc0Gn^S6*MUymp`ggl5RcwSkya?BB8#=$d8= -z7E7>w`{N+l^rK0f=IDG55qXnYR~-bz7Bx(U7$JUgXN2@<%$W%(1GZ0Q0Id>QJ_BG( -zjvkpkG;NKS3+k+l5>-}M+;wN~vcOji$aUZT!5kqr^&rdL%8c5?%hcF2Tw5MWi@nbu -zN~Kev^QB|6R}SiHfEcPYz}b0Q~|S5Ko;#B{R0qPz!*`J7*{M^=D$LV%$E63 -zo@vd@SanC_#K?Z}TVI^^S0xQR`|o!>oS4zod*<)5UK}P+WAh>iEAT1; -z$T5~ycbm!pz-_JLJ6Ghw&Btcam=`=wGKJfnbrz+$SkIL=b2;&9LyDy$(3jMh99#wZkUS&cIrqEh+LN-wLWb7i0>UEhN4F}GOheFdV6w7QOq{$fQY=gg3qpuR#!g{0RDj`8j4YU`AF%Ho2f@8Pga -zcz4nuO-|!t-`EQ?0ggRBxh8PhYvA-wWnwZ-Qvwche!xuIxbM|n6!UJQ57torc%W-e -zM-8$BOd3tb#HBB*#vjvx7J$Ck1wQ*!Ct?%}e*C4kx;} -zYV1VWv)@b|L1VKxR%w+yRh*~Xx3omcE6Z~w25{YR5glZ7M{r_!$))FGJ)c-rjz9xx -zcog}4;sG|wU#xTl{C;AEatB*`cXbd#4UL7M(s#6?C;4Wa@sxg=YspW?J&P$P(*d2A -zPUGC2#nC+lpVvYCoNDK#XrbCVQl#TjNN1FkqX9{TBffT*6%3(o6b~D+{#mnI-3}B} -zIx9{XGE-Q%ed1%Ibr-p7d|G&A$Z5Tmt;(q$m2o!$OMyvG>yUA&r8uKsQt%u%t -z0+X}vE*Jm;nFT6g{-^s3o(!STZ4iHygs3~0y_4E=d8|uv$^Etb@$!{jFP#^7`OXgiUx9bx*!jE= -zk0;12>lqVh*L(If6{$MvHXCTR+r-Y!?;tW)V*<=$Q;fvl*aH;Ft@UgXQ;RYt3%mIU -zkvw4g;&$)ndg&Dg!20FnT!)}2$li+(f!rh4G7L(42>?($9gBd$I;N -zxj;c))QDf;vB^3QLrjTysHhEqkggT+HT8a^;XsDbs4}B;=nU~Aa7+)pYUargy*JHb -zaXv_;xyQa+a2w)zzWFNWY>3hxC>&TB4pqg{n}Ct=Whk5_jR&SV0CGT$zaW-Tge~?u -z4w1(uD0~wnDH=_12SK_=)Y0REYpss8 -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 -zh{7%y0MPwL{vwcmD8Zv; -zfA{<2h&*k+xf9pK(kTc?{p&xsj@K=vv%qG$`1RPJ;y>_(pC{8q*ZgzJEM4B*)oTgA -zp|m}s0R$6ysva+9f%Zm}AmJ2U(GNpl3wMloNo7o0)F6N1?~N4=2-#XB=3eio11DzK -zI>p^}JASU)VIp%lSrh%?*8&}?XIJ+CUsiC}v&F-JV{>4w^qUWV-D4o=7Ni>x82LqM -zTa_dRv+W8M!l|8H@OkqAV)V3V3Ghu+_6gk0*u}vcuecV*c}qyp9y;emxz6QgW)is8 -zacW5Q=Hu+I`~0lrP1-dTX?y#}Z(kmnr9yoykFM=MrVS~-BvsX7!~TzulVFX? -zxA+0<7IahLjf)3)Z=sDL<(D6@@cfbLUAYGei{lWRl0H2a^m_4fgyMe1HTG#+N}YV# -zg4JQ0byr$qI5X3O8Cqi=YqiTO_;V-$YLlEGkq1_RKhh}^B(vZz8GfC8`=tmQ)n9-A -z{nxL*&=rC=zux~zMf;VNU_=zy?|-ELVSl2n0E9j`98x_}t_qw#r!Cf09!KNMQFPQpJx0BhYwI26`&7@)SL35odI{j|T*o++MlYZAN8F{W{r&(;{Dv&F-+cT2hbc%BgM*Yek01EV2XI<{mr(Cm -z;Qv-GKWv+p>3UBKkZ^^>GCrp*`C>~joNfMEXPeb;crh6&n(LY3Fh6e6yd!~|WvB9O -zUb1NP4Ls*9W*Rt>!T`SVT13$=gSSb;Cxz1Xiw||>` -zrvqGj({D2t!GHVp_pi;O-1?RKxAH8mjNia6gon{@&2fjuaG3D>?4gj`%7q=>BhI$% -zZ+?IHy=?vD|NBE4a;sVwE|;>X(l`it1H#|*`=LZZ+_pG)3y~8~oej{`^Fv*J|KHe3mv&Ua>fPDX>aH18Pf^mJjT?>$6)c1xZ_4J|Z -zwB+o-Db-IB`0V%1_XW)7TJ7J__JwJPa5CF&NAzjZ-T>c}n&X|3?~M$L1ONrM`}boK -zVotl?=e34)Pgo7h&FDd{9=u^?BtL#?H=r`09xTWb5#a9c=CbFw|1hE%=KfdInZwZI -z)%E`Kz3koY@3}Ddf05ZG(p9_1L}}>BA!J0Qf#~KdiwDyi-Jv4Ra@MC0IbsE(=9lOmHjE!`*DA7ZiZAO`u?HGz4)f8##(aQ~f0*u&#}VGh;a -zJV=B~{#aw>MB>3msub=)?K9pyY|@;G3vA?MCVW88`X4n+@*5LoANbzP)|ggEy{z>n -z3|?hq3TI$&;efQKG-H8OKhk%jvS;W>)F)MgNnC`kYIVn8Gd197DCzVc4|yyKLwI;R -z#6T2poS@^EPu4zz6v4i4-*6j5vF1U16}67D(+LK?ph=hmw6O;UgkfGDR@8q>hMCM4 -ztW=;m9zXWrwvV_YxtQQ;J>cKLcn2>l^%7XxP}to48YV7p1p(Kjq6mF3hn7s2;^X6u -zoane-uZW6;bkH-(`vbc;ggL4xv$gv1{*MtX -z2NVq_KLdDt1bLfZRnqNTw%C4SiXEb;3q5YCU&_?g!%o{N8c`DD?)F&kD%)H=f^4XJ -z7ZnU1&2a|Np*j%xs?@zwtx--1_!yi?ym`!=J7}wm{bXNWd<54D^zbpsQ*VGFhu4lAP2^wS>C@^T?zr!-@3uviFj0tC^L@3(>&^u?mWMtxbVk;{`N)u1 -zDiGJou%O>k8G#>os!MC*zaSzNY#_(pD5+KO3-kq|xO!n2!zSAbcdbDR67*p%V~ -z>`mG;9tXaqKFy0oTa-yaID_Z9;2q+P25h$rR@#YkX*$c2eQ6bA_y9eKE6dcYX8V0}+AnlEDZ%D& -zc{^m241^?fDPEWr3m35Ar<%#$mdBZ;{RJ(!Hw0^_;&#@M@WjJh~(s>EBN -zu9djDT;GheR63uJZyl9!t|W=WMacL|NX7dDYdW*dP>vGfAraLKx{Nb^lJWX&@AZ@3 -z-&pNP_K6lMQKNaib{vYb#$Q}sSi0oBlc}rq$yDL%TL<4b$~D2{#;=vY+1fX`bqzgv -zt0v=#laI5^iPCRE`sONfu5kc~+}zV6kqkU2YB%H8j$NiL#Eaus+v;NMe?npYgMq#& -zG7Up6um8wUyiS6yd%6y;8z8^82@ra(U9oyzz{sytA(hlIw>*9v*-H#>_AL_v`&H9~>!z -z`D<@^;=3h4#iL0^zyI>vhc925xtHI3kiTjs3=CYo2{PE@@87>`Isf9nB9oMJB^FBA -z#z!Ezpd-AQuOqi;md2o0^dN6D*48c;IY6RV6xNxe^Zq1%)<0nJmnj>AZ)8$Mxvkgx -zB$@5?-CNkM#|kXBXd&SQyK>j;*KOC6*3123(yDD#x? -zWG@f8g$#^ipzKygfrxu=k|rQFsLB%^im=UI?}IowHfR8Q&q$}3OJ5Hzdm_+(*pljf -zcP#zN5GE7$9}P>S4M_&41Av?K7!1=9WAmr=GDB#$*Doig{sgv8#-N%s803XdfqLVc -z6Z-N$CvfEC2wDppkaZGHaDkc~I+PVA^!&Z8ah6%BY6T&XL+42!jQ*gNrg~`ubnrVN -zgyM!#H&rH}C2AzP3glvMNqn95#J*Y+6!JG0QY8iG;WRhiZJK*;lUq?pn{Y&Pl<$!= -zX@NMMVR;@9oWjOJVc(Y#bJak+pFkPXDS`M@ndNchlmrCFwjwC>IfTG>m`Ox}xha~U -zC{Z!y*BgSK^XHypnXq6*wrq$I6 -z`BT?8c43zy1?hdrWh8DHgg+e|lQm+aQY`y3VRC9@x$DhX%_XbUi%lHO<=C6HnoFyf -z(ujBS*KwKpf2Z$)wbs-27T_o@Hn9+{pr?nJYkIdg3dfUapyns^dZY87*9p42REb-J -zwP8^%mD)mV-=neHtT_R)(#DosSZ@ci*NO=Qvk&`Odrh~h(R~wgm5M40y_lqoj*Z18 -z&D!&-?7}RTB&2$w&9CQIoC1Uz3qi|wg(KSf;s3v|_WVkMCJgU!|`)5#=e -zn*_Fco@A-sJDXIYj^P7SWOlpC{UUodbo{pJD#s>4Gl{04fHf!CF)j9B3(n!Vyulf@ -zu5I2uB~bRVKzD#`KZAz;&G5b);u3?-&G4wzF?_JRB!LZKHt!ky{(aiEzMJ&$ufNPb -z>i)!Fn}q{rQ-_ByJ#6{ZgCvGuFCna$2LG)7wlY+RjfX62FlJ2FK -za8xV0ev;Gf8tPVU54x$%UFLEUBXW)9Q^J( -zEdCG-I=43yD4*X2&wkt#2Y6O3w5|b*)6oxLbf-RYa-@`XSuM7p-mWf(G!51r_!p#r_haB22$#_6zNFCRpW -z%3L=CU^f7I+8qllRjIg?T3%j?=c9h<%f8&z3p{&Rl&wFHlKQQ-m7AfnL0s*@aL%}8 -zS}n7}Rr|H=+R}^a?xj~H2|m8$&s~(D_*}h*E@^q(+p8~!QuoKHQ{j~iX44Knjc8l@ -zR;i?(p}bz<6~&amse+s? -zkI`Dy9uX(6l^NDk#c)DA^^CGVaNBxFX@uT=xCi^1K&L+gz`G2vzPqW8_E|^S!EIpv -z2?GQWxlxL&&J~+&+7)#>k;ymujz(vI_~Fg2ijox~Ueo}fKW@c_AY)ZQuD~P*Oj&EX -z)}FH00JkWh6UQ_l%Y_Hf%6zoUCh*NccfgxtwHiBGN>rEgQKyqj -ztNlcR`YuJ*B)eGf62RSJV%o98u5^`HVcp+;hN -zCExk}1KR4?1;#y1Y}ES&%~~3&Rho(+40063>U|IzkUgFbU32sZ$G+JL@DFbDl%Hz2!Ob*N}8f~TmE=)|aanC`mBZ)L6z-H*{8;5ws24%sjJ3D8Hn$u$QtE%q>< -z<|cU$@5YuC@x#<7xNS{<({7~e27f!R0zzN?>f-3ce8E-WO28&>EB_m-&XJ>- -zGIg{wf^s8V?n5vc`z`|R2Y~l0n7CC{+6&F#?#B-lusO3K(k%R@P1t^;NC8eSf6^dOe%uqJu&AK6_o}adfYW9#es1n0?{I5ACF$V=#Ho(so6qGM8 -zSRH~?&qg_|>Ar!0%e4;Z#JA$s5m|EeINO7hADb5Tjhmg*3moa+1x&DwXm(N{omCsJ -z`?lRd193uxJ`EifBy_9uN@5PDF7_P8;-Z#7*9F*am$^f^(3Rp~SNM=iGEf*mWLE9x -z13=tlc92V7LVGC#fuhJiDThbY7|WQvX6Gx0dQ)RzU#YcBGbwB=+>uOh7EhH`P1}NU -zY1EATZ^>MIsI;aiPDEHlQthWcU~72dTNp64+7bCRg;o>1zZ0P_-1`%NLk0vk_41wb -zer++(3lI+xrAP9Y6XR -zN;tP9*J*E#f!rFQ{37z7i5j}8_mfS%On46cIIY)-&i>` -zeBn78+(-SCS_#*9sPhZ^1cFQzbyPRQ!c06fRR)gv+OF&m%41_u?BjIPt+<28 -zW|3&2#GJPT5~y)6C!~Y>;)&4(exwDX}xiM -zt=-hC&SgrK?)S0?xIraHW5Qa$!}yNwvw(F!6Q)&(?=}VtW}UDEjrR*I7F@Rbkc41P -zrC^%0#u?U}x;&pLJsFT-UhZy5O!4OeExXZhted3Udc8l{_tWg>CxDjyVkq02!Vvx;USI*%PcOhbNscaV1;$-`auJh4 -zCscUcLnb{$rlW8p%uSm>x{Hxfb4!T>kgt8+(`J%9<=iDX`?)oo5t{yu$;#t=V -z<7-QMG1<30%|TVuE8uDFt#MoP;fS0D*kMG9(YaHcM7K(=jf(Z(l~0v3d=fT4-gN`F -zgHF~>vZ=VMlE4=9ysoa~pFeMA+isf$Ua7z*3J>)gvY}m#}aFrpgGs37x;H -zFNYAi@~<#$Ep9urttMWjHW{jaDKZ#>K-zxq*=2ej -z&{ZI+O?@o)LGNNp`9x_h>%}j6A`0Yao}PCKLc|uQdB}sx^MPuIwDkB>e0=QbE5}S6 -zEj^r~x#Q`yBHBNI9I^pM+-6l_vo=IHTzy0&+>S#euU`a{RLfy1pUuu3Q{a54_2)x~ -z@;QAl_re4}6Cj`hbLf(kq`ekduX;s5H;@4Y=VaLoNC~>&nN))bp?=*AN4(Ak$YynV -zSlW%-6NWgo(*{-2i)eY47C$F(mDg@R5uVKiAv66Fw%0bAfQzTesu)xLhixR!oz&#B -z>nYD}E_-%YXP;dbyvvY%HiFll30pEmtlliLdR}@19RA%N2^9WXdpmuh4t -zjwy0)9a(`n2A@dJt}{srOu}$61Qc7xvhMP9+_-|GC9_?W3~qrGCi_I`*x9IohR{OB+NHH*SF(m4EBG4)XaJL9iYDGvfE9|CX}; -zy%7g&RFQpye9mC{>Nj>D>5W*evx_oDgZcKG;2-2otnD|>HtUUP$KUMA)OM~6z^gLk -z4W0J668R(OH*9w8AE&c{0_F8$JOoaLKwfm;9FCPKF5l>p1M``%WW2uAkZBJAkz0!- -z+vo5-eT~(dR2B0hOfl9;-?+`z8+3N(8`M_@%z1-+fg6d=V4VnMoL-H={}I#tbyxgN -zS3KWez0-yoyFoPeQmcqL>Lx^Dfgv?k%KV6^e~d&Fw+_Adl*{D$ik!BZvXWt&4S!XW -zXzzq4_~21{=-_IHnKE#!=@^U84fUmy2z%e{RWaW_8M8I=sN}^zd+`qg)B7$CYBvt7 -zY9q#PZE6|6lfMdFU5vhQ)y&Q_#$W8(`?&B618sx7RCsBYW}mM!8K|Vqvbg^1u?=D(B1mtkk8iA`D)DkQt91Gw~^|xR*)BjK-0jMAqB{ -zDRPiYGHp!o>Spy5)S=Ve0LCB8haJP;+zidoz0GfoJi5w4??b*TAds!p43~kMM=pDX -zUBqURHBT_>2V3Znt8HU#|_smJ~DDz57+WC_05!s;?_W|{6wSV -z0vFzw2T}NW*G)wKrIQQsg_&kvzqJ|UMy9`;Ypcy0M;MrQ8EvK8@kHnJ+lhIyx}Dtq -zXUffS3l1za)3p`g_L`@!+Z%M~FAP`tZ7Su;uk2(J@!qhz7snKy*0m5A -z_#oqKI!;_j+9;)ykk_q6M^wyB0tb~Je;}dY!1=4`9M}<6crdSXM)Nmm?_gGZcMzMu -z3gw`u+aKmcRFoxTLk)7=6oIBWx*n@8kim -zc4CVp1ReP7RC+UKy)|2_>SMN5&BbgBA$_IOs-s_|Zr|E>0{``c(Z4zK9^*gmb_S*C -z_R)4p1HMTGQbPd+K)$iD%J6+fo&uHu1@GFXB4!YNS~q+%b;EJ@D|jK`U%!*1A1czw -zpOp6kXbR+eI3bTOqH0zCA#HI%bpNVa2~GM-tNO0g-#UJ9TDQcSi;~2+W$don3bnp- -zGT`0%gL!?pTYvkq6jE0_3dQ-!ZkiH60X{tPxT%i{1U>kjdUbMQ(49Kjv5EqS#ovcR -zBPKL=-qSO2;TsINGbbX5{-!O7?1MYNW1#Wr#W*n6fx8LZThC2AGxf}^XZ!~gES^IT -z?thV!QiyJa!LM{RtAWNm558Dj+soL$1IIE(?(`Q#xW7{g1gPoNf8O63tBurLrgJ54 -zl(MYWR7n5l{Z+;m-g*iHLd!5l#((_fL!4|GQJn;IO=l#T*w69ZU-qeY?yG05K_4EO -zdE4?sH@1lH9Z#X@$VAb{hQ2^x;T;kl!LMP6UXB*8w1J>Lk~x+WK>-PpXv#>Mt{oQPy{C1;4pV -z37;}w1HW#YdAaqo&aYtHue0v2&V|6QcK!Zyxm{Upeb&nW{zVcR#Qz*&Hcb#e->N~y -zXTIkixd(57@VU|-L*rBtEQpF@_(n4L0zb(cGlmI5?- -zg8DUF`Bdk;7#~&o2!ucNz5AQHBT2LqRKM{RM*B!X+;T;MN;@6(#=FPhPNJVm5csWf -z$vyAE->P-#vu@ucj|pMv=dT4nz;qA?bmx|p1Mg|wpl0m -zO>PHzJsHOk_4n}wa$6yWdWddhh@FKWDA=NmF)<5BL})O$o8*VsZ{<-f;Zu!%x639l -zls{~sX1IgIN$0mFt%EjS{?-`P8KrU*(IOQP_q%xe19nyW?)ST#vHUKt#h|L$@cG@} -zVS`113ive#?gh|qK{Cu;-}A}R0irx|(9LxZDpq>g;CsAs^+l&Lmb&((W7c-*gXGIkXtkeG`!c-*80m@c;ZDCLSelIrIMh1T%#! -z#OX6v57qIUx~K+9voCw7_KOM+hra8@D(4vdp*pA_`C#F&5`C`Z_w*Bin#l1XGNPd3 -zD7-oi8?VAW@5k=E|4mWN*!|as`bSlKbJxBBkTN}qDi)}(;L;+EiIq6z)w)lFt~H7N -z{ixFm2Fo-Xg@?@0-grL=rG1=C3vNsIphl?=7;o7P6aaKpLnh7x4{B2IaJaL36Axy? -zjAU3u5qW=OYCx~#csOWnIqTyGZ+y&*36!Q20Ser$p0sBpVg@0|(q$i+#1R6E30(<2 -z@+xCol9sfZLgJ_t0Ga0U(HXKn>Lv#$ -zpJ!`XI?IztUMh5uX?)9K-+0dffIlhuDHXR<&g3Nshk0kDN;JUegd(9al?ziCgvZQo -z@Fpl~svgyEu9Hn3#j5jB>((qP|JZg%R%zKJ4^-Mq{4nlM-JA%Qs=*zM|0(LAKZ7ye -zpJtqiB>(82lHA*v{N+v9{;K9qa)bDl`Lq%-S9yOqiw&ZkJW4!`xL={CIg?X7oAUVy=bd&j$XF?CtKux3`Yx`h=#1RW~8DMO+5 -z3q^1(pSVf!{>p4C>=>uOBiyUN-DF(xEPVRHiJZxbBC=3Hy71Npz}V0Q&K7EnL8@m% -zMKCcCPFq~~NyaY@=L`uZeTd%rq9yK~ajlWA3*n-69k`o}gG2YiO&5x9RXi)`06Z|B -zyN!%;bhurV?aO}Qu<5POVeg&XUM7|_1(OKlZjCC|$KrWYca=eQ6pq|`W8M|&V7Y+s -z_O5P1-?)~)p*QM5cj3>ji)-_}TgaHQ@4khiPnElNl$|akr{%oG@xzR2`U`hnOte`@ -z0Pp&vKS5?jdmOViS_qgsP9z0nVn(x{M^_-0j19K?24%HcNP;U6F0_UD#GpiqTH1~ -zjM3wKBn!P;qt>YAC`TdkU6@3xLoW&JSk0WUD7#fQ#{&`uYI#0oSfWyv{{FpS>bJYllS#TcpA9&~QXi4t -zDkg!6$SZ5z>aMt$*X!)VUGSYEyR}wm*cP+yDV#G3qIJ%m`y+7XvZ4^C3#0Jw0*~wE -zGQO2Yt-f17N6(A1%0wn~fToMz?No*mu-q0g2KsY_CTIs{#O4hK+%)_VHAW~*y#VNzSB0*O?VK11SeR%4 -zh@X9NYpQJe^mEN>gXrF}qXt+&<-IGPIMmr+f$>XrSn2B93TVEHc-u3nFw7v*IS_<*TQeaR3rPXjJ(QRQ1sYPBX^x_Fnx}x|{1kAXO -z$iT*)-0kcOJ=Hm~@V=^~0V9{Erpk#;Y4}YKx$Plu`-txb2EXee?|VoQTp;)a>$e8F -z2`J9bYAJ5oJH^z`v?6wW&7iPYF{=IGs6MX>3S|+x_EN;uWwk0*OI={3ilf~u2Qdx3 -z`dGgeq&XVkB%3@wg_}+LxG<2@B&t2)(c6vVMUP9B9TU@LsIP;f7vY=!rss -z?#c>qESl9;4BJptFV);OKR#$f!Di*cxsVEJa#TGj(A`L9tE(aOb_jg0psLe|uJ>zK -zIV&4MVek->q)t1R5DZ1kSmCSYm_*$do2T4aIMGXGV4ONXY$%e4i6o1EkOXw8%{7`i -z#D&5~M_{ICHyi8K8W|yNgj4OqT)0<2Om+$vl%QCnQHmRMaLcT)Yi32fb(Yx9E#Sbh -zL}l|kfbM-JwgTCc?GbbXGkh>Hg}A|1-sA#C_D%Q|)d?1xV4acJ?ZI6OEyBJ7FO+$~ -z3jvU%HGp1%_AuRt%}(yd*8zq12AuG7Dl53u7vLbP%SQ9OK#wyOcab~SFUYz6#5kYX -zbgV@8)&iRq6IE7)>E=>@2_97d2rF0OU2CG>`KyU>Q>m+S()WcxKN -zII1hqE%vt3Qq{`>ZY+7J%X$-_Ke`*$T09}YD -zC%5SXht$@qcKYM)!xPDZO`ObjzCL<&DITi}?+cZg;$lwo(mt(A!~ZE0L(}dJaYw$zgGm9JxXCtO(S`RjQ0&|L$Lv61-_G+h26Z1@H2L(dCs9CUTxWL+ -z3TIDLu=i(q=fM>A(CV(kID2iPRewR;#5nX$0m7u5EGF>SS=VAtf3rM^%|wB2k~4SC -zgZ5 -z&1tpT!cNM~TJ9Tx^e+I`8apf!anCP)OM`Ayz&bqkqsmU1ovu}VCIB_ji6t?`R$Cvq -zqvzVi;pjPMC7^&q&{bz)dp`4ohh!?Q#h@a@_cwE0f~4PwBA=H1ZMRt;OAXsgxN}bz -z<{@weuSIhTP^7bQN7&nG&?94N?d94E14=&Evfh9~ -zxI*GH6zW3C%VG+~lN0luh@{+tCT8K7t#1Tp+Qf`bj>0s|#-GMMkRoo?g1rZ6{9u8PeU9`3q5J#qBZ(P4g}L$7?Jk{yKsYZ4`J -zeyAqCUS!f;!kk1Oz3l-DbEa~(d}CxL*zbobI@XJ)A;_1o(<;+bz(fV1th;ntB`=4{ -z>IxV>jP#HOLJ9glq|@5;lE$ugN9>RGfy6oG;${^Domh-~6dz7UNmRpt^Hd3)$=OcU -zEnnbZ&H4n)I~#Q`fUKM%KNo3>TH33?p_wC136wcB19g*o%9b)9^P%CL`7i@^NyXT| -zK)^{3dVLH-evmw?>6q8}#CjATSgUfYO{$m$<5A32op^K$I~b&0E^~>6K}41{2jB>$ -zfFxVJT -z!4m7EXcFQk9s=ycN-d1^lDWMO&g%82;HU%x8QUggo_4jBYzO8~Yt3sG4oK$y(GXOP -zqMlx(-fuLyz8a}v-dt~=Pa~9Mx{;o25)>*85kFsgWb7fEqltGhWeBj!64rUyBFrWO -z9clAxbE&l>UTnfoOrw;Q%VNN?d -zKWQ|x`DwX)fiNsxsv}v}=CX~OLm;)($LllukPp2N?HfGpW9rWRwVU~iKhj%h&s=Da -zTWB9M-;s;5RoTW{KoEW3JO_*O#U>3d`2}z0z>IT~>l)N-8h{GET>+RFnX424(I_rOcsfHk63Cn69?6!AA$YLe@_6fkq8BPb2GU(=L(%Wd(D_4y)$qk7AsJ=}(oB -z4tr}tvZZ>Z5uwo3!I2|7$y&)S#60w_an0x2Sv$?^T8>=IIpNxrs6ipdOn8_O%U{VT -z0ctd#8xwZmaBSLjH3prLKE~D+ZsG<*2rE`JixAGWg;fArIBY!a_ME;PEYr$>CiYtN -zxXg}kg*{fR!=C%2eh5vZ||6C>%`!U#g&dY$cd|FqSIo!^Tzs77@g -zM7(V)6RmAJccl?^S#+Cfr&EAG=!bKDrST|CZ9x1H{w}Qwbw2GQkeK -zOLQ*2)~=Bu>CfAV=4+;^5rx1^PHUT36)JY^x^QRhJMKe!yTOcP$!q;y2Rem&4mG&1 -zI^Fdr+SzQtfw;Bee(Mxea1`zZUVk3G@A-m|!_NH=itL=71viUIS`10QYj5@#&wQ_k -z%FTf*@GzQz{{>yeT>xYxqw4tJTo)7Vk4-|r`9D@4^za_OL{3 -zWIjEDV~de~zinMJnFQFdoj6wioT|1P)dS%k+X>|r?)QO$mrU~Hf=%15AOjFg4)F7{A^&o2nE3M?4 -zTVG|j@e@_&(T13f$jx5@d&xQH9Ri^DLVC}=Er+ILO+%~b(x}$=D-yXdNRvXkV6_@< -z(@iG|dX-!PO$Ln;g>a*opTWP|4Db?wg4t+fw2Q&80dMWeDs2d>ux0_cO%uoP?P%wM%k>x -z#V|kK&@3=>W#2|e3>f0Ls}GG$J(QAJ0tuXd&_L@rm2R8Y34L&^3c|9|c`%i7UGJS> -zWa(KG6KbNpLRkqfj_eiq5>9J85~@0XrQ|ux2f*ic5Y)jq@2rljQ@xC67eCUD09VRP -zMFaeC>FDOvR$IrnBfq0z$fEQC&{gX+EmY~(TAdCSR;8v!1$yg9>oCAf9Mc-@UnD9{ -z*)s&G$7LwI?Npn$@gfa(l7%e?-fR+XnP!8d8S=OJny%6YlC^8->XO#+R!hGs&-KE( -z9O%Q828CDvTtK70Yb)@oUMZ>fxZ1F*6)rDML}N(Ulxj~qNyO{ih08`7gYJhw#iMlS -z;M^Uvf-&j`6GNfrgBnL^C$YCU)l%F_Ixz_IoP-+mIBD4$it<7*O;OUi_;`tST8P%!KeX&Ve3*Ck-b_A?9b0v{_x% -z_Q_^l(}r5@P10$f0~@wD*M#{18K_+aaF3_lfntB!(=FWH*rMR5%W|-mY(rnnwh0n8 -z4fYsrf1tt0AxMjXYxhe3S#514G|OC~NB+10pch95)u~6^dgq7MV1`hCF2^em#_Xo) -zLgv^VHm;w=nBB(XE;78|C&XU}o7E7OyTw@C^@4)ZiglEwq0f`NWy}dQGhv!4Z3#e& -zQ~P0X*Jn+cdrnEvOY5dpFDAQ_Gh{s1j5e-wxd|ggb0#*5sEEXcA{ykhec2d;DIdJ- -z0w<05;eKPHR+FtoBW_10lekXWa)D!ZMQpD`OK^27#9JYxe_hEoU*0E|$6NHGr$=h-STjtNxH8IIbqN=n -z6To*a$3@AhQa46r4{ILzw6W&Z`T=E>E5z+kA%cD?_}6R4c9x%Lzfm0Lb{g&2o4zD2 -zE)7yYlWXS+v9-5jL^;nD61=3HgeO8NCcRQfrC7f~^;hI>92c0P$Hls0*LXe97R$u! -z9XU7J<#0VHs^3KWh6eEtv-Z(|ZY?O$+t_eqpH -zJ8w-7=dJYG>vy-VB+Tjbc=P_<<-I(2L$-*_*=OC}zICs7>ouJ=?R(dAz|4&d*`0$p -zVSR;aSgv;Fjy_w9fE66Ex9G|DGkF2{tvT*gw)WlfPPFo^_iEm%7hRy#nQMFZ^7wx< -z`9bH?548Dz`C_|VfzTzad1`GfwoL1Tw}a{y|4TvI**lZ=;A*l8s;r_4X!r~S{K_P(e5Z(IGX{!*7Ktp;MKZ`l#~ -z{a4{PpkNVZ+rTlF4c)#^YlE^}x85x#Le?S=D4&|2Lk4^aAHg0cjk=5S@~}B>M)Gr` -zcY52$O(mzUt&PCUm=<`~f6;yM#53lKw^cvJt#|X=f)C$6q(`~z|K~R*z(Frg8S-Ks -zropeSaO4ofu$yq>tTi`+ZK2VGTOH{-#LY&vWiPYQI`dlh&M!w -z#Ol#U;l30s2#a#R*fbH^hB<(s=VP{HAe<`^3GFG*816kEL^3lkLQ?A&{l59myaJa= -zVFEDQ;9Bp+z`q7}|u3LVXHD%|wl5w*dDwH=tZ>pjj*MS1EPyF=Zg2dcYn -z-x`lTr_|{-ATUMf==TeV-xXDf7=rpCp -zKZ~)E+8A1lUd0}*!+Ga}ZJc|N!G+A`o;1|w+rSjHW4CQ!ySZn4*2>YKYmQ|>U>y4t0hqTGK@ZtKTLVG?!hz%2C;m$gV7EV{KxA0vo -zrUZ6dr&J-P$}F}-m?_g2zl_Rlz25Il -zg-)n*y2(g5LvylW>HQD1=|}AMZQRYxaZsE26K}mBhO|?fsVB?UoOQK9ICDKQtVDAO -zb*=m*9&RNd7}){;KJs^RU9Oc2uqGnH-A`MA;ezHtM(F$nEU=YX)W^kX2VQCGW)BmJ -zDR<^C)ullPtC?~&-n3NKHJ(C84M8_jGjC0uD8DN=NwVrn1rDeAw$|~4{I0a;Q*$@A -z^v++-+gjM$XZh{ -z5MKay9rYSdl09u_0zRVBhnvbE$(=A2tSvxrYl3Gun`UQLx)s;++MO0iln8xlZyCd(mhzcT%zkAM@Xi1(8`A!M4+S`bFU -zy~sm=PEEp&YzY&nUbF)(;-m-UVMXuVPSK=nB=ZRFZ5AmpEDT=7gLF7u1td->Q%{F{ -zpqGsw92Yo1Y^%rICCm}AOOwKT7Ki&?Hikb846$Efa=r^=`^)}&>^vHz+6%{+P=|bW -z$^e`?O+@amUQL<@BxNrd6c02Jf_fO=6utRGuAdK0BSn}_lVl5;611)=Y}GlZRmK>y>U-?$gA! -z9Ds^|xy?TV`}p!hVDrrrgZZ*m2N%T-QM2a8<6N3A;-mH^92%DhT2hh=5D1SDI -z47Jteoga~=6GaXk_4GOi!Lc~`v_?gAzOR_n*JTkoWtzA9D_;9k1Q8s=l6^|RMb -z#Fg0o>o -zsdXn;&TKgzVKFy}>+Fz8O(l$nJ=Q?==e9jHna0Be5Vqk+h1c7Xm3|I(D -zf(Xfh-kuLon-zh}Cq;CG=Lc#6zSZt`^xPQfont1R_6bu@>-veDfAQ2mbM0vBP{5^m -zvL}iQ9=jNz^X=(qH}w!{GXL0!x*NgB!w7I+>aJ8K&UdrM`z%q`*Af9*J16ZG7v6?U -zuGFk*dvOfA+gDDtfxFUT&LHE&a$G5ec50ER_h!x)JzUCf_jRhsF3#DyIR%fsBd>mI -z_RVSqZ?pSF&7n*CldTuPLHm_m-Xtj4fgu!xNkqQgdrprii0cg^f{&iFevfSUGC;vBmr^e-#kkdAoF|Nq7 -zM?;Fku?k0dhp=r-y?t-{dDDss;0A*9a=hUnG%c0V*1h)fqcaG5#K?1QoC2wlG}1D1 -z&;(a~)&n{-#sbpzL(YUAY~+Qs-_aoVEvlza>n39h%Y3$&rVt&yi!0vw_ -zk5}wG5LORBzPZ~Tz!zB#^h=Tr0rWn-K8mgb*?jAcV6%6AzXtqRlN;-p#TFjmT&D$= -zTcO(=wODj=Xa7(`iRG(r~kNdTT+) -z5%B{MfuPq!#80jW^j2L&L1=++k*;%+f9)t}0_IGmfYsN)u*@6pto}Gm50|iwe%N_L -zmn(O;F)ijns@cExj4)1Twar!3u+6bCTp -zsDnR`u9dibH?s1*wb!apd=A?A^GFTMk@N*)R?Y$v@Xjnh&pJz-(P2aqT2^lHIQP_* -z=P<*bO&5A*M+_ryel#)>^z2pk=P+@cgF^mns{AwEk#|-zgoI&s&aS(kgEBvHc3gB8 -zHyNW*b4V?)%;45|>HI{GJrnvRjua0p&vPM3abi6MqnJBg+Bsa`PTZl>Zk~N2BuS|6 -za69`vithW)VSYc;)$1?^oZ%L;ZxWeI#Zr=JlZ&q -z^rPL~OJ+tJP0VJ)b1W3yn|0F-?id>VNs71H?}}|z9#I-nz-xGj4K0QW5O&^?RRL-O -z`oDlPXVzi_qWg@1cU9SvW8r$~QR`i<6U!CK@N)qAo{e`V^-k`2gq9j3C$*m4QOlVU -ztTryUG7$Bz*omKQ)`!psVQ#V+)LJA?`ON9W3jAA_Xa?xOnGkml%lA316f|TVV{a5i -z=vi&n&)2suw+a$K*-DR`E)=$a_?t~Cf9-WskbrnZAhIcadYKJ&st|fnK)x@WJHPX9FLsNuqiII;eCm2r%Hwf4zk|a -z;m{;je}(CZ&+ZDsD3fPGQhc*BFH20EUW!t5wr8;}_ZsCG7FxJM?T*iC`F*DIFPGIy -z4Q4ssQNy`VXEtYN_;{9(*M)eN_j6Fe_8-E!5YK0d%N%0(8s=woHU{?D2+1-njnuAg -zL2l0lMnPV_NG$dWs3z=Go5(oxZfQmM5!4I|F6J^mymuV$(+(iRm^=pl0GN4!Zej4R<3N{Nq*bUAkXz -zqDpntdy7E3+!hx4%%K$vbc$z~8z}vBWlXy1~RL70DWJc#j$8$BlzA->TWQ9=$ -z-mbkzK>~W4PDasI)on2lUIm9}goV8jBHlWRkp4VLus_2i$o2)ortQS0^;pkcEx{zx -zn{ORLgCYWv?pW@9a8*Lji^%26DZnO2BIhn25)cFwK&Cl2%4(mb(;*n7-F&5lG!rVB -z8-+py0Re$q&*ARH<~f4MD_77DU_!VdgHVte3>fuVgYeR~_Iw=%NtX>j6b42YH5&wUPNl&}{G2TL*zDt{Az-cn2@KpKcHf`^F(4eG5Z-JfH}Gh)J5(L^ -z$~M6L4iNN)9&uM%5%xxM1gw0!FPqbRTV(@|kGTD3daWb@pkhItM_Vm&{8&CaXx(i6 -ztDI3g@^R4JIyNz_zi!{VLTjYcFPUQcM4?IItV -z5i}*evC)P1lky~OI?9mADNulYj+6g$S`m3#4U$Jl$!i)SL;8s$TeyK8XZ$4NV--ty -zNDIxJNe*wqeEKHz!#6{%=6*j6+Oj@|ic|4<&{0Q2r*i1#bS -zhyDopkgp~mlay&@R)ByDmb}Ejq8Cb2m?r3RxRnjamsR}iFBlHxue`6>9WCKpR|y&{ -z;C(;4kD~y>>4mC%P#1*AWwXY^w($>xN3;AhAH#g{xbgIt{r=90uIR((!Ova24=sA# -zvoJ*?aJl4A;4S4Z+@X;H8#RAdZ{|)Xa+5)6thFuGB?XdW*2i_BU!6?=a*EB1h;Uk)1>~l&;2WNyjQfQVELcXeHt%MX+GgLX0aygcI!v8i7!oYBHvsTAAa~oKhp2m3TNwSES0B3inoO_5 -zOe=VA5=#kj5vW_|+d+W5(FzNj;*jeMIhOla;YD`J&SB;%>&x?QANb{6>{?_8kcQ{Jx}4g9q-2dLw#AVrT -zs)4V`u;e43?*i23x)S&BLgATdh-V6$Rv>fk4}e?Gm(tx=H)lwv}pF%lV0k` -z`{L?n`so|!1>1q%7epBatLHulw+;p>a!~D|i5z5iV2bLm^#*5(X-ONJu_?hESwz^` -zl81!ndbbVQ97*ZQfja6<_=FD6#`$7Q;Lrn+|5@c*Doq}EWN=Em8<@F1pl)~IS7~qlYt(^i+H3QXIY4#bui|;fVV{TRj4!)> -z^M4&2@Q8lOG+LbY`>AW|q1S(pDnmx^F+iJHm-{4lHN(LVxvEg`p1cTXPb5QdpqutL -ztCH|q4=Y|-my6dERzpoxJtWD3h39Ay^zD)|kogsvq<8hgr=ddPzwLd_xaHrQ&Sn02 -zyA29n1;*X%!{R_@XvG_@sKJGF`1$9uTWnsLU;9c7PH6V??Wy0@!qpasx5FadkRF2Y -z*8~u7NSzA$vF^)K>ff@Ta+(j%Q}H;WZnF;s3)U8b=$vxPS4r=0VuLXoLwKie8HiaG?y$WxZwp4m~#CTrJ6zDz^@GKL;zly -zQ*{ITV;ayp)7vvTRQOlcGE8b9P)e`iFzFZ-5P(59$!0Z#GyT6uM|F<-2+xN0`o4mr -zUa1N0y|^7H@j%^^$C{yvqKjOYAvn5GvNWJFY#dh(yC|T779Kd`}lb*m}~17Di& -z)n40uk-%H_UOOc3lJuHwyAbTJ03?t-`-2c~_?4JU!JaiiJkp76oBx^%`K+v0P!o{N -z7zAehkwEm?8rKa<=!uI6=fBk3vJx7Ovk;1wV+dsf4>7y#uTVY|n<#}Jg1wQO586?0 -z1h}~C#O8LSt^2;Vf13r+;{Nl4W1|u+%IenJS4a8ywdt2!pQv}R@R}AO@jkHBdGA~v -zog3>A@@>bgxtvogpf8>Jf@H=Y`4hM-5?lh -z6obzCrhBUvJ3$lHebcK1xvB-N8RjpyR|owe2zgRh{;p^j@1%5Lx{tn5&c0-JwjLhP -zTBXo{G3x5M3m%Nm{vyk>=6Y743pZG<2bq}`dkc1Ar7tMB3-*sS^H!+sDi|xmuUbPO -z*LKI#!ki2tW*<(heKGK3BfpZfq}C8m<`X}HUTKH`7%GGvL_$TTvt1le;nsrM!H1oe -zpeFA#G7jAPYaVo$*DRkea=g}02t!NRuy44C>)an?8XB09*6t6UUVivl^M{|MY?xzQ -zN3V86AUH%pBy6t%fqN1+k-d%V+sM9)EM2Zx@r}~VA=7H1-D#Dw)N3;}OuXCHtyXC} -zC`VIl36r30owg!9-hHNGx(q4;rl;{IIKfwefoi^>5c)7E`Y$Ftd?qK&a2{9rLf|6% -z0Fi~|)P4ZZRA-W-9V&bhMO+6-Ab97VE!{|3?OSLW39-3t*dfe{1Jc>Gj(|8zzf~s@ -zQT2C3yqYaFhL*!@1GEy4DIn2FO#p_zAjozj6>e+^4E2E45Q-d|_qGlz&uF>fU-)M! -z6oShJe5uamR?m{QUc*%=VQMHqxvg4LARs1l%Le-C8;HVs+UceaL3g{VW)C#(I(gl0 -zwTIWO*g5`PUJ4_n_;iy8| -z^bVD8MPDsCvbS2BNV)yzHhm-o%5EhKjP59~1EL5B?*8dylye$((RH2@uLJU -zWc()TsYGiF)5TKB0*t1p>mQ^Xn6E?$JnfHF+icI3Jn;!`iZKI$_WQHtN4k$n343r0kD6R5CqQk{ZK|Dfpo^d`#(O+G#;4@__w6%| -zh_HY*+tCx;V1eBVxj|DABpEm;<;{HE*fNx=nsG{!XcA{Uc_c -zI8E?&jtzs}NNFxQp&@@<%q+$xGO;fo7aQk%Njdt6wD%tulT@;?us2d!iJmFtz(jID -zVP@WX=DlM`RKP>$*;4N^9<|_!u&9$q9H(YFNxY11(cLdL7D28(`*g6^NE?F9gvz%E!TEcw$lp{9RdGL}UYSL>^cG6@C -z1HY@5u?FR49WKQM+cZ>80RrOG;D-BqE{e916`v!mGg7xi8Pfq7ndl$!I2vP`T=EhW -z4AT&y(}0y2a@IBF&>^unxLv -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 -zXBAUkMr%Q{0|-)&LsTV=BuiZuUw_< -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 -zQUbny@V15k9qVn8KQ|`z-k0ScnD8P* -zB%-rKzHP()2ZL9oxkCPlsKw4Cny8z -z%cbN5N%=`bifnP0Zcwn}e~u}Q#AuW;cGKCoQ$y$5h`JNX-1O||?Ny=x)Yp@Gl4-@x -ztanI??;1`{%lcuJYGl@2$>DLRvAi^@3f+qOhh@5gF#}($Vt?5lRo2G<=2zGwuC3@i -zTdE>_Y=#*cwnYP0>C>6?R3WWUOWZo}&32h;gDvN6BP!44p -z50kT>a<%%@TB+s4{JV#ivO9ELbInaDrLCh?4|)z_T4}KwU56Jj(e2HSd~#{ZO16n7 -zB&8)^(~t2PfJ#`Q5dmWpboCG*=EaA-P$bR$>QNUQG}gbvH1>pI_qrAU`GHxY=~SNN -z=$a4sQ?Y4HtAzCNLU!b6RfqZpKc6FSseztuPZC7Y&a(gTfUkpPJ|3SJO~oovoVOwsfoTx?hpI{bI0zmuxo-Xn*qK0 -zpkO+=#fz23pIGDoo1NB0+n!VQ3(4Wp -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 -zKZp4jUfdu)8LD*dqH`B0*|Z$E -z$1XFCy?6&o9pSl%HV%>in^QsTFUP5}@qYGyXnYI8b$r>->o+#+jr2o2;Ul;O#N6x$aB@8oGW@RN5xtR) -zk#6#!KXG^@OcerRvsMB9J+9XbkPN@1Ddp9f1nSbJg>jI^_36@LuyvG<_htco=r|8F -zlM+99#W_WOiTVi*2gc|LtLm&++#~Dxv`5&;E*S_)aglEbPfS-Ug}tJwhfJlmj+8tI -zMMEUoc^HVQGwTl$+Pol*(lmbdtV+vTTi47yr73od2;WsgYYfTNeSo8Nkac_v<%0zZ -zWqB}0oKJrpuie3*Q`1Szs|p&LOp4Uz5t9_9S(R3>yH3qVM=xQ5p)(>~ao`^|nG;xE -z)&&R#8OHSS15>b{t$LP6S?v7|7w^)eTfFzuDUs4Oh$ZUOUp7GDq?P1_&`birw -zJNjCVt_xfBRn9P#^6SQP52m -zu;?Dux;I!YLVgA;)8vK#Km?r^b9j%%};p6whIKowu+?5Ek8@EHHBjstq -zQDgaJ6YSSRwqpXkmnIL>tIaqMg8blR+Yhii -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 -zo1t2~saQ?XeLbr2$9b4q3o -zr|(SK$}}0#a|~0;G&7}KBnQV3P$M`B*_d=s=Ug|Wrcpt9LuA&Ohfx4*e$QzVI)I> -zCz9BzS8yZ8Wk4=|;$23v*b$*=c)}}a4DM`w?T2X}k-oFWTCsy_6(NNh#-rRIN)(Wg1)5Pwv9_^!g`rh$vr6@Z7+z5#lRD<1InctBtRdgek*O -z$uMq#@OPd>kSoMckJ46bBXCrS-{T?e&-#+?{BvyF4hbFo-Kg7ir>B2RsBSC~s-jDT -z=}1#3jD}9V@IWe-O>|?3uL(r(P7g#9QmILqAB*Q9EPH+U7LyGRfE|1)O-G+CnfTxk -z2u>>;$r))c)r7RsM+ed*oTRuabV!s|oeE5PV`f(Ow^sbp-$m4YM7@fr-~^k~!`5g5 -z62xO76xl!#fAmKHJ>O-0TUEUJ+N=xsI{c#j0R7g>Um?jN7I{CmibPvDGenth@q$dX -z1k?9%K|g_MUc3CEz-@Ocw{N=+Pmy|ha{d;<=@#Xxb`>QfK2#vQRDbivBIf(M=IcE+ -zyOI&;=rYRA8oDs>Op!aSBD=_XuJ%)hb$AGO-3s{geUOlN6+%uWlBT_7E7N+w6EkT+ -znp4_<3#6#a{Md@nn?R}J*sRPdiGI}dbi!%-o`{Gb8n02fX-DZ6`1^g%<&JUuVWjaq -za~oX&AXpWThV)_7CjdTsXJZLNUK05UM1cLI4(zQjF-+<4l(gc1iq|%@QM*x!`B9bt%yighy&fKkA+tj@ak5N$8S?Y3~!eKL1jvmzG*hHS05J -zL~}CshE|_DVCr+{uOZL4Few|@cw_k=Gs8Su_?Nb0!(_ceZtwyk8k$Y|KHMoZX!0g+ -z)}%c;>o=unYmVM?g>1xGH2NUPJUluyy1)yT`U4pODvUuOjd7`L6-0ZC647R -zTR*->jxjYjL(eTeBqLS_VerNh>nN?q2Nd1<8&l4dI1jdblEy?5!T>O4^V2-V#w>OR -zF1%wCUbi&*%8k|V3`V$|A`#K#a~-+YNA-UYP;)qNqcRnZy)6ZfTVYDAro3sB*J*x`XL@tADeeyn{< -zPV<0w4O#u)hNRc@5a|JCY^=Uzxo0edP5nABniRd -z2HnJ$v=*2-ITl^%E1sHA$X4a4?VDxd+ -zMk2SWU9wdRPfo3dB9*|53Y5}COxjNlNY-vzQvrN1rRd~r7Oq{i-Dw~L&SDoEsXI5k -zLv!ondn*8ky`HA0R^xytR -z-Bnt0|LV1-#iOWC#>yB3iNzIcHMsK1^)Kd3_~)ioF*H*R8~*#M8Zn6aVf_w&UT>KkPNhzM=b~@FZz1?!(Rny*(ETa)4gwwJ!6%R~mIPkfhRs77#x- -zG43a4H`$K5$kw}o_3BSyT6V&~h2wCe3gS(lbTDJ}gxB!p#&d%c?0hue1{T<`p#kw8 -zuYdj79FbpcEig3Nje}4vL5WrHZ`Q=VC4da7 -z9?g??LDGh~q=K9I*l%rVw=#YK7%(bNc9UyY##)2{c3C;`J0A?YTOauqQ?cs>MB-MZ -zZo)EZxgS(L6w>}TFlCaHv526U+8Z4XL{&rV_*Riej=sjpTc3QZsQ*Q6(T29YFdYE! -zZ}NQVhOFImxfIGrn0z#bpZ~Y#aW&8X9{}==Dsw_!Q=>l&c{EMx5Yep7I;(Ec=9%#W -zgFgIhCdRzcEQ)_K4~o#@7&KbEKt~g=EzxEE(`;*N%T|Y)hBHM7>$MTa5yNW?JUciA -z@PUY*Z!5j@AwLbKH8t#pV^5w=JM>Ji52(%tB=VvTZt7amG;W&^o!1HA#q_$-qwDp= -z_+)6kDJ75;kiw -za)Tg95`}LN(E0Ryf{b(tFvnOCddRh&$m24GBnoz_Lit_-(%;_CLVCAwJp56&2qZpe -z;5;NgvcwaU$iN=77%U0$IgfJ0twJ3|zpZ?<2Q^liQj?DLxHF`_&!dqV`a8Gw$=?}C -zl18O&aGgIScnaQqqyAtCh`hFTR?VxsiF=_$W!QREueU4wUFwz>BSwW>4-NDHDy=!3gI%o*?E2{N1XC*NQsXdI2(#wkD*R -zZya>XGsQ$II~sSd$x*-c2FC++^urPFO-MAa4U!nd2Pw9xTXE0KTZnZo0)8H -z`((5RDXAYS8sR>q1g17)S;d{7p?}fB57}L@O-uM(Syps|dXz*MB|NB)pjVPoK^f)^ -z9}I$oEdp+5$lVONH;9S_Wg&>s+c~7QvCI@z`K!u8W<)apOai=>S3fhs;j*&NmP!Vv -z8_PMjOIiLtaWUiaBX<{b?w4}h9!_SP5m*`w*K_F&+_*u{rJG{a@Zm-Zv_=dgkTdC{ -zR$wt@&RD);mKkQ*#POwnV)KL_1^-or{M$R!Cs>(NmnpbKN4VME-aJt*`C_JjhIF^u -zZApKRzFO!OF|Sm?iN^%TE5Be8O1Ts@(FZj2CxlCRt9=+rhib+0msO-;OL_IgsorE; -z!XloHBT8At0L=B72-mPw*j0CL0=#>)zdx|gK{C==g=@U@Y5}>r4*3rw`h4tT0z(8^ -zyM8I&21`TVSh;ud?_8NjXw9#COM0=o0%6NRTEo~zrBvjH-cqMeBnjE9p2}grlxx}& -zWnoALip4d(-0tYE;^=QbI&}E4v?cfH4o3QZowI}a2z0B+XSLav`?N|Q-=*1M*Y+eG -z_f8IRq6C)(GHqs*n>9l-fCY~r<;;TUKyubG@k`hR2np*wkyAcbr7I|V`7sPyM;45e -zl0)A%`qLCVqm%rthFo&KfC}W)()@ -zk?a~2MwJk>`WVG6mG)-ld -zkSkiBrq5JGbkb|89o=QII(f$%tJatk=W342op%gQ{M;(sRe0LFK~^M*N(60CKfM=l -zR+nAOxeGaTdFk&z2}@99rM4I5z2dy3Od~2Nwy+*sM-QHPjflxK^suplV$gS4kG?We -zfKVRjlHgOJ+nTUV0=UCD5J6$C+m^L@=IC}Y--Bf1@85_V&{mOOV&}s&B;TV(<9pf^ -zKC&2D>MM@z0XD>r7GcqOP!t`3H-j3`_zQG(C}E4ToY1;OxSeOyVT*rP4K^uZeP%Mi -zwr26x3fxfZpTaaTIHF52U30O(I+Qh!@d-(X=$;0A{9VforvMt3=@&p`Yn|8uGPEW= -z_MT_=z5u!s55Fon1B&7>tWaDa8>f2w?+*HR_Y2xM!jc$CCpy^hNN-4rkvptglS~Fn -zocfsJZ(6BQS7aS*J#(0BM%Dq~2!wnq7LF=D=TuagkJb)w=!D8U2C!jt^|w(ESI~?I0X#c$M1|hAP$rEm3hv+^zWrsM$&@UV3B9ERu_IlD|IE`N -zUEwX_AAZvn!*Bj)s39qvlI{NtCiQHJsy#_PKLbZLHrf7@^~tlP-KV3Rz8Lz#p(lyt -z_G+&5__#A;Qi#cVuGfTJ>FCS9TJKhKX?*9~(Il{`>z8Z% -zdf%oQ$)eQSp!23Boi`ydly-WX|I9``>zsJBzlQy;&4c!nZk}yb=~aRM;chj0zHz25 -z00_E-{jTlT-+cU``9K3tGD1913|1i1!)FS4o5 -zbQ$M(wk1LmQ6MLjqp|@K+;{hwKBmZujb7Jm72`d|2 -z5b+V;iJgeX13+u6=-J2#08R8cbK~Cw3Q}~jGJLrXcHzD}Dof}Mzmv!hfiEUjZPTZN -zVMhk92l;aOPKAEek0oy4Px3W-V|&{5#UyMmBB(iLNV1s-G;{e*sJa~MkSEk6^Jqv| -zuniM7!M?6q8E%~ML-RdH4>j2A22F6^22^75Eh1!D0*GBCsVkOM~jE9GnpeWV6A -zpZ^#Rf95j%){Td4^6WbkpJG3~yq6@qYktWb@VNN~&i0b@p98J)pwId0Lzr2z*t3pO -zEn-dD<3VoFCQ=zmG}aQ1xr -zxZV0U-m18duVEMr>p3K?Uf0dmw_t%d1UN531ixg=yFDqZtv$arlaK1r&&dP -z&Q(I*H|s(a$Ee!R(hM*uBdgpMqazBM97#qJ_P -z3fyeV-bKak7an~T5wijtHS%Ioy$mw~6B@-A<}MkqF-qtDapuPP#K9Ihj15n=h~X!R -zrt@qlz&2HsuppcvJ@+kucOgUc`!*Do<>A*6)<3D^>4;G#X+Y|T?%&GaB>ZI=fEB4= -zdh@8eo9D25S)TaG>4uF_bVl_(G8jaz*n@4BE#Qm-VxMkx={L%uoRm=>vGSOcm~MwgNb`qo0w -zp)xX~0n5cPvf38FG4jIwydPBn1X^v*5hdwr1r>AIwVizyujp4L4lelC(c3MLv6`at0M -zm-FKaB{LZI$GDwvBuQS_GO(1)XbrMMV|1qFDf!9UyD!67Lqv%~kdA;5z*fvMe1O!W>USZ$Ck&k80VWGMrweO3%Nt>|6)ot+o -z!W1+>uPr?A5q;D$g3|bP9!fZ0m1E}F^J>t7{#fMJPvsO#qz7>mX>d^r(6&0B$>v-)i*16MnfN(gy#e0j -zB^hM&dN}J@!r^)8-Jq&RzQ7Pt+W&eU@Auld`)slg?)@oY&n`qr-7Ns~P?-i-4H^S^ -z-#Unq-xE7#_hdV3%lP@TcfK8l4=p#Fc7DYg;5r@n&c#~%c^4G6$7b=iJu<0UP{Y$J -zgbtELe_63ROSp)Lv;4>x;2079b!A(LUL*?8FoDcZlFh%ElNya>`hJz_R2@N;{jYlBK -z3+x@y=nSJ>&6qd}LGevU<|cV-(sw5PE*h%w$F=bWJuv+)vxtL=nvjD6Ih&RcgNC$C -zbV*rY)Dr_m19%;LT@w9HrQ%A_!W#0wZYz^dlzmfcTo(az#L4Bm0gc20L2F(?z|Z0I -zrsR9$&X~ZD-b)jc@P*%{wh}~4fP2D7yUFMwSi1{NC$};6=4C|RMbyUhiO})mC?{x} -zBwpYW-DLbJSW(rq2!QFl#5kr=K(!VkZ_}PIo)tVM;jbR!H*sREqx3N%>`3z5MUiC9 -z5*$r0@mVyjBRFidbV5c5Xrnw|&P?D)OOrDwyPe1@$6XQM_)IY|u4LG=w&wAD+Ni6~ -zS&x#2Y*ev{sK!9B2{d(f>I;xbT2oOK`5 -z4F71fdw;r0MI)M&F71={$DK(>H#DILbVm4=&f=Ej4cq{C -zK#0H2S41Kw9*QRPXoR4Helq>Iv+(4($sh;BIImO)-bFNGy@yVpjVcQE!?G8km`xGO -z2Tv;#kPh1!7Jnl`Cp@p>QO`NAmqVloK;*@m-4M*IgGb^ez(`$6+^FfoDLxJ$4#&F| -zHUJB_31Zjr2NqMK3vl-)mrttwucCX4MwpqAT8AVx|2C^3Tfrl8L<9jse(Dwrj -zs_fIVnG{M3KdJ -zL$AqXBW*#JteuwmJEn0 -z9}|1v^NPkuvD8JLyVID!?yE#}XJkw|ieVy|N%(uGiNq|lZql{>u*<<1ya_iZ@m}Bi -zi;C6*7rE}`=hGE?24Est=j*0{sTb^{%o*CHyC8>ktp19g=Y%8;0`a%PkWIncPpD|Q -zbKY~5OOGVb&`lR_6Io$Wr881a4Yw$<;(%v?cE7GTZXJ<#K6UR?E~Hlbg2l%`;?CiG -zbRf4``@esI7DY!RxA_HkMBBw1eTz+eokz6$$s~_=f%vOQDxT&8k9;4{!|4?xBues- -z;py;~ZVyNuMxpH%J)Q8tNWv3x5OSIC#|-Ni7b;BnFQ4rTot1KKLb`FoRO_v3 -zB<7Mm0{~R8LlX4PspFYIG%pS#JL}7C@J&M^(TIiYjcyf60u>aYf_vPxP6AVo&)#fu -zVm=S$nLW_uX;_e5t|pxv@sW5&SFB82aS0|Z%~fL6w5y)B#<m3Q%-+$2v`i&vgslLAJGHAd|3uA{UZnUyqe%o-O_z$cp#B0Vwsvyl!9!sq?j -z^Mt>*fqx7>tycK4A9QWDAV!L#9uaxLa^{b6Zk61zo44JZuLY2!z(nk9yHNw(VI&Xx -zmHab{U|7os+wr!nj^(hL6&W!?5?9YR6h@p6Qx(Om;4A=x&me)OI;|FtwOW17I)Crg -z1U%?pE*r|wUeZudz05dZR-h~|W6-$yg5Jd>%JzcnI>K*b#Kq*0?qc9LAyIT4q@r;~ -zH03432r8#o)MoM!!0P_1;K_E98$^hjL2fB+U|r4dYJV1tW_<*~^MT6{TQrtJDiu|q -z811zHsefce=9ajcgAUy1-_gR;>{fN5pcl%<^JYaQ?}2L0MnDc3+mCq9=4WqJoysa6 -z(Wrlx=KDe&fVrZz^Sz619$i6qnfkjuoj(I7C_s|vwKO8r)d27P*173u0O)XF{Rksk -zYRpw6L@w>^;9W8Jukpz88Q-i&vW4=S>^Ai=0^HUi^KH5aH$#7VaT1T3^f6UclnHa_ -z1EBKplYy8_-TiEB*u$9krEM#R%d$RJZvDnDp5(np96wO@Z9mwk-exvWv$D2^9`e69 -z$qiz7%F>?U^mNwl;iSnAga)40CKdCC1SLPUhWPhF>pz*Tf+(MnrD~<1RQNIARNI1m -z)9Q!Y!&#>_ujD@%s8mxA3VSDu~6)) -z#!2+VVn32WgAI*Ebyrj9&En&479W2zdt9W4hFqu((Rpo%PHGdWq9^^;k0SBeMnErF -zQo!GkDiHt7tx4aR^u0;jUv)ut=8>g_kiMjSMHlxD@D@D8cj^#d71&mK8aEnk6VhMc -z8!R+Z=A3FQ-CoKFuZ!*@I@svjbRh;9l~BQqPR!Z1%$-N~| -zR48E=EM#Vi5u^#3Cw43(W|mmVw9rSJPF~(dWMzf|0VHGch+OB`Ukk5~@A&$qp-cxb -zg?gi*Ho#uLetFCB-54-0ZeD^!K87&8j|}Q2EMM^qolHiYa=>Cc^TiOlzk8XefHuNk -zzl;l}8`O(3aiUko#wF}VF=ZFxfRKE;;bmTd8Ps8Pa2xxEkG?AqNh(YqT@>pMnCA)WGslx -z#1sk#SVmxRu!j%^*Lg&|n`Nu&r3XSt5D)z&{&Z{Ng1W~DnhZ8FD2{&oCm$~%g5hZV -z?$7^bfq0RnO>^4$5`Tpl>RxT!EK3+nf&-P@PUyP{eLtn6^>?C-V9?iJPLZVv8R1Dh -zizfo`08Z|xOinN(380&hRu|8}$^HGCDKuF>37f8#e95GGga(|<%w)FoBnu2L!a>nN -z5qmMESeR4O3}g(a*nCPw1=8FwxkM-N>4va)WoIwZ@uC^`_Pi7D)h@iYS3e*+Ua+DL -z!4-)kRK=LSV?fDSS|I%et1EYUV?_qZt8^A#N-UM}+lp6F(djYboq3U~ndDkg{X20hS!Qh6kf8O{;)i$k=bO_kb4>(aooVVKNdR+KJJV+d7#{1cF7++J;lm9PyZv -z1RjuZYewJ}mO?5N%%B;F(=H;QZ03ggE`Zo5T(0a>!K;d;&75p@!SAvw#l4CA(hxf& -zwoYFu9RjtlyjT`-?3AdW=O9+-*Kb<}t6r0>tHN~9Ljj3IW`rL@JVu5h_|!ovNo{hq -zLLHC@FdL^J5#KiO@e+iswE*xY$v~}SDXPgouU`69Z_LC}5rn2CF!j+FR -zdBZ_H&~fU>t_hI9X1=-qQc2_zOxi!)oF@_OTo6c7>Q<8aGiOn9rIepKO32Tjzvlgj -zS>7L8S>Gr4N0f|8M&f_d9>Rf|Y;A|Lu#dt`$D`zMerPu?cZ -zolL7sG~D&~`st@x`UqJ|<4?hnT%DT&7+DoM+_rCh>dvR`ed?7@z4oa$KK0h8>a;(| -z+f+qyfW3R%=(%3PvD&o%qJ~bkRhtHM9Ue%`!zS6QyI_N`CVK3y%iL~JA@cyq$LI9q -z``8>iEe!6afNcQAf{OExX;@DbT*sv4eJwVt%=RV*qQY1x3HpAkn78ve*$C@+9qXhZ -zjvGO{Re8F?#&(iOn?{q=Hs_S8`$(rK1NpC28>>#k1;OJK6jdm# -zy$Ao-u4% -z;Ose|q^C&>wBW(%+1NGiwZ-Vi>|w=&;Q{-T=xW&h=qx~^(HAhJ^WT<8W#*8gz^&HTA)(Qaw7r+?3n^Ci -zO6s>%O4ztShb1mx(Z^HNMWmix485{#Z+mkHQXuXMLLMV>Xrf;sA9>cXqh^FtjR1ZZ -zQF_uz6spc}P!{(5uK}ZGR1zp&X%?5Qf`j!Cwz?a;7;td`jnbt+H0}`)EtBZ?)ofkq -zX@g0i8}E&r!%OwWob*Q?~@D<#YvP1?q4lD1pDI608XbdgB5({Gpf -z=no21ldqYm#e|`w@0m>IS<=~nAs(E}v1BsGh#|4nM(>;E(`LmB8*p%wSM{zwEWJ3} -zipkxMMcd63n$_thfJhPpH>5d}s;1u=q4QERHs@saQP4TaerzVsUwFHv_-%1+{H+QM -z=&((J$C!YTU0J}3ykvieF)Us+C;cChA42Xn{3NPKHbLz -zxin6UGi(F$73Wkn%IC9w^%6!g4DOb4COy3H>MTeJ4qr{qIGyJH^4=q=bsT_r7Z7CW -zYX>|@W^;RCjTxpx(A;b&w$3NykMWA?J@j~*ckn3|_rz@XF7kJi@Bj6})c&>^`gj_M -z)4T}#K|*{RVEW~Mm@aTrHlPTaVIG)HxG8TS$lV;8z8ismN@tx-`1i$R7<+W`5Br`h0$5}L2uRlF0l1%5a -z7MsGeRW(^y1e2wuPQeR{Daqfu*-%N`q?Y;DJrz~_%;YPg-=4U8XI~3}?WXZgLBx&jsNVnD(tnh(+*?Q70B2XrDac@2POr^QJTB<%pKot^&EP1LPsEVDDQ -z5Ii(n_T799chQxaVvA!GV6Swnh&n--m)&B-IT!!@Z1SNA6spQtXx3LwRkelOm)*2O -z5X$y_8!eKIE;SA^zP^CROBo{ZPff)cVIuYeUbvf<^@H1>QvSwQIRrKphShGrL|gF# -zgSu7seE-XQcj85Qzp7OIS8e;R?5o_wVvTjTyuYIrInWa~MU$+i*ja;IpK%+LasPVQ -z%f}UQ5hZho$;maSfZ+oKbe-F@KYa@wW#-~YS84P6iTxqEdXVwufnYe{p;Po@Njj;J -z4%I=D#BhB5D3~6c&GWXva+jw0`_z7j=yAXO_K`MXq-lv_E;#&{!(p%Pw9KKej~y(! -zK1^AvHQ{kqH=5K&s&Ur6 -zG!tu+PNQ^!ciJjLC+7~+`u!Rc8CWS{&-xyl)S$50Sv^K~v%wR1BwO}{$iak_75JQa -z@mN)tu_!XVU}~ST)Yi%J#h?iv70`8V)BfBcwEL4c)gi?1Q14|L5&9n9s$A0%I4hhh -zOqIcV8Pl|qnHy{m&icVNT}=iC?lZ$_47JR#vj^7s_XTcI!H*1Vi0I`XY7$q2At3x)lqDhlN6Ff@^0a -zmXdH=(TjQI*U(P$3c)IfsqZ<=C+b}M*lIbBS|lHM>Xb*3;FSlF5J6=&cVX|U%39RY -z6f*i~L!X{DMNebL&5Y(UL(}q$4AGy)H -z=YUj*>!V0KlE=+jL@oXXB|t`6Fm8TAAD@yYHin9P8CVs7@eN@Fib<3K?xw)2Dez_r -zycNJVG|kI;C+Ugl!nnb=TIWH=zzE)Xd(pf?(S9^;9^e4&6$i$RaZU!5s3L~gH-Kq4 -zvdQ-x^Y$?M2JO7Q^|(_zXh^{(Yn)p9@iLa;n(0A}bpS!3iLb9A*Q|G|Rp|n@J)yvI -z#X2lU(ii&bWzz8c8jUs_rDIJ)KjkRT1dELo4>9*gdJsdTk@8I#D3IrkU95}*GdOa@ -zV6FONIEXwEm-veI5Q(t&+agF8x~!u!kggI;u7gO90skfY-O?xPkA)f5VZ~ -z1BZDk3f$(?%6I>%Wc|P+w?|j%^Y?lGuF=cM^I@Wwc&@vB+jup|bCaWbY!H7wwL#(e -zsr~5XZz69QZpEZdj%n%}YDhOL4Hu!eS%66)OlUFrWls5vII;m;`79pa>>X{8coCv9 -zMI=k5<#Gw0VN9x==FoBiLqcAb#Jp!#^RD@H=0G1RMSu -zV#tlUxo$-Pbbi4Yay{hRhmoU9{RdQ|YNq5;AoorUd#T8`JOotN99-+vJ%TUATKZZ< -zVmcUB$biB^0pjH`ruGnget-j{oQwvt5ea-U)9C&GsR;B~2J=-Hu2>De-+JwGNuHvfGW)qsm%AoW53+zOXLT9UIwyfnwBzFt8F{> -zIv18osBqw7W_VOh;OvTG@t~duu=_!r@=Cf1R097`oAA4?beitjkSrqXLQELEj_v{9 -zq(iD1UZBH-2Eh&JSd)`aQ9V&QWcn6~+}My#PZ@!-%_=u~U?e$|=Ylc7u}w$G_#}eh -zbi*qvbLqg8(`2G2bPt5eXJXQ!?1JbvY%(UOHs1n!*XP4S5*$r=!t*8%+HHO%Cy@yp -zm<%C$QuhJsi$;4)r5P;Zn<&XMsM7hthw~ngpS*i%SJoVm|2M%m!8q{Q!$`UlKmhzrfMxx1Tw~C|Z -z4b3n~PR2=_x*#nc+MHC;;K(;dwDuj*))5>bv4^ms-7z14N@Dy4TXOYCSEbQ(pW>pQ -z8{uIWXq%!6D+HFVfv$Sv*rT98f(xNUd6#JGj%e}zfI9dTc@iK|G -zQ4{iD=pdn0ApRUS4xvHB^}R({>MB$mu35mcamqb1P^0j@6VpM#O#gPwbb5)qBFf1N -zsovI<_Ri}B@CV)a4#AL}eOvPd67~8uE2L{j+u84$TE{OQ;5(7%9ZOdr`F0f -z!cf`3*%9JO7?x7hDrk1`kft01*|o9eLl8G+#ww!Xvq16Onvp=j&P(JSqLPU3#a?5h6b{KB-!k -zMEq=)$aVhFYy1ov6)7S*lNp-nLJI4CUkXD{Nc;m#hV0`z|LxXxe9U5F7!0OJ4Ef(z -z<4#T+-{b&9;;KM?WLf^t9yUeLMK=97KyRcfBlW=u^+=E^@V>*k3YZn)Q7KE -zsqNzr>8@;2D -zMj=NiU|q8+E$gUA*uG<%LIKK2jX}O9w73CRQp}`06(= -z^Qi=d6sOZE(K|<ux^W!p%uC5LYiY8dm5TXQqMKh -zV=osJ+7Dx3P$7EFLUz~W8$9RjI_EKi09)U4a -zhY(qGGAFHH%@RTTe_T8rhHr(j~l?wE(W -zfDWF%+=Q#&o>Zq3b3E@yFTM5W8n+}~a?{~W+Mu{l;J%^@s0Kkvd{v@JlLut!mcx-^ -zkeojR+V(yk92sOs0t2twGdR)f8N!v{u%XRWHj1GV=@d_dp*1bASL$PC#POuRl6uL) -z@lfVYI7z4RQ8>qWG1!p;2pxkc;Y98fw4tX~;snFISO+r*z-_!#ApLusTHKCU$yo{R -z{F4{(oLD?zHXxX<>B=}n86FeyRl;EolCI>L_ZT``L;6tSwNGiLe!R!f$8@pccWHa4 -z@)&jkqR-7dX7dnYa$%B0;YJ%&vDq_8T{fk8js(`)q^E?m+^nSYiC8*MkFX#=M%a|3FvOybF%a -zN4vgIsEJslzz|<=`=788DTv^FT`LG0%KGe!l>WYu(u!`Xv9L~M0qP5q2(!OQ!Q8+O -z*iqkEAoBzU+(@epZtVa1?$7_m%5Mw!{RRA0${8@359Ij7i)qF#tJ>BJt7Luy+QR7B -zy>B-FIQ~GN-Yn( -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 -zLSY5QzEam40)V4UHTduaOAuoRJ&gk7m -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 -zNPDlpb_|u0yDIjKC67y9t)P3=WRXX -zi#}ubfgP?y7v`i3bsTzJ+Ac{_xctx;IOZ<3=vSVA3r)Gyf?wOtANQ;73%&_i1-1Uq -zsl(OPMTsGKu!LC*CzhboaiJI-BX01BTf5?sqD_3Nu$H^Ou6gLoA7OtOVM4)vdw;d^ -zvCPhFN^qgXH8p$6|FoVx79-jDCq4HqKla%rakpOjjn8}HitN!8zg_x;3s0b4 -zMHNphRo{@T?~Ch_t2)cC54|83?QZ~6K&-!Z$856p!Ip;Jy6N&9e(%Dpi#_mMDuWK2 -zi%0Yc{;6U^yV~kC_r+DKF6s@6%uvc+ZcBA}01IuIg(KmQ-213V{`Inr5!D4piSBTX -zGpVmh@}&T>_m_Fix<(akXikNKs_k|qD*acg{0tKVD#!Onx3^1ft9+sJs&0?vqWh~* -z2KX~HRk(Z>ZBd>uZmuOP2x*W0+aN2KMK1D -z+IoEQ`Oi0@z~XqI-Vgom8dm^kBw!zbZG&wcoe^J_ul1iWM(|}|St+Y4R|{0g^{G2? -zkfw{p@G`ExY)r+4j;OAQqSLEFX?OF4OVc%W(~(JCN?P}qim>rOnm3Q4o>Lu$esf`L -ztB>eQ?#3qNK5ZUh3Kz%1tXNwZ>gh$cP0b^Qw0C|fCIJLK`}GYfdtH2mPnb7wA=t0- -z%^4%U4%NjQP%irD%6hEGvIA%87el(aHcdarq=3r(3a`kGl-Rb=BSTwX?v%gJcz_=L -z+a0?tJsKGv{7p|H4~!vB^+5N@hX;xgP+s{k!_6K_T-*P+#3hw^E&+RF6pCP8mWG~fj>Ybh -zBfC%<12v*n)fF#OrZ7zID!nGh@Fp>3lU~1j^hPo1F}-dJ5tW7_z)uZ4cNblNMa6d| -z`R2JO1@r}nejN7Z0`rfT=jgRny=baOBwv*Kc561qtM*H89H_1=JN2qj>vo+JoEAU?^JZ#}> -zz+!eyRyj6V!BK#CBl}dTt0(x8oN)|r9&xRPH<8Z&BZ{r$6VDVXVcaAayftvOJ#24f -zpVn9Vn$H=)(uj%Cg<{7xfBDtzS8wyT*N!cyFoYXamR2Zgs;)Sl;o?KKug`c@$5;5M -zc7CB~QRGkO8@0*tJ#ks?jIjdHee=d&ve%cU;i()bfb^)G*d?P7eQr~1%F8m7zsnTI -zKlnGxm*|2ntzDZl@4+Dr@Kvt9L$+^r*Bt5ia=2z-!Qz^ssFwa)Zi@akYYzX!XBi)8 -z>D{aPk^#CelGbQjvGcwc^(>WrRS -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 -z-w7eS(G3eedE}nI&&_^_9n -zY?aB8+ll7b!F2mau|NMyU;X3n|1qcymAU^dwUEJ^MK&^5{SB(8<){KdIQq9eJoeT9 -z{-b|uo7GhQ@B8J+)BhVkZtR%;j&}UrUH3OWh-^qY4*RwbRmi*uOUd8cqw$^d-~Q0w -z(EAr{$UghW|C6uu(732do5TOPda=vfji}yy){i(0fZdU&>i+|;@ORh#H@?W{ea*k) -z9sbUW=gnWbZvJPMtg~R!@TNQ^;{R3(@b-fQ7n0r_AcU&*$YZP=qanG%8})l0mi0 -zLwxT(d4n1aQm(emXs=qB__-A_bjzsfCSJ(p2v4iKCcjX?yx*;h-UDS0s=~kNOim*A -zl`*88NpxqwNy1>ev3dflmCevm#64%TNFQz1*Ecyl!gedZByyRCMCHRIVg8o{0 -zF(V#GH__Dbl-de=U{|0jU}YgZ6;$JnZ*L)hFdyt-GZ!VJ(d`KZVPX!Lrg+1-CCsD^G`Qfo7i9cv^VIOPsOqc5@ND}x=Ktm0ti-~e6Yo{fdKQS#V?33^l}?bF -zk#bY`ITaT?6Qy_4333G=kQobz7tPwWm$ei1yBZ&IK2Q=l$?2dHx&XPbxyIF{T{-_v -zyLF;~XrMv@d?O(O^_v>9ej@TmQjHV)=6mGM>V8`V>{Jy -zE&oED5A6oShG2L~k}j>X6bC@NN;9qYQ$?0FjQ*qOccMhXY!+@^PYfpJvJW?ngjUO^ -z@Wec6*V6y^_UAwS^zARahyK{IZTC1N)tiM)sphIJVEPO`9-`+#qFU% -z`CtF*e|@gX`oEv4?EF2qqj#Ug)( -zx}f3VcXXDqEoM8mvg^c&&I=2mQ{z5&)2H3Dmh{=uiu&~i_5U&~Anp&=`Ljd$L@WCX -z(g(|f!(lA;p)Y=Js|t!eq+Qymhn<^;4s(CTrA2HNpOt*RrK*~<_r;^>`^U|8*QdKZ -zv;h{A7j4!TyV6N_z3BW;!gdBfhsu$~1Ju~0{=@wBr*;17_8Gm2IAFuunojdmJnj*_a$j|z9_ftVRY1@l70;K;Enw)nc@YG`@xP_pC_8A&){fKn9PbY -zH!Xa7e3dNSLBEbp9k{;OrTy6g@)&OI&rUmF&E1&ohnu{R3{o+9_WItG6;I30_G#a- -zd9caEpu5lDGuFjW@Vk1V8cg~a(si!Sw%xN7J$B^jDXKFZ1MLxYlWxu$0N0e%U8~6P -zWiUdxtO_DUf0owSK(1t8P+Tr3Rgqg_9-ZU1#o*Wl`mcm(`C_S4{7>wlE0D+Gaa~|! -z0Wo{>ZF=?Q%V#w?rCpsfAeh9!>DhoyH^xC;Kftg-IZo=!gqcKkME$T -zhNFk@)1yp)}iXK6~}@?kjo8Q^EN!PW5O$`MUxRjAfl~0^}X;=ygnA)a9eZ -z2hl>`l*eao?6)^V%K)!sJAB0+m@3oqKc#qKcfPW+rn<7Ck|{=+X_4o_5V@uVf9-QS -z9?I4oOjCX&3s_n~H_(N>>GdDETD)f;`?J~=a^45gw|e=kPRF6$mIXOseBp{6ECBG0 -zn)aq}T=o|n&Ms|W;mBGC$AFeSMRRU)dnNDgO5XjIyjNH9UOzje{X<&elG5C4OMz*T -z8`?ZQyPT$wj@I#zP%ujG; -z+70Aeg0;i(fd4FoFVXHewlLM5j%e6PM^pY?IK|@I>1IwRzHN!o6$kl%`w=;#&A5~A -z2^?qJ?Mu6vnOzwx^ln%+mxlI+wgfV~enGJZT}|l@SdfC^zjG6ZQ;{BaBecQUI$-?A -z2jUmqd5i9wVH}V!4LQ&@Lr>oF2=O*)y)Au^P048U^Rv6ED7d@P)8?sUF5?9ZIcP_X -zVRv*BK?&SsrV-;v7%*}v8P&b`6bFk>c@|@X_Hy`putlC0O58r%jqu@s>jEb8CO?F1 -z9LX@d8`x#GX`Z7v7Z0DI4w4VXjR_g>+u6R2w&Jqh-9GEuE=vtJ#x4smiuMUZQ!_{w -zPm_iEg)1vOpdbB==d!9Qdr#ezwcXiA;Cc}w#rUFb`v$veNX>4-R%+-otAyGkCI}rE -zR?qh2k$YEIT&G8!Zqvy(bAcU)y{X!iBk(zrC3_q6I82yQTt-XY4`lxX@BR3AlcfTR -z71J|1?eLmd7n-M^2^*jhw)4XaOBOCB$B1;kD(-}R)>Thk!yc5DRp0_FO@W>4aBf$_xUn^$g*a~4 -zr=mCr^VUKu_654|mi4eN-ZBpbs}KAb&yp7amlbpAFYvkxScQGDhn0>d7~ACx#})mm -z<;-~dDDGZ`oNMvru&sUyOtvszQ9LzWu7`@x{DLfkE-3I6`AGYA}mKvco@0vio3J|){DZn(F0?( -z#SMX%Gw8A1p68(seG_*C=2e?;nuA7FnmqSuHahdsk8m!*j|EFl -zh3?6>tTOnZP{9IHSt>C^RF`w>6HmQR>%PyjF -zGJiG{)uF9nCoS^xESIKDdu%I*!J4Jxc4;;%i5~oQ9&M|0-=5QI(*x5{#wFb|jE1Bp -z&?XOm2}8r{e!7JdB#CmF)h82p_jZ?(0tMg -zL6@b&MhA>{sr4*{V*re4&r)v0&F3=;P3qt%phL;#{?)Ig8CoFrE-sLeDZ{fJv!e$X -zD$vgyhJ+@04SQtYAkUu}j#FYw7I&Dl~}8dFixEPDAYYD^Y2Cfi3;)U+(>rY!0v -z_=ssc0XC-zkR7H#KLN^o3RF{|nE(&n1UM8^VEQYSn*en>1)e5AGX;kI6quG6cT-^c -z`s4JGzLp1WDiT`@yuztzq9rW-FSuo7rVwjDDan{0d_NK?#ESN4= -zfW*HZw>O%xdGu@^y+i9Gt^c~nag)lx+3`ZgL(+o+ap)F->>?RQa~yXd>@qHnT` -z>fA+Rbr=6a)SK~)-ba15kDl8{b8R1utTJk68MUSSHKL+^DTkPvY}^k~wei9d@3n`h -zYYtI&AEM7xMIBs4C99}2s;F^Q^ukp%oa$(^siRicQOoM+7wYH})=}rzQAgF$uh;Rf -zM^mUNVrtS+@k-Z34QQecZlbT>L=EVo=enrjUDWU{>cl?!g+3}7uT_2YQZAbBE_y{5 -zt)4FWpf2ie7mZ67wc153bJ4rI=pBaWV-Hb(4pF}h(eK5p;Sl}a5dFd!^~*8(g=5r9 -zCl`(!sI#^&w2}+DfqzE2&*9Ob`bHi5 -z-zL=tFShY!U^Dt7J1Kewtx>sqyDaucx5v8SJ4MgjdR!1 -z^=VNxq=3WjqFDMeq|G@S&|hQwf`oQ*{io@&=L(N&e=$7tab=@_LpeNXmkr)uv|V8&^FG%-qnLc|RQmqKQMMv+gE9+*5=Fn; -z6)tQ0hGW)-ywvw$U-+waw=EtqTx}R#r~$mrKZ9W#_D# -zw5aaJyGyuH67xo7d(;-mF?L^Ggv;DZ3#eZ_pKU1)UclQL{p_;#Qgo}-jTzHSIho&9! -zHQ1V)=21%ywPBqN%a7!W84!HR8ZYQ?ST>{-@QR1>0sbfBogadpfgxUI=mDWc31!{F -zrcZNEZoh&d`7;cPP@D@FD;$tRXK0!0=%U%eUQx|{6U^Yz0$ZtED!+j5!LKAMy=t0b -zxow&ix}LsJ0`Hq(jF+Onw)`_t18+T5HSDq1{Ho>-XVlMyW2v#jVy#~}@>fp~jFZ%McKY1X%! -z)L+fPT7p9tmii6MxIt!MeICXkeUMR!T35LF27Nz4;YpmDjzhKKr7PLFX%AD0k95oC -za<3m4=a9YuG#WPH=rP>p+EZyk4Kw!4Ui`ud;RzUkun3_`NNDVSbE;#=J$rjMlyZT# -z8SBpNB}nWGtI1fSJNXvxb77vL3Ii__UEa$r1yK%m;8yRu+~dk+5~KG8Tc786BMGaG -zePd|VCZ{WQi{ZlcY^q;D8Xjqby8q(AaY=&$p7$3c@Etc*`sDK{-crI|GI5Xx3+u^C)(u_&zpw~%G<@2j>tPFMeR#K*9lCJCe}nPcw -z2d!nearrjImy*mag)8?PJR0D5k79CS#t-ik -z)fqDS9ydSpc7TtdBHbAlq%bnEfH&9>mEULEK5epgTUNg66c(FRm#X7|izRlxM2c2c -zq_*r!j3T2hzhhc&_nAb$2nScszVWCqN9 -zdJ0MgH$HfeD5Oj-cPSq=bkdQvp9biY@SQ1_+}vDj4PFahT#u>1&^#lfu?;hCup>M@ -zd2P@a?Hw8hsaE -zK~+egfJ|rHo}pKu)#piP%Fz>+{zrevwA>t)DH_~LVBdxF8w`HCgk$!$d@N8-04JS8 -zI`FxtPO}xfbx;0uH5vlmzfO1ko1g`~DR=0@lNLc{*kFB1w>`{PB6H-Ia7D(?ve;13 -z7*>a_MU$QTf=Wlr7ZydeBf9L}lmp-Fp&1i~BW5n4Ku%ard}u{|EKx=g4QdRCVHq95 -zXw2p*ocG3{e)rx^b-9-;= -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 -zq^=L2pzb?zrNY$) -z+IJ@7{_1YuTQOG?~6&MzvE#U-PZZnAIzd8Zw -zJD~*I9qqpEZQOT^^A5B%qH_a^9 -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 -z*9kkrEB^@-mJNmo}d~x4EBqCPd1Tt>AIY -zWt8QWA7B?}yEIO!z5hKsj-TEFYnw%tuN5)OX1~kRvdDa`jEXXjqMV7MNLl75yJxVt -zSz7rK_EPM28Ruy#U0q(}$K%lzi)6=k`5t~G^xBKUuVj(!k|c*+k;UGBghk)Qbj>xs -z)HV03U)(Y-5_l`}D^V6a-|`}rvEOZ;M5UB@yiI*oS;;JhP0subc$HSLcUhGMRlM47 -zq2A9(>|~W?f~R~7&?zZdgJ71tI_(!dAF64{fQN>=rOOxC -z0+n7y))%+*I~puf{c*?NhEp#6_;t3M%D&pYWwon&+usXz*}2h9&Gk*Z-LCB9e|XQn -zAJi$^9$Wt_0rEDkK;i+vcB-3(J@3ZR*W4~|YCFbPS96WxE*U1EDBO4Ab&DS9`tdxv -z=O}J{pD2x@bPu>?crE(wdDnE979ILKzKR!;9SR^Uzn9TQ)pJ-C#B`bGDSqASWa5Um_UzK?h$%OfO -zS?(hEmqvSEM`6u<@!DMKZb#0wRFTF-lx=qvkGZJeGu&OOI6b%f^jx+M0K@<#q=>ih -zdt}NpKkBxd@AppKOYZw-0OGPJE+gqDn5A))Rf&Wfw+$+jECSGx_(jh4fVFn{_RZHw -zmhQ`~zccY}n3D@bJOI}}M7vu(jMzve}j@v2Ou5HXAWG>V-}vPu*llEp=yR@Gz>v`#dSDBKI>bO2Jv0bASV48&m_1;Jo0%!Ks*)Sy=+mPH=`hUoEB6q3VkM -z&>!QsJU;jdmjE$SIA&sBmau$&MrFnQ=2ulY`2v8a91aoSJh(fqTEND$iisT){zbuJ -zWt7Xh+zz!)_L~_qXp6v?3ioFEP6SQ3327Wor=kI>c -zy1MOMVTi@|fdcaSs-y7)qS7cfqcBe}JHKY5hcx4LQ}^Zx&8JLZQgD|IP>hkyYH6S( -zN+R-B)`YRHN@WRPq$*=ywF{<^L@eJ%EZ(w6z^~o;`bx+$Dx@d?7WrD<1FbcxM9pJR -zOEE6|m~p!26~GNZUA~T`oacf8`4aics$f|Ph`-4E{9+}p(>&gQQg(PYNnm<#HUpHG -zz^PBS4Dgk^B1xJ=K)Iw*l5!@P|1oL06>JYUzufVC5mZY!#|W+c*HgAD^D<)6L4aht -zUa)(*ZVRxW$}9LuzHW~SlEno`wv6Y+|MK-^TMpt#n=doBS;s6ka51kk=V%4lfJh09 -z@x}k_6CrFO$f}v{>gv=d%%UYW#bQ-{Yc2-3_>CT3K9}(sp45I-pYvTJtogO1TV1b> -zC@uw%D6O?==<9A*xU8sdqRQBo&#R|;2;4@#nyOp&<-IvdO0aEZaqRHC5$0OoZot)n -z1ynR?jlKbCk-!m*ZD_tlmP-S>;ZoO^yrvhCWuahq7wn~F4J5m`-S2n$QYj@+NMK=2 -zUEi|C(2XU0*!6OOc|9O?0qwQ8Ni7>A>uY0a^{4{2WmA{7q>olNsU*HIP{fR8RgL$h -zE6Th4H_|Qt0e(Dr&ft-n;tVIh(=V!}t}9iEOGENnt|$7Ly^73cR!GZuZQbOGbDfW|$lh{yz -za0_C7r7M%uk8@EqCa;SEN&%Zhk)QA%O7&h>@l+XBR5o9Dn_F9m=3>*ci5iz}#D*SfYKgx~1H -zZqZZ_-Q?|-D@$*36IWRo3DRUun7Uj{l_}6OazbIh -zTctsPvLJf`XFEC?;MtV|%2gNvFH1N`YDH5ikP(VwhZUj*;q9VCc>yv>sLU!5!g5KY -zEK~zRnZ2T}cd<%Yy0fZo#+bakz_w5s!2&1;@bfAwZ+RhU3Y2a@F}uKPUamJ=)7NXD -z1bI;v!je!_Xpn_WWpA3jjE2Fq*D|kQC*EK=9UTS{Q2K05f<|GBJgahjy#NuE^yxtF -z%JO2A&`n0u*``pp&)P5gkEv&Ggj=-{B`U@#w$D7i2=Q!-gzT}tl>Tz@B51xy0!FvA -z-E7^lH$jI2ssFo~Kdq0P0ApJgg|wQ>cR -zegP@^!1KJRw1th+TnMXyZWl1`bjw`8x`)|StX4Iz8rVCg| -zT}x|8s3}3MYf5cJS;1`6bbzdV@8jim=!T`rU=ym6tVkdh02RC8yVFxtfF)$sQT22$ -zOvSgK2UmGj; -zq~}hdefT?Q&vzQ)Af&-0HALmgFyF-TYvw#0JGNX$GV`RyUNU(HK+I`wjnK+g!qi1g -zcx}`bO>PF*SY-%j1AEOfkSbBOIuKY@3dF^0MS39Utn#XB3*49Z=(SV=v?eJ){iBCo -zFS2kC+1v@q^P-UrEW(Sd2-UaC<)UfBT(1V?=enwa0hM&!t+-@YWrF~CF`x_6{_3G-^vNK$d^oe^^j7O)tZzEu$lh{& -zUEOuQ=Sx$q2ew&P#Y0+!wfUyMa}AP5eks+3G@aY!R*S3x%90<;?Ur5T4XAU2M2FP5 -z8z@sC)S#N8%S;dqRObq^g}D`Vam>RF6z1ElkV-V7B=D+W#9@70DiTRSB)OJ_0SXW7 -zj6exutSVp^fnvpOYk-MgZW)P`w<6@vmrxT3l7v0|)+o0*GEv;hECU4#w0B`D0IT$PV3+h^ -zSCKcsiGalw5{BoNQO|IHt~Zy_oL!%f%t}G(-|hOE4vK%ffl>!FuQs6aksxrZYKG=v?%qXC6vcAx^hJ|l44J`Ch(7H1qEx^=)hC`<$H@HlSTWxRj)i$5+ -zAwSISH;^t0*dFko3RkMUh4E_E@GYpWD~L6mNYtul)*Y=Yb6V -z)!8P{DZ*`n?K$dVJNWV~zTC}KrG7MY)pCE-uO`B;346A)Fe1GAlHPR_Z7GL!>mt4D -zd(DHgwA9~Qv;CUP9F(Q{!T;jH-$+*4>XKC#v_XQdb~S=vV{Rz3U9QL6R#|RxpfndI -z$yS*tK!!CG;wIp%1%5;UqyR2{7g^bI9uybIM^+k~| -zTA{7<)@We6<&A`RAZn@vj;3JEl0sY+3KU78Um(9;=%lbJFK~yORz!Y)14(T&WeSGa -zZOxz522Bq{UOI26t`|3I42N=b#8F*K6hdyGE-O&u2(DoPmA5KG;htXm2Fun|z`JOO -zLFoZX4th>yvqs%6^_9A=Cd=fFt^TU21Sk;(Xsl(osG{-Is&8bVt15i~EdWGpAR}Zl -z0lu1-*Bnpf@~X_}1?!?Qm$J@_OC=l7DJ1nY^$mzxt{5W998`g#fO#Wy)-dfyvjM3J -zRD&C>iso_6rC9S{L7&wu%BeC&S|rW8-PAyfR)CrfA`y^DE%C&HURl)EWGZh;VosH; -zEvx~y(G<)ETp6^uW=dU) -zoNi=*OWG1>Wp$O=l|CQl6zvR!1ZBR`G@7;$x&kdl(-Ad@I>3t!FnmI4(_{_YQUhPV -zT9V5u`xx?2PVeI|t?GPe+NCdPX?9C(vIWGs17U@DQ@fAzT9W==^&90UNWfU+Pg%`l -zxx$}SA&x7P85s)|rPj0@M5vl4JKjeS)=6He*4e3Q4~|UjZBff5FMM%3h$D!dSD2ad -ztJ~JFk3seXty^dLjjn2dP2EJ%2s#f&>7W38NrNyWXh+xC@QR(P)ntx&s&Vebr2sYv -zGL2?1>a;hdVPYO|kI}BD$P`h4ie+i0g+jU*1aHU89sD@<&lLS%$f%s4%K(z-! -zg+{*aWM!U0(u6ki;CmOo>$Qe`p5bv0zTSoCT`dJ_u4NAT;Dsc2kO%EmN)&c7Ae}Ur -z($>HYGth2}f@lTM`o_S=OET*N(Eyo8qkV{tg;M6GYdr5MkB$UEOJ{OHfxp -z>QK7Tmt+2#0+cD07y5dkqr|2Vu9NpzNivv#s95K^s6|DGYE23Eyjgh7LZE7U;MWY~ -z)<)?nC+H?~Sfb2q+1x5jD0j1O;{DBSYvOP3x+j?!n(FeNf9FVIUQ_9+=;JZY4XnbZ -zt3h-(}a4Ahw!2-IG5)Hym1Il79=_~{X5%dWl -zkCI`OYc;hsT3&&hlL4~P!}x68mv;7tLf)7R(v+|lX$FnVF0vAZ -zzR;mxV_MKew>k4QY;pj`{jI-)@$9mG?{i -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 -ztnW9>17&cG*c)yu7K6ig_i^UJTR)hT=5|}y -zdL{|<>#r4ewvN{*$ESnwXVeI`u4k>tHK_je<|DoV3mE^=pP}B+y6;jQg_)MxfMg$&WAA@=SqdUp}qw0Y5 -zZ2lPb5zWXED;ha=(S5KR#clzAkXTTFk<3vmF#?Mj24fh8h%*|=r@k#lU{aA -zg)~LjX7A@thSLO$uoRWiDS?$6pQ2w*r^9={>-krGAx&#>^aD`RRBZxtNi!T*7<;{20BHYWEqLKh0nmUsv8NpT7#Vnv!erNM -zuOQ?mEG*M+Ty6N`u#_YWrr}l&=+k~S)}x&^8nv7k-0a!~i`gA(V%`rbW?(#vnf&QS -zXxQ^u84`4CGu}NX*CW=)W2AYUCj(3htETeDVO7DwF@0iuX{PFp+rZ8uz1*g38O5#4 -zJeena67Q&qX1Jp@{h*on%ReUrf~VpV6(Tc8m$Z~|SYQjc!SSmiE{rr(-$?~*j=&2} -zm%UcBW3pTZV(PHAT3T-GLR5QI&y2UAccEc}0Ui@0N3++NMez!WSO52dm!G!4UfxfP -z0iqTJ@-cnBM=>Rp{9`ZZQ3e3rDArHt^E#S51vC3)8RYLd>UX}-oWG*E0X^Qb-9QlZX(aeT~PTw -z5gknH0c-%@o#g+p>pm(~uReZ@C+Ju}g?^g~i=+g!2RB0u-lAIqZ3Qg%3A^QFU_z`7 -zp4nkxpO^>|?gURXe^7_1#0@G_Ba@`V&~KnpGHEdY4LGI~=nEE_1(L|V4DFppD{j~c -zp&vs^t(dmOEy$HzF^I3hDK0)dZW+h -zBoQn389n+`WPrmnhzJ2oox2f)WXD~@B8mehxsCw^SYf%H`UZ#kSSkzFZ_s_>Fd&5v -z$vHF5X9qdxNP++g?pqvr^Jq&n1dpbp)=lv*d;ao6*z;dJn0pN+JO@d3O$RX1q -zFV>GnNqHFtu6HEsA&js>V;B>k7j&0Sg`2~emKOtEWDZx0F6i4AEfk1J8t%o{`v(TP -z-1`&kB&;BXuLUyAdBI}2>tx)s)CPTw%?N%FUXvDQXZnHt7Bqrn-1@SD1!P;x{QQ=7 -z1XY|IE*BsU^L^2~i6br=_z&Aw%N_plf-b*%|MIjL@u(4YF?$0P>D+)C27BQi>&irS -z5pZBhCzK1!(w&`Mf#hsZxHAf6o2UPi5c -zo0dK%Uy|c(ft1Wl<634Tfs@nSQCAqzuWeyJ`hf5yH1;2CyYuUCuIUQkMvC3pheW8j -zGyU=!Xw^P*o~cHFs?jYE=H&L2lMvg)l&|Dn)-6Laoq$^NhdkmjcQ5q7OzR0smh$gQ -zKW*#9EVm85g$DEq9J%wDM;>k`KGFa!AVd{j=yu}y` -zw0Kwau#16qoX#|Ncmj>5cc&MLGkXXKt25i^&|WO_{8=Bv`{`WK7*`%ka~+bOAYBAJ -zC`EUi1ebN1Ps0s^9hq0iIzPwIt}kG9#O`0>y~K@(?aTDqJ>AK#Y5PZ;R8)1_n{mb5 -zf00Kayip?kNA3*cJ&MV{X=2}AoVd&zO`M;U`o|4s!!xDIOI8+jrW%&RSYC3uE#vj2 -zibz-`F)@pzoNoZxCc71NZPm?OZZ#!zk{4YVk>wa5))cl9l$B6k{1A$Dye$;aEwiGm -zvs+myTU9LoxXj92XJvW0-7vil1wYEH7I`LQp&BKx1;MhpW*9jvf#o+8ttB&iv*v0F -zdr^g|ndcVt$T};usxLQ5L8JhiS~OQ-@~Y0+1KMn@R!4~@WL{osQ<|!-^P1vcVXSPC -zUu{!Rw4%&SlQ-8~u%{Q+=E@p*vn&IZEFy;I=qz!2Lf?7w$d(rkTY0$@O(BI8mC|K( -zqo_bxmZGV3)?6}krG#9v{B7zy$X^|gJu0u2z^r&IM~J*OHB6qlmcl9)>@8tD>awoj -zON&wot?6(GgT-$-+$zt@E2U3>vBh#7!&c|?z#7v;>P!O}u@o{YYhmlUs!apqPU&T2 -zt?b3>BCA;DS6NRWEWhP;uV^JV#Z6tCBERL7e_uAZ6mn~Hrb>pwh+%38-AI}XQRKz# -zswtFIimTDrtGMXv%~I|(DMW6vs;ui0mfxkkv1x~?7za8F`m|@(-hlHC_&;W9r06DX -z&}Use?##|cy%WfT=!oeQeKm-Tcc3_8BxwV&-nZzO|DiUBAYXZm1_;8aQj`+A9Mmoa -zg5ZaVOQBmA`uEqPPogV6OV|wU9z?YTNuc;57}&xth+>$|?eWxcZ1M{k@MZp23&?vE5b+7z<0>UWtUts(T -z#J|Al9!`nje3OL4e<3SF_P`PP#PRQQK+5z1w7{A66)1sv&xMRTpIz(Jww~S^1_$;i -zNEOUv2=Edy67j3SN(_3611x2kK=RyVR{f?+ -zp3BTxq|QKM)u5&2lr>xG`~uQZMH8vZ@~gT_z1?4Jw^|Ur8Rx|4tgtXTX?AY?4JKwd -zXetwWduoP7G%Owgw}yA2h-vY(7pTC-@uW0>64dh{Fk+EO20^+3OTWj+eWttY<-+H{ -z5gFhfo>GfR&^#72{FvmM;%32w90PwC@r~=)y=!(bYUbdPpycB#M)oxtK5~gH4hA5( -zw)gw=atm3H0mTTbh}N~44YEdub0m|5#6A9)BhwP%V(_$xYlG4lbPZ;F*%%w3&B9Co -zY6t%`yzOVkx{bl}LDiekZp^O^@NqB(Ww!y}<>P6+r$mSry$aaKq;kWp=s6UCw1b!) -z(1Za0C;9xeZv2G*oUk!DsG`+|5ogmb=sAfFxYK#wJJH(-iwANj4Cp^cPA7}a?j;GTq0bmZC5bVfWR52IZ42@W8}hj{p(?NBnX{>O7;WZQlg -z9g+t;#QXrT()(7h%`&$@rR45?N{bNBjJe2Q=DXQmmbLwu>b98r49*Z~J+pRu8lfW4*7>MGa5u&id%%CfGs$t-j*8=O_uMO?EcZ>)u` -z%F_2+Q<|GDZlyFC<>Hlg4t-~0=7p`?962p&_@K7b=qkBT;Ds~75vM`pIMV%s>IL~Daa}< -zT~auJ0mBxZIXdij1Nq;KB1PP}IP)9B#=*)|+>r-;q&(Jd);?m?G~+a%*s9}HCn@O%~%Pf}t -zWqAQu(vt5pHd{SxI3U|Bv@=1Y7!G%v9e~A!y9A?m8O4CECG_sW03BDLwUHs?!^{Iv -z>2FzW1}{OL?gp$!bnLh2J&PVfY!*-kZqcoZOVS9U2EUxVBxH)h*W`H4eW=hIu-9$; -zeQ*SmL~s+}2l}%^(Nub51xe?D7|;BtJC02AMF>*^AxHmb><=trVlQqv0jh!_^OV*A -z5f7j6^9Nec8=K`Vk$w0zzwGmttJSIx48XV;RL74jE{H{7xB9^(tbRdmC%F#ZFDRj+ -zu~5P?Wo}(^c)UTeteWXX!#J#OZ39Ka$>G%=Z#iCH2OWY5qYoe3wP&sSYx~ttp9IM- -zHr($(*Fd=@J${5GNwamzTO!j@wll2Vt#N%XMh;Bv_TnyDFZj=<4r%@OEq!v1L`4r> -zE8!|U=jN)2M-REMNK}pnF5G#sxydoA<0Y)rGhN!VyTMz3cbf->gETU-bAJf}h#RA~ -z?B3QQK?BK?-ycY%W{H>pz*Hs5uo?5f%kY>wFq1KGGLZ5O)#i}i^@rb5x3JNI9d%NJ -z`~$S@K$GNq(V2<4QUKB?yFc4i9uW8;wMT7JS^$QiR-Zxuvz*kqGyE0$Ia>Vp#l?}= -z^aPje9<2ao8!Pq-OHBNlq#od{|C&Fa@{$B&-W(i$(!ZW3mgQk_0Ofz-EdFz!4h+QY -zf8z3KVzL@B{eUVzm?Q~*PeYC_W{~oe?;Cxy6YyA_d!7c!*1qwcTw;m#dUsZCja(g&M -zbesUgtA%ZKJ^P}y$A}D2G-tM|*TJJi#()Sr<9Bh^va4RWkrZs=WsIPHpI&WC#|<-k -zuMIv21pVWZDJklaNW-sc!z#MxBBmpvLV}zx26T=6VF7~@{dOFSi%39AEjU -zNBYo2Id9oL!5NB167p;TVALQ{plSHKo?)SQ=YwKDiZRY-`8tRvkcL%|7a~A!OsWz< -zaf@C#!^Sx9bP{N$(pV~C1QHX($;by?4~yYTFwg4=g{!sEi<&>duP-<{rNrh253Aq5(YoE*|wqMt1QC!Arex -zZ~p|MB0ZlEtM;f%JTnQF-1!p>lGUE|38iUx9Zm0ovBJATPd5UNld_2Jvm{emN_byq -z|5|1D+?{acggKem8+w)2$)|xQ(yu}ARh1&XIv}*L*7#ZLCov>aKsF(`%RzNRw^1MF -z1M@O^42Gm%|2}(tA+a|AWBYxQdKPANAI7O4-kxFTzSgk>P%Oj% -zGiXEwU$Rr5usqixycWuOEkU2*;&Hs+=jlN^IzG(P-=|G8vmY=RkI8iif#rD$fRnTA -z$zpg@NeZMW$*pi@hz3m;-|15(2etw2u@m|L} -zxzx%pq@#!*~m?8j}NQczmIV94RuHobuK -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 -zXYYDYH79BRvTL3u+>w)hEjbAp`8PdD*y!!+ -z9{PoL0K88=Et0ocwXF2IWs*Q?t)zOV%+Qp8l*;V{p`T^_p9rX~>| -zY{G=?*4s0R6}jd!mU8`noPiU7dc$izJuCUI`Qh}tVQjhf_g}(+ei(&q7Y{eu{bk%V^zsxR+@@kK}6f!))=4osKXN`BVN6umPi1(5DI} -zy%SRM?@v1#{Vv((z4iik$3>43^#7KK5)3-qBM(eA&R6q;S7%WDAZNqQ`fx=LA4=oJ -z1HJLQME9w0%3`|GW63B!D8AjjT^JJK^=-=MisuNv?|Gja`TY0@qqmooKHVWDk;LSJ -zAXKoS@w0jJCFB=vd(_uK_Sx%=AGl-2>(oX|N)-Qr$uq`eg+4@fstg1SWVd#4BmT)? -zb6Sud04ECt`}@X7q5HEZ4P^gMYo{F$W5RhQ5Dfv^$2WWrS%6ng%=N$2DYc2Le58pTG2WIMu81 -z<53SwlYYByYr9!ylkwkTl7>MO+BlAX{O -z$U%%f1;Zn{y;h{CjPHXQIDD2xhIiZPXpq5cAfc~;wgzzLiiDTTD*J__h- -z>b;wJD3L-JQuqqYA`1iyxQ%9-m2dZ}F`DRP2l8!?nG`q>Qwl&P0Q%Em{oXplk@oh< -z7MPGHOJRu!O0MeL0CAB|ryJ7>Bj5pViZ(g2wE15Dq<^KTjXynTd_3`X-`_#U{Phgj -z^Nhy0j98i-G#$2&p?6+ozc9)M1?D5KJO==G+zM(eKfm -zAjWuhd=0&5U{~VFMRwn#uR3NVK3E9cbn+Be3RnKD4|BIg-rsdzl$YicvwRHyAd+Pc -z%?3TUgrw>oyzT)a(Yrm!;%m?JgB0@s0+kAja(rQ62fCt)F$JfN8vShy?|0${D-0XO -zoFo(esR@%R5u7@>aR+_PXTj!r__MnPb5N(%0dZ}&Z* -z+ff{+70tqS>6IJDl!5;I!*q$^W;8#v<4AG1@PAlH?Z=>Jx3l&*Hclx?@SK4iPx)ck -zqf6<>cw!37Hf8?haLRno(gp7rCPnDDKLMfvCksnlOMZbm>ed&2)l!ZI1N`SuY`uC1ru|{S)3Ld7FyB*Q;VI^-A0rWTcj-1WBiZq -zq(cSZguD-ym|oGBge7L#aS$MT{?18qn$o^F?I_?)9V%ie+NR~?;nRh8T5w&*G|nji -z_jFMz6M<=2*yED@|Lqt-9M+Z*Tr5*J<52;Mu7@(a!}ubY(?`g^&8hSLpzSo~luEvDE5>ibk35u@&b -z8cg1uzD6%@{*hSsi5)V0;EyGS;~(2!JaNW7o)($v8XX6tKbi~Bh3##s&fx>BA!V$6(mHZHi|5#2_AQLd}6Brz8n?y -z-GSt5dA??*AZ7r5u`&sK5-gbU498gqv7Sdas=fR`s;hC9D87B@qB@-D+n8z(>hC49 -z`>$RQUzhPbXxM=%>7VDtofPBfPgkO^j7Uc2PgyS|!oT}*m3DX@7ce4%??kMX0Q)<| -z=!J-Jl=G<E?mpm-VX+Av(rWr^;>`t$Tsk}gGI8hEPFMc}m-V1_ZAt=9| -zzyV`PM%VzJ(Lq>jTA!LNS`(L6ZhukqWeML?aZuU%^A#vMr942e3rEwRpMj<9PC%+Z -zY_OCM=1jnev+lIQW&>N})E=gJg?Cqea;HJZr~XiRkZ(RBss3E^FBxQa$NC82Y(7%P -zq4?+5;m`e72aJoErx1muo=Q%f1_pM@?8RAdPbfbK+>43g>Dzzg^GZcVK=4Q^2Zj^k -z$^?n{^op2s9kU(`EP6QMPAo(&JuefV%#W7HS5XAq8gKM2YbQ^frfQ>9WriiT|8 -zPN+EOh!soNYMfA|8@HJm@v-O{QjtC7)?R{!FNRNdDk%;;Hlpr9z4$@sB>_x5&%4Oz&?J?wB4Cs~4mPGj2tB`J^`#e^}gR#+P3LUV%ylJ-y_5(X($2u)7 -zXaFbhaQ0&JSXrybpkaDrg!X)k1nr(5d#bc}VgqsDTRINAyNin$Dh@l5whX-Z -zV3Hym@PKYUCrwqDrC%(J`2%}{i>2V|5~c!`OV5+DDar -zT8^s!?mZZVJ#w9557o!84peH{2k!Mz`9fOuR4hR3U=~xR$**K|`jrVFKRGdSi&BDl -z+|Q28{3r(@6w*$%7to)R_XOsa>)pu#%cJ3V;olbo5L6c61;~ts*FU=sX$hu8bL@5S -zuysLKLLGQunaBLv{g%|I5kqCi6miYg_$on7=Zp-Ncjtm}EK|0^%4{2e{CFEMn9!B& -ztM{|>vwKT35lNWx7@p&i;6+VBnvENFVJ6Sc-T?SuTGsA`{8o--DEjU_SbJP}D-L1C -zOjO70Pnc_xUBK+~lNz|^#njz5trzAVKlRzy@qQY9n1yN@4wf+u6mkiTPYTP(A#3s6 -z_{4ptLH9#zSN3M9-t*tnIY52KUF4@>KZp4)o+BmSpZt5!L4~6Ke|`Uc;(w>y!;WMt -zV8G0sxu%86)TrsnC2MT`weU_a%3K5u0qd8^_tPt#1+jK=jTGm|mfwDvh>!llN{uA? -zgrAfEgX9$0Wti?_Gi-qe@z^yWj-14Dp!uN1oDM!PM0>-O&xS!5wQ)+n@h!0xF&RR) -zP3T+m*VQtJ_m+~0pOB8rkO=VP0xB`}2(+Ga3Cx25N+FtpXs4#k7rEsJZ3&9;clmP} -zjOwoQv90#OxjXO&Iwf}e+xbcN_;>kWFT7!tOK5??*i=%Pe-%22+-H^`Zj52G70F1$Y&FHVw+ZaS%kH06O2z$q33RFyj})(4^OINb9~VA3gQ=NOr?9 -zr&3NA_S3yAVk*G7toFQU$ -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 -z+2>kgDJit%!(!vy=_QiOb7%M#_=LTg|w&{mxq -ze<^TGx5A?RxqaN*gM75;pg^J+G*f!Po_%aP;i2kRne6hHTviejy5>rD)lSw^{Oz9a -zMlcM-1g{s0XVKjwI?L<4Gr?|7pZFlam%J;;l9OSfvN(53p&O0@F-fD(-=W(+&#aaMlKq(ZaG2b?w|tB^xx*upU&OE_w2O-}dnU!6{i!zDS?^K#bnb9y94M -z7S>kS@F++t$$ -zl>x|Tx`)G@fzxR*43k)UX5Gd3NH@M%JDIXTRd@|sWTl04s`P5K_+>MWp36O3)O)0W -z8)*JPW}EhNsV^&YAVv&Ad#rz>(N}_go_a9-)LyItgREKSjCNIOqj(`su|OZ}6nC~` -zr!?5x;v2cNd}?#7=Wmp;7yc@sb=~pBM%*5kjDrReOF0eQoD*gKr -zF1zI8bq{kazZR?e0$PwhT?12QkA#K#lX@*|PsPU|fh%{~+`%v#U{V-+Ij3p|zBi`} -zo@juXXiEb(kN=mgYg=|z*Rem-uX9(Dnd?J;jKSt=Fu@Q)s_T4vYY2kGJo{m-nwA|f -zzQ~d+4MpU<%{6d8pbbr2Y&h~xV6^u25>BT0dl~bQDkDvn`D6I`Rv}1q_~X08mAnjJ -zG!}@iBI%_r^{z%r0lll)KNeme>2rj29y1JVAN32i{vcqSR(`fd95!^Y?}otx8Lmu7 -zf0ca{Az+bMKtpGASSM-%M>vr1uAD`gJ{u31G{55j3!PI^eIudiy#oPMQO-TVY8oWCR2jB&x5#-a6^e)_{(J4k&IN>;BzWZ(sSZFJu!MbaO=$Pg&g->5+&Dw>x48y9e&pOh>HJXV^Q% -zp2|t>wA2r`1`aty%8h;h*NP#uBtry15$^UuWL}bTR3_qB{EneS&g@Tgyo-AYnxrazvD&{>jE -zTW&x`x-QF@3~@;+xvNDyfg?#P!_@|zS9ZxUs#~N33z}}G9TDq2*W_wIFE8cchyUsM -z9HM7Yiow^!OWF1Lu;F5uFt-4bgv>W0Y4r*;mVNF}>OrAnTHRAy(A -z9(TXod9queFO9oY%8YqI%heem(<+U)1a_}ogPj!O_hO4jQ18aND$=3sP7|y$66K}T -zm=C<|mcj?oYQ##WS|pG9JWq$!`i^_7?){ZFqhXnk@V!_Zans%Tm2 -zQzg*)?3K4R+Dx)mTi?d2nm@1dC~x;sxocWPW~*mHKMo&7c=tX%wWVCclbpXK@M?_L -z)9vR^8ak3SrRAr&Jr1%E0R@q4Cu0+zpC=O7i9FoA5>lVMd%a)M-R7N<%KVhe?v|E> -z@))(PYwDs-qD^ExLlWTCy`5}a{U8EJ10kzO;N=Gw&aEhb|f|(V4?)dfST%s1M?(OyyQWmMn)|r%pz=iCzsYNrp&y -z+basA!Qh%HW5)!k7|c5u*}ur}80t}$10q87^1xX7P2Hwqs}@4o1!Lfjg?PBE`p^Z5 -zq9+wQF)gkLR{srRh0X4Ei+&9cO}pWaz=#1P%C1&f@7?Au|DocDI -zF)h!7!qv5$kFyBs8S&+iF>MH(Q+^FAvhZ)PdUBSs>iJM4A#Y3d=|lTo)}f5f(ASOn -ziV-r`R*4d8Og~y75ppt9-*f-x_k88G)3cb|nD_q4ox*1kN{oI_gaqq%v=CCG%L6ha -z>;%3rX2g-y3K{{islP1HlaU!@)Lnqpu8~GBw}8&mjLw>ghp9b=-B3@hCqhC(NBLAT -z;!4le;T}F?ViYv7?M|0}>VEkXcDl02hg?jq-KyJeA&s_c^yU4MyQ9+{7hNxzMQz8q -zK&3c$pI2pixiNnx)ALiCsvadRuYFeLQzg&7>Dxk{MOq5f$Z2D;B*>F^(Uw{Ejf~pb -z_NEReTJ3l1l*zqk)Tqsfl?68_6C{aa_y_NR2I3rZ_eqaFU;Gk|FEilGMvbxtUgmdOc*C>0g7cY)=Q=+=QTfhC%x{g??jk -zVL(s$heS|%%9o^eO%DOIpWAXx$S!mM&(v+$@sxh5KXsdy#Wd$)!s+La>9o)oVH3*L -z!4=#7=Nq}C&K@Gy&%`~GSr%RFn$as`WF!$%h8Y4f&J$%LkHZLAp4Pcsmc?8-F_lGbf`5%JfIiItzO!q@l>ow7p{o*e7$M3~mg?cxSn{)1QwukI=IXj5xVP#K}ypc>D)?(VY`)bzrV*UJG<-coF4AK -zLO$P;V#htGb3gE7f2=#F`k2A(XI`??o -zuF2_`(TLw}7n$HkdaR3LYR_^$ICC_K$?jKqy}ABge%<*-t0ei&)ELt`xTofLN@(qBxlsSdrtc|CkWkxu{#x3$CWdi -z?7sH{D=={rWU%|TG7W4^>SrB0FTPv>%y~vORGxxBE#^Cwwo;!1r-f7iu@YpqCPAhv -z)$by{Y~T}D5$B)8^idN|X0u1O)VR3dUM{}nyRYCT17JI-Z)LKp1C#$5wqq0|sG+3N -zc;(-{W~4!!lML*D7|;X|sjAsb8onnf-=uQOO9!9Fjd~vRlw^^ve1_IUv}Mm`vfSJE+6 -zE2D_BRj3_%7pZqPz>jT9*}Ei`ZwW)7ycK-as9s6u9un+qO*q|rI?6Q1E&xceZcFv6 -zuj02O0UfQ>B)+1_dM6JX*@L8oYlnQuxS%{O-kY{WVixt$uWa%LD9b{^9VDF%Y69Ng -zO^Qjlt05`oNYbA?$lcA^+Pk=FI+v2z^yt-T?cA?9T++k&khx6uxXWnuOW3Y+G)1|f -zJvl6}RPAq9+o_S*8Y+{1P^hxcNCry_)nSBNDZb<2sW;4s1^><@@)(VBf#GO>m_8U? -zMwF2*kG%lnInolxWYlGV>2|8DKo>ZBV40@uC-$9BhYKD=sY{>UhLcrn&-j=Z?gOOk -z*tPFl&VFz1emLD^#38|%W8%)){r4e>%3Zd^6h**4OAj*po7}JFk|oxv@#XX?CDQ*g -zpoY9|rLQ6GxO@L|ZM-z;kT_YheWp%`;DYx7C#z6(B}4wr>D(=jL^&rR&i}R;kYtVy -z>t;!1t*hUNQvWHJ+}5fhFc$Cj$2W(AYJms{UK-mR*8N#4B@FOWX;xq8e(9;ByiZcZi8Zzc3W3{ymcBWg&31f&veOv_68>XR_}(R)DZ>;m{ujpU_ywdR!?NV13z-^3U>KXbLL$a7>)Y7(0NB8Bz9XV -zJ_A%biNi@LVOB&f`&!}k(Vrx&s?_pGv>t{m1dH$_&S|E$CRes$1-JPULz{DSWBXqy -ziH==#T73|DHuR&r($)BdFpkA;^?Afr04PFMgQrjW`KlGF4>Lo70@1OO#*N7hOS<3P -zLfjF6|5EJnLfh$|0BTNc!X_~>&hTbJV(unUc*zXUJOuUu(m!x9EcZ%cY^wm{cT%=$F%hjR*>a&eUz@qCOr!ic -zUF(70re5h)o*vgWaIE9-QN7xDpJ9AtVFl!bjecf69uQqC4_PBx^>i&!FY1wyN3b|c -zpikx`?8#j(Rt4*EbSC09lbxcZ5@L(muU`NiU;!wQ(TxtLaSd6A@ZAxBRn33|!Cj`k -zSRh^zzh(1{j5jcvkg68=<-LA03$NADWpDvAZemYc*r1 -zZJSX0F{&pb(8|T<#(mqb<3-$U8=yZk@awDWfwt7DNnh(ov}-w=} -zgDfpQazpnCAIzGa@oVNLrfQa7^Lnyu&BFDRhO`}oa|YMU^VC#|(%P}@SpJ$vKbN=r{U)FA)GvDas_WzDt*Xbe -zTP2(2p3d&08PR|QZv?`WDjJJn%q?v?nW~<`{* -z8YyG2kE>PFBSXZJKuD3smVx?&g401g=r#E2B_Bz$uw33DL=EoO01{D;C|%4r4PdK@ -zMWud5JS}pLZQY`UBZ?Bx`Wk6nGg?JeCLFD=i?^H_D>I~}^|dU6j}#KAO=adFazOOq -zM?GBR+KPOiGnF;V@+WpnAZ8o>mE_w5;E2 -z(o@xip<#}%C?v6keg~=I;^kaE@>_R%%a&d{MMt$_mC=k-Q0EVz+x{Dq)-*#09pJ|7q%cx#aIL@p1_mZHb^uxB$`=%14vHkv7UM#fc6O^`IUH=WQE@ -zVw)?3sxI#J@|^7VaeKw=*s8C{aFN0>z3OQN0*H5Mw20QGwywki!RpgX+tN8-^BRn- -zsb5^8m;R -z;_VS8vZw -zpiy2Ovn4iTZ4c)(EQttxaU7pd+r&}4TV0%1--FH73=zVdI>0w-=?%zzCdUYUY3Ohg -zZBYgYRj$Xz`~z&!h2YaZtLsc&HiU>z8Mj=hZo{bl?r;`u+F=O<(VIl9Vru+`>0OOk -zSyqKC&f!xan*ZJPnWDYhXC}#1+-PIpdO-x@oISjOwr3;9GyGM1ElZJvR2ysQljbn4 -zl(6%_1mTYi01B|-19H~@ym#JL^}`aNu?4Jy9M8*RR}FF;Y+t=1jmk@YJUDeajdH=T -zI`+u7Fo9RccamX>>lef)1VbYt9QdrVd|wPX;aX+(eWi7qNE{yRV*^jU<$NLKP9^Z7 -zx+PVaB5*i@0~WyMD-Kq`*T+#g;|Wn^uF#cp65u(rpb*1@e7{oAf)o%X@4kQ#@6?(1 -za*NmdHemTY<;pTiCjk%s)=g$oekQ3K!MF6{CDFY6pv|+{SFPG2uK>UNBux8ZAZpgb -z-6;nw*FMEM*Di1YZ`ueu!^A{W^$J7G#1{;-u57z)H%$&msS25c)2>xUvBs$`P5c)nBHk_xMrP4Z*9~0mJ%cj~_49TJoExe~VCiu3%>;%)xF|6wSLe{|jd{RfULn)3Z|4Awl=NQSJR{-3NX -zO>$m^fhU?*Stgm}IM@cfr~`^gTJN{V|vE^h}nZU62Y_Z*8VY>fOL$AMsfJVl^@I{S><~gG2#WcHIxL4Y!IzQ8fn-j-g(M$S}l4sVVZjZ -zjSE?!C%K+2U6yvM=OAUhti$7EpL06%(z)u{teV@bxiGi7h -z5UYIYjR3%$%%n}sY0jc -z)I83jtq;F#cTR7+c4L0&DgQ1;r?=nBUF{#+{60_jmff!B+v$Fyu1{F_mpmTX_5S<(Wt0-5 -z5?^`FjX~KBVh;x#UE&8CWNcVLh7drJcn?vJt(-J61bGTM?OS0I)Z!3rA>sW7@OO|S -z=REq`TPL0&(-ElCE5TD{B7`Qa;lfB^P)Rrx>z<6mV~h6Kf?A^GImBUYTKdIATf6A?I_Q{)^Wh=jnhhyL -zXthzaB*NPs30de8MGf*-(U45N4IN-~HJLHue!zqiB^%1f!M96ZKJ(R-v@Jc=R68-xu3YYRtH^^}uI -zBYQKZ<+GRnBk0K3waZttNCO|;UgC3w9+BK1y#nQ|me;3Zdn|fc)NMzTtRbuB -z(<0xpp*@Tt>Z+oy3uX_5W0MxSU_}-r$@*nOKaRAdGO&Q^CV=>T4Ub3{W0XXdh9d+P -zryq=|57HreCZq2+9>Yg;*mOBIp#dic2bfmj%jEb#gTPj@e)e@BIi<95Ud-jOYnmoW -zvy;B6^NAlIG1>Kbf1V%d{q(p#SUwnE(?-m_mCR(MCu%CIg=0}ndP$zNWoz03d6T6t -z+Ejeo)WlfbWp98M|a=X=~b-ZOl^fG|0T|`zK&!OF=zB -z;;!!&G6z=U>JZ!CqhXIBt4Tk_pK(@bLV8Ed+ -zVlG5RIq8%|4YW=gc<`nO@pjP7IFv>wrFU~_+4pZi@FOmzN%0~jO`VO9Wj}LM%kuer -zmPIS)xBi5&MyhgFzBFy_E1wHfIYI*`k%CvW!lL)iJitLwUTfJ2fGo{Lhfz6j6dTHc -z_7M!-9#CfTmo9Ha$R!B^>?|?qwVs?R7ruCr<=`DE8r}twQ4pdwBJ#J5E^F~(v;ZKV -zeCQ%MVWs;oIwopS3j5AP6TKyK1Oc>1DUkfrkB^wETH0Hb(1&RGoW)RU{Qw_h^r*Gs -z%lPPR8!U&08#p+7ti1dMe1o8`ePtwlj25RRDIGh^Naz72s>DmsI*mjY8n}ucT@798 -zWL_ILfd6ZW=ilid9u5eymQ)609`MaWaBdVY3QQmc2A>Vf`MUzVUDV(7it;xxgs%{O -zAfvGax1fo_()VQu@v}|dFn_8sw|YxaM5$$^N4a&?CfVms(}2N|eCQ6$I8EiC$AL+Gkn)3~S~%e-1M5MH6G& -zq(LC2_fN5)Sv#rGltbDsJRWVSLdZoK3sD|P?mkaI#^*EeFwHAtOsl(zo!=&}hnLSA -zKKwCxXnNlUBL-@bbTnNvK9@ET_;%aF0((cW5d~N5R9%4a!)eHo9Sdi_Zxk*b_q0@I -zi6;AhBNc6w2$G>np90mm!D3tPg3+FIiU_g?h`nzXymtfAPUHG&|B=%Il^4k&0~U458_&x*aVaR;FhO%tdBUT45afR!qABTDnrH%GE%r4Lo_j7;FFZ--l&QyY^m&kU}xIb -z&{3j3`)QV+n4a-di_==vB%o~on=k3kK~`+h51ACj<-&I{bee}%OIltfo3(nXrTRpo -zFi}7LdlT9?Cym@B`QoHx=A+?J1_do1gzX=nrfoxmbPvQfag~qB_JjCcM1O+w&*)T& -zSN+MEH3fXeM>j7(GB7~oSoYEP>-BbK1y;O5ERGRX!)0x>b?{#uckM&9ugIk7BXXCl -znA2JvePyPIkqU*pdq8sf8#(YGe$&p2X$lm3np(}K@(X#Nl4$Ah>ThTiQ}oH)zig{t -z+zwdmzOc@VqeoLrIdDq3JR|SDkOH063*2z<@Mec?u9y+p$^(9mI66h!I)ONW8C%fS -z&3px>ESPrBAl!6cp{itpqm_|kP384c2ipD{LB(ro$=^g8O=L{_JO>rM3ztw757J(J -z&gdJ_h6d(Y#LN`Z4jN)#2m`wYy~}~kH;V89Q_>Q=6!!=nN(5#%WHnIp;4BlTB((=XXZEk?3Vq -znBPc#LBKGYx^(L_ou9mS*Uj+a!CAY^wMslDDL2-MBF*bfS*(R{3vMA5RZj?&IQ$+- -zC$%7aBasK|Qg4X?f^Z -z(OuG+=hye4d?V)l$-(~4AoQD~47Ypr{a*&SU?^R!G@w1sW -zoZedwlr=yY`n+PJlR}`ln5Hr-UoIkrd}d4|wR-E?YS*$Hi6pt(q8>5875Y>9H!j3%up6~uXoWQj*)jCm#Ox-K=U|*mbHS4qvo8RU -zA3EpO==p%DFM7+Xfn?AO5UND$@x^Clo58S1MI&R)&Nb@sJ4g~@d+~Q -z-}DA8>6DU_nW|GVq2pZNf-0iKATwM#{=hp;R_{<35d~F=wbE8m_k%)56CCKBn5z)WKFQT9U{eS -z=0td*!FP&5QJ_Oz;sNEbxld)!)7Xb~--{4Vl1@Hrh4Jou!~hd-fg9!;8)3-A -zS{~)`T!&UDIT7Lm_Q1s=4Ohtfph(N%@lX1F>=Nk0OFRJ8vVVp+?)zEs$ia;W8}c>qMn!Thury;i9Lp8pG=S7d -zQ}6gqa5?T_}mj?;WY?11gN-h -zn7tR^t&tZH8UgA3F@k76O80r73mm{rqq?t?0o^tY{)p|0QAm5*FR0fBxfmY -ze1lCEDVV^Wba)jf4PRsx(^is2s_R`C@#g#>V!;K -zJ(AeaPBxeQI;fd%G$n1%8~sGP{%CnHPu{0(wYIl{WiyPay|h$~$_?*q>rGXyU2g8q -zeY@&>o`!D23c|*>r{v<-br~Li`wQ7~HkbF;`DN-IS;1Z|K4GqI -zd-?r6olfTydvxsO_Ir=WT%y(AT4iIHYnD7O=iBY~S2VgNb3(dC5TSzhT3)8LaqVN@ -zB<#(suM1!3zEwG)#&$ -zOcLdAp?u~lmCM4`PL$i7)Gq>AjRK3uMqd{#DcVPR5-GMbW02=!aVO1B@ -zxES$4UTXAtZkvHcP(*4mP$M)6TmbC)0jxsA1))w)h9LV6A*)|x9h>mT5pt}H2yHt1 -zI#1t-XhQ^h6}KKpe_=(A$|H?ZxS)uM1HAs%#%?h6bv?w{nu*0)Uz -zSuk#KLSV<$q$Q_)+QfT5CoX$s^^1j*Q1C6;Rt&gpBVIgg>W|)O(^pn3S!b4hwq>eUgkKh|y*Z5XgGZ?j)PdWE#zx=-C4evPB#~yQq+| -zQEj36yOCFs2#Z5YjowrItS$vRnuYJLuiv~i`&AmFW|3`6f*hpvUi^**a;`fCBqRPE -zm;h@;L<`ZD&A(?6?UIh42$C8v_tB)@qGFA@@SfT&?jF;b54v|0+68%C^2*VO+jzW^ -zS|l|<1tn$O?<~DG##8Miexe=DLqKa6x?x>KL=~#wdM6z*dh}RMN*=-sb;cjUA-uZX -zC{91kx-hIbabt;B;YV&jpMdf=ixP5-MO~<rAtW_228)0$ -zxg45KzEht#dM#4Xu0obMM3>mzd?!(tk%pRqi&C`f>WCf@i8rl~!;^wL7DAP@nv`eS -zoQ68^2b*iL^c&<_`X=Lb$Cy66Jim*{vr24(rf%2zJidgsX{`tzvbIdal>GX-{S~qo -zf}mQC__Ma2-?+NgZdg^Ipyz(J!SHm>Lt~mUEmF&Y!DOFwuISwuszpps+BIu!NFf+J -z-;8<@m=j^+phoJ$76JNCgDsGTffrB_lVlD@g0|2jz$(i41@=4Fb*^b60bqaloHHV; -zX^C{=wCnS;1Hy|;xGhP0zkuH+_NPrqoepu`=S7~jam0u+^EF98Sh4?zX28d8_5)`~ -zpd$3gH7K5y3gC7Kd~m$96%+MWx9m$sF|Etg&TOI6cg+Vw%0udSz?42r{aW%ED+8@O -zO;V_dAE%sduViVT*JKZ}v(=-#P3~1)IB?un)|GQPqyudN-2bGOn4(kTBqnzKBa;km -zeLkQ6rko@1Z5=cDolgel!HGgwKZn3^CL}8m*tvHDm1pqzak&b@=Cklk_kz$K;23~? -zJ(PnC0FLk(ZfM_zAQcf^hv9Sh)i64ji1Mnf*fHuvK;r|RmzISQ`8dmmgGE&8Bl)T0$@S-iE -z5S7@kYw&B80GrbZm|WxtL={bT04jPJLqRp5E9;pwm?ZS^<%D>VDWX=<CeZxOS+D7j|4ACKtf1KFl^m;W%{ -zRQ)bNIS^Z@yL8A#{&a>@Y0-(!arDJjP7k3nEuWkvL1mF1ME9&}*6CbNb|kITj>Wk53VDe3eS5eZJc6Py9CY;Rzbu?Fv3q}i`jmh=B7_iBD`92Wz_+!R$nyZ3ZXiYn(m`g7Q%$rb=E)A}##D_@^Y-vaVJKr;h -z2}B>x$!)h=5I-%Rxg5yyDn$7j%LCQLV_z+%X{iV;&?KbFf|#bKH3FQtciZ&yXZ_oL -z4Xhc^H^8k}PNVl0X}ek9)cue31hq6|S -z`nq-9ERs-2)MQ$F)zvj|NI?s&z;bMABZyQ{yY*oc;~^BcS#>Gnq@*T|md{ujhy^_h -z6-hChRhAp6xDg=!Ak2|%$QFsR4Sgjg>lejtW0ZHNv?znRWEa=dHdc)#WBw5qhqM8t -z%m}<0h{%Z6XJ!`!G!}6piJTpz_P_|Z_>zP2Z5OB>=ejX%mmW+7qpo0)XJOfwiYIP; -z$?oEcGtAVxSXkC%9TZq2MY(or6R(+P)yQt54Tq~IAy`^#kFO;~;gKFAWySe}Zv#kv -ziKkeqk3C#e_Q)eLt-RwM4rC*G5kzD_kXv$te9ge=;C#FV$wD3dDh1fyWVTte80Xfq$= -zWHn7H*=#QF{)AvDSi%A+6=i%^#QY(Evby*-Q0YNr_rz%@$rM%g;<<(7e55U>P@IT0 -zR9XI7noeT3KnmQAM)ogRc1Tw`2+V^tWdpd3$to4CF-B9yhTn>3l6lyeMLg7i!7TAZ -zF^95H1ZK%z82CV_9F=%583~P8B!cVn&Zxmuo@q1a6_2yBz=^j6GvWbkEfT^Y_DQ}x -zf?-0IgU2Os<9ea`+-e2nBFc02)&SpSmb>tyBGOjPXOJm!MS6Xgg+HQz@h*xR`v*e_ -zNfUR$A*z|5Fch>v0}55zGo?ke8^SE*LPhc*w@);{fwrloz)M#$${Rz{Rn(_Ygb{4}BOw<;*ww=4xZ -zBNg>r;**S}MAUv$b9W$ -z&{__q?AH~*tlGqoIC-tVzrFGa?p@!f?VBAwcNdyIEdzJk{T7Cyj*La#-?z!$>Y3kd -ztLtVa?Z+2wK)7v3?$S*s-|q}}*l+W4Gk%$B-ZyQ_-3KFU;`QhJ(8L!{R{Qb3<^;B>Ak6nMh-nQwCC)R({F#NG@ -zJ9U=+{QVm^GXD%=M>iOZSqU|+6o+G>PpF$S^Yv=APC+%W!bS8X%MJVEU -zsXRFlES=@XsyZCW5lJ&_Emhny89EQByjDE^a+s~Jum<`HYoM=Z+xmK3t*__P`U*Xu -zuLsTu{&p2RTD0nm)k`z`bfdyaqAWWPH9!GkiOGA8@ghp#61E5kF}yvYno!6)+fWyj -z*QCNG&r{JLVzY3B(EJ9E&^YXMYUdwlI~cqsNjeyk8bO|=kwLf}!1CPn@Hoef(U&1{ -zYm1eoew1A~g?RuVKMe?tsHmnu1=dO~X;iV`jdK(~1Vr>Qf1M;Ax9eCP2Igozn{M1F7zIOQoXtx@puw4*4D8Xk(*9PVoCWhllW1gfgRt`{xn^Lj{{zG -zxRRrUtcjI&Bo~ZjlG-?lcnK2tf`KjotTnLd$cjxZzefmLx|j`*9APd-{ZjrUrVY|C -zqDNK2$;8_sr>YQj;>)=p(x`P|cHpyMtuma)k;ihjPx?431`KUs`XH1^_K=A(Sy7_H -zNtIk^*hvD6vo>2diQl=n8gttpAA=jOV+s$>6(QT&t^FJ0EPgzo+nanYHoAIw|M=ok -zcVplID%~e~+@3`)jjsB28n?y|6YJtC?Yph-ondE>uKVxz?w!X<9rQMB48g1GRoz>% -zi?)4Xk_p|sy}tha_^gEBzfAc*?QZIDSVhEt0b0$>`Uwl0?-U!;;gDFMWVk7ltDqwDD9 -zyukJny2=(rQ1)L?1@b*7DG2QZN{RAW`|H)9@TAGG!P&pMN8bpWT!9CgY~u8(_%&x+J+Ow1t);w -z8d`mGefd71@aouDD6Bf8xIzcDRbi{mW`z`sd%{)(kf(Kt=rI&8GzRPvFL^roTR)YC-n -zLnht#w$Cn&J%@eiUNh`GzA4LA4h9i)$_apnMbT~rnafS?^X!>Brj@k)RIM{^dYjYem?LDRYBF+ -zN8ZnA(gr1WWD-NL$gl+fz@pxo-~`P(Y7tW1=^#ZI#>nAEI%eE5qtZVsV?k838z4TU -z7Aw^$%CcZgqu2cv75A&be}~nTM!|Jp>igH#k9b1iBZYKTn-9dm_|?H}Zl^fl*Mz*TDm(aFM+capk_W%bmH|^q?zEJ0LMJhtZx9HG2H}`SbDRhvD{@ -zW!fd*t{s!h>(K?L?7ffddLh}J9xrZn>(#=Z5zJNI@MHs -zo~;WF>O{i@F_MylMLPg@({jh(6RC69uk(*_WG5g3+;BuOWH`J9QKY|`mt;$W+j?(b -zR;w(F&0Qh@_8G`7JlX@|&=0VH!J -zDm9X(vYfF~&Bj&MJS_Mii(6bnAmA -zIU@JcDzPD=T6!RIHD??PUUCbl(pV1KMsY68e_{Z7QjV1qZwZwS8jfCS=cg3F_vc(A -zAy|}t$31GWM^#S6Uy_m$dZ6B1D*7Nl7L8BAqCNaH~KT_jR8KG5YkC)2$y>B$WTVyY=z8~nIL^G>)#F*P5caWPx3<$kx(mYE35|Yd5S?=ZBzeZSLWskm*M_ -zC~T&KRYy#YJUK*!w6+03obZI@34x%Af7@K^gUp6BIBlXjkyr~vK5)K?QI*fQCZ47_ -zfPGV10kqF1-ERtyn+Y{Z(?g2e%d~&THpBceO?lO@O^KW)lLJW8JgGl -z{^{&_pk_Wo4E6B&oK)r`E!+1p{&Zhw+JgE1{Afpg8mQ*y$2^w-qsZE|w@HyX$V11d -zX<9NVok2+GwFKK;fn#VJjFI!>nCi`KslDCK-ZE7+X1(?|wQAM|wCvn#RVyc!byE#P -z^vSXV8vN*!SM%P^=LXJTfUhl$sHYigYT7;OsukHXrl#$nVqWwkNbQNs$E}8Ho(Cg% -z;YqY~3&%GcY%u`fI0cjKZjAF{YDX`|Xg^e*-wV^Kl+<&>Kc#F38qW&NG`0ST-wl_W -z!83FgeH8`Y@UhehDe0Z_u2hnRnIpmwxS#`>XPlP!Xt06dc_X!43r-C~c6Vp)T)gQi -z^=%x-aTO1zsogRMo&kp63}}?oBrxswBM{)x1Rya^lt5RlK>8$tkWIUjS$*Ta17$cV -z@l~-TPAXMx&z~RZcf1%FBstvjX()kds6;Co(r$3O^I54u7<5Sk6%ain5*+~^!mn^4%jBh!wWO4X>@}= -ztsFDvISRjmv9EvquJd5(j%BSIV;$AH?}5iIb*`f?eD;JLC$;thMvo-HfFxY=<{vTO -zU>t9yU>`ZplFG%`<;nU%7E+MtFI0J=QcP+_=zre|yZccOe}+Ry9j^ei3D8|-y!iQB -z_n{`!Nr^9X*j7c(Rx%UW>xvikBR>Ne5PpLzVifDA0YYBu#j0l>n0Z#*k7jRVgP@@F -z11Hji=_-Q@J>W?9DlW%C@|nKSu%#AYj_HD%X_}GF -zatWYA4@J3t)3M`+4zuXHeX2S13 -za0kH>AXbf1-xhSnJkg+{ul9>&4NV?~QhgAhx3=&NUK%XLHJbkG)DiXJ;GoMn#Ha=CK5el{ApnXv -zUw>%R-d_#`@%T?;aD-tW6~7rY9ssv46mRXO7IAid(1YNk*JKPA>Vbb(A%21s*x{f1 -zcQtji{9UwIk?xL*3X%~G6_MUj$@|;=-uuLB!Q7InYH{9IveS|n*zIye<`iX8u#n}* -zcu<;|LRwG`Y3&x;J_`>Q8a+tAhLUe3N8VXQyB5=2gYpP0f?bC7?w1^ld_ -zE&o>|QaoNfuR8#Dt8f4|Ysc}?XC>$rR4*@bB_y?xk}$<5*GY*7<0`Th;zl!Jil=}^ -zMJFbA$qy>r9EIsoRA5%640au|akk3RhnITrftTGp4haH{r{Glct9~te2qDZ9PE*~; -z9!fKV(+fcXPYane^#sfxy4&M4qre>lWVQtFh%1XUY9;jcJitwf*Z?6LfwC1jJ_(^J -z|5DQs{gMa(dRjh^8#rkVTvL9qa@3%1t&q8Df_ -zMYL4*&@k`+NB-v`f3Tt@;dXjj4S|Mvb6M7koUHT!KG}2}^ITq})RQp{mvhAtX~!xL -zIBqXRA(!w#vUz^twNoXi@3@!{0ni^Ll6NVd8<_jB)%vTLbYH>gm|DpeQR)%`_BN6I -z3Tb!~e$gTTn(M_dZF@B#xxJ4j{H{Y*FDcBf -zLw-K+wf>_4I6Jq=9Tvg$hmhfEz^r%GX;fidiQ!;N00AjD4FUHlmar0~`2=RZT#BH8 -zwXH6)nBLxh2{7yJ%j?%gyeJwCSg514GtZb2?6{2pW)M*+XCw581*+p}sI(Y(M3~lSB@IVo6OEk``E{sl8O;5-AMf;MC_K10wRb+rS3v7fr -zmsPaAR+c-K&Y=|-T$@2QpwUqqw<ayC$jm? -zi2!VFW9Kc7yPgfg|Jb@3B}-La`$YZKbkFqk^y8qSA|P%7|DOJ4;oc_pxm9!OH1TIE -zLP$cg7Seo;XzQ~;f)g0Ak9}iNJzyD&iVv$$ -zWHc>d`jn;SgnJB6!rJSMR2S@b_JPya-#?#k#poaB^uJTbJZ$;r<9GMa5ljz`dLc2HWiOFmzil2IexPE)BIgRw0Xx8qy#H;7RLa&uitfrbk*I9c4bgKGw!EbDfdqZa4yQ}4Dm=T?i@#zvNxX!R&V -zBHF_dP`&V4nvUZLOTU;nZk$s;e9gzEe|`V!KCgHQOa^uB{+$Lyk_+xBI`kYWVA3tT -z1kn+a6*i-nWi_alY;{mgu^@#!DER`RwFb -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 -zNagRlcyi!JDVcJB0D+W -zk06?u^}VK%j;y@^0(Rsx16aH_QjaY(l)?v%vH0Hi?<`*p=E1y&sU&ExHlS^W*G{1Y>yQZtSRG(VQmV2J`n99v)Dcj{q9SBa! -zC1j9ZtCw&t0CuY!BoLA_y2{%DA}E%+vrDsrsXm)0ZV9z4*eEyk1jHb<)uU>NKPBlg -zY&@{_h$MbR#vix!ysN4KURbSWp(Sv@pP+05qgRkPmF{6dOa8>d^=%N~q3N?l@qS&Y -z`XJWY -zVKMuA-^#<$y&!ek!n?KqKL=yr%=aQr5y@IksA1q<_38;?C3@7L&nlVsfeIHCfbqvg -zO@dgDHK6{RSNpn-@1 -zoGpDcm1w2Ga04l(j09po+MO_W*LR^wu$SbLm!uHYBM>A+-RCe?+=XrYF}>RKsQbU4 -zzmzaFySj3gVYOW6qbAR2-S~04Df^mTR@aHSNQ+0+>4kNI`A&bo-~avn!&^znB}<6M -z7*Y1>OofD_XW$2$s&m>!)#y|5^A$`rqcjY{QAm-zE`Zg*5y_F?~{4X8EBi^F%W)}i6)j*NZnqmOp{+2LZ`S>i>BM#oA|XiPj`Tc&N{~c -zd|`yqB}KS75~4?-weIprAsTT$V3Mml$eA+0)Vcfbv-s^V6bv2@^p8Qj0Z@n!p1(&iIOglPu#wV&num6mStN~eEj9^v18S?mb=|XYh%nz-r}6<$=dn&{ANk> -z!7-si`aZV+apQNuU@I9?*SouZriHI!?TLN^`Vy)26A|;eHWZ3bL;cTc-aWn_A3zW1 -z>mSY6XZ`t?7b*v)XCy8H72x{aG)FrY4!jo^ne%#z_F?ClWB<NKMX~9&D$U2j!@}=oRm$>7V{aPzL|uOb$IHoRMd}4ghyVOR0wpKN6x#U~>;m`IaxgRT%g -z87AEO`Wq#~w}ZNgof9iS2x%V$_IhChj0bZbk>D_C%0d7j^HLbmiIoU&h04)as(YTr -z0VRe_-QUjJtC5igTtIy?nfvW5-Xg`(OjCh{dU~uO*S)|DN7+q*mQpfhs6a*Uq@85$ -z5ee~c7nefygCZFzdt|GFe#*<6fV7)jD1+1hL|85rPrpbSr|gi%8i;Ur7$z51sAqww -z24sEeb5#M#43h?VQz6RvuK&??mk10k$YYp29VT+6a>a~5CX}jcl!9DZbjkoL-8G~9xQEuu(Ai;NUJ4fx_l3JA-Z&1z -zLXBHP_dy2rB}#DguU4*rQr*E7)=Eg{Vw(fI6gEuWIC8n`$bw3R -zLZ=~HPiP17NzM;=t^C=a{yPg$!dlmJhNGK8r*CoJJeq5h(Pf%`{IT*wwMW%N5j-Lf -zB9AebiaSANK=Mu*&+|T$#{%bo&Y!ZlW62x?sRqXM4Yk7MM01UNiYpO}Bz0qe%5jMI -zO-MoJi9`OjbSh51_aNFMP0&!!btfKnBNv(PusO!QbI3+RwckxpORwQ6sD29APFZwK -z_Pu8WB)4>n+Wvi1taTO|4R+GQ>=WN9lt3evJwLHgga7w}L2h8pHlqUr#^@9v@ehmjC#lGUp!?qgDEk -z7a~My{r&bWX@|&OF`|m$H -z9iN}S>dS`q3K2JQDt1on_Ueqb^Epi|cBDM`1I9|`3j6!6oxkte`TMS&zi-p|`!<}v -zZ^M=54O_4<57Tgs1^sGaV7cd*p3)_Nzk)^B -z37}6AwfMluM&AOlQ^%|fL1lNJgorY -zH1fSi7+iW5)$NB|32|aJ@WG$LLfpkuP{Yqj^DeDeR+)%dkv&e%y&3Y6pml?B5AC -z?}>`SLNe)Vd~9|iA)}85IQHvB=gPPb)R6t}P)`Znt0C)&>`Z~xROBYzdXsuv4XUpL -z8Q@~N09lI%?rd%WRtR>o$>z(f0@%-4!p}Fhpt%&|4RAn}8m;`^kaecH3kt$}Ul98L -zdtd`5Md{-Eu^(Xl5Jn5=2J%wCRC4>(sn>_p=X30Lz!?RA8l^exx3lTsVuHZIMVMN( -z*hq?^kLd9X;`%?IBkf>|QnNS}07*c$zm7$uN79_aSfr(7Xo6QIHADnV^avtLA?r)D -zNeMti5?TbzUb#4Elb7p|fh>jqk~7Js7EyG_N(qDJA&R|>vWp=)A{N+9Ck4m{K#|nh -zM!4K;JUx&RLL*R)ic;C0;&K<|Nh~R;z`B*??7wO~^#Y@$G~3)L?%Lx0U#hX-xsLL; -z%q$kT6xV)Nh%&!sQli;6r6|5iA&~*HmY9|4Ag3;=F34q$9wXmcYcF~|zi?u%N6AO1 -zq%HxYP~bdR5J-`OVg)6qa7|ou1_40aV`0#FWpjA70iRud{SCO)WPQu=wHg1v -z>GfFD=*Sh?Lno&D_9HG!lK)stJLyFxS$%%--*wtd=Xt%7XIi}nOf%g -z#LniC14O8bXLMCxdvZ^C$J^J3>ZiGRI3cMnr^Pp7TgB75n;z>}@w96+sh`>oiW9DU -z((wYh$J?1 -zi}XH&iiGJso@I3L#@$eatwA2x6OHnI#0e~&Qxe1mM3Des|F#}MX!Q=$_WlxJWdHfd -z(4NorOm<3;ml8nV8aJ8#jpY5tcOx@o^0OFEoX~4uN{yjb2_IgM# -zo1RnOJqXC_x1YH{{^TXMGMgQ;NJcz;P-(^$F5Q-H3VSRtM%QwCwkIXt^9g*fUP@J73n$`QJ`27n_K}jjI`=dW -z*WksN2rE)mM`8c#6W8TFWq}bJwHG&o=Q1WGPXWm9IgiCzCIT*$yiv`0z>sHAHG}q^ -zW8n_NzW-{ZZk?McPGVi47e#>#_tOk;LE*$=OC1{cYQ##D#uXPB_zze`8hKI5b-|TX -zFUh=XAAVAxdXNN=dy}K|&-Ao8w`2A=s_rIJ%SXSwQ>j!Z_f -zpIYAbk98n)-qFjC~g$l{(0R;y6+N-9$V5V`Kr}SB*ZVwc&Hj8~tnfZOp$9m+bFF -zS8U^&Dh9+8Us{kBFpC6zGTXU3O?~=W{8@mCs2Xtuhg1H2Qtv|Er>M(9eDxzl(|qEB -z&e@B-dJp7#vHe2rl8aLK0Qe+3gZ`V_w3vzkOil9JjrcB37n<=zuKd)?Sg~<-hZ9=z -zi(j(@!lXzMR^mKRIz^ejT&g$6kyPt_N})OyJEZ2tC>2J0@n~j=(1_E(w|bKxp`ZO( -zgQ%c}Q7J=i@`PlK -zpT{P(-+mJip~n6Yffjw1FJiH!PZN}`?{EEpw1piEDT-G_lFoXY!koxvnPdqLK5iy$!XJ>UN}w#B$4>%dA#2Hj -znj8u!;v*}0q|2t!4R{&lZ(!LhvDJCMNyFG=Ii!lHJmLxMask)MQ=Ggr3{-v;d84%a$;Ecyh+J5>*wVPI_BNQ}VKf -zplmHQlMnA7zh5?}NAe?|9)1SK$;iC3VtYT;kC;YFbCK<#@qOeU9jj&FvK#-yogKTk -zTXWu5s844-L-zSG9rOG9rPa~oIvF2S8&E0uIvcg$T6g03l-Jww+Y^N99XQ0xyC5te -zp>kN=u6tC-)->XHrTT%(T1il&dT19ov?RN!?@)nKD9JYcY{Ru+khGzazhX+s6JH&^LV_UWVmib7RH%{$M_D!MTs5trMCz8Fq-%}(?C0@e927_JTBs+qR -z?Pc#7`S-Q>QYhJ!j(flkh=lL=^y%l4(pBqA$p&(x%$p1aguyK00}nwM)|ZqtF5d$9 -z&8kC{kZNRs5{@7;7!vSuIGh3yI)Hm=*i%#C#Sxd#i;+Xw2XPzUs29!nc)LGVx$GBn -zvk^}z$nGz*o3vANOK5>$a&lsxn8lO2(`kDkROq>qS2kp_k1D6aMJjBolc6?x`Q(Lu -zmS%_C^@4Ei>BGuSC)t7Mi}+e2KzTs$$bly?Du7xROq*DErJ8shig{i%jf738U(zS4 -zoi6K^ns#!sIW@PVtJpOrL;Pek%E;#JMA$Km+ZnoMNl@rMD+FY3AqQs>%L93lM!$>Z -zC^*N_GzDk#83BF?&vFj3gC=uZ3+PbFZ4$(DzA)V0{R`l3iRT2fNeuEX(`dF{zT6a5 -z7A{r5R1!Zi3+!57_yWiR6b@x5WCJpkN;9GHuc#R{@{_G%hm|bqtv!fum7Ie`<-{=c -zWpfe+J#uSgzmsQ-gu)t|)c46S12Ym2BC;nTt!Wm@w2VNjDRvgeiarlbRV|O~VA3&4 -zjA1ZfhnzfX0VI;pD+9_;sKFxbQOSHM%NJecfA-qxNKY?k<#q+hPVB5+74kqQjq89q -zMJ<~&OyE_i2yU_YXG|=d#Yf0}nXqDt10ajxZ=F%}#KkTi@HM32^HkDjXSsOiL@S2) -zR*Q&rghhsg!lF@4U7Qs0&`T>&ovCT`+ga&#eXL9Lf`KWb76q^>fe-3_pbUJO_5@)h -z?{@nme7qv0Z_=7{KM^aT$mKd^a9@!@J)X~gJ=&`Kc{6tF#aLWR-a%6tku(>MZsD>B -zKmD#`hTZhLDT`7Hq+3r3xw(~MxF5Kzf4}*H;_cBvaY7rcs|K#eAuqMtm$4FCg_9LK -zzSt@&Jc0tI4Z=;0W4KFtoo?qCUGk9_*@I*^@+&`$gEFnH`)(C7`O1_3nXxfF+GFRz -z{i1KXMiU8+nu!GcR1%lP`{u{O1vdUM(4xZ*)cjGCYux|-Gw{HeKh+~VobI?7&(BSB -z0m6Iom94nN3rU^#Na!tRMuE>Bg -z+-u3%bwQE>OXgbG2x*yqeezReGG@lT&{YfHGTF16@9>loH -zgF(Flw_P$`7LpVRjijz@6bmCQdz6Gl$3?jw?tvP^xO*9&gmltV!vGvlp2IrN0v!4& -zEQq781w6ygvD~BiL38Jq?Zi`{hFv#e)I)*-446?jlPk}*JeZcLVL8?XnX+wnuzM+F -zUq~)OI-w`S+9S!_Nrg;?3<%y&qPXS+MCK!75O88eGV3ZEcfWoi_b43KIt1*dxhXIM -z|79P;(NzifVxQCPIa8_81SHU2tl1z;!JNpzB0ENS+IcaaJ~g-Z5RTc}UG(j7IBYZC -z;{MBT8{#~>O>uaA8>ZCG+e4|P;Yq&5Y;6BfUB{z!yE&#?I@V=((@+PF=Wp3Cw}IbQ -zefYF!($QEB9dhijL4R2?Z#1;Rzcmv&v*GwI0a4Jg4D -zM|y+?TOw|R -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 -zL!M0pZmDYr% -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 -zWT(N5;vwYTnOnrj=3 -z<{0VmrQGS-JWKC1`g&I!5ni!eeU#$+SrxsIC -zfvr@qTHc1OwtxsHkx++WRQoTRK`r9x&k+=2R^z*Kcb_Q??Dn8t);(^sQQ0SG`)vu= -zPBmN&QM-Y|Uy8(wB!doQle>M$`^U#mKG=Vu7kq90(L;AbJvw^6sa|@yX$;FGmD+<_ -zPG`038d*4g@+!>V0|*z@$1Sasv(q+u&+wE~mXGNI^95@I5}#lgv_pOJrslg77po$i -zkVvV4g$4yN;uG^gVyyaB_tNN;D{zyElvEt#>e8_{$5?HAgI%TlPa_r{duirMy8Bd%}kCuOt2)WRAXHNJR#`QjQ9{RpYh1Wi-e|K>r{1bv)w=Vx`tn -zG1Vi{T6E%({3~mW$L46etOn5=iI{BK(x+OH0uJEwo^4zO))O5Xfbtga!S(p6UXy-z -z;>}1rd)RQB(bGt|9asJ@y%ZUIuINo)LA1{zF5!oazMAGFW#{A0L?RvvlxhC|QGNP4 -z27}1FyM2Up1O_X;r`*QUe!3u%N94Mo_bP*=FdABtQmpY;PJSi2+{8m27;f2uCl8=y -zwLnKym|)01tem8ZfBmXzyPx<0+s&2wIUVLUKstjwC&~uIM~TiV=&VhOm-myj7%^7Q -z2hG|-9?2o!R*>MA47-g?W`eU_-rh#D2|Memh!sQbv$yW#(R)f3iG>KX^*3>fo|b|l -zJItISi<$5Z+$lj8I0#LHnqAtKM4$2Z(1rw8<5ZB^42FQNR`VFzyKNN@bUPbFl1KXe -z=kHZ69FWU7h^a)Gg5nxWqN~SWj2A6+tc2DG!eK!46uF+0=%bVv;@vw2I<;UhS6L7RI&}w^dvMlGODxvT{W6GSN|c24^7p>37oNnDOWrS&otR -zy%`3x?!v4}M>_zz0PdhnvdE!xV-%ss_W{S|rN)~MXS#!C?|O!eya~nodPWsXxq9V- -zejwSDX;QVvT^wIXy_3JEH7fiGM7t>7D$zl%jg#KwcuFGpPxPaN+xd4doSj)c>{A6n -zZ)PwYy3g%8I=gL?6R9Y$n3WLcXdUH?9G}W&7ygiHr#$%<>^=D+U)aqoWV5ZyTpWWX -zmc=<@kFV+)_o`EcGf;>g(5^v=aA!u&q7`q~_k$7YUnW5ff2p8*FS1-R>hi3l>1d&R -z6HWV^mg8v<;rLt>GT)Y^D3OSt%T7AoHduaN+dPU~l+vh4{S+jLrBuzrAU257Ab%~2 -z<1}(9Nd%KxS)*=p#F6OsLd`23X*xptDP4yq8zxG9uDAf*a?!xvVD20msRt2_H0#+c -z75nF%$4cTs$qXAL0v0s+c|L)%t2$ADM}rfZf~HM6*N92Rkx??Eu#h4so&pJEP?0T3 -zgez^k(8|eLB%q+F1(dqeG?gk2bagBJ6DL-mC6nl;!=CJyv5GcwN0MXFoB`1n9ig7~ -zhj?~0pFzIeWr(0?6-oৌ+*++sALdxws?1a!&4Gp|0nE&F%(T3DSuWt;-AOYE_ -zYMt=Lak-u-$?U%H3rXZ^sONK4hCjS{z7?4}xkZNSvxzpi5+)ih0lMi-+8w;~S@5_-chbu*)khK+=L -zV@z(?dAe==&>qjkfZ<{Ps$3Etq5b>szx?WV_wD2B&;6@ltOu!`rSOyN^D*wG*?V?c -zA8_}9pW#M5y9;;X0$a0+L?`K>-_Psy&v7RIPa*|2FQsx;R -zkGWkgB&+q~nZi%=U0-*!em%R@9-6FIr*ds2@*ey3L;a05eT>XOiS*X^9IYVZREPxbyzljykYg- -zYV0F3OyFt<6Y?_u`C!h{kG7(QzZs;WZcObpx%EvwU7n8J(PF=NQ*39lNxuF0%l9#n -zoaq8*Ev&9_;Ye<8t>@~&)rD;hkHS}Tg~U`44ei#swWC~4^Ayn^kr6}Jc{#@Pd(>Y? -zUJG-yfj(h3YSzcr`C*>T@ZrAw;R`Nbe)8Y6x%uHc$2ZrdUtQc&yE_K)Sbh5-JJ9tl -zcYq;9ZUpAWOV;gb^mKR*Kv2@OIiTfI-G{!N6iR;tWNY4|Wb5rEz&O^(c< -zVdQRcYi^ofOpstEwPqBIdECU(D*%QF&fL6Q#09?848(R(?N4l1!TnIF9B*7;0ViZ^ -zyae%!={wQ|1rJ%erXc+;pr%ftqeWyGq=rVSqg3d$_Xso4%$*IqhGAYzHwZ7eRgp+n{J*{oA?~hz8MM`D!d$?u6Opy -zNkH*SzAh0zzI~tnd{5Kk=e6qNccqW~0k^&LY>dPo%ce!YyZGyu%D?!^@fST#+e|t( -z*MmoerRY&bsxBy|>O^hM(hzYP6I_Br>)tvwCu*DGde4i(c^S<$2d+_Pl~|8!9;S?mC1v~uPV -zUPD%^;An+>RI~iL(mf$^&h>X&Z8S4wX_T0X+Ms|YU;8NfC6HoiO2`7hgE+lPhwrUq -zS^dfxfHT9)HHpizcY%(Wl@*gmmaXW4K}t+$$n-wY1FQ(tQw&(8r>zwrA(3>+5X3Pg -z*#a4tL9}uw=A@h#b6RLcvPMDlNZMBB*(!hrLMUSqCn*6v*2O_^fgVghl|0-1(X48y-PymQ4w{7u&{7)6hMlP!tfjB$0reO}@L@5Dn!dcd@)WqFontGhj}%=)MgmQu&=83p=|i -zm&@ouBDe5MBfb+uBIN9{wHSF}l)nrnq2q?&p85aC6*-G~XNB@N%XwY(7~kJsbgD6Y -zHMfAXFk)TSp(m2QgNT?%(?IelKq0VmgSfz+Ye^zcbiDJ2EFMFO3sT<{(9~Jk0oyqe -z$h{DXw4ah%R5L$PMlsfGgzk5C0YtV@O+!R|MlGx}_XE!VN6IuUAOOc?5xvG>Ew%s_ -ztc+M_+0A@LGO_rS_H?E7Hnqf(*s_k6M#Y8uEStClI;I2RIZn7m!H}Hp>MX%_{=6YK)Nv2$->e -z3)yMkwCYIr=5%3^{Y7pes1Jv0>rNBjBARU%T>zj}ki^&8#c+ElhOT4A+G1rURucd} -zK)}Bgpre4u|79NAx0}8fnHD+ng7hhmkNx|oe*SX%Gj0F+YObE?IgY=DCSPX#EFAaQ -zyV-o7z89N+6jl4jiu%1RDg@Q$+&ETtqtCnhU=GE=zcU5J)Z#^DpX;{KR0?-BEptLk -zI-z+0jU@-s3&EuWx{0`IFDGoP`e1QBCSv^TiG2;lCOhv9p=7qAZEt~Lkj@dQ=5eP9 -zhgt+Dkn}6n3k(M^vinK)&J@)FgBqw_CTGcwtB-(sD?+8v2Q}og{azUl$c&xl?g+U+ -zBr#3&L4@tvZf4+jctoh)h65+JNJI-W%F#t*24|UVkBB2XxW)A>EGz+EqRS0}(VS*W -zKX^7EjSZ@lEWmLWo0U -z#%U7SpGoROW|~CLTECpI@ZB}FqEX6z1Z$oM9tF;_5qZsTLL&}K9nTuu)s~5uj7GQa -z*ZNmi+NtOfhff1G%l9Z$<@I^&fZL!udddITg>-FT%V<;=V0IUbD{duPe -zT~zx!*Pp!zYmPS9tT~H?*WH_`j|<$NZ=-=L{iDZ)ryl}#lE`#T?D#X^hPNBZYKT0b -zN?1~md8x?+A!XA}#EnH59&C)T2LL_xVg}Opf~3EIw~Bze+E+nty%*cpOo&vR7#kBIImu8O_|ABV3@w)%#bXNYkl0 -z1GjE3#6GFgmtSKz5F}BWfDnb`^`?)4ecb*@sol9ne -z_dWjtz&9&`W;`gP;fXmYvgHaEFQW*NDSKjhBa%+F_Rpn?&)h2c66hBNYcz{!K;*b7 -zgwnRe;5D`BC`xM-S)ixQr+>P%)RLNMUFwWFx*(*;#n%u(#4&YG_wr}PCp0g -zQr`AkQ6rorzi&$qInl1UYGZVEuJfvHmuD5WC#fIZho}f5r2ShEtrxD4(EvRFRwg#n -zbqQYMY8o?__wtuoS)y$u+i;hVq$$rrw|psY_p&WZH$k*Pq{oPWHUeTqZ5o+_BEgx6 -zSd*%MW@^ASXyT+A{E -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 -zeS(XwBHCq*Ij*+O_k=D6l3 -z=b{y2FOu|@pMsryF(xk$xN=*5%VcoxN8>9j`-s^Z&X7S4ZBsma=<+fFz*^JX#<$7< -zyyiXotqKu=ALQ!_Ud^CMQjT`+_zCq{Mv^*s%943Mbi=EWs^v*@DnbUU(8vzfk-Cm_ -z7C0cxQru{o>{Rja{8zf>TrusAdKR)fS66E#(0RcHT_W=jTQP+)X|?1TPHdNM3afg93ZTl7k`jXZK3G{ -zW#0@n&kh_(b-w^so(>J-T>VCLA5S?&E#u`I5iY~QIrYhUEkX0+)8U#2& -z=P}U)fmsRagkcD)B0;a)yCf%Bne|EgVRC-#oQ8}q2PdHVqe`iSripq -zi&jU-)Lk?ekqSxduHLHOP)|ynh_L0p-HR_Siqu*fj(iT*!2OZBAxwBIipVXzFJvK% -z8MZ3eCba`?M%ZZ{DK@l@Z9A269*Cf98zvq?oHyCo<;Zy?9|uS4!#$D5g(}xVRd3lI -z_5QU%xrfM-m+g(Hz8d3VXtMh4!!Ger+N|ZvxU1btB=I+>Gu8DnD^Tb;8jato*hZ-8?#Ju!HvY0?c7U2PPxwUX8GwjJ9+K4Zx@8nShYn>4E!^9l+}->UHD -zzGx2h?xO8%#u7rBNIA5lPvuIsJ2^Abq|qW7tO!930L9$j0QfA^%QW?-6)r&1il(wM -z2(}aHtpsudRrRIY6oQPjP@!t*$BhZvX-v1p1Vw04KiRk52&03CT{lu^XXO13jN%khy~9mm5%P}fpf?ASshf7u=OCtMB%;ty{W>qc&%8&p -z3gHpRl8C84t>(P~xruC)Kfd4K9o(8GyOM`~haLF6uKQhmK1ZAJ9mDWJD{zp3Lc+%t -zd$}euvdeUKj2gC@$s>I20GX^=f_AErlSoAW>to^W-8hkw;E8~H?w;B%$h2J~glLeq -zf>@lKYF^Y#Gq3Oh*>F?PlYYwOoIjB#BR2DIN~pq3QJTG$~z(@`$2`VUG|24*v&Wq9R0FryT$7%OD2na -zL+Yw!e~}pxh&_y1D+IWhv2_N=QPylUxEM;aj^2A@VXXVCrbp_&|9F)2sE_c;?qrPk -zPywAX%4k`31yDk#f2QH2i7;6o4)1(L1NvlEO5~>`5w+-jW_pIc8Rur3$~PQX7;Q^l -zK2jVG&WA*m`B6ZCre@g-SLfw0KI(p42xwI(-D@23`Wam>>lks0M^qOA;k#R{{~ujf -zy5*+M1fR$`nMrbQ@;GA02!yp5n?=aT7}=Mxn7)$9H^^`2-w>fKOVC6#%cs6v(_F-U7bUs?@QlZ+ -zShcpBdy)8tJoFQ0H+RZ10L_D@+|oYx#Xmz{{T8`gk8;UmXO90a8L;$x5?O_1U=1B?Efws-?n(v-2b`dgX){2NY$IkSOrPUlP^cdX7FJ@U^_l%asq&k2JC1 -zjc3@4;9Q5eNc>6g=iw2DzP4L6TlrU#bVzQs_}uF{U3w-z|(f9 -z8j1&_OW7qmNLB6DXjWzJn2?1;g9M`JHMJaAM@w6{+hy63Wf&C)Zv%BzzTr8=qdxp~ -z80wFqw=va|1{{xEINbO96R6Z)l*5s0INlxLDshLx`&Z{d<)MjN2t3(DH59Ky?EVUL -zw#ct*HY!$o)es||NFWyPxF}9-T&iM`@AK}YyaioSIQ1=kh$v2AnBKYZFp&N+T;-=`mX2zMeG;w7@e%2LR9IGxf;pSjy+Yd(ncx -zb}dhV5*IwxGlC1!zN>k9vlntzU6s@Q2+kLsUo)=}hp52_&TnzSCLsf7*7ClEkq!W@ -zA$I$vYE7|>tm-gU>c@N?kKAW)Wv!(}wIaaLjKzo?WCw?Bac(s0Si>yWI@)~L*t;l7 -ze00lxmYf9mD1xb{Gj2=A1DA;{0^~D9lyNBC8L~q`2xjC&jz)uF-M}x$k{Faxi=Ggc -zXon=W;_HJB+H^*P3?v=n0i{6-?7Gm}y}EygA5(1Z`!ABo5K^YHJ|WYo`HvpNq3A_| -zTh*F}qdXkYoHm``2VNpYG5Y-eiyj6PruS+5ynobpdBI2s{pg0`gmAH%S+DzRD9;UV -z@#Uq=!XWwoy~Sl;*L$nKtBbBH(8eK>!BwwhXRWFXPIMPuGhF3UHqL7?1b-D&0l{kk -z)&Wf9vL`K2BTkYX`fgsXET@%Dc1W=3OP_P{9JoNPYhw2xu_)sWP_A^S0ejV;zCLVK1F%l2i-#S -zbDqvN(RvQ7DogoFU@rpP%iI2nsILcpf}_lXDEIG?^?zO;ft=N?6L|(iWRI2Z{WwZ8 -z;j)`a6aUs+MF)YX4vE^L9>7j5vh`qsYTir{{g%nwEaOv_j`PbvbdYHKSN4VD-|`KY -zsH*^$rsH4oy^I+?WJ)j04rnThK|yPX^v54f^SuPRRWT~-zc75NTr{GqT!){--(Td+ -z@Ts!6bzZqUqH=)&hV<(r;kHa&!~8ODSyVkIyt6VKz)-wnT}h5fqP2xW5D}TdJyd0e -zP=rxS0l|2Hu@(1m7_HEpX)BHJAGF8`Lg6ZH)KMp1%ULi{bFJuz#TBV9v0XcOG5i78 -z1<=zW6A7bxYDL9i!F*tJX&RXQ4<$1K+qMC_8gf$a -zDJ-mJRYW3io=&m`Y4Kl9evfdCEI`=OSY*E3XuFD9^Be;Q*drXg_ne81&F~6HEE;$s -z+WXO4F&MP`!;mH`om1^J^MIanJjlb505~p*@8;HK+pM!#0cD -z^mEG)$v(7L6=dbCd>V_RMd!E}o)D^qs1=T1`67oRzN^}9cUc|n8x-SIbM!DITM|@K -z$1e*w;fN&UdHmu#wyxrrf?Q(*km`C`klobq2H+hwxRGC(Q}06Iolqeh`^pRXs_JA* -zS`J8{`jkzf_@HlTOVQ#O61=mEEQk5lQ@zU`G}EX`GB_LNFr_XetTm=;ANN* -zVS$rZCQdOYl5dn%)~2F-EFu#J3rIx{!??FtBWHsPyu;1_=V($fTTmDa53u|mLA9ZN -zP$68EXtfs253vZMUpx=cP-yP}mQoqgJX3|V{|ZPOKBSg)e0|&(6_kc1$-AI^qVZ(t -zk$|A{er;LZ1dvtROf;YmiI!;;vT&5Tmcvn5XieiT+l!a-?W;(jk^T!3Lc~q0{+#;2 -z48tnGcLTjUAz?`DKyvki{vcFl@TSkdFv)N)9l*B(tYFb`0mMj0 -zM86-CtiWv)ozrz%1d=E&h|0AcA^BNsQ+Q1milytv69dMJ8gp8>X<7ElCP3iQcunp( -z$C^%+t+r~4yk&@x5W%Z`QV?=f>d9N5#3n3W(5jJSnN(%X6y!27XL(T_(g@f+jy|jh -zVmzEHJY>rEAOrhJM}o0c<`UNEJVN3{M%WXr^f#oNl&am)p0Rj!iXglhN -zQX=}hDMyy_r4u5aNJJg4@)n!q71eTu*_4mvQ3u)f`x?8ki^Q;mt{Hiaxh+F8$V$`B -z;VpoV;y{Nz^4~{Bd6NSsXh%7ale}V6sqrp)OXUI?k_nD~I4{6q%NNo3TTMHViWF0o -z@WFyozhPWC8Av^=9I^+syMix8jSJ)sc;0|h{a#8FQo6*jBHYg-IW?$Cueqpl8S|jQ -z1lJ5Sgum9ulxEva)3^`IJqsTLmFuP_oU5mWc!$PvO))QL_uAfe*_g&FX>*$J{TV(0 -zlD3PmWIAU!aBOBi;kO$@@N0J$TqY%ChL~OPTa$dd=Rc>9cKSx#+)M -z^rn`?VyWy3v#9CL)UjiSbh0GWK&LJ)1#K)K`|Vt~wifPlxf+2ds1RVG{zWxh8e8by -zQ4MSj-@6zkW^1n|uvb~65ulV&U30YVpaTv``Q-%_W-YmAH%)wADTiPi4_0g$*Dp_t -z+ZeT34iIexhODwEb6f%SnFlm+UJ5rT%~ttoDkO&S(f;+UN3&p#3y*r+>rf4}I6vmT -z`7k%1A9=r~eecF|-t533-#02e-PLkL1wn=pfe^XbX~oAs?{r`4&23n+@;&a$fdTgl -zT%NwZe1IZt53@Srd%BoU>(``;-QRDO4dzyNb6yg$3VCEx;{0>??(+N((jE85jo#(6bEmgYbKZq&(#mT-CdJWAVe0HzRH!K@f(V4)JqY+_tW*ypUGFBXTUao -z+8pkVzwG1rZxe4nGguV7GWAF;+g9yha<%h;Cy#OZnzf)ya#IDrI)S9h44O`g_v<42u$R5(Uv^i>vG3HJ~Qrg#X8|YakR0dR` -z&nn@8u8bX#?!yj>0ls;9W;^{n9A9)8rjk5+lHJMA;ahJ=t^im0>|oNJPSuQY!|m|$ -zXU0&|c>r_H2yD{6x}BgTfk#{^+!9f1h|tPzNn;w$AZIeeZPcW$uMYb|it2P!@7Dm* -zEv^B+1^@wfY9_?o5y6BpvS7f1l7CH(Zd@Iq86!_dv9nl-h}CqBac=5slXA9QtfO2y25(XG>(}Y#l*T{Y_)U#) -z4ecX-e3N(Fvg8LzQhyI?lZhP_v!QnFW6X(RDjVBQEB6TD1klNDTL&jZH8kAQLG2-E_bmcEY)Cv>=L$_1=N1<-Kf(!Gh$iCDLKC5!X{Z*75Ut -zfE@!`WJ~7)FQ7kj0MLe=X_V55i_@S>E+A2%tpT!^$BacgQWPB08l&M3QHYNrL|6&>?TwvPMHdy6A -z!wg)#+&h!`61Q(onH|!8C#n_qG(hDfcA6Ia?}_$j1o`Nz^_2{(5>*i -zd$G2EFEk~!e1LO2Rb){}lCLdBTUd)Dz%w!-bz)!JV*L9sVKs(>mX;ndu@MR#mwa=f -z+1AiJ>OQz@K0T<9+=4NKZW{3uM5JNazS3Ffl-NF6z -zq(F)tP)slahv|<4i=FoqFcaC+o%>YKWbs-&pEpXnwDMe&w&-IU;h3 -z-D>vhc3p>*r$l#aAGg*vkLx|h@niRVF13ATJi*xCtL<7XkF0R@PgiY-Yvveg91Peb -z&xBpHr$B4{0GiqyVUo63^h-_NVTh(KS<@(CO(7OdZ4fmN3-Fu8f%{PpeURB1d-?cz -zGR;Y!*r+`U<>$BGR%EH6Sd6sqt^7c~^A;Z1oRtQF`aDhpVM -zzgB8P-AA$j9u_t>AWC>0ws8E27_c`BN{PgH>`6ZQaEFJ{lkDm$Sv72a)OK!=h9Vn0 -zGUy^5I=3$_h-!3eptsRFxn>HN&N>##TG!Cm#<`-{X$*~}scIWO&x0V5@DmSPCKBie -zYB`LjtW_0kC|t~`+9HEQqs{q4b>4^Pt&^Y4BYhZwu#=bY0dOEN(DDI&OGSKW50um- -z?U{o+FpA7mESvq@ga##cGgh=)8sDg|0_#pmZwdKwU`QcLJ2CvL^!euUc6qV1N5u3! -z?T0ZGuU>R+lwiVZ^W;%FB6Y>nf-e%;zSNt)E{B2t2ll2ATuh -zwdQD$%*h(Q(@$xVJN3)^8r313FRQU%6DB??n1+@y7h1Mo1}BS0#+NZ@gV7q0;@kBvOjn{W*|9l2NcWV%bal3V~J3BW(#bt3hse)0{HlmjC+N!Nlj -zx1GwOMdp{zb`*PnD2V>iwNQGk+j+APBiQ1d(FG75TVXt(17&xn)4Kojys-kzO>T-= -zAb(YMUcN=q)g(eil=Ex$w}}i$RLZTIZvp7|Cl#BtcBG7lFnT(#*+K2=i}xYpVx~jn -zJHi0o@u6tikD{C`y=K9Fg-$9D%p#Ur6Z$57}<7GCE1Qqh}0J%nYKes;_kOTskeX(c))H`x=lnRfr5&-02 -z$DWhMwOc9piXU1o_}g+wFpjDxt;*?geyin`7h+j99mL4zc@x}TO)kvWq*`S^!~MkK -z%Zje9*^ip1N^-ZzEHsgRMkH`?jQORacxI7h&E&5a;>$>@&!rjmnyfV+`Pzrz7YSq^ -zjHCvPNHbs~W_&L56mMjAT%T=xUT?0sW^H)Np^P}m_#cMdF84f3rpG8sQ7@`Y_6XQd -za>LoWzKOb*+gAchjj~UFWfm5hlR^K6>5SF`EQiwUyF=^vt7w<=?F?rB#w6%(Qk$zYufF)j44YSQJzN| -zbKzTbEuvi+gL`9HDgd8tl0-ka2Cz`I~j-*g)^LO -z2(-yKtr10p?_j*_QI_NB!ChlPYBrH%G8_3P+jWnqRw7S^&hCGIj6OaUbhqR}uwrZ4Uw*8V5dti4XbVsv<8r%mNpvq80*R#UP1QC3_HEPT?|w(o&lqPLL_eA -zOxK`trG4gGS&e4)-18Q>HoTOq%g2xG1XfPLqoV13qc=O{rTjLJ)pWDlt=U5!8Mj9> -zxM^+2KHH0)9p_>gX>wqq%tf`9F35ot0|E$~6nH_GX+Dc~Z7_i>*Dk5N^_SRCwCRwI -z!BUL>Z3_k)ktGiI8H=Cf=!IyOQQ!)RCX&(kgA6fd7G$zB<#}>`NMZV$y%zq(B3}JQ -znlMfKSbcncmD3ADyK!I7oH?ZZlA$m$g)c%;QhoeeNTW|gXjsrd9u`0<#i+&HprH08q*YFWq?fv$r<2jEdp0yt(A48a+aSIwx1obBsSv< -zcZqtJ21^8w46)3>&8{p0+BeR>=?$k=JjDwp}rlphcia=$x|NB(NIQi!O$2?s{`aGS;{>{Nwi)73dRy^u}0XTp7i|EPf|B-bi+H$H&^o!10$(eHU -zIjAU3K%;>A^{+N|TV?KDE4iUiTN#QPcl~^cMm>8g&;ZKfnMv^zFIe#W_0o2dHYhQq -zcvEra2B16^fD}>=5mdjtd_#PNZ93PqurrKuKkFhXcpl4^xIhsecwuzSF+LW#w1^|2 -zoC;z+&Uh;n6cgR;M2C{V7c3-t!D@brZ -zE2`43C?+JdlQZ`7SuR8V#5(jHNf`B<{*rtoWKrbhV5!kYte28<+KOOa>elaVFXtiZ -zK=K%{iiBS|JnO{*&;w6nV;y=##wfL?9pY;(C~$7Sl{4TjWQSah<0jVazV=?v{JF?D -zLoE`Zwu{>xL)k65|NC9 -zouuX|-lWk;{7r>u58nzJB2n)=HQI#K#;U)q$VdVV{TaES?OIB&&VV9<=Mdi?hFd%(0d7Zx2%rd>Dc;!G|LT6XwfWk4`DFSip+{x;Lt8x$%z?IS)JKYo`~GIyZb*9O -zeMbl6zE3=BJ1vF+yNR?TC!pxoy{uw5@tAMy`PdDeWVxwWu{x&OY)uZj57jlG@vY?G -z^HPex{)`{~(dI7(RF1#t0D4@zBEJ89*r?J+|LvJ(*0%YmQcl+x#E-wV8REzLB^Sl7 -zzh8^49z8$$uiF~CjXxK+kE(NCsky5+whPA!pm0k8q%H+5y%dKjjw2`RO>_{=;klJ8Jj+vun!MZW4mY=>3I)dm$nsOb&0RHxS_;H -zJ#r;s(rMq~J?JC;Cuk#{MJ`1sLe#NQ=Fu|R2~l)lG-_(PrnABDFP$JdwVC-mifwO4 -zcB993o>yD*QfNs57Wlc;&VRR-WLr+9jjb#k9oral+vG*<9Cs7j>@z>4Ys?Z%{a}It -z-WX#pofsYKGL-6}&n%AE(ebgh{g_NGo<$nDz$1wW53Ct>J(|A{RD=H;*q9qlMGUw# -zxmo9iiKKqH$Cs;To^7L1=Gbw&{ii+t({}%~{Xgx8x5kA?!VDw7N3+bcdVEgr_KRuT -z{mx!H*9`!VsQEOBeHUUTJ)Q|u$#+L2adSnfMA)q+R5v5dLu`Rk#0RNC*P1GYX^WiN -z^9CYu9Nv=7DsgMER;{H*=EY)=_d&Ya`8)i~tR7WL=HQpy;C~yB(NsJqLrwqjQXL+3 -zwbjGOyKIP$q^6XTW2Q4c1yq6f9LLsoO7~_{Y^aW7H^y%B$0I#>cE@G%re?6MIQ=Zz -zjeqhN$N%DE&cY1*@l&l!66Q0RnlH88>e;Xtr?_Ny9GWBFNY}GAi!D3X72EUU-0XEn -z;vXwH5x_i3L=6#PL~YKq_CcK6O}CHr!OM8=_dPBXm$Hm=-rGmFh#%eiVJ5XBRXi3J -z^Vz@ByhW9nXwNLjVzoqkS*Vql*3O8!){6_f{7$5pEhxakFHX-!WzJHiy1+Y%2kgT1 -zQxbO&xzUMx8vrI03GGG<#Trscb*+#A%H9+t5Q#`vx-4m^hScx{Q83M|3;7j`YUaKG -z7bxj`=Kcy`Z2-4kZ+#_O{EWb#Nd`Q#%8)Dk?^S0$bse54tfI465-&mcBx#@{q`tck -zIC@-|AgwNDjlHzNMv{v)i7QG{NDQt|pj>T@bPJp~3#5?GVqDvP{ZFE3p#n%(z6YGF -zB>vSRy&gmtW*z=Z*(Hgz^kN{NYLrU7zfy^@I+B9-vON3WktlN7Lul;4YC*b|g&lD4*J9WB9?;S>S*3L~4Eomfu@myp=~L?LUu4EYi -z8Hw2x!w~WRI9oBB*|o&S5ai9OD9H=&k2rpRULt7p#LY>663fe*QpH6~CM@UxKqHm- -zIGmVxzvyD>s{?`#fnCloR{G$qN~993g4`Kz9|Oll6AAFls$adD<~y}^zDMw=Kmd%s -zIP;O3v->G_l0M6TtoV#2EB_9)Dee@R&4J26C3T3lyg=1}b<1k7yjIXUAitEXhKoc3 -zjXdNL8DC7Oy14_cl7xv-ywQm0)A(%~5E -zWPuyX4_iLHu+T)nmn^puym6_${Z)Vdd~rxme3eKNZgSM7M(XM+DW_3S;&+3HYJer8 -z_J0VJds1nCzuD;$b_$^)4)Lr>xx4tJ2O#kDi^-_J0B5E67#(EBDk>F=97hzKD!HJc -z@S&1`0Xu-)r?|uiC5pyI-~b4i*wQA}a4{r^YJCWW=hY5cGao0*)H@x-@X|(iQS`4B -z@^QI_VlkZo3u)RbB^JT5ZVMfHdN;KC`1Vq<@vMKt#6!6z@2r0S{zPBVKPWUohi~9@ -zUTOyc5+Tr5E=hBID|Hum9LE&`|e8m(gQYI_!S -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 -zW*P}Qn2V4=`bo!u4WDusz+83{fW$>- -z#(u_C7w;@hXG%y#1RhrQh*HnW@CBn{Z%IDbp3NBdbN=&6i@Eis8o@4N-|JB=WDW5M -zZPT(R`q>IL)4hZJg_@w=zNVPx{kJ=4cL!FtsB2|qnV0jrb&dM(f1pPY8n``86ln+P1^?Z@wIqmFK$FU -zA7Y_go6^}I)Hw&d#p-*+1Y|FE!)StXM=}H==7PXr9Lzt=?1PJ+-H5R{9O66EG0`JJ -z0M7ikwcW}b8=LXHOa6e}Fl`{-_(?Hvq^k{=6++tV<>7?d#wjCPoj}N)cZgEpNzWXL -zwksAdLP_nd0Md5Nizn_XZtjH8`Lj4(5Z4(K?Vk&h7WpG?2$Rc%6}nzkn2eX*0s?WQ -zGaM+*_bg?`P0mcn8hB0DcKkye!s%fcQoep?w`eW9+v(Jn)7+!Oo3 -z_iQ^?7u2g=55AV&9g^gQdZ$XM1;!3-H$1o36>Iw9a-`60#pf%8p{!@cGK*{qj8GBS -z8c!gB4OoLEZNHi3F5apaa7~_p5ZJ9ZV-sh~emrRf8Zw*C35-NAYG}aw!naCGs?uxy -z-RN4RhSWGMi)m%o44Y22oySi4{WxkfCn4#2XakYHv<|&MZsN(zKGo|&zciGsi@l-r -zD?rhGM8qV}B?th`yov$*xTZHw0X%5>B~+tH=OX8TKSat0Ow -zH1t|$`jFMab6wdQ=|COBSk}mhIFTzB*R)|iP=3B((UmBpNP=nS?#Zp|2FKc9OVFgs -zi=(@)<(#AA8N1GjInnO7@C||~5!N;^M;Bh6txeP=h>nHF7y}-MGml>2EO&RRKv>~P -zR>tdOs*ct!@0Pi*FsFu383BVAdg?7+f$j#@Vupx`aIoV;MC6cGQ_# -zJlbP$7aN}9qw}+H8M62K|LjS^jubF|a21y9f73_|U}_o9Wfw`@Kq}0S>-gJU27qN7 -z1m#!SZdLFac3GbYG~n^FUsaR -zE#*|1`TS0_9`q$;MzC=9fpY!ORdQ@;aF+96MSQQDj=p}u?736|+mopPOKRA;6sUoM -z-9T)T(Hcpk=h4s+(vid(gl}?$F`jwk&b{W%3@e%M!4eKF;c7xq5DZN3u8;7@Tw{{ -zK@AFStXT}^7UJ+~-ver2J1t7|r>17cLEMSnINH^3`|ZaT9ZWwOjEMQKGg&>Pz?arp`-^$^QYML#oa*~x=i8idh@XJW?tpOpo -zxnBtqobnD@i>_ib(Q}GVdC7QARBh|I7F2d|?0eEaLRqc*+6@;MzkN}JJLk_(6>=>b -zvyl}Ts|TG^USHcC^IF`?D&odBf`6v7>XJv3g5+7-3i -zkH(3X_-({U{6SH(eIxz>0Od -zEM;ZqGL4MLvYQ1kJ@+-CJ*fEAHo0veYdx4(n7G>4%rQ6^;ZFHK8=bOY`F^q(jf+#N -z@>+u7l8iZy1qP5Y%EiPW!X`&OHXXHgDA$_BriGz5M%H7reYJ|-7{1%8P>Cew)TGsQW-tW07N)k6f1*o~b;zW|L_Ihq-AFQC!usVtD0|cyw -z+rAk=*6ccI6poZOD3}elHqs%Z$jQaf1Az|TBRbB~3w$e^ntk9_;BuoLkgp5<{Vm?4 -z{OaF`5;2v=y!U)jnf;hH7HU+RDu|g=4=$aR%H8zVSW2T+Q))Yzi9Q81_6*aY^G_XZ_b%VM1fauw{NMy -z?vM)|YsAW(Om&3?Ly-7EFnb|(!b)$VCBNj@ -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 -zQ$P!a%FzNAL`#$^5Z< -z0rIyY89`s>sM;SX7-hFfvb48Fd-FA6sOWjU3D#AO@HkUR=fOs%Dm`t&n1V+AbmqSg -zZ5jUM+&Bnkib0=ug4{%qB)t#=b%z65LR6|{z4Svnp(IR1XI*{^%d2&e{X#0j~CvZF_Ii7gkz1UI5i8x -zw~{NI)#{Fp-w87T&z=%SHy3mel5^0Dho2DwQ}_sPfhW}W!ipGcjp>^6rP!U~ceV7h -z{^R-inMYKOP7M5;`c%zcIOgGHm9#srhlt|G+k63LpxTo&SjCPv$>5$-yYnaInqoG5SSLe_T>!5>2>$g#01*FLeMR4M4 -z_nQZjU$>8vjUiSfa+g}J_#W59sZl&Y#s4jdpNdUKs4;;aX_A(FXl3x-h-3>-CEuT^f4KE9v^hQwW -zi4K`#D`0-7_JZ~4M3R^AnDehyyw~@Xf;%UEHqS-~d|Miet;Y)~RPLfGBb34s-5D2+ -z1lcX?%SEaSaB;4&qGjpgMqY#}c3o-)lMkz+==l{#kk=J)#n!MK4|U87t%As%Kp=AN -zLUlX*<1HVcL6YJQ#i|$^2|@I~nv}GGop!>J=P{rHr10dBLU*)`#Z>s2g#LZt9{`|X -zIluyr23(z4mor`>yPHpxdL$6%7cplBMREVcaw`jgTxcgQHN- -zWRd^TeNtF53GX>K#jOI&JyE5P*=6~J{qeHE+ol$96sq;#!L*b}YB#*XInyCqp9M#l -zJJIn|*d%^YnIu%o9V`^Oa1LyVxT09fd-A_o#GXBM3!R#H)`pKCB34j%XZhqB0%<`D -zObbk;Y-4%o-8k~W3q(Samv}udCKS4IymD4(ox}j<7@i?+)^u$~9|XHgL2^*fu?pQP -z-up)%p+k4pi|UN!v^FAebD=mf%$!JWVT4R&!9ouXZU`oEuh2+gky$q#lD4OiMPKOf_Wb<3{VHJzJ^k^w|8X-}|Jy%Tu0%`K -za3k67v_v$fE28jugKLD<5pK`6)+`IurxjR4K&0vBd(}H(`$^fKMf=9mw=@x+l{O1g -zsfs`SOjV^)5i83sAvBLdFkoTCdaDGr5<@Xa#zyCD7TR!D02UoR1P1!az>DvMUZbda -zSS~7Cm}ZUz6TJ{bF+@8EauG?~lMo+An4jj3GLk%II_rcQ?uF@hbM1(=TK|nPycu;p -z-~X^dOfQzDxMAGSdJ+rZx8W}gbKVC7ln#MO#dAOFFY<$dEP=unCpcGbP1I; -zUjl=~5(!!^WFMOA*;1HG?S$jkTwF7%p*4K=9pOoA=c9uNJ@XR3xm@H|-@m-PJPRJZ -z!m6gN`NkoHb<(t0gKCh>lt3d=yf=U_FK<71-K8IMO=*SHc7P3R^Agy~f)$|$;t0X$ -zp0%DAHtNl!4iHr8B-P9WoMQC(??Px0Oh-kJjzc`s@pd@UbDxN9GH$y9?n9oL_WTh? -z!&cC1`)jxo2f6|laI2-o=1_T`XMpn8cda|Mdho<<4w{eTE=Uf%7=dR%Fy~gP>o3YY -zsa4Qb;oPp^bNo=R1YKAJY*c38zYQABD4|r`4Dy9!5{8{EUg%pvSaWCsPprm9p}=0@ -zhF$tcuuwRNawo-`g$fs|z3{HFax3bskygnXIcdvRa46hlwTGwFkNRMRq@`lm -zDhpeD8Fv&m6rG*?{-n>@8zDh9fp(JCEJ8P1o(baE+zO~k1ngP>Agz;xU1KUG0$NDY -zoA#+{R_l3tA`!&?=i9r09TE4MIQvG#TY>UgLVZzS_;g52Vsj5bfQ(T7(~r7(4^d!? -z$xo_T5-%mTi_e~1yUf|Klrx&mC -zbOd|S!Gv{r#l>|U;X}R56_yztAfB~g6O3okIvdXe7d}zMDV04-CUJJ&Cc35L58gPr -z5%u#z-#Vdn3ekXq+koE&RIhfY)&y-;G5Z@IFXSI9FxfXWe3A~Llmw!;wBJOr#Yl;u -zl-N9BTdWGO;Kv005E)_)V6ZXCP;DftsHGwTCHk+ -zlC55B;_F!4`T2e6c+=k8y-pCfXRu=GbS#MYRnu3~;Wr!YkkAq(3wUWe;ZmWsr70#W -z=y%|aF`H{ -zmy(Ook1%%Pk|t)O<v7i1^W5B3lr07cwE=E}`cTB|b_=ifCk^J<7|HvxDH3&PpDg -z%YR%$ME~|5e|s9*0SKK4Sb6-a8x$QCtPDz!)dKq>NNDX+4mCKKPkurE1&5B0h9>|& -zC@hFk$vO1pXyD%Ge{OVIxM&(eN;FILL3sGO6*xw4pS`%gdl-ehW?4 -zs(`_ayG+mR#;y__|HN7kMidw-J&65&D(%gn6|clpbb?y!dvT>z4f>#Ldtss03w0F{ -z;WMbv%J-i`fbPn{+*)QcqToV(FoL&Y!BbFxe0gX`hm;Kd4*pBb#HbuePy7L0IXWap -z5055)7|u$>-FwPJn|BG)OsBLLQEt13xm7Y0&K^&4hRHp_Mt%v5L>(gSrRx2a4+e$I -zS)N{n=XF2&@5V=|Qcp9>`Tu$M*D>DzEh_rkLN(v>*Z=SLjFQm-U1(X`+}yjibmytz -z?b~|SpxLG5+0i>BHupk^qu!;GIP8UL?1k_=t^6#M3m828@2r^?s1YkB=t50*XQF8I -z0o~k@$_t`XMzMxn?60+@d5U?(uN4Ghw^A`{-TYyfqCyv3r}6}V;Fc-4_WxPn7C!+4~FM1=o=;3vJDa$&5?z5C7l{I -zeZtyKb7xJdfqDuf+)4di6KcA-GYv9#*5Ac=#TT@!4JvGj`>uwiDT$B58bd@i4@{lJ -z{SZ$l79&f+cDv1t>YRkT%ZQlFXc1+|CoF*?bp;pVi-2#0jnt#jePyRA^1@?1MiVe= -z{0v-sP5%2o|ATEX+3Zpg8m5R+^YTmlS}0)B5to~!z_&&nywoSduyKAg>Z16jj7?#Mz~Y9+MwqPm8LGOCB$7sxkl^^_)+BA4QsQ!e -z{YEqr;f9y=foNi0(yyB6H$0Lv!G`yLCfIP{G}`S9TEMPsy@aGPFTxMIR2P6>;3P28 -zS`oO5kflw-DRGe&qUif3nvG&^gjTNMEH#A88-NMzCajyl@iqebh{g>;Rc}98*D}F_ -z8=@pa5u6OMQf;k-BOzihOm#SSmfe{K)ipK)G8@w?dJy;E8 -z4B3e68(X8j-u?Xj$}a;;6Q&Gnmusw3cI2B+&9%HY+WKAzyt2Y)TnO0aW;6H)$!{j| -zu`H91Uf7z6D5!&WB;$%dwd@q0;ahjAc)`Bu1W!fNT`H-YLgQZ5!20+J*~dK-fEw7DBN;LnFjT@{!izwgorEy(v`KfYf1nc?8KvcXE>vjP|S)Jr(OUNE2vOTE0RW98uJR -z$VzB>b!v&l28=iG*=;H9&4^;&*dM9RBM0};zNKrEHo0gwCnw)9BlmS2@U}Rkj{T8_@2e -z1P@$`s(-rQ*l4YSgv1ATv}zdl?A|BInE2zLVq=Law8@@KswkH%NuX*-95uWq*{Y)w -ztrW=63{J|^MEcf}7sg$i9N5zrghm@x}97lS->>wzwb~PYj7)dS>pX -z#?F@sJ0a1OpkyH*_pT6rGk77{rL|&+a@)DSk(4?Z5=d9zpU06NqxhyTt?QB0U|0)9 -z>)eZtEx%_S;#t|5aYHRM18foLx`V`VXW`O2`bx{UWe$LJjUWLKHlc2&%sQQSZm-yb -z2*J75S|OVn6A}8TTR)9fSfY1kr+? -zkNl@%WlDK~*9DmF;WdWZQR}d`G(IxY&H}I@M6EjoS2-lAvA+c;6W0g1owqIjfb<_$ -zpliM3wanIg%OAQv3|m|~Sgxow4ND6qI1)AdT-cmcdwzF>FgV9=H-eJ*kLYMdrfp-R -zmre_1y#@!GfSO&8CHJ@Xd#D&0A+jmhl?p3;hR+8PV`P -zw@p^HktYef#$b@oT{xj%n<>VLpHfrG**FH(9Yjuhhptr#0((heHdj@uQC0{aH7RgM -z{^@!|R$amet1cIws(J3m-)-BnOu{t3m3`|Dd{Yktb1o?p!a7N65}O!vE!C5%-CH4( -z34)#0C)V{~x>xV%|G5OJ6bg0g;Kyw;qCn&J*;JwizIuz9OQ$Y{<~B$+bRpBF035q2#;cRRKk$%68(->3hqe+Tq~6IIdSHCLM`vkB}Ce%$uUmL -zU3PgHUgC!wz9 -z{lNr9AI2%=9SaYNK8Kq=1tK{uw$n@%_<$UGIwbSp4TK|`gZL9c&A}b)45j`vIv@#)Uqv7YOT9nz>fpmu -z7P>janhnke1%l}1>rG$I%`v1YM-OR1V(a~eCpn=cJD~w4dtCNDN^zRB8;K93d^^%- -z=;Tzq&jP!)fnQ^@St+QjH5at@^bm -zv=MdyI-bBul(OUH7aj*E)Qw1JGFx4D0+S#&C)V+y9y7Kf&o5a~R=Buf^)|FC>QdJl -z9(02#H`s1KxrH$>h6KV0PqBeJtLTA-q%(x7_9R(dz_<>#rJ -z_-8p0hlsA{J?rM&vv%~osvwT>;_;rZ_q$inD0|d8W6jNbVqENkNx+89XOF__*0b}n -zS4TA$5)CUO<-QoL=ii`mUvBP6!RM~r6Kv$J>>+p24$-75mWNRf>@rKq2s78JJiik6 -zbc#+|t_!@^T_+|*?DdE{V=;2mPD-qA7ZGi1mf>se`9$Qsq2o024Y>B^$QL%+o0Cuw -zd*2P8?6@ngHSPH8Q0vL2W0PNDj&z{CV{3lzU7(M|7nj(7MG{-(68(EmDn?|ZMfOM- -z=a1mMhnh@#MNq&AkF032_lSe$^PLD2s$B2Uuz`2w?fsHB!p%!8_`Y8IxFi|!peglS -zkWa?gUo)j7zwcvLxNW-}Vts^OH2XLjN+n<&^OE!V_plE9%5REY;5f-j(*bZ6^+JNsf(|^!q7ZHrYtcQa}i<%?GljuD2iTGnoHa7Vs+$>HlV)q7cry2CewsKXp+#C?5Y_t7rZIN1k4 -zR}m=+*uFJy;&R2~j6v~i*)AHQe>{yCcQE3gN&YFgX+!)olgUZ@M1Msiv_!LWRvf=V -z34|afaIpo2U4Y~qfdnNGXu4T;W|3OCLjo%Ao3|>GaK&4_2xRQD5wz~)c)xXmNh0IdIKbdWHlPRK31`4MtRg{(w32Q*NkzS^`8pZa -z$b?Qy>Fe`tjOXs6x8$ig@8n-N8t5Us!fKOc^tMX)p8*MqV0PxRMY1Sf?28B`tW>^(dsS0Yn(qHNJtT -zNjdC7k)wpd=_?<7pqLfHS0n;6;aw1D(Po~njrxs>Z&4l)sKxJb*SMuBCHu?GMBC^@ -zGE6CSkVMVKiI3$bh=kM~9k0Ssf^cqe2Ro#WN}S0BT0_&edWv3mJ2}77x^v(k>r0x* -zuM<?FA_B8h^R44wCzG;7?ef9%`v2Z67E-Vv`rIC}A2tDA;<%0}?P7ud< -zW)_iYCJAftESM7rS;gycl2|;)fl*D<_$vpTU-=jxd)c$cNB8n{m$%Ha8#>o^imx_I -z5G^fnVo7|4uhq-jwo|P^h6|4!Qf6UD6_2k?+?cQ1p@0Q%Ebm~26_T?$^mXNR;Mqb^ -zTUK+J!8wdtzIZOm$UC=*LMpA)!KNw1UUyYfK@6fJD*@Yi;WLR7 -z`1y0{)G4Ux_+xhp_jP^v$$&BGe0B -z`0jiA-zNAUN#XpLfB0Bj`}f@M#ap$eeswK>!@vD|M??Q6f#C*T6u$#aL6QoOl&IFt -zgc5ZI6%+y=c+z!~~qVxkA6OS*?tcr$Onog|T+c~ey7ZcUhr2=ZgnNDC3 -zG7dU-GJ2-rA0x4lvGTWYS}{XrDzratzpBcz)U5G_nX|MK%?7RXuj6&Eoc -z?_L!JJ3T$bSsLnSPrl`$5lvOsW~CXFDrNU7mdfxsw}iE><%=}+>Zs1K -zawE&y`a~hgP>1gY`j$T8laJ#c+86!aj-@TI% -z)bJFYtAuM3q=a>k9C_(A5kR`T#sTvbvVC%WZXx1|)6_wE)V<-?GMq;#HcWZ}FihN^ -zL996lJA^PdC&jJeZwT{Ryo|nV>IlazHFREJtLe`mlyg3&W&u;e`NqYmJjy!sWI@kt -z$j}Vh>Zx66s#i!940|0>Np%jq*;rqv%K6wZRY?d!P@osCwK2_jfHBfFRko*gMzB3~RLS;usu%_V!(5~}*S0}dNi-5VRCbhMh#@m|E< -zTtxk9F$=ShJx#2z*>{j4nS;csA*jd-UA?O{w0?((082o$zqx{cab(UPa9m@ljP`U6Vc>Ii?nlhZja2>7$@M_7Npd;XZ7fAXv2(p_^8p8A#PtiKGcBc{mywo}*O -z;;quc4t96T2X;AyerUYy$tiFA4%HUeqtq3e=b6_!$gBP?yt8B>Pl}OnKX(?+6<2E2 -zpL9`w4b;8~Pw8ah*Y$A`=# -zMRE81>;2iXnPVjT)#fcu;TMax9URa?%nzYr0JS@)e$O%ocevVU*M1R4Tv}@(anW^R -zLV@cV)@@JYe02=h^+rlk0!A7iU&b$;$!kGhv`HalU0nM8(p!i%BP?jgv&sd%hQA9d -zVkcYZ&$@`5A+e%i-(IwY%yzilX3DDdu_f9D@@ -z&^>zBvKJA?7RE}zcCWfbl5!7*QJMgd%)TQwDI~Qe+Bi=J`fQ{tc7vVxx;r#YyCw6f -z(L#kQ(D29cwMr;+&J6+0E`-||p`=4nF(q;F8eidEDU@~x1?@Uztk5Yn5o|P?awEPK -z9*$W$BkF+hZ-mYiUTNvz84KMvf=!%eL7}yk)hEw?p^+3>ZiYwG2n97rZB_6S?f8?< -zo6VXs&J(wsn*v&%vjt`L5PgeZkIcHZig?9NlcKjwuVQ}dZU4k4_f?nmgTp18+ELfDagjA2)z=-zHfGFm5< -zt{ZlXh_RDd$nYwh*k~EDG}n6+79@e#SK^l#QWEKK -z?Y||_@M{HKOI^wN<>Phei+rh28}M;^Q#o=FRk_X#y{wc -zaBr{s$cs&b9_ab^s@o9f!S7l16#%W|MUoTx&cSPHg?KdHM)(PwBN)sdt -z{z8FBdyW<8@qqGpl`vbxW{y(fzM)CqOf*3Z&6PW_p!ck3Ftlpyq+p?;)m5w_Ycd{M -zV+&%byo3YPc{iZp6N?kylH(W&MYDH)f@xV#Bvebc^?W}HLeS=$eG}6c%Gx0oC?228 -zgyLF7^zW^?EXO1aYC~)Z3Fhd+7^NW8!JMUHTm)&Gu4vLcp0% -z)Jr)*hAkeEI@j^tMBv7K$J}v1Dm^E;jr_jBV*OS#}H?Z?!Q%gI} -zmN-D1W_1Zd2G(#h*w}En_k%sl+qR>H$FKCxk4OH~bV9`b&{t2*%4s&Z7wIY2VU -zvHG+-i}s}l7vo6hqG -zg-e};d1-aV*oPTP%Xd`+#G6_Pky^MBgsg3TnF1RnX^_BcsGx*Tyti+GgwHVW-PQ@% -zXud<}FbNJ{!ldYDf&^924bfgxzxlb2mM=QEKyxoPi6C{jVM?&xFh)RKAis58a6;tu -zm4FSazkx!41@NIl{H7Q^kVv+U4L6(&Yv~)@==M%P0y;+5Mv!}e_XrKGbfwVRK;RBz -zYN9ss?qG=RGw&1L{RHj!Nf`mTw_!86IEhNEnl=n2YRd@_E|c`Yp$wz27l!hr3qSCJ -z%@P;P$3iV7qd5U&)TQxeYYWbP5Mj&ToFp49wr+)lHvI~BRGaRDVa{TtmBF_LARHbJ -zI@kE=PbKXuFW&r&JYgQIpW0P~9F3;pkDLfI8sf7eM07Ot>pWxV1zs$~MH^J_v!&X!0(}mO&EnrTaq#uQ0aNNo6St2>3-Y<`h>_+#UdS*TFLy#UMXk80cUr8>y -z@N!*n=q|u->@Yl8XG{Jx55ueQe8Vf-OP4gRUCkFmKu1K$pdE{OV)=KDMWcmIB?&{9 -zM{X$*7Wn}FWRWOMC1?*b8m5xgw;%+7gb(;h5dR&nc98AE5>(QrjfLnC1tz%J2GqI| -z#lV>A;0loZASXDfxmmC4&9`eq$M4)|2R_IQhrpv2d>sthRhw$&3yu!G>=EImE>Kgi|>BcGu}0A5jnVH5KHOP&_h|9GjqqkLFI8 -zU=jo*`4ST*B;+OV!UxX-D^ykS(q;m^wElftMZQ)yFpb*f5;htyJ`O2`ywFG($#KH+ -z@+~Q&@;h3-Nl=1JFMmSoI=;Yr0{K`}K&T8aVH;v2P%Q{p2|EfJbplUpSVzL7(;b-j -zpw9D6Re+6>GI$yVyUf>%Xx98%^5ix!;RU{wM>QaJQohu5V4wf1>iC{VUk3!ianFA6 -z7k0eo3x9sO%aP9z`x>ohx$YOVv;@TN -zPx{D0CL9W1QTN_h%fB#cUV?oKU~1niyT%d)FVv>;8`5Hn$+6t&m6nN`STJV@KX)R% -zq2fQ#2{UwI=Xd=1Q?TbR2=j>J=i4hgW3++jSn*@T&SXr@@XH8gAm@e;o7EggVy^?c -z3rQ?#Y%JL`7$VC_tgk@m(8huFSB;7(mhc

E@+dW0Um$kvjarrMKK5c%Ya$Tim=cP5j}jQzB?vnnT;dWYS2!Zn7N+5C=>V^i -z8I!yTSWHqLxB3DBoLf9qw}M&{St^|>{Q8m2Fh^N_-kv$?LR-cjNe_UEx4e6Uz=P?F -z7=j6WQZP|C;waTp1ev`@^}-$q1e7k00qqwA{2>sOecgEmUw-?E)XUEE+k2ssg^Vl3 -z;z8jl;(0rrlt^x_qP0{`+|{O;=0!(>kHj%}b^()QAvo{|w5apaqi3Y6`JmcSH^!$T -z*gFJg)1UmVh=vc78#R&`Ngp3O!}}X%V-R~V6Xa43%i7j}qMCyc2Rj$stWLUEYS8gC -zsb8psA>Uh=KRX32OgoBwj9OqV=qfI4!NDeRZ`FA2igc@_Rzm0-5pyii}@2^a*=ctdU -z&tV2(KOSEPUeG4!eGC$`(Mp`qiavk^Fk!tLuT* -zq(->23-q_1_d*i5I!Lb0?}W;mtY{*^jW0nk -zP9(}ho)3l4+uf@t`0wacS-LW&F=P#TR45>!kbOgsisP)8)2l-q)ovq_#goRSDmU^z -zE3Y~q#lU1jk1AS0$O3BmqY~b9;M{&*P2wTp3-zQ57lpD#1aB@MUz90$g~yPMSxD1c -zs?_6v|EfUI@P%F01QPoWyQQ!;I}@aQaUI`0ojw(v=gvEh>(NiTU>zUoMsK4Ah97vS -z_ota3t}v3DknyP$Q{?Ty{^zNFtu{xqdAGfReXyGK*O8_B)~D* -ztTwu=(--@%q>-R{hG2b7gLbnF)u>e-1bf1j -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 -z?5kY#m`b3qn5pYZ302fDC#A-* -zfB*6KAOHRDr~mo({4f76Y47yc`OklU`ti>w1vES|-hcY*|M5DZy!&uZ?AOw-*orisDAbF^7QN1 -z)9dT6CnCxRUh;w0eBkYI;PYqp_g~rHv)}yuT>k$1lOBq0`1Ug&_>~X*&Ij^)yg%my -zFZsZ0K0xpBPk;TdBz~8g7WMx{T(yf>-v1jklK&@lGW*N)5EwkIQ%}Tcy8rdZkH&;W -z-1#w1ip1X^HT~O7J5?1h-TW}#N9}+7e)&ni`SO!q{P`!%9R28T{OJGb`rZFd2e$F; -zU;ho&*hwt^%hi7&-~5ESWOM-GC;vNLttwJ+Sf+#e;eOM1^G|>M?QehkODjL&rvG~V -z!;kA9{^KgX`u|AH`JTc#;1as|^Xt!#x3?t{Ab}VxrsHSV6#a8Hp8Pn)f^_e -z+>M^b7g{07c5)qif16a}PWo+nyu*9(^Yin)s@40iQtS5&EPuJ??W=Uz_js?$s?3M{ -zVDImpNyhK`Y!CasZ?XygsOUJz$IS2Z;cMT0#p3w*W*_Gd^AYy1@$=W|@tU8+pWi+| -z_50_`v;O&W=Z@I}{yfCtLJ3latTqiy|6q3T~szrQ}y|Gj44^;30U -zAD8#(C0h)i;UiV0yZ&9NSe}Y(&8ec$6Y-|zk+dj=mlYum4X68&axUhWYJ-1|(#=e% -z@~geGG0YYt5>~qmh6(g(sotIq_o?-vI5i3lD{noFZdX>jP8}b%bbej+-rRDBc!Hnv -zr-kal6BK&xt4vb&VEV)T&lh*e1H#2P5avX_O|mYZ%4&`YGQxsO__f%<_eJzYe0Uu2 -z?bZ*MRe#QJqR*wg(!WEYlBtrpHi6B}KgwXYSj9Egsj|H}bl32Am(Z=3x>BcwyR|7n -znm)f@|KKo&OFmksh48X=h-sQWh1MLR!hdl_3L3`!`4FTv>p#?HCNrOl*;#5ulj!Dq`Gyu -z8}x|it?%HUyIYvJxdmMh76ZfB_cbXA?tWmf=Wey;liS8T(2b^PLw4;L`+m%?rISjZ -zjb4uz0^WCDOqpt%OZrw{Eo65;4$0?{0nXzGt%vkZ$*Rf$ -z8U4V#>wQzCyW!zhp8tOE+VXdWjK}x&ty5O%=IbVkN5OQ1D4&;jE46Spc(kg@L`_wN -zT)3j4t1N#vgs9pi$~0q6X%Hps=C*svt9!(b4xPOox6J5Q;k)2=C<1J5twQeL -zq<4m#)mYc6UD7=sU(LF{A?CSedlunI)wtS($QJCsBQd_m&wjlPI#L=R&a6&-=hA!+ -zc1YcwRv#b2SboR8N8-mdOeH0==M?^w+6!F+P4X|~?t*h~gM;oXlfUYqJ;}y%&gO&C -zs0M@bLOOpqnt57I`9XwELqo>)=;2nAH9j5D1idz!+-fYbUg${A*2QS(D~{%sWQ*V4 -zKY!*oA8nt{`xpj&Tzz=oB(^i;QjVvEO0TzKX+il%@glejJat$f8EI^y4=*2;JN0l9 -z=BPOuV~ZhYI?+2-t0J4#lU@sAC*2KZ%;)u_JsN`{)-w8hYo3O{+{c%<4E@{SMfs|J -zBHfi4`yMLZF0Y@5mw3($9L2|b_x@FM;kn2@O`*(5+c@Q;({O7hej6;5YRh~q_9h!D -z9|8q#!>K`-Cr0h7c|>Xz*)=4WYBqhfnV -z!HCRnFR2U**4vZo6YjnC0zlM+a4rx%OaF?6C3LDX-XmsHk5qd-V -zX2{Nyf?MW}6t9lHc?dRBQ42bmRjIlSA)iPtvCr3#OSRrf97gYp$5Xm+VYieJ%PvAa -zu4eI=UT#UbEqp`ZyP=%OQtA{Bx&FzKX|K-i7|&hG|!GVr~(JUS*O@5v^S* -zHANgz%4M8(u#7;v&F>WbluCf-QezRP_viN&^#m`(Q!zb^(d7FlRSDlBiP!v2pN@TV -z{-k4hXit~JNE5bi`(nC$T)hANQk|#fe6(NH^T+DCT)r!RRqwx^tNQov=i;TxY|AKf -zq;h#D4d&BPs>addXDhB$wk+G6(jqc2AM8AdAwIu+Q03In`TM{_OEqde?p-9Y(Q-_K -zL}NoDH+bJlx*&|?y-LC9v?ETuLmR4$B9tw{o4;cSZ_wI;To%;@0ou7NUsme!WXgCy -z(!a0Nr4kJ~S}ctRajw+5v8svLeAL0e1XF)yd+o|%Pz>{)%OGvs2^xo2pqyxf6Q{_h3(wth_<+^p*E9~vZ@A^$OnRrnia?@F9KYxy=VO%Xu -zTdhR<^ic|u?s1DBe@lD(KTP#+><&uA-`VgF_vrd2pT(pbdq&P##Mcr#l0mL%T`T2$ -z_6syxZ5)m>4g3N35!{b=*fMqAC`6;!OmWu*QY1oyu*(+BVZDCsp|q>lKGa%QtHEwP -zKZgOmU*A^4qdu<2=4Lzju!|KE)AgfOC5`*>xH=vaaF^(F8}F<=yk>`6*$qvf^CVYk -zL52YIP+jgD=ytz<{r>#*ng0L*r-RA1Vq#k+&i -zAQy7TNvqrvM}Hw!*OKUzpWTFXyR|=={xUe9nw>pvXnHrKm9HFH1f<#^B<-5qmPc5x -z&&XuY-e~S+s;bqPD$0!|2q)1>J)y@M*IQ>$vk0&np45YMoBzbnz2?W@(7mmP<}zE^ -z=<#Me%#m~2;o0b@E|aRVxfyj>yOT;dQ=fWu@6aqsX$RNXE0k-`>8ByM^m%tFQ6n=4 -zl`&+N({fV%C+Rl%n@&j8Lsg6i>gsuTeQ926ovFGNCmmF(>2nK7rF^aJ)O+M7jZY`j -z-(x}V-gkA(cM<`Dr#*_g5ZX@zhxSP-&Q{VhV4=U|ID{#7bpIyz)A< -z`5WzPlOHBk=hp_lswW}kbS6P9AOB8txQ#jM+SSxM8jX1v3k(v(s%S;xpm}7LmGjm# -zjdLzv#|~Ys?@~%0fx+a)AQ-E_ZB(`55`bRZ>X5yfw|1ht?@EE*hUP05q^@Y1btEij -zFg*$yVmv);L0S~2P~Q*u)oEJM_8pIv&NopS4n@NapK^{|UD}nwOuy8hAH<7_m(P#S -z_e@6Buf^xSaHr$1?4n=KueJJB>CfuzqkPLzwKC?zAMNrX7xk@_1u`zwNFK9CkByWV>YGr79Hhy>gnH=oxHSO(T -z6paWMo85*ffJ7Ni7N!MV!Va_kwXxDAt!R>W>7}yWLmVDWh`oPgOvD1})AQS}=dbKu -z!KL1n(LUAjZc*x^R!uXiV=|#z6lBjoDT?oA>sz1am6wk?MpUCwh7va5YKNv0M>DQ{ -zVX)@i6#{2x^E{-<{Ph1&&O$sa_y1^hqU7!gqNDO-0r4!J;KP3k|d3LrLK8JM`7cds5Te_$10&wY2P{1A1B!d35{;u%4+5 -z2&Gm2n;m3VT611RY&3(*K}XX}%2B>|;9$>>M6pGdwai03?GQ;xN0<*LU-;&$)_Gr&gSHs#YQ|5U=g7iwKm?u`uNyf`*Fq -zQ2tqcSg|?cv~Z@H^P?D3)9;2VW8C#o_vd}MM0L)rXZ5M*Lw4FV@G5hwK}U-<->F!l0;C@&Utv*hK4=d -z<2ikRPx3&LL23!fp!T5}`yJFxtMe1Zl^x9AIyFwpz`Cm2s{IHb?;qLnY)n-dq!Z7o -z3$1A%i~Z`5L2s(EHA9mwe#xhY092sqPy=AKG9WFkg*6Q8qiSO|7pcPgRUo5JlwYM)5G+oF -zl_ZtM)u`_2;ZXIliuo!Bt3`Vp8bwZ7@!iJsn}n1c`Y_qtkI-9?Y_%)s9v8hUG-5rn -zy+V6$pWhDIu%zq_`6BSWA&n;U&Ns(0uhGrz?)J@|K7YMT-OtC%+uz5_X~Xg%_=Fc`ftS3}tuCjSp@oc9>SWZ~L{mS_4#%=?^+@vvsh&sY6gymxgb8XNo`>SJZ*0z=0ht>_`U3#9nVqyBC7 -zdt=O#xwCB>`}{Fn+PF7m<}om-n?NoV8hXJpJoI7vhJ2rWYSQ$PLXsbTki-x95FG)# -z*#hC87Q@{GY*c^J`e3Kb-j?xAJT9s5hul9y<0R9sZ2KgwHPORI`k;uLeowrkDv9sq -zU!m`5y>HmpP488Y+E8tNp~qXT27}st7e0Czx0V*o+MKmuB&X12x++w`;62F(Q>7+$ -z8=yZ=k-sqMxg#ni^G2W)KnQz+XU6eGZaqbBh%3>9H54TlRjH{cqq>rH^ZTPlb -zA-=PDP?QP3e!hR~zC%(L&(Gtpgg#!ZR&}m&k>WfD_&>QIlD0EI~&|$4bQNt -z?k`O?6?=6)>+jmyx8Z7?(1Ky7hZxl339xqv2lpW#?eMA0&-s)h1v1%7kvR2QfJlsLBFoRFb6NJA`bSa -zVeXHY%GG|4ACw`EOjGml0Hn5%ES&G1109y?t~T^-T=%Za{f_kHaXpy&5A5S1^T^WY -zp(CLhY?;%a3>&I*uKJX`=aBKasRFHj&n_Pe=76xW*Ms|wKjxvW -zhz6oZ_3P0%OoTxC7ZdVF??}d -z0hKPhfYf+T4+-5C7UMgl>vw~TyHjqMvHhXR9|;Ef8d3O234cfuua6ZY~pHOBV5oXdQxHY6%mihw5x@CyoAi_ -z*8O_3N`H_9-;Bq%-x)|V;c^z!sb+4gcOSt7Rf8l_Q{~S{K&poXyWs<0>l866hsIv{ -z1vs}!-$_Ls8|#Xkb3t671*q)79W$wpphI$jKZuLnTv;T -zw=7hapU_PAK1i%9p0fb6u6TKVT@Ssjhu-s{*Vh%*>QfXSnV;<11totBu!r4JKjCrb -zd_ya-C_x<(m-6+IvQSl?20RaIUGaCK->8}2hGlCVo7K&Rj>Fo003`KGUSHt#c|w3e -z=9%j>sgZXrzVF5b(@dvHKN#o0<{atuu%ZqlO8Mv7c-PFL^pA#AU;pEK{IE7Jb%*fX -zZ}v9WxtFvG?uK0PVo6mxzLcv+qwDFoNvH9Sgk9c~FjK*@Y55x*zt*EOH_l(%6?YBf -z??zL1(=H#bbSkWqE1d+~jt^oA1L8OHOPi@sL&$8O9U_|aSQI%mT4U*rFeFlPhnA>{ -z(FCK{&vUG!%{c*SMY>j@&~#v-Tfn2_nc%dTZ%EZd&bMJ|C;5^z?H*t#{MtY#;ThKlMR7Pg)xtx1}3M -zff&D{@i}4dq$GnLox&!co8W1h=$y>&gA%zRPt>Q;m{*3ms<1sNMTab6xJNqH>)K>R -zBE)Wqf&N$pKoj`+C{of$)%A}j6^-qqU9B7lC(pmKX{E8%RMS{cBX>P5njIsJ!k~{t -zkZwJUjyBhj!bi}d+-mHzS#f36kCr6B$G5x}L$T8Dp=09bJDZ0W^`3UwuOU+*zQ4r} -zZ<;<1->e&L)^hJ@KXpUPe5DDVTFlbpf^lzeZgt8#P5M5Ca-kk>$q+5ho6Dc>ikGvkVf|=*EbfZ -z%Rk6DDXszGDi795*ArXu -zZ9ow2>M;=edYJNIN78ig`J4`VDc8CZrQG1o$9!lA-DOzi2hzYH*QwJUgjkb1kRAM6 -zP3@|jL!m3G^9sGUbHFsKuw)l{XH^kGm#f<@hBn$fI+{jN!K$9)4DMqh5SJ2SZdh=W -z`K(_Kh06R??n2M`^k{&F#8>4CIR;mzfI&6AekZQqy|*KAogB3&*PpLpk|)e966;?5 -zgJ(|1oK4VyVEkcWbhm_o$JrwqKh^H+Px;Y1sMtBzWU1(bI`t{~Xh69~pTB>(juRNF -zn*NSf<{JSpgVrgLu2kbVtybUw{~^f?JJW|%IQyVUJ6q{**tVp?LZ4^OhPzFjx}<16 -zZ)(taxWdp}6^lH|hj?J5)sq>Xhc><_I#F_B({*v>HyKD)by@QEV9wfF^Uy5$0rNG4 -zn|aFaAdBd;el9GzGLyjYSGbAeH~$}JSF+?hj-2m)ioSWq(bQj3?T+xtFW~Ue(P0Nj -zLKH-hpa5`@-1f6O6VS#)q9(?N?&{7Dq(}lt2C`GGqr|>Cm|5&W -zF0<64JWyXFU7lu0oeD@awx5zuXa*);1OBqf9`JVnt$ro!;NQ^veN|NKMm?r?MuQT0 -zHj7T?3q2DC<9rfHHW)8vxVmySD>+LOYD}kD7S;;|RXBK}A|wkN|QZ -zq@3v2S}V}AWuohYfh_p&4aD9%M$anx(cp!G@# -zigqYd5mRZ)_-q?7t_Fcf3v1`RwsT-%i86U{SPf{@=N9`7OGO8OK!^62Uulc$=SZG( -zGF9k89&jrD0zPYO3rMKUZ@ErTBN?z>;IWc^O>aPlPPqD5M(;g+g0TcvOzJ -z+Yuyp03tSgC`uZT0t@yaL)_?^fnltAT+T&Luc)QOPXY?z^Vxq3rB02CH)Q*D4Gm~` -zeD?_o{_IlVxl!!{+Yf?1GmtJ7iO~Wk4KjRqDnjoCb{2;Trgw%@%7T!rc%} -zK?rU1+0xHoeCjQ>2J|^l1WJ%ZG}Vp(^bIyu8Iq5Onwb%_8m8SD!n|L?(-@JM_F;0dDtFA3o)G -zO@wOqc3#BkeEKGFfbJbW_4ql`qzCuiwy=jy1viZqzjOB?2+?o4#8hhNC2ruWpzb>w@v3 -zMi}Fgzc~PO5Y5qDXMIs8_d-QikQgE$fs6&-k}%|l8sC54bmJfQvyU-`ly+1gj$iu5?+(MH)v#_SS9sX -z(1Tl^7mj$L#QoT4numi%)L@&%*eKb@&~Z9MJ1-_fsokK{7)#V8v~+T*NtAKG;67=9 -zoKwpl4#**0O={^>KjM8>N}t1eduZb(pGd0~{~U`Zk)Ob-mn`h%qo3l&*kyHsmLw8b1MW#|J90v%c1=v7Y{ -zQB2FYMJmzQD}e7NCn_;NV;>3B*P#dinS?>YH*`fQLvwd}(E-a5DnSKqSSz4ZU}#Gc -z>k&1kn_q6AUVcrtg|r9tl?;uZ;m -zuoI3+bo)pFjdj|3GUprB4jN-8_C@ng#9`O -z*RRL>UE*Ux{#R2{D-+w9uirn&>cQ|5JgY?Nt?^R!XDhX8utFNW%vup$N(>OfiB?Jt -zl2xfCMoQ}QAQSrW9jv)JV{E;&VhhAgWQ=3&fHWX!iF4VP6ei?^gXh51t3E+SU984uw -zfY2~nhHp<0Oypx^wIIb|{Cf=LA;xTfaNozTZ+Z!qEE~p|C_w&bOh;Fx-X#n57Jx-> -z+ohR|zFU%T5l}rWm0f`5?LuiSzyH0d5168jrAgK=0E{)QrUkOXsxHO)P@(ABU;^kP -zAU*Wb2zJY7sRKok-~vvXC?JwaLc&^T68j1!WXxwy4QQClcV79hff92OIqU(@Ns*gC2B|1vjzABc -z^%8P>dw5NKVJO+w7|u<^Al#Wr#swV7M=G-dO>0H7E4A9>mNKjW>%Xgw79ldy!s~}u^+V> -zwqNwVuvJpeAdn|I-;)3ddDXnf&nIA^P+@C)YZXj~&M -zm2-@P>z6>=VZzzrOL6Pw0>VtALZMT(uXvra8fYWNm4Be&^{Uqu$+ZJU$U-srM;EzfMFH% -z2^H4uNX5Nb^#%5|@+8I*==C`?_o5Q>jJdW_Mumb}l4ewr_9&N-y%&R+F$g5#BJ&(4 -zg-UeuJYU1^>1UWP{YeovwTQ*g6wIYm^y)Zjh~<{e<(<^gxQHGN;VV7p(e?O2vF7f3B@piS9YgzIXdOc%AN*p^=b9M5 -zE@RW1X3Z!_2jf5g+`hhGN8wGnTYrzGH~-~-ac{sC8({~5SG?^u-~W#bw(sAY?aSxm -z`L>_C&F=ku^YQoG>+@sty4`$yZFX&UCr6Q%SJB0{Uxqmef|w3wfgtp4r2ModNrkg{fA%w`P5?hFR$-^!YlptkIi5H -zsQ>!k+uvXRC-a}belZL?_7DE&U%$3*9~+oITq(QV=P&Q7U;nYZl%lc!dK{O3TmL8w -z{$qm;s6(sj`%i5CiT??<;qQNi9$>%1zaKq+pSt~Szj|@^?~op_!8U|mxi$Us^Rrl; -zD0w*S_AKoF#^o+^{m(!C^Kbw3)1vC+valWGMO|SNyjrF}EJ?^;O~tGbXV|n=U&- -zgE06Z>M08jIA6?nDdEMO>Dal%x?N`PB)h&!3_XEm{%p3REj2pVn%;{R?GgtHS3>(+ -ze@=>Yg*I63l6zu6->_v}=E};B{Nn&tKgw^V*mw(vNFWgAF=UcmbQK2jXPE_d+Q_YT -z#6U3K@|ZjLL*^aJPMKK`w>Ba;)-#7m -z3{eDF3b(swjjadPutAOO4Uc(DD|H#XHJnoTH#^~Pg2CiboYzsf`T0grYi1PxujrX7#LT<#UWjYbRvhkZ2qtF4dV -zPvyT!&18`0id(T8j8aeGYm2p5nK*@?DuWQPtS$Q{Xt(z4o|am+p5I9Fv~O79K(2g6 -znGr5?NCME9FAM7tON?T?IJ;xy0uNQ) -zEfl0GGA!u9@M0Wd{=#v?y%@3^bT2F(gTQFz#PO3o=6&;5O0AZMhlhe7hh~{SmK<9I -z{}v!@iN3y79cR0tSkY-czeW1DRv9)G1V-$g5U)v4BmIUH~v>)z%0wX>2JmL6C9)aq~&K8 -zQPuI^2o{>rMfSn&g%>G+>8bo;8LMj{+ANgc{WwC_YK=6pay)YoH_|K5>y=G2=Ux*F -zCIu#1u^;JRI$1cw-!>Nb#*f4<2lQ>7J1j&Z^Y~M2Cq*%mRqi-$c)(QerwY*o9m^kd -zRaMCn_?An)9|AplLxl;o`5S`lnEeK7Z)aYKc7_ -zk#G=uvPX!2!7h~Z)S36_VuY#bS7lSlpb(FPfnAYtO^%gFR3B?lo_C4$>G_;e$nk|A{ar*wJ!0Xh!9zSuIyZg{hV8csR2x0F!scJ^zsXiJP2QC5TnE -z0`(k&B5@R!d_b*{{T<)s_O$YrH$Ex<6f2WJgX=Qi#Je0YhZHJ8WlCSt5xT!vIlfPt -zf6m2)tV4D=9>tX1HAivAxT4H=IU00QIH~s>+I}zGjKe7m3qM_vt$1YH5~Ko#P_r8l -z@-?QBneZAc>OmmN -z*|QeBdaVzxc>Q{NiyQ?B*qHMC$n+$`)jk#^6Qaw~Z -z(rft_VM-;YBQQQdx$J|X#W&pzT3s^Yk~ZSUcf}e^eN&L&GCF8Kv9lUl1oBr**O;Zu -zL*2jdrnDStbK6Thfz8+W+m4k&^K>UOCTKk#K;>l4J3UU>9~?2-g+=D&$R3Uz798v| -zX2DKq5V}__xRU`o^NR?X?56>yv_G>SrV~~kB-$8$0N5Cyd^23 -zz>eG83wx{J*ak^TzAhW?2G|Rw$iLR|1EexKeODFzSo0gPtK#9vgR-i`z3?W*u>N99 -zGEbRxY&*5v9Fyf0kjApy8nLm%=5>nQN}UXW4K{Pib<&HsqOpcQJY%7f?DvynY5I}> -z4hPeeylD({gRFI->xAItg03?m_=o?szM75)em9w~ZeA42nK~>kicB*DV)aCc4S6%T -zza~0R0NA0!#wMj;%}`jk(5uTuW;j>}x)+v_%+K0T1XnC8bb%y%hO-jGEh&(d#yX4v -z?HeiCGqJO-&HHLPhebvtHj1jpDn`e0!@S{r3!TpxJGy1SNK6(w2jTf4*YiJl2Dl1o -zCz<1|J0stEw1ixv{dX^GiH%s;i+iEa!5T8Qc-;9jC|)_qqz@G}GCtTITk8P>g7w+4 -z)7;BZx<@HG3eNb(aEvsiHT8i~X?^C-w@{=WJJ@yx=+eV)=(~`#E>Zv5V}41C40Q5yWVg -z1DlZOZMjcnD&Rk(8w`ITTRM=8X{BL4n(1QcYGxXMbJfuaut}i<%3ZAF5yh2gs14;F -z2#j^jI#$9o{#x^kdl>X0;{&l9B%pbBhZ$Y0!k;>$LZ&3oc~Q2+c3YCWEEwH$7hYtj -zht~2lfysA;H^r^`F7vj7=P#4_-OKjl<$cFmfrt7$ -z>+;yj)3rznfwK$*l*s=4gXeURgBn;lYB*pDd0s0SRE1&Wxj>Ymm2!~wm09_rdYdp< -zT$;U7k4-K{V91>@LyyTsEMh|Q$Sgy_<1ZHz0@x5eh|Gkc;V36&0*FTrx4>W`3~!Ob -zo%{Ool7qg!GWYAhzjKK2Uiq1bZ$2$1Gk=TLC8ojB$~5@2Z+&t0+z -z8u`qD*PKuyLleZF|A?`^*tO;uFA!dhAgq7lW+0KuOIA*}4hZq@VGMhdco_5VjweRU -zvS4o?x}m;iuI$X)m6zu3-I)rOw0yJ~Vn(#^b+TZz{xIS|K=Hjj9~bakGA=ilL1iFMOS5bdvAhI4tC!X8nj(Gy?QZOw;UZ#fNUfvaY<< -zO-7}#AoSRgd1PCwkrhiq1vNO`S@v`d=E)s>SNMlR9=H=W+*A|yNY{Y;TLolxKfs{i -zrLRJOS!TolVyhSiE%TpNY9&hSM%(8m+sdmx#$tmNERO~O#w@J-gH_Ffr8o1`OV;;b -z_nG(%;F{T~=y;9HcI{qcg+}fgQyPDZ=;jA3<(c#QTXPmVYs|C0%m)nG@uxW$TM+Ip -z{1lGxdaYta`Uk>X1nfxkXl?EujV#tAv7aw=!M1SqM$RHpB -z!TKq!@VpY_1Qvwxme)F5=?dP!;;MW50s@2tra@)|iwG|v%a|hAtf-U+)z>-epOaF| -z2f?e!0Jf#z{mBk)Te5Q-r2wx6Rx|@aAKst)w6Wq;ZXE(F`vxuWZeg(Ovn(O~k%tU6 -zL1x!3fau4|=+=PVvdUNx_MzZ4N(6scnR1B{ahcgz&PC=on}a-P&GS1fJl4sWz~y>g -zu!Unj`{9+IM99p~Y!o=c07;GT13gu+|EEYkz& -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 -z(|C)i)8I)WD$j-3;%l$-`BAjyatzs1 -zh7`wY{PPFvN)e5Z{&p<;_y7Awf7|*xI}UxUg#&jrK69G%A9icFV1mZn9*_^L{N(CHhoL17j4`5_jq -z?2QwyG4dRUioYP48k`tmB=*&it?f)LVSO)>r>}(YrOJQ(p&!y*X9GeN2NmhPgl>~I -zKPUaQNLc(kNm(7~>1+5wh+E0i^5o`Jrh|b&91pE3Av92*Pp@`qUN`Ma?edEzEqgg9 -z#7w-}pRX6uoBk_Tn`1ONTmyGhGt%p^tXyTaFP~OBs;YXIOf<2fuoB|SVTBgZwJH2ZXQ0t2`9^JlqNlfCe^f|y<=8_j|j2R1W*yzptUl5pj1z&)W)V0i8x{{}LY*&VjL^~7CpY=O0#-_DC -z;6RpAtClc6@ydgkmDz&r8-eMcl1!&CNp*-oSMC5Mx~E;y^4umhq6`2k1x;ER!4820Vm$5jiko_$bh3a3k${MUoSklf9Upi -z$y`k07o~yr-EKVF`b4;>;_a5ejg>cQB5ixFajxNI1^Bf+IK6g4(lBkZ?V`2K9LS1z -z1O8Mydz>;cd3w#v=jYq!=VPe~ZqVlPVqJ;)CEMBz{{7AvFHvTo@y%4!K^u892XS0s -zW((;N$#7Wp8ViVD-%GNS&Y~j|2PTo4RP` -zfD-W-EDR9mAz!9@VuXwLQ( -zd{hq!w6^@{6Xy9VvF`_lz_M4D<8tinv{MIf1?FD+9(Ft+z9KSi;qcr=qMFQA-At^_ -zCCQpTkwAS>ndCPr?0>rurh$9qf6z>_^F7V>Z9^{??fF%1u-g?x@Hf8RIulz5hS0D7 -zRW%O;#~`iV@p-eAJ{=cLqcv)AM)-khj~e-#HkKI8RmMGheJvYr -zHlDvlAkgc$KHg!SG(#}>MtUqjXq~UFC$x)7prb>(W7K;khKv{09O8Ekf*t#7!0_cmAtQF2L(E{qx5#z*k -z=grq65N+eQQdy5e#!c -zlxa(sb040OQIW0j)6bvn@emh9(|4r5Hsf63YEZicx&{=Zq<;&NtDnHGGezLuE`(x{cnU~{%UpE+-&f77dC|2@JkTUhCbv -zrp!kD0W5b^PsG)Vp*r-A?ygyelvpoe)(okehD}FW=Y-H`liK@`O;3ZwbRWEEVX=kh -zMrY~6SF|`$rU$o_iQPzS(?Oq;e4YCLbu*N~+V*EUm&=jw(Jrdr3u7*Jx7a7BMD}3j -z0yT`42G$j*Y%a&ZW$p=ViqO90q*_b0aAsUjuYV9F$J+50&{Z{dLnT=c?Pf{jcb*#J -z>>VF6X}jF~g`YInjGjh$7Sw={k+L@gL6fI{HYEA~>J&ROkod~dyEH9(4PTB>dQC9- -zn-O-Mz9Lk;4Csjc(jEph$tg#;GuoOcBZ_>A?JO44tRjpK3l~8=ZkJ;I_Wcm@opTHE -z(s0KnTFU^(DJA?XfqozfbZS!_U~wmt0Mqs-`*tFvL}y!A)z~roO(`@*@*kS-90H)U -zXVndTLtDDRNKR4MTS^zs#|-Cdy_v%Z>RE1nr61ba9`7fG`!}atfA0;Po~}JSkhKj7 -z4qtTHwv_3P -z^Z_HBU#4SbI=eHxRuHNo!Y76%#(gwu4JnCt{lQ_b9Sk>A)ii{F;0|4b`35r8P)=0k$8q*EH_Rn?H+zJ-mW@%<y>#`0iad(qsQDczm}SXDrzetp5o#31HJF^pwE))|C!xWw{i4|2S~zNLWo-^5o=+)Ys2<4 -z5>x8s&~;H{l^){wh2RKdauE+m4=O=z@bc+rzxIhQCjP%FAOmY}-nN#jh)X2V2e;Zp -zgX(^s9c#^yAi$sN3?E_@aW>{5ea%nPSG4~aEEB~H9#Utfxq}7feCFRKBcAu=Lyaed -zy0duAoL0{SHQixZVBhQ9Eqll6lBgj{Hz;^J4bJ3j_rk>)gE5v^cx#bBMMs=YIH5Uv -zTfr5z=~3rBE*&BufTucimD-hV!}O}VYwRZu!L -zz;X0%Zuz-H47Y^-yy67w23%_2zoJej)SCAVDZ@$g@|g}Xr=zFm)N#c0%$Xu34bqiW -zr4sZ(;ObfJ&lWnN!Wj8}%TDDB{?)1xvr2RzGa?m0xD#dI;G7Glc2dQ;RxpGVm4ffm -z-z0gyvb+TCm7S$haGy47R4~BP;t*!zz)oA2zEXmx>*fE -z!_oto{A3o>xE8`c-GkGfWM=B8oi0Rb5~7(E`PB~T$EP11Yx65tC5-6IJ!t9^UsQA? -z%J7NJi#GS&t^kEdi4j}i*frR#bw9MkO?qbAVHjddY1+W>wI`1#)~y>=Bh=+EMn(jc -z+M%qFQsc0NMzLQ|#YBq@$z+jokIMh<+x4HGpX-!($(r*`zP|uRKz)V>Q48p=_^aRP -zf0>W&C&`BW3kSY_&*eo`2f|++N7QPo_sH$JtW%lykPF^xbwhYY{)uE2L(A{db$J?{ -z^ko|=YgFa0{XYUVWPuR?B2{r^2!iM)vwbi -z?qrb!WwYijJTY~iTx@d|dCumEBP{`CtQ|BoFE|7;Qh)HCKg>aW25SquB4@h+~kR`Hn#_Bs@z)By5vf0c_KkcHFOf}+E_m}LRtSV&Hq{} -z4_uRMhwkhB{{NI+$IHU$XY; -z4>`ArDuWC7{?_O#KO9{4&ZcpiOi|T#6fq|@}_1;i)eA^_95~~uU -zuVjFh=XaZ|E_DoTi0bm9>d!~g$Hnh&X*%a!8b#O=y1cw;Hm$D;Pn92PPMHAGBCbM0lJ?xLZpQZ5X1>AFrG2yd{*2u>cy32AwDb$Qt%IO -zdhCA<K0AcIkP<@foHR@ -zzlPV+O>HBApLCC8oJN1_KM>@&PM(R&1ypJz2%M@a$M_K@NoypyCqZ``)A&xFv6-NA -z{dsO@C-=-Vd7nsDldI#oX<#Hkk%N2Nb7!2HzX6dYzju9Q$=X6!lK-j=^&>5;V~*NGdWX88)v@lO)X*bxzW=%1n?y`e$3_eH5CHQv0x3ce|6C -zL3)UZAnBtb9_w2b-OU7fY=_O=pC{YA3He28x6KmAu4n#+;qhpy=+?8yHh;s29=;dM -zk36yW!?ZFH39A-$d@e!RlKBz)gYivMKGVn3Yi~nkp0Fk1H_k-K)yP;J`(e8&jh(`E -z8zX^JP(O_7#)&iIad2EdpPd(GV}*><<@h+xtMQSf6Z=3gc;JjV8C%O5fsz?7A8xT -zfIw{`SOPn=lg2B|(@?nawX)quxtRBKnMHPMht$o2#Z1sIIAyn@E~)V@bhzx$4U>PJ -z$JD%Cs^y-0)66@Vd7A1eEbx77o4GYITc=rWG)B*w%WpU1dY`ks2UG5c^Ai -zc&Qy@|A4O8PPt%qy&F%JdmX0o(T9E4mZOot<&rfX6F72RWk3kFY -z*!5aGR8Bs-NoC~uuJ7|L)j2h~n=gIWe~eG|!1a7}jK|--XI&EvcnFf#xLhvsoai<& -zkMC=9f0|WIGhOj)X0tBJ<^VMmxpQvZQZAl57JEbctbF5gxuoQ*)_*?cfSIQu%{o+u -zH{3Rmk!T`d{uPBo-lNL=k$G6;Dej(w-5HOjTeyzhw?$^xS0jsZi=n;EeeU(BH*!I@ -z$bK3L|o5s$$U5&Yx+q!Un(TXxjx^O*Rgvx)Oga|zA3L>UAOn{ -z!;pqL4l>S7oO@842)rs8lVmB~@n-yDpNk1o8REPTj8d;(hu)2kc5&l_xCs4$i(J(E -zMZ7sI% -z3`#5FL&4j~r@cu4hY@b-n^P?1VBAiTea{@{8rs$UaDndMrH#+qxibcuVm!q3>CbK9 -zP$TaEpM*sGe78V-$$+WD`#3#7zlk(r<@z$4SH!ltlql-!PnC)VN!_=fJ4d8`=DUps -zmK5z%yOeJcwa^FYnbP3;A#ED!9P>|YBVn^P#>nqUOlzVnRcB0w3zVNIXp#s+$qEL) -zq56)Zssu!v%sCT*7I{{w;nb8jtd{?u!dm;ICGnr4m*pV})e+^5I#z*q)T9-q6AP7+ -z)91T@989{F>YRFEz>eElb`0mJ)UGkH$=)V-AO+=b-*^i*>Mt1|QNBE9t~wfdKx(Ww -zw?=)SvYb^ax1iR(w>K;8ejPFdScBSg0PexM__vK28)pf>(+dU|rGU8$@s8UO$&{_8 -zM=WcNbtfc6l|`HQh9eD&Xp4330_r*xrKNCV+ydYC-N1KTH@G{tYx~yi<~ptu1i}6B -zc-Vn|v*n={sc-u3Bk-~HP?I$}U0L`pYD8_O9r3cSQSrkNAN>!RNsNE2T^q<{D~loI -z$BI!=gen#dKQFB?5neK4VJ>nKk+sC93*1L?b)Pzgc#W<^SVqYd)O>?SR3!cV!(_mi?=ASjm)*QQ8Xm|oRp8$*q`GrN7#AJ -zp;1;Xr;7{&i=f!raZAwPQ4}}NFPxiE5~a_{yP?p-^JHYhVu=L_wXa_9lXn{AB!EY=6;U`4ZhkqMq}K~D%sNbBqLIQj -z?s;QcjD8M$-Dn`c@y@J1Uj0S~KHxC+GjZRLCI(vJs^MDS0cz+m8hy0_tV5GRlC%FYY(IK58 -zB=Jxzfaf&;hX}egfuJRjZFv+5fQac}wC%Qe?~tAY{1OSje-FRwRE(_Xi|@p99*h56 -zj4B)ONjI=}GJ)c*6QP -z&A4v>$cYtMsSzSXTSrtZ+s2{ATj_m?7naA=X!YslcJ>J8s*}-H(K~&5Ya6?@vC#z3 -zM>+ga(L5@vYQGoyD$PX22QG?8sq=RdW50Ako3^)+-i?~yaO-Z(JS2158TIKQx(B{X -zqM)CRW~2efD&$Pb=KQ}E8O`Aoc<8*E3w95#`Wp4f>3iQWp6a&XS}>Zu*0|sKN -z#WnGack9d3 -zMr|x`KF?83O4IE`qEr+yD-=h5dz0c$B%(E%WmuX_-!_Kh^V=Uq^t}BbSuRGU -zW{T|fAwy8aVpUB>9paH5lJbEbVlH&?+S3JsLPh)~#B(Sk!YeyxJNlICd@5s=3q#+X -zV*-)gT=9DWh3e52@SR8Thfh_7*sH9U41BPna4)Zdti3I)`pq}MhU~ggL6=zZ$Zw+r -zu(!XUiVSIGtwSMJ5s4kcQiY`TA*h*@OeDa|BUg$0QSF8elI`x9itjlBaZK`#E-cju -zVe%qm?Ky7Zz4uSo5Df~aj*EkJDA%Fp$9cu|+CRV|R0Hm{%mX-<9RnmL5y73(+N#F# -zjKdW4LKPY%afQ9H?ZXJ8TpMJ&~gV@r`S&6LFw1on^?%5(&snukgfA+E`C|b<(mD -zrnBAz)PU^9*~kmi;KT)HJb*O-05Cyb71n|MuT4}&GL0(Kr?3Fv4PLB-alppRyZ4Jn -zZi|T@*mZXzfpS7f`*wn-QA9hwkT{@mCJ^Toz2)eBnGZmWBBCKcEkKPURYblNL;qXE -zzoUh%emcvjcVmjf_O0T<46=Lp$zHLIKvCo8c$%$fjS$osN@oVxzLt29Us-bp_#c%{ -zWJq>X8lx(jK|g}8LXoxp|H%}#*kKq|hnC&NaiFQWz81>;3uPy`lq!F$Efw2jmy9XZ -zpDX^*p;(>?W+eu0u5w;pVojt$Gi2&Z3^gIxrK1Jbz|Q-(bda;hH(J~SuD8By;xInH -zBzO_rui%A*YAXgQIY%5NNL;2DFrTrS8X@FBn0{4$wSFNnbk2Vv*sEnKcIlJpl52Gm -z-27FwS+w$98;gxC0)4;J&*7@o%A<;~<<~tICk{UagrGsl#gD(bgUSjdd^>Vxr1J>{ -zaDq6gDZfnqR5Z`NN{SD>68ic35T?^N1X_8M63j|eX#!aj>hS!YCvwtGge4{hV!7ip -zSrztD&YJ+v{ag4tiQIzo*4q8uT?}aLEX``zz-Oh38bZ`K85dbzWY4BK$k--{E^UQ5@?a*Ke{6GwKGei-*FMg?f6%d2W -zHDJPykTNPo&F7LqzfULx(VsJ?B<9RZ73A1l>Y-*ikPkJLysAVUVg?qE)cU1kbE6g5Lq)DWMw(N(QTQ)Is7NToadUtq8RL -z6|TwAN?H6@;7rccGun$<>gtssE^tO)d~Fs6>VMHm7Ci-lGgKf}(9!ZW(|P#cPN|@U -zB?ms97H7DDp;ol;TgqOMzzbJ4)47v9JDlh#ir&Ydt`}(_f_5%fA5PVaXp@IlzmW43 -zn4_R90W2gLbvd68%a%aSZBJBKal6&fEY(fhNZu0qa6)4({Vv-8Uyw)mX8uZN+#>7r -zC5E++RpE>5>b)`S`-fEpzS@Pn%t-!f)?^Z>tM#WnkR`nkzH5Z}ZFRQ>}V -zQpL(nAfz9S+=&Q+uT;4k5@}DV>{5C@R9eVh=y9MYoOBr|eUtOXGZ!XVXZj63tah$D -z8n$$Vs;i;^)DCz9s4zs^M;S|~84y4?#zDr&7`cBUX!~#$^#(o>u!45TB)!HGOzCN&3{!pq>-Yw9hq5kU^XjYc$ARZpZ8Zwxb81? -zOMYVEz&BK#2h*8~C-gUf8xzjjQ8v8_t|du{6g&QT0{*^#AmhAI04Ymug`SpfRaq3j -zafR^PHcnK%jP1cxWn!#EW-6}#f4*RUpzW)Y2_syN{jnkYd3wPK@x2K>R96EPNiOnc -zNMN&rt5rC$C5QY@{01{s&os=;YRrm~>|>|1_7>P{zva}NLL!F?)k681{!`Na^UE_p -z%@ZhBQaVr!G>~f20uXlCuh(E=v3%y71l6l=K*Tbs&G1A6(rMaKe%yqDnH|IGaqS~K -z{f!4$BvERJN=k|pJX6TKPE@`7YrOu_BgNQ*#9L{=5cdU3LKBJZA$H!z@-%v6~TPk->S -zeo2WS>yse-GJn`~P -zL;7g;0pdg#X|jH4I*W7TbNGg=WqMM27}hNG!yb|(VAw3)rkl5e=Bd?f)(Tu=ITCly|Qt+A^`=0BX*@(DY*>5P$xn({WgwRt6!cOWueO$;o78^vE2rtNLLDFlA*{T=-J+ -zZ5JIDfpzuP$E`BL_st9Gnck34hT%ebiw~J{e#Mnk>j%pgB2HQV|D=6+kLzy_yktL7i@FPC*3fV%vGDr*O2 -zIIL=~S2dh)MJzlyTv|vh5uA6d*2QNoj-rkp-|6NJHgd5*$DF|at-)Nf-)DJXnAAo5UQ3F4M*cEu?g1N);28B -z4I*?ws-qtZbgoY~AwOgfre@I~70D=0>;X;MC3e3KwO6f>)38JQrb7hVdB+Gw)kTyn -zjkMT(-)fh@b`FoRM&m=XuMp!`kxUJC5L_2GUOvOckw!?t@`*;uwG7FcAe)v)YU5N* -z1lpSU?b9$^IL_O&_TnmsWm^@F5~xP>`SV|+|NUo%ta=z^Y{(~%fqH8hG>BFM62w*N -zdTHFHz28&UK3N5NBRQ;pRYnU6d{tg&F*IN**r2mVmKmPW%*QCXu+-d+`3k~21vN%f+>}+iby&Ab{F7RgZMXuIl*`vT}r{v7lB7U)?i^5cd^!|t1RJ< -z4{H3t4Ckfy{O=u9{mK>liT=7(zd6oE^#I8aZKY8;5PE`A3sNHr%uJsNM!@=I=>*AQ -za9~}~|HqAFh()o*EjxSa28f!KlT`~g-|AN+OYi&*iL`J!0~$HpxLFlM2rD*ZnWKw} -zvm@#R3%tzf>eUZ}OTZo-q@4;_A9pjwHXn5^uh6y0mr0VfR@0aU#31xzIXwI=bAj+b -zjF^W{gRE4pnnKR_DOMa;uDG&Z{dyiJC307cE6YrWD8$Xo_N)=Z#=Jh=W9gnrZZcY|m(JO>*G#qo-k|T7`qsFcnv|OCTt+`?$Z!)kERw(pd{cCXu%}?nLB{|+QKd8cAQ!A7?DY{T4^+}GE!P9O)wo#C1;HgNSi>U? -zdpdgV%EbV8rj-x$ULYJmHH~p;so6`ET+8LPh?TwPs<@OMrYmJZH7Hkgk>39|04NuO -ziS&7E&AYnPF1+S#zz}pi5H&_oQjb2(1GUYH0X!pW?y3roQr;erwR#=u+Ii?b^?ha! -zRs!udQ)H_i-TE;t9{%vE1KR7N$PN3WsJl6iBntFPk*q|(5f<7GadnKXAPg9*hu==+ -z2fY$al5kB`oixVE^%d*!m6`=02<(px{Ep_g$?YBBn#VM^#^9SMnzz5NcFJJR}3M~8TVfm0)Oiq+*$w9)s7K7D3 -z$V{Ltf7iOKqCi9@W)3wjdJF8IEIU&Y%iuDCl3FG>VTt1t_^O=QDKKa^$;X!9{@5jg -z78CeB2-raLcj%H|uxbB@ek3D!o14;|E{TwH?srhL%)rRL+nzE8vXt4~kf1d9X{`a60W@$ls;i?m4G -z9L^jRaTArcoUJ@~ht%0&h;Q-Uynwd2lm#4nJSSxFUcr`hu}soJF^K82h%lfWY-RZh -z(0Iq+USL>Emjv5Ado4NPW?PJ&gu&bzfv_d)##lN7EX_+FK*U{di6z82vgNlc@m0NdN -z-VUk@s~a@|!s<(cL9DjxHZK$3Q*s$Ye&Wn%t*}TqVp8c~R2~92UT$+X5U?UBh|=)C -z#=>Tez`M$~C;g633sYxnF`{8`Wdh9}7JH!E<$2M&TUmtctAI}LniGe_qnu)D6#uqW -zd+JFa>wO9CSkh_-$ApEdrR0>d8&sei@WFY9VwvPwgjp_qi7fP3W2x^aRm28}GH(zD -zYSE*T+PiiO-iHt&WM%U!w$3AO -zsL@hW8aWGPol|-+k*9cK8HYZSrJ9UMGGUCRy%3Q)apsHpX~Au&>kOimK+4X5TPb~n -z2(n5@#~<2Z@fzaV_Qy9~VetpkT%J~a%+&0ybs@yl>7*quzKDBni9sTV_1YY@4+fag -z{>{F$Q;=hXP7iJa*M2UictW~j?mfi%>&6AB-xTze8z#TJchaZM-PhAGTpGH--{Xn`UKyK>lhYnXu+CGa|;+1x80KZstA)eZ+C|L@dLSj)AE5 -zXCMeELTngsZ|g)Chq4yaP&rRjfdq_Pp`dAQ45-Fdd&ev{>laXp_bQ47qh$BWyTU~N -zuerSQ-_YfOWAYQX?QB9LVBnz`m(`o*QKiBwbDc6|PBC4d?*n2_!xs0&M*nu8Bf=PIzV=+`H~V+g7lV_*6?j4xMDEqQh%>E`XozpseNB$>V1$om8MvOQ5lT&X)&e2RKgL1L)VUjz`kAr%U1F196gV4 -zSi`;`g9JSy?pQR(lsVgsNoij2nn7Fe{DWYRR!FU!j&!&*2bR9{Vrz~XG)fV6qqz@m -zAa(%DT)k?&oCqnQh_YAwD}}o!pw$F=>T)Ub(aPi5Mx{;#;Lc{K^ti4T+N*WCvPz%T -zNGEFke+}Hb#`xRw_gc+Yz2SD#M$jT|+k@65dOCDNF3=CTpi&_qu?Ct{y+es!Is@$N -zRE~NMn2LcR!B~@08F(3s<@#8DTB6r!NRr}t&?9JnCiwMN#}bE}N`2s^5~ByA%vq%E -zl3QF)9WI7w=+IgZorgXBfX5o=nLW^O(k{5WcO{A%73YB&G{ux^C)0^pT1UvZrV#gU -zb-*;!W6?B?Yr&^cUoLAtI#3hqVA9QYeLJpoMo-$sMX1=taKmcZ;jYi+dqVVY-|b}CNT*vEA=BNj75(-2vB*{fn0b@gPl -z<}fzCnmai8wYbZiH`{At=@00R{3Ed2_$QFgzIV#MSx+j&=>fS*8SZrO1lg*$iMSf2hr&G27#5yd>;XD*mU9V)K2Ldsy)*Q1MNz -zxMG1e!qC)V&sp9$ew|sp`hDmg91j@&N;RxNaNq{+U$JC?2R*7Q3$}akD_4z|_?9{( -zSq)lzoU5|luDH+cjGq3n1-}mr&02?WCq)#E(zUnccU7hmBkV=u}`tj*p0w%~N{<;eEB7~al<0bCs|;E7OpE2U0q(3RZx -zC6(Pa_CLF(qFh@^KnMyv -z$wNm9XU;_UZ7;cUzv_I<^Gq!>G`&POrO1}4bCU%ex&t31aD1*-+gtF?e7Vf?@Z&X+ -z=S^-=5U^$D9s1d8WY%=B+Y!u_hm|?)$Jz -zD(sKUq35qFKhH}Ae~J6>jM=*s>1S++lw}<_(u8K>V$*TSY{JNKXI1%1|J&O!L2jG| -zP2tsB2d69YB7!2pG5;`hj}}XRxd~D;{l)UJpBw$j+^1+Ci3SB63-D)9_Mu4A4Oqas -z^dB{0D$RCjPYO{4rAcCbyb3U5M`Vrm6PVanC2JynQRJZMfl{OT(YZB1i6KwzR%=aE -zltC)$)INkK@$iG$V_uw!Z#m1v>YHX!CB;P< -zac#YH)4Ufv*+QRGrjF!ewtzv93`@oy2Fv;YiEc4O``BTaj@N)JB -zd;{x2f!@rX`B5KE0eno(=srDa`Rmiy`~!8yZ^b10a?tUDC~0*PtOzXSACK<nr56b(+`6M1NrW+te?LZaX9ILxMycK)1wvWQ1n*x$C)s+ -zF*b#p(%cG82`#`~Ku%Lj`pz{;o< -zG9?ef=S8C0vucZ3lX*Fe#nThaBn@Q~bKtq-d3~+yxuj5aL~cqIXbZ)1j@>Y*{7HB%dUsF&@)9>pFBURv{Su_}a(oRDQI^7y?m*rw -z^CHSYQ?EiEmxB)zGXaEI -z6PRMX)Ylg|EnF2_416M8p(XqIaBg!~hu1`(#X53G@;TgB)Xvb)tvFMYyt%y-ZLr%k@-lP4`J4cp&o4Uiw;jqxCYl{FI> -z(EAEXe5J6q=8_!70BLnpWeBt>)i%ILSNyk?b1x9|LeRxNN`ewx!zvDZU=xp~P}iGq -ze03iD*JF7Rh+$);qvbxOz|bUM6TZnVp3hH|cD1jfVxAPhqouqv5CTJ>H(>~Wo|@FT -zEsWRt(Z_{ncM?wvw!nPg++7W;t}kNvOehYj`tSe9>YBj={~?_P$#7^FfWM774}OH9 -zqyDO|=KB18zx@Np7%csKDxpj$ADxOYdAlXaPAEk=rr;LpSqe*VRcuzrAl$#~cBl2T -zua3M4f$JVOzPI;+{lQM)hcEuYUvGk!y&-@{$*veZ=iGsVEBG?0{0t%p6SS7F&9fA) -z3mb?MI;|f&jRsiuEBNVyB-%$lAe;a+6gd`rm%dW`-dTY_uOiWhsIe;Xtjysl;=01> -zK93#<8Dz$YfEXd{FX06YoFRGOqhDi2x{_+#zWyl -zR^1tmT&7LUIVujcV}gbN!s+QEIMNE0mT1H@0%X^E4Dd$kEhT2&av=^Cyryv%CJ!Z5 -zt?^}5^gdR_8lF}S{JB#3YDC;2fVV~iRz2yOUXX@FBnhFb+o?9ow)p7V%8lCY126z$ -zhtk0yU+d?DEs43cicR#+9dtc&SCLe4S*u}Vj5EoVy`HPhV{Fp9>EB3(kzB(7;-4zA -zYn#ZUpI{CA4Nka%?V8e&J^mx&i0B*2z8*X(V?()X++J}sqI4>ZyB{E?+Eq~L#w6l2==^&Pf6{+=Jtj9MALgB34EAp00rGc1Ia{m57ZKWKsOv)lW-ZYG(?Vt -z95w~z+vpzeZj%8$Mx}gMqe!Aagi8b0A*~6^R{}o0sPba7Rv8_A`ZPA}b>LKQ+Ep!X -z2|CC)tXZ|d2DIBzhm|MbfiPxaC4Eojd7PW=a(!l#i0v`4ZlJ6vBn=IPuo*F)#JI5y -zg$B1T4Pvxu1D -zQXq_eoEIP15ST8lu};>Ml$tThL4w*4Id_9=Os<0m-bR#o36OP}cJJ^)LC_c)Oj)*0 -zgbqHrFl`twrdC7r(KsX8cb*H_VqI~L2#Ii*+AnK#mMghbUOQhV2rl(NT0kTMRT37Y -z&`L{_vt@?BKXrya(%KtD+{mOeMMwH)o!tc^31As@z!Me&x#6>JW+;8C6bmk>th20?ZpCI(nSr>^sak_z-i$(y -zbztz|;?fTq?p5IA_R9P8i8B8RXM(c?v6bb$<#lGElQ}xoLDatnqtjzX7J~k$DzZ^V -zI?p18voAyhB;O3JjQoIQ2qJ2a{xu6S -z2Z|=>mXWRO61UN*q$?JqfxwpK%A{!K)~m>BFh(-bVA1&Ez;d(2ef_lhNs(m0UtT?Z?vWj|i)i}XSmyrnu8~`|mdop}eRpDu&MXSQemQ!w0-u*XSTT^dbpmUULD=-bK7#vixH#==4Db1U<%S -z<_864US}$agH1zioU``u4^+S~qAm;>_A{k{A}UG~c-CTp2%xc)=z_m@{li6ai*?sy -zv~Tdj9_cJ-y4)@m&NRkds4v8Nqtdw%r7^5!kBl_&fJ818UuI*e@aE4Y_;W&q?f{5oqq8s?WcfhzJ= -zv5w5s0a&C>oVjdrm`-`YtfywlCe_N)0R&%N7<7nxR|URo^W3LInCy{J20@nyXXa5m -zYzrzJ6~8k^9JnHa4aDINAJjiZ>LkZPO+!Pm55jcjt1r#77zdPbr-Pe8(tUZsyXK8@ -z1^`8hkq#!QW+n*|1*o&bSPzxw8H++cJUSvfQ$=o3vhxgN5t2pa`85&Vo9W0p97F1VfiYms}5gS8C$LcT? -zqh)9^uIKSV0V_=?g7>N5;~G4}F~~kOgD|aM3XMgq&tOcZE-|yeo%W~LpE3-A@w&^W -z$MykD(bs4BVLsF1O>jK$pYbmRDDp$bndLwHj)Va^s8!2vzJ2=oM_r2`Bi4hzRZ}hc%XJAZdSLcTc#RR -z{kg5NvyC#nkf0C>!h!7J8n|N=5I7F_hD}0+28Qx1hRbnN$u8+uA=`<{a=N73Zg~{dQ4Us(>Mm=(PgzhN}^cf+vs`Js -z*+2jB*V?{4>yKf`Xd%O04Z_t&?Y2`GNoJ)fC$gNWd&?!XX4iV8*Qym6dI`<8Y*F^A -z#vG7`-tP9d;~KwX?bcaUD{~{NiSKOx`ifQH(dFv+{3Hm_&`%vpb`Qe+w)oR+tOp{zZJl$20L5oGKU=LXdi(!u`i&8VYFR11rdwe0bs5!-@bxSN_U&_&e02-*w -zbXF&o@y=II%e2^08?1sp5q5|RF`3)ODFQYUjd#VIjDj+zuzEJKY*=E-?sdQ{$0eGS -zMY?3C!DoFHJthGzfBd!Ja^cwK;R)R%d#X9*%Ph*AM;Xw~7)4MSc;4A~jc~BeotiF2 -zh12=#3P&ET6N^GiW0L$jjn4C@c3)uNJv=>Oh2ULGM(41x%zegv?UV!gN*(SNMy(C@44{bFC)?{U<1M1;g|p -z&=M%B+KEJ|i^_)D7NA<{PF3L@H38qr;XQi@8~Y<;{F)r`gfd9jFGd>Syh9Z^>Bte! -zuhBUE$lJwNZ|@cpX>z|2OcIY -zJ!R??%}2l(hPj>#4OLBsWGt~bPk@2;o5adVde`Icvq6b&%7*>P6hhO$d8sl`1~s;* -zp}zK&8CR1l@I1J5@VIVnW9(BTZJj=(>Tmq_;yd^V>bz5^x2hNmPtot;yszRPSxP$- -zQ5oE05ScR$yD~rVHY%%T8 -zkf-oIHHKjlyoGsCU>Xam^i6nP3uVHhoCy#(7MeyGr9Z@OB5NrK6Do@69YRnCfNNGU -z>IGUtDGHG5eRX7_^BT*}I`$AhXx<`TRdQ3 -zHu6IkvaU>_NO-77`1oc}(l03i)#mWlG_QXa(YaKlL;_L?+IE=O08V6T0 -zwk)&xLoi8@Mey>SQliw4vpNokV~KPart)C4OO9DxD(LJ14T~|-i_sH5i8eDN325F* -z)EHcjF|n&lbgb;7CXMAWjX;^MGu0I~L-|(c1Gl$n^ui^oRbIfh82cN^FQN%y3sDZP -z$x0ctEV-(>DfDF`)ijO3WUgWUJE7w%oocRg>Tcuu4UZmef^PDNECmHB2@ugMF-DMw -zr1#tyS?wemo}I0xWDx!<#=!i@Fc<&+*B^h#E{t2wu}lxfq3|@}zxy~;o|9$1;YPv) -zS^XwMYFrRlpwUq^zugg>=MvO+6F(!SRbi&bb%b4TSS5MU_+dY0=CDxd$ZF-UB -zVvZIQJZHw^VkFy$Qxf#LTKG@1799(2vT8jnt{1KT^ymM%Dyz$Oz1gjIA&ML7Sj0|w -zc&R}H@EmQ0WI!kF4jW9toLYt2BZT|NQpo}Dg!MSjUY^a9if}`iYRS5qK7nV>P$PD< -z!wQ&|Lgm9x_YtW~ivgWmN1#fA=A%>`%VWSq9#`vUg4e~ce;rfG=WU^;2DnnNEHR6j -z{=$oU6HBM>2RT;Y7BE`rJH6`8o*dAAX?4 -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 -zyGfZQDa*1%ePg}B!8J_3*6x4M0b!W@7 -zZ0!bPHhNjJz1{b>>E`9b;hgGwjqO}ChDGg_81rI#x}Qq23|Yw! -z?$J~3{?t=v-NB8|MDk~n7FXO);LEul^P1{z5=T9K1 -zewW*93%g*TnLR-t95_3I234Efi)$CjE{Wdsng8;3S?i5N$l8LT?t`^hw6`oFBXdR1 -z(#o_m8`WnCAo>hEdvGpoG91aARcszCc({4ZF#4C8c(5PY$=m#RVQp>NY-~8WGACSj -zVdoqAYjV~TyB2f`zOK9cj?c@@Za;k%lxoXEtV~oZw($IWTTXj$`}|ygPTG=?PCVdP -z&qt;mh=gvB_bsz_469vH)ub;2ORh$>F_LstuVmv{e`MhqFD&a>SEQ|8ZbrmuTxwEs -zzDVYwE>nn77Ps_^!J{YeCp;uepe&!KU?xt8zPC|G8)h+7ekZxV=B=CMLt89yI$|}J -zOhdafAK;vpe3Kl|CrDDm#cJ{v<1!XoCkN^?@U~V -zQ)|py5F6FZc6)t{vy!UgO`9Y_$3CSQn@70RN5?fmZOe?p8F%jbNVRHvECjr5zu#NM -z=e*svO-0?oxXpZWpU56HF|mjH76Jd#Gd^0z6G^mDTj825^L4IXZ;XKKzaK&0t{P|$ -zn5PhDlS$eI`iXpH+cvICqM_AO3C{b7tNTk -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 -z#`>GnnGd_Egxi^C>LeTwT9$x@+^X?WR5! -zHfwgiUUef9H?<^)bT$vKjC5X4`Y7}%NP2|*4d*|$Rsfd97}COf_D!Cp_GKa{UA1W! -zH0jdXnCp4)9&AWmhZxm{_WopAx?JNlOiCNeUETx3<-P>=y*-6H$Sk1)!R$~>6LaC@!SI8e5I$2(YZT5aoYu@Lf4KfL -z1Sj+t8-3q))@wOv+2?y``yJedzFH^o$D#i)R8Tolr-@-{%GYo+j&w4*O-qTG;E;Tq -z(0<8~B-9S-#m4wq+q9gQo9SK~>xpeyA(!ahvTkhLlDUV^J`Q{Jl;+Ql{EBZNu?LBP -z=v9CI_{IF&}P07XKF{K=sV -z!!@w(E^(EzDQ``Zv(;~G)>F9jve#wPBB^v>OCD4UZyL`N5OvLIrNp|{HVK_^1+aUM -zha{J&pkod>7DGB%jZJopInm~(tyrzw<=lx9IQ?{3=H1lr=hsZ%6=Kg4V_MM`E1;t| -z-GyGB8ERd7ZIIEzv;m$HN);_Qq@XnVg(njOX~pSyZCjh=c6CZuwHi#UwG?K=_?MNI -zMDY>F0kjsC$k}d0F3}_&r9K|y%(HWV5kQHyu8tB1V3`3_(em6H;glQqG!g8&F*y+f -zdDdErmTQ=?Mc~`g(O4mSOw1ami3jp&paC+Lfd*Y1!MAP%Att1>-PpP1)SW`Uk6JG~iH?d=u&h)tDw8*lwRpR9p;L@c^tcgaFvEczN -z0>G>@=&-h{ukBOXK>gIoV7->NjKc=9B|Y)hDjX)gp!#)1XJAIM?(wPqVke3P8w`QFdIz5Uh8d_9c+RDb4bIbtE_h>)>9C!I>0HCzJ>MeDAT5qzxoZbFBW -zES@Ra{5|F|$gM|*8q&@)oB)Y#EDlvin@@DV=i=UE#j3`H6@s!JA{#fMlJu-RC$$U^ -zhA@w+gg|Z`4t#^b;1G!W^t6~&^R9gC*DPkh)TNpSDMAk1DydrGxg>`)9|f3?K_RK= -zgqy`9IhB(Mupq`8`TJ6gh?n*WmrKcQkpU8p`Kl)i9nvAdY`fC4~^`R$j^Xkun>(fi8>~j>FlPbYL~vo -zS!S8=U+H%hF<;6&gze8rK4+3rp4oBK3OpGxw;A;@$-+bS#C-vcbytjKW+PWw14U(4 -z4M;7j7UmtJE~h!8nRNrV!HbaQs#5QiQMlXJuyvh2!#8EN*lksYRhf2%(?l16xOmD^ -zQY)ggwEo=5@ZI;5>QWaltJYR;`<>Z=HZvJcX47!uk^y$DJcJ}_XuBd0j0g~zjGEOj -zo+QP1&Zn?(KB}_bFR|r~gy%DNF+jrn2o0yOON};4A4$UWM;J%-K);ptYE7rWvZ|VW -zX(KOC!xFKoWK&MeLgDlKG2Pz42)26r*>8XQ%WuD1xng?OXpNpBrA4S;yIwn&sLkeF -zsd*RpAj5T@v=|bDxiGIGNmC_sYwc|Ebb*Cjq^~_i&OSveE -zQ1(MP9l;MsTWM!_B%adwc94A9CL)%NyC!u@4JU&bfng^D5g7ph<-$GBFf**oUBU~D -z&a<4?s(mG&!~3?)a5NZVA!;Byc#{@Xek*0VPoW5i@G~Q-uawhvuag>uEt+T|H>W5BQHzMi?qTlTzLx@z{ -ztWR`PfiU&z>iYH79Xt(QTqk><4?D|u-d^srrHXgZY9fdl+c`4+ngn8AVMUVWRke>d -zY)7(B-w^9lw1&QYJXeD5HzcpsM^I@w0ok3-)DWrG6Nd-$CL(6jK9$>YV*s)bR}VVX -zV_MWapmct;dmV84{r=0{yEiX3_uaoLGj3Jd&s8z|wptsRi`EFyKci;jQaMp_WxqqiN7goiAZMoe(8xQqJ5|Hk(nI9VSkr2kIxC -zAH-MXwP;(`FiOobd(!dWSA6y!i34o+olPOXyls=%a4~o1GoA}l>3ob(?`%q -zXpz`hYczk4WjaD>4vWQOGCn-OEyN~#r#l}W`~0!afvTu*ICJE4{%Foxj>&rDUuIs> -zwytFTu}SRb=*T3h(6Zuh4l++*n;(i#H3BVAmf9HetN1HS7_2Tx;znjd77eBy6qm#V(IQbeD6{K6# -z#SA2T52V1rYTeeR<{d*9d5xLKr-nKV!H -zLnC2{Hy#5L#@&)I!SfHCG?bS=(Gp>|%`vS?la5?|#}@kF$@_NZM|uYAh-&uE%ciXu -z2IBnFh~u$pC+FQ>cGmSDd?<@%)-ZOjZNMKxW?URsz^gvkgxX5yy9=)e&&xrU>3MT0 -zn$$Y(jDIUJdgCDI&rbXK#GPh@AX((l)Mgf-_M>MteH3_)XH2?Ev1yyK$!HJ**!JlW -zzWfY;EPGa{9G;K0mrKaJDZHV#L>!{xOXYl^8^6!#oj?11o@~qE+1D+g->$yM^_I>* -zPKWacIo5w3{rCSqJ>#MLmsH*$m7o6I`6Rj`DF*jF4!iIYU%8w=);QYv)Z0P(kDeih -z_*qtJs3)_*kk2?DI@{uyA-TOE_MUqW(Wd?WgL?Ml@O-Q? -zDE$9!5;ODBGl+}Tan8$7>CdX;&p-VWF*P(|^z%{$V^uMXFI1YDTR+6S)cM5LMXXJsMpkb<)^r+i{PVV~*)}bE{88uP -zG0cZC-OX)KF_sVL*NCw -zUM{b`VXjC{<7dE;p%Y^^cKGjSdT)4}`HW{$cJTMB&$06fON0^5?3Ojb7A8K;!C -zDS}E!a^OdvWBjN~e1PyTc8+>JE=z4W!fyZ6T+;#+P<1fDMG<@U3T_4BW<`RDI9;*# -z|76kw=B>Mn#lv^t8-gW3#II+S5WF4@0QO@$wwzH!U*K11jJuwOmJbA-PS+7GoNMc& -z-t=%KV-}Zxf(>G>Q@54s`FokmGb^rR7C?T=q@?CoZZdY8OR+C=zoeiyDqFtXW#*^n -z9p{Vr&C3|t=_gjU<+>+qXRzMe2W4vU3q7HqL(Ae49%^^QZmj9tf_U-BeD$!?f*!^1 -zAW5^xna84E#t3t66FokZU3ZjOPv;rbv1@oUeY!-BaLFeAUw-(v7uSn_cUxsfxfoHZ -zBS$%EtG`QiXP4d(22R?dMv;wPjcJZBG0q&L$o-TJMNhj#=ut!)C|7^N4 -zHNkWnF(BdTrL7VkmAcU%1+)25?eapcm9)c3^QOzsK5ekP+~C|B_yY~IZnmn`X`X2V -z5kb^7m)o4}=e&A(sao&XZE}wY{qyxtf5X3$@bJ0oqlpFx2KmotN!&@J|8;qZMW^HX -z7nD_@L}iAg%{|*kCcc(*s{^rX^|9d>(uRIqQUhr3(i_ZK47U_eh@K^!tLhcUpCnO_V*mz -z=?&+YuBY#Kf0{VE?>z^7dRNsgk>La0gif3KbpL2IWQ}^SX_?-*qk(wH8%J_4y#y$f -z=J&+6$pjUM`Pa2D`nDJr8S7uu1N4972_HRU6)xRQvgTjV -zq2TUE`OQB|{@sf*_b=(@dp(yZTVDx)I}o&HoxecI=6C21y5*y1tegQPj8N0R4%MDM -z^a(cSjHG*d@B8k{(>w1qyYlvv?ef?8s>kgfK&%ITkNN#$ulUf%Hu+)jp`Cxepcy`Y -z|3}YiDEPf;uZVi~qi17-fo1FwRV_LKUdKMofvuQm!^136p;S)DSp;?4Zm+BU%>AIL{qC7PO{&JsDzCXpF`?U()7$^W-{?Wxzn-~OfS0cp)pf3xZHPNddL;%~n!Lp$*Q -zp101~oez?9|LPsl|0ne1qi0FF+@*g3Cm7uKVT_;LNWw|BhE<=BbN*@Fv6*&Q9n(ZA -zMO%FnQ}fDz*TH#~aruA5d&|7cedfg`ljjGY_ntR=^b7(k8->rwc|Sfnr?-FD=uYnc -z=oyFU9NPkk3_idL6yEmeFLq@|&&=rBD&`l@_-B^GH7+O^j9e4_9lQNF_pIR7$Jw2a -z(;LrgGk?76ANq<@edb^H9gMrQ9V?R?^~B8ZWnD0$?XxTV%<{ebaH+@Sl4xa>5AqwJ -zD)MV+_l^10=Lhx0t69mJ2Ov}+KY3+Piidpk -ztgjHd^cQZ9`OP1;HG;c8dd7%Z4F|9cfALy7eaK(3nx;>A3@@+N$|G?Q$xKqChWwDt -z9Nxv$mURQmjj>0Ib<*0VFAGxh$AtGwFvzK{A-o5={h>7|{O_-ecegy^w+|;jW8vaB -z#%wDNt~f^SPJ8rT4;)nC0dVRoTJ}Iv{J3o8ReK|Ndb(8DIi$6c|lxfjS -zZ}P!A?}?ZF1v~MHr+xJ7SIi93Mp%o$C(aX`a2RT7_Uif%Il0(Sfz}5NM1O|>2M+6g -zs?`UZ2roSZz@sM0$>9;4Stu88w^vy4#w#EtfxOJEasONk@jG}tt(TCni`8JVRA#Br -zN%di^&%Sl$Zs6<0dh_y%z26P=;78AXFOm8~+dTUoQKfv-upeSWuJ%;#!%cV3@e0}? -zg>nAB&~QGYd-oRCgx>vYRp-xs$w_yf{SpYpU0-U`g|_KCi(shw40x&o^2HyKE0bBz -zxi^`IR;#7PIvgJtV|2oWX0MHm#ghkQCI0g#j_;O4H3xewZi -zPdTTR+~PxMc5uf>&%XcW?O#iSDo&pgw8CLV!zL$kmgS9stmEKiZiE7OVTJ`a*TRs} -zPVa|w;Wzx>@@+<0XYH{=W-~V)V -zb>ZHz%ZGC45T-Tu!M#8H+lwb}B$i%f3h3KRg3X=c=k_NX=^S+9<>KbWzyB$wA;0iE -z5;xb#kn&;uN8Zbp*sA`6Z-XZR0}ZZATJ8lxML+Br44biG{HrEE8TRLkH}8KdZM4a) -zKl<9Lt>!O$db(zJ`JnV*u8_{?Pggg$^RI|6Ju}TpTFI3fo2);6*x)fpxJH22>CpYi -zoxQ37XsU+~8-cPzdXV-5?;_c$O^HqV({kOvcNdYm_MvQW&->m|tGdjIi5}ArT!nRx -zO*0aQ*ET={NI#^bM3nkG{je7rWX+^f4iMH#g)d$`NX<$!V -z93d=!;jJdI%;_e7>TZi#Bp>`?Zw5i%Vviu-%E<>m{obMNNcKsYo`1k%pxcNbJbV~6 -zB3W1Ma)m&Z5Boq?qi}Q*K%I&YCEz5m(2gm~lVN>&JMa5)V02(~myY!xecyh+|C2;+ -zo^((s{PJUB3FwR#E*zN8jw82WX4f|b;J%Rx!UU3~Y-&cT$!*8sR`nwv;<>{ImUM}m -zwgNgSUqASuszmjTq}VZAid%>{cU!dPsxtc9WYjoiG`_+mI%6aRI&b-ToYIFVf%GI* -z9hARLo_tINaSZJMq@SJ6#TuM0OMezz*$W(LR@K -zA+ux}xa`2|$@LG@Cl87)KgCB>bD(#Qj{E&Dz`+H2x -z&#Wu}99Ay>Nc@Wo6-DW9@PGJ-Oz>o -zv9Ukwoq~#Cejm&a_n|O+nxA_b@k(_dLIRKrtn@fUjHZH&Hh$BZ*zidNVot(`su>}9 -zu2Nx&@#h647s=wrtd<1kFyAe{=w=)i;6|ZC6vLqu+MuEc=@7}?QIDzS?m4oQ -zAW{)B`J7Hncm0{YH{EAGLlDACb0EG_@6Jb>qT-22)0Wf0(4fQRjT!&7k}b6*p+I7% -zespfz>R1B{*kB0KZtwWp1zWr3^wK6>wf#M8lFcjC-Hpo@AT)p=9sqrV(V4`a_K5JL -zne4}=vC+$$wx_MFhsR(~FT3sIfZz0&)^Wd4yEc_6Ox@0=$JXj#e@=oo&9u^I1tSuD -zbivqqL5KTc^YY7@U+yMOoB -zK8oI~U>eIa!SAX7rK#p4*WS9|Th#QbPYO^z{vpX_c#!zIF8f}v`zF`3dO;wS6474- -zmj{0_wEp+laF9=U>)z<;&WF!`{@ph=8F~Z_(I=ukiFKbo`+J>N>%V{Y_aD=LW21>3 -zic3aI`uq1+uAGToKh>K&j@wRYjGTm=*8o*VB)@b?-1wzSO&h#EL>9QYy_1-4#Oa$E -zL}q2Ch48rPD)*Cv_M1`B(GnAXGzxP8Vm{VD>#2`uomyChhrTi&d<@;>el+C?@wX;+={Gs@Di(k#UN=h>aCll9IN8*2&veI*pATe$~BPxFq -zt{=ME(1&r#R%+C@_e!`DWpJJ}P-gi!Rx^Otzeur6M=Nm!<&MW@=n})Am_<+H-ZmAV -zwAh&Vm~n#ebRn!hYZ(Y(hbU0uh*A?)Pxru%-?auVoQRAff&!MCF&iI`>Y=Pk3!*za -za{v6qW}@CEzj%gx3%?LFpz!eh;2WI|@Togz`xnqu!v9{pX?nx6k7v%mR4}!NP(kP+ -z3rpsCM3E2c=F|=Tz3)W#yeZms_EOL1flCo*!80195AXEJvGJax48$AI9Ns*%>Pr1# -z@0IOR_U)5ho{f~{KSIw28j|qRoD-~J#!_cnpmv#DPu}$L5&*=4MM!Jm11BRygbG*H -zg{k`J*>Bq>{w0*Ndh_gOK%}OZKWo>|IJUuL04H`p{~Ud9kS8fo4+bz80A;=?c275X -zTr7-RT#rC7g>wqsv93S%wh^B19TBr88-WjLANy8lv!m`e2H -zJA5y4x4AzyMd{nx%C-xm9z~%v&@k*J2QUXi2uzc -zjW|A|K-R15>SL9C!`V67=C>qn{g=Bh7%tDGTDV}()j#s+9A^G?S-juv#qvVmXv#kQ -zIPA{dU*myH)R7x)b@LZLt^WX9zcKde$s52*ZQ;OAuo&R?aSbHl8<9L -zx+nGOk2uTXX4ifE$xr^Cw%wZc!0-C%?|C|NO~MjIYmsi@W(Qv@n(SL -zRW@AxQwQy)~T2RfLjJww7?ZkT`#rqc*o=k{_lVi1=fzgMdtZ?k`&C(*}gbrKmg -zZPQ8`Hl`?N8@QLa6f{?78xjREQQH@vbwWokG&@T$4eam-+<|H4ZSX-ivBU8P-2wW2 -z{sys=`>DG4$<$D1+Y<++vrUoFS?B6VZgfC$j|FP;(sZ?TQ_?|q|3qir -z4|;KS3+G6%-Jq{f00zG*~WEu=eRTfDC*D0AAkHTSNaGJ -z{}=YhmHn}@kjpFX%}Vkk42J>tSudh<0L~L&$xT^o+-i9=n8-7@Z8m;wj?mu9iO#s@ -zGu-V^lQVXkoiz@ynIH2Z-!{fd -zR4}fj@dX}Xm>ZC~^Mc`Ovt-0C@eL1V>(B1%He;{$)&M%|!yEn>>EsNu^Q!X$L|h4ffvUS?HBk>$$rQRYWjq&9xC4aSOVEG386-3Mcfg+b=)BDEpI#$CJG>MO@?T;N1I|rkA$Q1V8n8fG=O0X~p+iupeTuvD}Ou{j`+z -zvBBP?@w4M{8De!7I@ym+Y!6>+`sATWB@I}RJwRYi*@AEKeKn<+O~p2s1Q$XS(lg{D -z%;;sVAC|k~DG>jG{S5@ATA*120Mfycq`D{nL -zFzaw#oAA-cDOO5gvpC%+fARj{j5b8`GO-Q^yXABo4^O?u{@Z -z#Hl&>{BH4azcgMf4U^2q8P{czhiL%+8td7#Ew?$5G`LZmU(j~hUtZmCHQ=Owved;= -zi)9J?9Ba8~*&wtlJK}?jk-O%OP`5DW3-ZkJW4k6pL8s#*a(FQPp?B=dMlzew2m`j7 -zD98S>)Q?C3%h^=Y^<%r+NJ16(-R1koy88K_mY@FYPgjq>c>KHh>J66HgyeeSYLSi4 -zBnTPiOX9uh+k7sADLFAZJxy2s8ua9pkRW2&b8f8d6=HD;#r(%lf4Dk(w!K+2^fb4y#i>|)~@bCx4{(nDtQ -z_UlZJA}4=|yJ|)wgYi$=#-7mZj*6VhTJ?2FYo%Sf)LMPJR9ULv7BulTt;#L@Cnr9h -z*2hOnGWvY{QTK_7*Je3nHaq2c7ft6$L5s1`V=|NjZ0qdYG4r4e$=^*=EtR`34Sk=o->5LmT~4^ -zxi&x6JtzZb>}9GUzY7&0t2_yoU>&Re59r;62+{w?dZzzBye9OA4Ex`p4}0!Fi(GPl -z`-wido1W^@BTf~Gd)FB!*S>4i)<7dP2@0NX`R>Eva8>-_UkGI11eJmms*)~`&sJpX3+2t(@=j$5DqbgTn@FeEl|dd3%1naLpd?7m`DD8ia%I;^ -znoyPKwsIqf{4DV|~bw$E6LIMKUra#(K*r45_~-PO0Sk`yIzdkrmw -zAT2PH>saRppDE}h+da2IqNB$3i`ehuopzO3o_A}S!O4ezYHOi)1EYitY}~+Pv_{Z= -z-(+K!n+&zw8hSQv_3<>_Ej$RSl1@Da$|PPnF{UB*(Cd-R(Adb6?bW<&xP75+lb1KI -zZ(o=NqZ(DwXA@`G+o1nR2(W67$%y>q0{*~3)A_;Pd(@IQ@#dPbW<3)9!OEQG -z7nfl=Q%wU5{f -zDrem*isEp@=u2%bdL)@`2kM&id0=QLDFh|JE7SC(3;;n1ZQwKIY{cfXh%4JBl| -z<{H; -z9wMo7mn~;y^WBi?? -zzPo#Q_c~E8uCHIqprkC)mN^F0lfj|0({;9i@Hv?^2U -z!9A}@Rw&BXWs_s)gcHOy<>BZW6P2mxgD@D94tCg#wV~}K{{Tjfzbxy~XYoy>bx7~# -zM;(c-)EzWDt}9eDG%73tlkHLm=__*yDP6o6{R6J*d~fyy=Yu3sO!iF**GH71(YBpYo0*Tr*?h2HW0QSgOZ_$iI!+#TfzRhvgb$yc%ZFJ7Ol1h#hwz9FC}`0# -z>#Nvq^k*p`#-h8gJG+QBw{FcU_59WIT$xP6n+z3fW5xM2)cjeS94_*GBS*tZtq#da -z@ssOB7!fwN^9rPO1E&{x<*bgz`KrnHv7z*FHr8FNYq~PWzYB`E`p4tHRNw#Mmv8Tq -zcK3R;;LPj7>^ -zO&YD3W8xuc2cEvnDwJuNJ-<$pEW3I2@|Au2FdX$D(Y|Ns-sYVwF!u-?7brh=O$%ln -zqhwf8TuMT#ELT-PO;6s+>%=;9U+H07udi&e1}&cs#l1n;f4YeSxjMUElC6k{xJu%$62!L8z+-}fLPUK7(5=MFC3EV+n2BIUcA0r -z+tCRSAJ5ccylJ`f&A~=OIz?1nsS=mlvdMUIPdJ)wTX*fltzB&ch6=%K{PbF7v?Z3R -zQZ(m{9)n;g7B5=na!K&7>Eymk$Ag`7PdXspic^SZ3oYconJiOp&F>6^K -zkwdGaecDb2oM<&GK;bUfvSdNT`A7@LNYEJQH!oihrFmgC9X*3?hR7vYl+N{t_eb#P -zt~&5i%gVwo4nEx6F_Vk~R?n5GfWEKKueP_^aqoP)$#C6`ooz{ER6loHGO@+?B7P}i -z -z$)DMJon_hD9PWKizb)S+>};Uxc=BwcF@jaM&+l%4^5XGy=+w`#Zi5C+poWV58=Cu8 -z-gF4N*Sn5`CgJ>dbKH-4HXhE+0M5_5=W>=BJhdmfJnF2~qhSC2ikJCYzZS9MV6bjV -zD5qlLXNcpG=ngKKs{i -z-rZmSdc=zl#OUw{vVc$Huq9UYo@?N3!+8?mzz=GU!b5m``73#gJZexzyz)}skyu={ -zq~5g^I&Y7(Kok5_UYjQs#wNEyRT_45Jq*l)9j#P(?CAf8o!LGQ>fzzYDlh3Gt>3HR -zHeauwXK!xRtw{&_kl4E)I{tu%@qvh0uY>?3pU%BE*kk*gn-?Rw0DnfDYFduJd_;Uy -z{>WZH*iDk^hP`VzmpN>t?3)889dir(bZS^v^PX*{kMIMs236rr=!8Hhh{9%~|1xzH -zV3SAdqsU$0U*Zj`AM5H-FgpO#^mFvtBO>e!NQ={ZKRQjXG5w+p&d~V*(jiHss=gk@ -zytpx1DE!PGT6q$ru^PG8A&SAaN!_;ker6vZsZM|^e0hK{bsfK9kg2=HzyE0&7Ti+7 -z$|(c`rs<<+Ka+IsKR@*?T7IneF!nE3KVa^k1Z_RHBG^cPID;m)5LS&MzE~zBDT`73 -zo)TiE+pHAj5UbRTp8RpGh+^o0^DnH&cg8%u7Pe-xj&ij-#!`(~e`fpUOGhLM8a3%3 -zkVDUSnN5}wAUT&mgLCTr -z;qhJ{9&fr0{aruaKhU50@g9DD7m>*=Jds}~RqJ%96Z=bGF?mcfE#A=Lb~MqRKf(x5 -z=N23&)X75YXmB|uYe{vgf{K%=)LI84H&IkQ+9iVDTUc3Kui+8GZWB^X;++=nOhh~Q -zg~^gxSB?Iv1Q%#8OklsS-ES-+#|dvqWQ#a}${6k*bxmTPd;xt`1y>Z#dM*Y1>$Y(O -z%rjmSu83HZX4?uCbX)*V>MTd>-C!@<#x6Ll7;AdKh0u0)A|f}bY?ss1&Qw@pMXO20 -z>mUB@=9(ze)!)qx0D)2&xe(Pc$@79oLBNK4)#wVISZA`|nMa)5v==cj5W4P9km@Hl -zJ(VBeV*5)e0M6YIfOtJS590Ozu+9C$opxq%NZgZ|o7j(klZ@oYG?F${Z!F@LV0Zof$S#oH1-%j2ZDnqGq`YLq% -zUg^5D*8QvZjq3qBG3irM4xZ>v2rZ{Vz2uSn@zQ!EfBMOP{VzZLhaXNJyw2;KxMB08 -zvNN8JIrZmHAL!mV=_4~37HRuKVmiWjj=4L$i2Tee5-p7{{Lf*7&{=>J_1UJ(0BFKy -zkxMsy^Z@~dh=+7LSn$o3y8Y=-fBM-M5ecX|6O1DiWZCDc7kyAf#0$07lE>9L(m8Ml -zm%34%IKQKOO(!QnSiYc}^1?Qk=X_D_A|ob}JXqumYmw1+mIACu4L|>U_5JFL)lIZ5 -z@9F=RsY2oRUw_|r-}Rm84sBH8@(cA)in0++EJA_0)!FXZ|Me^@C;$Gj%>MkzPpEAd -z|KtaJPn`vKQWw5aP5%5kg2~ARs*o6r2D`Vv{qn2d9ZDS$FIo+o%D?uDufM%ntu(PY -z(Xb~D2KlONRj%o>qmD<2p(2vP(0Nqz6q!u&#c>^F3aI64A`1zOWHhtX_&XZjMD<@2aV?uN -zD(h78S8~;me?{WocVkB@p8CI``55~$w=3ZL&wurgtFOx}tMc2`-Sze1_Qmy+tz4s? -z!!}aXwq5*|*i{CljPl%J$Wqxi$DGiLVq}2Y&7sP!BY_RYvRQN_AE_qW7%Sld -zb3)gdagSfX%dF4WIW*e2d&EsNyN^q6quj)!_w1=fYi~Jjx#})bnNd+p`~xK^t;nPcIH+iq^d^dEu`Tyy -zQc4*1vUyl^v}1<86}aSup!FFQiPj$YWJ%~?PxpA*B+fbt6KF%*%0Bn -zd2<`zynG$s(EpX-OSu7^OkH$W+>TxKynFX@JFe5`wXiaaH%4F2-vBxwib6B>J-s&; -z#Bc>-zAW=angedFGhq~qv{z*z!sWWmGZXZ-$i{Sw|0GaIg2NF=^n?cMLm1;{pZ&gvp>#jVARJ*8$gcsO?)l_0q3%;xartXHe7s;!OcVqeR -z+#Kc$lE>*!-8KTYj7PKU1FhLCW>Duc=Rwtxm+qvXIw={VUeS<>I&Ha@QZWbStCYc_ -zqp=aZ(uTSc*0UOA2KKi|i0v)f-BOJ~Q&<)mPdgP4xy7;Fwoa=XG?YhnThkw*(keR~ -zKv|Pf1fJ!C;?jpREgz_`X87>Nh>IvLVgO{&GseDe2egTE1wknaR~Dq5FKRv&e{c4MGdcXuzNb#FDD*%cvsUvGwrJCQ`l!ApaVT>%6i!0K6zOHRU+}U7(Jl2R-Q;U| -zj{$7Jr@b==k2eVhUTSf=)wX -zd8eaM~6Rp?Qa7#41AYMq9Pd^~qDQKBAm6@Od+etH#nJ4x=b>MA6P{h@IH-&wLzo -zx~UMZNS8T)>J@$woh#)BtsD8(mlkk)e_M%cLnrX%qX+?<&Bwp7O!WYI#0bxCz?)yPQ9cd6}_VSC%GKIk0XdbkG&j -zENg$^e$mRLgJ2t^bXbVae?iPkfi9YcM4tSGF8$AAuhP*E6Ze%qkXW#aP9NgP*Q5J- -zjM_04IfLdGNi~q?)1;p9RG3~}S_FJs(h;wQTra-m_-<@V!y?f@v{kpEfp3Q6Nm2^D -zo20I{IBq}t{#Oxzs{!_&+h7Xf!58ZrdyR#=Y4^mW<-mp@U -zt`qFx+N7324f-VAvyvh6-13{G(THTHG;f>fO)Y(u#wLvTkPr(N?eDPSg_X4B#7$*1Rzz@wHuOiKBP;~jHE#0%L>wUJVPiZPH>ykIBdWSRN5W6X)}-@ezy4bd@+sN*%yNoMW;@8 -z2w!kIFr#2(h>9Pgv>VIJwV^#*<;0m3kTx1xLxZov3ZZ+KqB)3%gk-NMfq!stKKQ0~ -zBWH)3xVwRRXc(Da6lu}6vQb0PUf;V1j8qtNx`k*UexdP0I8@iytFMV;UVZ=1U#;X) -zCy}gq|8Oo(yUp7+JFdFscRHt2?kj%a`KFT_=2KApEci5FJu1KWT-jU0MN5Q_?@0|44;?@44x4GQ@0#2lECM6G -zf*BybxsFPmZ&itT7anAC=e+q1tn$@` -zC-%tw1@i*ZTR4qDc<1Yg*{oDq$26)BN|>={ejh2JpyYD8$&5I2u0E}yKfj@K7fSC} -zx33{bZStxEe*2!tVC!}?FMkK9>;AJI$oZVT|tmH6-#T5$f{l+-gq1M}-Vcq)z -zy4c^BS&2W6GuUGcr;!QAYO)NjnW$cA@g(6C@ktiPs;ecpfB{F*rJykV7MjE@=Y -z_pVzy8DkPZalA+H6@b9xg?Wihw!#`6DKzX=StxfqR~xi$I{w>etC3g*633*;p1%o7 -z`onR0xA`bFbVED#lPaU&*HO3Wl4Me4#kh%thAGiYPV@p#YhI|PkWPPHjAfS33paG< -zUiJC(>EUBHd!n0_o-{B60;HKTHK8uPQnVi~f)N!XEliflt@}XE8*($DAe8NQYl#ZxVu^5l#-4~jOuF7a(-z23Ky9%}(5rKcm2e&Bb%BpBq -zMi5@-9E+H(?nzLdZyLUA`z@`Hhv0lG^7=cgx)2FV1YTdgK`&{iQZI_IoY)<6q(Ze8 -zbL@0OzjP!D1M}>8SVGpB`>+Cv -zZ<>n>6}Pl7X=xn6ZP}WwtY?VJP~M9!+)QJoA{fwFI(KTZqB^RmOC>UAUv6E`+hV21 -zx`tYssO0MQ`u2uKUiDtJ33wzZJ6Rdmw4#Z(k7XCihz+p!UF9B%((9XOa<8kni-_l- -z-LULOSGL01U9khus+LSfhNZoAN+|Pv(!Op1Ku0nGJ1euJj;m+pnHU!@XB%kQaxlEq -z#0+!ap#|8<^(xDE(2GQ@RcK5mT>Fp?-ixa*f4TbhAHQ3@{oNP8{^j?px1as?i>PR; -zj1MRln{-+2I74vi`qUk0s+eDjk|aff?ab1r0(6Y1DzpH^s2OFLtJ~2z?egB-L`10- -zem;i_j%~!xC9+yotg*0z-Pe7!f&v_86YmMB*gzS`il(AsUCvH(Ls -zyuV7S|KI=JY=80t?*%%xx={=?@8F=t4jS1{R_ -zbZc_3m_*Nb)SNh=K&m` -zv&b^zMC1dZ(`nmwlirvq)@rzYKB=&Jrxvme9X#+?B!Sf+BBB{AUNA-G*~T9i_(_LU -zaf}+ZJ9pbI|AF00u -z_k(=Pb?Xjy&~avdsBEO(pL)HN%{^y@a_WO^-z2UMnp(q*wVIZI{j^Shr4YNgGL==@ -zWo!3HR|}uv&xnVIet6{Uf^YkFoB!k3!)^1+PNVXz_bEC5j^HVwJ1i$Y`{BZbn3YI_ -zBVGfdh!m?%j9X~9fZj89><=hphx$}ML~`_Zo-u=UeT7}wUZ@kF@-%O!C;3)Y?EToX -z!|;YCuj)3|ix2fVp7i}D{|cSe|JX#^UC%}&+h7MD33w}AbTOR -z%lf3xRznsQoi;Wy^DKCLsh*fPCWZQ*c&5hb4^azGs|X6^)|n(wOniN=R&c;!&sL(S -zYZ{u4b>u-a1qEVPhDCB@F%RMRg`|8~lt8#BQ<66qTj*L;Vh#1ej?g(QTFZqaap?%J -zIdk#=Ef}6lUR5TpLBXrRUySQ@UO~Y;DUW&9sIy}rci1YB7r^7Tw7Y52@}?;#Lqu(; -zi&5Vm=_El`Xs#8xw+h$+MQj{vt;++@(2d4&Omc5?U8Ki^m>F7{yr7A;b>(_JnMyN91^T5e^S435Mp}{L -zX1=&r2jjj$qa!)a3-;NYT+>U#>w0JO%gEz9#Ql*uTx@HO*p$@9Du=c+gJsoV -z@wi1OL~+-q^=WYoQXB0c6As5S)lC~CZV7&c3MqXd1$5gV^l6Km%T>1*Toi&PD>yQ+)J#IT^)3+dui&%^23^f=3A4+#ZDX_uXS=^z -zmxr8HRA;7l*3^C}``E<@NQPNbU_Dp~MEKQZwVjr)Xs_v;ncJt-8^569smc@o*Ra;O -zjnao^ZP!)7qN6sDGtS-Xh1y_4jD3~j!0@AjH`hm(&|ulv(S_)FD-%Wo5&GS;XbNr- -z9&n&xI7IBcu)T1@83_}oW2zNQE@w+`&llfC`*x3W-Mka>1|$~tE7Q^bPAu~}s1D)) -zPV~5_|EBGJ*ZIT0$+1Y>JIltz;jm&yM)RcO%-=|(Kz#)A|K3IGHZ -zv4G9Q8MRIj9T9P^dsmicD>{(O?4GX!(Jc_uVRC>3P+SSWL@ -z4$9aqo#agGp1!(yDc6QPu5KfC0wXrt^7zGA55}Q?G1vHC@Ug{PyAi3qn`H+-*_y_H -zHs3}KM0FT9S5}6v{ap3@88f0&kE`2&(x{bLg-W8ELENPO -z2{zVTt$TV*qjs_0*BrRpB-2PxcRg`Gt&hw5v9a46Tf_}9Y%y>yVINS`tlDOkAIiZ* -zNDDSU60-jk!rBNUYtDL`K_zb2bIL0|V?fSnJYj;B$#0rfmE2q?zr9d?ccJ{bRc#|i -zVc5{hQG4&QPREz^LL-(-HllH`GA-I#uOuuWNb0qiWS&ARV~pGEy<*Ccq!^GUbo?a! -zwET0iT|*J4bLdHp$sBA~-a+-&431CgtW_AkDLaxhggVO-vX#L~2Z`}U6C-XDJ+m2DwtGRqoqBh;SQJ@#8u*{;-Xopnw1m9a8Ef8}ST&0y(@69g}Cz$6S+;Jb70BHXob-Y^~J -zzJghKSdN-2yLKEnL~l7%QZRNfvghH^q<4?E-I>mE$*by{pG;xbI -z-_v%)g+%Yh5@1A*m_n5!Zoi-W#8{(#As80_jfi@@;rQ%dJiC2!-5vhhGb88y0vA8| -zAxgXvyn}xRhxzR)QGGLLdZcK?3B_Sr&=A01*p}`KH8dos?)0E$%cO -zE6(3xzm(eqlnb^hiF|VxR -z%C*j>@pP-_FJBY06M;J;nvGpu0Ya*W_mK9an%lA>#3+L3B=+Z?R6`LzcCisBi89bE -zvSeIKFj@F0SRrs~k4+gqCDKQt>a3fc}{i_ZO^Xs{Fd8!#=y8@SsNA -z0Kv*=4D52HLJl|#f==mWecRU1*_JMx$F)=y?R(^kZ0jWN3(<iJ -zL?&|0uQz?WTGM|=jyyZ9y`$P2Q>(Y}L=fp{m7FPCTWjhwk(7 -zz+^jKTcxM8vC*GvMi*?-JPsYi&;Z;zb%&)Yl8gJ+Z(gb;I?oaEqFe%p?<(~MVsJE% -zV57QsqoTuRS2pb#6CacF6;Z2QevHOutr+`;DtgPk3pF7=2#OB1b4C=vRI9_8$ee|! -zP9AdQtVIaaDThHP%Y5WZVuo$}5q4^zDKJ;a*$(uB*t&ole`b0R?fc`PQaftIQLD^F -z#%3hmrX{hYumHFgY1!qpZY!EwqTX)TvG*A~*o7wGk}5h9b7{HFDxm2-Q-p>$G-F4z -zAFNZGSiWeH=QU!@h{DoAO!C`0b*upK^hvw5qYxa0#Er$49cfbQogk!9IJH@<=9;$qI56kQO#55`xIp&NA#_ENqw41Nj^t+-XDGX!SiTtE -zOB~3L^xCXo3R|QcfdigZ4S=99NGxWxa1%C^pAT{KzJDAfC1&`7Hu#`GVasW6MCVED -z_&C5OJF6oGpM4LFZ%={2s_2*=b1mYi)N}0g>h-B|(o{n` -z>3o-r#3EG^2NUWexg28ZW&c@jLVdEzv%iK9FPS%^SH^7)P*c{Hu -z5?*mI+s2YbAz}<^lOQ;##!M87nJ9Z>T@vx_Qe&~=5{aja5~2wYwpo)IKjv(gVUk49 -zOB-wHk~3(7quy)Nu_q)r*Cmn_W~Xo0Yq*|E^h{5j>rvD0xjQ9PsT)G)K)oRdpM&go2>PctS;`dPU17It~^V -z92H%SZxKfW5|}prQ~Ox7Ge%<)8zN|Lg!gN}Wzk84<*^NSk~R^0@L7OqI)C-bReiyJ -z9$%Csn}}tRh-UA`f3PBtSo-qBd1m!Py}Eh%;&n7DLj>9C`SY6~#!?e|K%)xQG|yre -zaY?j$>N&0xR-Vu*-UC;!-2>%OmXA(XI93g#WU0d0Cah$7ssZfJb&caHyVMR6*z8?X -z9hVua@8RrwRGZe7XDa^ci*MhaExbJ`{ra=-zDK+fd{>l939;}2ZQ{9H^s25!N4wan -zdX&=Y*c%VMMZY=L0-b4~hmA4#SSQ}Z0L5*90Rxp~<@NT+DqsUEus@NWzH_wD3T~`c -zZAqBXO@6fazP=u(kuZiUMA-xgwZA2Z5JvWaK>o2oayQX>*oB=n -z$V{qku -zK9>AQ-?l02yhy@nn`}!ubyb}dKI$1|mc7eVfJ8w2{uyzPN{z5QF(oY?auN;%rt`mP7@tc2XW9sR1K?g-E;7WrgH#D*zSIgWsK$2 -zJ5>X76Uda_-*$=ADeH3C=UmxduDOLerU1iDw3yal={B|1jlzZ(v#o4UK&0aW;}J#^ -zzLA0l<04j#3ylOBv^8_+l6wvmvsqZ@b!G37Yj&(EQx)yxrOtg1Vup=ARepzIHVZtZ -z2gI-V$?R#A%K=nu_BkZotLDCS9J|wx88(_`g-`5uEfI3FW|O0~86*Z*%b9G?iYI2- -zPjgZ}5CzG*K*6g?e%*qGR!ux?;89K|xss3a(Mr^+aH_~zq!Ao&hOvuX7A>c8OIrwr -zS$=RWX)_*;AMWR$AD)K_byI0ct8!krQV|-eFZ*t@xA!fS&mP&y_?0Y#lAZa3tesLmY8B(OPWmPt4talR&!PuxR-fq~F#2Q5>8;j*R| -zZ9ra$Er>%09bW~_3$@kJ&a!KQgt;R2{JelR;L{vNyA5p$1dpoX%WKK#|$r(1xc<%4VaGCGchvO=#beZ%Gu+Kg=nJ40AUQo3r|iKjOW -zUrdyM^&m+U0;i&~QW0^^aR8M&R0&b7b6!D1qjt(vnH&?sY7I?YThc+S6^U&PZEfWh -z=R^BN%l_oO)?R5mv}J@?^YY*da6ybi$gZd~9nD$D;{;-wAB_tHawCR%7Kn%edQ`e8 -zyJbEuK--I)CPYeU$fssuu}-;=SB9qa<|=pz6sjTtXnq&Jo*1D{nT1IksRvHc$Z6Gy -zX6!YUv7@z3mVOFpwb+itl3G|Ocs&}QzXh?p#={uF;KJfs$=4O_hqY~jO+qVXVyV+z -z2_)kg;f88Bv619?f`F&=v@Vc_$~9sdV*0ck$P!JwM#lToJDd+?$x{u$!eQDBv3^57 -z@tWWYhx)ePv|xB?()*x3a6Hk_8n(yMb>bpwwp|@7!SOq@In$V?0!03%JU( -zI~FyaWe4S=7%Cet1##&JtIj#aB5FmgSi%OEI~}uB2;Vp$bSZru)EHUtz2M5Yy&Y}v -zmpk|s`Ayk&H`kF^X&yWq%*Cm3pM%sE=s~FNvrIJbnQA(?_ISe98UTIoUuO(D#87FE -zj$q&Y)yxxL&<@U_e^XRwGIKUOSOy -zB-ADb_T&KFLJ(OABLZzWjGUa)V57?62(7>I=sgpT*{Ckm^vb(=^Yk?7GIGk+G)?~m -zn@TN&wzJ1zBq~H&k`9MO+VuH$#?g^v0cU$Ud49UD4`2m}wz&gk5kNijIlS@e3tCXo -zcHEM{wrztwP7*{3dqs3c#mjZ#v=0vu>`u3Nf-^L^w(V-s&o`BrKrnhj>JX}gokCMIxwok}0?Yd@F*2SeN27pRI -zW3Bdkk38HbMZ{C7rW79=cHG*lay^;^0Zc<<1H#R92Dv)cz!@K#%pgtYoXUIFNZeD| -zT@-88AD`T)fxXyeX3isQ2?luHlwqC`S{~4stn#`Wjw?7Qv%P6dhH|JJr~;!0tYq^< -z_1G6GW_yo)NV578eYrX7a%81+OVan-{@t`{MKb>y=~K7~%={0T3LKZ|um%#=Sle6Uh-gA2c@=R1tV(!_c#te)Zma4G2=)7Vm3Aa+v>7;R&d_T{!(7I!9yRU?Fw&R^I%!g6G8Z@JYQXfbq03Ce -z;&kkES9xwg{7#c{Fv;_5+b)Gmg#-rB@J3df4QM{oMLAG#j`?VMAzl`hC?@H0$hTgU -z@%I?Hh&`L~;yBBmV%ptBv|J!d;M|?W;$e{wlagTw{EHR?7GGr^ig+0z>1#Sc+PjBQL4`Y9frw)H;wlZLi$ZVtoM2Ls>z^{qf(`B0S<>8Pb -zdR_DGBjUqO6S}5Bkein=WQXQYzqq+wewKX)KXVR99rhB+>XR~^O_88BP{-sVj$67t8qD6=qBN9@F)5Ff*^ -z#_kpk_tS@^fli@buL*;M3`2Jrw!a)o#{7egjhG-R%tl{*$bRrv|gy9*R -zXH45gYO@dHM&BAQmWcLuk+)X*U3xSss5Q1X?25LukhUCx*IFID=}1|82j{t5ta4s| -zwG{WJuT>8pSQ3ASl2|ii16o2>^e>}jZbb$?QiaW_r-7C -zvZoeWoE;dh$w7EHLV&z7k8_U6U1h;=FW#)t&R+0LTAGtX1A -zH@;DiZs)EhK~Cx*4<8pYVo(F&xMCcgk3adze^uF+*(XFopmwWN;@aAGC#i+IM4=Zf -zwmp&plSG-0y^DND6XYi0WjOaJp-PtQscR)2OK$HepYnjgPHpjxzCYx53RL{Q3=9EF -zbsMqyf(Wg0r-%Zy9%t4W%EGcpOZBEWuBzdj;Js9 -z5~%6uYW0x!$Ulk%9O+h2(&QAO@gg$W_cTv2(k2hSD@g?`c<7V#9DW;>aeW;RH!rW_ -zjQ;uYmPl!q;hSmbRN -zmDX))+{J9qaozwrWOTj}DDl3dxN@nZ@WR670Sy95R -z(?s9A0oI9!eOqu`TUHj@UvWf}TyA1z9PP|?p0vjz$Rm_)%0_KQgGd9!5ThR8%cik^ -z0c%>q2i*eZ%s^$SphiHS^xAp|u$W}4J#ddH5zNyp-z`k=l=1iC=}NmXF?!ZT3a9bh -zz~iKSi@>kWU+j%n>4I4HUr%cZ -zvX@)jJa`yo`M`l!OPeNdT0{caya=6{7R{biHq&d8v$8HomYIfrl_-bf*u5)o{8`KW05M&m`{>={BAtF{rqVK-+f##L{ffQCMtK3psw}+Q@+tcr0N72;;V1};!8xC}jb;^gm -zw^v0-Y!_ipMmSbg07^(@E -zD%Q82yRU{AW%+Ef*kxAa%#(~6W1mqv&YO|WBT7i&s2E!=r?A}1|Z-9e^ -zO9q;;aJyVESm|}ah8&Z`R<5B&Fc`a`xBo&|Jf4txE4CCt1IrS#NEk_rRlRP#*GP+E -z9)WByh*#3SdEe$iQ>^3r)^0GlhGYOz!=Pj7(TJbHW#8Id!ZTblpTban8uJfbJhbjZ -zy2kEdT43B29{ry0@YeCVe`nsSO{Sc&Ahy}6ZR#V34H-m1kWxm7$o+<`kL!}N;dW+K -zQbBuo?SH!5*!9tcJj#Pu%gsY@G@){)T~AC~f<&Le=~5rr9e{r~^qfS#fpNFpfxGOs -z3u5tV>&^ut>9=iQCYj;5AzqmQ5ODN+pf{u9<=+r5%qC~fEwG7mLEvz3VDVI5bCf;Y -z9PKJ@jzikoUq9lcuz)lmbKYhEj4_>ZXffr~+!D*AqA;x-M*@PrVt| -zSTAx>)?JmG5L$NOSWSsUmm^9)lkU8WivpDOi -zEgP04{`N>(YEKX>>~-aT`VYlKx&6eL-^2-b=88JrxhLRc+m{Y3vF#jFOx&timP3XC -z=RFA+%r!K*W8siN#mM?R8eF0;Kl5+`c&X#t#Z3wL#cJ=s?2* -z7xZOqK|*mkdiOjB7>NLG;X3)oZ7#8UcF1r+v#I*pT4)!XK%)kheX0xxi6X`+oHQcF -zBe%ysAPvU`G3&WKNvO!PtfmcZk#y{j!AJS?X2F(unu^@RoWWDSFRY-$`2cqQxD;N< -zAf+3|sM`>;AUudE8r(3`Wc%%fj8wP?-4pj>0+VmBWs)5ttqgE27xng;$a}Nj9LqZC -zEken#*%@XN&v!pGQu_i1WlZfS^PpJUC$Ky#qxGcUU12;97jPfk7<#uU{czJYiiLeayP3rACbNNPi?O3IZH)vByD8HHVcAAK -zv0jgU_FcLtYo*=g`K~v=hIMalL-=93r@IKf1?bB -zejATQm$e1vg!NE%i05JULIsaBk`pP7@wyI2$uxKoI$R2OBedU88 -z!P;KCM<*>(c;l3tNc*BNl%J-I(*54$vmgBtyX+q1?BopGLDa`t)7eJnBir`iOvDC+Y?94T-wMO7gQk#KhX5gJjgb|q?-rF@-c?EmkT=y#OcaI$w^u#^4Ux>nu$UnV)P&cf*KVxNG_AM7k4+E -z@YY~&c$O^k*^de(Qz>LFdVp~zLQY4`sq_E=KRvH6-wRr>=N2;oo -zmsGi*-jjm06&H8?DzoLCCp+O&ETMm@r~<06a~SEA6BP=@81H6c-`?Dvm#+3*fImS$)UJPe`C8PT1SSad3eVgFSFlIqk0;Xl!qG1`mEx -zrINggau{(XsKnR6?K(wtl3F68xfB-Y)E1k|uccbR8Q}yBr=+8=P>jvdx2-QqBF-84qs_3 -zWh(L(#YMYgmu~QvU_Ow?R;a7+{+|1AU~==LZcFUskrufH#f2da;nET=BPD#`!-=@g -zH@!DV0WqFfiIf;ZYY}I28MO#ZLx7DhbAtqBxM0A_BS-OQMV)#q^rp3KPK`m%$kXt4 -z4P1iZuGh#hLi`QRDRPv)Q>N$69df4M0_plxYT2jTiI -z5X^PH&{<|(li4Fw1Y4))qG#%YA%Be46!y9!G0KzIvRyOArtXzj`tt99ucd-Lu$A%J -zA@yLDx8~QTS0U>Lr+_{{8VO)$UA|XS&VCdCZ0#ync25jUKdA7GIDyn-4pITsj7BIN -zG#_fs#xzMJ0OEjiOYA(XU=z(HH>;1tJ<;MxImLtFru;RXSqS!I6b+p4WxH@8E^?00 -zqxLpo(^2G|BkjB+WArQ$3hKSVSan~nJ#7nPoC<)E@71wg^Uws1B=OrBb2NQCa%@3~ -z$-+}LS~!8WvPs6wGvJA0gL#r0ckXB*-MoKTGdj789R|-t?V^f((~y0Q&I5@&0l!tI -zKrpj&3~2NqIa8XN!L55mefX-y;c6d -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 -z22kAi21zf>=x3oO&aibw^`V?@H6 -zC=$s7xw>$lh66`>t9C`e-~e6@W&$W=kM!Q -zHGTFJ_HwCoc7Obg<8bIWe6TlYP3y`bZNU|hb$bX|2r;LI*e5#^V+Swd!NLcURCF5+ -zyP;=nICHoRYfFcxC{05-L|t1*Y?eRG;I65LE_9w4y0}q0hwnUfl0X9#7)ra$hgFwY -za#knRveew9sNhNfYps`|P_g50;+cin%bCK=?C*xS?l0B&ZGR!>+*0jT>ejy3?V4{r -zRx)Lo7)!$`Y)ortn1Qkda7aX -z^C~|W00Sw++B;Jg!(B2`N#}x~RMu>1T#a{?0GTAMcxWy-wP2oQEo=zFSwi)sVG>Tt -zE&HPfcJO3Ky+2+pjwZ&?474g`F`{aR2SQ_a#5;*QHn2qE6Yu?R^Ks()Dp*Bc8eCVq -zq2+w7=_1I0mzliN1~eYF8~7E|)}l``MPt(ud%qb03PdY|lgabV)$n(pbocI;_p0;W -zn1K1c55R49Ij=%aV!+qq{pteu~-|$5dY4rHP;-J -zWUU7rpOv$(rzGidC}E;7Vhsf`)K>2-Ta{4~RPXa=4%9Vj%pKaZ-34d3qbO5JcSF+ -zVGvZgqb}KZc3<|DiGCa#X79aUsT8t%tO_Jb7wjZjgi@`suZ&aVu7a>!wu_y!-C^Ku -z972&oFuo9%yf(47xrx4%Q^bUS3xaw-HbxEWl70j`>|k9Ij>@6A9K(hAkd%cz{_*bURRKrY1AwJD!$xu=bhWc#$S48rBPR{f7uGhR0hC6Dz< -zeE}cJf}`n=v-g(;5oPwzR1fBqR}Vow$Fm@@40ary0=_C$?Yohd(sC6^=m*y$0h}LpVPsq;9y|X20^>39gvR0 -zCn93<wDME8SsHlmYMIH;e6+v%aS;yULZ-w( -zC(0+cou@_aoj1|s;C1DkJDE$W;Go@W9G7_o0{M7 -z+I)5UI;zJyf%k+mC#!1$QfhLOOgGqSMSnPtd)q|z01RqS -zMVsVJG^21UJpz=s9;@&xlE|2Hk)dwVUOsQi_PR<0N!$`0-I4^!3*ok23y7N{HZFSr -ze+-Pcwvepl!UX3<*|0gS%VfVu6C2LsPQ|655h1drGj+rNL!t}iwp)VHBhRtL|;*s{K@R1=LR)g$teEd)^-9Q*crYeiJ -z$(_C+sEe^YA{V+tvZL1o2F+HWaBt0ao_+YNB}b?*0I&f?tl+sWrYxsh$H&0E){Z6T -z)GgYW4Z;D8UAf%`=?dgEL`do=^lWi8@-3HYZlgIgukf{AFPo{uo${B6A&T8o>ah*8U)ipAe8We>E71SnWUAzmYF^DEboV7ICw!5ORxIr -zD$*-UsA!50b>7Ts!Dd8|5hrie(*RmPrN7iLkWq(rTfTYW4sqy@ZRV$(9TEoSbU4>Q -zqQ9Ei54_WCqHp2)rL>_Y4l -z0gF(pbdt$+aVEDby+zW>ZQ_YeGf5GX#GwsTi|EtdMqF~O-cORkEtCA${r~)zcl(?E -z_4w7h+wLowV5GMxM#qBEz{NnScG=*Q9GWq`X>|ux(p2febt_R)2^HQK$;KYB?1^sk -z7fqA#E;*}{O9aj!EM>ZJ5MlLEBOqr$wAs>1y6*!9XdnGG9dmfP%{;MV;)?a`j1P43 -zaBemFwA8|aaIqd@k{P==8R6vaGR54zeBqi5qS(g5-v`Vb_FTWR3DsGw7+}q(6=lx= -zGd4vG@-x;k9Rs)mM6dkYX%!7vMq`YcMo -zI$~e~5u;EM*qs!8yUW}IMNQwhyeKqY9bq%HApUx;-EOwU8uCdK0O|kao%<%OUxh8Bl6WtmT_R -zImMGh&S6E#-OKCcx@78`NsP4}9h+$vl)ws+VZ|yK7a^7J)v~7J&}1ntJpv){`WS%N -zlQeg?x6FjTerQs~F6ax~Cg1=|S4UfX)tZck9>h+nGO%z1G`TC0KfW0Ur!`zMV8IlYtqTI9qp72P9#pO~bU2WYD}+ -zjm*jJ -z(^(JGRzReQM5U~JG9syT`Jd+!tkhyWy^5@?^de1tmdhA%Bj7MCKPIEy?xjI5}y-WbD&fm^l9O>?RS -zI#6<=#Yf2knGDOUis1Ucw;6f3w1z?r&ZZ4wo{G&$JUM)8Cvn1jTN7z8`EJ&S<_n{k -ze!*jZR`S!+2v{0Q9~b -z(hZXb*H$!_D|P@JYa=jlX7ik}gA8#b`Qy6LQPD2*107?rO9%r=atoVSnU1C*2`Y5p -zrm;z(>&A|&VwSL?x~zy%-v -z`uSaW{n7y8t=ogKL?{lI4^!$cwk4t+`(b1JmbgH-77yRy-NU>NiO1njCF9XcEp{u8 -zN0Qk0XObOK4V`y}Ec14YijnqllDh>vK0E*w>ANxcysf@z>D(A9pF0lK?819wXf#2S -zas&E+-I-T0!t^2+K|1woOCFj?t*y^46{ImyYdQq!L8}$CR&fiT#S-imf`*`O2~v1k -zMTVa1K~fRU?e-U(EU8yq&BBR3Qz4EM-@=>dBu@%AfQy?3E< -z+Hq)uxC_@tPoHESA@33=ahbUE<~llu#LiVO_>NMgBnjK+JvUVNIhG)Q4E^%C8L?@) -z(E%2woGf)EOlSl{AibQEs}=B(#*{pDRL$bx#TW2oYh;9F3I64evd@TUH)>qBRg(r -zApQuPMCw_Y{ScA(%gLW?lZ~iABIFp`jDiO1}<2lX(m0FDEAVV-o&_V^>Ejr#*iE}S9E}-nlC0mA+Qb1?VSE#vle*KUe-V}Ku=mhhC~e_@#vExr=-Xulh_`&J -zJBGpn>=IAMP#S-ft!jWeAbMT)8HnkPbV0n&;pCarmH889^>;tk;6)VnXY%^G+~!?h -zoZdte!031mIm2*AL6g(>N*0FWxIKN|bGs_F^840TPrHasARyf3?47TEIynJ5G>@g1)h)o=)J1l~$?ZX%{t|uZ;cqELhIn=FB7Hkgz~6;d$+w?42gM*Tew& -zsj9(IPNc{Lc2(;_M(0I95v&7tH|h<%EZ(Q>)Z;ihlVpLLH;g_TxTkb<&L0KJGf)Mg -z0kkX;amN{K?7KXu;aeU3j%Eqi!bWi*iNd2Xt(-fnZ)1hDSvc0DP1kl~7r`lY-A^mV -zBn4=4^W1HiN*E6uGqa@h~t8Ndje|YBhFJg*Q -zN%iiJwNf-1^Lz)3hs^8VP3!pUZ+>UJeBQgg#QeU0dlvY`i0lIOX3ea3i~-wC`&Y1yx8BQ^=_)OZY -zhl`a$0Pn5p9e#+QyzUBlM%-0!pJf^Zr}wWi@PkV1uxH3yLP9A!VA*;mWYBTNCJb8S -z5t7j5BZ5@Vq9p+4KrY%XxRZr`ztV=56>TO@NB3>DHUNcenPqqBTkKI?*1E?Y@11HP -z?S~!96VCSqXoXgXkm5JEE)s4kPhkxRqc@eNTF2M4H;GyQMbi#H`y+GgKm7a`0CXft -zEFO+se*U(b+kBnYO@ypDrFCJob?b-Mcdvjqz6N-(4sRQ~I?3w`&)lW=Bqg7{Z+Cyw -zbj^kPjyL-G?e*Edysq;X)rI@|`^}4F?sSd{(L2X1k1~p>97bi}XORvormrg!dg-V% -zOi%z;y_lJw(m{!#DGQ5SM3f8O8@*nJ*79eWk>*V1hOTsVUB!Vo&SqHW-Uk^C#>9uq -zMC_B?kB)``>@?zpK1kth=sr-8YnC%H|30ML)mfS+SJ3U>T;D)a3akyLC8Q-JzK8}^ -z1IVz*y5|DXh$W~T>zhKh@8Vl2O(+(@7`&z+rg0m>ulz~rGx?_jR5oURb^iGd6 -zTSK~M1&}o;FqKUKsA=jgcDpyjv45W)1TK`L&-or^(cMkN$67IDqSogcu`QVf41hb+ -zacAIbVK9pdVh58}jIVYav+EUSrH3*gBGckVuiC&^bh^DbA5dgDHD(m{>kVI!cx_C%@J -zh#$Q2H(&7-|BC3z*+4aF@|9l%U(q*m*c&GW^i95#WBCpNm}5OT@2D2%KRYUvVb@T~ -zhBj#LJ&$d}0hmq9w%tB<26&rqKrtYgO<{{>v_|lhV7Z1s)g%H0HY)MWiT)EV=s)3t -z{u3_f|0{4oZeO$KMyl8|Z*7{v{9-cOEObpPXA{PT*vO1%OZx>V9@bnm@PV#%wq6sL -zA*Q;(2%ZhAKE2mxBTBOYZZ0eWh^D6VDjGqlpQ@cuO!KE8h=5og>Gk!2OM4xQuRx9? -zxG7Ekan$XJ(?GU>IMFJaCj92=6^YxUUNKOujv6}evXBHHk=Z+qX+u|0kRF?=@|)ZH -zyG|i^iFgeOKJmB+>1GghfT92S9j%OroiVmF67NPAvcWYhMgqL4^agz`siR*Jd!>oSx4F@ui7d~9fwfA&QL|9@m8aMQOIKeE)iIAb|*9z_wI -zJx}LTn4^W5XtS6(AH#!f$FB8SRB-dhz$USTa$jH(47APJW-tlW#CEQIf|~rWDU))D -z84q!Psg`Zp#B)Zc;8fg-gxyS%LHHte{W86W4war`wzO+QVmIw3PHo)a2vC&?NQ{%r -zH|o__?9tlx^;jtzv$np0UzwGMoJ-)`MQFXEYv$u|3YpB%D5v)w;aFll0xwjv@QJ)3 -z042y0v#b#JNz$N#;hGoW(hlhMq&9U46)rtlugLi0&03mky$7Z1C+8;3Lk4Zo!|whK$GBM}{`L~ZHu -zt@&o!PM@uZ3pH;UZY@Gw?FQbLM^on`$5#1N_BBD~FyVfl(F -z9#O*7DOtFjaY$V0;xLZl^0atp>CD?WjnLV1=s~L<854L!>w`87Z%lbh+boQyo{L^A^Pgt6!@zK~-a24y*FrSa!KLk*(Xf -zp^bmw>?a@)l0T1+x@nFzIrJ?`N1%sV1ITRuc03~5Bs)gT1U*2@P?WAoJ23D9un`K* -zM_A?yq`xenTgh1`Ye)OJeQ_vBe)c5DA -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 -zHJa85t9uZfz<`E|UiT!m2NQ(=`5JEF -z#aMbjSTsr?DUFrEu5Vf&NqMhbECP#mHj3BZoUCbNYG(c+Yb7)me7dvRz&Dd4ThDFX -z_hy~RP;OvmEN}O|lJy~c_6)R=AuzA2HmJ9zMP4qmtV+@%P`alI%y=H)y5DQfUhweE -z4YUQ@+m(TiT7{sBM9@lYziCVScN13$Vu)$u8f0?qYB`5>ZnUNjZ6ry}*(CskRzm=E -z_>2y>5GG{XIDM|8ezDE*&7r#vYh=H-J+ESOazTsAW&uuS;EetA2iRasJIh3`r{@=^ -zrikIzNnEhFQU!ZPYQ?;SrJ3UJPEVypZg<{y5-w>9@!W%d=m69r`ZJb@h3kCoLC0NnRy=BH^4Re*aJz2kBdbowhT5Rxkj?c$cT^>AWCS5}dY8=Ap -z>Y<*%!HHiH;4U1M6{ka|cDF4Ye;jo{a7xN%+5p*4d&V^imCaQWa8g;@_P0i!a`h@Z -zjkkgKMM`_zG2n*7V&B1haDe+RYzKUwgnOTi4{jFD -z7MYmZX+Pi27Kj!53woS7ZTVJU4HFno;A-hpF}rr(Bj5^Io#1>V&=5ROoTF~1h%O2$ -zBN5ObU4+3hkm0$xo@ARtCNS?+PM0)^h}2hwAIE7XEF(#;%f5!%O;kjfZf;EqYN9=~i-l;L?OwVqI9RK&$JP{W@Hh`$a6;XBEqvOv5sKSV7uBp9@?kQuUdo8NF& -z>lxQ;0R>ftbg@!%AR&TyD+I9CCh!<35|EW$nG4pC%eev1Wd}TNOzWKW8X5y6nw1J% -z5pR5Nb2$_=e1mx&vz9K{0y*xvgfsO@1IU7n_z)%eVghor*pL+IAn!)n479@ys6Ip$ -z51(49n!bT1tu@^Lx$FwgU}{C0Xy2Mou1hxqNOF*ym$pr7aVwFj8S6$3 -z243aFZoa6G{ZL6x$UtNO#3c@dzh%Gela2>s?n)y7n-GhP -zJ#x_;#G{y#B`5H_E!WnUzHNdub}h})nx{l9=+QI>4|zrmt#MpiIOG=V#Els793l$? -zdzrG_rg)HiNLsR3qy`R|crEHc#eTb4c-yAUoANN3ga9tgh7v7^W3cLJ@sQrO>ewVPKwgVpvK2^@n=JDSP2fhnjjF}qHI3~-TUDuBRqa?Y -zly5E^kp;^DPPno-yGh_gI4 -zLF=*c4DEu=-G2Sk(J{0w&N6%SgvhwGLJXWd@)^_BLn%5K_JSgERqNL2v!>b*&M92( -zCOL-nR=J52FDj|6kLJ>REq@5aw#H>#MhTWkpZOPf=cEOk1U8s3^YFf;v&fCW7%=R+ -z)FJxrAv*+e8W!r_F6I3Oi2ca*6FPA$j%}v)h1=!F7RmMUfhJzkdZN@Z{>IHSlUUf( -zsu-r9C#v7Px;AmNHs0_&tA`=yOjEfZ=fDGa8ez>_u}3_IZz)H|O} -zY0{33?KDtZ#NsTQaaJEFRrnAfzFiG%er7nF!}+ebWo7NG9GVFH%DFnA$Qw9{E1e%kr_$sUo(9!OGMZQ&hQqlwX~}G3tLp0%SeIx2*R!8; -z6w&LbXp5YBN$aP~!>4O#w@Gp*#%LVGv0QX-sQs6(&f&(QMsPJGC$Im;jb@Z%F^8;R -z5u&4_;LeeF6GKytV1#61s6!Rv$dMb^_@;%?(`;aH-xenvwh$xuoD*yZ`~BoDs22Nn -z|I|H+N{%K=L1~59zOushnG9y~Y-E6JC_OmN$L#;NQVGJi -zq1r)cw9CE3nKK;zD#*6IDzm~gz=K-ok62}5mOCfkFC+i14}oBp|=cWQ}<_6V6CX)*V{ -z7)~K{Msg4fi4`^gUxAhrZtOb!z`L$J4udzYk`;7sVi0SP}8h*x>$Oh^vNj5YzF -zEoBAONqo0t&;_)(H-yqmyqxYx;cI -z9pk%b$}gcRhjUuWU3>5rJySfy-6n#m0jdvQRVogg3Dt_GVyyW#PQiEvAVHdZOD&=i -zM{M~}x05QkTR)|~msai-F-$6OKKr1XLiS^Bi>zTkNl#SSQZs55B%Aj3#yW3C7s;Xa -z>cQPIC==y;#?Pc)uh>J9*3cPH#6`#MWH=VWWGA?96Hokw;@cBfcoJX*#53|C3#R;= -zf_TLdb`@BVWJ8d+3+5#PwhQsN8{ax}xx6J3jXn0Q&TZZ#W<>u<+Em|Ug3}Jp+7CHx -z$IY8-9`g>A$)UW}O*86yO{c8+!Z!3vshgpi_{Z@v+ef9YV8%8$L2_=3+R%i2c4@6r -zcwo2@<=Wq{@A5|U+)3_nb)-6LQ^x(5jAxbFo52GzlI3Ddup1D)+~Q*}?|2<=@ZvLP -zjA_ts3{7Mx?Q<}pH4JHaylY38o*?JyxFcSVqbb_9nObV=wvKJoIn%+jUY0~FRFF6c -z(Xx7|q3$I~K6n-)*Wr~7kk4b?jt=OOf3saH(#N%1XI&Va^yaleC*YLaK3-@+OjN%S -zZHe##Nt=jyo`eWN0tj&zVNx(#!6tQucAq$dc5SR0+$u};xRp)h^Qx7#zmTI8H)n8o -zm79q8C}_moE;KDj2+sQ&ypA^zWMjWkb(kI)%Z0eL4ITBN`y>#R!MY&SSvViWAT~#% -zOgkrrK|m{W{8`g7Cccj@?pyn{_(cU<@YG@6SRyryDV;BicE<%odTjs_Q)#cVrQuFS -zWDm-Q4NfXmha?6!&&9t}{V;1yt+(-9C-XK+=YY7aAS*kPNu)KM9?(>70tZ8rW@6HClN(@K -zpN9gcc90UDr4DoWfj;NC35ZyXTb>r&CBDqLk#84!Iuu1A7A71;YVeYpY)UA+O)%yp -zaX1|!y6tBJ8EQa)7Bo{6BAFF{*iO`grVjj4#5A^UcV09^73(H~?~`KSdlOx=+(kFS -z?QfoXOlnr(U7Y%-Yde;ET*x`KV2O-_8f@s~q98GZrslqVD6JpgqS*(E=`+D6n5fX; -zM_eRy0esnQ@G5ZpQ`&-39Ru`!<_N>3$%WQQoMDj9+{0=Wk@8}2*p}lmc|m)Hv)eWw -ztb&tsO+>_UwjigDUuNEWq_Kqql2QyY`wieajgE -z0UX6Ca9#W%0C2QPf_#z$+vdFHcI-gCvLIPlmEaBm58JEMZ44UJ-$Ey8LRn8j1UN8& -zRi}tEfTDny$|EuN=n?`^+svWp0@RV`jTjroqIg1#Z8$=HF3g6i_-e~2BCfrD+YWD4 -zb4Idiw&O#!-ere<9uaSVoTczXF_d3Qm@e7&0J~?P+&Hh3JTsnlr-ArrXag7`6L^NB -zmW^S#bD(Ql=7r7--oTJdQ3L;{7C;nMrX?|*L9I4<{(v+<22S;Q<_i1)i-Fn%zEjb;x -zjb|`^Jh1cexTyVlw4I=at4?wJwQ)OIyU?F@n0aP;PjEW9zO$$ovk+ct^v`AXndsi8 -zp8oAP1Tk9RE~kfr&);>{y|#-vrJN1aVQH5JLp56+?;SWxcT4AcRXII-s3Gc9c6WVq -zy&MjM0g=DZigpV%qaS=c$xoaW^otgP1S`F{e&X)i;3bn=&O!rofJjPgP0@O|FT^5e -z0!==NJhSbMrkzPad0@_0Fg9E*)YvSYZ+n1U^Mc$C2g3=_(z>}dKaWZ9WKr&X+wO0W -z)d@b-$Dnq_+PUVzFx&o>E4@8xA}^g$VoWs#Xn}OLZu;Af_QhDc5h$~74YnJj3Ts1cjgW{;P1fN!Eg3Hj6<8!dnh -z>{0(-%}uH!v?q3+wpZAg6~eJ6VnlL}LENCIZMfyGtQ%SknTiqDk0M$PUBc!?26bf} -zJAE7ki0NqzZ#8V*h<`u2rTspGmV0R7xn2HcLF96GQD#5y#s -z@!b^m%3!xdo1}LiCNMTGGeha8-P8n;QoGV%JcpGqTV{cd*w$Ilc5PyCMQ8*XkC;ep -zJJy8Kcr)dzIen~l?22i03(iUrRnnVUP2XeflJkVLuG$3W(kO?PFH>zkfU%-F#9Ot~ -zde{RzQu8hGD&Osp&X%fB_ztl8)G_YL6~3 -zohFR7p3ipZT7D^kTJPQd`>#Hr?Y9vf%j?FKkNO2kX&A>n4pyYnv31Q@M_rx)R1Xw{ -z!LoqaUlGH7PeW+~KK6r)^W`LyLH-rQoTLl^cnn&Ep#tE>*|6;D_YBg?3gdnliwU}S -z*L4$(^4SJ#YIi|x)`)8tejh(yB9w0*-ySNlUy)cu|73sq1^u{|A4&XjSy%D%NYf4? -z0kc*cw-x$)CC9IgwAhuqcBv0i#~`>Tt^lTj^M$sFL1myrt2(a7#=9>c+ig1`F{0AG -zH9@T%3C8n#e5<>lReCP<35|MeMG!fyqM1*-X$6R%7>N)~mPd!rsrrT?$A~9!BAacW -zaxNe+46#e2$qT<|w_{U#6A~srVt4Eo;tzlLsUbg4)sYQDeAOf=3F^S8kjqdomv~q? -zDN+;Q1TQ*OsC$8#C&FJ@470^f5qUAX!T^zTu`dqFEOM4WkaH#N?7_(aT;>!aDFT5i -z!RNFgU>Z{W3}cc{>Wxv*W2J_RmRn3*vcivdE$Cl53pJaz4+=J%VG~YnEj|Tc!PFjM -z4#=-0=L*Bl9Q8PTASY#6!`of!859sV@cAz;y>R7h_|bUq;m^KahKvQiB$?CEVg|X)ut*Y7lysp}?1c9e8GpjUwBw|6Q -zQKAl^28lLD2KdRqcAun*1@qb1XbLVEhc*BjX3LXmU>`yLM_1Cby@Vyc(q-R~DqWJ0 -z(}ZAdrWkoiX_-wj(=HODDGz!EMh@v_NknAWi9p8~*g$9oT3dRSA0uGd(9U3Uas%br<4e-^o9>cTLL93W@7f4 -zBv9aPXHHnq`UM7VILKIggPBE!z2?Pk-T#ceDuX-s$+tdf$f76G`3fS1r*GNN7QPp> -zGe4d_b8L_=jmdRJ=eTn`gc*vqD)O2ir!xUvAof2WXS3xZU`e1FlW7p+7q$dE9ra1+ -zY#c9`)abmW15k&Fj2Ccq18|Rx+2$hP%`>$RR;@;6s$*(kF{NZUHDzgz9&Sz(x##-t3KOv2Og@^e4Q9*mkWSv_ -zOsc2E(wLU&md&-(SrTiYX<>p{T@{T}3+&U$4OmE10tW_Bb2jq1G4P_5P)xcrJD?Ha -z=X7CDv~HcVX?E5gw#EV|>(eFXY>?ri-QLQ -z;H*=FThSD->H6l)>+9GH?rUUci|g*rXttR1u2kQST00SJuCE}$vT(sG)bk&o{*QtW! -zWX7=ZYVDCm80w4NB!>bQiy^FlH$3r&YFjq+6mJ#UPnm4-tVU5eQ$F9&F}ph -zcgOS{Y?TX8qNruJnP>@~cqX;9kG=39y*&bt%lrPnyWQW#lBdF0{(N8F^`NvR=I2G2MLn5#VeCSjU*O5+qO1nJR -zra&8{)qCHT4(rc7H!Jgjw$21K-sM(aS?eNEnGptYmt?3{p94hmt$?xO^jVgg%QGSs -z8*6~1%h=?%Rr|&l+PJL!-Gm!8wK}Sg8L)fpzJaj;U4mgYPn-vhu|a%M?qwpyg|>r?7%RmuBf1G{f3gCyNL7TORc$m0Yabnjfa=Pfrj5Cj2C?{kCE -z1mgAk_i2xL;z_r@u*%AsxAAw}!ap8pG= -zyZa0Gixv==$FcLV!8E7^ti+}TG4=jJm;UFGIGs`ZwY1BdF?Tsvg@|>k4}iS5%o<&E -zo0jZt;sVdmq8J?hB_|NB%B`y_*A^S!a~u+KQbFyWMF!Ty6|?KhG#)pk#J)`!^>TmG -zMB@HTHmi1xq)5%={i{MnoMEM&6c1T+5*lR$lRTCRp5FNT(;u3!c -zlLLswkUK$wDnBQdfve6s|4@VPX*+WRqyV70f#o$e*Jw3Hs#Xus|Eq=lB`SD(Q3pR6 -zgG#Ql-2Phkcv7;H9B3BO&YWmx{IPTz->3U_okS<1yVQ0%-5!_Qx8MAa@3y#p_fLO# -z`>&T8zx&tW^WQD^Uv7Vw__nkVcnLIKT9r4a0(0gFg9L=G22Mo69y&U&vCYu;7C>b_ -zPD_L{KuIF~hz$)E3Eg7s8W$D|yqAoLrHM=(lpPciy -zX(`c7UD@R%Ndfh#4Qh??&AQ70jz8VD?t|d90tio9c1L&)xzAX$DO7K0wQ%YHdq>eF -zF(;oVa;s?XNcMoN+YQ{s=8T0SJB> -z1q_EBvi=91-^oX1Rrj5lg~)Kk&fSgOTb+3_D=Rb4$#YJghf0Gc$^w(KfR4#WW%V|? -z)l%|ev`lTFL56P0eKJKnan}u1Fa_DROG4eGG~z*{XTCps#`2GS1MH4A2xPqGjjO%h -zzM|TIO|Z?*jjr#thlRB&2|?7#(RHsbINZrkIiG#RO##<|vot2QDkg>;2J3=7IW3q% -zig{qF_Pfo6{z`3PZPvwrHXOE+&2?eHgIhlcbD@BixJleitbsp17(|2&@VMS+i(}_+ -zX&_FPHSCz%XxgUS52zin`P6voHJb=?qQbUPN&3tp>&?%E%@s{LqeUcI^8gFbQh{C; -z5eLAzYrFstd_$W55sV=9nHd0SdV4U3_6b8DGYdgPZ1 -zwFN^l)2>$1pFR>$YHbP?HI+X+X61CW%K%OT-C!!Y2>mrpbSyaS7b`4qt@^gE~aJdp)01u}zq?A;te3F@5PLLyk9w+tiKu|^el -z-zmH+TecsSkHKQzh3^9G9$fjC70Zt*Uf&E1uvsd{A259`o(eDz9O -z86qC-ITa>`iMHaI9(L+DFYAVb7utjsRH1dqu#ZXg#f){;GsgiPW;Tlm{l8G0#@tve -zvz&z6Hy*H};^ly6s%Al#!Rv$ZO_>F?x1#lM{ -zf^*^*wNMCOG%#0Oi|yJppXdzS6Qe8xArv(863Mk|wberPl`XcabP9MBa)1XbgcN-C -zBVMNoI&4S_+dj{raciuDs$XoP)ev)4RGg`vDB(OZW_NSD$>xaK&ATC5YS*?^8S1UL -zs>N2PcR8(BNVrEMuH8+JtDo3|nwV-nbKrN3=q}!;8G&%1m2>bD@`)+ueP@52=hde* -zXKQTJlPY~2`dFAUktM$KaCh-#{~8Yk?joz7X$+NK_!PyO0J%o2JttbcQ%7C3$TCM#TjoI7 -z+fgl!rs>oLYiI>jg3Hnn$=nRF1?4=YR~S-k6J=mmcI98k>Go#QuXEC|HKKNxlAUet -zz^#rO!D|y4BeV3n)Wb*Yi&hsk>UqwMP6e*9J%DmkrrIu+=t+}gHZ1WE?TJ?&7)*DNY!K%NQt-4n;!5PITXdV$5EkSb1~ahc -zZ38Sj1Gfma8ZNpxi~;AeSH}J|GH{_m+UmgDXv70n#Ps#rno?+Y)2)|j4b__DImBSd -z3VZW2Vy1WsS*h0oHY4#?Kl8>L#{yCE`w$E89k7G)jR}z<57F<4c_HRb*kA~_5D$9o -zRSCr@8!Gi`IMzVmCo?8#o|q%ih0{w?@5}f8Tw=*kvUAXLo;!x -zaE+-QL;J*-P=M)NVabYxi#(4DOWfjEy~mRY^jc4vqDFF!dgd`^8}N=)gn_; -zT^~nLTW<4e7YIi;U(9ugC|k+X3BO93h*oQ&E4vZ%vLX+q>_V8NhG_zmh9b?_Ul6rzjY~DIMIQv#gK96BiYAi134urEU@Ie$Q5ZmOg;>J;X(uy+ -zs`I;^Sw7pqIJIGIy)8+?-ZJ_&If*#i4>-$Ghf4c^Llt!lVwiw6^UjyIZQ*I}xQX-L -zpsj8+Jlor_EzaJDUU?e7erxaMmi3P5MBDCck8Kn6^@2@kJXbuIyf$n+LzKPrk%vb5 -zLex$RVD8GJn9~MDUSkde*{GdbI$eucSRA@xsb8Dsk+2*rHBUD3ecJ7925&k9 -zUqXViFBFt93Co(T8l62q)k}dH)fy -z9gBM8o}*d&982$c-abp!K2NLmIraL4rY~o9CNE#SabyO##+&H(C`Xbp5kytB^ -zI|$Cf=cQ~#kh<`R6GLc8vTKq?pMtxf;V8HW^ld@`IV$(()PuCz=CDdLp)-jjL{Yu@ -zpjF=Mi$9;8jD>gV?D0As4yC-X`P -zW9SMI)tE`?&a95OO&cY~RkySbTeLx7o?OaEU(RTjyX{?-c!3&7VJu@eey&x5Q%Ya= -zn57zyA!KSMd?-H9cWAfvCLH^5@5AALHB5;hCF$B_9IN9=7|oA~@>f`owsb04C#r)V -z1Uk5`t4${)nN8%u)d9Pb6jdejwssW`(i&;fXy-eAqNZ=yp}np-9bmN?w845H8M@jv -z(pOK5!Ks|P09Qb$zirSt))fSVGV@3v!LV)^a$-VN?noR+tL)-F5Hkf<5tjYZ3vxpsZ)PMNdTus) -z(Pw_TtpO2^kmkbbp4!GRse#(#@Wmj}u`W&WaV!kWAHL0}pa`Zf5!$2~DVJ^U&!; -zuXU}=5N#6fqKLuSC#}H)YNJ}v85_=pR|cX1A-JA7>e-8XJW5I=_4e9yB7QssI7YWbTzwpeEHRrdYbQn<(ZncIIrock*wYY``z^TqrO*o4!dt9h076QjBXy{WFy# -zc+{-<2ZlUyQTa$zpb4~oQ{K>t5SS2uZGm>tu)k@uC&kKdk`;}%$7ef#zXq3I+XE(M -zo;?m2yzA40ID@^|U!#;3XSPVIs;F!r%l3=l!K5_b;6e&^yQJA59xLyU&4nBEoISww -zYS%!RZP6Tf>ud&Ker)sv>M^t-0$W4QY{M>Y9WOQOpyQ2#-8~h;X6Djdy=;R@6Z{U=7(1X9Qo?V -z#8J@u7bWz?UVbiJ#7-rtP%W<8 -zYv9vDhE1fV&W*jTV`0a$j^#|J9#lyr`tV>^sC?A&Y{IGxG{&1II_{Xd#(rO*&{`<- -zZosMB*{;BCPsJ(o%57*Jf?&n7FO~K3burWmax9zv=AaWr+kpw1)zmupvMJS8WC_SC -zPGc_=_;W#NZ+2j-LP`ChX4;K~hGM-~1Tl5T{6i>({-2Ir0WFDds93Lx32~ -zVR{#)XGTe5JB3cl6Q5$7RINU#nFkBr-Y$>3;Q-5YJpbXlH)y|3m>TJkj_I@%l- -z%SC(gb6}D(jm8ype@iVaO9WvvIgK5?Tj`wNqGsa^#B|ipxJL6-}G6?gk+o-x>R#E)!IuY!-2o6_0B??OxTiDMcAZSY>DGaW)T8X -zg?TS&$EX%+9u>mHL?Os*fWVcWVijfB8CxM8^*Lj6tv|QcH!Ir#INB90a=WSTM1w>t -zHQzDthZyT$eY&o2?o`CQI+<)WtBIKylrD<{h?_kyW*h;z;xLe^t%u(WqKXlzvUzmV -z)6^j3czW7G9iCfr48ux79w$7Ra@d!x%B(eK(&ZDF07dyafW_^~riI|#R&5$w1FBUK -zlUcpU2GU)Sn@TF^Mqb%Q)fPBeOy;;u5-~`E4P`_01gw^q`ND#iR{Wd7rL6XD_RX3b -zxN12;2v#R6%9Q9(E{PI!9CHk~@u=~wf=2CCSU2E^X`-`4XyO~q>ZXj_^eo#Tb`^J8 -zFBou}fZLkR)0ZOKwMwTg-(x^^8DT9f0*D~m?-WsqU@Nr^xPtKEg1I%F$qo0htDJA| -zy=Yjr({f_psd84IDlLbm4rrwXlD_*JHk~_S1?JQWZ@|*(15*xa#o?M -z(tOkL;o^{(Hl2;|)#8|rsws=WW<#$+T -z19e=Ls_6RS+A}ZTZ -zqwBlI)n_|M;u=Wpa%825RvOuG$Lm@o-jPXDzKn%Fyf)%t9p34?BX6X7#0uI0=l)v> -zN7y%uGPI`R)?_EKAAKe`@)p*plLP&%m=!qx2a48MoNk2sq7V2c{&hG#By3HG;7|7C -zCkAXGB0nU-R$Nfs9$Z%YMEuqVs){~U<23HH?1f>|fFIr3J7M}bp@B7}4#>s%pgagV -zq^b6t@1%O8Y87!nV8nIL*y_fxbPlSMNDX%}xZ7gJq>gNKJ_qc$QIf3Y6TVb}|M|QJ -zwyJVWs7`0hULvi9puQ^-@$>8DqO3Q!_Ueiq$#?ldYd94J5zhn(B?Q>+D_spqD2;FJ -zF_{h242=GSSU_t7Mosidtqk#V4f%R&QBMhi4M_bfLuR*WBkh0b&PmV(fc5PTsC}N- -zg-&JdOs;xxv|+~OtR&DZ4Xxf48gXb25}9*m3~l1VY`hK_#$fDPs}JKQl*M$~o}#w< -zoBR7oLFBZGmn9ps@AJnmWK@)!R>R*dK}=}d!GBHgH%`Sg6E-fPpyi$$t8g9-39fUw -zK?DGQcC08`{g93boNZjt -zYOMprPgcq=Z&1>6Mb1w;o} -zjgnJQ4Q&&R4R(@Mz4Y&O=poEIp%Bt?a{JX2p401BR3>?Y|eN- -zHw|p7Oje0A$YH5;_p5fxzy>(mV56;Oh+;41J=};3+B^~)l8QmhXnsuwn-*wR*QKKE -zyIQTrFj0kzzA_EyoEOx@0230y8r&TI0mq?GLCH?GeEo}|96?cRnL*PmOrs4L&K?xv!Eu%WLnS`T8G6Vv{*$P+-d3sTkf{QXUH`Ts%CO2 -znKec;B)Xe5$=18@?MDZfuLJ)9M~tB$+7+v<-T@gQ=vpxjWo_J<(S+FSxk%YTXJ;D( -z_QnP_AE2IOQ}!R(2@Ty|yOtsz*lYA7IsF(;w&c#V&AZ1 -z?P0eK8sa)uYHK0D6NSt+HK7&jL0hh{-^^N_W<`@K`8h*m -zZMjZSx?yCn19;JZQ4h(Ew^zl7Lnnjf7JO6NQ)CCj--jk1r=I0BF8&hMoaD|cyARy0 -z-^a($!ZN{xq{q_r?v~y9{c_E%=Imnxd&KoQ?fMY=#-EjQ#?Dwy=Cgo#fn3^9IsI-5 -zngu#K)u&u^lE&7wR{-oB8Xm@MeJvUY6wnvYf+it+X -zJt(FqJFE!$Z8dett*IBCRr^+=zRfg?y2*(8!k)ZyU9_{K9gsM6UUb~_yJ_gWDRP^0 -z^t>ay*NV<+qS@v&kHky20=!3tU!o11x7&8gB7&PkxP-U^yw@&;g4n=(T6v<^ -z6`1ZObz%w8Qius`oVyF0&OI@27#a?KO}U?Gzr6k3r(3T%;W)=&#?obOV -zJ0SboP<=l%2f@$UKC&IWn0n|VU8M*p&xS%wDNgA?lyd%@4`y5I${i8iOvpPM6oP~E -zvZ~2Z8LfyI%X9XFt2SqY{wiz$zO#ECrY%Y8@Q~viyX6nknA$zM|0^~`5;PF}=~Fue -znsH#bP>BHMdj!+D_0hFEmCA+*?P_jxXdK+E(^qY7?KQa)QyCDI0{E_5g -zO7j0avL}t;W=e+A6^C)YGJKfg|61{N$cDhJFMr*MsIRFNAZFoH02#n@Ue#QAZ -zAigW531Fioopk2r@Zb$r_1HL8_Cl3Y<7yCEavi6{58I>RJ~GLxwN9#HPYNAq-9WM7 -z&aJ(}D+hZY-h_Em06`!gT!xRD`Dz1m?dUp&UW6&{E8T%GN;{F&P|oRKDQZTiz?tES -z#n{>uiAdTsNhA9MXir-`)iHwz`U7!Fr}1<{)9?!tN~#Zszcdtm?8wG`Z}gMa;C6!r -z@XNWoDiwh-tv+#%mP0T#*kDLxY14^_o{n(B5dnZry{owvkhtYAOY1Y}yN+X>txVb8 -zSY;Nb@rPShi38(&1SliUk3*di%TXf^@08Zc*;A(ZmAK!CbxI&BG~&4-eOoELTJXHk -zdbEW#U{tJF@j*29KrsR9F-BQSq8!lvZI0JB;pOQDvuR;O?C9NXK#{DZkk=!Yu;qza -z@xmIP(U!*?`?wY&hslg#4@O#Oh=le9wp>;FI*&_b+Y8t}7^kH^sF6}`?_g+Kpi(ds -z9;GA%fEy)>;n|9`aEPvj&O+XO+n-`ITxq=#Q+OjO&V19hZ#~3}O|w3V&f3JshQH$r -zFdYC&W0183^rFjX6RI}M^t@QO_>_p7k4Vv8CKO~kuxWdDj!7#?L>f0CYe7bIHrGf! -z+;7oDZE8F>w=dTaSFN@Qhv_NUmAVIb9IdUG4&_p23^qoJ-Y6G3Aj3!>wU_CjG^EQl -zKNU-%4c@n$FdPg{7Z>J~qr6Ud2mcHWh-Ag-a)2`wkuI_RMQ2EaXyg4HX*{4(%UEnM -zej0Vr0$FmWrdhf+lCLP|Wn4AKkRAfofr!j% -z1+8X}X$MUovR~@XE%k!p(onBTRAEBH8S#UNkko=TzWm!6&@DQ@UA<=0T($n`YMVT? -zS0|kULNjmvwn-|TL&haN!=c#PHo95D$(<#W$_CREs=Qr7pEt>pG@isor0H2LXO-~1 -zINRp7tz{#SlO&iu>46yz!fop3WR~n4Y|wDfhUmkyDr_0+tXZ8GnMSskJ+)1b)|VSvgWaHu4csFmVYHjKL&3sxRVJ1**luGg?VhO{cz{610*}Qu-^#A0 -z_54XTi`-=NxQ5-DG0#A08>~#NW0LLjRFnkYGND^-5?q}yl-rE7p_I-?mhT$8X;tJL -z+lCH#9{Zv=57t)ggJ1!+;}En3P9HZtZ5E{&jNjhChyQn`CabV$RZS{B3nQQ4Z;$ug|od?C4ZvMVV`j@#s{Z$N5Gt7!15?B8G-LxjQLo>FyKUaxYzg!IT+^)E0#oH* -zAMR-7s>_+yt8x;qF02ztZyN?2b2v|H$cC0iv8WGtV+G;y9wW|y86x6PZCpiWHKHpR -z-?Lp&4#WpV&aYy+tGi-`C1qBog6NeOMJcsu0pyzXqP`4vnvkn#3E*z$Eh~Q>9~}G_ -zwARw=%gLZRvV)f2reJ)2eNU#pzIXH2_aI~!R`J4ChONbj*g%6e;ZkEIbXP|{Atrso -zbkjE*Xa6`stD^kg()j0itm_;2SmZqqVn+%QDi;RV#ySU&&Zg+5PIIcI_fl;lWV_Tt -zgKlhW!OvvEtg7-$(GyAR8*L^qC=_CmGrOg&w5Z?2U?`K{tnr4$0xs8~W<96NDBWY-Rf{BOStJ -zmCik|rldz$@>lSV!$mlwB$5_%)|iBDL@XP3gV5lkiH;@ttv$W8&>PEjqg-GRA4Y?G -z_}3GCmFHV#Mrk-EZ^vD@rgYb8weEX0n -zh8cW_t8ms2mM|gj0kX-R3&H@nMzzOb7i===03tJ8y~52L2^yY$(dz -zeG?s}eFV--#E%g(DtIYi&yCQ$52~h7H?)E35d0A -zGKpoj#~O;=qQCt6+YjLQ`F1#Zx_o~&zv0^)<@^x`cAiXN8GQbb4YfIm)jMfa6}U5f -z$(4Hu?ZHE;^d^_fCeOnWn*Pq-pBAy>Onf*?p!A;7NP^sHGPg`$589|6gO>r-#-8Wl -zCm;|ogI9W>RNJS}m4%6W+Sn)JO6=3jJ!S5Rq{-O- -z(W%M3AE%}FV=nz4mG>h*^M2Gb?*}}%-H)Z;!C5;*jy7N)$D-=|YW!berw&??_Lq!0 -zzY_n~Z0`SBtUJFp{;yJYe$6_+I=z&gc1m=9b>3cgMqRJ`Urnc7)9G{BE`^)m*o`lC -zqlsOubhT31r)lb*+&B{VG;5#SOsB4w)a|#deOlV5-0hp(twia{O4p)twUrxH<=&>; -z+tl1c0~h}vVk@|baQjU5Tn<1{@)RLQ_d2QQ0LERkaedY}@tU)_c-;s>Y<`GLh}51zPQwhv$}euk7S^s&3z<@!N71@6zp{fMRAG<_T5pk4a3{G&4QAw^*43^iNrOcj4RyaZzsG5+&|0)ktU^b3~akuvNKIC88;mF*GsE8y+HpSV02TDd( -z@o~&8C2NjIYI6;uGiyxa8OjXVQie4mFNVExbnRtfZMSVM9v_eukksD+taOHMDAy0Q -z(GDxeSPv6#as+s`@l12odYsHeN<3myr^KCb0W9;qVArFrA;Sp1k-Ag<>3Khn8U&t& -zktQ*93s~x#oU)4%_#K5HpUj#7C(Y5j>wAt5^fyBHJFXw;m7cMuy5|$w8;2ga4kf{# -zXrg6Yx^@TuzA-d;sVvBKOoEPfVT(+{s!+9e|DAVqci#}vqlmVyZVt8f6BNV5sPV(N -z2@n|NvMTTF^6C+`xBmR2Yd7dwkL)G_UYTb|Nj$`@RlXzz{$*1)5}fO@bBE`>&Fkp! -zihJSV)dM@*R}T($bpIy*!!~m1nMt%cV$oIBBnv2xbmqUNPc#@)L2gy4BZw`|hrepz -zcZsy!3}fwLGcp;a^?761WA_pEqATiXYYeu}OiroAAyb?Fdvqzsm}3p_&7r0eZw#m4 -z5vDNF+1wm{US>;)pdxRahvB`~T{fRQZSrLr6PLOR^ycuG_Vj`I@93&e4sYcz}QX&JK^S_de5prQR;rt}}SMO>Pc>^M4CSt@gDKbPy)vB%S`P -z*MNH%!}I -z>$VVUOB6K4n8AVw2a#CBQZS8p8VeTPT=-Q=zu -zw5-5!hPJ-KpzIOQcYBFmNC7@I#%tD2obBl4=(4|WF7pY^mwdDiEZEQvIBx`(Z`|l@ -zqDxc$$4&Qv-Rd|EhKJXEjJ$c|@WB4>jUltj@$8%z-r%+D+x&vJHlZN2^y{_!XvcYa -z>HZ!3i>5S^gS_{$kJ>Zh#>>6IuEL?FQ0M3?G{%5Nwch(Ga& -zM(=d0)`9mu=l9W))Ej!Z9q&>flx?tR2izQTN@Wi{fHg?aTfZ@EnH(e(g6&ln5WSC@ -zOqiWNf?F+Oq$LTAG!YaXQPB0tx-u-<*2@ioT|2sNPLi3`S!o}Ra~d3XSWLG?kfQ7? -z6x-8bnU$+N6{m>jZ+QG&aF?%|(XeAvl9^K!QJ@zh)0|L8{^>S%A0tCw(qb9l*51jz -z_wPS^{MMuU@7#a)G4D++nYPa5moCXgC}Vq{PpC^^I@*nOIAuE3fzr4BMAqBDAUNng -zz|}v!6hY8v7a@bwt-V8y_neM&>9J_sz=3?gXoQPjvBCZkE2CvCje(G9HA4^~WRSEI -zs#7F>pcm)X9^dcdEQjID+DL^>#Xg{3Y+2KaV`B7JSX0%pj!?5gD(o|>d+h>UJ3iXe -zdd&@366Rz%Ji6omx!gN(jcq?M^yVg4??!kZBFasi$d)Pe`~ZgGX83p}hj%sH@ICBNf0}Ewu?fBVzt`RwA8NEtp-RL!Q#I604~SX`z#G8*reW6$@I5nhxuHyX6tL -zOyB^M2P>N(12*|Lu3s~H)h9^Tnu)p5(obb?u&yt-W(-WC;!U~;H#=ai^KMGhHvPv; -zlxmJdZkCC!tEQf<172{Xh5PY -z2x%J~ccjxtq)}fXHY&FOr%GS!>Qo~H5zQgWFWUSYCgKfyRh-0c-GjMSuBOOU4l}Yo5VQr51CSqs -z~nhC$MwI#zeL59#K8F8vy1Q(MTqF3A97*(6HhM^9NR|Y*ysSAI_QA^^YRtS2c -zx4J5GSDvz -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 -zT~Vq#8xoPHL{@%Jpn(Evmo -z2BC;gi_^j{kBV#;Wkpc{;{-K0_HZ7jKXUj@I1}{*lRDrNgU;V|kPri*G~yRG%(mM? -zYc=1fh~@?}PQ)YNsjbp_6L>>b8D7+sM}xJ?^*kb)x6vPGp%&qQM5kJi=rgxvxrpYW -z02R9+VYN}L7`(v4w-A1+fR)esXN-V@0E9WqGQ`2tq@CPl|^&lx~ -z+G>8enqYLRbe^KLFyzqaug#%AiyP1ewoO34i!8>66R#*u5gph^gGekcgMa702D}N; -zjb4}OCN;%uwQ_hJh;f-X%MpLoswiTOB6XM@4v5X9ExL!WtE -zcVmz@F${@x_N)hbrc`^jjYO6;l@trw`c0*n3emIBGXMbEK8t3t&?g0^l9sgAdjHXi -zWYst!aNXCsObmV0ufueb6gwlTBbArLOQkg(x)EMmrVv~NdbYjji%)+Z_x+chVAJXtP -zJq8UlVB*GGpB6>v)lh|QMx2LoJ9>Gl4AbJ#SlSS@M|iQvD+MURg$bP-4H8b%l9Yv| -zzUz85AV!DQTQJ=n-!nYgrkdPs -zY={$D;va;Sz!%9}*^1*UM}t@fOlx_JRfFO??o>ZMIIyt9^yQN&F;?eRO!O*nTwmJv -z4M`e=m6e0bwKdd$ICYxnkan9U(KK&ip%IVc>E<<21R$hF%rqgcEt+fGs|8$W!E2EO -zDRN@&48qPVuQh5};!(q_6na}nVrrKFyE@H@Jg;4Ww+nVKEj>m>w*cx4e`&~6t+T?S -zl@v)}Sx+08xtjJh^m)gwI1WJhnO*{|WHaicmJe -z#75^FZlfe4c^T$U`WH6#W(?b~(JW>HmFAAs54H$qhJsWlQBTpI8 -zhiS_J(vr>1;u1r*DW!;JW}#Y)gv>kG^(tLu!bA^5?v64#ajLo?fg2lz#u*XLwZw`c -z!1ZhhdrQOrv;Lq~nW1Btk+>-hjh8g#aV)XjTxh{D#J;(xeY%RWK!6VcF^fCfXo+Q{ -z$w+ARWaf23uk8t>H1W0jlv6>wK3L6&J5X-k7I8a;?vU>>k7MC`)og8Rua5WYKxF02 -zKlF&$o^5hS;Jr4Ggy}834i2*nBT2jBtqcV+5wTdoW3d2fod?5%gSDso_sbCT(5Z^;%#Y?U!xfpJWPs=yj}*bXFN -zyd#Kq;_@bs(n1Z^`FcHzp%Ou9Nq?7eFm0Z+M2!x2BDdipWiE3HEr)v>_K3EtAK?32 -zVNh2ElDNl3v0xful~-b2*c2OsMWyDct2i5Y(+_2jg(LdU-9gqK_{+jT`dkS3j&Qq{ -z8)EkRJJ8jFxzU1iMIr=C{p0X*&g@kzm%>8~LZAR=Jz**BGip=18Ko*_0|sVibXy@M -zXl2-Za6rBGquzlLi(GlMXi5zFqUEe)Br=CD-ui3F_^jZKL{x3TN)AoUTGn<%T(*b_ -zXW-X2jv`AmWDJdwat9VIrvKbxZ7YJ5Rl2l8CXl1ZKCNN&%Fl+y9zlG_ir -zJ#jQir}?#mgTb!pasWnMDi@_kB6U@JUMI|6&}Imj^3(_g7)i{5<9gg -zaNBDAd7w9~FlOo^+OC83RODx!;wf=Ml4b2qu^PDD)RvhODQv<}I9!-(G}6ySR>%5Y*b-f50bxaE+vzht`~`=Sr=Gzk!Z -z{;QzuM3<`~o7!6N#-75{p%|BIkq?`5>92Cu$RMn9)!`Gv#nrbTM)4Q!fBEG8pqP)* -zVALBconRzow3FW-OrF!knosdr+%T_Pm-H7zm57`ca6rgf?$&!3i9{J6d5k>%_zRNX -zFnUXFbQz(Ood}O4_UqJOcGT?)b=dN1U{w|xTg^mj0H`n2wno`j8x8gO^|bEHn%7(J -zCW(%Yu5`WGuE9%O6o81Z{_A;gxBDe^3zd -z!mvyWR5tYKd0;CBe1H{GjcTTYXd*J=iwF8pj?|b40`wHz3km=u7CoIeyVwV@B)rgW -zFyP1(&AS_H6vl0zrf7y;ll3?^Q>y2J1iUF!n>o=h?;MD-K(1+e)1)T(Q&aMdnPV+e -zPg5D6AX`gKM^GI#32lDN)g|qrq87nb;@6DBvAMtA0^VPhmh;-z`?j2wdmlnALA*z; -z&tLOamm`fWu#g{(WW5ygAhN(vl4R??qiuI=54FW6nU0}&8{7PAhS<^~&`QBn!)uFr -z^Zk>SQgsCf17}oaJ^jYmv6k9LTq7e1U&;n|a}a#2>FXP)N;*`?!YCr&5yI`(HL=$1 -zNQtrfV)=d=2lt3j`s4QEx?}%2L_FvsfaZdfiG%Sq@yVE1JHD78172$+;PKOeK -z1Q|LK=wvycA6$hCUJ>lpkq-(YU=e7i?bq^-MNFa -z9IrZk)tR(&PN!m2kRT0}s?6%b&IMDFK@Zz3dFd+L#`MeS_B4U;>PKnRY9RB*v9Oh+ -z^&?ODOwTQMKO%|Cn>zEFni<8;35CjK7<5EWrDZ#ssUyqDn6MQzN*(ASfSz6fLAGj) -zxe{>)bZQ&nUZWSuPtw=ibTsEt3(ewXWIPbFU}0y6cwkyXy+wpRw#Ia3a!ny> -zs~j~{X8XRHz?w9k{fqum-& -zBhgy!!n-xxR*x81v#Gqja(T{;z!=f#X{TO8n-ygCDDHN|xICk?tkYtw`3C=P%hZU$ -zf`rwEPKK&eZm9B_4?d<-Bp5ttnAm{hua|c78P)Hsron(}beB16;xFe&nhRrq!kmZ&cl(n=i*+J++acKwWw -z4dzuK$(*9sQxf7t?rQ^PFj}>2QBfsAE&Li#h|H2dW1;p^P}(J^Ywk0il_Z1=JXJ51 -z@j?YjMYJm5Q!)}6on6bu(wa1%s2aD1c9c;O75?(3oXUTUZC^aImGo -zqLZO?5Ik}EItU6zJ|_6Sc%0Vp2gEeP2;oUhB$+7#ODL7)zWcuGvJB3wIOWnq*pAi?im8KCZGd-03=i{&e<4Ym>01 -zriO5Wn9in3aI|%-xW>NO5x71g-ge{=L*2oLV}ckXPj*7}J11|wYnerR^J1!S#d=Pa -zHmcMnZqvq>$3T|pEkcJAgFv!Ne1h(agaGj~%1+otbEsn6OaF6wU)m(MaV7YjzoIG2 -zvfbNNU^ht}Rxo-wl0B@?c|~^8?^ly`vw%U`Rr4#o;+GZs%M3Iwb$Dg-`&AshE)T+6?^*$SjnsMcYiPIBHTzw)Zq@jg?VA!IOY!U$}+-HIv!!H{N}w9B9UJd1y5W@J#G%b?XQv{V>D@thQeujblVr#Ls0wQV~@E -zvyoOK7Iw=VP6N@F`1M&+AG>?QKv*P>k-YRI1MXf>mw{{FDl1bpMamEr#cHTu8mf+T -zc38G*nh*o#CF#B#Du?ZT`*K)g`%D+BN8ITz8lBrjurABS-0c!I6-c+`DcV;S8GRw! -zR_zgrf;WE-i)LqzY+uV9J0N74-+d2(6O6SQ8X(G-Rr3t+qyV0c=NJi5930GUY2`F! -zC8AZB0G7QIi?Tw$4SDZ;D{rXbXp`oZeck8<^zajzvlvBGEINu>n-eZ*&-SG0)eks3 -zfG?U6kAuGA;jd*qMEQ6+)SXE|F -zs1}Vng3v3M1n!E31!4=!qYyy?o8xdmQIii^wjFmulHjmS$mVpycA+adFxR;<%idID{DUINoJ{b@l+x-VFZZ4Anuz@U>+ -zl7u|oUZELrXBtb`S8UThIHGLNbaPo@d2^%ia5 -z+fZ!E%rfhoetSg>1e*u>hCx^TMZyBPM9J~WkiR}Y@bAjZ -zu#vu8Qh#MJDs>q>K}N_e0wj8CplM)}HdHjAE*lv%OYd50#j(*}){IWc2(z2r@@(Nq;?CN! -zDIol0{UgvGzk@B1$bmXWRr-o?XlPZ@7437iswz}HQoOVRDwi46GPi+A7AYa%o*^#| -zz5*QzLC@N=b$hVG0#2zeyOZT$;ckvQ%MwrbcIA;1u14?*W!fdHPhHvM&e}w?$Zsw9 -z0zt=%K9hF^V@Mra6kSG7#s}c(x9)2#Q*&gC+KnP>^P(r^XHJ3icB|Zz@b@?%qqp%< -z5Pg8#355Z`eKH=>??14x9$_s8q4y}L)kiCn`?yHq&M+U*t&UhVHse>D(!(-sX!I+i -zySc5buxKciy|U--3dknAK6xEWS)tKsxAc~(9ia@_O4HLlHeqZG$adus{#}=~6*x4k -z{QoQ2)4uuan{R&k+28((++BqVydrt?*_WvDt4rMM`dBnlD585h`8*-AJYHzFp|2Cb -z&mvaW&-Q7wQA|{tPiw#t<}@J!QkxIv6YiANDrNJK9$Cg8dEF=JO}*Dt4qM2qe3K@t -zbqTwE55rqEB2hQJUB`i=yHho3D?@-Q@}L+nGEI41J?kXysHTTqgJg+)LAC*7 -ztLwp6cw8}rBTH!ZrDm2w^ynCWk5|q!BtqAv)gS|5u>c;l!1(oNXbB`SxlceX_*Hi&AX&-evq5aPREa@Qr;K -z!dO#u+&#a?HCwGT_m8^$j#02O3k|7xUhQ!=kk)(NCeKi9fBj|ulhzNPrB%3q9uJa< -z-1x(k=zQXceiRm>=CqjPTuA -znN7Sv(`siEBcPeA5e&DhST^GOJCaAc*@~z}7p?KgU9ys#Y!62Tv-*238=-$MwW-U? -zXNQf*Rj0n&r?9JZD?_IcoOjZAby|;bXt_dAdQBbnhSa8xar%|FmGJ9=EUD3&#dvWq -z?++PM4lqI;m%oM2%YzyqKr?ZWha0Ndn?a=k`F -z{Y2!XQfM>UH^Ho?Fpvn~K{!|{mJuwj2mvLoYb>1$C1Cl{V}!vyF*9 -zqB&kN)Xv&)2#;;~FoD*?2j~RHN(=ZHS<&lXRUP5JD%SN)Dqj@wwfY8II<-Wzmxb$w -zn<2zi@$|3w4LTnFfxq!IcG^n)*^CSBtQ%CIF4rk)T!Dg#t6Ec0qx0ey-*2SM=$|D; -z1(tiHbPbA`Aa(U%x^{)!KH&i~#w6zzQFWD83Z{9x(J)ekrtaEe -zn>u{?g5*X}ggD$PLpGWAjT;~)KpG-D;#4@=CMST*dJRT2#@;cg+h1rql0_&jQzM%`wGqLeLQ%83?b%*%Uj#pt68$M -zVI2!?fsKvP-fH%#p^7``!||RLaNQX1-H{XFoqCcTrR%YyYst1g3f{4S%9S&(gU}4N -zPq(5`gjSK-h$VU!C1?otIu87J4D7J-Ww1zf^lq -zoB*plY(OErW{v$cp!Xs+7RfNQ1n9W~pSsQ*5`VU}z6{5_0N^CTI1{HpWu@eFV+X4TdO%sokC*M;D2Wafhoq>%Q@6qMg!na`YS*-6D)c -zJXu`#QE%K)youj6>&-;6XYSGu)F)#0vJX*(Sfi7+I(mfRyo=4P5GZ}vvUM6Es+(Wc -zRnO#StYR$;!@Gud$tQFY8Ay_Jh%hppgl##p6t)bWapDKyZq~{dy-co5wO@`X>n{H! -zw=^RE>z88=8_0DT0#2}nHYJfM7z1%#9#}kll>!sA?R-GBQ3@=lLZz-X{~IBLM%tBh -z;Y1<1>Ops-Bwd7Q!Ivo1lccvD>z3wlz~F2W$3GSYlEd_L_&0#@0?~j~93ntmMrS-( -z*2CUGho^n)J+vtutI(J-$1Up&#y@UJ6Mr-qz?S`uSEQ-tBYU#>Nj%_bv#dmXgu;wN=qGB@3$8ubp4j% -zVzZ{`F||=7?R8o!B$6=jBF+h5l#R5?X#(Xiks_w63CTXX=4>>du#Ar!Ex>Y%_Y2$` -zhu_l7ck&X~&z$bu(set>cGF5}E8eS-xIvL9c0!Gb3t3O~2|jQ$rj2t`o5{0*G`h3J -z09w7(*Yxm5S|pyPzx|a}b(LrQr??jv8beJ8dPtSf$18H?Utia64amxX{K$8p0Pm}BL%z$0B -zkX0ix#}`$9`

(R+`Q=8N|A((y -zm+Cl4VJv&hnq1lhNIjp@KD!x5;^bCE0z1Fn=xIA3ylL++a*U*I_@cXCb0}3dF4FgCWre&{v&JRxsUrY#74$ke -z0NZh;6#WB~6#8Rkgi`-yfasG6mgSJjMU4`MxoBf21vbqB9fbga*6hxtuvK#e&=hk< -zSu^N>S7=wm=-|H-?pQbdhc!3Sxt~Al+Q} -z$^6YGf^y5m6 -zV+Sxb7DmI}lilSJZ|{$;7psN~?og|_#9WXF&DE06bHFguh$x_ca^N>qYy6rO!B^<6 -z$czFR+uf>l1>L`>U*O*MMuJDzA+mBU;K#>I1Yd7-zD-)VL!{`V{h`|lrOmC$)q*YSraxN1L*%q_?j5vWM}@e&`>d# -zP96gxc0PKzxty;ZuF~9V-5W;8PGqFrH1Kdt-Ke_ZtyqO#l}p -zU2Luyv&tA~_@(}PgnGEJ3}SmI9HgsifdWI#siuoPW3`YQy#Yig6BC_raDnT5TSLlQ -zkJ`$M$jtB9@nd1m4pQ(|hFU%g4LzM2h?m8WSNt=*XC7jCmXM=SGN!KmRyO7>!!&o1 -ztKW48T#brv;!oca&J`>+IFS|^)#cvSWdM-T*hxex!_3jv8l043s?CGEBB!iC^je(I -ze2{8@=fqEA1LzR7U_0lo -z3%?J*Kn*B_jUZv`nMbt*t|dnd&sd=ThLPz^b0e`-p~Nx4oO9(RnE;mlFYu(bHOg?( -z%N7y@DdXaw4c4tC9nskx-DaJBHS&R~EJ)kN@thX8BS0)3&nWdh{3H@#Ap=Gi)CNeY -zPPHUCqR~7H3$u`IwfhEaFC%C*ofuN&_B2;r|eU`fZLBbbs;)ye}IhE!a796(&E^!Fc^!lfZTM*qRfp1;ph$;_9~6Fa&8d!>>%Z?lH`vsu -zn=l?S7;suow>1EKMKQISo4f+7#1hGVvH~p+AOID*2@9hRl-j)oow_aTcX*9gc^$c$GhwcQ>iY=gzCU)eCH7-Xrg8#qwOpbW3f;OI>mFKEt)QZa+rk -zv;grSh*u2hy-QvGt~Dq0+_QD()8e8x+P+EMo|XXBlj0zOI;mQ%WfwtKpO~`{{g9Tr -zHtZbdm$qyk0or?}-U#yrvza`2l4#s=xVz -zODaEScMN!k^{@%*9Lod^{tRv%xAo}#&Dx1+qK1IjM6NCrIt)}pX?O1@_jIG;B_XY{ -z0K9P-K$}oTT0bH3hmw<%gatQ9moX83uiORO96D2+<72E9EeCg!tVW|KN2LW9y?3Xo -zhG{_ng2f$T^yDTm-uIwrH1YskORBjzUMF*(vTue;U*Km-ai-N<4Gh)C#=uD%1Gw&t -z{su@-ofS>1bP_JbGf3x9QS|&)ho|j{k;{PR(D^kJn*v?cFEls)CfnVN+D9KIskw0n -zsqE$iZna=h3Csf-i`^)dYs6N?K8Ri?U@?rgG_JquE8DO5sPROY>?(TbIvRD0{gD$QjIQoTaZuq3mrs(=LHp6m1g&qg!Dg~bC|=_(4Xs+Px}*zen}C{WE4Ks@FVuzs$kxekfpHHatr -zG@}vusVc0rbjHaziRQqdhCo6GMp9&GmS8rCIYIY?r~UrJ0wI7=17)$%o;rc^Li~@b -zPe%XQ)baEj)L;Y|X6 -z7&hNM4&)=CCE5w`9=-1-SW*NFpfhmR?JhHEy~td|70smqpBu94n1-RYQZgVnI+HwJq$H9 -zY5SR=Sba`Gn~J`A^w}~bJ9psFk_6WUfS(aG;VdTCvO`@()(%jpU@9AY30F0YT=XO$ -zk4!2R=2!5?c18UREphjNDUS$=jCsA60TZd{D2)#59HtR -z-=Dt(ghS~zM=K&jThpQmZr}lt@231tIdZ4F|0XOhX63Ly!37PXcRXpbRag=vBsNZL -zl%qWngdWNk0KB||bUsZi*XR}-Lm?}YLS(!sE>QFML9(iLj=jO^2V$FIGb6rnv&wgF -z?KG7GT5zMWlkIaa9^KT(kT} -z=NpRc!QlGPh&g0>NokJvau{jh;&$*3@R6jI2V+K@&mPZ(G97HedDA{cv~@6MC$P_| -zxNXwcNLwlFc$NG!|I2kahOWx*a%TgSJk-GsaktJ6CifL4-D@j21-=q!2X8bqbSt6N -zWBc~$kw#i;RQ1EV7k7fJmp!7++ldh0?_%}Uq?Wlz_n1W70!A~A-dGG9?`T5BA>)x1 -zg;u2LgLTVrVa*qeN_-t1L{;Qsk2xN -z2_@ME=Ei`O$JnFY1XwFGZ*+R|$9R)nKOLXk8#g3u_HhKT<6yQK2y`*E8FLF>(uOLw -zzza#VfMJ#i3ExcH;~+l|wg_OyQmr)FMx7s5@^h?Sy_;|(fnh!&huO*o;~kb3w*UaoIiGFm9Vv|#CGsFgsy(*NqDZ+62xoqx -zEkxH3a4G+i*E57CxtJU6?K2~{LuKaPC@vDc@%?d(MOxXg&Q_qD36Ui!Q-SV4_xV63 -zg0InV0VuNilW&g{d5i8-H2v-;J5@}=#Ww7S0={`;kU5%_%oFO?mHbMQ$1BbU_7tO7 -zz9G`f9t_J5x>s1_$40xjai4E{#C8sQxUWJF{76N;v*b&TIMAxbYP0BtY&Z~QAa8{l -zes)C3;y(QTH1Y|Z-!>qj$7Td)6sCi7#0k|6^B#?|iRtT6Dp12XGSZGfOJVgEL1dEK -z<`6nz2{tz;EJ0@A)Fwf}1VA&|SI)0%c_%I2Vvro*4eYA+>hl4Xz5?>Q2|Ny!iEDJ; -zvihEWXmMH-06H+R7WP%>Sp*2mChEbrjT3t4=?2!tLt7?cs^1zCpPO`bdmx$NQB)ch -zmLmr|;xQCMT>mXq;7IQ+xwR0qw -zLn^2*GVaVMEA;@7+Z9>mTp0|Lf*Tq(K?2|J$xb@}R;2EKsw=#6lnt(GQ_p_UpPHV| -zs&XYrv&tr&zyYDuh2}W}l##n6EJ6yA)mdkX#H(CU3{!G+XhLRhM0-^5uvVAo%SkMS -zDgvWnR+5p(3Dh6vzt9>7xX(Rs50_1xn@Gc2IqVLih^-z;$-_%gcmQ3h1{+|| -zxg(WN)SR?e9#7b}s3&-7AA#Q2<`bTHo?7PLT_?z}xtq?!jXWKv?qzQLqUorB^U@4r -zlJ=rAr$BESIPG^s3Gyr84Hck;ac(uxTAy$?=E1CZ0ej=v3L^_V;h^c{K7%Kz(QOZu -zH<#`WS3oby->#93@Jx9Oq;r835NZ_x28XFREF{4U%N%x>7gJHW+nK8HL=z`kCmL`4 -zipyqXiX55g1EWW(>57oW-yE0kR)=_zHPCZQ51m2hp0nK>*?*dabk^Quaj^TJ4{#_zD)hv+_uge`) -zkJvLq0~i^UVgh<#Wr$1lfcDK@C^Sg8tS&Vmp;woI?PXR?7ji9gEfxWU_F08FTFDb9 -zM{{00@t^DJ=2a1Dv^=k)Y4t -zKYqYZ>BP*!4}*<)r!&FBI-3mrhQMRPZ9_7VXs7=HxL!mhSL213!ACLrC4khIm<>Ct1O2A^IJ;&)jVRgQzG!rwe -z!?T@(rNEuzs1m(}H$UE7uOh(>edSj9SSGlFUCF=#{E;6|r`{1c{bN7|Y(^$P{Ij6o -zufPL!?;_kE?&*B{Qve^#cgJ#{tet-Iz7;3RcPC0JI0XOg2U*%rGSbBQI^AQ^o~9~v -z??3h11DPvPhU;NsoN$JIC*R=d9Bb^)$Wu%*4D9s?L4@5D}WI%%$!g@l{39!5SYULo3!tjFUE+h2HTVXYOs~WB)lGcbZOc!pN|_j$#Y-dJF$=z%maO7%aVRt_idG+- -z+8xQ`?$#Lf{f`22z`}`i3^x3(vCciFAmwyEkDY^K0ibO{fAavM{ErQJ6@?)uFPJF@ -zQH~{Vcl^oJD!8Sm1Ly|ndu)Gu6x1s>!3Y?0XQlxI)-Lt1N}DZbf>x{MBR2@g27`#? -z?hVKzYEmqM=)3{Dk^Gt_N^({aX~@)X$qWdCWI@UIugJ-*f>k3razMGFkolcWoC~>e -z=AEKHe!j}^s{Zlg=XW)0)|u@#egmJXkVXD0L&_W0 -z+ESa3P1}lw{cE!)6502t_n=>R)MuqD&!unf@&4PM=&v{MyC0gtUTyTBe;*zeCTTXSzrpsub0Jvub>Jab1dI93TyggMG>eYATn=v*J|*QgS10AV3CO(G0B -z@q9XS&1B#Hi&0)O-|R0t|55jw{p@~E+vDTIPQVk24R$OufMb$odN?CUIYB1-4`Uox -zMvV4J#{WGp|BuYsHT3`LCcEnd(Qg!%FOKvHfVOtGd-|IjehrScSc)G?eBOYrGX08Q -zY)RAee}t&r3baW&8-EnDGM%&m0loUTE=`!z4}ph#?0fup*RP_66#7!uqF!RZgWJt; -z28U`3A3yY?N24kTX934ipmpqxpd)IBU8G$z^&?9Pkv*h1{`x6*c$sNjkGurCR{i++ -zVK21VCS7m*6v}o`KmMKqId`42Z|GuOvU~Akv?(Itozd>6bG+-t>7Hjs3moiQdVq=Q -zzWCqi{P+pJBzFv6U989ZKi3hNU*%zW{Q5_}x8Hw!H$9FcZHsusLC&Oq+nC6Ye|`+h -zKG_fa8oqQPKiV$Ij-~5={je{5{K%fuaLksGqB(#Hu5Bx=jjiG7%)%Y_1DFi>#&U&E -z<+dHB^T7QNM_OS&l63g^Cr8#%Hxr=!Rinro4)OR(^zS0@sw~ES%gnt0qS>++_e1VT -zh|+#00s8ANThct8w0C~~vS&3R!`+u;ry#2oXMJP{vGU34$5r4ZME61(6)RV-Lhs;b -zp$R@dK>fi+jC}gr)~B)n^S-%kI*g!cE~puSS|x^4(;d%)O6$-hYX)27{kzIzn9F4a -z8fwS1&x1>Ih4;pKgcuZz>#AGnbq@Pz78w7|O-c{dkcrE7bk4dBi$jTKk6?E|IDL@j -zI15~m#g?aq0Z852*s9>Uotr&qG3n#=D6 -zIhKBQh`PS119hm80g6}u>6Q85x|dkk#PzjE-2 -zb27&9A=~wTxmY4jYe?a#_m7Mtz^+}CC4%w=17ktUZ0&{JR5 -zv7${lVdN+h*BCyB&2xP_d-?p=9fHP+YzDF^PDy&u9yC7;@tAoOF-Xd3*ADM`t`x)d -z8>4qwY;HQa<9ZWZ9L`0eFx(Fx?<_<+E^%Ht9d7&&+;=5Ds+3ce(6Uy~E_nxDnG(*h -z5&^QaEKx=4?Vx$!d?|y{p`2brGRQY)rXO1W?J=81<-8cUV%@ZGk)0KuB6GcQY)Fza -zfOXMej;+KLh(&$_pjxO8uQ~mcI`ObKtHdQMEvZ&R%^Vux!S#olN%hj}V=?c>e*xw} -zU=!Olao0_8`aI@334g8AP&_@+Wgt%#IMlTbmxOD*6^)QmK^I8$KW@3rnFP-sW5qCK -zET-5qg@ijcW)H6Y?SccoA6pH+@(LAig5ByiZEu~k(@hg5)rc(cZ=&is7zFYzwf^Q_ -zidrl(i1$;k?r8| -zL34$+gE6Ie!b^Ktr@O@}(0NAtor}ZW&inGtNmP{|r(y^oIhIRRfk})+rF*!N5RBWb -z_MqTp`o9&pG|42Rs72d>+5--4>eeF%pmq@E -zJ((erB|_twnSx%H(DUM+kZJ3Bt?Rcm{l;{(^j?)_&n5{unLh3s&gcFz5tbFLsgz5q -zJQJ6a_R_MsV~%DJmr$#XR|*{YNWf6YFX_33Ud!a9j^J7_>c?AIMEwnoHrSGPvA_V> -z>*sT@Ma0N^{P&5*6t`w%GS`@(O(pzDjl0QU@;&+3oCp%JKM#vWgGcnY% -zG-A9A0$#wdX{A|Y)A)~e)Ti=u++6<qGc0ov?u~;A!c?1AXqn)GrzJ -z%4Q&-!K#Mo2ZxgX04^Q8sDcpzf2*sOr_QrsYIIKA9*X^RGK{i851TZ&KnbkO#8;vJ -z3y7mS-;y`fC~AZJi;-^T-vl!E>WVz|;?1Gz<5aC|89}*f_=NfFxb`nNKO4dTD;zY= -zM7FB<#W)nR#oV{rq1uQ0I_T$6V51(2a1z(+QFGtv_4eQyTu&@UDoJT>C|RJTqxkCe -zv2Kv6sAP5Lp*VsM65M;Vj@cHHiB`<)4Y3!vv_1nqlh&C+lki};c<@apbd<&==79@~ -zbty5r87MMzie)i15#S3GYOvNh*`zQMZ;}DiZ!-eNZFkbt&$U~>3$HMbWa -z7?=s;kfCmV{mK_-m;mVM=Epr*~+A^X2{X9W1S)9L#^dlNKW5A4cUsb)ugCBfV<%gaZ@N$ -zkdn3K8zgY*V3m%z{tzBPGv{FF2)@;u=ty3K)Ig+VWvo-qJwcfYVKtfWc- -zr;ut4r=t(k!GHklgK^1Yr@cF5PTy&Tt(&+(Su1PfIUB;O;0d4+U{bLwCsh&Pqa=~Y -z^*3&v= -z1o1LV!`V>MQqoMv8+98zDC+M1+^sgP^Uo-J)ps2k);Kir2@~3iWWli3xr+IJG^7$d -zS<|7Pkg96~`3z6TpsbD|UC7;`3pi4i!%A~b@3{i%_Q|M8@qUW6bvT&6sPbS)ZwK2m -zY5_=v66Li+bx8wE9_blcJy*8bR+2<%0(@d&CWgsDvSUN7!k+$7(TQCA<^{aH18W62 -zAt=b^>sy29$r4M&6)6Ea=acri)rd|0Gp<&G0N( -zF)PF@qd{BTtbw@omt*1AWW_xGx|!hmAzCiMW(T -zwH(u84ZeI^g5|}a?@}oV=;B0fyrce(^_OBs19l)Nk7kmCTx{4en2pX^C-n -zj>7RhR<1e)!G;e|Gd*i-0WVpE@L(d!6_(yf^Bno^Wa_PeX+H5Q3_1p6ZTcHUyfQ(* -zs`d5*F(oybTXroq&_WI{Z2O7rb|k#ew`14*Br!J(@wp&{3b14@?=vbw+zaTJcMg|& -z;GSYdea4FXk}$GivH(z#glt(f!;QHjITSAeA^Mt$==o6LyvW?UU2jF+Mr>PfX{l9D -zr%DXOEwV9Vjeu4%qgym7SLiL(ePiwudKKqQD#SV_W0dYw5L1$uU)(S)(?rV);g4qL -zFhu1tB{@QlpAZ}Byz6sJAp6l@YlVMTDse^8(VvU_q}&QD5$!C9kO=U$-23nE{|LM4 -zLVNsXARhuK!!Q@TBq~rAAan;-MJz(}uruNrm(z}D`?r`~!+hVkzZ3A^hw=?u11K7^ -zB5o!^8n4pW@VT!Y3~=_M9|{LPcxUE@~M;t!i=sj%wn_ -zbm7aXt*d8#`s21A=;>^sEFnOfI5;6?)Yea^PB{XJ55Jw0?wu=}Q9HSCGc~4;W*lZO -zFJX{sz~73>2MNTJ2?#i&2N{$IothC+x%t2dD9I~DKdfkbhoav^#pXf2C4B8{85=AM -zS_6bHigrjJ-r5LCFgHCEaZOBHE&yf(`Q0j`5eH_1`@?bnK?+X&WZszDJK%FGD-9*P -zYj}Gq1zSCTyRW?lePEZwzfG7i4g>(56Ds8IFD;#&JXaLbrhK3{kU -z=s$I|8eBk@qd#`;jG_l9cYwmSRs7{s0c{vJ1Zb6uf~{aWaWVWyGPQc;3Dqz32Q8D1 -zG$qq+EPE#8_%>8g1Imo;%`qw#LA&-F-xyozd6S;wD-zb$4=)NL@QsZI^ -zP(@aUwh~N<^14gEkX{_ULdeD$W^&CGTwnmqZV&m8v{W=7gg? -zohD8+|G=o#o6kswZa}eHb~@M1h&H&3(_w-ZuHb%#g)<5~C&#Ku^GH9nIig%?|~Hi8+@xXrBHNm0ccYT -zeZr%(Dty9EINM{a^hbXR&cp3}(m30T -zipb*IyT&(ol~`OD0sWLf&@DeAOc>nHl=Gm&MH9>18*Ht -z9EsF`SwgvyDPc4&=iY;#N9uM%l$FISa>ch$rDM^5w6kq~W-O#JgV1$z+G8jy*#iAC -znSTYmE`VI`PF^F&n33S!tzhEjmB-@(S!HoL(p6gt04ry}EmqEC(T$lK -zJc59@(|671Hlj@#(kuepu9u1gW|DyCgLYtLKEX-!p)fGy(@wYprhXRGxay~yMi_M)UI86R|dK!KO#G7I!UFP2<7w0y%b<&LFk>e}*Y`liMFEwX^mOKD)KXB!H0C^(3gj?zI@6qvCu#r<(I55@0&PWYufW?* -zQz|NM01&cRVe%G?#R@2zwCSu|kZ}>(;IYYAe_QM4gZ3I?SV!AhEt|9!-VG-V1H#Y2*n<~SU+_@Nao?M`4*)WDb)QjV(?6mV~uU^xSG0hZJ5EAobr?PJR{sd-Ku -zMg!UcZd@zHWavsL>LURUNxs)7TA0^l9I^GO&6}KRw!F^o->9!GFovb@D>U4*0IaAz -z@;}-Y#66dh`N)bo+#S7Ratk!MC+Q*Xv!1+BA=(c}7=~sXCG1gah*0ySz++b2M!LBn -z2h~Us8ZvgZ`kZ_@TJpLuX^q~j;b31;8vmvD=|5>7Np*olc~B9x?MkeUd0ev|{WW83L+l_oxD -zA|CU94rWZM{25XwefcXqQ2q)@L6Gmw-Q|0rFn80(e~kV3kFl4#BO`jkbbBL*G?J}qnQd|GHiw+<>k7d<`$?q&5tJ%==}Ta?if~6P$IoP5F~XnK%_=Mr -zFDtUR-TiJ!$jIp*Ti~YHI$jPYUH5G@{qq4* -zBQ#saGK#vS{a7;TC`Ts%?BC?Wo4(AWC}}Qg0+0YfzJ6H_gDL<1^E={k+%`Cr3tZEa -z$WGqas!n-XCLp~5N5WD)w0#;nAjRZzE&Ti64CMlG;W+W2Rhoz5C5DQl$@%lPSDkBT(Pb0L%FE -z0rk<^ykMBa(I6&T1PahABGaD$^JjNAih$W4+pbVmj0SFibl(hwn#1YbK#PEF@gk82 -z@hNthSk4gBI2~#kSj}d7va+R1lgr?p|TaE(J2k_>i3m -zn2@Bd7{8Qk<{f=^7RuUC@2zbVBNGQNJBmuvk8@XBbCO8{F$ercGL2}}mzL3^k1&45 -z5x5Unv9vT!rd>#Y=Iw!+b`H*a1T{VdVHPD0BB~8&(@IA*8!ptAsK(;70e@@aNg-$XsyviDIPr -z=?p74-X?bwwwDzAOLdre_EGoBfwev?(vy!6Cjj|unF67Zu8qQZ##DT(Ye`8~p{q3N -z%NX^Z*52n)xiN3>dPhZd0lOA@&v>~Rxf>KoD1h|&Tl8*8atQitNdzv{vh6WTt+e_x -z*TN5atm^=scpV@~b{*(ni%0t7wVGsn8KA9m9oS#5K?Wpw?N^u$R9EfV8Vu@5e(Vf4 -z1eTb}Fnnaa0j2KHX=2eyyEY^n(d~-W1uzne4ayA5=Nk%kK%!utjj5Qz&_q}pNde5V -zrO5Fpa)qO$Uh-hY@F_s-#+DNlX2VuT@21p3T^)%+8GPqZv%a?Ce<&wJhxN6#FrJIl -z%=YP~DVct**h|8;enKms{VhTr@wCRCyE~FIzt{SpZW? -z+1vxl)|V5)_2v^Qp5`uX28`v~JV1=bjq>S?JNdAAzoDZ3Ea#;_G1FrvZ(q&Qh5Rdu -zHb>NnlWRSeySxHV_ssI`e5vP@kGPf~SE -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 -z{sBq|phA(ljK}s%+DP;L -zE{LKy{_kgM^{Z*?arJj49Q2V}N!UaodxZ>;uHQ*Hf7;G8Q@%)&0Gsw6w2^6I#hNIO -zPHuUu;#ca$k=Z1haS5B!RRTP6RuDrh-fzP?DIrv7Nqq+?DCH7Sg`1I8Yt3?g`^Hj< -zn-~;ptYw@R_r%6dECK*dwl)ue4F_`Iet){<4SibZ`V2teM<}Cp{4by09Vpb;9nF$v -z`DNIFWCXu2X2(_;mKhtx34kGx+45a!Q$HOzidZ}N<_eC%Af`=%aMQ*N#>W2os)bS(NCS^*kg{geFKY=|}_FSSMJC{pI5dq5$Y-GWN^veWP3 -zJr~={#6yuT&fbi+<>}2y+Z`L%unS}s6{c*Gj9eHe4WDubU-x(OCxD%r?Z$*YMGPU~h)y9IH(8?DW?J8$g) -z?05Od7Y$h~eS;+{*zaIgyA;jH{EAIPS_j)-^$0y}uI>_qK$0XCc@_<=-xv{dk{kzk -zM{XJT1u>+csQUH)i_%3{K9BXwq-5i*`;AwFci^L+?jVFN6y%E3v2XcTr7!{p` -z7xTA5tYiJ7&L|r2kxvYfO4N{f8V1q?6ZZUaI=3oIU82&%CAoxxElLpnOq-@9>QJDH -zK`POfUc8|qEofE~;vS%qMGkDI@Br>anu5H(Ns*gB`9);j-1g9*RB(e^22V?tG;lXCtZ)MxR{Znm-633*VqgH{OV&@NEi*uRkUDYUGxH26 -zSH(Lj5P^ao<7h&YO<#Pf)fNWzN0PMTo*vm(2pS0hQgX$yic?$j5GUFY&3Jf`S!9H~ -z|4{1^Y>C+_f~wj_EiIVWPliQbKW{)rWhMnDDt>Z$d%bxDQ9mYkj)9cby@&6)q{{d=MTU&)(cN+a2x;klsn -zD+MAjC-;Pi$Mhfd8q~yNnvcSBeB1j3l0PHijxJB(8JhrTWs6hT|HN+a>%l>d!a9$r -zktKiDJ9HHTb8dqq7-4^W9>#R5%A}5M8@T*4PLt+6$xCTWj)P=dSGP`1n`QLh -zR~(22y=Z{(YGUzbWNJzWOaQx0OxNwPZQunk -zDWEQs@dvNHkzmcf0&8wPYoU|a|E(YNIG -z&fRFpR7iHk27JvXgZyB{L^G2c`wD`FGHnP;u&@9yf*~lA2!_U_ -z^U;>iAl4TMZT{94Y5@j1nOjZL-ER5GeYxVX!L20?bSsE95e%Gq{bjUnp9#hRUf69i -zx<_Uib~{r6U~$BaRW4TRM(#RYhmpO32G_)^1I%sxSxvr4+A+tnxm#F_N2X?G!+7`D -ze?a_XbAqf?9*y8jv)+IB3@9YrA^+8eApOHFth5EHXc>kzR1t_2)}X8_XPcR@Qnoyx -zg%^*~XVY90_$c0hkv!U-QVsT~Vy&j*+B&#-wGq;g`9+@Vw?`PPB$)v(WbJ59p^sH{ -z!X%7l8<8Yj_A-A7+T9&5lCvXAavFv}UaJ};oPa1HlIdNvD=h*2`vmrc;b+j(9Z!2< -zB=N`$*%F+w*gEVeKor7#@S$td*9jU6KA!_p$GR|VCQHDDnc-bQREgy!30 -zSHu_NTB2<#D9(_fEQcFKD*CpKVM(Qd0vG+`yNQN|1I&VxA@AU`Y1rKPAxl#@rCDtS -zEj91RDLmLIDnekpuP?MzhUARf?|R-R13l~~iJ_bu+ygzAYZJ#KtU;XJSTSsw-p*xT -zjQn%}Uy5UNVjNWl0b4B8tZV=VP+!vD)9+JIh|3<=U%SJnNo`zdUjKtkta9xfC!RJ&{adgMEB!cD}*te%-QJP4b -z>L9&1(Z)D9qGxO_ysp?Ad`xpnRnSfk&;EvS)ewGeZg5*p#Hd*22Qn*?lkjO^>GbIY -zR07zpOr8d|OSV14A}X`T?CeNv1d@U5jHuY#T$^L9)e(MROiUt+==GxV38M_pvVfLj -z6GWFsj`GlpO4S){k=@-m7ve1sN^c2h(1(U42ZriT_+8X-wRKP|g8#|OJdlUFju -zH~&=!i|E#+iL)Ft=_YL`i(d)7UBqaG7FB}}V2%*P(=LUa$5vn-a`Hk+$H=C70uGIj -zq*Q}^zQMX)ph$tv*D}Ki=OQ6E!_Gc>@g8?17TAon4aoEl^u)b(M?`^qkLT^RkbyV*`?do -zGw!|`UAn|}XOuvsYin9yz|_#WhQaE&f`u&S%CiX*+sV~=F*AEd9Wzqn$nCn1M9sq% -z^amiSffRZv>+xvrtovKf7pWZce)tiFHh@z|m`7FZ3`KUU$@vOu;dji614bZkyBb?4 -zS4M#|p+$ndCy}NeHEFPkGZftI8i5vgtPK5!CRWlp9DLG~*SKiF8(fjyr4NnorvS#B -zP9YP-r1n8u$g^^uY>;*sCx>|JL#~2+um%!7vnHxYXvYI-j=QD*pHG#8Tg^`Js$sqb -z1zmo-G4IoHZBk!Ua5nv6AdOXcy0y{}iddOVkj@%bJFZ9NzzmO-c2~U{Gs1pvk*-aY -z52B?lOfj(y8IYMi!0w7*cWoS(@pK5N-8!0K| -z-fj;@!;{w%-BOlObH!n7g&$BaJ^CA2#GJx$mSfknRT7f=JWc5AGKeZ8+Drc6z0fqb -z9P{1Vr5TkR2!-#s_m7`$5Dq0Zbifv>;U3JzO-w7c#>o!|##6}ckGI?e$$5nw1gAIZ -zwH&Bh9vbK+b&^4X+;Yi-LMo(1Ku!s|oI1dW%GDq8nB-$NT%s#SYwe8Tt&X8>LCwvO -zwpI$vNvEvHB_nDBqS=5QYKdh10Qt(ZLQ0pm(9?7|dGvxsdc{cP`W__P_IA`zA{Za~ -z__zXT!D*$Z`cn27GQI<|UhT;R+i|6tGbmd!y4lULj`j}u$FVG71B|zrXGQf$CHcrg -z=aL&WR#wsUf(a{opD`yZ@I|RCKw;Os7(`UMmyDD_C{A0#rjcv@Y&!HODxQvzioZO_}Cc7N^V(#O$!@{ES}k% -zMtIsAC2^9lEfj0f{lPT$IKKAk^A)9SwM-v0{_9=*s&1Re9qAaIP$N8~f>GK5uYT?_&a4 -zZM-0EGaDam@X(IF3L5*~Sf>lGa%j$Y4CMDnB!_>o=nXRJ(7CZ3JH6AP=)v?O8B47K -z!sa-ddA2jB+w}4I9g^~fI>fhS(Y?`fYL3|e+u(j>3H<4w2igm_5umE@M>n~es+$Qs -zrNPkrKAlmI;+cI#Ql9H0IF`7&C%VNKk_N6xFkNeBt4rg2{AjWroro_L8YykNl*fxE^H0~BjrpE%2Hh%;*al~=z>t4$j;-G -z1GpN}A{$jEXibq&KiT5{p9@Sl6Ly0asuWq@V1j%ebC;kjyc57Z9G%fkk<`!=sLooY -zBlJ>I8^|$tSPZl?W$AzXf-bf)>jfE;j_yO;22p>gI^+d2qEw!|0Nd>-s?1=|jLC*L -z_5+CEv>}Q$jegXdMoVdLj^ML*V8YV07rUr88q~!Ii|$H!PX@qAg79O<9?#ycOHO>VLTH4lo8Qr2cG{_%II#YX<=} -zMf@c5Xd6hc%TGPrQ~IOGGi35kp@Qd|$5M}}oQZA1dPPh~UYDQ4k;3S1@j3cdlg|KV -zaRdH_8Xw5foKmn%yysR*Sk|^IiEypVokI*-usleJsXB77t(|#Gz1#YOBPF`RHDN&u}n`1IC|4Z`Qx_L(vS -zmPF3yiS!9HC8SaH_Atib2G0@UDrG>)(ESqdPU(?=Nn2@BkG!ajvk<0CKC@bB$TT?8 -z(Joon8hNmFTT-Si?=>Nj^A -z-OUgfD^k&OtD+Z=Z-3Vjc0A8?hu0I)3t*-e*Az>9F)?tEoVX{bH+rJ1X|g_=n6Gf} -zk1ZhF&5{%z;FA=TDqv8|IZ%$>DmKrN`Nj$a(CQhlzO3tzVKQr0F%wt?BqTk{s?Np`Pp+{gn*LaL6 -zj|w|HlJ-72<(D11YX7&eXgYTqb)kZihILfi$3r@jRozcPozHPZfeJ7FnY4^rNsxTC -zTbGq-XHcd{CcE)vk`+e+hdY3#m=G6uEu&95CqxqXw66~*5h889U*p%g$QlpxkP02- -zcr)=v_LzrxDC;szpU1Yjliw86CJH4H428*m>zkI7=bY=~*uy|F38kp9uRtY2skyzt%@_PbSd7!8{+igYVmm-RSW~chm#xp0n1*)@G`b+ -zv1I@zk>f?LT^m|1vlFYlVnZ!qf9z@)Dpy -zFh|f(3$4oFfaH_h{b{*v1`gKrXPfX&tym0}N$GMJEoGx+zVSYXK7Ly0W=4(Q+%bvf -zrGlNrmdkyYr~zI8WhNiea0+H@cJK1Gy%+)i9+9#CY;Ubi?)fupl4~#6-p2`|5gL7f;~Hb{Y|IcMjhOs%Q#VZj}VNk>?@dWdKP)w!bBZfD=Yv22zJ6 -zr8c&*55af^PsYn_jwuMT1 -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 -zHL3mP9w2=s){c1aLrdCYHN4F+_akG%b -zaO$_m>ZzxVN$``3=WS@}7NuxTXUVX+;yx!UekR@l8>*I3eu0D5*^S^ -zTZTe{J*VfQq8mUS`XWQSSI4Ay7z)wZXGXfK?}C=$X|wPHP`|W~Py}w=3ugfdGxB1| -zc#*q^Qkjmc~=n(&4rGR -zRydjUni}JXwpOFtP6p1j8W)ec)~knkNSN6CMIcxeczM(L_QiQDO^iw5naKS=Ldra! -zj6xo?M1#zHl&q|pmG_l9rmZx1g_c>~@@g$b*5JWKiripPWFPL)BMZoN4l{qQ^%~NQ -zW%pr+jem{W1ZJ?g)Lg{j3V^c+8j4Nx1 -zlIL-h+SH=I{j)i8wF)BtrPsmroXHaQsh>REH~X&SV6`0N8Qs>Sa*z2+>WnqQN)Y&p -zcZH~_Vf~YKAV2wm3@0<^v% -z+UljYP0l8<(9?{d5u^50V8C4Zx0$o>w+ -zcjuV@-uySk!B1}-JSmz8HV29kBJC;MeqWR9svMf5H~XxLZkKi$edUOR&RyR1^+`rp -zDFhIz=kVUcH%;+Xv>fH1VdI?Bxj@X6A@w=AfiK;Bi*nm^5xQ*@5?hhD;+pF=LLk9T -zM9(?dy4oF#qm}QJA0UyN>1eq4^|U^CdhB4+hPlmgg>|7tNE30gPl82ej%@W&xh5}Z -z{0ll@7BJf=1Q0SN(f46F5Xu62wVkjWu_u-F^ -z!ZXe0T_kMUK~OVCn^AjMCX< -zrYGI@-}aRZNB?qf@7Lp(Ut+^E-9@H;zkcbjkC#`(UG};Q=FZ(dqf)8S3~^l>^cPTA -z7h39-N-v_6vP2F%TouEm71<58M@>U -z^X$L&&d)c-Z859p#cP~dqIeja$$>6EY}o50wZsX5wIsN0$kD;( -z---xiU8BSQ5^QwSe8z*T+JWw4K-1Lqz= -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 -z1RXIMkQ^bWQ_2N+aj -z4z0OzZ6hN-2_1bo(rPZC7@Ax+U%$4K-qGW)!oaM*en~xnefD>L5>!tVKi}L6&ypl> -zGUz1|fxEgfgRQ2cVCIxx2V?q-0J8mdF6@vSeGAEW(xxF*aYDyOs$ -z^?3vf*j1=FEPg7W#N<{Ec+}C8H&Y{d^T!8Y2)SumL1GLonI9}&tT!W#j>au1Lka|+ -z2gs|b%M;d8`8GjlPG==V)iI%;lWlMr?3w$|adAzS(T4bOO1YX$!Uge)4jI;u7QZnw -z(-5$==$Q^{Wo}}{`#vr3CN`bF&B5ww_!w{Ya%~I-hM)+-`WYW2*x({}R?RSz-uL@O`W&suA<&+wJGC@0WYuXrTXB -z|ISuWa{vbJ#x*#_JoD(=wCP_HYS2{+$jE<~+XxiDu4&I87*b&GOFc|R3_vS)la^A3 -zDPtt-QVP`f%);QldHBqw3#S8L+9WpCh;YX8nQct3#LMDx0a+)ZSO+LPK?(O&*wOnO -zX=CL$3Jt`y6dE#6SiBO{za@HLe~&-A;sW=$AG47Y(oq@X@?SSH!Sv6iH0|2kelFST -zm&4-YzZePtf~x&X>)rH&!c}hnN%kElc{#&(Bcq$#N7@8x52un`vXIXy)SjJ=biw*7 -z--VA(VG=>48E!fEF9W&ct*sMCAc<9a$YRDYQcMC4vq?mTG_8|Tgv$ttd_`0sR~Jap -zMZC4O(!?ztW?Z*4#87yJqpZU_^sqctARl~9$)q;Cu8#IoYwyY*`&`RMlLEkPQBd#k -z#7}5Jw;o;GMjG2u9aw34t)1>taWUmiHx3C`nfuHR`4YB`(wE9g_(n`RYh07hAFW#nZ%}{PnWRx_`16(3O{BT-oiT_$eLwQJyq; -zb%e_L4WJ7Ha|@h+d4vS`U`Mnk3UdSz=XhxP4(;ySC6{p>;Rj+ZOGfrWcDDUQA1ZF0 -zvU>}M1^4uX@b#s}M>oFzb8$wy(G~lu8_T#uH{G~$MgAr&TnJ7%M!k)l`?Bh~3H4J$ -zo^D3qUV(#v294rM^Z{z+vL|mN<&DL${rmEr_IlLq{yMP!EG^=W)S!RWr5$hx5Z$q( -zHI`4ma?*<9vZj6VRf<5huUBA_x-OT&7)KVJ`bl^`$BQAR -zLziFSk@9Vl+gv>K_TyJM2iwk7Z>%;MolO3`HGl`-Vi|+!5xF6YHvdxZa>lN2kWEDqS@AiSpmCX3u4(JhzSYO> -z(%S2%P=1YW=`@sP>^Np2%|8`E+f$s6)>BVnsInR5_TZlJez)FA{5hp`4dC-oU9ImQ -zzt(&Xo#4$I=7A;fvMGNN;2MBocp0N#YvMz%jk=FpdBS>`JeD_U5%lZ5_-wCH@oiK -zwS`$A{n{@@yphAtGApcO|Ni)XIp^PBe;k*0V55J%ob~m3nXlLDeEsp2zh4Lbu>mF% -zvrWPe^l$ls!oQ5>CwnT~TbKZ!mk{P>gXC{oB&ZcI!I-9<2Q9dhM!Zs1@PWb~renYk -zcCIOwCPulFh7nM4_rMYv6b+F7EJ`tvHOY^`$C4A1a3C~X;rtpw$H -zV~)~r%kJA?Aq+lv|Ervw;p4l+(1zcaVK<+CM@_XJKHTPpP@W(ox#L8xqQgu`%u>2M -znMZ%T48mend`cP$W$FmW#ZwOMbi*IU@z8#~IJYvQ-t7=vxm@V5lRZm+ZSfc{pVh;9 -z%xT&O+N|i|TrZsj^cW2pqv7K44XD5;8^5um^0Tp!n4pPw<+~kr -zoEH}+AOlozXV^z8u=TDjRLbbT$p0vQqrHuV*Ex1o&QXEJnN#B>BLUa?B4Q%iLC27S -zeS{t4hIhX;>>N%p9M~Ag1QaoURFA -zpa&ZF6>6WG=E>6?3t!R(yU||lu)hFQzB?tjd5qTL7xwL_ux?6WHw~ANz%&$5_-QJihXbNWrNVsDv$5^2RW&js -z@i-fx1r$Pgr3RtiFun|N`13lp&XU`;0Zxx1<+&#O4;n=aYnvG98I?PxFom@Ir8NeW -zJYRN3s%E+#mUm%evaw%2Np1do1Y0_LdDHq~_i!{}o=$Fc`g4Ha`LWg9iF=t#J@{2R -zIn&*tQA+y}P!XXge@R!%biRd+{tMk+zUPxGma;&dPSn133Li6_YThg^HOO;&`v$gx -zH1L=w6aW@?bCMb;AQVn@_VO9C>xAw8+gx9AH~>lMe3yBVD(`o-5lZUo|B!;^$13pb -zB9eQyi|DS>Bd#Wgj{5IQvgu*h*=iCcno6X@JyeI$fz6$t1oLP{n@XXm`3n69e(!%S -z5Sjz9oRg%|!-M=KlRPq1yh|AXC6@3f;%GvCDHa3R(xrr$BQjA*3GfKnH^*in;F9hNN4w#aVfK4TX`8eyj&zsE)}WS&||zLqIHC?$;aDS_c68WFGowpObUQ3 -zM^}coYyukw7q92Sc|7h -zf0jmHVr-K8C|-yRuy>}%%SBPkad{JE9+7;hp9P~x{p-Da##*ROFp=o^nqup}YJl>l -zu0QTdEx#fo$0f!{gRc=}5U;()%~s#J@p7%%9phfp103Z8$?(&cLmHhg>LD@4>oWf) -z{aP$<3&&|8(^l=^68RU!vx2TATo4ssG0 -zI3>2hHaDTnMpIqorT-Y;$`8Unzu&*d$#{FwQtD9abUBm8T7Ma#r8v`kkEz6u?+(`V -zUmD$F6SKGv9F{ffGEk&DHjn7d23lL0GN0-j^jAT%GXoNC?Cf@fpFvxwTW1R+fO?t; -zylgGc+=g(`?%QytIz2ufNquMV?v1%MkuECw`^N%d7=4q))yB)5PGqi-r*6bD8=4JJ -z*xDK^qKu+3^qz4XX;G4|WI8J!7C(cr$Yd$qbyOVJm%~feyBPkDZx#0 -z8ETOOw8ADC`ns1VEl7`BLlz$*G*E=?xh}fAJwD#wFGJ5`xP)o0Bm5G0WjHxHDu9+Ah*n`S$>GTiRMujBLx*Yk4ghlj2CR(nPVd!KB=IbEm`1Ck -z=`6K?V@_=C!H;=p0sqUMshZP}9iyfstt&Y!!&ZB>ZG|}6>pEIDyPIxkvhK742YH@3 -zjCQzk>cv|eLVmjOE?w4uJ$=KI*l;`6}yRlGnx*1$6D&e7d+6TAO% -zoLFbb79?lyC4eK?fylE17HEHE3BqRS4*?5S;3)Zm^`8q>h# -zt3_C>00UvPqA$Da#iilpU?k97?}_gJn&Drr-+$d4%=CEdJ+G{ks0FAbP)pN(-g_*D -z%lA$wtRkMVgTg!YAPFy)i6TDwYKkWu4tUAvgVl)meo4C0QU3C5Wfy6Eav!gDLCA<$ -zwe~kD;b_Eqju&0=(`(s`yCdbX^nd;ROV*4Wl4Y)kaRJoB4bOEGuvqzZv&e6fWo+KQ?ibijhdB=hRA29!M -zc8rI%Y4oKaK6ckXf{@M$QrLdy+=%{NZ1DT-+TD8pt1J=VGyZximHYjlmzKD@Lm$Yl -zRp2t@JCdWtk_NSK(nXBFnCpGncj?H(u0$^c^iqrB~KA&Nd+{$(Z -z9Ya-&U3LLP?x+an_wd{huU)=lqp1SDo`&aq5s+9XN)|YTBV_Oss#r;wKeJsVP -z51yGzGam~wU>*!xKE`X*uklUs;IUb<;o++y0Hfb)CuS$tU4b=v>G3KD(y}w#+9Nerp2bmm)dlLM93*n8~Gf|v%*HMDib^C_17=0bH>rv -z&-B8+it@OxGGG415gA!Tf?Ob@cWd?g+Sb1>5CLENuj1?b$^hlO#!ol7UaJ9kl4KyC -zEyv8EysxJL`JLzndL+M%9n2E0IhEkMJ`Ah?%-*AwXXF2{=)Z{&K<8c;xfIpw7RUxU^PxiHy- -zxn&u(tgZWZvyU__^!MBpeqgu|9M?a#gniB!%vxZDrl$N*@L{iDcB$+IRcQ2V*3SNS1tg -z6-N4}-@G9!^Ey^y=<(o)2x$;i^7bP -zafrIqY;1el*ypAkETHz8n|g%^R(~b`%qV(!AG&4nWY-!i -z5RVzPLJ`rF@Jr@!aHo}j%+e5wyf$zPnNL0eYco4h0R}HGo7tUo1qL>rHZlgc#4Ohq -zq(GT;GPRYFYB%V3)d}>d?8)(=ajpMWo(iy~>{uxmVyK#1LdEQcWY|($6FYg$W^q-T -zhw6MK3-0J8Y<~_jf)ZmS-4uAKfS5|al@}Hy*QD(j+v7`LAt>WWN%Saqc4@#P9vUnF -zL-w2!A&PWpj+B5S9AxzlD_#BIsQMT<{p3tja3Mq3K9wpIIb`3Hu{FJ -zE$DNYljp>lvIH*Jwr;exX`C}gHg_9km%&KjsN_(L_&`qBl#s+^h2bp{&NkkL%4?sBIs`z>9jY6OTz3-=d70%&V6 -zgI<0@pvd?YzR2|n*vID!Zrcd@tGPgEBi+C^UMyi5ZjO-&0`sXPyEX>kMLR$Cg&(I4 -zR{7QFdKJV&x)mS -zU4!efv+4QAbw=;=90Av~gSvZ}bdZW+kG~G@+}+(=m&E4Dotlb^LI56!OI$^b6AZ=c -zYVXsgD5i=vBU^P>;fuyz?2D_JP2x9<58=K7$ZYw(4hUTSthhW~nIz4H%MW!@(4c?p -z2cBa$E%?=bO<;@F@%3N3XXBXTmx*omn^=4)J2pQKVI3aK-1+Bg#5?rm1t#X79w6PzyJK~-&M!)X -zmQlQjb4J031bPwtKClo%7Jz2=0%u8D3mZFMqhW@wYP{T5OWTtd;^o(X7J4WH6)A~*>}l9aef^_Wa^?2 -zS|A0lFDku-!dZd(b=5{3%K1Y-aLfWzcR809Rm}-_&(h=NZfS$j7p5buS9J%+YEV)%|A9Lk^Sk&5k*E_q#-WRB6MxLkpiQ&KHC -z)D}iM@&2-89%wx!bzRzVfbWLuU6`dkm^0nib-PMoKTxvE$0aYh@#;cdDcPF|en)BE -zrn~&pD^4F3V-*U=NHn}`VypmAi!gOS`54WAkU8@vU4tsBQg#Qr^3^n=wW8PkW8P8F -z5$6|6s*ag>sdwl2qV=Rg1Iso&&lk-9wAdIQGIn#!=6q1RW*b=D<4<=C6Cj56%c@~m -z^X=7nW0Z8YimpqC9#~gu@#09H%rcJ`MdQGHHC}Y$=+>)yg`TzX8u$CeQhu=iP(fLh -zW?V&+Q8a7;tf)<3pwaBV4&X0UoD}B;7$YtPN9dnWC-wmjb0`3Ygr~^dZ*q-=BXg$l -zZ-=1BZQOr=ptOzs0og9H6Q?TUi?Zb+i4_)@$hUF}6XkNglR-Ql53q>I%o^V0R?CfS>mMxUTu07b5SE5{(1EpANrifE+*cX^qpLUqv%z|nD94%FwBS_&e5+qo{OGC}P;o})Am_9Y -z-)uZ{eJvxWxscM`BtJ$L7@4+Qh|ZrZw65iou*Df!er#5A71&E6my0 -z3g((@<@X+d|8iF6mZBumX%YOXzU7w&vo{3p)UGYouq5It3@D@~yg;^0lPS2#0Z(G~h{siXp627$9Ynx9z -zDAGja)5?m4_r#n;^d<|Q2CQXdYT^dWS2Cd+-)o%_GfLS{r(2k&5>LR5ORr$Q5mq%; -zAg^EsrmfjzP4z35WQMfoscfvYYH^S0?2L(njO2j4AhhS+gYV=`k~R+&OI3KLibOC@ -zg=LOUqxL0BYG0h7=$>xJ=OlF6V~1NY4KHl)rzcCIbY%~GN} -zmPM(BAO@PW#7RcXG&9>SEJEO=P5hlqv9dc|*X#mv^CAhy6;wHIOx;|RIrIu6*u^AO -zbk3(L{5R&M@`R<0mm -zSq$$~Fe1B8xUjR%U>iAsVH5wtHC#LF!)>%WDSG?=9-GtoXCF2vTF5V45@AEHGY^M-!EJhhJ@4TyX)IDjqYa5Cq|R5^@}eXQ;*tMhr<=dWi9Da^KMSM>eGv -z=q_xZ+w%RkRO9`IWrQFYnO|gIa^j07P1rdUhDSD|5-)X~B^No~OOAa?e)0nNxf;6? -z?K3vm*o>#u!^_2*ydsGv*+kP98?8q0xb!FOZDhwMWbbLtwM;S6`^HT%e9jnCmCAxh -z#$hyoaeY3G(U=JoFe`}FYURZdXiBhOt;(2GFwM=eZ -z#fP)j5zu+}@l#(3xdJG0x7~fJ;556eIg#l`nn-6QyzHemFiVk5$w<3=$ -zsQEWh%yNQ1o>F@?9$&`#6o6SkE8CApcR+vw`1Bx$bBwg8No;S^L5n#i>@ye*x!mQa -zNEj7+-NwCVN^A}mv$tb|uvLb?4bpAW*VOXD^jq#O-;sMmqnjx$*V5XVW1O{rKsAtv -zW{}ky_d*}G1YBr5icAP+8y}^)YJyj*BPYVj#iiYf_R&5offrDB) -z)@U^8>?x;XP+_M7zg^Cpilg;lfG#$9x6(-97dz2%<~7Ro8y|^NfGl5n+2EXPRiBUG -zWdZG^0^E`}rz>kl2*}d$^OI&&x;~(U;xML)?+3{y1ZSnCiASGds$BK(fKkl78oMWb -zsHBmou}lipt!N|geo-suSVn)t%VAy4?V+$|llv}q!f3K&1Fx=AyaKvqY;I*uL4+Nq -z8eON4os%q}yp7=38+#g}Jx2fcr$4@M0DAfKwIz^V6)Z9YOqEU^{I&WzZyr2lin>6z -zbZb;oE_CM23A#5;!EL0i0m4`MZgn)xIcfbkt(62tR`kd}ZPbM`$alAK{Ie}>}| -zASKyy*y=S@L5-*;!q_A$2eDg~5M-C{s*_QN!rF|KvDG54ojKU_IzOUq2J}L>lGKE3 -zC=}bNSBdEoL}t;geI@BhgPjdb9T?$gk9CN$U7#H@AjJJ-YG9tUi9N2n4 -z&WDDOe!jm8BOzazv^c%;hq3RHwHPY01Cx_6k%;f?sr*+ovg-uRpN_2SMZ_b`4%sxh -zVGA^$0OveC=Qb7d0Qrr44yiBFgSm5|25_0T7s`dBeOO3y80bzIq3+L$6kiK^O)}nBnu{(U -z+)0=@s3rsWK{D^2ckn<<+XN;&7Gat{Qg5zSCc3}h_)b35-&8p_>h*DSzF -z99_@qxkiu~<*M^O8QIv!FVL4lMH@%Ofx<|~uTF2xc6@VK7-2%##|^y`Bw1l0B%1(o -zl;y-ShzkKqQPpdUzlCjeUe?a07Bf_#TQZX|%E$Md1xU$FfDqVBf!LO!{geBG -z!(`SsXkTbv^V?&-RVWC$2zlz!e4Mjd^RHpEFw^wTNm -zWOdNnSP-n{;0fFQx_?2e72I}fIhL(2k_p;K{?evVQxVNwZd>CgoicgMHm4#p#71>^ -z;M31mHNl&MZsq;^_jh=Mh#>c;_s&)W>73LOr%nf{U3!ekA{K6OSevw+`+()EZxdAz -zjPER~!~EMX?jqX~AdWnjiyXpEAqJq}$Ub<|;?@2O6ofwF2n1-AQrjDwy~zUIJOfzB -zJH{h`u&XA|U@pdN4a_Ix^fy3~a4S?T0d&MyRP~6703=?#x5=f4AomhIsFtt+rA>GE -zj}$$OyXhQw?`zbA3nZvrf)=xp1=FRFMzPA^F#gYlPye6)t8RSF?7991&v?Ui-#R)x -zN%u8JMf=QoIa)Wx&%KY}U!1OJ#U| -zpPm#q?OXC{Pg!Mb=fTxU7PH;8-9T9WB*R87$sX8@ -z`ZN0QhP*QeP!5$@?VP^;@iVU$x(8|yxn%WmYB=nm -zr9QT_I`+}{1xI&}PtL0VB|zH0A0z=cct?EaT7XKtu`6g!AE!zp4iXiX9 -ze1Y|?hs9_CFK)VpPNxT)KHY$A_VM#=8I4ioHXfVVjA0(ggB|kB4Zz2e>xOZ%m;3Fr -z(&FBYYv$iRmv5n}nR0t3FIFVw3S=dDFFZ-rlGAwL2y+D(0*M(!>$$hH)>q40hDm%_ -zlFOT>d#Cqh)#l`Ba0V079Id`+F*mg#x)i@i>vu8v_+Vh$sAO1(*=$;GC2ZWgr?pVz -zDv>nYQRplS=Sgk}*^BNO?fXbnY_MDTCR@LM$u=L{a?~8M?hh`hMOV}QK=7yY@`GP-IYU!+?F9n=(zK(=S!2+TIP -zLLa{z{-qB-X+@9_rMYLqndYD!)pF#@J>2?fro=#kcaudxbBc`r2Ex1!U9K~~gcezW -z3reg6og~Dd8-7H;mqV=N{rAUT_!=3(+)513kuOv87JdKy{U03C6Kq>p@MjpY@=2vF -zod2K&%*#ZVBkh^vE`}JnUc5HxyByI%@%6!FJNygenDFAmz2JCp4WJWPO7C|vIPhYz -zp2;@kk2k>lc)qP-b%LCYj00YO++SaZ)j~bM8A^M3KlVLVaQ$ZoGaw*+2fDSy;J*5S -zjX3(`--EO^oZ%?Gvix8G(=4__*ttOejz69;Zf5e*rRSKD`x!v`^hJxyJdxbEwyK`?BO-?)xN$z{%SfBy -zzqRt)k8uA>}6AEBN$e=}X!~Gwbw@ -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 -zaI(s>8*dh$dtM;VmH}kQob$ -zlAq)Aq&v|dfpkXRq^cp*2m4kqW2FX>mdH03w%O0|xLf!I3F-~?mQCuox-%R;;yEb2 -zn7j3q;#c-%=UK{~O^6-SOma_`b496)?Kp)GgmImKmG6E=_e+_UM`XuRE_M&;kbNAndQWClF3Zp1JbmroL& -zT3=B2fz+*)4e?8x8S%i@hW{e53syE5We|iq&T-QLRefksT1Igb6D*mQ35*CCtXA}b -z3Q#MBXB_=(x*1G?D} -z#Xy$@0@Yjj3OYA(wHPh^y4rsJb=eb~#P8Tn1nrPEjnUH-;d!oRI^%&hIDPr_j6-}p -zme3t!UE&pSxu*tSf73s-hE6LD50esSYs6LyyCkOWlCgQ|K!trZVfE6ht~KR*>~oN4 -z4!wEOo@6FE9es0?o$ywj_UDc4_!U$e>ybVky33V@XF3^-s{8fisrfc^2FXw3UDW+I -zqN?6wd#k)gc#gUF=!G=VGB5h9qe+dGk<^ge*UI0TgBxXiTi@k|56sBu)c`6!;|4?i<`wlk|}b~a@u2#;+zBpFs$1Dc*jN|AGD9^ -zAi@Z4&~(T0KkTP7wp)~m&R)7n`ToVru2&&E6C{HQMmjEki>{wM6AmAQsp2mO{h9Je3Roq8dFzRCl&FF9~Vvj -z#4|D0NO+5`AQkB-rbnVD_VS{Ks6^`1LgEq=<7#$Gt$e@OzAE+k@1_4HU>2OrSa!u~ -z^FAvx@nCVb#rw%=8Qnntv9-yT^C6*J5>Mp6H_;Fewz?nL)kh%9jYspY6~$X*2n&uw -z&#Ov6pWj -zcYf<|ZAi$+5zEP~-6#1Oqx+n!5S`YQElloF;HE_!RetBzIi!uwdPI~(g7^W&J~Kz} -zc54t-26xH{R9moK?)3X^BSst(;k4SPDmqmB-2^;cig!ViiHaWv-?i42Kyx09 -z+!H=^tLDPkOdPr7wz3obKNZ^c5L2exJvOTt8y$lpIVlhU6f?arIAo)2ThA@o(pn=j -zARuhWEM#cT*A4$Q-)>Vqtbcv}u73ac>u;Y%F(jWmU*azg(EMzfWihTTp@|T_EI$u$j4>q{*8IhBoJT~xL!$YgXVg|dfE$UMN -zv7$^^AcV7pDN%Ky`bLd3$1j3c+zD78ZPg`hU9DWD0Au~@t>;QRl&Mv8W12**cBDJR -ztdA@j4hPx^7UC5dPOj2&FKE{FZ5p6xtaVd+ir)}b+>b?IwC*k|)$qnmbz{(7kDyIC -z0(TBS -zZ4H?Y0h^ZJ2~1%#akdW65}vO7dGyTeFDxO4X7h -z18$W8SCY>a%7BX!aF&F(1}*>A05hOB)L#GdoQ@PU1=J+FcZ%jCfwsy$pNu&%A(6h; -z?t=|q&KU{c>kJuIl+toy9q5)S(n(zp2Woy*u#zm~a(8EaBIMbS1@Xo0hx!SyCxHm# -z#v%YJZP#42M03CIDGDycV4FaN*@y_?W;OjwI`iDf<3$=}5JzKYXq$(1^OD^S3V@XF -zn%xqbIKbA2P<(>TjJ66|05*h*JH-1)=1j{EQG}|BZx}$CKj&m(Ll#^@xF>7$!Chq@ -z%_&tp53yUeV0KDJm(C5lY5#CLx$ZfQB(tO2cnKUM-L<1%n#eT-K4#g=>zx*xJ( -zZVlN~&WuU~9;c-M(L1<^{syM9wP9Ny{d1#stkAP-7m8a|F^iSW3o%BN!xfnjRIJ#$ -zYvO(mTuB;Fa($|3l0df<+IQgz?vse#=w`D1GW*QaTG`P-x2L}Cn!W^thB)k!s{h?WaP -zv6FS|o>KKG_j<6xN_G}9oo-M~do)(LCfY&!LuZzMqPju0`(?eJe1WtIGzhSy;8C3ua`QjQEo!%yH?|xQ8PBoYYmS)i_!l -z3SF2Me*if%6cWb>IN-XQgS2e3kJhb9);mxkZqkFKo&dZq2)+^aB_Nm8X-41tP2-8{ -z%vCnipyG+_Gv2$TS7^z;fB%k^D@su`8p+NeJ@hcHgkT-*Q?x8TKlRNBb5rlF63~s6 -z+OV9dlT -z@c5pt;9M_lh*d%Xd=5StsaX}<$Hykzxu1un{i95`FJc!?|d&q=Uy -zYaswxP#5rqoN-j~Ct(i&rH1}+^go4(IvPM?l~uC-lYORd=%(#Wta3v<^H*725F8Wm -z2Sv1S+I}G^P8xe0Q{4ZUw4?q$myqGxxk{9i*+u;<{)$!_p-P^_r`mX|(g3=ZVqmcb -zem1#ct3i8_iA3f{hn$t-2>2yAS}@VVyg7u3xM)-b0Xd7&1P59V?}02B4J0l9orh*dLyhLQ6do}(YInKtA -zkP_sVZW=3$S)2E?3fy+8dQTbv>-}c+O(Mkoe7d3`m$q*oA<(%#Z6iAqTR2)bZr!I2 -zSvLI0`xa5jX_V}%vm=8)5MFpEo9K7#e!1^1yu0Rm<=yvstlr<#YM@<~yz -zso4Y+!p_`b#Lxm}3>1A+pu+)4xj}4ta#X_v^HTE}T)foy=BR<@F?YZnK~Fq_=V3e>UOCN-$WgGg+J~u|4fK5+O*m>hv}Y -zVt`&VE2{-xM3@I{VOxOV2^13T{Me*C*fdG@T~ZRCDSHhabmDA&VQ6tWdxPQj{{I|*#1C+SR|T4)@&83FT@_KXy5mMe6ZPSQQf*hQw7!b{rmTLqY}H*9knVD|oxfx2(f71yU%p -zLWV3r4D$o&yp35vr9C1tr5cRpr}tG5zd+0~p9zdPXbys}YbQ;TUMHf#xnlN{_V)y2CHok6+DHP*yh;p9QEMymP#u5- -zD9QmZRO;LiER(c%tbypcD(Uu&@}*^QvLPUF4}m>ECn*^jE%&)0gtDF5af8V>gN(~2 -zxTfw>jwk-7-oS_+Kf3EngUvp00T1`8ZlEHI#;n=nf}2R2IBHYazB06F*cr?+Ei&!% -za0wKlX~_4wbxYF6o_n95bW$({_R+EC%Gs71!L(28kkUVr0^Hpz(E<8XD^}#CBc#dr -zEE!`%3O%_K`}1%XCS7ZEa#*czJa)E{Oh^1^7P^4utLwfyEDG85t3y$fmgCgUAp+c} -z`X&7l#cV5m3fWIBvP?luR3ug`oenEsC5h*3xB}ghgIhBdo9VRd;3m^o;@LrkGsYkl -zhB!%MCWH5lW<=0Sg}!aOcg;^C|7Kn=vSk -zPIU{W^~n)f$#q9Dg|k7d+l}7mRE&zB$q*D;zp?~*38d$X_Q?Oa>}Pj~86zdLL?rXo -zME&DFtkeCE4;J6er5%sU6vxv2{2!O20qNQLAAK&66=^w+OxI_Zv -zj}MsTRF=hme2Z3r=aQsy@-h1QJV427phm*|@+=(6Vv&oWD6I|hj~10r(uCWStqLSw -z5q2w?owQ(7JEHZ9p~wsdZv)Jw1{j3qCI1xHap*obZ9);3Mk;^yY51Fbl?!|{CcCO?Ev_uy~D^c -zlDgrG?taaoRN1&l-=mck@>0zjm$0ag00dUB?c@M#$CXm_4^UF*kC_2W{g>gRPbOHF -zLn;?FN*Ly%jhz(OGz)YT0t8yKJCnjz%@IIi%o%0PpaWi^T@9my|4uMu-Si*U+(_#N -zm5(raNYePEL;>v6x}&D$3u9n~m9%5f4iSNLbKxiRH=76sE_a{IwW*pLtANG?ZhfF3 -zT49gI7C>}OQ0)a(1GtND_mkg>O7Oae$8Gm^M-7i1z|>e69CuH4mq)z4Ke}G58ZNj) -zt>zMQK_WC)OFqv5!%QQhfd0vW-%zdbYgRyCVZS0X3fydWtJW2;|Dt|@d)pfc9$kmX -z%C&$WA2TnEvCi1o*X0z@-fd&h(u -zV#mde1}ltFUx0hyxOg-^?wBkv9mTOtr;hG&tD_IKPc=3?f;Jb#Xxe<2$TNlgERT=9 -z$%j+E;F2ek)=Xzj*nAA!|0BU|Vu+KS`OCse#nd`^40PG~=;7vazIM1ubFX!87$G~6 -zfp^ou!!es*KBniTH8WiX$}2oJeFofbM3glFT#$6Jxn|5NBc$P%`tK3y;X*oy?V;$9 -zuBrtJ3^k{kF7}MoLT>a15S`3ZbjHC2uJdgTIBz{_D=#85zhlRbg*iJ&!CM(>`7AW_ -zbZQ`87C&C`&-9*oh~-%Vl19mxy7pVyn70hm+(oW_*Bx**D!z$7eM>l3u-M>4T4Yq0 -zds~+QKn7 -zu>E3Ya1z}kcW-X#qX%;%UP!IEtG(%jTsY&e(d#dHt#m7JQX|Pk4AF`ZF4a5|!6}#} -zN@mU!VT@jr2kLiMW}3n8d%$~I=@kv2L)3!poVzakJ^%wXAQ(2jgso><)e^^+95Fm& -z0RkLGW;e}^#8QP4$Ao&$m6v1!So*(!m)6!OgH116ND!oqi+?s)x0ZB7XLod)b^6uF -z2dc6lZ5zjPTHuZVz<4~P)c5d{NQ8w97+p{sAf-ChlH`a+^DHdPLblcJ8<4+@VA+so -zMc)O2jwXsw&7t*K>iP!>U%-jqx`aj>KBTk(IAUmmS?}ILDYAInzKI3T1u&dxBWsG& -zDZ`TBpbHww_uIDz)KaorX*ejE(bZI>&kQ{q@!uo -z%JPbfbdxGZT4VT75_BG|WDv`~TN4A)-ZdN`jm+U!9sA4Hfjox2ln$C>N`1s4gEQnG -z1K<})QbvE*M;#<*#uF2ssWE0-Mg@?xfKl&_kwFi+n>>j#PJ50CBbE`c7?wk9>H6e# -z5IVHsr#)01%4&il9p-^h_{lY=I%=-}zWdx@Q=@LeXvtu}X+7Q60RI)m)M{?>3a}DO -zB>Tw9%&#L5i8gdPX4om^jq0+znl&RWnc -ztfZTr6x6^>dhO0m1(pv|luunN$d+{9hAC>w6z!+mc?eVqKgo2m(U)wAW*ZV}DDo#e -z%V$*|2e*F3p+6VHYhb5AgGjdLX%`F;%iHbJ!+Az!K4}A@WGgz#P^$2?kP^0UJ?Knz -zv>uPQ97hDK7y4E>I2*@dH;e|>R44(0&(+NCR>h4xkji~S&7j|a50BKxJ-FT7q$Zy` -zukKbau#tI>yss6@b0O0$wG}UQ#nJnW-rl5bAmwk)KnGJ$*-z)}2F5*C+kV>YvDZf?x}u+(|y)lYx7unDf;6mfRm8+80lB|~tcoS%rt|p-o{TN2{G8n};2qY(Ca7~P6EyfUxOLpt -zqxUy!C#H!S0%8-nx=`3LPz|Nsy`S9Ejf$6qw8{eT#$^C)LK$iOgvcLCPEHaQ+#p@X -zMEJdO7i@FrOmU8nu~xJk+)1(;jiMZt7MS$jovIq91px>acZkuGo51kjgQC&M18^;= -z=Hhsr%zetf8AyGBpDD$eR&O;hR394yCv6PCyfgY6AU$>#Z=INM3wdLY|(eF+PPuT2>@>DmWOY#B-GS02&H54GG;&Lg(F* -z`~>i@LXU)*Y%}034qVchWH}%|7jLkDsBI#9i)oKUjKOly8XQsYH4;@6_wPD6t?0 -zhR|3lmr-&cbnF224Gwiv894>?lGog84QMLvJixsD{>?o{q>stg$-}lZS}A9~EEh7m -zx+BFwg*se5NkS7DAmh>l*%FzMIyY>)GmQ-59vp_96(cm0K)j%!VD-@Sf(3z=&C@N5 -zs9g47_&rLqHdzKz6NC^IlMMuh!65C?TPTxZIT1RQhAongq|$q?(*ryk%?uY74`ijQ -zD730t9)DuLZ@Z#EHBSKXm`A|+xt8WSB!<@@p6JtzM&zfeu+q{QC!;8u1A`g@2^|Rr`1kMZbKdwF*{by6lAE2s{zZjsEH5MP<7I$v) -zXB!Zw5Yj~SVbhgEZF#HhwlE*hW?E=Nh@Ddu+cG1zmLxU?E`M;#1phteF?x?Ad*P?F -z=p@mg1}&45(F@`A;2;TVWz_gcpR}MHLaeusgWPrcxg-Bw={P9aWQ+^r?BhGhM%SI& -z^BChm%KFm@)+6}`eOUL?C;u`PLMcMM_F`~E+`2O}&ZflTS^;LhHV9y83QM3VMT{g$ -zMLuGi*SHTc&>Fwecz-eg7}>nu76F&I7ubH+$WgZ*K($)8rx&?~NE^~dTY;2<{BR5n -zw{2OUzo1i;L&j_}0)(5qBWqivb+_~=BoLD!sQ@b)K-sx;c9YsXo!&OH?-&PK7`4{# -z)FXC{0EacYdO+AWnHI^@Cv}PyDdq~G_~zklL9G*Q2hx20+j167+%%!IaV?HQ;%81} -zE~2{xy -zfUG$-FjHL21ul-_qPIHSkO5Gbq@qlotZCBB4e+hGb-4H5SmzAb=A_5pIXJ`nQE94;HI1d`dbiNyER -z{15`Oegof&biIJ;Mluf21h91G;14N%rENv}(V&`|Hq(Dy}^YQ3}Fm -zSEsTw`1VSBi$4)c`4a-6fIK8?4oRnvcl?Dn3H)K$eD^qzkARkFCp>)gzMEi45iEet -zz*)Du%%t@qa}ifGms)s38IOi5a_tHzU(G%Y@8=+EEj~kyHbGLDpwd}5QpU|%ZQL?E -zD2kpqz^L#L?B|ZEn*2EQ$RVf&x4>nVKm+tJ)YPQyXM$q&IR$Mh`s&eV%aH8cfkR6Y -zTo(X-M$m+_m|V*abro4VK%s)TZ15#q)i83=lYl%j$5fbK!5`zXqs}J{@lN4@5F>UW -znIBz)Z{crl4q1+Q*l)CgW;5HWm7xi4WZ{u%kJ_|>_cLDdO#+Hgp^|Oy>7~JETzw#E -z85lGGH@J=RIUCu~PPn^=4sPy{2y<>o-vW7juVayuK{q$km93GR7JO*Ygkf*~!8h;#?#T*7rHu26SEz6W)uCJ$_ZdMKfZJ|; -zX!l0)$t-sU2f_rzNl3wf;EQfbTJW*x-D4N{G}U-ON!{)95HyG&vqAe{FJ0e5%A&eTpE2s}}A+OvEp?`B7>rE<+Jekz%OiEDOjPB^9@eMp| -zhBH7Nj^9!#cEcexSg4$rzuif=YK8Fwc04_hf5(4+{t^%lW#1gFhzxB_izc{%2SmP` -z(mmzKo$mgdu(+6&!~O&pG>G2uq{&ucNsy4(II&TV_CyeRC|dyV@($AZG_hQxTWk!4 -ztVjxx@uIju&Ep5js@ggB2CE;4ZHmo|_{PmD-?_EZR1S=%D$a&K{yMFu -zf$ts~?O|=OiOIdHw6q-6tO1OX3YNxIX-s&{@*ACRD7FWo>q8^vkm)7EIo``*9EOYA -z!8^c5l2#s!C~-b}JQvDzum$H$`xMdE!I+)EKC9xkNnayvrLf~w^3VLwbvTBu%I|V# -z1C%_}!47e^&JHH`6(-$lD>wzd5@-i+G&FQ8q19vi_UVyET5DAG!@C!Ef~=Q4qR!ii -z5Z~`&_0^=7xk&ezMBD;KGmhR!4IA%hLd7BDkrjnjr0Iio%Wz@M7mP}L9UVkfyRtGoRrTaS6EX;ZCO(3;vhxzPzF*#_pufRxABqum5pD>H9&dh^G4 -zlU+X@pWGWaBy9F^1hC^^wi)Fe -zG}=a;A6N2otX{odHYjQ~9?Pcv%>9EGDLh -z8S8=M!=@am;Qy5Rn%*+=GON$-rh1|F9Qnl0@`JHiLm-J|TzM$_4=* -zmKL`F0M9v}ZRs5;jTR;HAV;b_w#}kQxeN$rexfZz*AH+h|B}};geSR}8}02gBez3k -z=H4hS620;Lag0S;*|5%5pqvS>B`H&Z?m+kXKqi8((QpAMvig&6j}&=}?o%}V?k77{ -zOv1%B?1%!sd1H_{nw3l&>eiL~N|MJb&Ik4sqgcKn(#swU%MZF&Smeh>ySQW)w=!I-J5M>~5g&KZ#M9Jbl{QflZ37y|IAfd-*1ZNbc -zgLA|Q)eZ9=jk1Z^>`^LE!#Fb1jzCLc^%g;7&fDe?c3}xNHzzDXCgjv6LBRw-Gul_q -zuWNZHE#6{~9N-OPtM=;i0hYc3^1BH<4wZ>(bl$T1o_=U?S`z>|Ft8T(Rp?m+2+Ahv -z!MBYQdg$o}*2P0xCSj`I8WNwIbai_mnc-1X8Wxr#2R!026hmD9Emh!1?=U4A6FRaj -z8|j^r%%#eA?;?A43mNz -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 -zTgKh$#T$RkVs`0 -zYH+q}Z_wdVe1RGitKYv?oHARmHYN!&JDL9M)M(Z4?#cS7`Nlxq3|M-hXhoObQ-uIEZIT)#1Tm&N9$lRK_A!NuWRBnrd*@bS(_e_H6(+4b7uOX -z_1_+|X;jXOfh*Qc3m4g0;VClL8^?wuDFav+4d&QNOo3SBHvp=I`tX|5PpK0Rd$USh -zveJ@jHPp@ijhQ^sP7JyS@yV`KK<+TSiX;QO)F;480C@g~@< -zZqxSGIXm4nVN#9A0{3B7=B8_3EBh06bObG6Foi2w3#R?DK)O -z`u;u1l!Xgw7*s&greBTUQe%?958nd-MjJF&Xge5FiYL6ZhjqGJtOA{9wBNZn-0i$C -z@0>(c`Ee?S0Fq<5R27)SNL0FqD+$54&1w${UPitiO{SG|T1%=icusNOZe%wEps?+v -z7p4DOflHH2GKyNX9jHCv(57xZasX-vVcwG&B3U9do|!4=WeGhm?g^Q;uGhMLOVe*m -zM@#QjY4&WAkdx`-uHk&{FB4%|(V9xRq{=gKDQPb)n>*%c25||s+IXeFk&grnh5VA9 -zTj;e+PU;A*1*3kvl||Iw&}f4#c^3-|fW3Y`2U|ppyvKi^XiRZyMkaHO3EEV`kJPxE -z3?|=`kIji75&QG7Xf$|4f6M&-{(T)Xyz&c7y -zt~|qBBYP=?VMo6}u%7&}h&#foI~i*QlIq8I^4k#=B@gugd^1O=Q9Ao1JK`za9M9u0 -z{P!>?27?Q*)&N&PsJ|+xj}q=glM*h!1q_>3nngB^|7b^jDnG}~ -z^$)?Q=J^cs@kJM?cUAXWJR5o_u~-gr8mvlJTTU*pfk2nq9vUC1{PUSORqAL|c0yB# -zy<=~T!9BIsA4au4gx}H$8~6gAmM%Qd=N?S`l2Na01_BzaYM6d-DESZI(!q-=7!mNd -zx@vjqJR7D)=fv%y*iR?JC>!*!NrMZNz{*T~75cw`II8n4c|(n&Hpssi>1O^-Aak#- -z$Wt%g9I8G})ykF;l&gkMn9q)D|AOLE}thtBPNYLor*-eXAX+eYmfKehvjT -z>Y)fHalIZj_nlsE51zsG#A2k9l;(z#1zI|auU;SP2C0flR(BqXBlsY}y+`YqZ6TRx -z#mwFidx1;qGvG66ohdX44~B~e-*iGpXzlVdjW!hnJ^9+>gLz4TrsnReKlZ&g@i%# -z<1f|94@tO;Sn@*4u+24 -zTfK>nKM|6+#R}r -zBV{?PH0Si5E1+(ljG7ehr&wEugZYap4~F!1usx#|fK(_^UOQBmG{EGMo}txqWt(j! -zNt7nQCl+R6m>eWKHqfW<4JcN$W(<1)k@qploQqr&w>@RLd-H6w8hODn9FcQEIKI9mh1Zq -zLXrvzdUCq-UC`?#vl#7=6E6aq(h-&PCY5xdEPK>=41Z|=uiP^XervshD;8DP}Za2ZHiwCOOE(h8?q6a>Z`y9ECIVWz?3(4rL+pcSkYg)fC76vsk?&5X-U^uJ6TiZsV?frXzfr_16ZETEZ$A)IQj@u5*HQy5xnxyVn-t-un|&VmSu0B_5^|Nj1uu&XY#$8QGmA%HRrbHPiZ0%ZY0cVJb- -zB18{6Bc5?N?TEI2i`g~I_l^5I0snm{->@}+qA@GtW+J5VDvb@F``W=!AhQr}k2@!0 -z9r@xy|GaIo+63ATT8^Llx76wO9B%79(@=4B~y^WjanmH~oaicr8;BFaL4@IcGnI0(NF$aZv -z8Kh#ljtaHu9*S(wNs}m4v{vn+mJ!sdCKuqSCXP%OzMR^+dgiA;Zu^0r&KAlN0-{X&1xGU-TDGVR8)XF`r|Llrfk%-G%>qhb-X -zYrpZ0v6Y@T={de4VQu|D0_53;=NuRzTVN0NCBl6|^~DXqL|UAIHrZb=Q!l7zBkhbB -z$D%e9w!WI!tCnp$g`hQv+DNxKXn>l7Z6wsm$gxTTNMdu30pJekQu5b1;Ut5SMPEYF -zdNZ=endfg$v_AEo95yTRVUf73h9iUSD>5iGF17$wWOZmO!IUVkyYvg`#nCH-Y@A^x -z*G$0$2Egq0kPk_&&CFF1VAeq#Tgc{7-0fvfINH-`;zaWgj9R_nb_MF$svHnq?vJW8v=C;Wu7J;q9Z^rzrF+}e!~BLehREV- -zMS4q;11GbzL7_}?MEp|Vm@d&BQWQA*abL1DeCP_#?YVHZ>A?^V_5y26u -zxSm*g1nS;d6h)(|uFCzOSDM6XeFF>UGXb%}ABhS+)vgDU6QSL$Tw1v|lOkhubG8&t -zV0bi!Jtr7E@0{``ISNmNqj{mGJuAy3&R|vKyy{W+${uJqFU)@OkDA>P$`(p7wR~w$ -zE6BHDCGyQfhgRcm`3$q73c$U6_!;2&TN}DmnXAMbP`l4`|+hnfetlD{+;{ -z2AUoWxGf$V7Y?b|UlUw^MecIutEu+-hUQsL!2^zsHfry4;oY`q0%=)LC9msV6JM(F -zIB5Y-;N|wFo}ETf|4N&sIQmbJ7)TyfCkZ% -z9;@aiJsG=!Q{p^XTrkiS?SgE_4GHbBr-?v)zWSwzJTB4B#KiAj8${*S7Zf(%}Wp$Ia8x$z~>|0NyM*>?`Bp6q^roj&)j&a$9g)xOHxVHJp}r-6pKbtxC~ikStauI4O4ylH|r-+~X1^Sg8!(hS4*(rDfjfl2d3eLahC;mmFCA0$$108PG0Z4LS| -z6ZyEZ_Mr<`QI;Nzsgc7i_h!8n@nf?1Zbhfe|6HE)h_P2q4#d-*wyMY}kCKw^mCPDZ -zEW=`>r9I*QvAzX5t_l!Y4X}h%|DdB3UH8VeA`s-H_A17n@fM!n?`)rQq@I>>0kcFl -z#8=qB?Ja0Eh_%8C*vqczi~Y;^PUOl83Y!4yIK@@pNYQRWiU{AJ86#=Sr!3=L)~XPc -z?pjz)hRcxI-~mqVth|T^?oyOkq?EZF5m*C^1Jem;3)y_`V~UL_*SE?StQm0bw*8^r -zhT>#MoT#2>ahWy7#ebty4zU*xsVku}2J_-vb1nf=5sqcdydWIcKxR-e9ijA(B?NX_ -zKhXll5ax|wFL95V2DnmMn(yM)O3Vo@CMZTXW^V8Z0^&~JHJ{svHf2b&2ynYzDiWAU -z0-g`rftC3LC((z(z>rTvg;j>Qlb((B)RqjfUpBN=LFR#udf(5~-^}j{*4$IOcIjOi -z=$ib9?5OD^m1-iC&m;FzfO*OHWG7Br%Excu-09FOx)rQB%II{#(PipBvKQZum^{r0 -zL$)glQaczdz}EpZ;XME>1U0K1K_tafClKl8R->B8wknyOEu)UHIsw!8imcjQdE^k# -zSC_AooG=tH`xzO_J9!lkNmiQUaMa?5RsPP?zj8$z~^Ez_jtIdK>bXbZS;trU}?E1{^51Uw}9UY}@T -zUXyXe)~7aaa;n+#I=_FTzP7*^mcp;laL)p;qV~xDXjc&TTt?<2E9!7}^p43b(Bz(^ -zhq%vr@%ycpdb5Uu -zeMM>fm)@uUqbHjKKN;W?c -zChqIpY%{9~RD3a4&C-7Z!GR%naV04BN9EQoGCyKHp3A1@D!s<$!C6)0SoB>0^d|Qt -zl4*#5o>eyA$4|g)sTVkEJ*#s~&5^s%cSzX&Gv0N5wG6lWj2_nW^@eigI -zz;@s1Md8`ve{d6U_TM|voKM$hA*||rxWHLGFWhqEV46&iF`1+u7gocjvT!= -zfSU;R0a-7`hF(Y8z^HB1)^(AcjC-4q8!B>Zw2oJP!F3#z^W5;s-UAp~jk5$29(_TK -zA!SZCYz8-M%3ntZ-C-r&58C4Uo0hZq5}iywsoUv42I+B`e6F<%80rh^@b8T4wq3uG -zK1VQW6WLpSd^Y~QxFH_+cpdmr4$zKmr^{8E_@Ie+%>OxB=7jo$sYXq{{6@6(8qtC_~SoDIe&5t -z#Y0J*MtKsCz}g>ubNv8T#h(|=!yo^D#;-R#wd=?0z#nH^jwQT+5L&q`@@V9o%0pl}*Ga2L?FG_h{MnC?0_{X2av}YSb2`Gj&{`+z=M*ri| -z7=F35=(U?7aupv)LiW$0kN+6EUUPRZzfA)#XS`l!|Kl3}B_bH#c;7OBfDGRQQkd5Z -z%Gi(p7<+lBhr9dt@4t%6f!^-*BoFgWD5U;l^!0}Lzo-EUFPC8+Prv`M_wm7j%E;Hz -zJtmpQmb$+wR5_QHUSXazdO>QA_O_Hnl2P~msda;7ETq4WO|y)M%+K5zqoxekdLfvQ -za2!&d=v07iZ{(0hvQ;g!EsotLF-SC+s(DCum)T~iE@fd`;7(?uS|XF&6zm{C83%@v -zKKJd47LRz;?6~VfVV2jEY}mWo6kMtX1Hu~ozcqX!(Eb?FIY&H&EL;_8wH}{``D}rM -zgR7a?99LpT`gn%nn9y$kVvk%G4W`x%8J`)b8!t3aY7n7fdE3=?m<}W>Wj-0}B34d0 -zuOu*clC6ACDFC)F9=)GYZ16x8t}zE;0=PJeCk3@zMd<~?rXGbkpa)~yhTA0B91mn& -zA(&@BsZ=0>QbjL)3Cvaz?uh01nanFj__MlMg(c!;MHaWa-z^ClIekRVI|9_r0bHXi -z!Vwum0ulPA);yQL7S&T;@NaZ!vH92>pUMXJ{qKu)KaN`<%lK;Y1A>nf4*4sj9Icjl -zL7{?rN__k9f;nhPrs`yC6qIh@FP8&YLF8R&NpVU`u!R@nz%d3?*89hwV3K&Pvrid` -zi7Uri4jRB$FEAvS`9s+><@WH-8=7`S3)1p%ls+{;H+#%m;)mtfV8O)bJG>{5o5*p` -zG5l6*Xc3*0reA}yX2X;JMmO4}$7WlMLgiZ@YtGgQbygd`^b8=Bqt8MkdVibPMKv$^ -zalJqb>!;-DnuI`OQiM-*7;b-9%!j*#0b3<++R70L^OYk9rhY^_b#t2lrIZMPNX)0j -zbPse3+!R~K%fY0}-yPx{V1L2-E1MmbA1%CpK0s=OX3JPcQJ1tIOC}xV=mdcMn|yfF -zmw6N=%|%TB5+KOeFUw&t<==mPM?8+(28VKiYkCsd$s1eMDKEOq(3SF#&wmj6SASMG%p3VeaTLBDA@D)OZ6qa227s~PAY}GL@40?eP?-6#TPe{8!# -zRWTa40n&Xl5NZyma|0~`w#AD?9>k~EWnwu)OyhK@WneX%>B-8LE=@WkWF~*L3>pl& -zIg~uaj>Pkx;MK`vnfT(THb)eJTv;`=9PpEdf4YKG{gzPrV1g|R=6^%BFryIl(zo}9 -zr}%~zau?q}Ot^c6DZ3QNAmc-JCSXF6x?=oNvYB`E-B~DWL%p}QQH)F+yzD3{O+U_E -zZOut03B(-m8_6`HRbN_0k3Pcq8AsqgV8znXIGJ`K0h+f5YT7wC?-A7a6ogrnIEbh= -zpiL_s)oi#>TcR3^(+2#li7N#GnwHoHNSB}}MJ+Ef7YuVupq3L)r-5cgt6#jkoa*Qt -zfX+}HIq&c2-4&~k%OZ2Z;U|ib=BG2P;CP$dP1s&i@GsS2=GjNxD+kv4ut-lnLYx5P -zvtL#K&FC+*shY(%#!Ru{lXEH)@J -zET3;E*a3-xc{ZkE3PTfNZ6pOS%a$U?qsSGGl6uL56~m_hu^U@XP?!x{9le`U3w3oQ -z3T5z}L(TfyivOXU5FOUn+QN7)QZw79o2GPP8KgE)XfCmB1%laJ32fs3T=pb@9kcc| -zvs2dM&>ev*-AK}IY2+Tf -zls&kfe4B(j7m#Z}R{#8aK+PGw$TW -z=KY3>`m>yu0>w;^nY?{9OBeF5DB2uRCr+;QSnl!)Jl!+PxAUc*Q$FHaf@D3@Ex>Q( -zrNO3f*TUgecKx -zUIq$Mw)%GTdLbl2If5l$DbGbqg{Y2m>_;l5zn`l@)zxS^SL+shlN -z@q!~1O|JfdH1UZ-o({?tQqy#W>&(zl1omiIJPFo?hX;~rxj^Bqke`*Ghz2%Py>C5v -ze7-Dys%sR7<50g!cH@|E9vNE -z`uocy1zN!lZB^Di8rB+x2lOO`tSCl{$0O73iMc3#QF2Gh?v_U+mrlYZY>bI!JUQr( -zegKu?dJ)>vIPH@(+Scb;9z&K3o -zOuzXCrMCd*3+`pT>L?ed`z&W{9PKRFra8S2#Pj`3$Ras5ls@CDpb~kxj^pvUxcomp -zn!SuN#bgTRHS#+T`LDZREQgV`Js7bd0#X -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 -zIL|oiRooRMir$QH8nE7A -zmeJ597hN{RAsXcJ5v?#N&SO1Ux^oM4Ef1_;r1xswTOIcN47zCm%F@j64S;DQrh0`c -zWbdV0QyN=;F*#P}I=- -zVZXsxTS_HkGG!L&k|PSPE3HvbHcFD=iTwMh_kTJD@*+{{8gF -zmoa@HM9=RRaIHXW88wQ2mkhm%t>+_;2pVT;1|S@f}-lz|1U}xVfj4PFO!mux9&Gy4c>uk -zu(0FMAT^!td2`!CgHpi_ZW%l&J^Fiu)DeRcfhdjqtu&Q6uJ!Lh3(>&cz_7v%Y*_Knqj!gJ -zQHp^9j4xR~mA1_M{}}s|CCPCu3lQAbS9D8lT}|A~-6O(xy=swK)hCpIBuK(IfWbl4 -zs9)dr+yMa9qa{=FWw;SarIH|U=X(y29;8lO_{=;5%2n}>3Phlw$2gkMWYZU)YPE$y -z{gEW?xTi<<6@o?rfRtQutm4$xJj97ML^B>C8t{e!x-3@Jnlf7BN=_wTwGcu@s;kP(mpfO=}Z -zZCz3!u_dQxM+aJZcXQ@{djFniz*q8Sn9@kLXLv3s{Yrrd%*j0=;xYY4y#_V$nC7GK -z9N+dnf#lCfxTDKcc*Z6GTG`?h_CK*3{CaRuqp;2+YGlcu^$uOdz?|D435MR$0&nzp -zMy|!F!J({nva#?AJIK<|Qht-G!juhl&p(OpGH^c$7A8(hDw^H}(t#@Q(XS6A-UZeG -zvo2Yu1GfwyByh~hHNJL9F&Pyw+Jy!OEkfB^3iG#Q+W{+>{6PrrhL5&pb^_}U`#QZZ -zpocNtsxql#+XgQGjMJofPx4Y4lj9)S*43?((`Fg{_Z0`CK`$C$yqZ|NBGTN8Aq*q> -zJX@C)twu)Hj6Xh%dxN~y6+)VUuda2##8_Nc(PBvmkI -z*sAE8zTQ0TafiO;%$WdE44~#St61-V_e>h8@@l{WF@)janAQ=~q9LJA@^n(=x~~S~ -z!5hdoK+m!&l-aH5m?^1$1U{d^y~!$qCv7;--%1_|;6<#PR0AZ!31KFR72LnjcGfky -zLWe6mF-};It~yoZs_cvafMsxB@P+~15g6A2ee^B4y>mAjG8K|tu>oJR$sj*iG11JV -z4~gXp7+wHVH4vb$a8s=DIrxSy)HBXvBC6C_Yj3os3VO~N*5kV)h6p2F=|oec=>=`QXlfKGxNy$U;1E(#b<)by>o -zT!<^L(n88Y#4XAK!BnYqyG$Fx5-cnLj9>`LB!Zza>3p>1Gl=yCLYu#}g<61tPUcpV -zbhlf6a$l}^Y;bEy1KkRuO#}m{UVj;_+h>AtfERX~jP8+HhTYCo09YJxW0i~5x{Hu?Fe^!%kl6K6oZ0;5o%UTuUlWPXw7`t1=0D@kU+3t2mwQ|Mz=oiGWb*+wJ@m%Yqif_8Vui{$Lc -zlAMMikk_gP2`3;*h-7*f?Mh2P|2}~|VfY#JbjQ}X{RftY2OPnL9e`Mx3BnO+aO=cEu8JZ`*BaS3wJ>Wm2)2LYt|E -zl(yyA=a5s5qMQ7(iT4^v(Dn!URGDo&BD!NWFN4`;0kO1K;X~!W)GMl!*i|CKevc*s3LuWDQt|hPM&h38DG+*cI``xRz*}3W_siD9hnSk&3=; -zV^~sYpuk1{_->-1;Q+JXWXL=CY#KIqe#p`kPH9$KK}*d$ataT2ii!}}?&}LJl_5Ff -z_Pd_<$v_YLNn$AH2KPYE<=VvY2x|~$H&zT=rnht17b8C%z?b3}oft*IbeKrW-^xG55u!goora?@GBuK1Z4>f!MR|$2fIJu%(MawhP!e -zm<z?UHQ|v53m-F*`dF -z8-ZjXJ0mLgHrM7@YjuPl7!#AoB6_{3e8MQhvn-(H*aXq#k)u5HqEdB6TV!`P&V_i( -zgVI|98uX!I$$_Ez6Mk2?t2*WY)y!nsHY -z&aktOUcAR0i3K)eZ38m>13huC-4W3rt)tDWeIKBzAVapS%;Rc@!CqD(U6FYNtayrU -z3%?gBz+eh;;L6KmS_)&lkvK8UAPR02Y3 -z+c)oT1>3|h7a!05F#1zQ0x!S1l_y$H{ryc$Zjyr*mP6J-H6{}NiWYb5uN-`6fpFEK -ziEZwi9wWH8k(QjeRZ!JVg-K1$YsF>ldR1*rVs`1a^^Ci(Mwc$J-5Dhi>DrnW7%(+- -zu3@lxu3#a{x$pYx -z`jD$2AFP3d&#Z|m658=Vn&WQi|L0TX;8wE}ylR+lK|z<_Zp{01T$|Jv6`W0f7)WCk -zo^Gu)gd$dE6Qr|-)sE{?IWWUxrQKEU#*DDvTcm3f<%4Kx3sX#NLk6Vk#YAEIX!)t> -zQ!%McR!j2fOfpguyv)8SD6Lhzrv7#}9IX~yqcHR=E59{uU0ZI4(Wp~3H2~uGdroZ1 -zuz1F)xZI6O`z$^u$}~=apa6&$R2f>6%%_^0^F~SvxwqSc(eUK8M7NY>)Ld~GTj2-P -zOOO6W7BQ!AoaNXxZIy(iK2H-my9}bri1v~{crP@~EysNKc42SVXH?)~GZ8-zni -z4IQwBYPbh;aTC*ut#R@Lg7Fk``{OM)L2_Op2f^u$dMyX)mWKv=4VUQ3(ONrWc&lS*TTpW|q^*?#bJ8g*a>BE%Y>9P9D8rkzO%UxxNR}({-luy;gVc-5Brw)CDQuSd%)N!`I5xh_)28Loa=h!mLxAC<9$dmb1-d5>61FluUPTo2i(9Bp3F%Qu|WX$jzW;bg7{dZYv?PRn3`3H+FO -zhcUicl_F|AlNH5WK1=hnTZvpfoFd~YE-ESF-mE+%>LWVWdQ~uAjI2rxBj^MoF9`YzxI&bbm07J&v!v -z`g}!cTP@QEjsJQVzpC3NvPZ0yGp_K03Y;_HHJ@B6(!2}zh-eHEMc=euek;HUSlORQ -zZd&<`Ym#41r;%*>)%%!0RvRyf+swvC8$7h5uY$(DH`eLG -zs~nm$9s~J363O9TEP8{CI&^L<$4>8bD0(pcNXAmDfUr4^W}fZL={9|Qeut#Ip$_qF -zS#)o-oSI`cz&5yFSpt9h=YjUZZ3L(){LxLWrs`$_PiZhTzfWh>qj+Xtk(B592#zJL -z?ul;kg`|ON5=__H+3M0bA3xe}Wq68nl^Wt8&llQLYV0u&PAYzr8A;OyqNpYgp~(ey -zAVhL>NB)_-nTp;lN+O~@Q%GmSqW9?QtI67p>zWJo01K8N7})HvvJ1^-hpi)llG&h< -z+YB(+G?Osly2FloU=zXz{ji1VVcQ1_(Rg}Z{vp0Lg9p=#SyO|@4xm+yd)FjK5y8{1 -zl3(7Uh6(~wmy#4!kSX!+AsaxxN48iMzf=!n9$Uj{Bg=ZN(v#C|CQpQR_g8@VuMmFq -zK$lqQ$x=cFo(r2pz(_fhgR)c?hxp?=C%Pb1C$jT6dhenA&o -zne~ElR2}ky8Br=vUV!a(6jf%hXU1eh9Qy%8aM}>XnnpkBO{1l>H%IW< -zJ1}8s+KXM(8x87Wghh9yye9+TB*A+(p_+)TB~K@i$8RTU!rvtI4)Db$7Wos`C4Mhj -z!@Fd;s-~>WRNjj1U-duSb_W=P6;gjTOMIAzgSCTznj(IZd9)3r*X5@k?kW9I%iuX{|9MCHP -z0QjwrsZft~LXmdhI6pW0X(fQx9DI7~#s=YYZ2L?Z0!t$2^F;atniA5edV3h-aD(TF -zaFsHkWaxegc&GG8z@)7-sYhPa##sncCZAcYG-Mha>1da%YmGeEx-BVj!A)MYTXKq0 -zYu>orPN%8ts8tgvS>t?+w_SGU^Wa0DjBa|7D)pPYjqYX$j1{TqxmD4N$G5-h2s@r< -zy2I;<=mjuSi))G{zL*#|NKV`n)Ehlf)-+ikP0Uxg_s13x?q*2}5AaC}N)<3D<{T); -zZWWv7$o%AwSjVD(d3MlBDgtH@^4gv!%apWm%_$d-p!kWbV3pu)pm!3jx@py^<@JNq -zeG{kDWF_ZV|DTy`VdgQe6wz;SlXj}o?a(8zo@+eDlt+af9!Yy2o$||$UA6yPSTvnG -zjk-`lNy9p-?c*UG$*S(Bpw8zwqCkZg|4dp&tt3dk+O5mVv@ -zX%mH#2!_Jszx7Sa$#c&2actsJ&56!)S_s>va%80UifRk=Xe3WlVi#oUGY<&8JOrGY -z<5tC)R=O1L;0eOVj`_fHIR0X*dNl -zHoJFu+g^--e~-x6f3~;QCinaqHp#UYZ13X)(FhP7+p=7#K;oF3?yW;Ytcxe`WIK%r -zxI2e$1XVPJE4NC5+{p8g@UoIazzL%-1F1ukQX5;@hhV&dr{xK_tSTtQ3}bUcP?9k_ -z(pCcH@IuQoa>2-3K;24EU+e*Cbx(d%+d?J1k@XWSyNhj?kJ)C+%@%QfW(0q=hU&aS -zz|%xpJ%M`hZpNo6t)O*@E5jvAU#O^mN%BKRu=Odw+aUBO>|b@Sxj5ceZk;Q@;i=e& -zoPp+omt&S@O$#m6J<1|uL6*bq9TINg-@FMBr`EYJkJ-o3X-f;x6qt)GJ%I#@@fglp -zZ{==jSMt3+!Xw~qXxeXxfVU?@NDJ5z>_7$oJhU&Y!&7%@xKe2wu4?so^9-q_gHnJHDOSfbVA?49o)DpqiLmPZY773tk!eT)t -z3?$kp0swLBIzQ}|wtyD%IqOBPlwtx?X<yf{Le2iYjNxlQ -z%G&1mI`OD`gbzV~rS?hKd+Qea1YreT1Q7_GUV1M=7YNb6(mOYW%x_H!DKKz=Cub9I -zdr(bS#?~g@%8N%=(c7PxxJ{M~ZqbZ=^6(ZIqKO1Wf|8m{=pm|>>3q1H=mj{D%DOP$ -zXsfW-uZ_OB=0YAuxQ*xq!w)cc+9?aI28=ynw|XCjM|l7BuG*TxmE=oLXRgM2FtRGZ -zSalM)MBGZ6(k}j+X=>iIU`;>uC4$?DR?s!&4*3;c3yCUZv_Tyt)1mClWHug&x+^(3 -z$pA+{xWBBBDvIE9(>?a(Y=NT&6>%2ns|)ssX{|}c3xmcOZwq6>W9K6VcLSlNs!3qx -zteo9q716$nbNC6yMbi*t3(oPELX%I1(DCaHxPNnz$aMu&EXhrzGQ059+OT0y_yW6| -zH77b(_3c9*q1yh@jXyW~sjKS0WC4L_6ug0Z0oM3vClQ^GX4TH_wXQ7Ly1!MUAjzhg -zIkrE?{C|usDUh!=GdBKdv`@{W*pj*}PdX2ffK2GJA5Yw~wTf -zv~1*ol8of~!^a>UZ{-?q09?QtAh!b)ntY_9tEk%$9r*(A!gZk8Fwh2Wt|TJ+KiOjd -zZwM3H=GM4&q;1AE(Qmau2p#k7f)h@ghcTqeu_-mczksX(UHbHTuW~)eC$Ooeu-FB< -zdna|yLAIi~rrwjEKW%H(NJ(p<_l)*DX*$GV3#pN;8Lu(m0&-p<4Y1bw4-K3 -zo^!TSTMaQoA#ff}kGb8k#f<+Sf -zSYe)u0g$rI`Pg`6ifc3|<}}<@dK7h*`LpXi{hmMV-TZ<=3BHTPrHj2T&jty9w@4TZm*eBk09JrD=C72AZHmwRJ4-Inm(^0w-5!puP<2Rv`# -z!_;E7?O@x0|85lw1V}9GjQ=4Bxg7$=7300JNvV61jIk~3%D$jAWgJQq{Y5V6F-r@R -zwpOEBAE{9ZrptrhbIjS|Mbajr0Q-}xv-^@7JCX^?fS*$;ma7nhGSDBI^b#SUxW$JD -zx|Olc$t+lPM|eN>ENl2#rhmQs%Upm->md5%oFZ_%cijHC`3`iCPYy>pKgrH -z9JD2$ye1G!{wX2kRV@CUTSxq!X`-`ahY2S_j%`=g18RJ$JZ4BC*u -z(GqXtTcJ#2*gNANF#+lF?_);?K{Vo*ZjQ$ -z2Q&ieE2qH|6(AE&lPQf_4Q+Z}vv~CrK+b{7*(Mpf@!0iGttTs+|52w$=s$UzmYP92cbJ;!u -zsSoY8lJu}`#tT}tHslmUKr-#w1mTw>e-&7?oHJt%j&cfRmpbvI%6G&cl+gM-c#wsa -z%b|o3rlbS|Hw&4VKuf#8Ya*UnF2#P&Sq}5(GoaVpWFif|v0DjAsN@-`h@dWRkQVkP -zcI?o}dn02+Y-7Zc<)inH>@%$j8#`=`1$^(~JN&O}O33;aQ{i{M?ET11Pw(F)V*uo2 -z?%4yrO*z%{$;RvqFN`Ufv>{t>W9$`^YC?^@fCZL5E|Vr;p)UnePNq&^q>_RiKuN=j -zQxjjnD-FT2XI&gG7a<62Vl|RZqpzwhjSm@*ubk9{hJ2w~b*F7>> -zc(kIp61Q0*E7t|$G|hGS=J}NahUNkgy(2reF$T#6JQYsq1AVYB -zNvuZ|43JXczaRD1OHA_7I{j)pai&&G$49p&e{r*r#Bl1j$Lgu4jY>cJn3Vaa4J)ds -zOC0LQzG?oHZca?a_a7zO!TY;Q^%jrkb9$F>#S?XZLK_+cU?6u13}lfUw(py!GVvRH -zV^utW3O8TYkMrU0u_Pts@O2hXDEyeCwP|G{s6^>D&}K)H&#I4w4Ci8w7 -zBADjMlPT>Rk~o=O1@tHv!jr~+ALrb3e`qfCD6zj$WfPDwo61M(-8v!yaB08$gN9Bd -zFUy`i?fch`y;=D=im+)U-(j&Gwz=BwRaUQ6u%9bgYM_MeFBq9tpR~CdwW6^C)T4ZT -z4N#KhdX=e`o7DiI+lEQCDEo;l@REPFsdTf<33_qM{o>9{M6fyI04g -zco+)N*=I(&tM7uA;c2t*15m%Tk5B||+zV#`2{ZCy$#{{wh*OsAbX5|X9NV&52@O9naLt8|j#fCC^_m*vh_+Uv+fD|~v>F$W -zy4I_Qc}SSp{6!#G6?l2m`S!(mEKQ6_;hD(&KSIhppNv8tv_ylDQDh(P(IX4Ubq+IsuJszyjAi#>hmC)Y+5~2>xzt?5;R=AW -z2pWn`0X_bBC>+kY_%brSkj#cE=WLZ^>w0%aYlj;B`}f>vRiPeceW5-)Lc@L2#y=YC -zgQF?n2ux_00ydgkh-nKlasmuGng=$LrS(J-qv5Ig&yweHl-ksyzx}g0aN9LEL=S#MyW0$bjzq_KJtwoT3^v5NZ6$~~PCNa7SO -zJPC$kM=N+fxkON(BQD1Xp9u27n*T}RpwiUD7WjsdCS0xN92y>OnwC51X?KQuPwfg| -z9nBeN!M18r3y|7Ueg4et`R{VP8S>v!;w68hV#xju#dqhJ|K9vJ#lcT+96TwS2sQ_b -z5hCp=+w_4P?cSSbV$s^{?D!#7RwRkR%CpJC&i -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 -ztknk_skkSg~qtHE!iqtCb8Xnc`~w -zp%#~Y^oy*Pyq#;0#uJibR_={9N*1>Hwgr%``~l?02k*Ca|K~DLdVnFR24OHNQRs* -z14s3vOMm_piH1M_{{CI%C63%WDbFb%vH@wPjgEOm-o)RGg&EX<$3PhKwNOjIHQdt6 -zL<3v?aCgB%L43&F0d^HK)tq%J@^NZ-#}P;k?UG+r8b;myDnLs$`8Xn83b-pY&svRr -zY)bK_)$z%|O9LPgT&GkukEmeY&H_E5V|k(@^Ny-!D!XALuzPo}W~q+NuPO|gD8-MU -zKkppHEp8RnPh0O=)H9AD`HnQcEWztaPTGMx(>dQLK?pixG9WoZPN$R$@XCQcSL(<# -z_&S}~dHJT-`yZcwy@=)YdBY8OJ1Tx-C!ek_kH7xDh#XpT<=RF@d=fhPa-`K9s?LsU*_AL{c67O<;OaajCRK#9q%9Pp^4 -zCvT=k^5%~Zz7TTLw1UJKS~5Rax>#>U8Xb*WQic==J`a#rQKrSffp(45Xnh^k{k -zKPTJZGT1ZspX1`1ETawa((iuZk5;7x2g -zf188V)$lRi?B&`R3=BaLgvpghii>nNx^TmZ29R2U^sl>>t<10`W0PNbENsQAp=loP -zBgR$-V*VwpWwOK&qTu^jPgEo3&$rvpU*9kHzR^Jcul}8_pymJ!+>L8+ih1VIw`tSA -zCe)y-7LbwuFt-sXeqGa^K`^Ai-j{lqj2M7c?j|jz3{%EP)}<7v@0o?cee>{{OBYTD -zzO+eftP$aiZ;V9qEGgSH24$ox&u7NHg4W?q3FS$y-|| -zkU$cv^pM4jVWgM@9A=Y<3~5>?r3jZ168Va#K&~#3qKkNIYo&=>I?T9kX^5fl3P)Lo -zcj#exsz5&YnvzLvcwHUsr`Fz;KlZtnk0u3x+oGV}KIm -z(}2SR>=4CGtWCGu`o@u@v@%|dg!ZmV8H3VXtCS{dvm;T#IA}NkcW3}f*X05B>otxw -z)j!eUVi8X{TyI->bacoPX29o`-0CenL3lAMT}ykcXLHacT9%CLh3stmi9S@^I%W434h!z-3E}HYjgM}8|L5Y2 -zcB3oyRX3J#hiwDWBd2zJMHzT+x>N5{aISX9jQV8s!KcI5Fol^M{6vfe&uFc@v^zhw-|o_WXG!l -z$4J;qWyRgDqa*Ea@kFlGe|23hgE5XQI`xzAe2y1GOouMN!XxF|B)7SE=EmH2Z?=^DW2p}Jb%KYp$G96G_9H_QV|;AK<(BEU5O -z!|*ajzt+TuUK@2ExAKJbGI=a-(jw^Bd-2&`qvGK*m$D74fryzz(}dhzod{<76Sbtt -z!jMBUph)@JE9Rj>KJ}pWa+lnN4!x?|P&JlkWf+zNf;GK5 -zwD>`ig+W3pJi59$Nv5C -z{c_H~zy3Hb@4!a?dO7Rs^)g?t*ZKP6D}TQZ{9^-5CT5$2AL!rm1%-bZ%}@4JxVJC? -zJ})86&j!igv`A1ZV1hACI}ciLCyjWetl$HMKTOAf9qe3FEKQ7ZCk-Q@;_iVZGAJ4# -z|5=n`B5RT#gO4RACdWe|DnEInm)*gi$57fb3|k4x^Tr&d;g;RE!9o~(@cvghIm5?y -ziJ=X@FT-v={f?SyJ$$&$4WT?iMsmlATt$bOkeH=(c`}dwco~Gns`!*N6w1^Qj*F)p -z-06ltjN_sGdU0-LM7`S~xN^DBVJCZ*{@UU(UOuab^_bJN542g)!?|8M3Ft8zGDgG2 -z;TuqaPd0vIN9AW@Au&M{@5*;O?8sBt&F)h}Z}!LU@>T3fDKdPN9_qKhTK%fN{@8$V -zEow-})2l3$JtRs+^+&jWeglOGW~&^+m))w1bWz1N#U&$PMp)Ysk-X3UV`&3!S+k -z>8@_YN*cHKPV4FE&vBR9-*I2_LIJ3-U$NEnE5{cZ^glBo`}_Cb#TBPt*#Ms$swhpC -z@KJu!$$bLBG!X{F+KSbGl|R@=e=KqPKy}}rA804srdOe(%+2i9!SlDmoWL*Gwa=b? -z%3Mq|nZT?X{T;=%8HCGq*-mYnia({ZH@1#eCzi^nH0`TZ#Y$kK~fA379!PmqAR;mpNS%z(5Z)?km(jH_el$I~KmA4R)iy -z4)!!{;sU23T0}I{ozncE2D&UR1FKQ!fToV(;LXO?Qa2!H^kIJisC;)yaPt_g#V_pJ -zQDNPb!fqNaA%STqqVUsHJ`V>(kxGU6q-SH>U8`zjNaAreKno~@@=6UtyyYXh7fMapwc_#ZTi7S=W~(laV|OkoOX`AcgID0#l@j8x5ZJuL6S#$;o^e3IJy -z`3Saj_VT9n!|vf|!aSYa>h$LTzw=|OxfAy?mwNE4baJMcTxyW#_Vx{I1!>?hPbdH^?&c&lP(Uc0>g?q+ -zX4eVZ{kOTkp8scQTTc+lCjZWKz{-g_r6Y0T>RK6FUL|;8}a~ra#T{~EvjX;wz~A? -z

2M?p;H$Jd{g=Y1&)?21x!%4;^15r{S{1(SkTjRYb!VKW`45fqxhqaCNzLfW)(r -z?`H28ee#qhZy&S@=VXm90Z -z=rsA+WVTfT2ri -z{ZSfN>kqR6*1yV2{`LB;zY0aN{*&It>ZXg@q+>0fD*ag+eTlJ2?xT1iGQi%M9xoR~ -zEyv|elzBw*rG6HSBK5EL@)>KPI>AJu<7g=f=ymW_OHxO%HIC4zNm-97_ZCxoAhh3ye%B3g-lzugG=OJ6weB} -zlDXK(qyx&EEFyU8SVY#KRl3o*Z=^yBrM?LQ1IYN>8qZ55{u*OjR&&wu{sd)>9_{Zono#r+*!RVJ-gWTA_vlxRp9e^~EXypy?OFwN_; -zT#g)|FEUwjT)aLSC=Q&fet&$Wzst3cV|qq;J2=QmVBnP42HV_(G8;{Gm6!fwd@DZ) -z|NMUc9w+1NMN6qet<&X98f*P!gqGq=^F5{#KfXIy(|>7ni%rbpK5$sptjj==?$|t{ -zHydbeWy*Z2Z_r-_&CU!+xUsX_4Soh~p>CZmi~#CsBJi@cJaZeuMZ0gqndzCTyXEu5y1v{7a$KRz5?@B_OZ4NH_r^@c -zwv~ap2uQ2cX3k-X%+SV%4}%%tqh~Ov0y;dGgyjH~%aJ^E@H=gGK1tUb(<0BxZf{ks -z#X7wfx)z6*Pm8HB*dMZil9-cH=e+j#FhAz{QEu>cf4?67oU&E3T?*#5%Zl38GEWED -z`QrLA;OE9}NJzk-Xslkh4@Ieg88xBH%?L@PudOO;5@o1G4$umlWa#T&p0pr6ZVg#{ -zh|oY0w&%L&^7i<6f4>YpkKq!gxsLEl;E}6!DPtGe$Rpk3L(?nU{g&b6=%@f%dLUYb -z#UzI(Gf-KJ^$i`SuT)(Tcw8t{0bvmxGZ& -zbG;|J|7(VSxqkn3b1>86vG=^PQlb{1l0Yp@`+4uN7%tyCp|Fa0#tsVa)Pp3vSSE`2 -z=&LE7a5&&4qYqXi;`=4(N=Nz2vz1+>^~rs_+65saV%6H;q=cgp>p5O@#ZRwgGwzO* -z$I}1x_b*v9a!8iB9>xVw4>vs5O~7LHYx2RRppBU+iVsTkK$>K)P-|(D*JJq7zrIov -zE&YuOBn1=VzstM5OwyJu-hDUh{~c7DZqs1>R*WSJn@p!FR!3s0=3_3L&4&oRrB4Tc -zzLvhw=x)s+`y)PjUphwz_j;0W2rC-BRpuQF3Vgu)$JsF++NRN$g80~7{|G`lCrDxY -zopU4lcd^0mw`+In{jah_fY12rsZ{Rwe_mSR?hbt*yH;m&DJo9OWBGiBNpdUO6?6<$F?QJn5V@lwnBT*5yVNAy -z=f9PFimbq4LkM_&ais2GMLe%@EtF}MSE1#z1y{}&Y|7j9lzY5f;2!Tkzvo}kgf~Aa -z>wj_Y?|bT^zwck=->OpX$5>y&v5aj|I289s`S-CDr#^UQF3o%_$bfk;Z21_kQNPAF -z#e>IY$%cooiU5p$ubr5kTz3W5=%vT29FV7efCvC#mNHt4vb62DdMFP-)vQ;?9T-=N -zrkEC+9$#wH4H6-zKyBo6EYAuXxvEU;px0l&w9XkvUq90e`zp%gzRG<07e{1d5eagE -zjNYx)?`vECzCZ+g?Z1kz?<)h8^BObHQ9&(CXnnx#L^Elnbn{LX2jMLN -z7}?xylwAfRfuoW`G2#O`VN*g9lOgVP%O}Z?0S=%Pr*>ZPi$fR(K(cH9IDd5(L6#_P -zSQ0Z;&z{k*8k8K5L)ssh0RZMhX5}H!>Z0VzuZ*pmZ>1)m2LTLU4kDz;uw7RHL=t^g -zkgx7QfYljjSVKlLsk+OZw(PfbnW_;W8ZF#k2nnFA!3=u&34tQxSNI~=Ctx3+FSuQE)37=Rr -z>FMcSuGEZlX{j}Qu^bjRGFe3N%-hknB-4kmP4gIgncbL<@chmKW(9j@@y|}{>%k8pRXmv0CMdZl@t&TQA -zafi6f%kE=<*NERJujs*yTduJMHjplza)Q~o<9b#sjq4g*kDX1=Kdv)+pXUg;rXAGX -z%cO%;414@_c<1i!=DH*{Pwv!IToeNEKwRP~YMfvwURQgcHbpU2tQpy=y9!@4_F`XL -z&1@3CVSEVp6+mXo_jN$v@@K{6>B=N&E?j=7lY$2QV?Xd5yJ^9%_G^ietUS<@L>r{MxryMW2!OiwWJiyXN|WS@I<(^dhxHm=bb#@CkT5BS$8(qciK^o3 -z?yDG~>*dGR838UmkE2YE7u0pvaZSOW>VupGblvzrJ^}ys^;tvAcOQT-whnxs{&GLG -zkGMteWdn7H-Z<{;F2TE*)l>dDStwq=1@n+ivvTDy2j9HCyz>X@wdF=G+>|d@q%Sk5 -zX@aUHCxP*UUZ0;{8EyC%GpHe9%*eh=9*Xnp5F%3-h0p>iczsdnEfmfQ)UT^H;!w^X -z`hjB>n7Yfkw5V!MznimNQE-(ImzGlor*oYyY7x -zzw=dW&@GL}@FM?eR(vQAy2Mvn$8z9ugDqLI<&x?~w{`Ksn;oKBWxq!lF+VEJ#ZIPG -ztov&)giO-@;KkQ0ned#q#EE$p4&j%n+h`U0l0{Fn1#G{U;M2xf1sAUaP``5SWm^N_ -zaqsCtt`oy|1mRHrRF70_hjhv7x+HUqHpS%%telc+$)UC|(uwz%CG$Y*DXHtyjstu* -zT<^jx?ZKSszOLI<3j2YQT|O>($&FVR>PpGpOz=BO^ETb(pI&kLs2HnII7Xu3WfNls -zfLes91Iou}{)5b!H|ZKwQI)bg(3P*I5v>)y?jQ4xf{r-9SW3P0j{-?#p_>i%iV>ai5;x*gA>K=c(W0(Ljv|m;Y!$w -zPYsWu&91QgL#4kQHSFiA`a>#_9*e^4 -zKC1np&%D@l^rKCse*a6i`@`M!5w_9NXc~`uRN9>QuvbFQtrM{R>+NPO{CI#xOlH>b -zCbwE{WLy7WG3PpR?t-v1%!3ZBy-F(7d*i;+04Trk;J+>KB5GP4lh^GfG^Uz!sjO;- -zJg1Vj{BVwb%^~OZAX7!l36zxy#xxiQNX@zxWC@j( -zQXJF5YAO*Gdj$0-Z*fF=V^267^5REV#ej-4G6y-Qh4^OUnd@sAIn9NX?k4#$vcSl+ -z -zzH~{qI)aV=LpS3ZW#K!1S8AU7`^Fsh8>@!-{JB(yGoGcawY+H2Ml?7o}^&+`)&2y -zZwAGeYkee4tIIf_|d1LD4qRgRJ7{M+ksVa9`E7F(V(4BpV`N=mb{a`8> -z2N6^I!+2Bp?jK<9(>3auZ%i4{jb2!ej#vWrBeak%XqSms1Y*g<*4 -zb!Ks?!~8GHE#%WW;IX9!;5#|;Vv)-s%2q)_pok1yx9|W40b_yjnmn4Q#5??I)8dK? -zz*O;=L4_a)*OQRrI6Ol&UNB-v%F;uOZnyp*@m_N5Q}UA+z|Ym#m1v)_!Nz7htsY)3*5nmQG|48K -zzSw9rg2$ylX>TJtJ|TNgbFO8Ik={3Mis5s{n5tA3L^2Me0gUVOX^h59pnzFHtX3;8 -zjzCj_{c2Ulq#AGJC`FXO(ZdfNEzIqa3U}i|+pcAD>nc8+wT^(!yN{pxO2`#JiM#Da -zyh>y-_Ji(#On&f1F)j>HtK588gZ6zRi&k_9GrARdWI@fpiDH%${PC39tMT|U)~5i> -z0$SOAJh}q{6u_qkIhc{R66jL^Ok}*0>k?uqEI^<56TnINSIr -z%~cb;S{*qNRwj?|FOqo^nK+yE6oJunVLNX(_~v_;zCo)KqGr7i63#!B!sEVX{?bQ$ -z@TP37Mi>EA?M`=q&uvs@GE^A{c+X^Zk|9WADP_%XmKnQ98nY>uN)0;Lb7w9D_HM#6 -z$Z{n;(HawL*h0wx|0)3oGSZ@WV^B0?H??Z3C=DFc(y>OPNoP+v9fJxx9r*2X=2RT5 -z2Lp7m$-9+C0>9XamNTzWuHX1boC0L|(#r5bZJg -zzd!x)g#*ybr>`x6^r~QyAz-R>^5C!4*Lm~cDO1!1x}{sAnsT8tZ%)v?X$o#5Z4D5< -z(s!$)Y0gRO$7!wHpxyjoP=}IuzDsq>QZ=dF{->rq}rqZ8M-3!j+^ZWJ96YPQ6M@mmo5ePM}!`g -z{nDW}`FxV=pYKwTO6Hi`mBzTRcVxVEB$W}_HRiz9`*A)rg!J?MT^I@Z%B02Vl|PJq -zm#oE5ksX+vjEO{iXHVt7qLE!EX#R9$T`wXYX?Dn_$qiee`2;xU={dKlmYqjRYlVG69G3-HT -zO~h_%=>T`U4Sakg|Be2C0_Jy)Eu)j=&ZRyIz)Sn0&IwRZv_ol+R>4Nk(YF?bqn!)C -zj6}d3Pj(`(1JNpn_q>A#TG}Qs -z;lZd|nRm5D5R`i$AdP5-Vqzd;;h)=ichXSqM!RMKR^sS-R?jtp%qUl#_sPh{K7N6| -z6e`*{Dh?DzI(~I}YqsN?!@>v?!ai>3ogm2y3nAGAkfSUomO)$yP>QNvTl_6-tMjsU -zHno_c3f+>Kj8Q(m=PW>CW}0&WUD^IaHo%5Z4Ilsh&D}9$GRE0zBN-s(g0F6VI>xMc -zBynn8lEN>h_WWD2Xdx2~@@506x(0;6W(vf%6z!kf7aS(DzCrs!^P1lt^Q}Tb&_zf$ -zBlz#Pe`J#ad%|Fsjx{xt2r2y7Scsk+PhiY?qsV(V0I<6UMm)VXup}GdJNSqd>V8%t -zXjWWb57b)RNN+8&;Xccr@1pecmN4q*d$b`=TB4s$K_{z&-o}DpH3v`F_SgLjVy)n| -zTg$O*eUVJiM)H?7jhc#R?sD52Kk1aoW41XJnISf+!vmjwwyFu<9CR!1-@m`Z8$<-T -zKfQOh8c64)mN<1fNbS;NOct?li^JNa?c4_}UwxaXf?#}SSsmuzesLGsmH=_&xm@HB -zb_y{71xNP5lNPV`U!WlL5l0|EtCZT_*z8Rf=;j%~Lf$bR0fb#Oc?NSaW@}(RA*a6q -zl7w5KY6+ktzM`r}OavhD;=N5SJp{Rz=s~rF4Jd88!+)gcVcbpUz{y*x**UX;lZ}5yaT=%V`!;^Ghb5yj?oR_0DoURek_WsvD -zv;}FQSKT*Gnr=k}EqQ#JMdQ)|E?fpYt-)rU?738i=lAJJanrsfulAHx2Kj?(aS{pT -z(9pVdqvdfKM4YYP!*IV24=c%-{W3J~cig4iBmNVU -zYou4kT`cJHxY3gL)oPj+=xxWR)2n-+29ZlvAE$=H4qEDCORHlajbCtd_xR+z`au$K -zgLlMtPF`PH8K04hW${lkm2YB(-Ljp)sR;5u%okYSdRUAW@ZzRh=yZC(>C+9^W*H=;ds+)ct`bSZ9fi)aaGvCrkiF=h(Y}vF#Rj{T -zZ?g6Kmu&OFEl15E>;B-9T68t-4+MWYFF*LU^xyi-wT&%&0u6zRM9U -z6ki`)w!^zQmr{&)k-kLTMeRwu~W$T;Bj$Nlwn -zSS{28oT0Rr_ha8<1=oLeFarY8cc5EK4DPER*odP~{yj)*!x@g^E6WcCFwJ5+gq;iY -z@A%^x<7Or=U3!igxt{@~PhYf%Jtw;6In&GWQ-BEI&&=tfDV10x+yoD7w?IM+TwW=r -zdZ+p9a63#G$rH(qYpd#MKO%A{f*a?9zKpaP{#z@*{TN4qAY?ToY_b9@!(VbMCq!Uy -zXgs=}$>p1wBVOG{vTduwz$X?M!<<}VyS7&6Q_CYYLq5H6oVrz<)VG05=D{U|2r68z!235lDCvoD#CLn3rr-aG0Uoh%C0lqLUCH_n)d`z}3gfb70xUU0`%X -zdjqLuhkPhaW_;_kbekp+Z%RPiy(dU%#YZarE5n^R~mo+dEn>a~K96DlRpoA6{cbTzA*0Th=hKRr=;@n(b*j -zRJHWOH%2VT3V31%K~eu5=@?RO!o7k|PnN!jlCjT`pX_A2WmzU -z>}e5lNHWs;T0G4Gi$v@>Pn#b4n{2NTlk6v@bn>>sB^vaE(|y{9_b3gA{F+iI&oy*a -zjkNMU_q6FPe}qszdfBi-N!)P*KW=72a=|vDHNDn&dow>dP2Ilul!b!ttg7&n>=<~m -zQbR5P5VcX@ky@7S13v!hW~^KML%S}3ufuQbC#&;7cLonY_R$DL0QRROG10jjutWF5 -z=~gGxKHj~EU+J$6YgEL6e_@h4cxu}~mO3l}70U9b8}@L=P8<{i%T(iYM8)>!?Af -zCw}%oLZin4TmO0~e;_sC<{XA2oBNmcp3$E_i`eAX?{q?$p2u-xEJR=L-^qRQvu21; -zqVN~$5KRWqz~7SZPoJl&j_Gh|E -zO<4kl$bvg}d#{Uuo|C|(oi1<5nks!gVBi9aPKF$}{c36nw)}2!kC_B`7(ex~{775E -zq1uTfKmL<1PVZRk63a<^``e}yI|-vQP2=1h;qB{uesi?s;hmFH=ndYRc1$8Od7E|# -z;2>afRB8W)sneh{d4>Q9A-fA$+JItmxRHrmyt}dA(bhe0fb7636^H48#vieZg_vwl -zH7I24dNxZ$)r?;1rZ -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 -zjv>v|QUGeIz@V9ayGk4|Pc1bWaxpYQjyz<(gE -z%~=&>D2y?J?7#sp$+D3!-x6+Qx3a)tAxGMy;c_K7se1_OFxTh`(;N-hhatXqZ%4FJ -z$QcQ2?vgS^GX+v8G{^iMH)>&yTgEpSc;Dtv6wD&d`+)$Lc5J0&(co?tD7%Nv#k5hg -zTx(v+;}waT1mV`hOXfF -zQx5V~*eE&KTyx*58cO8C_ZRw}RE1b=IaQ!_3YF`F(MGQBDf58x6sQxdPmlO7K3SU%^O>> -zsKx+#qRrg|o*A{hQQ1KDWaU1imAtbPck^V`BSFlC#cM=Lk(@rHX?%mF#=bflF;XO% -zf4M<^y90!+F$1n>mwbbnETGp*$6&^jdf6OdP3}{dlpBeKJEyFQ>KI_&{D8BA-g^1= -zap$)VmxhFV9I>3-+I^CLF}lym3eag?*}~-B1a4NuQRR1TnM1nhtVcvwBzPZCB -zj@RDxQ&Q8L;sGR`ZadN6?+EJLwcM~C0kyVk%$5WTzZsU`h*v+L&>rW5tT6VtF;VJ> -zU|q3SNY~n3>Jk|_SXWDyQtd887V@knE6?R7-mmjC&KePXswdPNZr3j-&Bd6rDk -zsAX(OCk+yqf_*@~%t999rMSmWD0|siuJaXj`Cx+^j}bZN$x{QrH9WIAEM~C#+M+!b -zkSfYV1wuDlm=Z-7s&3RsbNnKB#hrlj(H33O*44_@2{6{b-g>UELwQ<7H>SzcYDbzw -z%=*Zp;c%dvU?ElAPgN_5J>C>pi8xzNe={EcBLx)`!?zr+Dy -z5_Dc58H!z-kjzoF=bZ6Okso+tRMSMC_xnS`g`fc-- -z6QT`d{~(pi#b(bFBvd3j;f)Od3_+X9jtg>U1wcbbhV#QfoBF>NtN?-3jIFa; -zGjZp~?ilqQ-ncVDMVJ&yRgN~s6Rj0n|8H1!r{3_B%nV6QJC=+$sUW}QbTx~JuT&*D -zGSF5TXeIevq5QWf{boscYtZU%jV}XwLhbcG&*@0PQb0_yd#5Nq5@4&`^T}8f6B6ia -z?LOG>(eWX`nw5Jjk}_=W+L_j4{LHe|siWP7qkAKXpm -z(Uelf^ANjb3udQubm`ovoAwX4k?Wq*2r@gmjhA3zNVnYr1>=#RFy{IVuB=y0G`$>u -z{Jcp!2i@5RTVN;^^JGPIV+2MkqAbZ?CugX)o=b#!htVPZODhNw?qiSjElPHqQ4wyr -zNt}=25BFwJSALe2#j87#m-hhO`^51QSjEdIt?7zyuWm>9G7bYb*2icCUu?2Ihy -zEIs($jVD8Z4CLePYR-exAOM*bh6t$HS7&#DtPIvrhvHp9h741ImV)Nk4Zb?N>^4uV -zkge1S1C2tMiJ3}r2kFGf?7u~+8Qlw@fKyV4>v7TvPMDvH^BLLJwdGJX9{$sv<&eAw -zhg?akdTo5HY&xn$oZ}tfB31Woo*LL4lRvg5a9x_lmA^gOO(e#!X!ZtrUY%5PifFk& -z6gyeR?kUxta<2y~tYl{)!|4Xqv`1qVYoZ;rFLY-4C#oAHOWqwB&j96d;1qR6Obr{z -zlo%I_r+QcjBvW>)(utlE-M0e5xw>r3nuSeEx?e_?$%sE$q8yh_4SOig&&gb+SdF8_ -zq0oJ4@duDHLm_dDfCH|(IY`Sk`)FONWW56o;wHUE>IuN>g5VorUjk}boo4jQ-!z`M -z&RktH4Jw|Hr!p{%xB48CzmP!BuX}lprRYekZ -z$pixQ^vtHYmhS=71DS5?1NvO1CO7<^bDYmf>?Q}p>C@9&*kEyc-O{WI8brd-`6x5_ -z36JmTDvleHCVt{HP;&;3$eK&oAx^(!%H@ASKy&M$bqwkiiJsG|WCR#_eEKiOychA!IP#40z!GjEmE1Hmx? -zZ%{<*rtKG!;-s<1F~$9lNjvH9a|so`ovTDSnN`%!;;(3h5vt=!e5#GdDh*&;DFzm6 -z;AWF6wi=`tnMh=QbjVdHet=(+qXiQ!%$q}qh>Jy45RkJNO>m&)@E*uww`hk>hL( -z1t~#(>7ucMn6-INtH5ois`sP;u-1L1{tvWb4z?w9-S!n^ -znwm{O0qo43MGPrm#z4_81sWWXlN+?ACr33*FfTQq!9`1rZ;l!$9&-o05%j_%c#b9y -zOym@q@MjZ#tOS3>I+Mk@657*#BVm#X?zqE_wLDkaCd8=y&N0R)z-$~&?nvz2uTF2n -z;05S0vvOMSM1*qs0J4 -z<5yt?_!(~}luoX;^kbJ}S)?A%gi$e}QAk{cWXIvbHY8NAeVxFnpdetKU8@e9N(^O?AqgXVx{TS@Dx7BM6G@lPHLH09wsz7a>2)F+oGWENX@5^ZRI-n8r;Q|_%&Ww(6tlJ>57hxk -zK%yM*LWRx^!7@pE#~MhUtCDTcC|g<J5zO?W4QCG}i0`7w&M6>IMq3XpEXYF1U%biK8}y?JGl?hMhqy(<0OU -z4wt|XnudI@Tel>A?78O&N+$(VU>_Z8u9$7P0ZjYD4k`H~DZpL55*?sFwNgc1IzpO^ -z%aXA*q`;Fqus;uHVbZlm2Zz=8#$#tI$#lezW}ypczPj$a!=jK)zd95%X&FxK93sGt -zs$bF{QOvf|r;z>BBFhxiL`7o7(&@1BRg!qlhAY4=Ik+`bu$fNF4sJ4iC7vBrIAaV_ -zVThA7WHM;qXhsCRROs8bi?^=-r=9=)P(RZ>3@*uhlfip!J>Nk@Ev>Z*X1VyVc?6qS -zLLHx*>-hIb4)2G99j3*c2o3sab5>yaNiPYEPKqFT-pOjJ)hDxyBTxh -z=v230TAv(&m0WieQ#c#My4~n~PQ|GBnG8Ll^(#w|mq2>HXp8(G%YAl-STRyDOGFZ1 -zP18Sq-#Xj>_+atfT-xurOmQsT&i`>a8jv2XKRzoNdjI?)ZIRI*|M4wOj{Y$WN=qa@ -z{`i1dO=UU!$G7P1doD#PCmo}&&jVDv2I?c+FVDguEEcs0hSHiKzi3gpBu%$H*{DF? -z6(P5hxk)cYwIW)r7<$ZL?>4|%YG6TVUGh(H{f0hDk%C}$doKM9dx6`+m=tr93R2yG -z&!ro6X2+0JaG$_@q_~kjjS~WzY0U~uNry(0t$_YrzU%IDM+eTp&aXFm+71A3+AECQ -zBB>d^=Q`0oTe)=mFm#f`LX -zQ0WL$ha`+o$`e37tvhO3zAyq-SVubs?GTYiHy8dff3t~T+;aEHT$-x6vFLA1(AEbU -zpcUq5Yymvi1l3wlF@U!ScR%^9sQj*bc-nSvchv6K0ZfdA!EpCvZ+XPo`=jf{n&Cn_ -z)MhR*7a&4owdCs@Fvv6#3aFnP@D0@(zh(vS6}BrfpTNa-x9VI0_b=)exR@{5Jpq>-tVz`&3)QBWP8e_wzffzcX=2aVEaX0K0L{s~L}wga;JV({fb!O(wz48J?>lz*SeUb86ugz6md`>% -zPp5|AW%1(`|4i?hhghB^;AoVJsY}0=jd;s2&0XYbcijP3W8$0m(YJ(a1xpRiqeVn@ -zxwmy0_+v135|K(UbF{SvC8daJ^Wd(?sVdOE7AG_xq#EF{ap`-)7^Ru3+??mMZQp<8 -z58E$h0w>Wua<}G|K6)@0;)TSTyV#pf$b>WA8omCK$4a*XCo_^v#1O3r;ZDsX5gdY9 -zqGYB_5yt2(d7y50Wo8-tz6YGAm0ZyPIzlbT&N=JC-vba(143crN7#C%Q7v(6$pOPN -z7NEajWH!^>I4spCaZD)ZTyaSzfTjHlIB9K#GMMzTWdy;=xcFy-b!*8+baF?xS!Z93 -zJfJEI(zbCtrv+{Z0E@>nN?i{>i9}Y&fYAlD0Ya)%ElCb&G>^ij?-yKtgL_9U@X` -z@oQZp-ID1WY3ZRZSUl=yDvO-RJRKXAi)6#r{T8fo7x<`R*OWwyz~LY#bX}Rggmg5m -zT3KFkk?v8&L~9HWN`lR!l?r0ncWYui+Pj7WqmeoLs$+lII*`Y(m(oFVOsQ{JWN?P~ -zW5D|&Im&47`ly5C%6MYJGd03&%cy{n7AWeyF)-*McaJA=#_7&6VZt)v6~l0dEnT0y -z4nl{v`?QCuLs?8voWr~i3OBjt6i3Z<-*=xIYHHL=7!4T=IIW}G8sNR6h+54}UIA8G -zi6lQ+ffoN4Knh**6-wlhC!-CGf24(w%SZK1b8{vMg;<#(n9$+F8q) -zg_Cr%lY$zUIj`N>slf6-;U}3+Hu{n+(QHFP2}Ryy -zXZft^q@VT1V-Kw~e2U59js1@`Z@Zgd1xCghpo7CcS -zr`6r+1U547k?*x4c`jhOr8eTFt~hF+(b`+LA0u*EfOHUqD@OF*r5=CRS`&Ki*}Cy* -zanT!X-=tnoOMmJ~agV^9RIS#ci{PqH#94@XNDEyXc8>2$8#a#s>^(DYg!uy5OddQ* -zG;T56-Eu=%7ia~%>J&4>I=fMF$CiaOQ6^CD0w{{VO2XpOUCd@y&CQJ2AC~&=d>nSX -zyd0G#`Bq!)L6Alju7;R66(IMQkW{gR+;l!4!IQBi6`!*^2E4<1*aT&cWr7BM2Dgse -zdi4Hg?ZY%tLqKdIR}~5y2CAU6oA;A@xKZhnkX2a#-Z=f=CRCBuPl))T)Z`>#!41)6 -zOoZPncfB@;&J^eN7+Xclz?~$i(HP3nXn{rV-KnZ!S`dI>afjGExd{ySJt+E&JOI~_ -zY7UOq$=s)`n}O07c$rd^X?0cuL-VmQaMH#AtUIH<0m4&fMbjyrgh}xX(lJyNJHOT8 -zX?tSi^4~dhe$Bk5KvVS#&5ggwb~mH;(T7QDZQMaByEy?{E!a~6>p;dLH{qwgrjMUo -zdd`{c^fy^*>2K)Ju-*#OiR8tXCF1Fc8skqmq*X;?rh`Eq?hD%9Q@c_sroR0JMgHRw>6 -z`CxV*7J+qUF6AV)Vb*V;#~Xr@xR4Oea=VRR88#K~_Da9Sy(45n93WZkuCE$Gs~Cl$;8x0xa_EuwCAk(tru6!>c`xl}{EGc`s_TVkIY4-um#$NNnH<7?KXTf`VQ~J$fbMk-jOug%Sy3 -zU?!jT$SusH~>B9@^304nHFIW#~**x8{ -zh{|OThTo$!XOm?hwLl0_F}Xls*bCAgy@fIvh7+MvY1AU=NGiSO`aHm~(adl`@jzC( -zibAWV`?f3UQ}YDyj(G&EpKEEVLqd2B;)y=ZXhdGB3M(z0aWYDxIWUMJkk5gM -z6d8&om`!3%&^_U2zyGj62w>B|SZu7PPT;!`|KqBY(SJ6z`~hkj`HKNrS!40xZE@!& -zf3^W}3L!~E-!)x1)RwQ>ZVU78Y^H@agxEPnu`M%VYe`~b;PMBzO7P!f9;5e2vKM|z -ziw+VEYS1z{8Lbdr4-S%`RtAla^hpbfA;fz7ILKY6pF8s3m5zggO~$w&&OW}AY;@hZ -zJ&!RCq^v)kU^|k3(1&$Deey3;0hA)rYYzrT#H}kc<7!GQt`#8WYhwVGrmzBna>)9Gz9+m3Obg;8t# -zPCa7R2=G^p -z-Xgk7K>eb`sXZVpIx@!HE;lqrbGCw71VOt8DF@d9gaW^75d -z4ak~f12e_NT;QT8E_SQK4H*E1MJmeU$(kn3+yKv-TZVh@jb+Y&TuxFPvqcC|_hx*K -z=#lx1vDUU)4xfgv=71r=3l|HLM5uY+fa5BT_~~z)XCEME>jNRr%-OQRN+6j{n@D_5 -z%?}|k>o@SbNVf~9Z6xCWO#n-04*rmmSK3yjA03)A`1#-$UXoCfvA+(jsNUMc5Ty`& -zc6BN@gKw`ixA+sGls};l3W!6p=8$yyc*kFOlfWB>&3BIj`3Pu*cEY6u|=M -z42*TV%S>7iG8b<}bE$zQ-j~s$pa0^^!2{b?tLrqQEb|$D*pHt9gqOTtPwG6?|oj0^3 -z!EFJcX9P_+i^(pxM$Iu_H26AHtvkoPzoQ_wmX-5c)UQuim7>$dgIE&ZGpjz37e(8sEUf -zW*7t1-}o(+U^g66gN4d@`P-d@t5z02V8_z~`FH&H=Pv=@P`1s{ipS8-v}l4G_&?;k -zDZNvU-0AMW32Td4IqXkxL4)WWPnv8MRs;!&jT0N?XiEfvhq40zAMYTYPZP_vxy8m% -zsEVWz86S!Z(>#8Vtg4-3Z?O7-(56_-h;Q7i;+Fi)~Ut!Wcwt_q0D}i+I215h45?4L8Z=W9NqqRmAKfHQzBgksmBkH=H -z2=Dza)?Q8On2U0cNyIGRGUMotys+_(CQ=+R9$8UXMH)U>cMKQQe8HH+*U>RlMK1D~ -z<8fQ!!Sx<@Ndam!v%1?~vgMe6nl{slg{ lN*~*f^DE}3_N*^J=#lvtupflr#F6# -zH`(pe@yWe#L&9JmM*uhuW|M(87gL+Dwcs6Xs9FoWfJFKmHkokm&9p5J^6y}S0A4KB -zMx#yC`Ee!x#_H4SH9i_LH!N}mw(#5;Cl>zdIkN9GaUt=TLz7qVHkoU89!Z3LWGfixn>PlNqgl!Hpl)5spCmcF;(TCDF`K5!;s -zIyg6+(AzNY(Wsf2wH_q`HH;!7=LobER&S9*=C*APVG))fb92H1Wa3S23KR?gG@pIt -zytxc? -zu#w&=$!z*vCy?um@QzY4Br_T?f-2-Y2MJI!M{+r&0{SA;&P1|O2LQQUku}bhz%V7a -zfngKG@BNh`C4!aGOT;G#D5>=*s1>FKNrSAsLEY|;r_4@yyJ9y7ofxhujV -zqYzo0b)ra|$`wU0B^QS#V)jO~M+MJnb&0i{#8RjtFd1eg6N#KS{b7C!t#N?)+ynP) -z*~GbtG^>@r?jVHNY7|7&p~=)cycC7+&!sA`0fwAAQrSe!$$F*lgk6g|f|qs?=zDE8 -z;fd#|W!l|!f()Cx=}eT!({buv=0-1?jtaOg%^;>|FFJDy^rnHwem7JgzXHZk0a+N& -zRs*c{2{&UN%z77aH;$<=lE4#=nNIFAc#<03_CPsv>DF+?^P;rv8qo;Pl)pe47svpi -zRuN#Zmzujm^2;#GVQ+ac5tXu?DG5(BZK748@z$TXY(|>M5t%+PN~D^s2vz*e@%V0a -zh!a`EJh$-B8FcPxtLTAn?m}wL86!5tHz&;PZ8NYsq9PdzlG9aW!{p9BBjux?-Ifzz -zF@O~znd)25z*e#>!m@0)=P})&Xq3x?vmo3RlgtKMQ+pJEHDINaHHEqqX{|!AP -z{cv?Q46l;39zG6zS3@9xQLg>__bQ<#kqG{5yuL5C$f9JhumB<78zlbe{U8>7jM)kA -zww@tT^m*i2IG>j#>s=xBmF3R5)8-CQBIxszqkh62!eumwF!G8349V;{)Yxqc -zepF4mAU#2>UyChhtq1R4{$ -zx<3pmBEEkYSgMKar&V+e$Jy}j63LlniHta1?x=dio|zcHyr5JP&;u(&TB_%>Z|*{s -zLBeHqso@B{xeQ=0vue7KYnW@X2q3i2D$LPJoj56)^Wlm1Tvs=*icq6H(53ctK=9T> -z9~O%Z9xKT}lBPAVTk#hEjgkHbm_tk<*#WMoCDUhS!-ag0zyXCK&!4*OD^P`#Jg%kM -zjE+zXZ2ceP$Ga&-XZQXakOon-CSVpCzOqaNeg6LO1Aa;;W)^-JB+NUV3BJ|YWau{p -z92;&EdQ-=Iaz6mei)iF({IC0+V|%dNl_F}m*9g*)ZCfA6IBQKKzw2E2%F8cR-p%Kg -z2BQMJ;{5R|4TvYrnLO_MaUrEfx!;~M!hmknvZ}|JX`GCV5rk030+3(z=TQperNgg+ -zMcy#37M3{ENyR~l5J;VICFOV(Wocjz3^yk}l;lp711u)n-ATd=wWcF~4t~7KLTz$zsyqB{{h< -zN*JyFTCtf@VHvGU-ON&ZT#XugpcOqYYeH5>8hSZFbiXE-Ahu9(x(k514I?=-YY7-y -zx}Zp068I2MrfAW)S`wn^m+&72H6sz!(axtGA~Yp3>S|;~xo+4BcQ|@qRzGidVM`7O -z_pY?I$1&CTG@fmBJ?am@CZaM(^7FXV0cd5*Z_|b)OTLO{VYSiLn$>UJtt}79N!!<-w^K9VQ+Z*XI(vDlulvw}XLB@y%0%>N9 -zC@!dN`AIb?6CksAX~a8b!FSVARU9r31%^ej>Vs3dBYE828l%4dQ9un?IFXLQhTk>D -zxyKZooX+R5b8svGq)ljU9zc%&u_2$LaO30!GqoVfu;lHIKbb-WxAb%X*&uz7?Qf5Q -zI^`x9(PHkzG$6p*rJhx3tK|&PYE^vX2I1IX50TWp0ck`{ibW8dH()iAU(-ZM$|?d4 -znffi60b!8rC;9#rIk{D^Dnv&PC|43PkF$w$Au-PUQuN2qR~cT_KYslDu4c_Tv)#sT -z;8T_SV5Eoxpx*6T8+jHxa6L#As0};phY?#aSc8;hG;1IxYe1w!H!{6drRaRzl{k2=YAzG9h<|0sc*9y-O7pR4JJGOzZT3VW`yTZk^b3#r -ztaRnM^vylqf7=uN6=#HWQdK%z9z86FQO=>;`)OQ~U+?dQh$So;fqyG{=$OeQk -z$|}$vuA2V($36>8x~*W;ra8D{;%qdcFtj>nUBfJg1$6@`xwoKuC|{A -zhH(6PSseHZs_!w!@=c?vrcYKB4`-<6litPquk@k8@YM6=<{nFvF7U1a%es;+FicWk -zg|y?t*4&~N=&;{MyXS(o_0fKfD&YnY6GGD@VxSYxr!&_~_U*qI)g|-F{<8BQb-&rq -z?)S7kK0fROJfYZN$1(#bCTXUJGa{4|q_O`nrg3EiXrE;K-}CbS$lP2*|F3ScyG{`O -zMq&BlNS^@cYInP*zq!%Z;Ae}a_@M;n4QMITulU85G(G=Eh}xwkYNgEJQ -ztB>o_ggN~XILODo$B%dYDr!feFJ&$2CH6Zw+zeN6sJ8I&LqB>ns)BG9a2o|m$KD7! -zp?26s+AUK*vZN5%LyF_CpK^znna1_VOR#IzkB=YrLYr;U^~O)3><0DY?#jn5gcH|DDc{pWsDu$Kch)dc6O09g+D} -zzLm$Xf8=}n{l|CH<2cfGh({dcO!~KtiRAd_$FS^^{lKr`OBeE^?UL+Ry8hP>`@+YM -z>^Tj`Y#Aw<1E}EIw$j?z8lKK9+;KmE#ei=tSNK#8+hIBn-2ZT-74{=ZhmU`9WF7S~ -z0oq?RioD?vkFP}YE&{L0V(hof%=<5zEqif4 -zO7z~Iu6K8-Y*@($NG9uD>AlI)0UbTcNA#5ZXmMI$xi4bt%>lS?uz}SjkQ>Z-nTRU4 -zio56YtPTGk-txWYY?0&c2{PzzeS(w(QZ6bejC`33oHLccYxNXIwrwZ?El92c=qvku -zSh|ejRpc6hgy-5dL8CBZ!AtAkDtS{yeB-+LG2O<22=!zfAJ!Pd5x#`b3|c$p!X;DQ -z3FId5QaDQ6lPmCaRTbcc02%fUhvd^MDO1g5_kt8lKRZO=fgmoWU`ZU4<)FtPk;*RA -z;Aq+2pu?r;0<|Yrw|}iPWmaHqND?G=GX2@9(Q4t{ll4*aje(*WhzjIp#w~{EkXp6tAcl3A8;1w&!2D_QW|Ea$n2tKE5izA9ueNI##p=CoCLA+#18@uz9X$XYZc>xLaQ)H|+jtNOJ1~4uf#IY5a0+>b%3AtP)qO -zw4hqeG;?Ky2iF^F2GvV%kHxwh{{>hFfk$lD#7#HF>GPQDB=ogDLviy&hk+bbU{BXJ -zToSGIRy00J#atkf|G4G0W)e7ij1|L?v3O#S6q4=Om>szGw+r6)erz@P$SYL12}Y~i -zw4HU%&NfY$R3EaSzln_W&T#2F(=O{>7Bx2^Z~Qo$VH*K&Kh)cP<8ZJMYUo -zCr?#=oQfHMq*yLZ1@GxKE(j=3Nf);HCY6m#9rCU!N0NFu^_hbf0mI#e!1`2vvLcfc9LWZsDwT|D?^BdF6 -z(tA}JJ)0!tV*0pi7@zyeL|9g|rcw^6@=Q!hT1(61jyakkTtccgUa4;6BLP1lf28M@ -zc`b{R`hjbKs2^`-(eyVo)?iEC#qt6$ub7QGQYonV0uwc4NldP0)ln%PD&cc$h7=W!aTXU+)4tZj?$7V -zk1*H7UJ78?!7q@iCx0yBhVbf6Mp}WG`thCobwoqSGd%#)%#mr7%09_{cnSx{^EeFW -zJ71T|Yx96b0nth3GD=WJ#`yq<@B#1@at29=;tn?tp2!s$ -zmksT;Lbr8xUI3Jq;D~tq=)D{Fy(1FIUQ9~?@a1GsYVo(kpz{H-opo;uG4 -zsnIrZJ1F+k$#BUAF>KP{0v)h2<6eb+FCdHRd`rGiqo)n>E=H=Ee-jAYt1I%;i#JEA -zk5jd>Wd!A_VH4)9jM6WOZb7voUG7IU9!hbkZL8 -zN6mev*V}_fa6PdYsU(%Tp;UpEj^e1-$GSnPqJq_(hvEf3NO14bI%Hc&CR#DGH)LMm -z&-x7POj>6OO~QZSqQN(v&`}zdnC~qt)|JF)W}w2*DVD|5M1U3yh-Lu -zzs-mnx7|q-Ki6#aUeQrdV^4M+*V_2w@>%(ERvIwK929 -z9Tp-#t4x`+0cKqh`-+SqBhw;r=XR-{iN|I&7O1*BHfM^>j|1uPE*rT>WqI@{`u#Jp -zj4}`pN>b5TIP+;em<1Z2YEx15s#Q3m0|MHr8M4AkcgyB^9;wXPXDgGwnxRF@4t0i- -z54DzIAt`c&Z;-gDgH<@<`a^gG&6tCUBluQtq9b_` -zQp1#@0||~6ue&Q{dG7hI-TlI*u#zeTd_t-%oQ^(B2Lk}G@5QB#o%ZUGIen)Uwr=7E -zWv#4@=4=SBf**jw|4GHJoK!`CjFLnm*M}*!*=qTcT6^ujo`DGh$d)3PX{Fb6A7nIY -zbux4Qi3}rKgY4?Ds;pO=tjdlgTTknhk;2RH3}-<}OG)z_Z`5t@prX6`bGMqb&Of8@ -zQQviBSmV&dCroH7js=ri=PKs;(NIe8WKD;DLW-^p}BIlbo!=-MZvB*ptF*4E)*{-U~rp}QSy&!~kT6-txW4pk)$FnFX#X!TstW?M-T -zqzT}Og_#&82g!~NH41zBM@1)c@S7Kq_73b6Tk@j;xsKxdke*Q+19P$^<*^LmG&Kn -zzW|yAHegZ>hJo*-kEa7UqSgU#N7aP8%*6mREc_7hA5-Y|=#E80hk(b%H#yqb!a;YM -z-Tqktc3{1|Kcq24DbO~pY9TNG_DD>nOrEop*4A=Ni#7D}Z3%W4gS$(GBp`|tiSdrQ -zJJw%{4GoxqpnRE04swxU$E=lHshc`Q;S7Blh2^nBS;+jIQbSDBWre}#APGgl7MOV9OQDy^YRe)DjcN4Aq!1%Rbz;MN-{~Eqz6>?pPYstK -zh~CDT0}trv-h=y+#{OrF^gja;l5R=zPNWsa-8uTk_gJ~=6vP@nK&|wwEd{(}5xRqk -zC|6i|C(Ux?yOXK60*?8_uQ13M5VYxU6z|Fe{i@d655$zzWNz8D)IbY4z_9Hnw%d{D -zLcfk(^OMBfFvRDA)G0ubxvbA92XQZ;S>8EJ>Vb2L74;b_@=LWvc^k29!I`C2J)J5s5Vy$2j5PvU$&7B%lw6^gRQHX! -zPv}jYH>nKkm~>IPO+i3OUVd@Iv`iEIE`&dto5K*5vy|irIetQ5sPnGRF@e-af2|ds -zU8%qoMMr-w@{@8autc<@AVMO*+j8%}zyBjFstfJ$n}K==fDFT0@RF!NO@PoH*b}h` -z(X-A7XIw@*qRro8b`A4-_gyYz?1i$cng`2x+`ZL&N93b}$skEX3R6PRUqD -zzPQjlZ=0+(fwF^^m?CuKXv9J2IHhb<*2Rg=FD7blYo&h(;WkiR=%@eFrHx^^^HwZtsB0t*j)J?5^SMsZ?wA{O!K>8uWo(68|<~#<&jv -za84+YzrVC(cJf?FNSpG3qCf^wLBPnG9?8_|l@Cyr+I?|L(ud(czc;nkpMGYu3mN&#!(fk9WRBt{b7rFsOZrSNvHzU;G -z?oEdYTDWri85Yhc@SGg0Cd(uJ)aI1No@=Q`G;uNfOoKY!J&}b^Q(Tu$jo-=N$x6M? -z+S>wSgq1R_m_BN|EWHO(>~HX`&XhvY!37{qE%XVG(yH(YFX3#DvC<#?DYy=|_etZ- -zBXeVIsQ>`>O{Il{Rik^9_d1>3O5{+eMcf?%Z$sc5d2W4MNA-k_9<|sozoCsGvA9Z+ -z-jd|L$t-P9Ad?&szZAHoOZ3(NY58I6##ihj%_#u#N{|%U+Qt5m6pJpgXc1;c`_WjV -z?lYEot^4909h%uuo8Cud{(S3aZDRpM>@0~`;Z)un`30^?64H;FdjeXBdw@4Ya6>At -zBbMHPx_1^u(Wt7cav$iG4zXI_z_$5Jz^m{_qJmAe>w)A%Xm=}Erk=9 -z9gShl3Fgi_r@Bdw!V}?WUZ`o$$})*F*b_OgdeptL1RAajvz+{+W_N_Lg;GqdUfRnF -zl5JRteDlzu)wml;JZNb)65!$`9V2-ZW0E1GyREbv&~AFuy$Xava;mX^I%(uWS(jWl -z`G34l(D5=#n=#8klI=(O#CpGil1FnZ=-?Q_lsiQQ#1q}zY8~!ccC|glfU5vTwTm0k -zM+iHmcvDAwtrBXk!4^D`N8x}dLpgpI#$zylDZjZ&&VE%9^#1V!n)hF(cm=FVTxGI> -zo(BVNi^s+VLn`*y1kYcQyPSDxs=dCUX_iy)fM27H+WTB^w=J4LS{78t>$=y(mufst -zTEG)I#)N0l1dgD&2nf@mrLG+}@ -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 -ztf*oPVF&{SW{|{ -z+Hx$L9KtaHde)3Krqx6ck#S?jsU{RuXk4m*Vqkq0P4(m<7S-g;Cu%1@4+w~XyBdWN -zq7oDr8A1>(-8%z#*9`k5In%oMxpp2SVR^w=PKbzrn)G|4G@wHXsg; -z_W6_*ZCBUf0rbEN>#UY~AnsagbWnrnJNYNOSQz^>qD(!3Hyv|=7b=NK$e$ee5|^Pb?;$zz%L;-@x66oFh>HMAV?lZJP?f;;_|Q2AhjEeqy6C?-um&fRRy -zNhS%z9Pk>+G@?~sT1JmP!uT0S;5=Z(($YAYULgUPw+Cw3IXLeT)c6!cS(G-2s5W3t -zD;d=+xKLQ43X9VQ{H=*A1ObwkSO!R!pcq9hFESSlV@#lx6CbC6WJRl6yt|z0=p2B} -zP!u`u@95bTtB=bebD`lUijd}~Gi=~^o7_!UT~hEb)nDe>N4+Zt*7~qW4?aSi0N}G_ -z3PeJ>HVWpI_P&->WEHwfqrQwu?`iFQ9+eyO2CsKiQWr35q4$iBn~}Ofg@nRKpT9-# -zmL!Lu&6b4UQYG6Sv(!kdKXWbkpvSrn(23Upl4RF`{RK@IqjNsSLA6)*Ddi4xJ_zowRF1vJu^`*jxY~vDl!@uzbFu -zPzR(5=GmBvDGW`7wUHFSEL&#scFfM#l&k5V -z_g@(Yze4Yz&*Fuo7KGQHm{K!R3HXyI8)MN%6HJy~tXHi}L01H>bR$W-rICB^Qtse- -z@@*2%kPDNLBLc===M~^j1wT3s6wu3#w4vX>^lvc#)jscMjG*06=$}Y?!}{2rL1oJ+ -zcSIMoZ$gba;Z;p0$8ifc$_R#X1`+8x_1`#5eLIO4He5?7guS6?eJy -z-O9!C6G@dv(dn}FBa;I#b(GCLplf|OAzWuZq0(vY(q_O|zRd#!Xxt#5&bX5goA(CbXr3e++^W|H>REM3UIqF8f8eK@(+W4X&K@Nv&9-_DmhPWgyy36k|pw*bGDmj;`{ -zT??;c&WKD^zmV+ob{8aaX?xRZdOk;)^J)aq4oe$31vTgpro4c4=t%E?Z&*grIL&Tv -z#`=A-!vZ6htE*7^t@7P9Er%P8Kbag*G^gu2tmwsW57eFF72hroNrvAh6QYEkc^N1u -z+3MTT>xGaAtP>#O1=r(!?jKcseLoNKMlft}{bJ5m=*T(Ii+F9v;Z0F+O- -z6leuIv{PBvXjp3$9?+8%vZ5F*9*<1BC+4E~Madm0i(4L%TsjGturUUj@#3H_`T;bG -z>qTfw(rr&&n -zl3RfB1^2REb(D+JeU>vejy4u-)12N1!uftCM3EdDN}usnP=UN$$MN`FRQ?~Ialg`F -z-Z{JGp+0tt3EPmxM#&)s2XQb1f}4{Yuti?Bn9@I#ga2dkmr5nRQM;eJ$e{8~#RqLJ -z)0Q$+O6GcHkX)7~*MYnUfG9wV?pBPDw+%+VtsHtVEpqW{Hu71Hv9WSjIz~L+Ui@D0 -z&a;ijuyEztkQ&GG)@6hn;L4E%+sjAt^c+mcg9fKKmqQP@oe3n52RZz3Kk@Q5|3OOEnHtu`Or|-mceY*#z;Zhej+QhrX7` -zs)<+>$fI=O{rj)qI-o?kC86m8NmqH?~NVc)4Rlq2w5t~*zr=)mH( -zNG_TlAsBx7dhta5MR*{HP6wqmphHFF#dQZ~4GltC9{Cq|7|)A-1n?uTmHgA(432I~ -z9cW!xTlbY;4+?IjGevmd;N<9!wqrb-tC$qJdMA1$Ule6RI}+H}yGBC40t!~DoWlsh -zh)6%EfJx(MVD2x3cMPvZPiGM)9{m3TdVymiOw1|gc^GJ$0%M_XjxM}S&N{-!U893} -zt~xBKnGsg7uwKjteK&>u)75*%L6i|XWDy(t4>5T;2NIBZ-?%>(W6z(yZk0HQO}X2sqD6rc~B#hdjc%yhN)Wo#zX -zQCE78IM1p&EGr2bUQu|Rg%frttnpfPYH-U^S5Z;aTwE-sx=pFO*7dNDLgtmc40!d{On^O8& -z{A#EG%%)2MkX<^BDz_NK%WjHEl<8gXalwlymwGRm3HdvYdm*QEY~m%GnnIAhdb#QN -z@XAG(7f!z&~b2q=z@xMOAYtD96Ti -zA-_oqP6^Tb6U`}cHidrU7=(PncD4f2>14flc~$^7lfYl~nRU#Jc|FYQOb3dc`nkJ0 -zV|cr^nh$!NhaHb3VvCQD7U;BjQ4CG?1qNneJj)GX`4KwDJZvP%HkL?*cpW~CisiFp -z$rvKo03bw>4zfubb`3ra=YWYdlD?*hfdHOzo5J1~BLh&ibEM*Sap3Ur40Ntp)krSN -z99@YIw}M`?l2C-!IF5By=bIMmGK)Dm)>*k_ktQ*itJu-F40{Hn2O`p%;3)fhQK!9M -zOdW>tlNPdRNnZ#s_DPfWfNt1aF^E}Uki%knrV=W7j7=tV7#Vflr`8+N8_m_lBd4PaQ>)0OhE7>j -z`Vi6rw4OZ1Th*F(aqC}HlX#Pb;EKlJ^fV6IxS{r@)hlgm)!`r2F3t8!ikzj -z6To_)rqvBX?CX!QVjE9vyS#u%PjF&iZ5Y(i$E(qXR%?urt}S+I9?g#iGpnYDjb&{I -zSS{(QIyHMy@-^L&Nn*Q1j!$GleOX9w!WO4ZxqKm(=sn5$hegQ+6kK#$3>LI{x66v)ku2f)@S>V@ -zglBCiPEw;S59k|6-yuWE!mt9!@OdFlLH<=+tRLHy;$(8f8^W%H<{%P48M6l)G93t+ -zm`hLdA92SycBqR`@|-<`d`gul`gw|iAB=Gopg8D!7i*3?&Bt9373RlPSVY8cPWzK~ -z&C9llBpxMxUaVD8z>T{+f;=mS4oZWMRI`uZmDaP!Wi}1Wv3ga5w2J69P+6N5IrR7z -zFA{5UbpX6mDcWGnphQ}91U|k! -z46`VKgJ(=dUJoc!5)Ju&JRBZvJm29?3AT9STt81lqN?O!lz0FD3+px6ISZ`;5_K08WEvx*fwnQd1T}|0)SLsFLQ@C6du{?rFV^Rn}6dEKoO$)g9ib1UI?l@U!qlw*l0WakyL! -z=BZ_`M(Z->(brJ_7N`8WxjgcZfO|2TtfFG5EV76sWAt@7J>WXx -zYUPS#RMUb0{&9C%sqRhwb*9Q-aa`h_c?M%&LUGzi?>TCExJWkGhXhr{K1Gs0{IoO$bQHNPz+bK -z%H!)b6VGET#Y&6Y2w+P2%wyLlgK4c<*^uwnr^V@>%2*JA%Br-d&l*LPi9{1f^@MW3O{c(gJye9Kc3N8-SI{-(KAD -zcqoN8QyXd4C7%#wqZScYjOuS)F2#Z{(w0fP0z!b~4cR}}WwU}m)j}1?j^Gb=Bq^@X -zkEXoo#WrLhWR^Kvb0Py|N*l-ucd3)Euks7M`dAFf*A?+246L+TXq)8RfleHAALr67 -zd=FVTJDe&~;`HKF_7BDxskIHDe@zPuLznf4f$S0Sp-vb7_={W0$En;+hsfbjyUn^o -z_pl$^tG3(cTEW6V(l#eb+5pO`Qn;+)HMF~4+|={s&;jZd$K&gU!Ag -zXe07+tKK9SbdBQgK_av(GKLRSam;2trYN5bUj}$7&}=ZYi~Y(8%Tr%#q1_(*Cmcdkjahn!q!>vFTnL -zrr%>pFaEJBPvzrIiUL_4o4PyWd&=LZhUg(p=|D3(*u|#<0c7!W43#+|El#UWswy}MShtT?v -zsg#0kVF#tb2s@!X&h?)^fBt0Tu6L&G9XIIh_!YhwLw*{bjFZ~30A@&3n!kf<>vPN& -zj2zZ=kArj$kD#9r+-^bPFjiO#=MG?GQ%h5Pk~ -zAxQfN=pcXwMd~sh+b?M!&G)+?isJacpQ**Krme?S-<5F9M{Xfu6NT&*GC;b1C*}NU -zJJU@0B1r-)+I!Fjrim46qBuIa)v=0SsRu`9lWfK%Y)VTBu*g|K3$b{=4eO)?P@yID -z9i)(yOG6cAMpmsg$@%RYOC@ezP;9Z5@m<^#8#}QE04UkoI|L>iNP+wP>6SP2XQA6O -z0C69ojMnkLe0q1FP-AyAOPb}EVFywX{JxkSTV>c~Y!oNpg+OM@ccn-Dbl@an?ckd$ -zCy}%{{_OsN0T-UOE9OgjaP`1dXDn*h!E(TR`y(g;yI4K%x~F&Yd^pdz -z>Q&qo9E#qIa2b_kZn1?*BnLCEK2$p}SU6Bdlo5}ir908F=xb;NSbX(Q@@ump+K{}| -z)}W(EnUC%Pg=lsQD&WfwzlZl+WG@pBMY=e9Gun=)Hz)0OY+S=GkXewIkB&{kkt8|dE5QBc&*`(eMq -zSmf6&%ch1$-=ZcX*~#NKzc!VpbwkF9FjWdPud=i-04psKCO{7z|2v>Bfd2jT$CojC -zAVkma7x1h=Y8f?(ewPqXD#eqDR1ed!FP_)g1H564*glN4U=_j7C*1^#FqLd%tK`+h -zh^BQjr`>|M-Hq1f+MT!d0M@&F|3C_G2cw^}&|-d8h;yua)E7kqI`WALQVAI{AHzTzV8UKsPUlu-qf3-| -zxFnZOuq6p%pJ~%{L>&qgF-RlY%8NG?qy^1sLeK*gvd97L6c)gpNE49PHz@M*C%=Hq -zi`yO=j0$dW%iu}b(cdGajTn*$KxxEprK!yEtbY$$fClCUCKYa2!%BZ1y*q?+QVa`V -zdda$}v_%HU4pJ8`yk(vN*oy!$P8S$hVBzd46o*8 -zY$ok5E8&pRzCpcOh7h6!Kk5sb`*&Royr_aa$Owo4Ks&YGwk)ZR*pjoeqvI^SyE*eb -zy?;+M-z#}BOkE_~GCUWQe5C*c=H#9b@R;VKUW1x;Oy^N}jBk6N!0=}z+R@c1d}0#- -ztZZ=#%b(Z_emyvtQCQ^>wXx*KdWSAzV9afh07LI+fj9a)BiG>6;7C^c*jRRj1!QSx -zDZj~8VZw&G=byxP8K9p83KOIy)lBaKX+Rb9=+6h@?gA@-*_Eubfm;L+3OMHE5?{Nb -zm~;wQ>_T^gmY{4Uh51{u>3|7Lejo&P!$(^)JAv+06YX|rtp`-=O}p!W>0T}>=r5ozqjkc1I+o~^5jRwE;6#vdQXu|Zzy -z3gOH^SJy@l(z3KojGHr2Z}K8x{>>cq0bVJsqm!qw+BjySi}ky;&jG{W*aTx+dO_#U -zBauvV+qp|vp8ShURJBaZ&=11IHYs6FEe$hIBOYuZKjBU{1H-^EBitJztUg2) -zsVrt2*q-SOEZmUHP%^v1L2rfo=||K6qufXdJ4T>3cx|FqYx#+1PDdVC-#huIomkFS@iOIS>whj3ICI!^@LudbobT-mgdsJRrk|`K8ELHSLUvHlFxI>?E=0*Vd -z1<>)CJ*;=Ybta8ec{N;t5W;Y9Oy7uU(NNGQc{r(J-B*M0-3{auphsC1%IsEj$dnX6 -z0+Y`m-ee8IgElYpSDh+yRdz-I -zzA}g}_`!hY2rTP>zWJ8i-MJeLi3&-s*npSWWRM@Mh-hYVhs0(D%r1bZ8tBhgxGARi -z9DG9;>KRut5mIW5wKw`w1vlrVGryrX34NnJ)pkf@iFEWb-7!$vL0S0oU6jUjstKL3 -zp8aNM$E0z2PvLf~z6ON#bQgCNJ}1GA9)+E$6$ShzYT8y^EyR;oX&Gf9;ud9lU`kZF -zU8Vo9^h(BGPPb$q#vKdZ?% -zNjK&gHg^Y$@yHa+Y!L4r`ws}8Y)))%G8(~)X1)IK6;MF9L;kA`LHdVVR%r`V(J~8b -zs3H(3tRY!f&NeeKrEGaX2`?Tc&!)L1@J_q|6M3{fr5fx}#ad0rwRLdsY9pQ@^NT#z -zZ;vooDKZ0G$lB3dLLaN@gh?39HX=#5>}B2(^twA@g_Djhsy6d@{O8;><3>-I}W*# -z*|Y^-M1ORaCAJ!}$xjAeLu#gThmez#eZo+i@~h<5)B~NFN?)3CYoLzbp+N3+@rT4LUjQ+TjbRD`~EUtj2_47nM%-}Sst271^}5<@vBxCeSJ -z*CsAUSc5pbu_D+qt)0ug80qN%o)pLC#5k%z@I;DmmP!nsT2|wS76qeR$g^|0=1Rmj -z-5{!oxgRDaIwX&IS865lInrDSq@Hy<#;HSMEnO6{UBJb`P;f2YVe*>v>#%Cc-UrPN -z0KOR2Wdzud+#&gdE3aIR;DA0es1h4vDI7k2{*6S{mW_7kJPosu7>T>P;J6$Mg3hUy -z;^>ZRDFn?oux?Muo-~m*)j@i3qK$EIB+pn|cwMnK_?YIDqM)4~p8XBusv-Q`+~BsH -zh)uD~4`fy(C*jk;(dp9(Cu+1ZiU2qXj98BwvexhBV2sU!Tr -zm>5GA(d$LU6Gj=1WdZ%hCI~K%9NnQ8m8vq@BCES`4#Zpjlim{0pAQX34h+qo@VdfX -z)iDPqe_B>+jt_Q^CaBCuVp3^&Ot(OhMj%%;yvz2D6ko88<1%p -z=!tvniirMb9c^Ci_W&gY8M0+X9#=UG_OcSWip(Qm#8XsTc)Umf22+qD=kC=~*{iiM -zD?nc%&0SBG1v{|J?*`Ydb{{yexmLy=fU9$1?Tc%x=k72Qyylhs#0k#=7l2DNJ?F9H -z*HALQ!iH0y1NaYPlJ}U!CL{$DYufeJ`t=n4ho@Ci0y1jbH}7u+yTmXTAJ6_Uno~yp -zF2A~!Ct45v{Y^}6l7kkOL$*ORCKCOM4tMOYTzhDJaMhs+ZSI#IBRIE_j-0qfP}NR_ -zNlngc#pUdJRc%RP7U{P2jI*ysmoBm08TAk8+L{&^Ff??oVX%6xTp`Q3@@&Gyc5-!I -z%*@tN$BfK4a+~fWQSh(@{Q*d7AcJ1Yc|4jr>;BgBMJmTUAAW?P4WJYf=22BULyz5R -za=wCE_#Ly~fceMUuErM16;a?wXpvaΝSqO&VAh^Ng>|)kgFgWtbu&b?1(B7+VMbo -z<8EpH=Tqh2RfOVa5~GEx$|%(5w{ -ztW~_G{B}1Strl9NAoMINzBOH4TTX}3r&AR*0O9w0PH4)oc*d!y+>J`_EIud7Gfsh= -z0B9Ff8CsIer<$AdMoJ1fx7&l!@8q>ax0L16Txl3v;Q`c3kN!p$F{f^v<<>P_m4u`| -zPZK)345G@2_L4t%FEq_9$9(s8X+|XhLcu%k{o|(_geyr69k7CGxCe7_6Vr;Vaq6c3f%Z49b>_Zg#V*lf6UU -zaV$&M0NX9*Sy44oNglG$x#UKTl~ppmV8F`WXN<`Tyih6&P|!6m#snrjwYSa*(G=X? -zr+Y?&(2L6?u+=sxY?k`Wv4yHQHonZ$rsdIcyzAI~&ef8em`e3L(&`3exyNbi9}t-+ -z24%JmivZ(@m5Q=O0Bk}6UVEWr*KsqJEU81_>T<;>aA<<*wo#LFFl~*S&CDJpuD=W1 -zrMoF#sBHGHH)tI{9iL`8EHR@&BO>$kn#lUMX5*ZF7c!4KB;jrujvHHYrsY%Vk^v4d -zYH4X)580?3ZC=sCH=NaJiQjkOUakjvqy!;O%V2;B{Fr%%F`ikKB5FO86UAIMOY^f^ -zXA -zN34Z2uJD2iTr=S>pIj==ybITeXbcfW-?UDCD?kZY*`G*mTG@?jl3z}zk!}woqgrnh -zoGXjn#(p}Pw;Np4`)g2ui#*6G5Z9GWv81Nl7?$>CotdV-81 -zbZ#uSPVaOmdN2J*#!{;QusM!qp6$%(Hhp}4horor4)JYSbZ@krnqxMAHn?9|0)P7F -zfwsbJ1c)m9(M_(V>Sh8TX)yG@PiGXPcxGRbl;^q#jwP<{i7xSlq=9P^EZ5rE>e4tL -zKiY3)bc%D88sQ+%7ur*5>@n|6DteO{Nz(>ms3s1f$%Sk`z^tDe>!?U+$HD= -z?*v#6M`v_XB=z$Idb3vL2#u7~0&=V!mICcaS@Ivhpo6WfdO@b7BO6)V1yOsbGUSCa -zqBNeYf7|6KqRgPqjJ<~V^#jP?v=NH6jQ-P`MoDQ;j^L|zV7$_F7rUl68q`GyOYTZ( -zPm2E}fqOS$nux0&PJcE_e3)m0HG@E!B72fqv<;-s<)g+?@-hl&?^DZ_pOepFpqUXk#6AlJ~#Ji -z1%TEXe0uA?2BC9o`%Dc23nJ(7MCt^Z64Io4dl=&|gXc(al`@}X;C=~6r}RX?l&v(G -zN8Z!M*#}c1pIMzWWD*?dXqRkjjr`ZTEh%BaOr>X3qRnsR~;e3p@ -zU3TO1;6tB`ZhDcb^qael?q*1f6{+UARgsIwx4-KM`<-XH!|REt{WlYfYltPTn3y(5 -zPTUi;8$D6hFohY)yo7syYyn|zmZ0$bo}`#m@q$Xufm-ZVv009cPyUE?D+-op2W_Mx -zUfizJpt>v#$!zRQ`p~;wD!>{kL=i0`@e-H)49_q3Ke`btfSgI9@3Gl>3$08 -zbdDnmQ+V;uq+QfHg5;~+x~xnugR(?2)r}XEtTz%k-0?HTgs{MC8GX??5t2ZreSJ8I -z3~8(V8o$m()_9nQRNx@Tn~68F!#vDFS(jn@Jhsi9{HB;5QK*MtAWZ&S-?W@G=Nuo$ -zBresP=rpH=uw5!fMtZNPvOrHp@-QW4K_)))ebCE8ps6`-Rh((1OVJMA5T^}Si_7Dv -zV%P^hoZR3KSo9ixm$7AwEdwrz94~t7+R$=&omk@)8)ymZV@KnRKFV~qhaRE4Xl*$B -z2IiPUMHs3WnuZ*dm%t2yID&dwXjKLSBwyt2Ps?dDK(MAg+k|UsMPjf>N>{_^CmSv6 -zjrTe9@zX*!Giv+hj>$4F73(CnT<)_(&F=!}GWn2(QxIdbdzZKE#R&NKh>Z1TduwfS -zkDp*~HIwZoncmg-J(@223bJ#}ELsOV?t0cIM{0<2( -zD>VdcF#0f%GBhc*v2}e2mMi#Jo`A=yf>Oya1~&vH8L=a6B~S}5v^*mhio6BXs|5AI -z9*|b|Q`&1&N~ErOr+Hlh!^i>e45e;T93Fg -zEVA^0iu#x2K4b)2o$|X4LVm*XRri{M<9+4UxdQy1ijBybXD)O(W@*l}kW$^F95NQ9 -zINZ)5VHW<)n*eWWeGBuIeH@*(umC-QIoHw?NPrlR;jGnG?v{2X-|Hhh0^WwE`-TV@ -zdoqNyU>!jYRP5igtd-rZEKw;>`SIiDa*SJ{Ubisx!jH4r%i6srbWHC*=2uOObRJed -zg0WR5S3wC0)}`B9)CxL8d{7#+doxy)O@}WkQiDU)N>;_WA$IslG@0QPGHn-^O0z?82w24pLEU$+Cq68@dp6;sCwD{UtN>n13EBZBeq-^`@J+beHb% -zfI7F_!pd*}lXPxcXR -zWa8lQIo)m}o3XHTOLh=a9-T!i5rjRop?74F0E#9o7G%IcmW|{;2x8ayVYjpew3N?T -zFLH$x6O~HKIvPBz_K-HeYu7MXiNr`YH_aDn_3vfuUIS6qCdb!_N8KZA2%0OkPr}|? -zci1P0Dd-}IJm~b&dl6bdi2jw{xhZ6RYf?agfdhOvn}FDZQo=H|Ht|+gJi3bB{=@`r -zvTSgRX6%!Px4;lhWG51g)FeU=QMF9x!{r1oz=%}Vh51HXg}r@k?9H_n@-V_-L@yYA -zfWgsDS!gw2<_Wvi`7j*9`>%J^)(oa3UwS%oHP(ZXQ~|!KlgOpvR?3ui@!w2G^QMJr -z`l&Aw+fKB8t|@28ukczxR3VcMiXfQ|Wnm_>@kkV1$;nA(g;Y-jpPTHlFJ}uFHK>HM -z2;cvYv3J>$6xXr<=lvHw5Azl75s{fO?Lkj_)E^)~fSiX&9%hbxeV=_ElCa2LRjY1g -zI5G?aA)WWxyDnHFrnM#&FH9L@ye*9Vj-8L#+YQ8()@X^q1ZTBaMYQkY9DagX(KN)^ -zf?NEhz~qx5bNqS(&fi=la9sfnOL7w_%q~2&CT!Rfp1|&A&4tcYefy9{sJ4G}ZvN4@~MaQ$aC476dJD~QPcPxctV8p6c3xizXCX`68^^jmF^ -zLC1W%;DXcUVa%v&N%M<&^mK{=@E(JhAvC`|aQNA8piZX|FG7Xw^I!TD3?YvtR5o -zKZiP9@$VuSL&tyF58yOO9nqaAL_)9i=ilm4|9I?Lv)t5=U*B~PdwEXs1vGj1>jhio -z@vjO}{D^#OSjJV)e(W|U_Jni?xqgvGKZ={w=C=Crz8gXJ^rbT(6K9iaU!4C%m}@wV39;VR#>NE0OV_PJ~sZC;u;N# -zI1Oi&9z~sH{_J{BzvoYTH@~1zg70E+>0+ebHmo8_F2Z|~yAP}YG=NbY0 -zzDM%Mi~_UjRGdyvUB0w5#F$iBZ2NgZFE~w-UHPF9d>m-8&f2P-^xb@ax8y0Tgx-SD -z(o~ot9x7osQ@VC8YxXO`7~9&b4`i@u*qFnTIc)!#L`hB3LmpVIi1k3)v0ZN)a>X64?POt&R`w|uQSoG^3HzyZ%&crUexZ9CXD;J;f1 -z{{Zp|JL7){LT-bAamDyM1PS>dd$+gq^;Db(nm^Eg6Z<$ -z_Z)M!c#*V6D4_o2>g>LxhK^){GQj7QisUN9pbX@PCcQ)iC~ooLfo5gwaxx26)zL_s -z6w{(Bv!(pa?M7Tw$X`q0i!Da20+)HIQu`!cSzN+yMR?>McHSaMaW~#sY2$`f2=R4O -znFq#4X=UMxjC52#ivyGZrUSnf2ci7VGM1Mcze$^0YLwwdz4ZC!`BpapS|N9#3QyF~ -zL#=*Qs(Sb*8x#cQ>9iS!4xqm5eKC?*Qw7Vx&@0*Z^Vf%c$SL)=avz_XZlvU-_P=RKF`!?1Aes;pr~O_0p($44h}ng0|2vuF3u+d?yi@Q59Iai -z08MsU_FL1Mdm*W)qN&O@<_#0}{I_-;@PDKIE{@PmmtD3E7PxGYU -z4Jgp-+_Maw18#8y*F3nk3ZJ!dUpv5<3gBzb#u_MT5sx*`-eWsPY~02PKp~4<2M;ttZ|qh=5Gq+lDk7+h8>EH3i5)w1^4`c85!)DX -zWcld*Bl}FN!o&_+V*%g0_zwSLEeToOVj}#`m%AUi$?5&OWD0pRKG~Rs -z;e{C`lQU$iZH&EQPfe()7f`^`w`Fn!Ebyg3#K{y1j7(Cn04OUS|D;)@ -zMGHua!yuyWrB4h$V}{cs?+-*#!VdU)4@U9uTJ-kP6v*zN6wWDvhqjy2NWhy0}7p7g6_GBXXoYu=DJ4)3y)S5Q{pyD1m(Iw -zmZrHb-#ou^z|LHNpm$`&HpU#efLWs2ws+g6b@A0vpP;z5KwQQC -zQ4aV5D-~&z^wd4KEM9PQUzr3jL?R}&+uQ@BuEe-V((i^}d7$t0C3*Fzf&ot|%=e?- -zdWl6oTBl!aC(h7{$@u8j(VZ>)L;kl^OS`f)z| -zJ(i@S9JbEl2?ZZ>w6?5F_>`#I2HNaM?pd|5kltL(5F-ha+p5VVK;+Uqcru}VLlP&` -zsDK9LLTu95@8g`C?hnnO9wo*%s%ru=WmEY`y<10k{+D*UKj`K}^0MsN)4qT0(3_Qq -zqX?Hq@);J}VVkS%US;)K#rnCDg$Byk{(^;RbxE6>Q5za7Ksw6T*8t^Mu2-3AxmgYT -zxowzKd$NDX0x$XYTA?8Q2P)A4<+Nq!BiM0zE-JVI+@UWrw0m_-ihrR{oPB1VyZS6> -z5uP>+I{@WN`vyhe#=US7kSHVXm5dg-i#T<;B02>i_>ws|!H3lvv#-YelG>G124QJD -z)e2(*M^`1G$uTXfk9ztV)56r73N|09&l^T}xAK}$2pyho|Zs@Zs7xntT&Lsw{*WkE7J27X9p>&5^5A5b-a)4X)!%7O+qK1cfwjLFG%u7;dY!Oz1z)`#_Bux#gpR@z{@BhjQWQ6Wkv9DCb#SA-%a!@V8 -zvS;C{Au&pI5urOqH3M4xYfTWK)eTWrFEwp)Hi=c#byn`_j3^SPaKTA1)H+(h^U0-w -z`W$gNM)*RI57z8Y3I`RYCbqyUjP&4YHRjOpaL=^NNl&{otb1xt0J~_;JPVdplUjb% -zmg@6oZqI+0GQvtBfDk>0^&Y-yim#%@DE|x_=bXj`GNufvugML2 -z>E>IM*`|xoZKHtLio+GZT(=Pd2zDZR%*oc(ZeSd(e5d>XiNs7t!^NMc^}*9)2b(s? -zZH_Ce3oSyLh?9I0Br$4RU1LmMI0AF0r|cUe|!|4aef)pY+E`m^DAi(=+Lku4KT#UHMUCkVo5D> -zyk;9Ksi>~sThddO*&j)Ro`znO&Mq@N>9+s2uVmQymwS7^9>4q&8=mPdGPV2lOMiX5 -zydv(Z*Ih7o?)Dj#GL2@4>)D{cfVR5OQop=>?Gcx{Kxtq@h{vMYsvh0wRqb&A&fRoe -zqm$@9-f5#C{-@cUI*_c?G&RZ4C5M)0|Fw61zA;XVSw$~iCumCs=e%D%q6gO+@c9G!hc+%?V!4j#HW@YZI1OJop}uJ9sQReqnqY49$d{1G#>*@XE1>h?ouX^ -zPTdhAP@yg{0L08@%Lg^F>wQ>rff((6PH$;|hfMm^zvA6?-s5TgVSLDq$+9*`t_&fm -z;KlMse3`wvsDZ_g_y-ju -z4D*klQe%czqt$L)91r!ylKvXeFZ$4LVjK7zHTz_~!N(s55R?X2X$;A%@k@H1^+3(x -zJ&t?oV}W076%(s#_p*$i!M8cF1hd|XV@HFE^(CANx7Tt`8NDlTN)6C{M7MpgRMZ1a -zBoAXtVsc)(4!7{5#J2GJ$4mV;_XcuLvCa%S``{+aI|uHPXeglo5RTi0uh%8wdwe8avL*^BJLZVhttu~UQj=vi>b?woYXOz&weo2<6}cHsu~=T -zrdB7E2mYUitTOYRq?M?%Dxm|Qd_Yn3`;BZSP-Y+@j|BP-tFvYBN%ZuaU_rhUwZO^| -zx`qxA&TnwpAC@#YpZajLoo`ylEBNZiTNEtj(Ct>0T-;e0Uo1t$&G)p6%`ndBP_JRH7zqZjHkbpe7~ONwoi -zqUuoHU%@M2ZVH(}w%R8yQs%N%gpJ7k*{o6-f)yIuSz`-c(0->SXB2d_0B+8i30U`< -z=G=R0|C`HdS^JD-FzOMn6kO7wp-tD=fQ`@b>aAaols;!lrMc@4t5Id*Exl<-y}%6_ -zhTsQC>l{VM4Wy{D$emkcx?T_ucKSM6vE+apd-$eg?lO`x);In_8W45tb``;#GG-z^ -zk{&;8u#;hcuFF2)ItG%s`{)G(2W7zLwQB(eizY=S>#&Lhobix&KFw -zSCT+(YSQ#a917++wrhWLi%eFG+0XY|z&AD*i_iKju;rDYe$9 -zK97WTl8ALtXPXC$q7$W;D$Pe3*5l%$=rmwOo=Un|YLFr5U%xK3w)s~ynN?h@BSCRU -zJ-r^{zUalT#TiVD%WFdiHpt8~A0y90+qMy$V;Um|4M2NpLa`xl{M%WxtqU!9#)8%{ -zW3VwG$*X5te&K!xLWG*iPv;qt-K$x0vMfaB| -zu_^#zpC94<{l|BW)W5&~{#}0Z@pD@^_`}!w_*H8aAL2ZE%Enj+CF*AarzrH_jNgx0C^-Es@zV_pv@88X_`LPB5`p=tOtGL9^zi<=U -zhga>}!$1~)*0=Js@@Id2{}4ea1`vMjuQX+U{rX-kn7=0Jd;9zSpFH^Y-h)*)THN)Y -z-@hSDK{U^|`436?aMxVGZ$3F6yZ2kMAATv+wX4BRkoiGf?aQ^7j;^0^=L=ee6!Sw* -zrhyzHBtLg5TtakZk)8QqlicoNAWg?t9=Uf^a4M8I3tHFFC#|b0)q1Vt3z`n(gsvTs -z=RN15F;In?(njA%e6kPe7vdairq{a;*>m?qRxySxw)1JDXd8c)ypEx!>v0lMUdG -zCY0L($L_tjEFH%(;DUjFf0QR|Yi)mR!TYb6{9V+>gFwcWrz4a`XOt>{>miDPCmG^f -zV!&Xc!1B|c+;RK#f2>-n-hXZUx&&w9H$R|sFjTHOHNI%+#|jFJgtGPHy2Tfer7O+q -z(YRu|;H*@#s7>D_AL25$DWzjo|NPQluVs-bOi2A7d#tKe^NC}nKUr&auE}8`4BHM` -zDN{m?gxV{W;J&-ol2|B;1>#9a7l@v^w&mC_*7lBHH{h`4z>WgmBJ-pMeo_KHxep())&B>yR_GA -z;Po4?$J=^XeFsimh=s-{^ZuILV0^D{mFYX)SU8wg%+T -zzskWjmxej8bNMpdhr3_RzS_pyJGz -z>uofjE_YNoW?W_0k}Sm07>V}sR(IBsDFRlz6SZySRjZW@D4F7F{h^kYee{d0mAsv6 -zk46)cV^-dcwn-MU`L+dkuKWSy#Ru=Vb^qrwP<#i>@nh_yF>$9{&07}LO^`T -z-2iqKGSQrMC-QM>aK{nI3+<9$RT@T}{VKppHTgCoUJ7_CG|O5|eQZkcrq%GtuuB6V -z3tXpEC68!e-p&Fwp<{WXBlC)?W-7a1BQSc&N)U5Y$L3cRh76SAMbMvjj@}lximIor -zcP;7|$B=wR8ef*+btNb5z@6xvXO!Rr9Wm*T93hue$_04iK$|OdWEy;(PVBsV)9d|@ -z&%a*8^7_2t2D}{=zp;}q*O$j%e_uont+{e-BNILe-F!LHY7U?nnp`(uzqXU!(c`be -zu&lp+NgaWG_IG{~R815=-`on1k|b|3%N)X$R_QzL2f#|K{s -zwP`v*Vhb&qA1qz07bA_1#vv&~3izG}$eXFl6V_7sHbH1iXC*wuSg8ODzmzcDY<5U{l9nGS1RZeqpzJ}vMjHl4rC!Rl%F7;pA+ -zZ43s6oCw0y$|J=^x*J`%;RFN7D?#qp-OAQw*pjiyuRIpE;?>YJPxldHs{=9r64o+V -zVhBy}eXJ*{5cB8T?dPxWmwVr6p#N9@&Q?%!0QT+1wKv5)^XS{O>0c9S&s7V^$bXpI -z2oS%nY0sb+QdsXxJxoRnKq_~WmQsExVeKhkw&1>b_{yd0rUPHv6gJj~Y{v4L -zZA`Dk%i?kYStp@b2Pil}>GoCF(fb@}W99e>4aBt+8ZuB=yb{d6CHh}~k3YNO0{6Hd -zvyl+eQ5oCvUpF$r^v|UK1G&_#trI99iB)>YV#Y91 -zOaczGNkoP;t&>uO%Ls{lMNlAD7l_bBoVB%*#4R0W9Je&Y(07HStiwC>usl^DAAC(o -zq&B>+j`mY)?#dtgT+2t3!oO`%@b2-%PiP^x9$nl<8rxA7SZP|Vo$gX;G3CxSln7lW -z1Opcjnn%hTm1CPR9Oe1bJZEtaBwXlK9_yj&gqd%dbC$C~P%=y0(}ryQ=g -ztvot9WCt^_b4zaZ7M>usn3a~LJ=U|l{`2H?LNf$>PRRTTe17a)5M?r -z^|H#kf3g|Sm6u{1+3lnFDINMzo-}!Ngvz=Npa}zG3*3Ksgar6tN3w*5pODsGvwdkcpJ_4I`B^`*u~H@^RKaYnn*75l0i%eX@~ -z-MC^!{w6J42u?XhosFIQvg*1CbyGv0ZbsT(fqQ_)jN(f40czy3CvPL=jm5G3`|_Rk -zderUyINq9cTiy@{%mtWzL@@3 -zvKi%e;GXe)x86$oIhAw`-1AUft?wVd)_e|~;LRK6fhF*=DSr`Q8h~AR8KYlo;zO^E -zdXHOq!g`rJmN#h;^y|I&Y_C!2aG6Wl2G%&ljG<{l?ygQmGX04f(qv)CAsJAleC-wU -zP$8ds(092@&O(P?)orL6%dawQO#O#19ylb6FAu5ca^DUY%Q%TPBRzdZNFJ -zUk{V9(}rnrmynMPC~LL+T_`MCFrAjOg;^l{+Al@8k;Bh28?0mh{`h`5=igs{9G7=s -zqkp}e_4Rt0uh;8*{qdE*UkCoN0VWNzO~McKZ~214zl`1|dn(*pm;j%b5awrtq;Faz -zs1Y#1n5LZvEx40Lyi!x}fx;c8W55h{t|^u#M!AEA5l?aVzz!J{{g3}FN-&W%$&bOu -zk_(gLp%9gyywS_9;Ll?yZ5f8C1hsi%j?!?;?%QA?3_f`OtDKzSIlchQx5KQ!ym@+(0;u* -zw=$yM?GRkKTz^oQEBxGwMeS<4{ -z97p+zh0D5rC#N>7`Zba}D_Lf9;k}KV4;RKC15$8j*hed@^{y>c%ILqy|0sT=y^V#} -zId)afQGu?RQ{p890oV8$IxZ;2s=m&?|y5@&vFWCGm;CPIUwn-ZpBI(xA#u# -z=;_aKmzv*kU-Lo%h_GL=)$}XJ7a8as6v_3b>lczftzN8IyqrVRJG;QJnry*KI -zG}E2Z`Jnc>EGh$gQRsl4j-uer#@13dAZPSpe*u_$cS>mU7_GH0?AuXc-IT&^8ZIG$ -zX(*!b(^NhW2Skxdh54jsW7}P;X=F&^aW+5;D1`D#4MM$Pd>P{K=XGqICAVt>oE}BW -zb4|D(G>X>MHZjjL3U^Fl3TgFAYYeD(zU+up&2&91@507pW50Zo+WYwkwsiLLruD<_ -z;b_77rMQC&nH(Z -zWq~@KsCn%aHfB22yjfgojOVuY4eSJI;4x1q{44I}BsEY#C!Ff+9=(OsoSTtyBY_1~9d)5ET_)g($Zl}Lws -zs1Bq3nma!U#?g%SltNMS75WeS-v3w_GzVZdCkds82l+`Rab&1?hcW=_E8$1P5s2^S -zSPWn*my%(Q$Ur6G&m&~l9GiubXXK@Gie&~kzn0IXAs>IQPH%nDS!52So4xNC17#VPJxmAF~vXSd%uNQssn+zp;km1d1B6GEo5MCRGel* -zkMWX#))BrYA8%*f$JCy`94#3!De$ozT^TZ8jwN9hEsx@f{v|u{Uso6r|3-39iU~$} -zEX_$?^HQQ>3tW!=V{6I>i#JC1wXB9--$@>I%Kpd)YxyCtv_N#BOKJU48dmEM)BfvU -zPt=hpA@-K>K1ue;3Y-G{_MYP_blGmdoVcW^;s@Q4$K!BEIBS- -z9}N@-&Q-rZzS7_2+Q%_Hqr4p)WpN)kENj$dph$CU9#NYOw6!v2KGiko -zuYyiz1_a#L+3f~DgPu^g&K5=h^E45-*jkpk4dJ5Qx8Y3nd3-#=SWO_^8*^wPO;q&r -zj|Gx2`Xr01jh8u{$Xp>0-3VkhG#8+twKeub8AT)LJ>xdgq9h;5bXGnregc07&HMLo=d`R0IKCko;i4&HanlB>y2rTXJxOqYSv<%UJG1{!^@|| -z)ELYU*+5CmNr`h_dwiH5bNwhc_`1Je4}VVCs@X1ua@%D^ZEKmIgY0~9c^TkyV>cuu -zAW$??uiJ;B(!h+G(A8$dBhtrKm9>a6)FSt11x+&abuUj^kQTQFEIvd?pa|Di*Q&0{=w)(Uv}4vOT){-$e+2+6W#tb!@XR; -z|GGJt(ec=OURfzY3lK@5l&1Z>_gD;<@10OsMLc5%Rd?z=68roEz3u&C0Za&vR7!eG|B5ReCc0bscDw}M&*%$2l3zK -z-CibX%NFmx8^-?*N=>(EkbW!1l7&sCQx&TtF;ep}7tH2Egxu1ngFjzOUTAc;rjY#+ -zAH6S~ql0@pNjQWRjom8qjs=B1VEE!PgJ=u1I-?5=+VA(sH0L -zoAv%zSsK7+{Pk4I_WM6Ct#EgT{*PU&zh%gGBu9%S4GQ6;ix_V)*ZH#X)TiZp5A5j{ -z527O-o9}W3z`zuhrsc7GKEourm2C<-hH4nQ>;g#KQ4!1U;kjLE5$^NfN-{-O;IJX| -zJHI$mcd#Fx*SHqSv&yT`^4Wqb=L4kk2WpQ6+p8Sg=GO~ySsX#{W*5dcIt$$x2 -z0lxNM#n<JJALB5GoHDXfG5XfJh95kjF7& -zbljS3!~g?GdXds0yMT%)c78q6gg?LkmA#`UJm-Avr*$tpn?jL1zi#g;!s*Yy?5|={ -zet(~=%QA!ROn^3Oz|jG;*2^&fbIN0*IGU8P7kE*$Lp|3Dc!Bm>fPRxfZ!ZI{C(!R* -zju$cB$n~Bzpn$w`%0~mP1}znGVX_Bvt1@a>Tleo~A7!#f0gf&RQ63;pA-_MCxaBqC -z@bjRt>4J`c0Z*=&CfHOP`3NsSCny;08T+kd2Eb?VbJv;4HZIU%edv1RsBQ%)3f)E9 -z%DTxFJ`83O$*85Z@Aj7u#z-2GEcx;(jO4S~0tEV?A!z-AJK>X`=u35i}Ie1Zq-EqS7uoKm`Y -zr-}n}<(>L3RODn{)B>ueqgN*+QT!yuC!`erJ)8o&UteRr#7= -zb1H~ya7ephCl^r&S_-jE3FG|aJXr@ndGVwEZg&>;B@vL(9EENB{z~$hQS66X;RdljB3^UVo6zR|$X{qOt44f_*I535;=n8%%ck?T9 -z`+rK!Jplh1s}Q^tBorEOSzp*}^bKKK(C08G&xtc-2~4nU-DvI7IA@G(?l#IMgOR{d -z$)OnWft;`@A&1Ej_qgSgNGKulU6wi~}IpwQroiI*TAnlr}7hnVM(MXjctN -zjmIJF56l1n@*%VG5a@GJYUNkP(#^M0lh1E}s{kU2J}anKcOby(3?!@} -zqnT9Q=` -zb2*)rqh~z}b+n%(x~?-$a;7>nLy-Wh;g{#~@*FIo{UI-*xMCBw?Rw+LZI6F2cD8OsRXCY&1j%#TfF;L43XD1jyXJZl2r$$@=z;)%K -zz`X8>C5eXq$Fd#ftnb})eG)V<$RaQ9Y{W9VY!X`4i+>SyGBK;84N%+}F7vYM7|1o^ -zH_9t|FyEGIYk}>fOQxJyHtM*36-(l}_SR!(lk<=3jNa$D0e)!*HTN>vAP>XdejVPq -zo4dI#h0T*2H5C_y;5!hHxQZAjSc%tF-lxq_OciTHw&t!v7md8w4_EV=#BLZL!f^#K -z+46lI5VZVRae2BjNtg>)AL^r^Ise!PJjZTY@T>irKozUw>%Vr*#<9jR8>r$?Z*h5j -z^CGwQ?Nz~NMEznyckZUSzF?Mk$@#oUE77z(Ud%;DN@CNwetEB|T*|eza^qZ64*7*A -z64X!mnsAogi`*jxAbfqVTV8p_(yM2Kpt!}Y_bp5R*IC)u7nwpgvG`JEY*7 -z!%SS&c)6{XwkI#d%dY_y^lD7eh~So9&I=u2yB;J=%Hi?cWq+cI_`3TlM&x?=v2{jZ -zOV8uzlH&z+-E~|`@Tb}!CjnhH{*O<1La5A7pv$$QyA9ildl -zJGo1cZf5P2zfKm4*KffrWRt91In1>;Z!hosf%A)hNEkDM?~;e&{5ph))I}k*Km=Z2RCx=9vjXMos*N~=^M`)mSOuo;axN{Z -zniKDyrN_(N(gve1Oh;I+>JARs_M#O*O0(sRl1wy7u|K6nb?n-2sLSts6&rL*<1xI* -zznT>v%7QL&mDaHwxZGe%7Hqksy3uW2eDG$6s8-qU5kAb1N^`N3Nfqn<8U!Izv_E+9 -zHA^Nm=Phw!o`oa$W$HFs#lB?A6Kw&T?jnb@5cloC`oIWbXDin;7Xn5JgSOK6AVTyqAF`EA% -zYvxV5231t0><)D0t7$}QMX&qEyrYmK&M%f!9W%jF@6Pc>>q%t>mTh{TFPQylu`wQG -z?B6{9wPKg0d>jxQZsDXwU*UQJX+NquGBQz+S32DXt4JMO+Gs -z&_AJ0ECU?gP{0cbOOd(X-HeQIHXMmMJP -zDXGYOs{Q7t=h*oC_=RaDlVS0R43UI$xnk3tt1R{q% -z&Pw9yX8WbB*O297Y=d5tJZt^N<6j9(4PlZy8a5>(8I?@)@felr6*iPzYPMLQ=3^e8 -zc15@4_Kowo((V3mcYTCywDg(A;U1MXBR=ev&~xhqtp9quSqnQJU<;F(HGIjfmK)jDKUm7S -zew@1>EdBDJ18b*}%Jkkit~Bt;FFg2f3%m$&q~9j5+e_$5HP=#EwG4SqC3WRq6qVAx -ze&pOXid|KV2~Puv!HnSH9Q~R@&Fw*^ik1;5`x1<4Fbj~Hbt^~_Dl4HlriIm1A|&<* -z=1<<@hxEpta5&_}kFJUVm1blPaxM#T&BimQ*D`W?3#r^q@?vCxk!i~X=={k->smeu -zTbx140>&fZrO9zpzicwYH0v;#?Nh$q9%TXTu7f8eVhZ)V6PaIND&&lvaDOn_^+u0k -z{7f(>6rX%U8WKUePKp%p&@R!s!kmq*V64eje*Zz&S$d`4Ap@zlEwp^;l5TYb8~=xH -z#x=^qcl@%Li`*$I^H$~ae|)#$o?bJGS2pH>04&&Nv}|`6(R>}j{OCSqy)15=n9(

V9qUnysX>~t8D4UyzZEp?8jf<^$BX^mzcfQ6~81Oy3gGWZ$Y(K -zm=)pU^h_T4wzZw@PhdPR;Y*9Ww)w<^B0WStt*lshPs}|;Z?fQHz*w -zz19~obCmsbx`k;f@dMnr^a|b^VO3)V@(N}k+L}$)RJUTuWk`FT%En5n7WbIW&KNhy -zNDjycLVNB#cun3US@Te_RE1}%Lbbuf#6%($FbNH_ -zTNuwJnGAY0aLjCPL+a#X=i2hyEG4>QS(HKuVxUP&oMgmIGqdf&76ks;#M8-CD!bEl -z%`PA}E0SL$9!bT})C{?zC29FTJ5V`w;V!Z&dogR4@)AruK*Nqww87 -zz|yB{)HAP`GM^ibupAw01+sf9QxI@0hI1;IkKHF+*jZ<=jhwi!iGSe~t{wK_Hd=iY -zz5RcW&FTEJ51SJ#NA3v(B?&u#gBTdMJX!!kk;jLa{xFFD~wlO`-23cDkl -zQ3;m1&XS58?fz;L&0Ud1lWd~ti;Y$za$Ne8_BOKO -z6SDR+=USc^>3!p-7%pdwsXAprB;zo;zqmf1#$3!q378ecYPI6x2s9ud8jmkycM8BLpq1^%qdOo#0d#th -z!#PG;)FigI>7d0N6V@4whFs?IQzVRvy>8>4GbJzwTiM&OLD(vj-v;S6>1%3vVfrn1 -zlkdp6p~20RmTPJ4%rVZ|H=r6wL^DWfjbot?TLLOHzC(U$(!D_~9cwf?boP|fF(|Lof!{7?PQ}rBFd!G3yjy7`@Qa;j -zIrAFjx{Z&-AwZTdy=-txwyMuZ@UMVgQUPtro70swBLrk=`1wgQD%~DXLU9;VrT2qm -z6N0nS%EY73FjcO4c)%v+9*y0TK2&l@)K(^i>Q=N5c)zHXb1b93;pMO{=eAJTv&nrI -zJ7F|gvVlL>DLw(+GB&reqaeZ#Q;n|E$IeOiPu@oG>y14P(H^7!`_ms^H~@`&`q~mm -zuL|}U0;WnE51v|moi`6YGDTUSTe>x>DHl5P<^;`~rr -z+RYyZU59seGwH{#k*n!5K^NE8qg+UMKUKBfvOsB>mj!V|(eg94TNV+_-p*mjIak%v -z8yHZ9&&t4!^e{;MqT&$cS%+Dr2+; -z{Pelo9Y{(*f;s!16G_f6l|RGr2~d)3Ic)VBs-Q+x6JczUm4n!=N(i#cch$+LKVfY~ -z%Ghd<*UlVldYvE9HUoMfTuEX=HWZ5N)T_jF2?8_e1e%2~-bnM(FCA)=&nLP5`7Q;S -zWRAH_X^abdN5)S_QW=q5V+d@$ALm0uNI&1-g?W&#Oj?{?`NLRt$yy8**@4N)m`KET -z_Ei2W8mV=H;!j7`?IPllW`}H=+^7XQPk?cro^zXub%6XvK8Ms7>A~EwPy?vU+Y9A_ -z(LOAsISgbcj8OMyMT)NljV3SZ`BC`JVA!;`H4n8EX_ri5AGz)98{A5{2-Zk&pY^@rCkCO9*m-u`BiHKLAmz< -z(uig#CZ;hK{<)2JCk^Fpv}+b%BaW_T^;{#!j55`EpNv%O;}>X3p`wkG;y^*9<5#D* -zW;?z)EQ~NA?Bj;s339Bk4U$a&Im&Wk8N`JEb*SpK#oxlVIxlNyQ;Qj@&@Gv<7-i#o -z&H^L`ra2eRm2E#{18fM@@bT~8+!Zq>W1Ouvk^y2a`0D1TW6X+25~tQ3DLi6o&%Y&$ -z7BbNwZZ?poYd{FBr9fy)(f-MO!C^A%8#FI8ulemUuPPJ-U4(Qqg8zQ|M>Z)iCk$rk -zSW^>;kiUZGdr%o!6V*qy|<1IPttkKQPKW#UXIpqx<*9W`(OXi)}sYpb>BEyx)l|( -z9K(I^k0VLZTO% -z^m%Y~lEG|mZ8s2-KgpnxOS0!Rqwb78ydmGrfs;dJRXeAzfBa0ZkzN^ht)Q>tMoZmS -zt7%xEv>l&LukL{oM6OtUoEio@Xo-(4t&V*({=m`Q6pd3$MPd`2#g -z#XreJzKQvD%k}}MAjs=5A7Fj!VJTXmi<@kr%jp59Pd8wDef)e|Mq>`SjmKuTVweZ= -zT!%b!1Mslqx?!B`<$n9Dw3v6}8u_=+4c`iUHMsc$F6sVt8C4*nDwF^E -z7im^O0X4-U(CpbK0)q{%(8n)_f9ZoyS`j2XY3`X=ra5RwwH&c>54V1r2{Dks-DDBa -zoFdb|ff%ntSL@6#p+z>}f(9$WCJ8O*h9A-2U+()*nZ4ZK*aXR-jZX{RgD&K&zG*+E+iY@kXEgdyuw<6CA}ymLCjYlEroiI~U~N@y9d9%}iao^c*un -zKLbUdzGw-1PIS$4rkCTV01?2SnX^SxDltg72Od~%frJ=1yHYImPV?E}c9l* -zknkipB~)jzF4?N!DnpqOS!#zxB_TlWKUK$olaH0>z_N?GzUYYd22#onc~F|n_||Eu -zHcck%$$>l`5nhq}hK{}(k5vU6E$t~KDZ1sykGFXwm+}YlPN;C;mtT?k@roL1O|G;V -zNk)UwU4XD28=IUS)$o?In@+a6xpzdMvTDQWdUJ=s4@i4xd+eUp@{hlMNq^$#xx0r< -zDKwyTv|i>g3_es`Vn{!{#)x?Cu2Z+HVPb3a&DS*B({`w8>4$HOP>>by#EyZY`#aJx -zq}+sK1)rWQeMy^WMxEaAp$03jO6Wa$p>!6#7FA1b(9J9lIc-H83ObOE@f}jnOI!{K -z9U<)k7hZkh#yz@{pq$AgprHVNh?*OFMYQynJxcD=j3U_4BIJ-o -zvkK-`GD^r-AMamcQ(y5eNY6M@d4Wb2ngx?uXN@P9}Z4dlA3VPaD>#2m}AZ -zBzN%8wt*~lSOO}Pw|v{lvp$!HZ%vT@f@gHKQV?14l^j{~;;^-}&oO2W-K -z{6;qSFYPs>KYtc6$*452jPFVr8J44{F(CC{HePgfn& -z^*$P)#|3Lpgp1zNOrB6Fr-NTOD1}F?!dvBFrK3^-UIm)41pJT%ckb?97XvpZflE7G -z-jX#@`g*{?1^%22Id1dSloD+D-QpcH3Ggs}>SOtlwuD2K6GwdfCtsZ2vDhV+i}?1p -zO(%8|MrE4DxjVw!*ZKVBXvxDXC#TRGj5qC=L|XDT?Gm^_pya61{tZ*7!DjLd0SZEP -z7cjE{z2tBs6S;VIW4WWPd)@%ifmJFF(*un@ViyYm*`8`o$k_F4mWZkuzhuq^=F+sa -z4*Y$T=|=oAS(%7rMp;#Ya7z-#p?3Rkj);6%&DzRAr@PsbTE?N1IHnN}W2Qh4a}5MT0I5BKehO`x<@Xwg8cZjI+$kPHq7P%!5%O2Z-g@M)#} -z{`;rO7_wtWXMMJ-Lbi2eQX&%$%N32=pc1gD61xkrb~%+quJ~OWXnk6%RM`qur6jtnty9#+;yWtET!-Q(Qe|Z?GRJ!wR>JcWjv_J~ -zSOdwKyhBZVLH4k^oq`0&0P9P(2>wJkUhHXFj^h2O-dy%AbN7%RTPVock=O9AE*jr5 -zB)KJ|X>HPdN9+Nxq74~a>v2q2B2Cepmnu= -z`UN?s_Lx6%4w|fTM?TYLD8Ve&nG#`*H~Kx8X}rmr6;$TBU=e$n0l$T4hSeC75nBbP -zsY=~^s}B=acWQBnCXdB7o<2BVW0f6hY7>TBN^E+F9ExY=3$x)0~7{Va3 -z8cdRi!%faqWvO^1BuQ;A((-BJ3~R>;f=v0MVpoRn>B2-;pW@HFcdUlkFX90-Kgb#<~vQ9d$NC7W4nsHA$QR? -zEmWO8(BN-HSq^K!DcMfSmV;S!Kn&KMdy+%@Y@T6o5Eb*`?@`P>tsr6t$+4g*107E; -z<}hhBFwC$99yY-g0aC4^N$^VprRy_jFp3*efTQ{T^9@BS-;iAd)Ej41Rp^l$4-x4S -zG=OU8sNMxy`yZL>WF_zOVTBWW5Or?_hQW`H?opOvcPx^OKFF;+{eCT0G|Beya{@=1 -zJRne?w$3V&>YgnrQPz%2V*)8rvE&Nl($8@gUptEaV`n- -zz+_O}1{!l_02jwTOymq{pzxmT8dPPGaQcK9G19Nl?}X?`6plOQtfE&GX6Qbtmx8dH -zzikIt@;dazHHCzt-b;-pC-d%$#cn4?h@Qna$_iroJSiS?<})b0gZgDRx^<6 -z?}fakNMe$+N3R!A1(FC28MoY)qf1bN-wxjHMz7_@sj+WUva!i}3-u()t&xndxS{ua -zRUk#+qx7@v46Fs(%7}WCIY;k-?)9#BE7F~$`X}H|$ZYP=<1t_&X<8AA3)miSoQ=-; -zcT(}&5V-N=fqXOD&*L5)IHWnMK%1?O^eo3j=OzCwsUykwna -zKZ~kQI~DtTArD4f+pj>*cQ${>ncna2Nisp(2#{Ubonb`&dm!?lv7-H -z8lxB|6^Ps8E^11-bv6yVyJVZS&1%ap*mrtNg@+U>1eTs -z!VvoOxj(+{;lBFYJ<|7qtv++Qn>_K+LY9Fvdeo*)7&psNp$J(mK(YhUnkR>dHbznV -zKsM-SwxD|M(QMI@1AVATVH; -z>YXLz1qR2e=x9=Am3j0h$C4lFR)5}?wDRF)kc-u+p-P7Au`FWVkBuUvBxTDfqD=$B -zXk>Vxl!hJ;l8d|`c(j^_QLCI}K#UMy(TwN2uMgDvX?sk)-+#%Jpo#)@hgKCYg+nsM -zjPl<2@ot&E5sTHTnk%5H+)(dnEhkLKsxU#Kqo)Ph5Y2G`QbJ0o)e_w%b>?nAv(4t42sv>fsD)>LrJh;bPn -zu+)`XV2bOO%Z{LxNj16zV@R^5?o(Y0?RVFOr`0-vTV_iW5*N-{=k^{N;pb6EE7aYi -zv1=rioto;PJ!oUy$t+Nx9LqwzL0YL2MP1q4h{(1{UWCLK>h(ynv|gDQ-2=$fd+$ukCf}lr%)}h7_d&>Z7TW=_65jW}MCpr}I7aO$X$lMqWXST{Shg77A -zVW@8SajE_mcOsgQ4TQIZh(Km6EJ}Wk&y(&%g9OqMd6Q~}P#^4D!HkvKLs}x=T-atm -z$K!6{7bK`R)LAyE)9TLf_lW19 -zwDQAIazWViTEn}zc4Ei9CxZn$K_8-x47Dz0p`Jqw62sAYTCVUkPr!bij(wee`a?V|D90#A8)I|Oe-i~Iv)!lrA+c89jyrPmafSxwkH=5x=cSEKQE -zhuV~X4Nv+u -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 -zlNEq!KKU`2N9KfYE&UBuhouLQJOB -z$dF+wa8l3~yTMmym)+)x6|xmOVW3g)GBHz0?jWHUneVqKHluq12yjXZaYar#!3oz> -zaXw?(y0#pu#>0QQvmBE5;E*k8Rj-YYl}$&Lh;zIHR;22_%~J!rWAew=1g=ce$nv*G -zyNSdY7R}#4&#RMaP7y5^h+-$}*gd7*Q||R(g_Z0q|3r0z -zR>`{~BN?DT4lJV1sHkBBnG)l2@l+8Dfn>^VRRYm-qWe}TI9HdgS+nqGN&m~pG8yqF -zOO@l&sbvr4`8l1dq^fbWI28IXE&c!+W+)_%5pckDHwS6iW*@CTm8^H*K-{GJNId~~ -zT@ZXD>`QMM(jWhyE)|a+B=l8r!*V)fWc9U_*NenTR``h|DLooEid3!8v@q3Be|j?^T) -zuh9s%NjU<802=j}I(Ex-9PY{7NmDqs=3tH_&k>qycJRw`xjqarY*5^@MPD{V*muSd -zl1&9AvU!QfK=*3=J93Dw{-z`}uT5D=ux{ -zK0=^#W!gq|Cbn?2KHR!by|HZgk@qd4lG7;JS7%2Ce;~Z@PBzi++Wm6hU3hoR_sYBP -z^;o^XyYJQ>r`aCau;i1XQd6@DD1n{1w}`<6%or#-ra*iHI&uTm^yH|93Ff8dGq`N2 -z@y$^KzhmxzG=gq;1kcgtfr*?VQ~Yegh?Rh^SZA_0R|!!OhKMi^+Pt;^wG+4_+VinVVX$eE?7O7&J(Keq -z9_Yk*{KC-UbjVA+96O_Z^E8u^cOJP|CT~WVt`KVLK}Pjiq8&_U1!73+vaX#6UyfIZ{wgyPB7mVWGVEQ{3Rnb0XFv*6eM)0QWb!l^%}?*EAbx?EWj<3CbI=^1 -zY%A#>PA&+K?}0j>Ok9^*29~~%x9Hf{&@pWLIY-cS<4&Q{jmv3Xe{u@*;u@oDhl`9- -zZ4aAqO;mx!N3{VgBMVAa2m%cU;>oJf5%UF}cH{br4Ud2PrZQ=-F-OGikP5m_?2hLm`65BBHbEKIuA=;5#`-+1h7C7F)+(JXWU%~#ib -zcUTm%=~stxCN0FNokIk;QT0puBZ}Ep`V_LCT4b4mny5&uSUMe6zDg3$*>HunB?q@= -z(lyg**}+Ywuf(&13TKQ#DhzRwmQ0508_kHImkNE`cJbEr|FrYpAL?hihXEy-Z!&nV -z&F4F)r=_`8VJsIPHjiKvOQ_>>a~=O4$>IHQu*0;R6QMyrZO%$8zuai^|L|4oQUxa| -zjAf5mlS_jDspnG~XE))u#)SJVhU%2ShpL!#{Ka;^Hw0>m?@)AhT -z7mbnsi-MosAzF-N%o35tSL5`LJFxEdKR#G|Hj#!$Mb(&js~Pp>yOV$R^C6q -zNSkEz$A5f_)1!Y3gT@l6k3T+OCR14u|M4w)|DKDH%4x^w>+=8+uYm#y_sg?z5Q~K^ -z!lAS($TM10GD+iYPgW{WcSX#tWN^}JQN4(ED~262$h!@YmKs_RN|*doT*0A_QY0am -z(Vojc!(L#wFfPU1q@q+e;B)Cno!K=cCEO=KA1QF8PveA;W?HoZRnno^WGi5Qm+!j& -z+|hw2u=DGUp0)$HoAwJMyGV+LFS`3R2T^6qB5{xQRY*!TXk5abIs(vE!K{-*uN~J& -z(LX>&p+9B@C-q;3g+7@`Sq`aI)c9bSi`I2gUDGUZQ3wrao$gGkT6IPMQ8DL|HFpk3 -zg?2Su4*okqj&;+2*l{DR8&o^O*dZC?lllahPwS4FmM_eJ7534NK|4h3(anX2%-?Jx -z*tXn#GN-0$ZY=y86Seh$CTN8^8e4$QH9_?jlnfv)!rf1PE2_Wi9=^8S+a1+Ab^s$| -zVIbT+SzI2G_WtO4v1ho{4)vK!%teUMSuJ@x2TU@Jg#zv;hkQe|#;;kydxhzW3@Grh -z-K|1bfc=Zg1@32WBy4mYBKy`teSFLuFvc)rV_%n3KykN?L6?IJF=bdf25JEGJpT>w -zzdC=^lb_`CS8Js6EK|nEpn)A1HyVU6MtuS3f#c%Q__$+Yz;qPHHk~@U%dL(+)IL?$ -z@CaI45S?lBT_VF2_Om=b_9h=r`GQNHOjEF#eAOt%)H{bLKA#0~OQgjB+b26ykUeaL`NQ^$*}qA2kKD1jrH>xWgLomX=1%se69VCkxkj(Qd2NCbaimMEDeQ-m@4OCG4)U71w|zwZI%X+>8wfUZyrvvbzE@b~}* -z)PO|TxDmFVDO5|$T5`egj0NCt7@5g5HxEnwNgNZxIoDj031Er;0!mujp$sCuY#Tv% -zGA{nvVBK1}5#8L;ZPwjaBNM2~g0yWM&uM`p0KgInF=E(GEc`wBY78#sj{uu1ONRKkoyFTh5*)pD(@J!7x+cGL>q=kxlZ|nZ)On9)2dc{y2VoTR2uY=H`^*-&P>QDv~l;<$#gF;TOImuCT<@ep^rkWZR6GlM> -z15PXHwgyola0P)OElY%kV26;*;ziT`Z&1VD-Qj+7)Ap-4H`bOJx{w}h*;ikm%hz2D$7Y5 -z5FcC7MTR1UuZ5Jbed|GIs-yLIyyXZYpuEtr!eQAs4!hwpu%<%s4}7j>cDE{S$8U1}u0aJ?_En?k3gv+--HYN`Z~cdt`jAOrA@aZmE@csVk1#XQcMl?Z=307GNC& -z<%-d~cd5wVwc3Q9d$x{zT3qx-+c&A$)8e0cQtTtJCRMAo=_0)96KNLW9@0kFhMgn) -z(u&O^0D8}?8)3e{HIoNV5{=socemUS*acz%uR6ueuFJ?dbjFK5o>yBy?34fHy7x -zXcMwX>nFtgP;7FNu;8ZXGA6?Bl{;UXLuZP!dyKE5h2T!o)MyUnc(g#G_wH2HFf9l` -zu((5Xp4tyaz-pv5%3(QO@%d|?Xf#Lbs7&vKT0MeZi-vHyO -zv!V%=P6DNP2I(0p%AMcp@U%TKasluhI=^O4Qy{APh33ZJWV@SD`{=_Y)i&-RmED|x -ztQPz!fp#EcksI+-XVb?|Eb`mu2mgFaZa}|0d%w(GZV{zbO#w5!D^SO9~0z_34*;`C;Bw`Gf -zgI3>&dase9x?;4H=;Gf%&VjNbd#Ma`YlX$6fp0xi0FNvXxGoa~K>~SoR1!wf#(cTH -zpcQI&jXaZq9V!YBuNriz%X~1i4~xJ$vzBri+wkf)P~#0j30z1BXSv+J#`;u4-AyayN -zTJ%ru7^w=fKBhlnVsRm%$}HE?kxkaJXF;mXgvuq0n!Fb^TCtLoI&Xb=Wg|8K1q?}# -zTtPoCqaNLo@krkk-$F?QF))P2lDLeF1EFIFsBCbkn967=ppv|1U2DKmanAwf?e}l) -zHX?mYwoV?lrO`?u^JTe^(bXL(4k|R^@<|e!$o&{^9*C95gw(lV+np(65cl9P?5wz; -znegES`2?$nrWcF{v}~SkSw!Ws2gC1C8nnqWkZK@=sF+wFF!Tj!kKRI=48@7iskCa5 -zbR?DDbA=ut*=T0Cq=|u -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 -zfKf>RuNSThcs+nIO@hM63%~@ -z%gsHOCSBlN1D16qTVR-^!U~DUhpo9qEzn`Vk9N-mdF!M78dbs#peKZ;N%TM`o=<14 -zne5wtF|tc$m;GhuKk9z7pWW|idwhJ@33x)W!H#7HSWMDP4`*~JC#YlpVO-S)JyDlFu57F;81Ph -z1@vWFDMUq9szFEfqnk(XfCsvjRe?1eVl -zr0b2JLKzO~$KO*R=dN@14PC5Db}xR6Hbo@7Gs69Jj(5E{-Sf-{frEWZ4=_>P7ymn* -zA3wp4&yQi*C;Ne4 -z!|F$2mBrX^nVI)rG+XxKe#jjOE!xi{ -zK!5#ZOPZ&X_Rh~=_N*pkxbKqe6l9g+td9&KRz6w%xC*?4;$BFjV&&>p=pFnlG{MIQ -z=swtpkxzfy`c%$e-Zz&`hY_^P1vMj3rNj_wy5o6JsT`VQ&0veXe^+@7bGfWNL)Dme -zcyLj!u-sU85Ceg6MRhA(&S4+T0^{GgNztJiGI80C&RL&faVXL35sVH9rw`H=XMqc{ -z*z&Y6=%`y8TNPYd&rFgH8kOk1JzekaQrobS50FgOyOMm9r2|rW6p-jEMUJ2vQ5B1{ -zonKJ>hFN*(TAaxOwr*H*a1lx+cdAYsQbQ97(WZa6o0M&XDw|xTOlsd8jgjND!gXK7 -z)|&&6-{1tROE5Q>^D+@tZWedX=UE#E0KDaU&)Fi!{S#!+-TDM83A9|)P#6U>mpErS -zf!F#ej%?dd0Ai3_1@Kq)`>=Ew$*agU0u9f#Yl25%)`FMjzg6<4iu%Tt^JBV=0}<-U -zcs{H(h9i6lr5WUQ%!o^-yc5_>V5V@CwkKEM>8dKg3jsRp9S+H-S8Ar33-1LjmVS1K -zzyv{DN&%BNCd)yOK_Zo1sKL{+y+Mad*#)XktaATaYs%cf+L9z_>}2}0Q=|35yC>_T -z<{JZ1Gf?vo1q5(^Cnyqp+1}y*y3lG)&vVR&jQAb3x+q^!F%oEd3~bN8GVY0UGRE;C -z+x34@CK0DKq`=hsN5&3dr!LB3LAllHk1g&uq1fUZ0Vg!QN9mu3zf+@A&%*vl93!`j -zx~&W@nAt>lpR;gD6m5diE7_-rV9LD67N(>s7fGNt6`Un1FuO5WLR+kSy+~$qLp^g -zJaDFzA?Q#-ufZ5(nlrBtt^D?wO_y>;44klTTDY*zicOKT-Z&~G=@>w{Xc))VU<$z^ -zvjGS#EV7ytPpSJ3yRu50vC@WWb<@n45guG~s5w+G{XG`#Zu}RZ9Rwt?T@y#$6sON) -zu9Mi;3Jpci6D)?3m1C{=TTg#P1}TboJb>@ijhO2z_;eNxD_V`G-! -z+TSjy-}|xE;3cn6QcLJ?xmc?VuE--_3EBh -z^gC7PECLw2h*tE%?DK)O`u;shlZ8uZ7)U@8reBTUQZtf(4c`OcL>n|zXbTuqhbMHj -zhjq7GlmgvmwBNZP-0i$C@0>nW`Ee?40McT)JQWDUNKv|nE9t+uwQ3IvRYqPOO{SG_ -zS{te{bxv{LZe%e8V6N??5vAu_VM>!sGAdfM8mJ}U(3)<2ae!q9G2WAzAXy?bo_Q$f -zWeE*0?g=@zuGdGW)pkd5i%u7P~+DHCB?(V9wGq{=fvDd{aOl{@BW -zrf>4p!cg-mv5&QG7XdHM%Ps{xN{(T)XyoH~k2u6)8=7kepzVHdx^tDgL^h$F(QJDF((ZtBN(^4Jj%CExS_ -zSTo0_Q7-!=3*sqE9M9u0wD&M4zJd#w)+!i}66i!@5~Oo_3a-ur9tA`v8O$g`85!#X -zP{IcQSjZhDA&NWPJoqA4^*?9p`T7n%MHi@dRrgyw8+s_QRSt3&tTI>IOfDdSK$O}Z8X2kl -z^O+b_>S)AuLQ06eV{eS1Jhi?b=CnS9-_i*i*a4oFC_K>H9!&j`Ij`IW0uiign0|05 -z*$&{$!G9|F5Ae4-X?f~Ao1{kG#4VxNPbY&W8_=*xgA07X%Dj6OdcJ@!s`D)wLyey{ -z$h;W2X8uj!aIdb&P%qwGsXk8C%9at7s|HS(y^gE?g7dSX3b4XKvrJ^GieHRF8C%S~ -zsvYWlxR--|4y85fn+W%Cy&g69nqF@YKEd_GVx*E}=7wSgS~`lRULWfQsfrp_cOHrw -z_#nZ(N9&SpA(?2!%--;MfkNvuyfbN?DKrTKhRX)ubV5gIR$|t-uvljjBbtE_L#J34 -zQxgHWFroTtos&%pBk?A=Fa0*7ZrpY!jr?4-)q6!qL7hF>bzE(G0e^v+Fb)~s=GU)W -zE3<@sH86yQghBJ;FV)KAOLbU?{H!u%(h8V$MeHjwhKy2+#GTuvekLB9Rav0!^4Ody -zHa`xe$GdFgBAMmUr|9?3#5KxbJSa*R47hfJJgjl -zz~PZTq1AIun{6dYktUEQ7G`3Y93(q7R4MG~9~GU*!f#%n+BO3Xx88+%?3WX%kEj#>7B`t3tG_YNiqpg}?Jbn! -zWm~s~*OM`ASK4GdHZHuR}G60wok7Tj1h_F9l#Gt1XKtG^f!clR}IP*NF}9 -zeW!Pb3Nuu7KQ&x}FnSwj4m_Z%dk^kQn){zI(*F!dNIE9TJCSA>cjx#U-(%&fQ&4O8 -z0M*j7HWl!aMeq(LqFiC=oixmm?@p%P3Q*<~zrsLcz|p3^QNAk^^s8ELKM+$=leuNr -zQUfjI0K>MQ*ltIv3mrRl%})|@!w{bflBa-1=E6QB9>l$XYnJlK-?l5Gu8-b -zB{RB3V{(OlQr$P^KA}Hx-lR6HW9mieI0X$QdHKZ+(=tsYyb%6qa1KLM=2DU)TlcNy_A?1|9QCSx!dcT;iy^WjaYB??~aicr8 -z;BFa959O!5nI0(KF$aaa7^GIYjtZ~o9*Sen>5?eKvsUM#mJ!sdrWN3*CPqvbzMR^+ -zdgiA;Zu@~g&KAlN0VLH_>IqS?uFEg@~n2g(8&ND)PJaJ0H0%zBLYQ%9@5 -z1xz`5V&~2Xd4OyO_-k9mUp|%2hH*oHR+%T*3Z@em!+a!Dt5;S~{X&1xGU-TDGRelW -zXZnqALlrfk%y`}$qhb-XYmf1b@syr7=`+5fUv2$B0_53;=NuRnTc8g1CBl6|-Ng-H -zL|T@C*4SS#Q!hwoBkhbB$D%3|w!WI!s}^iKg`G86+DNxKXn>l7Z6wsm$gvs&NMdu3 -z0oo3@Qu5b1)g*(GKVL%9dNcCInbmJkBtG??95yTOVUf73h8=^xD>5iGF17$kWOZmL -z!IUVAyL1Za#nB~%Je=Vq*G#wtzQ64DkPk_&&CK->;L$-GTd3tx*6n3ZINH-`;zaWg -zj8wh(j9%yll(}W6bKQ(qgZnofCTQW>?Ppjxqrh`=teP&5^i!KtGJCG39?{0d5Ht-c -zdG|yaK2335IyHVLenb_MF$rEHMP(uJW8v= -zC(MMiJ;q9Z^rv7u+}p -zZ5`DUHhR=@!~BLehQ;DKMS4q;{U)=tL5WOqMEp`P$`(p7HG63{E2y?%CGyQfhgRcmRPi9E*+_tkmvoHeQH)83jPAD5Za~B7 -zP4_BL3dyO){^_KZ3x!>B-Q@rAIzi9ND2>J}14*_Y=@aYz3Q8f(&7gy07*p;Q6(CRa -zbE|c@YvI-Q6a%gTAk{8zL?0pSl;}+z@wH0GxdvVEL>`3$q73KwU3ibd|D`PFDmnXA -zMbP`l4`|+hndlYJDsh#`27(?8xGf$Vmkg=cUlT-sMecHDr>XY(hPGKw!2^PgHfry4 -z$=$YS0%=)LAFu0P6JM(FIB5Y-;N|AFo}ET -zQj#GIsH~UYJ7)Ty00q&L9;@aiJsG=!Q{p^XTrkiSje=~)4GH0~r-?vizWSwzJTB4B -z#KiAjTSMj67nC&LS!kcIa8x$z~>|0NyM*>?`Bp6q^roj&rEo!yLvjl -zO!plRU3zbrHgAvuoD3v;00e(`sL%S5)?7;)*;1_hzyt$ -zlv|h*F5`0UJ=l1pVmCxtSUeTsNmZhO&|^&@YquS3v3l -zy!GznHFAs@`Tp7~u9c*Yrcz-j;TQWIY+P-#8>~X1^SksI(hS4*(rDfjfl2d3eLahC -z;mmFCA0$$1fJ?qfRSh~a6VpZxD`_?2SBAVsi+aNUV`U3aTooX!8XyO$=0O)JI_-^HMF7W1;Z=+@ -z<1H}1-`O(f7(FfE0#u2thp(`K!&|Uv5M_n^zn7iT7t5E?oXCk4%r$}0af+h8k&4}f -z{19G2Ge**rPg%gbtWqH&-L;sSOqLYUm4Bf?9=3M-v!W#>i -zSwJ|Vft;WsI6~bYO9G4q4BX%g1fZS1 -zYd*ITJ<0%P5m0u$)FLo%1biN}04vW4PNENmZy}$C+Num_Cw&_0scjfyxol{qg0ute -z^uC{|re9P1h&A~U*-O(&%G87>pGW&dV0g*vWcN+m$j5JB*y+$8x)mHb -z%HMQB&1H%{vJ~Hrn0(9#6SgagP&=3^z|;W{;XME#1a+z$J0z7;C&=jLR-=x{wkjE% -zEn|$aA_1fLihSB#`Qi}DS7)!PD`wQqFU4uJgOuN?MlREphlu=W&!7ov;7CS%QQ?Vb~RQou2xFG{bYjN44ehnOuMhh4?>=gZPKLRIb|3PRtqR` -zt(1|W6QQV#1Q;ZFU7u)MUXxkGcBeLMa+29HI=_FTrnW#7mXfc~aGwJ3q4voCXeSW& -zSw?0bD{60d^oz+Y(Bz(^fw;GN@xt<%V2Sqd;iL -z%+-o>^5SU8>%ycpdb1{jeMLF^m)@uUq;Cw2wEBY<~bd&oK$tXl9&#Ia4e@ze -z<+4~~DQFZ=5H98_fAFdRr29@U3cqg5?9fvNrYwb~;HG6qO#(46dWuTbTPjthpUlfS -z%-?>0RY#+ZsY94ZLP)h1t-R3z^;7974>V_zwceWR`iX#_1&FFOe5oBjoiOx}yMkL} -zF`X$)^E%oFMpdJ>tBdSpl-q>XP?1BU6}<8buH$f= -z=O$0~8^FYB3?-28=mlcjD08=AGq_<>wmLfK4lCn+&=%j{w2;M@h-C6f-A?~8NRP`@ -zbFE##kX}%Ge`hSW?fQ-MIl@qz$lmhfv+?i64e`Lo>%fn4fOc#6(xfkcg$K%CAt?x|y}7%54^-uD`uLBrAOA7-a+f51Hpb?^&JYwN`Ne-u_TbO= -z?>}CLKK}E>AOA7RnUiBE9!e@S%9D5mcK+y_>j$tZ{=8@&{`mhHzuxfFt{<-hf1GhS -zmcRmnXXUcUqvcy$NQ9BiKoUV9%kov0KJL*1@|O<;fY0d6WRP#XDB^h;{rKnpcvN3@5{*;{f|py_~p`~*KUf!ReT_+*guCp{$uQV&E38HHVwR-@p_s4k8Avw -zh+s71eaoN$GJFq6US2OKV?X|5?B$^z?(W~e|0*sAGP~E4Jj^>GjQWq!*Bj#hqWUMi -zT!vXY{r<<^#|H;$B40=Mm}DMX>i(v{JR(uE<9-VTRbEfBVef8JK&cvh2W#;E*6@iy@?(VN -z9P1QPa8;<)dVC({vjq+du4ZC$M2Q{g;~9oyLZ<;}JaR=ecv&+*d}f+%ypTSrL4;c6 -zZCBf2I*_K6`DA>HSUF|5l91dm%|JlBH^nON}!2|WT#uJ1I;Ib&56jW^$MHdK| -zdX(gV42*3XZjEGfJdkyTFrNLS5`PFX6}|K&FgHcGBZ}i^GOrlb&njjWiinpLS={b^ -zxAbG=#1T2~2u(K!u#B##Mq~^LEa;nB^IZ5^)J=K8ywRn_=3{ewD)-y>zc1GPIBtO~ -z=c7G8`4 -z#~4sk?;n2xNaD55KII}Nt{H1NXaHZmz>Q#@59Q93+rv9=XxbGaNDISJ^wa>+>@jbN -z4VI&V1@EHo@SZ?rBF8;P?^~^&MO;oAeGRyp4Nv|XeQ1~Nnr$({ly7~kIZr12SB@N* -z`VlSE&20jFQlkGMF`pLGJQ6LNyl -zn9{1WE(+SOI(DoKYU56+L2b*?Y;p+41nOBc;+WPGK}5!ld8e9C5TbFh0?L8)RW#L; -zhgejTGoJ{a{5&8a1_o=CMu)rYw+5ZL?FaIay2it&1I9ljaUbJ0ZhX>FDFWj?Q?18vzt|$Z;(}+U# -z1mJYc31X^#R%XALif#pr#YO?t+NQ&7B3PR5T9a~iPH=*jnkoufz@m# -zBP*M^G~JAlnf%o{1$oTo2iqfCfqGiZM&cX5P_pXQ8YO -zmEPJwF)~f?vZI_d{W$ltH7A)Q5Oct6B-4mieQ6mz`UvA^9D((K6-!IwWRishV%{F8 -zX6N9%M^NKaP-RivAfnp9HLYk=^WZ{ci8?G!8}PR#t`P)KTH+cYU4n8HwY99ZkaB7OJ>aRP+TmMKsP>DnlnXB@@1x|U>Q6}n2JzKl!nY3+R;l^gR0uXof^ -z7f@@V_l%L7(Yis1gwjW!zeVqsB!?i*mbBkeC)*ygR7tBpb1nIx$GQ&CiPr&=WY>ZI -zwQQt6Uh7E4mjT*3*Ma@@8e~9{*M5c8KwZ_YO~D|VPn2gC{H*_etc3{8Z!krcozTXGzaB3C#{q9qRw44(qT -zZfrS0VK!`a^lnPc)76m(lfiBdHS23D`-gHubXZ?&3*)&+&1|1;n$n47klKKtxwy6! -z*kyAiu!;Y3*^>Zv%+c4BtLdNjUl|L(LieE0;)SFZgx8+jdL>IJkLXA3MS4}44(%l}4ZAfNTQ~vzg9osGYIBp#{ -z;=~tQk=Y(~-|8Cdy>S*5ce(Z5%H{GCNtH*@>$3GD69h1Ul+8WhYkfH(TxmX`)@kn2 -zX24j!%>y)O+#;XOxRVc?_Zw>I&vIT0Gs`k|^UC6(pTysQ)IJwqixyviCa?dQ^ -z&X-C~`G{)?lJ!it0Kb)&2AjfN3$J6&s7zJAknHq!7bJ3Nd(&!qK1Z4JY6RU5OB*=_ -zRp=0=ynuD+Nbi7eSVqx0&2DeT`+c&*0wb5}t5E%|^4&EphZ~JWnH*5Gr|UYb=*4dj -zRG#7$-!2bHhTkR=qO_iQ87MH>>f6!lg^&p42$p=MJQvLrqB_ovyDqdB#EN-1Y%6Mq -zJA!HJtKuc&hGyDrFK?vA3yx4Ux$Xzj#3#adIw)62P16;wGebiWc%x<6B$yT+9_Xdz -z0)@9iepY@W8rV?pzV+ns`Lgh-u2B|_L;Wh*jbpBNse$;D3}em1N)0exajJ^a>Y+~r -z>CSRw$QaM$Izd_qVq9i^2By_v5Y#XXff6P4kvg=qu)lIC0xzevdUjMokX0beq3L@} -zeCFU=_7AYR9q@$PV?=O=SXazeoR9W9>SZfp>(32Fhq8Ke6k4(EK=A!sT$sH+| -zTON^IItiDsF%Ft>>+qgqS+^8fgZJC+9X&e=5&^|4z_*oG`NN)9QQh=Umr+@9QkGxD;ZRM5{L_P517~B(&91r~)74k*TRO2ue -z+k)2M?RtHdP7siKX!HVd=xd3snvg}2Jc<|IzyJEJ18a3EQK`8W8+gc)Kra|E=2B9D -zm{GR=6<@z0C(sodxrqlD!2UzU=_d_hT$aLbP_{J=`RgQ*MiR=*&<>H}`Sk)x(Iy=u -zD(QelNXN!)Z=n+^h!W+j)e -z*{0b>z20#y3%_@dREn9SxM0FisI`moUlV-kJqYY^K0oHGqGJn -zXwMV^rSIFjyQAk!KTs#VTxtzO)Ji{8{=8k@td5n9(L7Q@#>z;!31nn}@NTTP4Ol@y -z@R+Z^xFNwKwhUK=yDWJ-oRts+vn-IX15g`At%AO1R#iXi$l>DfAmhA>tSAJI#BG?&)wA-$=kKne9-GW?06&*TYP-9z^KiOVra5AFfbS6S#Ai+ -zkkC2iV+orWET1J;#t^{?03nKmkWJdKYxrq62TZI{^)*El1Q3fH3x|(qAau>DMsiu^=t_*Z6(pOL1S7P{ajdI4-?UhlSO7o -z#g0a1*f$tGP?6RIN!j0vO6~n(>M)d_w2@6q`a*!QPnxs`e8c97LCgXJ9Tw9wm4L}( -zY%;CG$k^*Xwcn85Xs%8sxi>RyKX)N8pJ-`TM}A(KTE(}{(@A492Vj!52P=SMRa013 -z145-+oilhV9d5mxV}J`ZbjqUAhmba)_2e<$s@A}ZlaFvw#8ZXB0j&_N88D!O -zX)!yKuV_!a>_)gXFb3EaP6RcY0@edHt!@xvUw@1h+jwHz%Tj_9wm5Cd4b-2L -z{<3M`QZh{E1~?*Tg}LWr&Nnu@yF`0SEkPTdmU&4wLU!`PTwVog%tOLLP=o0_EJ`k+ -z;Ii9duprmFT~-8-WC_oQ7uBRAJZnR7k{WG!K;J<64jD=oh!s$V&kKDDGO*fa{n(}y -zDU&1K5OyWB2ay2ExINgA=|CvOTzZ=Sh&;}*LuG_g=JdO(?yXvp{D;qYklId`T3Z8Iro2WXP@ -zqAGZRrDB>1TCfPVj|+^@9CBFt6M;h~*@tr0mw?S&u&&SmBQs11Y(V!KKNd~!NQQas -zP=YEa(5}5@;x`<2hi0F6wo--(M_9XsCy%_p_S!fNA -zsJkE`(-;{Iw2kQ{s3H6^#3)<$yEd4(#~9`^%Uol>lPzT(!ldfM-Wu+*C=QDfl+cW& -zV_{=O#$xqf@Jfxgpp=3@R(WyWK_`&k#f4M?O^n`ALM9Zb=GSpb2rC+KPGqJ>u#5S4p@*l{Bv|k&KpePwQ>0vX(+^fx2O= -z?(jw>xXDF_pM@v74Ir3|!{ur)Pc45nTBk9Oz6SfZIOW&P1(JV++>6m<6%}I_qgFbc -z=`&!|;<~Tbp?79Ym&Fh^1x&$fC8d6tECwFnW{9hx-(Xg`i-jt!`LX@90oM^%D_0~Vn-(N$fL6z=LCMJLQ<37s04zyHNlP*SqpPb*ZG)kmsr|CF -zN28(Pfojv?<;v9vrbmEu+ITvr?d&t7s;Z%_lrx&NPe=z1qt!@AbY+6_tx~xYGWRHjs -zb-MV+U))kYP6cl|L=K1AZPp*UhyB=IwcS3~3K#~ewmA{g1`t=3!etGwq1_#=!?ZatCMfqg-GQdlL -zW`p5f>{m`$p88q~?fwAl!Dw{GkH#C7D~UxhfVawQ7I9S@(||J8mI=E@@AmCj%n*G5 -zDi!UjIabO;_vFb!_xPFZapV{1h(OgP50Vx{T@qt@sC~EDj#=J6v*<})ZH25Q~o|RL=S072b$Tz -zEec9Heu21RaH7cnb=MvBFw7cYq_CTAE_zS}SU! -z|EF#G1lqS9I8MwvTChO&TrpXDslUQ;)}J6@Zz4>*oip+ -zV9D0tAyDB!3*7Hdx4fZ43;mt}sQUhkD#I^h -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 -zojZ-FP$5XeI;z#C0bs475W82)x -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 -z#yKZ)fsZLe>TPnOzZ~1&V3rprb -zb+lnr -zG7;)kJw}uOdTSp=$hpj(&@s9EZq;VcbP>m8P{6vb2*ox6QTB~GIm;)*utFJP`NwA3#zU;D(RGEkb>5ah9V -zwyH-rdR2QIf^#<=*Z3qlkayZBhyZGSrw$}5HBn76bjiWx*?;YwpKpxSVph?M*Eq98 -z@h~>aPu$p{VC~kDUbXs$8kw9LaY3M0Gdj$lAItU*=jEG&jX+iBkb+?0O&8Tp~uhpA%df;31Pfb+CB1o%eWJ -zj~E|vbF!=rk}E?rQWV{{Any^aRkxR}YKu`5SdRW|r{vk6VwHeM~@vD|l%TK#y>&fJ{ -zGrpP>G|Ua7p&JtAUj?qea*pY&N -zcvub42nbPY!M^OgO*|T_v)h#)+R~G|-6j)3?6jY6p!Y!0e7IX+mNy&#Fl*~#XadL$ -zHD4q(4{BiXBmP0i2*dp2r&O7t*=V&J7so?=v82C7^o&0Ao7e_EN6kK&b@1`W0R*K% -zRvJ$-Yy6U=XFX7Lc#q?rI$7XXTg}Ak+Py5~X9#XiEy1j}^4QVfVtomz!Y#I(RYvy; -zoKl0eAJK6iEE)Ac8_B~slbE8HuETBoD6%d5{_#=)&fS6BSFAIG-afd=^3H+1BpOPH -z0EFpw;p=rtJZE+pDH*tPPy#sOs9|MyRc$){o7~1srilAS@8NWGv=`J5=wj-#BPVr? -z=CdCR`1sgRj;aPnq^Z>j<$?dFA*;-MCut_?tWM|vFdvW<{eB~x3B(yl$s>in!|H4q -zfD(QECRmX1L^ZH7g|49kjPn~@_J^en&Zj;cZReX-@(Rj2`4i1)W+1%=Bb{5J7>oKk -zCI>4VKxA|ZmIEnNDQb}E`9-qp5ed}9hHMkqB%Vlaxx39IrE{q&nX!PIcm_+qivF(L -z<{NA?tUYPKkPj3^cA7F%7K?FLjnbBy62VJ7*;0uhJr -z-spw;OkjZE){SUChG2!pcGlX07qs7L -z$r%wHEr6SIW&+l|COY@t8UW|AUe-Qi8H|d=D-oCUXlUa#Helm(yn5@`BPGz8SZVIM -z!>Ux7eoJo}QZH~zhN1WY);dQKatkTyEOPG_nXVVqgPp#PW-K`%#~!{ZnY)apjP;Gb -zkO)L2yInQ!0WOPxRQY+?ml_}!a*VMdF@-kiR8d^VU66KWWpFA -zuRAv<0&AO9s-8O{BI+4CRYsW8hkW_hQ|Z@8jqt->QczKyKK?B&Hnow-W -z8w+>VZ0kY`p7Ee{3^_is)bS4wi;Ap)Ps2ft+m&M>6Voe_V!;HlM&ze}oL5#oaMK(X -zD+IhCRM`zZNCvm|H?(|`LTMsXDFT3oxc8 -zT+#pK$IUQW#i(%eSMd9(zbu=XQB=S3U4%-x_84|EoUmn>IEH@=y|z$AgX+kma_d2F -zsIo%I_wV1ouOdVAPpk^S*yl%hfB*4aBlYj^zkipXeEi%N4*u}9K7Q3&$A>tNp0Y98 -zL5Vzix%kJ=@7q^-{Oh~i!-ss4ul(ct_qsUe$FJ|tThhlre*MyyfUo`d=lgeaY<_Hk -zzy9+k*D5aY^Do?lcH&k0_AsEupY^Rgt^C@2KHN1I@S9K0$L{@B?1x_pckOEM6J(Z9SNn49 -zrK9U--1~xNAw~VrlW8D_2+7Z#3YQRlS!8EE*d({R7)aCcl}GL#6{HHK&w|!<^hxWg -zO0{0=_=2VbIiYI@X9TqoCDkjC;K7-Ey^$D<5y_x?*>dnC%YZ7?Cp8RPje% -z!-2jYlqn%lPkX&N1Pp+0dS;JO`NN%oW(u&9-@^ax=;}F8H=wqtW -z3*PVLWbSu*^kf6LqY34?5e -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 -z;bn-!pXaeXV -zA^j}l@fKG4FLZnPo)4~7$^vyfQ1#j=aLjn9c{97z8qbaGD;NsWz+e03N0DUFJfnyx-JDD2cBBLkgB3tH861NbcD#qPt3uxQ-k; -z>c20^riWc;tx1$ -zaqX8O?vObTVGe2N?~`87;T4Z!*L{{;js6095}2U(b%NsThfY~I=Ay!o2jGpPhAMAP -zEv2<}r7thXCKzAu9DL=WTnd+1Nmze=4 -zm)iwMFdNBk_IuGAzuF*|BeN3XM4}FF#Y2$oym?cqW#B-s5olpw$u!@Mcb;35aK}t} -z$w!)%OrO*CLLgqx0P(}rrDDDrP7)^v6;4710f@Jz(5|o@pU0$Q=rp$e*NN-t%u{WV -z4z|GxSahJU7iTuji^+zp^?&vNa@p-=T*|M@m$nqPGcC)3ER?c|Uq&(u9I8d6nJ4CK -z)=Vb$T3&_@PZx=!OXX=cbRSMBXdU5e^6`4q*O*%L=e;E}CWSucy(@#}^FAlsqWNAt -z(I2uD|G2`8_!G%RDJB>tvNR`o%}bGrEpR#dkF6;m%-)#Ym$D*yc_(?)DGMYYEaiv5 -z(*oUvE~VwOG_96T)Bnq_@{+$^zxAt7AOOrO}t@nq)nS7a{}f -zm+A3*Qqgi;-b9%}Brobm!5>opd@rA|7Ge`jB)YuD*!o8e2;S7`$DOF;}j<+WW -zYV>H^?w*9qQtn%B94%$*vfkn1sg1snUrVjFCABMNLZ$yHwZ -zukp3~ApHCL{d*jZpBHVU4pmO4Gij{#rx99;6V3OKiu?HPU`PMbxE33i#eLwgtW%eP -zBGIvW#BEm4*UFUnRN0`v3R0a3FmOX>w;TKfl0w}&YZw5|(?pW+%%q7#QPI;s6nMhul`O6{oaS^SbA^0#qmfzBV1Sa=);JJl6wRQwjNM3! -zlDs6-S^2Q|8H`1yM(NI@;crY59>37TLiFJLt4P>`MnIArl*q7+X -zPw$NxiES$bX%R41skNK~6q%2W5AOyoz(>zu@C0;t%n82%$d&{7=3sML?R=817p6a+ -zl*QiaS&MagE^#dmPoEZ3V^BY210^vhMb3Hc@nL?<<)hr-%l3Xg{4r*$W<8b4t)~^W -zE@g%evh&61WsuL6-H?#LK+#OStRIR@12bwwXPeQFNH1GeRwK$#i|n73G|AB8R-QB? -zF>Xy*e2Abx5wPcq=<@dXczZt$J@@_;pgE85OW={Sbtz*f*~lZ^{X-Kg>+O;uj!K;d?2OQc`cj+kVDBe;Ob -zvjf3fd3=rLR4`3n-IpiOKb2WvHYVkk9dOuFtEi~KEh96gfzwxufLH+l!U#nVyX)Dd -z;dy8D&s^z=j{lk=U(Vlu-5kv8xNlcpSt&&eAW0yVrv1EKu^3L@JD{+Nc*X|8?$muG -zELbLr_~_9TPuTD9lF|FBvGDDbZl$CA<;e;z()#4yUG0C65wU9RZ&Je1X!IN}y5gso -zvH^EPvSYsf`sb&t895}&To2<6c!vv~>mmTL`Zf9BRLaIY6vYQ6VjxYjS9rBF$;;k9 -z^sh&1oTa}}d!ztD{C9b`r%76~#k*~W^uK{v)2$k&UyHG1VUy`p#cEHy)O^e(v-uD~ -zxAbZ6kJq9X8r`fdWV^@v)tAoE&i$Pv9KwR;Zk2iajM5(P{Bd54ht_fMr6ArncfALp -zm=koc?Z#OV{kz!Ux68Ss_4cbQ4&XC>J(alq_U}tG+|8i_WYhX@8S)*;(PBx1NI2;t -z#$3#mzHB^Q)AGFq_H>H}(UFeLcew(fV2WDP@>o8fV3J(QMg<*1J&av;1}yHNsO7it -zTu;>qx9K0Hnj$N(UlIJBUL2_#I1rC>TnhzS;?z6O%&Co!1sQM-`ZXWp -zHR{*+rg(5)EzNNERS|&E@3kXyk?XF&8a;J)l>_qBcfkH5%u+^cQINL&RuAP4c$($x -zxC7Tp5fsy6)8kWBy1^jijNYut@3AiboL~VS+t1?b+rpsayv7eVx~tX!@FdAVK3k5NF?m}K1MfS~2Y44k -z4;g4rL?D1k426)#G2?Vxnry@X2S~b+(jmKmiYj(Io@v6L-+yKA=n2m`U;AnO3(uxd -zB+tj?T}3$k`OE$)Cgu0{(fTYi@XiQ$qXtYJKx{o712m^RHlm|Zd3%8wMLX1UwSX6R -zuNeq98Tj@z@OlFM-syN2kr -zL5p$+eG2*gvBWN~5r?08jZGJn1Ppp|#x=pFTFFOv0Xsp-=#}x`N_GHz20wS1m~!I; -zA9fAh6UbdVH;wl`{ZrI616oQsQY*WfOKRHj<&QD(asK42rg>6nWWVFYt -z{YZD9XuWn6NfStRTUgu9faiP)J%5ug$D~TL)~qRt1H&8!B{W1uYBsh#ZR}%J-W3q} -zOijH&gz~N=#hg3ksl2F_{|5NVOYWyy^sc -zRQBZf(3sVKD>nrgQZ}rV6Ae_&&7fj-Lo%$Xp^2TmX0^B~%|ms(QUiDN64t+m88wM< -zkuD0hRKQ9lu*wtXk!#X+jP3r=R|tYQQW95`I=eLB5f2R(fFXNMX%9s@G<#a=c_f3U -zO9l>n;S2hLUn$=Fg6#g^QgaKyfW|5WHw6iW28`AxMjL%Y*cS9T%*kWqOj!aHY+E;2 -z!!*trBAdI7GRj~ia8$A{MtmSAY)t53GQ?eO`6T%<00ETZ)Xpn@u@6HJ7MPx}Ki0FZphtULq~T@+jSh4FOrt<>c6Ab{b^L4*_;s_QI( -zNTN>)?A7fEusQ<@YshFORd>46mi?A46EgxnqlNnmApwLnm_aW;A@F1T3SZ><2)yIt -z1*>fU+0|5_vXO4!8!wiy3^)70bb$F(l3go@pgQlhvW(^Oply4U>#{G_nX%B{(YXy{pt|FtVg -z!Y9s5dV0E-GZ7?3FuQJE&%Yla#3Jjx5Si0L;n|rJIq~wb>sP2(8M6iytuak3+=Q`XkE|#McB#I -zERME7ac{WH%f4ec*NERJujs*mTduAd){icla%$PE;~G{hiu3AQ_Kl6szpgWQpJxXs -zrX3XB%XEW647>Yvc;k-l=DZkIPma`BToj^jM?~T*WSk%-p4a&`ZHHp2SSPYQcNV*7 -z=EaUU8`vax!*Ca-D?rMY?`wys<8G=Sg0PuI2G!E;>>ZtIqYy -zdsX#PuC0Ze=bCcJ&peSJfXdf|yX;;hAE^Lg?R(wy$~Kl>J(~o@Ev{GJviyIYm2G*E -zDs&UGFQvxnhdwO*of$g+evNpCzP!N5JkveodUb=Lx@S86haGJ;N?Y`w@^3>kiO2^ -zh=VwP=?9KhVCqii(xR$4_3l}Eyxc8qF#5u{hvls9;F7H`S`pMVYtAXjM3WTzTUu26 -zragzc{Ek<#LANyQ{fqpoS@EGT=oDFL9m|2!4Yp*%mP@J|+}g!EZ+3`kmHi$8#Qdl< -z7aJK>vA&+eAY_bQcV2wWoQchOOB|SI;R=44x|LS3FFEr>Tfpjj2|KNfPjK=#0PHL0 -zp0+jM9Jeby$a!M;jvyS$pSmIm+aXc%x-Q8OqfK$T0xPGaT5^yr40Ph{Wy##pZc6I9 -zwBP{N4X3*>NUz|@bdU3Pm12HiVwaCg{&C~gc{)?CHzPcb(y&c;`L{ouJ}Sm4l#G#R -zc-h2Q0U#1#qJZ)-n*She=1sZ;RaB+y4s_+SX+ ulv`$qm&~~FP2mtGtJV~9m9*( -zliCa{+w?pS82)LoF(zc}rkD-+pyBPY;XU7VCYQs6=_l2c=XV0O6vMSBEiYB9I(gHwHo1j0V -z*?%1XU#d7NwhM4YTndZOKcP-s103K`&Iz5ZOyl2n!HmcECD>yTD%$lO -z%m6K}UJqb?YH5PTH^%fSsmOe)a`3Jpjf`$x(*aW~U}pG;-Ue;C8z-gGDcwG_`Eo+> -zw9lD1qmpRc2hs&QdVtymrSM0XIAf8{y9bTi-TOtJswYEO(w%L5e7qNQtCIxu@2yrb -z-M=b@xnC+xldVodk^MDJO6BS%`=#}&LCgEl2E8Wv*7}Y69|=wMVU#=SSEVEwlv4A4 -zAC&MFHk4gzvS^@YWbR*fMYrY_k$26N1*N9GPa3wKs``iCOtUEne_!b@M-BM7s{W7~ -zr2DL(y7y|k>odB -zhRMtt#^hSdjjYRGY~@@*&ixOTfVtCwwNy!M`qh}OH1x?YJos-jya;lo-$t+7OGryK -z+frG*40%o^f#p_|mD0Yx=j=AhT~&+;TLb99jOO7O{E~ys?M|kO77{226O3u_3y_+1 -z3#bt)E27xPnblOHCH4sCkKQ7P^v0fWION3-u8IM*W@HX>HVcu>#xt|mJaB>w$=p>k -zV`PDmY0D+({K-t~T0RMDoIuS2-XmeB$&pe&uQJ0l>oA$^Q@-97WdUujgC`_n3KhL0 -znP1>5E|I&!oQ|D@~8S0&*g -z1F5zxG(U7nw>pB2|EZgCiL&q=zbs}XcgoGYR{8wT?>2m;*NpO&mDwNw4fYi+-yH@t -zU`Oyjx-VHTvl~X{^-a`Kq%n-)J@dDmIFmJ)bIBji3%A57XS(sPJLV_*{PkU*phkv? -zIc#0=OY))n+Fbt@REvd4Q9cgO6q0Xi+u8mE&hs1|TIRJ*2Obm&BJycv#lm}H1|oWs -z1uFyAGIBI=1eDsqnO#iz&y7r2j`pPj<-HXu2tXD?Iu-oK?h7vLq%+t? -zPF>iMx -z6=wjb;xU5?LC~uwA;%GThG#tC!jP1uhZx>Q_YEz7WK(Ks?#%YNE#Gf*HQX*(MhJqD -z`9=06r@Uy=go{I=cVsgv%~ID{T9Mi*YH@K4XK8&3IZpyj-lkE0SoE -zO*B5(Xf-;=`FhaaMqYeG-k#=M3lt;0Z`>3^<_s~_r_6|C>_++*m*>;?iWfJ=UdU03D1M`d?>kzU>phk1#+kNV%T(4?ygO?e0eSZ|e(5VAR{+KB -zwj1#(k-yk>x&t!#!4Ab(FhHtu({4@Kx0Nhf(IL#=R%DO`DgPphSx)f#Q>w0p{b3wW -z0XPM;vi-1kI|L}ePIq!Rhe(T>#P&Mww3uVUJA=`X3tfJQgi*2At=x5{H0Ized)rqC -zTjldxA>BrOO)W1>zvhne4Ous|xS7&&Ev=m?#z{K|R0D}<1~siQEnLHzzzU5uk?G%T -z_%^;_Gza*VCC} -zakT6V%Ecz{S{e!bVnhl3CEFhUwP+RimbY)El0a+q` -zdeV$azXz01?1xnAeJ9z3;H)$=@#r&*m8#erlj?@b7_0?9eeN~~q7qPHPX5Y?BxktFUt#|OFiEx?)_Mt5P$Q~|FgD4` -zLF`r~1li@A>SR=)ur?!QY*olhXAU;K&W~uD0bLNTBr+iz3T1ZcRbsjXg_(2$%|aM1 -zq1h(D})2<<;AMfwNKgd@mEl#ie -zZd|)$EryEhz~p3%B;q@JD*uQ^ZJprw(~iPf09-|=thW6Eg9E<#fmS{&%~_WZ?j%ecRFeVxAend18(5#E -zVFD8#jHs1aR%--7x%&aqh-N4zzA+a5xsi7x4dpJhYi8gh4(`h8xkiu~g{spw8nxKR -zPmq;DMH?^0j*>{nuTF2xc6_s27-2-%$Mshy=&`~%NHziFD9eet7Z(BqqN>+se+ld2 -zysVv7EoP`fH)q~r6pn8>3y^r2rd&E#HvW(eup(5$$G?AbU(Aq28g-ftBW7^ -zAuAq9oLYaRu!*TX|CTIT$V7v=SwW$$0U>ag0;MfQ`$zYH!(`Sss9tDZ^V?%~RVWC$ -z2?{> -zPfGjDitBMlt;L1()+`(DtL*kJiasw1myW(i8{(iP`sEa8vfAlw%m`L<@PuuD-M^sG -z3U0l$9Lv@h$#iTae`(XGsfe~Nw=VIEP8mIBn^Tb)T%+1OFzF|&n&8brxAOk|`#Zcr -zM3AqC_s&)W>73LIr%nf{U3!esA{K6TSevw+uK~+f-zKUc7}Hr+hxxY;?jKtd6plQX -ziyXpEAqL>z$Ub<|;?>Rzl!D&l0MuudQtKO=y~zSyJwsQ>JH{h`q^l;+U@FFJ4NM2* -z^f!Q!a1&H50d&MyRP~670Q6nFx6!4CAomj8r4_RN3Jg5*S -zVNeeBty@-F7^gu**sfdXZ|C8DA?dQ6hNkU?yOf(G?MS*#Qh6On$ZO%SRYxyHLO(y0 -zCrEF-QEwYQ!`g?-1k@44Y#F`Zt;ZDx-gcxuJfNDnZY&_LKui+pHlb!>z22oCNRpPW(O -zN%pPqi}=pT-%BgwD{_G>{z*piMGUY@wh%Z8L4JpM0n6JJwxWf)xX~8coE~ueay>TK -z$B(ypF#eFsu&-t3wl?slYje~zlEx1YVC>qSCNqm -z(3Ir8@FZ1pPT+wN%oP9#Bw!Gy=YGywUoCGLrtD!EE^nIdo!*yKn3Ipexl71#wD+Q| -z+!TgrQT!sU-`OPNondUFQePojvudT4ux@Xj)eHcC?U#8|Q`u_X-zc{2PSl2M)&oE%+lQNq*^Fa%kmx(S%+B5r2OfYh~cx}>m -zIhKWj>zxaB_!r0};l+o0!SU=Gz$LJh-fm=S;KgD+lU2wcuYmUPd|Sop1Qi>Z1-$;a -zr@ju01$lril=kwrZ(FS3^iK{3KtSRS&aN|T|$L` -zej)+P{Xn!Q$xyvuqR9(^geSo%!8(g}$yNnp848WaR@*Hu2?28Zp*jZ4e5^csmR;QW -zMMtzZkW_ZagwkZjw@%BoX)<9^_T=-3@QUO)boAA@FDl?@X^$yQ(aoQqZ__|d~(hn~&BBHzL)Xhs6*&coKHO=<8?y6d@ -z{WnG_$O?F5*FZ7;9qAZSZo;&JPY;&9q)jxZPVabEla*H`^d7xXI*VS5swLO!W|oH> -z*CG-H9Z1Lc4york&btJUka&R;uU>KE?p;Y#&J+^RP=G*0)s4L(TKe-ACHrYc5iDsD -za!4=I`kFn>0gFWJIZvA&`kQR85R>dDrF8JN!X+B?fzy53hqowAhWwgR5YIJqRgJOo -zKKHcgEpvn*KKj?NLP^|l(>`uyMOwi&qBXkKczY8+IZfR*`;>oz*Q~1Wi|iQquu?rP -zpbxbX-jQ0Cjsre^bQ9Js{-IqLz|P@U_K?+WpgV)@FZ*Z!3IKajl9K4$1$d#`?sTh@ -zQ6Fz!#IN+!h9xS>z#o|84nEr2lcf$zK!vjW>H00)uoHU)MO;MWLL0UbHQV`4EXlUE -zi2OajJsXCyAlZf^ph$3*=1I$qjKa2<99ltOw8lBG0vgK`*(7j{G_=d6es*b -z1)|9S8u&*t{ps^`)gfK)qXB|kuqH(~=`GFV0hMw%c!s?adBiHbRSs4X!a4iSZK($RDD9m -zu4l7ERL$^^IqR8G)7Cmr_)(}E@yldoB9<9tRSC*1Nf?Lf?SD8X@?lkL3x}OYN*8H(LdoYkmgkGZ-CQi`w -z8WlnKXrlR-59F4haaJF9)5)~*NRq-sr-yjRYu(+q2b(}?tI(o>R$Uv<*&rG0cOYR- -zU6iIn^y1S>`~A-kl`&+;4$gXQ7lm!>$fQIr9F{AZw?QaiQzdp6qU~}jiCpo!R*?I& -zR;#ihar9NW#0&i%%rxF)%>qJmU9gC~On~4* -zG{dS4$%w6j(`2P?zQu21y!wqTzm{En -zy5u0nD-2=KS@kAK#Nj4qsn`&$%qPiu(S -zL2@i;%0S1H%Q;M1^$azvfrnLaMSxbTh!XtLKSp^6{s4u-V -zd7xzW{>;{o*fR3YO5T?W@3mn7Q9!Q0oq+xJz!p%q2URR2@kCxcV_ak>S_0zB(d0Rp -z`hJkNMZ1H{mV9w83iH5aP~8SHbLIgT$3BeY3~8Y7mh2kTWsz|Df*CQ;uh8#==tvX} -z8|JK{R}?1bKB<_3u$#WEJGkWbZ3Xl+szV;OXSP;f0T)n{VKL{qWGQzF?kUAF6h_XZ -z4UTt~*{Xm?-WRJH$QAfPVN;|r$=RdVi>Lxggocb;Zp_goD8X+BZ+E5Fa^d9Iw=vn+ -zWW9xYl=Rj>Mp#_Yf4(S~A}~^}lk5zv1=`ApdXqUv?}6_1rgtmSouv8~AW+C`?$G7Y -zVGuzL@79E(RIjTULt&a38`$*>}QvmP^F^8IP -zX5~qkADM{Z3RJ(1V{1~J*f3Oc0-{5}Fc~I0XboALS;DjPQoAIXdanH$zII@f;_rLN -z!73ze7#w_o5WjoLJIj6+RiAb$_V-L4jJmduK+bnIf5@5MZth7kK^qB>UD=%BME=5UYHQ#ydjgMuj2Zcs^AP9Oj!d8+oim3_l -zlOwlG2T6~Je2uqa=xT{kjFSrV?Qs(|r3^c(hTUDV&Dv(M>&^4P08}e|$`KgsbxujF -zy3A0YFwi8C38kd8*h8TY*YvsHAGdH@{N)zu`@mP9IN?p6_+TN+KpH)2TPKX0d9P50 -ztQH{I0cp*XLqr>+sD2Jsu<%c|q`KH4md!Imv(+A-hZ -zlqo?S1u74%E?!E9WQrN-z461%GJOLUtJO7EKvub+;?tT=n3h$cf<#A;GqfSv;{v3F -z6j7@s#1UL8?X4IolT=xa7KwVxMWm`mc+1KQfuZ1*QTHHO$*24n^FR=vb2CGQSKfs5p0 -zwdCi)*mVIAP$lX!lu_M-r2PyJMLF9Sg;fHA==1r>rxo%Im93_9IdG3 -z8c*{C?AJM7K9fWR^L8S&gX$VmczRzNkM`Rx8p|y(mFKrz5I3~UKQJzAx@K%QXvvpUgw1_AwrqMe8gF-~PWiL@Xujf|%z!7>jTq+Q@=3x|>kH~@Aa!d6L;TVv#yYUI -z;U6S+!NCTj41!R{Id0mco)4`_^B`_wf+Ev0fdL_d#mZe!`)NgRT<_ZfvrPwF0OWz7 -zMK@ZnC(EDK -zupF0XywkfeMavisjpyPbG$^ZF9z1#e0cHt$*AcluPX&V0YdP(m8@M)%mU~^TKYpF| -z0VnP|whciqq%C6fG(||BYnP6=qv=gwI6Y$@@Ao-$J6V)?EnM8G0oUL353QTS3ct250JaK6z}u^_@ZQ(|8wk&kd-d_t?@ZqY;v0wmo_wO|)!_KI>qT -zVqwHI`Iwqr{t&Hym!9Q9mtxn0Mr^xsc~C_N(R*ScRr^3o7o$ -zu+a9FG{{(4kl?qz}2l2W9k6Ue`mf+&11qU`Wq -zIKtv4v5I7h95kDDl%pUgHU9UDc01m%QONJSMs*5d_%>*=5Ss~ZK?OseqkVKTyCBek4!V51r3L;Gk|HsIy$77fkar;2DPK-n<>rN+Cxiu&GOm6fG1;pU@ohcif;wIc^@_ -zVBCG1zECEM81DyyTiU0U5=FhcSdi=%Ru|Jo%`&k8bW6a)ySLEUn(@+Ny*hwr=o=(4 -zA{P-$GQLzcNCOip4R+t;*pJ51mAy&D`s{~U6F%`s%rp|xqAN)KIZEe|+=*9t(S1~^ -z^l>I}iHUJFyP{UCUu<8M^!)dH{U*>AoWPhjMP~CpD=_g|akj;FTNp=3VQD*T{es9DB+Ez6u*9Cz@;SR#hX3-1qB=t|wI> -zR%=cZXpKVUuEA&`7x$ETKxqop30A1QIp%HCXu5J(h1 -zpN6L|_JN-+tSwOh!vlK)yQTGXlb{wuXmGt7Td=6a09vBW-3VS8wYyQ(K(=J%zM>Vn -zvjcbWWYHrz%;m&OL^_ciKBQ=TgQdoPI@&K%6q$dyL2kPPWUVm)E@+Z`gNZC4*K^0< -z#iM%I99>PWQ@dtBT4PAl-bz(LqPOe0#s~TZcPCLOu>yPHySG$hR2W*Jx$u -zw61Jnaz_HUDB`H{8#l@!Rdmz?A}bQO4=C`NIAX_Z@BAsL=~Ynxl1{gs=x;X!bZ%N| -zSPuYL+caKFf`#7<4zVBd)t^ObwaSN*dwHCZ7%hO3>>JdB}1t;qJ&tu -z9U9;AV^~qiXpXj6kGf)9yqLjdi%NR3XzQm%HiT}{Ubr -zGTrXJT9w$~7y`*jQ3xQH>4m`w8)VyhZormC8j%43p+aUGLo2>+_{Vg)jCH^K`ubh{ -z{`~ciPoweo*Y~P_U+(_j>L#myhSpt2)NJ`5pX?8_b#hhI@Gvu60+?pW6pdQKhE!57K`Gb=PZtHW#tyRR+MQvsi%Oj00hvxYHIa-rfzjWowEf>+!D -z5Fc&KC2d_TT$uo4{qc6?>N=FBRdi#TIIT9MIK-@vEE;wPdI=Wd6&X&h(h@Id*5z&N -zp=hj8Q#**?5J}wjSwORHE-TgW#w~P1&|Qx}O*sO4^hxsTGzQK);RMU6Z}l%*>vz@jKz7Jo> -zPo-W`x0VTb`VH7WBr~{-rH|x>=XxcE`}{I0P`9oPnGOM)mldm9ha*}3j|VFSR40CX -z|1N0a?%p^j2|dOn5*(lRPmYTrlyfzWC`&k?6M^jfw~6dX5_7q(tB)(W3kyApM)7)J -zIwfkp29yrBiJcosY|u~8wo54oRK7Kd_=pxMxlM>Pko|)+E*F|T50Flg?1VSg111D9 -zD(Ec@R5&iiofP&A-5AdIJ#Fg$TCf8DQ8S{>VlBj-AG&?ecX;8h2o+&cBvm=u7*DiS -ztk*wb-kf^FPckzkE$vt`UZi^bl2g?zA|9zia$tC^GRR8uxkBl0QTEM}@Y0~c-;mdg<;dPxL!;11*PNoCPQbjtc -z>wZU_uL@R@go5yv} -zY4n&K-Ns8GF{ImWfqijL02ovK23OXrCK_LkKYm=Km4oi=gDo(WiFvXjx*-CY6;YOC -zuah%$wN6WfdHca3^-C)V(d~VU^(9JXo3Risxiy@R;SXQUpsxHRD~nfmBrop{diRmz -zC9sO;K^oE(&tBb*@G#B-H`M!J#a?X5UqS0bHq50Vo64C{iD2V67m#^77tUY6NVYU= -z>!Vw4&@L5vcI`ZIiz;TZvUwrKh!VIW`++JIdv{ITj-IPW<3X-Z6-^T8mO^tcB2|o$ -zp~_=eP;K%ypwYJOJy`*$p&DER(r$N9l%?u1s -zv#-wX0$CZXp>{>Nf(+@$0wV=2u`7IacG+#7SRq@P69yUuE)z4A4-R>fR`uF&U)Xe1i8#d@AVsR~+cY+? -zJ4U~+P2id|jVXV-x2s5ue%8zl^t?K$<`mI#fhcyej@?r#J>_0^R#?f-LUz;js%iJe -zs?|h0XgBD@@=sJZNR_;6jEEXGkSQ@P6i>CV5J;x%7Nrk8M!Ii>fpc}) -zlr;%^mUO-hERzv`vLrb!otpJfn4c55N~szLi$kIF(&7&wVTMBD7y$=dH*=8Yb@I`A -zQ^|S<2E;}Bj?@!?*9E~hz`g{)vO3M^lD}v?ahbTXX6#iwk$uK{m-GrP+4t|?v2sNz -zibf;Z8Kh$##+4AMqh*Sg#n+d<8DVI;daM3(L!~w>XXhln%V-^_UN?uFUVDck_LN}b -z?l0JE>ptVj%?Up~xPyRIKv^aM;G^M!>{Jy=*d-GPfYTG3=32T3C=X=0tq1699-G|e -zdrWaUMzNb545u$oZ()VS?R87DDrgW1L)W9si(_NTL*Ab7UUS3ds@I8`oQ} -z04l`hhHTny017YJyIp~TawiAQ7A{`mLjH3StlUlr_!ZOwydh5HX`UQMiW`#bYgSuGG86YvB@v~AjcAt_E8dl*vOe;>7f{x+2W -z;p?$Tl#^LR{UrX1Ru`c%p2Vlxc&yR@v6W(Au?AW;xnhd}d69`k=0}G-m7)gtIXPM| -z(ZaMkgowCMR0RP!i_ruJ+6`}kELL8|@1JqGH2dX>=IWX8y23Iu0KcJ-VEw|o;~q4J -zu7y>Ay-;o{R7YwO-j--|+oT+UKLCxoj~%<^Iu7?_>ZBnYTeCMulII9*H5=GvxlkX5 -z7&a*G*`hBiBJ3OE2g#;_5?Q@OWT1OB{vA2a#sH8KC&8UXA4 -zVl_=7#Qk)*q6wF_?=?c8b4}Vxb|$uPv<}?*nz~}y@FVYAL?x$DvaimL4E{iP;hk)v -z-?jVczPs@5n(vi&-|L}ze|O)lF;25RvSG<5MUAFr6Hxp*aaR!o379cZ^h$yD24v(0 -zsOia34I|7;&1Z1IQsbMw26o5P0c8Yz@Ccrx!2=UHMke@Kg%2x%Ua`((ajpdRwBJaW -zq+&bnu466FRkjHyYP)faF$x?Thm$)Jd$+UG+c0DS`pc}87VHpV>a}fc24W{LN3`2x -zm6Bl7B-wXKiF>BzH7wAPGx&v}#p#fjN;!5$ug%j;O5S4UGFryJ@UgZgM7f`UW%{KzPIU2lm4((G;>~ -ztAG#sa4}_F`NKVDG-2q~=~@V{+XmN-+=szpfTHoMumJLmw-d@H7hC$V%dsp{k4HkL -z7||pou0pco@L($vD%ieGz+hd$&rQB%9mX+`LYWjGWClK%?@8ya%=RfQ5s|6WU^G9y -zuY&jmVwU+#RLnth0J1Hle>k}yEWSG`d@^laY8IHUg}g!DpXn0zzHxKx7c=uRbg;(zK54Cw2lyFNA5Y&{q4 -zaDVCw%CTq+npa$K6=@R(Z3NpE1~LsBLszCnroA050U2Q&1BXi4{wy -z!^&4l;yD|xu(ssj)=ar(IxRc6$@GjM-fP?W2I6UHt5pcg*@x95*u)ZQ|5{zgzejR-+a2sME#yRK(2uLL -z;>w2`Z2s@QYF(<`B!w|=F>7*Z4IuS=NXzVMOo@Y2-GXU-as*a#-BC>8Y!K^qqxU%$ -zqvB^W?1a{@%t2lP>G`51@_&~4Yz}c^q+#ZW1iqT3fBm*~wEy+N?7OM7-Eo=XSh}45 -z<8m}0y;*;KRNhEz^CMqi%? -zICu?IN4TAyg~L}YW)TRb^*}z+tTIWOZLegX0&7NL~gLXeji@#E_)^VF>7>36pu33Pp_!hN);*C#5w`0uhCvfY#=8!_{RLrCW2$j-9~d~s^-FCzcC?O?`V8hc%z{O)Lau(V?n(D)*{^e=+~m+ -zyS~E9wtKswZpRK_Ud#-CyCqx8BgTH+yQ^3-Tx5ru%sJ-5Lujj({G1)em_|VX@soqS -zp<3c&QpjH6w<6OC>}xlx$`v^OqGo}6*c%BLorlP>wIClKGxLk_%GlWBbP9;=)*OARcqZaLbf48>!yLbW4^w8OwUVeW;_j)SGceG -z47lHj$Z7(zAn9Ur&Dc~%Im0jY&mQXjL@S8xq4V^qzT$QUsgyE%TWdg43aC~O -zwu+pl0>x`_Li0hY0p1#yyeCvqnz_nNc~0B*{b&BLeK6}ciSB{BG}rXeo!Jjhgw@== -z-gH77oN?CZ^_R?5x)nH)kz^u8@r06eYS -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 -zDoKF~LLcRSdTVuCHUTL%>CO)CS)(X3=LP`51P -zOOgy;a6T}m7@_hF(OvdhSZ2_@!V2G4+Qp6gdfOtlbJ)Ud5f0#cD&CzWN3zGBRy9_e -zMJ!~)fdm7&D%9$;^GR0r?zg8AOX&Qz0ZBYI9XN|H?wl7+h;5knXmm`>QIGO~8U~RO -zas*lmi?^sDGubw~a0W|&xjA6{G0mnn14{2dn$8|Mr>aU;R<*L%4I~h2jbey8G?{LP -zm!fd|xl{qx!-#WxDw(J`QLkj3uxU|4@X{s%U9U|hJn=lWOtQO-kYQ6d9*F>X+z;K$ -z+~7siQ321T>BS7aiq0GZy=h>u-wX}NFMuvoAQr~3)!=G&o}@;%-ciO}x-?wrJS$1NMl-@Qo?Cb53_AC)Rdh!vcP2IG -zjQ<+qo0H}Cwi!$v5s?i4$f+u_VRA>G5%JN_uJZwq7{G~;O!cj2Kr2}mVV>8^b005I -zG|Jz>84&Jv^swTn6X=D{HU6AL3)8$zaqEK#%g!KX(TUr -z<}bU0=5B-!4HkNJ2c4plqNL=4|7})IP1^M#q!}Z*xt|6R5#PTH9Mwqn(;_;CV{G_$ -zj^s$QL`IA*cT(NsmDv}-wxIM8&;tuYS*q8wt?opRLBeHmsnG~MxeQt_vue7K>z8Y> -z2q3hNDooMJoH!wxbK!~PTvs=*icq61(51F?!0y)lHOv+l+!vC8Bu#7Jwc;)QiIM&X -zctcDf*#WMoBhzPQ!-ag0z`=wf$Dg|FD-eT|Jg%kEjE+zTY<(Z(!@Ds>X1D7%APk~l -zO+YL(bY)ox`uzRl6Mjl3W)^-Jl*=2P369mtWau{p8yjv9dQ+!-bf19YMI>@D&e!e6 -zaXnb>N(i;E?xy2ReNh2car*d~2E>czEFSm!xRBDK -z+-J|(U_dr%N!5MG)J;af2ok7$2C%RC@+brH(%DzRB5xQ^3rn0Sq++k+2c*up3U%~M -z=q9qvKtd2S-E*Vg?*zlsp(BRNwIgdDFkr}-#^;7z1N>Kuk=KlabK{aH7``hYD-_Cx -zLw?@{iIr?6A*|GlaSNa+6wC-UxSKO?8q^eO;jc$4X6rIWmdJ@8Nx4J0paQlMFc)dh -zaf(kEn{O$##B}QLY^PvpZ|69YL~r5E4;Ob;k>L7k3sV`fE~6(`Df2g)co?EdYOEbS*5 -zX<~gH?mlYoQWd)QANuW{%#|p^bw4r&IK#S=Z}4=EHTGBJN|K(`OZ^mniuDSFa{K`s -zlXNMc@q{NKOg1z6SmU@<7&{@ -z1Fh(3UJ{x*Qqc1OTKgrr1hIvR(_H|hZ5YX!O-n$~(gj80lE8<6GDVAq)sh5Fzl8rN -zm>G$nj&?rn5TPcKQCA})$~D7Qw8N46vhsPo2}5!~sCS{YJq)S7r}1p7>(O-wTq3H1 -zBsY&s?SNFa+%|1kvgE6H6jmE;tx5gX%}O#*jzLl%$YGqlfCe%2^p<{vOrVv#H*wNG -zqv`=SFt4I6adI%gVqIA*@o*js`_3yuCx<%`u -zh1D($MP#YvT1(HIj&{TXMkN8fUbrq`@c^zg2@0bs0PE`rc-?KW5)esSc)@Cy5qjmV -zFqXYl4c8Azy|V#guWzKsNIR}U(_z>54l+hG5Qs8kL}5W~%TFpvne>>&OC#Pf3%-k% -zsp4>UC@w4tRqve69mwPEmKgQ@4+3Vu!ijVYHvFdX%`K+Dju4c_LvE9aR;7gT!Z$yYa;N9(7D|r?h@H|Kq -zs14h1yOCKiNQ0DQG;1Ix(Ie8K8=2m!(sJH!N)|j- -zHJ1okw7)V$ynd-Ioq1oim8jnyt38p(zI(j|{ldLIDqVRleRGSq-}Xem;)IY+sz_(c -z;|j}RkaOtvei(n`Y`X{6qX88xWExt3JECYW(%DeHNH#TQlc94Wx$} -zWd@MG^T#RmU)3w^oZW~r@1vCjJv4%QAIyiY)*l6SaD2Qh4txcb_n2e(rqNT=CkqOP -zGeq-2@8bPu`q1Ea>gjZI_qjcN2#qs%JFV%ZdMDl-)@85b3xU5Zy$q7 -zxE^GL&@_n*=)m*o%r&EZ`xm3RWG>mCcK*G-uJ*IrEp3mF4?6)*C^pzWPXLHXn(6M0 -z{Nw;p?7xg1_O7%*uGs1_Z?F{k$|`PTvIv^1f~H<6Xasx>4v$ -zS&Mp!?FQa9!xQYQHGF*PNB2fm5Y7T#qd@4`8$lP;2D?Z*W$JsD6e4>_as2urcX*m< -zT#vj2yH-Z=?Od&;Fqc`QCO(cFf)N=cj$)<1>3s{XSVnisk?+xVEjdG`5DvBMW!j -z58yE18_N~Gl()7Yj~(~l?`eg7Ch73;Z;q^^Rwh9Et45JG9OC{+)b1kisw~ES%gnt0 -zq}j3;_bGQIBxpa90R8#PmNZW%?VTS#?O9F8aK|OtDab0tNgo+PtbDTieinEMxxJ7^ -z#md#I&^!21Xo8OqP<*fvBcJ}Z^{EWMyl+mM4kKuk3u;E7K8az|bjS0c(l<28n!y%% -z|E}^F=5kqehI%pW?cj1;;k2>7AO`>9TIyE%o5MDk1;)Q~k#a*dWa7N;owE+Z;!vX5 -z16UjoPVc25&H@)?vE^xDpi#Fpwko)&o_Ql1v?$Sgd%CN;Nmau_K0q>AZ%XM+mJTTB -zQ97cp6gh%wKs_wdc78_P8)oIDUvVM}*!p0}!9^&Q+^ITkNDWOS6r1baU8G`kloR^8Ha+|n&K9AaP|KTm)uAD7$+&Mu8-Q}8~ -zB!Q5N>IoxU=Hli|A@Eu`#gT0r3P1^xs{r!Kejk=Dqjwd#Mj+t1c1e&Z%vA8w_P0ph -zRFU4eW`0Pwu_Hn~8n=fv#c+f#Av1%@j`?rNly?HP37iy;(q73Gc)F?z@IrtHdxJyr -z<&}u3=8}6sh^3$HBXB?vmr{@&S+qnAi!7iw^`tZ&faQgDH~6RX)jSD7*sur?zJ -z0y~-h?9^zb@aD<-sQJb~%M7GEL;(TT-wA#MU-s(oe_d!br{_85Lq`0DDqR$=s2B;f -zJ$kn1U-|XKIT_+`m+ksL3nb#WgcOo`|Hya&?9N45CMdC5{JzHRB2-#@3*dgHHz+;x -z@N{Z)=UKoXDPv@HQLB}q1T%LC?{F3?iHc1yc_r@@k#^#*p$O&_tenGCwvQL7acT5C -z^abq;+JO`PjiPJ~;j3Rg*Riu_&wt$@T&$R;Cp+ShLwi4#_hoURpOUQ*;EM|Yjx|AYv9!= -zAq*=EAlu54Q?$l*ng`C2GTPx{_L(# -z&Osm%+a+<)jdA?ir#cCIt<6xZJkehuLlvmgr46SfYrPf?k5VZYNZj8qxt*DW%@$+D -z5M(Tx*c*jZ+gD}-uKneN@xAS94gT>8m2HB{>Q-%IowB1%6DC!MEaWeu-Z=mSVlK7# -zrmGaPSTqptr(WFC3Vp{4-9&(17om#&mu=dyR^PuTIWlt*4TA?rs`SzLH8mg!wD2te -zJhVX*g|>Y$MR>wOyIV)Q#V62VM*E$Mz}?3C^2Ui%l^=&<1t1}oOHzS1jO3)dyOQjS -z+o`soz+~j#(PUcLrnR0LBj*^m^+L8n0K(cvx={MO6_hl|B%_=~dx6>j4(;gH3kMK( -z5a2zT@sTA$#kbAZ>jl}>1FA?Ds7%k67n$DxM>KV`^ZFCRX{-C8LhH#sqCD)kiwqjRt}5$*<<*kBI%LpEUwJppRvGfB(Sr -zqK+CIswM3M>*0+QG|-S~`Jr@qbalCv1UwyOC1>7Xu7y1nzp!&(pi_^2pTz~?)twBq -z0wwk1JNfE}gpyaf1Dctm(kPLAlI`#m-i_zJ8@79x5<9^OKx+|1M+tGF841!kJq6e0 -z0fPdflT2llpA3xe0pQ>rpey7Ek`Tomt{%LQ3$iUM+G>Sj>*%}yC(Xh4Q{2f49V9%J -zIo+k<;$;vp0){&)O(Cnse6({um6_w_u6Mzo=J^cM{-6ugo2vUY9t}N|SSdR>3RaD) -zttBT&K%hviMtNWP=QHu8)X`|_gn|%z$KDtNcWO;P3~7A`zorvbZ~;6mMYyA%J(&6> -zLtdE*1Q1x&F#TX(avQ*ngXdJR9pG -z4Kk6fDt<8z1#B_*r*^3D;rNa7%~Da5_fKs -z%9*&YR$qaN%YAjG*!<9w9`CY|i!_!;Z=&D660;}+@Sq$O9fcF0b_JV2<5OKKDqgh$ -zM|40yJ2gX9SlMpbG|wZIIr?m6(pNK_XxW+0@bRJ65-cR7FJFdW#TjZ+)E=PRaDce^ -zlj%jt+VTyOHg&M-MqIxS_n_Hwux|w4>P>VcFG6aRQdA(p&*F7=rYO(7{dhkz~8l -zI%Rb5GBm>(P|{M;G{+lt?LFw{ZvNP;9|m!EoIU -zwrA9$j|yeUONWY*2G~2&8?<Lih*?H@wpdvMa~ZCPMFi#9a!r3hHc}xePfnM<3wpg|7NhNP?U_ -zd5ao@;V<>zjC+ROudO#UM4`=T_L~OxnBi}mK~xSKiDVZk2`uvN8~>5Y>k)6_-{QuS -zeeoA&RdJdUroDwiylm^%@Oml7n1e*fCQjSLvn>Q8+^n -zqpjRGC<~dtL+XcV+AM%cLQL7qBjdRUm<%^!nYm%bd>!gQ6da)l)&dJJJQQx3thOwo -z(2z!tObRhFL?<@9_nqD$YRgd1{nT&?0_bg=IPic@?k%{7H1t1Xr2iRskaS6scOq>t -z?#7WfzQ@W{halDP0qUeDZ71L*i?AI`M7hFzbY%q4wBGl+WuwerRx -zQV)Dntf;S8kzW!9HcVy!Cz6mY3uU+gS0snxA|NbZGqF4$Dr^^-dzbUA$lHi*3!W^s -z>giO8fw);VW~>p=N@jG6X5LY;SgjuAvY`fIIl>q_;lC_4IcmY;xqNx)+?r9l@`*kTdJSB3jVVGmjz%1Wf>TOHWnCQT`eJhSHm;uQ -z|aBA!7nO}atY&&{4TPRBi&?fdy2p6@*6RJ~=K+wZ)=b(G%YG%|+&fGMOsiPT( -z*~?29gcu-r_Uj)q3qofIP3^IR!?-7I=eg -zj&Pq)ad80vkrrg29rh>8)DybdKszJGp{U1%t*<8bqNUnSp=J$=HqveO8ldK28wqtX -za;&-llGxm10JQ_6l>Bv0GRdH1&gYP{-h_;C=J4ARWly~&hs_FmSR~Gi;l-fiiVRAP -zi_Jg}SsYqPFeS>_E-7mX6`a3i-YpS?k7HcsPL1Eu-^fb6P1@H2V}zA5t(a@nR#|!vq}bo!TOBEdqJuNQ -znOf)*9;H>`6Hda>?n9+N`a|#>F7KnpnFr>>T2t~L_D!WlgH@w@l=nKF-Ad$8=tSHN -z0&hj&964@%TYL3{jUKhoFu$Rdp|H3@k=~Nzy~!+XP#lvS5kD7rrE~Pw{Ajsh>%v#e -zBF!lP>Piq4+1kbakQ9q9v1k!yM)}cLqwX`7d98bJe-6#;pv~@svVFc?Cv9N?H0&fv -zSm9A#9RNE(#J~9ku1ONo51M-dN{G9ID@5=@Dy|`xzJU7bEQ+F0RafO6&@%;MwY-60 -z^O*ow;g3WGnQE6E$%)WzRwAvunn{r{iaA>f2e3LC!ugVN)crMIr@~@iR5y}=yF|~PVA1jEpVI}g-Lx)zwX2kHIqFG6RiI^s)}&~go~;E6m62Sgdd -z@w>1bgY8Q>%~f(<7ZpM8AD_^?f0))4a4K<;$p&g347fG!D;Eo?*k2MXe?{(c=Ax;# -z`htd8PQe3qjW+7l=VH5c)&$Z#qcUFCy(Yd?<8jggp2$8V9E&E9R2aP>m2&FZUck%u -zVWT0gGFkow0ALdL&P61B=uuNIzqe2HKLH1#C*2p#O?onR1E<7!vbbQNDOv>Cj_VVu -zAS!WaMo~~-*ua? -zCb!B&i$StjmEfe@IS7y&dvV(h{1&O>GFBjqjtw_u=TvR%3r;Ss8o^EkaDW#~P3e@6 -zlS)v;z*~nDMb!RERt -z?J<;-DG_V;pnCX)MTvmncW@0R~7zhQx;IX%aVC<68VTI^qy-@sP9< -z9%G;`&M)V(9~IkJy3F~(u?%Db6|WJBexE~NNA(M>UJOs(2(A+Ml4(#YrK0&RF0I6w -z&`N@$b7R^DFCgIS^j-70jc8DYD~kZGyGj)TvqZq#LEEpgn&2e*P}mjnX{f5o@O9Fg -zu^ifZAvVj3_9@6Y&`WRIk@}eVUBQBTYIiQZD+5%MACX-&9;8N1Z1Q=uO9XV6{7rV; -zv~_&=20on*J)vvCh@)&xCyZRC;v*aJZI8*jj4)oiqVTkXkpdhYzz*I5KtWKO%27j7 -zHgy7sZZ0({h-|Bpso6537^@I4hcC#a-INy&L40-ds=8w4-276U#yLps9ctb(EqRE@ -zj9wWiK~4Kn!Ql8;n1PdF>90V&MbVU+@pR@_)RIreE9Tsl3gIwu3ey~oC+hwTtsgcJ -zf@?($uRzz1V=5kQ00c5y0rDD*p$Z6@wCSuwkns=N;IYYAXIqQso%R~yR(so8{hG88 -z-V6f_h01B_?{Il?M~oP)TkI|QizKc5pWNg;4}kU0oKyyEAoJl -z;bUtwsdi2lMg!3TCR{58WavI9Y9aysNdDFrT9ub%5V6InO`4ouwp`Bd->9Q4@Pnn; -zD>U4j08FSY@;}=B!@ZS}xyFim+YLQpatk!M2k9Q}ryjjg8`=*@=!Iq+rRq`ZhEV6E -zpkh|gM*6rRr_=}!8ZvOT%AEW+TJpLuX^md2v0z(J0{_ta^k1}(q@q9~JE($MHzi6( -z!Wn6QjT;MJAETYk)$l@ED~w^NtuWV%_n>6(69MA3OwBs6nn0Bo^U%!KZy+x)gf6cB -z#Qvz<(naPwtcPP>)kLM&*xWgjioA-x3xM0?-a|465yZ0!<{SC8;J0TViXQG@6t~18 -zZ?g%|XC&Ji*|NH}QC2z6)=Ubz!~?{Nxw0QDDuCp^(Tl>b8v{G^ltCv;i77Z}*+r8O -z49uOPM)i`4ROu)4at_nC-;ZiCMzBS{FU)1s9(IADA#4dsr8OtRBkb6UR;>a);L -zwSA2%!$^J?UDv^oCg+Xb8$e71hp(ZD7jW8#aUMSLLRogKoFd?K^Gp?M+Kq -ze2GFPpVaO6AA|I`Of1*h1q|H<_4YT$Z(GmbNS`ABwTkR5KRz1&Ufd85e7p{PmIJh7 -z+wpXjCf;cx?$dt`X6&i_8PX-!@>h7E{1uXdAl93@)AvA0?#7S*82kK>v6s6f>9aBt -z|9OU>Aju>Cd$N0fynp|E9s2ms6F>iBlyfF~Up$o5W|SxK2rT@;H|GyvRs4O?JpA$h -zWBh!>W4nC34*Ye-=~zMv2%DA5B9E4DZ6*;$HUminfho&ZnXhq+7K%T8AfS6jUM7Ql -z<3;(-%jm~{4}bnWOnbI5G=O4QW4cPIBw_y^`uLBr^EEg3 -z^4m1narw!g0NUm}9Bi?=lc1<3F%AZ>ZRpp1R~$Jon5-QCT=CcJ32rgz~b1aD+>HQh{eMFA|NIP;ZG+0G)<#kirVce0Rl=);#i vyx!kLALTOh5gySxL^H*0)sm$Z;cfQ -z6Tk&gJSnKxD#|SoD)lJF0reN#Hrx)$=6E3M3IRO(Nu~J^G%9-Ob6_Tla6|mYPh?&( -zlAqPeD*O;HE3&xV?PiI`$SEUo-Vu~;cHkGCk&MU~5-89&wdT3xwWyf#f^(xwi_OPo -z|5B#6@Bf^v`(aoES;l9RA5eRwaL8XF|4293mPoqWndj9e|&a?k+2dVv+etRBjgDYu7r-q5rw -zDv*|hqui+hirIZy6Zb2}0}GZ#-{C!hxI~Vx9Jg<^ZWa+aY3?lp~Y&$L(c&EIC?8IiuaF+T~zRrA9oelVEvRlU6T-KMvCx>cEjWkv-xnR -z&|j;>OlvtJp}lfs$J7sKn{F;6Ad?c=4~hA-m~Me?ftz3Jcsdw$`MX`51MDwYe`SNi -z{Mo|$=L4ieXts<&6tzg(K4(Hvj!poyzsZLeeVKbv#$40^AnAb|{XFjmLH_;6cf{kk -zRj@A?xTYkLk-V@~opP~EE_wl8gr#?A`!sYwipk~r_xFDovIXM8ak4=xGZ_(5dRGLp -zDsgAn=sq`=w@(T`W24}oMOg^D#j3o5Zovg<6cv32#>&w(970< -zL))4~F?e2znoYqL~Paa}XP0oCxbMjMQQz38qT<`?V!mU -zlBx0t<$KR5R$6l)@vS%OfMow0%)9)blo@OTV&G_-PZ`m6aUC8&54*@0nhL{O4A+Us5spt5n)?_NnH(X6zkPPRcf -z8VBLx5po_x+y+vzWB?e$4MJv5Bs^qy(gS_D2dj6#8WyVb-f;qj_iF^AJDOe@TRxyB -zS{oJ&TR0k&M2kQH`a@*;6Bz#FZU+B9`F-6Kl8RBk4S4RGflYHbottJ6uq|FBavwg$ -zE)#~Dh6e7Y2NP_bG5;$vgc)tew46;0AX95l+ -zsVl}QC7XFeubqXmR@8WF>%_pM!1IPe()8op$<`cXl0eJ>r;$t}TJ@!6biYOzKf?fg -z2dr3H8V6GM}qM890+DcSlaoT{tHF9+zz|j)3 -z0O=AGqNwFX=7M3138Zr3;52ZoXf=yBms1^`1E3iSBB$*g{kmfHaVcajGW+a?HO$g`j}Rw-_iUL0iIA?1VtJ*yuO$sxg|5=5FJsYr -zT6kU=Z1-x3gdd9`g2;HDRLeZno-=cR*l0#5tOOkJ?kZt!#>Z8@4ITw4- -zW1R=+#Pa}2vh%?8wP57BzgCb8F9Wo7&I8-)HOPP@ul)?Cfr_e4+krtV$&a03g}?w) -z8CH+1H=xn&I!!D(Y1f8iBf3p7xd1w1u|b((`Fur@4#*PBvoRG@7@7!cBPoDcwzN1N -zMXs=yv`QX~7d{1u-OzG^!fe=Tzq&ECO;>xOM+TQU)U2uMJd?M`)>tk~Uku9g(5M9uo2{r13OEsB{b9cEbo*|i8 -zP5JXnx38D%W!hOxXbn0EnFx+l2o}DT`uc&U{V04i?X=~ -zWUVhJglo)4R5?vu+6)-Wx4DD#jGN=r88`A_^L|4W{ZY>_;a*_c`l@)zxS^SL>&qLd@q!~1O|JNXH1UZZo({?tQqy#W^UTmt -z1jcAtFbQ^ry9Z)vxj^Bqke`*Ghz3?vy02IA_JOjsSH`r+yhCqgr%19mBSlFML6M>P_ -zS|vLwA;>Bap3w9?ra5!)Ew2`!(&@aMucV`=>A#*PDbNabXr;1_(XiAgJfJ5jWJNJr -zJRX^LPs~N}i;_E1=C(W{xpWdPVP)(y*UTktWAX2U{BnshzQO_G>oOuzXC<+cFf3+`pT>L?ea`z&W{94#!^ -zra8S2Wb^GvXd*c_ls@CDp!#?|kK^&Vp!`2R<6foSymNNVL%nYn6Sg6XjgmtO-r-;d -z1UDu(V2C_zF{OPd2mfc`mr5kQNxPSu$e;2p#XD^*)08q)O67WCU|g0Y=YhNcfFwW* -z?oy19rws%(H#RP;lkCklM!b)@6hn-^!5$ -z)yqfn^c+aYg9f2El|y&9oCz3@2RZa`+w%eI=F_in8;_X~5>-Kw*;;NU!OsI5jzK)} -z$bQ$qQ59eGNi_~rvCe1*UeDKOxdhRuhejqKhrX7ms)<(=#-nWE{rk_~I!=)mmONbZ>)ArOB0dhta5MQ|X1P6wqW -zphHE~#d-H;?F<519{B?tjOR%=0_>63O8#kX0!Npn4zw;Tt$XCxgF;*BND=NgI5_&F -z?GTUVEFy)T-iZ#$7e$HChUE46u93{IfPR&#<}iW~B2o`3VA41mm#-(1JBHPwr?Y4i -z5B@)ZT;O;J6LHFU9>&?KfLQ34qYJO2vrh0~)5u_+s}4(QVq_I8tQV6(-%VlrboG|8 -z4`qbTIQS;=Y<8?mH!r-a`O9R8BGKnhYqg6sm9^9b$}#9Q*`QDA!9JOuv|g$mSGWH5 -zNaCi`dUVi@Gz&R<%{opt0*>>N8I|=KBHr|l2JOZdU1v7vi^m}!vVCCCP-GAxk9yv+ -z-JS7*wk+YwQ4kfDxDXD%(&UH&Er<0=Cc4`CGB%Ofs4M-77|){mD=P^aUQlqIg%frt -zEb&_PYknsKl -zxd~)shVX8zpAGmxK<${$zqlf`BUBAM5=bhO*p#x*;#WfjKsH?xfa=m|RJq0AU3ODU -znoRF{i!)wCxzw+cm5{&VuoZGj$3|YVsTl;BtCyROcdz_&dEs2wojd~*E(`*ly=Ok; -z-B3<{0KenOyen=71%d1tXw#>Sm&`0SrU6~aOmfwo?%15f3JrrN6^A(xr#LHnP4jdT -zT7fl7{>8{JN$Kb=9(!K3K>pamh4k?1x~OU{1?1SUF61{!!7-tDf1xQQPNvW=9Dk5c -z*v3{MI-RT+56_CXWVYrR?|+ebGPGxL~QZ#-U5*} -zFN(g&en8L6i$}R3EH^^un0Ji?*~${B5U>50(XV`!%ou$H0|105Qb9Ip{icDZ{^&8W -zM$Fd~@ejaKu4CA)#Yhh%?Hr}JoSZj&JOPz!QZTbJSlp?ORHQ@mK*tc3{qth}ksYS?6o|(C; -zK#I9bKnQ9uorguq#S>g`TMQOddY99R;E^oh`S7HgbcAQEFHTaUEf44$NZ%nt$wIIK -z#PD?@OF`~cTdVKum||pd#2dn{gvKBeKpCqC8!{aTftX8A^B*zCDR!udP{N!ogL_Ja -zD0+E{Vjqlg1)w2cOIZgXbkQAo-Sy)8GZVvmCcFoJSi6kB+c3!MiQoxNnJ%T(d -zhYm`Ek5sdd;F8v}$YnMS%yD{EgS3k1Hc(ZY6*=_y8cz~yc69)(Qz_bD%;h-)s?1AN -z0PwvYb=}53p2BGeHX$VfJB$5t>5|^YuW;&`I8*ob@?iGZ!2yG{9&K -zV*(h^y~dA46FiV%UON<@$_cbq9t=mmoOWb`3Q<-0`vERv-vaVoK -z^^_%%YSa -zWeG#Fr8I|DSA{8i*1SiO)w()>D}eAkt!%`}G&)tp7HPDFaG9EfOuQmd74PO6uG#ja -zKXtpVq(o>#UD9{txKtl2DfIy@Jw;{`p`}Zbf);2(+@`iN-amUh-1Suwu23b-t4k!K -z<=oSH8>+0OP*tFA7^^$HQ3-Bxx#3sgiLO29Bx8TN8q8D6Tn*M;%%iVi{xy#Ib#rOt -zU%~cbG+9N(*vY7su4eiSxU{(L>viazS-WL1giQfc@LWTwA0~@|2e=L5Ea+F5RqkY= -zN;`gRzkJ(r6OfL^ZKV~X(FR#n963HmvTS!Sm!_eaqX~aZf0t8;LSo59=`mp4PbUng -zNV1tHdEPO=7`}$txsr=a?+*DmiCAP2Nyg~wa=OEH#MR0b$!Mkp>HGcWvQpie{Oe4Q -z!Q!~YJM#>}K8ND8f!=e})Nqk#un%{zcNC|SSdh?ZiXfoL@oZ2s+WJ@|_b>oUl9ADp -z48Z8(s#4ovXk#M3EbY-^Xc(Z{Zg{$KHNYw6LXXq1WnuHplVgL3Q8^(P3dp#o1U?))0t*=t5E7KGt&Y9UDM<_D5pn<<t?FtA1k~d`koR`f4&QuFkBs+pX*pQ?+KR+7s#uwX=0gzedXuXLHkST58 -zD%_z?y1vRU^z36X6kk`wk1(*%YN2hCa|b$c%y*p2w(vb<;p}j%NQu*nQ`z4ePo&m0 -zfbumhEDW92BL=cZ#D_Xv{NpcfDIcd&Hyt8}L+v)}4Bf)Eudmu}n`#9K12Nl_XlMgy -zs!HLqgxApShNfZKqL(aEw`KS8ta=+9@MBuM;v^uDd9b}YMsDH39k623#=N6b|HL4M -z%sJjk&i=~eiw#sf4Uh!M{43_>X6f=|&DcbZQ+ddd!}T1f=RgH=xU_D@*rz4{NY{K4 -zj$%s-@`0p+-n5R=Hw)IhJ5vyy()@S8i(Rx<=>nU5F|bDD}(kOo|eUi4P -z6nw5^gwyxeoXxxgP--H-{H=>a`|aNE#cBe#@XDrpZCHNyIlcJ%rrebG8z~B8d2H%# -zjO!_X9~z>EG^GR0>|hrk4y2F8&oM;ifV4QR-aZXA!ikMPyIUHSWtA1Zbr)$}rgXh= -zYj&y(-*#?RE8|&aydq9qDZWD&e{l1qlGw)fE$%|+L#9#+wuKE;1_SJb@;KLi{`m2O -z5xd@*s&`nSx8ox`7(0IKpNx;%vH)f%RGPn?>*{mN7EB!0agT#^4v(Oh5PWVyp)eL$ -z3&#dPWK&CHtXym5Z1n%MO`pKo*aWUTV~%#q(`TkD2GvMJS7eJ_f#Z{7nyH}s8n?S$ -zK5&632a~^IMGCstUB8kmKKLNCHtQ_n1zm>jSSv*@26iCrA0UGO5)`S+xUWB@bu{1a -zj3|oZ|9++RzM8fkSA18(FCV#mgiRE(SI7YAt{W-mFWZ@B$`?rzV9?%zHZP5=SQE9; -z!EKIJe5C#xnN6}8=ddajB|su41uMkj{njs|5A}SVPn|KST?fkn@9nRk1ngq%fkDE7FrqAY3@P1-jzv#HD}dsQf0AFD4bg_=rM3m_Maq0|cPK=&TTuO8cK6-A -z=K_0~cqr1@*_+W;JiR$-wPWKNc7e=-yd+;g!H_i%h9WuZvMCPH6qk=^g+X!d%fZr} -z+oo%IVErP!SL@j7u;(XGNdq{RW`=J7j2bc3D^wwSFWr)QkB+ioM{w!Q0OT@6<_B31 -z@@x;;ykr2A=Fdr?YrJo?k9TbYrnQ02%^U?q-MsI&3yej6-Lhe}CPp%?n+kbG=L+Y*dLXIA#*VFB>hM1^Z9UYQ3kq1lZQ)k*#ujWAoCelO-0n9Ko5f? -zqHR2TLqD3)lqRG+Kp%@7%uXQz+=(>*czt^!D}V6hXCB;k*FaQoy_;U* -z8>$Y0a314ef|AW$e5w@|2I)uAv*X?!*-Ho%3D8k;zp-*t`*I&g+62w8dy!LQc)WkA -zMF}RvYzaXD^74+v)v#qV-BlP0~v)y9#I!d -zKCE}>9tO7DirwE|9WC%ie`nzOn;M+RY8xA?t}uVh4K3w2xhl-pP+$2c@m&VxCt<>* -zXh|*8yFdz1g*^K5fwDWp0$@fZ>uBKC0E7YdDY?VvZYU<20{*&C+@KXGTS#I0mh3s; -z0Fw_0Vcqc2+DuL$`(ab3_XU(NrczaAbZpzeC7*E|HP=a=Nn^4bq}jTK=n3B!|rk%@`dJ;mO* -zF(0}?*w;oS$*HAL=4oVu4df?W>85A+H)er*Lv+=Ls3MicYy-P9oq>fLk_k#CSJ>&T -za3B4E`d^e9DM`lwv<9!u(`qR{@yzMS1K)cizZ;L`w7-+)xrb&w1%|E#RR=hO0vZR471&JmCfa6tv87J)NY`@HSz59a{GQ(lW&r0%<*gP3Krv$X_wg;-aPgn -zkUiO)Sl?tcf(y-h{NX2{cyNRKR~v%#54Wn)7O0|S6_!v%AWv8$vaXzUVlqnE@_-PY -zJ<6R;bB*Adcmo#lV0%h6*u9FinvP5B;M&zjHbdqYd8^;(*2DXs3qj`jDtf~Vh -zVKm!_B;mZ3IZIILZg`QL5t);t&;xCbxeY2Mi -z!{cqetnDI5;IvFC7E@>^)iBaJ@7ok|no)F)pg`69fb=y!@Uv7#wde%Fz2)D#3i_)6Mw$cs#-E$||)duJJ9s~;QvXrMKu -zW;(YEAvxJ646!M{N^VWv)0wIKg#$SmVV-%fL*yJ-T7>nY;90T;EG)y@i0y>Xe7kRo -z>|#7hv`q!A88VdRaHEJs-_{|_sT@#Xp+CQyXlOX7EO;354!)X(&7DtKn!*>&YAa}Y -zc}Gs+&Q4Jg_S$@XqMS0sX54;v<$coA!+wz%%K5-8&~v#q@i)R6#MzA%z?LcPT(A-?GbQBBOfFe%9)In0~VDUr{S -z=1QRStjjTu9g=G4qLA$ZDh^hHbKwpX)}&vDRZI3hsC5AB#b_=AKz`&7$tPTR<#O}} -zl$k-5*bqzM@bTjxB&pVHv_t1=ioL=6IHmLi?ey@xUNEj2!cWZwZp(qV6wCZTW<_!mz6=zdJ{^HR -z0Na&`(ZFQMwue|mWyYAD9f^%VGLW4S6=R$0ajb -zDVSK(uD7>Jt%?#*QR}vPe<@fc`ln;uk;YXvyD{b$nAlub}CG2a$YMgW!I}}I}$TTx2qv`)pOMfS36FIT=u<(S{Y4=}U=kV3*ds%mG*u}e+PS5OPTW5ye>{dn8e*h0A) -z3fu@SlIm9yY3fmv1{*mm!5yv9Y#X=DHggV-=omsWgNlR%R2Vn}*enyP{fPg2zg`tKN(OVY{_R(I#pK -z(b5*C7}mAj8j3m8UVie@-Z7O%ax<0cE;XT$I!N*-Dc=o -zEC1z0Q&!}X1+@XuY`_S$vew&a3sxYEQKlr}FXPdxxCkP?oI$u3OBrqGF_y9Au$$ -z$&DH+t73Y=ewDq?*pd~vpi~y1m}{Di{Y$uMFP#%|DY(5)_lyRe7w1vns%=u(EcKaJ -z3l(u}e3_?B%cJFZ*S`6jrzJNrmFan;)D6ILi{pB|Lu8^5lvz3~0*oV8D#{W8pa}_h -zZH1CuhSiv{qy~X2%N3u%p#i2_2Tjhwv^739GkcV*{w6S&?xGx_ve_SR&^mtHzsz)) -zV@82SMCR!=k@cr$s@PZ0FGvO>BT`J7H -z3CDv%9%H~6QwA%Uqj -zUXZn!X^%E|Xa`>fjeW1I(}goRG)LTf@_Qtb!@pSc0~syo)L34f-f3U-UHXBHrB;Do -za~#b)+lkX{`uO|~NqIvZ;@h(5-e@^B`((guaKEwy{_@WqErsg<@KpGtt6WXh%?J+C -zV5ogx&S*vP%)TNi&ovPoOI+L&9pW=d1J@)tuBEfprExxfwBO3)6sIaR!9kwSw5QbA -zW4@bI@Fp{orVWHpP3%LHi|RmpVZ?R&4K=_fgm?O33)RE64;G^F^t}8-d~F5^ -zrWdoMrj8AOsv7sMNsc0dr(Y$%yhYs<1f(t{DXJh-;?FJ{K)y$|SQQ_thcS<>;jxir -zy;SMR={A!mLc9ABVE!vqU)|Fs7J9Ojkb&pI<`8gEj^v=s)yX0L_|Azg2-T77JWe@) -zlOZj#L1lv05edbUE&l&mRKnS>3p`JyzxoEV<7=O~1XK68OWLO))2eC -z1MQnOL9vd}cY4tXDecDr{PYeiSDNZ#xAa1Tx&UFtohj@|=^rF)Zzf0+QMKge1kU*F -zK<)RNq}u_k*u)}d;=07$MeBBx%vRNu6`0CNvHnq?!>u=fE?B|zS2M@Ec{Nxs2%;&P -zCz(WRPr6)w>h7M>2Swf>lW_{QJKsE(cT8nVYzNj0;z07c{1o;SI(M_r5x1KB1Tcjg -zs5ex1PtN6-0%YPbw^FvUv}GBDYh~^n;?9EEL4r$Fkb^z#%tN}m^}2I(L|65SGSVq$ -zr^r%%9%gDWbIDw{ww5Z-5#yG^_ISO2*tS1?_4*}+sUI>`6l_v7Yb6Pp`U<%|btCEJyfju2< -zl4-4x`&!mHB`dg@i*`#+OKNQ!m(}Ssm7TL{_9P3OkMXw4E_@!m>yyz<&r*$kahJhe -z3|+AzwLG;dZt?i`cO7B7^GtVmJrOnkW?pgau*4J-y9UXLTY_|>C(7ETFhQA%aJ!QG -zj}SLYPk4P#Qc9|HK_BNpCw8gWBuBO5ENU4+^3`qu -z>pe<)yzj|OH!e)F+(_VXr_UG@vI4JV^h4()NCKAj_3k7pq%HPKd>pf^@i6tNxIvCr -z6K`aLd6ud6%wO)({+&<(*j82z_v({jR`^LreRI8|+;!<-hvda4!~=)I!C -z0=*c?yOekZnfJ``K`#$Mre?oXaiWzj1v_{{oHAT2CXb_v;U4&KbiLnU&1>jg#^yD) -z474P2yy&TGL(8RgVu@F5oF$Bp4GlB;DC5!YdW6!VrQy&U*kX1SVW?ne8gfovf-(r; -z2-0bxRT%`3{E(YJET7Gwz?$-G6PBqJh`|~u-3+6gY_yy=-llMkUly*JP}etgOptl1 -zR41|Ja(^XieP=+H$%izY0vM~^yS!~LM!=svGRB|nt)-O{e)d%cHyz}wJNUmpQoPlk{dsw2RGO8r}wwX(aF -z87k!{KR$oV`>+=3bq)PhIB`~cS)12nj_LjT^s0%G%EQV>AhybcDkvYpx^!EMIzfkM -z56XfzZ^nu;=Bp|p7Uf#q)pQe=?b03YQ0JCcSQrLilrAp8iZLN5 -z!9#S+;rg~*QPDM`iK6U6X54jJejI)VMV78fQu^K^yw?n|4FN-bVF4OWPWV&G-DS^W -zL!7~#IBaXA3U}_OIE78eu>_}q`+FFA@8(vI>WA&X`XN66SvYunPPf~@W-Kh-k`aWI -zM`w{r1Ymb<+byjDt>jbIi(DPWZnFJEYC; -z+9mW>9x;&3P4k61{aYEg*C3R&$MJRIUSAP11htjgCtY?kvTSgRX6%!PH^UH31Sb-R -z)C9s6qG}$GyUWR4fDoyy3)6+R3VZt6(3|TlgbzWcF)OY|M98IzrS}1m3AH8|B+MTRUBW`c^H{`{ZZ4%#XfKSNx|4#?bLE`vIILX(PH5g+{n) -z?fJKQ&_C{*)+;yl{pWYx!(N_~d;v`y{(Qkyx&Ki?iXV}0_4Bak+4s%n#Ga7uAlEL^ -z=tpsr+Spd#KY#1%rM+_>?>3sA!KyYHX?Xo%TY}!bbsxh;w+c$t6U8#)rP~|pSUcp` -zpn)U)oAe~v?2kOqwD!V2zAGTJO4Hk(&(gH)c>LChty9w;iTfIO5EpGySb`xeO`Guq3lQ*k;zb@|fL5MxqhvF+y> -zJ>WD+cICT5?{T2TI%=zS)OYj!-4ds;60R1EmWIL<@lXl7n$op%S+k#!#n{$fd?15O -z!^Rwz%whYlBuZ+M9`e9yMJzi~rbWPcuFX7U)!i5&dCvtsdLRyNE4B$YDPN7fbe+R@ -z%hjsG2{Q-H8}Ph^>rxBY)}3tw{<~Gs4_H9^&5MLLSd0=^zHWseNNJsUvI6(PdI`C_85X$e&LwUL3 -zo3yy4CK+zhOP{ZvZ*>)b6>=A<@I?JQ)as*BorNX(Wssli6>ZJBK|xxcPMcup0OHHu -z7bBQ8Rj?cky^?J^ety`8{KATl(WwPkLyK_8rh}(86zg;FsGQwEakJ37Fi*Gx{+hzG -zqxeJ(n-E3me7PacQ_$9X@|r*z`L~3SS26o{ZWr-erfjAA{VI>A<49dL;8Ys`h8ngM -zQ0^z@-mueG052QZ;&d?3?sEEgM_$hk&|s$}zcsD77jlX!nyPGL-Y{Xye{0849w5P7 -z?2jfU!tA=&GiXBsFH5|Qk01Y>wi6P`ZQx211U@X_aQ7PuMC5J|s=J)yA`l}f35~S* -z$S?()wCwC_Uh}sO{LTodFP!>LG=EGgO{O&JJAh2H-cbyzT|yT(UYIgEy}H!o*nuBs -zG*?cQTJr4bR1o0oueG(ms>urWG*1e?fC9D7JCmUI+stfRYMYb<$b_}37adWN6)xI?*~=qL$kOtXNt=8OfY{DudX*Ug!EXdNmHt6$=dqJ17Mf$IrMSZ$o_9*$qT -zRlGK8)o7RT>au+V@*di4C81&43@21-ZNe!Ce`MOT3BoT&{wgqMIcLUP8|4(rE_LEZ -zmG6i@C?WKDa3>2Zmp}>gOG*6&4i+*ofr@s5(L_A8T#DB%XF1HD&%j+%lL<5U#x5oF -zpps;yB7(ZOL0Z_W*s*;l?~RNRv5gT&mXF>)vd^?AJZ!%<7Vy1^@9;nCNXX(A^Wb;B -z)NRkrP4C|&O8``4?#%;sO*y^v$;!+NFKj58kRe-aL%b^9)QDPo0Rk-jS|&um;+_i> -zoJ@BKrzS3dSBin-Z(2oKuz<4I4HoKF`or)sCOACu?m!MDY=E!#V6+ae -z#eOgF!;Fz%z|P-m!#?NU_Z+2h!v#z#a-jPQGQha#bYSnU$hVR)R{kjefI-D -zFOasVA3n>-k)?Y^A{Fe{zhQ+L4!JzbXa;j+~tpbMf9S$wyo*4ACF@?V)<= -zX@ktRZ>(|$FyQ9D`eEArEtVvs9J0>h3B?{$w05ja@|5V>dfMzr>{*qu -z5Z#kJgH*AxDw -z)g-NMLQQC_0OKfMUjh_kxn5; -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 -zL=}-kiy@+uS)PG -ze)Gdg=R)PGLt~4UdaR(lNFZAuuA6-UQ@YTM?u{#^3XV!83)*x|@*hrPt5P^t^^b@C -zdMyh~;X&&E*k4txT2GuR{mELZa!m#cLD;&}Dj5?}Bvf9h0JqJxmcT+WERaq@BKza= -zSaN_H^J8d$Hc(YZ}yjm1j-H9ul{$#=C-D(qAh%;A3^x -z)HG^1I9UGZQVOSF6}@A>Tu7kkSq}g>cWIy5!0R_&kJn|lzC=!Y7Pk-|>vsOaLjL}# -zpp*voLUL39tIW5scU{iCqP&#u2e6IJX{5+dV??@s%aYTMOfy+EAeqYH-dX@oq0oW2a#;pP|f_IYHTkLKk` -z7M5_#!N-Kg+N)0EW~J&)2- -zl)>##|Ef51C{;y`ypf^e%fMcJcInR_BGK^YKi|Kryu^`PM&&K#LpB=CoY66_sG9hj -zaV~=z?HC9{z82~SxK>+wmS|wjA8syK_=gX<3&5^I=9#muL_SW9?KlEqpX0xC5PYj1qXD -zBPRNhBjj;Pxd2ZbD08KbOoOk}iJg~kdb$1e`Qt?_FV72Zz}r#r8yop?*Yf!B&q?Ia -znk&~fvf!i8%aeF;V<{b1A$@lDx@? -zm*@lT>cWh)nu3CvQ+^!`=o5m*_S=p3%av1?dHQUue3^}JeX;x)$=AajVNOsvrM;`4 -zBRIdVLX~0hQvqcqmvX?PcAh+#8VQ@fK6oI^rl|ypE3{;OuynB=j5InJZ=?(<$a@|j -zPo^$USW4yF1feaRl;Bjygj!Cv!D;Zyync=gYO;(rWRF8i)MOG)$X0a7@O`xSjcJ*N -zfT2atv|Gz^6D!{LX@NJf>HK91R!hUjc(bQ#V=yq(L=a|H9w{!;UFgCMCl^3i2|~Z_ -zQnoC^mW)k)<*~38&xWRXx%U`b9fwWPm_J`HKYo5c-TO)d*FXAq -zwt|`+aBml`yD8?GN8iR({~A$uu3A7w{=?ixaQJmidj`9ZqIzHIVKQO>PPv)1l+sHX -zBUzWyp8m=V3+|hTpIo|aI`GhDu%Sj&GnUV6V|pcC7N-lyItj%(K(PtRw$H+j-seCY -zE5}Y~ATFiQkb%PDl|cR_(f#^c{LvK`xW#RsjChca%D9$)T*w5|Kj+f4YcJa|XHQ=a -zi;sVC%RdBF`%7!w^n=1ZZvRd89Vd1yTVb{;SG9No+^+JzN7?F8(vpO`=#}E<&S+W<)cZ_-#RN`_i*4R -zw1``ePHrQOZKw#WG^N&#H>t81b4MG>gH98Ifs+T#Bjt_CvCSBc^89Izv$zKmF7zt* -zW!H7WY`4s7W`}$U+eYb2hp9n -zy7mIR12kn6SE3J4AD2CO8!2xr4(&gu@3iNmZu94Xu?|J+VFdeT793x>Xl@)ij4vw_H#S^(c|J8Ll4aPXI=+sZb^EsRhF&#Sn -z3Xha;licRwq1Vr!&H-jjc(~MG-m8LW*E&s6+y{UoR4->PhzOD8Ra(ME93gES1ar1G}1X}&qH;!ynp;$ -z@;P*ZH*c5+=D^FQ{6&Ch0B+%BjDD?&cfB@hJuc-5%W3jh-lRovU2er^Ta7A*(_G3n -zu%;nq2~87nb9Ew*xgMw=O%{e6k^x1^*IqFX74qo{$}V@xSLo2Ix(!uhxmAXXssHlD -z1Bb+!SO_ye9+FfE!WdZ7t8=sR$%G+WPxN>3>tQrT+Az-U6!MV)WvZ6H3x!1srqfck -zFbQ;D`%q*XIs7U!!8-Qm^ZV(XKR^FEF7Lobf4!Xbc)iTy^*WEgzVgrOz`r)YL}9i` -z_<{bEFDU$B)IQl$;nuqiL6O}3_g}Tm>lFgzvb%o}r* -z`b&1-dJAFj!TYara{7<&5<}~MpN8FZ_ziW`dU$uM>qB{hjN~p8xrz=m*)U7#@?;+U -zd>MqrsyLK16w1^Qj*F-4-QoJbjN`t2yg0WqqTX#ET)AB6u#-JYf30yJPM_8NvQKH+ -zd)ln%+gwiF1N0aT8KdFk@b##=CmX-9qw=$%keHx=cjde7H{>boX1B4SH~aa!d=*<# -ziVPE_hx+YDt6$aE9~-c#MGXnrnn>T^Y97Z?zGC6BuHVS14U2w_Cz-PNU7NyGZyX$?L7Ic!qzJ8Vl{C;$)k3$~hmWq*)C|04sh -zzkmN-TygxF4e-&Sa?)f8ALS<<-4~Eb6B#h9tyuk6$%B3L*All6RQLV;fp)*GdKEg# -zyvuIsJ%1}q3Gjkl`|R1L%*9BP32dst-%wCn{*ZoP2Gxi#b895DmI*7~|L7i-%K@Iz -zJsVegB{FcPnUTTI*RwwV>#SeJeB-e6eR*V^ivR_W6yK8(%7oURd|pF5iM -z6;huY<;l|>3SZI&yTP9auQYAq0;eHbL^RW#Quv_mxhyCHV^QdUnvR0t)y9@mHy~&9 -zVSfRTd~-@5@Z(rM4+lh%N`?8PXJgx)D`{j%;&C=W -z3n+y0N)1B2VR#wh@aK7KnIyMs1Dqa3%5zDWA2f=#)i$xsGx~N+VG3#UOKS{hc)sk0 -zRLyigEbqd`WMjX4l3M%u2)1koO -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 -zdGVwEZg&>;C6SKN9bj#w&t~JIV -z9y1DsBBCkbm(11RPAmDCr3nUR6X;RdljB3^UVl6zR|$X{qOt445t%IIx4S=m>r#bn`3n`hQBzJplI^s}Ot?BorF(S6^6c^bKKK -z(C08G&xtc-2}H1M-Ds`SIA@G(?l#IIgOR{d$)OnWft;`@A%@8i_qXMfNGK -zulU6wj02$8wP&2aI*TAnR5mP$nUZJEC|3>2jK?AE56l37@gcMF5GZp|X60AL(9O3} -zlh1>T>qnT9QnGm!wQ -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 -z{n+5Epd=S0^$XL>n)3J?MOnK@cC -zr4oOHYv6(57D$MJrz^!#?=+tsZimSrc_O(%ZB^auM??!naN~SXlaV&Ve{1EdALA(S -zf~;nQ9aaEj_)Bi(BnXTQjX~Elxp^~lzN^bf_H1<+$ixBzm=j8D%hu{}YDuJK#iuup -zO}C1H`Zkc6Jh+4e0sTY*n0tU|Pm+mx!$gz+0SQlnQ^Ir>=aQ`oelnC8k(G8>L=pnz -z{!?`fc=%X(4lKL4+l!89Zy=rQkOQU3jBlNmXwziEmK@025#bfdXXxmw@mN*B(bAq$ -zf}&e~{CJy3awmTv=Y;A8e)$!tAFoKE*4#>)kz_O&+ywyZv9Y=7Q3Y=ayXj<$n|nqC -zBC9rht~YlG?0~d|w#V*iE&urIm-Ho$p1XR;j6&l{N9$z{!{9^3<%RUaYmA8H?mBhL -z8YZ?x-+WE8J#B}omVWrg$OKsdPwW&ZqQ4^@L&{BfRq*M_(wDS}X4B~%A8M@fs)XL7 -z7fNT*Yf-i22Hni^kkeMgpr8Zk7~diFyu{^@un|%&aNpG*Zrr0Q3CWo-0vZaihp4x) -zS42yH*`wq=%_xEmEkX{7MOt5rr#WDeh&|_N(?frg?G<8@{iKvm-d4CogWhktPy6s5 -zrLmA-Qwra?hOVm7Ro>^GHofJH5WYvx8dfNYJ8sm+&1^_0*haMG)*5eb<|n7A+ZUfQ -zPwFyIbr|T*VD-yB8qxXB -zK9nRQI(Gv`=zcie>SWHxyBF~*eY9bXiY)LiOmYYBY#Yc@hb5pwS^jjx9`4wQg90J0 -zB66V(+lXrId?%J(+gil@p5LAg!&i`O!x4}pI6w2GbumD561cR}Cnr#_Y+X-ha%IB~ScfAYoY9gAIJd5CX++jL?lVN|ARoVz2ueVxy5j+Q(;a&ij2 -zL3h)RNkk=Y(=I_91WAr6?cXqU8fYfZ5MUr=cL66GkV_6XGLegSH)cE9y5|kh99X5| -zFg?)VBX+Tnj_s-Lgp6I!W{Iep@k{1xVE#;7>%iPciEhL%la+}mW|UPW$hIV59O}0J -z=4i-=)vK)>aJri4AR{c`T2G#aA+o>toLzkjNXAv<<-)?d3SR9ieKT+y%%`T(0M -zvAYmwms3gPir=+?%BQs|l^rpYEh;#y`eZG+cpFVNyQSMglXg~Nx2i!}N}|i!Iz?P8 -zwxd$abtrryRaW*ObF8OfB|JajC?dOoHISUiJJiG%WDl#`DM)Y(aK2=V;7^3&#h#|+ -zDBh3i&1K&*Uk~}Qg@T+Nc@6*SqVX-mkXtgE)+XI|#2x?>+K@4|9>;`5f?f*WSQneM -zE7Q4T113aPxJBe-mo2br0Vas;&A -ztT{sQ2=gOY$<62 -z#+$5JL0_&57O|HZuv>^`SbZTGu~l%Irqs>1`Y>Td4l7{y6j$^~RtTt$wvkLeUQ-=| -z{<}^Kk!YGXzq94nva3&*9L0ErAq?`W!6b<|+~iDEmWD?%lGNsQ`Uy@yK!jFk_B*L@ -z)W*~5`NGmf94QWymB;pOZ$m0ksY2z-a4plEqjX~I097OA^#p{G4vgR^!2ZI`E&%Zc -zP>q!NwKX0ozLA03_%=v*f+L!KtU>uyYwC@+Cv8YLvdABzHt68FS;IyfZoVB1KS2}r -z29>v_#>LGTJ91EH<(DCF#4wF^`!wYNRVG}G7Ak->~1iv)UxITjhqqrFb -z_?hoN-%zmf4Vgtiym2;Fg&w)_5RooH0;qRq6v|B?AkR`Na{Ry45(QTJ9{82sqy -z9%U(Z$0CX7gWSr~@7F>_lWZS9C-9QV0|M=7>#Q27?%9$OW$m~uCXf;pORmuW;`oqV -z*TefFQJeetQHMS!`+7G2X*$O^J^5W=GDh#j=lQwtmExk#| -zBmD~fPKb^~;kaYYDtbj>hVGMEDG0my+jf9C?$|fLO`|U4%l6FP>MP*VX)-L9JeMrx -zF2Ow|G={>+IkeI7&N5pSkjTes^#Zx}UI=T71SUCq^m-9hAc@eBamy_^x&$To?cnWh -z^jdD57W+0O8=I`RP*0NB8p#NY8+y)H1yBSoNHY4WBonlS -z0NIt@88+m<2OkgT2lviA|RoDicPUBr>6tf);xy453e-`{U~#?yJAuBYhv3>NBUh$rB$fWEn`K -zM{VeYakCs13Xs(TBs(Cjd2)zoV-$4{WP^TY3##Y-%oeQ}yGHjp&x_xKdE1m?P86P? -zs;IIC;usePu(JY)r1dyeA+L@@YEXA0dg$C}$k-Ez1D@=bzN2l&PZpivH!^7eGrq}> -zTLu?*g}Ue(K^a!^THFrD&cf&n{sKm+-dQqU;BTygjwWSRnMZ$eEcu~s_2+#_D<574 -zxmcYVs$|F>%Od9e*eEheQns8T+B6`HCWZ&fXz1}ExyTEGN2_@lwaQ5b#0c>f&3L~1 -z`aqqZw#L-^{g+G$DkxBMXch5NG$d2Z=Eg_EJT2XJs=$NF+YBWdGdoCYUHNsm~UI+{Yw@&JhBB_VMg;E`~ -z9!RO_KGZt^RY0o0OR%9 -z(0+Gacv_tkIAyjpA#ve+b#CpU5q=(pvO>*0nz}|(*{Pup+JiRMoy-FD$+0Zd8>E#g -zQPh>qjfiZU4SGAD3!xaVMe)*+6(pXb5D+!lLBo -z_&n)OG)N%bkTJ -zQ7}|Ewq^ay|5GtW-T&jq>5o#H<=A_aK#+cR0fb#v={_UekRp-y=#jsGhnE~F^rFE$ -z`bLg7Rys^TEdN{u@P^WodpxDZk-L`T`iu{HO{Q}hsG;#(VT3Ma715*r_=(Br0~**7 -z#6V*O;?!ID20Ax#ff%j)y4rsJb=eY}!|&Kk1iO&-iP6&((RnUlI^%)PH+}c?j6-}p -zme3t!T;dIJg{Q_|f73s-gifml50i3YYrs}(xg@0SlC61ZI)!;PVe!(Nt~KL(>~oM{ -z4!w9%o@6CD9es0?o$ywj_UDbv_!W#A>ybVky33V@XF3^Vsr&Whsrfc^hP+SXUDWM2 -zqLAKWcdNKYbdG8E=!G=V5-<9!qX~_b0n?D$*J9tAV;f~jTi@*z-A!Sooh})Xsj_&%W1F<^b5`}*k@iDuZ`hHIf{0Fkz -zoLoVo!U!VB931eHEGY>qF2O{0E6W|0b)-ZZu3Cbxx`&{CbB%^DP1S&47*c%qc0?eDQ6Q5-bIjjyqt@rRWqgC3_ig?}tt`U5ABb~lvsTI(4en;~vU}KEOdB{wM2yP#Qsf|AOei`ye3QdK8d6vCCYA7u9~aI2 -z#4{1oNOX&?AVuh?pGTf2_VS{Ks2u6jLgEq=<7)Owtzy5}zAE(j@1_4H_!XSXSayYH -z^FHe`abR(_h5N~88Qnntv9-yD^C6L35>Mp5H_<>2wz?nL(?=Z3jYspYMZ{ZV)Cvwm -zZjgoWDHMgv)y+odTe_`uM#fa6GGX`3&P`N%BOXTXFG7qRyfjYqol{d$eY)Ht*5zEP~-6y#jqx+n!_MFz0Elh4p;66nhRetAgIb@B_dPI;#V)y~IJ~IdJ -zc54t-3nw>sI6moK?)3WZBSsh#(X`s9B03cO-2@|DYInhgiGm--*tKqzKyx09 -z!xJubtLDPkOdPo6PO=j%KNULl5K^YwJvJ*C8y({yIjIi;;xfH3_+z7NThCqC(oG{W -zARubUWMk;Z*A4$Q-)>Vqtbcv}u73ac>u;Y%FiSJ3dVFlGXXX2}$d -zTFr*6(jf6E*azg&EMzfWYJB{J>X)76I$u$j4>q{b7Lkvh95zr`!$GUVVg|dfE$CAL -zq@v7MAcC`nDKT=P_(qL1$1j3c+zBKf?an1_U9DWC0Au~@t>;2JRH;>TW12&)c4Rxm -ztdA@j4hMD#7UC5dPOj2wFKE{FZ5p6xtXosth~E%Y+>b?&v+gb{)$qoBbYsw6kC;t4 -z0(*=g?@j|;P%wvK)XpGZ}uhElhcxp?{w*gqsQxT0l<xG$v5D -zZ4H?Y0h^ZhzwDk-ZY{t;ee(D -zvh&|&vLi{%G!3bM`#JIYqJ)-q--F5QM9sw=`zqxGr~A>@zfGI6n-ussC%i3I<5cusW;t -z5qEyJ2~1%#aMVW65}vLh@VATC<4wO2v{R -zV{Dc2R+7&Zs(_0MaF&F(23`Kv|1zK*)L#GdoQ@PT1-c}=cM9Mmakk1mpA0iGA&kJuIRMK)@9e|c9(n(zp2TFcbu#zm~YIkRCBIMbS1@Xllhx!TNCIJHD -z#v=YHoz`5mM03CIDF`n7Uz?zV*@y_?W;OjwI`iDf<3$!_5JzKYG@FMt@RHpPr2mxe -zn%xqbIKbA2P<(>4jJ66o05(L5JB0g4=1j{EQG}|BZx}$8Kc{43Ll#^DvL|cw!Hr}d -zy(v{Z53yUeV0KDJm(D%9Y5#Bsx$Zd)B(tO2c!?>7blWWeFdhj7W3J!e%6ipA)64P4 -z&zp30(4Bp-1%`?-PgX=XM!>To%98ALa)x?qw?xEu7#*^}w1N=mKK5AOq9nN)5aE{l -z!}%EgaBl{6UM-LqbzV^eT-K3#g=>zRv)rq -zZVlN~&WuXL9jB$h%{#b;{suy_wP9NyEpwwbtkAP-6N+0^F^iSW3o%Ai!xf1T6s*|0 -zYvO(mTu2&Ea($|3l0df0*h&3bby+Db#@oX%3uw3DAW~X$S@T^Dd>yc;H$ICZu7(n -z*(#ne&?tJDn5iUpkX4LK_FGh((Y*i#IOT@8EGM1dgy^X_pFwS1TMkv@;XmD34#|6P -zNSU;%*T%=nrlU&4Io^RQQgz?vse#=w`D1GWm#1lX`P-x2L}Cn!CUKzW)k!s{h?WaP -zv6FS|o>KHF_j<6xN_G|!oo-M~do)(KCfY$;LT8qLqPoGU3{WKp3Q=b~)Ubg} -ziE+(%DvO0cGG(_ad+0gQeJd86tIPhZS;(`b31(!OjQEq~%W>({w}%@2oYPfC)i_!l -z3Qd?6e*gzF6cWb>IN-XQgS2e3kJg|{);oY8ZqkCJo&dZq2)+^aB~X^tX-2F3P2-8{ -z%tbcSpyG+_Gv2$TS7^z;fB%k^D@su`8p+NeZSyd$ghw6SQ?x8TKlRNBK~wLo5YUa4 -z+OV9clT0r|cA${m9CCW?9qQRru8kYPV6$z$N8MZZgMc3K0UpK4Hmc8EzPQ+K_m -z@c5pt;9M_lh*dc6Uy5StsaX}<$4yd>{-1r*AI95`FJc!?|d&q=Uy -zXCW|HP!{lplyOw?Ct(j@qlW%)^gl(0IvSv0l|{1tlYORdXr}E=ta1-L(^Oem5F8WG -z1Vwak+I}G^P8xe0Q{4ZUw2A&cmnh-exk{9iNksiD{)!eFp-7&@r`mX|(txv-Vqmcb -zWHz~CtD$+3iA3f{hm@5<2lyp9S}@VVyg7u3xMoxZ0Xd7&1P3|~?}02B4JA(+xrh*dLyhLQ6do}(YInKr? -zkP_sVW*V!DS)2E?3fy+8dQTbv>-}csO(Mkoe7d3^m$q*oA<(%zZ6iAqTR2)XZr!H_ -zSvLI0`xa5jX_V}%vm=8)5MFpEo9K7#e!1^1yu0Rm<=yvstlr<#YM@<~yy -zso4b7!Oq-Z#ApI$3>0lsV7&nsxuI%$a#X_v^HTE}T)Wix=BNSSF?WC(K}$S>=jipo -zL{5?UeKw)PO2}8NGg+J~e?9Ft5+O*m>hv~@ -zTYy$GtEvS>M3@KdU|Rs&3E&ZJ{Me*A*fdG@T~ZF8nRyKmbmC-wVQ6tWdxN)i31#O*!}>3SR|T4)@&8KXy5mMe6ZP@DvmJg~U}zb{rmTLqY}H*9ju5E9kk&x2(f71yU%p -zqJ%5}3G)N#yp72|r8^=ra~h21r}tG5zd+0~pLvQoXbx1imGloM7lg$3K(S9|txJ6a -zOJB%awC!u?7`FYKBj~zur%>s}YbQ;TUMHf#xnTB__V)xZCHok6+DHP*yh;p9O=~OiP#u7T -zA<6+S6zbd%ER(c%tO4S=D!2BG>ZN6IvLPUF4?#UZBPkgfEw{NLgtDF5aD&M=gN&;t -zxTNkO8p-`}1%XCS7YZa#*QvJa)E{Oh^1^7P^4utLwfyEDG85t3yqbR^!ypAp+c} -z`X&7l#cV5m3fWIBvP?luR3ug`oenEsC5h*3xMJIqgIhD>n(4Ic;3m^o;@LrkGsYkl -zhB!%ICgb&uW<=0Sg}!aOcSuQd86zXJMC9_- -zLjB`5tk3|MyKX{vbYKeX{CcCO?Evwnox?~m -zlD6TC?taaYRN1%4-lLHf;!>>|m(Zt<0L)eJ>*V-r$Awb#4=_^bkC`D#{g)x4PbOEE -zL+TbaNEqg#iJkPI`F!O!)^C=M+uJ|z|vS44tGyxmq)n0Ke}Fw8m_lP -zrREZIIU*ESOD@j=yG#S30RG8w-%zdbYgPzf;kzO$3T$k5tJM{F|Dt?>JKGzH9bJdW -z$hCMMA2Sn-@yyuR*X0xt-ECvg~e**%r&L8#UEcyJ^8aX{nm+>)( -zV8_Lc1|*D8UqE}{xOg-^?wB4h9mTOtr;hG&tD_IKPbD@yf+iP)Xxe<2NHc}~ERT=9 -z$%j+E;F2ek)=XzD*nAA6|04lxVu*8{`OCsX#bi2p45Zlk=;7vazIJ#@bFXD@7$Gx} -zp?1^2!!dtfKBniTH8WiX$}2oJeFofbM36PXTaa|Ixn{&FqoCoJ`tK3y;X*Tr?V)&( -zuBrtH3?-+UE%uDmLSFO+2%XGKbjHC2uJUaSDsMe%t1codzhl3Tg*p32!CMt-`7AW_ -zbZQ@77C&C`&-9*oh~-&=jz-0pdiGn{mbVPk+(oW^*Bx-RDZYt2eM=};FxcQjT3}R{ -zds~#p^aYFM!ssWB07s4l$QJT5R&3R7S_Wf7> -zu>E5GZxY=j_ik?KqX)AgUZ|_Nr@iTfLO7$Z(d#dntaK}IP9w=g4AF`Z_S8HQ!6KL? -zO6JNGVT?|b2g-L>=9aH)e^au{4hLY -z0s9+9<}=N0#8QM3$Aojvg_mRkSoXgFl-9;514=I&ND!lpi+?s)x0Z86Uw3qy_4(CE -z2dc6lZ5zjPTHuWUvUohBl=twHNPvY57+p{s0Hr$BlH`X*b1W>%LbesztDt)s!K)$9 -zimnU998DCVm_y66)bkG#y?_tDbqRkqd`M*jP{hyzv);W$Qe^SCeG>zo>t8t0M%EN( -z$>ko6lRULya$^Uclg=|7#BRA2plaN>Nsjb5JB_rGjrB~H4+#{qo`ClQT(lO}Ap({b -z#@02`Et$ZPmLAH3#j$>->d1-A)3H&xNH%QUZ^7DlfsiV8O-Z!~R1We**OduONJrDE -zmE{!|=_OT!w8qe(B<4I?#UPe_wT5jk2*-oj3*{MQ(Mfoj0zuV@uJ=v2ZJ7RFL@GYob?5s|@w({j440pcrasny)%6<`&X -z$n}#IXlVd}r_d!|p;8{{GTPAiM;Z#bid5e;w`!75h?NJ9)ke{wrOtoi(6Y -zR7p2GDX4+D^V*%A3M?OFD4)7kkSyuG4O7&NDVk5W^AMmCev;{Aqc7PK%{C;=P^3?G -zmd~m_4sQI4Lw_!Y*1%4K#*l2!(=HeymbcrbgY%5abP7yS$&l{C@Y*|Q4WrFoCV59h}BrGny#%yNQ+}fD^VJY*@$6?3I -z%fV@qZ?%;m1nF1dqKJtz0&;%|R~1XhP3Q9wJQ-V3_&K{{z&osmO)%$JCTQ$uaO=3O -zNAGXeOiU9s1jHtCaiQ>GpcqPfdq26O8wD>3XO#uujjI6KgfY_k34uRUoSY;qxIMaz -ziST>n9@ys4nc@^5BdusPxRYEp+C(`hEx_o#J5@DI3jz=`eami*M-^zoA` -z&^f`K{w7N;{S6%&)>~mZk-Ye_d^|l-V+;z1bgW3|R8TNZiRUQS0W=hB8WOslM9#Y< -z`3YcNg&qkr*=9gn9Jrz}$#MXGF5W-^QQAcI784zb7=z`YB{-tqYvie}Xe}ki_%~2= -zpti_fDns5{bunq+ThBzmBMSsB&O}v^fL|Szgi*9bU#>5>h1y~x&t$NNipRsN2L0+X -zAI$H=BCyWfrJTz))cOqsc|%Yd7ZSo*ZnyC(gQ()&UJ1Ckg@i1K12n7M^;Kh!^llr} -z;Aq1Aba{aDb)+L>Za5LJ6(cbe6ieAr4juEpq}M{olwO}!{*yaKs)DSK>5rILTu7)g -z*R}L!leO$wkZMPvGRmSb??sJPtmLHFTOVFIi495tL((W$kkHGhN6Tb9(l^DoP%1$T -z456`1E@R|C=-2_u8yw1}GHwb8C9kR18o*TCcz}8P{hM2kNFS4}lZS0-v{KD{SuSLB -zbw`SW3R$>(l7uD_K*pX2dL=R;b#B;pXW|&dJva_{p -zQD{ZAJpROf-*&}-YMy}MF^_=tb1l7f$P2GQJkh5ajYv;bVWp)rPDV;J2Zl5R4muE$ -zA_KDovq{Vex+gU4_a7Dr0f-tni;efx378k+e_VVr`p>48KR`|+e=$5OYb-vzE$-ap -z&o&@VAvB5T!lo;S+R|3rZD9tU&9u;l5Id(Rwq-_aElF$)T>jvW3I2P`WAq+L_QFqT -z(MX~}4O%8AV;92f!9fz#%AxU*K50QRgjjDM2f6F?b4UKW(s7Wm$r#tg*~fR1jjlVl -z=P|~Cl=Y_*q(|}(`mpY&PyS`9gHn8YZN=b-xHV^Hlue1nwF1k0?GM1x6kb46iWo^G -zihRU2udy9spfyIN@&07^FS2>PEds7^FOdDNk)v)sfN8aEPcL!}kv61_wgM*w>ERd} -z?%J|0f5E0Ghm6Z)1OzvEN7l7S>u%{$M<6CcQUO*ofU0w8>?XB&I=yY?+cDO&Flwpa -zsYmP@0Ss$&^?I~i4y5_~x8*E)xM@OZ<60br#Lt|n -zTts&X#9x#+wFjU@N5;6@rFC~Ma8@7gSsZ~IU{a-qY6UU*#11gH33hiiUSM6$j5MjX -z0al%Sno3wg@50-;B`_ -ztumi6*4kam;nVQd955t!;bK9O2sQ5;;9SKKKmCom{RV~?X?g*ojO52L`qeG7dKOg+UOA<;F_t&8nMO=FrqSS-W -zu1-~F@a>i87Jnj?@+Sg90eDE(9Fk5S@AwOE66nLQ`R;Kb9|0ZFPMG)TeK*09B3J;O -zL9=dmnMrF!<{GYOF10X)G8zpROvD+PGzK -zP}DqefKkyQ*v}nRHTiMqkwZ`mZh^}zfd=SdsHsW2&jiEja|+s1^wp!ymI2wh0f&|( -zm@WYOjGzf;F}ai->MF8!fIFz6J95UdJLQgKlo7D_b8oE%?x)2gBa{gKyw( -z&Y3DvQOXK;>v_u+7ZvUNk*)G?b;FYKK=YFa!IRa8N)_i7tx(YlszaGB?lXcefVSQG -z(C&@olUeQz4s;2KlaPV|r5D|lbl_vryT>lzX{zynk-Fc%fpLONLjUG6)|(U>c`~WjnUtV*8QsxH;~RL` -zjAno`9KWSX?1n>XuuwTKf4h@#)dJ%O?09-0|BnCu{3RG1%C|XM4H>$c7EN#i4TyX< -zC3wn_JKg;^;czi4hy4jIXb`>QNt3O@ksu+lablw!-HD*{P_6)=$jRh$id{DH!V)<8g04Hwsj -z0^L0{+QQmk6O(&YX=OQzSpzsC6)KI3(wO3!0gB{{#ogGZ>D@?l8RuBq&CCComXK3eEHmk?>?b9QRwAQHUhjTC91Q{=TM3uJ_ -z8NT1e=&MO9bBXRTiL?cVW*oh-7&hL~e2PEDBP+_RNYMxDmEpRYFW8j$I{JsI$h97G -zJZ?)oxa{LDnLrI{R(JbLb{-Q^)1F$fo;9;|a+?zhvJJ_N(I}6xN3#i#R%YJk^x}{4 -zCYydbKDje)NWkpl2voax)1SV&9{ -zGtvWzhfPUQ#cS)(LbE9gYT%TRz#%VgxCe<2lYPwy{$Ve&B#GINOa?>3d_oMfkqyQ> -zEG=#T0GM+=+p;@S7%e*FL4H(wY?}p{w1$x2v71bH`>}~hHZz& -z%$-qOB6{Qd;}DB9vSFRAfH)H(OWJk<+=1Tnfh+`Hqul~HWc4TC9_jHGy{BmT-B0$Z -zn1PE;*b(J>^Tr5sG%J}W)U7MIl_ZW=oDbwFhOm4?pqCvO79Vu4FvyRMc5&lA-}Z>@ -z9QJTug&z2kN_uBWmmG1RRgKkV!3)`NV97w*3Kjh9hmyg4`2A_j6FR?bKt7MH2u>(W -z2d9V=q#Ncv8ebFB*P~LPhHYew9f6j@>MelCB)82WbixvAZcZ42%)qHFf`SNuR^U%=^q>G0(Ou|yXH6%Va>FM^sF~g&%G%O59j(5akD2BNDTWY|O-C;g7W^iOv -zHqtvKnN7dz1c#kr-%(M9oJIp`P{o1gSOH4sNG^v|PG2P4nNe2C0U)<4GRnCw7#0P$ -zGi(9_zTcCXb^xkKz5i5Jc;_G+Jk_S2{h~iLJ)PC$N{nWeO*(-9LU{|#aRwqI_efZP -z6e6p$z7z>pxuO=PBKBa!o`Kg@lhH4bQ>d*BW( -zn>aU-g0*7U9V`)Bjk<_BG?|Zwm!gmWx>O7{z@BqQs-CDhXRkb-FmF*#@X|a2wXdxw -zJn=lW%)h%%kYRH-orxQHI!@io-1bG&Q32(p8N?#(MQ2Wd-ZVhk?}icNS6~||JPU)| -zYMiw`;cd)=8Sw)3#-SC)6?now)5(1XPg0}X9w=@uy&JB7UX;IG0~_I)(iq6*0w*BU -zDgq1(Q&U*Tff+0rJ5o$CGy40)=T;6)< -z!(t)AVP*0;w}DNS!=0zKJX|=n%wDkKF$EJAw0b=#$~f?Z}!36d5w6p}O(V -zSbuNf@|w|c?p*x@!*>Iag#z4g^zXaivy!bOjFy@_ZUH}q+8JRDcS|N#gPKBFe1EoL -zwyslTiJS&%(M>Ab`F*ScaDQf^cLRycyqmq1UK}R -zTjgV!;0ksn!wT?6emtFeN96O50ST}fi2(7>f -zu|Fdhl?ZcG`Y&{^%@ds>7(xrUH6P|=n-7M&ukK!UF3i!>_qOb%#Sxox7Bquk< -z45QUwD^gRcFQav-n^{Vbt5IVQw4&!_O>pbTMlUBA@7LrK#1<+}cLAWdVI*g|ErCW$ -z7Ziz00v`g(6fN3VOO`bK68@tQXC#6;+WE9Ygu6sWU5(@@mk(S04hQkeBIxZd6v_cn -z-<8((IHppc#E&T|YKpS~);-vqGst4T2#EZJb$-w~4b!B12(~Z`7xVjJjsjv6Li*M#> -zrf%1Awf2~;$M^lOfBrGkEm~(StahO=B1Ah4vqytwh8ym190*`Hl$S)gPgoz<{Lycmb~5ZC-bV{mYxof8>H{C{q0du -zuG|D;U(9`(1`Alb)WIrEwwwrBt(cG8ARHSAB67Po;Et$Cu?U{?2INNaYnmvzS;eCv -zQ@;1hDaqmAKxijT!^k3o!*?_P} -zSs~iPRnuSp*k^&6xHXAB&_H^qNoD|+0D76-n9B7DrTeAD==>5~;T#2L8xq<8WDD}897JoS9JxyRC^3%qNC82gefuxQc*$h5zwG=+-Ea1@ -z`#o)sj}JQmPbfCnvCM#tNt)^5j2-0!lk7i?a9kNH+9w(R_q_Z+GGW)y|Ertqt`kJR -zQCPk>(kB4c+THHyZ|?UsFxp}%ekkjC1Fp*SD}J#hP0#-kqBbkgCh2VaQOwG8(gpf^dJVNO2;9P+X6@#9^;iV{-jOIeG0iTw^@H$xd5sx5r{(2pLCsvw*N6h{Hpu{VN- -zs2z5ZHqF$JEGb0xkmC63r`+LXrg1&;66{*_x}VPRt{10!o*64}uy5%BCaU}5f2Z@~C&-fAF?e;c9`FBLM`V7L -zgyr$;ANk&X|MA`QIF7U{;t>Zqlm2aEVm|))F)aIJKk#e#(uMqJyCgf7uK)GJzVPuQ -zdrreKTSkiJ04lh)t+Y0_hNm+Nciay^GTY082c?V^Ztuw%U;|Mxg%jo`y3u#oWT)hgtgP(;a`1k2F(~N&(FK=CbK9 -zf}XjcW&}!=7)(ufJP#_VLzAo-Y?1fxDvx0Z -z?4wy={5v)l-n99HrHlF52k&Tq1Gz)_DX5`Cq}5mX~eW0AJ=3rgTHD=)2!Gg-ja5=#y) -zLaF3V)oDX&Xd+?T^bdEF+HEjrldF_D?wg}AuAG+fEL;&=Zw`QegCeXhVclTP%S2SU -zW86KTXKic%@RsjAXNw#+QIJ7*>l45vaC1>eVT{aN=bVWJUW=$WvTZ{F*g@z8BnB`q?1@9RzVHg-+s_EC)RXiBxu> -z24lo~)0WZw$Q6z|TVz5D@;IKuPdr -zdx!t)LaRAF&oLh|;&&A6qJ~AqNTBU8us#1uz$ebh7{`Zf*Z;LvB2H^a(W&>3j3U6E -zU6d7r!mHIETikC#yTx|{o@jcR(n$}er$*17#r}~!MuHa=Tp4RHlZ)_XX9<&N+XS>% -zQcw{YDE=BsV=i&aCCp`0d66ZT_Rmw_)v=;UI057+4A&Swhs|?!J3IOO*Bx@kN^Ax) -zDNf0G&=xc|4B?o06e&o$Y1jVldae|}^&3NXS!ixLx!-ydP#jK0qAc7GAMY$fJ1%fu -zIU8=|58QPnE~*q$mAJB2%`RyNUYHWiunGY(vn)?V%k7|f;B+Y?(xI4MBQi)gXPO^c -z{_QcFLglm=cw*hOaEYCjog#6)acD?#G5~eaSdJ~k6o*B61BhB!Vl`)R!PM^nIC)uxM8VaT-stm-bf`z)a -z;gWByx1tSF>gNJU{>LphIg{MkW2_jXjHMJirVwz)#>~OBzgK$_PJ@oq!y9o{Y^AI$AZAzrN-afOHGRf2JwFC)jh5JcdF211Z;MZujq=|=L2i? -z{d*EA3)j;yq<~~izZ$=#wj{wGz6YR-HfXKTW-z7`Phe>e>vOkI1^UitzjJB0+j(E! -zIftt9<5UCzKLDgcR*r*scjvVn1v)gBbNj9fjMOe^NJhE!wkoZ`OS$ZQCJVB1M8 -zO82*-mL{2G^t5O?P;c+fYJ`KyeG3mvP5V+(^AmO5^7%D6B2D*uT}k)rQeu} -zmfovU?AatCCDX@UqxsxjCc?6!HI-6Hm1ojYQeIj#cg)f3;Sy)H@ydTA9|;r+xg|X} -z&})&Llo4FZMg4dyOQ^r0%?4ZYE(RFTdi{J3wul&ZkN-Z=mg3e7OXeCAw5fm}nQ=E6 -zM!qK(oAW>-_UB>IVDO0Umihht1JjG@YVfU=yb!FCchc2>OQz+Ag67H9Q2P?zeb0^iX239ON@tjjlGFTrdNHEww!~JW~1RGZCuP(Rl2HqY!(?-WVf$ -zYNbDHYJCX5r4u%g1w1WVc%aKYnEEA~Ua1TOF<8|w{oqiNAHbu76IIY5;BWQR^3-{@ -zOO4Bkn?tdmPR39+++mXj7a)O^Y4|F1e*tb(=UdW-8boc7elfz${F{K~UR{x9hd$E=V!wgV1TA?N5kBI2 -zJ!*ABkvgpSg-#3XQGu^uJHHUmF~PO&VeCIWh4LJ8J7Cz}*T;!P4@ -z`fbMFxb03_`nhzg_llK*ihHu_xa9T%0|PT*95T?&uV1-fW(oUhum}qYgXYIys+Gy1 -z>aY;`S!K$kDKP7b*jHo>8N(KdJGV;_O*}R$wLtOZu{l$0ejG@TciG5AM$4mP(eIy$ -zdX!;#P??H8!Wiw!CSV{^GIbrKUb<_Nz0# -ze5kb=3%Tjrr{P+0vYHgN2WmHbA#Mp}{!y~Fe1rT=9jwq1*B`v;%rgQ&?d}(fg_Tq(z!Xx6;dJz2Iv5UsT`;bA?6h--%;`I=uyqqR -zC~IYHJ7+_96*K{~0Zb}(<)kVCd6Xm)xjsy{%~s2oRNiYZ_6&p&0Jsz>O{>7B`yiuH -zibOA@oa#(53 -z={;9~+&&pIDc(=9whjmL7eyY7=j~v7My>y-P@%kbC@yJ$$Riy?tLMTt+e(rrO>j>v -z%)~G`NOo)}RoK%%Dmsyh-@G8Vcc82wCj|A_e0^&VJy~L@xFRJ$=X}yWw-T|*f5sKd -zIyuYq1$xJm?m9533Jt1NxNWE=tQnjID`th5WhiJ1n>8?(;fh#rP@XN9_ZMs=74q}s -zbm_aG*GpzGnjt4%1T>{13h7NM=|WldsNop?(g0GqXBhm}dc#N*UY+K+Yn+cM0QUu? -z=CF}Sc9D|6BJaNOAF0wFp(p+=ZZ|nre`DGer`ciJTd2v)wr<Cqvw>wC^|y1_&)s -z1e0noV0OFCC@%sr!|hpS -zZdhGkhmsJ5Oeo^EK*$SUipNY=TNY7hQ=>;Fg%}yQ6C2+9PVW$9W+?4`YPbZk^ft~M -zctC&m9^99-`9EW%{~4r^^iGm@A{{aA&Otc7$I4Zw;Med0N~UM+EZ`-J2p&vCxx&&r -zX`LhAolLzI7|kbsg(1fPt4)8ShF2!&SGC@LAf}`ybIY!!23p7ghHXEw-Hv=0+IH-k -zpCsmnAwCymP=S=p)qTc8haLjNaI!d8b0^6gP}lXA>JPMO~yL%#fAHM -z+hnx~upP794K+6Wb2Cl!x -z6rnLkBM!pRDb=I0E>1LnF?)L(H_s(=TwmfwcW%MmGO8YGP^L1%!FMbQrF!&@7{2j-@S;;o5k%k{quAHQ2+ -zG~&R_Zhts#KS;r;pG+Eadk1)KWtE|1cMWe(8bwP;s82hJ=R)Pz_a&*Veo$>Pk;|@UBwu--es-F$x -zh5)S+QLq(ECoYEmNTyb=B%%6+{-9;jk)~wMjb+bl9N&g2YCxHhy*Wn3B52oc;~OI@ -zJ#W%+e8s`q`hf(BsFRUng$9ts<{ksS9l)jJuXDah1|^BUgrxOmB#$%6 -z-<~*q>ODDZR^!7Waaj#T2F+JwP-undFH0r9d%VqPIRsOA}jfz9JcEP5}T|f~&~ZF7}6{SagX+i!d|xkH#8xpRvqq -z-50m&(9Dk70zWDp=vzN)Hwyq`XUWG3(emcVFK|tgkbczM6R<&4<4tlDo(Mlw#`m(w0^*Z^KID -zn}-gq#@(3X!Bw-702eRm7|Ej;lMET%ZKd6SuG5?DRp1qpQ;q%8Nk12=yX3mb|KoLn -z#+OmLjadegY(LT`)&drkQJOnK2giV>+%PJTo@nY;>u}fVtL-TUTm@*VUEGL1Lf9$q -zn>ylal`wP-#NdfM3I{|P*zvp2AcGD}NzYYs_N$7Z_m3aYy#F%qD?nD_Dw7Q?Js5CX -zJT|TyQn9}#u>OkNyyM$3TDN4%4WUmM@etO!U~k$susjlH=24%Um*d>JdSNymo!vvaC8 -z4h3l!7m#2l0z<$H(xx=c$5|yPV&JVqiX%}PFhwZ$F(rh?<=lIa^GMllh_bSnLaz80 -zigYack8ZZj&y0jLW(c}&PJ0YxC0n3hCiAZV*9DC0-N|d@7&G$ywO52INgYk4!chJ% -z_B+_P+GaOcg+k|dX*8r6hVP}(ye9&a=85`x7U9B~+ulD&q}G6$e3Q}|v}Gpdai#1- -z6Ru(`Js46WhgOY>iA;#Euz}ZG -zplT3mg%hxsJ<}KSm%*LLlNAUyLDg{zs=kq)-GmSku0b8p6|3;r2LN6XdS0ZJM6j>-^Hz!kP{kAP>OD>+~5!dzMZ~nKDQBN%6MiG$acLHBruHx -z93M0TEA0tRq7Q|BA)kfCh><6_hzj=X3$lW!gS67vGMU9L)$j -zwkyg}JJ>5g*8wi!Jpd{M6{{RTB)wB71nK5hqnOCHDp{Q^LyoaF0n7M`q}p9MoC?h$Lyx@Cj<=Pl^`Dzrt*tj9cFW78mtXYSGh~pHT}z -z8PJ&1SSpXh%-KxyIi4s1G&p~lLx{5#mA!&(J58yixB)!KVr9u&FbXR`Xws&$YC%Rt -zXoJTlWA$x~pAXt=2w@#&(FqAL*841ffITa7dRhr*$)Z&I#w6r?`O;P(| -zT1YppR!_j4Wdh_3#03~myRXO@Lb8ty)1>7&Zx{__3!rhW)RLhmp(u|8HYB-TpJ-rS -zlWoMtr?zf#rrFXuzkj2;wg4EGy06f1#{!U|_Q?NePY`!pMkXUGs&IF7j>#?1At?4o<<>4TH)1`W%cj;Uy~gIjNmZm+^j!e*CU+!~ -zWr%p5)ivMA&25oIfICGGcQVXdVw|_x1S&N0ZjEeNUE8RzTo!9F1-0S{62@Hb51JKV -zcHikm;n$6=9eT>Jm8IGge6{SYNi+tQPf@OVOZBSslX*FZ`P=WW>S(k@bqEtl2r1d3 -zl{Y$ofGTC>fi_Jt*<15pKN0n_C{eYBFE!?;6V@IQSn!Q3urq~;Trj$>gH26-9KAO{ -zn+Wm&Sue(fUPs%&C~efnb&;J6dYf -zWj;4-1~+U2aBPuC)so<_oIu?~LlUUB8h& -zM=WX+*;{^mHvYZ1As+a69r#fW(2i}V%T=2Apow_Q|2dcusq$yYob=_d@Id)1Bn82| -zH+Prsfxg^LAOA7-<3Gk;?vkX>#!&s&8G?c&=lIXb9{lJm -zNFoS$S-#5B$30q9{_=r9@fo|B4DyW^l{_z_AOAi4KtU{!2tKxbePa_y8Hc2V^j>7nHFd -z|1tLRP!D(a@85qFmjk!m>q#Ewo$yEf$LQ+~@qbYQ6kaaFB%Xf%WAEdG1BH>VqkBv; -zk1ch7Q=D?HEWLs}Y4C#79PMqXh$N%#{Zq>Z$yi8#ADbo_5tyI3FGfunF7-kzA)z>= -zGSR6(+}_9`jby7@Vp|-$O+t`pFIDr9>@Ks-Qd!Evw!odtM72aFxhdE|z%dStBYp1M -z6)GO#sM>g<>qPC)u!fw<)w#4f=yM_l!US+_6i*6Dw~EROL`^;Fa=;D7whcE)vN;~exGII8aoOi^hn**puS9~Kf -zh6Et=O|5yZel3cpyrAFc(qi+mIX;yN?)%>t>wX-!K$h{<Ou0OUWAu3whJFv`FG{Em1WcMT5Z0@v&$l9M;Ks#98)*+*|ck+4h;ZJ&k?NHMuw -z3jh8$1Gzw4ILd8Yas>zv8d{2HJ5D){QHR>Zo -zB`8WVgdU1xz)h-dU&G1QtsOOwLo!t!p?vQ-+e&K=EWh<`&5-PWgPNEBlahpOKsX%D -z^eH*ouCBua=z$k1TCMm%+_l!|pvKa7@=tcLF!pIgwR(bbI_3m6RI-(jKRYt`jR;B- -zM@Kyt#-hQlk%B>I;2)YLW#iQ_0_J;L6Dh}%d?mJ9%+z(L6DiQI?mPI{nE_r>bn -zZ-$U6ZFrnZ;r$u``Hucq2A>ZokJjD=LmZ9LMR1*&2! -zaD$`!W)RdIPUrqv1Z;~Ji8P2$vCBkphM30bP|Cn+Hgl7e9bKApM#xP5Y8f&ZTyv;+ -zh#iUNJ%Ou}$1?H7PwkB;0=cqkXgS~~4gGWlq53Uh^uYvM7R>*KWMRf2>ZNV(4Nvh6 -z4dgDqf0%Ih3Q~5dk3qtR>`Z`!Bz48;rDQYjXuGpe)`oI#?V=c&HF()kQ<{F9o7$R_ -zOcIDWpf{3fM615Ej2?Z2@iUG -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 -z_}2v -zpC7$>(~E7$u*fWPwDd#<$doq76>e51U0>xFdiAjwpsy?9M;KUXwa_-nxdWXzCPdB^ -zT=*WcaCSIVq{QjPsq7z&NK#82zzLfc7KSeC5d+yH;zOM-{_z*Ll#f%@n+}n~p>~@! -ziSA)PwpVSp&$U8_fw^r?JhcHlR;6%R!)s`FNB=Nw(OVX&`+9hJR=o`l_%Ux@aT0LJ -zJm_E@^`Gur{-n5R=Hw#+52Xho%GX4*Mj@`6u=?0s9 -zH3&!KQySp7OFI>b?+5p-mGLYyUJ)m*6zZXiKe-Q6S#D$d77ro$ -zAyX*@+rkclgAsN@d7R5YfByW*I9~6}FUrk$&i@z%&ppV>1!X^sYD`bFl{Z7jH -z({`qr@rv8zfvoX%qH24OW2gF63~&eLKtH4ejC7YVO -z>N`k1DOZRp+KjAP>y`7{H#M;3( -zS8NQ1Fl`cmoAzZek}beeG_-p%?#753Z4DZ_t#&D(tft-D(eV>+fr+Cg|E-?i=E9YZ -zBZ{E4v7^MtIo2(AlKt5P1OqNSZCA{f^x*1&vd+lVu7l-(_x49n0(P-_-gQs!Gql$K@khVNjgMda`uq4(eJSSieZ`)ta|D?D-j7(}0tunc*7%&qhr33RTG7 -zOSh&rq_gbZ5wvkmPwR$^6QQpZpkC!{VK`P=BFu^&I{tS+djS3W>5nht -z`9O%C-!H&g0oXEX6#XtCpj3({6R94iV_!V4vj&9ysk?E&O>`N$XjSS)>mB`etPU{1Rf&B*MEO+;D;+h6qvJ#DV; -z5_~|CBo%oU4Xxi85p$9p2UtgL8TSP-q@bAk_5WVE2*c;GewmPLy!F2EV(<<`gM}G~ -z_Neg$3c5Ga_y52Ra0f%8v+QE-R!DU$f0P+TgFW(z9#UBvGD*WgieSQ)Ury&%rKn3h -zdblK4P_RJ>wx4O!tVA6OOfd*0+R=+QOr!;^YQowBOtQ#v?Gzorok&ZN*B2>b^C!QD -z%$eIB8j}icaLeFH=h5FIgpSygh(l@MZ>6csVXc1;T89Sh26`24U&Dfb9=$t+h*Ine -zAbiR4skC7RI1f@KE@Wn&;pD1#M*$)r&|@4;X0qjrPqo;>fc{93cHGe;+X^uwfj>%~ -zI2LhgY98W5`=J>RFCvR2%#^ZLn{=rA()K~wS_TxNbwBD0n)`QM47{j^t;$3dz_6 -zI4fJ6Lj5OZgI^DhX%xnJM2Rf9v)-Yn7>IKl1i{cdTHuZT&d8-WHTaX&Og08yp$1tR -zTFP&7Ramm2?)fM2T}JIExx%bzNkh}SKsHe2J-YP)!@Iy3V9F)ybKr&nLA1?({9T2&TxY}>%qpK+Qr -z?MY5bV`3Zx+q$}Sa@s7S|GuI?H0VSFh*uMfS44_?F?eAFpJ(f_qSeT_n(@bn5pR&Q -zx*(YutTqmv=wkhD&2&ICI5q*^md?=m -z^GF2L+=T8DvM2u{lNfJD3d3=`KGcNJvrWpPQ%n2I)7S_b$WM6H&A^~=OcVEpK&uZ? -zMJkKg1}11a0}D4KYm}_7aL`-f?)nj>z^FP>7LO4a4qjWT)o6a=nbVO60QgQWI3COI -zQ6Q(85oQ9?ZDP4@k8J}ffJp&$0nz9GA$^YY)gA>Hmz)X)4Otak)7P7)J?_x8oCy=a -zhyloarWETPz@AAXRbK5^;Ds -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 -z_K00fP4dg>G}7&1WQ^-= -zf^%iD+t^PhlX-)ndLI+SYU2fOo2mF{gNJtXRnXY?#yVX{l|ysJV<5jrB02nvMQf1p -zhR%(p*y)`PMGK}M$yjO?4mQWp%(I<2-KLMv?~s%?)FHkti|&niTU{FG -z<460g{7!MMQa>Ez`9gb2jXh?;Nwse>BWc<|6V=2aG`YSGbV!cw$Ul=eQ_-76MMTtR -z3h8WE^d4<}HCelHU2~ltK*16M1DhRIb)nhpuyrI*G8Hs(n*j!!W)db`ci2%5Y(n^; -zAGT0EZ2Mp#8c)y5Kg8E&=wNy=YwGXV0kf)c@0#Q&B6#{$^2=M4P(eWIQj($yG9~^! -zWCO_e$QG;Om+E26V{0gFWLd9OdUCqWGkWM0Osh9Kh6&7TKsWK}(8+_{kRk|5{(diLe`-Q02$^1`Fi#n7agI -z;hmuE;pmKRill{}fOOUx9pRRe%0Lde!(gC|DJ%cu7gVtoSuaSKbYv=v*C5&tHHW-j -zMik1E6JVPiC6yWJnE}}l#(n?}oc2Spq|uFf(_krW%@JJo4m4Pr^wN>qkeO@(cKJwu_6sUw<>w@`1W@lVaD@JcX&M!od9NOaYeC&7Zd#k -z$%%UcdZQ=Gil(qenXGW{k1ZhD&4LsT;FI)|>R<57Iq;3$Dz?s%_{kr!ibeVI?4XoX -z1k51gwLMRUDJkKaGcFuJ@e>)rD!|)7?<87r)2dU;>j#n~nD7>OEu%|1=R*?mw66~* -z0U~X@U*p%g$Qlpxkm?-dcr)=v=9q_dDC;szpU1Yjliw6`CJG-B?1agG>zkHy=bY-} -z(8Q&d6Mg5j5VlL<$Vl%M#TMw$NRFn2F38en5)gWMh&MIIt%@_PbgA9J8{+KYYTf?DT^m}ivJ<1cVmmD%f9z(-c -zWfh0O5=K`BGKVImHa4;k0eA&T%M)N(RZxBz2IhvKBwKc*tpvW|g_dXJdXcw)vX!8& -z*aOn)p4_Ikg-UuO>nB)p7uzl$v(1)UE#myl@cn8H)p>`2q=~e8g7o6uj89WmLCX?X -z#!8m1P*MMqRDN5I?AtltoU -zZBK@fmaik$f%^S>mbJ3Gl{zY=D?fhxT#j)o)aw?8UPyB`ds(~JypHMp$NZ{^k=4V> -zM@+WLj4P-l!Mb#Ni;_Wyzz-^fc5lXtQta?WMQU)wS{bZ3MZ|tTi5%buD!c3m14HXb -zfkx$d(`WP}_Z3WyYu;qd{l9_CQ|_F$pV$V!pkgssaxpy<*Hc{bsr=#uzAfQ+XNaHu -z#weNUDk?;=klxr!oL%@-)j=wXEm^jZU_%$8PW+%Zc)?_b9`nybr7bGAy54jXSMbsu -z9#H3&Vptg*V3OW0L69*aC~-ve(c${GTv6OLp|zsyO=e(rT7Ddf28WieNmBaWg1vpl -z;D&%97qLJUCx84YmG81=u_3OIPaMHD)`bUmSzIEh(^Nv%z!N?V(|329MQOC1SCMw)c)K62RMp#ezf_7_?CX0M^)be%LK-0S)GJ -z){9&y#q6chz>angD?y~q@7gsCRw*%(%}w)#lKp!b!q<3|HO=vL;!*dA9)kNy?US(g -z)+_c2whFok0uVaA^j?H35TbvjcWw%q-VBi2r&L+tA;F++5txddD7mu!@w?8p! -zn=BjLq8a<-;Vm#k69bCGBsG`NLsTu(`EWVU3uq#hbz#2IR$-@K+kA7$g*=Q98_^4f -zA7J3LQx;kc=z79#LhZ7xK%WzUHmt5)VyiE -znttj_{I(N~pleDU@+-X75miWNgEvT~L#dg`Y&;TgS8{TaSs_If!RMBH?918WMhyz$ -zEYMdM)DhEKlZqGmj4|F82874XM+oi)HcM-}L|}rGTdX45cX19sLAPicVr)S;{!(Z1 -z$pAWjy#e)aF7mjp0E#8KiA-h}o?03<>Ma$RkwSKf3YfMn82`{g*5t -zu#AEjO%V+ -ze|PwE%>BpprmsK8P$HW*E9Rg#*+XVe4)yktRFYPWJW!F5Tz~i&q~onx;|*{NSOesC -zfIpLuRCE<(8=@m$;9a;3G#dumzRiV1WdA374A2c>V%yx>){eBzxFq_mHUObxzFknl -zY4b3GR5>=K_V*WvHDF7hUhh?|2l)gl)f5)H0C(@C&N;|d^w!jS@)JmXWUHK9$Tb=U -zZb^H=bUo!&^#<%RW(Ztr6}J-V2W5OoB8PU=gowPzKbqMts+YG+S{*}k&+a+->_30# -z@*f_Z0;u)l``>a({CfXk_eh>t{F43l@B5E7YSOgVmo&6$o(!#8q>tGzcA1|;ov!$I -z5sabZzw8Hanq-jZP82Yq*D~~P^{9V5b}e0Q>c_9|x`(|yC;0-JL;UrEwDR~@1u1?+ -zzBMf4s%JlTn-hCNx`SNCNTVOcO=^!@{rK@)UoY*Q$Mmq#^bA(O$@s(DPumjo?yV;o -zF1i&{s-7s8886+zXvx|!zXlB)@!zB;$!7n`15Il$?Blz_G^;edANefJ&`#%Xomd`4 -zn?zY-e*X1Kx0fFORGR466~8!?y{F&vr@fnBP$H-r>8DoS{hp4f?bQb|*fea+VaXh}|4gE!Cg~v$tX9N&AbVN_oR`|nQ&!!LF_sTp -z+oK2K;I?9$aO-k!^rqVqzFXQ>9Zr}z=;MIrEo7Kl%eEbC8}Q$)LV*B>g`M#~1R-}r -zz_?8VA95F6zd~1D#3Jl@OzFqTf9iRBotnM -za&>lJQeQ_hK^g9IO0{woVo(P8Lz7q_`Uytu%GRDunpDsmucnq;#}!VMaQt -zpTz+x0n>rsii1#oXBo@Ojo+l(E%nQAzh3%$^L(qDz^;(HP=zN->7iD?D%Dw7qMrr? -zy7lOA)(r|)^K{w_LkGZL_P!X`tf_+KVCa?X`}ym`KI9ixe2k_ofE`+dLpB{ewXs;A -zqel_#4&s}Y-i3L>9Z=a6v>kOQYS@G*O6Sv!ahZcQ?mlguIHyzjNn^-!rEx -z-S204JfCN3xB=Gb4wcz5$NeAQ -za^$Z9iI#I_%)n7jq3lv8epLC6_=6Hyp9c@JuyQq&@WGUXU|?n;6BAfz7jR9)Q_H2; -z?>Wn1{(Oe>nww0c!8dj*0ST2lBNY+U#SPNJ-o%a_I(ctojEHTFII?{7{*isARY7Bi -zt+9abU3`cCwWNfMZ?P19=d0e2-17APT@nU>P3De0fZLQaO`mK`&G15(k{KJa@ixX@ -z0jVZb*b7o%>EbeD0@nFbz~p4!1jZ>Tr~#BQtT;811-x<)oPSa<(%J>U#bLNn_tG_n -zyD`J}k=F?JC}9qKy$9occr5{Z!6#-A{Q{T%Q5!fqcf{v_jT>*ET9E_YY7hrTR;L3; -z*CX{xc3JtO`~!*|sBwi(Es4BjS%ZUYjhAI_s*gtWH885j!%XkQU0icTPNqXv@ -z8yGL(y07#C7$QlNns4p_!dF6FB=C0wwLH)T`;x9Z@q*hAFb1`wi736 -z#d3UfYjPJii%1NoetWE*dfKSevyVw>f7-C3hPniye(am3PwD2wQhfhWQXRa%yHsxR -zcs{3hiB>#O^(T~}LEr^)kHA0%$zl7xX)2Sx!8caK1DtSkW&JoG{vJz0QjT6{@r1gM -zIa-reW`Rn4ZUb$0G8nesB-ILm*Q^sOxJXH>30!LRRp~;~w -zE0xgb6T{YAxaeqwlU1*oF%D>JExPSwfK01x@u+LPdYFd%Bo3uU%6x2N_$r*ndL37)=*^a9bBWx?G;7x;T}Db -zfL!J<^XFQwA+1<;A9mRI*Pu;c`kG70MI5g1H;Z7Q=oHZ7kB5TcoQp35;|s}bsB%tL -zNwThYXS8Oh(Z7GsZB`Y^Vb&Mk!y`1@HErahu|7DM0)oHq`Dr%Q2qOZ9NM2 -zn5?AENF%HS0j_vgfSMY{KWPVYQbB0{f> -zY6dj^*P16l;~RplUP{~KY!a&|@2uR@8G9s7;kuJx7BW|7+J#AD$b$d;iYM{lb&{GtoPKc0LsyvfEHw{CN%)5E!F4G+@Aj~$D1Ml -zEfrq!HwuRA?@)Yqj`{D+e^U_r^u|GwqIqERpBNs}p2F?-HOa2Zp*4E5&#LHlX_nDf -zjzH+#wI`A+!(60@0(hKpNI>w~Aq4mNF<+Z-2I7g~fg5$F0O -zR%GVLRv(pX@{;CHo7B(9hYD<9ce@FFSTgS!iKJGne|^>hrv_6XvTeT?osx1dz})V1 -zMXvBqr+$LtG0!v -zi#V=@0vvuH{`e?75;Ex1^^m -zlR%OUJq^n!on0n+(ry23U&&bXFZcF-J%0HmHayc^WZL)Zm;U;Ac}3h~ue)IG-0d?e -zj~dMom$gBE0fKd*rG9z&+A%KWfzr-~NRI`zRXw`VtJ>o@oV)3`1}V{tywgTO7*LZu -zbs$-(*=mxZOO7zl{%i02d}GuWvx;84#+fCGhp}0H;>HeDYqys4suelZNaxfD4g$=Y -zabo`bXqFH7DFGpe#OX01f$}Edb9^`VpzI)$XsmY_rsUfOK)CAUfApyuNA{XzEY_kR -zPLS!ERJkdwoCxA&pd{qmn-gT69cMO8)+S`JcL(QXGWEis2`W}g -zoDWz_cH4#=9c=!s2td{~`ui`jMmNo8Jh-SG*gl4$&d>rS_@zuDow_4Lph8_@00^DU -zmKJJa*ZZ*MIx*V)oaNF0519Z#K)%29sg1?E?Yzg+y2bdA+mvN(kX#u;Qo)O*k@zs% -z%V^-Slox|Mgni>X6Em2!z*5^p(!JLkiO>}YbIw|sNkM+mLNTKqHA#T_B;)N^)`VKp -zj$C&R0eY$r(!=5|^beT{so`)Ai(j>lT7KFsTTdppo$=MApn;ZG(A=g>s<4==q?dyc -z^?^lDwsU8hf$L)Ls;$dCSHII=ah9M$cZ^og!;TdE!@~-JMu3T0GxlZYZQ{{bvE8n8 -z(Uzm!?KYVgVyFFl1KS5G=fmBiv%KK|g;`rGLleMts7WI!d{6_6AMp=kA-^4cXIcoOFB!rJY4j?EEywYfsS>uhfW)G}IF;FKE5{fOTCU>T_gdPyEep~Q^6 -zbRBN!N2P7y_m7t{aBdOg4r84eH2A?ymUj*mCecvB3n0X|3tz8G;yIJeNZr7lgA#xh -zM07zf=7#aI;CF;`gO03xkZkRC|2N>PYR&o7c) -zk4T^u>l*O^wd$aKBnAMEsXbY#f^Iri{P$=qdJWvp-fg=`?o+3hNVKxK4Ad?c-Y+Gi)j -zfMAz>z~u}iare;+Bo3;9&ujAnP9z7W3v1*SB@@Pgd)>K15vbd&QuW*s5mC=5sxrb9 -zKjh25o=U$)a-@Zw9nHRzFOamBIMx!_`jcNhg}#zaYV(kuXr%{H%&MYt@LQ*!we459 -zcSk7uK6~1FVwc?MO$625WOA=(bEugz=jcFD%hjz%CC-~H?1kRP)^i(>9LK>oj`ZAq -z|MrQBDFmlfI=F{&&Wf%6fw;wHHOjP}G+vS@&e@=?>s9=ZB7V#jB~o#%QGFf>>m(8D -zqTDtQ7PTkJIaQjEGOWkNMbU7;iab?zv(z9%(7%3NN^bM7Xfms~SVw~5kg|F`#C_3= -zUyC!CEtl7Z4s4K_XFf)rhqi4asK+!$4jN$h)P!O~-blH#W?L6p@Qe(tW61H5rH+4i -zSX5*Uq#6!t+^%d3nWtVc6$?&?H6lL+485}Sfjj50SRvpAtIBTZK{B|tzoF%m6iO4B -z>Jhk(p01ixcKBDn^Byzk=US{bkwA -zjHmjQ?;=!6y~hBY;e;*2JTm-aXt;$c8dOIfm0J&bLzPuazJLGzeH9s^e_~Yt&^|xH -z`}>dY8mWJO|NXoCz<6qz99zNuY -zeB~eCzt_b%KYo3G-jY84@#~kq1bpqsKi|KbWAkGR{PmwVxmIzBpMT*dv>mV7w}(M4 -z{;Y51Y30xU`u-t;Pz)ga+FxnP{`&R3STKK0(*E}M`#*W`@4W}rZnU`TKfixNn1X$t -zZ}T6L^5L$zfZu#_K6dZ7Vn6&+;A>ZdsUVYvy4sg(FCAS!;|3UX3@P-7o=gKdL`Z(_ -zRJep_<VW!6v!g#Xy>luRL-KslZhzn-;XLqfc5_RjTz`#}_mm$O&CLAkTZwwPUOx -z8-=eKUhsY|Cv(5kqbD1{9Ze{=1&-Z& -zaalT!Wxxdk|NbaX*w)(q+Jg6AG5NbFkq4cOD^Eu#jm{`l0M|nl15YxHk{1RK5S&_^k=*#BY91>1U{1b!wQ=vXB+@7|CYq&UK3~a7Dtiflg -zWNn+;Nv_0YY*V_&s{Z+cV|@t>v;%A`ASJkca`fXqJ58##|a2puJQ+XaGGpsUC&3MU8E|LjW-L=9UI^i{)99 -zu`dbXR?|b#FzK(2eDSHeDs37ybR6si^e%-<+=^beUvDH^^sFx+Ja=i!*}&^JUXQo+ -zux>@pfEKq9zqbAQg_T_YOPMJR9EA|6fM%I*;pn=YhDFgS-4Adbo6AU%tj37+0+)rT -z9a(Dzj#Z;dx?B -zCB_y1t?W1?r2)A+O-IV@W6b85RTUfMZobj?l8llQF;?Cxj?-G=Zf=dsp_`RsZY~XT -zeCP6IcoBEMn&ZzS+j2H9PqMPGW4=BnKh_R*8Yj0j*J4nS9Pr%5TFW1{>K3(pw -zaLmTa9wr%zqtO)Y<*n|lDpMe=b|*^Q%Bxl@*-lfYx8Xj8eRDVNRJQRZ|nZgWuW*DSmnpmGigT>g7J4agnPXnPoIX)%HooIgbv#3 -zDDE7CyX9OpjKc+=h2dWezeqm%q(2<}?^b}D10TqNBDj3CHBO$fn@m&Zq4I9lb0cwt -zvJ86h@(=;7KTV-;QTBP3MxzYwr@C6jnPaIcYNU`1HeUvg>PMIU{3#L*fByabyUI%( -zxph*GQ$A$-(JUJs^9s9(zZnQKsQr$CFy?Ealz=O^rIU#Uw*2Alf<=P(kb48{DrBiS -z>s93A)b5TWFdEt=zp6Bhs{2)7mTGcwM7$JWS7@EJ3j5fU;!SJglYN&4z#zCzsb(HQ -z!MvRXctXeWL`UWvRn1iP!bSl1l9eDc}+sI-S^g`KH(VAD@4{h~@Qp -z!wq;lDt==pm##05zy7|699nbb+D1Zr5-R#~q}5bFF*LbuzJ6^dy`#rpg?(9n{gQG5 -z`|R)hBq*LJe!jUCjwMOnWY0?=0(W&|_FBzG!OSVY4z~0e@nie##{0GBEM}fQ8!KOC -z<6B=WKZg4C@JyILR8DCh>hcH>u&YpTSo~B#g~_cP@F=4vXQoE(=8q4)5OLG2f`k}a -zGCx?lSZ78W9gSF0h7<)p50Fz+mnW>H@@;}poX$#ys$;@EC)?mM*fa5;8=Un}e0r@G;)(<=Pkw3_uZt -z#g#{ji*z@-aKm{9Fj|7~ue+6v%&;Y6lV5o(Y{jdgX%6or##RSn{w1tsvcwRf;QLrl -z6eH%(x7*KO-!J#R(Ln#N{++F$<^TxXjZ1KfdFIi#Y16+Zl%T5?kdgl|w-G0PUDKW+ -zFr>cTmwK3t7(iC;CM~53Q^rWvr3|R=nS#N6^Kh9<4^9WZv_)*J5#WsFGuxP6iI>IY -z0W(g{R#9lk7Xr@p6LiMn*TekF*KY -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 -zYd`_%<&>5Ncnvx$bW77pW -z0mGkM5l*nFHu4c(U{6pt+A|Vd$rFIj;ODM0GjLph#QMc -zB$81}Yv1iJAB>SSB3bg~RT$@=e)EQ`%K3Uw;Zs7<&)@^LAlv -za!qI%(u(x4>yC_*LmL8bH(7K^x`E;(3jZ??1QHUx0{R3GDqQkJGh?MR^G+29=E^(u -zUntDUWT^#kO-HXzn4|bficd%>{(CrudB48KdW~m8zWeJde8xC%zX{#)y6037m*S9i -z!%i-u5VRCxoASo_$$7F4e)8f+{oU>?>`P)Lqdi_7XSxH$?X{ywnm|(ALgIFXKIc>D -z`I~$>=2%*^a82CpA_(_bAbW_-+0$?h^R$eHOT$8qAY>zK} -zh2V=LCDEha*`)!GcxbQy4B2zaf+*6VInq+kBN;|rGH{>|U(p==%J}A2r1<}ontK2m -zG*%&4Do7|aAh^D8+vpp@wxG{pPM#BI$`Z6-+q%)Zrg6>~+1zcETLvS6qmn~0;sZHh -zQ^FCGA#QccC&`Zi4WJaKc3$y|Ll_4DvTOS|e{~i?mI!WG5;IZHp0TeQR2+{(+8>w! -zz~w_`Hy33um -z?6-88rx6$$E!JSml=+YG}TzV?AFkh&m8J-&d7Ctw^8gm?J|KJ?3&cD@V_I -z7V2m}NpxLjoa9V(X1*eUS;H^S<>fh8Lim -z@&LM#63^|N=i>VPQ4ceal)|FHjsyo_{dDK&ht92Pe+ -zRYdX3+tIeH0uuXOOjC+~A1ScG)YmxEKE-@nn8hNBf|-L0sl#^D(+>#BY>W^kBs; -zm)HUmNLNldziiuaH7i!ebqTJ=&X(sN*BQOfQv^`c4%+Tz&cP^#E&e*Zb8mNZT@jln -zZ)z$o3i)>+EOC`IP5>0Ii@i^KqL?aHjBM0hWiQ%#u`RAvHc8(wK7{xR2(#t;Iv{WP -zv*Pk}WfC+O9zT>xL4p3U9e9r2wBT3!H6bll$Jc*to{d9}W42SpuioPF`sPJ^?c1xK -z&oKMNgzns1bA7=q_>vEL5n7^fdAyj5j&#MQbN%vORmYTTYvne&rX2DMPbB!D@-^Wz -zyBG0CdO%40UU$BdkEK`7c0qBATkl&|0s7ZesDJ=-B)?gmri@Yv-S@5%18K -z7nqoPdVp{*?~b*}I=|=)T1N3A%^3n80_a8V`@k{?NdTJN3zj7*Eo|(3jfUyDs_}AL -zEp1O;h?idjROr>Fq7eZzy_^?1fOtJfn3Tigxy$}UP4RX2RgBN|@?-0a_?Di>K_bmQ=q~K5OLB0ZdZu}pgfP4G;tRd#R55N~&2fj~#xgXj`+@SZefjR_l9QSpX$lc87 -zDSw?T6tCZcb;y=kxpJ6*Z{A+s`2*G3aw8XF%9ktBml@GC;nb3k!017*&rh$6HvEef -z)Q~V{Sl=ZN#rbszfvJl^XaN(vzG(Co3TFl8*Hs&FB)OBgb0lOQXcVU(Gpv`n&*X=50{eZ|W -zAD5iu#;XT)rDJa(_&+E$k@#>Tk}D| -znr&cpk3YRJOn}(gFRO+z&9_(IjUm$2D!MKmdSG3t#fu|(GRr((6paJz)p*f~qg$`u -z6*|_&YuN7-OZma>Lj`43nsF6PM$xVXsG>F@fkw0cIzYcvaZ;2QAdI*a8=-$fou~&m -z%AxQV5}hJ*zsV&Qj?9_Hza0W0kMB#w$HG*!>pPeMT4BANK>yVG1PyXb=~GgX`BbIk -z-9j3f+_t3yW?aC`@DaTY+H!Z!Or=x0V{G%~gz@QEGLJ?jA-NCa3=VVywJYl3&oFb^ -zBAxdL8oYZ9t31^}hOp#3+xYeIUa+su64igSTFUhJtQ7Trtu$A*If+LOeVmoq)y?)x -zTd$GJ$JhqFCOO#pjmN(dpBlm>cQkCuP%RQ;GWc0E`1PraFDS4{q)(qE1m^>bDIA%#efMKN|C)&9_DUTix0(WX+r|E1gg -z;qLkf+h|!d4aYqyZB2aGE1~Ds30VL2cC!|JJU}5PGizv*TP-)Tt$#3>a~U}|L0A^% -zK?l}cB?aoe5npNilV5o7-xhcghW3iyvJT0}9T_9ORT1!kdj}qOWD-EEh7mo219c0wdFw>(Kd=h1Ruv61F&lsRcAh -zLROQ*rGD9DhH2JeGTWzoy*J%dM7f!Kwrp-J0S#N2JDR<#YmfAPAF*k -zhHNBab)D2I;GtdOdWAU~TR~itt^EFjuCw&Y$wLNGZChyh(k0#M2sZu?-HdCLh41)f -zF+sUgs^+cA=l}R_!#%xb)Ua$!4grv`&uB^SFrpPZf)3Js%6eJcI5Ev{Vv-__VTA9Q -z&gDX(tihaH{&-orIaVpujgH+hUD=PnzUvdzNHZ~|tt);>K6IbE8{UFyu`ny%$LX0- -z@@;E7+n+#uUc#5wdTsNG2St{Md|Fwt@Sd2Eh~8vD(tx#$L`~d)_(~>p<9jVLVmc}N -z>2wRzRH6yEap@JxH^QpM3gi{cu(UOstf_p(a?FtSJe7@ARxR!^ot@EekdYja7KHZP -zdyt*HNzUe>VyOzxRFDX|sj$rPXCro1rnOEMYs -zY9OB3-iFlI$Ii8-xmikd$FeA|5X3-}mN?0XnPz6&g+d6Vw28cv`BiqO>zZ9aZe1kd -zxPm9=jd`1kDu-S{1iP4|s@!RFgQ;K~L`>}uBTeDEe}KAA*QjT* -zF{MK{Zeck(*2>MF(W(^$DvQCL3OZ!>2^V(O8EhlxFKpsph=yy2eYlNQCPi=m-(zz+ -z|Lnu&JPY}SYdm#gzXeIm8<8i;E)tbS;I?yIne!xJ2j3N!nZ>0J^S>;&kWTA>#+KTD -z@8rmfMJ|V^S_K1v;xTa9!UG5dj0DDO@@S&6?(nNkiz_aGQpIBi6@p+}PeP8v@C?*= -zL5LwKOAj%=P3{}|{>Y}(`rL)>b6dXOmTJ7;u#6A{BlC;wOU`@IqzN^Lg7C;@RMw@g -zv)m%bd&#j+xldjIKUbqxqJ72&8=LX8dU&~5k5?qoB%5gZVx!gA9hd&3y^ZAfgycQV -zxmGDgdf&Jy2G1E|DpFYx$vBJyFs{$1(HS#)0%irVS}nXd0!<0_s}&iOYP^x76j1?3 -z4?lFYFtotyOx=)tN3u%IRY;4K7Q&eAy)tu?zS88Dv`w454r;~`9T)Ns4&2+ -za`R#B+4qesTG1g)=T@YV1vCF9idjzZ$5TqL#^cKQn6bYkZuiLowOj*rAVfJ=x5VlJ1w?Vp1`kGo^n10K>u`?l{~_~$mLCB -z;%wGZ1Ul1&?Y!Nf)LD7)i)T*tb9B@!e#~O_zojv7r3?A%s;J3?}Q*pE&49~?T?^YTK{9-3s&b&ss -zeB&cA3XtVXFB^oDt?Kg;q%7c^RCrtR=5%Gv2mx6(ety!7O4A3FP#nfo@ckg!gy5`n -zH1X&&OqHu19w3UjRb%(050x=gotpOfeVemTrw|%7xCnIl=a(DY%WaHNf^t->r_OIVUY2r?ql}cJqe; -z+2NhtO#1O_QZ7v_k>YE?t;vgeeiXhlXg4ja)tVDef`KN-kO!eP5xcFW0o?I6@bQuSH~Rkx -zh~GK3j7F9_SNbUYF71mtCqTi^4y8R>0UJF>-&z!ob}sxf5&?5O*@?goM8n*A4}e(_ -zW~=?U!Qg;zexjcbOLNiXgF6W`2i0T%KS<`?^9~Yd>6*ZV2jgvJ($yM4P;P;MG@==b -ziGGZQf9~epNkh3C?V1HhiKFXTJ=X{_qgr*|Cu17>_yz7#sAyxTI8Ybq_|@sH*^X}x -z3nNSj`?#TZf+H&wgk%#yjc2I&jUYkqr7wh9G77a`q@;J@GgkxdHd2?Jd^*3?TP -zjPPS)A$oE=fiUZhAMf4ZzwRCg@$}k2k!)=5AR|_w`&n6_S#fe!o!j0a*;#WDZ~H}9N7m?TD;nRfqKwK -z9D)C=Qfhl+vo~3wn`itAdB=DJ&~?@18O+6)t%3Q3oc;zx67GbmC4i3jimDzl5rD&s -z_cpoo5aeE>1=SKZAhhWY|B<4HaW|a7|xKsw__vuM*)3zn2_LM~i@q=1%k_hF{(7JV_)o~d_n62N#aK8=@ -zD~Xu>GBodZ+@;(ksYp_IlF#cvOkNAGt$KSY9Qxx!X@m6E8+EziIBY|>&A=Z);FiJs -z-FEh{^7b=zvM(TexgYKj)n -zZO5n6t9xJukw;b^r$)mLTIpj;t79LHTX1yu_~f+uK>~1tbHsN}PG4FXpOH&t@lUdp -zZ(@brvYEh{2y#Bm6pM0;+9*ebb7$)(+${VA3xug(da~O9%KbVntA{z*Um>!jn`jIg1B^Fjqh!kd#5N -zo;y2heYL!0n8Akyxx8t*cY0q|Yfg>^Comz*(ddf?bJH54O7V-deisvu4@R|(%7lfG -z&8Fp6!o05^zqB#U;5yaRs_jVntNuOX%5;^EeEdL!>ylYNem=+H(3NUr%3p3 -zV9V>!<2v(8Xpt1SK*UPSNg@oo;YW0PIfP2ye}DXiuaOPRjl^&q`7$+c(f8lq|G^d0xCW>AM`zLh1Fv -zRXh9(Yq@(xvB^Vfz_9`t(JE*mI(5o-@51KLv;Y{>*$Xnokvx&ywzjI8CKXCMTLd@G2X`51GyJz!Zu>Egf8c8gY8{lu^t;+o*uRFmb;ryHom!&M1ZquL+yHVhky}CvuJzlp4Re@ -zzkW%#;^?{8hb$_zqja=h<}eICR9tCDKfK0>uEvyNOEl;Rr~9-I?@`(f`8B0To@?l;8ffKx?rGCo -z`UsJHbh2TElDOmceca53+=6XHYk95l_GW%^n!0`QDG3GFSykaD*)ecrrG#AIA8O;j -zBeg8O2Yme1%~-eihjv{6S%=@)O;+E5?hFoq?4uEQ0PIdlUZQh1AcyXU)2&XHeY|@S -zztUYB)~I*`|H349aMZSeEOl4{DwO3>JflB<7NNFn;P|`H{ASL$MPFe*7n2 -zoZhk6C6OZl?U=-5@;2=fzd^j@sM7uo -zQ>QU!@(ckHLUtE`v;oBAa3d4Bcz2_|qpf@10N8<5Dh|^FZ9ifc3oF^4N>Iqy^=y`i -zsu{mz&ITsfw6zXUepKs5{4!aY2xvxGRf2a*62_r~`)>}6d|2t)%CV=r*^*k#p_4kY -z$JH`Ay_JS(+D(rTnV3mfAKSO?bmUC{{evD{Y}oc#G>NRv9t>m>p?%cq#2K1iLnDYG -z%{2e=f!q=_&gSD`I+<1;Nm6*|^blY2S`YW_i%p=kRcO&bt8R_wl#mP#2QV?`E=v0$ -zy7FnI{r>x>${4a^M`vBPs{*)nWKtp_4$Bp7+~60msS>*jA$K{IM6UQ<8@PU2D_GeP -zKG~u|#;Q-&l8d*|WV2hkEi`Fo6?Q8iq@^UftgTb<#lk!)#axFPC{kr*XEKL<8dk#d -z6OJMh9asa&nY=?yd_nfGx}Ac=$pG?8wg~=2R9@_9T8`rVsNP)mEfe~XA6qEM*^$@q -zuPz$jGETYWrD<)_eMjs8P^AqSY3p%JSR`nx@QwAhSrapzOEzG_X@y%vPIlQCs}^9w -z;NA=}phS3$PrA+R?pa3vrlof%1k9&9L2VRxB7piiuE&}q6pt`Jf>qy)?r{Pdl3e-} -z5}VQ}xQ%avgeN$- -z>BkzJP_<^^cze=@gd>YoBFcmgo|`pnwBhF4!Jrg0VUMs52i>Tpf95+)nR~K-S!273 -zydihdH!W11KG5KAMRg8qz$w{IN}+>Ub-)kSoqLi)`)rS9@=&0TW8vP%c0A(fb^I`Q9dk}SRb%w!@j_y&GVs|W(lRn6;JpF#HSv1M^ -z@pA%knLHpcptjBmlj@!=DN)vrD`WyGQL*F-{V$FW*>ydKwtPBKj)VD!8Jy19M -zcxLNIY#DiHB@Il4_u8;dz<&F}7Erebr7R@zL|!~&TxBO(7UI*<>3njk#PEi88OnY(C>ukNED7c=B%Pu6lUl? -zDVu_@o4;)bsO64*0|+%rM80g#?5(~6uA(NxV##yKQtlGmQ^sQ`jGRsz9q%l&RRNTI -ztX4XZ%kYKKrpRTIvq!HNQ3a9+4H>uGouf-og5M6_?nbZW#u>72Q?jwidJFX=Ij)h6 -zu(+WUeN|XRpr!P)>P-(jj1&43h&ahpf#k>)ClJV3Kq_7XXc)2T)4!_ao$B6*4yr6TU)- -zKfENLWj~9mPdgR+dm#@-UE8lf&UZF{$eG^n?nyF1y9tn8*_|Oq{(B(upd=3rx`+@S -zP_nfccRguc9>-f1$oU$990}fQzVq4}J(L$DiG+ -zIHU%3H=>=+jfR&!fllDbZs|KZc>HA134SA!1~B8B{J14^aaSmjt`U@BC9ievaO^CM -z&X6#moa&wB>Q;Z=m$dTXWsr;2si8`S?6E9j-j9vqr6gs` -zDWXjS!sussprVEz50Z<#Ab7Nzhf%AXWI&7%U(t-`yRQ$F{Arg=z2ASyl%SXb<%d=r -zFZDw*#f`s^wwK& -z%!qLrIWqrYn;m7RL)pgm|~-N`IapB&3Vy+K;35=C9v+=$4wNnV7+7s~cXvb0|58QlZR -z<{s%~#8wJjbf>Lk7~Cp9aDt#moz|ho5PQqOt$^OD*Epx--N|@xk$kL{{5%-DF5qd= -z&yV!#X6B32;7?XNWD24aTGKKUx`DRMYu)rGHk^Q^a^4OYF1v|}3UPT!Q9C^IbTXjg -zEmzu+9W=p2XU729DwM&#g{WaZu9+aIQRKkMLR)XBYY{i;<0l#w@fRDk25AiD9U2_;INW7k46>kPU>l1dKptEG$ZXj?a_sM1us<7nw)>CR<*_WMXsdhFYc1$zLJzdTf{hHd? -z5kNnvY_uxGQF1}p^jgZhxOQU4y(fbOJ3$|!jSRdl)uEn43=+f9vRW?mG*7^Oo#W*T -zNmLMVCyqO)t}%tDkG1jW!R?}v-U3~Dc{>DlLu>s5BgCd_#&(Cc+@<9dmsw5NJmz!H -zrdOl!c83y`e-9tcSA38e@Wi?i!(3cGNqA~~LEQ&Zw^lX8FKuSP16v#Zi^MJ{*3|EsJrLaJMvHdb=aDXr -zvQJV6s`<7lVC!IYvB}M0aXgEOc4irJ(UG#h7qvr$WBY&nKmHH*|E5>g{(t}P|9ijh -z%l3c%um9C-wa`lbumAo3^S>>}-lO(`6tfH9@3Lz58F7Xbg1kqM#06Zt$zx0Z0P4yo8 -z93+ZEZ=AFynTJkC-`r#;yj7?Dc_aIM1;NI8q)&(La;4#!P6mzYem!|=z73rL@zZ!0 -zb>EFBruW#^DyI>aV*);UAx*T5i$3dU(qd)&H01QP;J4#E6x>DlZ$r}!L -z&Z=LQKTJGw*<8r;7l%!A39Lp_$_1r&Q&?$>ODbflEKu;+Chh&4Rj+oW_7K$DB`F;x -z&-eA~PU}d0CX!U7s1xMBl!GXkFCy*mU^vR+X0eQ9iX60?ww9wPCm{d~tF}Gfu~EqP -z?4vq{Fn$~K+OgaZ`{|707S*A%mnKrafAOyCRcOuxz@UOL&k;X5ncWcRK?i-l-_rvB -zfwVSfRgj@Dz6i1d2fQT9M#6kcsFB^u0*8ehX^)1>mEffAA*jP#qbW>tG@u@a_};x8 -z(Mlm_B(S+l$`rj6NTJXi^LN~+g*k2+-(cW8% -zMUy`9OguFb)}kv&Av$X4k>H8Fyyzh+d-}AHxWvS`n%z;W+Ap@RN_+l$>Awkv1t&3< -zT_M`M&q_=@SDbBeesWeuH_(4XpG*a&{UvBpFZ3=bR$`j*zyT>@K-rNK3C -zY{jA)1K5c+cN17<)b>VY1KE?6`;1oc&Q9FTlU0udG1nEZ5h+D-`jDpa4VD`F>gdBr -zk!1em2Kns{0Jg>pxT0I~4Q8@HUN0R(8BgkEbA&ayPhC=OBo^+RvMQ=$0D1ER&JJ4Z -z<=e-d-#T0x67q4xa&l|;N&dy?J}0X`r*&lulUozGR}n{*-??KB>7uh95nYkseL#`V -z%uzdDd)H4%O>YVZkaW83M1Q{{sB_nH!+HeL+O9EM5-j{?Sb`&7{eVJyoDZ_X*yF}T -zsUw1Q#a$hWaMC7Em=yn6D7>TebM-qpTdS}Msv2sg47k`;?0aMTU64VMO!~D -zvN3eC1}r$URCBqXZZ|jIRDA4@J>gW>H@de&ACn8MPIlnsORgKkKt`!G0dX?+>6{%@ -zf%K+q!g*_f`J6B$ra+r*LnD@mtX=De5x+zjt@f#U4wZg4flQa8U65m<(uW~;tz#w7 -zoCl-ygfHEyxiB^pM=ZIU>_pp7g>F5>lIeDj%__x4$5=>C3PS+EOfL+M*eKi9b0@ZR -z)QAiS2p2N<7<%$`!+*`U+f)zhU!T9L-#`BP+o#d^`}2D>ysr=cPj#1B;cPfiNPDue -zY;U>d43BLf;qws3`qS^50o_i5Yptf6?)JqajiI&I5p`Ss=MVOY**fVJLp&^un*iQf -zGDV}7u_2u_NMH)~0r@fuS&WzB9zUV%WoNn0SJdT$4Q?z(C=(S3-E3h>1YM}QQ6tUqi{KS^0?kJ|bV*xRD_1ALSpRzKxxx#Ba4Q^foy_>ctwVjtF+7unst4f1}GZq*wj|yH$)TnV-fVMyUR*7ym2qx7ry)avF!C)e{gMy2Rt$j1E= -z2ZTw`c!6Xnc5T8jN7bHl#xg~I;Eh2|SLKy~SoP1vp>3nd-7;E~MqB0#?YSM*9(HrA -zydwDpdtq+uK7@yM+PlW%!fdClqaVU2a#X3Q)NN%Fo_+)N56KKJWf>y5;<;vtaX&we -z7}RZBL#9K(=4Hj|w((4s|JN5Q1ym@0eE%-k;_lHnCrLd9ClWxP_a7V^LpY~5jVMbv -zpc{eg{I{9xND_0owrhwRxeF^jibnDVfIB6kz6Jyj_nDm=Np8?j(6&oy2UNc`i3W)l -zDY;FEHjw>;R4x~rJx@?jk?e#wHUKXKaVqF74OTcV$ek7c3>_KH4+CxL|5~tu15z`z -z&T75Hogcen)OUE}&IlD@QYck9+89r?R&4#hVcDH}!%s3ZBsJ|=GTx+u{Fc+zEF!*A -zmE_1cTVr@uA63}^|p*Z(}HBLz!=Fv;$ng7`>)t#Z#NLrqLb -zps%(2V8fSlMZ)qrLxvS4w46`}sHKW@QrE+QT3;2cBn!FB-C2JKc{XH0d~w&Iegeoz -z0KvGi2z*MnHCHRq-0ypeehVGgCJ13RB0{)XP5+Y4JU8-qkvo>TvUNzD5 -za{Tf0ChZ(_XCG{Vp;XM17150m5Uq%^Bzv8lq25|95$YXAhx9M4AVj#2J=V7<*=+_z -zxaA&kK88Qsn?YUqSymRW?nqwV17zo;CDBk3;{BbkGrcm4^D%?V_Fy?pk`m4-378TSVJ8OcLfg=-H -zJh4KyQYQ>FieM&YD#;zB6C-o~7Nur%FF*oLNg=MsNhdhreJajpU|ZLgL)CcrPj{9> -z@*W&=C9UeU@v*Y$s1k9GcVLTD-M4vaV0TRZ*qXp~X&P7l_GmYe7{j938|Zm;Qq3u% -zu&Tr8gIVIh!A*{w<@dQNoTiU;TFvN3BGE-mSP8CfPH{$z=ATsk%Ep*TM$bCqB< -zjuwYP_oc-jK*)O)J{ -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 -zwp$I2lrEB8R?-(0_XlL{kGCiOa#64dshJ3455 -z0}q>F3{ZdLw^V}Na7YanD(B^IcM`5zS^R(kZ@!y}n1bjouHb*NSLp#%=32xy3 -zkng7KPC0U?yZIXubVlgAWakGkdZs|0Y1LLWRv*C?DP#Dn~>}M+8 -z;-XOCxrau3R~u|%a<3{aDMuA+070aJqj5DF^INn0M#me9?7`pq(1^^&q!M-?0A*@Gyh}#jiIRW -zJKWjuB+qoPL)@jagUNk`N%zcx#9t7VU< -z>vkf%_q$koHK}7R$~`6#vw+Ktqc`rt#ygrwam09JMPU_b_+Z^JTu}1`V-jCS$50iy -z$YYMjZHWihd)y@jsL{;oZhy&^WBO^@Oe+?$rnF9OY(fdPfwnR5_reVcgMAzU;5e8~2HIRqZN}DuceJ5uE${*o>2KI%LcKTBwm8VYgAD?B -zu~Zw4Hc{utmHZp4Pp{YbXvo~K$Q8)Kb7!1b_^ap0zSG2o#A6OkUcui~o-GAf7N#7F -zh3R3&b|AU1DHW=?YaN_vJc@%fRhV4#;z$X~Xu -z!E=YD#U=m1ZO&&~T1QHuMR`2PfohL!v*=MS|G}A`Xamvp1N_Oq -z?NF7u7mABQZ+w3oTanf^tg{tpWrda&}}}DY2a%#SO9XY{^Z*u1>U0D6ivSS -z$<7p$ZL#e-qF`^{7)*|4C9{LNbtQk235w#t~0_rO39GSXg~<6knbEMK+PP<<&X;Ki%dK7$Vwdmsch?CrZ0@ErF(OaLse73ly=Xcr;JP$}n4-Pt%qh^D1|Iv}P=Wjk7()eQ -zVLV$6u+}HsjCnBYUBKNqrou=9PdH{exzFH9YINHJ<;n72g11vsX1qa*bv{GFt@kO!0L#KWGF~ZSCI{qJNt~3kA8Mr -zPJqP#R)l1#Z#@HB$+8H`vfZA?bc3Q%E)ULva92z+8)!}KQ2^F}l}^?a>Qbb&3c*6@ -z4Xu028T)(g%VjoTM9b1Z6P|&T9hmvvRckz-r1;{K79_}sI6Vx=Y30o0zEOIA$0#Y{ -zBdGPm)!8t-O3r%tIP_f&fdEFi_V3@TgqlPm__Oi)zSts*lEK0PgnVz1_^0=SSoASw -zC%oHwhD6clk!Rt2f)d&DXvMB~h16G;JL^uHJ4A_~&rgo}33mvW(ICReD*`Yiv*%D_ -zw=MWlHR*!%1hIZaexHri?u6q=p76q7b|=l<1V0+I^y(5iMJPpC$qoP8t)!Z?>z5E{ -zOyuhRFsO+5{#{_HCbFMa(J>rn!@o-;XPPB4;&i#A>JfWpVgU1kQb|A$tPE+Xp3lCy -z3snXQm(`_)BlPAnfW6GB=|ZkyuEipN&_1g$M=N#Wq-f5EC)RUa-MlJ7jrKs7+S38S -zTMvC$EH-$oBm+sB*1&GXTl_ah`X68pF@b9@I6i)KE -zmTEIPLM^cMe~=&VrWBps`)@!RMA4dnS!npmG7;E_+fA`?{p^kR%er; -z-w<$YxJ^hV67BOp0LzPLn -z=amMd0=(k<@hc68C(W5W?)z~erAE2mo-@LLZq%}>$CzoHjEoV4P{#t0U-jov3go53 -zuYyJ1Fs>GsIMYeRL5UDZopB}Vs2JU -zp|9L3AIk(+uqzozfIsr%>C`(SXMYUHe9g!Jh<_Fo>=pQ*?p=iY!#$mEe+s~Z`R-Wm -zleN!p-nZgJ`R+t11&7|h{UA&GNk*DjU#ELa+QU?Z?)|5JdmwWq%5XhQj0esT@8lai -zonwvt8M&HdAoWr|g{xxgfmV(`U}KUlJuhoQR!16oIl*(kCYK<#P;t5ofVvGMIWubs -z7+SiZNL&*55KyLQ(YRU?qUo3L9|bid5!BJnryU|RB{J%2WJS4d*a~+zdS6yQZ+Br! -z4hZ+Iw6@1F)%Y}?ZFN2B55Oj(GD!0CxYPk?Wy^2Vh9yhBif3W9(bk&PZ{4jd10@+G -z^?@M984PF;LsD<)N5}-)$a@nf{YO+i;6~|L`{lC5S%w)HIiS`L`ljj -z0u7n^EtvsfknAV<{uMd7Rj?{VM-C`g5;BjoiE|+_&iqpJ$In+8Ue!N-{QRzF%{sH) -z#&6(LmHc3&hy$SB?OGdo7CUe~NEE0IJM4!MTQFFIlw~w^c@B5~D|%fWX8Iq(E#(=H -z{ZZ@vwDD^|q(e6{y;Y^?eB6~dc&=(L6S9bZWypBLT3brGxY6a5uugmh9>I$It+EQe9fq1*duT#{e!?}dna|MAEzDPN=i5pUu{`$v03rxDL+4F%0(nC!$14!Zd^OF9r>Wy~JVWgRl$;yJhG=lpW&4;eG -zp9O|+{CZg&_zJ4;F~{;vqpGG)Rum6ssOFR2#rv=Hp~3Lf^X29qOOr0}t^v!sk}WVy -zQeTC%;yca*kH#p11KhGriU{kloO<}|1hR;WdvxSWc=Ur^8d)(Ttok_ZnC>h -z5dB7B`Qk{Q0O)FWyQjao(bwQ-i>3IX1m_KCDbug`#g;TZ|3`@0r9hjcv++kUE7M6E -z5Kya+>(Ycd{SY|F$G*ppcl|1AN1-oeE$SuqJ2>17S8%Ad@bN=GdNitna29YI1xm-> -z2s)v5*hShcQ$Mn#5ZObD){z<~*AM%` -z$B*ne4aaO5DVhVQ;M%s*+SnSN&Me$^cd2Yx$p=U#>s{%+$wW4XL4tgl5w}+)awML6S|bQl_(Sj>c$lT4A{_V(ZNTxNoq5)g_P{%z2rJ -zDz}Qe=ku%${~zA+z2|I^PDkzM6nG2jVmB4HD6i2pgC;%-;t^(*Q -z`+ZotjN(<~8i9o8+BHF=Fk`_>>)$GQQ$>8^y7@8P#(@a+WE>yX7{d|1gwPCHJLbYA -zQ{D;WCh$@?O52kw@N`ub;DrDg_6~>S(<>=c&1Lt36iYulMBsrSE~Q{e9Fygs#~_i) -zF4W*?+1{YTrRV~+CswzAtu$p;U~NbeBz7|W*{RWL;oXzlknQ?E7D>cu4Jj=3{*iG5 -z*rkiIR8VTQ`eTdxO{lf_Hoyf5;dFP -z^Gfb1BK5>yLov)HV7Y|3Y$GqyPtFSv;`+D97Wt3!{@Mhu4iZOp8vW-z*teu -zK(@pw$qw3k=6@j$Gmj$vNGa{w(Ou7#Vzqu_lrD?OO(%C)Z-RfrIY<;ti(5!@~IL+*6PK=zd-sA!!XG!L97W$-za&ub_KdFIUM -zL+idhX49mc4+9shn-(srvqDp3tT&DcNiqg7E*iwK6_^6B$ZG&R3-#bNr=3#g9rk3E -zxMHOR)oP}hDgF-`qAa6&{YH&b`h-TgW2Z; -zYxVtmk|hfl(lCgCq)WdVzokYbff>FB0EsqerqK2;rVLNGXbr8WXgsWFIMU -zHyIqhC*PVAKqB_%VbLh?h<=v&{rv;ei+XBss+JTGtc!P2(m+P0<%bgH$<^gn5+HSy -zmRxy+xhD2f0K*P`fmA*DV-YumS9dbf3dGcp@8qu|8cLq&0hnfvOruoxN%q52I5?ii -zVL0z$PD}+CAgxu<9VN_(rX)z`^b}m12P_JRPBNEKf-*AB2S9`mfUl4gG>2>&_t6geRBn!&>mPze -z&GQ-Nx7OFd&k}w -zgLrCfKa6R82*0HhHt+&GElqf!uRWOhC1YM$3j`ck)iC|wQ1TqWm4o+GFdyJ=b6^2f+ET$#`Y+*v})jB7e6h`7r -zGGF>_M%=jVPMY|+W~=v#j)EF{vg^3k_5%C@GhrMuw9T(yxl(2c`)WW43kief$6u1^5cyeU%A^f2>x$S{WDFUZ7KuBzOZ7}VHmk8f)#b4{Q*3@5NRM~f$VDp4qes#2 -zpNVCZfp}1oiq68BPwT-f(D+oFimF$w!Vw)1&{oZm6;`@iHqY}&WzIfZne^2REn0S{ -zGn9O&wG0bM>D#9vS#g${6txFHH=H1D0%fXEvbKDK#7!Nn!V%XW!Xs$L984U+w|WyD -z$%~L0rW74WaI|>cT`9|R&wuUi7dC~JR4L#SQf=XM^kF&}0DyfjE_Lj*SBK2$JFT#F -z6E`SpWo=*D4X-Do*{-zjIQ#|B -zEU*ESYA_6ZCw)8}$Pu*;csr^l++{8Xm|@|Ei2s;Ew?}s@8af0#HonQx&K3^3)9m)o -z3a|s~?foH*AxeR^X;lk(`L{=6DrNGVrL?w|V_K}Cmv2k3yBOSEDkK3>oJfp!)ZMZE -zQfz3z33(Xs1VQvR -z&K!6^NB17wmo)Z2W2FBXh>&zkl6NAlFz(LLH@?TpRi_}<@BwP2XKg9qC5zAKyX -z?3$k>=7u3Y7o<)Bip*twMmdOk0nPHxVNwsAQ>>`ZSdm{6Mm9_q04S1>EsJHi5mzLK -z;v*n5Uo+7>A1ZtonR~bEt;pMmZ41sUwd(0qiGjF9HfF35&`M@>i>BlXy`;Kt%zZ*{ -z;=D;^SjVJ`(rpR?O7ilH8>VHN=yxIf(cBz{sGOxFN67IL0z;j5eU1sFKKg5|@a#$j -zt|&VCbCI8vTY)8_9R(2*0p6B-|NZ?RVNqRZkKYW`LjYtL)`FKr1!@9>?!caiMTnkt -zMmXa#+7WI37PD)Z*BkeD0_OWrUSVtaL_=1@%|uA!RT>&T_qBteKxQG{9(PK{I`YMZ -z=6Ty>wF#6Rv>ZS8Z>i7iIo#HJrkfDMZWU)S3tT}U2DqWLRj!|2y0;e8ulzu-2E7I@ -zyv7uvBS#|+LdPj(qp~hebbc{WdmA^;wQ^io;zoCF!QC>B9*R$UGd)ncV-5=UFi53x -z9Ti&BJru#7lO<6oXRXRbEhDH^O)9`qOIu~;MaZO?3*apJV>^Lmz^zRgJD5Sfbc@m4(Y>N8$tc$riUV|iD}D)zl;>W -zTSYYDz)WO+IPN=0!Kt6j4|975TyAA0p=5UrZ%?IKtLJa`wb!5z?2`Dm2{Xoh0DyBs -zf&BfYC9{*~N=lo0+R2z@URTwvfuBsN2h&aI~k>#EIq~7^Qmi8M)96D00hA=eil826t~d -zOwhuW+t09YMuF$#ST$K5>8CcQH1=FeJ)((=;b$7u@$QK%e466AbZY!g{!Uiveb(L< -z7$dBdX~pzW+hyrJkYay>Z*`^=iViLSX={cR&LM`I%5O^B`=g4#G+d8TzZ1kwbhWQO`42i{6iu9Hw -z_f2MLg94f4i1?+zEnT9w21v^fTQ|O97imrbkXM4F$ks0Qhoo3^iA9SrGun^F8g-ws -z%xm2j_vp~fj@tA-D)Z-CKWiHcAYx}p#0sbK=EyH_O_Gp))Z7!$LfiwqA%YuHaUHSr -z2GqT?D2hf^U6uPluXKpj`UbYmX98Y@KN1yes$CBxCqlbhnY40jCPl_*=4>gP!0c!Y -zYfdnC-Z|Axaul8jNAp5Wdsdc7oWY*RdDWxtl_k({U6|$MA2quplr5BEYW31yR*-DN -zO5~e|4z0%BNa8_DvylK7FXbEQyD%Pu`AhlDRdV*LilFz8AJDx2GQ}%kRpKg>4fH%1 -za9cb!E*Mg=zb1J8irnSQOH=Lj4NbG0f(QH>ZPec9g1c?e1k$pgI$qbkCcaeTanb^w -z$T227izbj%n7kpDa_ZV%z{~exqam&`TmA(=U=sJvg(O25P**R%cg*xZ0STffJyy+4 -zdNOtcr^I=(xL}|u+638-8xp!>PZNQYSZ}oJ1o4V3t;U@b64V8cFc84ar(fVYU -zN_B%aJF%toT_6ZJYd9_Mx=mP5uIvY0Kd -z_!g>jEc%Z&w$0CseKcm!xo%E-3}q!-pkF5QuYl79aO>U4YvdR+^8K|}Oe;wpO{Kz6 -zsxS6C*tpteH&}&2=XdEaq#1_qrO~`60+Z&6`g#`O!kOFNKS-q30G51{ni}+DCX#Vw -z=R^0cqAEQYOCyI{?#+5D;>Tq1-HHyG|FJCR5o50!9LT0UZBda=9;GDRD_J$7SBAMp -zOM1fpV_geGTooXy8ej&g-a!W`y6lZrMWDt>-BpY+<1H+|-`Otb2t6&|0#1o+hp(`K -zyIW9c5Mzb)zn5Lo7rU2noXCY0v^4?Haf+Y5k%HZX^bkHlGe**qPg%aZtWhB#-L;UK -z43;6Yy#s{YSy>Se+@%PyNF{UmA+QA)_oWk%7P9r+#}pe=s&ADq*fHSLZTmyL48_He -z_)tC1;wo!wi~mMv9AYjW(pExb4BEvx=3M%tq8rPX`9CF@m%-i4z1eBe=Yd*ITEy~bk5g>NGR3b2A1Uw$J -z|0=@?PNENmX(6A6%Bl=yCp{YLsVx{{w`^#mf~*7G^uC{|pPAnkthlFk>C(G0a5ec6 -z*-6t$s?pj(>$2IT@n92Ldh%r__|EGe4u2elm73 -z=dV-{hndru=4?Ds`)A1gu!9g_D{6TK#&()g5pe@Rki`m-w_t2lK+B{}XJvwngU|+# -zO~!iLT0I}M*ATlp+SY2=q?Pb)cwi`4_A@e-ck(74lB6_;;i$#`tY~R>0+XVK#k7!8 -zT&<9Rd&vZ|85j$&n08;07lbSyTck<7bHXqhpce4qS}7t!7eY}N2^dK7xjxadye6ZF -ztxj#$em6$-f2PJ^NAga3>?WC02QxO#nb6;nv8O)wPY%%4M;pQqU)!AX>~7{$NxAJolYm -z6n@pB?I@|Ra)woF@;n4@g -zm{I0z!)9>9raX0Y&>dF7{h%$rziAnZFVV>4le(S$V~`$~N#2n03Hj%yM$7kc;iyPvBkJo`8XOt)L2(0|kH`fnfRs4C;JpA#0F@C+_sa-!_2mUzYax7s5gwD!kkw?q7wvY%T -zn}H;Pz?J2zEPdRgh2t+D2>6~6naLpEcu~UhGWzk~!$1BUrajvjDnK!;ao?AdG5Q~u -z#_-FfMX%iyfvfmH60v^{ef-DR^_shT`E43_Ipg&*`ybc%FA>2w#`~5517!Ffkh;8H -zP{w}z$Jon5J>1>DfB#in4m5VJCwZ86LKXENqpvr_|3&Rjc)1Mob^85}y^jwLR7Adx -z?lH+cw$%MiA<4O<^a|^wQ43OYw6~=cl8n0dPpuauVT-VvB?4&WGF -z5skaZ=%hsaLt;KH -zrhA}U;3n8QUJfQ*{_YUx0Q(EpU)kia{Al6*^8r#KG+V|dih88|STeaNM<)Q_-{ixa -zzRaU2WiDy~koZ8JepwEKBme&MJK}NNE;y76T+@=sO5WJ2PWf0S8odEG!csi6eHuC- -z#pH4g{QKVw-2!ppIN_kxnT!l6{VM`pm3TC4^jI28bTeF3Yx!C3Lq#LDb;EiG{ffr~ -zUNK`u6=MiP2!51`aj)q%ghyaT=w)lbqV3J9SUfL<%_igopD`s>X#Jz0Cl9fxCTBiTJNbD)Kn&c~ -zD2x!5pt#5odZ>y44XL_)4QE}qcGLt8$y9lS^1bIYE3G*Y`qsO3L9+i17GC~O$_};x -zad5QHr>tnZx(*MZ2VPibwbTP~*IJ{48bsg8KiS2?*ryR?>IuB*m=nBENlZfi?8tC8 -zA}C259rd6{P}w*d4zGlgXjs})H`^$Djid1L2vH9rZX+pKG60P21|hR2k{+@<>484o -z7pr%_878Xq-*FO!_iF^YI~rdZXFi}VTALOOV>lY5M2kQHdPHRU6EObl?nVVL`(xV` -znu^iC4S?>OflhNcof~Hnuq|FB@*h6ME)$y>Vj8DI4Fjv$OhZ<-a%r*|Av5`_WsqRd -z%AwRDb|jwn1gB0O%fuHywJD+q9>T+2NP^rF#j8}gc)_HmwvrB -zJjFM(jJx>$VZz-jEZLd)D`2ElFhuM-_Al=8|u8ZePU#S;AKZKY5H;Q -zW@}C|Ng(Ec*GQ%jt@_e3dh`*-&o~0-0V|f4#>w;w3BbHPP|ME2d5@sRry$Crv_V9* -z0c%>xsAj>1!V*m6h8X= -zEqb>kIRtICB>a{t+4h*FMq2%uYrzLS)^&hRybh2gyAJfPMI-(3T17Ix4A9oO4(zYj -zAOn)T_A9Igs;YKv2?oU^KX!%}0vk+am_4%IfJ%4hG_mNUT^o{(=yt{C0{Do<24#lj -z^9_YMAWbmO##BsUXd-q!}?lV7|%s&X8Uy0luj&z)CL00rM0aOCcD|-u -zP5-?A$~gEHdIxMyn1mb=F!nmH0Dmg@(P^N7UUsAn{r;tYgZZ!ac|T(W?S?}CMA{qH$L&pq@I`avYPIH$w1IF@g9w0#D2KjWxoqX85 -z-%v?^mh)1emgzB*w6A9ALjD!Snj`AN$+aHKU0#8YduI7|zSMEbM_fygtY^9f_^rG& -z*c9$scpY;_WUBgwWT&^gAdySkn^x2FIm(<@BZzib+Q=!WL5DEq1*}6ydIx;NGK$7& -zc6&3{?~@%C7`a?sh1zeG@2+V%+-UsC1c6mrL{5F{oCG^b8 -zKtah?-;Q1{ghVJuu;eS{xoD*j)p2gzbD^CeR?5R+TTwgQ4@_HM6)zb#G}CT-c_TGm -zaD<}CRX>m>K2gQfLAgR|nyzr285)Yf8ZC<^!Lso1KrSs8D7+Q&v+@(sz=mq~ttXGq -zmt{|NjiPWI>Q~8b9CNix4YZ$R7;7F@DuD5dQ%#iC4t*j>ca|eV#&;&y3DQc?;xgwm -z@T?AlpN3%wgea+w)S;b){gp)#SUIg#v!fD%tODT-P2Xe6GY8+Yw*Zw+=k0nW9lcC{ -zf0?8}E7+l(%DP6wTBGoQo}`c!#c1((WZFG37sW41?nqhO@`&WpNw|cKG0=<`2Yt~G -zpix{eLR%WAeUe5~;(HknSuT|GI8~%eIAuF8#+w0gHzsYt$1s`=4<%{R?J_q>Vv;fa -z<{OmU0*o)Xm-VWnT$Jv!oUw7Vv0$6#^ga;I_cI}i$4 -z_kwpG0|Evg|&5G`SqaSRytFJ2M$h-{%AYKv$={%p{sYINAg8cCbT1geZ6ZW^edoXrOG*s -zAdHCgg9?~5jt1ubLU_mUTJ&@lapJ-MC!iNNCc?y=a-N5Qwka?c`sV1u+vKbxeB3oU -znCGg)lA0M|1q(ku}4{QE18KX${`O8}EB28s2 -zwSjUBx=l9flZvoU<|nO}>cG{l&pnd3>9j5#)FaJG4qvlPvyFiByktsc-G-<)y`xdP -z@=?sszA$O>&Z-4dtb(8 -zG97iL_lWbXs>8C9py3sT*I77Whr$}KRmbMn(mUp0yNJ-9$pcEyw|93(&zXLpPFlIt -z8i=QrUa0(eyS!N)E1RNuqy&qVk#ZBr$O7TrSYI1(f`HyJUw?5!dPis*cqEWiCb21{ -zpT)0+3czf-Bmmi^)2MQbLA>mym_(W0^&S_zh;pg-l9`ad}2q~Megy+6^M5@%EBH;zHbCv0acAe~Oui*r}hp -zt22hTYpeO7*Lm3SNFuiQ_-KJnn-|5I&LWhx2*L`ZeA-&ODT}*Or -zX4-!4LR>!4(yWgByfn3nY@Mf*#%2z`Bx?^=07t5(u&xGzO1C;^;8r@^dO63y7HH^{ -zMWqiREkNtZW4u+Zc^4-i;i8DA3S|RYA6hpo=hD+pwXD-(b|zoZo_N`faBE-;up^wP -zX*2<>2Wnc~AjH1@7%R5%#J0-|i1Y*}_SJ?#9eunSZD_T|80p$#r{>Z8XfU&Cde~Uj -zc7WBAuBubB7bRcQ9hoGyOXT=OCe)XO1Sf29+LRkeKPUZV)4ru-n9dDQM9#``&&Ql^ -zY<72v^_E(KHaacyl4gYLYz#OYrHAt(7ZUdFIS&>7J -zZ}B3r7FP$rJC&jh#$28=pv$~OB>*4Mq0pj`JUkYUvC(iqN?1eYF2T+jU;#>`MMvP{ -z+ru!65;%CqROI!5G9}TF@5jU8(Z+M`O9RqoQqT^tBRRZgH?d&`t>IP4D1J@IU% -z{1T3^b_-7)S%2~Mw%**UWji!Zs6>ee0I;xLlby5B8X!@3K|!W5G8$+b(@Ri8_+^L@ -zw(fUrFL94C%w>+b#(pPT%DRI|)rY+`%wc8NX8eu^x1%aya -z;=F@MAis+Xodk-F8prSYWfr9jDN7iVEu}fMxhl-rv*taLtk%r|WC7&oX=Ni$rqQV) -zwn(Ebgv;C{gyId!s`xP1aLcwQ{i)k^BPBu`>XyDE$EEt%NU4u#>nXC62rb=`6tqAS -z;x@IF^8S0o)Ag^CaDysoUR@#?E$5!r+gN2Sg~|eT!&u$njY@EnOAbE^PjnkVEg6T) -z)nJ}l_G+{)V;+4C^>1;?ubayw{|LAjqsb~N#x6#!bT`vyz^BD^U#~;&%vvssA#4hm -zg4a4q{V-V!Jix6GS3$qQta29%Roe1n`{~=38-a8*?i;NbjW)=t;>htel4ZMtc{L5y -z9L@Ms`n#M$6cbB6N{<2WemP;hM3T)s$@7i@#_~1n&W&7TdUwdlNyH+HNHRuWm(v5T -zBd%7iNJcd+2;d)gmzCm13>L>F?wMyW_9Yajjr5+QriY7UgMD~_$)h-(#DauQ -zQv?Bxj#q<{QP-y;!G{4@l8lg+WB^82SC!fZLpziDWoeH#L&E~qmcz@Hs}W8y7kgZW -zEfbq>o*WxQjLHeYP(ao-EodIHOx)$WmeRVscJ`Ls$nM1@&dwiuS%JM+TnfE<}W{4AeEPO&4%tLxpBNi1YUKul1&wmSAYrz9E5 -z9gl}ncr&$;W?k|LQ8sE3amA?q*5y(x2qSHov@0M4NZyeBb6qwo_){%Zk?aWmU`LYT -z`uu3hn_g@~20~_;qctZoK&G^TtZG~?a(5sKdkbGScKf=IDtA(~n&K>B)G52vU -z-NN^fg|ow{A|*~QPG$dKoRM1F0Q%RourPF4j~K`v5g+Pw@sGc_rF@*q-E@c?4z=5? -zJ9H2GvAt@$eXbQO3?yxHqNEL=tSW`e8eT)YI~s>+i{7$G-Pgm*v+8Ydz>g{Nij#mu -z=E3~x7{P@H55S8_EAxSF{R^8IvgddwIRh+{FE&u|G(Z$2^RJkjyQR#NHDePs&E+9S -z4!3Kdo&y!g;nKR9;*c5vAYJoGIEpPT$S))n^rm%`zF9EnJ(!N@lIni|X6&Z*N;lZ- -ztAREmFSqJVfmjcZOL%Z0ooUlCgwHDg_0nmfd -zh>RbNHxgG8i(&w8mDw!fsy3zpWvnd|c8}ie+p(A-`T$HSnpJbGl!xxglZEc_Gu!2A -zmp+g$qh~66;xxp?OQZa?^hw&DQuMiz5l-LVayIh;V5yn>^0zLI?YGBp6srk5!yB9K -zwPE@_mh|EuyYf^%?xZM?<*})|Grp(%eQJmv(v%J~vx8lHIuJk>KgUp+BhuoudWSUB -z2tPLd?Cxn)mQ_~t)?uWznbP^j?b)e1d_TBht&C@x@rpQcr5F!g{K*ZNN@yF~w|EGx -z51C3S*cNtB8jP?L%Hv%B`Sa&bM(%oN+TL-4-i}}4i!tP<;mJ6uEel|VM5XyVxVApW -zY{AH3UH3Rh=kN&n3Bm0a6b@sBwQ%kLMmDuH#mco-(nkMJ+w=*nja^{NGxlh=K7D4q -zVqlF#cty5Y4=kS?(@aI(ecT^*`M^b@98CU<6)EUJcl}1L_~?Vs+iZ)77jzoBbE_1^ -z7#M=Ie}E1GXi%gss_5;jrDULgad>vvMl -zpSCm2lrNGbz@oheZD5*Mu_lV6lUp6D_?3EaWH!lWT*9WblmLsI6|@kG_uH^eN&ppF -zQr|%eNx3vsVP<62T9cgLzOhu|<^{zTYZ>3gJ+ZM9YXE?ft-V8F!hsaH-=A)ILw^>! -zJp&N;5z1&C|I4R$2MRTIN3*0^ei?Qk6~XU|*|AlIUB*Un0$vDYwtQE5)K3RaBGwMR -zxq@OaXlaum+q5Brv1@^nqM_ZB0XIezXKT>VZM91QWi{>Ij*g#r3rrO?`ET|7HW#jR -z98vwO9UUbw&arN}h3wDn9~f}qX}e;+qz6|ITy@5xb{#ASythAs60nQa^R9b(C(noT -zjH_P7UBRK~%?OuKN#+(?s6=uw^Xfyj1A~PFWkebA7+Sg$9gDt(R)ED<|0KUQ8=?)# -zOKlB0ij?{29#Dv8x1a*P?C^Vd&qek!@ld3Tvp1vdczScvZpX$o>;jnuc}c#0f+=em -z4NY>w@%mc!1_gcuhzBIVb9N?l?H$;%?#fFm^EUmSExev -zUb;2)ADv~>j^NXq0m!9@%oDPms>zbMI#nV-(blK_B)uxE=4mkpJEe{*1`5yJwi{L -ztGfgdkR(Y(o<&3JH%7#qB*y`sky{3QK@2GY&;l3Y5$mL!OMrcKikbtq88AdP4%FWyj)7Br^`K@U*KA_ufnSO9k-O+a4XpvcRg -z`~osBZhL4jD!9QdgC}K2e~*whVn`wYr4hfCrZUH~{yk^`8kifHRJdUcEB$%&?hwvN -zF)V=TCF`cr78xKrNL{$_mU#w{tKuD%hd?`zaWrAcCNDnKDhq@5BMI7Z50C681d9al -zD7oNRy{V0Ph!bsuW<0#eDl$Iaf2dUnR>W)#K}GGOmK4nEC&QnwpEn>NGjQb^x=$oA -zyqcG>nY6#GghNXE2K8zgLWmaps4r;l-*qwYq6+dLBOn3*?bLePvZOj!i$lY2tIW15e84Qkpkok!s@zU_Si!=I68M^~rt -ziA?~ovc)MZe_}8A_26JeVU0aehWKOcy@3#*2(kWoE3*8M`g0htq=5NWS112!}fe_dYA8pO-1il}3b$VYw3u9VUWlG1k4P5pa -zr%CgjSL^927=PqG+@-H$`@ph#68#m}fKL``sq=Y%OG|W7Wc(8%|gge~~3Xf$?OUTy%p}KA5jC0aw8?|7=ha0wTW7-XCV<)|ChPXtHsJr86j0v}o&6uu*+^gQQF(DmreM&pRM97Wy?NT>4t>g* -z8v*1OK*wkHu-*aJnKV-6)o=wu2*bfKeIuqtLqVV9;iQUnUk%20H;_+&9%WT1vs=+2 -zQ&Rj0Og@8nlQjen+VGsem3$MxhgdhM0!YLX!ax)&xP77RtV?o*4p$apoUk5Ub*ji! -z*%<-&${@br2LqZTu&e|6=38=i=WaA4DkQmL172p6L4L3zqM6AZ5}Oq;y8xbQpg&*X -zrkLV$@C{w4XI#ZZNU1T_-snpe+?nCKmp+n`L8wv=^t)cr7ciJ -z%Pg#+ia?;ShGbni+swq2vgH9Kym*v6o93FpJMjig+X1woE2G;voHkmR@ETk#6t;* -zOz)yyX$k1xC$J_AFN2=$c-jjiiAQG0mf(xU*3nOCUw^s`>c}T>{W`ROyfC~9(P?FA -za|FeY%p8Z}U{kiq%;GPRr+v4V4#VSZyKU_%sNl3rDi%{{E7efawjBE$a;i~ulV3LR -zS_28%{vcl}vx-MVb#576T<8h_+pJ(L2a`^MO_bw5Oj<~E* -zmKI^XDu|Y>0SnFWHex#=G~XV(BD@%<5^YmKZH5eGIov2R(YI|3ODYKzc<3MBO*Awd -zSQcCic?X|O!{*KpS(?Hf&1x%XiFrp(;lWN(5&GJFeW9N+T2F -zA2d4v_+nI-5nw-ZhvXBkymC2$1NzLMN^Fd!aQOK7HxgA_Hrk={G|WO`B<}8l<8mwr -zI;UESqdTsp5H#Pwx;-U((nQ)+2kFI$Hpan`JY#L)b;aJ`W13Tnf_8d%_BV{HhVXN9 -zgWGZ*1KtnS7+5O4WUdP_imJ~SLTFf@O{ -z>k4;O#~hgaX<4l~KG;2)ypkrq`L8-yB)2Y2oaLBFH)$hT{7Pu;B1S8;rW#xTbAcd^ -zb}8UIwgTgjlNL%YMmE(G@MnA^B^u=O4c6@fMG7>&mYGaA2MNI$cJ|SW_qZdWz-Fv% -zK&E-1C+@W?BKo6sw0X7P1C$hG$d(m(T;(v>%Sz-bGLL`}Pf=~*@gfBnOhJyEyH`tP -zuhzn>0DXltcRf`W?7%X=8(h2Eec-(2S{Zu)uFi$EFRrbgyTeTInpg4@Cp-&W04~w= -zoX3)1L&^LK8%})=;6IE>-eVSoZ-$f#}KyuTIf62n}4Jp03F -zP8s>T{OVSoXg&1zH!-`cg%hR<{xjn8e1q=M1dorMPj`tk)|FsX|Rbi6Wrw*fev`A4E2ZRRnj>e -zeA1KGxM-jooRHn6|BUaa0K%M3Aq~W&_CZ_6vvQtnkaid+g?Q^ju7YH+2J$_#BdSPf -z#{=n&yQTe~PnCmP%}(&DVZH^0Tz0HCq&8VCNvAW(NJ;E6 -z%ch{RR`Hth+ud-qT4;@e(6g-g)^v4kIUPoyPF2(Zgx~Kup((@S8KdzzVA29?Zo}Oe?m= -z$qxv|N62lDx7_^5d4(JVr#I@g45(Wk8t5f;l0kvoa>;)}Dx^g~P6@i3I>3g?)gSVh -z|~&0V{i-F(xbULa8i3LD#$(6PWPS-a02l -zQ*e8q?ime2FD{e7R@qz-|r%N3)*p$VqjMorGav^8!vGkcV{ -z{w{Er?xuX9vf01hpmqFoe46R7#Eb@wh|JS#BJ1CpjdS*0$UN?lgu7)pZfwb!mQSTi -z1~|Z|rKNE_WTSGlc|{N3a8{=!e&2A-!F2UFzV_(z6{TIZOdmA<>s|b+ -zZkxy+u@=s_!V4;J&4j;va;Z4;E?gs`F+>!7(>nRB03~2$e1H -zYQ0Txt}J#N`{`ufZg5fWV**ueydZ2d>mF_J(2l+e8vEW@rwe~_XwG;H3R8w_}UB>OfP0ljU79HRW$OTxPPdsn5!&5f0p`C#_SFMjVx=cb2^n}UYz_e% -z52v&f}B=xEazS8&xJ~Es;&03WsG*VIv$gy@<3bZ3-$$$KU4z{xD1(}kLY-Dj4MD3x< -zkQd5`(s;7|ZI`2nGJ`rZ_8Q{X4VV(`v3<7D2>`7+PHjqA-pL)2b^h1$H$mE -zHRNDZJM)ryxAg}{NOWayC?}nBhKj7^=V|7q6^SXnLs4r$uLMBfw>qZ6Jk|w8x`E^S -z+}x)X09tGC>8<-3gwC<;Gc^b-h@8h0sS{{QNR#UAVT{8Jo+H6k%6yW6`z0Wq(h~tw -zw$fxCc~2W>A54jSW_8k#NpPg2U9zn;@?Yz=q=W@GbK)bnY~YLIocU>!>!5hjb)s -zx}SnNo#TkY6khx@X&1GQAo*&yE-TZ^pe&J0b>qb(>x~2scl=B-AuRA(MqhMJgd~t@ -zUms2)L)vP;#;HsP9Dkr*tJ($z5f -z$wte1<9!Z&{IrnGjM~1rW3tRk#X5;Cm-{SH^Sc1LOg^OH6vWu<-sNq3F#`TQB4hp8 -z-dda7<7ZeT*WRzaj}t^AKyz%%a)knkV{*2)4vDZXp1_UmG!o$M9JUek&=jWJDhX~Q -zzeB>yN(})Uj6Mvc3{6UHY+WCMB5wip -zDnWg)2c*?K`AcmJmGnl|Pq3^mwp~7En=Ln2#QB+#`qdh$^9}(Y6KVAX;>EiepQdzz -z)+4SAi!6PhqW&eh4;jH$r~Gb%ke{%8)xGB6cwf17t^j|hVk2_qnG0QxS(-B~q*V7P -zhl~X&4!3hin1z4yCcv9o-@<%lA4jJxEI?0S&b9Oe5+KH7IBT_)yQN*p_xcErfVZLP -zz99m}o(v%^SVxcp75n!rYh`yUOH|5Je*E~k9OG7~*DVaa@Z)UuvUaZt9n<@d`Bf7m -zorjf=U~HAiRZv2Lb?NpNwSo>2ACv~|-i#Gx)8UJX)ZkFHl2vhTh#h_sIY10lBH0lJ -zh8BDfsbVhSVkRaoq_`wf`NaufTY~J) -zpg#MJaWU0LR5W7Yx3QNvyYQ*1gH#k-vTPy2hAu>%I6!Z3f5{9z=AVa3Ta;{dz3C<{ -z-K9G`pw2C~ureILB;8zs8Dm0F0*L6G!}V>sqN-~`Gey~r%oyyn{5S*+x-4Cjr1ZT- -zdHW2v4FN;GVF4gcj`&kb-eu2XLtH_gICN_S3lHwAxP(rpsRXHk3w#=i@9s8_3W)v0 -z`XN66nK*cSPPg00W-Kh-k{yJUM`zJW1Yr+t=p9)kfT9VD1sO1qWh40yg4lI_*ez`V -zE#-68i(DbaM5WTQjs_2_J*3U=+BFPTA~BN9P4k6X{d*a^*FcoD$?dvmRYJdAJ{ -z(F=wjU~sfk7FrFMdBSdWJ`9KO{_9<}HG?V1m!8gCjrCw8Re-PRBywrEl`^GW{5R9l -zylJ7De(FoawiB(NYswk&E4&sERmfz6B1on~S(wReJQ77$a&nScA=MMX=O%mX%h>`( -z4JzR*!dDk85z|_eiWjDgG2Rx&e#g#7?Cl2PN^7)4V1lz+tRmWXaSlJhtY{iyY{4!5 -zQeg7QkU4(60q1Wn61c8_h9$X)6lNEmS`#+x2~S{mv*tqQs=j^5BUIZzy7A{mKXq08 -zmn_-FTfce?Ifb}(X86Zz1Ec_S@*YU6y(@6GspJlnE#KlW&CrjUH=@TNBm=q -z3vOS3cldM6{m1pDuRq678=E&P=Abv(LuOBo@%E8al9r1+P>PXUfA|=r2N4FC&R -z1LSsqDwB^?bQSd)q9b1bUAX=;8wT32%@sss|0jD4U=3kn+uRz}jCkImlKt)zo|P6G(kztDIcO -zH5%$|$#B8UJmppO2JA9s2waL3w-Ve3^?OMohj!FVh`h)@y4WtNm$yt>9Yb@^?m7AF -zKY!@*A0C}TruF0d-*QU)djDbfNS;{ylKuAY`;RtiwzSumG_-1-46RzEkJ&GFnV&<4g~q>kuL6e6M5`txt~sDC_mtyymB$FJ|YhrK)}`2w0e{PlvZ^7vN; -zDSkx0H7w(*XFqnE6MI6sgIvEzqaVdhYI9rt`0-m`FYTSj^sv$N3|6_xh{M}Y+YZrCo+y?XFWtcy$l5W#1`QnX-=rtWX8+0qO=~agGJkfxr{D9Zy_;W9D8YBJxOB1CXQBZCV7Jm)guzR^5$} -zlMh_fqX**Pwql!bvvO}trrQ#}TfSBuPMA4p;DF~Xyq8+UwjFF6@ZYV1e*k%fo$)^e -zA-6%mxMF-aHYs&ak}dyY9BK(jJ-Ihh5k>S&}*ifPf6*;4-I -zb|Wq-rJ8zMsxEt@Rv~j~Kg!sCt%md@2w6btT -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 -zwv{Qwx>uX07>p-)^9p`DVdzi(gV@vrZ4 -z4AHTjoZ%H5j`1MO)0>1X+pYPwzvH7tD{`$|GT&uXm&%baJ+J{%| -z+rvN>f7ZA1wDM3jS8{hvJe_uhk5H(K2FpWnYB -zOhGiyxA_lA`Eb`5|D%Ex$h;VzxVsUqp&nQ@tN~4F|e6twa&ghY+R$P;e739ZlFFRCHhGQzupb;|XU`y_0WltdmQq3TZ(W&fv$l)Hg@&QQo -z`BZT05V8~YyyBERn4->%9=W-e2`eIp$jgOeZ9@pZqKm0cFL=L~leypN(UT3}jwY1b -z0>|#XxGWvVGT?%Ne}9xGY-??QZNdAmnEYMT#)Ck{m8T<=MrV{Nfa@WOfhQT_TVlXq -zqQLUgp4@T!^na{cs@{KX{JI2Z;x|8_bTCw|IyJs%>BkBRjD)iFe0Aj -zy5Ou-vZzhpBp>23wkf4!Rsa0bU$146DNIQHAA78-Rr85sr9W9~b*{-_Aq?9NS}9XP -zjfC1OmEgX+){sSI11@e0k|^X!qIg(|B5nGx*tF|HkXkiON|lf -z{w+&SJ2KM@2dhST%Cp!7&<^A1>YE?e%YfUrKhLW7zy2I7p3sI0wNQhD7Rh%zLi_#Y -zE8qkFOROsXTZwQ;JOf>KnvRsz$C%AA>nOIy-F&0(CE+9|VywJX9H+I!{o5LlL;orV -z+guvvz|Q5%a3Ah|HIJW1w&iSIo@8Yy$DDjjaI8J+G*13#F2b& -ze7f9G;h1riT}!eMM`I+~%Uj)9N2Ul^?M~FTl~=7+GN5FNtM!LkTK3T|vR3kTu00w} -zNRC-~H`*py$mZJ?;JNY#kQX1k-`4$~%RuoRFvpLnOVW-c_TumG1owJ9o<0qol?5dE -z2tBjaQQSEOcT2Wv{Dvz%3yZ%Pevy3iNq;!{->twg2O^LI4RHBrYn(izHJOUeL*?D9 -z=SJcP^%(Tx3J~P{SPqVa(S;4FT6|OYag5Z28081q%W3A$J4V -zRmenh)}6@5slgpbATP8_epP80b@rG->xxPI9`uiesXw8*t8=3G)=;q6jR&xNw(B!)L`n8?(jvjv%hGqTr -zOX>*hv%m9`plYJ{`Q}!5lq7kRAukaK+|`X4YBdc7GpGDI7|~}0j_tP_@7JEwmwEbZ -ztbCb`Z+)@+7}eLqC1H+GIi-E5uOpbhu0o|@@lye%CAV_Gqkf*em>Nl&KR)Fm)hJd9-&vaPpauX}w_i2GQvFZG64pvXY$9S`sYhy4l -z1F&y5uDvPdnMdEIP5+uud#+kQM*hRxMu7Nr -zO?w8tkivRj>R~cs08+V|w3PBo86#PjQlGwOwgvai!&fd{Hy!xWrm(R_WHXk}Y-4&Q -zUKW=N$T|tdIzYh*O1H1Vj^5`;8!N|8Xdteo(2#+`;+0_jEz$q_d;HlI7r4j$n2m&x -zj>_1U|GJS0rhhJ_Y1iKNbIIPm92Ot{#jXDkRPA3{=cXSNE^_-%vhO&#%bC3!8QtVQ -z(k4)QIF;g(g?vt-_Uv?|3)WxxE_`$fiwMHZaLYM=8OWt>ZJj^?NvzUC7BhyCViIte -zO(HU+X`PfJTt-ObD}n;KxmaDC(L}y9A|dOm#}S=zEn;F4iB(E6gROp-EQj} -zN0Q3Q_%IUEyDDW2N;9oem#oc>1O?-s;Q$<=0c2d42iULIIM!76M2Cw-I^}S^ZROF? -zAv>6Xom+CNx9|k9#jLa}?XjNa^`E!zzc0ssU5<(nZ}%b2S4Tp**oxgRo+kd}ua{NU -z{gcgruDlfE$Zj9SPwCK)@}$YDBUILH08JPeTj2i7BP75FJEA>Nm?MZZ$3xS0Xm8&x -zIgINFKM-qKGO`!4v+XDPP;twY-CH;;sHZ1{uP-$|y7B#=i!<7duGm-ISjHW?>Bbc+ -z@;7PWLU774>TK-XmsQtIsGAz{bTiWS3fu!UW)xSV4^ShQJ$V}`Z!C`O-L^VK0>xcejp?w7C6+g-s56V>QX>VDjg!0UY=i%NR_L$PHPv`ImZ^Gj)A~ -zEGmk}iqE<9jLW-nEnAPatv+^_R$f1a@@sTUr=c=q$1&Sz{;3Fhp5lD8oO%*NmCY!( -z1NV&YyY*Ju zq;GT!-YJLCswdQl^1aICj4=jO~P5Fxe(*W$k%NYGy6CZkQ)O*~@ -z6V}V*vAju(pkMFBXM2rGhs#{bHn7GaW(-Xea(8tilIc&>kR}U54#|KbyNMe{W|cE4KQh#Z4!Q2X@Gy=zsiYQG$uANq!7ImRy(| -z4~3}w9cJQTmeS?PJo@8h5EiTAQPNN-Q%5*1o^o)f8~!kkhxY5mxs?(1 -zZinE?{CQvpN)mY -z1RcC9-|es?PhmH^PYu1*|SfXi-{%^7*(Ucqo}t0 -zA^pG%stIA{)(B}W6IQ(c$$eEW2Y4p;Y+UJ;$iS6yMh1Vpp7rCu&ibpEZyc7sFOO_X -z5uo6aT>zBgg0RhpG88r)vWE=YfWOh1Tb0dGd6}!k4tcZuHl|o~BJ);50;wh-SJ| -zIv>+1Og@2IP!B>@NV5?@kGA9;3DPg?&3JteaBUO~WN5Fbzc% -zewxbX;eaSosW6}PY;3!0HH{2OJkADa0fkUrsX?eWj4wkR{=AN@v*dPdfYYN$d9Dff -zgGSN1+9u|CM&XVrOd+j)X^jCD&zBvMs+q2b&;9llZ4}O(S&UANZkkUQ`R7B{>U((Gooo`{I|3bHy@A>3Pr7TdV -z6E&}$!p2Oenm3C}jq%*pzJZ+}4Ls%vg@47}oTLT{=!8?9y?n;(I$^c{HrJON4!}`5 -z-(?=8%KKeygp%U=Kcry!u?jr9h~%E_BD$;eh^xqC}kzC!XG9)K^73aY#{wT#wQmA)k+l!<$T$MOl@MfusDEQ*%&7l+U4XIhpc*(YTKzl>!5H`IzqBTvk^tc48ht-K5!UM>pRJ#PT3#%U@bocmKKOEbSbSrO2caXVcLKFtGwi2 -zuiyHsP$26+>0PXDx~NM!)}pD>kEPL<*qY=#iWedS?3L;9a#7H7T;4>PKO`UOXTcm& -z|9UTCi;YY=puEWeDx*;1n;!X3< -zz`5%8$5;BhT>ChtXOy>tgPi;YE{Sch%}pq;(G*vC=|9G|@`Lct@AvOj -zUCyMj)?Y?wDb6(CV=C?AyMq<|mqxYNv@Grehh>er3>0aO%_C~Ffwoqr%%{2r{Z-KE -z%z%I!JG{%tUNk87PZ@uu5&^9G=Kb -zY<&1ISOGqI27@M`!*fa44M4RV$ukF!(`M(BbiFa{@vQ9iR?S+h(`$iiad`Q(m>Prm -zAsZ-(IVo|@YmX1}W3C_N24DC0>*3ESTQ%FIP;R@dsBJCtbC8`cE-wRoZtRAH1O$pk -z>UH~2R2rC36S~@rctrZxsq-vGaMfOI -zTOp42x{lVp?xq`>sypqxL4IeBW9*7#sI*jS3r=q6l*y1Ut=E{;Wx&n|ZK!Xx`93zX -z_&jia6)%vFHK0tpb9A@dwC=wgC)63D1xeX^3D^i0AoA=$?N%Q5(VPk<=&OhF1p22k -z3(Ur(*s=oxdukIEHMnO~#x!vGY7q`Az&{wB=*#YUacOut82K~Td7|6DX1JH@_g^;$ -zGddo7&nqh>XaOP#l+v`H_a2Mk^1TxZtB7appz2P&N5X$)qKJ>an&JtE170%vUNsWF -zUy`kKl)pS%xkXx^+_$UU4>BTFt^G|(I2wVT<3(5e^jbFG?nrek{a=6ok~JfTWSQ$> -zTmbEG!*ksP99F+3A6yFAn1Q1BphOF#N%jh@mL_>UhA;i=D>cp1->5uN@F4!XyxYqp -zZQ0`8cf%uq(LE^bP?k%<~mJIk9^BUJec~*H9T0UEF<$S@Wyj@SZ$IAuo@&5CB{uNDh^OLgv7x(_Yr>^BR^(7q3SQdptaetJ5A4_rSgJqqQhU+kUHu@&Gi=dUf1^X{G3iX|d_?r6%1V5OV6% -zMn1>#tgw-*$^;I2{q;-hn{o8@Grh2{qAc#K%#(j{L`D{oAQi~y-CF#BpJwO%Q15$@9Sy6eJ8pAA426J1MP(Z1Q3a#5b`)?jE-BA -zjTm46NiR}5WEW5o#m=v1n(*iMzp{7qgy)>E{j~0dXHzJW=hy9BML7NWm;F^t%J1)! -zby;T6oe9uJ4LCZ0)_OSxU`}~#6i1UX_5v@8cBtoC0WZ*A3(#*e=%mDZde(pLm*~SGrtPfp}9M!D=MWMTBTUj@` -z!iT|3A{n)`_TB#S!5B#+k|keWg^~T~H*d(wypENac|3SyRQDHT7Ip{x^{3E%vG?#l -zZx@0l*MycqtVkcb?#ReEv?1_zlSP-L8`w;uP(AZNAR*B!gir8by(LdHlT%6;?^JPM -zuDnzKg^HZai&{X{boAq{*LXJMyT87|XN&_kn$Rt;drk#$ -z4Gw8H?BpT}K}#XFDPf$SoG0txCog`~-|f!Az9a%N+T+!6raMriUOS4U2_&~Id~H{- -zb3TQhzsZ+lI;BM`))c{kAr6C58KNFF8{3{X_PHtN3MhQ$rd}aJc~_ER&Z!oL9hB5A -zBmH}{(_cwGGiqMmhi+Ls*|o<0!(&FJP((B({E|5v+-YSWvowMtpADQs=8aE4+RQ>! -zfWOPjW)>%1fq{*ujf}x9G03$A`A;U7OzmW(+6^jRbpkyqdvbheoa(=omjdi4J66ht -z0IKFzP%*n98Mf5U#7XXn8cV!Hw9WMAf*ye<%R9YHEBD> -z_W06Q2x>S|5J9{0oq>ckWHghi -zyWDBZeoL1r83CTr!u^Gi0J<8?pqHNz=rMkUFLHeX*75m*(>8+UYAz7jNH_3}7fV=% -zn`2}mzs`Ht7IWjoWV=kw& -za`dccp^o;GMAvo3NzPPfW+)P1HT?2iUY>&`v_Iq}6jyA*wq0)=x$W@}#?IEyFeNgZ -z7taJD4`IdGi7k_!p6=yJ!AO^u8p9XM -zVR0jqLln=v9c@bv;w$*u8fc%K^ekjd&2cSlBL-@D;p_wh=xi(k`qYRE0JyGP6qwgN -zu_V#Z|5&!eob|n%u1|sn23h3AosC##mrX*edhsu!P9|n`v;m4c!)0D}9Rs;W{6=|2 -z59Zr)Z7r~Ubjg$x%SIj7uVP7D*WP;UY;yi_ozeR|H^49LpypmC8{}cw+pohrcXKz_ -zrLcK&qo(4b5PS#X5myo81S|2n%KNk#im76a$kyCd=%SGq`{8O{lh_U8LpZJgCR@I* -z1A>-6D=tr0CJA%l>O*}LH0K}tfalmv3x2g<6R2W!eErw1**MlXW&>3m>Mbs>Z(iiq -zzP&2=jHq8s=+50V*B8tZFFBtVX(gJL$BVh>NJ(ru*Dvo?l}ov{R&JbY$|1k-M1uM$ -zUlY!4CKg}HjLnZjSceBQbN=}n -z@eX}?frie7PchnZZjFBrQ1yj2HC!{PfCb -z!@rn64GCjL@LlpyoL`3!k-8{^7Kp&>iz;uSa8{svU9}O1aQ@H_9IL?8UCyONRdeFq -zv-EhmTiRgsh3N?ERo%fM+g`LHNNKj5QId%!DfXwdsE%Fx4R!gQuVRC4X*`A(`B$^z -zLs`%zuF^V|1D6|Y$$~AHR5!Y>~^SuO}HpV8ncpHH9m2)rK8bFSFPY-gP7``J2hw`U- -zq+mOwNnY0_nPIdkE>~dXlvGO&v4xRNyuU1&2U<-@U6=M7V7lRQ7v^XWhD`T$-L6u| -z4>auZamhPwyt+|_Cn0FL%#QDXNs$(Wt>fJfMXg#USz_Lxx^98d%EjGr3jNKfw -z86Omv*#=hk_|px;1c-tCvT7K8CTI{6b)JcCu$SuXEgh-1K3LyC&hIErie>H5&9?8 -ziDiJp8wz+KVJR~An_OGr$ed~X+aYN2_`ZaCEIviMzJnQ{rPbRByiYAm(CEgLJ|z{I -zPgVBaEu@jjZCg5Eas|u`AJN;OEqCXXR63O -z3^V5|(s_@dQM<>m%2N$w2urfFjb9({1<~p(;rvIdHB67sN&)WIN|R)plR)Iq$5}~S -z-E6F7YsUb{qN5iIMB%_jPJ|3e|y~2jFOU)Jw)O^h2)2`^Y -z+#d3-nX;gy)Q?$%)^k<=)SGE`h2I}4{pG0PK3CNrQi1eX6i)Y1?GJtC#ipYlZ7TKq -zU%K5N?yirpjg~&sINYPsX2gfR5_)c(fc0N*H)~`O4F!7M;()~z5#sH}wIm=;!3iICVMm_K=o -zAJQ9p!r_n?Ke{RgRGN`F$hj=UH5<>IUdzboEu?Zc$%~N%My4$npz|jSt!w!tY;guD -z3mA`tmnO$a{j$jn)2zc}womzbdz1yVyAGa^h$+G@iW1k -zP<-+YX-EX=Iw?}XL%T%l3UfBLg0UuB`TYl7XX%xGhYY0Jw$SpWOS;t&Z2TX(8P_Na -z-|@?0E^?==%v+Vu|MA_1dwR_%UfGxj0m+xzk#az4V6e>_f~?zESA|Q^7chnA#u4kHUBV085{) -zQO~?$%6x7#!g6%170B+bOhLf07|y9+K6amQVP~DeHge*^CjNy}xOUiw+i3Ms^!EQf -zHmCE?K5R~~kYBjQQz!OYkc_->c9QHOQE6OlI|r0GK@xUQTXB6^Th -z7fcwEvh)z++vL8X;g4)eEzDimKDXujZK=ll4a*2YFfzZ$zT|`#O`5Q9DC~}GMkQG4 -zI!h{Yyq6sNl=S2U@N+d5CE90fu(26WtB041HFrf4O|prmFE(0@$Z_dU+S|yAPsrNS -zoNIYvr1y=RVz`_!rs|Xhk&MIW{^I(48gnrdC16$%tJR8&BhZv!zgl%Msm2>QN)e@R -z^zcJR3v+v|n;YCOJ--6;U0fL692kM4i~1<>h14(AwY -zQIpu-rh^u9Oju_y8giM-PmwSx_PULG&Xm9$Y-Ml924SmAejB9Qq_3&vh3U84O}-=N -zh6XoNTCSzFGsie<-+*c$5zQc_HI9WoYze5)_!61;%{D$ta@7Q{R!2^RmB%CeizMDe -zCeCKPL|`sm*v{JxuKC`jZ_w(5s97(>gY!?N>bS3&r}PmYyeV6&4Msp!yU`usavPPI -z3{A!X-ZPn%flWo9mt#%zkE5`zx*+?fl2y_@h1vRp||w8pp^wor1tze>P? -zjI=1;7!(cJO|9B0O7{k}bga?n(AiT?$Dq7U2Y$PpITc6i!GK(B@@}P(z%O>9<;-i8 -z>oz_ThX7f=^s>P%*{VJt!M_4}Nd>eeZ%$X%j1Z8e;pZpKsC0Wk3B_SdmEI4MO$g3P -zD-(}C!&JHI;Q^bNdo*@W`cTOsQCpc5s$0=M;QgXj&asUChL^*-oZCWS&nEX>?1a%| -z$p-#hr}zYP%h=q?j)Dj~Of|YrA3G=6KY1I$uQ&EIM0?@xbx;Q%!9>1#_My(-va -z2$(8uJa}sLb>2Mq$P{IPZt2#jrd;UEn-er|nu6O%TLZ+d^xf)cnsd^+aat=kXg7Zt -zbRFK=&7>c{My{sM1YKNTk8&a5{Z!R@%L1ikUKYd=Ma$3FZdpVydpn0A=Ui1wZ(u+b -zJ}Uz^(!(J2i;6>(XC1cI!D@(zA~vaRsEpAX@YCmR -zcOWSN3Fhp3P9!2-cY+YIP|a3zTe*-$95Q?C-!B?!!<6KEE~cq7eAzjUZgKA+_J=erbSk~!u! -zr7xn10NsBf204O -zfbpGU%jjUabBT`v?$W-fa{?4p>`>aHRj$!<^sPnVXy?K&BM~silbs0cKy=Ej_W)oO -zA+g$z8w?Kk<|i8YurwE4KDd)Gb5KnN@PlODJ@4RqmUanDcrc1q=2xu|1m)fbNF$n| -zn3%>`_~$m>oivoY(XLs5jX1iV)pLy?Gs;xweKJz9k6)lEg^D&#iUS3aj$fVLn(g@J -zurR`eu#X#hC&;nFHb^!Bb$I-O)X}qLbqhbVw8>VISY^& -znC4tKSGN6-4X`0p!^gjWb63omjB&QwNCt?x;H#UTjxj49Nt{}Dr0|HTJ^z+0TF69$ -zxY|c2>$!+AK9e9oG_TBV@*vY -zLjFEB7NRG|6PU8zsPNtm@ayh@2~V#LY{*9J4&Gsfwx5;onHAU91GN@6(p!scxX-fJ -zyD0g*B}_W{9&Lz|mguKbkjd(xx3M5t&A}74{dNC>Kr6WI)^aRcUnCQ;k^H4iqoyL7 -zy4<$LPda7tm~Bo)W@wG-@W7*=t!jcd2i?m1_wVoU1`$E-Pw$%Db!c#_U*j*9k|^K!I?(={T}-v9cCwjM3;s{6*t(ygeNB~MSY -zXIwJCh01`THF&I(J(kLF`#wD>Y}&8n&7QKlAa_t5PNJY38d|q*v@9-zh_Cf~81C2M -zVI|qJUxw!Wj=PkbB;81wP7-+?$j58pu2nZL#X*03C_|9mdZWHJJcexuw;6~dh}bf2 -zzuV3p=G}g#9z5Wg(N*MF!G8%KpZ9F!!6~jD`=Q`w> -z8-Rx;*A3%jFZbJLrNz7(*T}zpF5f~`Go|)S-m6H+6-Y|*UU-tKC8zJe1?CFy0}?NY -z(sM6ot*@5143qV+1eZ5W_fGH2s>{j4;LIhYI9hwrQf}%(bSQq2*6(6+@xcJLQAw{5 -ztJ$>9O4zn{PivvbQ6gEmqp(>P&Xe2`vJ>4i+V_#5*kG^nO}2jjl5IY?<)}GS-5*>+ -zi!P@9fuK+45g2T6g+6{c{7WBv(uyGANpsJ{GR;9ds^y54d${$}Oo)L5?k0{#`2`#b#7c^K2Hc4nfH~fhHE{7P&`|ppx@HH}ixpf#GBVVTGE&BfZ`#(6O -zC)l>I;Lk8(<&!E~IPXCVn3stzN7^&TT?{aCxp-~TcR7-UV(Wv;b@&&^A>qY`d%^MI -z8bBqml-}=TXyCI4ZJ83nxlxSzfbtA%)gE0p%~e(Za!;PTH7 -z>OUZD2U@kn(7yVCjW_z_--EO@oZu)vvix8GlPtDF*tsD8jz69;Zf5GzrRSIt`WYzt -z^hHb9bE0dWGrb%?1&9Ft%$zNnQi(yrJ@CMC3nawA*_C3ccbd-*x5LDcJdxa}wyJ*i -zBO-<(xN$yc%1E2xzqRt$k8u>JK~^)u7Art9{3W+?A_Rtp#-Zz(T)mk&;MHv;o3=U( -zY+`{C%t&j!=m4$p4y -zXuZr~7<{O>#E^b?jS=zOU8inY!^GC;o3ClMr|nSH(huJlp&%>Zi5&w)_jjaYNVy5e -z3O+qq`jR%$j5@vJLk(75mC$?iLg_4eEvlB>pqp79a@vYG6m%dR<2$6Dm$)1fIzrk7 -zF1-50jeB$@K{=C0Ktlok5H&aUifHLCdz9R#8AY(8MaUt!Nb76yGzTmavFAK(dgyPm -zy+TZ~pOn(c+X|Ox&;w5QX&>IBG#K)0N+CSg&{Z|U%KO~YrnkHiLip%i!wMyF#|`_q -znGHz=+lbcWTI21_{Nyxs`{Gmf2|lx`!cVee;K54mxBx!XMs-JOS-K7Q_^X?-Zt)N8 -zx&U4dzp;O;P6OQ;EPvTYBM<=CkCKE$=Wf6X-4CZ*olN?8_ac6!pEj&f5eEK+N$%jG -zZ39{Aumn^n%b#x8!yP+uP(Z|0L@u;p8&R>H@5EAUTZ_2g^V_pw7z>hZI0AwM=V+d^ -z+{kEL+#NN)aX>}T^ILT`XsfFGlhG=kWaF-*2A`hz*#n7;9tUjw>!tjGl!Tje_>FAt -zU)pO%fBr0Dl3%~m31wOy$BnTKeZ7Atx5>|%8A55oU#LGc89)PnOP)V{o~}Bk>wPpp -zj|?1{TrrEgU#d_0u+SoE?{N@ -zddcBNCUWua#&Snn_q+k31FKXVrUx2*#4Z*BvOU$Fkg@C8ED=>Re#x8-%%y2-9r*hw -z(~bCLvN93LjIyc(;g%$fL+$q891;1jnzfaKPIt2$RtAhsAY*WG`+?|5ImY`{^bL?C1{+@$HR0o -ztvr&X@X+ZYzT~wY?%NleKxwPcqJdW38qc{P85|CvV9s5XhC}q>(@OjO_fM5EWXF!q -z`fOK)Z0pFRL?#@TD;l>!C16t}b{Aspaw>^j@w+zA`m|Q5vLkM?MFojfpR6SpZ==a( -zw{%-*(#|UERyjyZNpx9Tr>Kj?cT|eG4#iKT%F143j`uXIgy$z5MPxXz29h&*hno0; -z>|u2~1qqM=)|YG%{E2Y9*weHe#rsjcx$Il!?jb+6P>{1Dui;-^G`?j>a!W|l+NArA -z*aKii8#1=mt?gIWjdE^z=X^Sw}_nVvK3Y>zy!Cw8Aw2h=^CGOo7>&9 -zjQ&ka?@-W}Pj`aFDDXr8=W|?-HAg5OVSWTFyBXc%1Q;Z_^eH4j>uUY<3vy2FF@NM7 -zG+E`2e5TD%f?2FHCBhnS^m{PVc#}0NsLXZ2BK9%^ehbkIt1%=awhB&DmAd&>A118G -zVFmo2;)_1X3IXlWHj>H5YpP=c0M}_T5>4~wceeamcJ=9!qZqF+gh6CAm?RO0o1Cf2 -zQt?PglG@x(Kf&n-n9vH%ekV1K`gmGBUs#%mBgJ8|64~DEZAfJ*Rj6DUvSrG1luwKu -zAZx_Do`5vcfgK!0*k8EW1z_F)tdUZ`w#FmHH!^S=-v$X!a8%QeHRzveO~3K>qzws2 -z7CA)J2OT^&YuISR&9{SLC}_eSVI2;-QOofQ{VD|CM){odS^3F=emkRH- -zVV!{e_Ju8=ZVzf$NaBgSc*eNOPPFvHr=!VpF!lW?Z;N&ZnJxL^ToUGi$)LIoH0I0z -zE{=Ve$QjZ=;XT%*`C>3eFa=TO@_si=aQw|CAg>L#!whJk2X5qS!SyO8u?hQW+2z!3wceE#3W~r -zUN52wBoP`iZn-T-m!Jf{9lYI*UdxSBW8bD^W0Un3>PeDYBN<_FL+|;jK#IUe>1Wv) -zSPQh35%nf>j@|>^>s{|wq&rFVPr#p$+1#PWW57hxv?3H2usz;58=dp-q~fYZdN#(z-m3wyvFS2Hb;3xKL?)Ed(P9sUA@u2Ue|+7; -zef76{r0)Y;edcsGdE%pmECXrus7;+PZkD4$5wcovA_TqS;V{_8%0P-%9c|^n+Al@$nZcZ4Lu$t -z7kNSOXf+R`RyoOl7$Lr*8P9iLAE@=y_LzFV|B@*|6$R=Jttws$hh&Nw<-PIa-7eAycz>y)rSn2bRq}(#wdgRJiC)TgfoE -zResESS|T^Fm_$Q)1r|d>DA557pK9Wtaiv0 -zL<_X0WhS%%ZJXDE=}&Apfk)-M9Z*|#6BQNW@{*!8i@C*6q#38W+PCe;j~KG?T{87sAiv_!tSu+4ss$KAp&NKkL6 -zvuskQ)t%w*5zj%%#oVo@6uq)9JI_+)Y(ngqW|DiloGbb@wXq|heNfV9<%gr>g0She -zhIeu8#EyGU1`BqAK13TCYF)}gJ%<=1hNJbgT;XY+fc-kh%NLTU;M`7hc2Heo3Qr$v -z%V%t!~eHvAWfU9hjgD1#u>agLh~sOCds(lUyh -zm|)1XOkhOFV6|cwRDN0s99R2xz-!Y17XWx5NYRZ}>$uM&T^jYCqz+W`ZBxM3!Rlg@ -zo5SLG78C8vE99ahWq&V^qx%V -zGFn69xy%Ty$||Er|M3&E(Fb&~BZ`6U3IwXR@)dM$*`gOJa{OhtOIEmk}od}vC -zZ5E@aDZ=wy#dO94?Qi<>=^2Okcr2ki$hyQU;xbPSzW%0vXbqiK5*{Wc$kvFh7IaBW -z-6do5(s>H|YQpNJS6yq$_t@tk(Hwg7q&>+@bUOOxCOhG+I_=LJ+3_o=HP$12I&_yS -z4bOBkm{a%b$y4)f=nR6N#=EHdZ$ve{$M#lvjqn_E?$HZrqGew6Sx1u^DU>XGZ_LY}`kY?@PGb(&HysJ)xQN?To0B2#4n -zgU2>$^XIJkwIlV1;NC9D=_vWWuU~gsN9sF~#3F^A!2YEyL}7dpafc_v(H1w0g(Oqt -zpyjl;9K|^a0$^CR@9~a}LOy68)j@<2+@RTx<$u^uXRNj;51qYqk@EeEmtC(ya3%-_ -z6^we0{L#tmjzAwe==J@c7WfaOw>i6lOocH;kUcoyC0SMyW?aIH>{b>$EbK^&G+ed> -zXLS!j9p@TdVVbJ}+c3oV?(K+H3OOZ#&0bQfXr@3ah31&Q<3=seam)AyL+{)CiGo?g -zdp{89(vGc^G#cE^0%rHHxtKO;mX8fUTml~6y@k%!jF)EX%>hP3-yn$*xrkVm@ukW^ -zTA5IFaQG(2fi$MBEKVxo7e6kV{E25`sFCm%T|p|*QACeKPweGI4^auzr-j5NCdSq5 -zmRi|W4k(=xh&{$p#CE$2f*xg?&*e{Z58 -z9c*6)JCz`P(!Rqq2MK$qdnAgv -zuy~C~Et2zxbd7JY)YxZ7BSwlS^Dj5Zb9aEQHAcV{?UHXWmj=@`U#Qg53ht;vn* -zl5!)laOc!jQ6&S+n;&p`&|5FxKJNV1;o6Xpk0X|oTf0y4Ge-A0Sphn&D_fY{o50PA -zII8^4Eptd4o%M()iv;llihX8|-tpSIeoAV3Q#^pA(`_gE`yIiZyOtfY&BDz~vVBH= -zGc3Uow|+pOJ`%9wn{O&U_Q#$Os_Prw+o6xi -z1y?6K^719ujbR|;)VhE;Df@KJ4yr(UQ#RqewLp7LAQDrc&9*;ux>TyuuUHjwanh=cv<_st+~CqcAU(@l5#;*rkK -z8tjPrE&uZe`^IdY^okxH76wiL<1Cq?QOntoRvIKg1^a+}nuRRJOOcPCQ2w&BT<0t5 -z^1%i-{vvYHlg9==Yj|jNSj=GewMBg@AXStJ3xsgCFePd(RNttP=J-YMiaP=4qb<6m -zt*e!*6kx1>z4csahcdN_ZcLM?)sA$BnDvoG!{Ik+gmM_`XWNq$|%z9H~*Gpi~m(62oP0Rj|UL~(HseDrPGE|T!9f34H& -zJ6~lW$8ivn-EHsOE~CY1v}MlFp4(CFVK>LhE0kZb7v{$9Ll|hMy=y!!%y!y3`XPKG -zSCzU--Bu>!={I2ikj&tcmLZZ$o@KU)Ye4OApV_&QBnSNjZM&3yKowk*2#{!zlG}u+1KB@F>2lH8^91=6$xe7<0{}x1 -zuY%svpoQbY+*tw8(3#=b*3WLQy3%ZYWMTB=AV -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 -z(7WWH;yMm}lp+dX!zsp39?`$(}PeHteOHq+V_ -z*pd#7CtCplynNSP=#CDYft_D(^t2s--n4fZIYv@9e9_&nIg~0J7wLPnvO->}S>qB0 -z)e(Ta3YMK5fbF+VI3xneB$?o!qxA#Zai&et~cc|4|VlGI8=4#33IbfJ+L=@0JIq(~* -zHGa(sX9#1g4`n -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 -z4F{qO-lI`AF^fG)1!@>aM%oc* -zDXiWih|G1{9KtFr!RF?KCCEga+9W8L0BA=0%K3FI@1(_B43Y!9fn?QQeLld_S3rI@ -zfybdTagEMfR^QVPElz6!KnDia!oCVUivU5{L_PSnaY7G0-N3qdXv-u_^;<*YbCa%a -z4%XN69O)gVL}MaHwq+x|Qe(;)Q`6H~RjveSR@tNzI3Sd|&^%{=GIE!MMMxpCI_pf4c$F)PVM>k;O~~wxXpagW -z*6I?AIfocU;{L+J5u>X%}INu^MrkidV-hs5$JtwKH-Vysbw18b%G3=yXj06$eNIu}R*p;i%KaG09ILK4id%wczVF%^} -zG;yMJqVd+RxNJtI$dQ>oFnXk#t_WHD&2jl|b%+;P13kC&&>3{@X{+dgu#rC6mksT2p%zz%^i~lQo6<6lt|W&`^3s>)vw5{+|1EnI0HXvoz3zXCP$<#=dve -z8qX&wzWAgC36dgC69bA`x%9Y?l-}PlN~-t>YW;APHVm(l#2&s5eOE&vfLE^l`}ZoL -zD3J*MY`nfNw#cGnvakRl-y0MF(ECA5`WUk_-fcZYr0Da=vv6KPneBPBVi&wZ3M|W= -zb*If8qD0c?CrAH;Q-sTD5NYHU0a%jRbI7sV7W}B1bU}KASid6A&&FzZ!hs}@c;PR* -zljd%MKMkIGbq$>&m!iDnhX3tWT20#ZONccla(RCkbVPjrE-+OS*-xwJ7>>8$-zAb$ -z%@P^$y4+#)h&?kjfRRBdCZGpahPYG@Xy4q0LW6|M>QVy|dUYAtUS`#FA=fh3Vi7=S -zpH-Nnl{|5BH0Q+=4Z5ywUKOE6yP!+$>VW30hdwM8BRp1;fh0|9V7lTh{u?9x53q-r -zLb3x~QB$VR%!Uj39)SZ3MZQ0E-&ddxCwW{;)fpY3CfNEx$e(vpiqh`=Hy{t9cul}9 -zG>l~#3Hto~;|KhdPRuO)Fi4qqIukssv&qnJ2s}3IZM~_3KDi%&>qS&@HD1{L&M`h% -z?n)gs+-n5u$hNHyWS+IQk>7Q$faT?vD)8p>N{>+iZgKwjl?KG4=8PWq0lAP;q}+ec -znPEUVYI)UT%=Au1(g>ocV*&WD`t>LY^3w5F!6I)MXA4W5X{O?!1PP?hxFU7(O!_9W -z%)mnsKs|B;;O_*_)1gy_OSdCy9K&2OKL%vL -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 -zZnN5hf|rr6N0VvgoYsJkZ3k)(IJBu-j~sy7 -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 -zlVcZa)RW1s)g6YJ?@E^(4>Xj!{ztA7F -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 -z7LP}!-4kF-#q}bzrE%IPX|%1+vpj|@7s`2@ -zD$*sKvYi*>(SW!cleXYv7|n)@k~HadnVTdr$(Vlg4N7kT&KKOvdeu=bPWM^P*f`o* -zuuXG%ABgAsnUFEhcP378@mp6x_tY -z3c|zYeZ@u%UhQbZip*K -z5}Yp|$|r;C?3XJRamQ#Qn$ztfw!(#_c_3PDq3W1!r5iu>@lej5!AV -z#3RQ;|30`4=IAU^*R? -zR)G!`6&Tl@oHaEFYkA~f;A1>5dJ=$;yjJp0b8|SlFLj`GVQt-4emy9_l};7mhl8`D -zKiZD*Y_8%`=7lYCK>3++f`U+)@;{R*g9se%q82qz*9p#mn2qoKLK5aBW07CoIs -zo_O&80TctrMwqx$&hs$THU-K;A01tIo1ArskGn<*^IUaUQZpm2U}3$O5BhEjJE*Jo -zjE^WIbjHayk!Q1Gy}EnhY0Y0IqZCO$e_5+tq^Yc>Mo^AH$H~ThQWf^e{G|0#9k{yn -zy+;x^oz|&?lB8M5@oTnewh?fmmrSax;}HF(cQk63zUV!(M_;@T`H*b|gN!2M2szd3 -zmhB#lBeZ7;SB`?ru*8dS_?0F{7ic+bJ(=rj_siH!CZw+P9`T-4by-#tG`yk^I}0c5 -zP*~-)>e~ETddJ*s7ZKVssX*xg_wMfKInxi+NjsNX197#|8knSs=U{>vIEc5YRm4>o0Cd^9Y>-j|7s+BsQf4wD{Ff0jN!v1R%V08dYvFsF&Ro -zlPuG_-s6H7Q7-jfG8FQ69QQ&_>Da_eHZ_SLi}iBT@!^%DE-##ZJIG5g;le=C*^}l& -z-VNpS2XH`MOugb}P#nl!f;NNNc*)*kV;bC*EG1Xq>5k0_t_UE%6r2*$_a~ZF;%o~2#<2+b -zgzaqwsME=M@%F3`ZYF`h>ND$@8TERY*O?9!JN0vSb;kB~Z8abCIuAP@NyHW(A1zR8 -z^P(7<>=O*k&Uls^!tx|^j(OThmTfGN3h_F88b!-z$(}JpumnJeA}wT-HtZUN8qNU| -zYvg@R5eoranAN`(~`arVC<77?E&Sm -zxndBrz@Uf4^h_m$@)(;;^e{3SyHBk+q&J$Yt4U7IOxw?0h|MQjn$?k?m!?(`uk&=$ -z*vw&=WbMHU;E2@}*402!=~m|q~W5qU}*mijV -zm!9CvzS=OTr;k^o4XxK0BVAkU)I6FW4Q5tN4;#xG53pU*Rds6iqV#LJBcsH2i5#EE -zi2Aai;Djwsn{opg=%l}F+P9Pp)42hf$XR*r`Iz&K&F(HS-%?A^MyF+7(vOgxyfC|0 -zfgtmc;1JYcIuDDI3n{qxwiqnv_HLII!6RA1^WjA`=?Kr-P@JSjTOQCikiJ8Pl7(Xh -zpyBgEsDeDKwp>59DaFg=h&O~?2~9#IfHH;;He@;wk};Q_=0D<(bL>zbp`m#dl+U{0yoc?ioG6CrX(8j{dhP$ -z+KA5mX+Yjg3fcjtWWA^g9$=}MW`Y(hLhj=NBQ%E`mi|Qe&`A!Wob@GOGZ#E8G{7hg -zQvx2)y~dA46Fib(UON<`$_cbzYH^_%%YSd -zWeG#Fr8I{&SA{uy*1SiO)w(%=E`St0t!%`}G&)tp7HPDFaG9HgSiB)=6(8mrZrS#v -zKXtoqq(o>#-O_jDxKtk-DfJQUJw=uhp`}}rf);2(+@`jY-hYpHy8cxXZcru7t4k!K -z<=oSH8>_6PP+_2M7^^$HQ3-Bx>EUPLiEaZZC*yFr8q8D6VvW{y%%iU%|1D1Wb#s~I -zAA$E`G+9N(*u|)oZfE)oc(u6h>viazS?gsngiQfc@LEr)A0~@|2e>8TD(E+uRqkS; -zN}GOcKYiPBLy(TfeWMkl(FR#n967#5vTS!S-=?9Qqd9*{f0t8;qGHKQ=`rBmFDHzb -zNV1tHdEPO=*uIA4xsi)Z?+&>+iCAP2Nyg~wa(cjZ#MR0b$tb4q3j0(f`Y-@Xk`dFA -z48Z8>s#4ovXlJs&EbY;5XxO0IdU&~VHNq+8qL0h4Wn}ZslVgL3Q8^(P3dp{u1SN1B;%BUOceXI?lRkRxlFl%xgn2swa_(l!7smA}2XBubtV=#2%0?|Bt{Bzd -zx?G9{VWcgSb_Ik0$s4kNuFGZxud0PAk{!Vx>_}2vpC8S6(~E7$z{o6fwDv>>$doqF -z74B9iU0>xFdiAjwqOU9BM;KUXwa_-nxdWXz=0wgVT=*WcaCSIVq{QjPsq7z&OHykb -zKnt4|7KSeC5d+yH;zOM-{_z*Ll#f%{n+}n~p>~^fiSA)PwpVSp&$WVwfxK-_RJ8$A -zR;6%R!)s`FM*}f!(OVX&`+9hJR=o`l_%U@}aT1WpJQ!geBf9Y50k|<~X+F@ke_{uOg`x72yEW^AISxjf{^;dTwwbD#n_Tv|6%98yC7q-#D2 -zN3o>^`Gur{-n5R=Hw$LH2h$W?QvMIXj@`6w=?0s9H4sPSdQ4G18NLkgQlQyjs2BT{6PBmG)tQ4HX%GMhzQ)y6cS -zjJ0LL?$Nt_I~FrUAAn6o(`t^D^3Xkbvd}$#X1iSN(g*To^h{-MoQAk~X_UW~K1thC -zia$3p!s+{4&SpLUG&Pf7{?^5@{q`7+Vl{z(cw^JOHjKZ=l3x5{SN_V!ofHMKJT`TA -z#`~1NPYuySn$m%0cCd?22V%(L=NLM3L|U9y?~sNX;myXM-93%UvdW6yI*qhOQ##VI?*})omGLYyUJ)m*6zidjKe-W8iEd;277wBMAyX*@+rkctgAsN@d7SG&fByW* -zNM7$u=R0oD+wm)WF{b=9JQ+8&WdY0(sWg8F*VyNnEf_ki`yL1B93DYmAvoWH!eXqj -z7S0_&$)=X3Sh?0p+vxvkn?8ZLu?viO#v<+3r_T&n46u<1u*eqcf$5WDnyI+EkNd+e -zAGlbQgUO$c!f)a)bMd~sh+b?M&&G)+? -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 -zuSSQ7Rr@T -z;7n+dVDCw!sYgv3Y~lHp_b<=|Gc6TE7eZ$Uwq -z-)_wNbX=R%7ZsdMe;7z(6`pRbG=w5nW)q~dhSiSiQ8_TfW2N0y@5YR<-&>?>6XkcvE1`)K*8=~FSOO;$_t=}ad5DJZQ~yr%wkHyo`NT%$1bEGxe? -zZCzV#hta50H8lX@_j^uk%CLCGskq#YO8YE6C(1NVfuI107gQNqlgy`@oAX9W3c0u2 -zgVFHhwM4g+Wz<}87+c{7)Ju>4Miw!raGd4XHEorIq&`m*I=c*_%82%oKX@-R%`L}# -z_jYMUB?m&`JMR7CryGPrNevyag=)A5b8!>Ximh?-1A_4sa{J>gH$ieXwHFdP$vRkRZ2Q@}Q6kX%Uc9f-a{HFrsqxhdd_vm<^Zc%F$XoV|c4$Xj@QoGo-DR -z0&~(SD{{$*+JI;_V24^FSwBF&@~n{3r7iR{T}~doV3A%iQn|hd$+o>6HIxX(hdw^8 -zKw5BG>8ZYyJ%)_$z^qq$a=~_7Y32;dmW*z8v#g`NL;i6rOV|M8E#_HKJyJNqyO%+sdj(Q>@&*nQ5~lAD-H_B_(-25h;DVd51B+S(PGcJ(Cs1Ts}+lvs;N=J)9!rDlRH1;@+%0BmNN!sBjcbx$PN$J>4`Uo3iqj5>5~EXPjobSQc-{Yb`AtAMaM -zj%J?i%;`3Le13#NDyjq92V^#BW& -zAQ;%}u(AuyW{0gKfs)yvk=qO~*ff(c;kv_)dSDa62mP>x>S5al3(X(P*e -ztB&+;2A&I>L%>KmlY_EU7l-)cJ14pzR420YIOPDY -zhP22=l?hr?B-Br~`2Xhu6V8O);Dsth);E|SpU2!KC=2fda1TdkbWlp1c6t?I^0uV9$)nhB)>E -zh~Ts#iZzXX)SE_2X>X3;vv**^(zF-5s5cta#R!Y;N_kHPz)6DlZbCH?TT7l!AdlZp -z)P%oD>K)*VO)T;!u1ox0w1#)da#c-PnW?-L+rR36xa|%w1}migY?k;i4+m=p0X0SZ -zB=cw+NUzIJJ=|0JqsTL4@=l?G=bOh;kExuAZNhp*Oh{grpTm*D=x*^j`c{+A0A_Im -z{)QSK$kCiquuQz?R!Ugbwk(Not<0T63|g=}NQkLAax3fhz;S+V_R~rLtvUGg){PCq=h*g{G6a@H -z&gY5r2{a|7QT6sP#^DCf5#cIjK*`Yk67Wvxk$_2CX;P28sExA_rc6GwT4~5MIMUHB -zS=SnQuytEf;)0vJXt(4PrPjQ0xt&f^*-@(|P_oAP7;n4m&ga30J{jHgB30@)cN^W! -z5Ev^`(Q~V!7msg$*AaF+&vb{^6VVG`rWV%}OMEdgaFCq1C#W}iqO55ObCmfC_x{)d -z!rd%M;Q>BLL8$@;#he4>*sWso9GRc|5$jkKFwYKJNkza6LSEbRWSNo{t~uqx5fnd> -z6|54x4fIZ;RX43VwY+|ix^Lo?nylm;>;E&8EzCT|l_L5rZqiOwx*d81)^m-=nDVHw -z!y{?$qf>s_v8(of3yY?6r%@LwC}~(nwS7FKBU#n`6x8_~M--^=;-5*&sFeiCSG#pt -znRW(cie$1IUnW^`ByhL`Xo?AOf!8wnq;oQ -zZ)A^on1`}1!}NJ+bUF>Rty62VZI{I|YoIeE^xK8{UXsyWelP77hXRE~`FUQum< -z9*yK_O6-D6edYn7mxq8;bKI&p(@K}(9lRk1+=@LYdLpa2O7ZGKY#VR5LUUIVvv!8U%9$ -z4Ykm!3=T*>$=#op+h*WkO@Fot@6?LLV40LIhtX0tTIL(?bLiuzg>Gil_{|-YXkIGV -zNo={?cZnL{1yE-4Aq}Ts#%A{}Z`+Fz@b3{B`_J~)+T@-;!zQ`*g6(~rAQ}OpV_TLh -z6-XSD)4g>_h;{JkQ;d(5?)qv2smN%WgvBEQfgx>`w)y* -z@U%PumsJI&m|<*g2ud<$N7_oD9A0R7MlKk63#eNO>We)ft?tQhYFntJH?n?$Wp}ad -z@-f?Nx!EGl&y3)&)=-^y2zZ)Et0zz|-p%+lr4_U;ab>t<=?fM0FG+sL2(~`ucN>KM -zg#D}TH5bSG%B^z+I6M^_ku%U-@N&%3tZAX8x<^@LEXZ=Wy+gt+{F^rc;?z19<}v#? -zI&EnIngVmNr6-U;F&@KN>#f`^?MlAaM|cFh4NdzE5%Bh82x$R3f*q*fzh_x1yIa|# -zQoi!z$Is;$w?e&cVd#Z7XS0{Jdrj<^-ha%mniy$4tb7Dzt4z9rQWC67x3{Pnbcp<* -zL}>SBtSHM4UsR+9hpd&vigQHl_>;&1f}j%2jxaE^kQ8`So;Q8QKXPBe)VL;2*4zOc -z$UNoVY5R$7@C!;7b14@yG;u-2C85eMP5|5zly?UC*>8-KslKA36btW-y~NptPgNbH -zqS%sU3kf!KA?m~tdV?EGX6P~hJXG4EbgS!4H*pCs-QfXsZaIdP;Q=P;?h*_c6M_;* -zL?<1tZ_5?cT@#us%I;*wW~b%Hp=i)(>6#>^?=9NfXBch>81fMdU~zKDpHliRdlnnw -z3i`w$Tq9n1aG%8`ggQ+nXboK9(@=ePw|P`T>?hU_`2ont!Q*qf-9|QJVd<8vA*4Jy -zi&`QWduW62$RYvMO;{|*gn>jGMF1d{jo?@Cfg} -z-c?&OxRQM7>CDww4@Oo67^_Yqmxx_4(F(ez+#$chYavmE -zj5er)WIB|cnasu`QFkRLCz%yeMG<^%y2rkpEpXJJBF-Xxb-^Antu?85VbB=kZDCA! -z?0m%FZXmR@#!CbyIJ?CvqJ0k6n?lAB0n -zcHybDVZ)yA1$H-UPIRv7+lM?twf&p-(% -zpbgwyNksO4vc~}45GJGOl{|W4Af6C!{;bb&NFn -zQQV|9xz&#!zxDOf-g!(98%@t(6`YJfy#2H-LGRwWlHsCTHKpo_Vwv&M9gLZ*9rJ6@ -zz!CpVdXjARuRPGS_QF2CD^Rma)BBOn(iH7<{?>`*QS?caMds&UzjS-)@lR!nj$QGK -z6ZynuM(8~SizM=~!aNlNAZ45LvGK|j*Jx18X}GKODC#WpXV-iBJ%8G}`2~d%d>4yL -z7kgcv5dcD!D{im6bU9-@P*ht1ktiiW*9ai^J(53W)R4z{Nd!AP#OTwh3ojdSf`nVB3KIZWRm!NG$A({~-vu9RkJ`R-;-UsZj~0%Y)x@%-P~a(k7t*`;)7)`;rx!g5+R_t#fJyFm9fsrELe3%BkfX5m#&PL@;A2~ad9DkErl<(7_}N)=A}w)lz3%v -z3A+{Jk$c#AizLO}_-LiA8&)C2*G**}m>{L4g)1}CQT;3qPzsn1{8k)<@;l2|UT*v* -z?QW@Ih8y*7DA27(i?eP}5SypdW*9nv{<8PQ -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 -zIY$SIVy(!o8Hc2;cl55z4tD^jNQ -zr16r(a?S>AU9aMQ6!Bv&DUp(Ejq3AASSN{C7xlJzuqZxJ+NsiflwmzCE{cu=R^+L) -zo23RBg8udEQgfSsMUz>@#X1rcht$>UA?}M_{92sBgt@#nbYO$bJo7Q~JhW{a!9Aui -za?k+0rzR8|^2W=ZHQTz-f@f@K9YctP%Ms -zpy-vg58OJ3#R>s0XjOJY50b&H{S7Ujq)?j3RFJ@h^mNsn!gKe6&mcts^Uw!EizVoy -zkk=T6i{KfRS8#whSo28bXYIh@exw5(Vq2L)tb4V2iotk-Pp{y82b5j@sqD;=2ukMi -zBET!a^a7-*30HK1`EfJ6Rxv8v{1yCu>MzS?W<=Gmd>5fo_C1E+3@2*~a^8New@2kiV{S&JKkoNfz-rs+G*GT>Q`|sc7Cm%nzg@ZqQt&d-| -zR`Vgwqo-_)c~GK|UM~Le^ZWKy9{>6-_wXTK-Wk|6<^kf>yAwu$Vr@|#fcNW>14>rl|E(X$ceC3gQNCmG# -z3ALbg9evWes#2}jI=-OkKu+k|0eRkYE*@hA*(iW@8skncd$(Nk6$%85C%xIFEYni|z -za)`WKIMzOd@GH8R>hyy5dpVi=ogO{e0Pbi)xh-()-iyo9aV!Ha82I-`dBV2V_SY7? -z|BA`qMU6ZNWn6hWLTPkHsRFnjq8NCRA-*L>3?>jPKkdmKw@?4)>ZR)a*T%0+a3_BA -zgGxt3<*HNTjFyJ1pvXu#TYs)wd;w*;((E3ME2a%jOC^ij^iJ|6E@PWgK34V5Fa7me -z7MsF`)c>*9s#-OmI9U3VwN~qzJQhN+?VuGiB{WH>zfu|QyK60(g(6uXpoByY$YrzS -z3^(S}&;V_w@<9VA!b$fivMs7?;~f%!;WxK5sCz8Wnv8u(47Zvd3W!O6ZRCtk)m3ZL -zsNv&aE1-KRTmn~B{POFKgo~c_1(4@1?KvBG{l@F@wjS26$SKg`7UI{oU%#-D?|&&Y -zrGcZ6A{78F^DP`*m-DbFJEi*pv}1D_DYDfVk#69!6tyFB&G4~ml&L(6-2g2yj;_A> -zalH(|w?pO2td1PD8=H*FN -zmUhh9#{|gQ!%pMmm*!#&YxTiKD((p=IrHUu8_lQ79TtumS=q%TOK~)&qP@J;opoi3 -zgw^gujazxuY9&KTrnp*vsKsR;{UWO+Z|B;h@r2}Ba&{)i{Tf^ -zN1ybEqyOCsd~+ZKInV@`kG96iGkTM$>O555&3bMmj!>6DFJ2xZp!ugM6fWvM&(dm? -z!TnTUt2lEkRYi>)k|F2Iz)}6^(w{#?qT$cKzkgSGi6gg8%5%zxY(Sc6qhnr?H}N-P -zVFoqeF%ZUlEz}Zl4Y%|%(ZH5J++DCx5Fc`PfL(=5HD}$5e4HBIaRgFByX04uhEaFF -z3eZwbK8}c&0`3aUvsPmtn^L@Kb$l}L(f~*V*C|!aBPy7;vp`SiSf1#}yrZg_%5K;Q -z?B3n0S*m06s|rIVO7SD;&pStPi(5tY)7HBd^^9Xkz9WqSHEFJgIp-f#onj*8#d$*1efy!qpUFNEAQtspUmmdp>9F4mioMn~h8lpzIz&jaMu -z)a40lseGFtG^eu?qUxB?&&f8p4ED_Z=eW2g%VnP~{v -zTJ%hZwK6xc;(ebMcoUn>-{xR-HGGUWd$~3S14B>*VRGe>;v(IRF5GaU0i>27{p)UJ -zD>H1#*yL9p3tRDOXqw0Sh_Tgyn12atnJh7cDEL0s6V-_M^X>NY*Z0f4Z#2;VtAA%J -zs5t-wcjFqIVxD>QZQAs&2{q`d1!Uwu%xwgUU)Qu}5DY1>_oW^tBL<+AyGcta!;~?S -zbtwhvduCy9-#mQg(uLE3FKrSVYeYC>`OG$^SK?)Hxqz&bP^<$Ko}h&LD(vWejfaJQu)oKjU2%bX+>hDF3F)Yearv(snPB?oQkr({Z9kXn^~+)L -z@m~xD072FMrS)$5LE$R5|0Mg4lf0bayOGgN?jvmiwTDwlE?LOu6l%{-N4jABmG8nw -zr!a{i(hRqp`n}DZ*uhM7|;_kgE%%=px?Q -zT4~~z4l}M>8e%BC!co@Y9eP-vDv%GpresnZUROu^skL|IkA1G?qe%hawkW9gc;Y9t -zpj(eFZX=EDs1B?&z1B{5skoSOryELzE)#-*iwDgk<&Da*%@~gI{As?kxCat0^eT__ -z&~?I$xXgWKhkOa!M(IoCG~n<6J4A64Yt!wvzHuZet&A5Vp}nh8#-KFUDy7NV>_}8F -z4jK-?9U4H=b$NjOdW~aE^-pxTSj1Bf*V|Se9UZcS8SuF!w|Wat5MInm*U}#ASziBn -z`~LfK{MY5E2=#U!;(T=^l#8v{{o-ljPyTvYW!*p74Cu;BF|O?PQT&t+{U}eGygEW< -z{RYs5fw=`vz&t_%e6Se3E41c>g~(HhIA -zU%A;Eyf=J+3~8tF%tGtS#h`P=t%opJdtblUtO2WV2mS+PW>c2pX0?4)1k|+ -z@JRVK$!#tkdi(LKoP+IawLdl_pXBCuS4KL!y)d-9J(q@eC^hJEj<5eHxqW)tNl@72 -zpf^^Vj7}zh-WtGzZ?TNQ^oZP$MVo)AcR6F%H^`=uQlf$eQHG;A6>&$?;H#%1_?tWq0uBF_g9p!&ZXwyfH^< -zxMlZkun-0xy#G~B&hYVFVrawf%dneIzoVvF4k=$`2SJ7c6BxWgHp3I{^ -zUIt;YDn2C*g)()7#Z<9KMlUYuJQQSWvLu3Rp3*vX!yzqWXcm(S{9J?1p+ -z18r9HaITk50(y*wjL~p$_y$zqla1flQTf?eNKDYgyYk%*JMt8Ev-{N0oBi>-d=-0A -ziVPp6hx+ZWR==vRKQ>@oiy9KLHIcr-l|7E5e8s|LUB8o48&>@q$(@xfv$^ozM$U^1 -z6OaKaxHIgd71(;$7Aj@*U*vxjztP^t!s{HnD(9#`@HRNYG1-Ti?h0ffNbXT`xC5_vAr}gyo=eSGl@3^mdp#W6auh?q(mE(&H`kxt) -z{r&sz;)>I+Y=BP=Rg@-6_$WW=@`v;TGpHtnnOh^OwM#51k4niEh3ufPHBEn16>xEfz>E3o-Ykt*+ZwGm3{>;I5~<;N=U>>`qT -zwu|Vl(j%@WhmQL1OS0)<*V$?kC7Md4!#z}o(SgmKp9J%0Mw?2ZsQC*02Y&B=E)bdn -zu$+^m(!+!NC6hcdRJ=**C{#A>|qQ>6~hr -z0ot$SbTjDB^rSmDjQ8+g$|-+X#_jXyo(4WA>y{{7#7e98&%dr&I -zhCBeD9F?t>718j; -z&znPM;2*{YTwQJ*An|PEyV?6ipZsQnT$;?Ph|`HWycZ8a7WD2-wU*%ny+)vg-IIZS -z7#}^iDdCQp3X_jCH<>=)eS>hko&hR|xl4t83tS~m5h}EV3<4r=O95VCLB5Vj_t0f* -z`>zwX%bAx7BOPpmm9gkRVKpvnpcj)3iR=G80!U}~mvJe@E??SOSkSaAN3v7OhJG2z -zyl|))k;a~wb6N`-+FN-UI=oyYPA(Ox+0bLWB%*bMugS;TS@$uu>n}%3#!L!;EJs&{ -z&X;3J7)HyZc%pyFUi{Y;#>Bso9F<~%Q7%h!lGnVHs@MXTqyN~N^1f0PE+`opY%^{?`hf4zR|uR@Wm|D<=Zy6K`e=~#=WN`IC{ -zUt(;M`zT(B46t{m$IC@g%W-)VWgd}ysh45SkiwNF27Lhe*m2Ncd8>x^&sc(Y705blz#`98% -zzsA^>)m(JEKS5ceNBjQpBxKfd-*OXaDO=a=0Y^_Q^_9GXI%?Z?aeqfwl}W1=S?J;^ -zB^px3AJ%&o@9RAnO!N9Imm>%0i%gar7q5>7iUa4W-ydJ;?{e+qn4VGI4i0h>7&s-i -z!8SLc%tljP<)!}^-^vfdKfm9<$H{nm(NgMA>vTDj##(?>oQQJJ2sE#%?4UqnKGa18}wH}voiw{ZtU!KgP%cLs9R?XBY=9E2)t}9 -z&)kM^(eB%DraC=79!Y&?@a~PdHIXhV`uoQMVHkar#nr~koK9q}kf(0MG8>u=P}tfU -zE24~|G4!5s9BEOKuVgwa9~M7@vB+d8-E~wP*O$Xf*1H(~k8c(aMq>;8Zuva1t}nNN -z99Jl_#Fr8K68-q)y)jd-*1 -zr)<@1mx8(NvZA)N%+o=3zPP>&__?tg5)v>d8mrgsLs4pAMos8)GeQ#SYpcqdL>X$4 -z1GK^>8Tz`HCoM>iTSFEfA~aBh?YS&2zv^-lnl&A%$Bv4D!e%^a5hRgR( -zD6Ar$v4g@p^&kl^mWd)h`f7?N91eKN=!4aW_Be+Sj3+ca3e6=TW5Cex{k -z)sdL0`Irl5^C3cS>C?fVuca?Ex?6L|{)ms>m(J0_y`Cf-!iq+3m3ha40v|B{adwP{ -zwrTXGAU<~2KZ20X2~ya8=iG??U2O3C?b_XX|Enw!;4}VuDwX^FpO==nyF(wyu2tYN -z~4#oXZ{(UUPsSlo+ -zOEVt}GGHDITRz5X)UWYP@!+vpvf<&YA^@Y`YbRzW*Ij`%dg<{h2jr*2b`^o_2yv9#Axn8RQc#>owpDoAC -zp}eoB0r{Qi27Cy`hYYkAY7jsshC;~Wm@zwUO*UeH2_!v9>5yGOMHoB3o@v6L-~YlPu6XjL3k!W9W~(Y0D9}?7yvruu~8pQ -z%H#|DDB7W(YX-bPeJw!4$so9wf!7o0_b$ha7;ofy&l*rbemUi(0bhgG3b`=ZgSllH -zwXCiCce9T&38Vl?7epx!5UP;hA4?qb8gck}(AacAPrv{uSBw*Es*QYv7vK{Vj`oZN -zS26|QGx)jd%p@EaD6u|tJ#tmI0wjg*qHSf}Uxk$deZk|vNGxA3@K!O!^=dj2L~j%k(_tz1(?2ZlThN^yv~ -z)NE{f+Suo&94w&rnVWir2<2T#iaDoR7=}<%yo~(s(N=#Y|I8?Qc^|rE@nqK;D-e$v -zwL%fml<-UDaB!!Uf6USlio7;(3z<(o0c$fmQ2_=oFPqt&bOi=Bo;ETDx5O;h7NkI# -zbTYM-k!m;Sc-0B?sO-t{p>eJMR-Ov5rR-QK7hMtrRE-h2aQz-o(d8Q4LGhZ>^Ay_ur26w -zn3LzknX&{f*tTx8wrQL*MmBdFWtYK7;HczKjQBuK*p!gOWQcp+@=5YzfCDJSshwB+ -z;t<9GknGw&&R?BHkR^&6mc&fevuE_H1|`SikoE^=0D$?BS$PPwx+uBwD`V^CTdB$C -zK>)*-g9s@yY}Zu)kwl*r){xOms_t^9E&DB9rfLL;Mho{BLIP-OFoRxx -zLZHa_6~4&z3E0Qy3vSy8`m4D>Xd~UgH(o4Z8E%e|2?Fz}B)c{S;6*z>_Jtp(4OaQ( -zh8mjh>R8X03!)GN;P+MKPpi^rM&`(1MUT0h&dSlVo`pKvPZC|%87DbYotd#nfY$KK -zb9s3VmeBr?mrz`>3EOtPapbngKbSmQKf{#BEMGhmh&+IBq(pQ(=ef9kf7HVaETyn5 -z%C^ahXdGCK|FJ7c!Y39@dV0E-D>WlsT51hnEQiI7Ocqf*^LDf?If$=daBHA_a?-Pq -zF*V1vw2c_B<%P==%%HQe3g}ZKE&w3Aa#3Jj_r#h+L;rL64s+V~Zn{1Z8X9D=7k4;f -zxm`93t?tFYh&-8~)zL;M?hu!G*?kP~8u1(D6+M`7%Qd#Z2GXTdPB0sHT+fQ7ab1J! -zv9sy<$8|>U^Be)!w1c{PnRJkfVUNEK@7&$pT$jY=$(@>ti$VY%h)Y~WjS~#T>uT@Q -zrYNS0H6vSfSK*7sUhIpjnN8w1j1S?y0?2Inz77an{;aq>U6~}!h070hQqZ7(><6A> -zH!b+peobJD)$#RTyJzE=0H0OS5-3Q+FH4ht|^E7!V?KfsC-R0&F)41ks=Ttzt^p={A20Wvtdx& -z;@10?wZQAF?CXncp_^EIDLXbl4q+W0%-s3sYs5SBOHU!!4$E)quNU`yMR7vkmDfEIc+s%S*;OfTn! -z4lrI15+>#Fc>q*R<0c8;G4IX -zcm6=Vw%o{Ea#Oxsk-p5JrU|N+oCL-XdVPL+Wwha6%%FyZF(dmfc__}WLx@aW6haH6 -z;PpkNw@^4MP`|F)h(kGl=m(BjVCpXC(xR$40q!;Ac@S@EGf=n`LP9m|2s4Yp*-mP@J|-PXki -zZ+3`kmHi%J#Qdl<7dx3&vF@+I5Hd;ogBM@3WWsaa5+~+aID}uOZlhJ~OBOxR7O?$Z -zf=?S`6fyped+7y>7uyRVOC5PI= -zNGIN3mdpdKr=+e+I}Y&OaJ>t&vCgk~N-bU-$&*>;@uFxPn6Ji*P8{8Ob+6E~HeTa?pIFKd_8%%JtI~|C -zXfle1Er1oZ2@Euv{nr8frHYf{yZ~dwrQitt6Y9i1z+nyrz>x41nfpzyv2bM0H2&=n -z6nT7KLOvF!qFvv?4A2tm?F9a(7ARXGZP1px -zb80G`(j8-)FDIl=$C9ZuDv8N`AZc)*AE;eX5Pyc5^A_p6N6_fqV_4;>1~P;t>Dk7w -zkN1Lrb(XOHqt#lb$7iL$_iLrevdu|Aa_Hl%pTc -zCb^?wQ<9QVNj4vkQ7K?yL)oQfiwSC8=J9D)bX#s0dDo0tP_pXBtikKKs(JO6JZKJ#MJ(T_Hj`u#86?hkj@N7zP7qiHPUJOkTH_(3on@rLw9S@|;Ra%e^QrrG5R#Ic^lasu&ag1`viB@xwX#HHVzrgG?1I -zCs0-<7}H=JAT{e&kR?=BN^wjJtEog(>=D$Tyu}gejXmLT$crCc6$2{H$QUt+KzrbL~nLFVGVG`_(9>sW@U`{A*`G#~Pf_0q~E8wABqI-oo8(YC# -zldb&zgRZmmO3OnAQf*sk`O+ob>IgRe58aGwl!fp3Widy&Q?}-<%IE+1Zo@sjW)!h( -z%nt#Wu+L~&?=YenJAx6?ead=S+&D4QZz7W-jbWVcnbGCKqO8H3TmE=ixjj}{)Qyqd -zF=N?}zrO1e)W|b2tF0@3Nj`L+yBpquYOydY;>YQkRPt?WJKLYYd|twr7JF^;i3dfR -zh*bLwEKe<|p5%^nRwqSo|KDSCI{)m$=0pqmg=;)@V!s8+%o~>{ -z$u1I=#^JVeV3`voVF%?E*O|qo4)eb(w~$ZkfX9{^fbZnUi$yMnC|d;yfg&<+-NFMH -z1dIj7Yw~EK67TShc-{4j1S9i{>`P93(WD7Ghr;m4W>n&(uCwGK$9u`KPsvYS06$k_SE7B! -z1{<64w0d~CSd&*I(IlH_`eLKi2p*UIq`i&o_=M~|&AFB-Mta}4DTdD(W2#bF5Xm@< -z1~9JAr!g8cfdXa)v0AOXI08)x_N!GHlWM$?qZCmBM-M-Av@o|vD%_0=ZM&Aqt*iKO -z);a<@?>>I&D$J9CV)_7A8A644B@ -zTH{{m!Ox(qF_9zjhAOBL)kGMZWaS`ss}h3j@?CW@>QGplkutVg(j5pG}^h<}@ -z<`dwYr{~059!}IwwFu -z(GI0OS_KG;*@t=W!m4hthp2>ZC9cY-7N}$eRtM>KYINn<)_6QnY_^UvQYr -z`UdR_&1-&p%(n^!K^Gz2jNrfD{*g@z>;i)@8Ba=sQX!opjmN!Jy2_LBfYiAhWjjgzKhb&Tf(TL@6m=hX^DP11)Z!8 -zdK(LZ)f_xw+h6xDh_!;-ZY{^M^+hs48_8eVG-@iMxyx;9{G?MRkJ;u_WQN$N4i9|# -z*{UXZbI`54fB*gtZx9jW{`B72Y9O7HTH@5{Ahk=6FmwwsRk_eD!Uj3WD*S -zWp$W;`^8;kTLQ$9=W>xl*eS#S6dc(HPg=a%e}RI~M;w6wtx{@xW3x9|pqpm^3wg(Q -z1Q2%B6?F%f{oi}yCU^bq7;q6gIyHlVcW4*!v& -zhjBNZ1Mhu}ns9*xwM)=qHnL#46w)YG863v{x$x=#{=e$R*UX;lZ}5yaT=%V`!;^Gh -zb5yj?oR_0DoURek_WsvDv;}FQSKT*Gnr=k}EqQ#JMdQ)|E?fpYt-)rU?738i=lAJJ -zanrsfulAHx2Kj?(aS{pT(9pVdqvdfKM4YYP!*IV24=c%-{W3J~cig4iBmNVUYou4kT`cJHxY3gL)oPj+=xxWR)2n-+29ZlvAE$=H4qEDC -zORHlajbCtd_xR+z`au$KgLlMtPF`PH8K04hW${lkm2YB(-Ljp)sR&xP<_oNEJuF5G -zcyZG$bUHoY^yvm{vyY!|%V>-uxAEA_W(@N{9_)~3ZU8=(TsMr9z1(k~l@|AITr>an -zxqJ&%&6L|Sd9flXS0F3Nd*Ml{mYl`|N0=+X5J=1*TFq=p-Qq -z-S8v&y&PgC@4r9(!q>d;rs_JU|uG= -z9BI!ScQM4s_2RWj-{puFimwkY+u>gz$AlLj?ght-YXF_VQhL9W!GRZx^-Q)Qf4l+a -z$MbC!s}tmGWE}ANo)ca3oayEGDL@49XXbR# -zlu9fTZh{B4TOc6@F0T|*z0-VlxE&^p@B9}zhe!Hx4lUq;#t|E-nZevG3) -z5VD#PHdz6d;V-$B6CyA;G#*{gf1mj^WYLf1oRULVD1f~JxS*34HHei2qZiSP6^pr%uBW^ILuIPL>Aj&(Mbr9 -z`%l#|;Ob-LIk4>FE-*Txy@AxSLq3!yGro0Nx=oV_yK*4UM}$`-|DmI=#$#0hM@xH3 -z$%=0I@#AeC$+i4}{1Yl2_~lome!QZITGK0SMv~EBd>3G>$Hu0oM|Hd<@1~QjZ|)@# -z=&agsyWZR(a0JpW+8(>7wfy6+U(&BQdhYgl+u`Bu9j%u+41*69mm1O!uQ4L7yX({~ -zYna$7ee*TV_OuBKDl8O%MG|wpWNr_LEXNd0XKU4SK@qKJCMM -zl!iloO(~S;8oH`RT6v#)+Vqw`LMR`-Y*?Wr?zn*;H?twRU>nhzUTeI)nV+1dZeM)L -zLcw=dRrpDE3_Mw>Ar}CM+9>cyElc+SAAfZ-)-C>_T^GRD;Wze^)p?*hg9jk{Xaphv -z`%{vb=-dt1q5I)T-lWg2|)F9LoKYJjd(c^%vf4!7HkeYCF4#Sbn{Y!h#=+B=;Z1U@OI-yL@m$zh1mA)P@aDhc9Lyp^iHMIm=ez&;C -zOaeTNpZZvSq%Gl4?ZlBE|H&7pcPw^^1Y&dDkC -z2JcNfCXt!EO}hke5HLBaw130YY0#NGLx6;k-32UdKruPo$V4vQ-PrGF>z+42c3_o? -z!}LJokJ!aROtz;Q6f$-_n5SOjaf$no(AjAl{OMaj4<` -znk)ywG2>iwPBif(<6i?W)jxN_N_Y|c@x0@pa&NlwmlZj -zBCE3p1DQlNrd5N;irl*ov~az!IICXWtP;%zk9?3Qi|P1;$7-6{xaDTyv?>lA&l -zIFCv(*P#fCR9V@Z%yFNFmGJz8qliog)cfN;Ijn%=Q@qh9Ss|c9+D0<@cujRo -z4B$E~N}_4r{LYqN%dS3MaunkghA;@O29qS>a3fY`DS0F&No{VYpWyTZTxf-6zmpnA -zojk3cFDy;Ok>W5}sci4|Hl%WuDpalv-7*zA$|%MT5H@07Pe2~&z#5KX>@VEx0&s5t -z*htA=TjP=98yUEbZ-ay6E@Jj>L>oaIDiW^ga -ztNH%(4aF#P4BD@1c21HL0UafIQw{J>ql%Ed1oaPOojK_uui~!`@$Abw+FQ>B=JOEJY!sC -zCt4cf)6wKPnEHN{w?(^y%$9s{E)Da*Xi(h-dUIw57sozK?tOeT2hHTS`ms1*dA}3mCkv1Qt{gmxB=yXyffR+;~pKjr8%lVo2`!YEXPFW -zCsP1W3o(b9aAxI6n4g)Hp$Ed>&apKqQEV8tIf2q4V3-V(14M_c%`ENNd8uHMd_7kH -zjh_c_O7Zt2gmM75jT34@O7GC|u3 -zkX_lGVMhLYAo8Fz4-C7A5FT){wHkLlXTAC9+8aa5T#pKq_Jts5 -zZxpU1V-#N#;wMLLnIMuL5&0T#CDGLyqZlU@2;Ji@YDzhGHVwPGWSh0kYS&wqk-?}o -z`jjIu*z25<*mRkpN@1i)A`?n!YO#mH5c>4FKfdnazWUoe()WS2K6BceJn_*&mVq>S -z)aFhYH_K6>7+EbqvIEkZCx?hOMo|MnHt1)zpnC4rY|)mnYjmG;zW60pU#bjm_30|;K^?3J6d@BWYGzJBa;R&Wh3;_dER4>eFkqePoh9Z47RRdTXi{dCdGsg8k{{|;f8Lk0^5JEW -zi`A*2N`~yQEMne|jUuKbWy>j|O#{McXn3Hch8_=+i@YFsw3>%etDIy&j1XVZjOV+r -z57hi=n@qjmf60`fngaEQRvj+|L^8#U`ri2QZkfIji`A-|E1<00Q1@xACrs3;utB1u -zrv=&&O>zNJLQ1LC65!kiDl6oj&DAhsh -zfuNf1L%mZDb?I}o9P#wlTyV^YaTz|a)R$XeitCrl&Y+b^Ho63BNV2BxQ+*5Vch`ld -z)jWY~W=j(i7tUShHXj<{=TV3&)Ze4QYb2GOn(LrFXk*>UEKr{u%R;?DTB#C6UD@1- -z$hJvdgv1x>_DHg{UKtwQ1Iy+f>1D)LDqVD^tz;P7DnD?7phuzBp~et<%K)x`-m2F) -zr{vwqh;Wg7td{&d7`rauY0=P+^y+5ji__pwRy$-0q7_=xG85W?w#{qd^d~l)z@>8D -z4k#|WiHZtwc}Y<_Jo9uiq~a}?+L0YJ!9-`r0NEB&avkTQ;fV>dtWZi07d6V(!*cieK56 -zoo6X`HX(LQGs!(&&K3Qd+Sn0LKPYXqGQ?4GLD=+K%e%OCV#mEFg9ST5AEJ#6y)NaU -zoMkQwmAx)H-%Ts}#7YJEZ72U53I -zHpDM&X2b(q8~%&LE?C)MltB>cILA!~RP~`jX&J>$Ot55HCNLsouv*azDnP9ij;nq< -z;J4|33jjV4o5Yb0dgI{ -z8;VQr@sx%~?qQDWGd}1=nbu|4hQ@Qf5qg$YNRR&GC#IthXlF+l18o+FRBz=w=-kNV -zVzl<_YWw-uWm9k#zhgrYyhGYGMo&}3=eeBej0gJQ^zG9#4)O6=LU)jPiFd^Ho*I4q -zP5;m$I;}Q5Ov;?CAzQ8NlAyXv*5;)J6$aLX{|!>10ru%FK8 -zZc!&Xdub=-`xiI6UWM^YpbRQl^&I-6li44ELUd5<`#ml2AINWWdIhNpqmCehaKKBl -zv?T1f1R&Y1EO}Vkks4{ZZVBG%9)fz#HQK{8Spynk$no9V5v>&RN&?%xq*c*Xfm{mB -zF@ML6TA|~X@eP*VxA_y5vk3TpAkw9+TPbTaxSK`H?qPE=ZPY9v8=$!aJiL1govj%! -zUDulfo`$|b5+iaEF)QOsnS=B+q3q!BO%4QUP+e)ARK_oUTr~R=&qP@x@h!T7l%%7Y -z9+{rl%ZnbOGO14siAzk3tJyEL`u$@2s@Uhhm;RfeS#UOE*%hqK`>f5xg~izx@F%Zj -zbOZgz)+U?Ihs1J8Jdp$6M1wro>V9NjACW9K9?iR!6mO9+EI1IAqkR=NO3pgh+`y_9 -z6Z!J}g~unABUW3^8EC;m<@#X!k*j;kJfKbm>I5rP-W(IUX(mQx_t=vqD#12cGV%go -z)v>v+;RF)J&!++Hi?QJ68>>!K!|=e7P;hBI-6g`ss2W`S#^x-_G617!b2ou-MvZWk -zIFMmkxzA{|@9fRpJel{%6mx~~8j)Kh?+^JJ-(ab+(~gde6jJ72Zjk8ifMshGfh+nZ -z-(W8b`t{N=s_~@mHiuf1AJrx0Mq=U4xvQc~2H-b8;Ps%%UcP`kT*K(5n&dI;s;dw%pAVswRioL)bysn07<9Y -zPW1OXqC0o3J7k-MyO?DAjQnO;f+KMKfI@qm4>HHt^~OZ0M}l?5?jc=kcd1=ug3$V5D?_Nj~xC4V2{CJO2$UVs7OvKM1aLiFAN^pDBIR^Pqy^dhztmb8!`t)`pq_QfNgp+(pc1zi5;4|a~(I_VWoJS>c$018?%MWfcUA+Iz@gbMZnIW-Ge -zjF&1OKcW6*XSvQ-)a8Q>ZiGhUr6-pSMAvZ9>adu>?rRJCRDi4~GZu*9Y+*`VT`0d% -zBhB%P;1zcQ*GGGGNn2Mdmnpzl|9b1W)DCrO72TL-QL7#K4l(N^i-yC2cY=j@MTV2B -zwB8Gvb$y!#C>rbC)TZJ$gcbK=5ge_%%Stu8aaY|Kbk`$lQ;xtMeUkjTjDZYK$ii|S -z9R9)Fa&nr@*Q`@OLMUM>2cu}zGUq}k*Yh{Vr|4qH#{Cip#7oeEfvhNYZGtpM`JQt| -zI7JTOjp0pKrI>+O_0PqjfuqTNGg_TSTjmVyxgFIWc5|$}V)_MpVQ%a`gpzjJyT;?f -zY^SZGAHpY+RjIwyZDlr|egpOo$qcS(86x@Qxp;{YKtGKm)NNZsrbEEyWyR{Y@l2Ng -z*B2`Vlq!CF|1L1&?$J0W**%6S5@?_I9~>k@T&FjUC`&k?ErIO(x0&on5_7r8Yls`U -z3oAW}hV%x&JSEP)23!yKnVlQSa?nrEwoCa3l)*KL5s4NlxlIT=ko|+4E?1pBPq0yu -z?1VQq067E!E9fnaS~#xEofQcUtr^Y_18wU6TCjo$QZvZTYF)*hAG>4JcX;C#2^C>d -zF;zL*7*F(AZ2iAs*`0dBPckzkN9|ZL-lUZLmh;vuBEC|&wKq6VBL -z;jKZ>zjeS2Xb!d4|2(H7MNNS<$?l!P`ADR#a?dA&PE5$8ueJMN!r#&BNMx$?gURKuUPcZV62sVCzFD -zK0#+jTLnD;8)C&B0)8ZOrsanyLRG~#44}@RlQOX(3ob$2lQsI_wla_Ilq#Nw*ezQy -zJEfyb=Z@X9f4HAq_nd~3+0kvhL={82?G|ttkA#Ua*KcrTy=tQA<@n?0P5L_M&ORh+ -zbRg-rg>H-hYekeL+3VyC_11ienC~z;0y -zva)z}NAmI>;C-JsUIMFl8Kp;Ef$r7q2wz5K;KuqGt@4X4`5t^fWW(GVvZZ!P@|RfnYqzq|2d2#|q% -z++EEHaT)|N)52H*HT&x9E|8VM8tPEsE69*xDqvI4CA+~_XP4dPi50TdJYk?wEHg1v -zN$w!87?}pRs5zs10VZ(D4sl^lI>8AARB=8-+`6_Ls>Z{Ay0aXT_u!B;X;rU{kCjbF -zm56h^17)P@zRgnuyJPal)&wq4(*X0gN4tr{7#2jf>)1V|>{IUb -zV1DBkW6HF00dw#`&AZ6W5u`Y^FiQ6WM3H -zcS*0%l70XF9V=IqqG&Xdok5!DVO$BrI{K$*S$ux#n-S`!-dic48!NS8IaMdQUIy?$ -zDZ4r3^x8XAw5Mzvw}QcD+l~cKZch05!R-XB0?L{RU?Gh+q^hb&!Y-LWz@VPlG}k&l -zpnD+YZ4E)6%hcq~-*b-hIf>omU^snxdJ7vYZm(OKRY8MD7+N4@CO_fvJzd3dLlULH -zpCj{tR!EMx-nsaC19l-cH)PX(2X=T#>+K3)lm|I*ws7$hSMr~eVCCLIAhMt^;0;OR -zsNzq;9zaSB{o&|;iW7A-z{D!cWc?@mOyAH>+nZSBj(8@pvce!ZCLj=s=;5^eLQZ7|_97FB -z%#RL9D+LnpOLDYeqJ?>L2oZ7Bs0spd7NZFc^d8;=S**N_-+#pQ)*QDU{niUZc!hOg -zOnw6!?EexAreWCVLIFQsNysy!CxJfwzk^ma@m^yaLbsX-=+)0l(w&q}t -zB+n6gYFxWvqfJvMA&zR6p~E^C9-*m$UygM{5x`-jWHo5$S>_QRvEK4 -z?`ajd?Ns%iGyvB7%?g}Ei2M0;MMo}e-#$X1bAj4Mb|$uPw07LOPc5=+_>uQ5qLR}n -z*;i*r27e&D@J=?-@7n!x-(7fj&G*W?@AX){zq{|&C8yaQ*|6l3qF__A38;jfxy6XF -z1&1P0t3&Myn -z58A`F0K^k8B-;A1Nqw+slI**rEIxDg8a(L4>HNab;&jMM*&I8gee*Pvl6M}tSSD{q -zn640N>p@2KS%M!-X9d1UYq$t0X3Zv|$bt?DI(4JTWKMNZBSXQ`Zkj5Vo1E62zX2cz -zsNS&s0SB>2G=;3$D&T`5+)PP -z(|}5UL}X4i7|l=bs~~=Xm}NdQ7<14Z7;P)*A5Ja^z3+i?pUh{MItP}%khf^u*U&L+ -z`#DF@b>mK<(v8b$UVm~5^Wqw#dWUO`Qi%_naZOZ##YeT_Eh7s`RtN$O2ja=9(Gl|n -zymsV1Wo(7ps%?H79LFc;yQP#+OI1T;IjQoEjI;2JMMoLR3$`McrJ#}g>P3aq41FT$ -z^0{U;kHFSWnk2nWM1yn5>?iH-3D8RRG48aH1eAG|7?!HmR^*{N00~i)170ZAxgl64 -zY42DA(sNbT?HTn;%i?51K;RyNdw^C_GBR3jbVCSbJGJEolWztY*G+Iy-K8E+{7=1s -z5lwz{*Ov~Pec%cnZdTpEMHY=(v&RKDkv4JEuCRS&Y}2qanq^vK+UVgDDniqc?{({z -zq>nu}KSAlFU<&M`W6h`Xh?jR{9jO -zpIT&@f|{sEtXMi7R=!FS&)INAx+MpMiK`IP!lFm#KW)w`Ex+7o^Z)Qw>rx>nDU4;0S(8hj0IBCw`e!$zP#m4=7EJ4tBe0U| -zj$#UDgIKp4z0au_6+e?PD71cM3Gxz1&lmlX|9jof?hrIaPG*V7=BthR$BkI8`yU@H -zzMD%!9+xSOrT_UqE=L2>we`nmC1>xSU!=V<`r|*o#aYrnhCyRaDK6yDM=5d<%y-YlpkXhNTo|QdZc>S=8}PaGr_Sslk}mEO -zypNPS(x-7kWHT*Z0WRs#da@N@z{_{thVJOVBG~!$Mo-%T@=d#kkz^!&!x!ECnq#T5 -zbCJJCGb;q9+BGhrQ5^votl-I$Dkb|1nK6&QRZ(p5gc6ZKACS*H8<7)jY-`4Kufd&AB`=b=$fGF -z3%Uk?7vb(FzZJFMbq|-@?(L2u9y@@ou`oRDo(wOKfO~&*y_hvzaffQnCFYVusIHcr -zo&%PdhC~7WlOw;OTI1KOkiNoyMRpX}+3r@aD{%is0RwlpHxfO%4w0E_5kEd=W*Fn0 -zv9YhqDImVv#-PhVhL}h!9RouE>Yo1wBw(FC>d9U5`KvXudX_NbW01s-iyIAC7^A*` -z_rP)SXnfo;U0^zjW1CJL-Q`wCA8Mb9Y0)!us8vQu!!PyUBhF8K$|5T>q{+;A&NT6Nmbikgi~|!Hcxes4n-mE+c>p&rTvz -zDQAwh*65^EQ*9n>7CC1HBG}@D=7UrNTsJO;PpG3bbCsL(oVM-zul!;A#oXW|x<~Hc -z+|ox6W=FixT614}(+RzBMqs1YUouWw8&%~-Fk}Y{+c*X(-IE>71np=sb -z3?+^U_nb>F$poxka&=r-&1tC0{?WkK3Dj_0(% -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 -zPN!GD4;R_?7;Kr)@=dfqc5?J! -zi~xBoRZF9B)cIi{N5?AG>m}YBvO6q<1tRg>D<`J@;yJ|cG=m|5nO(D3a6FZQOR<-Q -zM8|?+dYI83NIY64B6sqn+I?LujFjtuaOM{pLv;NBn(~*to<2Ou$6RT1 -z9~rzIIx}}iahd3a?~j8l(#(c+wgBi%s4YpG3U~+l&wH{Fe2tb1ppn&Ie0!wHTlAlz -z?RPuat70B5Hev^q@J%b@%+ai5=1{jRnzhn}siA!+|RUi7Qm`vnNU>_wKi+@lWXdwgDME -zwj(&DFz%crPQY%M_h_t5OlXfa->RcA#f9?5l8P -z5g%*9jUsgTJGu3|Wl^WTA=%&(Q)D&yidXsieM0xiiPC6a+wSS7erR -zZ7^&KZfRHr41BvKLv06Kk^29su<*uVHu$PdJ^5LGYJ57Y%ath2BAavs4TQ26n(GW) -zM(&fa5Gh1fXT2#BuyRE;Oi9zB8JVpS?NPzST3jMDC$SW&2$Y6Nc}5~8OD8()41JUPWh)f!;Kr+HZyv_r}2$#uj+OL(|E922WC>Tkj}vF8v#>fu5DoT|*n;nGzYu -z=K?Dr)G7iD5mS>`$buQ1ISel^wxY7RGh5+-Hcm88G~PNE=hgTWIW%((3?QktD`FP^ -zaA3Y$90EqxLeEV-bOxP!*ebdst~-;Ob4Hd8@y(fYd)th;j_^oEiR8Q$*)X}+&-nW2 -zXV>`vd<=j_NT&MMGt`wVi!jgY<++a+C>o{t;B*N0$t1IZ*3=dSat$!*WKE$!MVhS; -zHI#1A`fABzf6JY^%oL2USsG}HVjsLh4lK)^Wuwg0}x`MjS79ueQa3sBWa_R}Idh68T+caG#$vqVO~F85g7&B{3Hto~;}d>LCuSCY82ro|oe3(| -z$z?RVw%*i3AKfPqdl8mgj2d>kagYy|yRt|1w;ItpvTf@fsb?*2Y^GQ*ScG=eK?pMn3Yjy-CE -zy!8B4u*e%m+QJfNrm5H~M*^ucE=e6d^S+5JGx!ihQ1{#d_&Wjgbm*1g+U>}i2Sgb% -zrop;l*J%IM0_HU%Y5sdq$P{}7M@n~(|+|12o{D-c25y9oEYdph6#5XcAf -z-Lc$9Yp7qnZ^eo7-GQ14j=_KXBuo2AMw(b(hr5s3)l`M<{fB| -zoJqF?9xYu^BrXYj2q;suXk{(A()3ICkHVah2^?@nIsSIck16gnBN5}+P$$Jwg{WGc_a0AmX>Jldh17z2g1r`rCSoh)LKKz%y -z-VZOnnWve$oD0_4eX>5^_h0}1Yo=SY?pj#wLS#giS}wfwO#Ns_EMQa;!0UzU07OMx59EKN2cNw8q-U_kVTh(wekrY20Zua^{dW^K=8ZM$@j*W*aHRLuCt9WM1k6{{k9wD1;aN;eMVE4=P(|C;@Q<Y> -zQl4?&?zP@e8y`I)9lDX}ttxxx{idA4Q&n@lkcIv$!^-QI+H#xsRr`wi?XlVuiR`=A -zThK4u>!Z?@=h8Q~c>8Tn^eavX>7?>>wmhz|90oauZtsWDOg`S<3laDJdC$EmkHJ60 -z53&K_lCn~?yQ{`u|JrAP`M5QW-qS#Os8MDBxjcWI>Hw;GrJb`IpXPnE`k;qKaPNcp -z(AD~*KoyRUm&JjvpbQ^#EZ;O1Yx-nC6>$b{KImP%|4bhmFi$<5Ztgxe=>qQ>u&gWD -z0{tk3R>(izZOzSUf%e;NuzM~TUGME^F`_s<9 -z*Vom4cDtqR@$q3N;0eVB+vf?;F-bGsopGcb;FJBAQI0F)M*AY;|CX2kN2cxSuYYut -z-E@NJHww!aNBRW7Tf5mk{lgu<21r{h#Si5^Z@^fYe#OtWr0MxTLezEz+9aKg--}rp -z588kLU%j7~Cd}!(07TxmEq=V~S5ZU?eJN{EFR|S~?`BAYeYJ*SF&yqr94=IjcKjaQiGmYz!mtfbb?;oG`LYsBe^~O)3d7>2$ZKNOVCg}ri~t4n=8~e)+EHRU|d+; -zO0#p=2D8BUcP>(UsD@0O*S&MrZde>jG!9YGVX|w|u*Dw#acC1sQagYXX@Bb}mXOjF*`!oin+>YZ(GD~2=!>JAJ!qm5x#`k48}XA -z$t6?X2?!?;R5(g|C0F3-sw%(>0aok{4#}5SzNVV%?*%)SezuQ52tiy*;gdKf%R!G` -zB9&dJ!P>IEL5EBA1&UCtfd5=_%7nq%nIzckWcssHqh-UJC+nl;8v}bYF!T@w1dM+t -zU=n=UtHb|wq1Bw8=a>%}@f%8ZQN^NSB+&Ng*`9x;;S=X%h{IjB>;Jr3B92Q)@u~NZ -zj3mImU6eJ0;;Y5)YuqkEzs2_hzG!-#(oGMyr$*nNMgNgMMv50zTp4jNQ;hI-XBm^| -z+XT8-l28#jDE=DCV@{FFIZS0^d66fV7SKcA*1n)oIKkv77}pTK`qguVJG=S(*A0@! -z%4~WvDh|nd&?YoT3;~&G5IIQNY11C>da4x0^&10tS#WMVxaWEmXdF&PqBPw1AMY$h -zJ1%lwI3I2l5ZrksPO21CmFTio(JqMxUYZimuo?j}v@BCa3vQ=*;DjmT(xISUV=_oM -zXR;sK0PQ}RO69~D_+s5SbD5o$o+5R7 -zIjh7cD^00ZMa?uC;m#F^no9N3?PEdj#y9nnJ|wD>De!{&Io>-}bczXL*I1 -zH-T?;t2Ve!+3ThWlX^s!_!rUj91Q}0mzsamRjOJnG>G?8FYak2z+;6zBOtVkghgk} -zHtkre@86S9nYp5dVFe^_`e^)`T9X8U_!fXM+MvBc8^V}YJVB=2t=HXx73e*q{m$j# -zZsUD<<1DJmk3&%ekR8j#s(>X%rqbPA$qB}dR$EZ~GII84GOeJ~no^C$bBx=1A;Td6 -zh;1XqC>`L6U7BQ)(bS^xKn((iMs@3w16Dgo^PbES$r7RQOin>BODKAAPe`?OSFP-~ -zJpIa)wDew;YR@JKNttWhG@j2LW+E&rT2m>RRCy*ZCH19+bNdv{A}-NZ8?P)l@{z!y -zkYjS?CVDNDlR|=X$*3PLWf}E1wAx@x-oyk0X0M-)-WCyq@A2OUT2tJT!O2`>f;JWL -zBRB3wL(2E$WOF7+#QxOJ8V(-N;WE9ye_(o1VGZ8Zk{yDT@WZ1nHcff{XNkP65$Lb~9>G21fn>zVHq>7V-*7h~f@c -z4=%|Csh1TEx5C7AbY38p=HUA&?qre<606EQ@Y0I$G6;YHgQt~tkyQgg+Ebqj&~bCu -zyTDZQe1>U%&;{yE)%_Zeh8{{xmYuu?tJBq{lM`|v@TJzf21qLZd?s3zIvSguFco6& -z*c)SfPp$TcRjm)<*L1=P%7CZk3wLz72UEXf)hnTa;0CK2rXTD}3IzCcaH9%R1pKYO -zTAn)3mZ>p1af2xK)4@o}hCXc4-~=YHFd1Kk4lsa@>U>M$P{XJV5->)*nST@D+>0v` -z)w4H`>KeytVao{0RpTd2X~)HX!THHB23X;sbtbY^#V^L8nl0we)ehx8+}S}thYA~Y -zQG}PcUiO+hPtUgp*Wi3&F;YoRb4ASpEggkeulHqzR7EMPJ9dQ$SkW92< -zCU2m~H7@C9#!_|XtI-!HKE-@8cn5|EV@y)=Jp;Ii2sfmDJ7*T|^OvxsN -zk$905n0}ivI4+x$wtg<&x_ZS+LDfCkbzF3Nf`WmWF!UMh=I75`GBby5F=&LDghBK9 -zOSLk&R2>!~KdVfcGzMl}5w8^)L&md3;?8YSMickdiY-unxv$O?n;&}8<6Sm#k<;?% -zTJ+mjA|PdG9@M6y*Kp#~t{@#~d@52!`Ky-Whz3O6wub-_<`f5fU -zEqm4(Wj@qekA>{?<;$?GI9*MO+5@{A-VnEiG7BkLTfRXCrw&%?i0k*^9yE0hl8)e8 -zy@`(GMMy1FiWelvTD3E~Ay$4I(%^#Z; -zr*-}rg|qsmBmENlCO%<8Ta_$G);d=)1(3#6f+uS_Tu0>U+CV{G}e$a?jBFwe^ORDC|1Te$z-F -z69H~B$jxCRk?bNRfkobZ<3CcZJ%UgCTikN8FaE;hD^Bynw6{=|mu=k|UQY(PU1;BN -z91Jj8APOecVDR`(I(s_sCTcrrO$z1d>!@{SC|CnO9d$-RTLj-a*zR6+F77n`8 -zH204RKm^O>{Vp9M%8s^bc?)^@mwO^HWnP`Rw6^AboUO%|Z%fd;824RDC4pX?_>DId -z;IaNv*k}L`1f|kUa*(SHJ0`T`lHJrh3TNnH?3VimWg+u-NHH-@n?*B8h$-WFWTY2? -znc)^KGdHZVuR~FY!X^}vTcG5HhoUl*)s{sRTGi;0Ng+lC@5F}pzSBEIp&5$1pBgSf -zG`)=z2OiMly#@D>R{v*=^gn|YlKx5ZPNXNs-8c-#_gJ~=5DXhWK+*K1y#>5v5yOLt -zC|8)TPTJ?lcPCSC0aEjUUt!oWfNRs=sN$6g`dKZPPsEheWNz8D)IbY4z_9H{w%d{M -zLgS8I^NYk>-^b^S94hdVxxUZX2yri9VBR=h>VbTU74;P>@=Lyf5!9+?7vQKSnoJiSPHkO1^ULp-ZAVvU3uOrb+Qi-o -zFQYbpLUqa!czpQn9CYto+Kl4KncJx`bu{BJdwB_iR|Ec5R7yx-o{Yf289ex)MCjCv -zk;>f%#z9G5DLP_B+dEYKCN?$?{w<+wXUo`tSup&UKbQEj_(}}YoK$59-RjN?^!gZ%*(vhZQ=8bvFoE+c!Dr!KP(Y-lF#Ug0a -zj^hiXD?KmLb$rIcTCY6`kmof#r@$E50(`K|5$+SpFD`&4(&`K}%Kn6zdcr*$XlKMY -z6vdga_0_~)v~Jre2(5wCM!L;j1JoRBBcV=4j+Gif5}SJr2zP*&lE2OwCmED9`W%wh -zn~*-vRDWAy_NlkzuvwK4i^O>`BpI|{kwK|(u^G4`i$h-trbMaTrC~@fj)W7^afX^) -zGYc0;0JGaeJ|wv|6PHDRTnBM%;hRTwx0gBLXiuk!6U{#`ZuROjmZ9rW?UtR+Wi_r1 -zZsT;ApqWd!pJC>V0?*05Xx2Q^PpwWF?zyOXKsOfy(ljXO-4c)ZIL2k})c76!jjYt$ -zq)jd`Mp!A+in&JZo2BxjES;H?OpBjK%YYpuXPV@)}fglv<-exQqZ^Sr2Q-ajh!STD|E}NBfr2kNkaNTb5Fnzad%LP2$D#} -z1;x@NP+y%zQ8cRRs@xEIW=gDKOT%VD+zG%lJ@Rp}tG5 -zoBTgsCun^cq~DljAj$SUePT^uL3yRQC$x7AYRWC60_%ykZnX|Kt-o5IV!%~^r`p7g -zxJC#&Wq(sge5n$St^pZ5kw@WxD1$qG7cyj!f+_X6O3v$|BIy0&6PouAv%dmpB`z}A -zz|(^Px5jTi$?Lk;#FuJ3 -zPFlbd*@uL1(FBqTqc;pwPF>pzc=Jaau>~ -znCm@wcC?{@oTyY9|v<6HR%AHIJrExyCD=2!Ta5qF* -zSxh8Xd<$hd7X3#*+v+DqLmDy+T{opYhO&}1&@YquR{-n+%Jt^tHFAs@`Tp7~%9W&! -z#!_J@3mE$yY+S9A>#ahe^P999(hS4*(rDfjfl2d3eLabA;mqyT-$|s_fSP=h;uTq1U5Zwj|9O4RJ;tl5a)6#*X|IZ)@~A24UJ0!c -z#xgiITH7Q39}8U2N}6^RVnjFx%@9dlK4l$mvRH+r -zbkovmvRwMi2oHR6XZ1xqaFepcBB#s+i9j1*B$!TMTgd2hA7gAxyS`PvAkKhyw{CZJ -zHxwyD0!8&SiO;M-F8&+6atOY7h+T=5F`gGEn{y42%5bb>rUv1_22z6x>jAy~;za1wneBnl3hzFG#E1luHf~ -zef9aOx?;B7{8F3-JxB*0YU?tUd5B1pUKv6`?fg+OyYwUg27uK>qI1(n+Lbmmvo -zVo-)P=0uiC8xIm -zkrCS9vB_A0Tl43g_8Nj%d)rzun=}{R3@QvI%zi@3@3 -zn3rT7vH7X(o1AO5#Ln;EsIVU6+w5$%;zc4c%jM3pBY0 -zDI)H)9=*{a+7Cz^hGrZ^>`{w|Q1qnOV^-Zp%DEvA)p!vavUaupoSZpY^13i-jb5zf -zU|Uce|IqvNU$l>;yg7)e21T2z;f3f{h{aH7VSX6zK}qK) -z(!_0emr3BA%z9+$U-|~7|98v>pED~^^{{)o4o~;n5ky -zC{pHi!)9>(suXr~(Ct>#eWxwHy=gs*FY(Fble!)MV~`$~`R7`@fZ@KN692}?ZtM9Q -z>2pM*R*}8s$4BGeiyPvBkJo|Ea)5ShJD#r6#5+yIefrPAj7pV1L+<2S{t6G2zd}+F -z{CiV(`W|S^-T3hzW1s&q_HvgbeO3nSKhF>pB)P|bPj>H*_wS#tLm&Tn;^%*iasp-V -zi-(dzjq)TOfw@2U=KKMyioY+Khd=%=#?LoAw#&!sz+Y#ajwQZ;7+Se3@@V@_@XEMk)UexlujDGz0@aNydv}YT`2`Gj&0Q_h5`g%kBUlaj_m&-7fr{DhC`}kl-Y2@qZ -z7L&|lOWj`-t(7RPRtAS7B$)jTA-%WSh$m@>01a3eEOEs;@f3U(0Cj02-d -zAKQ8cj7LCfa@=;INXyGXHtfx<3NKZI1YrsOPYs_4%s)nU&LK}B3|EC(E&JDQK3m}E -z;9@2=2bS28-k+i0M>HIO+ani7gRC{9#%C7l#tRda8bl~rUN^NJ#vR#8nNLQ$h?P^? -zD~Ze%j#kV( -zqf$XVCBA)l!5lRuQ+2d83RX98n9BjIAo8xXra0v#*usmk=NJP@>;3(2I7z(L$)}XW -z$faW~2Myq>7bp@;{-K1La(j5^4Nbe^1!;XaYM&b5o86~1QN(g^upndf9o`f8P2~8> -zLHt&WXc3;1wqHZDX2X;JMmyT6$!496MdjNy)|{>r_N+EM^bCNMqtQY`djFW%ML93| -zaaTbX)=$aPH3@;vqzIpAH|YK_n-6!21GdWFw3Z_h=PO5cO#Og{>gF;6Oet{!k(f`5 -z=@#e~xGlDhr-MYkm^x$qQT6DKX0&q!%DbSgwb*PeTW! -zm|QM~fB%QUTp%tSXCAanld&SDkww6)62*p%?sH=qZw8QREm6yzsc6l%{#fszU-6hg -zFlO|qVhmvjL6lN4?ltd*@CeKZy=)Djw5?ebo#&;(*@T=RHm2+d;4w}g!nJSM^zW1DOr8Nhx-+HrlNcO)$(98cxX~H%j -zAdZImlpbvt*Wm&5zzZR*)_frDT5EJrqv;#@C!1Ip+c=-^S>fpm~n`%(zy4A -zr}%~@au?q}Ot^amDmzukAmu}LCIB)(&A)&`lDc99Q?i*iG~QV#Yem7g_E8MX9XxNS -zDosDmZEej#CJDqG5FE)gqE%m7M)zxk@iPoSe!z;QrExIxLV`4JcNDdAaNZ-R@g*3u -zsBsWcZBUz5JF4k$VYfs%7N-sPTO*eW0yZrX5RfiGRf<|(WG)!$n1C%Os!oH=idMjQ -zb2-(~IY6DEI&#|H(Yz~GAJ;|Zio-8dBTY|dXuOrlvEeMYvJk{F*jp( -zgCz+SkUoEl-YrQE!JnN9E^sNAZTCrvrPZG~SANiAod@W|^8iV*^T74BdgQvlmXi!G -z1GII{1KaC0$bclT{S35$@~TaHgTX$@kDURBKonCMijS-};MDCpO)NTT*M?*xx=qo# -z07qi6L78Fsd_~0$XcWw|F%?r7nh0wnDS%nF9626EuCSNvOCH1+J_U%~&~k#pY}jhQ -zx-s=oS9@Yn2IV=_tgo&5AIb^QVSTMFjOQXXvwpd8OedB>YJ-L58rxPtn9Y^ICjQT5 -zPXgF6abHuerhngmW@P*dO@uy+7m`{KURxqj&DbTNRvvAPMH@{pS$eTvv_u8%5xCNY -zB<-3;Zoy04gS(P%laPm87=fC`SVM+ub1rOxTWWa6JKmWW_!?m -zt84J;jmW6D%k|nVTs1$ERJj)|FY9$+x&UUCvbhJCtuH5p3(iNBJWXBN3>eF|xq};x -zJLS_EH}YZgenUz9QO-+&W2VQ<-@cfo3;9=6Z4M|DC)au?cX?uq5w@lwz!A8{=~ -zvYzP{;J5P9U{knj;dM+Iqp7;iBs;y`1&LhR-n5#Y&q3zA8ovfBmQi$2v)h}|f1m8Iz{uq?D-?mNe0NRD;YOoYCI=K<>bedqdhzQW1*mw%m(xR% -z;kU|!DA#9R1`1QQ_;&DmAtXXMf+b%m&qYs#sE%Xh<_m2Jv6>zZ+lt!Z#$ej|s(8t` -zp_z8;%Nwcjf+G}7F8_fv@rgyA4$2i$({zRN%+OE-`e<1_3EqXf2bO8MK;f;BpOv48 -z23C~4uUGQ;d|Cfg*QgH1p?;O@#vzxz)WH8qhOy>hr4$&iI2A`}5z!ZdbVoVTXT)c6 -zogl3QKQ7Zj1L0~nKx!CJbINgdi)*q;d&fu7S^Svx8r$SM#z(eyoLLv!#guNI)v -z>Aak;q@$m@w>%=bbP_IM -zWmGg{%0Ywl9k3MVi_n(FXSA!NBw&f{2-F5#5zG#ir!#NCjz1s}s`Hei&b -zN!QcdB#BAJ^qX%`dkc8J;9l0Nj&gOn&vM4b(a(Zyn$!EhJl~E4Es|qH=`+3xN|ERD -zI3Ay?%m3puZd~fkJ7?EC)ca;JVH>j8C^@8{Ck|#naF=oeBFWPhQ$mPx@PA$frs9e3 -z*lz45!l-;@@lLzU)TRuTBD!7}KbOVIc_6O_U<}aeyA&hjc7wHVEr;$*om{-5m7JG- -zXsiI1juDu*6|fcD^la=gVqCdMr0TJ}bs6E7xN;;R`tp%HJx3Mtpdl?z<Yn#p|2&xYO)q3^Qd8X|Nis04lLE7B&OzJtRN>#a=oC*m`Z^K(ngU0XVCqI -zd_h+zW?Gt{1^W+8r=K(kby+6ALG{+q=dY7o8b~%XdpjhH=hq8(MVoYtsK75~*mo)w -zD-SUObV1ks^qu(?Mw#=ulCDao);VRfDvaNB#gI<9Sk) -zz=Y(rl7E`p!_j}K1FZ{7>mK>_pafTXRfHlA-j4ogJH(?o%S)lOccM`8MNu!bA(MT+ -zYh?B-;9{i`I*cHmh&+S}m^6--=Ier8%$vfpd4@+%Ts4R5S -z(S_I1S&#UzX_zq2Rfi=tG3E*u){Fh1@1`(>x_ZkHi84ZG9DEabHak|Vn-{Lu{AIFA -zk@fSZwc16R%36v9SW*sLR0WW&V -zrpihV;ct3JgZAl*;xmKv#r=>E*;p{pD6)=_R6TFm?#@U;Tb6L;DEJIZ#0ZC9X>xdh -zmcx1_dtD8G8Joz4)Rlfkz-LiqmX!nzFDS*%!U;PRW_hj3HoumuV|uoe2)#0|KpF0&Ar^Dt}&1Z&t_3HfbIyab#tr+ypW*LwGmV=?3H=;CW2vUtE#r -z5k?0d2_%(CY)TDi@vET%RGTgdfOzRNs@!5&FS{uwTBdis#ThT6TlHVH>OgiAv>nvO -zO9B@g)99|GDY*nscWlmRg@$33io+b0Qv{a1rg=IEt-zWk|6*hSrF3)`_dTy#V1jJn -zLV9?0T~sxfqH}Cz7xJ5=;F!R^ztFA{CsXJb4o1i)Y;Y??ole$^yJwYf6AAo9pIOJu -zs@KE3&UB#Isb8C`GrYHJt7)g#x!dtTBDVN=ZvkAJ7e(J>r=Vwo#-rR2mMEcf%+*G= -zY-Nd5h}ZthSX#bH0*yX`C;&nfc_Ev$e$yyafApAGU`5;U1l*S$2u#QEYc(xa~3-qpkWtb -z@W4n~55b;>Ym%2U(e`sEa`TavX0_+%rKwfW>pYz_HgOy#S$nVoIAk@3WieP(y45K| -zxzgc!m2(V!frbuQRQeFo6to;X##`0ed2#X{PKtP}P(PrBqIJV^E{A -ziI?37w+6-ld&G&gMl->Bpr+LYLhSL^Sh0;qwq0KErAK(PuQm({>f_mHL-RGpNY@rS -zHIL>;gPB#+!^X161B91!Rh^oxsQnsmNGY*hBF6_(qQ0ysIADv@rd+`XI_fW*_AMpD -zc&q>?a#o*v+^2kFleMe0Wk#I>NKo7bmIFmIw3=r0!4VeyvXUwIi`HukP6gw11D6h_zVLzo@6pcMazYHM;qvV}1qRzcYOX#9CbU -z^*Z#|UJW?EJxi -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 -z48V4<8UA<|r7<3AOJ^8pzZwuSX=Cc^l$tohe -zycN0aDJRSZPZGQaGZuf1CFI2QEd0d)EG?MmBBZeM5()u(q*ow(UKN_43shQ60!dp)E34?FSuaa9+_jG2e -zh2f}92BK$r><~F2mKI^XD6E#O0gKV_Hex#=G~e!R~v -z;9SMSyf*3AVbzko4+b7UelgC=0QeudL-Gk1Ub!5~0kdXMB{sxTIDGv02N|n18|~0} -z8gC&n5;u23cG+h{pHorA-tFg_2%2x8-yV`iX(DZ^o%G^J8)N5?o)Nn6x?*qeK29lD -zK|4J>uNRD~hVWB!f!lH*NX0TgkXezOgfD|jr%y-V62Nw4{xlF?vh5)jQJFqwXGdZq -zkPKvJL`C1`;v8$Pj_?CxA`_WKuNS3H7-fK#8O$83V7lCMn1^0eD$i((^zO>Z5O0Z4 -zdP~5A-Zd`SGgyB@@Cr9o#~h*jVduo-I`kQpH8iLcro5&hme+PvEM0k#S}?O4W~W_5Fv&n?=g!_ND3y_wCk-0>?w>8Pb;Yeh}62R -z-d_s7iGC_Rp8ReMsEh?(eswKRw66Nwo0!}r2Q4gzw1a9)Wc(E`Zr@&M_|OC4s$DbN -z+&Dc%&~YO#IdZR{s+|gxnw-~)>)Q3I+MC1#({1Y+d0&k#U1FOvRv^-~H7zipYUo_U -zVD((WLY8yo*@TJh=<2+fnZKis8LM&Ne%*Uw=V1%_10dDF3O&{JcyxEx*UObJQaNV+ -z@B<8OK&Ox}kE+@kjO@0b_|q(I(wHMUSLjRI>ziwygfM4Eckq`^i`QE?Pz36w -z2Y(@pm~%MJlI)tdNEEH-qv6q4FK~{_(^0LZhUH -z4hTav+=IEeh-t;vIQap=s0z9N@shhBIj@j|;Pghl)&q6(T?4(OPBKi8n@@>QNQJZr -z$SFaaQwJbXx%yomlYGpEYjovkshyF$)iJa!*tr?h)@p${>y#C_q(p5%G#k)EEt9Mt -zAYpk_$m!A+dYUdLk6zG7&nT%};Dc=2)(#p<1n0vw-p^24a9Zi99?Bm>#&=-it1Y=; -z8?H2Q24zh~H@jKZ(%vBfIg~YQ0P+^|tSBF;Bq3SoTymp^%1WAEP+?{7GwNgo$|#iu -zsO*|%BMB1<+e_z!g9>i%(>cx2!AZwcxHcNe`-$HpD8(-#W)ADFJ-nDN&CvC}1 -zOf`ER`E`S~+~T-i?+}@&3T6HdivZ(@m5TC50ChqFUR$ALmti#mEh$LgGIIqhaOj5V -z)ZRw#PFXr~&`-r&lr -zSU-plJ{cfliH7;(x2;bYA1fnS$t_E;X=VeF#WS1J2v2)sB~B8yg<>t*KbXlL$LD5! -zzM}N4mg$4WKiei9$5$olQ3%sBL=}f52N0+KJZ^Awz8bd_UH!YZ73v>cj_6L%i -zR)6D~vW-3 -z4$Tqwp8Ot(9dVH7Gwmrg_LvDLRlmuMq-g_HR1^Eqe6enUa93E`c7*h2NN?SqAAJUuV}5MP_&gXzUAsl#If)T+k4Ym%dg;OSS% -zFKS4@dYe;QmSua(3a=OjriO}wT1epH{;#c={ -ziG`jlC1l{ausH;flp{GPb9HivKfZIK3qo}yJC9QiU~5Q=Y*3k?MMXmXWQ+fQUSYzi -zunXK!Wy$&m8{})Bx&&t7onY?a=!kBNq=%jWcGfx_VVIKYKn}XYWT34nYyaaXl(7|B -z&q$ecWGsu{Ao>q=hrD726w8wvVA~yKl^O4uVc8JKz5^7Tc0{qL(UE%5a4Buh0i5;@ -zWLTQ_VjuNFgSr}F(w%AV$pSb?^4?6UCUR>@)CubG+kvX^H_5#Nf3b;00>yQS;)@pX -zCTXs!DQh#8x?=sK4v1TCfMc*y>aS*wcXM&Dco0!j&`+|D)}9o*{M6k&r9+BbLniPP -zI(WW$to4`*n%F3;7X*dmb@?gmDUR-DpTlo8ISpVJH|%fd@t!=*F-6P7eQu?OWogTr -z2-nKoIRv2v&4Z+v>LUl^+L^m_b?bHKP>C+_6$PeKPF0cF{5;I=w6ZZpd?<Bi -z{8GnMs>e#9$UAVLpWFSk6hMm(zP$BggY-GJ*UTCMQz9qyMEnGr5>lypdl=(*gXfTN -zl~SN&={^L%Q@SKz(^i_*BR6X0G=yoBudG)ZvJLihv`N~vMj~uk=ajkNHZR&OIY+5g -zZ(MMv(^U45#9!RC(+8A7M)sNKgiuT -zaZGJia*lNXn#~p_9^+CG{T8=rr#jsZT>{Io#C=GKR2brs)c4*g#q7{k+n>Uu>D*!L -zg^EiWmO+gl59vr|^>qyDeGUUERCw`Eq-NAig5;~+GB3HotWhnTWSgY -zV?!&AKFWBsyB?v=XlXbO2U3|`MHtE%nua`;mk14_IRc1UXjO&>B&X!&4@+({cCh9@ -z+XQ)P)nYJBN}t1+DH|>HjkhUW9^x!ie)D&QGlX7V8or)b7% -z_bzYSixKc=kBt6jduwTO*Po%2oV&rcYaAgO0i$DEmP-{#9Fy0*cF2fz@c^W3ry&7% -z7$xT1k`}i5?POR&xkMVRU97cW6>-Wixvhm{(A>JOP+h1!b9Gcy0(vvStU` -zN?;wHX?aGj7|^h=sReinOvjd3}?-^ -za<{ZA`Cjkg9`H6a@7G5l+>;@sCG3cHpoagJWv%RPC6G!9%a6|=^FFMFdR;?*73!ST -zUe@L{vtxSyKD}yU -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 -z*uknTbF1SL>q3i=CgN~2>f5liMhqmk5#_^;1e -zVAWs>M7C|WqFYk#1<2c-uE+%*>KIc9_#oxK<^Ctb5*R!;nZPyofhhQB@v&p5pdYT7Lwmx-1%2;gYgkp>}R;~He8 -zd$H^mIbM^El`K`~@6G8c%QTSWLl46~$ARox6NRWmBUW;=(rQF95O5wA4>8U%SSoKu}uR5bLq9wyH-rcvX8G -ziE|en*DxjekvG~X2n1@Hrw$}5HD66Kbj~s6$v?KvPZvgRF{|jsYn)i3co>`ICvNCa -zw{~esuUeTyjf75(@E{`YiN^YeVM@NO -z0EMd#{zspxab&Ma&SEJ_;sl+pNwu5O&WSKy21`Q5y*WVH*>P^uWNkthi#vZ~qDitE -z$k0U5qJBiFFB35InxbO0#2JC5I^SX -z0$|D{(y1Fl1S-@e27ut%WQn0Bc2^&kTq#DopYvQA;31PfHL`fO9=CW{#~2@StFo*O -zk}G{kDtNX;5+7!J87(}P^kSfgu&sP&Vg{2Im}{Fzy7zh|5xM|n&RIJ%DaZ#c6f@dU -zl?1p?GT!!iNysJbz?J6^pojV(S6JMI{vk6VH62c2_KQ|h%TK#`y^_goXFQq|G|&PI -zn%k616)tm?^l~tuLa+$ScJ3&1a9zB*YVC5@)$jCIoFu5w?SobHup??*l0gr!1;mN`EaxNEN?i#Vb<2n&;&3ZYT8IjAJo9& -zNBoPW5r+B44=FZ7&(UHxE{=!#Vo84u=peo8H?a+Tj+%Wj72*A_0|-h3ur%^y*7zlJ -z&$6TV@D_(HHMGF5w$h2kwOd)w&$!&2VS-t2RkDMD$NCarg&S@;xr`%UEXyEq-v5<(&hGNi>wO0|@=?%-8FZ -zc+QkFQaNzrpaj6hQOe5hs@in?H@S_OVG;L@7Q}JyXfLQA(8bhlM^5Sx&1c^k{_(z| -zDpd`RNK>m5$^-xJhO9F4ousFzvvQ#wFnz#P^xK7OCa`HBGmlLA2CK7WI7)Q+n_xlW -z6Gg#FAG(ANpw4e_+3%J;IG*}&w4ETMDSuDm~HAr`!+AXL0>Gis`yu$gQ_cKoFt-a&MeKW~77Qi@s_d+k!XI29Q -zx8@YvCPmeu%)f$Hz_b-IgKV{rT&>LYs|XvB`?FffG6X9$wzCcwyrAtyOU~HoXaQWD -zGZV1BYQA&3S|8w4md)B{EQ3*)cxLC4Rt;^##s+MBj#sbOWlwo@W?P!NZnt7p=H$|w -zhSUq(nPHfI0J+XlgxpDra*N!;MW*Ws17V}DqbExa$gziSO6D$OD`S1*FXRJJ&~8@| -z6e=Sv;v;GH(@r}X1`NCG11@MFiMtJ6U~y0ne4N`Ca3VP{U05PFDVZ<^}d9#e1W93#IfeU)}Q?9AtaV;Qk#eLL_0m` -zVipyZy1tZg6R*6pF}{JhfE6T9R_Zz8DfCX;(PnqAG5DMts2YOZeCD{FKIDh39Ssqd|%S=AjRS7E9Pg;jb|k7eO>Cui$`ju;h`- -zPuhaR4M{s%#MUx}SYOrVDF)*KO1*;m9bk6(r?N9gA}E>5vp}x^)eE4eCS1`5=7-e~ -zTg9kw(5fo0zL-e3*~c^8New -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 -zH}J+@i-fx1r$Pgr3RtiFuV+L`13rrOp@ER -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 -zF4|VsO)m9ec#}v*Ev71*?VK0e}7} -zv|(&l_@9>(cav*E%dl3Yk6pKCtQ^`9c)Q7>OVSNQCsA0Sc_5IGxGJbm@F2t`Pc-vZ -zN;~gZabT{zQ~y9|PNqyPz-u~sb;2LTPf~nBO7YL`6zcu_8tWw<4f*b`ukaaT&mAXp -z%gdHiL0pVO+6_Coh(gd(h;7Oo=O^dM+WEQkIJ4L9~#~IZ)K_g -zU&@A+a^i-nxhGW2Zb*hT^)<1R*Q^#-rFp21SH9qmUc&nKFk>h&O43E4mkN-n1YLO| -zLUK*ojzl?oLu7NeQGOYW -z1ddAf#fT5&gpCPHOoq7GEuSPm20VaLoZ5NCFZN;R0m`lo+ydbv?V8EIRj5g8@ -zeB;Fumf>a}m?JQsO0sKZ2wwE_V_*1TTw#@;Zm6O8uJ+}4xgaV*0DoUq{;)EACS{Hc -zS9G7s>8u<*>rtqq?I6*0o^g^h)sZ=i1ZoYxJe8N{U0W5 -z^%G2qO!UPwfye_WM@me$W15QVU-!D7fTk4ISqV2;5e+?y@xOK@N%%yhNl#Dra%N|w -zOG~lgi{&u8f$1WOXI}TVB?s{p4sHpwPY!w(GNz`ul(rEgw!F}Jf*f=*UIBe-#03Cl -zS1t<7>y~(vXy|`lzr(!tS2vy?2`vq>+KXEpu-;C)g_ig1Uu2%l(Bfz(6t{@Wylg+l -zc#Zgt@`@hpxaA_7VFc;gDQB3iJFaNO+Bh%5W#8EL{OdY{_j!^4ZQ4QKz05jz#jwd= -zhd1u;Zq93B_2f^D#YG_jcLXNRvc?IF;(57W)2=9{id7?h-MJYAVY&56$sg;G$Ve{Be!V>izD)$5Y*7OVa7U)yKppyQA&Rq?FX -zIKRGm5n$W;s_8S>elejN_t%_XFpIwAg`UKgs9YW|=At8QvFcpEyjRsS<=R@fm98m= -z{LB*xR;YYUc+Kub0FovUD!SK$@P;3mt&G?j%gg;o;b1f1z(eSc~u>!y@!t4R% -zV>JIk=**jR396_{*&XQ0XVZw*ieC4xc}GP@oL(%cI%e*rt2>4lttTZKShneT9xfLPiutA>%y*H`b2fzs6~Ixii1U|p%jiz9h5$vmDE -zjRX1BaMFo`Th9I!y4Hqs;O`4d`OXeR1!Yy5aTQHQ(Xs`&qBh}yMzjAqz`s;+RHPT6 -zjJOmXp?^Z12naaNp%54npCWU=$wd~9%$df&?E)l^?@P?b0#&r@JD34lW4#_g0M!Zw -z4Reg?Q&N%nR3+wJLmC;~x~2o>UBJxn5xouCayQORrBk|nX!GTS_i3Lqn?@x;xesIw -zc60=_3o7D|Fmd7{op%o!zPtB}JXKGIuw*^k`1p7)I9Ml%>)%@~X1ae>ihaLSnk`$M -zL?ruboRr_yP4-LcRb!X;p$&RXacc2^)UV1@GAPgH{XQrQENm#d)MPWhhs#g_bLg4_;FynqW2EXK(bGwtNqV)ty%miZ^qywa8-2%RZ%4#Y0ab`7@ -zxQacZ`lGi%BE7LE91eN$gR5dd$r+i0oYX>qv++##H4mKULQZ#;1Q}UiWZH5iI)5_L -zx|UDE8Yl3zfDB0}YjVKU&#TNZ%{okG`;@P@MOi?b>);8Am_lLiNahzv3^{ctv>?ob -zz0#u?brZ}9g)U!_k3_VtlWGM#v`dVyFlS>csB5y7-#_U(^HrI7$Uv%X3(XH*(yfkQ -z^+IF@-f%-g$hgN&7(}4#?o``%}S+Ve*n3jm%WI@${wTx6vT!H#Z -zCUoPkT4=t^5jjjHg^?ERd}Y7M37E}d5TYC{OAB9PtTJS>~^~>o;$9=StL>c -zlh82ng;8LV$)HyQ{mlB-r`|qxt}W5cQli`ES=ogk2AZ_QNk&XGGwUWqLZGHi6rRko -zvN>JX>;iK8A_>O@Y&mbt-dxln93dUZ<)OI)O -z6u$dA2>f)7dZrvxQgmY&mZN>C-1HT#UP0ip7~rWOMRs3sVJDrzHgX2TCjNzPxOUiw -z>tKaa^!ESktJC>sA2w%N$S+*tp%eQpNNV2bJV|zus5Bb4jU&sPDG3``uei`G&UKjn -zu-rmItpg%kY5~5HBQF-Y9HMR&JOql#z=aEUpb#(`7_Z5_iORjhuQn~NI0H@(-bj9`iO85?YD#?$KIc5BhTtz^-P4q;NaB9Sb(`4>^la)RHVQhYV+4L|W7&w%2i|#T*m*8H|Qp@A5+=jEcQ(<>oWxHV2W}+rC2BD#_mp={D+X -zYI$M$HTRcqNWP)d&6JjFY3)ogPTD}A8c0Ml_-c)Q;TqNiU1(H_%n4^3AGNt^f>(

(V!9bwboECr-lYhq8FwmP}!Kk9XdbtrZC) -zpsM}p4gk81%1j0;;{flG%uX@{X)NWe`OPwE7fE9_#Zs+72Yc?wmB8MOcm`Rnq$gS< -zV-0I4Y2aTaU{6L`6mJZQhU}(RZ53sLgId~`XiVwsDW_wwVW$JXp3WSLqh)7^E;f1B -z(n#PJJJNFIHOd7XABk0fEMI!rpq*@0pAVpB0rR9n+>$q^D{Dds$nx>ilV()fKA?nR -zKctfHJIN*lXQii!N1tJ=Ty^&VQq0X7nfnIIYU|g3i}seO0wm!)=Q{@8c|Jzu}M}AVz(+G$S&Vh -zC!-LBwHYa6D@I;AbFk@keni_0XoheltqIvssJ2tD64ND^%%l@&7Q%2L%}c+ut4%%~ -zl-bsb4%M0Sllu=ReJb`2r@cz+jCLcTI-aeC!jci9j;!rP#3RiP*)+Lh3rwGY=R7>;HWl;$`Hg%IsV~xlxpkoi -zbeXpo%9W$nFq7sm*qtyy-5(Vxz7`Cdyr`#p;X8wT)52P)g2Cnhf9v$-H~sKm{#*6PWN|?5#|_ -zS|bR`O%RYqG($0wkg@R3{k$7#D0iVW2qVHiuD?3Lk`*FCvI!tZSx(HoxDa3!RlPR*OIR1@W$mnLF+&x) -zIg=TqetgSWfJDwTkF{{5TVV}@jmv(-j2K+FYSUHrHYS@B5X)Y>G4 -zVodG%w`9>mCK~9?3SM;$2!YTPm~AQAKe`7TCbPal{6h1Z-yT!0LP5|)NH-(+@7I52 -zlLCCgfS2|qb(07${Lom4o*Yl0%z9(Vdp8KMn+Hlfy*3af8|OPHi52XAQZ8s#T#q|y -zEiR4R)lP3?MzETLCv5xc{sp&IaO^yU_h&sTHo00O%~|t8Nou{F&+VwT{U?IQ!!?1U^*bDzX6kkd!cFx -zpd-Gbsz*!&VDaL;jV?U|xtC}{wS)~wZMxlmr08MXOy|IRU!o>lAVKXCw3v-Am@b7h -zij@Y3;eTHF^nd@~>c-d1pzAMijaOXwt)s((lwY$~w9%ZGqa_@!5!v?s>tEV~w9>2Y -z8)r?|qK1}SK24)>?Esf91EJQCvkrD$DueX<@}#+GRp|LF&kd%1*GLqvTWp%?1D`wK%);YNIY`{WmloqPU-6(KhkTYSH^uT -z==8YIn)lUWsulol`qAScV;hWPaB#Qy?_IfS{_Si27OI+QwhhlQZcss&fV$h~=53q`ULS;Gyb&a!ZxyKe_%>g^T{GV{whU%DB&&@CS0yG6-wK>I`1?IB>HfHk -zGZ0ap$$$MpzEuE1O~VLkdv=aMZi6dajBbG -z+RNL%ZLxyyKRMU|0r@*Ht|b=t#rJH*(I@4UdTNN~Bs5c^$ZMX0w1jy}&>KM@VvGVL$c5xpV9ns!EZrLFr -zN|PDiIxXI&$%J9qlj|eGE0P1z(O2WXsDPuTJ*I3$H-CPh5&_Su4Y}*h?E*+34WsS8d0NY#zkW)` -z;^4X8=WT|A3H=H_Jy`mZHqq2Nz2jXiS6-FSd-Ou-EP5@fmRzr!Ssrp+i+~h#ARXg7 -zq@L$E?-D~o{sq3gI>(K>cO{8A^GZNN0T2Can~B&ZohFsMbyA$h;jPV5yTaS@RVZP-SXZs$9(T-(|r0Qmg&Y#7*r -zWE+lvDZ$B_CoMNJ8fSMy@o(%=8ua{D9Ss_->g&Py6;HBpmqDXYPyFnTjK&oQZ2jw{ -z{Epm&n{phEZ0?`heMW!&D1wuZ-|2)hKabhjhJ<26%G8S{C7}w=|OnRLbGtAoj}c5v%Z4Iaui^S%6o8wk&}|WWk;Ly_eZ= -z&q?6YPM5c2ZI!<6F>pdgCqs@Ke>JxRTYj^^$3y}=3}5-o{NLIEa|+RocH{>@@03 -zo*`gD$nFB1Ho%x1Ze%1E?`8yev~`aQKs&HX#bLUm^+)Vt;U?Qs5egZ*p3M?bHN!*Z -ztY?}{TkC-4N4;*uFO!vtkY2Ea0F4LiRNEE -zkXwSrS$*71C)3I!NeU009^xUdb$8z$YyzdNLW>4kb!|K+g=Dbbfr~kHQCbkunNKV2 -z_dh>W#*iI5IP1J!6vV9~lM*R$SgvU02Frj=mDpVfy345~a>egj!T8f!$;yTR${H0m -zR(-OTT)dSgo88iNrb#=huvrNqEhW)qZJoj|7U)qa<~meCkt!>@lR5Cyuo9l0a1@d1 -zz#2%-tOK(>gm@jvL;3)7!0QqxR_9aIs?qRwItG^lC{Qx{9x%4R{KNmFhT6Xp6l7kqpFoeNz -z)te*{ha0gn%gG}%NosRF{0OHX@InhT`;F8%3gv0_Jg_toM~eMuwX#>YwIS83RH1TZ -z?3UTkQAaU!0I?DCdIa`J2jXy4V?S`SGvK`eVIwtvZH-5YZ)D&$z6}zd;P9p&YA{39 -znup`n=U&8Q_zIn!_x0`qm}@gZZu`?$^K=H?JDwy+(qBC -zP<8r1y}uOoIjjN4WIHL54rbK>Ls)n2K@RP+d4}FWR7|_SMKSlZl!zT9$AYE|bUeAL -z!=zQuz{47NSOsMS*tLo;!7mMLug{>tDDF%FvgZ4bH&m~DLz)rbZ=70Hp+{~!M5Ie# -z0ji;+dKYN+zh@ehg}l$ZRZwg})V)<220u8uM_G#9K1)`5C%5wO+qr7dB-_W25%gv9 -zfWU!TJ1b49uWU()vUXe}6G(}QC0FQwaeT -zg6@;TDG0mi -z+q#2bZr@e_QKLxYVS8q4^%Za(H5nFjo=cW;r{JFQ9z$W|gxcVEXPK=Eu;hKQ;(=U< -zFT6HIHj|t^dcBA$kVI(6xaIyFU4jz)cJOvrdMy{uk$oGJjZM~Ds7J|i4P=DH72W8I -zLMs9>r+ -zHHr-bHz!y+1Pqg5vV-f8wVCBTJ1-?nlCb9zpy6u=QYrqvha9Xz?uMbl7YOmYm-Msj -zXHoTOr(%E4Fws8Bonls0NItz8EWL89gznmdSKv1gz$irt>w7O -zLF;ng->N{)*8ucLuwV0?*WO54rg~7Ivk-iVK^@;P|5JckdE1m?P86Qtt*EjF78zFxu(Ja2q-8%;AuoTRInag(B%1K^a!^TImkQ&cf&n3j^Y* -ztFz3!0OMFW9ZkxlGLQb`Sn^%n>aW|JRzAE8a-VxzC42_<0oM3I+J+ -z@ES;Er|vpv587BaG7Hov$FfjwkXEWhQ5QBhBC>6g7a{S5!ab5KtyhvpcgM21MS2;r -zl~NboX$u(!m&*5?Ah@DZYgc24y=5R*KyTGcoKo`cU`)73K2}S99*kWV@U-aYM|yQN -z^TlcKC#xMY1}%wyhvF?sCV|QV8%)jA}x_`F07NE -z;(oL63lh{T3ND+}a&==se8h85dogv(A=R(!%TANjJDU*O$BE>gF6WAVO>OK5upiVm -zS{>pbxgczME#{qFJF??`C4&V!K_8-x48AV)p`Jqw62sBLS}yf8Pr!bi;gE-s%WJhi@{z6MgaRyV{iZDPm+TO0mCVi&}0Fv=hZb)4g- -zJ<9sfp)?QTCMIAqEfW|JGFYtY1tp+X3&&-@9T41fzy%;52zGR%WjpR`PnSmFC#eI~ -zeCrsnb+EeFY>81{XhPn|Hs?5)c+@}Op=@bC-P!|-CF){ -zO}PDkPzy^F=Euu=Owgos%Kzhk2Nd)F{{Q{o=6$=ODuPtD3t;!MO85y8h!mW>MURvQ -zoWA5+p;rwS(>L`cKn{)P3M6zftJEI+ -z#}CZUHK4&AaSb$HAauQ!FQsz>7m(3rsH^qIuhTB!w0_5yBdCb9kBpwC2-tIh(-C)c -z#_4jPXYAwsK8J26dlN5>D?l|I`yUTVuFd>m^Zkm(0&oQz|U35$l;= -zeyvI1eVc;BcW5n;J|)A^>FApq?S!}Lus<(k*)O2qSoZX3-<_`1Khw#eS>4VjkIlEf -zGnjrF@1pL=0fqJ+8(t+i0(MN$M=zv_mW$D69ZZfajIM@kzZL`69PTJf-mdM2-GGjj -zcyscG!;SOpr;P#QkDNId^8Ceq)hq)m*p!SxS>6~H+We9v87m7R+}Bb2LMPR@9VtYF -z`!-2eN67#_e%@#usW(M3j8u3c1du`zh5AJd9=;97U)&@%lT49=-qW^ol5mJrmHuF){2*&9$3 -zL$Gh&j%cNjn-bU%CN+yb3nW))j`=%o(2^ZD4{tF2zD-}Kr9}kz1EDW%=1OU#-d!w& -zb_=VEX`^O|*#O@q;Njg{=xoh+>BC+f5H|D;k{FSTh@BZ<>K>%a33Uj&Z*pWvqwLD` -zq(Xo8!>s9`cqA4Z33$;Jq(~k0^+^51tGwtwD!ckPleomhxSAbRtLQJbuj&E*d%k`X -zd<#x*%$vfud7ssr__R3NG63Yp46djD*xF=UdY9lXi6`>tn`j^iYkeKq`A2BW4SVyh -zMaFAnR11zwJzIqClR!Qp>o$?l#+{k$~>TO1?mJV -zRNfqOylHAiW%qC;(^R5wvSj21z|3R&U*iiTil0xz-WTh^PZ!puD39TRJptp=db&x- -zi*Yu%8jkH-)M)@&(dKRh2aQ_gsCghuvvOb2s^QtayLhtqkvis@<0T^5NbVpKIKIJB -zV=o>(8Y#xizuX}6-2vX#SOXVyQog}}7C`K|W1!5xb|>H%>V -z3F`-x|4bau9L)_E+frAIix)G;Y*9($ -z7H$2s$cE5O8p`0DQ_Y2dy4~D#QSq_ew}fI{U+CU;eM~OFI@q9-%mJMC1eHrfV`ZUEXGsWj~`JGv$0&~E9&yW1~-l)a@&&+2l8w9Y;~B; -zVE47ffhvGllqn1Zb=EK@`YzPtsFCLQMevF{fb^r?yQHnFh3ghztUunaTziMYwTf;` -z)2h{m1c;dRkwwGqKt;hqyduNNRayWB&APmeJrs>~b84IM8{&-HJ`1we&1Iz;-nh?h -z2)gSL#wkZ&k3LC$oyNeAC;VYKF%JJ=YB^iY=4;j|;3br}m4i_eeznPrm{Chhzp9x%82o^jyuv -zn4n)q8|v1zA=4pX^Ri-f>u@B?|M6g@fZD~6@81P^+}#`JB;CirMFRHo{>f1@1bVKf -z5oHMn^eK>?|2B~wNn$Qnef4oAcVVGN(HLJ3;HO06*MR=vHnDRfX%G4d+IA@+fx5UR -zktER~CASH22(o{W(li}m^^%$rkh_(^7lB&{7w#*5UJUveUw -zMZ_c3PY#U1Rfb?mK36CVE{eig5?&gh09Z>*k9JXe{m*0EQy3NKlkDCpz>kF9D))Rc -z48@4l`ck_OHhejYBpk34WLQyL%c*t%UaCkZb=~i%0#?CFvXBelopp|oXG0dmgF6!S -z6TnddB*qOzNK`tpxsHkEe%n%9T*$&!K@YPL5yH)4`j>R(v69DIao-U;8XKeC+^xZv -z>~7Ekqzu^P=Fr3*wmyX76AWjxRnQc$B6!>(0!T7voIgbosw%!<0EPdYrHKt$a0&IE -ztkF9+nt8OVRPorwZdrrbDIHxp_wc6u!yV?j=QOs=j&9>6%ox&bw*bhvCzOn-euFFP -zRTGUb#~(i~(&#~V_8~o4JF;+V=!OXRRzz8ny-v>1)!H!;1nvii#4xQO#J=|})|V)G -zZw5@bm4dM) -ze+2~)*)W%eY$|6)B|?$oT;S^MTvmSpd)d;kt&f(vL3>!}*|jglEvlHs%I1X_BMRh- -z+z4t|?Ak~>H=MrH;siqPm@fD)Y2MO>+qPH@5sRh-YDx2`RRs$utE -z?kI=kJvd}hTGeaAePPp4CE^rsz#XZ&Z`0Vo?il^PHi0YFG~)d2-mW4s`dRZj(DUk~ -zno~r}1)|u=I(AQ~1C@K-Sz#qR3%O6%tESx>t7Q}Ipe>^l%Rf=wAYk%t&rk;_oCDve -zGtz3Wb%UKa%40Q(Xs%<43w -zmHwjf#AV{To3U5%MD`i)UD7MGWZ%Dk$I2C@C>o7qXOOmf7*|5Nj)p2)7GGcbW`xb@ -z>a8}=4VBukoV%0cFGG5uw%q_oK)1gfa(e9@O59WWjeEmjv#tA#CpRbj_~8BmRsm%Z -z1<;X(3vyRgBw?3KAfQrDY?^CfAMieq1Gf&LuX${8FYqzN=@`Xsaxk2}JiUb#7Pr?e -z&8nb5Bn&-~GLv8M_@1ufxFLyBAkvX}Kr19iTyI>By#mb;n;Wuey8%tSWcqdmRLY$k -zI9s@Qi3|D9Nw9LWAuw7{De#6Ya#ZmrVGm%ZhU@O=e~KKnH$cfM>t_8I`%K@^UwbvN -z%02STX=Rl{a7@4{6w%aa`-P-9Y3yN0asPePCi~k|qKL1@B2i9e9QBjJTF0GEx-;|@e2K5Td%qaZ^Rf6>k?~Xgv9C{j7LH|NAs?Z{-NqAeLQFD`W -z1V{li>OOYtmg_j&lc|%gacs@r97&!dG~H}qqUADv7-HCEafzB0c -zE7_UY!qNJ3>uc(nWy6oWZxNN8M#;W9J2LnK;e~gyiGJ7ar~B^0yKBBz-hHo!>iyk) -zx3)RW_Q-}MpA;3GnoU4y?8H4sj5c7#K+#DBiX0G^8|tPfM>UKvFEyXRHlf}7`-P3*}VUkMmxc82=JlEhRFsbdvF~%sE -zZ5&SSNbKFtPH)4w2IxMsLR(NsgsIo2wi&RV04C91kW~tXO_OBbC8hP5#@7HtN6zmT -zh8CwoUh3%B8ND`7GbwrJk&9*WW`OAmp|$EDoYA78SEp+s -zylxv@H*y~aivfzpufhUcG~P}qs$6X8$1caRNIf12zG6fRk+=%Uj>ChkNT^`@Izfze -z1(!GZmUS4%Kni726p7l>KrGpR8L&4JpskpAK1 -zf-wH>sQ<|ncd3f<$xDzcP$hy!b5D>V#03o2al#Gm)JKqpO -zSr6^O!Q`7k#)TAIWp^sj6aQ0hU_jR&-Sw&EX6w16hr3r-(33@D+q~j}t4NzTXq(u! -zFxqL@7~e82GVT0u2_~Uw$oIN*bJEA2yP=?TQZNPf(Z1wb+Ll|xv~z5iVnC7t-0v&V -z0s2#GSmdQ6q{)yi8FfQSKe;#iYj+kVU261pSoLq*H@1>YM|?IjT|o2I^|jkA3fWv2 -zhcYKE(5an61h`T4OZp><*;e`#vY%RHnSz?ANUT^o9ag?d63^Li#l9s6w`O`a(`nhk -zO{TBJvx5p}j6o{&ag;r++@w&vbV~QZnD9_gLP -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 -z(n^H@rahOXO+7WwpnD8 -zj$n>Z!b9_=0p-Y@6c#gu$m*ce`Ncy3Px6*Z^v -zl?@aYFDeXPT1;RGXoCt*JWnmN_%0)4*wl?jVptycL-#T_htYIYz=COdF;cIhGsi%0 -z8tCpfLlW`}KoJ$hh0$>}^jaTqK&Ia8dI5yvXbYncJmIqGlt7mb4_8Ug -z$^x&kj_^#G4J3GhCJ<^B0S2O}SuLc+3;`XMm>1(w8Q_`V@Ia#{+AA7wJ&p5f6pS3J -zxdz6ZRAUxFjDI*%-z^RiBx|zgwjVl!&OK}u-4W=WNzFMU*oOG#RJy%whG|E?lqsMs{*;wrkxRm50&-`U~(Abp76F9zQH3d55frCO -zbEZ78sO#$HRS{~m6uQ*X4nW_!zlPbOhWkP?kfdo1Bv`z~KQYq(0F8(#Bs;(rRc89k -zY`Bo`5jfOPQ~;z7{R+(EB#&#UL!%>930uzydH8Njaog?s4d{d@XA=Mn4QyGCfalWJ6eWSl;JrUCJ>ImgGnLN27FDfj4et{8BST5xqA -zGAWc%JAz(np8*-Ho<53%ymSRtu*e(6;=&SVa;n%Xtpcetu2CI5Q^koaGk_6Y5sdp4A`gP>QCgcXhKMM*F -z3(QdWF2eopp3b*F1Qf!2cP#hOTJBfxTXCX%cc93EgYw@#$0?HIEnq5nJHT@F)qd;gRf;!syv_pjS -zL`GeWd?{BHTS*Vc^~<{G^(NfQ0fFF!*7h)@>Yv85t*%Gc9Z-v?8IsIBF0})W*)rd> -zVabxO;!#*_w6!MnTQ@7%K(Pi%eV~qUZUY*`aM@e>5i)^R^4`Qr|BR{!+`x>Dy2Q!B -z06%tRk;cOf)}Oez5C5gF_rr^C=4qxb=L)uVpR5!3{nx+$n&}p;{}xuea37JSmMbwm -zvqjnw3mBCI@Ot68fFA^y)Fdd31Oa@qBcOS=#R^0uso@0$UPkDZx59$1M0RTEvRO*`f5XC}X{I -zvUeblyIW$^_df^_0t+Y7G1%~%MnAWh!j|Ll+&2!61pvDVY0e!u^q(s-Eec*vUN93C -zqCiXD?(l;NS#V2F2Vf4;_t^gSD5zj=g3&hS?o9&^tX=AJl~!EN4J}sRM{W>~4Jr}o -z-V4x4)TEdN^?3!pBl$H=lyt44){v>+k{J+s$%~TjUy+kr1*=bVelxN(xd#(4=#z&7xhi+tgt4jEJzbOszRMlKSWVwLK(DeGH -zwq)mh)kdR!d#v_EBKz+37W51E`lxi}x%AB~-hSH?{fZMpI;mcrEsrZKhe6Jv+xub6 -zl#loKLd3m)-gC3cWAG30gKR+Pr>r*Z?yB+EzxG*R3UAG;_cV|mYLpp3a?c;9!hot? -zY3J-l!FeC8VCbO{-1}fYbhZ8{aEIgLWpUsusLRJ3%Qubqnm$=jR-ECT4|*5xKhuW> -z-BVAeo4e0Vy1=^zEbB_PKtD?56%vwnTXVBop#63m?4An}*n9gJRKoS3IfSN3G(!iT -zPiL+f?c2W?2`01D{wwM-EL`ne09OTOA -z)V|30zvbosk(s{w>mS`@H=Q8*jl%N9kv;(s*=}}E|8NViLDm*a@k8m-8<1S4U-7do -zX?p&T5Ve1SHc4mW_hMGYgEk=GS?}ki33K``5R&(8iy!a$RaBKiU&>n4OKdkV!WkA} -zU#;QeQ$M;ls)BG9upR||$KD8fq&C<^+DB90v!oE&LyF_q54pqBOyhdwCD^s<`^Trf -z&}JQVz422hBSL-uXAI=rb1^bL#iWGEy`LP{FlrrKPboJRVuN<9-080pD1z@TH8n -z{dnxS|9(#^>@!J+kAHJy9hEcz+Fvz_yx|b{M$xcC5DNg#x5Mt$%)%UZ&OQ`RKG%8lEUWMMlk3tiC -ze1IN=jTrg#x2;d*4(5Gx+H@E}8(mN{0@X_lxu!dw2bKDvN!ARu$oqGd$1s=6nlx0C -zY3BzQ>k3h@9rYy+@RbhSBXoSxEit98zb3i -z8TG;yvGryLL^!y`>Jt17=DbWqm7B=j^Lf<9831qjcI9l5HSK-J^Y{=oqd)L -zKtdTgU(|VJkiyJL!uy|vPNIMlv|q_eMI@#8Ybc;Og)-+bm96JR;#`_U4}E?6f>z>$ -ztfTl{L-^`f&o%Ju_w!#jh#o7%>B-7CBn?8l(mXRnXr@5~BdM!RyTI$IQsmcfjQM5J -zy7Azy>{ZZoI6H~rao>Nuvsmr840_=Nxv@rYZqy1cvhT>T=vS*B1zK#`bEP# -zwl-5}78wsfabcO&oRCW0df2U1;-r7ZAv?AfLLMIYH-9_Z0cV?S*tkw7LNy^MzV#B}#l1P0teof6w0$O|vfF*6vfT1m8 -zOii9p*6!8~Z_x{Mr_p}r0&=(UzPxc-RprN_I0HzR<#JXa86$P+?*Bj1{$)vWT-yS~ -z=KU9HP1B<@A~UNhW!7dIX{rxsYso+oBoTao#fN*)zg~Oo2LO7OCVlOmTN#AY=_Cm3 -z_g>4DG-BL}wFiYfBkzwU(@H+AZPl1Sr?_u7vLphq+ji2F(j%^Lr%5Im)h${R)IxA* -zWw$;$z`KKZ@5xM)ED;*dd=~Vwgyt9bgxp)#Ywf=!?l-2jrT40IeKtwR()4lH06+Jj -ziLk6_O{MHo<(UAL^qH2{9dk4jxddo!yb|ZgM*^5ao=VSc_F76Ol?B(LQa|3xLhEm6 -z#=(}ni%kZYUq7FNEh5J2tEnrPySfM -zLE+V%%(nu6_2WBv@`#g?&w2p#nPb){uYHnb@f1dn=W!Tne3%pO!3BJ46|6`JfTEEJ -z(m6c^SM3460-}=)X%wf7j12-v;sby!pqpJ4Xg|15ZmJ -z9_WP+rhduHR}KV$8dfz-KRA@E32^e@R~0-8_*5#lTD$hYW}F>sPL!S;D>=c)~)$p!xBaYGv}VIxIwfR+%zs9n88S_7xdJ -zM$JXy&h1iH6OYZRFHnzpY|a#$9|zLoT{d!&6sw{eapu!{@DwyY -zRjr~PR_k*_2L!ZYGt7k*^_C6yJW^R0fUQjWY6dDTyV@C;KGa&Eg>?1p)6lOte@%+o -z1MVB{5jT!9aVc3_zClW-4p#e!>kr`(G?xxukKkLqiH_t&NKICXC?wchyzZ{l=ou%V -zcJ~W6!%C_YkPE5ma60-h9Sj=4UKtlbcG}-V=JcIb*t&@ul(n)pr?Vlv3g!Ts1tt}{ -za#9rmSxOR#TpyhrZ@dj^gOU|xzWrxj(>eUQ}VY!e)o-DCcT#*u>b3SRGTh-X)KjVsJot$O*0=?r&cO58Lg+JAb -z-Zm5%)(qi-6|+LjGKRE8(i)h{a78R$D9@HF{tFtD3MqSXy7XPp>m{=oEt3;30-Dkh -zwe=>IbfGMJ)CdiKX#gADGYo!fy&)+IAy0GMHT1{af%^i2bl6BFyGTi3k$2ztk5qh* -zXcYezH>Dh_zcF8n(}XeYEtKhHTepVSld*AE+IJin1JD+@g-JCSqP~;fpAJ-uS|Pk0 -zRTJ(q7X!?&@I%CZOhMhFI~ENp0&E-K}jJLzRdED-@wz;OK=f -z1#%{*G}w{vPNv=paOV@h!oXy} -z7F9{-8bewp`UTyq-LyR3P -zGEHQ@5dLV04ntH1RFWg)_z4}N&bvOx1d1U2wN_Yrr8ZX-9sRk;Ps**p6473R2#El1 -z%f0{p{*Q37F0{vQ1_UCYGYo~nOQHhN0YZ1+V#FdupF5+Xae?g!XaI}ZHOvx@`#S*| -zeke<^HHo5CE8=D%r12`P4xjtl!B8Nx5O0sWD`Oq`;zAm|ZL-<~{tjA>pZm8|?)DsR -z>phcKh+(&ivzP_0pcVrVQCczAPcMC43o2WFpo@cE1D9lDiqNa05eFgnl!8)O7bkkc -znD)Jmo98MzE;(_dJGbC&8G8?9slAyVDC#i>g}WQ1hPjRk$LSu5htFx0CXai;|M1&6>E5~48P${v -zH(X=tXvSgo@)8CW2mGz5ERsM)nShcrdQeD-(5V?kmD>@FwvxP3^vsI3cPIl+1a2Ob -zUBdFtma##%pjkjzrf7%s;jN7z5_8i-QQ5?_<&t2=o!_li8gXE#!|ia~k&uE@KbdXj -z_6~^M%8EtF?i${nO59e@-|lO#K_A#9@oy7mj1>XU=Y$;j`%8;yC(kv8v?(7b7i8c? -z6xYGg>Vh!zF+xxsttuC==IEiFJ0tc15+2~PZ54m{R8kwp4FOtZuwW~gPFxHll1!~$ -z*+umW{Xxs5BTdO<9m}3+JiZN8)POSMe{+nAMbNH2$v4Jddfucj`HGgc^#cizXCIz( -zU=(eEM%b4K_X+hFH-HyuxdvKkf5A+>Aft`6Gh!TzYE9VsYGSWi$n6xS)?jQS-R7VH -zY7VxMP$whDY7ZcZ%{>OlJK#;pU*{B*3`$;o2}$eC$R}rZz&()x)q8T-tn7zH;<6gn -z4EnLipwzh70_2g^q0t0WqHOTeL8KQ)_Ym@PhO1mNaTj<4v)e;HB)K*-*GYhn2XSnn -zs7JZCmpS2RPp63!%|9@*_2x6$p&L;CmYvRZGkOm0>vWi)g=@N>Vd0Dd&&jcB8a>ia -zZR9n{J4BWBi1sdqtZ7i;yC>@LX^QL8sqs7cJ6WmsS-W0fjIdIs71Kv;q^0*jiv10~ -z)tOQ#I=BGXsf9k_QCbx~VJw{OF;@DcKLrco_C9Hxd1R)oEtLkqzNxgNuxfOV@?NL2 -zTZtSBQHi@l;B5$;BLl8)>!_Zv(W90j<~Ou4j271~(p!?OIGLplN@tQI;+F#JbcxuXSJCy+boQYNPz9Jfd&? -ztPL)Jm7OI;D-6w>Bfr2kNkaNjb5B4RaSyPN2-Zl&6~@vvQ1{NFC>m9DRqhbIk}Fp0 -z8@M~439J?VNK}BTc0G`s2<>hK)XLbI6d5C+v!!qX=c6%vI>G6A=Oj4EQFtO8%?mZ{ -zSy?7=1{WjeRgbz?&OyV1Va}9))a;H>worx}k#8P4v>JD#oCnFxMgm;C -zq+=wHVoWk*bhnju0~%3px>tc}NKQ5OPbV#2DEN}=CjXDu33_2hX+UNfNV5G%pIBE| -zP%3I}5*-}Fo^lVV0Dq#-Tdl)g3$nJS7;qH;tafoD`UqjCgmLPKuT?_YHK>Cp@+ce- -zW%$SM!k-KtF=b0v$=RNeg%)$CxlMnm|%v@`iHCscU-y -zFW-lahPcXX`4@nPN!&Y^m<(Y+#l8IAG1LD9ScsnVST#54$=D5?66eX{f`O)JAY?mk -zNQjU`D2nHntvJ|FQ;B7SXr -zH?txjT}AeNX4Fev*VFNB>PnA=+wThmRsONt9h&S$>yuq7)eYJP#g@`{0Vm+B;k3N# -zHepR}b&D2*WU(s2Nx5@SD>wGy_B*&SQa@&_KtmlHZrRSM+Bg(!UtCjyod{R~FL<2N -zM;~XEpooFD4k?aAe8AkI+}f0I9G7$N!RjNGydlcUV(z)(Td3Qy=sz0VHa|07(wKqj -zx;gDJl$C6Oewoa_0)iJ{uXiV}kz>rr_t#!=uq1Ufl?p?N!`Sa&<7%7TU=<3T-=+7E -zW*EMgM)RHsOqwU^>sf>gXKs7{Ady-FjPgyYZP2NiD9e@W4}H0c#Pnd4jT~;dH|wp4 -zACtv*D|%=C2L(Hi7<<+2z)9_C^NQs1C^G3@NwE>vG6XkT>=XVUD_#KSssJI@0D(v~ -z61q;&nQt5|0$fgtuwuj-Zvp%L&K5hz?rC8c;7nvye1#1h;ev64=qvn!z3i;MSj3D9 -zMb52Yw+S4NQ#AICRPQF_itrYiF_Qj#%EI1d^$OAHuEp16$_$xR9+2kF3XXW-E`^Il -zl9@{ufk(htF`WRrkQL}Yrr4OeeXD%IwE=f;+aKzGD3*pqj_P?9Ct9Ok{5QJk5RLJW -z!xB7W2r$k*=b|7L>R8y!Cc=>pC)&gq_`DIsChkMikXK4n^IhCp -zi9(?b1qJKI@C`mf0ORSq=5rg-uMC710g2a3jRNyez!yTxu=1tgB>GTz8}ezWxyrzJ -z($}$`+O{DU&4$)1NI}qA@B5j0p!r?FzI$qCFTE>+YLg$4JvN=BWKF2@d9+gm&X>GV -zcI&k5eEbHco(}z_Tfw!XJWv<(U8Vpe3-axV$@h#fZM&jqwSx%*3?2X)-U9$dP}j;a -zMN&m|f}U<}HR_9OtCAtwGFBNY7%-Nv$g|y*j}9SzbporpV#eP5Qk+IXNGYCb{4yPS -zh{&7v46>kx|D-T;{431-$$` -zg@n*sQU5ETxYLvhj~jr9ELOa{1>?Q~_9ksQDfDf0^6@P3}pWiF>gpZ -zK`C6BmAjF)ZpdXdDuss3U#(Cl?~azdE=*dZH)~2D?F6b8y-)v1`$*~yB<_P6sclz+ -zcBG?G6rfRM;R$3MwWS(g$Z~~?43!t=nDHKz{C*-{+}F9;W>yoZ0b_=nrT+$61Vi`Y -z+EDC|%B@{wp2d1RmrV^=dX3G4^Q_3a=(_+gPVQSIV-X=ftA4(d=i4H&01t~E?qqzp -z#9nW+2{>t_;u_hqy0%etxh&R*3Yx|fgpRo@0Q@Wf`@YkQ!mk_iJM@%+GD`s}xNq5k -zlK>5jp`wEImP%OZC-ZU+^S9q$)zN4p>kuZA5K_fOD{pi_4^{fh1I?Ud#kc0tej*TP -zfum{-Uuxe^Ck#O3wBRmTtY-=nd1Z862Q!;oJ9=*bKoNWdvR;f;y^gklQSGSh?IJrF -zEjOV%ROIMrWv~2#>o`p3xha(W3D{G{bOH&F-XX@BGB+GHgBvzwy`zKfu(Iz5ZSnn0 -z3tW7OU?!i`?ergm^ten}*V+XP83wibcgB9(uHQ(XBRsW<>@7b&8~RK!xt6kN+6^@gHL^cS+J` -zV~qdn3_(GXzx?N95B_}r{^ND%<3CUQ@gJj{Q8|X!7Jc&nO|Bt@8egLcD&x_{a -zkN-d8*BhSN_2YHmk25aE5^z9Jty~s)w0vs|i7>JmNFoTtS-#5B$30r0{_=qU_8Bdj -z4DyW^#XT>hAOAi4iuZbw -zhj}N&Q~xpgdPDqQR0V~X%P{+=-~ZVA_~1aT1jlgwjF-QN`8oQqAbP*57rAT>vO -zTZ$yfsC)m^N`*y{cM}%s2+=rpy%h& -zKvjb`VGaJ@8a@%of{ZYoW1vDht_rnUkI%z=w!q=S)l6)TG_fOnJi~BI=s*A+NUoFy -zziS4X&rH^h7xE}Ih)~14?P@zr2hx`^pNxkQE2m6Z5~@4NR=%gC0NWRj-p?pMc%UxV -z_=Ye6TrS0vf@-d!7z2S+k5V0wim`3Ot(0tz2ePgZ-m{-n0ue#7qL;n|=C}xVM0fm5 -z<`ts=S|zPQ7xA(pi`(7rmX?g1P$K6YA?xM<_R$puiHsqE5q(o@o(p1&dMYm%Il8pi -zd~A+S<&gXS_r7z1kU{o_x-NxatCryRw^wPY;^4dAO6I1|hlq8yxZdwAy! -zO}iorX~8&(p&B5dJ?1U3%5t=@;BWLD-V-QM(8KO*AS+$O*+B^n_T^Jy{N1Kk2Q&erjAFzNDlhd2k=U$Fkl -z_J`$13-6x~kSw9uGHy~-D(%OTsY*FI0Xl#tAKvt39z~IJQ6+$s2r~G~au~Sz_n+Sp -zkK;zdpG)d`f -z5xA?w%3-6&(pU#%HV&2=6uBJbCWmlLAfPoPlxdw2L}c8U -zzp4oZu^JaKpiEd_MN>U_h($Fy^NA?R&jSKtV8TYpgs23?Qijk&y$ncA)$MCIAG@`q -zrgliC$|IETJttsk&4C`c-mO29{cmvk@_$m^unmZiqvby3OWW0TcmO@{!eOgLAc(ux -z8XeT|`cD4IE*8cz5C5@RHZYI(<{7RBe3Gp63eLd -z0Tt8Q&S1F2(O@WA1PahSBGaE>_GfoDVu9Ho+pcg{j2Ld9b>9rAn#1YbQj36X@gk8K -z@hNthxX}>PI321RSj}cqv$Dxc)6fW+$zLr43xlK%MG&zg@w_JpcJf#zzWAx_5=9_a -zRt+r&{G?%|u3%!nB_uzXV9SE}-;h7dNJYJL^1b0HzM;+B#rF>r?p~qHE+sR_0g;^v -zD3PSD7~_;|<{h1Q7RuUC0j`Y|Bhw8pJIYMck8__}bCO8{F$auCGL2}}mzL3^k1&45 -z5!et|v9vT!CTmEb=k0+icMi^b1T{Vdg%(8*BB~9H(~3zoKQ4rrsL$fG0e@@a+Cc!T -zCC&oUB`8x-%Ztnf!zB|q=EUx4z*^BN8t*QrIywh1G?Yuu`#ZXM#p>fi$y|c?iSnfR -z=?qUe-X?bwj+hkuOO=^<_BmUIz*-*`>Dxz$6QF&zOo3uZ*G4Hl<1W6{wInI4&{Z1s -zWgL4?Ywz=@+?Y3by`#pufMyH5XH4CU?hRrkltlXcEqb>kIRv4$qz{+++4h*FdRqON -zYbgjl)^&hRybh2gyAJfPaBKd76xG@KX!&B -z0=G*G_mNUT^o{(=yt{P0$_>724#lj^9?0DAX+fb##BsUXd1LSzlW_0F)D=!}?lV7|%s& -zX8Uy0luj&z)CL^QMYpZMG@C1dP5htBo&>OCuD_;SP5-?A%Gmi8x(a<3FC?`fy!OPq -zn$b&pq@3iJszP;-|y1IF@g9-vd>*7EkM%0 -zmG7=;IoxP$%;bQgZC%%4MK6APpduBo_;z_nGW<4~5Tysr%Rqt5R^N_ZFN8!WN3i58 -z<+*6G5Y=&R+>N0$@M^xCO#3*(?PjH -zYMQQaof#U6z$Y!sDZ$L}@IX5)7bv_H^0V?2(ZGf}_^l_8&zA*Jb&Yay9O_reZX9zR -zObvvfWEg86R%(Osic__eRuz3BNOzVaL&k(A*9p=}5au$2G%&CZgRF*O2vjMlo7AD5 -zh5eP25%@Z-)w!b*f~*2zAWh$60yPKUvbO-0PUr1zKr7gx(aQQs!&;;8 -zfS#m~6~$=rcx2i=F&D)zO72KG;qr*&(n+|4jd9bAO9vg(58zZ>FG5=yr+tz}+xk4q -zW5{x$oX4pmUBW5bc`>dHh`TXq3qFR?Y)C0dlWv!}NfMKc={Mh?7#9G3!M&_k9p!R$ -zpXH2=qrnB+G^h80ioTx-Yb3{p(r0`X)Fv<2aXdbkoBzjW+{rYUch0VPsE^%Z!Zu{F -zQF2JZXdKLd;I`!k+>@6rrj!xo;Qyd3Oyw0ng5Bv|q*M70p)%}Kp~*zcq>N84+rz#Rt`Owez|yQ8+kLw*jR}y9V1e2OJXnh?b-TckhyZzNL^%k -z>oUSkbLB_^0p=rldJZ$>K?7%;%b^Dx(geB3gB+N+ANhba_vP2P1;`8xiMgNzZ7a8$ -zAoGD|$KauOLtjhG)r2pK>QU72{{7c) -z9ayVViBQeu*uZC&1bxA*F_#hy#E&8pt~mV-Ift&$)J;6VB=#SwPd{l8`?A!2gL1BM -z$X_QxHIlGq26%`X Vj5g^QQ4LVcu5T-|!(BZ-?%YuQ0$(yZhPHrq7Y2)NZtMpo8(h=djc40!bfWNap*QdfG92+*q9Eh`Bc -zUQw)_g%frt?DSf-Z+0gNL%Tj%AdE(o7J(h -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 -zY0Li+tH{k1$w~GJ|5s+R-dS -zAFJwwNf^yGB1yRHWkwTZy*pkc=S!C4Mht=cST#sEB~ijC)4OO_S_1m_3498}*r2C7 -zp7z2>;*lA$CCFp3b@Wr(*Pku}LGlS)*$yorFAT3jbXr;T96=Z)Gsi(X*pzKDv-nHo -zgWv6?!|-_9ZdYJEL_@AJhn`D -z=Rz<>hdO{k#Zfykjw;Yaks_R>MuVr8)%c<1!YCy2?3}K-M)6HIh-zZ)lu0QN$#CA4 -zsEK@zG*<${XC0Dp>X33v7lmvWKyvUMT+4cx3Mc(KtXi`7LD~aQFh+tI0T3j2NIv1p -zE0<$CAma?G#Ku?(hmW6sBZakPqa8X=127~;;_fckFUNv#bgHsAy5m|TLGulK+*9%@ -zO{7hAkY1cdPa?edtA{dX2Wo_imgW@s=5-w*leU<}uY~X}VzffjszD4evj`$=m(tE-D{v7xouO1^WK%r> -znZ`#_yg@$SV0|!9q(Ja%nHPn#lMtL?XCJ+Ik2_KgY{uFKWYP$F;$HhDqCZ+kn^!wQ -zKyX2ZY+0+v^$&x+tVGo!^9bni6z>*RFj9cQ6y(TReYI5fYAwtPkYPyM*HdM|4*c`G -zLAuWsdu)^~q@6O)_d -zpoQg-hfs})5&%V%JN8%RJ~TzR>d;g-cT$fL4BkjoPTV}GYNx`aCg-){LU+BYHY+hF -zb=!Kz=2xRjm)P!%NQiW8O$!XT8#>o8SUuOYkmX!?Heq5rxjHXqX85RMMspmwf%lOJ -zeb|Ej0E{)zL@$Lt9_^lWf9v@om1AxYKf=%kxC#mLsH&ae%5F6|UqLPWj=6NeBjjyY -zV+-Y4Dex+^NV)eU($u3S4K{Jkg8N@15CxBw;Q`UsN;-#wPkQni7Y%`fVY0h)rt$q0 -z;F;4Y6oi=6K4?>UR?d?R(hlQv5pR9SRZtezK+9*YMHLC{cp&j{w}OD@Q{~`RvlF~( -zm~TOem)~y87Ij?P))y6=O@A1WV-=omtu%xpR%R2V*M`-O>rqQE!(*l0Rqw{0u-{uG -za1$+rXlV;mOl(62B=5yUVf$$LsR>mvsZCZ(I_gX^Qc}Lm*(pe_RlFtxcQ+iZmSCe) -z^ek(^HIZFgwucd`Q++i+5Y0V5bBnP26{=IWFR58Tr#7O3TY9LQ-Z#y4p5_V^@ltr`IrqC?aI+wJL83`V`y6t -zdNb^;6$f(~Dl2lyk=lT0HsFg|YFR%(2J@_t(DjT*?Y8Qz{Ek>NPLMD<-VBx6TP|72MvZdq#uZi_0WX*ET6^ -zmio-tg?t+uU*>7k@@P5Ub?iQ8amh_gMSLC!cLTrNOfN{i1MHwal -zLm>gLy->32xEbe`R48!WxuO?1w8wPYsL45)w#M{kW{+5Tz=Z}xrn@QosBHGHH)tI{ -z9iL`8EHNWUBO>$kn#lUMX5*ZF7c!4KB;jru!W&z1rsY%Vk^y!ws%&Xo580?3ZC=sc -zH=NaJDdBfva;^t@qy#%o%V2;B{Fr%%F$P+dB5FMo8pT{tOY^f^(Of;8BI7D9Gb!TU -ztUM&@BRbc*S1@0UwNNyL(M~lezR{IsvVIgFd^X6$5-;=TZ(E-*J~qa>l3SKw)4~QK -zi)S{c5uWx&WSk^y3&mRWgP>4=qr=zkeZHbJvX<$C#(%wwU)60B*(2868CQ5g1s0mH -zp-(QAZQg~SL^OtoqHkJ3zZGx=tn5!DH?1JYHOVih(@3|6k&&>s3C@+pZeu^4%mNN( -z>wQc>tc@2`Zszc#4IbLjS3zUn8|!poV-C$3kAeIiiRADv7TrQdI660$b*Fba6kVBq -zBx9*n(AXSDGtYMBbeldtze7^qP>1-oEV?&ZPR%hJs2kj`EP+4$^FYJlHUfAR{^%xG -zQ*|?e-82~D-={OeQarP-NXm1?1jiCr_eB5rLejuB3Ce5jY;|dzk00%~vOvYTN-c7b -z=L_vAHTIY*CzZp=jHGD;nN$;p(BzUkkS000BmYd^Ohs=NMG{e;DWtPu(R+0I)nx6) -zb&-C;+CunFOVe%M0wuO -zkF8<3k!8JB>B;FflP5yE`zyfwSD3$gpi8XuWGNv7&xOq)pr)M3L0PJcL;Ufb6I~Fh -z6WMv3asZ!0T4bZj1g$a>dMI1`|AUef&W+vRmnyN=Hy9<>zpuz`9#} -zj>pyHMS!8);KHHU2XZ~96h0Gwx|O1qwJnPzTq|?u5S13Z4-#vtpd74iXZ};~w*KJQ -ziLUt#C8%@GU6CFAJk1cb!ZO8#D5?j#UR>xG#$6BIDL~!Jv8v?a9K&ucwy>)DZ -zI6Ag{CK`clku!WEj{;2z=~%rzjBxo>CDogV@*hJlU$G -zmupVKa7@KdWEZPUZv(xPX!TC3PA#t=B=eg%rA90{$9e?Khzm21aqWnHiyOI9C2xm5 -zg7sYEF{aEaEb~bE{OFXGcI>MC-@?Y}+-Zb|3S}DBQLP~l=}2~VKLvG1#}Oqfy!dC* -zJ8CyU^3`r#Rwk=KDI*#2#=;a{<)f~4f&a~2{oCj}+6N;-v>~T~vR0JPRZtw?e -zeGSaZ*s{fzL7GI47yWo`Xu0rC?DUFFw}cO}quE9uWjfnKk5G8DHXN7(56z(>4D}67 -zL$1q9$OhpZ!B8!$wKlmg(C|yH{bG9` -zCx}J>?bw#(+65BF90lo{>vP-U2FFf_i5UNUMADq}moL -z>5Z(PVEJBbyL`+xTW-jR^E2cAt2I>T9RhYI(&`ELi+3|VO^F7rR9qQkS$aoB{Y%;( -zGJ@?<`P~M=K;aCld(F=AzH;ka0Wwd;M&z6{m%tpeG;~_9sqRrI84HRXZUK=14FBd$ -zz&f?^h1t(Oj!xTNfVjX6Zs`dmbd1Mv)}AYOOS_Wq^${KcZ$lG-Lj)*38A4j*j_?Pn -z{O?)T%I;Rqsg%L|`0;Z&#;s7VTNrv_+u7`8?OszoruQH7t0qRG4=W#G+A34EptuC< -z((Ns(2pwWUC>q+m87s=o!xt5)!9i@LzT&JAhXP3C0A)~VX-60sT3QOsD$kofV?6;0qr-&(p2wJv5kc- -z$6n&>!l$YZQc-NlvV{a2x)62Z8oj|WCNuPye;z7rQOwo#rkl8^m+tU@I=8ID$`AsR -zbbtxYj0r&rEuz~F*SF=0danr$7-a`DBf8V_%b064(aL@oC7vyW2c!BlZ*Phx`EK=-}}=-EJeB -zv9NSYt`Slmoy9Q`o;|b)cw~_P!Y3>iL!Yx=nlDuG-^-}JhN!Hyj;|Asx<^0}q*-d8guSC+29t<*e4Hf -zfgzfxQzT5O>4hGmYMIW5%c)-g7^$oa^NqF&#{sk%I9FlF!w4f1yFLbXSPw>D1z@XAA{UKYkyF~me>1two0hQYr@lmaJJBw> -zrfed=!fRS7EI+Yr6->Zv*XtrumR^H -zwd)EvS(2MbZg%0R)ndb*FbH-xYnF7b>f47rLbd&)8-H%}Q&-i0$pQjBDcA=00?_f% -zP9i!V&8pqsYh79Tb$_cyL7Po8b8LT(`TrPO#y`i}_0KVS#6QNk6!-Oahd;;Me_U_+ -z`g06bvw5>(4tkS4WcK9fZy!k|X(7o2MHM00Lp+hKyC+!H~C0KS5e6! -zI`RbshATs}VW3UkTw6r;f3n8_@DL`p&8@lZNZX97q~B_T89L_M1xuVZ593UgV^eC9 -ze*t0x0`=+jUgdg_PvBrpVX+Im_fG1ZgKR~+O}!^Sfz(H~%E^UXqao#%d>PF1Q(jeX -zz%FBkz@>a~D*=H}*_R}8Xh+SF$cy}=zwM%WdCR2LF*Nt=o|Di1^M@|~;n69~T0g%3 -zEvLk<_aAnTC^8|7fG;QG0z!L#yV=(5glHnEhgx`8m|-ihmcu7&`vTegLOQ -zQi<+FVHJ9 -zu_vTE$d!#W`cd4Zw!PJlAHVhW(%yMY4;xL-U^ShLQoQ}NEkWG4nHmyTWWixc_8W=7~e1&bu|u|h!=1E6x7^Rcnf6xV1_-f7sZ^eE~q^Jmw4`aOTz -zyZHr$5_}hnOBZ`xo)I8Jl`C$qymUEZJW$kM0ktTlMb`+h_&t(8W`vqmr{Z*a>hh(f -zA;zT2V%yIP`p0RK?8*;??c+d;b>mj;r0?eYyQNiOCG-}ImUhDw@lXl7nbNg$S+ieJ -z$=KFjeISEP!^Rwz%whY_BuZ+M9`e9yMXU!Bsztzgsm(lP)!i7?`M~8qdLRyNE4B$Y -zIQPbjx-H?mWpdTwgqefZ4tUMB;Ko{#puOY%ywm -zxXeqH8Y}V2;u3Z%&m;G+^A<^pyRq0x>o=@Ih_9Q)O&Z`*3k|pMrO!9dx4H>93%Ltbc%r%g%ikEUncprAuf -zr_C^Q01syGi_y=TDp(GNUdg_nzdr0keqqJO=;Hz;qD44l)4@|4i}g8r)Ya~w$64uJ -zm?zu;yG^0pQJSKLO^Bj&KHV6XIcVEHc}<|B{8K{6t62OyH -zzqKDJ50GFk_D2&F6?Z-88MGmRwI$xh$Irhn+X-prHgFvZ0v{G|c=#RVBXTzg)!nXf -z5r~nLqDE4EVu*uX8hVZ`ulaii=4b@eS5Ay40zsy$CQ};KA3(L)9w?R79-^C@ZcIj< -zUR`Q|?7*!vnJcGCEqQizDi?6}*Vfu!)okT_nkNO%rVr_^g%t -z+5zBHfMs(w)__clc(hUBT~Q+SN7U3V(JEjqgc{7U7aLh>t_$FNMa3^FdJNn-v3_mH -z)x;}7ngZ}&S;vGS>k1;S$SMh?OtXNt=8Qq9{Dub(*xi|VX#Fb;$zNiYqPZRogWCm$ -zSZ$o_9!{T!)x$Pw)o2g$=CXYR;vd>=B~@bEj2A>}ZP6*nf@IpW3BoT&{wnZlIcLT^ -z9px0tE_LEZmG6i@DB<^c@E{8-7f1%SZ1Y*=Jf6T6WkP3;5o}claMv -znUFm$#>4OYL-!*$M!kQR90Kr`xvvkXIOXKiCmVA*yzs1Ks)uaPjj>lGs|j`Z0x?*6 -zy-c-$rN0#TI+<{R(M$?X0i_x%PE9NWujB>ipLCA2oB@Mz7~s^s^p@d)%y5U~&4PAH -zSO{P5!3ZN>3k6?*jTwEv0JMM9hN{ke^Erm&Mt)avpt}ze!dUKf;OKf}W64x2f0Tbf -zK?gO|(8(p}o~w9vZZ1Hxd*rt8Xhi`gZnMN=t_z%Mn(Ok-^D75b%>`C^N4{)hoRSMP -zCMtA$w{2QWUmf)cDs2nVWsDS5JfmzNLz2F{OU67KUYXI+XVjwDGJlU3UU?G<+fbOU -zO5qYnvDNMcEEl!MR|z_??9Ujdf-3tbU@-$NmuDG)fiI9(kx)rb-E*7c1(o-emjFW~ -zd{T?fJwP5y^ow-BZfKYXdSzeIT8}CijHQBxKkBWQDCMJd`qg&g+^rask8VvKUsb$Zr-gQ=fmG)Np8vk?JS;93NlA)<;wI?i3o0> -z&5pF6RVWLE&c#46$|1R}nv4a+G|jgsx -zCLo74m5=fz(Le#9}*abG6;8tX`{fKUcEd -zKrP!}kTtDhX>&8`Nn-_oNcs92pf=0(DpM^tt06(R4U_6s_8eK@C9hv=7o=xFB|6}r -zwhWg93s28Q)i=OC^hJhtuZ~GEGZfgf&pdWlZw76}(`Eq)AcJYIp$Oc#7w!X6Xyn(D -zIU{!wr!H4fr_cmnGKVeruv%mG;<(3BJ9*0RERCo7Voc!Zsw6Zy+GW)f8jxaen+u5@ -zt#C5*HCe_nZmn3ioeXqpH8&o0tyd58kdU$TK -z%kIMt8~+-|3Cw$QsltfE6(na7#1x$Zdi?QF$eeTWWvqN5nGIFW`76oa_3n(;GBx`5 -z@3|SPLWRuwLYR1jhI^}xwKUcT$5+5Cm@qU2qBOS|(-vfO1sHTR4{SC|dy1q=!&CL2 -zrPJdm)v84g{AY9I`W55?N%|xSfWr=%d_lRxSmLiQe8yos8P)Tcz{|{2WXE& -z{MAdfo19Hz6&0VAdpe_?#3@{g5)A2%R`7gs(V#v@T#gZ566Avc1dzf(?Wu_^uoNS4 -zxLRF0G&~$PEr8O~?hF#2S{lGrnsd^Ef7PTmA+@FY{F&SH-{p8Sp7o}b=0*i|$&Y%Ue!O4?Jn{k|sIRXH?JZ}wRg-7YOP`pOX-ox8m2>ywPI -zQV1Y;&jG)OZ<^w(XiLgJ!^Sx$c!9GiL+XWclV7^|76rKJB6Qm*Ew-|8MMKwZgwTSW -zh`w~Pb+v;SM=RecKR}{H)6sD8^l5$Y^w`0sO?8{&n(IP~kS5~vpM;Oh9NFrla!p>+ -z{ArWA9{Et=5A1F?;T=onJ>!+sN)n*YTA0T_|MUK~OVdx@b6d&|28zZyjA2T?ZGerdPX0%qs&QnmNfKi%YUBjJu1Uq5((sA6 -zUWQXb3cfkP^4W2+(`0SJABzWnW2Q;6qR7xh(V~7r?JsjS44SiIwZticwWP&u$kD;( -z--?)IT>}N+5`J{ke8z+8+<^dO@aqgfP(ozNB+{unLIf(*B?f?K+H9GkCU(6KYc3t5 -z-Oq_H4e*djpE_H-+s=DDt*49+xtUqk2FaBnBo(|^W{D58y^Nk7%Yrc!MA$dJGckin -z3oNxwB;9+xkqBLZL+7mFnH1y~Efh1_QKkeyP%_?*Wlh*7?Z~C*5TK{}AU!PZLjRDN -zklGUGu=rI=tL3NNvh`$g+ZkU?3L0p|1X*+k8Nx3feuG+fX -zhV?uB6=w-5bjN5VKI}-rKRm29XawY_wQOH@-X-nKgb%_Ol+SM!d&yPaQ7stF4w|b?sgj_%oC@r<`Ec -zTiNVr@Up&yVBwZr&Nic~1x~5K4Ck&v -z?nBm@LC+uDWO?VnY7z}4gaX2tyYTh8B%U)%jg%7HIVb@a2d~0FWP$ -z7yW)Cn+XIQNYx{?zQgKl8L$#K047+F2}PB#GLEjH1MKq~T=s{h6V9hT9Bt>DR`?29 -zJNXmMX=Wh31|zRqp%{z0J0=+`96)4x3bq6(U@2;o>G?&n>k$dm#Hwr)*d)G5ZpFLJ -zB&Bl+E19u?r+5ZS%ZmQ4+~yl>Gps#n%#aThb#|IE;}(l?SB=uHr*_MwpnB`~mRC3* -z41U2$gY|pdxsfLM#sVpa@80Nz`b>m?;MS62+oY&E)csfR3Yh6aW{|D+iOZL{pcP>w -za(_0fVTNFZ#&*{7f)}*kX~`L(9W8*Hb7lh8y(U2S-WmhvvX0h1V;PJ}#Vetg^loUQ -zHa1}6bG&-%*CQp?nV@Ozy2GkhnZ`?R8d5KCtA?Te0R}rq5pruO>MwFn7n!aXl!TqW -zjwUTRAjclQDVe*BzKr#azmOnAg}YrvaH@>wh>xWEPh0O~7(nf^54ggCBRErOBHVZ6-{Op7wbq+98zhohqy0#@oRAg)9muv(18sy^UTM{ -z^U$_!1RI&g$Uy@*pPEo?$Qzq?)@5i-5BL_Y1J6CS1`M=Eu!2UB#$y^H=cuslP0nnNe52@?C^VIr|uX{Y%J=Wzzpo-g^iQk`z~1Lacz^%#T_g4H@4tVSpM3n> -z77qUKwLX5;THl8_kDjtI3POogdb#+=&+pq;dHn0U+{1@_k+1yY`}evy=f|(_&s);R -zKYsnvmw>PR_~-j~b8LQWfxrIqCf6!1@$)a-gm&mv`}Qzk#-H`AJgxlMU*A7O5Q+hW -zU;8Uf*Ge*Y&A{=N6$=#3V4{pa^@2vgA3^KJe^Qa;=@7x0@;&d2Wk -zR_upg3Xkn-@EK&bQCItN?WLpZXWSEmCL%=x(UWN)hX~2foeGx_{aR#aKG-C;yBJ8* -z@s&sJDis6^rQw3sb@WN=s!Fw9>-d7E1395<2jqFrxtxp@WTPP0X^eZn?A>w|kSiZ= -z>bhcgl9=rd<0O&t)>H{dUc-TYACxa4P)~ckIRqqtZ+d2rgEM;MsTJ2GV+Hwf+sh6$ -zmf@I+GiZd&IoOhWS@Tm!fmBUMV{|I}9&)&ct$YAdeLj`qI)vw!pD_FD^^Ru?)Ci;NKtR3ENuR -zUt940D<*#zRr4U7apma95za{1jTG{*T>P)v6Q4<255Vg4;nxd^DbVK|qDIplNsG8~J$Uo95EBinK| -zFHf?v{A2DvCQ{ZucN!;8HJ4{tI}kQfaZfL~6UgS(|+HL}AspoK3` -z48KS|`lLS`{qI(wq60<9fo`~bv^7qi5uQwW=b`d$)^j6qgh~y1@$wJ>4MI(!f>8;2 -zmUg5J?x%WR#hGKNDr#hv3~yfsj_OC3{`@Ht4S)Xq{kzIb9JzH;zEnPBlhTYG9rKFU -ziN6^^GpI?AfiUK4p}K(UyrtiX2DbbmsZp -z7`6GUfHBqN^@w;WAhFP3YjyasDaD&s&?l2G4S;%Zol<2z;)HoS3p|C6<%y2WU#gm^ -z?3j%}{3XLd3{@SQUsV`#Q;IP`f8IH+Tihz@p|;+&sBj!Z@+N6~S%TM$Y_r!G%eOXb@Hp-Y{WSXIY_v`)6cWw2+)K*!}aSwBz-!pfE`{v{c%V)MRy%H~r%LQbegkl|_6a_`yS7Ar* -zbEJ)xBP%oz*HUQ6Kw5_$fPNDYfbfgQ` -zU->S4bPA;i`pt05)c`V(i{RQi0SS^=rH3qL3?s!P;4qs+WJuFGDMh%9kjPim1pqfd -z$iH%RfiGP|U|TCz+|psjeoI3PmsdE-I=n*<%TopN!Pk^tYQyX5Xg{?Yul%vkwR|)w -z3EUQi0v}KOgqC>g(Zy|~u^sh-l_uQU=`J-GQ|^XC@z7;LFmUmpd8E8iIkp+YQJz1| -zfEM>a!i8Stu^zfkm`9fx)9jEhVcRHushkEJ9^jNHZene^-PSjbB*~RAWhB^lRmvEY -z23#dVS(_cH3&u*r0T@REsJ$)^uwSontf?Z34i}4o%Hew3%A=!0-Y~;Nx8zoD;R%|I -zSxH{nV?E33KX2cEUylE}92LRe?n9ifj)Zct6}w+NP5jAUFRQHkCz}CXc`3%8-9Cz+ -z(xD&aNt0JcsI2G!0x@v8z$BPQNPrJ^M0=tzM-YRKhbHvU62D!t8`lwjAl9;EWG`fA -z+fVeN;$|wlw{TdvPfrM6Uut}Ghr;FM!j;Mln@ -ztFD_+Q8nc0X58)-SP5v^D6T{wpn5KQ@-|Z5SRC8GFW+geN8RqP1MAPyBJM~H`d3}r -z0jmJf9XncM`SdF{#gXYlT6o; -zJ`dH^`u_22&F9bw-n?NRSOPDb@)rTX0jP$TG5WP8KJ?nC1i6(bte44Sd6O1Fzut?_ -z_8K)1m${T}U@b+=Kbj`w?&?HK)1Rm=O%{e6k^x1^*IqFX74oSE8JN3dGj!-x-G-{M -z%qv69)PMNmfkWadcDrqA7AJTxUX`CmMH!msY1(1NqOQI1^cu{1|*JSu!~u3Q_sV8@=oo{yc`# -zmSJd15T!TfC=Ivlz6}<_;Dh(S%E=i%zDo>k_?{9zmq?bnNQDx^rhTBzimuM}(px}}(U373E)L&-ntZbH8#^jL8w-gEa(P$2+hIqZ!ftk- -z8hW!oewVLePfC#?ru0z1{nhGM_4UUFJZ(`!LbfK-H@Mcvag?uExUB1Ua%#h>Un9A* -zl4Uj*-rLBTa^Vj$hy{0seYBEW@7hA8jQ)%KkK#Al+gNy=V^`%I7091CSzfXhaP==D -zCZZj54E;xsu!9ou?ze{gET=#?Be~F-QIhWJR;;9Pd+)Tup8gznsRkbRH7^tZ5Bn8c -zO}}z{kwO16gSNka|6N>h`jrjv$)T>&WC -zE8hR)zABdkJd=AiuJlS|;7VX4gFjx+`te_9{Z-624olycN4BL1Q1D1D;+lY~<8xue -z)O?xKH32a6Kr6q(@pBtJdAeiaOWI&J`s-j%(P#rY%O&Iaz-Ea7r@MSrzAL!(VG6kz8w|TO)2cA;Sv&f%U(&$TBJ|`h>2sORx3JNFq1(&%d~yv_7O2ySYS>NzWu{Zjo5iJ; -zd2V>$z-W*L9`l5fz~XLBQUe93!l}+)K4W%WEn;o1FF72*rgXl`+)0)9yV?jPVfKGW -z!SZ7jcyd -z{sX`FKPVZR0}!B-?9#)7JSdYzGE}@>832)%@G#m=;h^I>Nw|Xq0@Z-xU8MCvUM7p -zGffr!O-9T45(kTIds~g6)eeelzYK9l&2~^m-2O1Qf>}i{x1sGJ -zakQ|`QWf#>#m}2V_uwDq2b^DSFCc+!B)-`nMlbzlgIvDM%83(BaSbCTD*6tCC#st!tpB8UvAXG^ -zNa%VG1`KHc5?p!UuA|uBo>PUmHF=f!Ty++bj-?{N}t=S#pUef~{3GU#vG}cLh)~c -z$pD`Iw#M^Pt-r?Dmi1k9ygxy7qeuJx@FZl`a^G^JX(?OR?E%+MZTFS@g*s|$cX5A5 -zSCwh36?y66DJ4EqMkLmI7Vqml7`XHLESDpP?2Fu%92c*T28sjcs^1@9>F;vw((|nJq -z=#TFX_Vr&H?_#5~xDOnbb?q`xBtSNgc+LiTT$wVTDjxJ#LC!M+Hg4?fc7vZmcBort -z3nRdMnh2C_E!f^+=17yeHFH`LOsIj76qc>8_*V%Dx<4^5Dhre|)oeFdAFv -zcgyFAb$z)FWW7R}H@=M6m*~eY?~NIcZ7Tzr5wKUO6`cbYnb(aE9|lFhN6%nz26T8X -z3GV?&m?Qb@V1?T3e3Gs=rdOVYXg<}s7VGp{`dS=bJ}sukpn=E+N@7lmpYz(|!~B@* -zN4de*{r!6QbIMlDb}6CTE-PwV%gh~Q=ZiDUpr9MOAt8Z>qWOB=J`~9YX4HgEIHNI< -z-nXi(Qk0<^ -zrHox4Eqa7Ly#F%v)t`*f(^cmhS*i7~svy$nf-DT}2Yl -zqKRp=I-1Us4LIgh*B<4cRfOOwziN!!nSySKC&IqrI-9b-cUjhDPj8 -zdvcKZnd2C{B26l7nA)6^n?PkUVe*I}pW{$9*)Xg6aP1p*(^9smubiF)73BfajiCOGORt -z8ObpXT)tWa$_l^`Ml|}eyIx!xUJgbJ%@v?P2&fq%=KB5D&B6ST$KLbGN~v1_PXgIA -z?dQG6Vz_+ogu*J~89Ru-Q&*C(X_+YEqpzlT!r_3Ij9yudk?)r@EFI-9&sK<$)+hJ+ -zYF~tmh*fKUlM;?b$LDy_6+gX}4ZAy%AWQ$(-@jzd$RSzgdKeeLLEP|MHvyE@ugM3O -z5;x|vC_X3=1`&)>IJPv&>oI)kUtg)wmi|Ufk^&C#-{sw2CTYtS@4g#jzz%{=w`ur( -zE5?$AO{P;7t0VDS^D&pw=0gPI(x-zzUyEUAbhmbq{ShC%FP)=<`$0)KgcZ%;D)Wv7 -zB|qQ`KQB#k -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 -zyjn_!vCzkSq -zJ&Fp-sx;#&nv9~U3xGy#f)I^n|8)R}sp6zqFu);kDO^JTggS8+aNt8hG9+L{=6;i_ -zF37K-75R1u_B_5XK_H7<(XQ`c258asb^;?*OBOWlF{MvQMdnkL%XbTDWOCb<4w$L| -zGs8#pHfYP;Ia!rX>5j3@mlLX}W61;@l|<=2kVZJrGt{mqkw3%CnT&MaBWOJDF|6`b -z0~x}S25sZl$9qBBI!mDc(Q0+mN?14BFKxXBGaq9c^qS;z -z>o*?%O2}#mlibm;DYeO{)SQpUsKl|bq3lw#MF}-i^Z2wYx-GYqylW0ED8=<-)^PS* -z)j#!Snq9&Chf04rY9P>6^@r3ZJr)J$eN_8HpLwzA=trAM{r;D3_lLXdBW$B3)-*!* -zsI-CcVXuUqTPI-s*W1lnK=J_hn9QtUQf{@}$hQ8$hR&7c+!tYqnFk$M3zpQZ_r{o| -zAyIze!GBxeMUXT7HhJA%LVl`Qn9AyC$a5-*F!!R|l=k%_XT4Ddt71%8A3!r^bP?z1 -z*Bpdy4>DD>z(Bd2U`&IjfYhv8L9tL-am6t$tfmsZu}7GH@)lX7H}-_XAuoP(RSc*> -zBXf|mT!?r!o*BZHkrQ7?@@|qbBMXd7TP{uKPZnC&@=4g@42l=0Y-|OWO}6s;54z6ME13@&NVRRDKXfy$Q5L@Am&MHHPC1^pDxd%3 -zyAAjBno-uWF{=ci#6F|t!NZ7#?Fb%8_bKaTapT1Nz=?v2G=?$7XC9af_p%0aZu#S7 -zQ;rs350jD$2L5?QDMn7kUX_ -zTK=`oCms}uBl2lw#lm}HCL?;21-k>*GIBR@11>C?(2ei4@`!n;?5EQ$OjC(D;Krp_ -zz~2a~8Y_@jFoW0DY_g_`7E3!r+VfO4R&2Gn$8>ha-$6!lK&BAdbML{D@+N7Vhl-^t -zJX4J#c&frO$ET5mbU>b`=Sd27zu#8RJ=vf+5~+YmXqYR*STo6F(5r#5W_ue__a8gg -zmicBW(H+a8ghUVnOHM<~n^Q037q0Qt -ziTxHNS8oiUB)dpd8uQ!Ep=M5@racKcj?6Qh;{`{Cq%1we_%^w3 -zXayvjQcHFhw$E+(ep{;Xe#0_C5RA+(vM)ImMw2F-9tzbXn^EbSy3W##9PcH^KBYr> -z0sLHzlZo~j8*FUG)9T^nVr^fMM3Zcy>5Gk4qlH}hllC_9jCvw`;|Me**soT1Oserlj#5NX96kKd(ZbvwsgyS^ -zwC!4^#IEAQSu+Vp!29^AuY_Cy6usMS#H&PJV?XE)$m9ph6l2E#*~-m_HF4iJvS>wz -zFb`ajSr%mdnE!5>el#u|?=FW?60HtB0>d13l3ccAac#-a7il$L90?aVRG -z+EJhyNJKLzZjG^_4_g8^H1|NGM)UpN3MefruGNUsWB83LwCLJ!tkeVsQC -zb~8n0pj)~%swo#b^X3EroTlJ5($)Y?EPb~+n&zCeqMX*s4cg5g26u;db~EY6uaWEQ -zGu;MA7mywp$hv%mvS3$T`>B(i<31pU=v`jr1@`3ZoVg -zgC@d+T4Y&mT88mgd1R1;xrl9hwltx5>8%Xihus7zsPM#|W#lh@81Y(dEFy2V>(k~rqlg}r){`oEi&1880M^YJ) -zUE>>Uy&va8Lr6d0--XAJuS{B;Uirf~d&yc171@Ew$(TsQclK2ND;h<1g6~g9)(0cv -zk!FW%n%u$#a!>$xo}P1?ih_XrMm~qs7wN&=%TNQ{%-aj)Qqn#wq&WiJRl&fx2`uvTkMJP8Jx9K$Ds)KmY#6O+rY<1^55wHC*XqT*fM%s?p*w% -zAicCN>YM-tu{)IZXfpcLBMJTcM;|7BRzWIq3 -zKP=5fmk;hF%p6pc0sJ7Dch5W6qot7o6CRB4mDyTr1VOng0@8?PC??)A7XG=xcP9I`wZ-4UwmL6sXH$zAs?aT&{}=`3d(HwRKBqaC)RhfEWCLsn -z)$sA}-`p=VCS#nfHj)8iF8J!^r(?{DM-r#jHz}-SYR|tVixx7`U~x83v1>pG9H>Bb -zOVR$xeZgTe>l@TCG_U#XF-t2H1YLx5GlKtq`$sk@&?pR==~z>HiBQRpjfLpR@dOU7 -zH)6ea0|~o(;KYd#+RlBz -z^3}JADhS4amepbY?HBizZ3!Yrp36lJVW$uSaB*ZGJZbT2M+QnnA8`aqv`VS%jm_R< -zfo`55E#w{J5kTrylV>m&W3~q76LR_+KuWkds+Isc;w!3p#6$pEFW%ea(nFAYiLO*j -z*nsw?JN!qA9>(2t4!rj@YQhB))Gk4b*(iqTQb?m%t#BCs2c=N|xBsPXe9bJp{sv!p -z!!Nycba;|BY>tX{p7V0FhSN17?B4(Shc+cG{i^%MY1FN#vLzo-^J-j7z{Sk~wKcG< -zlYN=WPyjzYsdC!MH5;bA4IvtNeh{f@ho -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 -zBAh(&(L$DiGUD -zJ(#ymDdt4s2_lOsYoL{J=>R(`fLB_NQx)>+IHU%3H=@JNjfSc{fpp->Zs|Lkdi-S3 -z34SA!1~B8B{J7IFK->g#AyW|evLC&!W> -z>Q;Z=m$dTXWsr;2si8`S?6E9j-j9u6^T|aFC|4X#f%K!`0;L;z7dPn>YXbfvD{Dz -zYRxE2@2b#3qNAq;+7NAX0a8MWtJM`s^ww^0%!qLrhOkteTVRSSn#*3Hm5DgI1bs-d -zrtVY43+;E;g{M_PfsbZO6A~BBX6MEq8sXLk7~Cp9aDt#m>DHmf -z5PQpjvVh*I*Epx--N~qNk$kL{{5%-DF5qd=;*a#|X6B32;7?XNWD24=TGKKU8icmZ -zYbo_7Hk?4Ja^4O|FT06~3UPT!Q9C^IbTaJXEf?RB9W=p2XU729Dpbb4g{WaZE~6l+ -zQRKkMLR)VrbrCn|<0pC-@fRDk25AiD9U2_;IN+7k46>kPU>lgq1*M -zEG$ZXj?a_sM1usF!1*_WMXDS$R1c1$zLJzdTf{hHd?5pX~#cC^C8QF1}p^jh7!xOQU4y(fbO -zJ3$|!jSSB&1*4ur3=+f9N?We|G*7^Oo#W*TNmMX+CvrTft}%tDkG1h=%k84ED&L(BgI3|D>LJ)N6M(cRo=aDXrN>EYJr1@BeGR@5}$=fBWCu -z65e)KMXjs)-~QMC^M6^6y+=g^scRR&{bgnGGolYEFnNz2=?pl0$*)4=8my&nZ?*7CBJ3`io|g_)SX&d;GQId(6Trtl2Z`;_Iv`z2 -zMx)cwH#gY{Z`Emk-pHz7LC&!r>C>URTxocwlflZmUr(NzZ$oDw{xsf2-Hjuv?mafU -zN^b<~n9q-1NE0m&qt7~;3|Sd_4Viwe46ZrUQP#ip?T(#*_LX>d@`l5mbM2Q+0mF|R -zIT!N$#bMJ711r~*h(V3s6js{!k|3EX3m-hTNt;Ax)wUfeLxlQvNmWP5{(b$r(>hX5 -zisTom??e|MMIs6WjQBhJ8jiiVS?nd5A_twPJ?JRaNl*d9s{N67Y!vcH`>5_BOyUMj -zd8`e>emY~!MH%VrrQ4M6UwrO*6^b-LI;ddca~zOPX6FRj(Lu}a_q4!&Alc2i7UV6A -zYl5u90WZmNlrZWN;$*k77-G>!I;G(vCN9|vLEY#Y-D8@$0h2L=`tI$BRtmW&fsJ5N -zv1qzLVuj|IzvD(N*Ky1E2D9(m{E5O^M1MaJ_R`L-ltLQZ&BAB*u(_BvYL=D_z+M6# -z-o1s+){K{??9BmgL*F2Y5xI!inDM3NL0Xyr-*!I`h0*T`1(~$Yaa`5ww^(abXc;HB|xwM|{67FKq4X%V^+ZHt%z+JSt -zo4`<`7CGu2$jYqTXSC9IcI|GSY<;ASxd3^MNHmfwh~$lLu+-RtN5e*nFY_-q$a;4G -zzco(56>XJoFrEc2d+8Vkc~ak-XLFJv2f=^R#7tpY@8o(fzX35-#+gA*5T-o -zkdGsl6Il|U?_i> -zc9*(IMh@ZClDkyvQGzerK#gztDQu{5G#6a#N?kE7-pmxUMI~KawDr>>8$&m17=!ao -zH5UQuc60Mh#mD~G6UKFYqkB8_F}eKeWVc?vs}oVONu -z(Ftr~3bffabZm*p+O?_}QB4HbYM*NAQ2%!mxOFMz1+gaTe;BUUT3Z6mc`!Oqc-XC) -z3u7~J9FyD5PV@&=XzN3SnQr&ktbS~C44UMmTm<0F^upktjk0Y$w`@!6jmUt2AR_aY -zp?P07{MUTDP4%$;_4&K{{o}8{eHx9wKfhPQ`}*+zRCk#b&XEJbv?m+O_LghT@Yn_t -zJ`ZuXKmEQLNbV$<*lN1zZeKi-8(NVaQO)Il{$Nj;t&?8y$HT$^3*f9JQ#5LE8+VprR?&@VO10XN{1CG~vS>IQ -zh$>i!S7bQ3N{hdsS=YB|fTFS1PVG5hAv}MlFp4(CFVK>LhE976W7v{$9 -zLpW@wy=y!!%y!y3`XPKGbCtSJ-BzaN={I2ikj&r$mm!jao-3IcAoSBnMcuYFWI60$4lDfZkDi{m*kcQV11Ll6#2C_Tw?NByB*=`peuFFPRTE7w#~(j$(&RyR -z_Q4hy3dlTJ5#1Pp<%%dvve(HO>a8~u0pMYDND9*mLfreW1WS{WEy@;wNG$cDK!WK%ga -zDiMa9mI7q&;F9_qxXspvZGH6DjoQCL&#pZwZdJuBRyHrh7*QNoxKbZ0pv@4+F1(yCq? -zA1j-VDiP;+2M9^keVeBScE{w8tqEMMrqSkak9HG@F)W(Xfu2_<)tn+)E)c~|*0Fm^ -z4XE7f!3rzcS;%|3K{f5sSRI>a2kjr7S^kOY20fE^N5(xs(Hz)Fol#oD1~MhaCFH3} -z76QqX-Ks>S=S26dz;UiF+qGul;gX)1k!3RCPnJH%rBfRpO7?S#SIJr9XmKd?WLo?I -zbk0yn93$X>>uwIxvdunPH!E51K#jObN0NF1@VX%QM%b5tWLBpcef2kuC$2Ns+)RUt -zC$i6Y?~-1jCHwyUJ65hJMbT&^JA?Gt!?+Skb~IDbviSVeHzQn6y|=nRH&$xHa^6l7 -zzl`sJx^{EO>9uz#Z%?T=?hAv>wjB$e+???9gL?~D1(XF8fJz!~$XivBgk3U$08u@& -zX|6?m0RKS#+q#23m#N8(!RH+3a}vAB!EpNY^cFT)++MddtAYlRF!V#pOn$=Sd%B9_ -zh9pV>Pelh@253WUZpfzn4ruX`2iz67DGzesY~kW1uH-)_!OD$>0Bk{( -zz#B5iQN^ExJpiN{`oq!x6h`W30GUr8 -zg`_xX>~TzS|6|gQ`}p0w#xsw)h -zY|X(ONuDD#-0a|~`ZLoXuY|0pZaCl@FVYA -zL?x$DvaimL4E{iP;hk)v-?jVYzPs@5n(vi&-|Mk@e|O)lWlpm_vSG<5MfIj;6HpdA -zbH5Qo5127fbWwpo2ejq}!Rg6S4HL{u&1Y~aQ{$VX2HMBm0ha_F@(7-z^#c<*MWzbc -zgjp-WWUU1rH*KLFAMjpawF+kDy -zRagO%#@h)6m8&iN*yUIjsmC*6Sxjgj5?3MFad@x|2^DN#C-AYZVEQKCvJTS}NTJLM -zDY5`j%nzjVHs%eLW{JooY%rRi-d92V0x`>crab1LIUw9t(m$MB5I*1owLh5vFSQXY -zeIakr#jl}b*!FXdpzFq+LZus*)4cxV6z0V>Mkx;$9;JF8HshM80*jAogJVV(l&la0 -z8VE=w^b -z`PGXGry2T0(&cl_YJOx$jVc$FAR3(OXFq9wPe5L>k8!7sB%sWz#ITgOwjvMJ0Z4$O -z9PmQj&JDpbNqff{h@Y#{bk8VeS{5f80s{9C5Crs@LN5;(zK5jOh5IyS}vB>;sqcaOdg<^0H`LoINhMiL{BMwutR3L!XA7!7kGx)2yT%SF1SBcIy}lA1pg*;KMP52WnvCC) -z5jUjlll!ti4`*T0wMJiuRsP0fXDi8c#E)j73uwN&?z_XHkWIfjlsIW|PVF2bz>TV3 -z(jQUGw$i7N{nR4M6x2jTV#U(wu<})sc+Q3^5H2~mHIuiQPRkB%GJPeU9aK1D3{qi; -zleB3vxZh|-1ie(~+qR3huK%Z<|Nc-v(>)AU$$XQ+du>SHL18Tow+ec>_^^2dn^-~} -zpPTFW_ec)!hl3raC7uWk`e}1kcKPK-oBxNeT9>LiNntE|%$i)921q@h(oDM<=i=y8 -zw_sYI9D$WwcN9}N8^pTZ=zUJbsQ8%-NTKyBOOTg9dcJ6u{J&TPv^zwQk)T;3Qu}JK -z{&82<1^>qfi|^*rs>fxDW9f|kkIT`3^mG03S;_eO=NDk6}<`A|3L_ -z2h5Txi{wAPMQg%yfl~P@F#7sDz|?D?RKor8EF9Qk0gMnStrYT>7L``gpxcw>3fx{1 -zeJdHEw0u-oqAiPo%M3Jc11P438-x@l{}fks=%W;gi5)RZE)xxVf$_rl6?2n{SKWZm -zrE_&=caaoxpMZa)5RyKP6T+NnB@3iUho+RR01jTh>z;H+2M)r{uQz(y4)Ac=SB#7! -zDIdP*?$;bxm2HeJ&Ge;JzkWMXDH -zq^eP4hG8yR+)15Hv%pFrT%h&5GpTRYBLO7HoL|;_I-nQY)$lv`?*v-bP5)urjkIo1 -z6$t}~-ZlnZ4l=}~W9b;^0?_^ZH{b*7{83N7lh0qRk>a!L86SgU -zc3j+OAjBB;1@H%si$~+*j;RIHQ5@TJ>gX=FI{HxiRB^*2Xn{e*rp9*QOD -zs#;*eP=Tt+W6wA)~i@#7W$Oz)Y8Se_-=X%vvDqra6+d&@A*UF6Dm-2qn<mEm3dDEyFVw -zkilVOF4Wv)EHx={Oc?20he;-Y6$2Dt)Y>*>AnRp&2||`}@y`b9)>4q@`i^e1F2EYu -zK~)x{ZR2=O3!D?c9gk;}Y9D?QiMNmeqYG*S+*GGplHAg0euf2I$hO*j1FD!2oE-A3 -z=*d6`(nJwzJG5F$0|7yT8F1;hE@9V(4=Hp2#uyr8*1NaBiYy+tZ(`4LISl9B$eQA$ -zx!j|%ou?*EZu`J<(s_oG*e$mLa*f+M$*&$~r-4_pv7X8DA%Q~H6VQNwn%2TPMEugC -z+PX%%C6hnW(nGbd_}R}?EIE;RIyNd7$%d`_Em)H;&{f5*DQOyk*+H)9x-$6*>1bND -zvb^FVou-PP));n_grG+&AjGoo*2I^zcMXS2BQyS0$NsW)Adg`$rGw^}Qjf97;0y=I -zaQQ{bl(FLVQ3uJO@x+8@YMR-WQNblGeAIj6Z_q>TG*9A;lb~Zllx1`*hU^eqx;}Xw -zgbpqGX%AJ0a-g7Ohgl;OnsUvFkD9B&?>;x*)Tp8`5;GWZT3xp_K#N6bwVIo}0<7Q? -zseiHpEh`}46}sdr6wV`iMjIOcNV_2ymFk=3Motn6u`)w2A$i#!EIr2=+DKl9N1~lkdp0r+6672g)SBj)y8qy4Zndk6$*mjb2YQORdFK^q;lU-LFhN2$s-YR4?wb&3VrU% -zx?A=Tz*aiXWlgu#a=g?P$MQ4Qd+YXNM1~9S4}ylpc;LHK>F-*BLeD*0=RPei -zdZX=|RPkv+P(3L|5_p%Y)!KOxa`lOJ3$YMsw`;@BQGaRK<`F=}XWou5UjU!UgC~i` -z?TEWuZV2`Q*??D_;%itJI12IDvXF+$1PNY%O7T}oSX?@h+03fB@iF_uQuUpW!;Y7i -zW7QH(!Rnq5)&r~R%EHD+|CI7X`Elfu!{l;(#bXIZ0S>^K=;# -z;rGfNvdy70#Th@wVbS7nC#h>Rk#dY$K-GJ9s%n@P1Rz-4A!1K%0)vGQic}*Hz?G$% -znd5ab_bC@=koE<(rj%-0_0_;Ieryb!v@rk*&&Y6q`_x&{Bugj3Q#^z85fvrSZ*_Ru -zo*20(cn+OkGb<{PSN%eB<8QLv&8U6!VUh|QcaX|%PJmtuPL)7Fkg>=O`>EUM<0luS -zbG|$MO_o~v8#*+sx59KHdGTfGd3vJ8*cT3IV3A0wU}T&U&rzNPXeih;By>9oq<2g5 -z6TsREJrZWJ&49%?aDiiz<$wcSyg>${(uwRXCP@-82FpP!azwq?NLyX8TuOZMZ=m-; -zsgb=@2E?^uW75F4o=Jp976@Fci6S9^#yTnqqi6%aTwhQPwc|#f$v_bmt%p|)y4htu -zm>Y;iV4ZnSIkjzw_Z!IdhM*KMB!sivZsS*mSjD@&l6P@O30V*aC|bMgtHvJb-8QJf -z(S-Zy@&KprNJqxpeZ;EfBG=vx! -zLSu({)I8;$(R27g>UNf;ZV5_(f0rU3zH+LYBJ|5JFT;O%NC&gS1C)p-hJCMCer7w@5mYO7FR9572EiGhAjokd>~Y -z&}wXX{E7X(?TQf9JOR>U9s%p;T3YRpCSHShqE9m#k*%u2N=s*)jL>Kf40s5Xbl@jN -zhHVLElb929PgvXUKP(Ueh&AvX8)vE$s4v9-xE5vfpG_@)fY?UGJ9O;--JWwEx~!t6bpX`u}vc1}@j%Z%7slGqry{J{+r{P&p0=sl9`g`d)* -zuSA0yv`kJ$HiXxMgCwYxf8!&4(t@A}vEDuoa@XnSj{J9};~;R8F)ov{kMATKU3YHJ -zV~hhS>rW>*kmMiqVck!k{L54prReqAnZXfp>($H{oDz#`1+@9vE`X&eoPwqlF_H)v -z`G{>^V@kw8Yivy8{mI~9Wb=Ak1YGc5;Qn1BN8Ne=@oL?kUgR1gZAcq!1&Ru?#W6J8 -z#AO%&f?QD!84t<`fNt`Rtcj7<-O{71Kum_D0<44pMd;G!O=|OWdfUv^V~lBG)XKk8 -zkJvQ=RMzO~0b$={S|m@O)G1b^m@9zkn}@drl~1%CNb~t`%UQH^(}dE-wKxiipE(u1 -zi0%>qz$kHQ54ektjB&S1C+}RKus+9u=dgWZh|F6umCy( -zZr$!Olh&EcC0)^6YGD~=tQxM*wJV^QHTy8UpM$Km_zX3g21#LpcxT~A8Mkh=am&!5 -zD1qVtqk=`SpF65*^5f7WhoBbR0+(3=4ba0-QvK@-kma%DTzRb=e|g$kOp!Iw~0!^kC20szU3RAGJvhK$FKs-HB(JB0&6jOK;Z -zesm4Kg}=E~WI5(xztIYs&1|by1}eCbg-516D%A$w&v?l<2`EB^O18bHmj<74^?{^i -zU%3*_;=jzvxe-P}x9wzh6s@S#OZhQ0X*-@xCT -zGgXqKlojsQ^Og%RD%$xYTjk&Ch9%{JUMLT8C@UA0qRuOpp@J7whw@;MR%?(G$i3TBW?o -zYavPBV59@Uwlqxahz!+-ux$XnpgzEyymDuR{>@dbH>o@FWKyp)DM4*Ix}&egH}J3- -z+yGTMeoKYf4TscVp>kgSb|>Mg^~Mj_@$^9c9sm9LOCULvt8=uHGBi0Yn&1Xj5czIO -z4wWN!y8Ca!@M2aD`x9KyAbQ7>CR>F;K|*5V#6~%q6+!l)Oaj2tJ4ol##B#-Mu`v|D -zA}K`1lHzhTj~^tfYUkJ+tbU-mDQ+|38#k+i=SELcIWV58I2$(k1BDT-L4>A~E-n=X -z_IqfwqqV^%Cikk+LUYu%2JlNNkQ&#hF+DcRZ}h>T^d9uD4~>{Zrk8x^crS-B9xiSN -zCjlQxT6r*9#rf>Ps!j4zTKl6XFD#vhG`OWTZ -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 -zNY30`0-TmEC=!* -z(c4}4mIH#oE3NHuOqD;4XIov5`U4P)s27r~JuY-v|-7Tui{x)ZM3y!^;>r< -z)~`VlgLHuB!YN&gX554e$88g+@2g8@$L%A$;?8?7&Kbszpy -zU+;$(-^|lY-LBPZ?J-*i@cUo?{9~qDw7y$d?ZS6NmRhdD^vn=xM=W4e62R+)>jF*? -zU{RBxFyaGn$WDOd-B&9Pk%Wd9OT%c)Qj{p2ZFf5E2Dy!w&ml)EErxAjKL@U7o{80g7~2hnfC| -za7%f{V}I0oKW+RP5b4m3Om9_5J|B0b9-gb3i-#-^P#KEeu-2C7d~DieH0)oSJ(0-1 -zN4*FA!lOPbU3o5jbC37m_C$Zh86llitIn2356fYcbLjSd8XM);`+Fhc-hVuDqsrIl -zzr+u+0im3-y0nL@roaBN&jQnSYfgQjf%H(5%m5O5{=5_gRP{zX=P=sM$7IDqUmC%E -zjOIgE+s^`TIDWk>4txbQ`Iuw*rjcFKCo4*dGpzGT@8bPe`p_VI>iKeWkEKZ$c-Mes -zUC9<0CaJnYGV)<-Zcz(#*zcp=b3y$2Xun34a093fp=lDe(23{MnQJEd_Fs$ulbLCM -z+4+yU-|T1id)gi!A9ezsP;9VcnE@)3G}FTwmC6a)*?$=SxH1a0Pcr`RdHH{2cCVrT -zS2x*RCy0KduzYc(PXHvgyWP{@-2Q7&wZ&5WP>S>h#Fpt-{9;R*p8q36?OmWv(%JZ< -zn3d_I4G37)$8~AKoPG#&`6Zv_2OJM1Fup{XBPQi$v!#qrlqxx>p$<9g&J*tP1%#}9j<%{J+Jyq7zAEQkX3Ga-AKb_-UFHZM7Gm_w7-_iq2RQJXIPUpu@Fe|xZ@akec -z-v7Cd$owi}%j4HS^1c23t< -z|Lcc+;p0d4oQ7kzj1Du`PiGeHxF0}hz&DmFd@2j>Fr5ePe>l<#`;nx> -z$3Ho;jw+e}?XMa|-f)P=S0aiRfmdZQ_FHD={TI!ay|^E8M?$IgGYQaNf7z1e>7>2$ -z^OrrV2^sFiBs&FJr8w&&Lx`16RzI!+FQL5`(x_OudKG#HKMPIp@c~*8He%${-?l!L -zFPQhuWz%5ZKN>(Nk2rd=Ogs4EOP)-l9@ -zVO(Y1O6POfN3+2AcWzRMsD?~jwxe^_dsrMwGlr4`bv=_s76%EB5mgvRK#IcUOE|P -zvVg5amKJsz~=DbWql^e+2^Lf_B6##Gf-gCCdaZd#qbhkdiPXbjJbrnY6%w^A+cHp(9iX+=L -z6o4!wR{>0x{XQ&RM*J#rjX=$F?V4aznBCx|A#jzvsiMPiHT{@w<3NOZGCmM%m*EIs -zLURT&9<%9^DenZH6WA&orR~WTc)F?z@Irthdxt~v>6O;0=3;z7m8G8@BCtacmr`IQ -zj>&S+V~|K?7i#diY;VxvQi_3!6szXH)}J!3u(l})YCD?z)AJnjAtQcA{VqycREz}L9s}F+uWWtdoQ!dN$aej|SUM4> -zHKbtG`$xtYU`H>?0zz5V>W?k%H=*p}n*+x*y<6$ChYwVvqt8+SNG2oSi~6n%OqiKS -zc<-~oNtADb@GBXqh=de>4TUq8Fy<2GvgN!;noD!&sju!>(L$WibQH5|44=d1x%QoX -ze*WtYv10`|16dfSq(Ep#npcMC%sh%vBvrL*_jf&4iuU@AalR~4H=W##y$OO2XC_fJ -z?uUL>g$r6uMO07x|TB~)JECjDp32s=y09jp@wxZQ{&^&PVl;P`8 -zYOetrWS=u95bcKcm`%TOmJA%TZd$ki&x%r!$KE(nBqkfmUrO -z@}6imkgf`F>e_}&`nBGQCP}HT3#14hx7-3vVrY-CVn8z%TI{Dn-W?mW4%hy6K@8uI -ztp?9|g=#oKd3Bq%zRuYNrwNlvMHc@zQT!Yl0?n7&f^#n=E*2-m`>9v=wBq2YLI)Cn -z+(q1?XJ(%dtkw7LNy02#Uc-O`l0^M#{Fa)Q1gQ8P07crM@j_e0n2J0ht39j>-Xa(1 -zN~8VGh2w7LeR=1Us>+X3@dc17%Vn%UFGkwZJzPm0#w}QTP?$6F{Ae<*)YIBkjrntm -z`*tHMA^@*#CoL(x;Rz@OpJBaq4%q+aeQ{67 -zyLG+R{9Dp~V;Wm}uS(BnlY|USA9oGzbMKi5%Zk=i$}Cl$2~SCvX-VBNM>CI0P}asP -zS&n=pKq=&<^xR&rC3I3%a4jbFP{)Q$TY{|RWV}SPc^EuceVvIii`$W@FKVyB)moBBu!i1AbpuIdL6aK(|)Ghm_za8kiuR(^GK89&jrlI?0GeVamvuAb=r00MtS* -zA_-C4;pV|VxgrmQzEVdc -zy%R!1>>Yb!3gWCMb>)p=3e!2s#dm)pjBsez|FwoLbB=-7PH%L{~wYu|A#K8v%?mb#J -zZ41dnD`xhF?F$53pP`{i>rA0ZSTS5m_@)y&N>dXv#)ZW?m>BsCWEwifvY46(V1@}5 -zS?io^QW%Lh$%pB;8J**{J8AgmO0M23k_zha$*$uH+zUty%!F~sFgU+{<@%W=?5lw$ -zEF=t?AAhM+2?~vLngX(>i6W@iJ(`xlz(m(rCvUbsId$ -z?C$>Dtx~P?&nP_CcO4nlI5hDI6WU5G<#A1c= -zY`NOMpf0J9t|zBU-vzy1GK14q%fCGm*D2HQETy%z9MfXWzkFMQ^TqJ+Qa1^Z -z<3xkJqZ*I(m!eApk{~GKW|D(kde|}VCD-q!u2MKdUq*s?>`)dmf2ULy)3jM=lZ2SE -zq({bp5da!)-ZFE;%KSQ1h$x^!5yl06Uieb*X0qC{h(Z$^Ju)f8$grN+@ZNWNhp0M3 -zrT0_AB?zszapu4Sy1)0}z61o|86*AA0EeWrlDrdXka2g8$?-i_t~v$Xh7V9dJ!_)@ -zFIfciU?R#DmflHY9r^BL>a75DKJhCINCpgU`Wq#^GC{wp_4WfXB{i8_b}co~LJlx& -z`-$y#q`%O`W7qs7F*gkHxgenmSYN({s;vN2Kl+IL8Sdy1t+%PTEMBoeIk4ES)L}fiCIYN$~P$25O>vK$? -z1=3$@g{fESaz)Y6pNssY+zKoa?K6mw2=KPt`|t1n2oLK*d;DeqAObeS5E#59Dv%o> -zbO-)LEJF0RGa4Ef*N%V$u$W!L%;31c6F}jIG80>KDB83lZYDw+uhQo5xvw1z1u_fq -z_PDDu){!qRMA6$Ot4(0OsY>!>iC?x7g?oI;60T5Gj0Y8gSTYN`Q_YGTuL;mfJ5t7m@t^d)w2*f4Twh3=@_|x823$m89UQGL2rC~W1J%(gasg+K-r2b`G9Mt| -z0Vdm4@t05Kv|-#3pjFliwu0%z#jqjC)asQ{RKL(4v`jkEluXdE?3udb+fYRfC^POi -z$Ea8Y?b?fcW89_ZP5P0qC|O%SkN|o1;W-CJ&lX68eTi_NP>XQ`Xpxp`poR7q%+w1a -z+DJPi#<8f>gsrb8_NqnPPT^?{zBbZr4jQ25U>gZ_GIFf$0Fv0;V}QE@)|C8pPCv<@ -z)}@Ycq3=1UPsQ#}-<8lzMxa6OQ(DnmEz?10z~*KBFAE0i|!* -z>0CFXIoY?Y6)U~ -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 -zH(*Ry;)k|RLkFaoT&|3N|C?c6ATAuIA+%W -zXxg^US?{1<@tD9iW?ZRa3}Fbtno=?DH3^6C2+Rn*Yz+vty;&8v=cU})gq&bGrc^7f -zi-Iz&jvXt5+IUxL(Bg80n;gP1fq&MFOr|wP5Rq|X&Z;I9WNKW%fD&PS6;1WzAr{r- -z%qMavKMx3qf&Cig5~30mLm5I3wK5pS@;yI2_eG@^Jt0X-da -zf+8xZO~{`e85&0fC5fY>9uzey8%M+8m68%|Ond5a8-?+46lNcx`a#5PBqd7*fbr!Z -zWcEZVM0O`V(5L%i_3k&rPnE7bPOb2MjlhRTJ1isB2UJUID}&(?M}wbe5hy_Ch)jQi -z)}P(o$OLA8Y`el(F;cjJ)qOL7Y7VD!J1qjX#fwB%#HZM0;zL7B<8-KOU^SbG%*qBY -zO+h1MCV#aIC=6mc6hOp|#Pgn@*U4j<_~NIwN)&-ySv9mA@RNp(x`KWEmJs}4f-MW? -ze?#stBNX-0#rKA%_=fg!7vDcjxO;^#yOhfy|3h{rAViY7Vr)~gnRj&IStx5m^|v-v -zj7%}S>?ko!Kh8aF%}FK+#2m04$uy!>Us^_wKEn7JM_@u=#nRF^nV=zoowo-n+&MV! -z5!Cn;^jQ=jnX+mUs$Cm!L#NEiW<`43A7;m=mL? -z0cu67X1u$c>gXIm&`>Hl@9*g36|0YnBy;)UCrXp%r!ySkc$?f!cwtiTFI8pc*+&&D -z2iE$qNWVTpoB->yWeW5{x;Dz_8E^5et|dWPg|5=5FXPvHT6>>I<;J|h>mBvg1teSO -zJ!9!+RBw#|QEhXuX -z*V>ZtWq`KMbzpzJ1{sj#wO=7PP;0eoqcBJ+`LQz;5%^>(!}pQ(1_Zl9r-?-;?b?uR -zM7JxB7l2AEHYhVJpKmDN0l|WKHl|_0hT8(U6L -zmd&HCC}0ic`^9oE;{!gwxHGux+|rgUN%q&C24F1T$4p4nUp -zY~uf1_9TEE^ZPaBYWnB>SH{e*&{62Kcp<3;;k75O)r@Ka2Ik4eShUdulcg8yRqIvI -zD}gKBNYZX;?(zzZ-ZRU$^QF2| -zKH^$}WIfX@z;ETH!KQH6!t0nbdQ;UeBs;y`1&LhR-n5#Y&r#;Q8bQ^=(nd}}Wjcf@ -zFJK)y(mUWAmQl1*v)h|-fuHQKz{usAD^!H5e0NRD;YMR%CI=KP>$(mrdhy!>)u?#I -zx64D4;kU_zC?#lK1`1%d`gZhsAtXXMf+b%m&qafUsE%{vP7Li2u>v0s+lt!ZE@9gG -zs(8t`p_z8u%Nwcjf+G}7t_6ZL@ri7n4$2i$({zRF%+OE-E@@dx2}Xv82g+%=K;f;B -zpOv481~$~dZ#{W@zAT2SYm|!PP`^rc&Y?5{kGz}0E3#vPRqWEBYOX!;(LraAbQ -zy#=UrI&ar2>F8zp`^zK+TEPxYR@O@z)*6Ke^dyC>C`OCNBh&7QxhQ^7a!1Momq#R* -zPQoQ@jF)B{I_Q>u0Hfl15!%u??UOXx*5_FsLzWBWJWdtq5>DC9i*al~+>J?F@G*>L -zLrF=Rbi2$=l9*&nzxf7*xB%`8?q$8|D3_}HEN5&S%`MobIlT`w^!-dYBRMvdKI5yP -zE_u0*<6s5^w=6f{o4jl>rHUvA|HqOr -zl~sKEc9(aNOy&EF58863LuIIx*Y(OUyDVd_19@oxeSntYtr#I6987;(IrLz<<>G~H -zZNc -zm^~ikpv3*i2duR(zs9XUW?V?T1?6X3xy=NP58OHi3&kVHL;pr4ebHOhI84R1poMt5 -zUY{ivgr*)EHGv%ZTH>uHcu`D`f`<3+zkch$TAfOKYVO7c4zncW3pS0plwKfu6mf9H -z=5NR`bcL2~;sN%s|4@7SNrSkTrS%(>a*ad&Iti(f1T{0hL(F)7y+C2KNymsv|6+!H -zry^30z@NG9T#upyi`ybOZhC|e`Q_`y6ZsdBg3vl0ls1A674-l+K*YZo*L|J!Hi&L{ -zQCJTF=k(2=}W@=tT)I65!Ux~j`3`+!m|}9WYI49 -zq9`8Pk=DN6HPZYQ5VKM}9YzpbL{dTpOd3bCbAO@CV<;|qI*UW`;Qs@d29A_4;isJE -zVYY1wqJmDC>jTz>->ae6{Mq|OkdNC&S-4s?)SMM1~QAX&DlW!u=X2)7~ -z_rmX*zf2}7Qh@%lR=Y@3Sxd#B9D~M_P5q=e?34LP>!mtyb?b?bByKvbVF!6hvyv2V -zwrREzaH*FJtgP`63#WH9Y6rh)L9B2x(&*6Wt-9*i-xX9-u1g7&b) -zl5qHyCdV3RIcz-{@9G7}*h~hcuJj(!pH($mRuVM4qDVUnC+twz=(TFz{91a)EN&MO -z+B5w?=@0kr?&vww57bFlms$f+w$eA1KW~>et7ByYHII~Vvoca{0vTB#yc_F*1Evs= -zKIZE$ZbuE?ZZY7O-4v5E)4Sf|f)`OP^8fLQd(}#7j0ckRYe^a?|nQmCY_MoPImVXE5QykkZ+&=0n~M<@5)zMP3ZQ;$~1P -z$UcKMirRR|^I~Hf>Xn=&*W>Aq&FQVsFyK;gm_u}m&2rQ6O3jM~B3HgMrZw0T@$$IhqtSoLO -zfxqfA>zJANdYIRl4ir1}b9Z${0e5XRAM`p8J03~I79Sri@NM&=7@F)M49w$rmK(yd -zCUlPZ-AJ8nERhQFI(!2$0TXL9e@zh?0hHx7g}pCE -z2H7ISi}vvSKKO(HW_ -zv7^x%_7_GE^rSUGSN8X!dV9Z^It=+I?Pk-Gz7SySlP2u}^RT&M5VOF5h{g0wCD`&9 -zn@kBYGH$z1Z91eknyceUF3(Kc&s_-7Ct8}-k)M~QRIhK&wXUhUHv(`l*(6 -zTFlPmE7}t;yAf^;i~)9!6S&x)L=Rfi;~MK -zxD>Y-EQtATmleSyS;F(-MK$RN&)QI&q()mF&^M62Lxz$CX9c|B^FqCXtgN=-Zm?8=;xRTF -z4oGQi$lN8^IRh*}iL~ele0+Nt=3xSh&zMTT9#Ezv8uI;kI6T^<&fRK2iEv}CZw;SW6o*9#N(jf& -zv9Pfsi?RAIc%?>pP)b1{u)H|$pd!fc;zCG)5~RlQyMCEPDNf1~hGa`=4sEUqbM~xx -zk0h&ga{y!jeR^8ih?8k_s)#MpXba&oHwn#nLkcTC%r)Gy?MZ*?cHKyc(1yCD@5phf -zJ~mS7Bbt4RoFzg_whaoyMJ&^xn6%wh7$(76T7(gTz(PZ!oLe#X^-9{@8x{w&nI99gX`& -zD@LOYvZ^?8e2rw;?qFt4LqJF4{*?YMrw}E^lBLpPK*3*57%!1zGf(ooV}Nmg4d-(s -z7n$B2GIbKM$Rd)A(bwhlfa{2>l`E1FPzwtA$K7S6x;OdPnQVi_afy-U8Mu83#c3nG -z=cq~JA_ZX|9^e8gPA9P-q0Op>pk##hsYv@_0G1@9sU;bJ(bZL@w!zTOw18RK -zqxsNqL$wj{a^-4-Q_LkGmto7#=9?$S1`(rjLNFANi%kofhb%vL`K~3pF0Y-vB{#Br -zaf!3@2O|;*|XZiVTn`ZGbG?yH2{k$}jZlV=;VR -zSHzDnu+nOwZIW{bI&sXNoC~_}J!IkRaH>d&(~DEtKN#zzRy=?}HZ3d+UDhK8vPZ;+ -zI$iwZFK#Ixry@8VB8NlmHtQMP!+vb9+HRj~1r`I%+nh*k14yq*;j)I;(C&_QV%nm& -zEK>LN@bavB8yxUslD*<2pq6=X$2vxP;lTq?WYXY#pojm$M~0j_-bv02%jAm^=H_mR^kmK0L``#f$dSYC8mQ+$1#-BwZl*Y-_5euNd=idgOAGP~Nd>)W9i?v; -z9DENZG`bW3JOD{{(<-JLZ1&Xv9+8(@^(Mi=Yb1dW5}{p@F?^u5V>atCMfqg-GQdlL -zW`kj1>{m`$p88q~?fw81!e~^;kH#AfEQv)ifVawQ7I9S@(||J8mI=E@@AmCj%n*G5 -zQWY(%IabO;_vFb!_xPFZa1?{7Jq`2Yyj -zOn&)W7svM7V>pV{1g7GRP50XH{~k+v@sC}ZE+2PN6v*<})ZG~iRQ^6SL=S072b$Tz -zEaaz4Y8ft`L8-I59G%Cv~D|+iY(uz&#hvTO0R5QLG+{RYMv&?u! -zoVZfthc5o)woIkOjqO`JgaU|6r4(!nJLnHa*a_uvt_uD6^CzQxy)*IexIu5nukgiq -z^V9HTOx2bJFvF+P{2g3zpJTRQ@33Bc9Heu21YL$;hYJdlvBFw7cYr9HTAE_zS}Sy; -z|EF#G1Omq{5a$`Ev|FD(vtu#bMk2=|TdW7dPmXD(Qtv+Q54(Ke(oqg3f5wUw^q{+b -zBUgO%L8x%HMZ^pG58b&{ig*mXLE1mS3;~QNQkU`Aeo0elzTX8=6vzMlOpSjvZ9T39 -zuY|2Wa$^abC}gjY0n+t5Dd$hynP$otNfO}J-h;L^O{`cG9n#4SkX8IjojEd_WHT;d -zQ({X1OU?>#h{gMDSSKZm3N5McAmyc8Fsk4)vTCh$&TrpXDsfAL;*hnB`r@A0*ok2P -zpvuhkD#JNr -zqd37a1TtH`E5Yig1Ah@~2j5(wG8o{rN$_skrolM3z)sQ7?#VD5BTBY4Xy~@urGT=U -zc5g?=PrL=Dm74swdVZS=S2~WUiPk=k5-#Uhx7=9vXHO6exbU=HF<;Vys|N-<<5s&4 -zmIL0~A3+J&#p-$2J-w6X!+FMFui~zdQS@en_oyU(i!D?lIhc9%q1u6g#eqGdoO%pH -z-HDDxw?iu+`(vd~^>eM6+8^7hm@MJ-p}AdzpAB(#6@E(I!2; -zIcdUU;~I8>%!0fmUq8XBwTy;5x#+Sf4$&@`k7$KKaUSc*(w!TsYk6S(BE47Z~n!1wCvXw`$?9Bk=0!8K&*-r9oPuaX=0F&m=NufSI -zcG|~>HVD(&Ku>3mf}*0{5Bm+qBEN1~HZ?r@7Bv~kP9DGcwW&O<8!}FW>r!BRmC=R4 -zT4{+eg?i}t-vQkM^zWxXzKjI~A$oqlfN}+X%cxQGyM%z~X_}CFhRnls?2G4h_5jCN -zBeoACFj$@N^GP?sB1|P4*(!N8G5TrU%xSkEZg-=#xpwERJ%9@@ANis^i=}U{WCi;j -z%y^fg8JT;riAd{U`>P(Ir_I$}f*wecq$1Cvq4gUhVos9d04K>U!@wYh6clm4{+|mO -zVFx|dFO!*#x6U|T8{UDHu(0aTJT;zxO!r0@{~xFV?qK|M7G=!)3L%f(fU2Wtph!M( -zNh+m7W^@=xFHDdC%jw*ze0GU+50~VE3brpn4K!_HZW%nOK>B-x3=;DaVJVFRt~8Z7%JuI- -z%hG_~z{SGNZCL-$qj!g}R*Ja+{4ZHemA2CW1wv}bh55`g*jyFws7C}|I=xmCp==1_ -zQ?0!)7(kM%9rydlE<*@Oz>$(;jy0WHo`*Qm_Gre#iv%N+AHy -z05DLkw~b5+CAQ=O?dVQR?{3aaQSaXqefUbg4U-?qW)05;g34L13M1JBuq#`f!V@S~gkKL1aTK;SpIHTFP&7RT#FR?)fM2U55B4F~byVNnz8wKypyUKYICr -z*}K3tV16d+g5Y)n1PG2fIm*`#DyFRhn!6C@pnWLYPGSC*EIptKlXnO)-tf`Z%uWaZ -zU~Q-O1!OTMW>p4uY}>%apmCZs3rapqV^SUD+`77Ta@s7h|Gr{GH0V8{x*(Yu -ztTv9M=wkhDt#-gWI5t7)mcG&X^GM{?+@kIh?kE2u6CiI#ipp^_KeUE$xlKyBQ%iHr -z)2Is@$WJ)g&A^ax%qjPVxT_CQMJkKg1{P^L0}D4K_H@T(0G`di6Z0W67iliGkpO(7gcv4S%g -z+Ri#ESLkr%F~$k&(N(94T$P;>;IIq>42CfvKLQOqpvS%?CwT5gL#;yUD>h(uHW}mx -zD=nIt9wPB!0pANis|FDC6>f@3J_p~>g?h$dOq7-ydF_n=RpHTj>CA8FV?vLqPZb~1 -zgd*L)OqdK@caR?bd>5rLooZNTv}nH>UNUK1-cz_8tGam`Jiz@(c;1#FwYwS`(h -zgHC2)ljOHsesa&Q_-}A>Ndw&qN=}3Zr(S; -z)w+@MPS;@!a3IAs@#+q9%YRmrZ<2(}k!|iI7UPjgoY_p?J@y~aK-rww-efd_SAL0sZ>~E`?!h(9<1HdtoH;$PC#M)Unt)`YG+} -zPnQ88`2?1G*tK)44 -za%<{=&P;_d9OB7%^~|CjB4@|aBCJ;h+>$k50UO>%Y$t@~+hbQW7-MCkZ7K-QkfAJx -z8$~htwvAy)g@OVl{o}idhK9q?et#oGIJ`J(p_}8zihjoZVPyY? -zML0`+22U-k@k2|6QAFg~IbCyo;+t*|)x_K-lhPlO-MlL~6Zsrzt^|J1IwRxMA>EcP -z3fV3|?FP5O0MwPf#us0UzRi~utN7)b7re8QDiF2{91z!_ADjjCURAF&+$F)F$<{P-Ur{q+cNSo>)y*SavI5@s%yf3`2 -z*c*IIb4py$P7lxihH=#per|4XTTVo*Smp;ZE0UA&X+Y}q=>)_A*se^o23}0IJ;Wj^ -zbII)NNNfa>f$WT^xZGT+V{O+FeqcogM7ZhdSIYPf!x#UccdBEjI|BOL=p7Fz4l5(f3%J^uXcfe)PfAzvQCd{9|n6_iJnE~ -z5s>34)-6n6qyU2{$dNPpYN_niT9_3ez>t=&r^ltq+emfsm}qdh%w1~%wiLgf{8WldTR)K3RlF_ -z>MH>+we6etw}Odcn2V2Re;83JqlA}V-O3ZK-~Rq4CO64J3(Fw~p&AqEe?^iz_E)w( -zG(@=S&@?x9QI8R<-AGbS+&HLer^2Kr=e6P@cfG1MDlrdr+j_?2SEEap*zSxxh;(gD -z3k-N0I@d5*J=e34-i#;V@?o1!q5h&3JLS5s-0oVZZ$byK`s1_`E$S>gP7DlXhV5c&XWz& -z4&zi2Z+*yB&=l4{$!C5=6$$NlAn9?pVu0sU<=|Gc6TE7eZ$WvN-)_thbzEE47ZsdM -ze;9yc6`pRbG=w5nW)q~(hSiSiQAaStW2N0y@5Y+2-&-Va6CH$TX$wP#|H(!I>nDG07rye0y7Hyo{&U!zR)EbG8EiCtT!hmopNZ8gB- -z_j^ur%CLCGsnpz!N)RnRCyF*sfu{h#7gQM4MiwzAbev_}HHnpkq&`m*I=c*_%82%oKX@-R%`L}#_jYMUr4d3IJnsGD -zryGQANevzFifXtAb8!>Ximh?-1A;Lcax>&Dw?uMYAqTXwHFdP$vR03o+r -zvZ9a*X%Uc9f}W=i5TkPShdd_vm<<=~%F$Xo8ZYyS%!@7 -z!2DQya=~_7Y32;dmW*z8v#h_pLpE|O3)%qjE#_HKOHxU8ve3EYMvax#H@)D+%HC%@ -z$_mU@& -z*nQ66lAD+c_&k#B270;2Y3m;lnJ5uuW)F)1glXEa_jor=69hu+3a6$&^mrPKFxGkVn&WeMCR!=k@auQ -z#yR^gWFB`&!rd}-H@4(V%cs&M1I%Dl*wVNjvQatOyrQ#jIIGjr!SBM}To3d}32vO0 -z!2lEZG4l>%?6WFG)Osc|in*AU=4ZEpxq3K7##LNmQpCMkc}Ubpbgp%-V7?e8Y*2|MPUg?wwmxBeY>aUww=BV?g$+a&&umU3JnfCVI7!$RinZtk -zVZwVHUpx2tiqgbdrVkqb^)7x@w@qY^SYu~g;RO{KXu^O#xm2=w7hV$47$SXh&ZK -zjeT#d(}jUKG-o^p@_Qtb!@pQ`3K_}h+*rn)-sw+i%U`T(T&PYn}%)TNi -z&(#tfOI+O(z2gf>1J@)7ueGz)rExxfwBO496z3|n$3dPiw5QbAV~(6u3MVs?rVS)g -zO&mg#%k4mxVZwEX9o4}mgb(^*3)RE64;G^F^t}8-d~F66rWdoOc8?t(tQz;O -zNsc0dr(Y$%yhTM71f(t{DXJh-;@?9yfP9Z^u_}J49>zSjhT%q*^;)GTr`t@P2<`5# -z0P|nr{px`(vC@;JgbX|vHiv+iawZ35sV)xj$9GP2L8wk-=W)sbJPv7*jVcqg!boVL -zZ1Mk(5_#i@!-C9x#nf -zEV3!COH5$2qIb!8RZUs7sSFp}zv_*+?GB&@E3*DjXy -z?kT-f!er%=fA&12!mRO-YQV!a|lB(KZQ;YdMsxA+{3tI2}^Be_9@L#Yqsc1|gD -zCcbnl1ubh^7D%{O=FTA^EjS+}(o{J)SlZ5fr`~P-!EqB^?;A=_=bX198~S;g5o!fx -ziUmZ2L?u0=pt-_e2&2niA5l -zdV3h-;DhJ*aFz0*WcGdu%%}8Ez`(6E#YaBX#yJU7EuUG*G-N0o>1dZ6Y>lkgx-BV< -z!3|)vTXMou>*2T*Pp7HuwpD{D+2(wVw_SGb^Wa0DjBa|73ig}3jqYYxjTI^Exm7`o -z$G5-h2&-aC);n1{P0Vb#_s13x{ARfdfAC4_ -zO4TvQ=p4w&ZWSBr$OGk%SmUC&d3MlIDgtH@`P!Z*JC$^D%?TKer}&9%VwLA@pm!3j -z)@jwL<@JL^eiNtEfF@< -zHOZzUfy3QFQ%q2^NLC2xi0Nzx7SasdUc#airo>>4~m%S_s>vj%1|wirNeGZzR7{A{k`( -zGh+z7JcOT`<5tC)R=Sk(;08OwN%=!Yuq`UT+aM4qJYjXOnK|B9 -zZk;PY<*C?+oR8-6mt&SjP75^EJ&Gh_L94^99};}w-@FM(r&hf%JM`apI6Jt}elEwj -z73y^hLoWNzT&u`uM=OPpQ!RMkN$iY-~TkYGa> -zqE6hRH#o&)h92|JL!~VWxw_tT6BqQ-9Uf5UmT_1aI$)B{FTs~FAt+%*blKthwp>x` -zHKFmM>|ACPcUpcNmdO?2quCkOYM`e_tr`F32F;9R72T>&FYaubQoED+MCYSfwd;GWD@(oZZ`CL$ -zvuS3I?awj)A7jh-=UBV`IYy88#~7F4zW(m;=a~DC>rG#Oj-g^UZ&u7fZ?cEXo*en@ -zBdH`UB6*-dBf0+YF-XT-@x~j#7_bJ&?Eu*(AF1dnsyIYPzJR}QRcJO0w7Hw>ipc&? -z_85R2!o;?@HMJdSn{kEoTW#<{$9%hBh|}g_e5rD5O3m>v0Bk^>KE2+nTo3XIysIfJ -zc7gTYNu6_$t!TBW_v9y#`p8x}xsYo#gxr!NgSmamtLhEdWy}z`lrC;15D=>Rl0**e -zsQD3jk$?2IT~se`nY22F=APYi^4Wj>(B(foI)zv3$M?VGl=$`j!|sthvG^tX?cetw -zZPXlUuP-*pdrc~0^LG^P0K1&8JFuL@H9h^3L%gmeeFs*y%NiksAyxBBtp -zx4vH5JCEsMqv;u}o|Dmux1Y8p=-pe#GF)`4tyDcxEHhrZgK?O(V}1=9IO4xaPm<04 -zl?R&EUf9QX1#wnsdOz}6ny{VD-#W28imr*WEtoK8<&zO*#Nm{eJ8`*}g%I8BmW`Jr%q -z9B8pF+^U`Q-F$zylq#%*-h$E6YM3G(Dq%NMx^^yW_A440+uExSWUy)2n8T7eZ2y@= -zNlns29$2l2^*}PU2skgbnWwC}8>2TLxYS1v#KCRFHsQwR-ndY=C49Fmt~#7BbI{fS -z&s&%?wX|(J*f!w5TLlUMN((#Ve+WWuj(~B+Sa57o>YgNHYzwRD3-%fZkq -z+4u9;hkeK|toRr`T!2Ef2#0Jscxq#@K1Yw5+8wkwE4>TzggaoiDWp5fQq-^sQIyW7 -z8{;wuZPzES2^5rnN(gxsi+|@v62E5xSi0ZO@_0Va)PDnpwh;iTVNU_&VP?J#JADIK -zvjH^DCxi2@myZwR_3QwxcUlZw)0%rBw5Xz~$~NW=6ZZVK_9Ep063oT^Xkwz@t_MAX -zHY6~%#M}7z`S)czA;sJVu0cWI!vYQuzoT?S?gpW{+cho%F_O~LNT^Q?ZLmu-&#~n- -zfA7E+jez>fN%2G)$Q0FNN~7`vXg1peWwP2obaT^<38>SnOYM&xICUm-GQB!*hZ}y?LXdJ -zwvRygL%Xe{M{Jw%f@H1jIR#0OOnWv#_~po71x_vJ%$T2}oI=^9PW-6y9q|Vx>^=`3 -zWMSpvC}E2!>B7LBo3u|_H)sEZq< -zg}sR#J9P5i$QTjZ7;$9z==~%6Oshi54qIaZ-@Et@|6_#-+2Ue2{LVjeKXOCV`*+D7 -z0Arc^`GAB|PCR|GF^|Iww@RjW$hO=VdquCBP=7D5f~CjH^a@z^OM$7ANfsEzq~H-y -zda>fv#4PYiSaAMH-$+Xt@E3=HOx;UQ8Q#YXS4iF}sHTK<@bw;yB;vI|@CD465%&ua -z`$ug^>fA4%<2P=+ftN)Nbmu`j7_*%Y99@r0ESYKLkMa*F(4dAHI=KYha~03d%>__) -zkGvKhtth<2ZI&3!b%9Nd)m6NCe&v9uxj;$p$dzr3PjZ37L}hO8woPm3tD`1Q@CDi`k}2t_dv0&MAo0F(5nzY}PioD%2gqWHe3AU$4FU5& -zkL*iI>rn-Ru2i7#N4@nDp?tJXzuHcmw-rP3(XGjQ+$=ybocistdg^JT($+pEb0Myy6;4LJCdxRzt(EGwlYvOB -zrpBYL_3B|B5_&d&5$IM0vfgyQeQ{Px(_~VHCUXCe05i`gvkEyjr`FHGgo)A~#jFT@Uv!Tj4cO|*I-ks4}rAGh$JvU)hsE%1*ND`0Ga8I={ -zmB#wu*b3ML6K4R`}XR?cZ>NQXI&7Lf|TP=rtMz{5-<6~x%I^&SA5(E4D%|5H5+ohF8UpeBUbC-90eUcGY3IPP}IoS8`O;dao?MV4& -z*f{6pF0eIaNIg()?n^h{qWCslgl-#U#a1$|2g`3KyPiP2t$_{6*{im=~itTO&4)o8U^h9KK$`fc*gl{-HWBV$nlzOtR%C#es4)nS>}W!IeHq>Q98TK`=s0c+rE;4>tF8e{d)ZJ -zOKfLQDPf^0l8_ss*Ll4S^qv -zajSZCqgS=ZVL5lxagAA`Q+cP2f~cV8eCj~5Qj^ytLzf(Ip8eO}`T53}E@lkvzc(kCJv&ZxnygK@ -zWAWf`%rr?>5E+^%TGUUd`(>VnLGx9tmN-4ImQ=V6IXc+_}Yjpo#LXU2m&v`#I^Q0Uk2xQ&)?3+j)Zr&CT1{cfu**Iq+Phu3r7dN-+ifz5#7_J925Jx#(ucbRYk9)~D6_WCh9-a* -zQFBOA2cZTQKjI%`jxfwWeoEyT8jx1IadAA<7fbqUL~rRszlm+&bJXmU84DkO96(SS -zw54$@v&Jt8e%1q(i1#?|sk;S!wbfCquHDPxeunSnbQ8>aE14Y)R@Rr$E8L39nPzmf -zz$rCI{1Kh`!4gytw3a-KZ;9!B={nr*kHXu+?;kH!;oLFE{l_{p==X!0Ebkl`O`@TM -zL_k<_7rtJX#B*k*kurii2PJ?(j=ENMSJkHDzsYUPM2xs^^dnA3M|(m2fG(!qJ91LT -zXg>SFz>tp(C8}z0M4DQiP#*Yy8?wsGcajF9&T5Aa0QdoM(eF31nLxUMG(FPlJFL!@ -zfhy7eZ-NC`P*eyj%jg<9z&*dgWq(*I;e6`D(RRLRb*~__lRwd%W(Lx0Fv7YOim|A< -zV`8zw0YsLkU`UYSm7*@0o?j%p9+5yzOv*NaP2!m3HoV(RQaYEfk{JtFif6EttmyB` -zZN9-a!`hRk4EaFOW~V8$Y_S-3)hMlcYPVd9skeS_d4==A;1`@USg*&On`n}6EKqXz -z?u}lk&*TRPZY?RcO^T{R&3^^2fY~i%2H9$#xOAC|SrIlO_h+;EWe8SiY-jB*ctQJ} -zmYk8;(E_+RXC`3XYw~mNttoIWYiR8=mcgh}ypniH--b45V*@rm$E&w~JyKGgNtx!Z -zJFIe*sk`*1A@u^cX&Blc;IDHOA-9#H_9FLlk?DFtN7(7>XwZ@aa_r%olDW&M%UIv| -z3&}xLx7$?&pUSw6_((ecwCzrY0nje{fU6rw;_jmtz#J3@pVwXnoJbB#7uLufOD2o~ -z2D@{^A~3mGrRupOBBGu#R%L|wfXJ7BJ(YfqyQ;I~dcYum4I?~YKmf%dfZ#4fqhn+U4A$>d(o=1? -zN}M-Y*bBXnt>>;FIgW#G9O=3J{_PV5R0vL~bZ`$Ps1;lN196MZN|tFoX}l!yp|e3- -z*Q@v+Mf{ixOr!u?qxw7&)=47PMfGhSEJ{(7psF+9oQf<&wPwL4{h5EMl_zjnJzX`Y@Z7!NI!IB#JoJIkVhPA7G&e@}B3MV| -z6&wH$);v=AS^IIgJLy2b*jAt1c1VlbXy-YXd50dtpsDm!x|f|9ws2q+8iz5sV> -z!WBJXe%uVpRg4NZe+9pv`pdGJ8Ey3|-$kgDr;p(|!wFl4NoV-S(0>b6G^ma|Dz_f= -zhAJzbeE*H6gwS9>5=qVc` -zAe0EDmy3V={Jwpa$G^VIJ$%R)`N}`Of3J&ke*F6Wyd{17-+K>U-e_^xe}4alFa=dT-{wCg<-=Wb0l)d=eC*zD#eVpuu-L8!k3nV_b+s?o -zUOKvd#{Dp8AW|d{J(&h_h>-l;sc;F=t3`I^gH3X~i-9y9UwPz?QbDg!>MdwpN1wE= -zs#NQ>jxT6BkQ2IgK%V!UOUYP4HVST?#<=gx-Yr)Ex$^O*t}AvYiP`QjE)pqiO;v#8 -zH5};mLFp0#^|aTULjVH!rf2pzIHO0NT5(M>R*)aJz3fn58IGwqgGR`lgDtt2^*)6Z -zNR@;%MyImxA%}a|$_F6T=TjN3L}_li^UV2V03(&Xk^Cbx(jA}<$?H4`EHir%I= -zz2N;`PUe26M^83@JDN~#3mm)m;<9uc%YX|8{{2y&u&uTIwFU3LV)A!UF%PmCSDubg -z8l6$90Ir892A*VyZ;35~sRqkWdveF^)BmxSse1pl@kW>eQ&CB_%7U -zH4@de*rrsGRsHizf4!Ear;sA`f9$-fR(&Y$ -zmi}a|mAodMg@|lBX#GqHcM{65RE_)YT1#!AfEMT|A(0AlNiDg?jd?gUKwGPP&;V+2 -z(nN}ZiwfL$hdf}Q&Mgh!MQZd;hxKv;Z)rHYHQsl -zxirJtfUuE@djf*ae7W96^XYQ;g<~dHb~wpy9F5axFK=~c&6(n2wL4MqR$jGQ$*hto -zuGSxFf7wUB$cD+=x%OyEAvtEH;ApXA(VK5upzF#XK(>7Fep~l{E(67Pz(_x)j!HX{ -zh>X9(Kiuo}c=|MSRu-n@BlOo+M{(yE+${yGQ5~-TEc}3C_(k&3C;j2*f42e&9q2(0 -z^upz%t#R^<>|}~N50!Vbo*RiHRB6zQmxl;w3~CDXiz?8wv>|11Kh^Up&KyfsQ6r;d -z82d7CR6n}(=TDJn`19}Y-&J1X$gPv|qw*n}lV<4Xm{*KW{LQGDLCtv#gfU+Wl?7bi -zEqzWju;mYT7c4Nuhuk?}S0TgAStlbOr)GE@f&S1g`BkN1)a0)M!c>#TBjTli!a`%M -z)!)aa6mMENpUk~90J_0-N)`2p5$5eIuoOC$Cpt1;scNROQ#JzSclTe&3M!jP9z -zYzg}F&N1EMR#6MJ^{z#A;~0`BN#n~BysqS=9k^?qvyT#zpd+RYk|ShzO1S_Z9msU0 -zj!c8E(}|szZ+gA|@%h(_SYDqu+<>>E;x~5k@cQ!j>+g%mp*2^oZRE!%p|LMVTFnd; -zLzC;~>(_SDJ9_+8n49(2FR3oD&;HI&f?A5==bKyMXOiSi=Doxva91~GzSZOu%$)M; -zU|OFMPPX4}ykC1xYUb&)vGQd$zV*fOV_aYlM}@gZ<&^fJ9+030y9)J(#ZLtkoZQL* -zkE(j|ZEB=){`lYv0XR)ENW`Hf^Mj>}^=+il(O4*DNFn3%0Qop|dBR#M-zEq>>a0Yn -zIwnMQvJEbSJ+lNlF15)r+R#8wDPEIFxS(OtAw&Mr;x|TT8UpSXJ=0-r&P}X%-=_uM -z#HRDNIarkqALGqlu8qOK@DxE9V0omtNOz+PH=K3={UzuDyIa}j3|lfb`IX1QR=gUT -z=KnroY;_>!U&2}@OAG-EzK``pZDRg>yZ!w2{c`Uc4fOx&-`NUk4nV}+xFV;RXC8f< -zHvMZtMY?JM8Tk)$8)4(uHSHN7L(1)asfWpk0ifk>(o%{tWsGE9N{ITN`5N3e4-dL@ -z=yc#q8_32Q@y=L2vyJJMcv)O7AnPO)>i}gaDCoWlJ9?iZZLAzsp@F!TLPG`$i&sMY -zw?r%K@9}3>T;Lw}V>TK?Iw~Vx{_932nEttxrd@m6&n3qINowM -zaGcwJl6}W1U(Wa4$mk~bkv4(a!>K@*EaYS4aD)m3ZZkeXixBNjc!QDE#+$;wQAcTaPYoBaQ8-6|6Mb -z)=qb+znF3t914dn6M}(@2hAhpjmojj7>@G%Y4)?Y2NEvyDv$Nhb;8`a%#vn@dq)9tptaU=<@j3pz1zN=Ekpfuhp`N`VsNLw&Q8Vl8oDL7dJ9ibW6VnI(jMzsUjKRf{`+$L*X5`P{B|GW -ze03z0i>=uG;%VYf{(4zu-9On3=*mkm=Ir)S{FDy;C{LQaIznYN2atz>#|8GlJVF9| -zup`E(E6>qx#0qeOYzggleiGPd8(AufRw^yGC&(`T&)4 -z*^{@C^2XxW{(bpQdp+uQe;rtVmKJeGYS6#x(he8}i0;_Y8q23&xe-^qY%cmO#vcIS -z@v6Wv682JAaVPBPNc&qnkt_FKU6;#Xj3bLq{Ukh}q`|+!s -zgY9dzKQ^SIu}Flz*}zx|D0gDhVyx-uGaUDUu!;xPVnXp^S}~#*_6Ks -z;0-`Dyo}MWHSwX>Mit1dJYl^|9?P4w2>SJ2e74u9f4I!0Yy)d2V$RVtA$M0NDw_U8 -zWofc7F2aDVNWqT$Hl -zXPG0`v44Mjznt^$uRo5<$?;H#%1_?tWv}q(F_g9pLt26yy)j2=xMlZkun-0x -zy#G~B&hYVFVrawf%dneIzoWuh4k=%bGSJ7dnE@mlRp3I{^UIt;YDt09e -zg)()7#Z<9KMlUYuJQQSWvLu3Rp3*vX!yzqWXcm(S{9J?1p+18r7xbgq}a -z0(y*wjL~p$_y*MDla1flQTf?eNK6pQyYk%*JMt8Ev-{N0oBi>-d=-0AiVQ8Khx+ZW -zR==vRKQ`cIiy9KLHIcr-bv}-xe8s|LUB8o48&>@q$(@xfv$^ozM$VE8XOO`wxHIgd -zmD_sP7Aj@*U*vxjztP^t!s{HnD(9#`_{@p&lC6L%e-SYe?Vw}mJ$i&4G>CVI+ -zY=BP=HI*hy_$WW=niEh3ufP6>ff5nYy=f&VCUKw3ws@MdFcsT+_p`mnzMV!k^i -zzj=(-@E7*&sIYEIVK)tzkiaw)QTS;ppN9jYNTtGj(zCJct~E9?B=I;Kpam2{d8G!S -z-Y~ularpB(w$75lv{-rZ9yx0H!qt1U+B&NvdYL9+r1u -zW3sVdK1oggd<0uMdwJ9PVfSz}VV+KIeEM^M-}$lC+?RWqOFj5iIyuwbp>0aL6HpPM -zCx1zg%XGeljs6SWUcTp(>zA@XolaE3b_ymlooe1JF15>Zv-<`ngEa7%CzJygcXN^& -zC;$~sb@uWZv+HURYjb_c;Q%tF^Ihgls=VLTMkq195#1;5<}36c_`UzJTxbqJeNJ*q4-fL5 -zOb*FV@n&TJtHq2W$Bu -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 -z3z!weYPAmI2s9yxVTXt3*y?Kj;p~o -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 -z@r?}J#lx!#E+rg|lpbP8HJ;|YcHqS6Ph>H2} -z_bBF`))ldXX0FTU;vXb}tuyTq$h`P73!{A3p_b5xTI~GY% -zALLe^e!rG5nq>RB;W`D_55%$*PLhWcvvokx$3gY!xe-z=o@IR0BN3<1z0E%BFW# -z6#}s8+aQe}D5HHmv-KmkjJ&gwGp53OZCEE@zkOi~sM~|e7Ls@(FP<^3vJ)*S@#$#t -z987&b%G;vdL1s(7I2Vd};5Vpl0}(oNh>K$%CUS-}P1Zb -zO*pgiB+SoD*w6$0Z|B&W6f8Cj>6`%T5HL)J$pK14)@GIj?Yz`8N%o%WfyU1R7^e99 -z5pu8!i5vzIUm?UFUUJd0pGDQDor?XvkO!l#?N=b@JDWe`Oz(I1B$=Si1<0=K&hRAv -zJrH?N3J8W|Lk}-XU -zNo=~zP_r=7B#{ZFgtpj2VF-Qt+#g@}a9{oH9_jnYjLn<`Cr^B|kYyl^9<|jI#?5k6 -zC{0!iknDi8=E)(VjZsuYkPZ5oEvTM5H(NAm>>AzY3^0BV=514oIZ=3m#G=X?C}mtW -zz|IO_mDb}_g}gcrsX^V1=&p04p=nPb8+fu?`i_PkKUs8w-^io^%=jihZn<6D6)L7{ -z1Z7ysYuP&-I}4*TU<~-FdS_{Rfy}YmI+~POWgh*>vE+xk)t~nzt$cVHjM>l+B8$| -z_g^w4sI5RXqSeYvIgv~;Bf>X+yj!Mk#A3Bt=L!fcH&lUIBMMWxDx{F;=xKpAM9W-& -zl#s$|wS+i=YvsNbBWjW=tI;-5@42v4)d+7{c_AYvQKDb0*)?09+Ir7`&8{h``vZnX%$f5q1n=e -z#Dz22x#@>S_<0om3f1^%_ZmrMr&c>?587CFG7Hov$FfjwkXEWhQCBuMBC>6g7a{S5 -zDn61dtyeBb_rS8bM|v5tmAV(*X)759x5^KkAm~xHb*M4K-ZEe;pttHZ&MA3!GFn_D -zAFCxl55}$wcv`ggBfYwr`QkMAlhqEHf@qA^w9JI&pl$P7M*WEmCs3-Kw*$h -zTwYSt4$nND47Yg8g?D5JO)$~fF+jEoRk3d&YM75pC`f7)IdHPj)*H%P#7+A6iM~br -z#Re@oGB-xfnXMkpAr)z27^)k7T&l{&oror61K};ki;|z?^Q1e`Ac6Er-lWDM -z)Cc=kFk_`6k(S6e7q;2Y@wi*~1qtd6)t61`zq&J2KH@nj#F)GFlu}ssW#?InpG}Az -z(@b(tmvcqGrZ#p23=j$(ttfGnTo5+BR`xEgo!D{j$zZ`w(1&Ov!?H`UsOJ!a#Bj9A -zmg_#v6R=G6Go_{S&qF&1q7*Q7r^mlCGaz%4JiMmrVdej~q7_^8CeN -z(~JTu)0B8YJ>C>n+USxHnJNnxJhn+2LTA;k9VtJA_I624N6Gem{kqdSQqPIx6{+h) -z3m`=y3iyk7JNy`qwYXXABbg!x9jE=~D9uT*0K=-ikauhp@<98j?jcOz1`T*D{lk7b -zW5q?u=P -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 -zF;H|(fhY&`qZ{JXfZ(1_*GZ|h{oFq1(d5T -z{n+JL7OBTG;Z{s&7ZO(?*>QNV4G9%&Unfwpu3+>g-?9$V6iA`W3LmlnJ*pWatN`~oq{e5N+$pgG{$R?m(#rdf3a1(RMAGGR -z&1xQjt(`PUdYy;{=X%*s+TRmUmh5BPX(I_J^C~ecC9SQtX-CK6tk`LDP%vj -z$T9^rQIS}&bULhjl_Z|C;RFG-P{-%yI{rP9!~5Z2 -zhiOSCLW6$VoRwLAxzXnT;j7lADo#=u%O0~PmnH#H&!;rcZpN)RI@K+h)+a|`CD$Fr -z6wU^*ZZ~?LQ!y%jCIe7t{mK&LC6Jyknj`;@ML)Yk#25*gB_frt2I?PoVO{Qje6aX# -zF0FW6rZ|?)=l{4I4M@M%AD@*>zJGp^Hp=La|M(WCNdFiH^(E3De|*5~r?M#i<6E=_ -zJQpODQ;*Tt=K)?`10@pfmuKNX77JX2L}_J^08v1$zjw5#bdm<#o-9>h@`|Wi$>^lz -zqPh`nR}4yKfOs1KFEzX%gfIE0xQas`rAS2Vh*5GGXxIx37sjWUn^c_Y27E4^sWZEW -zq=@?j>?4Ja^l6+B)=Vo`AWJ$looodt@bX>vpgTHn3wD0J(bIN-e$&2TWEe@=@I`mO -z=0K`!TO{w%#tLbvMvY6TR7U_7D|mNu__gCYDf$NpDfGw8(53#%kkTg;E6X8Oiy9*g -zbJ4<1>T8+>HVWYZt=FANU8~**AUEcGvgXeLt#F=&T~Kf1Z_lKGoW1Q(aPPv+QE&5ad6W8$_x&vb*rroQce&NkhuWtK8y-Q63nDaazDs18!hV*=$KK?_DPM5O -zlSyl)vj%KF1_Qv6fHyJ3sm}am;iqDfoje8_?R@lbb2(o-9HqI}syB>~mB!0k&)lA+sDG3-J{^G2(^3`8hSc44=;-! -zulQ$r&pgEPEI~@6U`!qRt!&C$hH361SH9~GxSAB-#GAe)j4Rk{a3L)&s>{8t%kUq= -zw3CQb>Y1ahH8d%uRGSB@MNU|O9=154`5@H*zm3b_6Z$C4T;=9Gr)~TGD}UI2F=IH1 -z?vXn;xAf72SrRW~*WA(GbV53uvDfJJmkd|B6*#4lWFm%WMF^{E9*JNV%n~JYXo@gK -zpUDH&yDM|f;P*X%KCSSI2GAX9p?1z(7hWGgff^7G8*{?eGr?+!XiIJwp0R)f4kPoN -z<|bmPL5X9+Kj*qjG65|4UjR*OTa*E)m+d16QO3nT8?0MPIijmOy3M-$YGeadS&+7k -z<2fyGMgV0zo>8iM_(>$bLI#X3s10yZooY#PL!7GxpYYWEFjU`Ft5$g`s70wG5e -zMX2S_>MV8qg9I<&!f#!|r41ia*Z>SMG{CHPZ-Eq9JZ|5_e&_NR&a;s<#Yu9xM`JNh -zO_{H{rA4uIjdV*U -zcBG|;>R|D!pQ$)0n3D49Nvn`{7M_Rb3_r}ejhule?#2F_&$AlKk=vNHMA+~gV@;V3|TJX~z -zst)BhL5U7CLMZg)niCy0SAXAqZmy|OHDLs0FyOSBZfk%9i&APeH+cnEfhAJ?WCdCl -zK)@+<$yX?pN4AVMH2#rxLM|fJH_eTjBotz0hG0UDgU?QmuYv+g&ueGxXBJe_%}xqx -zU{1YuXQu+o2MNljt`+1;x^Kf2HDQX@)9pM2ri7nlI@#z;wnVcH2{9Delbz+Ws*i)) -zzT(iIi(xge)1V6TiGm%8HEea3Nb-F}S7XaU|q(5@KkdzY>`NxLxo7Llr^Q8Yw0)DR -zJuLvLC&fSlr&6_AyDmbkK2d5R_95+bZP+==FD=BR(omV;z6;PO{wfKJOQ$iLSv5B{W`9_!yz_C`@$zzPn&ew; -z6$nAvRk$W%;)HtPebIhF|;`Wf6hZtKzeo3#?t -zL=6G4iCkMKJQ=8k($3yb?&n6mOF~&?0eIsgfHonFw0=U|4+SSD2@7tHE@LA6UbzFd -zIdrBt!^b!)S`6+aRgET5j!6q(dhbqE4by@E1dBUF=*dlBAn-wvXygI7l2kKsyiVpm -z<=zagzQE3u(oCzi8W^UJje(Ok1_0j~`3-QMIxCt~=_FW+XOO<3qU8Cl4o}+?BNqYB -zq4R5IJO#3PV> -zQcHhBhlcf5m`)@wzAPP2Pt+K*!XXVS5;+wNj8oz{%7Fk41)GM1ZYP2BZb^Ou7+Il5 -z!c4Xquoed{XiTykaG#4eNI+CJk-fzPNFv5yIcNorsP`Iasw-AYi9P-e)Ey`-vX{z$ -zw^m$C8u->TLGZ`|fon5S6eQ4BMWu*vK;(=%J$V@Tx(#y37aj{;&wF -zGp8x1vJK6C199FEl-`AeaF*L`{K^ojc(+$#F76;93*rF%YIl9r*dx8$1~oXEa6erh -z;B+17$e8<01Zu^|4F$tec9cWEyf10D5Hh9Lr-lFIj*+S$>tp&OCKeYGs?32co!Mk9 -zdlsbHP^e6^sLOj%qZKPTsrA-}SFU0MQoxY($ra@EGV0MW8ISZ$@hy~M5CcPKERo9y -zIS@K_fa(T^s;P{c0;0)l=CuYa755!r-hTh)jw8~?Wb5Q%TNVbBNOh}y@w%wUf25}D#!_JBin&}{35KypsXnMhiK+ERomPJ%9docVS -zrBRzK1E~l?h>B?k0z+Vs_UJ8?$&j1~ol3hFNk>xYJy+=gnvG_L%ZdlG(p3~%O)ZZ< -zvER2{5ulnUKzPg}VEtT6YaP5P++70rPG4S|9Ve5A;*EWvCN -zbAs*(OZ)wY1wsI!1}h4>%Wo{avpspSul*2rHB&dM5#4{wV*H~F&-h*JoC -zB6_gt%AvNb)plE$nP)RCv?0XKDT-~G5nD?V8v~a=xM70-9`hKzN0PnpQ(E+qXi$Te -z$;rrt@Op5N1hsN&e56lWkPji&+s8rfI{n;{|E_c#+GI{DVHM`{|Q^naZFPonAXJI3jMnnHghKVsWj2GGE&Rur!4)(3B!Z61gHDvCV5N -zh!|*%X=%Ja8T^ZEUT=$l3)~A_ziZ^ETMr;wt=rR!TtlP{X``(`NkMivhK8HAtjAxF -zDas+^I2i%JP2Q0;Ez-JMdXy1}$&gfll?836ZJthVn|XMQ4K0jX>38Z8yGDS* -z8eKgg?3+xB{8T>|hI -zB~I-DXVH-{?sn;+QQ$i0U_EdPJwpXNual}u5<81o?Ia?nHd1f}34ORllY}!QPduo0Nfmy$S -z`9*qOKzbt?2WSFVI&<)c6u#27BK_#lqQTDxzwnZTlDz$OXhjXz9)>98;Ipe!(HVSu -zCBVg>2&Mc9fKb34k~N2<)5kmh!kYy4Fl@ei9LPsNL$nh{K6>9xu%rkUKxe?L+g)bT -zI+3}AE1F9!45Exh!}Yj!1r)DlABOjHkhK<{p+=J+DNK;+EF3B0R;@N}85$HNPaI%W -za0vEuM^#OJ9D3vs)Ph^!GE1NVdKhYI(&jTku=<>WwiJE!=(1%vcJ9BSB?+DjfIcH= -z!dXnNWQV$ntR0|GL18xd5~^w#x#URz9+_<_%&)+Y@z_!2lZJSwa6pLBx{%6`uEDqP -zH@Ai?$2{yeT0yg!ZPm)a1UItq$h1dg+Q9o6FZm_`MW|58w)gbX;4`j1khBa88Gswy -zM){nLY-lIk-9raAcSwXex1(=?Jigbl$jP9ao9W8d#!U-8v}nPwH~-)p_?vU4N???- -z!rgk_a=}GKJAY)W{9E0yq&(33O -zJA(sR0^%g3U_kXnHzf`DSoH3(3v`-lJRqd*_ix~vpx+PNN>L$t!dO46lv8;v9O)a3 -zbO6wn28kV!q52Ru4WJd&2Uw9;?u5|4xr+5Bbw-{{>UAb1s7*$9^wIbR9yWs+pbE!t -zsSvy2kQyvh&dcBKBwV$=_yIef9>~ArzdwHo1c&l)j#fg3rlv&`+`s}N-%W|1a^y~T -z|4kTN%*tVZf(sf%?|9N=t1u);NNk+gC`WT5$UKxO09bhk>3o`4uFx$uh5}Y3g~(V@ -zT%P9fgJf0h9D9S+541MLWk!7CW_9n}*l8*U##0q%!ybR2FrqaG&{V?3rJ=xf4~=%P -zHrT}EUR7FHj#}0L?nnhn5p&4&lItAr -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 -zIX%xYA2Q;1)a#;zMa4*Ak$59NfF?W%t -zSut?Lx@qA8J1aUx-g@K6kfdY)>7t<=TZbtOi|hvAv``yfbMh&5;bCW1i9=S}QLTQO -z*)zg}YY#P#>ZQ-eBHoSv0>py=CbnzhtefKWdCYYZ{aU4=NP42lK$DGEH -znjocmE|B1V+;WREiJd*hiUG=4NU>iE`F3o~8eIF^1p$0Nwi-O;6{_6?wbgCf+B#>K -znl`^~+Sv{+ma@26hf(~5tm3LQoOW*6~_o|t_;uvXu{CyBCf -zISm5}NYeDH@mp$265!!`0JLa>#tLl(V=D24l=iSLcZ*b@>x}k07lyl?_vM{as472B -z#ScJgESISQjTmW4_i!Z@7`IsML1D|t)1%3>Qci0}HRjGK?%R#5h5-DvowTC#ek){Y -zl1WBQi0HKgq(sTQ~mdHsJ -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 -zN_YWUe5^Gk6W -z@gN0ws-esD8x0gF%jC}vB_9_TifS@ -z_8KBsN84H@o3s_)4IvE0%YH__@=iX*LsFIIHXOBhp%pFdP9Rg%yqFeJjjNRta9^3A -zI0J71cGK=F@`aG=W4kmdc}^QfgV+LMTq~ty=twB4BLNIap4TVZm)B$(vF)jio1AF2 -ztj_P>sI4u~g{AB(G~BNMoTxqWKiUz*{g#oL$ch@=9erbR3pBYWX(8^hp1e^Y+7Cz& -zhGrb)>rpF+Q1PUYV^-Qmnz{ZYBKi_D8ykLR+fu}ZJ8d2mh@85VsP0KCclh-4TdoM%Q${ZBQM;L=r+OwrJ&z4hW!1S9zdG -zlPvbu+}BS8{VYgSt>H^;`RRnQhx`>>Ba7=yVImKVuIpe@lN(3x4ZtRXdqCEUv7pz{ -zHZUq1wQXHwCnMe_)P{9a9T|8<6-AjvoWbFv42zJLGmI`r|MC;s@4QO=$mL-9~jrBR;5Be3;H -z-&{X{Rq^LV^YF+2pYiJrPwo2gI`GFCmtzSoAb?gbi#%GswS`0&*$gBR1iCC=W$EJ{ -zEhvBaK!Es++Dr!d#*0Fpm(h>^9{%y?FzwmK5CV!}jsCuzjM4wNG=^U;Eqd*yXk5hy -zl8*gz=;J@euGie%%Wu=b%Nehi+5fo4e~Ac2Hr}@k9w5W_fCT3Cf-?5wKgM1j>f!GG -z{rj)tav-*QJ;}qo6Y{A47=67V{x2$k!pmit!PD=5?0tN2pf2)tbdO2qv8C>B3R2F6 -zrB{e2ja`tMqrEK!kz~}pe`?hr84Ky}W78ZX;_@?h#i%L6m0k!XBn*dCB{~&w+Z#Eg -zk!)4VYl~yINdywjrD`6M-DS2}s!Cbd7Pym{sFuhiHw8NgAjW|~q|bf3;>05wH9PLP -zP=Mw2BpdebHU*Zd!F{j>|8EVS2!uaIaL(~gAqiK7TCKBb8Ilo~{+SKfBD9i{`RN|{f_xrmihwkrwCon$NDQv!hP -zi%0Kglo~uxgKL~Ym;f$~;z>c}R#A9?ps7b$4v4|nw&4~@Hpc^5R|w_VPbvwBAXL#y -zUjp+~ggYWRekSvZ(fzDyRw0RaS&_xo)X_aykHKQ -zlBqh`8U>jfc+2GgRuFktT2P#l5^UkcIB<*sb@l%7Cy*pw>+DlLV&b~7mV*ZH)eHOx -z=KN3|O}Rb1^M9E-rBTxC($C`6>LYmcvFFga;oN|7Ed-w}`Froo|H;F_F7Zt})fb;`;z_2>;45|-$p?bFZ!DJGXI;otve7#D~O -z$7u(x(PWfJ>0%KWtHi8fqsP)%x|^Y+TFcUMPb!+Stuxj;=vO=@u!|Wtsu)8ULa?M% -zjC)PGAv^*zLN8kbB5iM0#pQV^Z#E$(SdA&QO6#Ja0IOri%AhtLl^Qg+9ML9+a7^Hy -zH6xE{O%X(7+?a!^2?aSC7c8J8SYJg`J$Z;lH97N%?8(mq0%BmZMtOv&1jR^(&_itu -zh)LD$YdH71wWFqSNT$jolV)KL0P{>d&D#y*WGR!=}q$DE*sN~#j_XGey<5kX1f=%@!ph04a! -zaCoJdMBCDydfG-|a2$oHN2q%caT`g=k^x}+Hwc+Mk@}F`Ne}etzF58c&G1pB3y)JN -zyk8^m-qHTb$nyc!(b~FTc*D`)C0Yau&?zF*pP=$*cQD)exfNk+2kp=N7cA5Ci5YspvDj8VKW@56kp-WTF2${)WEdvIFXbuGru_N)kCunu@ -zSSG&ssjU%3AXiomEeHIhVV|yGQ@#up;VHhMecZ+O4-@WQ -zA<8c0G069joe7ALq^=mdlx*f5U3V7B+EDGSO%x+j1}{5GO4E;XPg`@6Ndhqk>_#$; -zXw{dN(W8$re#Q})4_L9ZG)^X5NMPpefr@qx&U*wkJ_TJC1r8#r4P?^_M>Q8Nq?V|~ -z;?I(NnD -zc_vudVbS -z$_de7eXT8w=OQ(;eY$B%Cze5K1BB)R+g9M0&6U6={?BDk0@yKMUsJB8f8Kv(O#BKR -zgg%QGl3Ea6d*V*bs3l-jo@|Uo8%;1-da+)$J_WrIxYCUz?UqLF!AsGD>&drCm_sg1 -zLYD|gd!1JRK^2VYG*G}WJJN=J|I)v~1z7vMpD}`_Lm`AB?G5W=cLtj+r`!=;(C!H} -z>V#=EnT$(!dnm>snORNw^J{l(x9sD%b>N5-Uu;EYd(?faYq0mmUsT-X)^{tH%ugg$ -z9!0;)){jgSz+_T3_kgkW<%Dpx`Gk6>xl5Y?WBE1@P@-|0d^+P!K5X7^sHZ>6c_|Rg -z^q6VeSF>~>|B8~$5mn;kT94%}ufWhfvwS;WsyXE&t|ds;Gu;CGR$dxx3U@8Mjya<< -zRsBM;)7xE;$ffN~tLgb1WzMS+)H^I~ -zL?}nFvTGXz_St+C4EB#V<I_kni4p9xna$A;2pd==CoFV}HAK9`pN$7kHNG?;hJu6d}B -z-D1KvWU*0lNWn@R%z)q)?$I6W^}g)m$8M{kkmt?8jwR@OMKM?EsEt) -z!0`V4*KZwIt5brZrGaa$xuO^*-~ -zzkI!TBL5;n5K5JTh=cNv`F08Hl -z%C85-x6-8|%y4jZ^het4-Ll<-F@*Lk;mT3a7?xNO4!_dm*a9twttVq$t$rDs$$-?A-Xq$x -zswT@yf`(TVVQ1ll9SWPgR!y5ZrV}Xr-`?FFJ!krXI_c(8Yapst`l9mZ -z?eb=ItZb0xkrF;uM#@bfBMXFgV?A!b3<8qJeEr1@Ngg3`;E_O5nZ%|PfEK?RDuA@< -zk^p>{PNT{#2K2IBFd%SOMXKBj^kd)DIJ@5$)*Mo@LTnf#xiCxHVl7dsh -z`2IwrN}Nrh-#8K>pRl#9;B-1!FTS3Y!ObM_SAAw3Gm~Bq^E%UkVyAxYuFk05uC3;S -zUgu%QBZ=7Jhd^`iGYgRRqOEX7TV#Tc> -z+^i%Zp_PtfUDf%f#k$O5PL6d}Zds&BB<3o1G&;ln!RUdGv?gfE{$5mT?-x^tA^oJC -zY+BM60*rmqq&;99HdhQ{78vlbn4YNwPab2FDIP|~VfU#GhxA5sbu`JvnQ8mE3!(W$ -zOS3xi^U~BR)^(mv8k;!?ldL^h0UWQI!nztDD&6XwL0su@>*X8+UZ9~<7L`7Pv;(at -zkMUNuMqZqJgo`4cDii=nK)1gSXq9N)u$)UzKh?5Mi`kicMSJ39H^QxfF~II{BCF9f -zupX#sb%PN5`eUrv#uM8vFR;=RT-jF}2G#WOYP6y48e^nui=CQB^P|Dcs_9{4S>XYm -zOS-B~&0Z9KO?Tvz*e;Rd6ZueImJ^(?#c5M+paGrqmreVYl3_YGz!Ett&OIM$WXFitbj9oUZ_-%h1GWJ$2O&CnH=$kuq&ZOhy+l^@4<#l2SP9A -z($oA$^l^?Isw0$6XU~A2QY(tCo}%mrV_XX;4m#h(nxjwiaTj!j`EeB%5mB7e{-j;= -zvTY)XM~R{rYn2pm<1UXN&&r{L(%>W2>?4?_^(=CkO#^epUezG2BDxLK*JecyJ-)?@ -z#9CY(0QFRgHW+hx&VV%Y5|sdyM2B*VLh|rfJjO=D0V!<_nY#o#XMhDLkro|+k8cmd -zyh>o@8B?j(1Im;{L%tsmhew;xxjPN0n@K@CK$NT(Rlx%+71K=6fbz~QhvGy}!6m9k7Y -z!rCo7dF1}Z*V}q?ua@o5XrWRk9st9_dQEoDLTi9T-31Yu#>i-(ZA>pg4dIs|M%%jI -zwaLUi#xR$e<{JB*Y$@v$CRHEy*6^1_aafd~glH@s3mYr47OVe)S85anr4$6h%8T<3 -zYJvPNE(8-OIcglg>z7%SVx%l#NVb&b(B`TzXV04VNU~Zt2fzi;p{JFNIGIMLir6BJ -zwh%6JlhBGcq^#n@T*EEfp7f_~*Nv12ZKzxNjvSZjVL+DZg$mlKdm=UW_KIs2IB#wbJQKp8=~D*L}SXy)$dPEQYWtU(ytBNDX*GQJ_4rbakgmX0J -zPwDS+3Q?p+}41p`FA%27ji@^zleD6KSEjO%5dld->Dubp>ztCbKpr6nuu<3skfrjs7k4}! -zO6tvIN1AoXCq&t(MZ^`O`dgPvu^^1JWzw#I5FmL&_Rn?MtYB2NP(`vM_=6ouitF>E -zHE(*c4H*=fWsX*!$N-tr2Drk#>ZI$d{6eoj7Q^#(Mf?Z@E3FpVCOLPY6US`Gxqu7b -zLl({sr;3y~y*QQqgRw|zg#!p-)55~gWj$gbdqjMw)5Smj;+FDpDtgl)ayZm(vmVhs -z?8o-1?e@7=;4sj(&55KofW)d4E^BxV?e1tFrY(BQB6VL6FVCvC!2v%e%_~j?BbRM4B&QTk@VsrO)lqD#X60m!kNRxRCNv#$o= -zh`ijYHwjK%BmH}j2Q_XnU4Mx!=< -zG~Q@kNi2#1yj5nih^yL|29&Y3OxQhow{OQ{hUf#3sc2cvu~HtoCr=i-$Ion+t6lm) -zzKou!?2OY87cY(S*U~3xdrIl&Mn*V&f6Lj-2SBD~^2^`4IJVy&!%?gzFb{8Ry4Qy9 -z_gK=4f9%R!`M8s!K$gd*?#@`B^7pABdPq|`(98~Y@##PbS^ONsW{yaU)9M}4P$P`l -z__MpGQCU`5(OaL9R%lB98#igE8u9($wzV>zWyUMw#FZjFbnz#*VJgLKY~SJ`6hCAt -zrC?jwL2od^PAHFa73j~OKN-dAor!$M4SG9%g)hdFpN1!6rnW4A86K79@8Ami9J2*G -zhxOj$Af3Y_=qd!;TToDp71qMJ10>nh(iAJ#T45XgKW)<|5I1&#FwZ!o-TL&I{fgl= -z68RO`Vm%Oja!fOocK30A*yRJ4igGadGghRa2i^4>x#FV_LUpq(B3{sM=+3QDL}TCy -z(*6NP2w*~yx{Sy6OPWaY{Vs^2IR5WvYV@mV>v8ROCG7K&8%fwiA$x@kkgnfJIe*&D -zG*iAvk^q)~?a#jFCEZ%R!Iw=`cXi0qs -zDJSIuQ3ackRcozse*4B!iCY*HXRKwE7x%=*P7DG7O|~WvfeZ&~;C_F)<3)a1X_^V?jw(s4u$ -zwDxtB@Hof1%R?oZc>76_u&NIe( -z6?cV*qBkSFMkTRZY@rg#!OW`<)ea0C4y+O7$YYr4PIN4~8(IMwU;UH(+H8n6Brml= -z=qOU=qkBLhn%#mr__ELM;XRky%fv&GF3#SJHs$HfNz)x0*RTs@7UU)Q`U%#oWi({T -zMVC!+i1xUAL@Nx6^H@)o?%Y6K%LD5d>AhO-R);-5gJ>FHvNSV%17O*Rsa~N9*?Z~M -z)P;1GtviBMZw4S2Br<2nc9Lg%%H|~lm^6P*3ia`^(>^}5A(++%dN^|w6czM-*l#cv -z`E|>(so~MLsL4on^7!rl$Jo1NNs4RRg8$Wv`VaFF?h%oh(SiG0Z4e+p&O;;*GsjwA -zYp#bREb@-A$Jr;tkzp7JX}#B+er+mG>xPUI;jR>zUS(`yFjiV3Oo<*k{&zrk0R8*v -zk1u2SK!~2-FQ8h1*D`7p{VpLOdYUGr9wGBE9sA;Wojt%I)`;!HhznL1{Cv_)un1Gh -zMz%^`O^j|@H*?x8h}+$0ZLZyUYY*VQ%SXOw$71OlELp*R2Q%8GXh!B%Y$DP+*#4?V -z=xK9xm!JcZB&o==XlVV$h?tY)IKVk_%djtqAq7R$um9)5Mc6%$^~+>rlDqkQo{V(gPEA{BkL>Nlrek)C7j%xjT&@wb&H*l+P^BUIs^XT0n -zERZ4V&Fv;D|ql`RV<8qW@mWmtis^*_`3Ipzte&AuuQRgoek&AN3m4z+-}s!f$-r`vi|aBi)V; -zPhl9F0A^*2Q+WTxYVhm9A&tT|kEoC(Z`M0>6a#N=gB%!oM+>~s-x;|Qrv`VjTFJ(~ -zE4&~}LreKht_njo)II+szRQsPBvzO*Eh%Vv7f1%GxJR!(FnAZ(0?fB$T@KtXfPla; -zC&&2OA;mOQKxY>M9JB{zTPe)nl4S>!VDbhbwi`a$n%N1UKdkHYzJMIYM61f6j%^#b -z_%lwEWyW6%KkU+*?1Q5*S5CO5rgA!NF@owc5;2JaanoK>yy! -z1IJ_eJqq45)4@!DxlIh$?XhiO1TZO}9w55>Kcvf%zS^Vy;*wIqpy8^bXZm{cw8tHK -zmNQ!d=rDkn&wOIN1JW~Tq{^%L3bYW0hGRlUOp6ADKFQBXb?d$wi~(;T&j9_(s!(RP -zqFbgU{Sn}NhV>?!2!6C7Jbx=0D1a5QZc+=7s3wGyC{}R(Lfcu#(RJ-X^t -zk*l&Z0{oR>eZd$8WJjP|2lUXl)}9E8uqlNYwy< -zzQRpW#^>N0x=_y;i;1FABdxs=nkw8mFP-@feM;yd^{K)`noOj-mkE%8(+(2DpYNhH -zrc({+jQ;F5!#^gC%XTn^dyh{5h3lX;{ -z{{xex((N)~2urZA04##xCzA+<#-#JnlF#tf7w~NU))s031v;5kO_JSi`N=)G;;+G} -zB@J{dC^iuaoO=Cbv~8aW!T~_XO#W)%8ZRVPfsXtoha!euYBmmu8T@gg}lvLu&b2;{S>LBi>W -z5+0e}MZ3}x(7#XMP8fCuJ>BuN7e*3~%#bZX8H=r>pVGembQ$20Pv9zcXaRX)com}4 -z$^z#I(jS>Q4#>f#Y?GPAUm}0|ZZ92%$J=(>+EsAEX_-_krqE)l0i|s@_BrH)qv$5T -zY~s5H614q69#!TUkBIHuGT^un7y!aqfmsfwp#;AuM}e5eVnPqAi16}OrJ$6NVF_tCTrh?!M8On0FQIw)@+ZdKq7${KDKfar2 -zXgItq7#Z>oKAVQkogcC^g-x2(R?tH8j-0}SouVQDw)^@*NM$I_xc#o@eKOF)ev%l< -znZZ5KbGbILJHi^o*^QOLmdWj0^u?%82e73$LMO&i12#4zUc;0P0U>}DcvF2%)62;kpPCz7p?aH)i;JIYmLoA{)cg)U?#6}<)$j*q0yUmq3 -z)>a+i2gbx9vWQ+U>Ygyl&@2lGIW|FadE^)my{J^1(H6PgjWZ$MvY_;qfCPPLP;y|H -z{)F8X?y8PCJo(ddTXTG{do+2aQGD}Xb+CADU79${F_Ui6cCz@DklRI!R%lQ)=m2I1 -zK{V}B#(8W7-XW(hlx~b{swbe(_(%#h5VW$M7bsF7^R>)v!kI`2&aktOUcAR0X$3Z8 -zZ38m#13huCy%EtLt)tDWT^}H+AVapS%i~&y!CqFPTakGLqq{Zv0vS0_U`Q4z~)$RieHdoBp18|KltbK89_1qn1g4gVlpE&JVU<7cX -zrsr&y{2B`9SJ-gsa{vosO!6MH*o35DVokf=8o-{y1@W|cO29{L`{w)q}a>zNT#zeYbk>Za1m3X=a)M{d@ABvKx>pg#al4V2JJQIAJ!XWid=zDVVm^TUrYv;mqz!aS;K -zXBe_uP0m+P3%_GN9B=`7+tt`Yxh@KP2`$p=J&82+s7ZrOoS)!c*9fG*V`bPsw6K!S -z;oy^=yv9Yt-C&9AE?sDRKLse}bPA0iCbbXRK%SNJWP`NBI5osuA95A6gEdg_nJ-aA -zLOUKva@;NX|9q+(+-i1$R}J$mDChFqjTxVgYm54#g0txl18A(m)2)?;P{hh?g7np} -z+HpPV24;Ayw7crvSP}Mni)3x0dk`&cVTy@u$bdw>m?&%?Ek8ARDkinbYDqnvNk&R~ -zmw7h@p|y(F#NY0Qqt$Y2l!cyU-M1#KYs>5~5_PJj1~~kF&uL8=7SA}9mb+02pT*}y -zk;WCxZFBIX2+vkbc? -zt&)(`=V?M`mqAn+(O&Wg?}eth<(Ti@F3qU4Kq!01y?^|4gRm#5p#z>!4fkL!Zem)o -zHBNp&For^Ie!S%tNX{$dAUM5Iuf;&!^3Xspsgn#4oF8NR!5X}bMP)j502gp{Q6%x9%g`TF% -z$)gt>(knhHSN9;*wzs2(62bP+$Hx^!3r;IN)t55IkntUu?`lsj*p4gBoI%-=(amm_ -z^|N=#K8|Gp8z8*JJS%EPD#=C`I+xt2v9fxm7d%+m`;0ePfhkI50m{1O#kj$Qx%SpM -zp`L=<`*hD}aC&i>1j5=Th0Ri*S+`Id$Htd=+O#}cj&~iq&ly{C6H~#SM{?ajE%!KW -z{R1KsC85mRVG&>)u~Jdy2tZCqz-up*>^g47nmeJJqs=Qi`G&JPE&cm0Y|QmQkCfoVX&DSKfgdyPFvd2kQbet1qN13K -zXK8+RE0C*)Q)FDlB_&1No0W$|eMIM4rwZnaaTSUNFxsgGu{XN1B-W4OgU<$qSmI#* -z{B7$K#>d7OR&vV{Y+BerWbw@AG{V!~$cU4KZJ}6;-VY|Q$MLmOpRXuQt7ZD2@n7%a -zS9RM&_J}od#uZ*rfpI2`=95b$ns?zH5se|D=$lr{Zv`{~EBh14O)I`}P4dg>G}7&1 -zWQ6N&f^%iD+t^PhGkJrZdLI+OYU2fMn|b(XgNJtXRnXY?#yVXXl|ysJV<5jrB02nv -zMQ4zahR%&;*y)`PMF*xI$yjO?3^vEn%(I<2-KLMv?~s%?)FHkti|&n_vwsu6wmA{lJZ;~!Lh{EJ<%(^kTh^jg6LX1 -zTU{FG<460g>`rm6Qac>v`9gb2jXmbTNu_TxBWc<|64k^ZG`YMEWJr$g$Ul=eQ_-76 -zK}6JN3h8WE^d4P(HCelHU2~ZpAi)v<1DhRIbfMYouyrI*G7mIzn*j!!W)db`ci2%4 -zY(n^;AGT0EZ2Mp#8c)y5Kg8E&;9z<&YijS<0kW!b@0#Q&B6#{$^2=LPP(eWIQj($y -zG9~^!WCO_e$QG;Om+E26V`~^~WLd9OdUCqWGkWM0Osh9Kh3%7TKsWK`V-c_Q@9i|5#qad9WLNP$kFu1_R{t -zn7agH;hjM3;pmKRill^|z;o6L9U+#Ix~H4jfpT^kN6~MuWN( -zVb5Ku?n(WhBzEs6QWK%IWa$L#`0YeJ_?sl&0lV15B75Sx#Oy^Yc$XYk)s$74%2=`e -ztKNs(?f_!2BI?g(i4XH{uyPPiQ>;%ij<$icy8P6`J*78_{6Z$}6bg90c`WppN}1Rq -ztXD*YtPAOC-zH=)DENfd9M7UPw&LILVI36Uz -zR2ex~*3NvT-fjKCaS~nM8%j&(oTnn2`FWbrX$517^-xqC&?^D-_pOepNRKr_k#yiF -zKR5bm9e`FGe0uA|2GMhD`%D%BJ0fTEMD_%l64Ix7dl=(jgXef~mGYlt=6(rmr}Rg_ -zpsh5eM?TcXIS5lFpINCiWEdRjXqTL8jV#!@Eh%lm4PLZca)MIp-MG|Fr>X3wRRbv5 -z;(Uy^U3TX4;6tB`ZhDal^_#nm?q=AF6)EVsRl$qLx4-KME1qY%!|RFY12992>xm`0 -zn7B7cPTUjB8$D6hGlenAOoe-YYyrV;mZR|ho}`{s{eoQ1fo$wnv2l*PPyUECEQ*(B -z2c4uMUnZXuj -z9^*O@{T4T9rwZK;{Q>K_#$!xbR9NAWbobFIv+USa`@e-f)49_~3l)wutfN{!9@3F) -z>V699dX6K?Q+V;uq+`@Zg5;~+x~xn%gAzqD*o`TZY&a4)-2F4fgtowI89mZD9g<+D -zeSJ8I4{6)|8o$m()_9nQROTSZn~68F#ypHeS(jn@Jhsi9{HB;NQOJm3CQSZY-?W@M -z=S&|*CN7nn=sKr`uwCj#MtZNPwLpJH@-roJL54mvfY8fBxT!gARh((1OX&{Y5GM~; -zi_YVyVh9L6oZR3K*!3EOm$7AwErTzK954Fp+R$>5o!I0Rn`sI6V@DH>KFV~qhaREG -zXl*zM2QHaIMHp%snugqzm+%ZiIf8>)XjKLVB#-3oPs?mGWUwYb+k|v#rDCv4N{7P; -zDH|>EjrTe9@zVk~Gb;S%j_ETm)$1g-T<*C<{qF)8Gx?B)Qz&DzdzZKE#R&NKh>ZJZ -zduwfSzn|ffT>HTGK28vg0MM~5%XJDQj>+ZTI;6w8cmheb(|CZpbMQv+L{qSGt0csY -zEDs4UD>wv@FnThOI5a7>v5kEQx+@r3o`A}#f|AQHDmMfrnX)5oC6Em-v^*o1i@XI? -ztpxSN9*|b|-$3Rm_f6YRY=d7=u$T+En45{qDK6<$esKccmO#8S -zz|VeTj7;?u6`xobZ|o(`E_|x$AQi=yEL%vhp$kzbZqOT?U@}9G`RAe17KK|~Z@P&K -zcNoSYf$Cwb5Fe19>aD7{@sO_52SW$K+Gb%eRKMq8LKugyoDSdCT -z-aZ3xL%@)SSU`%CJN}fyciFSp5Ldt_4&WN)!h?G(E&QZT6N3(}jAkyY{?HUFvlo-k8rujm}{=JOgYdFeU=J-1CsCxttL42k5 -zN!WYq6#E2K1ziO32c2GeFG3Uu(ZA9=H-*e^P0A=RaDX9a6IgqYOjy3wCf(@Ro_135vuJU-S~5(pSr64 -zOBN6)M!^`k7eI}Vb`sI~Xjbj&UhB$It@~Rw3W{u+nPdBN%>T#OGX6Q%u78fvBmObQ -zWw)=tJN!B3{^NSn*Pmmkkj|C2oi;D#`3YXAp75cY&)IT1(RxUU7^x^HNZ3%k! -z){zVs-D)XSPZZ0Hm+oMkWbK$=g9eWHZ_<-wvw!7*rnMLL@m)chRhr(9e3m9?r}MW? -zERUi~qAW2#|N5odOOJmlM|A9pU!2G%HZwx+DOeH`^U8aC#zWDeVZCQ(w8^pFQuD`Gv6JS_swOKs*UtM10= -z$_Fm((F1XCTd_^Jak)2c(`^agEo-X|C(InQalrEyCQL15+YYu3`0rMMK!C!+&iEgK -zkeeZ3Trt)go0PgI$r#(huFMNsQO2P((O=|}9id%emAX^#VoXmpNb~Mr~#YE}Kbt!*y -z(-D^z^4C)MVvA90!DU{m)I^C_7MHMFDIU3powrC*+>MD=TDoBsLVVp+=79rJ8d|t6 -zBOTSx;sAw!>A-KrK`6hojOFFVZ_@0R+GV(1FMYmwzST`YSIAwc!V{JBP^({+>MShL -zPlEy7dNere1_h;gI&Frb1K2NnUyN$jRKapE^h);q{PkfU@(U|IM$Z!aU&)m~0B!jxrQAY(f;J^XbO8%t71n$!h|o~n&olMgfN^aEKx)`iKzW#%kHb#i0LE+pjPuFhyX)oS19?3=K&zb=|JJnT -zUI;6yXsWV}dBcP~|E;}8d4L3Su|Jxa=(OuW&!7zn3@!0CK7Rgv*-l6)w}ER;5csfw -z!^7_=6_L9^sP1-+i$IK|bTks^6GIp5(!6tQdClKDusy6S1PUZO_bfx_ -zfLhXF%Q-XV-zcY0cBvCTs(eTMK?$qRg9lkyxfn{=U`jeL@UoDJ38b_Ov?k)I -zzoSitu#zQg}mQ9`!27z)4hMej#$czXXX`2t`jbH5&tZOVzJPd4Udc;QOPbPd^d -z8)L6%R1@m!1tzfcaG5Rv%X}#?ax!TGqm&f907@5DoSK*dUI_@!Kj{}~=>p#3Fwm%b -z=^4Y@nBn@!TLg8Kum--~gONVG768706ElK-0ZRX<4H=#L;d8vkjW_VD$bs%ONCRW4 -z(}APwk$EMvto%{_0R;}!utF!7pnI<3*}1s@zV4C7!lM<1mAK6kQ@Jj%rfIIrH_xve -z5HuHP=pDJSjqyh=@Rq2&?cKI%jeK>~C#bJ29G9_AP|1uEfeb79@-7*-YZZ -zBFg+dUU=nABz!_)t11OaASG727r=baP@TzW*qB4&L8g -zs`^~NVs{jew+_~k0lu?2d}eu -zLfOY0twk$SKqWG_fi^o*d{%iZG&mPy#At)$wrVmA5Wh4(o(yTN8*;GDK@759i|E2Zr4+1)oyexb6wC`WL^=4(}D1xSuJcq@0 -z*yd`xS6RJQy?(A_r-2H#zo27Ub<*Z$)QQFlAdm9(H9$p{>s6*&ZdSv8ZW|`mq3k8H -zz)K#!)+tCYf=YD2I&B#S3D%sRi)wCwc<74^?Oq*|VqqvaXP>#~uAU3pg{RGe4?z6V -z9zqegaW7m2q|3;MCDTRjB2Hbdj!t0+zGMzj@L{#a?6Gn0q;}|(p;#JEb;Fpz(N#%k -za%9UYB{cZNpfwjFI$Ggm)N5jlRPWJ<{_bB^A~|$RUqX}=i3)& -zu{13vWoIJy{|G4ad@}xc&;kuI@=>s|YEIr)?wGdH+!Z=zdCRM{6IpWymnd>`MUi{B -zM~@sJS2@i5xmIgPBbMEV9X9?oW)qmZ=2CGHhb#EaB1kAY1@!pip-?#I;>)=BLNXhw -zoO4x@tLxnvtrcqY@85HiRfTGp^@a5C2o3j48}n$a500gP9Wdcw3e0G3AEqtHs0lFW -zXdc)^mbMc~i-xD_KTDm*Q7Ti5-uBPt$h9hn`c`l6%#1h-Y+L -zkGef(DycKh2rEG#E8Z2JriSfL+JU_Ie`N(SW_PPNSSsRT2BJh!sFq^cvvBQ@7^S+1 -z&?%#u0d4=arU}sYhFGhY$~HNh#44&gEBACp9f?!8>?9b19j)N`0r`;LoJ+&%;Z#3th1=p%c?LTTu_4zZm=fBJG -zX2^d_ftUP^dLjEe6yKd={(JM^6ahcIaWJH48ra+?#)h<~aQl5tva51vjNa_CD!N@- -zW%QLJ4mx*v*ViW*VWkj2pq_(!58pJ!SJ7^ie};{7PUZqDQ-;*z&;?>jo;OVi0O`GL5$Mw~P79mZ< -zsXhr6nK`o6N9CHlr1{e(bu;pz!W!7!Zo(aw%zMTmsTJs7pS3`#!4!yW+wVo6q}&St -zw>w>tE8Np5rugqk%74$DPlh5edTz(HLi+1y!{}rp)T?@oC5EghFxmNW>wXxNbk9%ADfVWoSq)D}5jvyGMHRM+n< -z=_$(`kR(G-Lo!NdmwBFa+ke|vG7$aCy}e(LUw(-V&vX}=^8Nayzdl}G5qH?@E|@!a -z`;1DWMl-}!ZO~u9UtMUaUtYfUi%WH&G_xVlV=--2k8bp;_BagZZaS_pN^~Ocv{4WR -z)ErM8NLFgHnq=sb1I)Ak+B-kr7_-H!q8G1mW{KiqY?hz6u|v_?ttGu`H4ZhhIW=N~ -zK(c0(m_I+7l}tD`L+QLt~&W2eX7Qhy(S5Z -zwWx;^T)HL|Zb~C3Vt5%Q3F-Fc1XE|niA|HW30Ev0{Ee9=$qFDt6Ge;q33a~AyD(^e -ziq#UQ1J;t-wjoCcn|~|fk9Cdi{!6IQP4gKKu4xCdk3pz2us{iYDU(R2?g$a6P?s10 -zB4@K@g__v)KCHP+jCMaKxir8-CVlE+@oqcs@w8qsKIA54SsNr*hLBY7Vp$|U%=R++ -zcP!(@5D#JB_|C)(CM~ekHj#Ai^+qCe1-_iKMrKlwU$junXh%sBfIi81JC-$Jmb4?6 -zokM`0>Vx#KxC{M5WzgPakD`NvPGG(*GD -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 -z-0CenL3J@JQA>NQXLHac -zT9%CLh3stmi9S@^IA!-14h!w+3E}HYjgM}8|L5Y2cB3oyRX3J#hiwDWBd2zJMHzT+x>N5{aISX -z9jQV8s!Kay5Fol^M{6vfe&t46@v^zdw-|o_V8^Qh$4J;qWyPJYqa*Ea@kFlFe|23h -zgE5XQI`xzAe2y1GOouMN!XxF|B)7SE=>(xAKJbGI=a- -z(jw^Bd-2&`qu${%m$D74eTX?k(}dhzov3B{6P2XN!jMBUph)@JE9Rj>KJ_56IXSf;GK5w{Yx%oSShQd|Eouw1!1=XbigqK1pJh&1$Nv5C{c_H~zy3Hb@4!a?dO7Rs^)g?t -z*ZKP6D}TQZ{9^-5BW9a~AL!rm1%-bZ$xrrFxVJC?J})86&jzXAv`A1XV1hACI}ciL -zCyjU|tKb8LK1|1e9PC_EEKQ7ZnuyU)areLx859YS|11hIku}MW!N-yjljETfm7l!P -z%iiG6V<>GIhO7kHd1H>!aLex7U?B`Xc>k-MoZ;iU#L$M{mti-ben&;M9zNXWhESd$ -zBe~y1uA;+CMa)vVJefy-ybQu(RcuNc3T5gD$Hh|)?sUT+#_`a8y*RfrqTcNgT)AB6 -zu#-JYe{Jy?FQ3)Jddz9s2imOY;9M_#1oRjU8KdFi@C~THCmX-9qw=${keDEdcjdbs -zcH}ASX7{O~H~Zsv`6~9L6d5{75B1w$t$tNse{8_D7BwVfYa)Gv>v|kV`HF?hx_&38 -zHmv$Jk~=F|W^>`ajhq!14j_Y5aA(*@E3fsgEmX?rzsUb6extpOh1WTDRnAd?z?l={ -zB^v=(`XXW?+Cj(AYxD>^XbtavYsk-X3UD)$3!PaZ>8@_YN*cHKPOItZ&vBQ^-*I2_ -zLII$#U$NEnE5{cZ^glBg`}_Cb#TBPt*#Ms$YA8*X@KJu!$$bL7G*Jb^+KSbG6+hTV -ze=KqPKy}}rA7~%krdOe(%*yQ6!SlDmoS-k*wa=b?%3Mq|nZT8HC -zGq*-jYnia({ZH@1#eCzi^nH0`TZ#Y$kK}@_ -z33xd^7eP$TmpNS%fIttl?JLYax6G5LI~KmA4R)iy4)!!{;sU23T0}I{of7<@0=g_M -z1D{dofTWJn;LXO?Qa2!H^kIJiq( -zkxGU6q-SH>U2AG&NaAreKno~@@=6UtyyYXh7fMapwc=pQtS2G%xl -z(K8}?5 -z-01Y@0KfBNtGN&NGM9Srt8{XvyF;6lb|au7LQnpZo|fr+3mg3xy1jhQC)X=wfjXV2 -zeC-rGW;)fpSzKz5=jQeeOa*D+F;6J}EAHkbHBbO3oa*f5GiKKb&;7T#zT|KKk<$4t -zb0SsV?`k8Iq}Tr;1+T{BuX@uNQZl<4kH4a -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 -ziH82i;vMF)@7;8L9yBw^QZMdr#A3T_6 -z;+89Hfd!-sr<`6k?YNc|3*)*1*JEeH^N;I{-sc$tqG<r!7%T73)Q|>8_#|O}*F^S0kH*Zx|oKdIfmd@_ii; -zxBOXgdAc&mnG1&>s-&Pl|JV&Y$8K8itNof_7OUgyzxK|?5yvr`sp3{|ae007BE9zQ -zRn2FN{bE9Q?yR}KV3vEy1--~D(YHKa%tc44V$->Pd9SKs%C)s}6J1jd`GqGEWKj8< -zaGBkU^dmJO41TX0Uzx|!t7o&IxW%paE$e{SS=rYY$wD`=_)>CgejLI&JeaZb&)0}| -z=*tUC%sV|mwwHIu%4D5iR0b`hcoF7|e-HWdBKCb?5riB7&F%%rl5`d}cD_c#++5Xo -zxviGACojayuK_3YYEsdNAemmy3mqW59wbc4;qlyMf1;xJy89|d=X&|Ebw+qg&*K=A -z;{|oybzD*Kr}7|I0UbB~k59n6eSOvt^W6uai>(9Sr@!0}?IUi_d)Yu8VmFSvx=Yw@ -zX7iN4P8N#SZ^1ZZ!>n96%)U2oFYo+;T5Y+Jxn!k$xgvd;;Y<@qEx8Dc9rXJA^vY<% -zzZgLc31i0eUGh+zUxyHvx+sJe7{Tj{LT{mPRv>;|wGjt${?HE`vB1<_&ZR|FbNb!0 -z^mw^j+F-+0HpYgG-5j$q -z9~7zC23Gg@(;34Ah?)JeY8cRbdv)CyA6>1Y>(ZeI)|FbkIFcu`%;QDTIB;H#7o9k| -z_3B)qUv0cb{XVgjAM8C;P*$ZGSJ7k?%~}8|Y7-1-H2bdu@JkgZ#dra}h)ban`X|(h -zcYuQ&3VtEMDKht)Tw&qJoN4^qA^7q5z65+MN=3WAgBhR&*4qi}Pc2W-7{`=8B^8-Z -zRX*M=q>;&OTRLF61A@A2pQ)QczaOBX(S!rF} -zY`?Vi8n}FnZP06yf34qm{43$9Axv^d!>05kqta_W9;1@K!iKU-%@z^Vtjy!nuIRSh -zD)O%RvY<58k6A<4b5;M;n`w3hi<)}eFSJfXawFUN2YWeJk#i4( -zC1DX^K4FCj41j7w!TGvqmyWR`nTT1xx+ku%&V -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 -zB5o*x8|Q<#jIY^%e7 -zCl;8(oLXY5wpQ0uiz78ZKD}|2x>bbKw}A}i!6kGE=qD1u+!sW9l8n_GCYn4ENO%&Q -z60oy~muywAm!a5*?6t#UlMo>HpQ>ZP(#OhkVA;hTV01)#1BqpaY$#1;eCxDqnP&$iVi>f6z=w_COoVFqw1szDo_ztP(B`${qkdSj!<>^V=H9{QVX -zuMm^$C#7`qw!$SE^n=rV+K2Zj&4&D%QXtPYbXASB@;>*p=`DMNKtB4|utG`Paq~WI -zW8P8md*n{{_19|Tl_=2 -zE`X`SZ|o(j>p*t~`(O6a2s8lprX(%Vxf^gp_rvK{C&ND8y@+4wtqp5bw1IzNk~{cm -z+d!5&ECChD@~0d2aK}y@6dZ9Ckqd3uM$~QRJF!ID)*|}%{Pt`Z(t>0gj({e?nVKgp -zH!>O*cSq%K98eeZ{8pU}TCD2+WaNq`*|_VdA*d&Q_CPwL#{paadMSS(G2!MMgd>~# -zm-d~}pFfMp?^dGfR7hftvK7pf3V2GGFYlI>5Qr>lwJE5wB+HNlT+vo*qe4tqA_`!b_w4gTyj)t|Awj4kTZFP00<$w3nUiCnz9@!rwaJ#T>Pz$z7o>4Bynv5SS0Y)=&^WbAr2OGMR-UovL{vuoN~2O>X; -zbt8V6tW3l+qpT`HyCn(ZP{I8-$3;G@a&6_%)7@-IE#}Zk9oge*8JgZI!!+xrM+i*J -zB&?6^TX#D0CV>4x4=y%rdn}qmR%Z_eGKtVWYH{KWO|Ov=gpg*MfB8Ue2^wef@i3iC -zD~}{8Jal@9FL|wp`}V~qP}(ZAXrNWM#&bqU28RQPm~$7U`4Bz%w9QP3FadCH1{hG{yT&Ko=63fi -zqkq%VI}`xs)1BZo3Oo_O{2bR~%@K-6m>`T|g3MEU%pW-u -zO;))hpJ_A1U>564lCZ`b{T|FT-ek=Ra&ujt?@|ljSSqzw?V=a9NY9`4MM0|lW@E}X+y%1 -zMJ5qdLI=;y8aCQ+^X*_r3YxG-Scijd)UrSGouhSHU9$T0%;jq|E1^vI2eh;#`iKs9t!?*eW9 -zkIa6ulK1(r@`*i&y0ccJ$?pOySC=Qrs*2WR -z`w3o1gsCOnpDf+oIh;W=p;}7lwJ@GpKF@u{m>s -zi(?-qa)vZecu#f>YO_chY>zk2N#`s)srYRO+`5P49F2Zmfk2oD(9T8q1$v@Vb1tqSCP -zjlhir={4VZ?Twpdu1AGP`$7=3H}Y1JF^a7T@slIBObtnoh~&5_Y`V-)qcGAWkqM;)wb(;p2z~n8A7A%y -zU;XVK>HEN0pE>DGp7>}X%Rm}EYHKHqo8_obimVnO*#T+IlS4!sqo{x&8}u_Mu@Ly#`E3R2P*!wNv7WKzhp{KOM&V`tBsfPA(>)Ed~f`Cw@lxN -z#cH+96%bZ#sQR?V6Q*cY$RN?t(*kXX7P$Z^A%)ax32_A1%6ltD%p_G-qfMgTb0Mj! -z5#F-$LSQJkby9y6Nj;P>l>}f#nsDY -zU(m_~8(o4lBw17Usk(*syX(T!DxSbIv!w}%3umr#lMjvX^C-L(s_)U>HIm9st#!~I -zw6X4F7N}2-Wue|6tyGDku54~ZWZNV!LgEWmdn8#}uiT98fn{@#^fF>AbuPNoRx%83 -zl^-}k(4$Q2P-BR_Wx!TIZ`Es@Q}XU)G`L7UR!e>!j9nM-v}or?dUZ4N#cA*-s~s{0 -z(Fm<+nF-B6+vc@w`V$*Ypi((+2LzYhL`8+Tyrifdo_RVMPVtrt?Z^(AV4|~QfNT}2 -zVBbR2Fdvspkklx0;AEk#HL-R5$#%RE3K> -z5lzSj!dt>cATt&gB|pdKNq3?_0_lsqNlinj5B9BK#!3YuEs<|7Y_p%^akuab64V>2 -zEt}MDb!RAi#B)%1F?Z`JrLXME&a)Idn-DvundF`>=Zbz!ZR`k`9~3rP5#lJhAZ&WA -zJY*Lj*JV871s@`WTSShy3x9aPtt!qdmv -zc(mYl(HL)mt-QP)g1Vul{((RjNE}tYkwZ5S41F2gp8se8WGv0x%4gW=A7kq3m${+}Joa3egYWmQgw2a~= -zCP*?Z6BrRPSgqs*^`BM<$2Gqlu-kON1;8E%YILJDJMQyHmqyhmsRPw~+Z3>Mu)5gf -z=CC-P#Y8)E47un?+24!Op~A6!t)$uhFQqigvG*u}ApPtDNW84(eMYz;MI!IfBYy!8 -zFF8`^N`rayjT~>RbeMox{<#X^4W%XbcuKP)_br?`qDTMn -z6O+*gw6Y_JffftIskibCbZ+EQF3iE2h;-xoT -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 -zM$`OFMZ#$<81R^f0c3TOHj~v@AY9_00%r -zQ}3-1(2bSau$-uqOfQ3Xppe}ha(e9@>e*ASjT^yWvu($MCpRbj{NQE+Rsm(j1aOeX -z8xmDjBw?3KAmC5WY?^BoA7b`Mcw0Nr=Q1_9>-U`Fd`@CFIT%i#p5DR+i`(m#W>wH2 -z5{3pynaNLhd{0+#+>k^mu;<7;pcRrMu6HiI-hf+(%?;VK-+>!m5_-D=6y-qpJGHE4e+qaB3b{*KGQce)AlA-xf`CT -ztE?;tjtQuPB04y2zmOCsjXjPj?te_$PJf?EyzuQ@CCbUfqJ9>CMGK8kBv0Z~Z9Gvs|+eLkt@f_iWLZ4H5R8;e=#UL5XZ$A~Mju -z8vl+QXJb4_3Gz!bjn&1h&3jq}ZaY=ICk=r0ezWo>5#oM6UD1zA+qaJp=vTx@O7_*+k-;AbFT9gY^t*Py+;Z_^q$t%djdrZ%x!^XzM(uZwF-AdW<8X3E -zV()%+dK*SCK&zQm)q*S{%!78YEdcNY1c^3&Y*HO;nk4%!DTmK&y#@_BaWcO!v^X8| -zQZ&cTXx}`|q~x7PE|$rg5vD7I+Io;teU`un(^-Kj(%LOTidnOXD6*hKf==CNGMQ5q -z)W|Tfw40`i`+riV6Kf;wmIN4iB~=p@Qw}1RK^Bl-=Z8 -z)?u0gDU@09LKeV<`GIua#sr|!9TAyL4My|R`znZEAZD4*+{GL;2R_?M`iGMXLhO5> -z*e5gDrM`isFXS!S_BC`2+kVawbltd9sC46Un%AG4!o0Y~sNLa8qg3F-W?U0hVDV9H -zSj)(Qk`;nL!-06RYIMYW0j(XmOBq|?wrZ2#2FLNq`EDsB)I!w|Sx%~aBjYSQW6@8B -z;)1QnWhr1Jzj{&OG((?Ax_qu#%_Fe2lO{>86Vc#YF#AdSdjhPIeT+M8Bmre!C5EM@ -zwH0}&4nRT^<$xCob#4fjN!mNsfb(3HZ+k}d(y}<&5D>VBpdO%+l#Gm)+uRUB*-mY^ -z!Q`7k##IwsQg^Aw6aQ0hU_^@_-SwrvW*@kIhg(%Qu#iO~)$DP>O{7g6wI^&}8P_!I -zjAWS>nYMYjgo)5J2 -zEArA2(qwR!46z|~p4^E2c{mG`t~DAttkgFiJ6lPnBYrdsT|o2Ib>AHpg>3rOp{7Zz -zacbuf0d7?NlKzNdwv|4G?57r4rl2M&5-XNYhn26A#B(-WQEth>t(k?*bXs{P&0YneJhjN#>gj-fIW?4lZixuvJ9M -z#fQx!*u)a*_}pB_zejR-KOF2Zt?5K)&`+DQI?FFN+WbF!)w)#1NeW}xW7g!-B|z%= -zlKM(=YfM#ax$1PZNRS%SO-((^@k;i;5>{ -z!R^UZ1q!dox|OU>S}&>`(Rjr$WCnq^0pe2Q3qtXde~QaE^ihgT1oPZ;A!yhO6cIQr+y{R+%hop)71nncGj`V4q5Z6pgS3pZTw4H1P4Dj+@H=#Q^um^U2z0uQl -z0DIHUVWb#I+wetqzvf7)>|12-(Z~vMsaB0kI8;Xf`YM=qa{RU9LMi$O7%B9}%wVPd -z%dpWWlPk+1b&DD#40F-MPWo$_1vm=v0j=1bNnfkt2%s0XnfM4fc0tJQPc8;EwI8!+A(N{2tc~IaFh9)O$7UvyHDoXRLzYw -zKx6W@KF|)Wphsg15V|I)@`9!T*hRSe$!|p+c-_O{wtKsygvSnGX)FwkyC<{DBi!B} -zT`xur*V~~|bBVbe5sIrNm*;?8rU6j^|KzxDsMh#3E10h^Uy&6BUbef{>I%?*QNF;P -z?Ty5au0v$xTD*^snG?nsXKd{2atbK#wlU~(kRhfJOUJ+ufU@Vm0R~v-k9u;JeEw>U -zoSvo2_!#7{tlM6yLZN5vS -znZkaS$H(5}!zo{I$&*QIrn44oJ_hFhk)Sp)#JSG=WnrXZTAe%wqU?P1aC13dJ3OVi -z*RnT^keSG!yJ_Izn8`06)AQ1rnJxq66&{;D1MW8>$eQ3SNV?cuGh&sI(eO+C_XzcH -zAsoc^P-I9~)dB>Dl2gqVdq!#@FM0!nPUa{&@+^T!qhd@w`>kxtTZU=wBG3LOkcfOELj0`(HpyYh#o_rk4#Qh*8GHKLA}oqQ4ug -zTgy43uRFTU`uu97165g&wvFRCE$~JFUOb*r%6s@pB)~!jj4r4RfKr`mN%BLZITjXW -zA=_&A4TxVxFl@-PqU!=NM-xRT=Fsvi_56cGFW|#(T|%M_A5z%>6fv~Gtaopb6j?lO -z-^76D`WH^Lku}9xa=Az2DNk*f+}MHVr1K01v0H8hs2VqJk|RCNP9v>kV?C4QLjr}Y -zC*b`67p;YLh=8Sqv2~4fOQv$9rHArhajc)II&vcObZk^Ek_}t;Td+1>V5N#(Q<5$M -zm4kfIb!93O($TbPWqHL#dPx-_tub^ci8+r}F^FZ~t%?0;?;4JeM&|FUj{RlpKpw+h -zN(ap`r7mKT!5Q$6!S9P4DI>q@qYjcX#_~e>19W|GK-+gYcsZlmzlw>gAw482h -zfc=VEYBe``1z3e8a{XilS{gv$DRjwKsFX*#j5aj>k%mI9BGos|t(qhhVr7P4!j6N} -zPM)vA087_vXANi;RnpB)3Tj{$y>@4(0?P*(%BQXsBulz)!xS}RissYpJOrqOpJY1O -z=u5UlvkeI|6zP+l<+G}fgB!o%(4UK;HL%m5F(ljbv&>UdMQ^lyld?Un0IDZNK>~|XwOYe2Vyr%qXd(C^4RvkUIm|Cj**pT^ -z_sqf(<_ml?dGI9BxZ!Yj%MH<8U>ESJQv?m`^G4+zTNct%nE<{E*eL!g35!dwF`HR6 -zw>D;fSjxQfaoF+la&VgDTWuu>LHbp=C}QG_fZSigRmBo=)A@V^PsWxMe$MU~@DA%? -z6U;f52^#wu+&XUS(fgY<6VpTu0kMf(Tqw*KD2CGB-cRo6M!`$MS!Dru<0^nQVT`nX -zLf{V-CnpIDZjUZwBK%&t2evtMrZ~mNNGn_-lQsq*-WmH1fSx)lnpNo} -zT8d|o#-XC-`K=C5+Y=*K0nefHYvwowwyIxfZv0KQyBW2QK1@<_;|@~U%?Su=L820n -z2Qn79B|o({ef;DKbWU)mzsXWde?y0c^;VcpBrm=!A5Txz7?;8!9V-$#6%>q9;yKEC -z01XA3hJk@IdzegZgHp+~|@wi(bC2d-#LvK)Y)i#Jd}ls1vQ#gs=P#$Y*U367}u -z8hNTKT1$yG{taXus4cRW%8<8KT}&GI)-xsW$O3_jGf@>J;8#Z_VH9oAm+K2|p|;q_ -zGa2lm;_>jRLBG1p2Q&S!2&^-UDd(~czkUN%-Vl_~g@kaH+im>HAgXw`S1K-UAt4Lm -z0O4wPebv|_z1s#gIGS)jT^`_k9qGuJ8%_jl#pnzL#Zq>ZL&v-?iM9|jrPrsG|KyI5 -zsvzrQ`XeS57ZR$>dM&-#WG#CZq}oxa+_EUldr_kmD>*6l)`wSiVuMn^kTl8_bo4Un -z(J~p2^iA#$!qGh1~3&j9$?;n|K^q>(#K@$ -zeRLW`^sE2eQ&t6k1U&k3X^Bw_P!ynkQg*%p+j^TuW~q^1^EnPxNUr%{f7lY0HOx=Vq-vc0_KJI9~YmD{@vkiz-2w@_+u<6R7wzSoDTbPSyGcB|s#Lg*-ZJ7~UOA;Fcmp`~; -zg8v@#7`;c5z3@|7G?HjggO9oA=cZ+LGC*J+>!sTbR2YS -zGRAdr_VJx$qwCJ?d5m!&W&P;{>5=?{KCJuclYg1&pcJ28TQN8yZq1n)Wm95tt-vy0 -z`vb5vg(1+CB1RIOA|J8MYrKaTXpLKGygwQKi)>zRi-0TK3uM1*Jhs}0K*zxJs|9xOpD~{lRCwU6mtbYeDm%Zl -zg56z>7g(1wBTcGpK-L@^m?H_j8c77N4O;mmn!j -z(C922DdS$PHf|Xl6g5vAU{rJn_H##7O@17DoPzcg -zef4OwWk7arz@a4xrVGG6BWS`|OfF@Ix{9nFpin_tHuw^(Y8biZNgy7XUn^E9Lvzcwx%E$yavhc{XM`_x?`x!6!CILmL -zP|3FU^wQunu0D{o42&6o8{9_uoQ-T~C*0jb2RC;}ggN)4Z-G3%*RjaSpqrcN%GSqC -z3qG{y!LT>~;2ZdxbEZmJl(NFzdfsxyMMXP*WUKsJ-LRxQ(EQ{<^QJVO`;4Fqpl!E4w0k4@WR^RF16=~*B&1+K?nO5x9r#%E?y(Danrb{?r0(}`V4R@e -z58O*pA$r1SKdaPJd957j8;o>-(3TE~9g(5>5IzmS71RfKkXLSn(7(Bi^(KWzo=oa> -zCMBp{Mt3yQ_y!&}qZyzK$8V_;yWx-;EL6_R-|i$_wZQlRJDwiMzvI6@e+dSMGH;Gn -zLx!%VMHAdW10vr|sh)D=PIv!JI9$xiVSj=P8bt4S(qyY}BuGeXoY*KwcOvLKlq&#e -zc?aoynpiH;EjETCRwRYUXi;3B=JA7MRqY&mgVhhbHbrJeeB)+?@7&pGDhI|>6=y>q -zf1og;H4xBL!^O3sKz9#~wy-wX#N=L8T3L=_)&RChg-YY1G$y-d`HjXm)Y^m0^`Q}S -z$n=uk9Pi~Y{=&uWU>)EiNh=RVk~p6|o(okv*n;z>ZHnmXV8l)!pH*?&q^*&*QrPh- -z`DgyuG8}_ewm6`WBz4&9i$)=xj$8ef640^ -z!jnAAjkflgVcVfGb7vHnh~D`AIK(22Y*=S2AkKu+l60v6ccAxtAPd3QXtw|kS^dek -zM|!+P?@Gzhdta^Aqsw^lHOU;B}W`+Rb#bT@Ip2mSTc~dLIpqjp=59$et#PC -zgwAgpkk4Z)f)fhU!71Vd>4tfa#@EC|_NWx7VH+7^N1&y!dJ7;j-EDISv9QFNn-hj0 -zb8%{mpdbRE740jh*R{Bl7H=^~{_h5!ReSaM083xd_}v5&hsvZi`fgc!Pd~IatqFh} -z7+4AWD)cM@1Y#4_;M>OeJalve>EfXcld#lp4T;Z9db&Mu%6EhDE{c44c4!@AqV;9e^rQ??06l-Z{tyPqnFMzvxd*PiHl`5~EpVlTILj -zP~JjwoPo&5JrWimg~;lxFGa#tuBe462|6?%vp1qWDmYlHOGM@*mO>SQ&@d~*NaXzK -z4|88=jRV@}9=LX -zyI}D0mul+RNs1rxsqiOmSwv=kLd=h2Ei@Cq5QEO*wOHg|{;NS~h^{1ZYEuBJht -zkyivjNoLOx$8KBjqiWIx=@4T5iZnkPtKA9zksRWMzwAz$y9w?zsOr@-bP8LF>XIA& -zw_9a3Y1c1d)tJcR{b9fn@%_7iR83?*t)gQ%+=hRbNIo@7WQ6N-f7K)QOwRy12IZH4 -z9#|RRQXQaua~J*$5-zJt?MLX;WmJ2aRnvuB%3O;@0HJ+WVUAYu#JSO&7Ees*y1IE) -zgc{9)E;XwIm$x4Juvm!jSV;zwG_3*XinsW0jPyT%9%2f~4sbbcB*%>joir-c2b;yZ7IKJBZpffws^nmL(+U^Y@P*@KZW5v+%>< -zW!~vbkg(1sL%$*J*l^R(oBHRI`vI(81SMA^h28HQ;)CU`yivowMy!r(+xkG_SxX!F -zUFQN=UVfNqJ6Au!@ZA7pp#V1={rfKXtYj+*qopQ~Tfk4Dc1HNa -z-I9sbpr%k3-=D3Rt?Lw7A}0bRB^Tw|3fM|OVx&FC**>9kzNah`bFRa)or7h-o#UVq -zy@fYF-dwLD!3}-oR{2;axPo2Dumb#%A5W*=5&8UMKmu$=B0&7JpwO>C19k5r+#l}g -zeEU=29?W;ga-Xc3e)GN+C(3sxDk?Yv|Lq4^+D|gl#QHkjW73YMDs=BZ_1goPD^Z5) -zVPcSQ#(gK>;OQJ|?9a$WB?GCK`Y8k!TMr0x`~e%2bSaRt>}4K6Wlto(aZT6tpFA-L2RMo -zbQb`M8%A=b+Y)HBbU~50B=8}iOwpo^wPZ=tFX2B5aYiDjqn%GXM7T?2)YV9ia`~{; -z?{E;mEP~$dLZKWG^<8Ogk7FwJX*}ENdek2PQAB}|r0H>~13=4`=B5oxmV6b@!fK#k{-qMed3AB;-CQkZ~sCvMSOuVQ|oE!|$TvrxWJl$xW -zhpYSWpZa<~y!d9GX6kk=S8I>idVJsi`sW`r-J*5Y!fF=^BeK+T*`;UFM>}Exqmlq# -zFI*SUd;o2l1ch-KfEIQF=Q#bq#d`Q -znX&%8gNzXk1SZWGM~>9#@{^)cW<_T4(ujA=g72mkt2kU7>I{pT)dy#GNAkG4HAa2^ -zqd*+6a3URp4ZmxsbB`%TIi1gA=ipcXWSel`JOC&EV?$a+G04daX1+mGW69ece=@HM -zZt3X&xk36K+ut4q<;qPk_Ql+nX|RB`OC7AzWXp-5)r$GZ4Z^X3AR@PW1MY~L6pP?F -zZ$NG&zov$4E1U3K)m$xPf&a>I@`kmx%;sa$uA*W8 -z+U$u$_C4x7=ocRKS?S7i>6?4J|F$RkE6xb%q~dh8JbG9Tqntyx_tOX_zuw;q5%>P% -zkvmhqM*k&#kPQfnlog^qTs8gmk9`)HiCdHC0}Z5ynq&r$$@Ax>3ZSYt+Bt_YX+9>a -z4*Jpv?qf6`y4rpgh{EyfWpUsuD8k1a%Qua`nm$=kL!5z|PkI;cztV>W%2Usmn|mxx -zy1=^zEbB_Pz%WUf6|#>HTXTzApu>J2?VbxR*GKy`s)QTBRtQa#*n&Zn53B=&e%~-Fv24=Ikne##wQW*XNcFTt)=KR$lg3vISZ*Bd{D -zavju%R&Ui=tsib!~8to!L4?|N~%=b5nr2m6*DV4}J&{&zY*eu6B? -z9fMaF>+$~2bwuV@Nmw4g{*mwP_aEO)kK;(YA|7#&GwI(pCg$UxAH%Xw_5;6$FI~uw -zwo9^O>H1$k>w(Q0IkUJ8Vw4X_U{`$+7 -zG*2h(ou9w#Sxv}r^Cj6S$STEI9~nZde6sp+6?h5Hy^u!5%GImTJNQ{>f{zanf3OiF -zpZ>P>sT9DxZ!Vh-Bj}k6YDS<`iNVx#$Mc|)IyA|e!4`S{uJRb>a#?_e(lKrG;L2Pf -zy|ES{h6LlX>Q-8v!#r*xE&BqAEYD!9I$i6t9!E75ydrG!|()zn}yT -zv+~lqIFkizEwSX_B9uz*RGl`Yh9(lWP5*E=soe&1Hn~cfmD64njoyi7!uJI3AfdDg}T0B`x;bGFEF69pM`w>|+(0yh_h6voKRbU+VBrJo%l&_NKF -zQs^X($#T$RkVs`0YB08JZ_wdVdw~)ZE8o8soHA9g_9Y1}JDL9M)M(N0?#cS7`NqK8 -z4E#Jq0RiFP36un1ws-iyF0`7{^BnUbBYsE0E^1g*j0D;q1Kabj1bpJ0jB$L(cKu&# -zCE~P(6rFni$S4Br*+p3~D7;$zvBmu+v|D^P;EAS}DV_9idTR9SS?nL#VBH0BbwT*6#7l^0oZY5zR+T^%c$gcCrH!f=h@bJ#pr -zx3iPaf88Nxti)y@lj4+|2W>%f!w`;{N0EZ0n|AH*uIEYtT)#1Nmxbo0ll!eV0mb1| -zB+A15@bS(vwBrKjm9ybS{=i*V;-X41Rf#KW)$EdX;DssC466_zGt2T+wA>Dw2TqqV -zA{~n9H6nv_bEf&B<=-B&DO662fhX2Y3zyhg*(nm&8;6D@Cj(Fyjpf)vOmSGGH-M;x -z>hPMgPpJ&@@il1QN~h=9a9LnV`Jvv+TSi9 -z;QO)F;3}_B?58ngOMH{qMXfqhoi6^kMhxNHz -zr~-XwwBNZj-0i$C@0>$b`Ee?O0CHowP!)j0$Wyw9E7`!f$!ZUZTt==QO{NudT0^R_ -zcTRENZe%tDK(Otk7Nz@JQA?9dGJ0Ax9jH0r(4=l1azJSZS>BV`Az30co@puQWeGJe -z?g@#uuGgx5%hGR5MN98hDfVoVkdo=+uF-t%E)!u{(V9xBq{=gCDJd^4nmgub_Hc=_ -z+IZ!^k&grlh1`;!8|bx2PRaT)Xyx;iRMt{lT$A$zHVVL!isub%v|h&RHkJK1UljOxdCa@!FUB?t8Yb~6X4 -zQ8@b~GvX=49M9u0@b@q$`hp9r)+&&X6758b5~Oo_3NFzDG6h5@S%MHi@dRrgyw8+s@)SPt?TtVUNGPA-^%z?Rw`8Xl?q^O*=$ -z>S#Q6!cmC5V{eR+J+;ywHnl#4-_i*i$O4|0Ej-ZW9!&j`O|Mi2f*7o7n0|05$q(Ss -z!HFv95b(EpYI*8B+oi_k#Lc1DPbXt28}6`4gA0(r$~1fxy1xK7s`D*rLk*%fNWU22 -zX8ujUa<8sPQ!n29sXk8C%9at7t42?l%#KU{g7dTC3$VgL+e~DuieHRFEnCc8s~w7c -zxT}MH4)rzapa>svy&g4ponCJbj=}ZBVx*Fc=7x#|S~?1@ULWfQsft2YcOD8N_#nZ( -zN9&huA(?2!%--O70ZQvL+B0dLDKrTUhHD4kbV5gITVfKpuvm{0W1E2=L#J34QxgHb -zFrfr%os&%pBk?8)F#R^;Z`^h#E&W`&)qBNCLB&1UbzE|Lfq{XUFb)~$=GU)WFtdbx -zHCTj&ghBJ;FV)KAP<2>{{H!u%(iE6=MeHjwhKym0#GTuvh$bGJm0F^`IMQd@4~z@v9c&hz3O6w -zpP#Kv`fA1-E&J6OUp~}YjfLFw?bC3rI9W}K+5@#4z7V&BGXE%9TfRa5rVduni*!c~3OkztKP6Q3}ltwt8~YMrZ?{6`}y!IL!|`U#o3HjvNobd1RA -z7|?~>9lC%cWjU-g=k%T{KyIImnH2A*SX+mK`HLbC#`AWtJ)_otRH#s1I~12RK;)5* -zq1AI?n{6e@lP0()7G`3Y93(q7lq&4$9~GTQ#cy7a+dEKJkQ0J>Y`(s=hn_64R9uk~ -zpmRQHpIeF8_y6V?pQf)%qu%rX?Th0Pk6%Wy?3 -zI4IAS%liv9k_!2Ga=P?g(Ca0$7|oCqF9Mp<5ry<7m2{yjd(?0Ye`x@z+%pV*YrSD4 -z3a?Ic+%?X}6oC7JpaX0ql3k=Eu*kb_{70&^N9c)vi`z|()!&$Q#c6h!_7-aLvaMUg -z>&XzeEA2auf&oGc6v3n#3>e=@S5F7VL@fv2j;aZFnTr8tSok60Kc)!o(H)CM5P_ME -zZ*tJHg@f)i$^Eke2*G-Le@K6b@}g~8+(KUd?UCq9nNepct*zyl7HjY2+Y%%%Mtqk- -zN#GVIX5$^@cdWk@FdCo(K}j@|9OPQVj;SoUU^n%R!WsH9Udv;LvXJ>ZrIeVa&0?7( -z#FXhgGRliU%y4^_nHyHu*P$dtArp$YEfDg;m*O##)s{sR+SKTgNg+lC?!<=ozSBEI -znHfsEpBgSfEWM302OiMhy$AOtZT`;~>3;?(B)ya5ok&NFyK@kZ@3C^#Dfl&ffRgE1 -zI}3QpB7z4KQLeD`PFm;4cPCSC1xE9UUt!2Gz-rUqsNt0f`cnJlK-?l5Gu8-bB{RB3 -zi*kj|Qr$P^KA}@_-lRaRVe|jr%)+{e39eu(f}pFDv3^BBb#ueGQ-c+QCpD -zvk-5O`zB)@`QpO;ylt}D1lSH*j-UItlyZtFdBP>5l-inEvnuHX>^>QI_2*H14^ -zTnoxrexPN8UIW)(V~Wt2qY($;=#=VFSr;c7z?i+gjhp9^Ij%2pqdT|YZW&b%HK@Ir -z9;o0k2ZdW1q+q#@3bg4S3Tw|flPEm2R_vmd5!9;Y7T~BRf=m~_oZ7m2=BGby`+<(m -z7RnL=w26ZgMn-M?gzA(dF!=D>IqBZHuoS)Gc_VN-2qXzt~sAQ19JDGrg -zGkP#ViO{JTAC-F#jD3>4Qgp+Lws)xcO+0KK%v(a%&X%!(vY<0S$f9V6^x>_I-~)5h -zL-E$cwB`C=hL7K^FdA`SX16~aw;!b7)K4ajxxE8Cx3bDmvb%=2r}D4W^SArjYtRRF -zN&MS{8KXb|&N*R1{{GU+*~xQ3A#KVBY6BTk5tVdsw7MWfdyM^4M=QYvU^%*D=g#zM9ypR&6^4pf!NnNVhp?fSQACB-F{su|fk#VsnoH-wxnX^4B@v -zB!iMfUqaG)Gm^)dZaNXyF3xXIMC+z;kk}nlq2|Q=3z6doHOS(aXhPG!4pm_rxGRO>td1 -zHGU_5CoA{8FHpF40>bq@{_iH(!yAG^YRnEWuS|YZv=NQY^Z} -zqD7b)`$uDqy3bhVweE{sb!cWsZGj(^4)m>`wVMTiv9si3g=l$mfTutMWd>&%I%<6j>Kwx0|nQVPf9cU;oOnvf?n%xn~ -z7D_R7d}&K7n73gi^36ksR^x8W@!+c2NPvr%bd2Otj7f%!?zYlyK-cL__bTuT$*IQv -z>7<_v)m?JkPF5LcNk{{mPriF@aIk|7Kzub1CD -zX8NB%2GNrqtL7#>8M}c~;yhVgFwhj;f^5eP3G1<^i9mV2`lX0GF44}!#P44FL*>>N -z)HUDZyiL|GH+V4YXgdKpQ=?_T=Of-p#IKF-W>y5GtH{33#CWO2dOE&MUForKuYG}y -z%0G6yLzCTTeX>iXx4VWU7`{YN+3=4VDi8Z!i4H>W*@vXU*(FO&IKfa?Or_3q>~a*P@I -z{@N?Tm86cQQei0n7yBJ-Ty3)(tU{slyEGco48!-*Xxp$S(pmL3eLk;5(bX1x{hW3u>eMWf9BTAlNVu~$V7xYM3?s)#9% -zijwY?$QnT`17f3mbcyahL|3XoV0fP_^2pq~^y_eQlM_~WGYDh8hM7Mp;zu|y`sSJ=SoEl@QGwZaM5%bw|r`ODx=kx5^ik -z8Sw44{h`i=qGU*zsGeu>m^H-3f1^(hp%)LKE0Hor^5Rr;t^iUAj#bR0ARN{}Vo(7c -zq4SR=1ol}!(E!Hy<&6L@afg}4w^CM`@8Z@<$O#Q5C`C6`Zg2Dp5|~B;jt`oFmG%TD(T766kWWK_RmQiIj*a!yh72)ZHZ)a10KG(n*4}tsOcn)Y7&&sBkxjBdCB!;A5I&}$8R9q>Ch><6_hzj=X3$lW!gS6 -z7vGMU9L)$jwkyg}JJ>5g*8wi!Jpd{M6{{RTB)wB71nK5hqnOCHDp{Q^LyoaF0n7M` -zq}p9MoC?h$Lyx@Cj<=Pl^`Dzrt*tj9cFW78mtX -zYSGh~pHT}z8PJ&1SSpXh%-KxyIi4s1G&p~lLx{5#mA!&(J58yixB)!KVr9u&FbXR` -zXws&$YC%RtXoJTlWA$x~pAXt=2w@#&(FqAL*841ffITa7dRhr*$)Z&I# -zw6r?`O;P(|T1YppR!_j4Wdh_3#03~myRXO@Lb8ty)1>7&Zx{__3!rhW)RLhmp(u|8 -zHYB-TpJ-rSlWoMtr?zf#rrFXuzkj2;wg4EGy06f1#{!U|_Q?NePY`!pMkXUGs&IF7 -zj>#?1At?4o<<>4TH)1`W%cj;Uy~gIjNmZm+ -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 -zjSnkbc3yLD~BFTnOwY~ja-*w -zY^?Z|juDo(_rDjM^la)eR$RG6q~fu>bs6DyxN;<6`SOuGJ;xOCpkXY|<5ay;~J)XEp#Q;ow^Yzvx%x9jy; -zL_tdGp|K6fp|2&tYLXV^@~B{V|NiT@4y@Iw;@>&^uzI2gmUObV1ks*ks(?Mwz=ulCBaoxySQG=|ONB#vm#`B^k -zfd70+8E*v(>&1G|cT<=_UA<>;L>ZwoPQHmen;omw-3v!+{xaF5 -z$ocupTJ0iDWi2Iwatta?w(XOquutYEt(WS+)vfD2lDO%#N*#P8%}Rb>vrV&&fDgT7 -zQDqf};5WUaQG4`7?U_0H;(W-5Y$_OF6xl{dsb05i_h1yEJxjQ96ikLCT7<)|GH -z%VF!uT354Q#%8i0b*1+R_pGYQvXY?T6=m32IAMpvD6du3=GW3YCT6>c(4H9uN(Z=i -zcSp~eexOduxzrj6tCh~E{CT^)Ssg1|qaYL3z -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 -zo#eL`SVBw)ZB#b60#@%B9j*j^wk~(7?+$1 -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 -z-MhSPFGj$>M`Ywb+godsJN^urt%odyKl -zoufAbDVm~{TO~1Wq0A4}T@&s5`6_j6wfw>_l$(9{y -zD}ir#q2(F5UgRyHY$d2G_JFjyC%36>p_1On`U#fY#kR}GY_sK7i#R_se7{;lb>1N$ -zX(FwjAia1u|vm5cw18ue#S%9PcZ)&K1D$RBS{} -zKy$szF-xnaMV9IwRgtk^%Hie?iMH@>-UNnI%Uqbm?BnRPp#@k9OvIL+K;p!B3}=nE -za<{ZA`CcF45%4xN>o-JT+mj)riMd6PBw{{}KoxpUfnVjKK|ip5;X#q>;E -zPjSho@{1GrwuIxIA%6B7qhzY9s1U_MdSfqfcHvW12dOBwWZ6Q34PA&j@q^yr1(O+i -z%s&s6wy50ddeco@!Ao~|K%HBPVP$ZDNqV~kLB@oj#1YX)hwIyNMRC`J){3$>nSt49 -z`Eeu~99p_2N$GnF_VyWr8v=%0!~#|P|7YyovLwZ|ZNdNQMg52Q2=|D{%;>=Vy=@R6 -zK+Z!X4>QMFUu&+1BrLMV*yHSz;m9xygtXpkPV&c}Qu!`>78~LU`NR=iV_kS~m&GN5 -zI!z^H4Lsq~FnxEoc@#qIC)N-70Z7Qf<8!**MmA$%>6Vlsq&zwcS|S#EXnXI-A_2Tj -zSS(0{fk7KJ0AP(>=ZD?W7SLcmXT8XUQp{c|4eV(5uo6Vt{H|TYV3iUh+1xZ=DA~W4 -zA$*NTS<@U}CmwZ==pneT)IJG&Z@prlV5^{uAONA$OYcRv0wMZWdgrE)`K?JE1qKd~ -z#2=Bk%Ra-N(l6>ju%+**A -z##IFrt4<l3ZPh$o5*B#;i;uz!=BIub~kHE -zbgt^#hde^H{i7RyZuC=E)qlwX0?Q~!1NQ=|@zG8qIv>rdecfwaS*~?|t46_*O*3>Fq$J~EhZ~FRk3?;I8vtkZ5HQoTXfHgpF2lzAjNJUpswjnz51>S|rK(k?>?b}>PMD~BO#{k_B -zCbrG3ZS6?gj7y^5Y6B2D=Gz4&oHh?5NR?w#YJY!$SOd27>GfXadXP_`QcYp83vl;N -z>YRgYMQ=^LCqIGIN4Cnzgg -z{G*xeqI!ADq}4Gr_w1gN&;Ij=F8|@tDS%o(zW*(!#IN@sc8}zV#V^@!|Gxidqb5yz -zeMv*B=E=~iMf#ZiVwd?j)aiy#hyVq&vuEj5PXD+@$un)sG*)_4U%; -zc}x!*P0wHjoQyxb{j@DX@7{Wn;i6kHrRs@dneoycjFzk&^J~z+5&unkl5F;`JkYfE -z!alw$OtVVU`;pJm4DEFO)`{g&v`LgT=I39(bbIOXPo;^DUGa+(`NU>M=sg9CB=WI> -zJQV|AWSjG`k;)X;Xi&>(sH^lS>MZkT*L(Usf7-kG1%(oP7mG_5dtIIp@IjR;Zm+y_ -zIb%Ff6k7q0DCI!c2pIT1l0Rm=m{q6Zbb9LYrKKUpq{?F3&kH)kX_D;94+Z4oK#TR+ -zR_&zk=KH(lP+=wX7L1nO!W8jP3A>rnwR2gsU-8D+)?R%egH6N69G1*s`_CjwYLXuE -zz-mRT2ePL{z|{ -zwQSqLwgLa$DijECSlAi=LlAN|1dJ<2dt;MQ_aqr(TiBI*K}*UwlqUL%T+(Bf4km4^ -zMzKCJqY_M)2fyc-v&D;~OG4rGCs$|pCG~YA6O`dTr&KFfAqHiTKQ!qjK0tAc4-afB -zqnwjju;PwJx}}&aUFk06Z|*wc+Cu(X3SVq7YB9LXOO?7P@yg;7cB{oB_ptL8Ns7CX -z(MnS{tU`#do60=UKuSjo7iOfR`dJ*H5-=V3tvCqfcb2id-1tqp-BP~{_v@w4H_x}a -z3G52F3srcclpbpJt5ThXCHiSVpj(d)XWgJ+HBYC_FmwR?W$%k|&6+A$4u)RIzMsE7 -z>_dKG#m8vc0@$HNIAqhoQyYu*IeHY)?jXKd>0Ov7+yRwMLEBM>qJ~X~qI5pp7?(L{ -zLq2&;V3qt+LddIF{5yA!_&syF(*1sx$Mbonh8vKsjetlEdkQEIGc$77=^Nmf4T5n# -z8Gd)Ye0(6UX9wuD)9T-v*4ztaMHNj|wlQy*u;;(E`6v&NU@rDY6BDC$J?I&UZqGnlqUzr%Ek(c6F)^aQ4^M -z+F#XdwR@T;1&cs|W#^t{=p5jSBM9h0z*YFHmHXNO%~Zf(b2io>N{e{3G1^`6AN5Dn -z)Gl!-U@e3i1hE$zSqiKRNPNY+FUofewmFe^ZOGNcE6tD&kg!}3W53ZOg34ctp -zfVSq08>#$;2g29gnR#fpNAE{Hfq&q!|~>_eFRD$ -z+HED{VcU!stZMDYDQJLX+OrA5FGv0=kZ3t)#tarGBJUbb^+H!Jhfbk{hqTN=Few1uer%I8hm575|B`-Gg1*jUEClo>`m<0 -zp_BJU#)#O)h$G8K?;qJ`S`{>Q*cuD?-o>!-`WA -zS->j?!TBczBduKkTpWfQbuV3GxEnKkA9;;nj}qp<*LyJDhu0Fo7kpv{(Jyf6AGLv_ -zb4Pp**tqcqsuelVtp;&mWOX`lbUjk9WS5mc%0Hmkff`rn7{vb@}G`l>>z4f)2eSIkqtZ$pzsOwYR<7Hm#Dcj`{@swZ-Ey`Uz^8 -zQ6rF%MPJ?}LzfM&Z06`7YEed+zsC!&yom%+D1=p|BnhO&YWIS9i>l(QxSUwfXQ)yE -zhy4?GnDLU!vy6wp7XYfro}{Plxqc>Qn9}u_0~&B^3gi|YCCbFRxHOywbJ-0si%!fJ^PrH_NNUiYN$&P -z>c_rm`jl=?EXDU9CDpC$ -zJirMzSJsd7;qS2|B<1LJ7Eh@An4>jmWfrK!=Qhx0M~=^GkA(^6VvQJckla>HmH`5o -z=E##J?HiIfnOgOSq#(p2?+;o3vD)lIVzfoipkT9FdN9x@=A^>n{zWalNP9!hO -zo;~gR*M7ZO$vKLsX(ZQSu^qO#+U`|Wuhp-gD;a8_gY7Q>nO2^(xfzwBu>#Jce0>ej -zk>z@osg|47_@CQ`NtGzOi7fDvi?4+W(v6@J9l%ao210^4r{|)c8!#UFB15}Z$E0W& -ziqF|+I=ZXtf`;K~v*-gbzqE@`1a905Ujg|ta$?DLk-Lafm+PZb9D*;IV-$Q?tuec7 -z+&!s1I%O=D##7}mCUA6B5}F*^vQi0+J~3>~g^P|>I9c_Y8RLMq)}q@^2FSG97LU5t -ztA}|=fY|&+;8zu3dDHp!#c3?fi%H#?$o)Se$~>P8K_0Y1gRFd1tgM=p_mw-Qt+aQA -zl3CvJY7Ir!-oZ7B++I;6AMVj33CLv*Gk>n-8q$ho_hE;Pe+}9Mrmwk_T*ToDf3pY{ -zicSGN{&*-D&bjz9Fust?hAQV|l_cwWcSdW58vXnC+-6mw9A6gUDHNB8ta3D -zDIf?;P?&-=nj45|3o>p33_6+zwvnarMDn8Hsrt`y=W&$M)S|onvpI6H3IhM7)4}DO -z$q@Fbn>^h&yRPJ4wH)Ia-PWUUkI72vj5NYZ5a5b;1*oZE{F8PdH~wE)fehQ-DiW58 -zxR|jhQ5CASSoSPjJS0Y`E+X{GsAfRpf30}}G`=C&>ZPPRS9$uPOJLze6#(Gc93ZNX# -z31~sKYElD`+ERV~%cv?mu4A#|oP&xy^Bbb)iK_6LGFjVnt?-Z1qvOCNF9Jv`PJpe5k+%cDI|*hb8l#kw|LA -z`qyVIaB46GBHQ+R(J3kS0?h4BSL6!+bc!hee3J6tbMKSk2#lT^a;=j7I@&NknF#f& -z9wX`iy)}{|?p&r&=$QO|w`yBxx`^XiD8S+O;g65PGtMuAnsiIYWtt@o0x}wQq``;S -zxQ1BiUM#moj@N8sB|p{mdrNxCG6^Kv(9^Jt(%EIAC*Ahn_LYo9|8j5d*W;I8V#71t -zMW%hfe(A4|msi9+_PPt^&fPwv@~F`aaakMm7a&*{TI!dVuN~u39w_Z>i1b)cTh*f* -zy{bKq!?~M|YmgGX$UAKmgaI|lQwNfjnyn@oy5tD+?7#NT&o@SGF{|jsYn)l4co>`I -zCvNOewRUSsuUe5qjdV_p;2^-P87Jn?k7oIRpAryqNSq!M5-4vHKF4=+56TWAiN<<| -zVM@Mj0EDYf{zspxab&Ma#$qiB;slwlNtK(@%84Le21-J{y*WYF*>PsmWNktgiwA#W -zrb)62$k0U5qJBc5FHI^MVf?vuc(y2Q_1S-@e27u7nY-yn;cD)a4t`no(&si=F@Q_KL+E~2X&U-wqTZ|96 -zO`1{sJgg9C -z1emBbV_$aOCLWCy+wDphZ8^%_Zj*T-cG}N3uzjF%KHM!j%Nq_*n6iQ%cRyakScvi{qibSkhl3x6_7qh_B>LiqUO0D{uMD~&dp -zHGaw2vmPityvK1*?JV%Ct#D#>?Os;%Ga@(VmtfXgjqGT^vAzUX;bvP-Eu)16PN|{X -zkLbM*mXUg(m*im-O3c_x*WreKRN5AP|9B|_=N3WkFxHttgCE>vdFMc35)CE10787b -z@b$VRo-^5u)D7G@C;?b;6tc3rsx}?}O>Sf6R>Xay0dYDy+6(FjbTKvCk&`+`^VtuE -zetc}GNmYX*($wmN^1%OX$SO16Nji!;D;7Ec(FaULzu(Aa0*?mr^2np_usU0YqC|(k -z2^OS1Q4*}gp=;;>===tk{b9L-^QjL<+xe#DyaKvT{zP+{8Az|eIOtX=#-hlMxxxwu -z5NVx)^gyarib7<1ev#~YL;^LDBijTvi8hk^?rt+l>0GZ$W-Ndwp22dkqQ5J*`3Bnz -zYfri`h$X -z3*hFQnSgb#+0MPUF2K1gnzheZ2BR$T%F88<8rp)54cPb`uipCgNLh5|S(>}9Prt1a&V5hI6BTEj*v4?L;<}TwZV}0WUYi$iA~`T!SR=P6nJ@<2>&_jD -zK;34Qs^^Y~hv6jHrpZw}6^p$KhnlgCy7`W<+gdSs6A26snUFuVLdJ`iiQJLZIuaCzl-27Y?u%ahTAaabxx6-XV1vv&^D*)~v~3$fJ*F{o&;YxqCKMa;M#`Nv -z+q%$#XJlv{LynIub^OD_q9SV`)o@Vbc4b@0JoSpHSa3qD5&0=#=#`}p+&PEE3IQ)z -zRdz!UlEJP04K1IfP@2e8kHB^Gbk&@~bN7PHAVmT5&<8?`CFG(o*BF0`pc$1{a6mX% -z^GM}qZNTAnqyr6NTbV+vd$oCr!FYm9uONK~kX`<%?97n}O6Kw+uq#0H0-&i0S2Th7 -zaWk}5F)G~r75skcFUw|TJk_s!7ok$>JqF+mCu|w!k>MXh!!1(q?qs3kS`TZNh6zubSoBxoM4|mN4{N|JMv3tK2`{9=YU%MJi1(`I|)xKPN>FD|y -zH^87{NTEOUWE#jJLh^H`!X-p=7TK8(Hp%TS2GVqV<&j%R1+GHbw4ikzebTzBQmxlI -zzM$zqPUzYJdERrb9b*OAD13Dq<3=xgw_Nh$%Ez0!uGpOTCmHm;|aG<#d -zwMq!o(_U{5K?LBNp4sEzj2?Mv#Wl%TL4Mr!vO_^-IHuwZ8XYeD^AISDeBBvlACLpz9Mpnyj(ceJ%sQpnwjeKg7iyToZ%t4qe)DrmKSSlJQ^Smwg{+{*NH$w{ -zu3LP8W4hAykH!_V2A`#pwQXuAxe}MLP3a!1`sbJadM#^BK||{Q*lJa+3Q+tj{mEKu -zbxj-#nb>yFf|(MOB(z_t3-{f%mdiqkEbvc4A_nB5S@MM&b7^RR_EPzv0rcRcdKA_c -zHMa2%0l?UsTN>0YmS;`Iz9fWOO%FxGq`x-u#i#13v}x4Paj+B6yA&>Qt15o^^+vKq -z&-wzwbC|wk>sI6pXmJbiYum41SjqLjl$p}NQ3#O=XqNdFj;_mTSQMSo -z{Q%doxr`LaYK%xPa9N1jk+o*vST(9tp2cQ>k{Cx<-~6~<2Hd{=c~-su_2*#mgf>)Y -zhZ_8}$idqYn(;4R0ay56VqEdx%8o-)8j!owbfnxq#%zvRRk2a-<{N!4$tXDyW96;l -zIISh_=GM3zx>-5q=F%|7cP?Ls7jgHiIsQDdEobxcBr6L$=IdkfW9?w4adJy@ErvDv -zU?Uax1dN>da=ne_)8+mO$841Renr8lXfH_7=MRD -zxYz6P^l9j`CG41(*FYUU9X%-dOjCv+@NbY#v^)l6kCYy@!c?$s*QvH4YnArYnM5%lMs -zgSf@5qWEd+U5j$YF(lWK#+M~{UCBv1a9=v78zlxoN6Z8yM@Z?Easf^`u;)r0nFe2{ -z6FV>8^m_l}^RE}NygqNZ0dGgeZ|vmK_2u!`-xrZXYpz_|NQh5DMPH7znhGd}CfCi^ -zukECF^!Tf=FYB*gQchr>{hgl##S_KPH@CvEB*~lXc?m?|u5Qd;tJx@+Ipx>EmOdkX -zY`@)jzxJHP%+qIM<;!e*>x<>bP`@6Y3G;`_DeXgD9svS&6$%cEp9-ijxs?MRW%T6C -z)X3fZ@xd1&Zkkn)5JOAm2TK?0%t)i75lhODqQK_?a%$@Ggtb(@O%RIHS;-ET1Y|9Gro$SUn^^I_PYb+>P3LcO -zu(BFH#+$ud8-sxXD1xxK@OjoDgtbhT7$OvWAM1%?#Qgbo`}ynp<=!_M=>OHfvlY}F0D-%42~IK3Jo+|m`qzXK -zbkzbf@*n0l;>53O+A{=()Ytn`50eoC$jaTMrBq?c7|FVn0rfpoFt~3XE_3O@>A;t^ -zh>bM@oUwdn8`CTCvbbD8)=4PV0qRar!F?5W^gc)0SUHSB192^dh71%Iuf+6ki5l47 -zQ(-;iFTKM6hUvTTcDUK(2Ue>jV)< -zVwE1Um@$kLlYql)5|JTI>!cLnGD0F>@f66_1x$1iZf&hHaZ868)h!J%5MJRZ>+lXe -zEKe242VYYzsSU5Iqy5y0p(R)1c6I#!$M;Et|#+R+?RFr@Itf -zOu5eul|q*Z!NA3X=8^J7<=AEnM|u7<-C5iN2^V^m$9m{GVLDtUKC?r9QRViaoT5FZhWNmijDHsI}2Otg&VCcF$z<#~Pv8M7T -zI$SK^DTnKAE02y2Ny3cw+>%?pg(ui9X60&WkM%6C|Ga(weL4Q?a#TcmyAN@`Iugpo -zR_uQ9H1Q{Yy{xkCpKJzn<)s)^cKaxPN{4=wCrw@*p|X4f*up^E0wG`?Apt(v5$%b> -z96`W29-6&Fv-@^QWn4%2fmq9uk-dVxBZe!=Zth#PO`P7i7o8h-tpdg?>qqq`%fKs{a$=gVI -zV{vT%zI>;>9(B9F4y->*i?|~-=wEed2NVKCckF15<4?ygARp1y2 -zd#S9r*L8HH{VkrzrTVX~%VjXekwvF|5}wcTVuf0V>NJ?$hYY;w>WD@{ftlRs|_z`?gz#$b9x -zZpfm|ztp>&u-)#AHJ?K#c=LvNUqsOn;)3G+7vO -zNCp%sUwg$oRLG|uoL=sdy3nClbsMV2(yR<3Q~%+M2M&od^AKi!Iwijngi^4kSLYTb -zoC#yLp6Ku5*TZC#wP9M^CFCOmN@Xp77Yd6OOs7?CVHQBY_Dk_@-9Qce|+Wd*MWa*fSJT>lkfxmTfU(1FJt-1o(lICCcx(< -zg!$PZ_nQ_8N(D?XrfKIv3+|*5uY47Jpx}q;7@&ilYl@|bQBD&v{weMrNFsw`0rH3Q5tU9eH$!V+dRUJ+P5VHb6)l|WrICOhqakB7TpYdu -z1^8s+H+EEhHWm^S9PzGvx5JJ+h288vHS}hG{4QU`o|GbkN9mz{`>WNj>g$gU=+>f! -zgltWuZ*XCc<0xOTa9P*yChGT#K{=2y1^eY?SlS2`u$r3)w -zPdd3z;Fl)0U|3tR`mgE-`{<7)ZXc-b`||^BgxmBgbd-si-8y*wR+tm^1-tgyvrn0e -zi6#?>RinS7wzm8s{lE;W31Q~eSZXa3R=oeoeN`?8cqaF3Tk8Dd3px}{Qu{8lP$LA`DsrfReYXTJLfxdkO+UK5m@^r_-m$bod^w+_j -zrcGSnG(?MtX1Y_3ACy3swPm0*3LUW2Q5(G3*jnlaoD -zmd;+@w0_t<98H*~lRKUM9N>3;Y&AFHUglB{ew9wnba&{J(sl$?MCi$1($q4YZ(*bV -zLbsRi`Q(D7EKsKtrLUc$$4sZ1H;YUC@!Z|MfvX@5Jmv}Yf5qLLqy`EEg;Slqe8%iL -zp}PMz*Owd)Fj6|-Wmcrh`(15>lK1*Qq+t263Ou`r&BQU<_> -zCESTPnvhN7p*4*udj{FiRZ -zAC_VJJbHOkmkQ1KTGce)KQ0U9tZY%n=1fyXf0KoBz68Bu+ul}VRkefS+Al-gD{~#f -z9MaIAC%vA-%N}K~$07+E{RMOOp7c=hMQ$1%OB^kRvs6VeeDU+<&=>fJtpQJ$8wW@_8}V*- -ze$ger*&r7tvnJwfq7LuHLy!Tzd(*6C^gyo>XkqtcpC86W&rM3WW2V96BTY@F&v)M- -z8n0)72V(A0S>FOri8F)>EFpuy$J8C%i8Gmo#auc%#eJrmLCFH3+xxVl-3`m -zeYO5DBVhfjyyRc6-}GKB>KIk*!r&;h`g!ik9$(fugJ)82{F>(YXBLnYp-Fm -z)pu^ZTx)j6xYzUmNBKZ9{Pg9J2Iq@%NR08i%)d#$7R%ehaazc!X3ChtXOy>tgPa2fN{MZ-%}uDX(M(r)=|9G| -z@`Lct@AvO4Xp -z%_DfTfzno{%%}1O{Z(-6%m9QNJGWyHQjKYn>{ -z%u;My8JLRzv`S6p9Hq$gY<&1IkO4k=1_LUf!*fYU4#2n^$w3FX(`M(BbiFYp@~q7E -zR@7Ro(`%h;ad`Q(m>L89AsZ-(IjMBcYmX1}W3C_N24DC0>*3ESTQ%FIUT(XrsBJCN -zbda4do-f0FZtRAH1Ph9`>UH~2j2f6x6MEc?jYPWIsU(F3=~m&E{iU2kB|5F%h2-}E>W862)_g#xmuSpc9D%d(mg&jyRzMH8BC6j3Yet_ -zf>l^da(FWRlr>o2&|g}<1AttB{wf2!(|dIlNjwW3rqSwXI?F8JnDbhD@M9iYK>o64 -zp5`=U$0#XD>q-vGsMTI=TOp42x{lV%?xq`BtUGPML7HcdW9*8Ys5Dq=Cr)nfl*y1U -zt=G`hWx&n|ZK!Xx`93zX_&jia6)%vFHLgs%b9A@d!tTEu=hYdo1-aRK3Ev26AoA?M -z_f{VF(VPlq?W>3K1p22k3(Ur(=CT7UdukdLHMnPt#x!vGY7rGHpgxw~&nqkCX#pt-%+j=<_a2Mk^1TxZtB7ap;O|Z?NJ5Hb -zqKJ>an&JtE170$^U^O7VUvjQ=l)pS%)kRvL+{LR+5HccGt^G|(I2x;-<3(5e^jfy! -z?#Os7{a=6ok~JfTWSQ$>TmbZN!*ksPDptQHA6)9$n3kgWpu`TON%jh~mL_>UhA;i= -zE49$l-zY#*C?Wp4yxYqpZQ0`8cLV<4!L#W$jn!|(ShBFmbgE)?B${eI=DOK@h{#*| -zbnxeEuq`@nkbP=O3 -z=5k*)p8B+W?}0tt;z4wzWAk0E08p5s;IurJ&u5qfae!S>JCc8^BUJel~#EbT0UEF<$S@Wyj@SZ$IAuo@&5CB{uRx4 -z^OLgv7x(_YrylzI{#E|1D&>BR^(7q3$QFe|aetJ5A4_rSgJ#tgw-*%B&80{q;-BoN@H^Grh2{qB`!YOqYLgL`D{o -z;1E{j?^AXHzJW -z=hy9BML7NWm;F^t%J1)!HCtu~o(Vul4Tw8{-Fi6&d`@|6yhoGL_yRqOcBto)0WUyb -z3$So91nynArH*d(wypEL!dOUbz -zjQ1Cu7Ip{x^{3E;vG?#lZx_}k*MycKtwq{*LXJM -zyT87|XN&{)o6s$V8{3{X_PHqo3wV9z -zrd}aJc~_ER&Z!m#A(RX+XXpTr1B -zH-%j)0HzXb<%I&tHEBD>_W06Q2);N{570tn~jBkELivLfkxd)&@V-

f`mc?g6j*njlLml3;G=9S7#Aq -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 -zE^-Jvg%|*WBm3Yp0daweo!k; -z5}_O#TDNYrIxd3tbzo;mNU;q;=jtqwxsS -z_C>?ktUY3y$s{pPW`d -zNC0kdj`+^W=}Rl)Gjgdc{z;bdO{}n6HWN4#LC%M{0_$53gVEw$+;R(*P7gSJx&gcF -ztAGx)F|mp4uKPVdWV&B@W=1SW(z8hz1V -zZdyZBDSnaG?_%Qd!Kk)TnXnMD*|gkBn7DUOYoSP0B4@ax%vl!Ble`i#7u_@3_mQXA -zV7Bs2wtoMTZ9cf=s5xTYA6!t2o~HeQ*iYx>2j7Es_Ekh**g^NrXW+{D^KZhfvA;?~lLm -zHL`)Zkr<96U#8|Q`u_X-KRBc(*tW3X&oE-;lSW%O{Xq+umx(S%+B3&p>@f1Ycx}>m -zIiQ8o>w~Ly_!r18;l+o0!SUi604K1N-tS~@;KgD+lWE8wZvgr6d|Sop1T!1i2E6{b -zyS@&qMS6fTl=kv|?0c->`OgkkKtT2mTx*HFef0y|aP-N)2Ptj%!ckmh`N05|S!{=} -zb9w$9e>`K{%;Kd>&oRUHGkWytiw3dhMAtlLdO3ay5CQy|`CK%m5{iVE;DPKGNQi;R -zD}_|=G@l)AhuI=|BDrmCRW15-ZJ4pmMt2WfGH+Kjafi#P@ -z$L?t@|M=^dbSsXYdwt$^ICy(U>tznZ;6ufghV;X0j0o%QI(5q$CN@gnd`+`GZHKCs -ze)z_C1z7=4>>nuPzat$(%1ww@@af6Ym$Zo{*6AG|YPa&Lgx;eUN@vk)QMKd--OTck -z(^iC|paba`-y!w9#O06(60$GwDD7~>)L`#3!qohF1D1tdH -zLJm1bT3?H&Ibe~9J?ClDLw}R)6=IV8q?AtHR=7lij&Qn9`|uv6-H=~XisZS5uBw4n -z-she+y`_&3$wwy}Rw#)(Zr{hvY{)IxMzogK8gFmrC#R{~7oU<)aGg~Zev%ynM^;M6 -z1^%Hn{yS33(tE(iU)_v#i+^a>1(0?4jooDR9q7*B0LVTXfd|0ul;kBkcLQ?hemLFg -zWZB2N7x63IwPB5lH}Ee^atB9k8^}_JC7?oC{&d40?%0Wg!XvICa-j{|h{ElBCzfg3 -zT7>_e-<}PFT99nR5%459Rr93fMn>b}?kN3@0}6wl->S1glU3cHj9u|08+RQw2KB_x -z9>{0(IAH5vFXazpCfuB(aAb4;(#|vb^Jfv7{Q8|vD6{i8Zj6HH>-{@I=F{}@_NK7yj2cXItmuxRiGtH -zpb%Mb=U(r1F~oBcxU|#dEm=#YuLlfVFwx17)^2O;Li(O(ViEn?~bYdrARHkX1yCb}PozHKMmOPwuatgg+d()0dOeSyBF7X@0 -zOO7h--!OF=b0*Ia5FuoD0Z1D_Ob$0Pk&AaX>O0!H=M8`zSf%1HJ<#?ecCoOM?WqKX -zj9t%WiKv?KOXh4~f=yfN0Od!uZp1H>m5G36lvO2owrO}B1kgX|!NrDck42Nn>g>TlCK1|4txlYw -z=`}Qh7}8AhFCWM)LE~&b9;TCN<&h+XhfWXiC9m~x-@e!cN?U~%4Ycakcuon);BWvF -zbMB(FAEGOtR@(2sf2xcjJ9c!|b-OBnTSq1(65_C2(Z&sa0h=nZyAX1hQ%U5C-?f43 -zr?rBW9pRHLDrBtsWG%UP8%;L5rQ1T2c2;4x0zz6!qRZMk1z#-8qf*RusDUC?R(2+H -z*r#D7JU`(mBGG|0ketao)WjEL53AcLNSq8HzhsNxPekR#o~Gp}-jC|dW#2NP5Baf$ -zf}9%=ka}v5`6H*I$tri`Gi`<$%wnB+64rR5--DUPo2*&EZ>|d#v6mTO -zT!>~^sUaD$RdAZI)Xlg0FkwXwE5P^^ZS+Z22)K~8kxV{bQysGcxK3-5Xqq>_v*p*a -zt5264#dw7w40fx*B#AiODGrlW -z%Jyz=L#kG(LgmWHE%TtGiel^lU?b-B1l*Ahl;Nnw{=&^Jfc6G_ja2-#H6AIxk%8Oz -zHb{7agPVS=!3kAs7LKNF}07=-|0o!$uo!z8wroK@;`}>u}JGTKZ?c)0DX< -z`L27k$%0)#(Eb{#I1yum+rx?W7bsm{kY-VBNVVIkeB_83qSYF(3XO#oW_E -zB6g4*3z{;}@#LBglU4(R4r}0H6NC}q)+)9Hzclc?K7$6MxGx2$n(sf~P`mOCNk#y_ -zabi`49=Y)lkuCuRsD_T}U7*qbkqJ;%@;)C{Kd}c<_f}^Z{OIT&Whr*YB01@U+{)AM -z*P2C>Y#%=-5SPgV0t0I6tT3tW*^&}v?YKfFkP;P3uF(JD_>f)K!}}spo4fl_l0GN< -zdN%)QI>$IY`CVY;>hdI6RneMkKS2%h>DZdBVnq|!a9NIOfQNWI<~>2#^v=pa07rcr -zq|*a+vyW%Ce#DlMcUIECRCuoq>jdn#FKhvIdr-MpCGsabRqGcgI9ZjBtsqaU5 -zTeLgKY{?hr$}kUv2GwogHfLIJaqPoH&X5KQ@5!z~aTW=uPnZ!S{R;g~h>k?zxMR*L -zdPQM|?vt`92)p^)c7R&$*f)SsqeSG(_RQYuE8r?>GAx!nmn`Kj!98U>hQi3{w9)a- -zGFufu$;WD?1Gx-e7;TDNCOLcbdJ$D1iO`U7%iTG;1SR70fq6~7IE`%fN7JG1>f?$Lo*nxhJ|+3HBoa!ho7G6ev%5Ob&rXI7qs -z`I#vhdf@x*99xqL#fCwf6C@o1hRHBFz;eji%(9-HmjWh9*K+~T_;~=O6n{TL4pt#^ -z!!Y41g!sct@>%w?sQR>1vA-AcVAQq!3gmoe^M{=2{qCM56SSKE*_GWHV&uOEA`eRP -zz@Uo=;Q=LEi*eVJ*5z@$Re_wZ5y+9?z2-Zwz0tGG^{60eUkHNs#@|XZM$t7PesbiN -z*&*o>k+1Pq5nZh@ig8kb%{}g-rj&4J)3CcswprV(cD-d88H#G7PdNgEz0N6#O_v#p -z6h@jPGNF{C7JDcRp--RtD*{|*%Rmlp6r&sql3p!7M;V>WuMl0!Yr){8YDV;TA&TlBNregq>@@K -zA&%f$eQ(8>nWV~U^hwlvt|V18!dq5e2n+?cPU?>$sfQYdQXRA&_^IhW)H~%+mp(_! -z5l?Tu1;>mSm!ShodAS9qxO};63|g6Dqf4NMBx~wEmABA-cU^c|$rG4nwlpDe;na2R -z@}Uua9tF5U`91o(MpD_Sw+`BaHrAcY0`Omub(kgY-)>|2N$=Hr?Pk{U%0oGi5UhPoDUlRkc;Q4xQ!K}(Lz -zjj?fND?oEdMVc6f>V_Ye%5ZTfq6yhRcuT+tWX8gxgUUv$LL4O*giWudyo+lmcHDb1Sg;fHA==2m>rx%+Im93_94)KmLQnGq -z?AJM7zK}!(5qILagX$Vnc=}iyj~?7E8tE<2m6x|eU^leZKQKaUx@K&5XvjaT!8fGsV)QgcWS;Ao&Ul~!PTxB{;}9Q@C3FWFmUuf{=&5nn-}DbHpVNxM -z!=!}S8m!flE(xc*WM^J_Phnb3Sh)0-Yt8l^`y3>YLob~aCs~M2N8j9JC%jds{dpr3 -zeg((IdZbT>?sBE!nN9|i>V7?WYQ7DfVe!*=7j^56sHgYX*($0LnPUzDc5 -zXaZwp2sNbjwdS|xxJFso*0(#BJsMNu-N_pccTTKdb^xqA^4eU;^B0Fr(+R9eQ`QC5 -zcT-qtmrFKesw`IU*d}fNoK>}Ur1=on+a)g@CDr%!>rU%P-6j%Nq^lF^zf^=Mo-cy! -zaAG*n;$|_9WQrUVoOYL^E+>Hi46AlN-my{0{p_RqhOmDdwA-=h5Buqis6S}1jC?$Jvz78igS%O*>>f53(?-pru>p)rz{9(@(Ak>t(r&#u0BPtO -zBrzfv5rZmLMmNxZY;Cg9 -zd`J|R#1pyhO*E{7t?ozm@)5&w -zqZv=?XmgM?c~D(aZX_1&oV6+nWPp0}1O5)W>*d?Wo!>gV8WQqx#By?L_en0s=sqVa -zL8odSBd&AT -zio<#Y*xIgPTM{h%W>|tFWc`3bdz=q4#MtS^M5!-=b;XV$U2Au#Ph{kHT`h@9H5Db& -z!mZKxmY>3gf=2VV#fa1up -zh!Mg>B(3(TfDXleH$hF8x?S*NqS%K~cdcn9(3}Tj^@Ka!s<|*W69+B1q3lHGPlbj( -zgp=uZkIjn3M#peSPHIDd!AvgtCP0 -ztKUEV`rD_``1|vFHN3A6|4((7S>c2@fJl3?v21U-<_wQ*AmQ^6-}=+$%7d6>1gTnC4Hb9hnX>>m!SX!+~#tg?L4VldH7S3z~I( -zn+7NvYueOq;x_~o_hS(Nt-H%gHN0^<-57M&BVJREz#e^){JM;R1W!o9at0j!!Q66M -zn$6d&Q$Ri_0V)ThXw(AdLMPYrHwLEYV#vn*5(h*|(0hS=D0XdvGDqQ_b4D~puHcPv -zO;@Fsfmrp=#i4Vf$qh4FmquIW4DGoc)gE?pth|Ex1$$v`>^_8wcG|nfckiJ?C~jT_W$TSKNpz~*Je>bCJrmjBlmD+LrO -zetiEf@Z#>#I45~M#wQX?pZ6ae9z#T@H;pJuIG`bc?EJTx>_`%Gxx8zL8@UTBJ&FeN -z2H-m-uD%8w5BHg!8_93bPtdkYnFkcWHHis{7Ad(+2sn`agKRF>n>|mkP?79}H#Pt= -z1feSEEsa+=uF0Jh0u4i=4>0tHety3T6t#GN0zW7KzeVTSGRLGounQ$7w0x^A4_`zk#A` -zZP?aF=iI2xD)j8yfZ|qF%wlEpLW~iWa77XX#VYphnz)|>7m>!3T%RhMB+xB|Mqfm# -z7%xMW$GD>C8KKMj(5O|RNc3E -zYG8Lv{@9wprD+;k{`P1$kr>0G2^{EobyCeKqU8cn>|`Cgrxbk3y&kNvlAVPlryEq$ -z9*q^PiFVM=(3$0*sBW+asU$7CJ3yfEigPBmQK$a$Gv~?4dqC=W~@~HI5dCLIbA7AHd2Cg~Txe4!G{-AT8VM -zqxGqh^$t9Uo3tOPCjhStf^UR<39w~#n$avUfK@XN!SArsi8j{ -z{Z9d+js{>@Wr3{!WS{998fkkItK16D#8p-j1jhu#K@r`XwqHn!lg1v$6!$+S?WMoZ -zC0O`&t`g;BT2ViXzoJD(D3B-dsWu*~G{9}87+9=^^qaIVoZn=)bJ()Xc4#(CU%#q|dLU+v$x>>H* -zharXyihH)`%Z3R1&R9aSsh~tQFA*8&UX6c8je?dH1~@tM_;J-TLD++anv6d{UHZYBm8iuroIoF{pqU14YXecyPc@ -zZs3}p9Mv$vywrRK*DW=^Icnf|%pDL%&<>B_Ir=;>kyB*GpG^p|5&#zKOcv+LXixi% -zgh{Ho<0d=S@?312Fr)T6#~7nPvvD}NBe8eCI=v0U7og3|Dr&(L5#~X=*A}360)IrC -zJ~pWgHcgU!mz2L}u3p0hoj8$S7+RbTc`2AWIbBNxl$%?Q&KLTx?Bs6I>7 -zgXyfm6KSm$A;qlOL=;)jAwj2ZG?~n)0%~LoSlUff#d4Dqy7M<6;{eVZwm)zn7Kx^i -zHCqLIFoc^a>&l<*xu6$AuTIxOc-=O*ZsZ}176TNGUxgL$XS|(IJ-OP_k6n&sk$OB6 -zO2vd;A#oLw9ft?okWj()bpj0Q3c_ykE$c8%ffUNDU?B^z!u&uwZ)5sT>5PcXr3Rz< -z>3tQ%FA%fLXXauKngg6|CH=$61)=plQ0S9+>{8Fb(iid;E&CcehHXFR2)b_EDO9>~ -zInC=&PGMeLW7O?%l~F40VKc6YDzNydHlSr>LCFe1py5C~Sv5LhzQEOv+@XxEa9g#( -zZ-e9b0j@l2luMBD$c80M`i%eTQT*5bma^i$XU2>QK+5l{mF?hyXXLeo22sG22R?LiSUOEK^Vu6^Ru~ -zr^CuuN#Z#ht`N86;MUB+W;!i9xXJXDcy>_Xj4?=sAx_eh$*_H+84>hSp>NwR-n#yu -zcK-WA{Y>{Tz$Eic2Jf}|dJHU5o}@!b$o8F@jO{=@20Gd`jo+X4HwJQ{94TeR2d=a@|o(;cO7=cBA(> -z6{F&3GWvwpuPi}c0_pjpGxC3__}Lx8#mL4i5qW&IPXD+C>u>+#gT;4qX~N?&#j*4} -z|HtKMKsvSl_^f2<{qu{oOGbbE$G12?`o}P6Es^{9;{#?kl@;+H-=YQJxf-dQcZ|M1 -z51{cHXpnHfJPSv$SlS{UO3Q*=qeVrNwBGh)rUHIfxd1fm1$ql3Q_M{&OLYT2m!8y_eM8d1eS-9n5=Z(pPKary -zWh-DM9okK{0{?gUt{c!D9e4vfzuxF+JD|L2$1u{1q-pq~yI*q@RrV}0_h?{+s8ox_ -zB><`;0Cp7=J302+agh}L18fxfV`h|6|7D=)lgX6jka|T85Qe#EUMJl(%>o#O*nn2* -z&ZMhVX#@}#b23?z=Kxh`S3~CDzZ3RYH~ohpH`2O6y(6q05;8vNPr&)K?x<<`!VXwr -zAnh2mLj)h)T)4>m%_f3&%iSmQYO3bO(!ViTTOVkHRuvQNCjburd}##NCt0M{kFFPkhHLFmp}E9dh6ttAlDl)jCevUj0Dp4K -zH&ko -zM{#V^siV8x>gYr5Q+W-Kpt%L%nKs`gQcPh#%j08j^5K*(xa7&CHPcz^H6H`)|40~{ -z7~(u<{<2U}F`rHz14VW|dbqiquN_{}+-u1jM#w~DwB0oDa7^KskLh`7%}kep@(Pbl -zp8@w95nxTQ79?G4t{JJySZMgA{(FRaxG)W3dnhENt7-uNL%FGDiajH=kO#d1IwzA8 -zopEr1t9x5R%Uh4yDvQX%@7U*KVa~o$@K%9ZJ_`*!o!W+%#gA9~GreaXVtJO(qfsrU -zUj0_K<1NE9cadw}bq8GSiErXc-x9hNj5YX=78KRx-qvO8j}h5PL@LY7(bgK5lsc-- -zgTNwZt3dr)oX~ubYJk(m1@H-IlxD7SbDq<-egBm|Y`>TdoJ9A?J)2wl=)r`D7b0u! -zWp6qm6wat?^!iIOE8Pm5&qy*6L$o41FWy9+;k1 -zbwvZ{3$-{qr>zT@4{$&YNQI3gVe6SowFIvv9}Le}ApeGuDNS?xuoR%gF+rVk(IuGx -zmiaF*rL`f-u+q!M5yU6s;-3xHt>qih&mG-n{e3l3fvPM>+s5&n7I-2+EgsJ(r9J#4 -z5?mnzMiAAxoC=GukZra528=Hws5RtS(QScvqlqFEa%gFmdi_Bn7x3S= -zEs(s_n|*e$mL -zOpO~h$%!6kr%_h2v7X8DA%Q~H6L5Zjht|S6M6l9A*t$l#C385^(nD#mIMvTo899-8 -zIyNd7$%d`_Em-?5KvKo7DcKf*#zB7Qx-y3e>1bNDvb^FVJ*0|^))*?3#G6N}7R0je -z)cMZozBNO*k$NsW)Adg`$rGw^}QunaP;0*M~sP{#Flp){sQ3pwv@x+8@YKPgD -zQDGx3R@8f=VbDYFAy49rGoE7thGpC<2ICN0x;}XwgbvO3X%AJ0QkkGWhshrlbaKsE -zj+#rq?>@KH)F_!SE;1N!T1vMy0DVOrwVIo}0<5|cd4942Ed?O36uRUqRLLV%MjIOc -zNFyOvkm{S}7EKZgu`)w2VaCB>C$CrWf2G^Cv&J)vDCuS=1vM~zUc0kXf#rkj$i#!3|$==+DJa8rW&j_>t{- -z+66&Wb2YQORdFK^q;lU-F6cLa!XxW(4{moiDaYr2tGks7Y-HXe>xN-4C}p1N&c?oCiL91_2kpyqBq*UNy(m8|J0MBAAvrpTCGtR -z@l~JLvk>@@M!Gia9O9Q|Y#ssPd#2wA^98q=Jb035+-SJF<%Y;EFbjCqDRPGOccbc# -zEemO-Ovv5^ToiwmgvF)Dn9Z!3TN<-JEG6FgIP7?NIWSG~t+w)mAiXMF5HWE!K<+Q$ -zsbUGa>3lwdCu2*BK4*6fc!%|{3Dz9T1daO)ZXLJv=>5%_h-spRfY?MXEEGx%6hdiF -z?R-22)bI#Zn9V}up0 -z1b33BMtdj+qy-zjcc-d`X+Z#j#T~-)*%Ar%X@f(_ -zRK`mIr{p#5S_6=Zn+`Bsez=D<*fz&{5vQe;4uU^a<4LHC5B{rtjDX%I -z@5nk9Y27V7Y6!$+NGibU1yFG=P2Hq6Pp7xdlsiUz7Dg@eJN1ZNBY&nGq({HXv(`4a^i5bAjukxZbS} -zH)H@59I2>~Cu^ECa|2Xs?i%jBH>x>6?){qD|&A##%dTIeZ$vngfOe -zFI+505~1dO1C*;c;-|lHs(pZ*tq+7eGjYoXD}iJ-Z6fhKH9v&FtlvQLA`LI#w~>qk -zGyyD~Iru}WUTIsAest*1;OB#1cu7J@(*8QMqJV1;LzG(Z+107y48FZ`-QrJ#QvO6g -zD1Z*hnnTj*;~jtDO#*coHs3uC?rX`L%dTsAjCLb$m2)X;9K~c`$Cpu9`+lp -zpxMl}YGqV{8(DZ{+M_IO;Qfr3e3O78RH$UzdwOZ`8CM@jS_Z}ozzuGre9lHTv=i>` -zp@W+{B*L6~(YHVz-|JZ9WYEpcbY<(|rUf5b^k3MUfA9_b%{f!$DoR=5Zar_g+M=SJ -zKeAQ+t!`LS9%y{>;CQmyP^sX&q7*7pL3Jp@#eGK51(3E|AKJZH!w}m?+5Oqs1QA2l%G{RpbF{(1jsA5LFnIH!g`Y;BTpvvI+GIA4x>AoXnX??n~@Aqg5$STh23yS4Hhcr -za;LlhCfqG%<*+}& -z1r4HiJZZ93xDg~IHco7mqcagS9?B5_l)Qsdkk&d%3$@_zI}RRkk%Tt{BZ2WlOV%okErf;BER>$7<@HpWG>A;CXuwj -z&5WZr62rzjnoIG;cw|L+6)E{(Ju+NV^96enUq|0i6}ir1j>m0@2bX-@B@3tl&FXG{ -z$*yA_YT8dL*0N@`PHt~PA-18nF#_c=_GmHz!ph8hoL>4d-ekj1$0v8h4GD~W9D(FG -zm{|t?Tuf~S*@A<#p>{3s8WIIyAZ5bAH`C5I$i;&h0-Ui_A&q8H=f{;?9IH~V*Z642 -z;;`TqSi^IFoEZ75=it86+=YZ>4$WV|#mrsabHn2f>ho!}Z{{V2#XIo}R3Zg}S -zJjjP?k8QI6Qmz2PnV)C|(e(o$%D?3G4B<)M=i45!ox>jPtFQwDeNZyC55GT+Z9?a_4anuO1;NRL>EQHmf^oyVN8@N>_Igwa -z)Ub<;r6bT%SiJ=gnd7!OgiToD%*_cSkO?@oHBgWM(1P}rQ|nsPNsG4_B;R)fxvIVT -ze1N5|2>fmWaYJR28vVAcxu+jmm(~P84GgS+eHD5Z0RpRuD)4RNTpl{PfpGEAMoC!d -zw}!;$CcWGq_+@w$m4=1U$gz%i48;&veM{{(GCRzH#srRR#zuOlB(v#vonWss)H|xl -zkk4qq464}g94A289LeR7%IJ$^I}^%EDFEblMFu(71H+o&Hik{0zxR7G(GEZqspp?c -z3hx|XgO}RWvtRV5rl+%7T#3)DvPmb9J}6hAIn6*}u80<|aJRx`~E~##@)-vKf0K2W9%eaFJ@YB3kh`hvd7}Ayi~-^W4ZoXVAH)t)d4a -zx(lf}XUy0T-<&hIx6KIa2#jP*NX}T14U_x(jGd2uc3VzB#sFM|WU6mH!&}L+2+OkF -zp2u{9qES*0PK0o8Ofnm2P3=)&)&QDL))Y!pq`?aDLg^5#drKSpd+yFhw8^}_|)FuY3gdbm0CU5$bO -zPr3H*->Zb3L?ZaJ@%p~lB8!s5!UBYRZ;<<^_k(csF=ju!+j<5@(dUt8;go_h+Vg0| -z-gkxUSC%{LPMbSK38K$W4*Us;2v^b|$jB=KU?j8WXk)i6_)#_Kf^-J4enpC(jn(di -z??}$@!e4eL&D{i78vOL?6*`3~MP>1JRDbHZuRs}2^0=0QGde;!uyuiuEAOThpxyg# -zz#Bx}nm}4;1j~{U^!fY85BMpam|6H?kTLIcCWu#OlcC=bb8NU-NG1|Z^gn>li-6>6 -zM6mmv!+WsYl`Cqv*ND@RZCf8mI%`=Yzw2E5%F8bm-_7Th52FIe;{5R|4Tv+%$vp1< -zaUo?#x$B;j!T@m8%Bshh`J9ZE5zJ7>0<>Rs=}`^jrO&T|Mcy#F7M3{kO2t7L5lEeJ -zG3w-*#`${-mDh}lbLYw@7`__- -zEEL#=BY)oomz8WKVX@T2aSPZf)XfNKxLY!r8q^d@;`_4|vvr*!OXNhFq=ceeR{>iI -z2#mDnIMXLI&i9mIVxo0;wsWxTw{sj&qPOto$D8X_B)Flk+$tZ-1Xr*t8BTyd^5f~$ -zJ0gF73`l;>NCJp|78LRoD4_0Lg!{uioo{~%%!B#vSniWG(Qn?j;zarGL^TCR-@pAJ -zOZ!Pinpj__draENRE6&Sr+#}Nb0x}fJxmM?&RFl{8$6w3jr|$9pkyHRQa^>XV(S50 -zjz3^yk}l;lp711u-ey6!d=wWcF~D!07KJ6}$zsyqB{{hAhu9(x(fim4I?>IYzZVQ -zm+&8jHX{+#(axtGB77w>>S`oLxpdfScQ}Aw7C>)zp-m2m_^!0J$1#=pG@fmBJ?amD -zC!#n=QuMgg0f1#oanpt+OTLO{VYSiLn$>UJtug~u86@?ABgRP#Xb^)`Z|O(K1lq`Z -z6DR#gR6XEECR@}cP7VgBtt$&Do^G^`!_|HGPkp@~UVJl8Gj+R`s

#y}j>${qv8R -zZqYhwVYLfw5m{=v -zgkE_oG-hvA!(~KL_G~EG+Z*XI(vDlutXTivLB@y%0()kRBeTrw@{@v6WL!^X>fqGOP#CI -zT+2zI)e8B@4Z^X3A0n@N1Kx<56pP?EZ$NA$zov6?4J|F$RkE6xb% -zq{4KzJbG9Tqntyx_tQuvzuw;q5%>P%k-Jj9M*k&#kPQfPlog>pTs8gmk9`)HeOnXg -z0}Z5ynq&r$#q;N-0-&ll+Bt`@XFevY4EoXt?qf6`y4rpgNW$^!WpUsuD8R=Y%Qua) -znm$=kKb!%ZPkI;cztV>W##7Iin|mxxy1=^zEbB_Pz%WUP6*7+xTXTzApu>J2?Vbz% -z)<^p_s)QTBPzX(v7=lhbpUzw}*|+~3 -zn53B=&KOZnu*d$x$i|g1p?#9^f6vSRBa?Iu{lB`&?m9vA8-?YIBYgs3tljON{^nj^ -z1EDRJ;)gPwH{hpCzv35L()9cvA!?%nZIaH$AH}RpCv89gu0F0y6Xx_oKp`Ld9zWjo -zt0*6ZzLd47m)P$hb2D_oq1wX75B=!Ts0zYaKyMU49eX2ahT35lX~RtY$dW>24=Ikn -ze##wQW*XNcFTt)=KR$lg3vISZ*Bd{Davao;zo$UXUFYl@x>%R&Ui=tsib!~8jQi;v -z?|N~%=b14A2m6*DV4}J&{&zY*eu5y$9fMaF>+$~2bwuV@iB}%K{*mwP_aEO)kK;%? -zA|7#&GwI(pCbr|BAH%Xw_5;6$FI~uwwo9^O>H1$k>w(Q0IkUJ7)w4X_U{`$+7G*2h(ou9w#Sxv}r<0aWC$STEI9~nZde6sp+ -z6?h59y^u!5%GImTJNQ{>f{zaney|ZEpZ>P>skFbmZ!Vh-Bj}e4YDS<;i9ytK$Mc|) -zIW)a#?(avN3J(;Hq39y0P{kh63Y~>Q>sE!#P@>r*I2{m9AEYnN0vBYlD!8_u$s`+eD$#p;y58NTxM3w9AepRp -z<@qK{2fXyCAkkNf96>drEEZ`yzo7gLv+~lmIFkiz?XcwFB9uz*RGl`Yh9(lGP5*E= -zsoMryHn~cf*S@ -zD9E6@^$A!Kc)2K|FcxO6an6JSuLV>b*|wno%pkc60I=-$Vd*lKSCMN39-eF01dzhK -z1uxxytK>};_l-;E$8;M9BGi*HeOPY{NB9y>Gx+V86qihSC%~IPP2nhQPp-hzRaJl& -z0({sz9FkA3>`XOR-V0tV{p=8d3WB(lLMCxcmV+LHL@K*bgQ;bEgASLv3zVN&>Hf9Y -zl<9%BCrR+w$@FKZMhk{_Pu54xHwLa|;N~F;2%}@jHrj -zQNN;MB+&L4*q(nS-4o|zjN?PL>;F7a+hQ=?bU;{M1SBe{#pt&A_22}O9Lvvf%`Z35IQ>8FV76MqdQF_)O-66Ug* -zyvUGC+vln8=~&SmoIr6DdTR`y!{)iFogIAs>kb)Xr8NVY6Q|@mX#1H9hEU8riUcIR -zv}<2?Jy#0a`i|~ -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 -zVE{ -z7HRGV9UKFha#)F -zK*#SweGCdPB|2Bh*{>>s-amdo^Zv_RuK-txt4ua9^kBek@z}U#NX7n|K>90kmoq_4 -zwbwWF&2kDJAZ)Zzd!K9WwnY<2%Yp)VUH6*!QjNz+3wR>Om{2X6KvH4yhFi+1YkL7N -z--nHcxXNt#7r=o@+&kBj3}HZNz5L!W)Bgl2h@SLVH8<(W*bST#=gH!Nfu`sbWIJw1 -z7>_+o1WNPOFGb{WiFPI?e)rlND!0C%ruiP{ZL(gu!Gl#tTM5XS8Z84pAMs8iergdxw7ly! -zVNGrYiWY-pu`0nyxpS~0H}>N8JJ>E#<7KSCARQa-&CaRXI21%(Ts(rE2>bvq2%FL{ -zA7_=Ih=I2bDUL*Cz_g&;!<3L2mviqy$Rj1YA#c|% -zlf`!{nq>Z$%A7}xy()1)oc6R!MMQa2lXS1d)d*l2_!_P13IC6!Em(0?fV64=9;B)V -zeWd8MH+mJp94C!eG1!c^$ozh1)0~6!w1NvV?YGNzq$ -zYOJR=Vu6|*DMmM(_g+#Vh$>MAoW{fonSjAT))b7d|hgiOPdsSUAt8RWNPQx9f{Z6%VnX)`Y -zBuIOPO;8JeQiM4E6=vsTtoj~MxTu{{Yo5;hj9LK7AjX`+Qdt~k&SaXu@kIHbLHNTI -zLX54b=oLKMX-cKU4PZeQD@Wdf(N+OAlQx}I3Nji(8$31{t8Q!fe9&G)`08j|D`S&} -z!n*;3p={aDNLJp-p?FB1(tL)a78kUlrQHcwirN;_LV9tvS_1AU6YyprEx>5neMOEC -z5`AoxCJoOy!)VA_0E%m+jtspBMQJ4PAj$3eMC0>@TiwPlmD%$Cym{To%a1*ovp -ze1(QP6@U=6NB&29fwM$Om2ZD_aqg>-PMyf+C%#RiNMf|qi{WH`4GyT -z6lu)r+DI)o>jli|=n* -z$>K{)GWn!#r~eqF$7Qy;)-GUJFQ~r1Gn(6W{YLs6ai~pXZ~5`r`1j(5c;Mr8;72(? -zJGPxJS83vdCgL&w=U_&n%AX-?(wD!&1Ld!f6a?Ge++Ds0x^g#t{Kwdj{}_9@OOiet -z!}DKf2nv!M<3A^R@aOyYAFo3n|9Rq%{}|=e$uSfUB_$f=Njw5WfAr1u16UP*UNjGX -z{Qrz!Z+L3gkJo`e&bS;)WC78$a#`fj@~tf-!pLSIi6Ee5`6^2v_h=FM%Lf9%XN+bt -z$Twb8@w|+F{P*yWKZj}0HiivQ3~T83=ecGqE|O#E$gw48t*@)c{N$xg;9Y -ztQjLdvrRW%c%RfDLb39;tL-oy$WzLEGQvfyoRVBgOztFG`JSTxY+pQjKcmjzfdX8k -z3c>_%T@+6W%C?HC3q(vkYI48_#n72d-%VEKSdeL`yPhc~VF#wU6PmAdu=oYvYwvLyBNteGn#5utJg7sJS -zIV?X~c>jEWtO(7P(TbuZX+M_CGRn~jAo(}>@TM>GD5{x@ascE$kg8vn!*I#J|NM@4 -z9Cr*3Z8r52gmb+2Wj%_`$-a)_OF@ajlh*8BD!VrQYrDEJ`#tq>Sm=Su} -z8sKPqvnnFbOKr0WIYDVmc~x2$1@l)OJ5~m@(Wlg4x8-m)IfP?^^{g3lObd!2BICx? -zQ%xv1(YRUx^}zZnn(E0zEUL+wPaIEv9uN=%i8X2?L?tLXGK3xqW57qMZePQR*R35j -zheI+|9-(~iInzpO4$QvwZjF%ae}j&f|C17gZ9pg-P4p=-+ODp{1L%Pl`dO{^K-{&~ -z=%B{Yck)kmu`u>&M5TIya60A$GE_2@kUu*z=#2~Tcj)uc4vm|`r>1Pxr;@-EW4BDlK@NN8$Y%0rQUDR|cF9 -zD2>*>1w$H+1}xDcP=GcOnf`>3KfAke0?hu{b_J+n3~+;?`)1J798TxnSp;m07l{;z -zPqE8HYlfJ{=}^YNYBuwcmEByLZ$`*W{%RR282oamc8DE`=RJX{lgBdg#ZT>vC<3{% -zYG^s&Ck^#<1&R7CVe`QRTNcd!hD2e;9_poK?+s7!4UOY2zJHi-_XD#6UNkCImoto31$PJDzo0mEm@6u5+RZPd&&lHyxkOE$6!U8PZ9 -zMyB_)_CAlwjd_FDJBq0bu(i;8M#;^1-QYw*?W51%qIXM@LojDc=5HyKZI4;Xq}89f -z)_l-oT?gpI>i|iz>p=fnH_{)kg(Tz40BxP?!2Ws-G9bxozk+L^uxi(?U~od -z(85%P+#~A^*mQ?Z6N^sTwISJvZdZgZK#*8$P-a*@-%zUq>ICy_OvMz2Cc@fC3SgEk -zJB~+@D;y=)k_QcjPXS^#ww$0a8@4)nH>K|B>PVc)AUKDb^|jUgLpdQjtgp3&@m!>4 -zwof-r>BKTfZBWo$UE2!qvbhr2#Q(YMNdP;h>1)c>^w0aRjD}yKeb8s|LQ)IDYfqG^ -z8LtFH%9D+;Xrl=xOE1=|7N?*w0#~|`q}|fUJ$R{ja6S1p32n%QNmvpAX0P)K2&jT6 -zodya3W=Go4?_c^iC;)4p_cKP&aVR`cq`hH%?9KqQ<&-<33)(uNMx79>CX;dLZVyE_ -zBr~fie}3(b?UsEUw+&Ecbq)63Xp4%w-1=_idijZ@%A;s@+4_+w0+>U} -z<{kjHzMK#)HJ?!IGKmHKG|V`k;?^EDF0UZ?wXdv -zjYgzQ4k-H5bsbjp;0 -z9p}bv7upPB)jS-w6}7`H!L;>N@se>vGwrsQH&WvTM<|+H_ycL;6K6aflq;mB=?d4G -zp`i%G(Xwt5Tni5m{L*rP!doFfD?bqpY$$l&dh+;uS@~4gs0+uTewFOTF&Dhl!2C&u -zvF2f=2pF$8l|^a!&?ka)XE`!tlxK3CAgu&5E|Wh4)#@-1Y8ZyViIM_I9okvgU+ENq -znA2K8J1QZ_DiHF}^gZT2bMP&D3sC8F-mX{D(aZGrmq`k=f*m@ltZ_7~H3|>tNeWp} -zj24earri^BQT(Fhj+D+Vk4P?^giF{M3C-AX&>H;!AjS0}w54&{Cuy{;&$B#+EEmdo -zoGQ{KoU)x4W6yxN8&e%9Q -zS+GrWdLKCF`y^=RS)g18@;U&n -z0Ij=QF+vVE*!i|{=)n}p#oO7)Z8^rqieBj$A$fcEd%;1E0l|kWmxok3mbWe=+y+;U -zB>Y}JlBef*LLM|+#km}M!1GLKc|6Dwi2IQbSVdocjhlMRl91pEYR$HCPYI|VC~^$& -ziARoy{*4;>qHC&gn2K#dbMSV(K8q(vNIf)$0Xg)w1XoSUqD&su3-8~5{nmlCI+d){ -ze2WcKWJ#hIq!@E4szA;td;bct-;fvR3YFZ%10-Poq2u(E20<>%;Wwz;8i)LKl1L*- -zWoBuIO!54B0j6k^ju930#SHsS<)Ivb^K#v}_(TU5w?*>O^a%0r%h!u1@-OlOadbK; -z4FVl1iZ8C4I4fz8)AGo_K*e}oR3s1}d9CE1=9X~uTh&hxO*HigGR_Z(e#o1FE9kGlp4^IUaUQZwVMU}3#j4*G5i6R4~A -z42UQrbjHayk!Q1GmAZT3WX)eDdldOTe_5+tq^Yc>JW!57y~%cc(h~N`{G|0#9k{x6 -zyGIf?omQuVgQQu>=WDiUwh{23m#nF*-VpevcQk5mzNkDiMPD2b`H;;71BxQM2knSs=U{>uv*D5HLLE>o0D|@Cbhcj|7s+BsQh`v-s6e0iI2l1c1AA8dYvFl$YHU -z6DrfY-s6H7Q7-jfk`wZG9QQ&_>Da_eHnoNzf%S6J@!^$}E-##ZJIFyW;ljw!*@@;u -z-VNpS2arBqti0l8P#4G!g0_I#cuCh{V;a|$1SJ>W>5k30tk5u&QgN8$af-Tf)HF{Q -zp%qxOq35$6r2*Y_a|CZ;%o~2#$gEg -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 -zyN~_74C;01%4QWjwZD -z(m|T`z@qa&4mtRd=j|;ymA)SxhMZzWu*(+p#bp1}s`O|i$nes)F1cYwD-W<#_gd8yq&N0Blg-2)2I>=qQk -zmrZ^T@43!iCLW4(arS1kBTsKmI_}uGhFu`DATP<+Pw-_eqhU%ex@?L=^v2~QT47L} -z$9l4K=kDoR9$3Ff@6{T&I_&uw{L+AtrJ3Oy0KY~|^$JzU-b=Tp7NoQ6+Yyv{GXS|7 -zk=a7FlRVo~HZK{#r1^7FsE?1G_VJO-8bl -z$8UaZDo^W%j1!@(6o6jkYGD{wS|ZGZ9yjRuuev(oL`kQ^`iQN?uKjYg#vR+AWCN-DqvD -z-Fa&dAim2-zUakb=^HFr!F~sG*`;VkW>st=(mL4wsz>N)b9I;C0+J-D$g^l@{liqGRc!#3&lvkx!J6%FK|783s}U6Sn(uI=3nQG>bK_Jm?Uc6x;Eoe~_rXFCCMUH8w$N=s{T7kU2L=l-k`5k1A-1g9TRB(e^22c8q -z{vIK4#Fj)1N`rnYO=S*g{d>?FG)Om4s&LyH7W?z)-67hMgRo>;HmYtYe{>=mi(O^eP`+2&6)7&{d=PPUdfSR4kOu_ -z;klsdE5#r%C-;Pd$9y048q~UDUXQ|QeB1kkia#UQj^0io7MlQLWs6hj{={VP>%sAi -z!Z430k0n>uJMNlM7l?U|0KT4 -zNc|*Jm?{9?`7v38*24zDj -z%-@n(2XJ6=1tGH=KH8eu364KZ>-4^W8OHpo%9@UC8@Tc_PLrlQ$w6sMgo999SGP`1 -zo5l0rSM-Ml9cTdWYGUzdc -z;_XNwIBwI2iV#Y+NtttMX`6W(17QRC36HuN7z~c7;ocBr^&zTAWii{p{7h$H;f7?1 -zlI0Z+dMn&jKcWm66-Ub4F#@~6Yb&)H%uhUXI`RPh-pT#OWBEM_%rvvWOhC6ytk&(Z -zZ6E?LDWL8j`ujhmzmdM$qxj;IPr;xes-j!^dh@i$9lDh>Ndj0f0F%!&V!Z>vGijvC -ztL+M$5C(-~9!E@zMuR@d$w@`)z8Z}9ZXmY+oyw|EX1AhGrsVn&ynIIUCW8o0v;jMR -zD~Tt760vSl2#^>igo-Fu@ccsCS+C>@9jQs@dvNHnqmC<}b6b4L3fLaH1 -z&$s09&fREuRLFD11_aF}gZyB1L^HEIBw8yVcL74xpntx?O~J+I;2XM7&*+MYnNq{7 -zz44eT$~iBc`3)UP=pOZ{yhGYcq_3BGj{(mP?!uq%qBN#ct>_H;>^FlwCXLH`3b$h= -zHXyI3ySStFISFpGDeTO#C=fVNGq>t(A*8%Y<0uOew-dMefEvOb@?UKT(m&j|N?V|cmRwjv6@f!xZOOWFwwW0! -zWy=Flc=4!uHqAAGfZ`3v$fNBk)nJb*)@nMgt%HYG8v_lQU*xoYdxXKNks0Pf){dqV -z`dC#bOu}fk5lO;jFH@J`+1>FXIWe*%e_;sZu&P1AxrY)MnchXa(h|_WPasYhY6d;s -z@w6945|7M~ErA$|t)rjPzW#I>+L2G-5_V_-d0}`JqSMOi<_NAInK_Qe!KQ4JnZ;is -zXZvn19frr-cH7!j;K6B`R4k^@T&mHeZ8`Qib-w=bS1VJxTByJXriSmXI@7vhWuJ@Uvi| -zi;%+3OUM%vo!tO#x%(o@p;&l|I23_H(c*dcN%EG@!%RVXc40~Vd(ZNzp$ -zXudsm#d$GuCEBKf-3%GZa=1}^qHo(6mQ)oeAkja*n`me_wk+rv@(w*N(^{nSHP91V<>7tPB0x=G%f@}Q_v)H6xhgD1VKKOP3^TpUMBOrg|4#_86 -zdF65t2RxcVmDm_d;qdYEZ{(`BY_vn?X{3e3NZj28&E;4ScTVLLM|WJSA!xpVcza3$ -zrHQnu4$_MgZH$A1c}CyD>x#X>$26xb1?}|k>~9!X4dLhJ2Djxzc#36yAhRMl37-a$ -zPM=P|B7p76Y-ymkWZOe5qB3#J&W^-JAQ{Nch>Ez)WjWSR9pMMYL>;n-UN4HCFv_4T -z3wSs-!Et%y01v&WRG85giQSFUAl_1-^p=1DeP~2-V1WLF+7<4qjyX2@(-K>Ae6V{o -zd1X(0^IvtaU~XNSILk4UZqi<|_?0l*MT}PHPBqW~CIvw#?NY;eYz5LG=Pi_FjBKhW -zK+yO|sx-*w8?504iWHc9EmN9s8WMst?Chf#?{P;?fz4RkfXw$mPuy!`MD$1NX!B~z -z2e>K7kS&YyxX@v+mz7vnWF7$~o&wuK=tT-Jn1UQReXo|vUaf^$0UitK?|P~%*nwz% -zH_&#q`#^rpW%Ih7^9hN}4$Hk|q#K!F&O -zyvHmyAt{(x)2_Gfucxp;Jgt}#z){=2d4DT7CWg8Ac=m_!oihG+`PHpF(K_kxZ(?$j -z9JH_;5)P^{k?U8CxMP1M-9z_-s}9X+bIbG?LB5TQs2ldJP$X3mZ}W_-qxJ9Qt4 -zi-#@f4**jGAM{eu@0bP$6hPi~ -zHMUSLiULzYi`;roB27JN(qI!OC%Dly0weHP8SoGNtE6){_@pPVanV>e$RWE+3mV@~ -z0f#xA!XAi8?SpoYXXQNEAnh>D3-Q*6Tm{=;4g7niNmP;0jt4Rvcgy@gpDG8pnw{WP -z!+Z;Bx%_rxqNn59pT4NzZ2H5X8LRMgYo#F+u`-(=O*O1`T#urG86GR`u6j2QK7x4YqJwbmLn -zp=Vk2tr_du(mISmoeHS|3%}oUPE&@(Gfs8oZd9IU@i|eUaSHGRpu3>T(3NC9)!dvn -zQc_5}-5!jAC$A;CrL3UlV#C-9A)sD*^f$7IIeX(Qy{;LnBqa5Dn$X#05LHIBm;Awd -zp=oY8=DW8`Gb$SpYTj}0A3xn7q)BS%fF4xCJ(!D|m{x3!lOGU_n2)7tQk7?gY%Xn~r|EL?=mmlFij2yoJ;<}|?Wmzd -z@I3VKafQ!<(@IbErJONjd>W~%V_Cfh@NO~Bio%gf -zQjvwuB{yoUteEKq30C$#BTZHyh*DXAnyz^(6)r{MNJ-7^}HUR)*tueM2H -zv(#s@EfmJF@nxPiEsvJtUB~Wox|ZC;RITTcSvNS#Jx*KyfXGBWD06mL1QErV|B;^fth;PfHd!yyl9J9f+!Trh-_|rcRbQW$Spj6?HZgMqM -zHxr0SgJJl6I^!C}Gy969JeNjrEOB*DG>R`I4P2AJxz^5Bm&W<{(S9qhQ=F^R3kP|= -z(4JCbkJ)ch-J8rvnl{iwHE{?{uB`(NlA}BF&*aTi^kz{F5%rluIvW}5@)qS&5Rkf*q^N>SiGL5-0P;Pu#j5zFdKmNA -z8af+U)@zlXoNhCDBDA}|0?dB}?yCp7#7a+=5;E{y*c<{p%9$LLrMfu8AKy9A1)(~T -zoyRE$Ff^n^HmXd}av~vovc>;?x^IkCRM`uIHNE&*70CkT5uI-{E+X`m-y -zoV7Mb_@tyFki+dT7HCt-s{i-}HEhMz3z8)rnaScYh~`7BA+MDY1@hzo*hWVwWkz>q -z5H^IcAAkU-y-+M?bfMlfP)gf!1b4jy^_6D4*gL(^psqt0b60wM()}mN+`GxsL}D!| -zI>9)8J5dS#CRul&EjF=8owzO$deQRTCBaoSWj&@6Rc!yN>*2OLAQ-HC`m53w!kcm2l_MLAYt30M6CN>A_72zOxU49NnilDp2=fGP{ -z?gCiE4e1*id>|ilN^vrAoLi}0S=+K2!nHDY4&i4(@F4l6n#jSdcIGJcZtD*YlIY^z -zP*ghSBo!IV&(kbUD-~0ehoanoUI`GtZ*@%Nd8`hKj01=Gxy4V50JPlT(_0TV$em-` -zXO0jU5jmA7f+x_FkTTWV!x%>zJO_iTl>8(c_e;<^r85H7Y^C`;a-cR&K$sr+%o?R3 -ztKdjSyChs|q`=l~NjVE{?V{b1vy)os#zl5IO=TagT0hAU=VQF>vL~MhANpi;(~H!m -z-`s6r4PD*~tg^EHN)=|wK59vq-bw365JI4{VDZKb+QZQ;D -zLGsmZT~_9qL2)8k>qd}C1{?_-?)#Zy!dc+8jPB^13rT3xzCN4;hqU2-jbG;?Ydp+D -zs&SCx&BPm-Vjh;EtjjQc9^2+lepAeoC>%tv5hnkwZ(7cqbDEFC5|!PA7wh*Lyu5lv^E@p1BJ|?A`FELO+!A) -zOKb*l9DzSAv?@aak~?zur=_(SDOfX~Z2~y8Ix!d}rMF=`l#Lem#`_%l_-Rp_8RdO* -z$E=x`x^)s;E_Yj^@^=A%nS4mYDUPw(z02G7Vg&qqL`M9xy|p&E)6Wn|t{q@|A18=L -zK}qK{;g@j2nWI?AVdE5;%qzTAq<>Mcx8RR)V@=4@j$fa+%r|D(Q`^ -zpJ0hyY`c8SHd}77i1RZ;_Nz5i=N$rKCerE&%8Pe1K1~?~ElFG%A6dFVMg2>DA2Nas -zPx;*jQ9q&ks(Vet@xF5FTmb}6#YW`hGuOHtv$SYhRH^P!5g7}19B%56NDKewP2e}R -z#D$5=K8{WsS%9Iyh|wh -z*2?Zyx~P<@{P^*6ImWF}uUi;;A(cEl -z$^{*QKBx}by%{S?tHT!+slm}|Wv$}$5c~Wja)2ACjItvP46Pvr3YF(gpHYw8S1>iM -zIg>T_{RT2mxntUXVjKK|YQ;~ -zen^|&wQCrxN@66No8}AU`u8$?udyg=mgDQhqwWzo1mBg~Ct>fcN9+>}6?72^n~3? -zeHaws{nxu{Ylc*kFFl>P8tcJ$s(@hCN#yEqt7b~O_;2Q=dDB`o{nVGZZ6_K)*OWHo -zS9q-kgqQ2BBr$_6)%(- -zW4tX40*{@K@Y@Xxmey{Gzyv3@SVgq&;v9a0V$n3j*n(vIrN-owfph$N1KQtQTF=ItY?B&`^Epc*5&{_rtK$6KYw8(>@(J{*DJ*sY?A}S8bC9j*tEu(+-E;EUfBw+rKRh}GPV2|_zvYzp -z_5Q=|kvy^ZCHw8)_aAN4glVrYX=v3v8CtbSAG2TVGCzkpUGeWC7(>T@*$?0}$sW<2 -zC{RMLCFtMkQU7@CTDIKOk6+()4|{n|@&z=1`0E8>0zVk8LW7dafi2`wk7D@TQ4$PbStD(Jy9$(Ub=%( -zk+oxf4H`J&ze!J$&Hj}Kn$}*}$9IKiR%v=a@>!alozCAnu{??viL$=@{Ogx)FFpRL -z)X=djesLn7*vtsMr(lspK2~t2VgM{`b3QgAnc^A^>NpK;l^#W%W&Z4XPrv6+dpEzJ -zP=fDbap_{O%QFHtsB*>am6tAOj0cKBE8q~N{O1}0|Gr1^$BYZJ>QtOgPhGyWG{l%x -zS#0}xK}R@El3n?sKztl%vHseso%G#&f4BT8tc2cz(b89#A|5JXH&eQHE^GEH&KTR; -zs}E$bY1o*mgU|k -zO}8a{x0J0qoG^3H!vW7*2r#vdZ9CXD;J;gi00I6AJL7){Lhgisam6TaY*Ol;Bx7s~ -zyK*jQIT?r2M1PS>dd$+jqz%<5)JIlSg6Z<$_Z)M!c#(8SD6IbE>g>Lxo{nUKGR)_c -z>f|cKpbYAVCcVT3C~ooLfoWwlb21B7*wIL*6!W7i#ijhs9Y1N@gjC52#ivv^vrUSnf2ci7V -zGM1Mcze%TC>XqSMz4ZC!`Bpc9TOoI$3Qv^LL#=*Qs(Sk;8x&0D>9iS! -z4gkOGeKDR{Qw7Vx&@0*Z^Vf%c$SL)=dKaIXC7C&-_P=RKF`!_1ERGN -z(5PWg0p($4CJsA&0}Qi4FU}{!?yi@Q59Iai0DX2^`CHSPd!eeRqN&O@<_#0}{I@n9 -zCb;`pOyb#Qn!i(_~7c%mX+z+XFSR+AMT)(~Wtg)2mCp -zjvd%?CUfOfsU^>@PIUp!{@PmmtD3EDPxGW;4=6C~+_Maw19Wi&={!ic3ZJ!dUppX~ -z3ixZz#u_wf5sx+&yDRRa{)n2|CH@4gg;0YO_F^MTadiQOuQ>Nb>5joQC&I1`xte(8 -zHd9FbD`A*$UR`0q6)Pp-j%gOq)|_!7mEZ6{_PRSW53Ny!LH0`&QgqRyGjO{A3#*Nj -z-NWhgu)^0ytr~4M-dwhiK;=Wbtz{ -z*`-eWsPY~02PL3B4<2M;EH3i5)w1^4`c85!)DXWcld*Bl}FNg2fJ7V*%g0_zwR|ISCow -zVkP{}SG*s&)#?4aBntqQ%$<4wv?*tqKG~R#;e{e4vovJGZH&EwP)(?;7j(eVy=9gJ -ztnsCQ#>rd>j89U~0VqpYacUw6c;y{9|D;@`bqipN!?2?6rCSVFV}{=&uMmt;!W8&= -z561QITKe~bNzB0c1s46IHb8XlgwMemH{L+6A_uz7APS72P6v*zN7|Kavhqjy2NW+* -zV+x&Ig6_GBXXoYu@48143y)TmRN^*EDCN3bX^wd2!E?xk2UnvDJL{cU- -z-P{8NuY|cs*zX2pd7%6CC4cp(f+0{U-uI*4dI?89TBl!aCr;9e)%fVv?YZ>)d^*x=^I`f)z|J(dKd9J$Wo2{j*cwC1eL{FFG{2HNb% -z?^(^Uu-{xP5n~II+p5VbK=9I>c(S5>LlP(RseljV!f?{q@8g`C?hj3)9wpc}3Ty(B -zWmEY`y<0~(|Cgq_KX~Uv^0MsN)4qT0)0>r$qllPBavK)gVVkS%US;)K-TJwbkp}wL -z{sM|=rAeEcQ6U;DU^~j!*8u%ku2-3Axmk_wt3!H3lvv%AJ!liHh8#$jnZRSaVSM^`1G$zd%klhDW$!_{2)=V*nK -zMXy;g4rXf&y6t2DORHV+sB67?n1=*{&0hp=RRNGUoo`>9!qS|W)SQXj|09~r^U1K| -zL8~*!!bi2rstI{txntT&TURKUEEm(FR -zc1ZsJOTZ>DWzD7BA`VyBn?*2CbPDM4$3sDI&c&BO@r7hIR5>TABvIG9Gg=eW=-Z -zkE4{O7G3S1&5;XL5cDq{4ld^fS(^U2kL`W$gNMz}+e57zQe3I|1|CbmE@j11vw -zmFCd!@X)lGQvtB -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 -z!SZ7jcyd -z>j!@Cf2B5P3IK0TLP`&Ja+OTz$WZYbWdIyl!j*`l5viqE3}82x!eNR?LM8dnBV^j_ -zt3{J1q^5J0WdcgS7STlZ6L+qWSuRN3sf@#`Zf&NFX$rb9o$V~)Zwjo2r`~GZ(6mC -z9OyLyE$l1V=DTsvb8`~zm}xKhNYj$(^UXJi#OoR0eweyc&NstL;_RRTO2{BE@zxaE -z6~^Q9nDh*t#@7EjaXp=RDlXE&HdqCV4ipCC%(i(k*$}q=&mKT9ySA$=Y(7|--{>uL#E;%SJ)AMBKauA1fxin<|MCqsZy~8E=T{dHRXfZ -z8@u~b)cZ=QKk^djrvhgh}1vd%V(^G+XNGdKCdyh -z{!s&kH}(2)FKYP}8QD+aMH+k!9)oG^HDtE<&JCw)O>Q5ynjT;;A4rCuz8uoPd{GLC -zFnQ%IUUJdAt&9K -zWLC5opr*Ao8bldIJLoN=H`1acH_3EXJ}iC)W0BcWy7Q>`tS^VBgm*FgAKxq8(&Eh)*N-CHnExdt+8&+seRN1dvr~F6RhErex#8yMYVv(K8r80UaK5 -zLT~`K+Zb -zC^z`By`K+%jM=JLPqlLEX+^C|nWBU2eDQi2=5u8?BqTUcv{NtZhho#fj2h9~W(*|K -z%~qA=h%(e7{bw~zGW58WC(X!=TN@T1A}UZs?71YmygfeN-cLi%y+1{0&LjL1c;swd -z%GgOZ@<@08(9FtuyJQeKIx66m?g&(2G0EYQ3*~RV48& -zY?wx?z3D8gfMd>SZNU$DXa?cSmbsbJkR79(B&{nsEF)H1wXTIY+Uh!554#&LXszzF -z`35PTDGsqK@}bgLsa-g^ty3mLzOpj2U9!l+m%;V%FzN!5?G~a -zKW|qohST>BD6Ar$v4OKYwI2x)mWd)hdNjoo_B*^}biZmad^_b^=_r4BvWkneKDm2W -z8z5vvtXlhupqqYZBf1DWOp>-U5DTw#YUGG6y<^&&XyK!1X|1LK8?Q-sEz5Oby1Ne+zPvvgE -z{rl1lcXMa~*|Y#$hI~hIv{=&M5>C2^Q5SQmFB?zSw0v)YJ>B9#bfjbRU9JEyn4;LU -zJeJQVm?W37Q$fd25M!5}0gO8+Zuu=d*HbydZTd&qrpOBHS44lO7f0#_8pPuq*FuF> -zc@NPr1d@1#a>7<9q%U&2{sWvi=wM{RzBm(GK-oF5m^=YX$~RhQ2)wyq-Y6cRHTMcq7+)(trX|%PA!d -z&>D1A$c4!s%-zZ;V{P4^)jrCsj{+ZEFr(bTphA9sEYZtr#Nnr2W77pG0mGi0kxj6v -zR`L;E;7(98dSwK-k{MVjhTK%>xIw5_b0T;#)$CXtLL4Ql0XlALDM&7aFz+8E!{(+*LOpsat -z)^zmhge{7nr1*rC;-B3qy!-hz)=NAZ^4(uw;WNgbdrjz;mo2A)xD1E18+LLLg`lMn -z+mtiTPtKFI^OF}p>Th;uVVe^Z8SU|EKhhm2UauWR(gc#;7UH%ujB1kPK_; -zXksU?SuL(g^H3eH?7$tpg!S)X#!X^mq>I8W6~IynuJS~Cg5g*728xww*3~`%V -zK1qHINC2fcweyN!?8DFlh+SL9`Kyx%vP5jdl9&m4wv2hzpxSuo)BeB=045(YD-VH3 -z7u8mNVMN`0D>eB%2w?bf5Fted>pBY{lIW8{dv!Yktj?gq8Zw$m)t&CNWxu7%+>F4_ -zXyN`sNC0CEX3)z|2ml$s!WX$d0`d5GL2DbpcQqBbY@{3b#)~B^!_7W0BVaz2WY@~D -zyXfS{zVO4i!YV)AP($-w?aT3ULDYZ%^1iD4VFmh3!5kT)=suOxSvh*vqfkfNL89wC -z<0NOQBl8pqyc&LaDlgB$651c~5{fG}VO`HRj@lsIn3 -zG!@ss?sY!_K`E@W(rdCJ8hRGvf9*<=@QF5)o}TXI%*9BTmNLT^%VBl{Q$!TcyzXsF -z4&o~W+!AP?9P}(?OighqZ6n5Nc_Hrv73gGK0{Ya53jn^ZTojnsEpa8$(Em#14)fPv -z-FSW&v@ys!FK%wYN;~ZnTG+FHk#;gSi=#bI+#D|Rvhf(vHR3nQD|)ctmdk5~`J=0* -zoLjc*xQZ34;=KHpePgThuj>rn=jj2EX$MXBGT&ek!}fk1-ngf`Ij@G*lP5J67lrKG -z5t2Ad87H8L=Y@Vv`=OXBR*G!Uo#igtd9fwV7B)%VFx-Xg3aGN>``RIE`Lp8kbY&7U -zC*D4kNI`l2wH0`d-8kb{uS-H#toFx$ZJd?EjYGCk#iw55{QBlabZzUaj?d8g#e{C$ -zQ*(a7EcBB9c@kKnY;@= -z`(Agw5{{);&o)7Ei|f_5tN>nTWm{gv3f;u)OR=%~p$|)cXO_;tUnAb3FE21M*K`lT -zUfvyRl4W|)7qpDxNs=?{J%rDT%=dxi4-x=0yC?igQdrp7`5FyVa#h3Wwp!Yrybw>n -z26)i3Jw+n|V0t<)bO7(VlQ1cVhhvldiCW_G?yDG=>*dFm39&6bj{{7O7u0#zaXG=? -znuGiV^xF8pJ^|PE`B_8EcOQT&w)A|T{&YXIkGL`KWdn5x+&J#%F44M~!BhS^SSX&q -z1E5)yyz@J%wB<%lWRx#gq%SjyX~L!@|A0}0UZ0;{8EyC%3#cJs%uv2_ -z9*WcJ5Q0)Ch0p>TczMz0EfmfItgo{+;wa8v`hmk0n7Y%sw5V#%y?d4(FLz5DjJ`1L -zVL7Wi_+;ygRs=iEnv+U0(ImzGmKN2%Y1g4HzvESG&@Byn|04ftR(z-oI)zqR$8z9w -zgDn}c<&x?Kw|4Q)n;oKBWxq!RF+VEJ#YR?Dtgq)d2w9`oofls-XL57i5(nm4_<~=i -zZlzW1OWHiq7BKr>;!Z0g6r3CmVEf9sr)>>H$L&fFa-JBzBM67`r>@AtcF2^xu1m7S -zXj7c7z{)A9mK;5(GsO5;$izQXZ%(QfM$MB-{q&Nf1Ha*V+mVa7oj0zdMDP~JPC_u9fEbjid -zCx!_S8~bI|Fpl~9>bEg0x>`l&r9%&_E46rWBu^%p$CILQpt>4PI&pBz*|S2Y+Hel} -zePJoz*>$L(tV%PkqRA-Qv;a}mCiKr}_Fo6cmnx2m?gC^Hm*OJyPpA{!07p0!_Cg|4 -zWbQY)yuy(=)A+YtVB_(9iS}5CigtYmGeE1W*8`}ZTAQE&jxl{oDl(s{G`wp_Bcof_ -zbigbNm>E8zw?SL(##yO!O1BSfzMQZ;?Q`bNs3aWsfqcP^E}(WnE&LHCPFbY$?m+{0 -z_kNM5>d6q6d}kXUAMXX@>Ld~Ud#hzk_peHk?w3mQWUG@{WPgp5vbnm+erdgG)bc*G -zL9a>9wSMFNM`BZb5by0E4no|iM(sFEGRqm -zebTt~RMkK9W|~cL`1?wKIcmhuRrQAyA>C)i)xB5SU7vZj>9`IymHPdMZuh&p=_9Oz -zWzaMfcdxW1@ouk#o?9ni`Qz40%o^hvin(mD0Yx=kzw}T~&+;VFMV# -zjOpPR{F0;1?M|kORuU);6O3t443L_23)m4VtD@M)nblNcCiaNukKRIv^v0fWION3- -zu8IN0W@HX>It!uA#xuFsJaC2!+1yo9V`PDmY0EX}{K-t~T0RMDoWRZk>LVej$)Qp| -zuQJ0l>oA$^Q@-97WdUujgC`_n3MIWGnO~qRJ;$MF7dmpB2|EZgCiL&q=zbqytcS_H^ -zR{8wT?>2m;*Npm=l?fpL4)zr-;T;CFU`J3ux-VHTvl~XH_D$?jq%n--JyW=xXp=RV -zbIBji3pd3oZMspgJEkc6{PkU*phk*`X>48bOY))n+Fbt@REvd4aXt>uERt_)+u8mE -z((@c1TIaP+2Obm|BJycv#lm}H5+Zt&1u+BGGLkfL1=1^-(2c)pi4jvs*-xii7{?Mt -zzzy?NA$%jOYOFwB!3;-Rv&ouDS1i8_Y0p#HSXI^R?&HxJ^#&Qq0VzRf&+Q6=lQ+rN -z+*K@9;hBmNK`|BPDL#$gqXTF>Jx@}w+wHP=?y?3$kw^thLc=r{MtDgkgI*0}GwWNQ -z`uW(owiGu@iEf`~(e#rnP5yQ(2Y-6 -zj`pPj>%CPf2t*cxIu#Vi?h7vLq%+t?&Ry8VzmN;p4*PH&tVD|5{-1qyI{)m$<{S(8 -zg-bkiV!s7R${Tqn$u1I=M%uPMx6=y)G;xU5?K`^W*A;%$j253AX!;qAvhZx>Q -z_YFONWK(Kw?#%YNE#Gf*HQX*(MhJqD`9=06=e%grgpNbOcVsgv(^A)2UXkOyi_t03K4XK8&3IZpyj-lmE0SoEO*B5(Xf;O1`FhaaMq+$K;-2PQD-4v -z<_s|vsLY6D?8f^Sm*>+cjF~Y3vw~Qy7G3OtrUd)d3XDlLUdU03sD7h|?>kzU>pj)% -z#+kNV%WT$FygTa}0e|;3e(5VAR{+)Rwj1#(k-*q?x&t!#K@i1gFu#P&Mww3uT; -zJcH4YD_wqwgi*2At=x8|Oy;01d)rqCTcz|{A>BrOO)W1>zviCu4QV&@xS7&&Ev=m? -z#z|WTR0D}<20N{hEnLHz;0ld6ks07@_%^?(1~m*VCC}akT6V%f%+|S{e!bVnhl3aEZ~_`SX=VubY)El0a+$~deV$a!v~a5?1xnBeJ9z3;H-2r@#r&*m8l-E{$r+na;d8!StpnxD2#4!0<}nt@frlMlBtuwQ_-W^Sc4q;hkMf`tfVz -zg8IzV#U=Kr7!m?dRjrpSP+BHvK^#%E{Dke6MFi8ha~N{Ug|+ksdKBWbGH?Su46?r{ -zIz)xmZfhO%hDf=YFMzU>*coa?@2X=6J{!n3O^xDWlj?@b7_0|BeeN~~suHkaPX5Y? -zBxlIVUt#|OG)cA`)_Mt5P$Q~|FgD4`LF`r~1li@A>SUClur?!QY-PwxXAU;K&W~uD -z0c{Yjq%t8J3UzksRbsjXhnaK&%|aM1q+se+ld2ysVv7EoP`fH)rZ%RE}>s3y`Rord&H$cK(nJ -zup(5$$G?AbW6Y3@akkn>28g-ftBW7^AuAq9oLYmV5Q?ci|CTIT$V3CWS;3;N0U^+r -z0;erS`$zYH!(`Ss$X;k(^V?&BRVWC$273LJr%nf{U3!esA{K6TSevw+ -zuK~+f-zKUc7}Z%;hxxY;ZXjC|7LGiZiyXpEAqD{8$Ub<|;?>p*)PmmQ0NiJlQtKO= -zy~zSyJ!4nMJH{h`rmH5;U@FFJ4NM2*^f#c9a2Hf90d&MyRP~670Q_CNx6!4CAomjO -zrZ5hDdt;ZD>-gcx; -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 -z!0q}B8jRwe6rgFo|9C^)$~Pn!0r6yj$(W -z7DU}!jbZSEqkEL4*zL3Aqjz#E55Jx36-}~z{1`!2CJzYgr?s=9r25L1lqhS*)iHsT -zs917^{ujrG?7AzwFA}x6s~_d)Q?joo^Pk3Jh~tyr1y-&uPm)y?t;zNabRb`jt=TG8 -zG=UA5SqTVWs4u;Ad7x(Y{>;{o*fR3YO6r#i@3mo_fc^Hs7Ereb -zWh^A|L|!~&Tx2I&2I9-n>3nik#PEg88OhW(C>ukNE8km=B%Pu6ej3CDVc(>o4&0(=;Zco1^6_|LmswgwpL#O -zS5T8-G3U8tDR&C)Da$bwMoy&-j(3*XssKpd7b_dcCHTT(Q{*wp*`wEsr~*lZhKyV8 -z%+Vz%!EXm|ccs^I;q2JAG1=H;y@h&|{MJB5SX|M8z9^g`P*Sdw>?P{?fV(B{!&B57I?iVN5tZ=8_MDR@%xYah7xzi874cJ4OyF6 -z#Dr9XK9(;iizk5kM%YGJBpLQzt_e>s)y0(u%&UZF{ -z$eG@5?nyF1I|-0o*_5Nsowpjkjv(YKc*dlL`#(aT7JABs;5y-CeTH -z+Gerq&GWzzR4aYT5g6=sPD!k~%ut{(&?J!wrM$G*L!l4X^ts<3w{Tnhr?he;^z5D_c-kZqsbhk+ErXpVPhg -zJ(#ymDdt4s3C4;lYv7M@jQ~3<08Co;LlyGkIHU%3H=vcy4Th6Ff=1xUZs|L^cl>D4 -z34SA^1~B8B{J14@aaSmht`U@BC9gH^aO^CM&QLI*nYud5$qN{c71Gh9Oe*u}PmU$u -z)vf-z&1vPs%ODr4Q$v*u*?peHydN6HNlD6P#S9wZleLGWlb52IE& -z$$%IkzM>h=H(&24_tOrUdb|CUDM29xN)N3tUTTMAiW%#@@x#qBeFGM&6*gDER=J?$ -z)4EQWnN`7pL`RP^v?2QA0;GggQL81y5nQY7tr#nlR9TH4iF(Ubq^d@E%gPIZq2QKL -z{ZS8-C|pAh3RRA4DBx4;yaE|*O~3sY-!3CxgW -zO?^$JEwtZV7oJw`1csS4O-P(MZJj%OXoR0ffvr$_kKV3rpSvFG=zF*-wI}|lpoR(`R2kp`6=!<3%?*iy`t2zNzGO_2Ej)> -z2UQnSw;WRU%D(J0Nu{$1v3;CK?&)%_=-1T7jsW;URijlP4w4JPrq?pw*|j4(?pHEc -zuoLtl+Q@+GQW@$w#2_&oEve-qPxA!q*EwE3lSBpicH*^z>KambdS4ok{@X4Z(JfGw -z=eJ!TH?+<_FfweqW^6ZT%T3x%ahb)0&3!tyY3+ihib!!zv{L&@{JFvCkA0&1`!v>=af>6gfZrY=u54}nAAZ}s;Bhxa00U?9M -z>RnL$X;pAs@Y?~kO$S^6=7HcvH(IdczV>u!lzfspP|dfF0b2*Fi%o70i{n{Lv@^Sq -zi;k52t*9F+9NSbz^Z)rj|BwG~JvMLib^iak=KuUZ{_p>7-nT2N9!Mp-0LCt>ai0)j -zNWsTj^hjC2sY|{Sy3k+|eIs8RiyKxSR(wwUzoDAs77uA|~J$>4Drz`c(bTUX& -zxAVzk^R4d;dY{I-s5@>z3BAXLRtb%O9MkR53u&U|TJ%{5lM@RgrXicJWxh3sGsADP14a(GJKDpH(E#PEs=~O6`er-r4U5ndl6%Y@51pFH;GLoQ{1o!6ch*k=@A%P8DQlsdgK=Op;ClLxtxdL-cM0B-cp{Izi3V@5*4KfZ -zdxWmsus82oKDgC(}jo&()84~hwz;bd+_eGw?;J!wyI;VAI3zHiXxI+;~mEX8e -z4vC_p9uQZNuzf&z&&2UMUVGdOA)Is5Lc@9hzS^eIS`sY$W>|tF -zQhkR)yB~M5zu4EtM5zmcb;bT5U2AixHDus0T`l=ZwGbu1!rjpLmLJ24I!1G|#dg#c -z0^wEe62nZB1+Za0Wb;CcV%Vn(l<=5Bm>i6fbe|#E^zrVg${rhtF -z|5i7d70!bLcl1g&mhCOq9O1t9Bz*4TQh)hvHE7#WkgU~o)7?IMBrvq#B80(L> -zE7#VcFs-5+)3j-|A;BSLePq$FJJ3t85U7qlL&D~me$?gW!f68!8ZVpZCVe3OEKEYZ>TLne`D}uuvB77us#`#kep{n8w22j|~ -zS(w<61(%TQ$r` -zd&0k%>NmKuUNzD9a{Te*B8?n$XCG{Vp-9Y=710e5z^sU}Bzv8lp{q4oBFNhh4vAk{ -zL5OYdTdXfp^4biAaLJwFd<=j1Y6f-XCs|p%x+8gcchI|!94~=YJP*>3u6Xw9c7%s< -z7Pz6_2P^erOa2O4AF^RC4cS!Aj7o$W$GJev+qrE10!Ff>VOt-~a)b7$(6ejbiCa`L -zi8UuM -z;cQ)74pqbMzuZv{$$N0flC-MVhWo;%qe{dn-he1lb>F73f!#6seQg3)q-jL?+r3>y -zV)V1-ZJ_7XNj0a4mJ39&lXdK#Qs*i6y0gMcb{2A*u2)UFH&&}A+CiH^CzgMrx-l` -zap}~mhqC;f##KtyI9MDCeU}!000}b`62}NQ;JTTEG_RA7)|yJzJ0Kt~(siVs0K6^; -zz5(_n@RikRMw9$SMZ#$<81R^DwT2NF5DR -zv@E{9^vwuE)74w;pBpN*VL3M^$z2BPK<&CYY> -z5R^MPaJF#q5*PBHlVIg$LZGjp65tJ4;;7bSM*lT4A&Kwneq1xgaqps-W_+KIrJ>7g6oB1Q=vLilkm1g -zquVCs2>1bL)P3yOE!T0lCsQZ=;MkhIIg&g_XsX%3F3V;5FvPGyanBZgSrK917(Pfg -z6_m*8B_adetMTv1aW=+(lpw$K&sZtU(!8ft;MPOcd(r?{?-#3R5+UxV!xb&Kw0*A; -z0-Y<;R@}b}rVbz@=z>S^9PJ&L$T2d(&nkRa3G<3|CW~_=u&4b-!X%a2ac>=Kd9JZdFj3o$ -zV~kPI*f^Zrk=VPPo!*8K3(#F=g|r}t2ve_3Ycl{l0Xd?*9;*}tnWIbBNxl$%>dICLT%Z}s6I-dgYl?93uzq|A;qlOL=;)j -zAwj2ZG?~n)@M&P!SK3Wu#d4GLxYIX);Q+xKwm+aBW{IYdHCqLI(1(jD>&hSQIim$b -zuTIxOc-=O*Zsa};76TNGUxfvTXS|(IG`ZN)k6n&sk$OB5FvW-#A#oLw9ft>7kx;?* -zb%F)!3Vv?#E$c9jffUN5_#iXj!F*3TZ)LVmX^4nSod%=%>3tQ%FA%fLXQE;bngfq* -zA^pS21!3{sQQwnk>r$)0d@bZHI`uVl4BLLn5p>)`0I^lw5m4!O}cC*$@!8y8s=aca)5b -zmOI-JLRk;(vBBhIvrNNN)pf6a7DEx2e)R* -zHPdO?!A+*G#Iu76XN*BA^l_9{Oh)P(%!r_u3Vqvl@zP!YZKr=e)X#Kx!$>mUr1xH% -z&NmQGOH-{PSk6AI9>FG-Q2W>FI{rP9!`tp)hiMrnLW6!>ot0KT++g#6_f_jsysm}lIxCQ3TJ~@w;R3Bu^1IUlR+o6eq|2w5=hS% -z4Uzvtq0i}TQ~b(AI!d+O3NLWDUPMX`9Cg41JalE*JmXc@84gf -z%`y1>Kfc9j(Z7a4UWt^)Umq}ksVs#5_!hl)&qYY(bYt}Oc>sdfKyifI=~*~<#X=Tg -zP+AS-5zQ)*q|x?D)+vB?MZ7I!Xwni#w8d4Azm;6&)xuK6zBp;Z^ -zp36PMR$#R-4#m`@B2?GobLl{x*d-+8drbg7QqV}B#u1^+v|0t4q(gJbS|I(--*w-) -zy#qU7=a&mTZ3jFz?GHv)krWJHbn{CNp2}85!XE9akdSJ~xCAw|2LP;sOecq2JFbnQ -ze}IHSe@u)=>K_JwKAI?*cd1U)xL}xyR&`QY<0SA<2nlFi?nEkDbwvO@G3SsqXATI3 -zb}<|d{yU+Jb>n~7Zv(9xTA -zHkvb2H5V58jfvQLN7J)H8x1XR=9-}T3d#kL7UAYczZTWr^%Xw0-P;XSJ9Yr$VrJ~y -zEm>L~5%%leUB!;!5O6}Q^0Ds4ndcL3^7YsItEGr^gI6zyuUhs -zbS3}D=dadC<5`A`k3s%A%x*B$V2t_#zyrs{qw#UaT!85)4sAMhaHm@xe5ie@s^Jl| -zvLGtc=DS2@DQri1yl+iD9PNf(=I#-%d8 -z8GfmM_E7gHPC;xB1%Gr^EpT6`GSvjJXFL{ioL2zlWE!F)_AYQOZ)>=C%U)YS5gGO! -zyLv3l*(D0z3Qx;tp`oW!lkl|o@rr+>_sl~q&k{~Fip12JU(4pZxgV!4a)rC@fU_C# -zO+4sJ!m@&m2Di~-p}O4Lx(xX-_Bx43<&)XlTEmf2KDByKRpcZU2wsa5nh#P9@YT57 -zJwb}n%vEm6bK17=Kl6v}gE_xRbPwF2xu%cqOnrEwtLD!2rW4xWjIl{?mXu -z*ys?}E3>ASFty}*;Ta2z-!L$FX>Jylx|290P;;)eBon|A{snrpwm%svdf6s|uwL!nrlFrZ_P!_h>xiso9d-H}ITvo}nFf^QC}J@q -zppf+hR3D(9wXhBmqqNAiu90reY>l+^P!TM?^fMJij%1z=jmkx`Ve9J}tXUUusAAWY -zyo$iyAop`wn5~3#G_6`$UU8O=QN=-P3skS6F0lhV^57`ywsM;O_dUy=2LFV!|^uzpV41Adwa#x_TpA&_nJRPvVRd -zokN0vWt1z1-Vj^5K6o934z2cS4^_L8mY^($X&w|}a>>b!nk&9YL_1HPd)iY6EyRlP&<%6W;Q`ZXeBi*-tjG81xi|Kmo0!PA6 -zG9GO7C0n9d`-BXNjLF9GS=GnR?On0I9$`R=BzOf`Bd%3V78iPKI@Jqu7ou3u&B87~Taq6n~Y3#i^s1 -z&8(Um7_&btmEHL`YJCwyJ|5Eh=0GF>(?>?k}OIVhOqNc;162V@qm1C%5-_ -zhjqUSvK-3<4fphJ8P;XL`ir#;(?s%bIj5ceCQB{-4ILVmOJO>Zym(j&o}Q>Nx`bVtR3us|SQm%H -zbClQs8VWWI3EfVD<=ve81kkKPkA#VAGhizAT*R1UIbc0!Z_t0JW+HowS&c-D!E(^5 -z8&U5yQd4J4mJ(3>8~8X-PGm2Yfo-jzm^AR^%B;Tw3k0smL?MtsT -z+EpXZWZ;I1y2GmmUFk9(OyMW -z&daDrmt@@2H^sM5-ariWp|RvGBjG^k*a0dU94e(UItth$&)L=*@KfAtfO-4Y?cc$pI~!r<-R{x$MF4dz6N3vJ9jO2q7xw5(o@+LE7VLp-hI}MCepnv`9LV -zO22Yt9w69gX1J8NCo5e=q1Dmy_!Ikm-4yAmc>-+5JOb9wwY1YA6}$xTM4x6fA|q9W -zg_h1R8UxW37`PB<=fFXV48Ic0CNU@ImN2v5KP?afs5B518_B5?$S%bHxZY&&UrjB4 -zfQd%_Vh~o=SbTVy-LcA_Z9tqtI1$lnO;--JWvbT8%yc`eX`vM%c1}^O^Mu%1lGqqH -z{lQHV{P&Q@=sl9`g`d)*cSM64v`h|0D1_I8gCwYxFykYA(t=S4vEFO!<*w7u?fLIY -z$HBNJV_XVn9{@l=zrWu|HoERupZgGdQr2Hi@EplMxQ1mreDW_->64<+Yxf05#H}AQ -zV`)k(t`+d*b4vi0rjP)dQp8ANOyncBd5zi-1Fg{~4YwzQe38xTZ4q!$dx76~jvRH% -z4&@(Th*Ib_5o1Aw;4JF-SaT6gmmr2}FzBo$y~ -z0w^?>UT#vGhtu0;avh^M3xiho9eTvB5g@MySN90}CetE$`lL>=BE?(*+}_l`&8Tjo -z?LeB(f18h@ZJQ>PHm=1{Nc>Exutjv20Qp6UQ+vQxbYzUXO}cfb0!{Vqp2ZOu07g}6 -zC{PfSPwW5#m0)*Q;|12(%y^P&8;~`}24;$jxxnR6T;^7X3o-x-g;W&AlQm76xdDbX -zHw$0AH&QtRZ#hVDOco(T#hcMLqC4g*##$R{IeZ!(%??9?7cLegiBR*t0l`%q@zY;8 -z!`?&A);mI;nWANdl|V9^Hj((Anjb=7)~}#*kvw -zo9`BT@)6Jk?Sy8J-ggr$DS`#i835~glbN*cV=mi@=28nSC}YlW4X#}Q1*_SI;r$$B -zt;J`k(HKYy6HGZXN6NT8tBq@h07aP-2N)F)g8kea1^L%dTsAjGI#NZ&`-;9K~c+d<}i>bDE6pvla(YGE*f3t4z%+M^n+ -z=lzVAe35`6RH$Uzuk_O3GcG=mvXuGgCf9D(chjXUNN|ds~-Ev%Vkwry2e_*TpTivjv+|lpk!RBNo -zp;EYc#w1jLf@)Vji`#^t3jl1_YiPGd^2scBdIwSj#7RiOfWM1wN}BGm=-qu2h&0uB -zKtkPa-@q$DzaO}LqC)h9F?|*(q4HWRa&0iu0VrFVA~r;Z>RnhffKX8HpgLZ-`$7Na -z%GHb17I`wMmx+|1HWuB`JL4O8*bHER${W9?;_HS(YOqi_FMqj_aMhaPJM4IRApeg4 -z{`e`d8%nM@SlJjFnPyFJ1M`P`H)V6mkvrY}7h!5KD~J6FE@%+F<4Kb(!h|3pv0-GR -z91V#e?NCMlVB+nh^J!waD!14e3R002B4a{vNt(wGl2x^F>PtmPgR@@WBiW7h}NJ!Q`r`mg95`nG}^V=U=x#jRcSFf>Q@5@Ar%mf>(H3bn&mfo -z-B4Z+zSg@&%pucD0&~2V-6#rYw}D%Lk0hnfd$w3Wh!SIIx~KUCfrW-7nEjZIGSNqalQ{W&`r-6M>;yB077JQ6SmZ!I)!D^1mX -z{r2UNI9h5{?!%uK2ZHRCEuxm&iP+w5V&~PQh`A7VA4R|d95W8ySPC2OXbQyz!m6zK$-TDsp+p6!*& -zvTK8AW0=W(xT2*5cq$WbZF<-HaFKmJ?qA&h)+faEVE|lXZ`K$Haxt|TNeh0_ib}P> -zOGo6sA(08m-b5Q>C(jPn2f)NqJv3TFogWtRY^)}|UgEtWL&IWLpasv}aAMmpo@4q> -zQx+15*)?qiPg7a76i!)qaV!d^hZ)a-B*Lnsr{bt}Xp~u%NN|p4*WZE!gvq34 -zX#TJjiIK$IM^=JCTs|Rr*{%ko9hMfC`2(dnpKS>pDSsBVaVOWQ-PhIPM!E0@XMUme -zL)Q<`CV$E6>BEzp%9VEWk@47}By;~07lK~+{y3^4?P^$O3$V+CsFKvDz;mF(yeFf; -z*J!E$z*zmow@0eGMTaRGd$)t#D5ln8t93w;-n24w9L-AR0d>nlo+L@&1?K}_im@r* -z5Zh&+g(U{vD{Sz6rCr>(ueU8?JBKaY7NP&Wr^4MyG9-KKX;ovjS-e6v9Oy5QsY0DT -zyPjlY?|yq4rG(CJ8<4_d!+~=M0n(uYx6dwAvfoE~own!M~mxjdWDxKRNXk~a5m4=0_ -z$RUon_r(y`cuS=>5;{zD#te;Yy+(ScB(v#vodB#eo;!-jkj7|0{iy)&93DWm9LeR7 -zisp+PJ2S>g1pwrBMRqt>|H6piriE4Ty|-Jk%ys}0sl%Tt32z)%gLB%{lb`jc#;3E& -zTM5f7vPnlUJ18Nc`O1J=m4P` -zr9;D2&a?8fYb+x?Q|1B*T%ZAjT19|?Tx!+|X)i-4ho$AkI8<(SCLlb}sEPK7##>L~ -zyc$I!$6~I5F(K7hMUdhjj>LD1Lxjkh^dI+hyj!c$yDEZ2D6f75$1WlJooVeMWf6eod4iXm}EB4 -zn%bg(ssS0DtSMBaNIMn6gwhXMUoBhgZ@Cwjd4CZnO9M@K22yt5;d@uD@qCivi%(jR -zpdRAHFaV~NA&+}S>HY14B!~B))(_WZ!|*EE>EYebcQyC{(B#^`f3Ff!5{cli#_RiH -zi!4g+3JVbOy+O*K-VdVC`;gu5ZoM)Liaw7#3uh9PvYtmPcDgGhy|Ua{Hrm`FO6+`k -za=cHNLb!kiu|-}HfF7AV2N}C{#*eB=7o-n}^(!*_Y^-(%Tt@PNXa2G~XzoUM&>)~! -zXV57gDGEw1_}^y5)TCV>LYFa;lly7#5b^!HKv9ikKP{qTIKqa1=SXfeOJqdoau?M- -zUYU0RJPS%30X?uVjHUWK+v-ll7$jU4mzs>wkIQiNGOMNwxq7)4ivU9VsKOMj$cfXT -zITN1v&2@G2st7e&0$plJ2jFhqU&Cxs!F?eaNYbUn;%;*SJz}E9Y9=sb*u& -z{Z0@(9lBw-SUa-j0r!QBX>@MbHN1bd2zkvII5#eMg5kRYu0mmKINM>K&1rKLq5wCdB^5KMM-* -z3d~RUF2eopp3b*F1k}NNcP#hOTIN^pTXCX%cc6%ZgYMrx$0#v`36ttSYv-ht|RG5z0^-(rdY4QCdVJJF-e#58Bcf;!eKL` -zH$IAslqlX;Pm98G@?S*WF4iQok -z8Fe-Cp@ff~lS3uq9-O>gN($OKx+dlM)9GpZhN12Zb>5+?@( -z{MD635)U_6f8pXj{FlDo4==u%rxJtA{tjSDlb|q?0`R?#fY#j>D*%zCg%^}|8KGC+3Rl@%)o}HYR683K -z_WDM8jI`q#G#Pe%?;vAD1A!tlMwAuQw)~`ylLvDk10nrZmA*Rda!m#ri8l!|RvY -zl9~5a8;SbuvDy=f?7P=n&@bHUqtcb<(l@tw`)yD3D^3XMqOi&&?>0!9TcaJ%iZyGT*eX^izIKwj^^e*0irVkBz -zr=CtXcb}Vdfp-m9)|G65ew4~8BpmOy=4Q1(`|UQ^Jr^Xc_x3TUgzG^=2u+h{fDSyL -z&RjFvw|_B`OJuNu{-O~2>_^=c3gkpp3^8|31q?zu{XipAM#Qw`T#+A{X -zeUb5h%gg^GGja9TKf1|oIzjXsh2@JQeF7k=-Rz$J;TB(moGq5(htiohAfZgZ;%8gZ -z^!y(oYJUQ4lFr8O#jK16Z9u@Q-p@-D=JZ`4An)52Ki>7Ls2YX7l(ndr*lu8KGc3Wr -zTEoYuesphC1>r1UH41!=y%F?4ZLo{9Po}zv(-&%vgMgm*@?ACKXt7pHrk7!k0yZ|MOhs(bLi -zV>RIFUR3cZ6Lg(mp; -z0KEqrG4kneTc679%lqcE=`eyexu9kQs*@NpO?NyGDs@AXtQl;P_wOo?VJ??7XQ&p_ -z&JHfd6*e2|3S!_duB2|IyE$xwSz!D-7b!MWLnhAa-Z|?pEDj}_J%GUh;q+eG;Vf`L -z7F(Vc1{rlrW2=Ho>X|XJL4y*#x2LOrWa)r>9)%;w?aJ9A$9)rI&|R(xMiS__sGTsXWiD;b -z^Z~DRQykg0p#X#+xeDN}?Dt{mGICduYXth8YnKFv!Yl&hE9QrE8#^M@ -zqw#uJOAJT&5-KxD?3nqMOnE0To4`onDD9P8fv2mg051e+us1j)UtTGgYA(1JbXfY? -zJ^}*-aVZ5z;+QN4J$i{$cA*9@%lZZ#F69=eIz6Llh7|{hgpk@MW(K|JQ|9b9$a*K4ipisL@5)ii(jy+oNZD{*_rzoRc9A -zciFE0LwQ6TmyiNd?;jZ}fStK0iv;CWi{IC{U4%l5ZvdRn^!}t@9)3=Z&O8hEBVml3 -zF6y*0h+t+7;r-1*B~h>m8n0xXB9c!0H59;{LX~rv%GU8BF)mG>hrXVDK`U@VzEOOw -zA$;|#=NfkQ>-n!6M2i*D^khXGlIEaYXPy@#Fw-D{kJQnoUEK9lDKhIf#^kbS+<0(T -z^(tsLoP9*`x9>mRS!{M(#=LL>+*lpBw@SQHDVZt(W36UgG7Y>IC4gZ?0c2TOYKm6a -zPV>MSQihsC$-D+(kYUdJJ+$K6eKH-&nJ{p^x^d=0Ix8+ku6pHYkfdP%-J;ZPB@qTG#t0LnqY5Zfhj(2a5Y -z+NU~+d#%h+lswU1AVC$7)1?ik6l=W}&5lwf7f9IOFS(VOM9mgs#o%KsnAjJEOxssx -z0j~Y!gzmlVYYpD<3RP`_$m&*YVV$y@O%o;+hb-bRqTD(B14=Hn_ol0qu~;k+@26he -z(~5k@3Y|m%T^Esx-j{9Ku~y%|Cn+*>2@L}WNTT%7_%$^j38?Tb05-Hi1BJGHF*SHX -zLAzTwyG19^T}Jzz3&7pR`|`$VQp`wyStL+i(9F-ppazb-O*%P -z$)>fP8WZOjxAj7nLIAefMw(E1ycLc#$t0tiMQedt01mC_)&~dpbr9b@ndy-wLgSfl -zf?k%;?Bbq~TkEb`yKjm4m1$+^y((RvO%k#&*SKi_pL@teSXQ*AQue6wOh8KdN=xJR -zDVhmf0;o1#iEZQ~0X!j32GMJ!Ir#<%>@` -zzYjE@xFzF_xyA%-D$_?Y+>Hi)@5!s?)Q^b$sh>6eJD`VUdVl}G^rD6u+^Hqu18d=p -z)H869Y5AdSd31HTl>{~&MI~pxV6KBbmA~>V$j{d&k}wLw0ICKg?)-2*0KiRarVlLjZafQ9+>D)e{(M^xuqGKCs9 -zZIE#>^3433z}sG2k(r*oxlq?QRtsB3P_7yfeA5XXq&bP%-NJ00NQ__x;tQQ( -zSxij?z`}^Ct7S?yDU8I6R;(%p?q&&tIyQ$%pE&5cyeU%B1x#>xy`-$QUx}EE0Eale(F>uU1`wddq!v -zrr7+@lOFG~k&7gjM_;1fz7nS>gYTdi72SjrpLPY0K;u(YD(YRe{zh~_Kr1!FR9Mk& -z*)Y!|mAUzBWzttOkZ9SJ&cN}Z)&eY~qc2~EUd8!oQq&%B+;D%m@so)~$=dP_QZ{w4 -z+D2Tz5BH$Ca`0{h-|9_tBrig0l2Swj7F_XW`;kJVPtENT|HEl^=Fe+*^y+s(mG{a@G>yN`A^bP -z(lEyxb?rTf=WhPktQxKJ&nUdpHy!Dh*f;SB6WYpR!JF2(idlU$h!Q+m)8RTIIoAgA -z8J>=zRvp8(kh?<{aHK5zh31^za|JBzgOQQq?GS5gcQAiZ*TF#D4z_31l8*{S$xDZN -zk_Nat(igONu4S{WB&pE^>cqlK43nK?$BOENE&ZdS6WRCG3nY67E(&r&P=d|ZwXjHK{HYzB~MP5z6*N2WEP|4apXlnQ#zn_-lUQ)lzEF9f#EOpV2gW( -z-mk4UBt#+1Y4)3j_L$pmn?XG+it7<=;@{$?l6~-F7J0~2~oncRqI*E%fH+cFDX;y%%!z8@8fJuynI`N -z*TqooQX2_C;zU`zq2iA9mm)y}S|BJpW|D(kUf3~5CD-Vt?oc>G4>`3Sdm{6 -z1~yD)fF_cVEz4xM`Bo%{Vj>_YUo)XRA1Y)QnR}P>t;pMmZ3~7hwd(0qiGjFTHfF35 -z&`M@>i$>%M{iC{X%zZ*X;VHN$aW$8(a;?Fs0^hfN67IL -zxZS8Z>h|^a=7j4nOs5)yG5MEEN}&N7=VV- -zO1XS_>D!u7x$=oF4SEe+a*ZiMFOEhWgnUy9MrB&AwTz%vHJt!QH8Eeh@NjDD>X~1D -zzid1DHd`o52+$_>PN){Oy%VZajzG=BZ|9(U=UQe|OU~Rdjj5vKCp%Et8HkC6j5)Tc+9g -z)>lyj%8cL5F)9{8oAwl67(eNGk-p+H+SPjPNq{`B;W-6H!4_zPZH{oCP;YSo_>h)k -zpcVEf%+wRI*+4rZ#-XUjgsrb8_M(N_PGM#ZhBne|_8Oq(U>gZ_GIFf80Fv0;V}P^+ -zo|OD`PBF=#4d4p|%;NiZeK -z)-D}FdU13IA^&E$$Tbsdf!8m)J>)}@Ycp{j1o(0g#}*2ClyiHT6OQ(DnmEz?10z$f -zKBE=79_4M>>0DN$&)~jIhY6awX8Rdt&M5Gl?2D$!BmLCsl(e3!s0XxfG2~2x3f?VI -zgO6ie=1z^@(cj2Qy-nKH0%L@gGOd_v)J9o)52V=N;9DIjg`$HqfSFq86CR~i;S)x} -z(e6W~Kl($k94_yp#+e6Z!dg@6ANEb9C4*I?dzAM&o!v_0P>4j_4FYdP;2arleOr6= -zgpD4x%rL*9m0_^BK9Sy%WWC8OZBQDM91%YkSfz9H*7|6fVe7zGyduph0Om^26WQ9u -z{*V-lF0p74W=8nYSflPUmU*pvaCZ*P?4XVAgYta7T_&@=gAwY-5_^O?X_;g3WGm}-|D$%)Wz -zRv@j6nn{r{f;n3X2XHzX!ugVE%ST4+I -z@~@iR5y}=yF*SK<7b_^WVI}g-Lx)zwW|Z(Cp;<|Qi@PQe3mjW+7l=Tf_M -z)&$Z#qb^?8y(Yd?<8jggp2$8V42vd^R2aRXlyd6YUck%uVWT0gGFkow;9nB=&Lt#$ -z=uuHGzqe2HKLG}!C*2p#O?onR1E<7!vbbQNDH;UXj_VVmAQdraMo~~-*ua?Cbzmoi$StjmEfe@IjD~t -zdvV(h+!m?dGFG68jt#eD=TvR%3pOsU8Np5jY=9R$P3e=5lS)v;z*~nDMbu^X=Ly5iE?_lF -zdZo=NlF6fpqB})@U)0_%9Zg9g!6*!^4C8GW*N8MTR=SHV^jxE!Zw=_{$$RmctD -z4Kza}{rHrHyUFSlqR~x@r^!_5Gpjow$DI`v@xVycn3g5kw{KBh!#pN<{NrTv~}Tp^XFu=fAU80 -z8_}N(R2BhQca<6h=7)fvpq3|l?(@;~Df$O9%V>z_#LM)aQty7S4pq1XX -zBlR%zyMq1p)XrRbR|cgfKO%c*JV=R}(B$*Tp%l1X@;2FR)3)*98<=!D^n>7`GQxE2ilWmFCJHcg062IH00co@D#r{-)zk?Zy1CS-AF{1VhGxrH -zVyr;G7``Bnc2hn$gz(kLtLlmwbMs4a8s#9Rcc^j8bmSo-FM4H=1U2kOg@NN=VdhN+ -zq`w0179~?^#M7ByQOi9UshBfYDuTnr2~2Y{o~ZgWoPJn92(1D}j;V0C0SL%! -z#m8$fZYp47(x$TlLB>94gU2Rgjcx6nciL-+TJ3FX)oao|cr)}b6e;@&Im#RP5qC*X -znyawa;(1oIv^#-DQIlevNgXa$LcslFg3t_H1=vcPugL#FevfU@q}VxC7!5uPXmG8R -zkD>FRsE7pUBY9h2Xj5L2ImGs+HfVBk*)lo5f1`%BKn|8tuh4K`0`Q==$p2{P5BF6@ -zW*IALZ8!9X$t}?29;A7=mwNO@X=pznfft%_l&MFp8bXzm!iiZq8)@T)TvDStXvn

!1c|-IO35>1HJTHEJw8eT;K9SHlZg -zt#E~*vceoM-h-0APsE4YGBxYOY63N0%s?|=zk#;E(7Cww6Z@lbOBb2vupW+iRRfh? -zV{_*`DzYm2E&yzk`wqz%LMp5NF -zTO%oG5)Tk6=Bj@1rvQxmMlTA#Zp`b@QwEwW1*YJhWd}_HFfewC3e`(0QKg^E%Q;Nn -zem|K?d@g)M8d{VdLe+<&&GNoK= -z7cgWO)Y{(|yKOyxBYlqW(<-vJ{P<}6dvQZN@bNnESq{*SZO7A9ns}#)xKIB%m~p4_ -zXGoS@%U|Jv@>fU-f>LklPTvC+xf?(JW9;)k#$N7{q|eG2{O1{hf+T^9{&7$nD%UA -zNC3sKMtomR#^`@s8pAJ_7QJ>+)UDzJNx}X-^zk2K=WA~6<+o|z<&4+MY=2$jzeEJ1 -z7H?|?36SAiK+^JjK^gn}kFl4By1Scy|NgVM97yY4Px3JDgc#~SMqh7;|BI@h@NyYu -z=k(iOdmkU{sD*qT-C~k?Y^nQ;0+4et=^4sN;}xXlXm3jqBpG$@Us@?h#zOjgUp23Y -zSp3A@FKWtgbr-@139BJhhK>c4_DT+EBwN*T+2Yu(5_LoqshWpmcbRRLDp6*(1#V;} -zswFbYO~DQVKyhGz=wn;Y81RTdO^*946g+u3$cDYSRRN@G@ER<^|Eb{;7S7MqXF{-qpm-~TyT_rtITvW(9r -zKVbGq;gG*V%F(KqXOt$Wr^L4pFPOumWU7v~MnTjD9&$N=6-3^Z77?dJ1Y3A9_8enC -zExo`04H${nI{B1?7`axg<)8t4^#Uh?`8<>(Q*ICMyrF4VL?A5)N3l}_1hf0JCe~Mu -z1{VB^zQcP0Wr-YLIcnc()hyz1(%5SN)ogh3-{?O(b=9o15u<#&#+vhULWtFdhn@l4 -zadcK_4DTNkyQtqKKkh1k!TKqAx+WpeiWK1!?S{r5X7k}rfxlKMnbvYd0(<4ij;SBe -zGTmH8z$GP`9}@FvG2H^)0ynt`-`Ll)h&j(0`&}5?}*27qhMbya7{=eA9-P`I%Q&+ -zR`dd_2utqJ_G##V6qC!<@9+OGTnog7<5YvzWilG1bgl?oRbtJs(S2?##mx{=tz~Ap -z_Y}?7)&c7s^eY|{7{!baRg57FA(&Ar#=R!m5FUXUp_i=zg|;<|;_tkaG@FnUOvaQ> -zrFBuzd)2XHWl$SON(~BIj$)HTI3y6yni0mdjtC+$uFNmhgo5~tixf}>tgoV}o;<{& -znw<=%F44q@(KgHJoo<+d)$|Bva)P%J-fVthDAp-&=3i -z|H%F~ICuF!DKFRtM8MH9pYoyY;yOHl9(duH)glkXU2BaFYWRF3|6~&jV;ct)s3*Xt -zeM*o*B@GGrvjaoih@d2KwAa0&KV{>n-@VdDqE%^2eQblUGY-PSBeXn-xDBLa$pA2J -z8-&cBNO#EYqzC$P4_5DfH5^pwyyNr<@7D+{ceK1Rs(e62w6-f4u5dIMi57tZbce|F -zCm8(6-3<7D^830e92Fye8|d6O1DfV=I=9RsU|YOMWIlX~T_)}_#54|v>IGJ_nRKjd -z;?guTLT2(;%fP@OkwcL~>_|Ls2|}GbmXR-hXgfp^$dy$?%K<-W7^e%E(k}^#4<^_= -zWBym<2Q$*pRXX+F@D$(BChp? -zzG=W%(JB^iE~h#=2QV{~Lr&W}x^>0s<3h+>V)%vfqv`1k4>(>%cM%Sk6#Pq-mwEP4 -z>B@n%YnY|)9wAPE?%6U03L#w^rSeL0UrQ3Q3SFg9U&f*LwD!LC$_;sg*Bff63uv`) -z^^A#|(YZl%m3W58jGMpY+Z$P5kb(&ao(yk53 -zMs%CvaRG3|VuLcn^7)Dq9S|j$XJaa+FfqQm-HTNuwpYG(a%hQVV6yaLy=YAe -z`XO+o3rX5FjogBlLI-yx-zH%TxiAV9BB1MaUIF-2u%XjH0k`Z(8~W{`e}m_*_IW>J -z1dWD5_C(qn*2m@y9$QYiA-bR)6Kd26i)u0%=k9V>EJHH0n)2tDZeK6i$8k%~5huRb -zg3R`y`&QTB)f+caahL10TewVqB&l*QdR*4)z=Qxy6lHS{xLRLM2v?YosBxOQv>7m# -zZ*vFT8Mnr#Gj8O==KY2m`lFne0;x=onUZ}mOBeF5DAOEJ8BVVCQ10>y?AsH|x8tRP -zQ$FHaf@D3@Ex>Q(rNO3f*TU!B*Sl&2~qmaybKhGZ1L^j^+HI5as*4hQl5(@3Q--$%H0;)17bxy9JUp;!=1pi -z^;PkbaYHlh)|WR@;{``3nq2P#Y2p(xJROuPq^9W#=b53Q2z=49ToTL*cMr7Ea)H8I -zAwMfW5e=-Ub6>CI@%gggsjg8Djzj$_*^NW4bE$#wlMG|c!%FQhUU901(yE~^1nG`) -zq|cbnv9LdLCITO)wK{fGLXcG;458_JOmODl -zTV5?drPFyiUr9$#(|=r5sOH;|utaifD1F9P -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 -zOt+z<4GNtE@8?#eg__lMaS{ctW;}vn@ -zO3@v<_=8(7mA*E%Z*dnYA2O9vuq|w$F&JPcl*hU9^T&@LjMnweB)!85y&WIn!MO2b -z|72{`mIW}wpwj&9TveZAwqW6~etR6Gb9e-ugkW+D3WTx1S~xaaW~2Y7 -zZTbYt#wJkZ8E>>(o<6f&F{DN!xguNa3KX9l(@f>u*SOv7@`1}kIhgzvD^k$C?)sHn -z@xce7v{`2nFX%CJ$66_JF>nKE{{R;RaG*$C#(n)MjidQ~XGBpP|Mx33_tmuZxZb-G -zX8Fj?BW$9Oy+Q^^cil)if7#A7Q@%)&0Dtxtv~_7@#hPf14sLR+;v;q6$ZV3$IEPh9 -zC;<>TDNrF6@3(##mGmjJq`rfckaAI|0?f#&we~o_eq*V`Z3~Jg)-tk-dtzfJrT~B= -zTVsbng99CKyFK0fhR!VXc?O{DBb3oP{+Cbhb`)xCj%G=-{4(r7B!b@;vtz9cuZ)f2 -z1i28%Z27Kas9z2|M64ZrbB4oUpwcG6v}r2_Lv0Kw%hsTwTWgmB%4*uZ -z?Hxby8kinx^xx{~Z7N*pIH2xXdpSx-oPAky^Vr{gKQQ3J({{ylN)Ij`Sn7;F?K)Tv -zcyE6NC14k;=UrdvojmW(GnRT4H-&|wHzWK-C4pOPp%Tf#%&QO84h#?ud=cfpV>szf -zbSyd=S^*PZ{FD6JY=|}_FSRLXFH+`%yF($G-GbWpvbXQi#6G&6hyVAF`HUZD!vd+Cy~9x!=rCelacJ?;hSHY%G0_b<3xBV1&&vlSr~Mc -zmI%|GhmQa4(GfuZe);`jY#s>F^ZNxPD==CHjiTQq1Vm5Mgwz*g9;RboJg>7mxWXE- -zeHdlIYJs0mx(OCxD%r?Z$*YM`OzUP!y9IH(3#|Y}K)S!pr8_R|4t#g{$QLbGEPaC| -zE7IE^Rpvd|4 -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 -zDma_#Za|Dxc)F$15QG8!{j{ -zFD44xNAnL&n2JelvRcwjN0O0}(q&FfL1L}qIoY?les8tJ8l|8|S?jHd>e{k7j5wX@ -zrvU=L-Et~ZhQ%{Z<>YQqGH3BQQJ8TE%mjeCpvusUWIol@92Zhj$hKYXjCd!nCAzsR -zoaP$C*b3{PUV88svWPip<1DMLiK-+d^?91m*<}z_Mzojw!CRqeE;;7AwR1BlYUqFiRKq=(i;I|6Y>ks25R8408y+vY?UC~eIS5W~)N27yH{UhTOX?&8 -z0lE2<`GizRi-4RG^fh&W3YDwh}Y`7>_j+WXPZ(AKh+k$YLVQa1Um(xsHkxLHL -z21K&~AJkIE`T;VOM};IVZK0>>a`NZ}Z}g0V$`w6GuWjw1p+vAcT;u%=mIbGkp6a0t -zF=TuP=Caz73%21(6K7D?WOTEeWj*X2GLA!8v<9edG0%#6kxDX_*y -z_CDiER$zfrS%6ZmX*S+3VWquvPH3gz_CDP+8f;#iM}exgNnx|pXGSg5!?E#Yo;EFy -zmg8Of=5v;o+{9F*=aEo1@X9TY>-7$ii84@T=&%Sdj##NELj+(ZB;d6bN_H7m5&p_ -zI4y%7Ch&dY9mW`DRf?!xnUE;vf?1lM&5Gjc{ty{gaT!Sw_h#iGQ6JH{)}4a+Vl0KC -z>5F!%LFo;yEQ9rf_~4U49+r5QKYrW#gz>R5R+Zec1e<0y5LrC4IgRkNH=^MrVOuEH -zqThqb>2ZAS&gUyiqiUHxX#C?{{Hksp$sV!h&A7k|DzMCit$cK;Eb}J(BBC)w6n)bQ -z`L%!}U}b+GxoHJAu1S75okqGn42)#Gj&QClb{ntb!7SZip5BH8q}q5v)n<-8+Tfub -zd=)hIy|PXhw&c(paqr3Rkw^~zV$ls`grHMnS#^4+ebII42Qrpg1%1tNH1ljHPPggf -z^E)Kv4Rwfb%c6Uu<<#txfwIB<$`bg?KX)_~t^4z;;58FOih{n_N@(=N~86cQm%#vCD`y7aG*%2OI88T~8|iAW?fWF`5XfB{L^L#%~AezTYI-4oJl& -z78w)QCDtxlwVUL%s-~>IR5ptBk9r(#y#a8+ilx7rIo{2u!D>MWO>sQQAX81+p}2c;Eyold -z6MwmtqLrmBiy&MpbLS9s7Q7A;TdIH@tZ8Td(bcWjons@qrdO1ZPB}M4cJlKuL(>Yw -z6w{%oGN4xiSno?6Q!yTEfg;hsk$rCH)7-yS8GL!`xCU`^Y_FLJ1hzxY;EB8mG$o`% -z_4Y8v0S3=8;40-j$+Ue4B&YO2z=*9hjYodd%6SJ1dNYYmLm;vd$@0 -z!HrzBTXIrT>)N=aPN%8tnpLAG+24GOw_SGN^Wa^djBa|CO7x4n4DMpMiWMp4sa0W% -z$G5-h2+N&ky2I;=X;V$ -zQk4thI0quJOT`8`ay|JY)~YB{o*eX$ihv2ky0+)Z7A3t~bCQK)CVnKlS7mk^=$%BX -zXIgY>dHo<+-^4LBQpq{i<7Y-%n0Sn9L-bqRh@C2NJM;l8#}fA;WlmvvN7C1Or>wC< -zS8aa^8>VxI5fUoYXjlfdc08mb+0oZAsJl4~C`sYPKapNhy9ko6b_>|V9kW8zNuqs%u|&*i7l6VD^ce= -z1FlRyq~R34Snb~BZF?~S{_K(Q{cLY7P44S6{E>6N*LIB~L?eK5Y|CE^78E$#!XW_`{>_VkZE9r;vy*-7owlt2F@YJ@ -z(i2E%7?0tsy;km)b|v5IJ=_D{h9>&@2+(>mgtSN<;SE&j-?FTg-L0HZDMR`3`D5OP -zwNS5X=&!dTV6tsCWR+Kx3 -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 -znv4O&EX{W(>0AaOJ2R!CP>eLN_4P -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 -z8?<%3i2qT0wrvF4n8wIK1Gt`= -zP;AH>+jiD$%S;QN@t<`JIX<$~@edD+imZW0!$FP9nNuMX&?|Cc!Thj9he!zXO2WrGM8roR{?Gp -zU`tK7qVLNOt6{Q=QQ@XX@Y|ukESs58Qy=**LZzH~46_*y*fLBI!#{=|Td1O5b>v>T -zWv4e(S%KvH_wU~qks+t<^q26$@$p5UyA+kQ{k;$4L*X*2I^{G -zuDx`0{)~HG&?Ka2A9^wkpYaL(EbRZ{m?SMS*DVK|}f@~C|I*oB}m%UrA@^R(kja^slP7<@-Zk!@gzM3li -z$ZOcq&x7(L1nOz8H@koU@J&zbad1YDJhkGQWUL@RZhP6GhBEA9aR!Z$IR{&ED{FcR -zDUhlKX^c)~-$M?!u$B)%s?VoVTZfRHaOD-J5IF%n!iF91pxn$Nv)#YDkPsbo2urb*tzX>3*M#;X4D&|j}*c_}nV{U5uls#WKS -zOQkzE7jk&xz^HGD1-&dNk}ArTpCO6Z)08z4bb)}A2fjK -zo3xGM)uNI%-mvExRC7&(x~uZ6$=E}pw$*r7m`nO=CHH%*&U%_g4Fd;@A00~J6soG? -z!!H*SCwkTc(9K=iWj65ojo0IK*{vs$lb*#b#K*dwzp#+Ee<~)WfxVC$6<{j!E$m&F -zGp{HurTYP3V{;lQ^3xcRj^DD}v?Bw}P_JqfraX)F54|u9uD7BQse -zx%|S~d9aa+djb;9bh_S3^XYOIg=1z_b}Gp>9E^WxD{pmU?U-U;wL4JNR$jGQ$aIn^ -zu9i==vFxLtWT)iqTzfQ^kQ}p;ZnR3Wc+IyhFmvS(AS2#;zb@Oqr-9--V2B@5XQUlT -z)WzT618()QKYbcHDhoyO5&C4Sy|{A>ZkA@%$PL$c7Pfvd{37}2lk4v2f0qKa94J5z -zbid`JEphaW&}7Ov50!Vb94m<&KycrQ6p<) -zc=$4~SD#(_^M^<@{Q1xK?H)6P -zmVPA~So4RQ3l{w0L+${utB`T#tRs<+Q&T&RKvig$d{k)|we^dDDb?iFhfEsWaQ)N8jfO$I$yo8SBiH^)4s+y_nc#S~h-Mkv2IySwkFyx*T -zBZB_Caoo1JRn$AJSJ$F~aR|vBP>GOcxNCX*_~#^YXw8*t8#(Y%Xywb1R-^yL -z(CE79{I!krjvhY>ld^vNlnMg-?4SH3sFx^yzPS{>BuU<6!b|J{cXeSVT1`N~%qhPP -z=JN?5WBcvK`{l}s%RGHHR=&)}x4u|@jN$9yj4&6doYLOa%MpZMSE0tR_^E)Rl1n+@ -zQ8`ckOO15RUmrXWWYa`~L={>xKUlh0|3w-dj4@J%6y7}#kRMZ*CoHA%ZGzC1PD*U5 -zV?rt?+u$^KWkx^8+`41!^)0CsZpsWavIx{Kl|ML%`3XXWFe@xrr6;`?SED -z*mV9f1*@dtW4zhZwJ{hNW+Dh9D~}Wx=`M8PhEofmssxo^cPZPIVN1p)zw%hvif2R9 -zeB67Ctq#QeOIXWfi6JP#_puzPKg^%6mmfdBpYDC7f$JarJ6l1`4yd;aSKSoz%%gAP -zs(+2BI#(?qBmZG;BQ*TFrac2)NJ+gf^)MMR0H)kbT1w%ijFGHMNl$-eZUy(v!%Hrm -zHXV3qBiK+QrWwm;wlTdDFN@O!WSxX!9iY?%McZd#NAGi>jg=!OG!U0kXvjce@k$u~ -zl4ySYE&k|=3*6$iPewUNM`cvYKQ3f~>7R3H+O?PMn6sZRhsDRgxZNLus{N%EZu&vt -z9Jl`_`;ODPoYT9I(M|3nZ34B2QxPs%$j2CJ&rV0WVExE<;iFS1M9^b~OV0MoKrV7? -z>jVTyVwE1Um@$kLlYql)5|JTI>!cLnGD0F>Q4`431^#mpVQsA#aZQIAyDbed++E=) -z>+l9WEKe242VYY9s12{Hqy5rqyYk1rmh#c0<2 -z$D7nxjJcZ)#X+YD!NAFb=8^J7<=AEnM|u7%?ph9_t&CM98M_vI+B|Ga$veLDViIx2#@-G?|| -z9SP-PD|SD5n)s7nFRQHkH=6-nc`3$@T|bJS(xK1tq|vJ*R90*NK^VANVEW4=B*1$+ -zqCHWVBZx7_T@!X_Xo3wBtIOP}>Hg@jIs_RBnO!axX8CQD&)&W{FiYw6vsE*5? -zyp5DM7Kiqq(|6kQQMdW?!1ANCh&xh){#BQDz#2ew$Bvd*KK;TCwc=$LeD^$l2at|e -z1&)!hmCA}cS_enk-{Of}o&V~(oCaeYSaj+q;rSd+hL{eWeuYQMw@Geu@zCq%&vFjd -z$6|l1NH@vNZ?24Vc3WX+cUvw7?@(OO<*eTIqh##4(oTZHCI`K-YGm{-`Qy?60(^~S -z4Cac+4Oz7Lm#!}7=&lX&rzjgMKIft{F6_!xY*#dFU1N7@-}PfCzecxo7!osf9CM52 -zpNb&kDb7c;sV6a1*^F`v@Rc!r*Q*uva}wzsvge_?THZf?F8Lff!J9YC19RYIQ~n|V -zGyt{mGDg4F#JgS_l^&P!gyl4OEN{{xxGuNiv#myr!)Y#M8(7N_^Mj@dxw$&g##|3n -zk0uL44#|Kb(Ro#ZFvCJw%#ngZK;(D9SenPkF{tta}s`1LRv7i}14cMAE)fO1sJ--W`W1=DFETbKm4uYD-0jU0ZJd0-v; -z^ZEUB&Yz!u9hY}tqrYCxdc0od@p_%dUtjs>b>LqcV2Uu?B>X^s$`=&=Fk+wVsc>sy -z0(_l9m|qRjy=jr4I=}>Dnsy$v;7%IxN<_g23UQc@0WH|MrdXO7<=z=aImO)rFQiw* -zKmM~QzC_j}KL#I57EF%&LR5b7Mlbt;zxKYgWf+@~U&e9YK3<$#8By=H53XD;blAzBrN7p=52w%Se%Yrq?LBQ)bZsuD-T``yhK$j0 -za`<}G+>?#p*ire}P)JOWzq|6?_8amPcC*{q(3}1IUA~GfDMf~e(nJ0Bqt&nK>yHh1 -z)S`xjY)zzZa4nDHC||K~S=Vpm)P_aBMsjB%%WNvVw}CU^!tY}c3hoHoU?sKQwS`I< -z{Db_D;y2pMPf?ktKh*t`fG{X2dex2{y=-*R=o-xWyWQ<^q#*JrUZAvu6_3G -zQ|4l%$pkLd;BP3WEq_QqFoSADn7K9jS<8eK?|*cU%H;sh=$?%$y%HHX6U@lq=j&OY -z|8>@{V!m-$`o27}&P9NNM{<$Y2wWVW3m?YjVNTZwz|S46`UniEh3ufPRV;v^<0*dfvYHVKukwD@M>dAsT+_p`mnzMM!q>EvAGY{)EBmO -zudr@PVK?@tkigg%QTTBzpN9jYNTtGj(zCJc&UG|0B=I;Kpam2{d8G!S-Y~ojarpB* -zwoH=SwE<3#BIUUx#19%p(`uV|<{5cArZ9yx`K2`mBs^dCLaJsuAC`AvW3sVdK1q%J -zd<0uMdwJvXVfU~%VHyu^Zu)zG-}%1Q+XQHA-2ajt8n;I|Ymx4>fOQms;Yvp?w7-K^nMEBTD{?yE#Y=6rc%*I(zwy -z$#ueE|81&IIUK;EbiT{nN0s-R+6X0~^?yjg@?#Zvb`i-v+eLI&=@HkDLr4AhCE4__ -z>#Q}25=|x2;TEdhNWP}dkAiD7p)sXU)O>~O2Y&B=C<&SZ5So*0(!-rRB$G8VRJ=VI -z0MV83AmRuF_fsqeu!&2VFh%5^lGx`FvS{|zg2)px(mA;@0g7Ks<|fdX=}9+m5pUtY -z)KUJhjMV4R)5|&4VNT~lrs?)^S{p}Y>o7J)nkxF6jFRIe&K2ACvKT|E9TeAo8RCwZ -z^AP5chW6$y9Dl$Ly?*~s+y -z<{Jdy^$ZX^OkFD8o8cUBQc&R|WDvl2YYOQKoAG%}I)qMR>wlfNp3Xeg6zO0atZ+pK -z3OjLTlf0O0$XNep4$oAzZSv%R58M4ESE&SK4ETCe40 -z=dM2TIf<* -zK1-8o`82)1{3-Af|3e~avo8HCZ#*?C?V=b2|Jy;rjiKwpi_H| -zlr6qhcq5vR6t^k*Jb`q`n6cz7LLFK<>gr} -zM-Issxhpv?ULOq<2hLT$KOX7ta_!@oo>ATo4szNTSR}T=RyU%sMw46RrT-dV%MZf8 -zzu&*d(fD`KHtJB_bUKs9T7Md$r8v=i52>h+?+*6!FO6rhQCZvv4$Hc987LAQt4F+M -z1wE}ynNJlB`l}$%nE?AXbauPJPaq@It+R#!U_4C(3bqzxu6;OZ_q9J#WgZ_7q`osG -z_sWc!NDvi0{6m2ojNZuNYQt$xM>1E)H#fSN6%7R_Wo?b?P)5=GdCORhv?$3tGM$wV -zi=V+*WD1n-JSwj0%i$@{T@3%nH;V_Ov6+6ie4bd>r`teQE0lTR(};bEe*E;_m~q&) -zGLRJkTa{YLIWUoV*ZA;mPy&4P33U&$<4IZSt&X)= -zr{~hv;_&ooF*OG5LpD$nb5h)#*B&3{$6P+j4Zdve=ffXkwrbW>iQIZxQR`A><{&#? -zoLvU>T-gl?3H%ey)64pyNHj2`Ms%_n&4~1_Rb>^T47JGmSt*kYJ#OVmGZNy~bj61V -z1{8sMu7oackB_(a)6jG8Pl1{92)_g#Ia`-9c9M-e(%nBap|ajC88VKJ3NWQR;!{{m -za(FPWl(kV`&_!Cl13+1T*D52o(|dIlNj!@drqOC|I!h+tm{VC>@IxM&!RoSQ0_HSi -z$EYGn>q-vGK-E^QYax!dx{lVd?#2rmsXOhtL1t%)L+pw)sI*aP^G$Bzl*y1UE$3*| -zX~511ZKyA``93x>`#f+wiWkVo8cL?!Ik-!1RQC_ZsdR>AK|1zUf;58jhdetFxs}J) -zXif#w@zs5K0{v5&1!iMXX4wI6J++348r(7xV;VSpwFrb2fFF!V^su|0T^gQuM*GYa -zp6Kwe8RF&q{nyRG{Eho|<&~9EvjC0+GHKe++ZBu9^t}TLtB7Z8Am&b8N5XbxqKJ#u))%9@cwvdr}`&VX~c;JGdW2&-R{4^Aa)%r{YdP$C4In5o}AJ_WpP+ -zcA?SD+CjE^ykC9k9PQlCNx~s4Xy#U#x6df)0iPe|!+2;N2VV-}eRJ1)5GpxA1KVz# -z4bi`g4Su_vJ6LbO%Ax>1c -z(={#MTVPMOcn}@w*nF2O0Q#kWoN+P4vJEK3(xgbg>akx -zQA#PY0{ay~-|5AXx`FHPILEb6m{nedmd_eoIbX0TFXvNk@pOS(y#4r|e??Q={G_b^ -z#l636sZ;*8J<7jTrQG(RK80f$zoKv`Zuj!u>c??tr6N&W<~9tQ0XZ -zEjB$qRihj1!T-b9pDam^Gh2h;{(pG -zdUOCli|mps_q!QR7>!1PfX;eOPI}tN=UAQ(ak7LH=xHZ{`0q&1sxp>g(7)=-QHD%)1QCYU&W;S{ytfMWd_=r0B6*Ikpl>=mt%nBl*dMBG$}tXFrsLO -zdae@i0_U{=@g@V^UIt!Ipx?V3FJior>pg2g0U70#i3UUsnknSMWDn*hWmK=W?%&Nm -z%G8bm7G2PvJV28|et#^n%4@{o=RsrB1qA_voLq5Cu&Flk5njMeP%7Fp-do8AfY0FP -zt}|0>T;Rg`(Dlep-3lNSx{J1zb(3p*7{DZwQA=yz?JpmUku)M%^5s<+&7XerhOEr% -zSc#LzgEvNUe?enmcfenN3Vj!Q5C8Lap<{AQXc@SQ^s(!XjD|xS0&h22bV<5_yCe#+ -zGY{L -zdpHGizrMzLjb}r?`|B%w#yD_`3ElF#=Ts0^-;j30PA;Mlv=m~SQpNend9n_E^5RGR -z-R>;xOQIX2JzgDWx&uY$wWCOyK(gAx&UOVj=TqqUn|wJYPg=BAO;H;d)-Wh>Au3U` -zvF&MNpPTZmfUsw7>J=iCcO@z2oN8gHK}qT|y1z#w{gu))Bjx3N=$6HkU29xFJZAI> -zMMP7=FPW#oomTKMOA9D6*}x`bmiPpo&74C8;JdtR=4{dx7}$8)$QaxbUtC*I{bVZ1 -z)JR6E-QeL>C(xs^C&!1zp#EFAD8PuaW2Ic^o@#Ca6|)g&7 -zDAJ)h(o)YO87y5gaNq@B(GUDe<>psp_5YNbdjRG$Rw1}3NGLR5uD&qX=o`YepwD4W -zo)c%v5`bXay3rb?an2ao+-;OW1|xx^l0z}#136(+LJN~2?rzH`$&Ud5pcJQeUh#`V -z7zeS#YnbX{khwe6he;`;qj4>RzR!nP=f -zCM%+GU@`v3t|SScxH0MJ>0Yjci*#wJE_|^Z7B?~>MDfhq(YE9uz5>3jf%eHs&qBu3 -z9M{q|Vu+R(hEDK(&c+;|PmQ<$!0O6HfqC5%GZGE`KNRdRH+}D>>ocHfL6&!MPa_uC -zWqZ(iUi^!YlPOspE&bx2aG96=#;~mszfoS%gWhT`c94vN^{!t5^)zRkt2H -z8=HSzXY@YL3eZYBD7cqt22~h#_3QA?9o)@z5p13usHwOpMBaftRBK}Ni;?>=pV -zVyajdvK@C7w`ktQPPiJ@Byhv{5JoFN$CmHwfQaSKip$fLNw!=#`A``Jo%zQO;5l~F -zf?w^|1ff_RU;njVHjXlm*)$bbdW*~Jn-__-Z?CF7x^oB3^#!x6OK#^yPKl1? -z@nSAIQV*NX^~-xzwNkFFm7C?7a>y?{ksx}?*MytwUL+ogeqrZ(-R#OLmR>!Z0>v$E -zy>D6Wzs}0OzDN_giN%-FV)Nq=*5SbnoPWMXyhC4JU}7HW0rI@OJ60g;{Gujk8O4hL -zXKZ`OoEK5=1B)HR{b_bDAeE%2u(9(s8s^=q#>;KBv^{wtUVaT2pjR`BMg*nwa$e{F -z)%74@QVx&jF8dRe!`IzcF$&kqkF7I8T6!MGl^idq>#pM}fJYDS+`U~wax*)p{B^QWynYJ?Asb`m%3)@`d3$;1 -z57cDKja(QfU#>`BW~kBxKuc}`V+6fEKfN;A@Gpi>L&BKxdY3#D=hq>`qAm)d1^(~) -zqQqM$oE6AkS8c?>n?LjeM=3CMmvd=R)tqwoEInTCmNpoDVLHNkRd;a3wim4k3YsnF -zl4PPuiv1}qs$H$=41ElGk-f1{iIM%N1BTCDoFHYhk1l -z?=MT{f%Z~T*QMnKP;NNeg(2F557T{Jx2qKI1N*vsT=I(>uTImITD_UzX_N+Sy30TP -z;Pg>3R-sgkM8nG_#tHyo2onO7kJ0=GDKl@X_-2dUuX5T2E>+ux!)we8J#Pi;XcLV>icazz0QPwt>|>{&c`F0b*LetQrO@-(KA{ -z#y(f8=(=?1fpw)8FOKBNEc19#G!A@L<3%TqZoN8G=t~=~k-kqX+m;TPN&z#&NAxym%iTE{ -zl}_o7vCWqgDyL(~1R0e?;XaTiIMDOct|);&!_1kAblxLqyzViq@>ByE!jk4}^<33I^=6t~!S;tr -ze>rNP&sFt@)E+$+1Ln}9Q~Su% -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 -z<82S>c1-zx}rjzY$?iUewtlF@- -z-rOOO1JV-O9=oTt{Nt}*(vvuP?&x{j;nVFMt(Q3rgAWxK7t#-}F(Q(?>(ni4nAi?| -z^EJ)(v>mEi`r#X+5@ZEDu}h#>{*H7EDK}wM!KWunU(zO;OQ&~ysHw`U5_*qbD4j*G -zMb(lUbTi9CPFoRyf)1o(e23KY5|=}QMo758c~@_^agVMfB4?@yXedA)qT0q@5iR{? -zkCOE?qX-tX2sxw`X?-o8=72>a_ME3p5B*KHSBOdWlTtc)Tj3H7`o8Ht?ZbPNrb2#A -zDR}1^x~j%jd7pdQ^p-I~@E-kYSfM2DxJe&3vmu>e8_^nDYrMUgpPZ&{Uwq0t!CO{U -z_(^sQd{?O&7m$bAi0w!%ONRj;e|0m~E&ich7r?^dH};IxU7$OI%`f|CMAtuiP?C!1 -z+zt4k`{8t}lQAFfUc|5T(1tZCs=&W6$sK&NZ6He>mVgRn`O^)1xML>{3WB(b$b~j+ -zBWkttomg^hYZ38#etR|yT|u%9M?j6>?97vv8ySs@yQA7S4yXlseyh#~tyFb?GD5|Z -zY}|F!u+tMidmx3;_ulMid -zF!@EIC#O4t#r@K!lk -z>8MeFSAoVW0X$^EojbbM#h}bd;L=W)w`7fzz8)}e0Xru{j$3;*nFL#Yw@AlK0z8bL -z`dEIXE#Xk##IYX#$rq=0EOv=yA-?@>(}|sgQJJQ3?vC*Gbw0m2TJrG6$tm;(+D$tq -zQIxz*yM$~IA~~wGf5X&in3+670D+L*1%zzCEjirCL@wUlIPGZbo;Sd9V3mr)^gwfu -z*u_FOwx_BSGIl+iC8BD^FPXD}nKNyz18pA#x)HxjRwiPYQC5|p+LDBEsM`LUV<8__ -zt+sNw>29{97I5gKj_h%@3_EYtV47*uBLpL664uA|tvelg6TtYO2NxT*Jr>OytFs3K -znM7zGwIFeZrq^f)!bUUAzkDFK1dX%#c$iM6l}C~k9y&e5m%P@)efwe)C~Xy5G|;MB -z<2ef?gTn#j%ejlvWQg8-T4}%k{;4vC?AXy+Z|$luZ5^4E$brLhMYA@D18l0q?n0DZ -zP9>2me%A&PpVn$rc0^3JsKBu5leOgHZ8X{JmTn78+F6C&Y6fX3i7spF6mPM}j!H4t -zq3nrNS=oQgk)DQ?@ce|Mh};I&KyoJUP!nH}J*;l0AfYip`I0SyKM{x*dzzM`ct5H) -zmwn4jJ>5hKQa9h~!-N$%tbp88OwlJa3* -zqG{gz&X!-xu0CCI6yp_!Fleg=lO*DBlQUIW5+12YQk&c9Cpi585L%(x@1(|28BeR{ -z3riDmq&Q4g9NW9S4XHq-3Y9B^wM=l1!ilj1OpTb=6VOFEaDk)z`U^L^0Kgj{HB#i) -z)_A1&Mh0%<+aTcyj%WI@2H8`si8tP!v?1ZhB72C+po8aT4I6E^`F1e$1Wni@tiwS! -zY8jvTPE+Qd>|fT{t|D*9UGz;0Ri_U$_*+qs!y0f(wv%$>U{)Paf_3MfLEv$iuO>jhjPOAtK{L(<+`V1P3;#L%3XTJY@ -zL%GT~)HIL=^W$qtsD0O<5>kme4Q%08ai`Vm`3-dV}-QsKQetP`-`zOV(5Q%WPG^As?$%3*^dsp{gm;m*nix>qS(7Btk>REjQ%o5|rS#gSWfUYq@b! -z?Aw%VY_i@$JxN+?BqJ;#JQ0{E{VY2JYk{^hqTXcA(R-kKz3bhIbSJ6)3CI&N -zn>%!O446ooR)pdLw#OUip>yV)RQxssZaH}%)6DksxJL)ZXpSn-W~(DT%Q4aU$rJ#b -zLd>BioLPAi=4U2e=z-$5b8JnD5*vnQPQY^r7$(Ey0DU2AGfQ-KUTT&kL(erofasGhqsTQp+q8r|nCFMbc^ZBvRlQFwx=qRJX* -zV_X`*&I;g>*5g!#ygCl4LEVk$pmU?4Vox9qc(Pmij;0+yS#*Nm$fNZ|#(||Bq7#=91p~r*dA}$6WDkm8bBg9uUt9RC-#o3Dd7CG?3`%X@NFG -zTU>yYkm6~zggAn0CA}3RW0ESX(Hc?jxp-972ya<=Autr&I;lU3q#nu^N_EhBproez -zQ16sOUHTj?M?Af?6C5*QT!sNG73CI~;)><67ieW7jV?hKlB}uwRMA5F-F4wg|pSUv4=+Zc@)M9758ZA8cAiRb~LeGN3A;x9T;{DS3A? -z>RTiqt0g}V#;yx^TD0&Zy}FtC;xzb^)ef10XnxkT%!CG@ZSz_x{fP}Hkf@xu15(Rw -zqM|}vUQ*N!&pe$Bn|RB`bz}!kFwxmDK(-2%uWuo0n2*aONNN;0aI((-j6=`A^svCY>s=URWh$dtM;VoeykQob$lAq)Aq&v|df%HP& -zq>drf2m4kqW2NelmdH03w%O0|xLf!I3F-|MmQCuhx-;ZG;yEa`n7j3qa#!|c=UEDz -zO^6-SOma_`b496)?K -zp)GgmGR0+96E=_e+_UM`XuRE_D&^n9NAndQWClF3Zp1JbmroL&T3=B2fz+)P3h_&u -z8RNj#hW{e53$8U7We|iq&T-QLb$n<^T1Igb6ZDvt35*CCtXAfNnolc!<2v6C7;QS> -z0-z2A9lFsv9rt;pOQX`0)PZWgZ3@^rSY2##b66bDVxpb7gj{r_?C(XnP~q67>Y4xV -z|Mh?N`@U@dumAnOmyx+CasL1QKmR}fYdQ8F)eoeaT>wv)mAKD{G^8NpJ$j@r;M^r2 -z3QcIRjJ}c2jYSUY4=X9 -zPSClI_ysyD5Tf47$?x3Am0`5#>uUS?*JU?w`o3ce5u`%eAVyD91m?MN>5KN%|pJWNW2t+84y;*w~(OJ?S!+Z2}7gmp_Vxz=Rw -zvCl!`IP}g*Z<2xNbo9+lcEVeA+MhSF;8zf7tVjBE=q^_pp6O&Tr0&;~r{>$x8Q?yR -zcTsoVhzfd-jjfUzfjQ>ZqZiUd%em;YjwUZw#z{j~U#om;4r`RPY<;_9)uR<9-krSR -zaOb@GWdp#-Bd5)UJb!W6G@HPRG$mb7Z#RXNHn}82rpiJEk8RS1&sjBVM~V+&yK=l+%r!c}G)n_kVF>Wu -z+Yzl4az_FiyrfRiK!GF*%`tz+jar)HmhlZH-naP^MY4$Wejvo9U0Nw!G`O3E%I;xv -zF>TZ=85;n%1U$TZ3!SYQFAdh419XPIK@uZ!5wR!ZOMQd1FQMMx@J)^YX*69qn^d?j -zeq1!|6VJp)BY`ctf>fWQa2_e1*vpF^q7tJ|3yDiijH}rpwNm|J`>MR>znA`-09SAt -zW7!p#&HJpz#COHn7U?H%!dSVNj#C~-b6z;*y?^{Cm$g!Hy+KqRu6BH -z;VL)+mBV}$HcC!6*W9bBrV=^v{e`3_)ge|}P8MjTLgo5kSz1?mJVRNfr3 -zwP^}QW%t;V2`W)GSu*khV9v3fuW=8ksxkqJ>4a=#Q+*y -z^~QEA>M?+kXmdA#O-8M6)HaYsS-H<>W$x_8-8|X#ND*@}@fwj-B)1QV8sA{4vA2%q -zixf-dUv7}$?f_J4{C_K2B;Q~t3$*ppF=X+iem2KglLOTyk;u43Eu~l -z`OF-*9b$z3IJM=NR)aqmxUcThIF$`puTIUa^W1r61 -zK@~`E$|jt*7TC@SIARL4**0`viOAZuf*27@1k!4s>gQ1FcN1uIDcc1JCTe{cTG!fC -z0?m0a>P~pmt(psCGjYt4TgXoI`c!DqLo}Ig_t>mfY;+8OIfPjD@bBv)8UpM^Me7jBcu>SS=yZZg(ufKg7jlVy?SHt`I@c&eInHA2518uY? -z8_V{VYtHc41`<9Gajif7z8RqHB>2^8y6J9TJQ5jNeH~G`<$wNQub8cqUa`W%!e9yD -zmnBm)Y9SjEN`r)^U>}e-vyjDjDev(U3SV}X>wHCBKG@*KRz&W3^3}jw4d1K|iy7>` -zws=nkbc!-nf#A&+rbNVrx*Ijp9KQ%&aVH>rv@Mskb+vMR0*v*qx1MY4P@q=PjcNL{ -z+L7oGvp%wDI2=eNScq3-IJrs-y`Wjww`qW)u{KTZAAUnTaX%J;%(}a*RKpuL(2YTN -zJ;F8R2<*`($*;>8nC^rLEGNL>AIvRhrP+MVIt2`a5}$G~ibkz(E_8A|e`6?$E{1H} -zFL6Mi1l<-$hhoHH>TpW5en%p9zWofi!&d{FQQSD(j -z$I2^wU$7VE#_mJ-W~aStJTA<3+B*6nd?HJgI!WDDrs3%~VE>TJ;9`~`k~5yGmKf~w -z(+EJ_wl!or1Z-YbtZp06Wch!6u~I;d;>Y*zf+6l6jdPOLV?-iB@p=Ej(J=&cdeexq -zgai5!$j*P8$&Ms3m#e#mxRJZC(xYfBZvdiGBIIj8Ta)OH -zXpxfJgm?qlKS<_sx!Lms)fCB2cw+-VLJ+Bf-qLV|szgZIA8npLY>&t*XP<#E)b2?JE6tI%)-YIgAgxD(gd@{bo -zgcSN(yAL*eIa?%bt}|p&MP7Q`2~8tNy& -znFRWa8;j7Vv{-Y!63zX-r}($fer*B^W+Nhmo7MC$>CAH@j~5A)K^%>pVQe1Oxl498 -z0RB^^Yj#U$;s9G8Lh%W%GTJIA{@)NJ?hxrCnKLavL=mbgzF`0b{+x}84Owsrzn-ko -z2X~Npw53$>Jj8CD`^K5@JRR`D`QJG!FStJ@L2jH$ql^)Xt>7hCc@ -z$b86#xiw@{IWsB|a-5a|Fz?{<`5So1)`o3;^vaFet3uDN{U>f!#Vl4fFT@y82v_7l -zP^)6^u8I3Oa1CiZ$@QtCNdnzcXzfL$iV-qYd5kM+PToee+17(6D*)Ae@?$WM%n9FG -z`WvbaOAmf`ogRjmm -zyUi0TWGi;UK%=l_Vy2SZK|(Py$8S+=M)v~v-;@^Oikx(U6Mm=Sd`7c%Z8=nphyQeE -zIVA7FAzRX_UK<}Pn~o|G=XeL8NY#Ctrv`S% -zPs0W>CC26AsUj8v$&}ryq@m|T_pKmst}a`%X5q||{+E$uGU88`D#xW$%O1+}b2?Xv -zRO4uIDD+=i`~lR^vlDz68dyBPSLXX{M0uiyiC2f -z8bCKzYQu7lPLjNg)qxszbI9qncPM2~X*TWwgUz-b3!dDZ@biQF2v`M_#S(x$8gIx^ -zRgr{UGJya$J+o=91$+SVK(5<5fj*b1$xXiJ9OrWqyUD?D`t@RGCJ6&NTFa^P&?;w7%+ -zKPSP;O@#noK}EnDvc*xwpM*UCiW>UE(fSzFeRo2J)PxhI%#E+hCzb$3-69Q(HwdgHi7j*(Wwv|sY!TWqmgWras>JSH0m*R -z?3U{|+>^PJc5rOX!5m4RBQ)3S;FRTZeHdccptxs?zHErF?~EQKn+i%~^AeGP?$!8r -z{qW^LZnDsbDW>OE-ytoNH$Hi;1T^XZCKT-v^Ugh1!Yw2kacY~g5q -zxOJa;W7+T{?^{GAr%|%6&W;TJKzQMuY@*+_`{lm7@a~%Lm3QCkv3h@Z->p4Pvpuq5 -z$tOjnre+gR0y}eW5yJ?WF;H|&f$RnpqZ{J -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 -zW -z=rSh4@0B}Wn?q-cvwMuMqJ`j2($r`U<#@D!q4(}o)i5mxK(M$&be`M<2KgQofkqyH -zt4K8q$LnP7Q{K&>=nKqDDa*7hQEZF>(R$96G;dHd7#~`i17k-(t%W04#2Q)ko1 -zPcA;^+;;k#EVcAEbZA&_h3Q1{;>%L;^hAxZCLGeNB2iPpzBnbGqx=TYP_Su8=ynn` -z@0R2zfNd3eB+O)+0b_CCV#XxP0rRFzl?jpqc971^EQ4ho%=?2efRS -zZdpX-vIoQOQ5v+#GLUK@gs7NOATaa=X^-AQnGD5=(5bX)k#r=L-gAW>AlYbUxTJU> -zD_upQ)zk9$6Z?JJ75S-o0({3j0@ly9wACRcyaw?^pJp^7GgXC^md-dC5z!nN$Pnn~ -zz(tA-#}dpYF(>GrFtp!)SRe$@Y2Ya~u2UxvUWos3-O1=bn_B(=A&vaSpscL1`0%#4 -zbCW;YfH;LvBck`3t{iI1SZ%k3S$8(mLK{NtoTAv48L_n_u`zJ@gPSGz?=g?jdnDNl -zKcz(vi3T-jnVgJR2(JeRNl+_q#z*?31+frfy?q?yuG7yQ`R_`{LA)koToPv=-$^#Q -z?%bZo7za|;pHA={$v^1Bx}QGzm#G9wQR%e{gCpYBmzl9OB^K8T81uC?083N208J@k -zBoQa_5!<}RaEO7{Sd_;5lR>}8=JmD+xVXK*^Sefly7d5()w(^s$TdXTkT%*1bQENU -zV`#Wx%X<3-k)j+j{*n>E+vFWt!y>J_rAG;Ym<&k;Sh)ZS&ZVcD)aL2*wwYtcn9jne -zReq-)v1;iaR{*~^4{r;qoM=0c=JVf{vuNL@38jr|aTF3i -zb1HBV-6g<&QR37dFcuvd<8GI(-MK(leYj_F1V(^Kl^O~a#N-n@z(6M0-PL%3H8?ZA -zq}m2#&9Q-*;$kjvSrnJM)!~K=fI=e`1@dG~lV)y!Y0XW;z4yi~XJ9TTDUR79gs6No -z7Dsf+e8yO7V=aeI!&h^_kl=-j1xX^*yl+5q6-WH^H_o&VkhArHkY{FU*6!6`aAhS8`kYiBQU);0FcFAz5=sI(@w3FT6=$4#VcV$ANqVG($UK+oSj01WSrw -z0dxk)y4__atqYmUx1zb!!Vbz9G+c{oS3u!v_F;HG2U%^wlK52+|3I~K3 -zr3-2N=o)+re{);Na?HbiqZKrp*;cI#N^m0!k4$@1r478F@se*6P=pGVYp-92=0bB9Ejb1V85$m4q*i<}I)xtXqPE!?!=LyPtcd-D&z -zfxkIts^ml|E8MN;Ef-reOOUeU%PadRBRvIb=oL7uO1uCcx<+r%c2)Y2! -zcI!jCH%Dsm22`>VE$Qo(cN>z-<&2 -zq9=^;vq~wI*P@ZW!AJ+-Y-x_z5gDovVbK6mL4APnc;zk#{hKRTZ&G9A$)sLqQi9rG -zbVm=3Z{T4wkO3-i{FaKa8xE<#Lgl>t?M}i~Yl|PS5H2MQxv -zgZ@nATU-_jO!v@e_iBSpOzu^sMdhet4d8`TfHba0V_IvL-{^TmnLTJ*9~v=-OfPxN -z@m>yNDqP$St^q!hwDMqdi1XRwxlo{kEjVx5p@@bK#_0s!SrxZUIvQy!g&nVwf98Ks -zfn!*z{1$gMJ;^s6>=5_q>|keLld{sS3S0GpB@RMwMHdB{CaUD -z$ZpvqYP+3?@BJ?JUQG&_3v-W21T8=_>F7ue6mw#w$qBGtVykto10LEZP0BDKY5HjT1OvcYcgF+3(Zw$^CFcLSi3Bz&H+Om4Po8Q=1XC;2&+MTnoH}ME)B>nQ-pSv@s6y -z@L+`iWGvN3qgB-TaU~DOYSimBJ{mGOEOrH!@Z23IHvZ~4w(m4`ArYBF(^v2~m2FF5 -zmW40JqG5WN@f}DqY|4Qu4qJ!DnN3Mg180K-|9El3JxE}fOlyYh4||ayNko2REg1CW -z6B3y1YY^OFX>r*<(3|twme`SUXi*;za-rH|+bn*R3xIIuCt5*t{Q!mXFL^yfc+xJ} -zXjh*Zrya^N_d{`E=#B4>qbt(BhIO_A(@c0PNsS6z2RhCNG7fx=CJO+M)t`KOq{3Tt -zoTAZpKiQpP$}P5DM-=VN8$-&`tYlhHx31(-k|bVnKJca(v+@lwUiMvBa?riP7C$!H -z#f|%X+atDf*u#AlHsD7pRjFHCCI&Eo8%i76Tb8)a|niO1Adl_oq=!==`<; -zsXR6yIF~RToE=UWZkYFI1Wn9Vk0OB@W|2{J1X>EKx7Zy#Y5X9VWi(05}%uNa(kec;Zal?7B(Y?I^r=DLtOJMmETD0 -zFaa79HnJ5P>7A0yrr&h}yv{i9C?-QXqX84B0>5*Z09A7&mqRL|FLLcnAS;ysklPj6 -z<6I34V}hF)Ho^Vg@5w?t08pfkf2t_Fb9@a>YE#dC(Vv>0&MI*wJhRFsoxu2@M1|%v -z1A>t|BP=!wk=0o@ibSehQ3g{oa%d`MZ$x`k@U2#t*vd&Pg(?DK47nT@mlq>ZsoI&C@I>P#+9euqJ&Ma_)QKFE=>ua$s?myI -z#oru}?^cIMku}Y88xNg9=bpBT9th|zq~@G4VMBa#%G};I!>c1Mk^vz(VMR7f?(Q>c -zKKj{hIRO|0Xc3aBzV!@lCCef#%XWJn(+!G789g`;!ksb6Y@ju@M*&#_VmetYv^Z -zqS42g-SBSf85TvKN1lZ<3d&&5qZK>f6_Q_B?yNg)?hqx0K0i6`Ck!H7NP`$7uLwYq -z%$|dd-L~LI)uap37sUD%8GbfayA!S>`N9i-*_||Z6Fh0~(W_JF6sHu0B{%$Ux1ws& -zu3tiaZj{*D(N+xfY86Li?=39Ie=i)1o;ep6JeXb@QqSHChB+ -zYEcIeZ$0#3vFPBjk_;qiS_8oqZ}Hz4>3@Ja#1xVp;EHN8eP%XX$oB{wQYbS0spGx^ -zML5ahTI$W{2-U#W145p>n^Jss@4o?U5M^ruXrTct%SF)V?;k(lr*vXw;fF!KywjOr -zU7byaenZHy;Z`A;NVL%Z05~t=k*l%5?styv!E#rksNr5COh>kDeIVzoRgL_vbL}fH -zzf^lSpI0)B3J{C)$FDRXzBK3ZxcA3}lpN)rd(H_1zEKOS9%CkRGD=3!LLCdBe$}H# -zF_4!ozX}$4!`NC_;!G+P2c<(Gb;h-*lV^%Ik!1!Lg3#%aoBn<$NS+SeFcjV&sNOVb&4#J6JwIHiE>#5Y$f0?(w^f)pKv(eQ-X{mYXMw -zNq?8*6<~e-zk^L{LXNpLU3lmB^^8kr(C4VJqF?_(%K%!ROQonw$=5hKLDMG+91i$<5CCUl`X?f80OM)CYlKW4f`>!*d)E}TVVspX1G&n%C2!~#Yo0lZ$gF5vY5 -z#xw~EBQF3C>;$OYeYHXmNnUtCZ2ad&Hs`u;}&HelgI -zItCkl*C^*6Q+RSZpU2L@u>hbpA-j11KmNytjEaJelNZbcgDAw3w>$o1A{E@y(*bCM -z^gXt}Jqjw7n_zT{xf|2K0Be`}R;9I;b3m)r@sS&ZV}m|KTK5LD5j80mL2=%I*GPU% -z6D2LHC^Tg1w`2x{LGqvE`&Z=TR>A5J9XX&}OUP`_CeDS*II~RAA3tAZcvb)S@$kq+I+^j4Lq^Kn=D;JK=~P{?Bbm7(JeYi&u*$EFQM!~V6|6N&75 -z)O*k`JnFO3mFLno_jvzpPxM!u5z1=uQupCA?hi>nuF-m^DzZW9z{l_CWrF@P4 -zOZ*@k5ZWlKL3_Ar`s*M2EHL%9=FbNjNDnp13?PZ;&r1P7Rd2L&4x`R|Oja25r4ii6 -zXg+kc{VZ^V4!ig~%RK9Dn_kJG{&^u18*iU8{b4{ID0=Y?H1xehOtcs2_h% -zftdPt;&jh5BLoiiEj_?Qbzl7NbbkB`vEitd}F!7r!v_N(|O?jha;`9A4xiV -z{F5W=sF(@R{;E;r4TpGqC9-!BcvTi-zh!3Lf6;8&i~AvWB(!KhlK}nomn~_YPTD&^ -zf7!E|km0^dvQv;%inBg4gjo4x_2Vk=5{i2vjf$14SD|`ZR=Ax -ze|g_rHXTOLE*I2{K$Q|hsOgU9L8WqNk~M=Z^8Q`rG0f$%_6${H+Tp=Pxx#W|-9Zcl -z#ue4AbUBB8Gz*M>=O#smYRJT8J3425hQ*;ovqvyGAe=r(Tbu%RW9QRL%Tur#P~0Ljj0E -zauvW|+3&;BWhAd6*9bH`*RBa3g;@(;n*UbGn=0xXSI&>=HV#CnC*%3B))ps^d6;u9{x^^PCX0zBXNw}F6y>2xL{@z;eF1+ -zB~i2qO0Q&}B9c%1H59~LLY7OI%U1FtK`u?7r@p3RMQdF?I3}j85lJ210XC4?LG4m(_kkrzyUETFuDPrq4#_F=D+;no6^(H7doP|U&xF0^= -zS$uX}*1U2e+}Iwt*GjxoDWNKXWUYo>G7h{ZC6Hmo0c2rWii%d+LG!?wQih;I3B3km -zkZI1mKD6@NV>VsN88L9ex@qCUIx99s&U)jhkfdV(<)UF6TZ1VCi_8Wfv``aXbK)s= -z-(go)i8EH(P_1s788gCzYYsJs>ZQNOqTP-E0*>-Hq5?uS+1@(JBwi>+T -z6{_3>snu=T(mH2%n9DGdV&NW%21@mp#}60qTW0Gw!ph6-%~W9smPj`pzbc8gM=+l=-* -z7lgZ=_vM|_rz$^A#SK7OESIMOffy-D_i!cs7q?dJL7~dX%cIG(5>9JFHKxuf?%Rzl -zh5*d9oiw8Kd@D?8l1WBIi&g`*1RPq^tuGF+>>$Q_G7}_AgvK)u1-&ex;l({6$JX^) -z%Wnz#jcI4;y(*oaO%k#(ecUyW&pl-#EGt@5DT`EjCMYGnrKNJm9L*FifmIu?gg5e$ -z0HBaZ(sSFqmc~g1!L>-#kGHaL`Wu>SuqE$edjX!;&*xx^h;jD#?-R`^Zp}Dkt}#KI -z%Jz{IcawqQd-AS11temB9u|!QkLYQc-`_tly{M@Mw`xfQ!PFo?KmS -zC4o~%amkfWnCoIMB{1yb7kJf^KNfLBcy%W;t-wwF_)Z=>;-Tc59sq0R*fh#zpJYKi -zg^A;N9ESED=EPTU0n=Iq<52>gXiS21PEWzrdBCH9=p=&~MJOX@M000ZQgCs<8 -zhnojq+`jlFZyttUyag(bVf>-5^y_!|KjMQ3D?&xc6vXvMnSN -zt(e&xJ}*#ceTH`?tuuutVZdxTVch!Wdl8rROarpl}TUC -z0HbA>Is?jwS_`p|mcD%&nic1%Nl|;ibi)neMo=akC2Pw!NZr)IY8-L>Av}WS%)!SI -ze5*Ink-P}0X-W}-1WSw8-IcmL_x;!Ie&JMDNtFUZAypSnM<1qxK>*nM;$p{6`*p~i -zzS9a@H*tfqR@P>7HiTEf5J2(&q+(Z2sv@99Ng|Q!!_?YrwR}mvy>?*Fzy$$pOOegA -z;%mAOG8(l$nVJ7YhLNp7cJ)|Q)~`)gWk-^&r*+DB;bnk^^Pr@qq=Ak%>Na=~(%t>J -zTUA=;pHXaK9acJTbCbX5uf={h;6|?&S-@yRh4z_31(vJ$o$!mwYk_I?D(kHZfu4%Ka -zBq`Da^2EYS43mRo$A&6}J^iDi6IuAp3sidtjtX)@P>Rjhx2DjOC6Yun -zK|fLG+itG_};@{#XlVkNa=2>x?7^c02a=dKo*6?~VrtM1m -zjssu-&H^VesRl#Bchbw#fg({Wfw!Y-!d>QKfEgBki1?2wczblmqQOIeWaFD0?`+|q -zJI!zZtN=Z*-rgV58lpsKo7T0Emw$UCzEY;pSxRebIi|&$dik~lzl$N>rA87!#fi#z -zN97&sFGYw3)IdNVA;l1zl4pCu-s_v(T -zOAtnHo^f$_PWrBWH>+J_(N@_B<>{@D|g&bhm_7mIf -zNOhrO$FBKFVs04Xb3yVH(8yfaXT*cJ7mzLQ94Pg`I>n0mj1~DMVPwN(0f-_A*|J=Q -zn{h>QC`JN;^EDIB^Pxg`k-2xf-io}9*tTHKQmdX$l^BRyWMjq}0j*?4w`feR&`+xS -z#@r|LC(fJHhILH6C>^Jup(HQAxM5nRiG&xz9}Ui7h{{|_a)cZ|p)u5X*XNi(?W4ce -z3fr#K;EJN7KNtB)xfNI<+EWlA5#VjP_ut?D5iZq*_V~?!Jp@FCp)GhxR3Ioo=nfo; -zScK?XXOuH8q#e=fZ!x=u*}ZXpC&0cBWf!)lPqbu3+)RWtUZthsb6-0c3S<`I?Qyqc -ztRr7s$ey=NR-3@tLCf)T|CS2fp2KauXVM8V>{f9Wv%nP;VgMXUYvuasrGINd17o3zH`4>fJLaHp -z7lYI)*HPg$-9vHgIb9Nkc-HD%)G~rv)wBW})x?PD!k1H9SI_+P$8A5*$Js(zLVz}L -za6-YT?VeDbasL(F8 -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 -zS7V*>T88F5VOi6A25#=KKaCknDehir -z2uc!1M?EMSR5p%=!z-;MT9)?I&o&Bc<0$MrLf3N}hKnj4c$`Mz{ThMsj@DO3n-8dr*0u%18IA@k(IQZQE)kjj1dl(vyAcA+{@8Yf -zr(y(f1EKq7z|$N~=hj&SY>O9(42Vy$%fxAhn8xW)#lUJdlaZCpT$*l1$V~of87LU! -zawv9)9f{{XL8_C-GV#SvZHp)Zxw2|#Ip8M^^K=D+`Yj>z!30|t%>RZwVMZS6rDN|6 -zPw@?H<1W5`m~i(BO?D}bL9U1FOhAJqb;X#aWHayRxU*2!hDvX3pct7Zc-c`-ntq)7 -z*_x9~5{NlqHj-&XtG=|19({!IGmgM|z>1}%aWct50x@q7RI_t%-Xo~-DX6k2ZV*vz -z;F?x6s(ElBvP2ygrw#a96W0g=C@pafkS;+vidtS|E*Q?3z$+(KP6Nt{R=Ie0In~iQ -zfSaK#a^Bz3wJTO17ewY#!%vhU%};0e!0|S@n{d0N;9si1%(IV*R}QT8VUa$3gg61h -zXUi0*gmi6`%rlPSTU|>svIkY_shfWiVPTI90*@$jed@cZxSZq*c -zSU%rSssrK#^K4AT6ow|k+DHmumMuAsN0BQWCDD=x2Zm1pVmG#&pfDS@I(j#y=IQE4 -zgvnqxhnn@ZmHk6GAv&zDwT1Cqq-M5HH%;lpGDvMe&|F;G3hc7E64=E5x$H>*JLc$X -z%GLDG`>%|JU!i-@XYoQ(3&Lwpe5o0&1T4yvjj?E>2_{P~)~nX0pf3Vfx{;*a(#Sn{ -zDR^)_`8Ek_$c0HL5&>ne^9lf{f+d{>3ixG5+R*P``ZxIhYM=KrM$m95Bv7QiVSVh* -z;IieEJE9BPIiW_Ku&XAMap`Uk#Wo}}t0{ke?T+o1eH^zA9C6}{t;lSTx^Hz2_TD&) -zio4wUZsl_MiKNP-=ylopkqH8rK+5JG@U_025Uw6oHr1T0J`|A;>Ba=Fs##CO&iUEqe=4>2%(%SJKhT -z^!JxZ3bcY98mg>sG^{lW59mn>Sy7A@k4L866LV4gqU4U0%Po&cE}eu+*cb=RxN*=K -z{Qw@t^&+&TaoQ(ow5`vxJccY6%6XhB(j}a-ofqTIfVdlzw%}tJ&4!4QH0gGkn_gT)^I2u{7O>=r5DChf`Fhz1~D1F9PK@IY99mnHyS^0l_ -z#vMz8dFSk!hx*tpCTv3%8zqMnOvJ$q2yRbqz!`bjVoCu~4*n0yzf>;qt=b*kMGBSg -zDn4j?nZA^vQa0BsL*=qOxenxI08{~5cDG`L{B1DvZROB|>5+?ZRM5{L_P517~B(&91r~)74k*TRO2ue+k)2M?RtHdP7siKX!HVd -z=xd3snvg}2Jc<|IzyJEJ18a3EQK`8W8+gc)Kra|E=2B9Dm{GR=6<@z0C(sodxrqlD -z!2UzU=_d_hT$aLbP_{J=`RgQ*MiR=*&<>H}`Sk)x(Iy=uD(QelNXN!)Z=n+^h!W+j)e*{0b>z< -zV>20#y3%_@dREn9SxM0FisI`moUlV-kJqYY^K0oHGqGJnXwMV^rSIFjyQAk!KTs#V -zTxtzO)Ji{8{=8k@td5n9(L7Q@#>z;!31nn}@NTTP4Ol@y@R+Z^xFNwKwhUK=yDWJ-oRts+vn- -zIX15g`At%AO1R#iXi$l>DfAmhA>tSAJI#BG? -z&)wA-$=kKne9-GW?06&*TYP-9z^KiOVra5AFfbS6S#Ai+kkC2iV+orW -zET1J;#t^{?03nKmkWJdKYxrq62TZI{^)*El1Q3fH3x|(qAau>D -zMsiu^=t_*Z6(pOL1S7P{ajdI4-?UhlSO7o#g0a1*f$tGP?6RIN!j0v -zO6~n(>M)d_w2@6q`a*!QPnxs`e8c97LCgXJ9Tw9wm4L}(Y%;CG$k^*Xwcn85Xs%8s -zxi>RyKX)N8pJ-`TM}A(KTE(}{(@A492Vj!52P=SMRa013145-+oilhV9d5mxV}J`Z -zbjqUAhmba)_2e<$s@A}ZlaFvw#8ZXB0j&_N88D!OX)!yKuV_!a>_)gXFb3Ea -zP6RcY0@edHt!@xvUw@1h+jwHz%Tj_9wm5Cd4b-2L{<3M`QZh{E1~?*Tg}LWr -z&Nnu@yF`0SEkPTdmU&4wLU!`PTwVog%tOLLP=o0_EJ`k+;Ii9duprmFT~-8-WC_oQ -z7uBRAJZnR7k{WG!K;J<64jD=oh!s$V&kKDDGO*fa{n(}yDU&1K5OyWB2ay2ExINgA -z=|CvOTzZ=Sh&;}*LuG_g=JdO(?yXvp{D;qYklId`T3Z8Iro2WXP@qAGZRrDB>1TCfPVj|+^@ -z9CBFt6M;h~*@tr0mw?S&u&&SmBQs11Y(V!KKNd~!NQQasP=YEa(5}5@;x`<2hi0F6 -zwo--(M_9XsCy%_p_S!fNAsJkE`(-;{Iw2kQ{s3H6^ -z#3)<$yEd4(#~9`^%Uol>lPzT(!ldfM-Wu+*C=QDfl+cW&V_{=O#$xqf@Jfxgpp=3@ -zR(WyWK_`&k#f4M?O^n`ALM9Zb=GS -zpb2rC+KPGqJ>u#5S4p@*l{Bv|k&KpePwQ>0vX(+^fx2O=?(jw>xXDF_pM@v74Ir3| -z!{ur)Pc45nTBk9Oz6SfZIOW&P1(JV++>6m<6%}I_qgFbc=`&!|;<~Tbp?79Ym&Fh^ -z1x&$fC8d6tECwFnW{9hx-(Xg`i-jt!`LX@9 -z0oM^%D_0~Vn-(N$fL6z=LCMJLQ<37s04zyHNlP*SqpPb*ZG)kmsr|CFN28(Pfojv?<;v9vrbmEu+ -zITvr?d&t7s;Z%_lrx&NPe=z1qt!@AbY+6_tx~xYGWRHjsb-MV+U))kYP6cl|L=K1A -zZPp*UhyB=IwcS3~3K#~ewmA{g1`t=3!etGwq1_#=!?ZatCMfqg-GQdlLW`p5f>{m`$p88q~?fwAl -z!Dw{GkH#C7D~UxhfVawQ7I9S@(||J8mI=E@@AmCj%n*G5Di!UjIabO;_vFb!_xPFZ -zapV{1h(Og -zP50Vx{T@qt@sC~EDj#=J6v*<})ZH25Q~o|RL=S072b$TzEec9Heu21RaH7cnb=MvBFw7cYq_CTAE_zS}SU!|EF#G1lqS9I8MwvTChO&TrpXDslUQ;)}J6@Zz4>*oip+V9D0tAyDB!3*7Hdx4fZ4 -z3;mt}sQUhkD#I^hqc}k?1TtH`D@p3711}M4 -z2j5&_F&MbCNw96&lEL`3z)8{2?#YlFBg(TiXy~@urGT=Uc5g?=PrL=Di<Uz-il -zhUBF-2OUMqd~^>eM6+8^17G&|J-p{KdzpAB(#6@E(S|&|Icd0K;~I8>%!0fmUq8W? -zwTy-+x#+Sf4$&Hyk7$KKaUSc*(w&>9Yk6S(BE47Z+v>3AXOK$+M3!cTZvgBXG1V(n -zA$u>~nmUlqvTa8&>dgS;VnpT&*-r9oPuaX=0F&m=NufSIcG|~>HUrbzK>ucrf}(of -z5Bm+qBEN1~HZ?r@7Bv~kP9DGcwW&O<8!}FWuTtQ7m8pe6SZRqc4SMMK-vONg^zWxX -zzKq=iA$oqlfM^9)%cxQGyM%z~X_}DwgUrKp?2G4h_5gQSBeoBtEm%$P^GP?sB1|P4 -z*(!N8F{)|Z%xSkEZg-=#xpwERJ%INvANisci=}U{WCi;j%w(6M8JSbDiAd{U`>P(I -zr_I$}f(l5Iq$1Cvq4gUhVos9d0N2PZL%tw}6ckCn{vQ=B!sdCbUnUa+4gH&3E%*rs34w$gpm(#gb -zIq4E{9xlnn6KqR@-e=l0AyJ0{NeuFcHuK^Q328xtn$YwBi7awRI|T-CC(;Py^&N`D -z{K>B%^W(OMhNFTT+%kAlcl7rNc_XGILQop>TWKnDMC;#!mY@N;flq~-*09!}NAC_{ -zo)pspxL&eyDs7Vix`Wh)3wxPo5VbnTI&hR%phAHK0Ps$&w@pjRBevx3?C3g6 -z?{3a)Pw(Fo-SgI^C0XB2jMM0G5AvfiPS7&vnqWWdlnTHuZT&d60bHMo-1LN>Nt -z;R0D2TFP&7RT#0M?)fM2U54o=k-{`-NjcNIKq62@J$m$kySu;+V2&m0Zs0Zn1Otva -zImOq`D5jnQBD;{@pe-odNn!q$tU4eAlP3s~-SE-Y%uYc3VOgj51;j8WS5?MzY}>$v -zpK+Qr<4OKWV-g%>+Pb=Ra@s7N|Gr{BH0VDAbXOCLS428{F+5?!ooDN;qSeS~n(@bn -zF>R2ax*(YutTv9C=wkhDEp)&!I5t7r -zmVVIr^GIaV+N0%iiVZDO=;k8J}0P(ZK03xG)h_5RS^{~_It^wl1<7ngJj1`SUYz0%j4 -zr#(N!Gid>bQ5umRO8U -z0ICN3^A&E2EItR{(1m)&R!p>%8fEQ`#8e^9dFjk==ublLs87`$(p(~4y-a!xY<3VA -z{(KjuF`a5eXT)c}8Rju*T;5Z-9jmYbaXsC|9i`7naHC6MXM#lmz=@i;Rc8wk+nbC=u%lVOKfDE$5bluwYD19z -z;kH%U0#&r!!Wyaw6bfrf)|Io(Oiw9W9&o~oN71ust_kcDZ@@(!ZBMBNdsMMj({XJb -z9K71-XUO~_pY_`#3|5THAQ!TBG@H=Jsybm3Mzf7b5-xk0xdh4Xju**!ktMkcLm+=u -z4H8a0l(5M3F4~orfc|{~Z^AG$=;@B9y)cq^WQJ@B!dPq_{gn3gr^~>Od;(XnLkq|Y -z!>bUTRu(r$5dFx^aWD=xWt+?_{u24xcYEnDJl?k3)~D(a{=YHjuie)d5-LM)#_e}K?~{QZ -z_LIa=&I;~woGj2f-gpUI)Ev~(K#`WD$qQUBAlfbgQu3&_@QON -zC>ZkWoUXYR@l7{~YGUq)NvRIWWZsoviF}SUR|2bN9glJ9kXlO@g=`mqaqtve%XgT< -zCjC0BTC(>+wgZqaMs^ti_#<~nKHf@(azoj+u0mwvxrKgxD@(v_f;L -zK?X1*2qI~h63$~Qa1J?bp%i0eQ#}EJ#z#`5K|bGL{Vq_XK;&zg&xEs(5S(FWAH8^w -zJ5ma4#@YsCvIlzNUi%`VKUzndS35pHOhJZhS(C?g4uid{M6n|C2q^Is*A_M}Qh>n} -z -zv%m)6B2CYkEcrDQ&9AWG)aL*O#F*qgX0ZuL!Ni(&y)}P5g#+SgwUmI3+V;)+Tfs0f -z%*DsEKaA{@(Z9>DZsm#AM}L14lbhtAh2@ZMP>qRHzaqpP`zzxfnjc(sXiA$qrpE~8 -zZ6qWoZW2_rQ(;n*^ICC1yIxhBl9)@nZ9QY{tI?%PYp?4coJHq)_W3Z>QR#hn>aVYeXbD*fyc^l -ze`sGNox{N=J$a3bhPuHF*_0prikwwhO -z8)w;dO;{x%sn64d&Mt$fGNQfY58ew+bIUQ`y}m;QbPyapc?MM -zT-?O8Vr!iIfMBeI-1vCQ?T?&S$U$&=qh1Svy5*sPUQ#C+7|1P`3@D^RS_I^jpuedD -zbf{eYA&*HuX2Zp~afj`cAvAg{c9C52whuipxogxHl^giTa4nwJsIR7h@_E&0n-r4O(w>WjU-L#Rs1a -z0U3jTNd3LEvM#~ -z4Wte3SC+t^{&}FWa2o-n3V(EytEsw~z)Bhn!SB-<(I}qTS0v@RGJ<1?t9znPd?9Jz -zngq?YcDA}S&c~1TTUnjrT%}ex$n%Bvlp1@?eUr-GWJc1ofgGxdLuhho9Y~NI-I0GL -zZ>FL*i(-hV&lJ+xu;@KH`f9Rv)LHTQ-Tf6{{wr)>Jl=)Z&tvWqe1&%cuZN>Ex+#(ZdIG~)D|3WQO6mbQ+74TR_M|NOk6+NjR$9FvSJIJ{ -zEDnPxK2#d=QW;SmPximP_RMv@1vO);sWCX~K)0 -z(;E%yGK4L6rM4&4f0D?(n>bAb){>zUfaA9lb>MH3bO+R86N}7=>k^w6t=?VoTUAq5 -zV=7C<_OE&#Zo313!HTCpnl2_OHtBHqbkXR@b!Z)bjd4(!PmPYOIoT -ztmn^+wJ`G-*NEu1xG_6b=62`{SkE;cW6Gey0*|D(k51WS$FAD{Eo_<2okmos5Ts!p -z)#~w(j$}{wQ&6{a98sFWi+?8lqV^FaU+vaqWs(_`CX%sk?3iS~k-*`upD8Ak1zyYO -zjn1i%1U2pJ!%1vN+wIr*buO~T!#t!C2RYtMypbj5VHnD~4AbYaZSLeZ#UzPBKm-$E -z^56QV<+M3x`8X7POgB-8XkknR%&NC$Z&nuO;e!7r>XvhcukR7@OU@ylpQ= -zz`sXiyg%DpYm@u@43Fg6|F!pVf@lPAj%``4Q6Oq8J-!OHRkL{=4)P==AXAt=d=9ce3pV0fYB -z8M##CEudm0s2BEtw7MscscoT>-pKk1me<9$%g1c9K+A=v7pA`mJSKD@NeD(d{Zl2n6>QV=(LRm2nx)+mYzUD#CQy6?Y45av@7{u -zAK?-3HZun|DI*7>~7_XN}0-!A3v94+zR!&g`pRgoXuX=?lq-j -zdjB!MYGNexu<{X(tun<5ib$|7-QJ>F&>`l7;-KA|v7($hd{L1a9IRH#D$WkE%TFQ) -zsDVl+JHo)w5>jALdEWFH^T>S#Q{$R4S##HKAoG;_rR^uS!7nIQ%tc(x$Hb)+msBdh -zI00=-z}*?xXTLEvrh18rNh~Zk_7Z0oK2>#)iegKaEhN~`g{Tu3=nW1qnW4x0^H6Dv -zqOGns-NePabcYAjxn&nth6I?Tqf2mOObAK{5#4jRzAabObxmlfC_9oFiJg`o2cbcl -zrE8LuzPC7UpFy`FV8}ZxV8qE4e@fB2>{)DxE6@`MZ;fW*!Mzoi;OR7#Ks9iJPebzE -z-R4mPv7cB!T6rEmhM`eTmw3qWyDCSwnt>*Ak)%xoi*x$#f_eGntJ?BI-&`PBJT`ej@nX -zXpen4Tga$EEu6*p>Vhj`T5D4A!k00|+rkL&*!hUQ-9TSy&6WsEa9)d5MEfqz;V1YN -zO+$<=7{*^pOgz|1q|Ve~z{5 -zpJVihe~fX-?d$Ije~!8TxZd>j=NPJE^Jc{y^d@`A?8#ByK9Wk(f{_P`F_P;KAA@wf -z6>7WzWC3e{+zt?C@{x+JqGCgIC@}I%Jm?hz@3`HVi&mXozyu8*^0KBdQW}= -zsgG=xlMA^t|ae(UR{z4MqJHkzKnYBw2m -zc>8Hvg5JG#BEv@u7D?n|g?1_iK*2WWV`Gsi -zuF;^3)38?QQPf%H&#w3Md;YX{^9u?k_%0TgF7~=SBS3>HSKMBC>2k(+ps2F~3Q8#p(3auC3Zh-_7@TOP|6@ -z=q(s6ZG|b~p%Qj8rEBN1X1}70v8}!OKn9zJjX5lt!}gy^l++|WQAoD?n`RvNG2$Qd`_uMu0jmTfPQGwOH_d379SpnR>mW1p2)Zdip7UpJL` -z;C+;47Ou%iNAZ%I_>=dAaeMG`gi$8E(}}pKqRTbrY}^au=%bL=`>M -z>Q|*Y3rqCV;6Jw>&CR+&L1Ugyn_=hx?#td6qnR~TupA7%l6^maeb|Tm!ita4uLX!h -zi*U%MgQqqY>vQy|pWQ)sv(mdTPq+gXn?kjt1Vs&-5Jl;Hx-l+u&^CPXnm{A@r-YDK -zvG{jx8u5E3ai#nHERW~&OuaT>SsMY28uk=W9%km@u+ukyFdOjVd@|_ndinT3Ue6BD -zW~YU}HLbZ9qKYb-s%&H4Fk#PsYu`~GAi-Shk0vGx?RwBNXhQ-!OT3MbpMPJr6Vl0T -z;Cd4TJ}lty@H@&xREb%g{L>7e_G8gK?|ySu6Lo1CXfzzvgVL0h1Q-Xrr*ZqCV=6sHt6|PrzCTH5g$p -zHnP-K7eM%ma$i*L7+7;+>)Md3iC1DX1=PQ?g$d);6%<^NQWENzW&v%@86#5p4G&ze -zyEF69`cxQVzr-L#6FnLOw+pPW+Bn%goIVe$du`OJ(O%=tW%~$3KD66Pio>=UF9_Az -zic^sP$h2n@gkO&QRp8HZ&Ww3C$|;mx>co#K-w}UM!s+wiK^9gngc25*k_HTXEM#H= -zA?*UGiFj(c6#G4AIn1BWAYOBm$us!IZY2z%5@w_#g1WdtTG*S|u|p^Cjf@eojS)wd -zkKRAB&$KF3?65T!@V$%g@IR;~A-h|Qgx~ps_aiqty?>Wn0dSJJPY-A|P}IHjis5O@aC_tpf-Xu}0$=aJh#p=G|6Txz88yEEqJPwehR%KPIacGw8@N^E -zKzA7=fw9x+z|r-{x{^s&{wV)|f(2?wp_5C{Jy-GU++2WN_sC)4(Tajf+-8ZRTo?G# -zG}q;u=T{EsnF}2Bj=b2$xFZ)xOH|zUZrijrzB=j?RM!@Y%a|vqU`BaBh7x^wmyA_5 -zyfT-gZ>UA_Wd0s6yz(XzCZRA?l|m$t0;}B%$SrD#uaa_N8K1F91r7F3pkW3`F3&RJ -z0bd}dB5{(Qy63jV3!3gLp8$qP$fTB=dw|@PC>P24-B2tK^uE5NuO3w}_(=u(e$-np -z(a1;Z^sDW}Ia)CqAKjWf#m#~d!>QjMtEZkeD$VR;Ql6hStf-tWQKujKrkPW^IWZF7 -zf0Wz?@9!>ET0EZ5>0JU9Pt^JeJ!lY6f!rA|kS%i9zHge!1aI(-)$afp+`L#n&WFFp -zl6;f{*I7KFj>Zf(sK6)>6}PjmOXpg_pe=gv$Am% -z0ngZZ5HYPXX>&8`Lt_PCNBR01pdQQhDpM^ttD!%) -z4U_6m_7GX%CGTEq6r=}1B|6}owhVs+OHR*46*s^;^hJhtuZ~GEFcgrp&-`;&uLW(w -z(`JDOAbn}?pa|T!7j6PlW#qq-*&=rlr!H4Trw{~RGKVMluv%mG*0^Ui$JX^ -z(DA18?Ta&5ni7+eGm-m$1e19_8FM^naRwRqC{|fDAMY!7Oj~K{3jMOY<<;7Vtf_;` -z6S=9P$UEGlNB)m19A^GpD>bA6%kIMt$^Czc*97LPxl~)k;R<@Q2m*>u0X_bBC3VlYYk?a5`}f>jRiP4QeIYtLLc_h%#x@%3gX1V*1WeeM0xg=` -zhG`2jS^^9@ng=$IrQJkQqT#9f&(h{`l&aLCr~R`za-9ld{-wXcm7K{2_Nj+F-8Xx! -zimm5R8S!6#7=s%2RA -zEL=AvMyW0$bjYY?K)ZjfDFU>+Ao+mG5( -zeg4et`R{VP8S>v!+$DdbR>=Mi#dqhJ|K9vJMZHgN9IPms0yfu)@gVIf+93ln`5axT2WrHbMx&PDGzM*}B>hjH8wBlpi2bndxY_c=WVBczWz$(MMx8Inoq(+W{zz2QMo2BY5ufHU5tFFa0Yg_oA8At^PcfXY6bV#XD!faFa;vp -z_IuGEDfa@9?M_$Z3fFXsDfWAk^51jElc5KUp4)J(i2gd-Fe;e{^{O5tN&vmJk0Rt; -zW>4stTzuaB2k -z#GUoJ3+B$7AASUg+RqZ_@dJr2RSn~rOI -z5*^4pZ4^WRHNR5_l9igMCK2N>`<_FYe}zK -zeM5~*PK~%A(5o38=Fg92`GB7iz;Vc#9usmWZxT7jcXRv64(5o)I)-6NzHNYkt4{t$ -zpQ>?WuSv3EEo$KekFH5Yo6^9E_+5raLaMzv!Oq!nQqyE@!V`-Je`BUevf{_kMA4#t -zLX9tTEex8QVztDnfVHHvZOGBV=HH6gV_l=G{}N_&(|pE*>)CvF -zxk`FD7*QHn#A7>mmdUp+_O9Bx+-~(d{S{{kDs;zar9A9N!9P5#251C?sI_2UcHSl) -zjn&!h$`5Vn$=z;~i6C~`&o|I}plCkaEilU)4gi?7bulynZ|h)?0b(XmGKIZZ&_1Te=I!5!^4+eaEY$!)ngCo+^ -z>V)#Z|GOcp%zP(lChDwC=m0PukQDuXBby1t8A!<^g}%e;Y#D$Oef=g_knuz{urh_N -zp#zNb8(j8>r47!fJ{)c5n^y7)$~yTI&1q&Jy#^zlTcH?>`Z^{DD;z*%bPARODO4$H -zkm>nFvg;8E)Wn8t6WAo4NN%~i%_OCBsVbSVfSY&*OTUW#uH5DuY%{DqX~2*V6h(HL -zGE)|daaWDfmZx^hrEq%d_m)>U9}IrMNrUxu+__;U`Njefhwt9#h5AfjfZ*1WV%wys -zI@I@9@CulrLS~Sy_KC}sxo{O>BXWN>t5t?zg~oQ)+JYCf-)YGi5gjdnn{#FY*1aY= -z_ud)+=dxbbK4Te-io`1sm-J|8<25#5<8!=v>(?VC(3x0i?z+RORGEHDZyHiBa7%`v -z_yN{BM-g%hDe5e8?-rS^7u18DzK&)rIUvU#zA2fzjHZnBjlYlxL?ydjMR2E#pNNm7 -z%THVEWEjBfvJbeDfh6uedI7>gA@F(aTfm9rz;t1a+?`~?7$C1ZHzxvXn^mfwJ0c?L -z89P-*nA3-R`PWnF*GP`Eu(PAtck%_2))L2B0$YFbtEcc)vPo?o(i08zV1`*$R1SXY -z^s~183is{^Wy@zzTTkqgJH3gZx|>Yy^=u9`Q|25UD9X6H^{B*olZCy|``CK!0FvW4 -z_{Nc*+wb2#Q7nbvlu8HpP?A}()jtro*sMI6)|19d5~n#Ev~|6T|53z`xtK(Xtu?C8 -zBVnB+VqH|)=E0)uL`kMf^HGNNxVR{K4Oo$OU{uNDT6&LGBP#jWG -zuZOrVdhu&<2Gis6+R%XwGV{#G$n(&)Z3OF>#>hbf*q)kDY{(l6ch+p{LJOYppmhv6 -zKC;yD4-boqtbtF%L5m(bHya|+Mh3l4)61DSyo0(Bmzw%v#O1btJb~Bu?WtcdIe+<30P(_34$fI)WL2szCLdo~<-@mUSL-bFq -z3c%RsM|gk#@m(YJ@9)2Vm!Ew6+!hZ0@U=dE)mq1gIFFvPG1@_iJbJnK$ItKES9$#F -zyWGQve37sG6cm3!0 -zZwOP+>*kLsCB6H5c%kPtM2g{Z{OUUkZ2aYVZ?emQYvwa_yy~>u22if@UE_{m_$X -zAcqLa&z%aF5Pex>XFk{@x4Rff)A5x@?j9AS3Z>72)^+qr>#9n%UhDXRrUN;lYX{_c -z&$(=j6=b8J)oF}-yzJd_wT~+wZ|b^YcaoUx4&xY+GS*b_M_$8$z8;h*Ay7|yy*UI7 -zfNy$ckApLMkGb2cDu4U4S$RYA_;aKAk!msFKs?!VJ@8x9fcY5?>1Gu9J -z<+i}FdoM0a$FU5!VBp^$)@1BUqPNxbQ20ywYa=&&s;>H)Mhz1On*be4;S#c{;+J1o;DHxAm|dMNWPew-CR!{rZKKy#7mZDGeNj{HOq5nQ!6fx}1SUsVUtLfE=64NRg+; -zh;#s#<);veBadh>~kLzW??c1Mc)%#z64i-;nLxp0f!9|PoyB(ng -z|MC^^g8wCU75}YtI3%Efu{%viO6z0H=9sk<+v9G&(f5*gk`pmj-YSmMTH+pV4auR0 -zmBVc=4RdJc@?|&>cfXp?&m-G%HZM=IvYcaXJ|;TWzI7TWk2IHISbGmPQgKf}#+fhI -z+h{&r?y7Liyvoic*@&a@67A)!?yMzK46Jr1s@uw|Rx6oMGR4*ULv1bl=oi^5c{|r0 -z%_bzrti&6wlPqTQZ43Nd`2)y|58iL<{?BEg_zoE4$J8llM-qMUcld&Py&g}WhR(`D -zl6-`|+3G0n9D}>1TQ!2iwVs8|UktxUKKi6T9R2TBpqT>|$bk;He6%%Ao)Mc&N#~*R -zZq{=nafFHtdhzlQ0S!M*p=wd_d6xE~4DP3TS;d)SsVZt@j|?YY29D}Sm;U@I5)FU; -z{r$VjOB}g%Qa)2YWYf`%8XfbBvx&bM`7)^Kj)5@dYoUsO>$atTi3Ya(;qHP3f%uR+ -z0_-Yeq&e$QlsNRlt>M@@_=D6cATvn6%Bmj*x? -zxK6239`V4uods?}$MQr+<`-4XRCd5dAocEE4N@JOUsV`#P>LBrf8IHMTihz@p0?h# -zsAL>N@)~J;S%TM#!R)Eh=Q3@ejUu{GeXDq+l}{Y&k4*t -zeKuCU%*MCASbmJ{>*16zSE!uQKGfS0zsG6@%yD>`H-KU)08z)VBH)1qfOtbMtO74Q4Bz?;}~{x%1zsNrM0*~_&t -z7#MaU2xBXc6c_1kbm4|m44|+C#b0+T+m~TW#wNe=SlEhJL(_cSM~tlw#QaNG%Vdcm -zIKlU^o~T32pKrIHzrJ7YeWQW?U;R5%V)MR -zy%H~r%LQbegkl|_g+ -zILsyy8Pc>)N)aw2B=QwSfm~hSLKl(N)`}9hbeOT+(h$Sn6^^nF@6f~YRDpc(HKmc- -z@VYwMPp!Huf9!KDA5BXCwnZVl#}hxHrQCXSaT{rDM_pj0iM4jRORdF}yW3DCbeRwg -zTs&wVDQ{GcZN_kv=T9@8#XXR4p;vjVhprRmzh$N~JLF5)HcDSArvZltxFCv~SetIQ -z^^GG*W@U^R3F=*yG6togRtZejW=D#GvCnV-rqBRNuFC`L*J~VWs(hlu#bTXuxZbw% -z=;)9i%<#@Fxz$^Eg5F|Qa+da3&+_`u+xOp>D>r~B44f@60Ok=A;Da5}o+!)_#G2!wi958o -zZn2oA4SBj5Z+ivy0a`PPE71q2lFOdFjg&VQ$M)~bciQVw -zxBKhB`m?l%J5q!GRhM?a9zb-*j@DQ{{mKot;$?GzZ!!J=u#Q&+j*+mJ%8EN&M@QP< -z;)z_P|LVG224fsqbm}MJ`5Z5Xm=0Zjg-6P_Np5rT(A$q+h`1PJ+TF2feYXWb`ok^VR?oe2Zlarbpz4EZY1_z00|} -zzCj)pyGuK-pF;UHx~0>QnX%)Tb2R@{1W8YEKAKKFiJ{77 -zlv{#(#`xWOEAHoH(lvC?Lv^*jfBahWIdpk#vXrU|*bI?>7WC#p!3g&~JzK#}sbSIk3& -zeCk2s-hqw& -z^>WtN>t()Puk-cCSN?t-_{RpAI?Of+KhVGB3kv@-f}iZEaBpD(d|pDBpAFK!X_25x -zzyxEOb{@3gP8#t_P{9WZd6_RDSYCFZ+T&kD;_>7^)Hk=Z!f^!!5gSgM~2o;Qg<1a)yuZ5oKQkA850pdvm??5YS^ZWQ>N3!#AMzo^1Taj>^x* -zLSljx-j(lm*pa8Oo86~|-t3Rx<*V3}Qe?;|J=AZ1wfa?k{jmYRTGWt`t%>vvuIX_c -z-wFX+OX=^Nbam;nazdwHgZN>cz+B^!JT0rt+dv=wooaf|04gR_>J~97GCGr -zRXIlm(q>MqmMjEZ<%@`kXa^lbpV1@ipfbGstsy_lDX`5*E_7ysq`SHmD{0)`JFTRr -zKgV6Fe#d>y3k5*Je#KVPuN+@w(ErRJ?C;-y7gwBqWdnS2sGl@h!bkZ@C-(`|(nJpo -zYb#d&Rrp{Z{jtRD1J!+hexN;Yn_h*EG83~~2hZOMbAr8K*FJmpDRVK=WCEvZ^mmli -zmOrE)m_aom%-k9+t!2WB_dmI>%H;shd8002GEvaj&^+%8X^?pXMeHrS2+I@r^+i3^;DXc5s& -zcS`Dm>gTeo3>-$G1A;orf;SsmOWlB+(TDv7aPr+Lsm)`w=Dx6RM}>7$3cG2zgaoFc -zh{8`(`8*sDMJg5Mlb(%jcde(9A&JM?04<;p$}2Sp^@j0fh{K=Pv2~W*t_^T{6e-U& -zA%D;)npfMzKhH?qF@-6l*)OdzAmjP6CsH-j^{~7P8O54(q> -z3G;MvlhdCA{LYW9<{sS3TU5&&wNv1j=~VM(aj7+)8{0Q96r_R2JfZZjxSNyIKmnd`sGa6J1Ma@^}Kk$41gVLZm0J%BIC_OyLQ!<$&L&aN^0T5sbPa=*cWR_wv -zfX!UWhB+b!mBc@fkY#gh7EGRzna)X;84&$iLN|lvOi#Llt9TFprIzxCWyC&@US86r -zE_1#XG|l&q%NjW=TaU3h(^S#lWSpEY@vhjmx78R_?Vz~!%Mf?ST!%1+H1y|5ujlZJ -zN3rX%NUlbI0X+#!(EB<;aq(lPEF4QwVaNmU#!*9+H>Z};+Pc!0mtzx*uXhc;@=z`Z -zrfG8p^dEU9J+ym~mWHzuM+@I9RS^eY{Jc4I1O8!Vz{%xy0TRqcvYY*0^u}*C$mPha -zggB9?!+Y@%WIONPlxi6`&}#%**gcu%hw;vHYZC65DKGg*vy$oa-8Trt>lq+^n7dTW -zx4=o_RADBF#K8XR{U(P+NH!I=oyYPA-+F+0bLW -zq@Z<#ugS;TS@$uu=r2c0W=slwEJs%c&6i_IxJApOc%pyFQvBByX2iddT$EyhQ6fuo -zlGnTxsn`OSqyN~N^1iybgX4lr6)_HFVQv0dK5222G}ptPzyqLyEgk>e6wq`}wNF=*CaBWA1b+<3Xx?2d7- -z=>d-Nfn@mU%OQ=+7nP70<8_&TlYT9hw}s=hkZG%SaEAPg;#omXG8Y?}bU=BNMeJ@J -ziF={B!Y?5(gXP_w^nOlzDxY%aKF#MGi}ji`Pd3 -z#es9x?~kwace(a)OwTB92M0O*3v3eGV4IszV53Q{^3s2dZ{-K!pWpA_<7E82Xd`u~ -za=M&JW39i8&{CXfzQW -zCyZXn;%eh%PA4)~$VWFCnGFpFC~0kt15rlN40_MljkGAqOER664~w6{SY&FH?m8+i -z>&xLK-(3v<$2W@yqp^j4w|t&h*O%Ksb}N+m;me49iGKX@-k6ctwla_w0b`X~%Q--i -z`PlgIVbB76^b7`1K!@j&@Ed?^Ig)P8m@7KehQ?_chOR3y;Sy9_sX6PV0Uz}bB`P|qI2?-1o -z&D87mp~y5aqb78=8U2X#vQ=d@q71dj{#i+r41L|plNKb#tqF?{5fmr__FNHN-X0(C -z@0X$HF~Dw22>HB6(`(R7wnz%i$^_Ta}nw1Dkp&&14W$c|A>lGc?RmI151 -z+O|R*?R6ckgWXLxG*)-odxH$m9LLxd=}>8_)FzzV)G3o8Us|tGsmp+!5!z7SYV&<; -zWbt|6{3>1`A8SaNcIW7BxpCcpIZmlFObgPo_Y$-bTtMX6f#9t??xQ&sOw(5nIDr#`g$c$;=^3@_BRseu7LeZDq_2Sa-axnU5uJlC5f6b6D*YCe> -z4(4?{_MTT(O3?yH5=f*g@Exx{rhf%R~_$eKo}s4hOts^uB5= -ze7~ey=_r4Bwt|baKDl>S`yXUPtXlhzsrN2>oqyR$vcX_v$ -zN!qf-yYGhdzk^uQZ5pQEim_y2lj&5&>PWoQe9R@Y`4B<3^y%Qw*P<61-K{NTf5b=c -zOXuj|{!S7OVMTMd%DiJiX%Be*I4{OS+cf%85FfkiA3-SQ1RZR@b5=zEE;ji6cI{}r -z|5X+T@ELzSmAL)>&r37h-Jt_y*ZOZ6@*T<1Vo8HYIO!tBT+EfeY&`X8`Q8J2y2XR& -zNXO>8TmeupMXhOhET7LXNp5AMf{vjc#xA=67I#$C@_Tr0muiIj{I^m~krg;>2>#A5 -zj?^6-i03t~g#xYeDztpI;L7=eO?kVXa*vk_+~fV{_xvlG>gFe9{V(qQeNUb9_x-E< -zTUE;a80$+omhmhKhvNPy|2~%D)CbSZrHzjT8E_7UEg$1G>eu+Dc<|UP&G7J55rEO} -zwG(rZ>#o2Wy>xe#1M<`l!2To5Qbuc0khc9+59I-Pn)T|q1J_Cs6w_kU<4aY#!64-1 -zr;U7$t}jlUqxZuSD7jQ;)skaB0(#V(YrPIeQoRC7g&I= -z{a5kzePvK`UgM{mT(5NiJV`Q;&z56mOy1Yi!23@00X~G#Lk8Ll5eQ%sLm}jG%s3sl -zCL1xp0g`T{bjU8CqKchg&otrB?|)_Q=n2m`U;AnO3(uxdB+swgyNYo7^Dq0Wn3Uh& -zC+oA!z&jJ*jT$g@0I~IQ4A7kN*oclMJ&!0QS0dza%y -zj5l(nn3=q&6G`0G!h|6=dq -zf8H)MO|A(o16h$icHNQDacD!}?Iw#ZNjGqsL?L|Ufj~l{R~Vn*!F@}fXr`!?KHjO~ -zz+8E!{tGoZnH{x&tLf;~2~`w7N%09O#eWZ{;O^JgSg-MH$ajBzh0hoVZZ)A>UiX{| -z;wl`{ZrI616oQsQY*WfOKRHjnrgQg*DA -z3k_7w&7fj-Lo#fsp^2TmX0x~|%|ms*QUiDN61G2w88wMn;Vb%rUn$=FitPTM -zQgaW$fW|5WHw6iW28`AhMjL%Y*cS9T%*k`&Oj!aHY+E;4!!*trBb&R8GRj~ia8zc6Ab{b^L4*_;s_QC%NTSaQ?A09zusQ<@YshFO -zRd>15mi?A46EgxnqlNnmApwLnm_aW;A@F1T3SZ><1ia((1*>fY+0|U2vXO4!8!wiy -z3^&Kfbb$F(l3g2v?xK+&`@)aY2CMvXLk-P$b*$&h1yKS5!27E5r`6{(|8iu2qQ_iL -zXXWTw&q5vTCyB1>jFX(H&dgFI;A;5gxx73FOK5+{ODL|`gl)UtIC9(LAH1EdpJ7U5 -zPA{GbL>@pgQlhw>^ITlNKk8uyep1*L<?=*8u1(D -z6+IYm%hk2O`q4#GPA!{tT*Hb*ab11uv9rU^Xve{w1c91nQl;sVRyd{@7&Sd -zTo=RU08v1$zsZrBii<+@9f(L=g^Ux##Opfm({?DPighB}b62s8W?t-wtAR~|H;fNq -zx&owZ`MwT_TK=rKJYAV&%!RWL6;jZhf9wRFV>d1M)qYLTiq-M;U;Ad`XyceoRB@@d -zxV*l3kzD)ss^T-Qelejtchp>8Fw4B;eqQ92=vp2x=At7tvFTjDyjN8(<=R@gd9Epk -z{K69n0;qgVxXbQE@{tM<*1p$GuWV!K)w4-Z+~U^zmgWEJtnBNHRH2(#d?__HKMr9X -z9?a1B=WE0}^yLL6=9wNK*UP(OMY7H>>VlS0ya;l}yoc<05&1r__(A-iX7>VKN%{&K -zJ71$=KCWuK+*V85lNaLU*MJRrHK%Aq&`U4pg$~eN4-zKj@ObXBKT%11-F+3Ka=rZ6 -zIwQ2D=W%?=@q)VUI<6-8Q*n@+fKD6#$0y*~zCLS+`R)Ty#nyrE(_ij~_7S(`y=%mv{a^jkes#g^BXziu7fMFipU;X-vCYq$!pVFc_cI`RT<#)b{4Z5ZA -z7+&OG&593&L6^u%>sSt4Zm=aAwp>!(=(a9Cc(X%PtL*m(Am&G(TmN+rb!WH~7bsMc>UvlP&wt&_55_Z}cpWxze0N7W~y=-g1Iqp3@$aP}) -zjvyS$pX!l>?T{#WU6*8t(Wbauft6EIEjh>*Mmq8SvSc1;HzjplT5tgChSOabq&;{t -z-Pd)yN-;k$vCGFL|G4q$JYA{Rn+YCAY1pQ_{L>#!9~EO2O2$Yuyli5u01$~VQ9$_^ -z&3}+K^Cn$`DymX;2fFgrG@`Yl*ZpJOQOXhL7fY&+nP#bX=lG)aq&5S~Ha*W54F9y) -z7!xvfbIgW(P;_P+Sl#1KM+_4nCics!VG#4})oo);bhV1EONSmIz5ZOyl1U!HmcECD>yTD%$lO%m6K}-cDeCYH5PT -zH>UI{smOe)a`0{;jZALa(g9N}U}pG;-Ue;CJ13>mDcv!)`Eo+>bS#-TqmpRc2hs%x -zdVty$rSNB%Ib)H|djyT!J%&}DY9K>c(w%Mm`gkwsR%Z$5KU%F~dVE$2bH7%aCfl5Z -zB8NWCO6BTi`=zbdpygw1gI<$-YyHOKUkObOVUjxGV6-LY-Wj~#6VVX(|0XHta0{BK))mVYNf*FjqW|K8lu2^~*(w?WXv7)NQJ*KlW -z-VHL612Tfpo_h~=lQ&7%JX9=I;hAa?!7mk-IX;ctqXS|*Jx@}w`~9|h?y&|vkw^th -zLc<&v#&$_2gI*0xGuzvcy7}0-whT8*iSAeyB@%)dXwniV88Oq$Y`bsXD|BENlT?*Etrgu%Z|KfG#QfwNl}<1fjDv`&{b4LA -zeD@D<_30Y*%r2(<=SC(hN5@)$^4 -zRv|@i|KDSCI{)m$<`fJ0g=;)@V!s8+$s2Pg$u1I=#@M!VNSRY4VF$q#SD3}64)eb( -zw~$HefWelUe(&VSi$yMnC|CvMfTA#P#li!)1DWgoXrj{W@T*OWD=q*~#bX8)f}mGV -zLXIQw49|GMg&`?R4>7(??i*VE$fnfN+=cCPTfX0xYP{dDj1UAP^NZ|DPI=L!2^WV# -z@5p9Unx(F@v?9lQ$+1sqPhJ2&SL0HmeZ~eGoAI=Ic)3`6S0vFSn`ruCqt)mfm;R)^ -zjlB4Tygkji7AQt~-?%A;%o$^^KXkM(w?``3jSFqNmZ_|(_;A)V0`l%Ye(EbBR{+KBwj1#(k-yjvx&t!# -z!4Ab(FhHtu^I=Wd_l+!C(IL#=R%DO`DgP#lSx)fBQ>w1U5|5U<``_%^;_Gzax67GRakL%`%Ecz{RvHQX -zVkcV8yhgcl<0J71kmXA+8w``J>hlpSEFhUwP+RimbY;y50a+q`e$tFezXz019L7}Z -z{UF(d;H)$=@#r&5m8%{e(22QAWA~&Fl_C<=l}Vwx6%7R5FKXo+%jj=-IjqaMF%&4ZOpkrwEdZjEZnh0eS=LG-36xQ(rlj?@b -z7_9|AeeQM#q7qPH&c5eFk~3W8&v1MKm?T>cTfK%#v#qpfVQi9>gV?P~2(rs})yb$p -zVQogr*s74%&KzudogdLQ1G*qwNn}Dc6w2(>tHg8(3Nz^hnuRdlNb}M!9cq)$C%OLl -zE(M)rj=523j0<~5#!^R88IfJ%32eO|=R-qCKi}Vle~_2htwD8!Q8V@1FX#3 -z3+0m0J}jg;3}`2eQ1@p=imwHkCNJvwQTWc_*|e}$Yfd}~2AUkh8-&(G?6#KPZ^zrf -z$4Bzt=>I3+eCOCQdRXpUjb409-|=toGvug9E<#iB>)=%|(|F?j+0{RFeVxAend1J6NBkVFD8#jHs1aR%--7 -zx%&aqh-N4zzA+a5xsi7#4drgMYZl-mj;?3*TqDSgLe+Vnj9TpD7syJXqK%j0KuM(I -zSEsjTJH9zAj4&bW*!FKcI0iy5lWEt$6% -zh2wk90wf-$IhW3rjXz`qYzWox@$cW<7c(YfoUJyJ0b(xr>gK0o%!)@6r`8`SY+`E9 -zza@(nGSOgeHc+T*KnUEWKxs?S{>gp8VKVC*R4+8I`Ry^gDij1=gmg24|9<;NHYrdi -z3~K3EQyYm;z>kfE=*jT}uB -z)*>73v+VXRiau`%myW(i8{(uT`soyCvO4H(EC^O}@PuuD-M^sG3U0f#9Lv@h$#iTa -ze`(XGsfe~Nx2^G$PMJJrn^Tb)T%$TXFzIKjn&8brxAOk|`#ZcrM3DQ_duOYGbWUo9 -zQ>TN}EuLUsiw3w@8DO*ql6A7rQW<*Rrze$7JC^*}Q`Q$G4=Th-7?eXp>(-4H#$^x@ -zwtf%8{W?6XBwhB)(7fMqmvWP&9ZAgc6N=#LNO3DR3{)Z2#7unplh -z19b#3TSo79+u6gw+t1X82UIiKOiR!fT`bEkJUOhA6wcdcG|ph!xo8ucH9j~x;Z+4r -zq8GaKd2n@-!fbJEHxQFQ$)u4>vhOvc@{B&bA>+)UlS8FdJEyOI{7kQrUKw|;pts{j -zi``eN=~!U39iL9G?tv6U&RBh%8VEaRk&i8{j(s#9!O`90|BtbMS&|%AwuZ6!{}$4? -zBEQP4s_rhC$u!ecPoM!vf+Ug`uz86{#?#A}UjQ(wWw!0?)0IRp7$gYz-Pd|@M*Se! -zx4|#sJ12iHt&Gpe1+w@j8Ob*>z;4+>;3Ne39p(kBZ#`^93w3d$Ewnj3;PmMRY_N}? -zZ_8->A-D0^%vucdK)&mcXKnx{mRvWClfB$;pOqH$Zd@n-_PKluRn64eGx@I~BUhj) -z$$Q~Rs+OF<10$F#01!yPAWqNyoVC7M-ZD(t!!lgnG~GMBFRL&oAA@t3kmG3YMO(Qk -z4AG+aMOwd$NyZ1m*hZzkLbPVnN-JUA-aV~_B1?&M;f~^FSvXH}NXSxj&uHIAieiJs -z$~W2i{Y$p_;FhE2V0C|R87(@Q_6Nc~otGbcTl#N(=G4ZP!7PVlu93v5#J1sEfwu-n -zf50W(zb+#SMAT*SU;iS}Dp;VVS_Ggydqv=}!4>-WNu?db}K>B=5gJ{=(PD -z{N?sx_>6p+nz!it@9+QMke*=M!h%1;h?P&uY~joYEnr?Ix*TcG9CtCn$m!y>N#EsI -z77DHpF4*B;AeV#}AMORmi)#Rvz*2g@lc|9hi}g%aA%DC9+Q;*46{{0eY-ASj`s1GZ -zI;(Wfuk!k!ad^PK7B_$fdH@Mq?3(UeLQ5)Og~o?9Rx2Ij65 -zO}*26cDNm;hvbRmX0=r{v>y>O6v2)2K~_fE4F9c_$9{~X01mR65!P4%li@G9l~W-w -zH8c`k&*bdQ%muHGBU!c8VSp10%wSF{u|->}+o^?-nj4?qI6~bjD(c%n#`542Dg^Ws -z31IFAqCH85>J1Z3UI-*S2~G*tS+q;GDj3U9XhgQ!VR1BnvO^}6CNsWuTCPo#35#+dpGSmOB+sFvuf}6l0Y^)FN@19t1w659pcwy-bPOpsVOqhbCre+_CYn>HcYLVH%BvE3k6tL9MXyEGk{fh0%R^3E -z5s88hq+@)C)bkRTLxM+0yugW9uefoKt|TgF3JGW^Kp>*(#$FLE{bi4m{WPNpmb3^t -zq!(#@EuQ9pMI!c`r%ez2O}1BvN%oUcI(b{+5)Jym=|1hldz25 -zhuR45NG(gp0Uv*LGuAEsp^n`)C9T0DDrBlIYwGc%l2@bgPq5 -zAMakouk_T0H7d%$zc9%ie6(#KOC6Sg3T64z4STp_Ck_gVxQfVyHf$qmw)34>l5J}d -z`FnnQHVkD!vJFQ-k>D)Nla?D9jf=aZ>NgIk33`63&IYYjb$>Eq#glB@b=2_F6F++( -zmC@sXt$)3gKaiAga}L0f&HYRJ&FIgcMO5$8^1q1_*M&niS!rw=|O{RLbe#84gP15v%Z4IaukaRe)E4Ml1n9 -zWWk*~yw}Ab&Pm|XPM5c2jg-C~FmM4uCqs@~eKn~BTYk5Q$4mk|jGy{gexxnoQ0K%k -zAOFc0r*|xNiDe_c{cY2UorF=Drg83$@b+~+zd2g+@XN_5^akclJ0?+=yiL1=ZV)Ot -zsbxJVOA3klh93Y``x$+{i>O-rczFXzQLgz;s}hio^6kvya%tLPNHv>Ju_{ -zJ)0$>YQ`^_vw;~kZLI@^ABDORzf4vpVwq7^m7v^`gmI|e{+nYWA6B)ta@gr^wxkwv -z=%kM9akUIbZ&hKManmCNC1w)V$M&r|9eESL{GbOH8@4?b%^$0?2LqWzXdksOafYVX -zs0hMGGtIwzAh!gKv-xJR>v|Uamkt=@J26CU) -zYE^bbPPV8(vFekx=YwHwuu?UY!G1sB|iBwtHkIWID -zhL!OAgrkTY2i8DxCht%aUywblZl@q2GC=#1ErLH0kQaNJmZNw-syCN?%M3o`#}*25 -zcH}kutBc0B3`}k*XYCulU=sM -zss)%pw>JX{C~;lmlWudndzR6^Y3Usb{PO8ea2W-j2w;7V>#^nt#Usp*V1+lMdz=7- -zB$qyg1ZZ8YpMF8ssXgY8oP{Q<+>y_;8B#EdbtXnw)+4nAa1~MmlhWqYV2CH@g7P8=y5(?AO+Kr1(Y#ZsXe^ -z;R%jw`mqKHRILd(-k!7};m9J3hzg;D=VlEXZMgY%Fcbw%*dwgNK{sldpZQKx=AP_d -z*4VBhZ^&KrO$$}04>b5&QJBLTa7wn5a^_%G9Z-XH=bq%yKAUG497M%@_(P^q`GHIN|d$Z;+Q~6R4lnd|BK^8c3ltei$rbi=|?sCob2n_ -z{HN(0HUw@xc_8D=_Vc($2PSEbD$r)DBR$J8(fP>~0K7uXp(dPJc@pMl -zCSvG;>bG-jO^Op6hH6egbO;zG!{h+1A!{>Bcy?ZDmn2iqwLjzM0c=wI{RlZ&g`^FG -zgRc@4WWL$1>NWLZf{l2-+KAE6Ete)P(rSkz1yN -zq(?-)##=FTwZ8t7wOBEZfH;F8wk -zRE4}c4yi%ijp(FvqoHI^AQ5=7Tl$XX9Y0xgg5Sub0nGR&KW=$k+!d;$YXoIj$!m!_ -z96Jl6GY||org~>7d4a;QIy#z^S!Evm$+6^zy49ceC9QmT8RTMhYN(PSdn}8X_hX|d -zDM{IKifGe-Fj^TND5jyugXAJF2p+BGVbm%o84x4HS2W}K?&|~9e%c^Y@AqFaC8(o7 -z<)PKZOX-kIF(bVLt$`?v?(0ZVzru$IultW$m94$vY -zy|on_Gh$qZ2`rW67MSA7<+3MeWnzskK^c;)sryvfLi^oy;c3-Q;FsCbgv5oj*15rl -zM)-LY)(VyPXzdzFWv8|}Xb;+0cQOmqC&#i-Z;)21L{V2ZHzKlak{2QIg^E3rEUi~Q -zM)$z7xkq{#v6UJZ-DxWs2Di!&oFM2?qIIY-#NIL>E1IWjj! -z#F?%3%pnzNVi>9$eq5@+#hr*IWCP(XVIq(j3yYGUb1Hv1U}+9D7u)t^^~$#_GRZ;3Y|@e9n(y5PnUB= -zzos^J1iTN58m$0vlw1%ty;kuquASI%@5x}nPSA&FBg3srVW{U2gT!#OqLyns%@eR+ -z=Xm)-5*5tbiPR3NYfRzkV{JUzZ@XwLx4=|h-VQD6ew-Jv?=-@`}q6(3{YYQAj>*g9BUY;tp09M58+owMcGi{*uGZLpok_e0qyPAc$>;;x*b&4)dj;auTloe$H*%R6t^B&$ -ze*SgY5}d>D*h~b|kammF(-hHpE@L|5f&Mpr_w>BHlJ{`Ktm4;_J8T6_9_2jAfHgtx_- -z`mCb~jg`UEklNRh-)Q8Sq -z+DQ5S#mTN$;W!frg9jJIg0H%Vpnh|WwlGcAfN~g8eD`)lD}{WLz*aBmRCH4ylR|UM-*KbX -z=eT8jgPr$n{zSzr!o44eb7{*~${7vrX7RFn*j!8-HH*gvC@ujH@7_XZYsO2r_2z)1 -zp>L4Hh+IUB%J@>`AiYc|Iyiij!$2BRS0X2s@QWW8&HcnPk<>_Zi>@H0=%}Jco+tM5 -zqKBxg>C-~u5)>oRd*akho~$!8heK>x9| -z$%gYGkz5i_Yg$Ws8WGC!3vc(#}sawhf&!*_GE`js7;oPya3pAZ0u_= -zfkg51Y0&y&D){-viW9XkJa8o3TUt+diElBQ2A96EF^i%M04LhqO`w=j6C4E&WL8%0 -zGg{3%`*Jr=#y#@HTv@zEWERQyL$<~@SZeIDqZ1yIYJgKwIf!5?jbxFCASh#cMswk2H=*+ozy$j1@O$*tWdxf!GT -zoU8(!)|D+xZcgBCMI2Rr=bkxajm~;RkVRtn0ku9e2k&_8T|Xr?y(u6-(&@Gn{r!&E -z&Rwex>k(LMyM}H_u<)B<368M!0}AbNKFAnj#~Tx+{s`6;JBM_w-K92>kz;nXBrDZi -zlxPcgM&nz43LAD;OIcqait|4*~izy)gJ=qikExz1Y%IBQhW$YRJT6=*rg(|25xkQ$4JI -zeg3X~|M=@~pGM>F&+panzCQdv)m>(Vlj49N?a9Wnz2%xSJhp*^&qMs{Prq-5aytpA -zwVH0a+ZT^)hL&JQlyCW;KiD;9>!eoz@vty*0!U}c6pdQVhOE*c@hR8`+!LJRj}RC2d`;T%-VF{p+pgLOWEcRdi#TL#=jXJH)JyEE*06rU@3}6&X&h(rPbg -z*7a=~plGaTQ=5t35LDccMewukE-TgW#@%#d&|Qz1O*sO4^hxsTG6woPp$E%ZaQFvv -z%c*HLU$agD?Vtpy9E_q-i<}FcT+iPam!gXy8}~~b5G_IL1#+U;wF$%=#e2>f#T2=N -zH-iscvVg}Jf&5E9yH?;4K_vz@k% -zeh8mPRi(C4x0Shg`VH7WBr~|8Wr*aF=h7uc{`@pnP`7OjnGOM)mldnq#xq&|Utg>g -zP^kFv{ks5*yGP@k9e -z0K^c4tDv_uX5qLlcUA;6G-fzI4792LYrzT-{FlLBvgb+y;S9B -zV?5DevGxCkWq0ZgKgrCH47Fp)c#}f%Th3aui1?pd{we*|T(m@UzwapsE?i)n -zV1(I-2;pWm{YyIY+{oia7G)4eV`og8hqdvN-3`?Ll~(U6dTY8w#CI4SvcR;05a>SkSl^-~xfvGWmb=9H82)f?26g3USy{ZgBYAlb -zFuhM4FM(COjMAH~(Dv$fgfF8naASRpR`R=NuT@}%p-Hcx0e2fs>9NQ-`#jJ1js->?ylx^I1K`k -zX<>|jntgS47s$$B4Rt8s6=cXT6>ur&j@{s^v&(Mt#0uFeo-oiThMAbDBzKTij7D0G}8vUHpRd&@lS{w>Zm==EkA2SpZ#|Sv!x|@Tv -zY_pHnrb^a3;2>_&f~1}Rye-_sVV6uGU{B9%nrjswP(6_FwsxS; -zWomNA?>Wc$oWyQ&Fq}R;y@d@Hx7RJrs-Qt63=NPnlb`VTp047!A&FAp&XIXQDPq6Ho?4ba2{!At_E8dmK~T|CqFu -z{yvvj;oG@Nl#>ZX{Ve{978;>Qp2Vlxc&yTZwv}RFu?BE9xniqfdXb4l=0}H=l>!L( -zB{^C!(ZakrgowCiR0RP!i_ruJIuGxGELL8|??2*tYmQrwKI?^{yTZCK7QX?KVEw|o -z<90NM28K;AzEF88tVe1R-q&c%+oT);MF5R@OdY%BIu7?_?xZ&yTXQf+lII8=Ham!B -zxn>`R7&a*G*`hBSBJ4Xu3CX5{64|^&WT1OB{vA2a##oRNYkG22!vynE^BG*b)cEG80pl@u031O}Jc8%w^}s|$IHjG|?Rx_)r1yMwp2kl^60Nx4s -z5pDd~q&nC%N%mb*4xd?i4Hk6bWPV|2aXRFsXpWuHzImES$vcl+ER#1QOjiiC^&q4A -zEI|*ZvjRh;wOfP~vt|=fWI=}nox0IvGN&r2ks)AdH%%4GO-}00-vEpQG;i4cfPq*f -znnKoW74X3jZl4sNF03o4y2-b!!!!j_D6?XPEPx901L?eti9e+~A~K5_ -zjOM5JRS>^G%rc)ji#ccxY_^s34<{Fd(Dy*GPiC-7eFIBh$Xm4SYv>rZ{hTA{x^bsa -z>Bi+WuRl43d2x+VyTg@6slbQLxF)K=;-lJdmXQS|D+Gat1My_l=!p3ORy%T+GPc5P -z)h53Uj^mT_-BL)Xg{mR4oK*Qn##wmAqMr=K1zVBJQm{yV^`gRQhCY#W`CPM_M__9w -zO_E+GqQSXf_LKJa1V|32w0Eol<+&=) -z_KfPKWpT10AaD;sJwPKV85u3NxgmtIo!W4N$v1{-@r+h!#J(>q~#l -zK5+dGx2kSnAB#q&+2ewnNSionPuRXPrfJw2#WF22ZS!ym6QOCy_qugU(#M`#pP+P7 -zFa`F}vF5_rmixf8P3(}$Kav96+$+%m`cn&5(P^Gy9t9wCvy}(^ulzL4`BMAQgrt -z`uaRT$7`TP!u|3r9LZvdio_;4ftGoQ)l)MNfY-8+DA$q>C-qN -zu9=pufR=PSRj};j_-n_7QuGfnQs|GFflB?C;i69_SC&KS7Bxs1=Awz6^w%^Ca1`PL -zTCqEmzE;H%KwHcSWlf+1T%lbJp@aWU@MGQdAI98B>jrg?uy{z&_@qMt>(jcUrsWG; -zV1<#iW6%x}fOK==Ci6F&2<9z!pUktVnj33?#^h~%pdDI4kH!`NbWKp@1x*96i*Wao -z--T?Wc4 -zJT`p>+;2pXHNjhubg{W+#401A;g|aF5$fSWHi+$^sF1Fz1qci!r -z%ujU2!3D1JZ4EGQJ!-2iA}haRzmJ7E`$xfB6>9k`H1u?8A6^zeUh&WLo_UDnSptwo -z#h7~bTiKSk4Ab02u6@@XaJ4DEi93BuC|5Ap;6qwqRF`{Om+?OaWhW7-L^DTQYiv?# -zsWuM|i=43n@oRBH^FgWsjvE)kC#+GLxysFXPTThVSN^d5VlHqJ-6QvIZt0^3b0S`7 -zthuMX>4Z)=qp#8HFZrx=D{xLD$wUm%iVzOfJQBerm?cVP%oJgaPLl`9cUNYZ!S8#( -zdRpZb4WK{NV(px|F5EuA0yUr%HlBp7XFAmqzn1(kJYxa=8%Aa|&27X|gc8SucFu*D -zWCB?Bzkrq2#wdeJFB?b@ql}AxHdwcob3|Wvber}0)kp`bvLJ06$8%cXjR3fKJfoEN -z@RLY@g$x*7P#XZHI@OZohemTOEXqQ*)$SXRzKmekkY`2L1!9gSicrj<(5 -zhu^w{LK{A$vH>V!Xn|Sp-XbZoc-+2;0nha>oM! -z%f4F^^U>Zl93PF$-B%s^%hrKBhP{*ynqx{`#3F+;;2#6u7dcW!eb+}FBxS}E6P~Fp -zW?M#ukFe^Btr -zHD@|%F8{v!++I_oY{KZsV8CfP-PQp26}8lAZt@DS3QOer$qKYIfWTAelCMxHk8~Mr -zX#67$g*Nhrk148epQ2dAApUxfgcuGh{Q&@8H?o1GNYzzllr&Q1lE4>FWb -zT`NeIbl-+4YQ_}Jr`vf5PzgWDbh6QxY>8$Y5@smUCp*h$RUZd8e#N0b7ei}cr$J*# -zw&!UV3=zxQ?b5+{MrAx{1A=5L`pHnK@U@Tr-QA=lpZl)vRxYrSd5^TO)yi`n(=9a> -zFLlMi`;6M&y8RfD(gMJP;9W7Y_bz4myOx~LbI;bBPm7D*X!|B*ds+chPl|#B2Bm7X -zhF!#1eIn38@IxBv+OTt&Uz)Oc1fcJkfg{Wp=w|ZZNuqJX;qI0jqPxH@;8mvx8rJ8H -z$~(3!q@^-}dl#@#{8bVbmtJEwvubW_%>J;HdFSJ>bt1bLdQQijR?2v>Mz= -zt{QEk9F!J#^xmDS8m0vS2o`q;(UY6Nu-}7X(Z~aEDXFI7c%96BO1>F5eSw}SwV76K -zH84;g8v`e848XfH_8R~_byhU1(n+)w&mfIMMa}bD9iFx)My>*$L+97bZwhQxztG(H -zn{0P8Y9D==q~yjOq_Ue6@YRAuB_I!EEOJYJYH#}Z$rb3F;7)&&rI!AN4h`$AFr7$V -zd|5u8o~SV%g+n@4By=h$7^lQ@l<@!>3N{T1-A*Fs-IDwS@UKFTgqdtJpe+tu(U@d8 -z06!ORpnxcCB72MJjzo;Xa?lbSQSUYKR9Cc?5^4M!h&oVPWG|H=Z>_qRH1MrwI^dB7 -z0vBhZDoDVuj!MEP+M+Ml7u-T^v5{vo*h9tR;Z=ivb(s%l`C$=QX9iQwWgB+=2AaGf -zD47ch;Vie?_?1Ca@ouj)T--uJ7Q_Lv)$aPLu}6Bh4Qg;S;eNV2!1+4Tkuf)%2-u2I -z848M}>?nthd0&!jA!JIgPb>e)9V1mi*2nZmOe`)WRGINwdb7z|_AE%XqfmKeQJD9l -zMk`iwQtYh{ugt^-rGO!6lq;y{Wz?f(G9Kxh;#(-8AO?oeSSFV-av*f<0Obu1Wm6e9 -z1+2kqFNq*V!v;@Vn8)d!0?zy -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 -zlB&u|f7Pu=MUa<%zX}$4!zf!=;>2W3Yf -zb;bp$lV`>^k!1!Qg81o?+y8ziaGnl*GF-VGS@VD*L&h{zHy#@6?=4(jGdj+ltDj)_ -zZUC}SfE$kfeHVOIvXz9SFi*juR -zY$YHu(w^gNpHMpAQl -zKW4f`>#T*;%x=eYI*3$zXT^ -zbC(f%<*iVfy;TjD5=rT^A!cuHq{m1*Zb36+{d)%)BN_-ynlYlrptj{FMWxJ&%;KdH -z@0bPOO)FM$xH!}q7B#C6&g_olad&Hs`u<0OIAGyKItCkl*HGskQ;c#tpU2L@u>i<6 -z;l6nQPX5P+w2ESolNZc$o1UKQNZ(*bgW^gXt}JqpT|n_%pVxi8aT0c)2! -zSf$C96G5vL^N|~bV*^1%ZubV<5j80m!E@e#+(>>+6D2pRcr;|{w`2x{L6V^4`&Z=T -zR>6u99XX&}P{`!YCeDS~IFnA%A3tAZcvb)S@$kq+I+^j4L( -z^Kn-;;kl~0TF3(bmEq(KYi*g$$EICH!~V6|6N&75)O*k`JnFO3mFLno_jvzpPxM!u -z5z1=uQupCA?hi>nu5lnu)zZW9z{l_DBrhJY5OZ*@k5EdybM0>bu`s*M2EHD$d -zCea5PNDnp13?P%|&r20RRd2L&4r9`MOjaHAr4ii6Xg+kc{VWiL=aF5Z8o4-J&3o-a4|SekT!cMVw9m281wk}@k~A0M{n7PUZ!{XW_~ -z7hJB7_G?rLH-N1WnkKOYop?T-xn{C&|HT+DnQZo#o&Tu&&3<;jr|t3aVJF}T#RfZ; -z8L%-)Gd-NKqnu!p{f7~bD`Q3bB;)^{m;Xm5>>B!ib(7t7g6KC2%NIxb1i)Im+dciw -z{k{f9TP(#7Wj$}eRhfRpFSexV`9DI`W(C?LosB<=S(#4SfB;^7T$d)y>4$(rKK4C+ -zyz5s{LJEB;Yf&$;-$CqVD1$?_g^wTl(W6lngtLI+D8M@QM$izo!!FXMnfj3>g~%RK -z9Dn_kJG{&^u18*iU8{b4{ID0=Y?H1xehTF}s2_h%ftdPt;&jh5V+9WOEj_?Qbzl7NbbkB`vFJ>d}F!7rxM!^(|O?jha;`9A4xiV{F5W=D4Pk;{;E;r4TpGqCGK|- -zcvTi-zh!3Lf6;8&i~AvWBrIt^lK}nomn~_YPTD&^f7!E|km2S_vQv;%inBg4gjo4x -z_2Vk=5}tb@jf$14SD|`ZR=AhfO+3sHXTOLGZ)m1K&cXgsp*dA -zK_zu)k~M=Z^8Q`rG0f$%01c&M+UCKPxk7qlEkX=O&ehYRJT8 -zJ3430hQ*;ovqx|{Ae=r(Z=3}#$YRUW!tkSRZERI=eLWLPHt1HO_x5zXyGwz?NQP0auM|0gYD8%)(sq792^?nSrFC&83)os>$-zY^mE5U1ZAcAGBy5}h -z;cim94d!fel`_YDb2P@4(=wigD`M--0q}27gw-Xi8_ao`h$?rCyXW()jST?a^1bJ5 -zk>e%`GU#r70+nI7-`-EAVtx -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 -z(mQoRkZx`@iivEilGWKVGKG1F -zNRsvppP*L$q-b&cE6mo(xb;0?aZx{|7CoK$8MP3U0gXA0rSdq;oXs?!~%g -zg?9r9L;13wk+8gzQ}K{orTGm>U;^#t5mCP2UJfOG;C5{01|M*(}(5+am5 -zDe9QjwvlRX$UikkgobQgtvx4Kj+VSGOj@HiYd6?e6vlt)efm$@M^aoMK^_!DZM%}H -zBlnC701Y7vw;#iyE!Fr!a4VEzD6=pxjQ5}<^AlO(zRt}yvzkD`7ZcSi{Wq{17;YCA -zf?|JEZtWs-Bi7@&Y-+92Yiu5zR7HwK-vuCVaz`RrhKT1`UGtsX+!k2`xKs3SC&RoY -z#(A4fph6?>*2tFCwT%kPWw91hP%EAwVa)aZpjiQC_nlr8e%;vGp{ER6S*lIJSIgd- -zL}Ot26y>V7RIf@unU`~zzy1EIjz(KlhcJ;#XQe%EPVeKJ-1>eX5J5!j*1*7Xa*wp05(R%~5i69@4^fu|o&IBx9+#QtTDyQ@zMu;K&ZutN^&9DP#G*Elz2(Pe(imCGWJmTzq#5k@uxNdy5e%U4#lILagt*&ouJKF{rHcumxp?|yMO=wtGFDv?Ospv -zFzOV$bZ;1bk5}@#M87A@c`yYEB9~>x*d>!3ml6h>Y`UE -zOGP9Zb?={AHb}-o`uo^4$%w%G%zZIx%5bR{VhIVwA(e?v1>*Kb4rwG?)e_s{*liMm -zM0=^4hh%q|ZI;SX7PbZMWG1R5GRaNB4g!vGU>xal->y*c2uID1n=TY%c|FO7y}M1J -zrE1V0tik_V!zTjgkCB{nz*C6ARiRev@p+if7C1Jznu*O}C3d8bXBdtN?FL}=$Ys%> -zY0Y@?nSHwP!U3fQ5ek;KU2TWyK(12elaVfB<&^MB;&Lb1%J-B3VEf|H`x&(c4;0}V -zZ4f4aYomBlP`XuAULb1fQI`X5Ft%;DNs`U+K-LvvdG?da10onz^wO8WR2AWlP>!F; -zykdMmE1OkNB3@Qxal8B7a*&a;N94RCKHVHZHM-&(kuf9yp>JxeL_(q29crgwfV?bfOfBXq0iPt*&l#rOXaIEE^0etlWL4s*NluA=>5AVF8 -zX;-Wutqw=!Qv+pE(djhkG9QPc;Z?%LL!8vL9H5_X;Jo#@lqg`5T -zw#E2UzV)%@WS#J4wc$(806aO`EHt3^w~1X8^O7Ie3$Cz!N}jGs2=paI_(X?+_J_rM -zxJwkURpzFx9FZtrIdWj?M>JD6w+TQ>i4BOvd|FKRK)1jxv30y0OuGEtAZC>OY9Cy|`Iu~nVYvdlhu1B!%YdT9GJbU=#9L5nmQCsNv2 -z1js6pYuMhvu+5Fz>Lt# -z)&NP{n^lo{Uh11o$O&3w%B|A6C|JPi*s(IGjY_2k(=CUz$srsQyl2hWV_H-M5g9k8 -zp=v_GkH!@Xs0r3r(Ns?!Vo^=beByiZ^MHUD2(3{cAu2&pk|Fd^90P7rb^97lzHaTP -zc^s0d@(AU7&)HU5b71+ccWZ`Z{~Of2{GXI0Yy-mKXr@oe(ROtm9zYMgP|<3|2jZ@^ -zMh7*PzLS5li-oaIBdXOCl+!UMu%VKzg#6i&!EZ!Rk~li*L2;q7aWouWStil9w5O)F -zQAiv|A?p$L9z@(mQnF+K7zGYOW>4fkWOvd7eY!7J?|w6cRB6NGTng{k2*`KzzcToI -zKzX$GE*Ro)G=PZ~fdaIO$n+<){Mp@&A7J*!wkuE-V}TnS-8X}v=5RXq&mv%3yhx-$ -ze2QHriZjGCPKQzkRk1{!Qh%h#Y5~!JnsoyojjI_FMeuoL=ni9 -zRYS`GKWXTvD+twZ38N1t*s@^$HzW%)22n3 -zIztMMx5?dv>LmsLQW<8ReU!a&V66{}bmSw%2{=AmrobnpYol(S5f$I+S~8MV=qio+ -zGD5wlwfA{cZp<6J-ce9pfUbq!Gg@xO?FK&*>K}dn7QI`N9D+StvVcpmYpDOuUI$2$T?hKt+L8WvEhZUX259SC2lm%%kO4_v`xRsZ#Z|j@27`B!A3K8$ -zfg+|d1Rq&%z^FTPnpkwwt_{gXbh{#T0gA+8gEGVN`G$HOP$-yZV=AUFG!fQDQUJ4T -z8FD;|T;V8rmpmvjdAX*|62oyD4>0S4ZMc2H82(tgo&1AIb^QVSTMFjOQXX -zvwga0N+*^IPF+0+Re*efC`SWXcY`5&=xOL!&6JKmaW_#3qt81|LMqyOk<<@sA*UV2ORUSpd%hr!f6~KH_ -zHunIs_2qNq!Uz0igbtLWjdt*9Mt3#P5FikFNVnrXMaypb9&I6~3n;vYy8pZMeHpj;s}O;@d?-@{z|O~ -zyQBwWJAh-k)=gZAhLKq;;lp)HNmK1ri(eV*kpWVukz -z<5ZC@;gs#X7>fqP-I%lmAH!%iSd^qmx69lliAl!vn{QBg3uwOJUe>FQa&5ZLa>mBd -z&4O*3)BC_X-_Harl4C>ZGrkH6k(cW@9-nK=|Kl@mTN=zeXV*N`$8IrU8?x9aIiw&a -z4rV}bk8%SF$;%c~GKg~Uf2{#i;l%fAw{;g$RKBqIpgm?vQ-(?bU9XIs%R=Qkkk$eW9)v4sA -z=3i`}B}-DhAjp_YaRstQ+5cC#{f0b2SE%JC9v}q!4?U-!GzfHA9=}2D);Q#^lT;c> -zGBayCbOxGj>Wrbmd0U%p;Ek$;gPh^5m( -zX%y&CQGjvX$XQW?td>Xq1v{GBwa|_{_Vuoj*ROzyl?v!Ef@mVL5Gr8OINF)}3kx2DZPC+N -z;E4zS-vDCZ&p|a5VFq>e -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 -z_iK$0XCc@_<=-xv{dk{kzE -zM{XJS1u>+cnELhqUbzUv=dpg7kZip5zVTx44n%{68He_$@dOIGH`4e2zzuK*L!z_n -zV(wN*bu53B8AXFV@`)Z&SsF4)!$68)!j@l7=T@btOFVkGBv(+dK?$~>Y16Dk9STe_ -z2qoIli#JT91+8kr+5=3o$Z_oy9l)JPOOV$WDPr>{zlY43+a4N|3T|-A;7RAv-y?*M -z*prAuY2a_Asmx)me-B!R2JHrV6>eX{f`1;pJA{Z*>@C`9Xi -z)E6}O@46UxQ3ZLB5r6>zdTPDxT+$%1C7)+U|5b0&X!|DGtoS8`^U&q#J>crK{? -zN^uCx$vxrWG51Hk2DR{*mmFwP@N -zWXYZN4n4&{oZBD>hThQvZ}fLYF2$+ApR8uGG4KjC$kNbKev_-hk_~mwKZ)-$YCp*p -zW=%^Pn%)JnfhzCOtq&O91;zkVE?J)gHw+*maLmawzV=8l6BPj3g#!l-LfKdf^S5N$ -z0VtTvwCW1ERsP3GlXbhR&ZyBB16bbeE7l`4^eQcso)U -zj@$L2CWM}CQWl+B+Gn1|M%X}p!mDlu28CmqxHkk^eTXVjS0SnmM#Od6^3YQF+6 -zgu&sM(-G665us0VbW-8EuLdK*8^|?4$FeGv*{$f8DS3YcJD-ug$tZ#&Z6MFzN)ig7 -zMXZ|?10=Qyp(TnHyuZ+P)-$<6hbuKPPFRnwI#uMV?2LeaWn^EFh5_3V0M`Ls^euV4 -zb2l0;6>?p%0a>%jAU{|w(aekwiQ)F;F@WI(lp$MEO7D2?eV%T3~@rCRUSdw_AR4SFSj0@M=i|-3pdX!~&;Ye;JM2X99766Ly=7 -z>yasj-OfA!SR8RxEG=eP6I{)D^ppI~d{8t--^ba?%(iR|#R-K_WR1tU-)}E{@XPcR=QnoyR -zg%^*?XVY90$SB@`kUZL+QVsT~Vy&j*+B$f7wXxBV`9+TFw?`PPBAMYXWbJ55p^sH{ -z!X%7l8<8Yj_A-45&fOg^l9MA#@)?FePOBOuoPQ_*lIdNvD=h*2`vmfYp=Z$39Z!2< -zB=N`$*%Fws*gEpk(uL&9Bj%qnOXcLa=7pI -z(qVYKZMUsm1uC4DNyTCcO{N-A+LmLVL(VvgZt}|}&TAk++aKgoWvcOr;La^$jthqY -zK%5ntgaIh?y)Vbg_yEFKy(USzP!HLCRV+lEPH4A?+07nZZx(F%k -zyo5j@5!wwPm%A?_9g2yk=o1@SMdf!L`9@8_0EDlk9fuUjY}x`ZqCYxI7F#LVVeKol`tIB$q@8Rj2$AU!_p$GSB2D)HDD1M-bQREgy!30 -zSG*S^TB2<#7|xKPEQbI@K)b&i#VPu>jbTZZfdUr&tREFb>+wXebCj&j~CyAk)8r%atmunNjBdkH3-B>Mb -zncdD+UyS>709}ehbYdJ;V0|J*I7>kWPc5tQLu-RkHRRbjU2{R=n{E)*#M~B>@*R@S -zyer=l`5bAk1Ypm4ALG;^zm_fv*)CAype?x8@GzrI`gK^fWbcD}2XJ4E@iGGXNA8e( -z!j)Gp2Xerv8B~dlu@nv;KmSI)YRg7Dbe=|ANQ}hYT~J+)1+nK;QgL+0wIYJ%8_2h( -zBvG13o9ZCFIMK#9IG|@#F1)VT8+=T2%2d!!56}LFan%rhZfl9TXh -zQ0esP1WW?huFRYUs!O&##3Cw_$L#D#Yy^^l?2M?$+gzGsjnxr;U`#Y3i|F;D@Cl;~ -z&a!}$V-q}=M-KAPi%P{AZIRsFI2Gb84N7kbSkQ+?B?kuTPv~9YuIiZMlRquFHOB|L -zN0V13#W(*|2Mg%drHQi~GwCMnCyQSRyIsU+g$`8%4`6~2gwrl{oX1um9&+wN8OO+` -zdIAiMkEBwAe7?b&UZ6;U&DS!$38x|i~NS8^qHJDghw1?VIqf3|A?u-wJbZt!w42T*!*DzQ;7qF1!TzNKOVmrAyFJ|WMsAI-y9JyQf -zk$8F7g8l$NHE=>NRXrZPoppcf`688L)(=0z&<1P@3G=9`oq@=1H922FE&PrtaX<&; -zZC7Ip<-#a1CbY<}_axHPqb3bDae{)IT_dmpkClP{(8EePhl5Xg@){S7cY`RhyR@P4 -z{S>g6(Xbq)swKkXtTkP)LQe2*@cxlT!x}QMvj<9+P~`hAVXCXsw;myVWtY -zEqJ*Z(AFw}Ip>rWxgxtsUJzkr?=#|L1+plW1*q$q7o!Ig^4eSHgnbHb@6$b_0qVtN5)f;f -z6gEqJCf-7E92;NeY18s(Io@^bKBsKSO-vPg9@%w+wcO*h^$&y69hR7}p%IaJdQD{gTeES_z6+Vh9g=Xj49<-$In(l~bjbh}7$vndu7_+?jyA7o -z^%0$Gttyx=239CKz-Xr$$lmD6npi)I4?Y_hVu^(L^S7-}7#|y>SjjC*uxVif -zk;OBc(+E#{<0DQIwuNFXnm?Gs9>>>KeZHb}t(NJ7#(%wwU)60B*(27;8CQ5g1U~TQtBn`DZKmR*4IbLjS3zUn8|!o-RSwM=kAeIiiRADv7Og?X8#*_ZVyAaH6fKy3 -zBx9*nIM^IVGtYMBbeldtze7^qP>1-oEV?&ZPR%hJTpQf4EP+4$^FVjuHUd%={^%xG -zQ*|?eq%;_o-={O)Q9QG+NXm101jiCr_e8V!LejuB38ZW7Y;|dzk00%~@;k-3O8sz< -z=L_vAHTIYVC)K{mjHGD;O;i(y(B%3$&>=axBmYd^Ohs=N6%kRNDWtPu(R;M@)nx6) -zb&-C;*LunFOVe%M0wuO -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 -zNtMO6pBHq7(2p5_U7CYv;0Nzv7Lt -zt-bm{2AhVBIV_pO_Mb_V)FeIRfz^sw4`fe^fb&wDdCIE0F~;(NYkTxS9NboH6K-AZ -zjox%y!govCs>2C02YnpyyoC%?YuUDgZ3F(hRVWbPu&^`!halu`2pCt4_Qocq?nyGn -zwy-Prf|itVC{6SixunM|9ZcF-jbeRdMkSao4}Q-vXNwm}mxRLWPp;1HOX}-LCMd&w -zPN`O|LJZ0ve`wN6e1PH>A0F6NMmZ<5V8tDcbW1T;y3$?B-`sV?wT1k(6u#JE)M9X% -zmnwBp;+4fE>{g3M?qTOGk`#9%qm`y^ScMQ@H;6WA4U7pm|?DLvHcSEV`&OZ3x#K(`(p&bmRtYMxG; -zVdwz(%ib5`nl)9h91OjZeLsJF*oXYWijUE>1+YVlaLA^Er#2SrbMz>p-9db_(z`HE -zxC1Jig0`a$MGcz}Md^IHF)nk^hJ5mxz$*EtgpgOU_;>Cc@q6ZUrThIXkLUAD4L2ZN -z8v&6T_7qSaW@hBD(>K5|8wBHgGW_m(`S?Iy&koRQr`5kTt+^M{Msq7wu@Ea33)J8DJbZV;-wUE?AU -zBPkz^4En_21-o?b99v%V_YMTm2&k`|1y4MH%sNe`G)g^ySF=4(7po0JH#gmwQ#!r6 -z)bH4VHD@wcPL*2n?CMk-;OwuhwZE#_YWFlx3KoF^%g#N^&^f>tM-b41fUEFXEBCbn -znyG-n=4`A%los)5W3;>CKkARDsa@hwz*-132x2cbvJ_YskobysUzG0{Y;z*-+K{V> -zSDrJ4*1wX63HQ|%9$Ya~68@NG0d370H&Xcx4}`C~GxN}zRTyl)L?cBfJ-P$83&612 -zIN3d%J`XE?ZPcpKhU3j;`v{aiwA)I?!?qbOSk>B(Q_uj(v}Y59Uyl4$AklKpj2Sq} -zDU@C6#E&Z95r0qu>+|427FMo?5v?^%qur(I&y^HVgzm}Ac -z@hz6Z?|jw!kz1bLze~aZu*ux92XLEmrsR!6Wa5rZ7KJpsD9wp3y -zulHcQ53ePFFZjd^qF>+;R>D+dV81s!@va%^J+k_*Bm -zYHxeDZCWK?9rX$NYm3Ka^b^!FqedVji@v-|hAtak+04;F)S`?se~%Ylc@qhuPzb9^ -zNfJnl)$RrJ7FESpaXGP|&rqcT4*MtWFykecXBiKHF91}LJxNd9a|7cAT=$h;07E2c -zQuEC{K=?|iiv<2|pq2-^U|(`rk17}%rDA_S>aCZMmIN~(kRcbCd79?$3WF42l7s{VvB -zGzh#v?hzQsAUSN`H%(>IH~7Yicz_dbuB;#D!{1{`NXpUcES^yJF-L3C$}CWc&uyU1 -zjvSxW9t#uB#Tqf@Ai1rYECU2E&5lPXbm6ItLT7hek%q#HpcI)I(F -z41@%8PR~U>H()&UMTT~-j!Drl6rZ!tbaYqO1r5W~X3+;=erXq>2;8_Az5?=P#@6rBQk{P9pQoOAJIV0S8EJ%-Aix#x -z3Q$wS_$Tc^Zv4Np0vWcuRU|AGaWP|2qAFBtvFus6cu0&=T}0@WQO$tH|620|XnaGk -z)k|rcoK0dC<(-v#I%AK-DO`6F48x9A@O*NGpgso~+#_5f$OmivCxwGTQxjVt8%CCJ -zwTg3Scz9`A?WCvO8S6bYD}Zt|C!ht{s!0t%YD@L`Gq>lz%kgH&e@lgz{EdPk`#Tih -zon!uc^WPK%KfQ5~q-Y-4{3nKow5M?UeND2fa%hd-?6WGmU7BU|l_L;3cX`*>CmCU- -z5J04!qk9kEG{slZaFl#;}s%_In=(bTuY&GHvYOdP|aRfUN -z9p_~0YHu)(R=!hyfW&O3qv7J#)B51)v4c(9 -z(tCO>z^TC$h-};MMW>|P3oy4kU6CvN(uAIHWFpk7dW@(8^wvm9hd(|F -z&p5vfYSJwomuZ$X2*_yIkp>@P;~HY6d$HUWIbO4kmHbrK?=9&m%OsFwLr=ppN@tge -zo^;!P+gCCc{mZ?*UyomYi4D(m7n%0``lY`tM^s4qa4(Dzd -zA#r+4NT9q)_#EHOJt#YfBpT}-hAH{B0T8Y_`5%3%#*w`y8H=?jh!bSGCRJ`qD<^_@ -z87K+)_T~gxXUCaMleGz1EFS!gnI_39AVU*Hi~0$LzD&I^Xo8B>66XWflHIl;M+cjK -zD*}*pjsE^itkF&L84oUM2eyx)s57)c34SS)NT==y5vWj?7yv?Nv!#Wa*!4cFxlW9B -zKWDi#z(Xc|YGd(kJMZzdZZSUOHf32GBv*!zRPbVHBtFdcG8%X+<;5TmVc+=9#0(}a -zu+%n@bno>>B6J19oU>MDQjlM?P|RpYO%k9!$#^@KHKCTYBiEfnfS&4u^su-K{X=F# -zYB-$3;#aMsmY;UZ)|1I?XM8m&XrSd4G`A^}DlFzI>E&QVeP9uk?c7;r;JVnmYU^^( -z)$jCIoF%Bx9i!Frup63&xqWdUxHb0 -zHL{}t$NCang_~_TwTu=PIHiViKce?OSVroBUXq7VC^2I%U56X`QE6NF{o|z!oLdCB -z!&qkq4SsNw<(&hCNi>x30toT#!q@APc+O-qQa5ntpafvWQOL^fs@in?H@S_OTM_q- -z2E^&;XfLQA(8bhjM^5S(&1XLt`th-$CRGiNNK>m5$^-wOhO9F4ous3vvtpqG5PiT@ -z^!tr$Ch%w=FONL>4y&_eC`xqrn_xlO6D7e)9J+=MfX;7l*&miWIG_4(w4HBS&MTnn -z8;;eUg3N& -z_ys2o*4%ODu9@T;3s@Y!d!rZXGoJy1TT6;Jv;c0-nF(0;n(f?s>jIq1qFMWlWiZMTue@B+sG%*` -z*no}C@#?K#kCa7co~60#4l7k~se0~+h^S{2RT*K5AM)j2Po-ZYInu(;j%MG< -z7f4!59BT<|{mHMMLSM-ywRuQSw9rx+_^s2=+V(5lyCal+pFM3ou}kjsCW7j2 -zGP&2YIn+#66Z}8_CoJt>$wd`j^p4PM|y6*fBQtm6oOMK9o$1XXT?_k -zK-^-p8f98f8ZSu{=WNi{^(y{H5kKaN5~;Y>s6LN`b&`m6QEr0VS!$3W=wH7sCAaxkG?`UgtRq2jNLjre;=bs`uf-Y6mdk5H2R6veGan<* -zL)*3y)MFYW2Mw@$YC^FgZ=~E=v#kp)ct(cSG35BjQpZ0$EGn`FQVj<+ZdbO2%u}zJ -ziUlXc8j+s@hF)3vz@2kgtPt>mRb@ByAQ{}+-_Y_&3Z;om^$1)?Pgl(;Ja;eH3{n&@ -z4}BoCSVArebB*!02%1rO1qXzKHIGz&)&?AIM>^0Twv{Qwx>uX07>p;#^a|2<0NLfA -z%FY~#pkyvD0=oi4F94dFa77cCA2&m56{EtDVdzi(gV@vrZ44AHTjoZ%H5j -z`1MO)0>1X+pYPwzvH7tD{`$|GT&uXm&%baJ+KyN4+ruCif7ZA1wDM5|D%Eds-cgrO|u6(?y -z>x$h;VzxVsZA5BWQ`sMR4F{TgP^*MMJ?-`85JUjJ>6twa&ghY+R$P;e739ZlFFO=e -zhGQzupb;|XU`y_0flna?Qt2R#(W&fv$l)Hg@&QQo`BZo75V8|Wz2cNSn4->%CAqnl -z=_?|K$jgOe-9re!qM4~qFL=L~leypN(UT3}jwY1b0>|#XxGWvVGT?%Ne}9xGY-??Q -zZNdAmnEYLo$b(MCm8T<=MrV{Nfa@WOfhQT_TjIlD_Q3Mfp4@T!^nWd0s@{KX{MH0@ -z;x|91^fOehIyKB_S;z`{jAXNQ=eorgIHoI2?$Nkn*5I>LvbIg_Bv;}xwkh3XRsa0b -zU$14YDQHOjA6u=eRRM~Br9W9~t*(hY6d)^b@Wkp=!qNW_3# -zG)um4V=fI1&|WGZG=LtQRFA^iqQ*AfApjVAb4!D|#qzAl*q4NGtLdR=nDp01zW7vK -zl{SqUIu3RMdY8f_ZdJuEzuri;=viMtc<$1cvw_!dydH1sVcm+H0WEGJer@~p3oE() -zmoiftI0_+B0nIYs!qIg(4U3{vx*y;=HkXkiS&b3t1uhFwJF?ac9IHl^%Cp!EP!i+l -z>YE?e%YfUrKhLW7zy2I7p3sI0?NEcC7CCr3LNos5E8q(MON=Z2TiJ0)N&|9tnvRs) -z$C%AAt133i-F&0(B^f0rVywJX9H+I!-P{_NLpLkO+*}&w_|E0a@FMPhHOHSvw&iSI -zo@8ZV$9#QEeyknrG)``5uEnrMA8e%Jo`8`vU#_>&e7f9U;h2q;JxnqbN24j)%Uj)9 -zRi;2#?M{@ql~=7+vZG{*tM!K(T=vl~GFtL>u07gLNRC;tH<~C}*5=z5G`jK!kRBhr -z-`4$~%RuoRu*#3AXVQ)&1mo{;2={tDo<0qomBl6b2pzQ5QQSEOcgwkI7>5f!3&Xz{ -zevy3iNq;!{->m>Q2R@JkMR56OYn(h|H<_l+L*?D9=SJcPWf}D1H@Rmf6v)~m?Jsofn%U^KK#epP80 -zRrjmFEY;-VhG-hy1qRA`uies -zXw8*t8wv4AsOZa)R#O4R(B!)L`n8?(jvjv%_GSI`OUeoCv%m9`pm?JA`Q}zQmLz$T -zJuiU>+|`ZQYc(4MGpGDI*wSajkL|Y`@7JEQn0fkatbCb`Z+)@+80y!GmB -zhJdU^&vaNLa}z7x_i2GQvFZG64pvsf$9S`sYhy4l07VcMR~{)Y(%tC74d)raXbHx@ -z?p8K3!;)Za;s0zufyq1O31H -zcea9>10ZlWF2O10nMdEIP5+uug05OXM*hRxMx6L{O?!sGkotOG>R~cs09m=4w3I4L -z86#PjGN8U^3I_Mh!(}c#I34)X7O}BLfHRiQY-4&QUKW=N$T|tdIzZhCD!8x0j^5`; -z8!LxVXdteo(2#+`;+2^GEl~sed;HlI7r4j$n2ni`j>-_1|GJS0rhhJ_Y1iKNbIDG> -z92Ot{#XtZMRPA3{?xr6Uo^tz7vhO&@%L%?48QtVQ(k4)QI9245g?vt-_Uv?|3)Wxx -zE_`$fk_Z;faLcKG8ORlHZJi(jNvzUC7BhyCViIteO(HU+X`PfJTt-ObE1m+mx`2r; -z!mX`UCT{64qq?Ob2Er>GWgXt3hvlgP`QU5HCAHyob+n&adRP9~=UP6R)cmaDCrpRS#AkNMm#}S=zEn;F4i8X66gROp-EQj}N0QOXXfYDmyDDW2N^7n1nXJu@ -zJO!hm;Q+*;0SsN22iULIIM!7DM2Cw7Jmqk`ZROF?AxW6go?CLOx9|kp#jIQ{?XjNa -z^`E!zzc0ssU5<)KZ}%b2S4Tp**oxgRo+kd}ua{NU{gcgruDleZ%5ERUPwCK)@}$YD -zBUF}e09zP{TOb6?BP75FJEA>Nm?H={$3wGsXm;N&sf_CgKM-qKGO`!4v+XDPP;uv! -z-CH;;wx=hAuP-$|y7B#=i!<7duGm-ISjHW?>BfaC@;7PWLU774%5Ci2msQtID4!bg -zbTj<+3KRtNXB1bW4^S$XJ$V}`Z!C`O-L^VK0>x_qvXbw7r>C6+ -zg-s56W2MPxWb)^&0XX;;%NR_L$PHPv`ImZ^6Lx)rWGZUNiqE+MjjOzJNn4NZtv+^_ -z#$G>#@@sTUr(rZ>$1w$I{;3Ggp5lCTo_Z2PmCYzO2ltHjyY*J#&l#m_{GNyEYJLCs -zwdQl^1aICj4=jO~P5Fy})&K~@%NYGy6CZkQlzrUF6V}V*vAju(pkMFBXM2r;hs#{b -zHn9F7rV&jOa(8uNm+4QGk|qm74#|KbYB -z@xUQ*W*)-KPp9Npf=~+9^y=KAgfn5x))W0*{Cb#-vNlYMyM%mXK&hyNMe{W|cE4KS0K -zZ4!Q{CQvpN)mY1V_9p-|es?PhmH^PYu1bW!#-Mlt#@sqQbzwp{zvf}?QJZ)&ata*qzyB_-IQ_~7_~cMTX|jZm@{>;P6ZoZxEg05Ttp2O|!9Mz9iQ5ON`~Lhu8{sy+ -z3LRx)X15NWzZK?$eZj7M_Uu#UVxq|eV%6yHsI4u3NIx)xYC@Q~HI`b-gca|9a$l9p -z0iMY{8&`TIGH~Ugk-;CYXZ`rEv;HdP8;7Ou%Ol%T1SohUS8Po{%<;JjVrst3>6!oq -zdZ2G#f%ds)o;=;L@Fi`q8~t^#r)d)xI1SMvqM7cL;|C?sWo;QKjY0=3b<_rLHnx_! -z0Xd@&`wKATyHk3b$7mgXVc(7l>!uWT({Kq1OhXZcpQiG8I3S8tD$FN68{6($R3k$Y -zkFx<EuqQKL_}oA6w0hxR<%qgI}eS -zGu<8fq_iCY6%l&!mo&9Z=Udq5ztHXFdp@~fDGSu;MCog%=rPl&=FQ?#e>``$Z{R9O -z1CMz^{asQngZfNQx`V%X5C5f`@`q*EK964B)TKgmzE(BO_m9g$IV)R~u{qOJ(cfgD -zoG(GI*tWOTSXJ$yxc18s_sU#{Fo!hs=Si>U@UlnQ>#<0}Mt=d_2~67iIze&qW2dAX -zOHpgc18~VvNR@Y}7S-C~(wCP56b!d_jll9yE)1q=a|IG0xhFkTe36@m#}Y@2;Ve}V -z3}5`bIrIhoVQawC<;DS$&PKeOonLgxZ#Kw<$*hSuo2bKk@epJ{@7^?P89mTz1X|cV -z+2@CG(Q}g$?wDyX`AAcf>GRz;h{o#~;DMOCRMxk^Q{oJv0!zps@bR`3-xUVr>zMQo -zUBxns~wUC{?m6xHz%SGbkQjMAoJ;qBOT1WVre7v1?A5*jba@xdSv}4y^GaN7p+OhT02#` -zvo!h=Vw2QI@j_&PoijaNE_zyy%bO_Eh~!HBEa*h)U+?8J*1~gwiA2BG6kGpQ1CclN -z{Bcie`4t&CE+Ix5d<`Ijb?r55w))PEmut=L826eU;3ywRhM&G1(%^hi4v8^dm-#p8 -z*J62FI8FXoffOoz695Ka@wYXe -zmpc44#8GvwOXSW;t49-H`I$Ib4)6+zN -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 -zzPO?)jQ4WQ_kmwYd`%Nyf -zaAeLj{_PM5d3;|YJ{G2;UEjeB&_P?-tU?CyYL3CVpRXK0G^J3G{k2aP1{V(0_4|mr`*hb5uX*ljt -zX=~!cUI{(7PQd!Fx0|)-;{ggWnOQ@d+-kXzZT*A6oXg0$3Bs~44?3{sDk)I!jrdCA -zpZvmu|F*!3sA+XfUbmNUm}<(UvZ5LCoJu~+y{Ijvef`KOZq&T07!&dau!R}x!#Vmj -zN1WS(OckvrP)a5k)1Vt5HS1O|B~(^PaZC%Vsl-z35!0W%g%RnEJ>hW3iyvJT0}9T_ -z9ORT1!kdj}qOWD-EEh7mo219c0wdFw>(Kd=h1Ruv61F&lsRcAhLROQ*rGD9DhH2Je -zGTWzoy*J%dM7f!Kwrp-J0S#N2JDR<#YmfAPAF*khHNBab)D2I;GtdO -zdWAU~TR~itt^EFjuCw&Y$wLNGZChyh(k0#M2sZu?-HdCLh41)fF+sUgs^+cA=l}R_ -z!#%xb)Ua$!4grv`&uB^SFrpPZf)3Js%6eJcI5Ev{Vv-__VTA9Q&gDX(tihaH{&-or -zIaVpujgH+hUD=PnzUvdzNHZ~|tt);>K6IbE8{UFyu`ny%$LX0-@@;E7+n+#uUc#5w -zdTsNG2St{Md|Fwt@Sd2Eh~8vD(tx#$L`~d)_(~>p<9jVLVmc}N>2wRzRH6yEap@Jx -zH^QpM3gi{cu(UOstf_p(a?FtSJe7@ARxR!^ot@EekdYja7KHZPdyt*HNzUe>VyOzx -zRFDX|sj$rPXCro1rnOEMYsY9OB3-iFlI$Ii8- -zxmikd$FeA|5X3-}mN?0XnPz6&g+d6Vw28cv`BiqO>zZ9aZe1kdxPm9=jd`1kDu-S{ -z1iP4|s@!RFgQ;K~L`>}uBTeDEe}KAA*QjT*F{MK{Zeck(*2>MF -z(W(^$DvQCL3OZ!>2^V(O8EhlxFKpsph=yy2eYlNQCPi=m-(zz+|Lnu&JPY}SYdm#g -zzXeIm8<8i;E)tbS;I?yIne!xJ2j3N!nZ>0J^S>;&kWTA>#+KTD@8rmfMJ|V^S_K1v -z;xTa9!UG5dj0DDO@@S&6?(nNkiz_aGQpIBi6@p+}PeP8v@C?*=L5LwKOAj%=P3{}| -z{>Y}(`rL)>b6dXOmTJ7;u#6A{BlC;wOU`@IqzN^Lg7C;@RMw@gv)m%bd&#j+xldjI -zKUbqxqJ72&8=LX8dU&~5k5?qoB%5gZVx!gA9hd&3y^ZAfgycQVxmGDgdf&Jy2G1E| -zDpFYx$vBJyFs{$1(HS#)0%irVS}nXd0!<0_s}&iOYP^x76j1?34?lFYFtot -zyOx=)tN3u%IRY;4K7Q&eAy)tu?zS88Dv`w454r;~`9T)Ns4&2+a`R#B+4qesTG1g) -z=T@YV1vCF9idjzZ$5TqL#^cKQn6bYkZuiLowOj*rAVfJ=x5VlJ1w?Vp1`kGo^n10K>u`?l{~_~$mLCB;%wGZ1Ul1&?Y!N< -zo9|uv2CYtrn)Sj)IR8}sj{BO)OCRyUo3gbMVFXmQH{Ag|w^5nNKxG`@J(Jlf)LD7)i)T*tb -z9B@!e#~O_zojv7r3?A%s;J3?}Q*pE&49~?T?^YTK{9-3s&b&sseB&cA3XtVXFB^oD -zt?Kg;q%7c^RCrtR=5%Gv2mx6(ety!7O4A3FP#nfo@ckg!gy5`nH1X&&OqHu19w3Uj -zRb%(050x=gotp -zOfeVemTrw|%7xCnIl=a(DY%WaHNf^t->r_OIVUY2r?ql}cJqe;+2NhtO#1O_QZ7v_k>YE? -zt;vgeeiXhlXg4ja)tVDef`KN-kO!eP5xcFW0o?I6@bQuSH~Rkxh~GK3j7F9_SNbUY -zF71mtCqTi^4y8R>0UJF>-&z!ob}sxf5&?5O*@?goM8n*A4}e(_W~=?U!Qg;zexjcb -zOLNiXgF6W`2i0T%KS<`?^9~Yd>6*ZV2jgvJ($yM4P;P;MG@==biGGZQf9~epNkh3C -z?V1HhiKFXTJ=X{_qgr*|Cu17>_yz7#sAyxTI8Ybq_|@sH*^X}x3nNSj`?#TZf+H&w -zgk%#yjc2I&jUYkqr7wh9G77a`q@;J@GgkxdHd2?Jd^*3?TPjPPS)A$oE=fiUZh -zAMf4ZzwRCg@$}k2k!)=5AR|_w`&n6_S#fe!o!j0a*;#WDZ~H}9N7m?TD;nRfqKwK9D)C=Qfhl+vo~3w -zn`itAdB=DJ&~?@18O+6)t%3Q3oc;zx67GbmC4i3jimDzl5rD&s_cpoo5aeE>1=SKZ -zAhhWY|B<4HaW|a{~~NC#k;XsA!uxFGp)QT_ck1{jYy$2huvPx^J8_-HQ5Ia`-ff#+3tHwhU}q!^}F_ -zaj6W<@6(gsrfo}3?J0{4;s>?jBoWG?p>^vwXXx8UgR@yTiRg9P9P=ZNo|oW8U&J|maP;-6$G-^2>LWix>@5#)TB -zE3m%xFc>Y~#Vxl`>GXipryH=#K7PI}qtS`n#$z*+G0X!wutT1?0q9tA-7rq}a=(36 -zTH3pD#r)gn@-0*~({0b>#EPI?fvY6%g(s<6auyE+VXlBeASr`jJ$H82`f7R0FoO>Z -za(UBq@AST`)|?y-PGCZqqtO=)=B717mEsp^{VpaRAB<`nl?e+Wn@!8Dgo%6iv=)j~ -zC31#4%A954Jjp8|bJ0DceII#>4Q4CfWb5}Y+2(^=j+!IZ{lNvb=xN#?i2Zb4e(-JS -zzxA1C8(Rjm9FomOVyhAZhi?Tg8@&AimvsNSj4=>VoXLOvi)^bvgPML3y!PxGfz}3B -z=;N2ezx2T;tq78#H22Il(;T#;S`J*fhg(0*k{C$tZn6kyPLc56z?Rpc$93kH&>|^t -zfryoulSCMF!;k3patM{Y|Ni(3Un3is8;RjK@?~n?qVK=I|ARw%f^7>6{tP2lK54Xt -z(;u{ed70>Pq&;)o#SSCSi`OQ7mjhZTy*{{Vhkt?m5?*|`7aT9H0dN9K>HSXj23{=I -zGnt0`@dl6|&$m^qPB62PZNTe~yX)()TBHXkLuoJX$G*o3p8xD%1q5X8z_pgx+gCrZ -z4M(5+dyvwGFC4{HmLCjYnZaH_iul8EG^8 -zw^nZZF^+;i$ZAHIWCd1+zvNcVhrr&@aCAMB$2T)Syn2sh+E#}_Pb{#7Ik&`SZLPki -zR!3@re0t+Bb*mt$Zv$D(gG=}j&`%_Qxig6NBw4FBOfb!03qf1~SVI=}?-?_||FRHcckX%7Gjo5nhqphmO7) -zk5vU6E$u1gD!S#zkGFXw&+-S-PbhTYmtT?k@d_nsEw8j0Nk)V1U0|^u8(W?pwegm_ -zn@%>qxsybIvuZ=_dUJ<>5lFLWd+eUp@{hlMNw?zYx!31yhl96wv|i>g3_es`X-Gf3 -z#)z=)u2Z+HVPd27&DS*B({`w8>4$HOSCAF(#QuRo{yWk!q}+sf1)rWQeMy^WVx8Xc -zp>`{;O6Wa$p>!6#7FA1b(9J9lIc-Ha3ObOE@f}jnum~lBgzO7Ed3B8&_vlLUa%Pl( -zh5{HON^k5H(b8Y`C@D}gieOHQkVB4<*4N@`4p<~&&w1MP(BEWxg_vYNDW#LQ6)w@B -zBb@HjKDS2ttb;vd>|0c0J1V>elS2f8yj -z0J4up-~q5ZC3%U?-GCgrA5OPAS@!YnMf^&4ZCIn?4g3p}+`&=X2C~#)38+w(Ki#m0 -zJ9grr@QAC3Txi2KqHsIkiDlZh7U93=w`aqk79`tn1Uv~&)jVmrk1lldjC$|lbj487Oms5jxan6j -zOR(j43wz8Yz{B{dkL5?&5)Q>q9Qg5{d~tfmVwYG-;@jUgo!Chjm1!F1?g(#R=kuGR -zB@gGEoI-Ed-n3&9lgZn(OZ*1$lA}udH%y(zoXIl;L`bvR;f5l548P=T`a6*dn!R8W7o4;BC2Nmk~tfgVAIw*K>1Ov8}Z9zWg?&%WmO5@ -zElC)M67Ih_F!EugYb(c|?q*ABHHS{>$R1bA==4?^rfD}lLS$klVSQ}hy3>(20rU@g -zaIsnCI(smXNrd)Ms}pBvdJT;rhBVXs%Lj5x&^Viqhv{Tmc_c~Uq0>Wr$!k5_ -zw=Xt<(pI5G1FgC>o>M|HI2^#loVzIPhv>?umG=AZpDJU>jvbwK-L4AY){#kxgg7i$ -zv~h!9z@|#9)|MomJSafRL7w -z=(4s>!50hjs1$P@YM@A!m7U2P_GwrN&rdjtNOWKgBxmvtHSq=6!|HYl5+?)5FWDma -z6H$4wr)fEg_oI4q*|$vSLw;Z6lvdSI#Oq*c_vsh=I -zgf-si_h6>+CTmvko9lu_>}3WR7or(fYDh+G6`W=)b@Q!0Ojwb_3NSuJ8-0=$0xqO& -zB$JQVRL86UuG5+%n&!>#Z27h9>eD4hF*ob*O0e7SWWjJcF -zzi_h)puGWKBNcybjYo=aWZ*Ww4HBN<;HDpIa6;9Zh2!l>8xoEzQi&)NI(Tl@u+fH_ -zZwG@?(1bn0IvjMPmj0RVG-d9|{$-8rD)NThMc=egb^1VqzZKOvtO2KFJ1K<@X4L^d -zSa|;wxmQ^JFbukq(sG% -zEA+oOK4jPR@V-dY=I(x!q|eE|p3Q%n&M{6;eivA|x;#l%RkSACPf&w=I<{u3SkVMF -zT$ZC6;2|E5c~4L_y|Xe9z){}@>GVL|?BkiOAF*ZRos~2&72a#ZIsyCb3tK?l9+a|> -z#1nb(jB%BnXjzC)N0aAZ>ibdN7VQo)Tk^%ZGRy;^L3JCr&6yTl9Q!blGo*pSd$Ma# -zoJGRv6K2Fnze2wgq9ai_?wGTRUQw8#`=o3N!fyVy9iWyw_6;D^C=vOxJ+rs^3b=}z -z42vbtB}=(Wa8DVJp)hhfZFIb|%vJ?Z^08X!KrX`!-ChINKljOKYGQ#49PV`k_6@ix0&$2VH7HBIY>P_Yxy$8D2 -zyWXuxcarL#07D_OxkIbRfQh7OMJO&{d%ST{I;Y`D#cxC4{*wpN&TK!AdvqX{=BNT~ -zwmQ2W1WAX0VKPh(upF{Bv#e+5 -zrGQD&^;`fnejY$6#ov#RgH_1fFiiLgA^z}^e3tzzsy^*h?C*s<7N1nnk3c4c>l82Rsk$b*tRFz6yectFY4V%+tlb$J|bRUqeU1ac&JuldevZ}cp4 -zJt|1r7lNR@@wbwUQFKj+pB%Ymc1U_eTmZ*-v`qA%vo>p -z#77HR2GZzJdplv=EJuY}WVHav4oGXB93t8nMF|Aipr6@->bX_3MOVhI(S1(&;`d&og(p}ms;q%S#&rVhtN=J^Jx*1~tK*Ow)ZK`7IyV|#_5?bCC%dKZ=-}~_MJM=; -zOd7z9Z}Q`o%*9=yM7l;$hLyb5xx=xuFgioRfO4vLmX{Y$94n@yNtspV(VrYkeyCgh -zd0*1XhnGPvR;Pw48M4Q+hJaD@j$2@RpSq0z<*Allr4b -z>Y;|AR0pjGermc8^-ej|rO(lF#M4`E!7(GoW$3_CUT%RYE?+JigI1>4=n|+Q$(p)P -zxESr0zml0bjbkUu*l3{SG{J;r<9(7uW8bjrCyRK#Cw(2^r_V{Dw+3eX%gPo`cGZ -zxm!=EePv&Eo~7E^gxE37B=>YVSM+OYV@Ck}pt8}b5J$-cVbg0V@8a5t9rvCL7VHFl -zh&D3tx>SdH4lzg!N6Tut(9=8t`*n_&FCl=V -z*bS}q4~!6-t{K}M+H#kcQ(R^>Ve^>JJ)2&Q#@iiARQ^4DG+*&SX228cMhtUt`6S_~ -z^#yewNZnf15WlpU0S|0#_%9N>pk#wl20^If95)?M)QA40WfV6tfs$#Nz=)8+YBet? -z0JTauF8b|&-lhXC0QW#}qZ=*Sai2%JG|E0n9jNBprhu)3)x{<^hsE(MCfb>0$VErW -z{$A7$6^`v|Db4o(_&@)LnO~7IU{GtJV#1gI&;QH)KmYIl-~Vf&K~zJKs&)a4URM7; -zBl3`flK1G5%7C+%d@6LP!BYB0J~$RVtU>IAToCYvDwBIWrSXw_ndAD54|-#!ei^=@ -z@mzO=-er~6qyPAcdFcb%+7Zt{y9GklTlq3NH*(n+ZGyVme*SgY9h}bZ*kT0zkamyJ -z(-eVvE^9jDfqpn$2K0A@@H%8Rx7+Dy6%$M -zd1*z3r8Qw4(@U>4`Frehkhl)50n(#nFghK5bCaF$R-N|ejV$^VlpE`jJ{`Ktm4;_J -z8N{ml_2jAfHgpEfPvc$Goj9Vr-eaSy18VWmwk$&snD(7|Jy -zv>S9*P1}(oM3`@vGqOWgb6UL+6Z~aMj>yskLoJI9B$Bk$C@DQr!&%9)Qiqu+DiHU#ow-1AwCmGg9_$7 -z#{lVMc1)ld9W?xYPYe7965X6 -zpe}TcHZjfGfQ%RdefM@mD}~&Xzy>g>S9Dh(sX}wi-*Kas>bPZmgUR=8{zL^WBEKI9 -zd1(t*N*@jGW}<*j!8-HA~6{s4f8y@7_XZYsO3W_2z)9p>L4Hh+IVM%lK07AiYhf -zKRA4oBSIQoS9T{A_KP1EO#{U@H0>8Pql$|v^nqKBw_>eE8v5)x9|$u{&ML0uA0Yg$WC|H3y!3vc($GmQul2O?`_GFSu)J>L*ya1SYZ1-zifkg51X?Xi$HTe0)IuvCw -zJa8m1Tv|_e33V~L23NtcU5ok*pefqiP2inTYaF!>q-QJl8LbAM-MX76J0B@yt~6dF -zl8odAB5~szEH(Dt(V3BA%lyj?GTt2^ZH*~#MgQa*3}*qsUOEOhp49K=m}_#Vx}@Al -zEZjMXRn*G>1m_3bA2i#`w~sr&bvQXB&g};H!E=WB91D* -za}OO7NM}7F-Xh`rfU=*N<9NLGuAh>c-V`7p>2%wP{(eW8=dJ~a^$6^>U8A@pSoqDb -z1V;q>0fqKBA7q!Y4~~ga*97Z|{Y1Lf?o!*x$l<$M@|J2jO5lY%rSUC4g$?zM=6;J! -zsVm0Co0(y@sH9zswtiY_~CYN5F?9$7Z -zTsMY+%v5U&;`Hp(IXkEV=}p;$^VR|dI-yETfi~NQ)+`ZOyH*q(HW7MRh2T+ -zR8u{GtW5@zAc^1wEMDA${`A^wUjWdvdU8y5zEc^5)9EA#?E7A8;ut3Pmz`(?s?fiO -z=rY~zv03fd=olTzNvQ}RndybWH5+BydhX4Z9vhJX0Rcp2BSV+IZuqbHcAM&9{p<60 -z_4~(PfBQ5Ve}8_jhWGX1|EcaWE1Vw(E@@9TmhCOqoZ+zzBzzv?YJd8DGw9n%kgnBq -z)7`#!BsR1fJED@y|NOyTGFvCTqKb!wkrcp0OQvYl!ZswB1_@QcJ|ORAA&c=+?&BvE -z!t5;9`HH%Hu)&Sjh}`w$yMgW+zFHj?GuVA?@t+FN6=muI!JI8jiLwiIIBKLhei6Ll -zPT>1!&n{`}YUO$b80%keJ=ff!V6CDX({yUJBk>_-ePq#aIM7e95U8eaK5Uc*VI5cuJxqn8>)M(3`p*^>w+QV*+l~-)PU@y##-G?yKPJ7pQT$t^&b@W5{ -zMAj;`nYyh^%hPYb{vnyc#Vtc5=R8+2F%syfQH8o~Yshp6*u1P*-8P=d^8fl`rGT2n -zkMG|FZQMN?=OoR?a76;~^ZtXQWeD)}rV(Wc2lOY9o&PqI9Z6y?S9=X{BX?n?N72~c -z0Jx__-PeHf;Xbo-Bk2zM3EFlk5rKNRCJ`giA|#s(mW -zAaVu0rQr+5CAzaBqM=8_`C*_<{a*`KkU?q&+gYu@Oh9s*UOU9ejl;3g!n?=M|s+$}cd8-V)l64}= -zm;p_q_WGaabfoYpFell)Q&=AfxmE7@WblazDfP8>A8hz?_DFbNXUMRksFqXgfVotW -zPU?C%Q2ncdm1H3ozB}s}A^h%fF#)K36H31}EM7NJn-zvlWSn)`iE@o*ss+XOSr -zMnniVtLb0Tnde3xFA^$)I2t=++&rwUm+Wp(0i?{=?3U2P0k%Gb;uEZ9v{ldyupwyN -zA@WBuXIg%UB2-m;!vG5YIXe>@vfvWZJz1jo&4h~2UUvr{^{bne_u`-l6= -zbg{sIV}a6-ofScH!zm1 -z4cq!?q#Lz&g`QpeQQWGES*&bch%urtuE>d?cE#RZ6ZdoAn$mcZ>r+LO1iGcr_lrms -z!)K`S7+2Jwyp8C=tp`t50IK`s$6y|r6TY?dH&h*#9{ldclOaF`@^N=HXU1s|2u%xP -z2Gs1Uv%5f625YE80k9xLhN*y0LAUG%U!7fcn)|LM+hNZx}(_M}z4Ha=E19aSRE@eZ_+s{1xi -z4eXA|A6pZ+QcWYx-yZEI5@T32p94LwPO3RYv|J#HovdT`l=@G(*Mk*Sva^u$bc1Tz -zqp=z`(GJ=uIokT^!b0oUCeq-C3Z -zw6;~U-T@DBlWrvS1mJZ+@Qtu9fxWCwGaBe`8c$qjuD6*66;EWJ@!lo9LQD4j`**Bd -zQHr9`NOlHkriXDQMC)jzqGj>0s)J9X46~?`VhWH?%O(pK9{M< -z9l+-t=W`Of$-!{?^z;@sSlnK>G^>IJkudZ^%1nO3<9oV_7X*30@&_L;t+ueLX_%AN7dV`UXWa7@4>6w%CS`-P-9Y3y-KasOk|*82Ng -zVux?%Dp5{m8TGUHD_V1edU+C`YU8m=1Nv5qfyEj?+T@C@hVexv5}6+zvR4Wy;FsiR -z!9)x5<`5#{@=+B8#aF%J^HQ}hVlyQ!r1%M?cfmg_j&lev>#acs@O97&!dG~4W8pXKs> -z7-HC2S$3@s#^3QA=25|M%K)%bVhI2&U_N|0arYOF+NZQj!=aNDWsJ!t@} -z_nTEZi4gbm>5A4|+P-~+K<7%ejqFTp;b?uib)R}=+3+LpTSO(NQL?Yjjtu@lc;TIF -zqTjXq<-WV{?waqFci-!=dVhD{tzAyDJ+fiRCq?C^W)n~nJ9DoQV+@!vP;^j%76)YI -zhPCO*Q4JH!OU-9+8B^n%qXw+U+yQ_D-SG&XqwNC|IYlM_+JrAF;bF1PWO1$p_q5+g -zn4}Us?zv+v&$YJ+LTbNrj4=vQ8;6rS5_|Wn)7vnb0lLntz!t<2VIH)ZZ2_1k;7GIw -zWRpT+(azqv -zn9d5ck=A(;Qp}o7M3Ds@5_IZDlgXS4qDF>U1rH*KLFAMjpawF+kDyRak+B#@h+Sl&dZM*yUIjsmC*c -zR!nFe5?3MFad@x|2^DN#CpfXL;O{2ivJTS}NTJM%9kKvA%nzjVHf95rMv2JOYA~9g -z-d92V0x`>cCNk!rIk4JR(m$MB5SHHqbw8QbF0~LWeIakr!LOlX*!FXdpzFq+LZus* -z)4cxV6z0V>Mi~zm9i>_yHshM80*jAo!(B!el&la08V|@+%BMB(;DlshOt*yvIbpR5wCbgr|p7@`710%Zq=&moVHv7P( -zJlwUqfs!m5!)A{QZX#{ssO@3<${43%XH?6y$h70bC3u9UA>ZrPElD4H?t+5SNx>A@ -zN5`6LXj^Ux(~hx2iU3IpaG$S42k1|&U6GfLkR}7QWV8(_`Q)DL&%;@mbgj|TVO78J -z*x5=l9r2@C=mMIruKVt=C}h*G4&_Z+m{U842ymn7m-I&zv#sG -zI;?z^B%ZV3ig-&7Zq1Zzrqi;6n@nGcX9pF|7=u(8;v_AajN&(%5kW5%`nK)jt?U13 -z=f6MH&vXyNPcq+R@LrqIcMwxcv#p|AE-T#-unp)h(FTCr4l<*B!+a&IYk=H+r8_ -zF)Ds0gHdSx$`a%yke)9ZCI1HnK)XZq7|EF>BCW5+>K}Jx-S2;Vu=s8+EqYw0IF^p+ -z|F|3tNFUc9pOqZGe}0iR&FGK+_!g&2{}=}8B~l@Oe89Y?vOxahTeKcL7blgk0i& -z>hQXU?``*XM>UTf!01>QFLzHCm`CKjKe}G*8!o*={pJ#Lks@?hOWw}`6HQ~IfCI`Q -z;83mcYgUY3A;cns3UqCEtKb#<|DuwC``sG}BVC8c-nGylA2U^q5z*M#*X0y2;ca8k -zmfhBS;(UjTmKxOg-^?wCI? -z9mTOtr;hG&tD_IKPt`U&g4P#AYubF5$T)@lERT=9$%j+E;F2ek)=X!O*?bHtfFmJr -zVu;h8`O897#cVry3+INd5zhf7Wg*m%Q!COIU`7AW_bZRPI7C&C`&-9*oh~-(rmPYZI -zI{91KthWr)+(oX4*Bx**FTROqeM{I^u-)KJT8vbeds~;GK*nn)5vd$BM_X%{Qp&0} -z4|u>E4La1z}kcXV#)qX*L^UTChl -z)4l10Za8DI(d#d%u5>GKdLzk14AF`ZdeuAoN+#13VT}Hh2P%12CZECYdmw&V -z5f%-gYt+K-oW(9YK!61`pd2;|g{^0%)e_p4TrxakfeRc)COpl}#Zr$F#{`7VHJD@q -zSRp`xIIZnchNND$l^|Rh7yoRqZY}+YZtv(e>;9{e8B}FK+BS~ow7@X|rtx@2sr2C| -zkyr~EFuI^Nz)W?jCCMd?=3`jEg>0+cH{gRALA)W)ie3zaA59dYu0t!eGzbtRkO6mo -z>k>e1_>dw8V2hzKX1#k0s>tGT`zE$Lm%?z)jjSn7n9DsHe|c)oXlX61L&PpEqOEJBTQb8VEj?5Ui;w+Gg_0AQ -zr(>gXk!;wy--0#w0zy^nnv#nVSRLe+t}8Q~kdCHRE6Xb`(qXE&X^mkLK -z85LC0LPxzfk_J8G4)Y|=H~~5)*jPrzVyF(WrR$T|LFmw$pY~97DA5VZb(k7LAt~3K -z^r*QK{O)tpO^pf)V=99Ir$N*O6<9tXnqQ?#UR=OOSV{3O%KMqjcenr%o(qR6D|ET2_<9NZ2ThyGj)!-1U!4JX;2 -zr(G~aEN{045bZ-m#yeBL(#(5LQ2@a^`JA=(Rw`IazqhOU+7@rFl`)%-EbRN -zQ=u3LK36llTNO9*Kq~hQ)q{QmWIU1}_uzJSlj?l##=2YOz((dhGQd_g&m~Q_)M~uc -z702;2pnL1~V?=ffun&TQ#h~B2ROs(oeL~MYTgN^vE_$Qwn^f>=F;G1zHWJ8{s@2+f -z5pMN~TMKazX|rp?&JllU)#ef4!Dn)gFkeue$%7|}#%+kZTW$#S0?~k1o#JX(_cx00 -z*s_pD%Y^$~fJyOJNmyJuklDxJ`YH>+8y5t$33;UT6JmfUJ~>HPaMN@d6XEyDow3cKGsW3H#$VCGa3^VN -zG>>w8T9DIwcdBZb76c$z+#y;|ZUQ5M4~kGD55QHWnw8^qGWRJDXSnqRrlyo>TIJQi -z@O^9yoU}23{LYAQfcex}(F98;fm1w#^bi&0&u?{j+MXD>Ab1X)Uo-V75Lf*|bK`Ha -z-OZ?d^kI_f8+VY(ZcZRu3qF-VKajD=jryt6>EkCCqjRo1{Y{oy`Wrelthd5+B6;y; -zsd;*$#wZpJX47J-vp2@%v6{Uw)4Z7H6K9~TAMPQxDO*yS?u=X1m^oF23 -zFC>Js+-~DnhE~P9y)txhHwjq~2Y6V!>#N2d>D@M{!O?{K>GA-l?np<*+e$-jk=DZM^z0w8ycR0UZd(;qRhxR6j~GHmJCCTrQVAl2qVrJO~L-isQo -zSjkDW&l#6*h7CBneIAf{b1d{7Ym) -z>fEsH&df51dvF+bR@~6c3-N-Cg4ILQ3t|LXHcz)KqH@`T;rA#F++-O@br3>S%s&tq -z8iTY)Z=p;MyCZZety?4=Nu~E(u?NUDni(!J9>_{pQE2tGJpROf-*!cYYMub+F^_=t -zb1iLlND;3=Jkh5ajmT70VWp)rPR3d^2L?I>Iy!KZBEz)=vq{Vex+je7_a7Dr0kj%O -zjg1)93B(uTe_V$$`p>48Kfqoie=%q)Yb-vzE$-ap&o&@VAv}uc&891d+A>(%ZDER@ -z&9u;l5Id(Rwq-_aElF$)T>jwZ3I2P`WAq+L_QFqT(Nm&94O%8ABO1c%!9fz#O0w~h -zK54;1gjjDM2f6F?b4UKW(s8h~$rzW&*~fR1jjlVl=P|~Cl=Y_*{73Q+`mpY&PyS^p -ziBi;h?aJVYxb`jTqwF1_BZ56=M6yiWriWo^Oi+sd3uhAi5pf$>+@&05`FtT~Q -zEdnlfFYx}Zk)v)sfONHPPcL!}kv61_wgNo`nc^54Zs4-se?hD$hm7oG1TZ&wN7led -z>u%{$QXnQnQUO*zfC6;s@g}u-I=yWs=^UcHCf~qIl4y5_~x8*F_xoJXa<60br#Lt`xUPN~Z@L!ZTwFk^aN5;6@rHgki -z&{rSsSsZ~eU{a-q!UZw;#11eJ3U+rjUSJK+j6bQi0a~@6LIgo5z!gg%Sno3wg@3A;f(STT{E9C*4k*x;nVQd955t!;bK9O -z2sQ5;kX^+QKmCm}?*rs)eIVqSXm{RRpc>3;$Hjbt3431I2W -z!5>ltOWTU{qeHs}KOg+UOA<fe7k?s@@+TNV0fR`^ -z9Fk5S@AwOE5}3rW`R;Kb9|6tLPN@0leK*09B3J;O0k&>;nMvzP=5nrRF11jJGDZ#8 -z=Gqld$eMi^-p@hST6~5Y4TGdG!LGA#q>S6P+PG!NP?SG$fKh=W*v}nRHTiMqkwZ`m -zZh^}zfd=SdsHsUC(FED*a|+sC^wp!|mSNht7l)Q4_%8qkji3oMF8!fIQz6J95UdJLQgKlo7D_cu9E%?x)9mC%IgKyw(&Y3EcQOXK;>v_w?7ZvUNk*)G? -zb;FYKKp&I`1C*7DNszdoN?lXce0KDD$(C&@olUeQz4kQYQlaPV|=NH|S -zG~;8@yT>k&YO3*ooVwq?fro;AKX6+`h3E-m0IgD5<+X^UZ!ppUSX-JUc0`8iLs&L| -zTu>jNM_#!rLjUH9)|=EEc`~WjnUtV59Np1V;~RL`3~Ydk9KWTa?1n>XuuwTKf4h@# -z)mq~R?09-0|BnCu{3UQ4O2|1{IT;$97EN#iBZz!AWq`_&JKg;^VRkVqhy4jIXb`>Q -zNt3O@oFE~wablw!jfx=oPzC{D=pCf$jRh$iz{DH!V)}TRCITx3S0`omI+RfTv6O(&YX^}bVS_4QV -z6+n&a)0hLB6XP4@qEd~(0skdWKQ5wMSgS!p2K -z#nfg*F8E6uD%%1tDbWXpXeNYxGi{WEJU&<@03}QH(`Y4ieq71pu^RSzjgN*55Q}Aj -zVmx=xiOs)yj`cfDWk`hP&~z3&P-W**SZ3kZvFMl{X8Z?|6q^#LiUZf7v1U`o)WF#x -z!AoA;a1RnFCR3Xs{=;4*OcDzqSq}!4`GiDfdmHR{SX$f`0JP_Pwk3L`Tw2u0gIuci -z*fxtN<$@rb`H5B$T|Ypr{7YWX5T4|0ZnVqKjOz~Nnfs-EJ^5IVVfTt?c&CLzU>j)Iqc!S3YG9975dJSIXU7$s~W4# -z;ux~wK%;>S7V7%hB_-SY@cYxKDRh3@fYcrv6r5X_4$c-Q%s0$?G(sn)x<}DK4Kv9o -zJpwI-)mto)32~c4sD~x&+?=opnXOYB2L&ep4QgLG)2=0-w0Mg_a)mcAvD&N82Uz+F -z*Y755T?7 -zq6!qxVFOgrkz5X`$iB$EGyAMm20(6CWS?`jFpLXsa@YhXe7`4)?Erw01_Dxr;hp1c -za9W#s_KW`1^mJCKE8&_|Ht7V02qiW&9~zL2+&N*fQi!b1x>Y1{<%+VHlEFh$GkYW2 -zqk^xsx|HA*Dv&}70M -zUW&pJ=u%zS0MpJLsgR=P^u2O^!qP=$!AnaCEC6jt;fd#|Wv%^=2UFFJDy^rnI0emCSGzXJSFL0cFFS3|D#3CCj|%$^qjIF7O~+Q1X8 -znojOBc#<03_CU#V>F97(^rBqv8siAhl+i$97w7?@RuN!enVQW)I?RyHVS#xu8kOgr -zi40FPcA}l4@z%q*Y(}-nF`7Owwxk-d2wwcn5&CX*h#Xl{J-7ML8FcPxtLT9M??P(M -z8I3l?H>c3;Z8ID@;v^YBk`q{D!{qKiqw=Gl-If!8GJqZ-nd)25;8(IN!m@0)=P})& -zXp{kj^CH|ilgtKMQ+pH;HXy8%HHAtQX}?1FQ2Iyf-m=L4o_lwhLm2V1G|+@+AY}(W -zzjxId&nGFq_@o613L{P!1E^Y=_PDo{-rq4w()b8!{cycD46l;u9$pW9SA!w|U#|W8 -z_bMSPkqG{5yuL5C$fD%5umB<78i%nYY=nf6#=M{*>mu*+ZOz&nsh<>hFHHM;+mq+PhKxm&;n4=Xxahfz|$P-t(u5Mlxp+*a#OD*gG?yZMDEEX+1R+51vO=}>& -z;w}CgBmEChh?qjM16)yErq9fV3;7;_LkvacKXv3+;1?%(Tuc2K9ickddPK;xcThkdmd`lg~L~z&mQ8)nm-$Pe$Pg8mVIeG_ZR3C=T+{1z5o%Zy0+EOPool;-K^i -zq|UfDb@EIJC$h`{MG#6oa#P^%1liM}dxnd+BWoUTXvmmG?Z!jH{=G%cYsSpEb0HKA -z-wp5<3VXwW!0&?EO16?vUTPk>1t=BDXoO+hEtz=@Y6=zd{n?7yx=xWLa$;Cg_E9dg -zfUN|4M%r_n_!G|OdrCMlD?2>fIao5>IgT&UTX^&1&Gjl0+|XBUm5*hDE7+9`HozbG -z@pS4Pk^4Uepv{o$U@w?730!hClu_sLr9H}6|oLihetzdew-5@om^CPoowV0iKkp3bqx{)}8-GLU+ypTcml -z^}smCAFwe=m+~1;coM>ev!Itgii?!!;x|u=!gBRwG3oD;oZJ{mj8=cG_)V$QjMk-Y -zW~oN5MvXntik_D>;jtqzy_}!XYGL6L#1<+}cLA`vVI*fhE&)tS7Ziz00v`g(6fK%t -zOByx(68@vWXC#6;+WE9Ygxo|%U5z{`R}xz(56AP%dg$#g9LoU#;FZ?)IHszf#6YJgQPxC#yF<|4PyA~E&T|Y -zKpS~);-vqGst4T2%#6Ck$-w{*c4ZO9(~Z`TxVjJjsjv6Li*M#>rf%2Dwf2~;^Y{I) -zfBrGkEn2@VtajlzB1Ah4vqx? -zxd}PW19QP0)W?~XivIZdD#NS#$B&=i)vQ@(w%hm(e5#Tkj7o6;K)hXR -zBhO+7_6LaqwPA<-FggqdbdW-grY_H6gaAdjtHVtHL%5|pr=Z&+(fay~X~FdFu+&7MeP-=p4xe&JD{m99LOzPZQyZ+oJ@ -z;*5|^s#9mnqle`%$~km;1hDaqmAKxk=?~^k3o!*?`bYSxwr*RnuSp*k^&M -zx;39Z&_H^qNoD{^J%3&b0;+nWopTt~=3}x#p)ZZ#K1TDQtL5~=Z#2L={q<8WDD}88CJ@tIKxyRC^3%qNC82gefuv)e#vaKzwG=+-Ea1@`#o)sj}JQmPbfCn -zvCIIINt)^5j6UTA)$Bivdt4c9+9w(R_q_Z+GNaef|Ertqt`kJRQCPk>(kB1{+uiQz -zZ*KiHh}vQ)ekd(^12W6>D}J#hP0#-kqV_G&Ch2VaQOwG8(gp+^>*KmKVNO2;GV-zS -z@#9^;ifU5mOIeG0iTw`dH^Uwrsx5r{(2pLCsvw*NY)66Hu{VO=s2z5Z_RrLhEGb0x -zkmC63r`+LXrg1&;66{*_Zqlm2aEqDKDtF)aIJKk#e#(uMqJyCgf7uK)GJzVPuQdrreKTSkiJ04lh) -zt+Y0_hNm+Ncia!4GvFJ`6+V^uc9_ls_dgtIh5bm<;p3kiSw{s;fc967B5ydv<13NF -zi@>Y082c?V^Ztuw%U;|Mxg()b`2F(~$`Q=_=CbK9g7&$fW(2C17-CI# -zJP#_>LzAo-Y?1fxDvx0pLtCC7L~g@d4rVLE7Xja6uMZo)!irb!%g*f=lh0d9p#{61}&l>)l;y9ai!I -zlF52kQgE_#Kw^)A5`Cq}5mY0pWRbS>3##ETD=%G)Gg-ja9ZL=_LaF3V)oDX&Xd)rr -z^bdEFGHy_7ldHs~Ok9Q79F39bw2X4$ir9K{01_M=Vs#1j26J8}qRP$V?)f}x;|PGa -zeD671l{(hRst-c(WHxRQQMw{ajsJsA&(waRdWFQGVt438Of$&_~j%Lz;sj?(tz -z3Orp^1$ZGqkG;bo`SeQVRC6J|pvltD4iT6kh)XG;631jY=rKs7vI{kMT(&ppa4Ew; -zHHua8Uu#d9OITZ!1g)J+e|BoLet7p}ebjtoAa(|-9-@E%_U{B$f-l=U{9hMZ&FOiL -z`H&I6qjneNEGk9`hQ}I4g-_aX);#vpDUz?0MzHxUoZUFP3<# -zQessC&svSUWFUBrN?^l^1<2yElohSKgXV!Vrwmz#5_=8KAoHAgfM_SQ$85TlGi2bD -zb<@IycUFvw9QMXhB1z8x>P5pkwkA_Z7MTt}ZlPwp=0sHL&ciOP66dV6sajn%Gi-zh -z*Cc9A)l2`6MZX*W1?UF>RczP9aW}>3^O)66@!?uz+xX2vhLWJWw`dY3rhHYY&CezD^$S=va8#)<#o>PH%*vS -zD6;6kiPGn=5U9P>4xD=_Z?PC5-cP-{rxgWH6*`Xq-Y%jRy)yfJV6DD?Pts-K(i#RD -zkOb;iXb?-sQ{HyZ7CE*N(^@5?)5;*GH3SC7#x%YD}L~+_xK95CIr%J84Mi30GLtB$JHF -z7Oe%*Vv{Q$G1tvrN@CdM -zFYv7=e=Opd@aj%xTYRr|S -z7SDzrN^F;d+y|@N)i#t1s2~uhwueSaD*t>Y#+5o6(VdVOV(-`+W9Uz<|A%?458=0T -z!Ui^hrzH*#^u7mEzhvGk*MUF^s~V;s97=WsICt=;3cdvVtxj8>I?pDmkv(zCDE8CI -zAj<|!Y|`KYFR(ICUxl79;F0QlO9oNnsSPqQM$Vak6S&>0D>BxLH`l6*{b3f<51QXb1!R$x*zWKpr1pjjruCWU0kn6&Aq7C+k=mA -zJ+T<6B)Pevc!8FVqOaG-x6NiIyk&8Qr=-ASWA -zS8?@T5mZozPj($w-(J9BU?z-1hQImsE7#5}VP6d_VIg7A{P;_?GWk{=79u~ZOqsL_ -zW?d2cii{zn;39G7cB!X{$7WR*sKY!qXNt{_1L^TD8@WhsdGs;*{WEcsGFT6aRMCAn -z^JzW!2pXTNRZ$14bvdE~0$Q&b*20Q;%LaQMsm%RnE0eyO0ZGd)b_SpiwH9U}O?~?` -zv@6bAlcM&3^@dx-jiO9YO4gQdkjklp)jZ<*LwE$up@Y98_*QSCBY6>0Q` -zyDRm1#s#R|{ldYpk}3tnLaH{Ljy_BWg9NZQ#>J1F_VbWAeWw++ZsG=It*p)HYzVJ{ -zF@WZPNyV<5R7F6Ol0+ichpD;QYWb3SeC^Plfg1u?mm<4q#n^NoWHf5MGBX8=3?o~E -z?CP -zOlT{Y1^-&-DrN`L;7aghO^1F$(yk5UGdvwbwmOD+A$Nx^;7C~xE6q8*=L(qICnG7v -z`zhAe;b8uv-h%pIzT;pb2Nm8Z>1d4^37$yhFjtx}{ -zd-_L3C$jRJ7ijkmoEGGSpfsDWZ%v~oODq*vqy*@kPuk~JEjIbjxMEo+XPLf0?|9N( -z2dY)!Nws3P4TXg@L$+YWtPrz|6>Sl;2Iewc5sMSbv*k+vg07@Os-B!KeHZk4$t*^T -zN`#4BVCW9S6h!tOX8XQVoWj@1)nK -z1Er!?25(2zguBee05dH75b+;VF!$(=MT3a|)y6kD{@KDocbf11Spk}0y}duARYZx? -zHm!3ZFaP#P{H9E~vy|4>a!iXg{qk)Iz86EnOU)#JjT80pj!Hb%Uy3LVD1x9Yn@J9G -z*x=G;-eHroPu|rwN{GC!&Ow(pzO%h_tiXIvJMSy3xY0JzFEAi`49il)A -zMFee0~(T!O7c#mImX>N9>@1sx#|>D8$Lkw^sG$=ykrr~gNZ0tSb8T7b>zE~skZ{e -z`NXd<5E*c{>2H+t$^`wY*4q!nl+uV;g=R<|~ -zB6II{y%l*Iv2DS$rB*$iDlrhZ$i|E{0$Rz8Zqc}0q2E;Zjk!c7zu?W%E&M0VHSUUm=z+!d{ -zvw`FOPJn|S%0_HWp=i;HxS0rPyh@A1=e~9@6v!;Z+v9G^SVz9NkV9{qtTutWgO=mx -z{w)=|J%`(R&mk7xq6OEP2A|tEx238+Cw>NZ>9%|dCWoKt_G=HuA{g;DoYK+d-i^

l%{B};d -zcdl_p73IPW)|fh)ahSclgh9Che=90mBv4Q$pyG@kR8b;yYDP`vHUy)mB(D@bvZC!B -z%6}74n+G+Qu(`8kY)~y|5)d{i+97>-Ya8E6qjb#S!0AWVFW2vkR_#s!QydS>U&2z-Ei2Y75-#a}*^(uQ$EfL56**b1f- -z7sG@kQ>#}NQT;-H&@$;rQ!**XvS+%EZ$lL|pv-vR9HU|pv}+IYjq#SAH|ayZqGN6S -zKmz31hvys^HCvz%_9eo7LLJ5pU`1M{f!5hyFjFr`Xd~^67{{VY6SlsZ*sB(BJB6h+ -z*xE?9IcR{IgKZ?#$;h#q14v?Xj{)iqI8*Z1IrSuil22bk(t0!U$e9IjPozKfo*XtS -z_hFH^tcERvJ}fdQH7>RQX=HV1Fu{~4>$`Lg>BZ4CguI;LDA!ET1%ANn_K*)ruFcH# -z5#ZfH99yX9QReMsPB_}rY2rll4~%5J`HXJp29&*Jr*qwmhJ*V#9VTeuTJC39IHSOG -za;%y@kMvU;c}?;TQC&Tvt&1UQ8dUb~iDG=3;<|Kd{7(K(R_cA$ZWkCMtdwcR^idmV -z={=BQe}ivzrWA?}E&y_Bp-*^}R)tTP3TJzamHy~Y!G5^CPa0<)nNe#?B>}K+DlH|f -z8r`G3*Xit5B8Ngq;_eW58v^IZeCyjfswZspsO5+G4Q&jY#dVAHmLwZaW@&?xndFH0 -zrNA~_qPLbv%NSe7zTz8cP64o3g0{%kF7}6{SagX+i!d`Hkj5HypRvqq-4}Q5(9Dk7 -z7(Xgs=vzN)V+&wpXGzTp6Z7WCFK|tgkbczM6A(q*18gILEmCo1v2+X6y|XBaMpa#v -zJ43G|iq-lCj?QNSXN5l!6_Bc34Z -zo(Ma8|5E0yCak>lwxZB((YDJbHhsHn}-gq#@(pp -zL1wd&02eRm7|Ej;lMET%ZKd6S2GpDGRiGG>Q;q%8NoyAhz2v&d|KoLn9+*)Yk68wi -zY(LT`)(sYva+;e%2gfj{+&d~jpXl#a>u}dXtnDcVTm`_YUEGL1Lf9!WoI2ubm5_A} -z+Te*i3I{|P?(w_uB!e$ZS*)Q<;-SN?ez_9w48zmL>q0?-scj$ZP5hMvY=jG*S#jbRO4~d0-ne*Cd`W_kW`qw -zp_+2)+FroR_hF+Ut}ywE$_NbSd&}5qQxLttV(cF?i>`#jlH=24laz;hZ!r-O~-~?wR5UA4h5?h*OFi- -z0#3jS{-*TL$5|yPV&JVqiX#ynFo!6&G$q`|<=lI)_eceAh_bSnW3KoX>UAvokH)sm -z&y0^WW?;H*PJ0YxC0n3hCiAa=+y%Jn-N|d@7&G$ywO8CLNgYk4!cc-R_B+_P+GaOc -zg+k|d={ckshVP}(ye9&a=85`x7U9B~+ulD&q}BkRe3L30bZ91Oa^>_xKdvG#Js4dh -zhgm>k8yAZJl#>Fi7@5XfpnkuzrOq*XTF?au6Il~qVFL%aVA&w*3V&cP -zJEeP$zbn{vPwnKTcV&=l@*}dhrjwMb2~$3g -z98H1kB`=iSIc+l^zk!jbL;vVjaOx=E(*>xn`wIB&G^Il02B0B}6)SJSIIe)PNt@0J2N^4&4IZ0}HMzBeK4`BY -znsv0TRkcaG;oVTgP}J;arJaqOEyNW)j<>+R({KXUp*X -z{*9X30)bdcz(T`)48V`tBmbkFLfnTLnXRm-&E3&YCbvM7dy+=t-s{O5WupCn1Y~H& -zQPv){nh4cT3QJ~XZlt9fa#f8op&_$ZE7HlUqb08klh)|Xnh;o70b*C=fT?yEchDI@fMw5jHknz%%YJ4HX70xkKT$n?~dr+xJRHC*X6HV@9PBHNMzQ6xSmP;Z7*7y3<}Lv6umIHiPA>|-Zp`k`QwF{) -zg{R=QWyehdGcbaR%GFycU8SGQ%Q?*7et%U*qm8RWm`FlM^%kwX(E%k?=`9a5Z<6)i -znk)N>0H6hosx^G6T|b>L{E*9nn`AMbDNN*z(RCfnYjWx6y#eq<@DRv)G1l}t+6G3I -zqqeh)>||8jgyv9@gQFF_@(Zrx@SNu+Q1&Ch@=4uJ|1n69%hYtOUBHlFP@8{ethep@jr2LfQk%%$^5e7d@5K%A -zz{l&rk8*%^Y&%`9(!>W%#AE)?!HiRtKSL6wFMovx%3mQV2x`8$yL=B+=WhD=kFg*B -zG4^toBz-o<^1sdy6eRh{e@^z`&-d>?UWY#Z^TZ$jG0K^gV<;XY -zuqyt%XdeFfzZk#X@YJp!uLFOaaXFSi1A=MgvdE+5TU$tkk{4{-Lb7nHFd|1tLRP!D(a@85qF -zmjn6T>q#Ewoe)g@$LQ+~@qbYb6kaaFET4Y=WAEdG12vMbqkBv;k1ch7Qy_CLGQC1S -zX&i&p9PMo>jwGY*{ZlIl$yi8#ADiYI5u=~ETSiS8uKGe)Az?eDiqWZn@Ks-QiaOGw!odtM72aFxhdE|06Go~G=1*d6-yqGso8P=g@Q1z -zC)u!fw<+LM4Ss|*_t>wX-!K$h{<A#R?{L*Cyl@cbj^k* -z|Bb%1OSjFo7{SW7KGvMK6Jo74eCZj$FGt6P#`gX;v5UH1^5c2|9@bCE(=`c!7NrQE -z=rC0Ou$T{b2?(}I?X;C667VZW4ov-s7VG9V0bVK51(BFfi|HQd7PwKij+cW;m%ls2 -zIl%sc^;fn%EI(R!|9pTX3C)&qkfK6qKbA~M%FzkH{x|vXrZ4j-ikpk-0Hi{YxnGvU -zK+M1Y{Em1WHxLfx0@p+(@{~8Ws#AuR=}B+EmawD`ZJ&k?NHMuw761M>!@EFSI8H%m -zy(XhaN=J*pTP5}l8$FiBQr`?I)mp}udsWe_Z5^}TLBHZLfoaTmQpFg;5P~tKV%%#2 -z4&f1)5qjAg&}n)p!gku8ztQnC^ -z>x&>Fd8Yas>zv8giwAS5D)|7HA*E!B`9_>gdXZ-KwheD -zU&DFWtsOO`Lo!t!p?vQ-@k(nBG{E(4eUa>cgS(gilk$aaKx7;(_9;)=uCBua=z$lm -zS}p!S+_l!|poZ0V@=tcLF!pIg;d%miI_3mHRMMG{KRYrcjtEK;M@KybnZ-$#H9eJEq;r$wc -z36EA-MyC&`l-4!|!y%3aJJBLgfUXgl{sgB#ySotx%>LMRg|A|Sa099PX28@OPUluy -z1Z;~JiHwL(vCG7PhM30bP}RU{Hj|f?&0U&)M#xP5Y8glvWOOKgh#iUNJwdLM$1?H7 -zPi>PZ0=cqkXgS~~4HI<**KykSNr>ZOD44Nvh6ZRIY$f0%Ih3SD+7 -zl|k-@>`Xw1Bz47@rerhk=)kj3)`rS&ZKxQTR(RP_UYdTK``en6OcIDWU^07u1s(jTvNCF9EgZJq1D{(22EAjxaLLT{kXYS$)V -z5L5DFX9yy2$W(^wBkK*wb%#z9i%#0LA=!v-SNtvjlvr#~W>`MoP`U$R1@ml7#T14n -z!rDj*V3sXejz^Iz93?T62WN&)0b)0{oS-lpwmNz@rDp2tNCeAZLx-C6wY332IUzc% -zueF8oT%=~UPd82J#4<>2K+#-m+X^hRxf0mK|GDf*06XUNYs%I1&-<^8m0zKo&}Z>N -zQVYUsPyDJG%>=B=lZ~-xqX{NUFV?Hps-RB-SGtj;-O|WCcqxEzJ^3~Xi^zpZC=~&9 -zuk#9ksDf3U1`2p)N7~TuU-~!r0&Ac5Ge*#WD5O!Oy=6PkGgMl4fftRj*7e7`fla&`H7^;qv(Cv -z`jH6)m~hJG9`LrloDi-&pHTZWcWE#^MB6w+AXw@rrMkha|&qlL=88(7X&3xNP<9==DNKgmMH+ -zzEYlx<_b|A=f+(a+8biUJsh?bwZk34wDnc-l5s;b?Y5UUQsV_jD4JXc1ZmM)3E7=}QRl6pxU -z+F96Nxfg+_(^`EyDj~=!5T?=eJtj(X@GW}_Q0a8uu2<60%k=k`NeZ-r9U82xk2I_` -z3J>T>3RzK%7LP}!-4k04@NG_d(OV}7E&A4;WDg6LG#q}bzrE%IPX|%1+ -zvpj|@7s`2@D$*sKvYi*>)_}MhleXYv7|n)|k~HadnVTdr$(Vlg4T^99*caT(deu=b -zQ}EhcP3 -z78@mp6wJlJ3bBv9Z#L_V$^tKfCg1;UE0w!0k7O8_Q -zZ(T;XNv<48V847MPtW0nJZK<{b2;>YBbuP~c#s1U_ah&$#=iU-xBQr4A+Z*eo^9n8 -z69hi+=@=Xoj~oyE8x{0LPgUbE72AT=;q7{TmR1m$dT4Y6a_DP`wVKdH5j~0--oO9) -ztpjUyD$%LA8XI`al7KH5H0Dxrf!I+*!4;3cA*aw48oG%G7{mTU<>@C4VqTWgZ&1cH -z4*BaOphgnX%zst=DPDv(SgNnk(@R?LU{c0_2P;A -zi#S18oeoO-K!=K2jO(7xIvd2cJn}CvGoBZX3AjjJEBU9nVH_QqI?%eXw(cvx9u(zD -z_lmH`!R^r>ZO3>vSHUT?_f9lRz9qF4XR~7syL;ht&0i+-6zM;IS*u;7sjQ`1P>w;{$!3018urQj -zr1erAxVrViM-n%k)~n*+12Zo?H-IRv}Xxdj)Lm2#E@|Kl_tj-XgO>>8Sd%<$kM? -zyrMWe3n%PQ*ypus-TYd5$INXP5!y55K+c1 -z<1~+y5VJB;ZUPxuAiNvveFK&d5I*MXFK$Tq2-yRV1d_@mHl-M}_|;GWyiJz`V7+u2 -zRcWkk;g!KIFPwfm$X_tw -z!Z6a=r{+W64dwI)FhpLAzT#$3CdmGRHi+7I$?ale8s?RJCD-EVj?Jm9&@j+aahSt% -zipg@+G*1_y6l^Qn2ycuLVlAJoDvTBCmLAd -zYzqCxQ3?5kEpG*_)5&`A`>Z5xCV{`|GwYa{_j;JunGO^?^>cT1M*enfH6Qdk4?7-7 -z#1*k_ktR`@tJu*<4f_hC2WrxqAS?TOQMtWeOdW>$lQy$yNnZ#s -z_DPfWfOptjF^E}UAjD#NrV?Ozj7_G27#XYGr}iAu8_m_}BzI?~?dL88=o2l?>d4Pa -zQ>%E`c{*uq=73DH_Fx5Y>}m?@YCx%Ut8)f-rNgb4a}1DyhE7>j`Vi74w4OZ1Th$tT -zaqC}NT3y?b;EKlJ^fV6IxS{r@)hlgm)!`r2F3up#);5IQ^IKm(=so~ -zNytuKnER_hm3c^*2x>5$hegRH6IX3x66v)ku2f)@S>V@glBCiPEw;S59k|6 -z-yuWE0T{+f;=mS4oZWMRI`s@qt>&?Wi}1W(R)>cw2J69P-~kNIrR7zFA{5UbpQlZDcWGn -zphQ}91U|k!40A7mxo1peUk@l# -z5)Ju&JRBZvPUlWFpm8Pz?Eqb}UQ`7SuvAPlK?@ea_i=#{nnMmte29?3AT9ZFK=1lqN?OcaO1?$B%$&sNGf;RtKD@Z?bkAimz# -zn|rlvhei&SUhx1(7S?OBa~4_yBycX1)1K>1PQ -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 -zKtN(n-2&Qf%C?{?jRJBuKQj_yqae=#DRhyKU -zd%A5sWAUrerAusgMi@l8wx$IJoDH387_6RaS;%s(Jex4Fom`z4Gc$VBF{3w*+_?Kl -z#64_5e*m@`=%JSaACETAy1(^&k;*X_h#z5S15Aa4c~sTT@MO1|oUfo3e#e|S;0yA$ -ztFeW0jTCqkTBO>05^3rHTR^10QIiInI9I`auMr4>$I5VkXlEsz!@(y#d5w#PzQH8f -zT{_bEehRS6=@hC#OllvrnLI1!$p&eMahiy?KIAH>32UI^GpC}8gmyfT@VHwc!1Jkc -zaI4t~UNy|OptQ?xH)e%8uI=iJ3eKiK47jlhPq$VYLJ=#o3DRT3YRC1cA(-K@((bBv -zV@ufYEfTkh212y7g()VsAp?^3Vxq8pwEWaWs+iO!t0fI}CK)NIUgqW$YOXzut*{5`rAL1wiXbq)sw$kXtSpQAmZf2*@cxzf%WjQMvj<9+P~`hKqIOXsw;` -zztu6cEr`1r=GKaWIsKFsx#UJ|Kr|chL@lMPA0TsiR!HvB7J8a4Cy!q6Nw2u6TNsU$O5=v;E6#>#4&UT|V%?=uc%1vV*_1t{^F7vm2TcH3L$gq{j+@6$b_!R*Cl -z5@>6i6gEqJX68bj92;NeY18s(Io@^bK4)*qO-#jm9*K4XyWHcn^$&+Dm0k6GKvg^1Rx0X~UaJ{*r7C5xUbla%OIheM_=w@b*(%s($64Tw3WmGo% -z*Bi8spN>y69hR68qY;sLdQD{gTeES_z6+Vh9g=Xj4B3q>In(l~bjbiK7}d2ju7_+? -zjyA98>Ko4Lv{dlBFgDi%JyL=hr)4m}1b)oC!x;0dN)ff535;Scq^0@Utyr!ePLXjH -zmzNZAZ&n@>^%0$GT`QO`##ktt!Dy!%^xo*o@>oBL4?Y`2Vu_FW^S7-}7#|yBTgfd; -zuxVifk;OBc(+E#{BP>o5wuNFX`aqcE9>>?NeZHbJu$JkA#(%wwU)60B*(27}8CQ5g -z1@@V+o=+~7Yu<&AL^OtoqHkI`zZEbAtn5!DH?0uIHOVih(@3|6k&&;r3C@+pZeu^4 -z%=Qfi>wQeXtBn^FZszKv4IbLjS3zUn8|!poT@K9|kAeIiiRADv7F|L{EIK!qZKroS -z6y2D9Bx9*nkk}kYGtYMBbeldtze7^qP>1-oEV?&ZPR%hJh#TCmEP+4$^FX8FHUelB -z{^%xGQ*|?e#WWbg-={NTQarP-NXm1i1jiCr_e9_LLejuB3A$_TY;|dzk00%~vOdMR -zO098_=L_vAHTIYrCzZj;jHGD;c~ldJ(Bx7(kR&;}BmYd^Ohs=N#Su}TDWtPu(R+0G -z)nx6)b&-C;*%unFOVe%M0wuOkF8<1k!8JB>B;FflP5yE`zyfwS6IJ#pi8XuWGNv7&xOq)prxG2L0PJcL;Ufb -z6I~Fh6WMv3asYorT4bZj1g$O-Iw)KG|ASH!&WYXNk1B!IHy9(I$J`}&3-1Ju4@YNo -zQzV7-1m?3=?g;sm)C+R-9kv7QQP~6^zo3<^^m;+=q$8_Y90*Z_s6^zYGopN+`~lnd -zD74H_(2UrIi1q_`;j}f1)r}t2o5oFPmyY1Qci_p=1Q>6~*`WIsPoGeE77Ofeve>H~TufCsVr>j -z9oisd!62g!+hf`6kY -z$~q@&ris}M_x{)d0^clC;R`-VRjDcl0i6RO*{xzj9XX)<5o=o%HO~(ENkza6;$GYH -zWTTQkt~vR_u@pa%J*=|44fIZ;)j6#?wY+|i#Bbu18n5IW>j^aDEzCT|H6!{hZro0l -zyB+!l)^m-=m@=xc$Rp|Tqf_?Tv8(of3)`l1rx6<}WNBDOwSqjPBiYye6x0nJN0h4Y -z;-5+1sJ#TqSG#ptnUn^li)6eTnQZ)BNy7>cqk!}NJ+bUF{z>u7C~)I{#)O)oJQxYA4e%J6`tru -zr-iUxYDh+Uuc*5~-$wE|C5k~tKeL3;%R}g?Ic`;)X{AdU58e1S0=M|f52@hmPbB#XAbhd{cq2Oq3I3NeUnL|Yw -z>KdAcT$Yzm4Z=Etm0D<31`H(cO|E&Yx6IrQ<< -zf;cm({pOA-HZN7}B(_}c#YA230(dj|kcLxOW3zjgx9!CU`1gp62WWe1ZE_!=;gwwb -z!}dN-5RCxVu`SCr3nY%o{oXpH#=3X{ZMM_cfV*=bM=(cI;Bu=Z+>MM62`?)?1lTZo -zHIPI!DYdb^eFy?9SX`cf(5iwG&@gg01SOfZBW)!R5-+qoBbSc61yryE^~xTQR`=vV -zwJlWA8(BZW^1Rq~`Iv3C+<+11XU6weYpBjU1T0RZ)f3Pc?`C|O5)4|QxH6cs^ool5 -zmvld51lytVyA6VX!VOmUnw8^y<<_|ZM4pO`$hl}PeK}@n;Itr9-J?J<7F0Ui@*#m2 -z{>__!b85v4vz&b#owm6EVS$<2(i2F?7?0ts9arv_b|v5IBRm4$h9&@q2=IF{gtVv~ -zVGmUG-?OZh-L2eGDRcSpdlbEVO$wR+NK>FDg=lgV#!N#n~bb0g%W6s-V)(jxaE^q!buco;Q8Q -zL~>uj)VQWl*4z~w$UNnKYWs<8@C%9;b5R%bH*smjCAG>gPC(rf(02y@*>8-Usa~UE -z7z-dV@nuX6P~hJXG4Eh^y;OH*qm9-QfXsZrO&F -zAp<7q_!3+h6M_;_M0XvoZ_5>RUK1KF%8q45Zl~qPL1~a|>6#>^?=9}zXOM0P81fbi -z*l}{rpHc)bdlnnw3IxT$T%%=paPP$>m^w`*kPV#T(~y35w|Ue=>?hU_`2ony!Q*qf -z-9|QJVd<8fBBVSzi(euvduY?|$RYv6PFO6+iGgAp{j{1kO}X<-c?&O;F5gl>CDww4@O%BK&wt77mHhQQ`*IUGl|WcmagfizC?99 -z(H^>{EF!#K*pzErisdHqK&xb-^t$ -ztu?85;nx`BZDGWC?0iJyZlJrgW=sSoIM2l@qJ0k9Z-lAB0scHya2V#A&=2X;4Wc66@l+lM?twf&jeU0K?7f2&48mrXNsY=4gV{}@}wKgZhj&oO$$KgPHO_w{#&KgZmE -zTyOgNa}3q8d9z{;dXqh5_T;E*^y&3p<$91$;95;#u?w8{PU@V4Y(<+*y(d3`)JL|;$%R~_A>)?37|iEW -zUR7_vE@OtkrEGC40f11^mn3p%N6n4Mi~OUn?V@^l%cRvYH23VDlh6M1hc5r&(J8E2 -zKfeDhr^K)KA9j!AiN!D3Z~wmkXrty&dwoemtLDkjszv&k{bHB-In?Qje;2_RI{wRk -z0H;YZiS9&U6nd>l|5lIs$79zj=B9r9`mTG}%X5-1py|Y4FZe5ue^rp;N90?>GOl{| -zW4Af6C!{;b6^%6dQQV}qyVZ{$zxDOf-g!(98%@t(wVaGfy#2H-LGRu=mEodWU8U-Y -zVwv&M9gMfE9rJ6@z!CpVdXjARuRPGS_QF2CD|oX?)BBOn(q!#){?>`*QFKg{<>u#K -zzjS-)@lWNEj$QGK6ZynuM(8~SizM=~LO&G)plqA-v9Zn+*Jx1IX;`fEDC#WpXV-iB -zJ%8G}`2~d%d>4yL7kgcv5uieqD{im6bU9-@P}E%kr6{FC*9dUh_r`y^E#bRmaMj_2nS+)Nc;3R6sby{3!L|Ya-6}u`&{^0S|3eURV+4#V#(-m! -zQuiboV_VpjkwL4=IFu&(i(JxUmS!exw?^GQlB5z$mj}P+n6t%;q+voq_a|3p_a(J> -zBomZDK&MnTS0M&vKtMFOkMdf^U4ubav|@I*>;3)g6*qxxAKpeQgM -z_^mhy<#(2`yxjOr8sAdu47cv3&o|Gvx(OHyxeHZzqN*Nh^{Y~yg(doF@St0dW@p`? -zpgm8g%`kKT2WIb!(axGGSPq6>$-bYzKI}t&Va3Pj-vR`pML1;B!BZQH^*MUf)9#?d -zS?OJvC)@$6O`+UTlA?x9h@x~p-58fSXq!HHO`x6pQ$onASo}LTk@!86zS8}EmdEpX -zrrsN{vW);v4SNbG4>R+0*y$TUnhlt7J{gpEy?lHiuV)8nyVFA8n%3M4kwq0vRkks2 -zn6T%+wGSx|kYFzMM-vm}c0K4Bv>}15CEmuz&%ZC*3F+lFaQz7a9~N+U_#I^?_K&GW8QyNttK(W~#D3R6Pp_`j- -zOgf!jU21*oz@;;pE2l~=d3JRw6L9v|*4kgyY-N0!Ck3}afpF)ZW#}A`j3XH8!O&Is -ztd;xP0oYW4V{O!7nO#49q#P -zdu_!8U5uXz%gnvV8=iAKGmtC1Tr*7X)i<%_+!%WZJU{!Y@buD)4DJ -zXU4o7c^r?}$Gr;r4m(APXxOMhQzyNfQRX7BVq`pmu@WL_D=ziv6Cm9Olnw -zkgvJPY70dSSMj}PcK<)qUm8*?|j@Tp`Z33c}Z -zC0Kg9OsRk+zZ5t+nOK3*OA77)r4%bpO>6?MBn9W6bd9u(0ef*6u++WulHqyGaD(KH -zf?i5k24C;Nh#_7J1784)8D+l!u7A{qp3Z&pIdQjMtEZkeDoyQUQeL1otf;ImQK}#NrkPZ_IWZdFf0SGZ@9!>EUOb-9>0JUB -zPt*bmy=V~7f!sMTkZp3xfvur6unVk~)#REPM8}?_az4W@Yav0;rL^h{bl;=4!iFS-n=( -zey(J*fjYLoAZS{p(&lE=kH!i>kn;64KwXyWRi;{QRzrbq8z$AK>@l*yOWwZLEJ%-n -zN_4PULBKSWGH}VpZV&pUJTlZr_BNpKmya=LJ_!eFWd&C -z&d8r7Ge+(rPF=2=P9X`tWDZyGVYSBWy>U;acJ7p6SsG9E#F)U*RY_=al*_6nG!VsL -zHW#uwTH$2iYm$s(+ghP+I~gd{YGyp@TCX1FAt7e-7lCS3py^HL+ZSiFG({#QXd?Ij -z2rlz{GDdmOVhu9*QM|Hhe%@E^n6}dN75Zj*%d52+S)jcx -zMQZf#-*fX-h02)qg&6S&4fj$TJ87&Bj;nw{Fkxj16lrcNrY*>53NYws9@t!#b`(jG -zhNtR3OQXk8s#J@f_s{0Ybt}jLl>P@-b|#zHrylck-|WSbtJQM2XLMVS8a`$-sWbiv -zD?y+y-W9f{h95xMfjs(uWd$;>cdPhVD&k@Wt3-jQmSx$qa2=5trMigFL8F=hZ~(QY -z4A2gTxT}{cH#wWcDk?oI_jE=tiBq@)B^a_Dt>F3OVnKb5xEv$ABgh8>1R#Zjno|>7 -zU?WDtaJ4#gXm~hmTKJ@=-5Cr%wJ?B_H0PoP@2W{{L266&`7^iYzsvDv$bU<*m;8;| -zA^STN-<@Ord-LBEB|p7!u&8KC*jy>bkF=+7`+ZHat8!?V-t4m~x?Ngm^pztfI(K>3 -z*C!car4T^So&$Xk-!#Qn(T0?NhK+Mh>;g|yhSdAyroMFZEedbbMd-FsQf%eoih8cw -z2q6VK5q;=n>uSd^j#j=?et<-MrlaBF;nVuy>9K=No9H&jwbq3eAx*?-KM5O|IkMG9 -z<(j;t`O_wKIr5>x9oXG&!Y`K0d&VcJl?*_iwLq`I6o_ow??wNl+zUXtJ6(}0T+At^ -zSnx^8f6pCJhAuFAZqv1*`s--JsAVG5t9pzm3G~)piV$>}O`+q;oo>};(R2~VWl_M( -z@53J-g=d^!1~vbdj?0Wo8U&^^>_`I@v2l&I(!E%kiyW`n#!3RK>-U!Qlx03h5~HUf -z9Hq0%oKL##zwIj-tp4TR-mk|mzr==Tx{FK^fBn*5A1|+nJMVQD%$>V^MkQLK8R7~z -z=r3TjF0|AyFJJq}rBYCu+z|A!__nG?H+ofj9FlW49oKjzI+SZRV -zGIYto=GlMkou6-vok8gW9PT{C*jpC8Tg -z0Y4>x<&Z-?Cgf7yB$AHr=5~}FOcRZD6vLE!+W-?+o&1kJRpZEBljOx()W!*3U6YD9 -zrNI;NybPa&)O&M+&9mbqr^(ucHx>{6#!QoB#gL(iqDB3LnqTH-7&KSKYKc<=Ye|3G -zkfVdmzZJ2_x<=RkCG6;?`HTnGw*&FVVAdIMpoGMfNu*PEga}lqOAG)}wAnI5P3(Ff -z)?6}1yPp$Y8sH(5K6SKsx1INRS`Qf?a`UpR4U#KENGf=-j1nJadl|hvmi=Prhp=ya -zXJQ7E7FcSVNV@lWBN4g+cg|UZGbzX~S}10;qdW-!pk%xq%bKuE+L24pAwW;{L3&u+ -zh5jKkA+;gSVezY$RLf7hW$Vf0wllt(6g1FE3!2-MR27!yiGhBtGnBkPukLzyWJ)eN9?qp -zZ=eG~5q-E@pq4ir05WUqYG?w;5H)`!H4tiG@gx30;0VL~xupb-2wRMYo0DKVB-r -zxm%F?j&)|x>jyVk-Z`+DL_-O2fH31Oe7!D-=gdYUB?Na4N&t5pHLdKfs!hj#liQfd -z7jfU{MVyX~_JaBWT}*v<0G)>W-Q<+p25>5K*-^{H+rEy6CNPAwWQcKDXI?j{uR6eX0(tQWUGDRvSlu0 -zMc9bkpUrBQAy}cYowd5)1?_iQazahQPV3pS90e2BSjpO57zq -z8`_wS4cPb`uipCgNC|Z&Vw$_|u&Pz2>(ZNs)C=6AVJLrqz0OgD+)|3Vi`>gart1Y2 -zVW+R7IZF=6v4?L;<}RZxV}0Wv6jHrpZw}6{FZD|n}_s7gFTpJRuz?l-#Y!QZNI|3J3`q4+SAq(yW~!9 -zBB<^rlY2dzL(P;qM+b_su5LXlao%KMFZ4dPo;!l%I1avXr04egw@(yLAvmSd!9A3e -zR&4bT#4R=}SElu(@sh-W&IWB=ui}3c@nbG7k>YEO>hnlgCy7`WmA84YC__ZIuaCzRM_hw?u%ahTAaajy1X`YV1vv& -z^D*)~v~3%~LZ&ft&;Z7#CKMa;#@d}V+q%$#XS`?~LynIub^OD_q9SYH*KkndcI9Bm -zMD~ibSTIGb5&0<~>y=dy+(d`P3IQ(&R(3-VlEJP04K1IfP@2e8n!qLXbk&@~bN7Pd -zAVmT5&<8?`B@m-f+Ze%%U>ucKZ~!}4^GM}q?Zx5FqyxQTTbV+vd$oCr!FYmguV94- -zyj}jO?97n}O6Kw+U@XA-0?eriSM-DVaWf28F)G~r75skcFUw|Tl+~|%7ok#aK8EEC -zCu|uen&BTq?=4i(pgQuX+)G9qs3kS`TZNh6!i3boBxoM4|mN4{N|JM -zv3tK2`{9?uVY?dq1({XU)xKPN>FD|y_rjogNKruaWE#jJLh^H`!X-qX7TK8(Hp%TS -z2GVqV<&nEd1-U}$wxD$#ebTzBQmxlIzM$zqPUzYJdERp_BVz^GD5!NB -z%Ez0!uGpO+iRT0t{oyxw49PVK&AAnS!PbIhxAv@vRD^AISDeBA! -zlbdUq)FN_-yj(ceNQCe!`kLzWg7EF -z>Yrcw>$NO9g%YX%W7k!+>Oyg~^e1br;5ErC#ADk*YiCMWlTd`ETHJTnT3QQ*vp_`& -ziA0b~X~`{a%)6lh+E(R*22hEU7E;_>RNlrrWC4S7ZfQ_=Tb?x;`;usGH9ZtAlm6Ps -zEuX5Z{-#mG%)zEWM^m_ju&Vgw*Bgl$J?je)&|TVnHt_n5*W+zHtcQ`4p~Wr4uWi46 -zffkm(6ra+-QOJ`DaF_WOj;_lYS(KvE{Q&r}xr`KfYm7*Ta9N((k>O_OSv3k)p2fa^ -zz8FVW-~6~<2Hd{=c~-su_2*#mgf>(tiW*$DNXOd|TJ$ep0k8O9VrTK+N}odl8<@P) -zbfh#t#%zvRYq5Rq<{N!4i7Pn~W96;lIISh_@zxL>dR#gD=F%{SdM;mvLvi=3#Q=C@ -zTh8X?NmiD7%4o11O1pfDeXw2G5!wUaIe?n>C@0zS%{L4&{ta>#hqhtxAdzq3HlPT>yRNl>cZX}LSp+PTR9wMM2s3}x0 -zDnQTDew4xeRIjTzb1YRwjck(P>dU}U{pix4KSiS9&%eKaS9ysew@%83%7<)9nvtVp -zUU50`HzQ>RHRUl7#(XVQ6>wd*^f%GKmOtEGu%Hkha>syOg^V_59gKXOn&5E+%0s*4 -zSCxiQi@yr^Qcd2Dh?fEa3k|hacORQlylKUJGWF5`CGl4{=U*>kd41k+1Ky5`-`L5!>&xS> -zzb_(()?B%^ksF_cw!R!`H7igIO|F}-U)xFV=L`kzZ*GN; -zNs>32_7ao8UEP@JRufY&bIPxSS$#$**?zn6e(gD-nWxXj%9q*r))&i(T0}H50)<0uaQPaW1f^D -zg^AAt+kvl6H3n2^)SHnYV#Y91OaczGNkoP;t&>uO%Ls{lMOh$M -z7dX;Iusl^DAAC(|r8c~-j`mZl@X8vpSEYbC$C@gk=y0*vryQ=gtvot9 -zJ=U|l{`2Z?LNf$>PRRTTe17a)5M?r^|H#kf3g|Sm6u|y+3lnFDINMz -zo-}!Ngvv?|APxhE3ygtzgar6tN3w*5pO -zDsG~(dkcq!`SgVF^`*u~H@^RKaYnn*75l0i%eX@~-MEHD{w6J42u?Xh<&B;Dvg*1C -zl~hBXZpPNq9cT -ziy@{%mtWzL@@6BDU5YEAxUY%Q%ktU4UdZNFJUk{UU+J9M;-sokY@aHj^q(ZgWE@Pmqz^dm>lSVWul) -zDP5k-qd#5-VX-P^B@Kl#b%f*MDF=7D;Sb|@Xun>ZTNzRBb_lLqE_B$*o~6IGc#N0N -z>R~c0vh?4v)HxP73y@6Qjk -zCvMZL&{1Y?cI)8zTVYNx80^|-&pu@?CYns(SdIRUGTZWp^aC@fCWM(=qp`J2Sn>WR -z_f@$Z;F;XBaiv!x16QIN8T|2j){p->>#t(Iaaj7kJhClCfPzPI@zw+!9iIy#rsm6> -zt_c942U_?QexKXt$G!#+zX)2$G1ENT!!hF)RvF)z) -zH8LdeI2)h^6he8W2BF?Cz6^2r^E$T9lH0WbPLCqxxh5nK8bvc}oA~M(sXL}Hg*5-A -zH3sB7U-n3g`(yw^dI=W -z|3RtH9DwwkWR@Nt)6EaP)7{KN(WyKtklS=Ak)64AyB&dy~H~Ycpo!@Mb%avIvabi)2_u?VQmfpQ7*)ouz*9f$* -zdotAzZxEQ*Ge8tEcd6KKfz!mvLWP@+A&Dby=$$=5OI -zD7uVo|8?SaIrCC$q=Rj+f)*Vp?8k*o^TNES=k -zprFy{^e-NtVyAe -z<><;F`f@A@*JybZPxLQYj{myCtoS#Q%Ti1*N@!_L@|u^T6?t< -z^!iTns8be6K3K~Sfwu*E3|&g=kJ8jyf0#Y6{#9P`uh(z=Rj8EppY$$PH(eAc9cvj? -z>DkigOSDb0AjJ!j0ru1Mc)6%-IWBLa%qWsq^|Rm`seiqf&sYl)3MLX=U{h@UR}IMC -z)CtI)s^wQ?zLK9%M{VUU?(gWTGJUlo -zA6-19#6`+T#Cp%-eZ2<*abBP0a^z5bk<*gn;`Px$ao}9_`{OJ9U9No`(=*E3!9h+3 -z1G~gF*ybh_+-TCPy!0RATlqow=lA>fI2pe$+Dsj)o-Sw7SnDq%v=nEW?=cno@!i3$ -z{!8OrY-|?yfy1(nT?UH8$L0~o*+73QQ|42pgZ?T=cxJ%Fjh)?Y@H0pab?a1fjIKm_-Kw%W -zQHEM%1FghKhQ99QNedF?)}+OU2oe+le6El#Z;y}n_sh`p7%l;u>j=LD9=TeVGIo)T -zJkmWrG|{r%Zy92ajtcOl2jW&(OmcWKKb5sz-_Uhhz5_sCfFCO(z|(tm6-hjcBBs&m -zXgW(W;Fwcfd+=i(TEGsoXCmh`WXGs3N$W}u%K+A1ZCfFZ_PUPN;qImz8m~L;#X-hr -zj$`bK^r*C5YEw>b`jp9#FRj-o)n&lW2yLiuwfR0aviLl3eibi}k2S-S$b2lGH4d(SH?rECE-2_)0BpZ6Y% -z;qtu`3af}`>>&6~-AKZkWul0WzMA3*hXYbdJ%%s+>nkQh*`;yS&@WByHK^-FIUK*g?eUHVxZv#aObi -z$#kk>btE2ZKIRhIe25@i`gHK;YY_~M?$#!zX%k06wEf*!WtIZL8{7aRP3yLP8}vO7wpJ=cPIB?$8mk -zYdyFO`Htjhv7|vfoOBUmGUm!(HlF&leD8rh-Qq!Xq+|14t^lZ*qV}{rmd|IHB)770 -zLB~)ZW0ze3n>#A1`8_Vs$I($>d<3^)kGmXGlo^=o`nJa}xDc6j)z2*Bv~+KIW#byr}GUb?-?0eR{NXaW#s -zDWkP0P}_d1hw=b?&3bj*fqSJ0i)pdx@uf=LU=ngN)J8tX@~p6ttID(wdj0iFE1q%m -z^)tP&ucA=ytIV8#aYRNIk)RpK=-rzBzP9!63v9sG{;T--?ll5I@V4ex^M-7-gfarQT2B=PX -zY{W>D^85l*igu{y>H#nCUkea&GBECC;PnLhz02_;#v8fbvj!B9X-*kxK-!?mLM}}9 -zU~XPURcq`1-Rz@G5h>u(1&zuBbSvcd#}eDTMjU<~G&WsO7BDEv754<2Y9k-v1q=lx -zq&?%qmFxld41Vr9GeyS*UaSvYkF3?L08XL1Xj@q~x#oufPa+w$wD#Tp^1&EMBa$Uw -zUWL*B={Il4%Dj%1xOzNzW90W2^cHpp{Pm~MkFodgKW`UWC)b3Qfv!j&yY9&7IkX}0 -zc9TVyq#HO;q7X#$Kp-K}E6h*u;L0UWG*eniU++|LV6MDV|AiWz%%)nv*>v>kgj$N9 -zr1*rC;=hMe@b~L$tk-xpqzsG>IY|njsksMWL}L|#yMly50|x91=_ZOLGkf8r2T;z0Ej+hRvrTBE{d=G%6Pl^ -zR%-Hj5Ww)|AVP`^<#iQ6B++LD{^||{Se*fhHDolCs=M52%YI9ji5vl^(Zc3t@Fjd2tS#s)zOwH?iH7L*@q1O8u1(D6+IYq%hk5P8q!5nPBoi(T;qyG -za$Sw|q-=!#ah=ioJX=6L?V$KxrXQ4J*zK>wJ9m6H*Tu1Ua;&D}q7a1#A{1Al;{;*x -zy6*e5J&LJf9m)3HRScuq7dzx?aFZYo<3pIS06|;6uLGi&KPxUzS0!gO$&atUlSB#b$tETKH50?IA)VoT;_D}iiWTANd77Rr;(#n;? -z41M$V^3ETq;g%b@Fju}@k-p53rwPcG+y%xIdVPL+Wwha645EgFG2{L&c__}WLx@pb -z6haFe;q^tiw@^4Mkif3mh=V$R=m(BoVCpXC(xR$474KPkyxc8qF#5uDg!QWK;G%6W -zS`kz>Th1}bM3WTzQ(9EVu04sm{LWXgLANv>!;Ac@S@EGz=n`pZ9m|2s4Yp*{mP@J| -z-PXkiZ+3`kmHi$8#r&u=7dshQvF@*75i(BugBM@3WMXvQ5+~+axQ1V*ZlhJ~OO8F! -z7O(yivJ+7y>7uyRVO -zB?sNYNGIN3mdpd~sHCn-iw@x4aKZ}%wFj@J`?_vdDfS13cKNvEFE?JDsVjARGrCgk~N-bU-$&*>;@uFxPc(KNdP8{8Ob+pjOHeMrupIFKd_9QAO -ztI~|CXflc>E&v#{2`V(2{nr5yrizndzW{f{r7#Ko6Y9iGzyS{h#gIT1nfpzyws2(5 -zH2&=njCp)tfXG -zZP1pxbCN2Z(j8-)FDH~x$C8OQDv8d0AboJ4N2py<8h?hFGZ^W-N61~P;t -z{n^H^kN1L}b(R4Cqt&XW$7iLm_-mzUv&~6pa_Hl%)UR%~U)p*NVm`(;=rzgL)^9xi -zl~C0XCb^?wQwoz&DL5aGQ3+yUL)oQfiwJO<&dMpaU`>6JZKJ#MJ(T_Hj`u#86?hkj@N7zP7sA**GQE9{C -z!(ItJw@$$NueY1EK;!|AF_~GzpxkP?k!}5h?VKyhxgWw3G7mbimMf`M?~NHtL!tb_ -zga5X`i>PUJOkTH_keq7vrLy`N@|;S-%e^QwrG5R#*>04-su&Y?2hfQbEyOwcH3y&D -zgG?1IEKtrS7}MY*AT{e&P$^VaRB=oTtEog|>=E9dyhRl0jXmLT$crCc6$5I|$QrLlU`{Bi`G&+K!gigME#RSDB7=oF -z8(YC)ldb&zgRZmmO4>sPQf*sk`O+ob>IgRe58aGwl!fp3Wif-fQ!eMN%IE+1Zo@sj -zW|XsR%pL*gu+M1u?=Yf4JAyCLead=S+&D20aH5(bjbV)NneXMov8=(ITmE=ixn)*4 -z){U>-F`wCwzrO1e)W|q7=dCM#Nj`L+yBpquYOydY3drf1a`J6!JKLYYfnLIwmVIsW -zi3df(h3NcZ-S4;6a}PG?j6^D65*p^jFm_Bb8T4vkrrF+x)a}R4 -zwPn0nN_5AvDDe=)K$Dg@$%vU|X4{2h2&}b<-IEDecBku_T|jPVB;mM%Nau}-or{8p -zUZDlMn53%QX|3pAdP8^iA?7FFsC0&@U>rnD?GIyB;k$o;+fUc1XErkBOE>aiIXc$L -z&7aW<7X(0yA)gAqWcLXdcGekeBd0QK;$N7EYlnTfjaD&5Z~xz8b2|U*!{(F=`Gspd -zbz;8-$wwXgnu71-$csfThbUkL -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 -zw=~{#vK`L-B?6~a8LoYs(UnB! -zOgRA!1&Bmc;n*vprN8V^vY}=a!Lk-1hjb&Yuf@|Gut>z7^R(%qzsdFrG0A>XN+)kC -zT%tjrINhgxc#qPA$ge2{^;|<&)tD>qb5EPzGD!&PqrVL+l*Ao3_2XtXq#0}@S|eR^X)70&YPx&Z#(W(kR$&P_fE7jxz3Q-$D9;s#NNZ{kIZpOOBKeX!t*gX8k9<#a; -zbZ77dWFL({31H7kQWTxL0Z(*4oNje8^5fl$_?4d9utr58_!lO*gU_}NWU0dvP@yb; -zx?vA@?8HGq6IT(r(1vY94R^j1OS)|>B7x6u&xWBcNVee!C=;BudD3ztqj7O}Q~}2U -zHA2sC)!Cr+s_sulw0M$@yN();dg5mfq&9jSu=TH(@&}R>Zq5NYvble0KN|h{vxriD -z{Z1#8iFzD2#!>Y3{+%2tKWnZC#R`9+BGF_34g4*c|MYpf>X@$g(EwpCSQ8_h_LgSy -zgi1LbJjFqYKVlW$DhDeawF~en(5NK14=p -zE3hV+V9W0o0hvjFhw)P%%a61r9O|Ap2IN2a;`ENiF0t&yx4&&Vv6C<=(=^WA5#GMe -z=Ql@79)3DGh2FrwX~!h0lecM?P!2*TN0s((m^uwVlV=Fv5VE^~v<-MBhZ~v5#k(6f -z9&O$81{e>lQgN6bXa*9ySZK@kRE%9M_M>n&;+M(FL~Jw4 -zsuC1jk}wX{+<$Y7#a&mGjMu@AjM3=`q;j8rz39y -zm>~4vV#Bt_qWNTX_Fy2B2<@X5D$daK8YMwEX{Py?59F4haW)?h)5)~*NRq-sr-%5G -z*Lt{bUu*)UtwM_iT6JqYXNP2PIDnKncTt)W(W_4@?f2h5RmPAVJ38ydT@}`?Ba;%j -zaagWs?gjyYO_kVPh`!6IByz>?+CT=>TJ6e?NXix!NLGEamR!7zCY#;TZJ|j!tFT)w -zAuT1*Wo@0}Fc$GqDdswqLy;;g`;|EY)UXnspKuhB^S~NN&g30x;tR5e)$J4{WCrM8 -zvPJMG0`y`}({dE=NA>2iZ<+Cj{MbT4&W^l>e|6FLmVwMIMNMmy?mJ=+fJ<%2_*;)- -z!XiP3g>S6m&03r3T(SWZdMn%_aIS+xKYNcUzy0wwNie9~=hch55VH!ZzGfnh$~ -z3GSo769FvHaXr=?p?HM(5v&krbdM8&k>t{+kN~Z#_0uoNLbb>Ik+afdl{@m8HbW9- -zvCc#aYrN6#!A#>#)~p~v*9D8%%M6GvL^G`Fkc`+WI89#a=39N3up);Q5Pgb4`Xnm^ -zWJ%jdCLgbz8%rYcL$BSlGSb36S6 -zryqbrD>VC^)Ho{UY4vAego7-ivQXgj}+g?z-@dRBs{@!PCwQljjA;v$J>)OBpg{}6;UyC@Z79n -zqYXFT4u-0r344TfIOs+#6Expx%G{Iv%NpBN)-J -z8i-(@L4#4;q5`bV_n&VlWBG=BBjDgT$Ere)+<1scm*4|bLr3*4(Ek6(3@IylpARdg -z*n_BhD>)2)baaoh6uV=Q^z=b)<>~ip`Jzd-kDn8m&Ex@r47GJuqg3~7Nr|#{Tr3kv -ziHapx=znp1$gb<*eUYfmJ^!dqpObw(oBuSOW1OD+F0gWSd6KNEXic`C;12n8Y|U1& -zq6uucLPs^gLp&byo}g@cXB8m;slE-;^nnuE$1__$V#~-oD|uonyw`?x0`}V%wt%`l -zsA?gJC-UMM<0?DR5)z+|CeOjt_oKWm+8t!JNb#{GjF&!_F*DtNCSoU -zWY?fhi-glB%!rYGg?=YQN1|}tF=rLMqA)}ENd*;z-TZAkz&&^D8=$FCE%If1W^eTs -za6vU07E7K>mU5Tio>C%1VdTu(=y+$DtqS<$W3?)RT#+x7H$_^LoIQHIh$@goXvnzb -zMjc&(68v`Xb~k!0H%^v)o05%9)?272Nq3E8gvAa0>8pY*0z;*rWoKY5&{js&o6I?S -z4|K10y<3s)B-K9wkwRv3hpvwS6G_vGP+Y+Fc;ozZ&d8IB--f`gC=XrJb+z_zaJq7tB}ND@bDEv{NW`JE&EwiecGwm-wSy#>e_w%I*wD^4|lI2c>>sC`N?vfSs*%x$8;m@;KhAK+e|)JV_8^^PSh; -z_*>?BROqxX1VMWvcqJL5n41tkIdaSNk@Sej*LW+AuGSdEIH^GQ9(Pew%E+^6*xe=D -ztZi1i-m;7gP_@yg9D%`J=aj^z%MA4jBTW*SP)cHpJrst}r_cTIbr1K|-|msV5B&9+ -z6X4{Dj~22Fq|u|cdBV6^jtXVTY5|fRkk&joM6@xAY6!AHKeGkZbJu2z28~^#`<(s7 -z@4>unN--x2PY_sCSp%JnO9t3k0i4o$oT`vl$00SSyAhprZZs6_2_yqgc1z#U%;P7E -zPVgIhht}9bOwq6Cspq(MK4e}R#!)pGONs^KRK5C -zP`CQ?zND28FN0jHP7PHuWRGPL^L}g;MI|X)P7!Sy5Jqdm1I0D;c#vG=1;L}$Jd9f9 -zBm-iE_=;vc-+g_c`cE5X>izyprUZ2rs6@0nc_}55DP|=2#*cT)^o>}oR_9y+dF6%* -zP-{YA8drr95*00RIQc}M{upww_+qsQe`z-Ch9#Gm8u%yEh{eshJsrs -z^+%D^LpejK4q6XX)pQ@~opPv4pQGi7r?)nPV@8b2FoUJi+yYZv$z1jbtxUYpC8$G^ -zHFcjVU1-0%ErQ5Y`s7#^ -z>J8FLl_=`U=0-%eP4XfnzEHtOlBM;^-{>A#Hup#`BeqiWqC0IR!{Ao=ffEEhO12I) -zhS*yMga!0gy~a5u?@mUEi{xXq?4SuIIy(l)R-q#HEkq6Tarp#E -zjUoq57TS74iHo>NA3xEvh`-pNB}eAQh&i*>qB*1@O$9?6^3H-!3N-wI}|R3p+7`R2kl`#BzW3%?*iy`l25NxfHhhR8=e -z2Spfjx1Lf4%f9S9OX0H#v16J^?&)%_=-1T7j)4C`k)stPj*<()rq`<8#kCVV?mZbS -z*a`X&ZDcrhDHQb_Vvrb)R@idQr+EVQ>l`m%NTPzNJCWc)b&V-JeXNZ~J8l<^6&IMx -z%iAFc99s4t7&kUuGqyXlwm;{CoIlzT$(-fG5_C80O;g -zNy1a>3+g_Qy0ro#erYpfAK2RPUnF+H*#@Hwf>6gfZaSd853NeeC~jhcD$_E75g~)s -z%3n|mYDIBe|Jwo6O$S^61cIPRH(I~rK96*1RDhB?P|deZ0b2*Fi%o70i{n{Lv@`dR -zi;k52y(l9p9NYi>e}AjKZZ(Ls>GA$=?*FsHme~KF|Lgx-L0$c?|FbN)`G5Q$|A$+` -z+wQ8UwN?Me|N1}wx8>M-R7a5Nb^*L!RvJGe5|M(G_vn$@fb*ApEHtmda{5L-IW_^T -zL+p%PAn=B&lY2a+Cz9KoH|975#K;3213|d -z`EoipazzORykc3^o&D%JeJTMWOw4_ -zaY?9#Wq;E@w7O0!9}klfZfh)8i@zk=?vfdL=~9K|HDO)TBB(VPeC%_OI1jA}(yL@Z -zIvss;lb!HZo%ZLAEc_M39P5!j9lFbvhG#k%OsxC$jq9DMC#ly$pIEsVI}-fg?fY(t5f}=!=0jxGIkAT-0j-bJ6B* -z0y~Xb=cs)ki?ec{(aPi5&AWNB`;kKCBIGq9=}2xN5;?xXQe$r(O&clJ%)i_q1Kt7n -z*7yWhv{t^skQS)yrDF)>N&Rq+!6pZ*OUjMJ!kv>^Mg0u$aelxZLLa_-`?&L4htoqs -zK8{#UWJ!FI2Qs?P$%@r!UD?9qJ_c@V#8KsUZm&Z^>8wY@UnIOAPzE$}T#wh@^;1&Q -zn_>qfoo+kP-|qWm -zUFs+qIh&7sU*=ij_oUVO3X9ravy(yb;-dbQq -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 -zsd@qppf+hlpvs~wXhBm%d`l$u90rZ -zWRSGz^ALCwev;{Aqc7PK%{C;YQDjzjmd~m_4sI8V -zLw_!Y@xV@lhL>#5(=Heymbcrb@AHhxo6-iv&sKDyp@`vYAth|zdeE8bXgwZpIl>4i -zFm$wV*fx&CZnzGtsZbmQpR1YOt%@6YAeH-uYC^vOT^>o1dvLqENwq$AYu&AqU?cM$ -z8DT4<=Mtw|YDHe^isSkj`@MDhF(TUqSO`JMVtnvjD)x7+Mxp1Pt)rh77roK;O)C1d -zIH;Z!I|)2Y)oN|N2*3J7!-cqrwBfa3=L~?fa`OnF<1>#(m@fd(n&e`VB -znd0mpBYnfsKN -zGl=^Fb5qJTtrBZsct17eE@{w7N; -z{S6%&)>~mZk-Ye_R6RXWV{8nEG_y!lRj@NoiRUP90yGqC8WOsl1l7AG`3Ycgg&qkr -z*=E3K9Jtsq$#TGiF5aL7QT0Uj7Lz847=z`Y)j6WxYoxHQ7%wGW`8UvgpzO$ADg)(O -z;W268ThFAzBMSts+eE>TKxQ44gi*AyU#>4`huVE3&tzbUisHko23_tlAIufRBCyUp -zsGR0D1pEzTdqYr47!tx+ZnyC(L$Bi9Udg<;yM!!=1C*`Z^;Kh!^llr};Aq1Aba{YN -zd88v_?nM!Z79&Iy>`U2E4t@5%r0PP*lwO}U1&}*Ns)DSK>5rILTu7)gZ?<%FleO$w -zkZQA`veTkw??sJPtmLE)TpwQfjSYYSL()T65ZcSAM>l0W(l^DoP+CF^456_kFC*(f -z=-2@&9~>&GGTI8rDX&@C{~v4bmL(~!bPc}$v*`EqSQ(L-Rh1Ly*B(MI0Rj|UL~(Hs -zeDrPGE|T!9emmOK~BNyq3H#O0xg@TTNY8d -z?7{GRlm>6I45V5JAu6US2n?M;+M~BnCPR55bSkY}Bppem_gujTNH>}pE;$~^N>@>6 -z^|n0z#D3p)MUHBo0Piu6fc0}NZFfi+uR%P~rx}gNTvcJEr87=Oa5M)7LIip`aFrs% -zxdgLG%n79!d7XPifI( -zqCpK>CMP2v!t23764c7a@sU1hL0E)XZyyJ_>-2L+{=3p~5W2}2m(1D6can{+JGbXC -z#(|XerxScg@(=p3?x#=wWh#+URD12x;E1^OZDwpviN&=7=6r1(z|s_sK~sttNra4i -z#5S)nCt{#AcBb+EWY93OdA%(HE`BfY0I!jwZasj6wQf%@at)C-q>Z)$T?Lur7#eQq -zGHd`rv?zy+7i9!+H+e_a&`9fU=}}@JCPPvIR!)F|bm{pfwRt+dZRYMV2DLD172v5y -z>>2?=YjpL1ux~OglBZAV6f0896~On+!`p%?DB2FB`TV!#EZVziLTTe#9EHTsoC;t> -zcL^|HlsL5q3`R%BxZ985qn-iet72Au8jH9THtM -zpE1_jc+26_@YNhJBzWOsL6QhH?;DU_#SuUKjWh8B@HdqNHvuP8F@2UAA -z1ZMpPwixM$0a1=*9H0qc>CC|&QWQ(uiu9vH`vyNB{K88TN^<(wp%wLAdl;gWiqEc2 -z1!?f@l{6QBB9!tcI6?uFNY)&ZP9N|13vUvb#jyGAaUdT7&C*U-{OEl*!IC0a0G$E4 -zZg-hU>r&?Ou4pc`u#Pf@4cF@06;RlkeHh-)LDpJ)h8hioq%c9mvv8!0+ql}eWk^w! -zLvesnfg{+@9aS~?ap;jlPz!E>%PfHg=wYa-NgLAy`Ra2D+HUmKqXU;=+_^W0mL&Kw -z02Ym)31>06${p$|vUY$%1?}13ONgssthhGd4SFuwvu#$!hXP#WT$!T}*h`9hjM -zx(46E-`qB`9P_Z>Xa&t?wpA;G7Tn0fBhwyLYXk3RyyTk%6rn;T+uqYlgU`77K+-ZW -zoB(cc8|8C0vZ0-DcMl!h+#wO>+^W6>^7vlIA}51xZl)_+i#IL!(4sxV-u#1a;BU^E -zD(O+m3U}*y%f%QK?fj9g@^5v+lJY=blm}Uqm5xe*=N02nfeflc`7!P@f-V5W-TKh( -zjpUPA?hFnj3y71Df&o1k-IO%vW6`_EE|6=g@qnzl-@k#Uf_^`6n?;4_31bAUQflS3 -zsHAT&(gAo|nkRNdhU!CDIDlkOA7D~mxl2O-<_g!F)F62>sn?m5pf(`g(PQHqc-Rbd -zfC?SIr6TQyLu#;4IWK>^lW^7A;|J_`dLaLf|Ni_X@EpqBIa+xc8lDzSa05e#d^aVF -z%8@(W{WoELF)N4t2`*?5z2ixft-`DzA+d2{qa2NkAOTT^0buMMr1NQFxq7$Q7z$>Q -z6e43xap{`J50X{2bLz?B~Bv3>jWNHDE6IsxGKi=#ny%^p!3?nJ!r -zcd-X+QrKMBdrTsT0m>OiZ)Ay$cQn=Fs`1E*;w-WOf_2z%$;}tcO?(|)M^)r9kU1W= -zB_3Q6a+f5b#yhLK{Uw`{`L1cZtyt=s^g6jY3T4~|4ae}7$JnDq1^6s8ivU^^$9NNY -zFdd)VPd6l__i+SF^*WXMV=O7OdRtiAOQhhaA -zO`RWC@_?+yytOycEV+_;@T@riU3H -zf+WYL+^gcyb!fcVlx#I{wn*@m7dPC41dhq{W=ept7YUR^AV}7PL2EuCq1pZhu^yHd -zw+#RtI-hNcA1S96_3|JWt39^O;!C+e2xoqxl|wlh$40xjai4E{#C8rO -zDpp}3exyR+Su!a{9B5TzwOL$4HXLX-kkLZjKf9=8iywY}8kL34ZyS*6V*`V84b#Ed -zB*SVS)#s)V* -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 -z63nC6qdL? -zJ}vM9w27>XudsnbT(EBtg@u2xmz~xZ%b3xk$jKEU^@Vj)7^wHTXBnjy2!1M1va;SmqqrI4{mHggFh@Cg_@rW2qSvIgD96dO~!ZTR`br6FzKdHc(I~W~pn%;Nz`<7tz&w4|d~PFpmI2Zt -zpz?aDRbXBU_(W(SRvs0cL>~&DLp}|)R~ax*`aITC+c?Cs+0cpwX$acueLquAG`}m@ -zc~9;1rFUfzZt^3t*QS${tqE5?j~q{d`6aKE-8*eVAHRXYr$c|~R&ekrKhy=4mnj0t -zl6*U2@`7uvV;-mq$xp -z7bdOIn>8uyE6VA=^gjJ3?IWo>koXU3rM6uO+>w?>aezjbg-4L_)s|{}A=4F(GE`ug -zgT{MM^8AUIabM?Vn^{eu7L1v1mi`;)5)AE&Yeca>DpI+Tc^K>QTsAdi=`}VF&bK1_ -zqVEDgIk}IKj7Eg|tQz`G9&n2U13WEyxRY_?61%<4CSazKl51qk>e@!}<+4~~Drg)} -z5I*KE0r0i}1pH1f3cqg5@X%8R)+~jn;KpS~P69PBii%3sTPkIxpUlfS%-?>0RY#+Z -ztwWedLP#|it-R3zRaEIQ4>Wg@HQ$^*Y)HM%AOXyNm2(6y1dOP?5u<6~6KduH$f>=O$71E5HP6 -z3@DKB=p|y@DRakRGq_<>Hat4$4l4tH&=%j{w9v(uh-UIh-A?~8NRP`@cCB5&kYZ4~ -ze`hSX?fQ-MIl@$%$lmhfv+?i64e`Lo>%fn4fOc#}CLKK}E> -zAOA7RnU!NG9!e@W%9D5me!%FP>j$tZ{=8@&{`mhHzuxfFt{<-hf1GhSmcRpoYvr=Y -zqvcy$NQ9BiKoUV9&+=84KJL*1_LmO?z|ZK?WRP#XDDrt3{rKGr23E1*Bj#hqBi(v{=UjApg@)3&2B|sP+fpn^M&0|TRuq!4kp4b4%|9Y$KXW&Y -znlfAkhA>0Ien=IhQvu<919gva#g6+ -zdVC({vjq+tu4ZC$#EBj0;~9oyLMH-fLUP44cwaLBeP+6DypT$%L4;c7ZCBf2I*`Vc -z`DA>ISUF|Tl91g=w(>nC2iU%N^nOMe!UOfW#zTY&;Ib*66jXH;MHvXFdX(&dY>aIi -zZmnc#1c90 -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 -zn|R5l#uDVWUT!)*yfWV9h0|{b`41*s7}Y -z>EX?FQPo@u+p+mw$ZwK@Q^F1ZM1xD5O`+d7N+F-HC9a@$I$1A%pq0qYB=A>#W*swg -zUk~#-(}7~Ae(tW$Na3!n=7V16VaFqh*y7`(1qNYTw} -z>2T}i90P2ip;H!>K7_OpttXH1R<#CToP30fBAzM~7H9=&-LRZXPe0YNPK()@d_{ZW -zWjDgDfib|Yaw5Rd6tNztX?24T`}$+7*v1pvE-z5k6WrWa8wQp3@oKc8T^nPhYm1$l -zNAsh>%&O^OV_E$H?o7I>PR(8vg-v(ln%FLp;}f}3UzQr2u*GRpZlD&O^p{QhmXcvQ -zH^3P=E8IOFbH1_J-6a}aY6;rtw9HE~6S9*R<_arNXC4wZf*MTcVNr641()R(g9Ult -z?Xn_xBujWcyr?D};aMAslhkO-1NsKicgRq(K&^l}d|v2TkfGH!?Z-ByNSYk+hOjH4 -zeTW25#{I#DOb0?)=F-#rM`Uu29V#c3qG!)Qp;AYRj-R3=2xD9)C=NQ`#hN2i^Klnc -zhWT+777-Di)BdDg^RjIsiARaB7i*OiaN{nIAkWI7gVNw5)$AkKtMx2$nN0(8G+)&q -zts=S&)ZS)A4n4lbi^N)79RLwkiZ&Q?dCq`P^AeQ+1Vx8Zj6(A8SUko?!vQI!4Vk+H -zJ7<6eD3KN&fsbzw!(2^Z`WaIh*aOOxL_@wG4~Iva*ST{IXq`zxJ3yPP7gfOnEEUsC -z(1JxUeq3OL=8(hEp9m~E$xf8Bz65OMg4Klv7};S;U5Q7hZ0pefp+aJ -z6U*VSJ2X4Rvz0PXIKtX3JbBawh_AQx=3Xt^p^-$TV>|$&h4q^3oQ2i^iMk7tGL4bZ -zK--vJf*QgvLyXdOziR`EdyHW&v(Pp6JK0j!VN9w%?5*K8i{h{-K?&_xIu$3%e%CLvD1}N{!jNn!&7sXzVa}d4?~!D+ZVo^V -zpjb~U8*ws?P8G358f_t5<|d&WZ%Ajwhq;DZwms=j-L4xc5!z6<^c^`a)yGCkeMI9= -zk-tP}>6WCR1)31Isjb-e-y@!`f0cwAR7vyd63J*e_q5)|Dr+g!9;h3}>JD#If}32F -z_*r0klnmz-@Ew1}| -z9eQWhlvxa6Q@|9wR$A(Z$ztFEZkD(T`VD54yI82w+8^6b-?rQ;q@!`)XvJu>K~@z< -zj<1m{+a1i_X~^hk=%3Qx -zYN3i`NAL$bk`&kHN88@?VjD7;GRqvTN|6CFr46Ws``Ag>SNVlreJqCc>x%dh23A@v -zv`upEKqrnFmUD3zzK1NF9ZnS~ae8qo`v+sD)anP2%%+8fq04&2K=z3EP^XK3{KYNh -z<5Uo*L*#I%-Ddrxd)SZdRom@zt$<^of}0cZZ2&P=DO}d@8rt2_T1;E?mPP8m9$ubR -zZ-WDVOvG251T-@bep$yTFg$nwqD-2d5A^e2ILnY<$2-Y6Vwrrgfr_UADj}JF#oXL2 -zsh+GEo2Y3n4>@wUT?6$Ts6Y;v*3A@$)G7e!noq(}Y-vG$A*rA@t)ukKf~W7nq(_%x -zfCr$;Zd%cFgU!Ag@FVhatKKAddW}f%K_av(GKLS-dCX=#rYN5bUj}$7&}=X~jQz?9 -z%Tr%#q1_*VMHr1P`O$cziY2iq2Jlvy%_6R9V;WG#+A?AH=-s{@iy5L1K&_&kHOESM -z=$<@T=pH|_U9NWN1Nky~rm|~JLtMNx%3n*Lr0pqXp&J?D^!+VoGamq_n#nJJ>*Cmc -zdkjahn!skfvFTnLF5qKHFaEJB8|LFqiUL_4o4Pw=gv#HihUg(p=|D3(*u|#<&1CU& -z47WKVEl#UZ;Yo$AN;gIn6lc$OKjh!a>lD7qDeZr8M2CBsY^#@lWfK%Y)XC!z{y#G -z53zW^4eO*NQlTaF9i-Hhi$@iRMpmu0(fREgOC@e^P<*nM5n$XC8#^%%0BqSBKm=+W -zXoLIx>6SNiaG@VG0JR^XjMnkLe0q1FP-AyAOPb}EVFzLo{JxkSTV?oXY!oMGhCpV^ -zcO_x{bl^2&?ckd$Yz70LHVO7kTQ(T~7C0&z+C3SPV?_D31`XX-yA)7X)9&r)_=&f` -zbW@Z6R?ly9;Y!C5_0ih%Q9|b&>z13${_GEe0T-UOE9OgjaP`1uXFO}y!E(TR`y(g; -zyI4K%x~F&Yd^pe8>{Z+qK8oIq@FA6iaIu9-BnLCEK2$p};5cwdly{HesXNiJ=zM4e -zoP709@@ump+K{}|=AolVnUC%Pg=lsQYUIlvz=!u-hA$HjMY=e9Gup7HHzy5wY+S=G -zkXewI){0#DHfY8#+ -z@C|^SBc^(VDrE1aTT_S9S+?~E#=RMUT&&1kBil)y?J1j=3}DjyIVse~$4>kB&}Ly; -z8|d%MQBYLZ`(eMqSmf6&%ch1$-=ZcX*~#NKzc!VpbwkF9@L>wPuQI(bh$}4-rdbai -z|2v>_fd2jT$Ct5#AVkma7Z9(&av3#>ewPpsJxvo*|B!i@j(zdG&K}?%YsB_pGzO~~ -zem?0YScIu$BU>e}CPqcAn>paE -z+k*NJyvE-WlOG*yi!VAZ`5%>M`4fIAptoy8jS#6sX>XP^Qp8d#D~e3MH1kXauF -z(h(D+!E!pcD(77y=EEhqxPom>&<9PMCM@buAdx{{(Pm$~At^0ra1$CJAeluDd8fbu -z?nD}iyuM?Rs6Y7?Wq#iF&~R07gIfkq>X7~(A&ua_*CmK3?7hV -zY{z{-vf~g=640dNq+@-jR_Gy4v{jn%@FLB~JbC}2b|<(Ov%Lf*wvSqLFt48svc7)a -zfV0f-m}}@hk>>DffW~Ih9<>ruDeWv&v}G6~+7hF_pt*n7#lVXy$b*c482~&~>upn$ -za)~XuLp!?G(z}~8o7DUFL^r;YpTh)6vT?(6K~Y!=QD9E)2}O^|MCvuD@yDbgg-`jm -z_X%=;Mk*eip~6}=0R+nyr*H|1Md8TP*nkX{DJGcz)oNe -zC+m*jHUk6;jyXBa*Ul=YwgTe2km{hVDBDqC{+6shAP&&9n$Y`AL$A>X_kRQ83d^1?qwONGpFl`fK08Ip+yhxbkGslI1ic0I~mAUeNh4KWO6F(G9W?%F*~65z9olv?nXniLK-YKV1G6lOhUpEEGz(-VA#qef}t_#e6;d2B=!Z6o4>V%TEK)(W@?i} -zxLba5FR%D=aCk`r-3r=HgbAl!e;MuGXM%o!e|DRUJd!z!-Oj`USR8RxEG=hE2@B-jXpu}*8 -z{8t--^bfba(iR|#R{f+kR1qi^*3_&kXPcS+Qnozch!>BdXwzI1*e%|Gt32ACQVsT~ -zVy&j*+B!IZwb9#<`9(hMw?`PPSeZdGWbJ6Sp^sH{!X%7l8<8Yj_A;{x65ky!lJh1@ -zawmpB{;V1#oSG -zu5gDIkQatmAv&!revTj#l9}UR9c;=rnOXcL^2P7=(qVYKZMUsm1$&&9NyTCct*IJp -z+LmLVLrzADZt}|}er+H@+aKg@W$yBbxX&$vmVeKo -zMKT=j$(Z)cv>hU6%F-gNR|VpdHDJLT-bQREgy!30SCklIZlY}}$j^|WEQcFKH~O}X -zVM#@U0x|vLyNQN|L(hV(A@AU`Y1rKPAxl#js#$FXEkf_eDLmLIDuQFXuP-E5hW?D( -z?|R-R13l~~iJ_b|+ygzAYZGH6tU;XJSea~@_|64kj23kOlZvBvVjNYVks?JnORWY^ -zEvxZE%Z5=<l0bFJc=ZV=VP+%c0Ih|3)fn%SJnN -zo(5t_jKtktuwae_Vd+$DadgMESc2voc)6$KSDHwh>L9&1(Z)D9)@R%>ysp?Ad`xpn -zV$e-6aaBm>y4OvMK7OtwA5A}aIB?CeNv -z1d@U5jHr0sT(x8E*b#nUOuQtE==Gu|3Zo3^vVi1c6BL+7j{ne$N_87;k@wv=OX4j< -zN^c1W(uW2t2Zr}gm|x+p>X<{9KP~Sy#|OJdlUHiSH~&=!i}lu}iL)Ft=_YM8i(d)x -zUBqaG=2e3nV8#(d+AbxY$5!AZa#}+v%*dvC0z!?Cq=@g8@i9N3Jt4aj5?^u)dPO+)jDBd2aMhtH -zZ|;BgBMJmT! -zA%29R4X_mw=22BU!Y0sseRDq@~oUE8>Ah^X(QhH -zkgK3Ftbv}-9E>Uw+VMaF3J5 -zVp5x|mbBEFWTd2inafj>?uglj^(wyX~$Sf@H`fXeUpobr@m -z@r+a1xf_*4T6|6vaGU~L0pKsFGBhojPc=8^jg%C!a<>N~=*eq|ZYc|_xfU_D!ZxUv -z9{r6hVovTj%f4$uD+x(`o+fm58AO#4?InNkUTB(Ij`{BG(u_(qgpzpN`^Qf=2qTjk -zI^Z7Fa1Z9l4-NE^I?2F7Zn_jBiZXaBrOxIxD!nPxp)l!xxuHps#IG*evy#$qRLJYi3oS8jh9E9%D2<5B(`zE@-textG3G+i97a3Up!r5u -zmdpB4eDK*I6ifU7PC&80%%8t)eZu(I82d_YS%OUq8;C5P*_=jr+8e=flCUilYta{i -zf&q>WU%UAEiqg?a~#b)+nLjC`uO|~ -zNqIvZ;@h(5-e@^B$7~>PaKEwy{`AiSjfdL^AXfOJn_NxR%>>rdUVZwEX9hJf+gb(^*3)RE64;G^F^t}8-d~F6CrWdoO){hzSjhV4d{^;)GTr`t@P2<`5# -z0P|mA|LTD*vC@;JgbX|vHiv+oawZ35sV)xj$9GP2L8wk-=W)sb{0?c6jVcqg+DPc4 -zZ1MjON>4aPc7uPagj?TWoO~X0m*6kF6Zk$HozYE^6x0(K(OTIfWK~j6$kBM%60~P! -zQ+)h_mbTLD1-X=ttY~p4L@}aLk(bhl@_OfR;)RW)Tbr?Oyd|Eg!=wmSeEtoZt~S>nTdAFL{b+7v&OUfVX1#+RRZ -zxTo|~kg{2S0}-BM#Z}6Uk_r4JP@vLR0b{q)bRYRw8|NoX&3tBs(~!|{q@!K(u{APe>$aqn -z1~-P$Zpq0@t&`*JuhUd^;i_?z>~ucH+b%o$dGMi6MmN1kW&6$DMt3tj$BLBq+^SH< -z!7TuCT2g}`(q0TgtLr=Z}=qD -zrK%Z(bq)k(w~7sS(fMI8qEI+716Q4Mke -zm{o*c9zs#gajW7?D_zQZ@P;_CxLV{MM-@Xy@ZsbJf57I~0KJSYTWlG$N#uCZpVx+# -z3-H8Vuh@i3cp*EQZ}d^7vpw_(1xRbd0Xp#094f+4=g>6d!n}lT5atnV)k3Q>pdfiG -zcYj*en_-AGG1?~dR4XHc%~CoeMsnF`X>h#Hp^u*y)R|HJH+M|Qd8v9QvE_2FChCS4 -zz@N#7G@Qa5o87y-Z7)W^zei-eK-*hullue>&*a)aw)b&@Xaw+%ZCS2iAaP9Y_|_p+ -z*2NR(w4KHZ+?@kEf>D|RnOh~{Z)AW-cv&$bz=_ezfuy2Isg3RLLl9%Z`tk(CRuz=6 -zhLOG@D9OwnX)A%ic%kJPxs>EBprR$Hm-c|Px+jmSZK0Ch$odJE_rq@)54BGKC9@Ot3E9-lCe&Atr?4q1~IYqMSW^ -zQIQ%P%vMS)&K_|{fJ6>Z2bHdNgn^+YrogcByy-J$lKTp##xeq(G+^&%DXSXgxICC)Byf{ -zLN))rjP7fw%3AICI`OD`1QtQ2rS?hKd+RX!1pNhF1hEO7UV1M=J_ymj(mOYW%x_If -zEHH3@b!QW(d=OVyF4rdB3Xexu(c7Px22Pd@ZqbZ=^6(ZIqKQ&P!j+n4=pm|>>3q1H -z0tTRw%DOP$Xsd8MK%0YeHHJKlFeT9oh96*%wo?{b4fub;Zk0d`sqp^mU9~j>GRc>o -z&RmW4U^G?$xauTw@wgQ`rCt0tlis{(DVu)kOVqa$?W1eTD)KA5mKasYb%TgVrbD@& -z$!t6l5m<6^l35}36~X65eeBEGLP`y4Wwb9v|%_qVv(L+6}(em8D_#w`vsh -z*)%i9_UD-YkFjO^bF5we9HU44V~k63Uw?P_bIkq6^`@^s$51_+H!J3#H`zmGPmTij -zkyMfvlsr(Zkz9ZH7^LH^kmC&?4Oj!@c7TwRk5qIO6&<1@UqE5FLNpr&+VsseMr8jd -zdklaNVPf0dn%$1H&A3|ntv1-9W4>Lm#cA^}?o>H8rKb58U^XC9pI+}(t_S%9Zq^hQ -zyTE<#q|Q0WRLb`)o;Ygz&#Z7AaTmAU) -zTVF5joyYXB(ew;f+sUZK+fUmP^zN;b87{ijS*o5WmKiVI!FbNvF~0^49P!_zC&_02 -z$^%VnFYM#Hf;+1;y&w53P2NuDZ=F~kMF&M$et!P-OShLE|5V=T*cHDxkxy)9gx*uI -zNFpCAG*mGFinlo*8%s@bjRs|&hSf@sqRujZcD<+H^QXO=Ur;E)cd@v1vDf7p0XkH< -z;`Yi*movr#MI9DUj8b}ZjR23|Bl%-Sv{`j3PN%0XUs@VsOsXul{k))`oF>Vx{7@J_ -z4zyTzZq-iuZoa=;dKFeeZ^3A3J4_J|m9U#BT|1XG`xT{(ZSBQVXY}D~1X)3{VdGLFVIa|C)8YmQ$e{ywpUsB6QGC>(6bV_A(6=F~Z6hxC=q6!qZ -z`0zl)G7dYL1*`jLq>+lr*Ofn0{^o`xE<5C}rSQcTqt=Pbyi}>d60a;SVYf0pat}Li -zk)*gAyREc>!zzUMx~a?qucS1)aLq -zeDi#(n}D^DyHJHEs_dawzbe&PSfZZ>AG-Bue%1{Nn)Gzq3_}NSVfMZl4XvqyO6zUx%Dr(q-C`#wk -zjd7WSw(*nK1e(e}C4{_+#lLe?iQh9xEZy&Cc|4zI>cs(z+X!IQu&03XFf)&boxTCY -z*?=48lR7)hyWB-bZ~JlLhN=h*U^ -zzjt7iMnHY#1bHGBWEyKSrBMX}l$-5=l3DE~y1D7bB-QEFrB=ueTsxDwa;nslXIH1P -z0cU@0t^HNaR@SF^Qg9Cx2zc&UhRy-mID*k0j9!J$TDh+sfKCN?HfLiE*tCd88%5p~ -zHBx^>P3;oB0@gyP!8m)dk)`&!0Mb{K{GzhQz@8Hu*oIt9yb`A=Apez(Oc=ASpyGwvC^m$laY@=3<_9AaC -z+eaV*qTN40>74XX3X1BPND2lCw^4Syj5xA<^!|~3rd6S4hpn-I?_GR{|3S40+2vwH{LVjkKXRkg`*+DD -z0Ee0T{D78Iz6APYW3Go6{*_Dtk?p!M_KI*dp)Oyb2TSjlDHyN?mI8Mt6EQHlNx?Os -z6lBGziGARe)ZqM+?va)?U@;B@qPmw}Gdz(QZjroU&`}9X;p;sZk;H4^;0xd}qw*I( -z_mA4p*13;9$8y|w19yuY=q`k$F!nngIJzELSu)wmALSoVFhUJEbaDy0=PI6^n+q`Q -z9yu;NT2YXR+bnUK>jJ+TtE+hP{K^4cbAg-QkvH2Ix8wquiHhCcZJXBCS4Vw_uTe)LF;|xE5Hy5q13W-50J|e1tVRs8%pMZ -z-r1M*)}smrZ>eD7k9zARTKQ<5ezl!AhbuvG_y)KCr0G^kCHp#{oSQXjK}jiy-OhDiCRISCk+BhkUI+ovQ-Y-_f1oo -zU=F^q`W^s}o0sdy`SABxlAm&5JBufjgv`-eyE3g*B8VGkvm^ay70W`cb1_tmib!s& -zCZhqdP4n@|$o36MoJ`gNvXu*cN@Kr|b8fmnG|PIFNaCo!3CN{QwV>p -zX)8@(p?{XQyjmNQHHC2bA~$6ed5L@U$PaP_#LS;-C5JR{*?rhy<6q-Bf%$MQ)fjQO -zg61rOprTVik3Sv?p>r<2jF~Sav!Tj4k0p7$-ks4}s7C+(JvV1nsFYb>h!l^|aIdwo -zna29yI13mD6Sk&6m*%!(+JcO>0E3R^fz4-WSCN!yc&h%hw0az+YPINz|7?z2$AX+d -z>5p)wXR?uf>OoKU&0a0JUM+`zMz{5->0|bjI^&bD5(HY~U14p^!X*#?Us-{S1Kuir -zmWsHT!7WiRs%2XCEL>M4MyW0$bl9k709-(=DFn33Ar9-M>P^ljv5Lyi$~~RYQQ{OX -zNePC0M=N+fxp+{YBQD1XZwd0j00T(jpa#{%7TAlCKwPa(9U2}EoEAdqX?F&XPc07M -zFwMDX!NY1&+mPB)eg4et`R{VP8S>v!{3U;*mdO4N#dqhJ|K9vJMb%Gl9IPvvA~x5G -z@h0sl+93lo(t2xT2)%HbRKOPDGzN*}B?MjH8wBlpi2brRiw6 -zc>J_JczWz$(p?@m|b3fFatDK>nP^51jEl%Wrdp4)h>$o@LoFshjd -z^{O5tN(8;NpCTk(W>@IAa;IChnKWI*ahVkG_51M0N8uUgmqE?PrQiWGUJ!P36l0@lg2uSJdG6$4y`)~V72Dg8?xA*Ju%P+Cv -zneHM}%wNCs*T>5%;?8{C1#{1nby;gQ9I -zzcJG!S#e}&qG(Y+p$3?_90tu@v0CC(!CKPgHst7F^KV6LvaW#&a0x@YX+Gn@_3l6f -zGFWy7Bq$*>WfJMs9U%f0>JkG$RBg75Q4_n~hc%aw(eCF2mB608I+= -zix!F*?I>3QKqwh+$Fe4@lXm2ibO_K>eUKg&ccFjCOh|2tb6EVUCD!uOZrOS=x$TUv -zCIt<&@`C0zC0T_QT_wF7j3^x};#cltG`Lw`Lb7m+E@z$5-2$i7 -zVDm?G><3F$J0H*6O3;>F73%`H7RETr;AonHf%%JxVZnC^{U^j_|5~2ZN -z(p~s^T@ufky+%q3?i`c=PC05^*e;!gfVbD9}Qufa&|Rw%}z{*KAV -z3I`AwpMpg}3R#L8WqN**?0Q53HL)$*1U89>l3Vg_GfC-O%1UM|;3}TM(zBw!E4TRu -z+YD<@8Z_hsMWLOh%*4fF+*PBr?Wx^zDXiZ5z2z0o2ZLX5(qMfbcW$UjzOg{e;k!3_ -zp*|BNAh@-p*fuGu4)y;PyaHyxkQrpFed01^E^I~Eh}@seYMCKep|PE{zTgGzcUp2r -zbVm!|=A4;;b+3ugy|)IzxvZzP&sYYdV)07!B|RM4xQz|i_#Cg^`t?W&b|!9`yY8?m -zR;KsTn}*a2+_GUPfPlr$QH0!LiaLzk+eN191vO!(ucKK@4#=^GZ%XDaqcLNB<1Zu% -zQR!}15!@={KjI_l0@M~f83u5>>;tZJAc?z=UVwB^D12V~8gL>xFkM(9cQ2VR21xAA -z&5OY5W|gYvj);hQ#$J^X<_scV{`FM)HIgGO?CfavoqU0$wZyTOz}BDq>M4AfY*L$t -z^h5(bm}gcMm4n|p{j6=j!o52}*%I2*))TwrPH!Tp?k1CaJ)1+#lsQKSiZZWmJt}eD -zWMMD#KDM4agyc95zHy}I_WQR_6jLEMrP9GYl*CqS^$)}?HY;DI^`!BV#F@?pZC$V8 -ze-!a!E;f;3Y>n#kNLVL{SQnMJd9Wx;Q4*`te3W55E-s2*1Xkp!=$oYm8G`=x>r#!I -ze?^m7#l<=j6o*vY>mlxoUi?~|!SuVlHgsTv%slfk@;tO{8^KDZF>=rV)~6;E8}i2T -zoi*FK(1K??X&pn3k1Tck!^5H?Yv9{(P~&#xXvoC(io{qjNvsk1DIo8aRT11&hs6p3 -zF9=t5Ll2U{t^ExxpQKQl$W*GpCH8dHoWgVWf&(E%0rSuYLW?C(qfp@(A&g)kl~-^8 -zKUnifO0( -zkn;We_wTF75d9OY0xukRUZHPF8A;uU*s$Q`2M{v&iV1{`}3Cc@sD4>^d;bHKmPgt-5i@ATi~z% -zyvenSOZ@x`H=&(+)xJFpsPSigD^Dwb_Sg3h5rkp@;n)63Q})-d@5O@oYm&~mzu*7K -zgMaTmxO=0;UH|$08^RQH_I#WFkdzO1%?14Clk>5AzZLu8m%?Sc8vF*Ch1Au)Tzl#0 -z`Wg4epqWTfLG)xA$RR@VbEm>3MBf(KnGZI}?Jfq=bbRHJyGsShLg~4nbsc@ux~fvG -z*E+tS=|E2C+5vgqb1o}m1=%R*bsFOyFnhOL4dlwlo4T&pog`+v!#GN$%r#X6lGkvc -z?+0Z}2-MSFZw>(q;G3S=hyy5 -zdpVi=ogO{e0Pbi)xh-()-iyo9aV!Ha82I-`dBV2V_SY7?|BA`qMfE&LXk2+ZLTPkH -zsRFnjq8NCRA-*LR4W=V3KkdmKw@?2Ebxqa#uZ>@*U{(C)DUdFR%2lUEAT2>zLB)~S -zww_+M_yQPprFlOZS4=3}nM#(uX{6+3T*fw~maOWZU;68{EJKAFssCdaR<-IzalP~> -zYpw7#NiD=>+d*q-O4yW8jHQ~~ch_2)3x%~nO$mvFkV|dJO>WHFp#j=v<%0%Lk&{+Z -zoLp4q#yeyKgL!UgPalH(`9`d$)Waw5jc -zTg7o&OWXslAv^TIayZVVVGjLVz6=NB?pKQm@W{5D&C8RlEC-nzkcpPH@14fUW6fn6 -z)*gh7RNNDgb>_?UHkwbDyD}Uzzq0d5Hsol$M|*jzJ8RJtBdgts>bLT$)k-FoOmVgT -zP+QDC`bG9k-p;j0vkJ*ED-lQQC5z#F+X8P_{s1!PgZJCI|8p5Az5@pPF?Cwnkwjz4SydM!S1wwr2$Y9u2ZVCN4zj^XMwBGu{_a{`AtUhsXaC+ZaQ=iBY)ukV+8-)Nx!SO3mdP;&q}?#9(Q#XR%q+qCIl -z6ROiy3&_ZSnA->;zpiP|z!_3{?@K*QMht*1caxSr!&m_sr?wzIk}lrE{kP -zU)oqU)`)$^@|kT+uf)sZasgQZ;V9qEGgSH24$okA;umNVRPRe%iSVz{g+ILsyy8Pc>)N)aw2B=Qx7fm~hSP8X5b)`}LlbeOT=(h$Sv6^^nF -z@6f~YRDpc(HKm!_@VYwMPp!%;f9!KDA5BUFw?!es#}hxHrQUjUaT{rDN8MnhiMMvT -zOD)EfyW>zqbeRwgTs&wVDQ{GcZN_kv=T9@C#XXR4p;vjVhprRm*JUO(JLF5)HcDSA -zrvZltxF(95SetIQ^^GG*c4dqi3Hn`?G6tm~R|!(qW=9HxvD0t>Cei@Puge4M*J~VW -zs*Iw;#bTjyxZbw%=;)9?%<$1Ixz$^Ef<9wb@|X5l&+_`u+xOp>D?5Nl44f`74CWCM;Da5} -zo+!)_#G>P&i9NK)Zn2oI4SBj5&wB-S0$MkUE71q2qRXDV -zjg&VQ$M)~bciQVwxBKhB`m?l%J5q!GRhM?aEFppOS -zj*+mJ%8EN=M@QP<;)z_v|LVG224fsqbm}MJ`5Z5Xm=0Zjg-6P_Np5rT(A$q+a^T%5)QV7c0@M`KqXyGuK;pF;UHx~0>Qow4JX(=`87 -z1PM@aKAKWJiJ{77lv|2>#t7beEB@zX(>1iuLv^*jfBahWIdphiC#p=7 -zg&~JzK#}sbSIk3&eCk0G<}O(c9eP!_p=vAx%g{6RAHI0tkT_ErVdke(QZGR`3Tt|G -zZczrCFlOtC{w{t!OvZs5ro~-CJ~E)(*z$LwuxP<_TJRQTfdOp46eULvKg)cvj{W=N -z`{kT}fBkV>-hqw&^>WtN>t()Puk-cCSN?t-_{RpAn#?u{KhVGB3kv@-0-)@vaBpD( -zd|pDBpAFK&X_26czyxEOb{@3gP8#t_fWZd}nV60NRoJ_RDSYCFZ+f+kD;_>80r!P>Ww){!!5gSgM~2o;Qg<1a)yuZ -z5oKQkA850pyK}wt7|>%hWQ>N3 -z!#AKdpKScbj>^x*LSlk+-j(lm*pa8Oo86~|-t3Rx<*V3}Qe?;}J=AZ1wfa?k{jmXm -zThx${t%>vvuK95s-wFX+OX=^Nbam;nazdwHgd*Xc!dmV!JT0rt@PHrwooaf -z|04gR_>J~97GCGrRXIlmQfN+^mn;Tc1&oM^Xa^lbAJQZ2ph~>^tsy_lDKO4RE_7y^ -zq`SHmD{0)`JFT>*KgV6Fg2#Q$3k5*Le#KVPuN+@w(ErRJ?(g4!7gwBqWdnS2sIN3x -z!bkZ@C-(`|(?mZEYb#d&RTyC({jtRD1J!+hexN;an_h*EGSjnL2hZOMbArWS*FJmp -zDRVK=WCG`E^mmlqmOrE)m_aom%-kC7t!2WB_dmI>%H;shd801!RU(y#FR+)huP?pXMeHrS2+ -zI@r^+i3^;DXc5s&cS;(B>gclU3>-7$3cG2zgaoFch{8`(`8*sDMJg5Mlb(%jcdfUPA&JM?04<;p$}2Sp^@j0fh{K=P -zv2~W*t_^T{6e-U&A%oB;np@k%Z_h~HF@-6l88EFeAnW! -z;3L@5*~^>O54(q>3G;Mv6V#sr{LYW9<{sV4TU5$iwo_o4=~VM(ajA8l8{aoD9HfEAJfSqOxSNyIKmo3BsnJv -zK(Hk|jX0W+d5XmVHhU>M=7=0sQV%>rmd~+Suz5!2IwxUfPylEN-VB;GJ?RdvH1@p8Vz!(!XsR%39rgW}pRL)>9= -z9l{*a(4Qy0p2Ir=#j?jDxg7lk^fWL*@aqJ{#gCn`d@MzUA`ie@M~zk9yjqHD>rP)@ -zj$JT*-!(YPL%E!orp*=5g5NC(?s1ui;J -z*pmyJ?!{z77W;pX0CL;?Wn9X)%a^tmwlyuwkt~=J1VBbI%N(jnq!}pYY}Z02_*Pzq -z4lfsplS}1mHuM-TDQX?zYx41S)_qJZ{>#ylnUg{z%h8oV_2pO+?$Ponp6Fk)B>#1V -znelHV7p9nCl-Saoh+!EQKu}Fe6W@u0*?!H8oHF$ -zAEoKF{xJJs{j0p>U$5W#t57lPKj~epZn`K`I@YqP($l5Um*|^hMT!?91MIiy@p4h& -za$Md-nPDU^>u14FQvZ4{pRpF=6ig(##HQH#uNn})sZ)?USJI%GPyzzy(wrekH%5j@s&7+~3hvWjbp`e!6%{iIbF(iS?ev`+5%s`n*2N -z<;bD?BF81i#p|Pi;=sA;_s3WIyIlJ?re~D5gM*wN2DXW9u+2>eku92ymY!0)1NxH@6{NwEH%kse+G>M^fJz -z3VdUxP9%~FOn|Y#D@LznakcR>rxTeg&tB*`xVOk@nyumL_dCcZ_J2n -zTNy}=fWb8m@7KehQ?_chODWxUSy9_sX7C_8 -zUz}nF3EkKY2?zM(6%dhQ>aXad}+N# -ztu6z0MrcEQtIhYZk;UhM^Q(A)e5@g7+MT1j<;HjaI&a1D`X2LieB -zxR2&kFb!Zmlqb+Xm04gmCgqqNaNbj^si?s{BRi&n%U6qlSpguz2uELb*NaQT%faZO -zxe^qJ0X0L$T)+RiIhZ%{*n3`CDTNClN+6x4{k->B443bnP*_DgV+SF4>P`}tEfYn2 -z^wktkI2`bj(L1ZL^8J#IrK9}i*$Oh!`sChU?T?TVv1;vaQo_+_`W!F1;-}ZLfpc%`5#RnzgAWgDYc(ydj>oI)kUtg*5 -zmi|UilY<$Dk8=@t*7BOROXas@!i6t$@3v3x$mB)OH13_6B-8N2KPSlv-k&+p;6U8)uC -z^WREkMONUjAviq0I8t|TES}f677Dn^tI+bHs$Sl$~|5#aF6$&-}A3%Dx9B` -z^}o3H_dRvq-}kTbZ&fMxW2`UXSjNLB9E$s+{QFpnQy)Atmo`5ZWWY%nwtS4&s9)oo -z;=yCHG{nPKMF2*>*G|lJuDb$j^wRxR4#-nKKr4VSOBt<2!P@p)J(LIFZPu&f4qPln -zU`&fmk1tj02BVOZqc-w6mS=^HTveut(Ce>XS^szLF+g|9Vh!V-DrM2(&mk-8B8j&pd@+!;@K)-oIR_1lA#NFe;8zaNN -zpu4a;;IBW0{*1kc|9QL6K)EKg41`7c*mXxn*P#u8x0@`wB;CN75`|Ej2LcI+USWWO -z2e&SHqL~6y`h2H~19Rn_`Y+V%WcJkp?xv$xCsb7YB*iDB6#qS(g2P{5W4*?+A>aM= -z6+UAexD|zNdEIj=h^ur+yJ066Q3zTJu}vxE{Ny}Y2S0i7qyBDp7WO64oY5Yyjx*hX -zqW#)YBuyaMZ()VI0;cmR^!!b}9FsOJTGOT|5Db$TlrRw$tJ&E0w6V`kd0RjfG&l7M -z5z4!g6mw3sFm$0Lf0-@7qv8HaC7O}<@;-FS;>oTxjv*d1I));mDdCsQ``}J144I`> -z6d7+|9Wpz80^??`qXIx)UN&<@=?V;NJZ)qQZi%O^EhvUEg=K0uBh_wj^Qsf*QQ4E@ -zLt}3Lt=tx1SlO{sE;Lg$H;and4au;jh9`FNn$6;>G!NDJNM?5rG0EX;2rBxK^&>U&0=aCG)E*UuR -zk+0|*ex;D}E3*H8O3gh0LmI0P+!iDh8Zc&G7;*FsVO!AWFelH6Gi3>oux;IF4b?bj -zjBM^U%1DEez){Je81aFeuqmOB$q;wJ<&)&c02EM)Q#-Ht#UYFXVBEE{oWDAYAWO73 -zEQy)kXU~XP4T_P+A?**$06_L3v+@u~dQpt!SH|Pbw^EbOg8+sv2N6PEVOZ@gH-GTa;^(+%cRNp@`v+KWbi>IxF|&9fr!Ob2suGyyzYZOZI@!ISZA`mcNNQM2F8xL -z8sH?D!}t&;EkM?m@9Tgl=Ff`D)0IgET{r_#K?U9V$4=oncGH4i?big|SRG&gwXZgg -zMvmEp6_3@ -zFQv-n$04l4gBe2qe2sXAzP!N1Jl6x{etCDSXx8~fozOCh7eUXM`jAa8D!~U9Psk6@ -z>|VezNuOb3=W8^~_f?IT+iGch@^3ETq@s=C8FkQY}k-p3j -zsR{U&+y}-SdVPL+Wwha645WsHG2;X;c__}WLx@>j6haH!;q^t?w@^4MkixFoh=V+T -z=m(BwVCpXC(xR$4HSbw^yxc8qF#5uDg!QWK;IeHmS`pMYTh2MjM3WTzQ(9EVu04yo -z{LWXgLANv>!;Ac@S@EH8=n{Ep9m|2s4Yp+CmP@J|-PXkiZ+3`kmHi$8#{8%>7dshU -zvF@*75;9i%gBM@3WMXyR5+~+axQbtyivL+7y>7uyRVOB?sZcNGIN3mdpd~s-&(<3lCu6 -zaLNmVwFeKU`?_vdX$Ao1cKNvEKQ~^Tt1I<;Gr=P%4c~N^fBMVmqhhQ=Ng0WTmraZn -z0HP8mA}AlD`47@)-lS_#MODh~Kv%w+MzmJ+x_`_&NV3+9AC7a)NWwe -zrsw&BV~`dbV@k$uj@i%;ivDZ^t9$(Es9^%c1bCgk~N-bU- -z$&*>;@uFxPc(lfgP8{8Ob-d8$HeMrwpIFKd_ADwWtI~|CXflc>F900130gFo{nr67 -zriznd!vL4WrLYP86Y9iezyS~i&5*zqnfpzyzHnsDH2&=nOnQ7@f$mF&y9WaFhW`>XGZP1pxbJ8lE(j8-)FDDdI$C8OT -zDv8#8Af0fahp1gqDu0HVGaBi1~P;t9oojPkN1Mkb(Vntqtz;>$7iK5 -z`fH_Ww9QGVa_Hl%RIzThU)p*NYCgs`=rzgr)^9ximC)4?Cb^?wQ_7Q3DLWsJQ3+*X -zL)oQfixz6e=J9D)bX#sQdDmQ8Q0nW)tYPiBs(JO<=dMpas -z`>6JZKJ#MJ(T_Hj`u#86?hkj@N7zP7uxX_3QE5Zt!(ItJw@$$NueY1Ez~li=GMQP! -zsN8C~k!}5hEuAaOxj(`ZG!HtkmMp1V?~O@IL!PUJOkTH_kfLffrm}h( -z@|;S7%)KZ(rG5R#*>9A?su&YC2+)rijl?=EvtyhRx4jXmLT$crCc6$5I~$QrLoU`{9s`i4X$!g!sOG2o$HB9DbR8(YC?ldb&zgRZmmO7cSnQf*sk -z`O+ob>IgRe58aGwl!fp3WijKqQ|{-j%IE+1Zo@sjW|X&V%r*gNvCnAv@Gzo*JAz-* -zead=S+&D3BaH6InjbRM(nIGoD$*jSgTmE=ixusS)*^S@bG5^_*zrO1e)W|?FN3JV= -zNj`L+yBpquYOydYO33M%qVjEPJKLYYiC)5&mVs^ai3ddjiF{gFvGAUl;fUU3!TNx; -zj2uqffD=n5bmM!iKw^F>`{{HG(^O&*xN+$f064;`#tP&W%wV=Po2;p_#nR7^_B@r1 -z6;kbf$=Z%S=ivoyVp$EH|q^jI$t>|ESLwEKe<|p5%bc(59 -z97Ig*4`X5ByMKTSP}itu_A=#HH?m?mI@Zd~pV0~#1YnCHp$dLw_X!tv)){Ogr#5Wj -zUzm$)hkdw>RzXE?|KDSCI{)m$<`fM1g=;)@V!s8+*&8z`$u1I=#t64_$eB|pVF!U0 -zSD?kE4)eb(w~%S;fZ>*!hVSIai$yMnC};(xfucBYMZ*KQ1&klYYw~EK()jSJO^Yio -z0AR&q1{H#!Z%;ywBlHaKc)^t+DN7GAzD@2MS^~+Y)Y9FB?Q>hc-{4j1S9i{ -z>`P9G(WD92heG$rW>gxduCufw$9u`KPiawJ06$mbYNCC{1{<64w0d~CSo>Eb(IlH_ -z`eLKi=pvW?q`i&2`GmYa&AApZMta}4DTdq`W2#?S5Xm@Hy=@IHR(Dxx^nYjP2Km6ELzba%nw&&m<4J7CW={3@W)fCvc}`fIHUq_ -z4rpcj@#qc+P=KW#EY!J4} -z7q~&XP5PQzUYLH%9qBu=a%h1wrR7>$J9CV)b{41x644CmTVrzQ!R|*_wWHkua<@^L$?#?z;60PsNroVerDQh0S?2#DY0RcrDnjUB&z-qM*t-eO -zAj_5XL~FdRVGAXr{Hp{U$ViLgjX}|n-PEeBqNH+AOUD|Gbe%orbPQtcbl?CpuV#U}4o8VUSjCtA+DM!B-%Bk>TB2->6K(~y|tsE?fu)|cN>-4d6k{^_}5&U{% -zPeZiF=>Puo#}^JjR-eAM1k$U5Uxt9GlGB3?S6}DNgY`_28t9g8jcUq;&b&E61g9yu -zjkGmDA4}h@j;1*$tt_Xta)WmBhr!?Bo!w0O@oVII`%DAI75FG95_VBlt+y;tT4sMi -z98t9VjO~_11ari57;?^axAX=E)akP_a3eholEbJ;L;=@fYaQH)NV%CWfU1<(8Ro^{ -zs&foJ8^|_IjiPFk>W0b~twle5?sf;F6Hsl=zUM@eGhF7+aC`#TBwG$!y@o2N5!FN( -zn`Gr6cB>MC?DAc8GAdM9n~^fMD&@5^2b*5!N3_j=E(uo>p^y!QGCcJvF5ITkpsD&=Atk_jlnpIoy%{aKOXYeCk@i+X+(zB70{Ev(g=6HkJH -zCdcp!p*0b^t)(~I@iy@Bk^DFM{|PwZIkt=*mpc~$DQGY4i#jJjLHG`(Jz8xWJxAYK -z6pnT-{4x>&b3ECJzz#$&-FgoIXA!Eb{kXy4fNy@H)elQ^(dC0X2{Q-PWB@-%=H2rS -zR%vOdz=Q`Qf@K!h8bMI*j({|x8H$O|jD>%0^xa8Axf|`81^9}i>sdY52r{FPb>1hV -zF8lZeGE}H&8;t0Zw?D1ObGk9p?88lE1ZU86F`o#oLB~NAwW>7dTsHy -zu&vI^+S$}%hAMPR=0!$f`JS@?iRWp~rFCUv5ZM45LN$E+`#1N^jL8^htBquUmy2>l-9W?c9=P)K+Q7MN^zmRf -zR(SkbX{A|leLYZXaU;F8$cFnYyTOa1&|AW_qwmp%IBAJ~It8k%4tg64g4G;6VcTE# -zFKD`g+ioq#vh_tW-5beY+B9k^qV3CVYy6~BCXd_%eL)a#h9&u -z`GlPQ2Cx!tlBy+uj`)hI9x)Ms-i!A(x%3d^UZOkI5;ma0=??#qqK9!eodfTEjhb+Q -z1hq@hVm9hwx)jnVRx=#N|3OLA|Mh?B#@Ec!>u>OxH~ivTM~5eA#pbAJ2RbiDYdBpa -zLht>re`s^k7O1*!oKD?}s$22}HNVD11zhY5uv-J+I@zbG3?1;(lS-!@P5$mF>kpC% -z73L%?%Auik>qZObGKdIVzlY&|9UfMaKKo^8-tV|exk=KVqzfh0*MS7R77kr?1XHB+ -z$A|I|>8&^Fjl-wdhH#sKT7sA^vje#8>|p@zXX@hvY8q{}C1{H;mTecF9Ck?x>FqNb -zXEE(;w3*EsKOCL#x&nvM3tjs>xH?H`w#c>{h|!;9^2jCGH=9wJMjzggk>=3Kq0+3K -z)7L+Krq@WXj5}Y@8*-z~;H%YiFtFf`Pp4P+KpG-vtv*f-lpVAQ#+FvcJ{phV=v@$*;7ue#TWJKS@K)YoNf|C^FmzbBZzV)yrEfmI$y3qFYfYYZN -zumL}QzAdBilibE*Gix%;1NpW?p1A>-T5{bmPWE!YeO6i!ym6iV+voBvR5eq3&*a~V -z3|)c7B=3bMsakS^4~%2308k(Sgg8F;gVy?LdCM>*5X*RZ({%6jzN|u>d=SoULe8T- -z7;WjMP(;h(7is-2COIDrlN*&<3(=fSE3t(2d-t>!iYzA5i93p;W#K%@VIfP>J)?ae -zDU1ykE#GA8_b=JzgIkW8gW3JTWw_{s+8+oDbzXk(ZRx-DnbR9v2D2QJIY$z$65EGw -z1>PJ20Rt}S{&g9dAfj%Q|N0k+Siu@K)gu7#*=qt%4zAG0FNc5WgHKu!BwlImnZBku -zXh*di({c~DewvXnkVxKS5zw5X7GMMYUWd-unO{PSe8B~CR>Dyde9#R)qDRajit_&Z -z<1c)T%wujphEK_tsd=w?9&;sUVqRWx?%yAbJjhr%G -zoAh0db)jJU;DR3h1#($<@!?)@ytoE%3oNDgJDDPQu~^S!HS)(Bpn*K!R_`hm?m`sCk(^f}z*C|Xo-uA_4AZ6On0Wvgj{5XPTiJ7>Yo0T`96tq!0RGI}F`80|Qo@1oz=I1U -z#J~)eqOEtD&knc4^piZ1-0Zfh2KOUkiXymiKFH8Wo8iCYM$2u+Q2-5D%?N9)fYI=m -z+{&pEm?9dfu4i%vXXc_;$C9kx>M+2H1!gj*o!H{7)h*S+NzI*4ZydpH6?OG(AY*!P -z2~`66i3BkB6VaX|L-vM=CNBjNo&=`^^DG)BTNR9GC`2M#?y$He1jzlT>KHKpvGN>P -zc5&wz9ns!E(%B(XN|PDiIxY96$%Mr@kWVDSE0Sl?(O2WKs(_=VJ*6~8xBU3=Hjm_V -z{y=65H4yyrD^fpRu}Q5_mNp~FXfVqQnAT%sqtv6K-qL#0$#yySp9tJmZCGD#?hptA -zX)$e&-P2nB@z*cuaU4B&2)*s_{q~O5%N&Nmhl-03>4(=C5%Jx1>XtQ3Y_Gognr3_2 -z4plAv@QqOpvI3sibx;lgM>>X-n=rZH)03qyX%o%4(>p%Yq~%o!y+<#U&Z5_%YRL_{ -zndKp;t%y`X2huUVL+W{n%OSxfBxc~`tJmDPM^_T1Gere76d)8)m1D1nmj1Fw$&Q*) -z1WQ|l9MX@pz7|h&z#J4nEvAkfjbwK!vjW=>~EQuoDLbRa`~nLL0UbHQo76 -zED5)@hzvfzJsXC?AlZf^pipoY=SjWQB{km~4hz}CNB${$EtxH$*t$maf~{c7~*&mwC1^*fzVChl?E7^l(K`*(7z{H(bn -z6fgXR3PqCvH1M}n0;JE=RmXI_j|K>I!I~W5#J4n)CsfMm;5iOT6cVfORykPdsAYgx -zfkrL?P-MZKJH*$;Ak<0V(oUDRWQ~}<9x!kLStmn|TZJ|01Y3T$h{#L=JdB_ESbn4} -z;ZO&~F(LoS7pHeDc8O&xzWr^}iJgQ|nWk~>j_~$%KEF9y^6=ZqDf9*wPCF)1qr6SK -zgmw^0IjXdO!_;Xwnmj`Qi;&#~WNyGWIo!xZF5ca^^l0mzH^6*gm5RgkK(mn8#X@to -zr|J|kc0HRVqH4x3nX`czJ8i84~XaWcW+f=nvv5Z1TAI~*2ng(I~{owzzm@W7aO)c7R@iKvj+p2L}(wi -zaB+sF*Qg1?OEb;Cd?2?3jkEc9m`6_t)G5DR;oSbkDR3@tK5;#v>DPci*+VmSmTX;4`v!~vStNgx-MA6 -zUS>deA(~-Th-Ac8!D%v6H{a^RgcUigfbdg{(kEFVAXnN(GWmE-bxbqhIxSbCY2N(K -zmS4-RK3#GY;}wQ5=&}ZrB;s(BGgVo#9w|#wo7?FpIQ;-5TA|tRq{dM}Ppjt(OA~RV -zI80VV+q=CDsgR`#l`Dg~OstLqi?IXjjhNRH&`LURkfTid3pcv}5FDU4QViJEc%=A7 -z25#fqAmIs)d-|~k$yBWgI^LeNA>qg(%ZLi1gXd-q8*RAxb}*C$P1qx>!$CJ{nW6bk -zQ|6xRU)I>JB5%lD^i2y@rw=svTT!^f8gNRslXCK4Rvl1>b?2Vs&_0`I7#u{!eE545 -zb5CoG*gu8$mK9)ezW;nfS<5%% -z9|0G~Iad{Wi_p`+Qhw#U4c6TM1(DqoaG2rPv*dq^l2d -zD^I^)%Nb3wef*rjgeDINN>nVlLjQ~7Lv~#c?~6oj#somM -z`kd_R+5D&J9OLxlcY&3w%adePMQgJC1lP!?V{5jG6-{8n6+5Z{9^&zs_XK6rJF5@@ -zi1lrdCJ>a=KAze75nD#yS;;F?;k`Dj6R_XDum#lZL6r+hJdqdA7+2YemZ11_GX9$oGkdGAfD5e2uvqe3vXr|7_mn~z3L|IQ -zM#nqLY*oN3AFEXrXl;F36x4Y46xpDIB+mvi< -zvfe^HN&0IfBP?#{UtblB5g04|EIR{hfwnTD-ek_vd!T#0>)ncUC#n7k2o*A$J9L2z -zm`IvdgyI6W#~bIXbB3N&{5Aw`O?eeEie{$9v~QP=h>kn^3*A9AMmyL*yM&_)AfS9WJOlm8xw -zJSa5;Lp36V2W)Mv(_K$mm&fr|1#-Sd;7x)^oA12##`iMUqe82FAqd(VAuP!l#pHze -z$&p*8o1{lXzQ$XzbhXAP#z_Tw__&LjQU;$*!|pEGW^J?D^_FF10IQ8Y

P+I;SKy -zU1q3X7-^Eogi_L5?4dA(K7HB#b(g0?BlOMM{FYXG}(=~!J -ztmL%>9*&)b(HTev99F%vl)XUdSe+eB%B(Vv{^VHlL*44n`;t~ZybN-&IyF?ukUf?~ -z%=@uXl$E4xIYqQ-Kp3qK4;0(b<3Vzf7X*)1^Dt_alMILv;wzf*eE0Q%YCvtEsrUOY -znG)1lpfb_w=B2bqrkIi98$aGH(>G$VTHSL6WR@E$Laix3X6rxe6)Uzq_R`n9kd5+tUH+n>XTzxs5eL}RidaXn;Q|?Hpz>S_(DY= -zNtV_t-=lkA+1w+&jMz#IjPA6R41-(c2Tl<5DB(KP7-DZ3kQUHe^&01tygM01E|QPc -zlAi}-*9AN+TK$n;-OPM(8vMy>hfF~QIBkIgno92*;G%*a-4L>eb=;BU96S9HumM{~@jD$aEQQb}#Exku -zxu?syqF+-RI|3dEMUPgXI7%)En_jDY7uQbgxc6kRU?=E9w2|T3rEt`9h(TgFT5-!Y -zpymnKuXDV7A&ClR??jph)itK@^szP`?YUhv7F}R6FK>q+a%dYsU|iXB&DieHmb-ML -z;xelVo5y_a+4O2O-tJJn^6%lJ`HBxR1D;qnVwj7|CkaojFR1%K>edR1_@&K^g^7_oA$*aBNX!gAC33|GMV? -zEXUrX&ViJ$3t;%NqW2jwg%obQM~@^0+_>Z|p)CzI&^Pj~v7BM&VU6ch{~PK@?(vjv -zM{Zz_>oY#+U6^8J%!bBuu@M@URSu7yJpBMO1ikEtRG`NK!RW1==FW{=D@Mz^uC||l -zUDiD(>N~atK}V!5WArpd2%c-1&Ul~+PG2xR;}9Q@C3FW_ka!JT?5P3P-}DcylhX>r -z!=zN(8kN -zeFX)_dZbT>?sBE!nN9`=>wZ0XYQ7DfLG{yk7j=(~sHykZ!YY#yf@AhRdLd1;?210? -zXp&)Ngf-;vweGj(07hBe*0(#>H=0x8-N_pccg~<+mO9Kia?f1I^B0Fr^9HOkQ+fpz -zcvDzuJ4@PQsw^n**d}cOomGc+q~Z|3+a&=VC8ziG>rU%P{Uee}q?8jWfRuhH+%KZ) -z@K!jY;%2deWQrU#nRb{*E?-k1fMM0{$2&F(`I&uGClH2igO)p%@nJum@#CUMboSCq -z%J(mxbiE1@n&22zFx)x1M<=t(0iEZdyZ3uq;6ISU<_rq55ymJ%Hs64kWSK{pY6(}e -zTUofUKqF1jaA^`8(me!qj%)OWX+8$L#SqoIw^nq&Ts8?^|> -zE#n)Exo`6)%4QMM{Xj5F`?gYIXmB?RirvHJV%n%#1~!0l33zz-7CKuqURtg<2QUqN -zgCs`eB4Rnlmr4d{XhLPd;hP-m(YU#?J*gO9{J3a>C!UGPMnYJ01*u0zDLs-ov6mM; -zM5SJz77~}37+16FX~p}+_EpKwe=q$vfwJI)#j-0>oA+5^iI;|9kF8C% -zjt>dfl6WE?y@`f*u+{y@?mU83ZakWIttZ|h16XjZDF^f_Y?Pc>uDN?vjUsZ_`wP8K -zsyM8+oEFfUgv#~7XeC$olzBiY3e*W!sJuDmdDCQz%I>izV^iX3vSj21z;I)WULyu1 -zil0xz-xqtp&o|bND0tz4BZ1@6db&#xiy<|*zKtzbR9*mG(dKRf4~^Q{sA3@7v2vf$ -z3g6jbyLqzUkqqYY;x!_DNDdxSGQPo5W4|2j7%6JZzuX{~-2vj(m;+ZdO}@b-7EtV^ -zW3b~%J!+1oCReFT%8kUrozqiAB@B>ne!#IohrN9Jxbs_w`$9rKj#y4^?LNtu7~SV& -zW$3i7Y+-VT0=F#UsPa2E&LK5))*~V*5~vR-=$Sb}$7}EUDXHmAQ2~-px1H$kcLZ?m -zT3T3-09@NOK1+gy-waD|#HJrmXpi$j78iThm?(8Ru&&qxq-*Ui^@@xfn5!itsWzd6 -zRJc7F-||z~P`PN1wOEU~VqCnLfn|$IdbDWkr$sh~Zr0!gXOU_y?bGe%=9`L-{jnz` -z>-t9bcIabrQPs)Lx_rrXV;IN)wO$}jygr??gDQ~TlubBqEl{Bol*ANhvu)_d5|OoQ -ztuSJh2$|JBRm!2N?wW+y{yzHa!h`F5M?Vg2j# -zclGDHkR!z*PP+84J3RX;zWP?eKRQBNszDA -zbkp6wc%&?}&N`w-%m4hr{x4f6y`qeVh2ayxOiQL{)RHx%js^)r!9F0rWg(04Qpn>c -zl(_6H*ZGRNe6Ycd=ZGBfuTjn1Q_dIZ#`Gjp%ks68`DH-wIih=W_@JQa5&IWun;HTpRS=LUC^xS -z+cZGYSmUO46u%*IxF3svXx&{_s^N`W>c*hE9)X#11or5YP(m5*hoHHIO^7(Fz -zZMrJ+48*E`E)LxrO>Uae0yNq(XK2susP?d%W91dlFW3unWA`CUwbR};9v5aiZ5{m( -zK9P?~y`^p|6YlgIuzyHqaM{Wb$?eYdNeut_Y1E-^+Zr+*0yZxzR=163vi!fkSSg?y -z@#Fh<(I2b}Vy=g>Q!U3HJWaq!lWJi*i%XM5s+{j&6=}|Ol -zHvr=)QTa8XfVj`>+(;sWeuB1LN-?0)tw}^lv`EQqLS%vLAEa%$u5xGys-hW -zA&5yqZ)sq{aq;b}Flgw$aDEtQQ~%e36*!QZ5q4HEB-Yf}k4I2Kf -z$z?!isJ;H@IUOl53ZO}L?-a{Nf@zg|J{fUhLb80V-3J@KoEH)v*cmdcD3|5rIj}8N -zq?5WH4%GFkU?o||CGF07LCCWq3*w8L5A_ouPXZ6djYW`Cny$GriROOaQ>0r6!!`j5 -zvk?)(&1(9WbmqB{$BR_SAdbe)z%~!-9$*7VLTEb#$3O_mG!ELrkCT7pEqgUpga3u3k+ppo~(#&j6iBd -zlqK2g24Up?7eh{0$6d -zYs0oay5~miN}*@hP7}APViqf#7h;Skc`LFVs7kSS*TnrCxLP!xg+C%mBAY7P}D2PkYOq?Q_v#2!B=OO-R6lEvXwPqpiv+*F;hwIAaxj-9k?hf -zqk91$a7qAi?M*tt2{Tl2KI7ZEwj8R)!+*N79Fq6okQZrHuZ@qDO-Gf8bG!p$r0TxS -zQv9~663<~RQn2nWXf(;y3uo@`&L*u -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 -zMnSXyc~fh`Bqz@WA15K^&( -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 -z!PuL?FstIWN$(kOuC;|;QxOm@D1Kf -zXv|jfsmJ#1(<4>1)~L>h2QMxIStxr%y|xoUz2C*Mt4Z~8vF$O5NCo6&9KBH!Hr~;s -ziPOa+D+;Dan+NN9;o_Mu7>@WlI)SRl1s!udZc9A4w&O18K8;*fcl%4W7qd&###ymw -zHGOq*!xBoX4S0>gBag91+XygIX5P&7c8~EUJ9|1lxyNltIO^jF5XQmmFRq6)sHa%CwA7DuSC9h`)PjVwS+P`N;S%+H8Jx*NgdE@)zIEu8SVV$i&BolT@QkVk4 -zfiCia%m81baRRVm^(WsRDeD$pq-fsVPj;M`FpKTf5rug3#(;1%E1CS$tt``?bYW4EPVyfcM~`l -zDig`*pk)<3{m=rmCICEOU`^|*(6a~-L`>9mZyP7=(3=g+iifs7!W_RfBtAFk&h|hg -z!=tD)EUZHgYQ$qGhPaMfs=1NEVfr$rWn_Cb(mN%YO~2~|Hl0!0Q8tFeMFYN1g>C16 -z0P5pNE{9YYUu4ypCRTF(klPhm-dy1evw<5EHbL#)@5vTB06L^DeySb3b0iJ!Xj9LA -z(Vv>0&Z=uA5VOiAoxsOcg)wP0m|CB3Ddxc}bpdVT_z5EfJmG}tsD@s(FgA#NQly?^cJHkTt?{YYv@3=bpBT9thnoq~@IQT|<0x -za@^iFgQFt?lHnXVHAOZ|?$|S8J^I;gIROF#xDb-5zV!@PCCef#%XWJn(+!G7`8YV^ -z!QC#&Y@ju@M*&U)-Z@!Qs6mmIDFg%;mLxqLQOyAw_#dA$pN*_||Z -z6MSZ{&a3<96lD}8BsctTxAJMyu3tieF_ByQ!yq8y`*(qxn#g`yMaOVV4gW5Y9A}ou -zh{@$nsYmRYO#$o)N(TWwurgGodO7>%E_4?pTvnGFiO_S)AoMb;rVF`VxfY86Li?=3 -z9IdR06QDWwok-1fb@QqSHQN4MYC8vvZaws2u{hwdk_;qiS_6L-Z}Hz4>3@JP#1xVp -z;EK92eP%XX$oB{wJScMdsf)e>5je@?S}M!v2z9^K*FiqJn^Gip@4o>-5Cv)iQlX(L -z%R12K?;k(lr*vXw;fF!7ywjQBOr1@JenW7v;r5?5b;2k21JJsNJg&y!y5BjD2g_Y) -zo`!pkfE?Mj^?~fN)-UqA&Q-3w{8E+Od|s(6D!?YrAHULoc+H%(<9;3&QW})|=sEif -zNJcH8dW@Nh$p{re>U1ms>Q&zzWj|gz_t>Ls7%vM;oGGE=pkxN5&baDy@=VYsvdln0 -z5F|ZvBj4`?v(usDh0C)eYaTFK$e70C#zO=8y~V_9#<{t3i4zRp4UiNHRl^~^?}D^S -zwvrG~YKFK4kQ54JgbLg(nFkGO3bpV3*^1e^PLU;Y;yY3GcJd9L&auY+j9fV~kb0?~!Z)$?Kpe*(urW!O@)=Kf -z62eTgp#MFJiF<)9+!+0fR)4LSOR0#A)}?M{sWYxdjXltco|iSD -zqa)?KoS?B^lS>d=s5spPK+cAdoY}DiUkQ^wz?km2jCD<1tht6Ttx9(Pgf$|HI`alNbYy~ukp`o|*BV+Jldh1FY1Q#STw5S`XpsKK!S?-VZOnnWve$U2D?XW43PH_rL!6$4s|qJ+iRcg>i^1 -zwOm{2nWNE;SiqoP*GycGtrx2oZK -zA*pXRfa~pz^cZQ!Eol0yfA1h;L<52NGDZ{<)VBPja+FDoS-dpj9kbxOX;~@`7l&fP -zqA>Nr>D!S!?rx1y-~T9J1uUFM$6&+n8qeHg3Peul^Vm5!7685`R5cHvzyH{fJ5k7R -z@`9Nj5G7agcE_JggMwRnI)G=8zQ^{rM?p<;6O1e|cUT(0U+q#as -zDHw!7N-&zbJcqmb6_u_IGyMHiT;W+LOQ7eoh^?ZmcuCL -z(Cz&+KFF{4_d>+I|9Ir~ldsW#i63MGLi%LYW)D|QfBj>h1t!kcO!+_q>7gc>0i^5v -zc}ewG^+r4AFyhO{WF}U6T+8!Stb^@MIY_MaQ0RWRU)595=$qC}u -ze;BK{G7_^-GXC#*`F~`7t)c%{H`!e$h<>B6d~u{t0MxX*-P7OP)N8P^#ZvrGlJW-B -zlId6cVoREy|06{0NT5y9+4!TFmFc7n2nf~3b!oz!ehAFtW8dS)yM7gQqR^MJ7WESQ -z9XxD?7dTW~`1qk8JsMR(I16};0+C~H1YJ)%>>}-qsUKNVi0mQ7@z+ne!^=$LdgLY8 -zwd%*m4|}1_HtBlfr%={{`tkP^$hqsBeM1-PlHH3RqfHSB?~GbMo#S0EPWL=B>fd1B -z(gRFX_r?EC=f_WQ8@Xff>S8_K|GAFH07O8$zx*m^%H!8R^1c23t<|Lcc+;p0d4oQ7kzj1Du`PiGeH -zxF5h>z&DmFd@2v^Fr5ePe>l<#`;nx>$3Ho;j@p<2?XMa|-f)P=SE6bcfmdZQ_FHD= -z{TI!ay|^E8M?z}$GYQaNf7z1e>7>2$^OrrV2^sFNBs&FJr8w&&Lx`16RzI!+FCnuR -z(x_OudKG#HKMPIp@c{}CHe%${-?l!Lv6uJFWz%5ZKNtISXzro9|oek&X`)(6DkUR*ofNznHWYvYBv%2XmHj>}T}J0Ba*aT^bM2ZSPne0|rOj`Z -zys09&agF?#ZsS0NdNS?~Yl7hjUqW66H68QWk}2;5N)tFJ9Hs5a6?nR;3h+XJ_n4Jicm{*mzj*nNw#EKowV`eTdxO{lQ=C&ArJZ%lgP -z;n~#azOw*7QpCvOq82Md17Z5|x@@>`I;~BF)5KLy^lRIJtzmY!5F|;nK)? -z>I*qmwEHGJ8%50;!{`4;*SlrOscT(>@70SM_3FssOxt@Occ5OY4FUuxxrogrB8k@5 -zn(HEou>bL$Z#z*C1PE!}*PO%VxlWxudH(ATVPeHH1KACyBsOTDnXiSI%RGvxBL%c; -zr*=J8inscWk+v-UHl5r#y$Oa5=NnPr?T3$d7L*;ADzBXKHm(NlpAtV*%A!gbSgT8y -z+ybvY30YVf0NGNOjG{Gl&^&NXlmX;W7O!C!Dq=%QnlWShDND`3nbnjx7@Bw -z!ex)KVn{I-MeKb-iX9uX`PTk+!R+3TtpD;E93`>9v=v_jsgLbnj0)J2G*zh$2ftkw7LNp37$G{fKkk{bPL{FWMw -z1Sg<&%O$744@NT5 -zJzPoN#qCmiP@pmL=V&smEYn&`jZt%o`*tJSAOJCKC*3D~+zK+9WRg+FqJ2PhzC*jY -z^|}F69RzkyW^81M(0FE%pqC|dxwt1})4E>k^DPy>F+D83SEaqPNkZPGkGqEKxlc@l -zWkqW$<%=rMM53gjwEXRuqZz#=ENbJGu0}o*P!sY!dTxc+ayO|JxE6l;@m3Z?e?!9z -zw&Y!`EP(6!`5bH!F-ji)eWJm{tr0&RNo$09BV -zukK`!6{x2l-^n*eYNlWc{j@Mt`b!?4=JoY)2~09mUbG)hPl%|?*U -z=_$Al4;T{=on#uL++<|@4gdik097H!kAx`haP#1GT#;Sb&^9ZSS!d@37-e^ACzOKNJNCvHh*N9!VL0nU_${5V0o(s+DZvB% -z>cP}68SctFAOOFrhUo`~lB)o28$6|gy#Rl!JC>);v+-%vOWfv({d6+qvB3nJG`K(l -ztjwBMp^ppbpgP}@8`MZ?gB**IVCLThiuUS?T=e42Y3k!tt!x=VxoU`nx#zgPFE~FN -zQUEI)G{8i*s`$k?6s*PEf7+psK$j>TMChdJ$SH!*|W5@`x -zNZh$yDrMraSv>_RERW5ZV)Nrbdc4ay9url4UDV|3vbL`p5q_1Xp(6aNK;ow89C09s5-#!hYiZjxrs69Zo -z;qY*CC)0(JwdETmY3g9rjJW;~9znC?VABY`)tl%@UWC*LrKmrGkHzcmN->^$`D=H- -zFe0p^N&$IkQ!57WVo{p@FPS!1U?IAl)WX@#wuxItMfYXdnO!mHo{prC(Ju`4H4 -z5kR3Nk;wI73T(DozNCg;yQ*hkeE^E3$Xi;OHQfgpjarG!ynQ0W$krgcdaNqz!6vJ+ -zBgxj&I%Tx)G8DrZPtsD-6vrEN8$9Ub?*81Z{;c!QDE!fP9U0a*H1P=&+6rO8hSs@? -zxq38g5inVn(n7^px -zVEAnZ+cRpBM};!vwL=9-18g1X{aHO%uh~|TWM~3zVqqqR$w9JXLp{Qt{!!71eEa4F -zXuSi&1UVrny5{R!qvy#IOT`r_0XpZC_PN!8P5v{kSk}o|rZ3Pto^;oN_*7U+t&D9$ -z$zaVeD_Air#4IB>TWqX>xeQmtB7pL2xrV=cs&`BcBOsCp)P=7fzg*#gW=da>CfpvaHuuE+fg;) -zE^{%!3=2O*{KpigJ-TDjFd-nW@lB3wws6p$X0m@)fD>46?+A6v{}HCgqX6AN5*Rruo!N%GIPU<_d3*lDEL7UoCVfh_)_>} -zvf8qULcEj7?W4lr!{iS2eIwa}Ym*Zd?gHw^K)AWaHjV=mz{+Cbb3 -zsFHUMiF)9dVnuz%iu{r=vSG3S7?Ff*Ss23&wjwzc_W)t|nu+20P+_^q+`CIwnq(E>e(4l9ylHFfG$W -zp$p-UrsXh1)r9*B?#@V4Ch -z@9+N;Ce(%Y_|3pN1Q>?lDtJj$pcg>s4h)D`gy=aR+3qBVSyonzv0>n?Te-%kgvnmRj7N!)?81 -z$_O#+R&f@yz!hX+fEG%-b5fQ6V$kLs95CF%pF~)+$=mGJ;yw -z1Ogn@#AoTkms49;&;0bqZ9mYP*+N-DfHrY(LZGNEoKT%|1i~GDJ15;cS1+SJa^a?E -zOdZWQ%wAr?Ai#jX6_vXY$R!hyY(@{_CJ{O{Bb{=CfssX$SBkz?(e@67y@@u>gD6Y5 -z)!8yOcomfY3%3*PkUqS%5%gVddMI+5n6_Nx%V_VrRX-yR%w+V3;~s+)ochTeFSmEV -z;8s@tNp{!p_EfsGdj57_dky-)E{Xq|Fk?Ii05d0a$KPLC9y@ui8l+A6Kmj0wBcfam -zj#d|h7mrbV>S%SgfF4Jm>)aWg4$$fVX>F_c%cmmQFm4FYDsKc^!F1wcIF4j$^~&j~ -zU+527CLL)?rpQ?KOrG&=sGpy~9^TtF0eMfIR!~oC70W -z3w*)8M7U3=u($zWNDDB~?)nR6>IJ=Qq@5AtSkzy_)>jjI)zWOIP_hO!8|gL&4N!Bi -zjf6TGIaW;oNo?*hfY<>+O8z=0m1Iydp{R|6d6nIXKRTJZperj_{ -zMbCB9BO10CR;EGC?w$z0rzx&Wr^fH(?_{OkXYFHwF~UljR!kqYHJ083DfTz`R%c3~ -z=->kIr55^xM`=~~goALl$5`o){uI21+xw((=8^fWwv_CLeN$0Sl$AUW08Kb+hxc)+UBM(uqruG;!8CiCoSNK9Am<%XaY%v$r}^Y~8W7XWGCu28oN}MN)3kI5^C6Mj7A)z+* -zG!dx5SHBdI$0gdCnE2gm6R6z!g5u?SoVUrE;sy^w9PJq(XKJ(z_t(>*ln_ -zP*$=9`eicz3Yc5~vfiD%MvgHf-(P#hs*=>vR4NRm>teryjjL^TgH}iil;AvK>{VL>owTRzD6+_-Y@~Z7mqw(@aMNh{PWXSUVS#z80>n}S+#l63=nO^o -zyfLE)TsWz=ig9ARh2Zx)+u$6Hr=?mzB9Wc&6*h2f3$hI2sj&3-vitdB<1!W#xvPSh -zCLlOYG0-x6%6c-k0V=gNM -zW&q>4bOOFYcAfi}Vq*&Qt?~uK1su3-f2c>Hcoz~2s^?kUVvS?*-{^Qle8oeuN;r&x -zw>Y1i%Y0N!W2rKS2gfdu{Zsr!DE4CsfgRINv~n@rcq2GT+$*L*tW0!|ySTLyS3;`@ -zipq^C8@zsiqtkcI=Qg4-8GbARh_08a17>}IcZ0TGWhuc)^r5gNl@?I}kINx9Ss -z@VU9ws2H-XN~UGY2w|);!2G=;b9Pr=Hw5j~t*h#anQ!w;aT?bkHFv5x%e3MlA`{v( -z5Q3WWlY+bPuP}oq!_4)b_1!L$gC~6=9+sZE%iPPW|5@877CE%1P)xGOZ= -zdjQO*J@P-=-NU_;k-5W)dfFX5U~&sIxhLrw?w6jtQ4`t^NT`Ko9Hr<{>x59(q#$8d -zz()GFAt%%b3>q?MwThhlHCpnzFlmk6tZ`spQR4ok_vt@rA4vs)L~>B|wCzfCjs!E( -z{2C_~zCA`STdMJebXFL^P)lL17VkmH*e3$ReVvUvy2BI1h`DkftSErkzSE1suN#9p^prs%OGzm>WZ5N?kPFP4 -zq9*m0ic;w(^KuUJx8GmY(P*>j5GIlkQkO+5Z*;)yR2sx8|gNBD80rplS_Y -zYOzlzOgdz#-~d_lW(pJeS#(_o!|#S|2f%%Ki|Lqcpduq>xn=9GRirUV<;XYuqyt%XdeFfKa5{* -zcxu;=*MUFIxExCe0b#OoS>)03tt}+N$YvmkATVV4DoY>tXrcGZ2Lh^RWMnePH(r$M -zyo`SQefY-H~(HOBjLGDiP$X$-$yTJ+jYk+q5sB6RLw)O -zyUaFAwI>VP0(UYK)e@QHreFsFb~rHX^SN(VWOu}zX2+cs3W>a)WW(OwrXW!@*b3I* -z|Eu8>fuhHV$2qDgr3L@`H -z%Z5|xfi1ik2aYkIdfq?&1ck(FoqftWOk5q-a?k+2dVvMOEFH>xDYu7r-q5rw>W`Ly -zqr9mBO4(!H5|=B-{|eSb-{C!hh(wNij?=eVCyNN2H18VhG#j4$H#*KPeKgx*bSK~X -zSaU{BXs+7urDp(59K948wfon^E-H4(kLv{nSU)9C*CYg*k0N}c!!Y*4Vm{m@)YmG} -z(pHX0D6bqjF!dwaqMO?UNTfvGLt;KHrhA}U;O5pkUJfQ*{_YUx0Q(EpU)j*G{Al6* -z^8wNyG+V|9irS<7STaE@lAa86{r`#)(h2DS%Vd)&&J`Ej^Vsg3O{rz8tWP!MFoLtaKOh$Z^UKN3)N?aH= -zdMu44wHXGgwOlOsm!iSix?H`3e#K(~hnO*-iZO&C1Q$xhxYyJg!Xq#v^s+VJ&h}tsxhBK^NJ8H6qWU4$u -z`QCF%mDU_cdF$Oe9@+l}lP>=!WdhrPm^a$uQwFqMU55wI124?6TGoNMYpu~i4Vdrb -zpX_2`?9+&n^aRRu%n3HABo`rnc4QbE5tJm3j(Sjpr)(SzhgVWaG$-w;b8QsP#ZkC* -zglq>9w~>@A834vugOJ%12@ctv^gy5Pi`Bc|4C_>S?Kok=`!xcg9Zjx`6(3Lotqlr> -z9UKiRqD7zp{U9>^3EX~mcZ2hv{ju!|ImM{n1}yi@z@#~x&P}oi*cLAmxelLVmx+-K -zF^$uqUV+tYrV=aLwluMfkeU3|GWaj3;ZW8PI}*=(f=MTjW#WsU+5k}ma%I)fa==d- -zj_C^i^IJmOg9)}QnEwqK!Hg!WXnl -z$!6ZsTW6uH4K>}`Dlsz2@3NzCH2pYtt~Do_BoK4JVIgwfE7zi -z<7A421Weu@s9WdYyhl*uQ;=d&#vr2F05h#TR5RW}Ly3wjP8;yICawkq_*r5KAYFpO -z6Scg^Trlh~flN-Eng)Iqtw!))2yp^f&z32W2I<-;j#ujXTGEbH=qio+GSpDOu -zUI$2$T?hKt0+IfBtr!_!259SC2lm%%kO4_v`xPz&6;!*n|AHoxA3MVafzhQhEFM{J -zK$|;snpkwwt_{gXbh~110aV0dgEGVN`G%q#kRh07V=AUFG!fQDQUJ4TX>dG>T;V8b -zk~|nJdAX*|62oyD7CvS4W~d1~)m>tgo%WAIb^QVSTMFjOQXXvwga0N+*^< -zY6ExXGTK(4l+BgECjRTPCjso3VXrAy)BoOoWqkVzeS$uV7m`{KUVCCY%?KpmK%Q)j -zMH@{pS$eTvwF(6t5V+EfB<+?)?!ilGgX_t+N%%o7OhRx7czT^zfI1Z%=QL12Dm&7K -ze*efC`SWXc -zY`5&=xOL!&6JKmaW_#3qt81|L#yC{m<<@sA7sgK{RUSoG%hrz!`p@)FHur#}_2qX9-%Xul#$n=pH1A^(cP%n`NVNq#Ad;2~6y6H?S^0@*U_)j5)|1EQ%Mz!$Mgceu^{Zqzj=8d>28vHIj5QA{)xLPe -zss2gpggz0ZJIj$F<2IA)1ZgEGaGAFmI8}$iO2aS&@{?3T>d?-@{>p?144l>~*HH;U -zR)O$-rtdLrnS*cHTYyTZ^LD+Gj$Wp}zf4k~73|PDWgVhntxyQBwWJA*k;CegC6JykSDGep)HNmK1rh~dA*E>EEmdooGQ{KoU)x4 -z=qNYA&ZTYLkb?@Ux?w-O(;kxVnnP$`A$m4R+qa$E=U3kOmFEwEcLLY_4k -z^tN*7!8FFjYuLy?ImX7ySm_wCcYDcu!4uE+97DU6>p*H3%UhQbZfq+@67((~$|r;9@4AJ09dv!~Mtytcx$d#%(%gGDs8!MP*yLc?1s+>^27B#3RQ;|3=k& -z(FfHyOvSdK-FLfQpXCrlp&lAJfE@Z-qNpZLQTUEBh4=5je(S(mok}QbPQ(Tlu_U?+ -zK8v}ONgz;^O@2kkZ^+$qh3;+Q0sgMPC^P+}K{U&f^$iNN#vy;5M9)a#mzmTdJUqW% -z;2_$hV?ZIRqDJwo97^7Z10{EMJKz?=?B&96g6mBn?p -zW^D`tSswWhI2X^0E(CZZua*4M+~kceN*!ojSX=j%Uk?gtrQ<}n+~CmYkG5kxo2y6^ -zdU+>0BVQCHK|7Mw*SkjYz5=>cs*=M9LWW2+sDMf1XiV-eq;(9NMNenZB_8~L0ja?8 -z4<^!-^E`~PO#!da4@Vc?CTE@AygAwr}gHb -z4{26%?wW0yZ3GPTPbRtA_A)k;nW!thM@(l`eU+624X-Gu&cX>h6qa|b`ZT|m -z-Z78bMTGWD08o0ly}LVl&h!Iy(!izGK!PZ;6o6wxx{%)_1*e3{{fVZNIGaMhalAo3VVhck=5(@N -zJUT0On@QlW`pi0JhPxi-b*2NwPW{|nopHEbTg?Z(&clvJ60ya{M+=16yeNhy+x-JG -zDW2tquv`e8W8O3pVjD}OLc9*2MyK*wGF=Q2i2e|wNd4HP4Z8-KhI7Eg8qr=;#5({x -zxlLj3i;)4y*f}b3yEtq3cn0d$tZF0|V2-ZDeOp11SxMMI>lw$os`E{Yb(zJS9P6yy -zvPhG7%T?@X42Hdc(F5sdO)!)Fy{O6FFQyK|^GR#iw4^Tt82hA2dq6U5t{B8DFnD1x -zJyQvHJjN!IGK`Fz?o&$*>5b;O7q^Hgl*YS$nVo -zI4U)Tbv1BPy45)YveMz!%Q*(3Ktrc2Dt!oP?O9JA;gPB#+!^X0X1I(0kRh^o>DDRr?$QrR-BF87Pp1v#^IAM#^ -zrrbc>Iq5H(_AMpDbZ&qca#n(SKIVL5v%5=Nx6~4}(P^2NR3T(1FU-VMAi+E&00cFd -z&cmYQVhJv=Ed~o}yxV0(@JN>Me0Wh!I>NIy6ep?CmIw3=r0pCH$& -zt<#TfN-;4x;tgR}LL(3fpp3WtQS?m11uHOOwfWwSbbbzgyxXL(w_(sI>|GXv%Umu=7KYY1{iH&N&o`7*Z8q$ -zf=4pUYlmV}Ie~WVEz`E)usbx*#Iu!hNjSpVEj)Q-_{G=TdULOq?a-K@k{uoZw!(T% -zcFsa;fJEH|-I&J6XrOIOFF_6Ammx;Zy5F^x#689^m-*xx`<-kl>-r^CANJO;ltpn^ -zl%RxLEFB9QD{>R7|AJR)qywcC1X{|A^A0kA{4Oq(5GX8a9KY+AS(K8aEMZ8tl;+Up -zsxW8In)gVuS~myq1Q3{~m5n%=MyHC{B8|2XE_0KRhc_gq;=^3SE!&>-r*7Acln8C8 -zTl$V1m+E69r9PsCr^rMiv~){S&;m_}+tgOJ``-~y*S|`_4XUJhb%|uOoO@btW0kcO -zstD8#V|9l&D#1-IFZ?V#(QN=dWE?J6gL!J1s?oZKdGs}`zr`uPZZ3uVBe-6SCab6z -zyBM|7wM?G@cNW)uy$-!IYp*PZuqj{)UTY@x!(=h=0Jl9{1^ouI%3Ul}X}6EkR<1}!D=kReA9t6P>fYpEXSxd($0eSbXOQ(J -z6sL{!o};FMi^PI`cz}(gIGx0Tgiccg0ZolpgObtIry`k$0a%iZe3oPYMpsvr+6F^A -z6Z2(hkCsBi_|*2o%ayAUPB9mDT!t;{ns1&Q8$^uC3Bgc6hBYl{9ko|LAHY+$#EmV>02>xJ4lH&UOXuz9ZY(oY(W|^b)B{D#!w1KB^M>^^HD!J-APA^Vn|6sh2TE_qi*R-%ObXkuW -z$Q}_N>U8mszqqA*oJ!kth#U^J+pH6G5BssbYP)@|6$A`KYjdKN4WOMWh07XVL%Tbg -zglUW3vPj+6!^^YkZE(PkY3_=XfH3C4-s%{cg$ED7hDqDP>&lVK=VuiJE?f^VCwKT=b -zwN}1H|4-ZW30#d`;K(zkXtzFnX0l=sjYMQcwpb6`o*dIm1>AkyA9ne`1)&^F{)`nV -z=s|b=My~kigV5G&i-;F=6}oe)6rC8@fV6*r1OmuUq%PyJ{gPJEe7_5#D31U8ncDek -z+In2!T?t=&Y|g|8mst~`fX%3 -z$!1)_rqq%Eft(eL5R3QQuue+s6k1Z>L5fDX3{)XyWYt7 -zRfb8%MsWgJ2xPW=SBle52d*L34!*epU@#bIlc3nN`GPTNfrz4^-IKvJMigRe(9mtQ -zO95py?cR=#pLh#Q0X6w=_53y$u5=tx>8#xwB?!*3Zn<6T&rTm0aN%jYV!osYR}Z{& -z#+Y^;EC;-|KY|jli`Db4dwM6&hx3e=Ud3I3pyHmR -zqpf#(bJAMJ#x?8$nFV=CzJ7uMYZ(nCa?xc|9HI#>AJGbf;yl)qr8~Dt*Yd#nMS8E+ -zq19o}&!C0|Ff7fC@Z87bU6RdOh3vg_Yw9&R%LX06oi_uJ%MO|UV>`*SJ!SKf0Zf`d -zCx!a>*l8ah+V)Fp1D%>V3W_>;KkPRci~PD}+0^jpThwGEJ9+%(*QWBcZpb(hwn>59 -zRrVDIR;4AvB<7*xe+Tpc(7&Jl_%g;0gy{MG0(KRsETcxz?-Bx{r)fg!1TqiPu`iz2 -z*#mrFjo3bnt6tf?K?j3jm3tJ71PU8vCa&JWJe?b6n2P2rXfMPyXh;FQL)DlGl -zF!G7bQArgtr@}zee!{+9PUlu-luNXCxFnZJu+<21o@vw6LmdiqFi0NSwu?7(qXkW8 -zLb3yNvB<&e6av7VNOOHWY3|!>WEBy*q?AQj7>-b;%m3wDkpu4N~td++&`B;i`B?l_3zzV;oH| -zvU!V7wW7ix`$$@L+?ykN2Z130GD_|?R%&Wb9^yocz8McMa)}I$_aACOg4r-zK2S&d -zsO1Cm`pFRH>*oz9#tc5WhVByy3$LbRY$oj+D`Ae(9zktdh6bX=J?aaZ`*&Royr_aa -z$cWZ|KsL4BwkN5H*pg$jqmwMXyE$_;y?;-%+$(u3Og|)BFgzEOccowh=H#A`?U<^g -zUW1x(OvzDrhi`kI0PSZa)zPgfoM01xscdlyQ=ixdemyvFQCQ#+b+F{KdWY^{V8?CP -z?L+Tqfj9a)BiGy1;51fS*jRCe$zy3~DZj~8VXlU{=byxP8DyV?2a}v7HB9dUDL)nJ -z=(`7M?gEX^3`y3pz@`6i`;R%fzt?UjCXNE0x=_}j)hAm-Vg8ovH{kk`&j;b$@X^-H -zP9XSUL#Ouz6fmYnRc3Q++rTBBahf!@NuEe!vKpk7tLo-KsfH_L* -z=;SG^HjaL&>h^|cst-{`DvQ|$c4j&Q3pXT_lT55|&|Bd?`4RQLC@oUb -zjS*-JUYn!UGJfKj(~$>W_fCE`9?S1h5TcpDWdbm5VxDe~Z3BkCNdfiq(6Rp^9gFnU -z9#s~X#0drsBNhG6*PEw3?$Cdn`3*o|0fc*I0P7vFnMos6UX4^Be=y7&Q!rv$H0<+9 -z-b|`a_tjvWbpzS|=si}2GP@O>FC|TnK;1JCH(5ULmJO5nTge##+=q3OjDI4B5Eh|W -z!Nm)0XWfr0bht7Jw-NQb~=c_C`Uf0Oh=N<~Q^lp&!(z -zIu2G{m^3c$Dcp|L(tu!|?&6Lj=Onn%kFYa6 -zqJY{&P0^}bh1l^bt)MJK+@g#POlwNF%M>3h!NLOI2ZoYNA{ZKz&PRJa15RJyuK8PA -zs0HBXWF9n0X}jeo_t%P72G^A|(5)cFM8I$A^_S6teI_^tcv`o~s2Q0N*zFA4kHrx; -zR=HTM8@c3k9Y)~>s#_DUPA<3SXEpgIsl^R2Ai@?W)^>myz0BXbQm6Q+ih!CLH4F) -zQn8pqyQqeZw&mF8kkg8yoBXnghZ;!G_6PY*nHfAHf^*9d;X*k8IA#S|IhZ&SjG!Fr -zVd9Ai{iq_s%UhA#o^wuY^d!M+P+0NTSVGQRvcg{sK*WNHELwhPx)O(zEM*U_TVdN#~}|go3_A<=#S1a!d5Rf`N=?ONX>Na5Q1^CPZ&Z| -zewEysdZ05?xeEtwGGaXQSck|tue1p3Rl%`j4Oke4w-MV3q51aM6}iQDk!YI=8Z%@l -z%i%^5hrVrNSW@|)z&`)@Zla;#AhO_H$UFFK8a8)+$kG)4XI5K5%gH-(3J-RQiZIvi -z>kEaHAu{9kyPo&SKo9##VkqbT_CU|&+Qi2QYY=BQR`6P;uybh_BRCzviQ+h%7)KRI -znn)4OQgy*o%WC}40$`K|d3H|MTy^-S8$>lR_r9d0hU6^oN{>W7N17{v%Cj!UICV&( -zrHewg3uri42CjuVOhA)<9ab&b`=H7Ja2KPsi~#YGJ0zcQ<(13P8c<*cRbpc-g~P|s -zf02~hve6Emry&&*BXM^Ze3oNDfH~Do9Nlp(d!YFShV3btk|xroI!G^0v@s5j+8Of- -zuPgQjAJd%D5wz38v%g_nHH4p=8{C!?aVVDgfy|2JBzzj^Iej_-T>!Q#6P%BPxbA*WXx+bc7!m6YIw!dcCM_!YIS6ETGWX1exWLBRTYc#2>P7Z)kOUW@&R0+izhed)u=jY|)!0J0`U%_zEt2Rxi8S@7 -zNrO$Ch2W0X2-Lr0We7hss*=v(;FF%b#zlkL;C1XSy=Htr1;FKW3h^H%wGY}Ro|W@t -zgS5jq0mNG$auq~@H4yEY;ZQ|FJ03`7+%3ibe5xGWYIcHG4f8E1+Vb0tIhu}ZBl@C( -zv*`~5Tdcy$&8S2^C~n8S -zfBbZV@Exh417=SR_h2q=Vp_2^PJTczPC;&QyyZqm&MV{~IK5G?B|qKr&_FM#lMMFb -zmP@V^QXwq@a!Sz2)Bz4uuKtk6Bpm_SQKei-OzxbkAtecyXBoj@l-L%~GFvvQPoX#+P~8v^-jl -zcOARWd0BE3Q(2xz3f%xI_c(3+10oZJpUlEx5nvp#Qc)HN082=~YcG`SI&Q{vB{c_J -zNv?PV4h=8eHfnMXrmgX-nc1V{^LK%`6IuV& -zY@D<2LgsOYB-|~-Y-3B#w0tUEGQjsm-7JmkAsdyW%`5u#hO;^?$@?z+$@M^wl%TQ@wFeHuPCjlW%{7;U+>~qb=ySth_!3R6<$z*S0)_flS_q|ci|8bjUl4wo7Ti{ -z1pomn`xD7cE3t7+^2_No((PenwCZhwb7isH*iR>OZ-Y;I9}`$=;{`dJne%9ahj#Q; -z(Af9JI$b!BLvzMsAiqZ75QmpQRtkSZWp6HOJA+vz -zkd!ynA-*k(?v0jHbIb<32KOsV;7|WN&_cM407r#Cy2;g4-Av#V4Tj41>5L{6&+IFb -z@>~PKvBcFq(Gk9oG;mFV+gdwYT^i@(NBgZzO>wSL(;MXZLVHS$J?67X1#U7UY1%;e -z)Wjh)xrh$LMvm^tKa)38(VIotL)2#q>1S4@dYj|s9S+7-ka=OjriO}x; -z3NZf_imx8%5-UAfO31)-VRHyLC}(m|mg?dVe|+ae7li6Wb{?l3z`2kX*{Cu>>xP8F -z$rk^mh=j9UH+Y&#XY~zc#^*7236jD)0msA98Ql~~)jWZ~tkpI`1tm3p99M@`K)X+t -z_s1{jTPv4dkQM339v0U?R2-@Yc~Oigc_&NXb~K73GcYsbry*AT0D3nq`eNOpuk@x7 -zQQCha_~ji~t2DL6Zs?5$b-}@EyHe1Tl0Qkf-c4{OqG`#+2|V%JiQ4WrNv{Jav57^F -z#C3^_i`MBbnXIZQD=d{`V*5{h47c3@s$d1tpUn~<=EY!rAZVuOoMZxR1La138mZ3W$k^ -z+)A0s+LmPxu9dlSh%*Z&2MH=wIS%%-GmofuTYqpgL|5^KGSN9_qsTITo@QEF@t5K@ -z6m}xrWdI;zq#A!Zibdvks6*` -z6|Z=F`@4>?)p@2nyq<`felw@IHdtbai7kWV#63Z_(Gz8DQka~~Ex7mO?jxkl(h^?Y -zla!DuS+)qIr%yC2!3NQYdG>KY5kbJdU!CH?}9`6S- -z%Z=NTEHx51+{rV=gq*-@8U4;V>5+hV@E@bKFV~qhaRDnXl*#u2KJXjMHng;nueT_mmmxRHiBGQXjKOJ -zBfsPBPs?93$gie2+k{PO1!1s0O1Hu&BpWT)jrTe9@zcUHGwS%}jtMU>mFOh4T<)Jl -zE$;$IGWn2(Q@~=gdzZKE#R&NCh>YQ9duwfS@19|dTzk6qK28vg0K>5@%hd=Zj>)m! -zIwZZicmn&iQ?K9MIYc7}peZD|RT9WXE{BAdl@$W|7yT7T51N$P*pfa3j}@FMPrzPP -zLFr%^M;n5Y4Azmh66k>!TAq=MLf!&uQ-bm~;D)H}G*2?Zyrl*vX{P^*6 -zImWF}uUi;;;keoCW$j**H>UR=^Q$IC>JBR(f!8V%q@Y{`>(cEl>H;02J17I%y%{UY -zh{G2Zslj1sC7j|s5IgrIa)1P=WUwO)3@sJ~u9W9ZpK*-bS1>iM$&od8@&+XI3H%s&s6wkXf)deco@rb~BtK%HA2VdXaeNxHNI3&wh8v=&>zybuEobIQTx67WzhPZ+^ahTRf -z5+2+yaS4-7Qwcr;clR`O-ra2;)eifK^+SFDvTpGBoNl*~%~)8vCBp|PkIo{K2)G{F -zs5`Pq0L>B>3$k4xyhfrQB(LlIuv^*!TE*wA7r7dW$ws9W9gQ1SXGojhwQCrx9AYG! -zo8}93`S&tTuR$kkf8*=KqwWzR1XY#VCt>fc>+2Kb5_Azn8FYH-y$H1*ME^?f+!Qju -zH7SxA8EdKl*5{nxu{YX(V@ -zFFl>P8tcIbsQ^{gN#rtcD_cst_+O@!dDEga{nVF8Y$sYe*OVXRS9mQJs*tq?&5uln -zGAWbUcqE#w6)$WTW4tYl-;SM+INJ^6 -zlh#0qzyxQoSVgq&;v9a09nmzz*n%JYrI_TCp>X_q1AgCJBx_v(`ATvV>B=rVwf<|^ -z6HdVHX3cxfRek%AN2s>{>BgTM{nS9Yb@^?m7AFKY!@*A0C}Tq4neYzj8|adjDbfNS;{ylKuAI -z`;RtiX0+FrG_-1-46RzEkJ&GFnV&<4g~q>1QG6#AgoTJvx9sDC_m -ztxs<1$FJ|YhrK)}`2w0K{PlvF^7u~$DSkx0H7w(*XFqnE6MI6sgIudfqaVdhY9m|y -z`0-m`FYTSj^sv$N3|6JdNW$As+YZc7o+y?XFWtdd#M&{x1`QnX-=rtW -zX8+0qO=~agmmdFAR_E9izc`UkY-WVs -zQ?N)PA1ho_F#rO!IUgGbOmU3{1)GMSN{^z>GJkfxr{D9Zy_;W9D8YBJxOB1CXQBMOp-$m)guzR^5#ej1OGEqX**Pwql!b6LN2Cq}vj{TW(ezPMA4p -z)_~_N+?86ewjFF6@ZYV1dH_*{o$)^eA-6ohxMJKkHYs&ak}gZj3`|qQA%` -zJ!WZB(iUk{dyY9z-Bbb$>D8sC#t!^9leu!L)RJdc -zrvdW!yLa4##da;qEin;)|SLFJlM#lh{6W7*;Tur>vk|{|3mFr7btgb-c -zihh!i#54!?&0)#ScPk&R*iNQ -zZ!X(MAm^doRuUAp&3Hkb)~1_+&_|{{n;`sh{2IwRQZnhgAyX2 -z2M@Baa>HWK8 -z1%PtQy?4N(DW{V@*_cV;h210*EMyC9jJ@JVO{kR@V87CjWr71N=A}Tj$utLyI8q?_ -zE5TQBYQpw^r3^U#q(!6!3aE<1V4m)!{|ldDhJz#T3S>{h=J$FJM$_AZk$`e3gk4 -zOY@8@Dp;<6!UQwCae0=}2KWN+6e*JQ)IGN%Ua)Xq*#Iy^;v}`v+yf-6#Is1M?}kBn -zpr7?6QT3>Tfk!G-_oLo=i90@8r(bO+&c=#)_~_Q;6K)oE7*756SUvT$QR!eGld|-* -zVMR4`i5dOaH_egK&51eq{-b0jcz<`PrsDB@PVW+uc%pt!Xgq@e1>|b~fvk?h_I=Y- -zCSrqctWpQC-sZ3RaX$P#mL#DZqR!$8#T|3BcB@RxE -zlyM??S@!H{-@kU=&B~=wghnIz2aD~n&DD0VvU;r&{anc!14V0p!Lzg)q|ME!`HU4{ -z8RhG1fFdl{t4y`rtOohqHcYB1*%xGim;89GMv%S&mFR$I+A^dOY&Ja?mDvE~&=(on -zy*ehvwNNR$$D>TXSmRD;HvPKOqMC3+^BExWx9+^I_WtjPMt;vw4D!UImBuD=xG833>=2BM? -zhbxfHBB&-h1@!pip|CdR;>+mwLNXhwoHJ6Ak?Y+Vt*vSF@85I7RE3(C^@XPJ2o3i? -z8&_zo5003C&o3cY3NUDH1*R>?2naCfXdc)QmKG98euk&&KTD9uQR+{NKK0M$$Q3Dw -z?w6hg*K8(h*QdVlbl>csk`vW(AZK)2kLo<;7O6942rEHgA>I{griO)2+JSua|6~O+ -z%66-mRx09RhK@w(rxskMsu{MaQl5tva51va^CE-D!N_TUi6hC+BtW5*ViW*VWkj2IG#gz58pJ!SJ66@ -ze};{7PT2z8Qijy8AJ -z%zMTZsTG=EpS3`o!4!yW+wVosqudK1vO8UoE1b|NrYP@8%74#YOoj+BdTyQrGV-=_$)hkEA?LLnTUQm)V?j+yB~EGIadQy}e(L -zUw(-V&vX}=iv9Yfe?DGb5qHb$E|@!a`;1C^Ml-~xEz@BErmp?z6jH);`L+SttvdN1eX7Qhy(VdiwWxX%jJYP2XG&8hB6S(^2ubzk1h;0#=}VKf -z2_q~X{Ee9=$;uo<6Ge;q3DvyJlrU%(iq#Sa{nwI=wjoCcn|~{!jCGAp{Yya6P4gKK -zu3QI7kAa>uNI(f=DU(R2?g$a6P?s10;$ySrewx_zKCHPIjCMb#vNXU$CVlEv@oqcs -z@wC1#KIDdDSsNr*hLBY7V!0wd%=R+6bS$sMa1CMK_|C)(CM~ekHj#Ai^+qCe1y-E1 -zreso(U$junXh-1@Ks(8JJC-%!kF+BfmqUP_>Vx#KxC{M5W#*t=@$a%0u+^jDlEsL&mw745Ji -z1^@7{YM&9Xpw?D>*?F6IG*(f!E4#BLB6qt@rg7M5Ki@#kf%5opw-79EIDlH#*00b6 -zP!noqNU9suz~V>zgH92K`NvPGCqrA&YBw&9hx%eke~st^edsr_4SbH8eKKd@5+;S)W;uV1 -zJ{35n21-Aoi#}M|>4AokhcO;8!7g2gTk}y)TloFsrPiDK0J&FKX9it-aFgYo15Zgb -zl)(54Pwm3j>ymiR+%QrcaOa=|P{2{G%I>P#bo@8DjhPA&_l+*Y>F8)Ls2|Y9)KN!H -z>KM&uKN!UEv7zu(4UR}ts}srt|6fB^nfXrAHq==~&;hVLpd?=7!zJ{bIhlLqVHxN~bv@{I-d -z4d1=d3-y_P0Ku&##kNUNb*SX8;1w{xgv=mY?GqOybBQX#M&$l%R+S9F3XScoi3Klc -zztfU48aY}3H|NX*tb0vq?!C48&1Ge*ea12vwTD+4E$PP4W@>D}#^-qT)~`oOl`}2U -z+;xZ5qcVAx-ZZ3M;N}ZM<^xo9jw0k{QB+jqE-f-$FGvPEeI0FAazKtfd{Z)a86g?# -z8-F3?hnjV}ieO0@yAU5qKc6%p@0*~f$72;xev*N -zF@RflZbJlqHmg)UcSJ1S>G74F>;%I40Vww~A}cX|^+bvK#Z>)9M?rp!4yP!w!+ -z>rsjGCJTF^_p$Zd>m$c;@Qouqx8J{gqAUu*DU}ZHp%k%VtA8MFu~{K9ttX9_Bt~*J -zXzO|v|D%W>bJ>WLRclnAN5VQu#JZ@d&4WdOiBd$B=A#VjadA;}6|f>t<=ZSZ$Po0e -zUzfVt{41KwDlXQMpg5#{ap+X#L!jgf-}06jIK -z*pN34?X20>g%&(xJnI;8d}OKPA08GJSp##1gBrIhZ$hS(S9HXJ-C>Q$PXP_DtZ(4< -zI4o8OctM@A8+wooZtZVq`6PwXM5dwxE|#aO<`ka07rX>13YdpJ5Lzt36NPBT=vD-m -zsJwy$jKP{mDnDzN4fh-!=mOiy6k^@0%~K4<6Wn(NM>`TsQHUv4U(Ah&qjNH`oH1-C?{TQm~q8 -z`^alJ(7}U(Bn0YduQ!LZ{qs%F>~U~Lk36;Fnq;gXKW=;3p=vT5Q*j23kU0liaxbfR -z3Mr8418Iy-W#2;%_pp@@K&sED;#!B0oiN}Pr{uvDb!Jq^&9zKK5jjL&E*xtSLiiOO -zOLcm|`@NjZ{Z5abYyfvOq1+ZYcJIYy={S}F7YzLOqdZ|-Yx`>p-haj9@1hPK#4xTr -z9icQjqf`N04^a#}$q?TXvjvm=m7n(Hj@ze~3Z?4(*T%0#@FRZn!$@aB<*HL-iI!@t -zpsYv$Tc534d;vSU(hMGrE2ajHNhJ%|bW8FVE@PWgFjn=?Fa7me7L>w&)PLDeRjpc1 -zoGAUtTB~kN<_f{rcF?Mr67nNdT&eK(-L;mmLa{55OhO{-Ly87nF^)lf0?a#C7{hvPv -zizl?9LIu>|j76f|j?h+r`3m^E{}Bs{|5h>^62(Bsou(rt@G)j{%=(BeZ#UoQdr1(< -zi5M$y6~}2UabLCu-_V!Jfi;(gIf!%lGF*kbU(LJck!?AfmnT_SqA`aa6B27LI*pU> -znF}tgWd|FnxF?|9%$MtJG@mYaN;qanWjB(n!O>WS_VQMD)`uzDRl5^)Y~@v}m5e2s -z;%fb&R+WA9i!778ookN<5|U$9wvBd37O45Q1w5|&0p!33@3(dT-({fq4w&A@)ct5j -z5@+#uczt`l9#5Z!&dP$1e1u-u>L~6UgS#bGHCDq_orQH@48KS|`lLS`{qI&_kpt<+ -zfws4Nv^7qiQJ72}=b`d$)^j6qgxU*w@$wJ>O*~DZR8iY`mX@Im?x*@w#hGKNDr)43 -z4CP)1j_OC3{`@Ht4S)Xo{kzIb9JzH;-cdeeBhkzk9rKEkiN6`QGN_S`fiUK4pimo?J8uBIqN#);TP20-|?PO17Gk-xm11wul{@_hR -z)RAfMbvm*0@=dSzKR*9@5zFiIh8ys9RQ$$Hep_E2fBkzAIke`=wT-OzB=qp*NUQPw -zVrX*ReEr%^dPk4H3L~=q`Xx03_SwJrNl+nC{CsmOyhoC}$!M2o1Mcd^jIx??f|*l( -z9Sr6(g2eXQjrVKMsmeTkHdemO#<#v$evHiP;eIfur<~G0)UOfTURR;2u=uHfGLl<4 -z;88129!re`%^x3pA*`mU1BoNFWPY%8u^x*wIvNk83@K=P9w5)9E>BoX<=X_I9i5e+ -zRL6uWPPV~iuxFk=#|1Q5MjLX+DJ5w#2^ZulI%If0TKvY8OhdrPqGvj+CAog*K8`s$s^UR}f -z)24q-s54hBAR~VIY0!^u%q`m(#FcM5*mnWDKuoDuy`eK -ze@k?|{vLmJ#RcwhKV~Bmq@yy9<-cxZg6W@2Y1*~7{amtVFNej)|8Pq`1XcTw*0kvd -zg*)8-FWGmT$mJ~Fjf`$`A88Y)J)FvJ$wEG-P1}Cg*yc4Ww_=1z6|8D -zwzf`Se~k$2O^W=sMFF_S6F;Fv+j?|y8)=||RPM>2x(%y0mn&j3QL%LDA! -zYaDB;aiYV;qMCBJ-nR1S=#UA_;LI(#)mwOioMKjLmG)TA^7_x)_urS}e=bKwIJf%{ -z=c^;3Tx`Ye7f%y^^3TgE>;9L`fUdk0OSu(O0va{_c`cQFul-*l6EP$scgs(3(KDzP! -ze-~%88(p!ly0MHqbkmKiQ{->b!iC_JW7O2xxi71(n@}S)=k$hXu>G2L?56Y -zE_?DeQr=h`+kY?LX|G4!?ym#u&(b39NDcZ|UD^Rp0MQ*gT4VY2D>u!GmtFAI^Y{Z` -zIbIbwM#5eyEACny9ch1yCvrXhtLt(ZjB#Yqsh@=BbG#U0I&}FJ9x2}@xy{8xZ$EyO -zbFh7__Q!?Mi_i8NRSlQ9lx<*5Ld^P^CgkqwL;!G5TnV(Kcq6A?8 -ztm)OcMfqXEn5`%JyZH4m8N+Ot7Iz8x$bd3W%io2v*T9xU$#m3f&MFBQ238g`D9Op -zdkYib^Af`RY>?nhiv;xmCK%JS^PmNH(uh}j2|iF5!*mSzz|J+r(!?lt%P^8D?jD#R -zgQEKJpGCPPvL^X4_*n8@ay%5G@{>1u*#Z1{45cl@@ROh?Z_H5|ZrObsEQG-a@BfsO -zGkkoP7~1grGVJEl@2H#B!-w145Xuu|BzKj_RdkrigIP+KC-dl!mqA#piZe+=p-dg& -zxOmFJoo@KUI3C)s7w1++)Vm#mE0+r$cCu&buPq+q<+FNNk2y{IK${hPn(L)ofF7eE -zV>DbGz5!MCWaBq>RDL!V5)+i}u6(z{jy#3k>^?R0W`F!HU&Wr3BEvxGp?>?T)vxO7 -zj}6$-qK1TQO{8yd^^W5xU$Jmm*YD)ihE=~ta%UyWY%aXFk#pa|+GC&z?hN~AMYP_v -zg-RLy7x^E>Z?w0u@H)q?$~h`fE_3?3WES9hUPMepJLniXiXLGH5#il$4f$D4!D>cw -zp)-#o-PNsFN#pk3Y0W(SIqp*5JML>RQLV)fp)uXdKEg#Jj!kzJbx?93E+ZV -z`|R1L%*8~L3GAuS-%&tY{*ZoP2GxWxb8DosmI*7~|Kz?ZmjgVLdp550N@U|GQUoY?B$s7Pz`pUh)M0AA%;}l{>Up3!Um^3kF`hi#vG65r -zup9k#u%~Gg7dQ>kBBGh@l#&N^&Se1^7>Gg#RCE*oZ#K4;x&b+(5Bm#%nyol8{qUPQl4wV_@Gg=skVtdp3${q3R6g1Us_{8yYprDqiUw>VR;ueCL8@|Se3 -zOy^tJ=)chI<$FH4Dk%%p=|p{Nrw}pIspie%QWHG4uy0@;NCS^~LXlr_Hz%oq0w&>9 -zXD^>IyH1$tzs>a}hXWv#&UcyLsPcYS8=<7B{)-eWKURTf7m?hvT|{@49&yDubkyH3 -z$)<;0XRAq+XeyBo_fQ>1-8FZ966~TGttf?}<}36c_`ORJ&>VofoTQN+9^@05bdjOr -zeaQgmtAx)GM694&`&t$^gN{s3x`R`A -z4}ViY`NJ|cpGPmR<5FumUrU$f`^RN9oRzJ-*qmvq=x;JZ&X>qmY}?yvOs95GT>E8+ -zyI!tCm_r)+^Q6~vcx|JA^;je;qrZSY118daouIh*u~QC>rKlR@0r=ghmde{u%VTW? -z>C4Me2u8=dhFN(im-y1OxdOP4e2^Y`yhuR9Es3KAYL=>qcrSk596J2|Feu>8ati>7 -zU?aoL9xnRbHyh*&m3=!xx0xj&GjPS$w;kn%icg)n3e5Cou -z^!e@^gxvKE&^F9nD$rZt4sjY#AtGcDaCTb?;tDJAbxgW|E@Ru@PTVeMUaE+6unktK -zq639xxUdmkOg5yd|L+JOf!$xmrKGxiX=`C6)3O}N7AYI^Wh8UBp)N!kbYjk1Eo4k@ -zRETCnkMWXh))BrYA8%*f$JBPe94#3vDaf%LT^Sx^HPpt3tW!=vNh#{#Tx_rT2?u)?<9{pWozVvwfqnmSs<&> -zrL_Jiji~j9Y5Mh_@{<3&e(Rq?S*-s{?_zb+MK#i~7D$yoD~-Oy(Imf7ybu{+4@{4j -zi!zqu@+Qh$A^A%`3-*ut*L(Slwa}7aBGI`u#nyk-0MJd{d)!@Genm!(OB|5~U!%kz -zNqdcrt-f>Pt=hru@h^&J -z1+~arY-G{_s0P_Uq#Qj;<;bQ!6sf#ZyYeql_`E_blGmdoW1l -z^;s@Q4#F4NDmgA*9}N@-&Q-rZzS7_2+Q%_Hqr4p)8yNM{0zn-6Pt9`QE^UR4lkMQV)!rLEFO%;7W&=td175(ZUcF&P-cQJBlacw@ymN- -z=3v{(Ku-iTRcaUKP()@^y2rOXJwnW -z%GF|>UW-|a!^@||)EImZ*+5CmNjY;~dwiH5bNwhc_`1Je4}VVCs@X0@aoc4@ZEKl} -zgY0~9ZyC6AV>cuufKN0?uiJ;B&A^PB(5+_VA<~~#m34O09OIFs*J}@@6}Z#@hm==MysRgEPa4uPG0T7k9lYTSIeGh -zmD7+Nqi!UvD>*DfQ+u^-g*e*lI$Bq{n{H^9?zGDWxtuwUu`3dv(kiL#Hn~w#CPTio -zUgJ-f0XrkKp}y7T``F0h^T7F4yg)wI;4$sa(cN-0y8m*VJZIZaeiE35S)5 -zB0l;kCUQIW{+;kjMv -z4({{6N)$y_;IJXgJHI$mcQ6>9*SHo+vC6B^^4Wqb=L4kk2C2(J5PW+1_GO~yS -zfj~y@*3S2}t^ZzH{lE5K#n<o#^;`2pxwE -zv=fKNO`%Ah -zU$=J^;q>P}_E#|}zrRn`QJKMXCO{T7;Mo8Q>*W|gIOVa?6iv#y3mhogp`Pmkyg+s> -zK()zWwwHm|6X^FY$BP(mgUgZ2rzFxi8-EgAKyt^04Yk1}DS074g} -zCJ&IGkl!CmJn|ZG_<7LSbU`z~KqgnL5^SoCe1sPO6BLK`jOkV){^K+Fx$De?85c+} -zFx?{`bt}M5=q}n;)=jSFVUUtYMlG#;x`X+Om77#QYy*eR!;wLFSA*J}=;S{j_`Wovso(=i# -zudnbKI5MP^{=!k~17s6EZbwx^AKZpx(s8lJhS -zSBOyFm86(+s)gYMC5_7n{vNIKSEA00hL`uDTNY1ttugrUm{BAY5lsodWG)7GT8YOj -zO`phJ1AmaY-xEMKGYJ)-?((vkiAh&rVB={cV{l6>aBV^0lL;bI>lmqagMe3^K#$6v -z93L7l`fuf%0PD$)m2x3*s=4h`%x*}AEwwJOlh-i?$*kD_Lm20Y@S!2&R3&nao4NQdS~OFfTdKy=B# -zf$e)m2kd(#V-zF900AZJ>vY;Sp-?4 -zs$ogYlskJyv1(9OJPv7pU#Zad^w1aBExT81rSN} -zS;4xx0|8cN;9m_H&7|rsciOVw(q&pj0A;jre<37*ng%oI|-R@J%)mqn+oH^vtcb>e#rPk)k|ca$ -zyrie6d%4mm(xs)I@Wpai+{mO4#WQb5+meI$3hK57+9xMH3mH>$Tua-CL0MjSH^JgL -z8#{nLHR1vQq$?K%=5KRP(P57H-c8rLMq`33=;AI$EUC+epcTCM7qKRjusT}o -z#a-YsFFTCESR;O;yrKtFZMlvX*g3j9%1LAcj_XqK`mgJ3J$5!P|G3WReVzwkkakdM -zFB1y_Fzn;k;hnp*o9k=eJh@C$aZw1l1F?szIB|k^cwNzbTKL6OvG!xj?J8i=po_JC -zHKj?!hVdahRRDx7-`4@5%AXaNrz?{*xp3>D77AMOk2TM8?4||3+OG*1u{yr~wnH|K -zD~{P173X=2%j=sL8MSY($~>du7ZbX3m(2AAvvf<2=0!4zR^{>Oo6hyidsRhJ -zuC0|D;+k^EFFcW;Z_3w%W9(jJ90_~j+L$`zJgJuCm>7PsEFEa_ioWnW+92i?Tt -zOZl+*aR}@1U?$B!UnAb3FE21LAM^kTUfvz6jCFod477~mMPxH#J*3QwaQA@)4I=$C -zyBFw5(oERc`5FzgX;tIpwp!Yrybv$H24v5x;Y1^XJ$gAWbb#Y}kT5BS$8(qciR$3% -z?yDGS>*dGR89^*Pk0VKr7u0pvaoxb5DuNsWbkF!dJ^>&0^;tvAcOQThwhnxs{&GLG -zkGR$DWdn7H&^YeUE`he0WmEn-Stwq=1rw0XuX5!uU*5dEyz>X@uH{B9Jd!V0q%Si7 -zX@Zp{M}TpFUZ0;{8EyC%Q>P(e%qYA|9*Xnp5TZ{Ph0p@kcYRUYEfmfQ^scKm;&9C$ -z`hnvTn7Yfkw5V!MvU`>uFLz5DjJ_}(VZEw5IA7a~Rs^xkma|7P(ImzGlor*oYagL5 -zzw=dW&@GL}@FM?eR(vP{y2Mag$8z9ugDqLB<&x?~w{`Ksn;oKBWxq$LFh45I#ZKl^ -ztov)ggUrtU;KkQ0nSh+P#EE$pPT!ZQ+h`U0lJQQo1?;<*0Mo{p0~gN%u)K2aWm^M` -zaqsCtt`oy|1mRHrRF8CPhm^?cx+If}HpS%%telc+$>Fpx(uwz%CG$WFDXHtyRs+;F -z-0Q;h?7?#BzOLI<3iN?!T|O>(!i`rq=}M8_Oz#T`{z9(In{*ATs7l!#=*m~qh}Mc;_m6o;(MFtKEU7wXlBC|9! -z^gLfM@zY{soX6PBF`Mi`v6XFLb&o$?E=+(J(=V%rA;`B^2aOTU)hfC!9eQA0sl|&U -zc{0m9UKEW3OVxPMiKAPuE);st#%pZv6HEEQK0*a$Rhn@XO-9jp1<;{30e42T|2lxU -zRB=+g7GQS*OSjS>fwCg*V0a`}A -zoxt(bA_R?OOzBfnk@-|*(A`2BncTLe113no%|ZX%uc2pXY#468iVK!&g+Hrx31@m`Rn&JwzRv|6w9_^cG9 -zeyubiwmAtp4t<=Jh}F&ZOIxqu$;a3Ry(W3l`i;kb5`-GUBzH7yN+>caA?D*TDqSmV -zD7(~baX-zyJU;D;Zp&>S@0t}0N-X`DH9$RA^-sN-W>*OPq0(QD8rpMJ{UOyxk3}JI -zAJzWQXI^YN`q8FRzyGD%{o(HV2-|3>GL5-CDs3`+*ejvu)(Keu^LDcqVm!e3B{OTd -zky|Y{vaNrxigT?vcRE7 -zo>NIbxfcbbw67mIkB!1s6=TA+0CF!QX*fr}=CE>mkg1|21InNTV;bxLq-Na;VuQ-c -zC5~xfHI+z(Jp%WWw^$*)u_qi3dGVvGVn9_HnS-3SLJYI<%*(ZmoXSGlc9R?!Szu(^ -zaw5UYT-NVsKkOw=!%%rMP5OlJF(ueV28K)dVU35l3O?e0Y87uW_l -zJ16`dOjy0qqZr2$%n8L9-;i=dK(3R51U$4$)T}UPV=LHcvX$R|&~=txDRjs{s%;A` -zU%I4Q9l^%`p__4yvhW?hEanq;%B;Lq`TQT>ZMdh`j6#)-xf}rZ^%*U*9Y!=&N3b`# -zPgyUE8z*MvO~g;6F^r!*v#(qjk2RQc%O5W*x4A0gxv{4^W*7VM&v$)-8o4B9pmoJB -z$%pQ9cf(syEf!`)?l?UYK)!8lXZsV_%}e;wg05{o@t{Zrkxwft7Ty!{2hp1>I2Ev# -zk&THPuv^K5ZhWt`M9ltVKb>x2no3*%H!i(`@2A1KvA5Pg1b^{kD4U -zn+Ca%NCiwn!weP1RY@j;UJX1k+uM*j^w_z!TsBLI?pPM30fHE4(h?^bG1JU!yDHK -z)yNo^{-nK)4ETf$Jg_&$>MJ2v0A=j98}TZU -zsn`#?12Xx+?Zo&lK%a8+VU5=JjVxNxAZ``%%NUvhum@;m -z`|;=w2v7i+9^`P2krp+H?QJ?}F~@{q2BRUDwEPqaqhhbyxW7zE$iX=Fc5D!~%Eq@r -zx=s3;T3(ob%U$9-@@r^jGo|HPT03)$v-Sw61`^Q>Vp-!!=);x(2#xcQ$=ht>qx@D) -z@M?ABL|7?2!oNt^O=RM1);9$9(S_~2-C&sSUHS&CPKcWILLNB(RJx7(nz=?F@xhz2 -zwK`w~RJF_80S32GnaPl29N;~Z*-3^Vjit0SzgcG2B5BN~SSlyzV9%Yo*w?!W&mhZ{ -z^h9f{sbLExU;C>B9LPwE;*CMkkloa(t)i4|P)o-ejnbSw<#Y_%>U7|@%b8Pgv>pt! -z#U}4o8VUSjCtA+DM!81gBXI+epomnUTJq*}Wz7fyS;~EW(u_)H -z2b548##Gh)AlZcAth6oh=rc@}s~#S3h`AqQ_oNS%;1P9{NujzGtpeUJYULcu=x=yA -ztjoCt6!vU#-^ETCO_prnz;%i{K(~y|tqdoKu)|cN>-4d6lIfGT5&U{%PeZiF=>Prn -z#}^Jj1)sjQ1k$U5DTaWlQon<1R$u4MgHue=6X=$1jcUq;&b&E6>82^TjkGmD&Pv~{ -zj;1*$tr4fSa)WmBhe6Weo!w0O@oVJD`Ao9Kwe%>W0b~t=T?(?sfMC -z?DAc8GHOj&n~^fMdgHY-2b*5!N3_j=eg{{QlaLLCf;#moFUAoKP@xj3{B3uz7m&j};c{aKOXYe9v{i+X+(zB5=dEv(g=6HkJHCdV)Yp*0b^ -zt)$l{=U7D3C7gi#jJjL8lI-JzA9-JxAYK6pnT-{4x>& -zb3ECJzz#%L+%0+1*J)xf|`81(=7U>sdY52r{E2b>1f<2K)F0s!^zD -z8;t0Zw?D1ObGk9p?87^D~y3;6F`o#oLB~NAwd7BdTsHyu&vI^+S$}% -zhAMPRW*tU}_@1)>iA8D7MRH|}57_`4LN$E+`!{#MjL8^htBquUmEANzu*2Rn-usG2A_1SsbNG2+{ea3^yGK~E7lvG-MayK-9510>9v8;*vQ$z9juV` -zvywKm;`(}^*5XEbYmp82S@v}o<(;>LHAmm04RO*E{d5W*SsnB?76hv~c*3^7?q85# -z1-IQ=j%DkMWHL39zqD!8R73-p+t&C=r%WER&8f%?qfs3mIP+v -z{SB}q-0oCM03GoaRXt)N08tn3ZF1=$$h}0LsU>VcP17CzBSjD6ZaN3v`x-Uj0tsrD -zpv7#&zH}+1QLOqmjF;l3|NH-{8(%Yj -z|D$b2i@EB)abk2UDq+d1(@Ytc2XFy0pkxi=>SXVvGVHxiPs*A0CV8%>tR%=7RDIL7 -zFNcQKts5I(#rUZT=a^6k~w@6Q|p#(0ZuoNhhg^q`qslLw4fF@&q8n015TfAz*hSB -z`L>M4{&5?R&FsQ359Fl|dFBS-T*-CAIN8hn_E~9>?#8w6Z=cJzP}NLh8fAGN~{>Z75HUv -z=?7fW{pT`TKtu&5|MeeIs)FQcN<`q*v;PAY8eE}|Uk?A$2cNVeNKn$;GdWCi(2i<3 -zI^`a2{WNo7AmO^nBA_`%R(}JzU59SfnO{PS$o~b=RRT*AM$ipEqHoI~9`gSC;~#vD -z3|(#shIh!9sdz8;={e*cySFN5Lim@cQPvQVzHjd{^O4~!1Z{(tzvb8NR12tUVq#t -zUx(GgIlv1_dwDZa`aA7yA*>K@r?IA5>$c&G6q^`R2zs3S1zo8DV!7fEfOgTRG_g -zqe5fO^-ONv%$)7&B9i@D9R?z?z~JQs65Fn|I+$7lsaf#pjbqWRVw%1UWEKxDAw57p -zkpSi%AKH^-lHM@UOy!5DYw*=jEvW3k(Ap(I_8~)atI|Noh+CJN3 -z_q3LO{PRot4oA;jJ8wI@xV@wGGKXRCq2h8v`r$Q3#BO(;x@8R$Tb^&errDmhLsd&Z -zd}HK+tbiwW0u-U&k&YqdCOj$l^knHv+C;PG^o|cTPI*;A@6ijTv*@*`T5^MKW_ieI -zD`HO2fpm=Tka}L?a!8m6DHgcv>i;(G(UpYaOaK851z1DW*VrqfrN8V^@|z7^R(%qzsdFrG0A>XN+)kCT%tj5H{GXwc#qOJ$ge4d>s&)u)o3d3 -zb5EPzazqH%qbCh3l*Ao3;^SsEBoJ&PTJvg+w>R^X)70&YPnjn8$EpfH$&P`yDs|!l -z}Q`zk`JA`0RwbDoNje8 -z-{akj_?14{utr4=_zxzzgEzJfWU0dvP@yb;x?vA@?8HHV4p$Mm(1vY9b#}fJOQ&ru -zVtmhU&xYYCNVee!$Pk>5dD3ztqj7O})c3{#)j!W~)!Cq3s_sulp?H#wyN()Ydg5mf -zBrSRzu=TH(@(0onZqA`Lvble04;lUWvxq-_{Z1#8DR>+=#u)VV{+(PTKWi2UWeESE -z*3e`C4g4!P{q%Xd>X@$g(Et@LSmPnw@s?)tgi1Lbe853zIARsZn}U^&sswlyXs!}a -zLl)e*YkOS`pqvCQ?R0rd)*R{U0RtBZb28+(eOJ>*u;q7)ZOkOV!}zI>IUAS{)7CmL^ih%<@yldoB5E0BRS9w}Nf?JZ?SDD?@nQ98D+ieFW=m?x -zhED3p9#_j?@>c()xivjP_+chteQe*l(~&m;91nVMv0>X|(M+*AdoYkmg!WNO5NBw5 -zjej6eG}HXc2Xaf$IGc}$>10}YBuU|+(?fj8YdzezFE)YFR-r`$t-3Xy^FA^-96-06 -zyC{u>=&z@h_WR$TDr3lw9i8>ht_sE0kx7ZHH!N2)WP=XCrb_HC#MR|g61n1cZJ_39 -zttw?ljAV-n{;ED%OD^6UIhe3e5SQY_Z_hZz-%^T%&f;TVUeJB!Z+5XX6?vyF4=$yaTRV6IoV~4 -zt6G2wGJCV;{}QV;KIt~MyJs2wo0i_8U@o8T1QSuw-n>Wd^Jk -zq8V0CNJeZGoTepp^Q}HiSdqgDSUtrJeUcRd>Y{BVlaJR_#~}W$)50T~=FRVH`L*oo -z(jA}4RA`Uk>QK -zz1!Q6N>Zv&xiUPczLJ%^&xaLB>_ODM6%z(OI=V+$irukD;`t!A^7Q+) -zFwrF2$Il5oWAcDNbJ{wqKB{}Rq(oUeE`tfAM8%RT^uIVhWY_iZzDU&OK7G`k&&j@? -z&3~HCF-}i@7g)KvJV{nnv?kk6FnN4Bwq~nX(F8VJd!riQAs&x;Pf#|!vsw=TOWy`* -z=Rk4nll-fP1;0sHL>TR`0&)T@xh6M6BBah08DsfJHSljmUS`%&H& -z?G7?q^2NFQ%L8jcbsMP2nZ;Wi`!JC+q=CYFvTIO*MZ)P5X2eLpLcbHDBT+c+n6rvr -zQJA6oq&5n|ZvM6%V1hgL4RF$^1NpK&v$y&RxKx@9izUw`OSwyMPYH^lFmldpbiA|7 -zRt4nov08mVuC*5enj&FI&K|v9L={LPG-TXz3yv;934S|xyBoch8>hj(P07Y4>n+ri -zB(g>_!s3RW@>Ky6fqT-=vNNz2Xe%S?P39cE2fEk0-mOS?lIov;H6gRPLqErWiKJ;o -zC@x@oym96^=h{idZ$scFlLvCkY(I~Cbl`#Jr~+-aI?}To6P=$-0YE0i9BRUul_z0- -zW^#odNPRoU)}#!vVff_)E{A|&GE5GT60$b4)Mn?UN=b6^T;(%<9>5#L-;a=kRY=b; -z;P(n4{_v7vmi;WMKJ8TO?}a=Vb#1=_Ip5j*A!mBOyC=y6Z5cpzWp{@C_}_uZgVHrH -zd?G@4z`NFp+x4V%c^q$5Am?iY1|(>z`Oa%^Y$|g-D%{x@f}p+8t&)sUoJ@$H9JysO -zM|wo$YrK^`S8I%7oKzrRkGrTT<;U4H?Cz3n);6nMZ&^kLmD=c2j=*5Ab4p^l8wE)Qu -zNNb)PBH9>5odemRpV@-yxgWDd>&33oea`FR_h8;OrI-_iC#Wf^tbr)T#Q^NA00L<} -zPF2XO42dtC*unnN{Y|pBzhms9XJcU((8lmq9L8r-mvSvd6NBc|SIa -ze3Fzcr-(KU2%~A?fwCETJV-9`g5c3=9!9Nlk^wP7d_^;!@4h}z*Qc#8^?v^)Q-X>K -z)EHU?yc7w^6f=5zo5XXhSr@1xN`gmsU%N -zBe+(?TQT}2sj?c)5cQtRMOBUPmX#L*L&2?+`lCqdp-`bz2dxJZYPt{gPC3-2&(U(k -z(^~_27 -zXoR0fp{h`0k0!2>RCa2hgZ7|}btkhxeR3=d^#*CBN)&Zvb0Z?#CV3GOU#QI^$~Ixo0%_8gFjjAkSU0EXHCmYX!+STuf@@y*l+@S%6U7WvFs))D#Ya_MeXp+ -z)5*|?w_Hv~cF+V9ogD*Yt5ECu7NUmvxG;jGMv((23vIojctzZ#kDus9#9wUCk|T3t -zl$+VA%p6jYCWfK9;m4&~Til6gLN*ZI68Zs|v9KulIX+Li6Acnb_v1|}7ealoZv`_} -z>I`X#d~;!&{Tz?Gg;!#?HZp{|lz@5;F-QzYYiGHd(>wwD -zb&i)WBvHYeoha#`y2ccqKGw#g(YA}mQ45^p*c*g)OM^v~oAD?CpTVrUNbj+&~bZ8?DT7 -zpGUehYCB0CsOHR|GaHTuhTYfP%^U| -zdyi5F(!(x*c*`o-XM`0}#PJ?I@)YpolEZ`^Gnhf&$ic>nhN*{Tp0oXLC?UDWQ(70f -z8#%7e_@LKex|IPK8qbwO=ss3aJbH5W11u3VrXyH^h6%)@w{oUCH*(<@t?;_qe*SY= -z`kbrp*c=2)koJGk(-cv7E=)S(fsQtP$MlRtd_0!W9b`n}O>pI=##n#TKeSX%tMU$$ -za#?F&R%^5*bncQ(d1)qv88u;%(i^QcvwQ4wkf05{U{aD~4LTitbCaF$R-N|ejm-5G -z%oyvDJ{`Ktm4;_J86>Cs_2jAfHgtxdPvc$GZ8oAn-eVW5SVk0%>G9}=G|>_)`mCb~ -zhn0cPkiyp@-kM_=WvN=La7Z#djJiGEq_u;|D`b0N=P95ziIu+~f&7L?OX -zVWk}{nUATmxWHqZw4ZZUHQJGuLkw@19CVbl-q)`?ts`}j9@rO6!s?gm4@KccU>yz% -z2UXlGhLB8=gEG^0an#_XuKr=wR>nIv3b~qnR6h{5ZiD_g7V}|0oe|KY;&b-W7|QoA -z&UC#BKbe3MRIuGSz(*&u*8#QXpuYEeTHrsB#pWam5)wxAKxW^7mt@IDSZfLHv0GWb -zuuLOm(QtJVe9}Dx^^a>bdTB}q#K4f&ySF1+Ddc+uwr)vxqCWx|6PjcGjvKWO$1UR< -z?746ACu(33*8M;{OPjD#ZfI~fi;LaE=3?5YSqwJ7WeIqA_ZB)^GhX_qHwR=4eS;)M -zk}#5^H_i2^*#r9R<&VMicH^HUgoW-&$?3(vkXNjYVvn{MozRBnY`j4$mHjodA -z*phf6H@%4lUa-~u$R0i7Rc<_*cP$RyBBN1oxGBf)(HJpbU?nrDi*BjrDF`@ -zNu6pAs3vczOUjMJ!ksfzMKKIuY<|GELA$(s`?&L4hX+GKK8{#UZtXtFofzHcWHsfq -zu54j)y8-tf;;8aFcflb$bk-w+DH5v>sOgzGNXKjM`YEaDO!(FFhHlpQ1SgVeuI|(A=H{DOF2DQc>&b>aJvx6#--jq!^Z!N%@6E4IQXtQl-t`d>8Yq>DO -zm57?vJ{8NMuS6uo^LO?8 -z$3Or2G#Y<@ey@i2_2K_l-DOrd`3?Bco@^}JTdq07V;e~LJj9Rw^!sKAwUYo+tLdh@ -zeeuXzXsLBXnU??ggI!>@PI?9Z4hv%;fH0O!(Wq5x$Q}(6hk|`TuFFCej@s^)wu@IxJ?e``Us#6~HITyaXaOTbL5F7K&`tNOSxmc*UJS -z=+UlQ($>|=#RxFgzutN-s6#bcMK`9o(rQOmL(KZfqTz60iC`g4?mt~atGb|B*SBea -zqOmSaZ4Z7!@NhpCLBzVdtW?7r_s5MvcRgY=WzNu^+fnUdH^<5=I$y9C=Em+r2xOve%;3tEA(H2vOOzPP^V1kT-L^GkIs|N9R;+Ft&t&<3eX&wNLE^{v -z?*a<$9*uL7!(+f90qJ@F!J#ljZ+g>+vV;Sg56I4co5_wOF_%lZhPaWtu+pPw;BEk5 -zQ)1X_z|3%;*}0Ki2K@wWyOd=>v0Ib)i)fLO+l1f(*+0nKa&6i31a}n4PIzMjFhCHN -zg5J{DgyZ_#SuxGffZ_Zw(5C*|f)#9!n&EO*>ksby*d3$3!y7k3s0fp~sLIjCc%qYH -z>;DVO?$jH8l9?fyXvdQACI#cSoSkM7@s)}qN5;-7mvrX2k;jW{$smr#&L}kxYs@9P8;JcWtu?zPG;x5f525%3`50{#RQhj-2zLnU -zk<6KvAEF3V72hy`YJN_=#D*-m1V~TT=z|-?JbF;7cphT6Y{Bf5jxL>hZ`1za&T!px -z8Zc%@xA77?4C%I809!l~y2V_-!Ikx@iKdt1kDoW`-k>}CU<(YDVV*Nge)<%iQ?l3xJduatBpndGIzC}r9Gtj{;_kHs*{NdgV>dMcuvUqhz^70;FX`eV= -z0;_l#rQ2L#>DBEBUq(IP#`+kozKbpS9_&11!`vFOshk;=h%Zh{froc+t^5tdVr#>; -zK3d^MZA_tO*Jcy9s$v!^n-^k?sCp|B9wQD$P$dF+w08r5Hy1`dxm)+)x6|z+}VW3e|GBHz0?jU;@nY6d4ETek? -zx^Kz>arsR;!3kkgaXy39y0#pu#>0QQvmBE5;E)<=Rj-YYl}$&Lh;zIHFQn?e%~J!r -zWAew=1TI6^VRTj{5qWe~iH&>T^ -zShJ8|NwdqyG8yqF%ZuaEsXq_3_&Im0%&2j+I24*KE&c#5Whf+$5pckDHwS6iW*@Eb -zl&p6EJlv$!NId~~T@ZXD>`S00tJ91Y_?yNP*O`lHra{FM*=M|WNw3h7egFO)D_4}F -zXf%?YLE7PATnQgKx}<1Xe17Vi5u&BuTfv_jE45)cAtxDKhT=fMx;fg+M~BpuLIU_DIa)B$ -z!n`?zh`2UX1pzsW(F6xN4DW#~R$j*MKjM08j$4n;>4m|#!n!cJzCny&{ldHBwljxD -zg-uYqP+=;JMQRe>*J!NSq#OY*0F8P~9lPZ^4)^p-4$)@sW(*YVQDCnDr?{bI -zdU9051oKk!8C;{(_~xhq%rSR>5JBrZg6HVzz(h`wd3rXXwMvLqtTS1hD-S*GHxeeP -zzK$E}Sj%%^Z32PX?;K-{g0;rsTWr%9t#))| -zO_F_=l&fckT?6`@IB8!PTAU7fDUM@jv~QkfQu59t7t7?$2-6ipZ9T}SK1&#b>8!x+ -zXl)fC#jM#x6j{(AL8opsnaru$X=G4W+D%i%a+8y{^EW`<0G}JSKY$$;iKdV>TLpYD -zgqtbr%AfAJpzlJjPS-+s-8Q&xC#Du;e -zaTSsshX>n`P{Ho84$6w0jV9}B?0{6IQyW71CPf{4t32BZ1ueHFwn -z5VOo@zF`iU18r?3{lm!xA>%zz)RWogQh&hG7xEVE`5HQgZ9nG-x^CPlRJw6F&FfE2 -zVP0Hg)aYm$u=uDpQgX8$* -ze76(~YC&pW<`LN1Nt2}4iD+;x -zjQynjJpm-iKE|Ckl7KR=62nrv+KN0>2OwdCa=;4(IX48$B<&q*fOD?Okv*eIX<3|X -z2ngIm&<)TqN=8P@?Q964Y^OHXVDil%2Q&1BXi4{wy!^&4l -z;yD|xn6>2K*36t{IxRc6$@GKM(=YfM#ax$ -zqzSEGS%SO-((^?Zq+;+e1FqWuOsR1MA!f-x -z#pN3MC`HDBIq12tGwcN_3nNaXFh#`ZP|6U#2B0AS4~y -zNVWpJcloZH%^e+>{W`zi=xIAZv}q?WQi-Hh_@cXCbHr5kC$jWtOodof>%}GXs3QO~ -z75q3k&f0N76#WCt6Z&Ijh*AG#h~|^YkL8d$L=6UpxoAqK4Kd9E1cf+&R^ZO0msLRo -zPz!V7SQF&{OK4X^+~B_xa9B6}#b_I8-56&*2^61nC1845cht0eq4QT5LpuiT5P?QF -z7w#~Bvx(r$a`(wRn5wz4q;E{F)(6^~6~t(40Ug%_RZ`F>0IvvlKl!bw>#ln^)^=}q -zlXIW`*Dt -zzACboz@~P$+FOC=FUl0SQ@xQG(RGN7S&QrOF*CUsPmGOyT}}Z}-8KeY4l=~VU+EZl -z08r}uHz54#{83L%kgX=F -zI{HxiR7%4mXj(xirp-iBLQS$h;y3x%fchY -zWH@;YB-Z)p;pTF_c6dZ{ujOqRA#;$Sa?`-WG5=mZrst(KGhGJCD?B!R2HbB%Fg3wd -zkaV%RW&|pukl~m5-x2EJLKBGXp?Hq2ss-2!rKOq`_Kdtj-tq=WoXjkA#=!-y+HDQ$ -zZar$NA|h+PWB-nYIr~AuTeWHVEHw0VY6o5xKVI?A^qzT$OQ=;a%-}0p092QITbFS@hEpdIsT46sTWbtbYNj?1_KBRC0y%4O -zLi0hY0S+1$wkMQOnz_o&c~0B*{a605{bIgu65S*BVs7c92eTPosHV9`z3GJVH>0W1 -z>o1w8bSrS~BFRJy(TWiE(>xNv0+=OA=DHMNjLwk<%5+!ehQaT90CHM|6%C-@(_-qJ -zqAuJ!!2C3z{WXSzt!EPaRmRm%hc66Kd?bS&8sj?t#8^?26;B^3Ucs!$&@$i#KAcYJVT~HeU -zqB_-* -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 -z;53y3 -zgBxn$w`j)av1C2;&!kI@R6jI2ctHe&mPZ(Y8-6AdDC`8bZ;;MCy>ml -zxNXwDNLwlFc$NG!ujMudiOR2RXFHP|(ZLRJQ_c=1_Z24HQY(l6z7hln?4&?^}cZZ%ol7&d>#EjRpgqEIUctq9$emWmyDkVFRQ!#B|D4>qiOG~Sht$NI=O8L -z1=fbZ#we1<*rRy_$SE`LXL`ZMc$3XN9iQCkHY7mxaReIUU?v!dZZWkPC=1TehMKg% -z>qUgU0gVY+-b}mTAa@QX2e86Y%sz6p!d#wZ(`7|o&)(# -z^Ar+(IW$)V_fko-6fIe3Z!GkshZ(tn#K5NHrQ)4+Xo=aBtu%1zM_`N>H{63nfys_$ -z$1uGlVC3lC($2;Yo1o(2Tj$iAz3je19BDk;XKvvlY-}LO4k}Q-C?iGgjvC%GW+~?aKv7N&n?yJ!FK2nM9ENPJ=4z#MV+AK&R8xHIiNKc_6 -zpZ!fTtPj6GjWI&!w++bKv9-X7gX!Q@aDrmPyhr0%Vw!nW1k|vBjA`4gO8aqwdGGb{LxzWmDA{2tVxTv7$iS;0}HCX`h0+;uPFL%0{KE^QW<@; -ztfi+PT7%XEKnM)1Y<(4a76Af{iRy0f-FuGEpm`@gv;h(p`K=-Gxk-<<2QC>NMWtb3 -zAaYzI9z!w2)!b6kjVuoHm@(5Lo2-%EDama5T_^bI4A+jzG2|{9Pd<5!9bSq;-se)$*8scC -z9jQv9=G?sUZNiL2*}zLP2-Lf_lJLay)G|-*Izfib-E<}n=nOjdv{m##^mZXN=ZwM{;+ym1_O=-% -z9YK(c>&V$DvSD)Ho-ypv&u+^JC>Vf-kWBThXV@xP7GYVo+w+)iP&7)+!ATG9c}Zpi -zt*JcVky$(lkLiZo6kHYlB+b#EzRf6raF%-@UPSQ==;Gmx?a&EC6ejpvgTUwqPn -z1hWulgMlBd1bEyPO7HI&B_n(UwSKr58-`cOG7p!AzN--rU?SK4{d<)#kw^r8HeTNs -zTVzoZR#Ukcm*we0%>B@3v-Dz`&C;{{N -z$w59L0^zC|1QdBi0AytL99itP1wX1LU676+)~`tCv$5Kp@Ds`LUHHrHq`8~mHiJlB -zJwT^$qo^Xe;eWeTP?L835;ly9Jlh`z1QFlA3+U8D_R}glhQn(3cZuXXvqVN%F8514 -zV$ZY+pixj>2NjaFIWfj)o# -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 -zKzHd)_bTuQ$*IQv>7;K9Ra|o2?t -zh)y(bt97_*mDTnX1Fizp)GlsBA0h0NuT35CwMv+{21@Wm9)$y<4Al5t=!-$)rDWwQ -zIr~*b(EG;^Xx{&ruN9yvah1siHXaPPEgl=!2dUU!6Zn2b?s6uXsrLGY9$8Mo16++Z -zYVUJ>-L_}~X<1MVuj^hDU#jsqX#r2<7!z7W6G$pd-tb5{b!{);<@>PF5LcNk{{omV -ziF@a|ks%ByqnF=1X8NB%0MU~ktL7#>8M}c~;yhVgFwhiTfo#VO3A?eUi9i{?`lX0G -zF44}!#P44FK;_mK)Gy!TyiL{@H+V4PXxjieQ=?_T=Of-p#IKF-W>y5GtH{33gm$Tw -zdOE&MUForKPkn)P%0G6yLzCTTeX>iXx -z3YglH`;`*n;&SdiNOhzW*@vXU*(FO&IK -zfaL;~_3q>~a*P@I{@N>Im86cQQeh}>7yBJ-Ty3)(tU{slyEGKi48!-*XxeMMKPM70x5Z -zUKKWAN_*OoB91&NN4i&{X#}ebK#f-Lg#X7f7QDAAKr%G|08%xB{!sML8%2uXhLd)y -z7%;|L6n?+68O{NDTCD{(5}68LVFT~BK+GVd3S)mSd!R37E`u_W$12cif`;Q141FVg -zx(Q(+T!3bzd6=KFT6bBJLLRznnKaoaLuP6RqPVjvA|AL)iD8jB=Hfyi2QaEjClD-T -z+PRM@Hl{=0Dqm1tz=zxRhdLFCdLiMUdY;8I)=(DzjlMU8SUiNQM8p_@i&M(E(nlpV -zRx6WvaQFfVKm}riZa3S(VVEP9*IB4!wx)Pj39|~rl6~0HyQ;331vkGGr=bnfbf;RhOfeoJlA%4rA*eM!DasrF -z3bSc4-h2-@ThvLZIx?9G^G;Z -z25=vXl^JirsHXsZNt@290vY9?4IZ0})wDHoK4`BYRCTnim8?ml;N8HzP>$?pBqs0V -zJUk>PY5u`ci@RCT((VKVMeT@bAsx6{-2iur2>>$?6ks6jz9OdwNj)||lQ!r4U^H|r -zfW5U+Glm|6q6`w4j^tu}q9J)rHV_+`+KR~;WlP`u{*7wc0vK58yF$Yq2ta5ECbvM7dy=~0uIb4eO`-jOL|bUaQIHaiJH06Uy0NK4PZ=h%RF#5Hmc25Gy1>FI%2IEsE|q>V -zFXu3S`~6iNjkcT)VIm13rCGG{MhEatrIb9-c1fmrYkuk{qI(t%s@CwOM*DQaszag* -zK9B`)rZADKMb~w(oylLL_XemEK{6og#hA+LXd4(MjM|7UvXjAT6AnW~-iwy&$}hN% -zV{e|@H`z%5d#VwQK*FQThY_L7w}#E&hD}N5=%72SK>I;ke1Frb6<=bF$tQI?{bi6I -zml@+)yMST1psN1PC~e#I8|ibzoHmiY<;Q2^--{dKfsfaLALRh;*mk;HrHK!kh{ycb -z!Hh7KKSPG3FMovx%3mQV2*$j*yL=Dy;%@r*%h-> -zO++v#@xEm^02#gqWGb&0l(8Rw8GCuChr9dt@4t%6fs^j_BoFgWc%S|<`g%kBUzGZU -zm&-8urr-bA`}p8M0p#oG9+S*tOWofTUz{sQub@pDq#!j%ds`|W$*6n()bcf>j6r70g@mI -z=Kv-LGp9X$>(K!KEwbdw{ceU6Mx&7+ptGLCF~HSKYz`l>BYix>a7<_`02@axe+Ip3 -z#(B@|(2W=FCN+pqn7r+3J4^?1k}{u+ToEg$L{$=hJIPkQr$|5B7mwc0s3~}$*w*NN -zFacZx#gl>(t)jvL(NT~38*qBDZNp8EY>o%At`M`cpH%)1!JML(z67S22zP{R{7mK* -zjvLcJy-S3ubjGQGR=N)nA<^W336|ablAp!h+Q)`~9T#F(pFK9NpwAg%X -zj!&g<`~LUEx*x|akY#)|`2na$3Wxj^QjS)#yr3RIJte+H3}X!aEr?U -ztRV8Pv~oCQAK1c+ao`vO3h4dgPiRQI*4d}T!^8z*Ee8$Ys~3n6OxK|lm~wk~=M7D} -zV*h9rI4YbPV3j@QEs?r%2(X|}^c~(47)j)~=TLpCrLqXZNei#xPqX34f1~N_(n_-} -z#(VOuk2NRdgzu^iUwQ^$#nDcofxEv=?4oFw{J385fb~=IbWK8_|0u#IIt*+-Eat;q -zqJ6D0E^XzAMDxm#15-buIl8$`07gnIJ|yPTV!8*q1#WSzB~Hd%H<;Uk30v`^2>4KA5SG!Q?bFZ!DJGXo-rxUbU>1lA$N2><#$?<_X;%?o -zszi!mqsP)%UYo(7T1&@rmnqt;t=H8%=vO=@(1;lcsu)8ULeQa9jC;+lAv^*zLN8kb -z^lWcdMcR3(V>Tft=!+?bO6#Iv@2X?R%Aht1lo|}R9J(fla7=KWHDifs@eo90+?YP9 -z2?ehiS01 -zNT$jol5=_!Q0nr3QZld&2z#SBJ|#ih)pd9PJ@7&ytCbyyyVe>V -z)R_5B{>d&D#y*XxN>9*C$DF`}N|q7wXGaFJ5kX1f=%@$9dCJDoaCl{hM1Rtrn%71l -zUmS&GM_6|daT`g=k^x}UH3*qKk>ilvNe}etzF58c%@9we-Hvl6yk8@r+R^9Apz#4^ -z(AuM52*S|-BU%Is&=MlkpHS{+cQ;)B*&o}kz*CIvZSZp63{slI>D(uafNk+2k?!y* -zcA2Qj5YspvN)}knW=^rPb4zo}2${)WEkgi76H4-@WQLB}q2Fi7l>oe9v7 -zq^=l^lx*f5?R6H)+ECW5-4Y|S{VqFdN7IjU^ICI~NdhqkG)6LwXw{dN(W8$re#Q|f -z4p_0YG*0G9NbuzCfzovj&U*wkJ_Ropl?)=P4K~v%L^bIxe3U4<;JyFYx%mqUb6X4`Tu4xch(aIF>E~h#=2iP*yK+gL+T6D$g>I<;J|h>m7yD1&CVcJ)_@d9B%L$q0Z6gZ_&FY$st&>C409N#kR*RCDH27T#|Qtr6*u*P@Z}Wq`KMbzpzJ1{sj#wO>IqP(-zB2Qc^|`LQ#25U5=$ -zL*$Y52F$rbr-?-;?b?uRM7JyQ7NA8eHYhVJpKqwk0VRTYHl|_9oE;{!gwxHGux+| -zrgUN%q&A3WuB2@RP}y7wY~uf1_9TEEQ|&e7YWnB>S4O$7&?@M&cp<3;;k75)(~Ls` -zGUUm|ShUdulcg8yRSQwj1c58vNYZX;WpfW; -zT3=2Gmz7T_Y?`~Y88DV_^8lL}_rs?%?&QPf{f5H%vz(U#lT449aeXyQ7xJ&D%^Xn< -zPOkM>?(z!c+B3_y^QCN4KH^$}WIfX@z;ETH!KQH6!t0nb-cr>sBs;y`1&LhR-n5#Y -z&r#;Q8o`>w(nd}}$vK26FJK)y(mUWAmQnOcv)h}Ie4p&Fz{urdDwKMwe0NRD;YK4v -zCI=L~=(-Lodhy!>Wu|z=x64D4;kU_zC_86f1`0X0`gZhsAtXXMf+b%m&qe2isE%{v -z77K0su*w|{+lt!Z_Fvlis(8t`p_z8u%Nwcjf+G}7F7kmi@rn1H4$2i$({zRF%+OE- -zl4w~Y2@Zva2QF#3K;f;BpOv481~wG8Z#{W@zN~VpYt(?_P`^rc&Y?5~uFK*DLQ -zcpa4xWEBVjX!;)WmpS;By#=UrI&ar2>F8zp`^zK+TEPz8Q`RIJ)*6Ke^dyC>C`OCN -zBh&7QxhQ^7az{$ZmPaI)PQoQ@jBsYGH)w-?0DR(l5!%u??UOW`ve?Ub$a0~a$EhM+ -z!YSK%F;)zSyD@1CK8De3@Fz)=ZkM@95|fPSH{YPb7EpV^y{uOqgxlN7k%Ym^ -zNAmO>JII5EjX0M>4|tgg@s0;M+HgPe0juN7uW_@ESq&0ML0#Ea?jHfh1I>*AIq}Hx -z(7#dpUUWk>4pXr$X!_l**Jn`#X{d+B5+H}ZmO!dWRFuD?QsMpkuirYbR;QASnjf)& -zPAp09g4kj%#S+LAWuISR@*DE_T%mrOc!0?3KlGV?(jcH^`T7PmTH}zvPSR&23CyhO -zkRP63F8~p3(lMf9y_jL&sqB*@a8#~47nRpKFQpE&F08Hl%C86Iw9g!!2e_sLPDiz9M1W`j|8&trgakMA*7xp>^&!VTZ022@X -zUjSC%5D1fM%6T64*ru>o=!&BYZ;mT1k5SHi<4!_dmAObCittYEo&3hS}$x_sn-XpBDs>;erf`(U=RcGOZ9SY;S -zR+XAxOYfLa?IJ>ZW&$W3-QL|DJ!krXIw|2&Yao19I-T<8?eb=ItZaGakrMe;M#@bf -zBMXFgV_j=N0RlG1eEr1@*&N|u;E_O5nZ%}4dKSMLD!{Jkk^mr=PNT{#hUl`JVgh7( -z*Lz&>BFd%SOCm!4j^kd)DIJ@5$)=VMB&%L-IzGG-%jJdBZwEO8CR`ZZIXldJ$h)DO -z{s7{}i$z!53~B(`8PL{F8!stWY)oUgl8od+JKeE4ZxtGbNGc9<>`l>Bj+*A_BD4Z) -zmi&v6!I09?L!9)yYJu;uha2hP&2>@LT#CW5EnUcOl7dr$=l(?NNt{ig-#FwTpRif2 -zaC16YFHW7+yUirvpe2oCUDf%f#k$O5 -zPL6d}Zds&B$mJ?_Gz`Oz!03T@v?j30{$7-2?-x^tLHeXYY+BM60*rmqq&*XASQlOzz7L`7PH2AD1kMUNu)?A!?go`4cDpUz* -zIcVLmoJ&tX)v`{D*_nJrd*Wp`!mWWZzj(_W%KcBw4sq2W29?~otj7UqruFo>0x78$^nW>x~fjiUQ~EZcO;J3E|KFCiBDhF -z4VU}&pd;%=Rqy~y#WWMNU=dj#7Z{;AO*QdsrF0UGuyzYi9!Y-j^|s#Jt7SVhEU2u9 -z2jH!+UXz`(&>A37cfmNOF)|ux8`DcrL-=Kg@w4uC?Iv-LG0bI3xyF7cTgrNWN!5qF -zHAH1m92O-gK^IHM!p4g9#OlA`l^Xj%DFuO<^5VRM6(GNh3pWI6iyFu8`ehcS>L^PX -zk}ahdqGxvBUt*Ko_WC;h40 -zbt5H08|s$6Bgdus*hs05=;A4okq9l_k`%N+6XG_tRqpTC!@i9%3GSjqGo6%CDQNA^(W4 -z7o*84D#k8Gt@JL_XF#9DbziST@60+Ziy>?Zn1a``N&PTc3_QS{4_86I!K`u@3ssu# -zWBcjbmivBmH0~R%7>zc_s^ZA;HIik!gGn+CvmCAVQ~JA{LevgR`bm!g-hMe@yhM`C -zJjwHp0Y>UIWX_FTWO{c{;oy3BKPE!N{eT`Rxk}=h%BAG1qonhAr`$Z=M_*M2yM_!B9YwH7#f!vc%iv -zyOzPaymt1M+{o_5CC<(tj7TJqUlEJ!hkO9Va8;{3zFrgWJjPP2w78AUrIgP+c6~CK -z)|!M3`EGrhNei}e=+R<$=o@j5!Jp|eeLT|4gd3?U{5$i)>3|EFKm078MNY9J$gAt! -zl{qV9L_j-Gy0$v@I;SKpkVnV?Y*erTHmUsW#T}1_@^Ldyk!D@;2~jp`5pl(+{?_GE -zEC?fQnY1e)1W4YH{c~M5E67kSRFUim{$NLv;`;pP!JA%eLxwqKnWH5pGC-!ZL8x$3 -zI_dfEbK;i`;GZgm -z%NkxoyF2=XX^Y;nNZr@N%d_fjaKMlG?uwIuGv-0#>KLDe2M>UUN$2u`=KKpa7?S09 -zCpqCOlP@+<@if2-B=fJBo4aMmlQm-#HO=KAM-I1Zpq>L2$l=nunc|S@{vloSNjQov -zEyyn<74)Wcl)hQe;XRmJ=#trg07UGjB`1&3sLc1bk_(0Ld -zY}R9n^2zXJfR_Tz1_QU)ubi+v^|cn-{Q-=F(O8KejWJqv -zkr7Vc-*Ptd0obUS{PMRhj_tR{a1^Tvq`@1T?zJKIJ(l$1AG?xHKJKI_kma$dyEA&H -z{C#SO9@3N!G_!+Ud^)f>7C*;8m?P5Sw0eg$)Ck!%{_O5)RF+j%^wvsnemD^aix$BUHr-YmdZ{W+qZZKX%Cr7DcBZv5EhKE6UyUU?)mfQPsZhX -zXAa(RgWir`;foRCr{T#cs4WX%20W$tJGhiS$85p3VNLcpNayef+6O_@78Lzrg|%?* -zfIT*~G{wrbR>4O9PuuhfXpLP!$uqKOw?2L5vtk^LL}x{|SP$r)9MeoS+#x^t@(qZkN*w0{5w0^m=iF5|KNl5Wv_zYC%$ -zj{p0aI{IqbdR*jP32}VnjuAFd$X+1>r0aK5&Y!k3&6F>aBtV+I2klpySg|Goqmw%u -ztN4{#Ze%veW?aIi9Fu^8oE4G~i}%~GPD<|-T2kLZ>PEQ|R8eJQ)ml%S-@dU_;$8(s -z4r>|C#XYgH6DI&*kgc0TK)`_mxZj^{c|$uEnmYsV^byKv9skRxcLxeJc1N?MS$-LI -zpbWw9i`lVNhD^pral%;$WVU=)uG3Ek#v#@YzPVyxFeGV{0NJ$vf{|$filU+2lkqi1 -z)M9JU&~3F#0cADq-j0r+cneGfHTiG#{5BV^bR1FatPLC`4$iS|xnu0lW*-=E;c2^K -zzN80N57cx@vc+WNU -zGVxHPi?cVQ-FJF((p|^KHS7YJ1$jxneu4*U84W9P(PdK{q7N<~(F%j&Jl2z?J9kRg -z^1%8519pIJIS*> -zW%H5&OqxF@h5Go|X&)cj`Acg9&6+t1ic)z$>^B&T{JLe?)bQwA)MO+(dHm+rrt-9I -z$T$(&Ndewf4i<)2r6s~_=Aq+%2ebjuzn}j2GTsh^==uEud=C*1^#FqLd%tK`+hc%^kSr`>|M-Hq1f+MT!d0Ft|W -zlTg&k98tIFI$qgkj^YmyKV#cOVEX%r&$-jVI8{y^*s22M&Nc7|NVw6mzRW -zdSjWRoG2QMkx#Ua%C3;f6$TRc6SnqpI=3pdT;jjOCAm_94M(u_Oq*sO>QG>WLHN+l -zUA$o&EoeOxwjE%MMUG#mC;;w6T70~|FcFVGdA>8JZL3uF^mKz;22Z+;{vIJ*#BM~q -zNdtT@QGpIJuqHsGJ7WVV#-5~^$Vn+b6OO{Ec4KToMkg9JXA@d9mSH(LD -z4FO#q<7l#xEnIx6MHL3zM*_3s4jtJ(hz$vxQS!L4SW}bo5GPvq&3JebO=N4l|4<_m -z6o=XPfkxU#tst1!PsTD|KW~6DW)#Xbbf3ssc(o>DGimo&33imW3ChzlKoG6(QD4y9 -zzw2V)MHS>hMgRZ+xT*EFLrGJ_mVBEX{bcFg&6%|6{d=P5Udd@;9wOO=;klr~E5#cy -zC-;PJ$DAGY8q|_wZjQo1eB1kkY(FEfj-E{+2b%y-Ws6fN`@}r(>%p;$!U&Hjg(bJu -zJM;(xL2ko_A9_a%ywTqox#Xq>zp^S5Ne0pOS1 -zKFH^WkG5uZg2fLrI=wGofiXv_vYcbv2Cnjq)1>K5az+{x*C4>w)vc4$W>Nh271g0Z -zXBj}bnpnIdQqYUR0wc&gThA1&M#jmEKR%2wgPhV8vY274u5BEoRB4+S(PrY&vwC8146;E31GH#dd{CmB8cXua+i=g`4^dFcso+Kjoa^` -z4un>1Qudo#+F_o?BG^EF!h3E826Jb-eTXVjS3w3*J8^HWc3aG1x -zzWopBTcoe{D73ibPB3Ulspx{f-aPGbhc4tybO0s`K;1JHSnmMROd6^3YNrDKgTdaI -zixJbJk)Ka;Xi|Z?uLdKp8^{Gf2eK-Z*{$e*DfxN?^PUm8$@qc8Y~ak_O7aMxKdhT1 -z{S!-s&w#RM!78bxiFrZ`-!O)m=KAP+q -zdHRBT&EMKWEigYP6QW60+buu2%T^pSc(0^^ZUs9gVt!Mvzl=ugGl4R|*}6@}(a6-m -zZfE>{ERMLb%EfBk$SbGoFdR3q-I{pybGb=BtI0RXF6NLm_x_6U$b8Cd|Lz|95BQyI -zPHb;78bNYqo&0bOP%pSc{;Lf^`iC1*X$w@*5(#UlBJd@w-B?%7HZ#klY;*lA$ -zC2(S~b@Wr(*Pkv!Hu4Evt`03AFAT3jbXr--9KqKkGslrP*pzKDv-nHoSl{iX!|-_9 -zZdh12IX)MGf+(EN)-`a-iqAzoYP{XCkbAI%Zk6o5_0CM75-uXE*4C55mMNB2~k2K -zu^T`ucV9#_6yr|OBsR2u%I`YzjhceF2VY4$4ylmYv;|&7e{_}q2rm*Iz&!;rA1h;3Xvsiz#=icjo3~I&9}#{_$@|| -zMB7v_nIS`24mXNB^lcl%k}3cN{Q1Xs6AcZ=kp=Za-oaXd!%&BzZ=#FdU1I;&(Y)?s+G?6ydL3(kb -zjd5_`&L~)TU9mU#nC6s`pq(C`{SD))A^hCj;I^CyMX}5eWL6|6;nSec>C*`q1F&70 -z@eCA|YzQQIWK{1jibsBmBUa=syqUVRMj32n0hh)m_$-ec -z%%K;RiZI$DiMw&i!&|zO-V(5#4~;$!47{JvxWZl4F~=c)S`urH4|b0xuMCK9{;Lia -zxUEYQXE|olP1-jWzY-R^h|vn2s0IeW#2yHnUFtQDtw1p39ECE4kxlgkxEUWwMF#nN -zgEhB6kpgS4Wm*zWIYMxToqhD;J?_XKuo-I`kU1OZiF<8=i2i6DZC-8f0KWtovSk4t -z7c~s_vJz8@%p*X;QxIE7xkv#9Q;;L4>eW)&tF*4IP$9pajdFXU-)uH)oZjT-#2(*!XoVX)U)lP*;P0nk@)$4jy?LcBm=(hEYqOV4m -zF0tJij}PhEnid!kGIXwCuzD_3A97U;0l;bC -zeqO3~JbF0m{?_wFD#t7yeuSY77!(rbQB^wwi`{B+zJgl#9aGtW#>d;P#umy2P+&l4 -zkw@=Iq^Um2?gVpY-H4E*jSc!DDx6H{<&$U@oUq7yvP; -zeb7$vtehtsq#edNAl~|rt6&VQfosoHhbj`<@jy1?Zdv~4Q{~`RvlF~(m~TPdmfvnn -z)^uEZ(H9k*O@A2VVilfltu%xpR%R2VfrizN>ro&u!(*l0Rqw`gu-{u`WfOseXlV;m -zOl(62WaPy}Vf$$LsaaAnsZCZ(j_FJ?Qu4S=nJJj7RlH{Sb~hZY)>Wha^DGOzH9K8f -z3Wu?!Q_(cw-uHXXU&^p}#;Jzfjmp(5J}0U%P63nvBo|Z}I*`n#nw#@RN(w2q+k>&~ -z`5Y1=`stR3 -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 -z6%yCr`;qBTN@X$|kHoi?oSbA -z+_Cc!YP*4j(%L8ynBXK9tBCepoWoDhB$|d8TM&i6)RTNNAdX*eK=GT4e61^hUrBBv -zW7&nLmVga=LJQd4tf|krs&60i2-WtFZv45?PhD02B?}1bpdkC(3+Tm1JBjFgG^_S$ -zuXSZP)%~p+1s68W%(4AB=Ko`C8UGw>*FVST5&szD`r6mu9sV41|8c$P>(4Qi!sgA2 -zIp|IHklB+%x_u;-q}3r0R9+<4A3g@@c&o~I1AGG30J$CDz2qYmT}63@=*Sni7B2V9 -zhJm(YbHNbV|H&Q$6hoNUHn%pkBW*J-eSWJA5a^h17u0XsJd6lcj!mhZ{RJ`&Skb4~ -zdzI@!K7j%?g~cvF+&igr4zd+JH1(eR1X3T_Dkm3mjfQDk(p50cPI*v|$I#rfdrm(4&mX${hexM?X#M#9x118c-hbFV -zk|!3wWWW9U{-ceW9PRZb4Xv6dL#r0)WA=+(=I2nSEB;*sW9axV`vIILnIgIq1wiPv -z-27WT>K~6?OO%`X@$0+pVK2`~zJTTmf4v~5JpNTdiXV}04a>Od*^k}k#Ga7uAeSrB -z=tpsr+RIiye*D(gOMB-rJ!~{RgB5Brp78e5wgkO<>oJClZbg%-CyHgpOLs6jv3AU_ -zK?6tpH|a^T*}w8Y)7lIB_^zG%9;@8%a2O7LAQ -zE?w+(c}BniRj#s%vX-S9&OL -zmY!9I6J`$jHQ;#*iKW)8Z3o*1{CBI+9>7&$XZ#OA$XyRGt{AXyVS -zi%Zz8=8oLM&RZlY?nWXjP1>*uA---Z^FZGyohw{`k&fzTae#`ybl|t*Ae7%(#`1FG -zH|c6ieKFjZmpJV1iE -z*dI+yOxX3HXV8WODwcQ~A3y)TY$xQ7+rY&o2z*$;;o*1Ggvi|>RCl|^MIc5}-Wi$l -ziNOeV>C!p2yyov6h?@~mUpd>I`1_bGnoMbwbO3*5d!YVR8-s3cx-l1YdUdI%Xv -zWUiblwdC2=sRqE=Ut4Q`RkPLTX`U3U00lOkdzPVdfGLh3jt6m8;j>omYX{U)0c*|K -zSc4ob;?c%Lcg1tmA5l}g#Fc=x5NZ&+UTkD3q%I)t6~DeH(=iz4M7p&hR}-)NWD1pk -zCH)dEt1H~MVxS~EG0g(nnlrAW@*5tAU3X{Zp*5v2cz%g4ijH}70d5z-V6}0wdpLa_ -zR^-~KRill?o6GhQD0*nOl}v?gGhVQ#weO~&^^s}MCJ4VA`Kv&d<(wHaYLrtbyVQvv -zRlXzspajb2!GkQUT=gXUE+xSim{!Qd1oqhlEEDn6aw+zE&T^PPpW(UYCevc@jonIs -zL8Zb-MFe$mgS4CREG|!e8miGSdOp^HRXu -zWWEE&9VsCFmFcTEHG%xUatEA$QY6wE1z^Qtcu)7z1%_KO!^e@=1=c5F_Itet<7;>= -z>3hKyX7Kw0PySIGs5y7I=fI2`Z=gt#1Km>C_C_+N14q{*#Y*;9`J?;;iutGUgHA3% -z_guxZb8~@N-6LUzM=MGtahoL^a$Ueg(_EKto?kgYWiF`BJCa}j5T{7g@@X9uhj-VE0k@Yf`CFQB-uv;Y_)iISRW?g2tp -zLRuu)cLSq5(AD~qt9n$yP$U(z`%!PbgdQKQ)33G@CuGG!d~|Da3pa~A45xm3te$$> -zsMN5JN$Gmpu%afq1do2~o2E(W=ENd=|4~vDyuZ6tR`GZ~r+0};JW<6bl%7H00&>m& -zKr-yGecv>dN!j2VE7k$Nx4Eo-oDYAGC1EH>sk3-Oea9TF=_<1~B_6hcHal{8R!b}l -zHW#bI7=PrpYO(+js5FP2EN0)3#L1i};550glr;AHIOnGOLsO<+TPORl^YBuICGN^}4PULBL7TPUt(pK0W-E(#ier_G`a!0^(pKoPicFMI;z#mHGD8%6FSPF=2d -zPVol5WR6AfVYSBWnsGOz_S}>)R~k>1z?i_%RY_=a2+K+$G|I#z+ZU&+H2)>_Wg_?gh#d2LGIV&*N({2* -zQJJ!8^4(YNn6}cc70P6J%d0gAS-S?;B67P#kz}|>k7OU0GtB(CmSsq5mEDIOlCS>~ -zoC!=jb1AKe!xheE5o{Bk0($)MP;i@b@nryfA(;(T&Pgdr%JuGy*4#Au_wTuFszTYz -z`odRugoeAIjWjgY2M0|+?3W-c1tByy1k)B|90VA2G!JYGOCyQoKf_b?pXJEoC?%*x -zxB6#ur;1lx^H$-$&YF|mNUAoM}Z!bjMN!9gq0vb5$_5(Q^Uw7 -z?LhAOzp?@uZo5@vD;04uV@RUhO{h90%0`uv&O^WWuoGvvRel1u(ZVUYbDito-b|GoKd -z3SOVyILJ*j-)nvn!#dhixc$B+*;P5TI&bz_72Ph)FZ#+6@SMB6>+6$@uu=#hBF|C0 -zhi{tVt7ss~Kf}g3XKevQy~P)cbjB3`KmoOqI|v`S)(sHqUes$2CuYvG2nlABAU}Uj{X~ -zmX6DGN*V;zGweu%1F>-prP94v4vQSG*~Usl#^dmL|bHyzhtBzlW?+9(M3X)>n{Br7#5O)_-Jk>uHb?VX=* -zjKX48(TmqOvqbSQHp@@k*r7V@){Ds`WR;GgiK0dQgo0kCOc*o~#cGM;{%grf+mNG!&A%0a#=1to -z{w1d9rumEq7q0`W$I#CiDxd_jlu4vhcZ3L3s7nk0A+p)hKTYg%OOBd^+9@A+=c!jGa)q)&SCMZ -z)=SGzyJhRi|M2WxwqUP+Xf`52e!OsYAP;0Kf?7U4p8Y`;XmFC%Uk-Oa{^EvFapKoC4K!tp`TNIWz -z9H1?0YguRlI0`j6Bn1v?VDTgV!K(Es#X_v0U4f?34E&TrRQtr*IfZQ>xGlNDx -zxXJR)fvO}LO7Q%Juy*0=bxAyDk{GEExN}efaNsCdWp`C=I{us7#>|O``$nVTbab>A -z)DP%lYN{hAb&Te-9}MOA*id__21lf+)d}T+|GOcp%zP*59O|qn=m6v%FcSTKBby2Q -z7s$UOU%tcYY#CY-9s4F&klsY;uM&Q)p#wnk8(j8>VmjvdDjYzhZwj&ksY)pdj_LVDvg;8E)I@4*6WAoWNA9n?%_OCBT`HNe -z0FrnH%e9LBuH5DuY%{Dq>9&v$6d!h)GT{}AaaWDfgQs@OrAm71_m)>U9}IrMNrN?U -z+_^g@`NjhNhVS0!h5F1xfZ*1WV%wysIu!F)@Cuk{LS~Sy_K9nfxk?pbBXWN>D@=x9 -zg~oQ)$ATBM-)YGipBycKn{#FY*1cvm_ujhw=CU}}K4Te-^1~~imNaB&OEorN<8!=v -z>(?V?%b6c(?z+QDQkg|dZyHiBaQ}tj^8v6rM-g(rD2gg_qZXO27d(TVzK+f-IUvU# -zzA2fzjFXJ@jlYofL)p4rMG&QoW{8iZrBD0mWEha@vJbdyfh6uedV#n>)$e(2QoxDi -zz;t1a+=^tv81St-cOn8sn^mfwJ0c?L85LDVn3{)t`PWnF*GP`Eu(PAtck%_2))L2B -z0$YFbtEbRTvPo?o(i5%mAb43-R1SXY^s~183is{^Wq)T+TTkqgJH3gZx|>Yy^=u9` -zQ|25UC~CI4^{B*olZCy|``CJJ_mSf`_{Nc*+wb2#Q5l8clu8HpP_9_9)jtro*sKhbfjGmfMY{(m#cGhg`LJOXeo^=d4KC;yD4-boqtbshkL5DSyo0;)Zzw%v#N-6UgP&1scWtjhke+-Sa -zP(_34$fI)WL2szCs>t{6-@mUSL-bFq3INpSM|gk#@m(YJ@9)2Vm!Ew6+!hZ0@U=dE -z)mpTNIFFvPF|Rr~fZ2*scEtvs##*u22Pg3cg?_|TJSAcqLa&z%aF5KUNQXFk{@x4Rff)A5x@ZWR?+ -z3T459)^+qr>#9n%UhDXRrUN;lYX{_c&$&j76=b7u)M<kGh;(;u4Ouk$RYA_ -z;aHat!mnsrs?!VJ@8x9fcY5?>1Gu9J<+i}FdoM0a$FU5!VBp^$bUOlNTm@oU?!Us%b-zm$#Az)=W` -z3MiEM7LKmV=~fhx()|FBvAK*CNokBoZ*N&x+L2XepjI`iQJ%%3hcXyPSKs`&UIyI0 -z{drcs|Mll!@q{*1Xn`91vB$8j!ShPQC{t2y{QvMp!x@+2z@HRjV} -za$@aBr*U#WbIpY{?qDMo_XNzF`EtFD=F{bV3CC=y>`9VAI2ygsUf$}?DlrATYImZP -zt-NZrlD#BTT&+LUu(FSSk#Ul@bM4VaLUPQCx6u^IGBw|}pvaX!fHe5v{kHD^Tn38o -zfc1S$J&<-Jp%#CKN9c&Hj^fTSxLa;j!!=ykSs3`m@QdW5Px`~r -z|84~+Iq-fQD16IDTjS&zi^(){9xCr@NqDHF7;O=GMsD5v))5KPVMVB0u!NK@~cY2sG?s5HmN38 -zM#M`2UWHaztC){XDc-c!J=t+-0L*{ulxpA+{L9-}fFyJ*PjqBXP}NLjZ)*hL?(Wt4 -z)Uo+hg(2ajXb|-0orAT-t)j?j>s^bo#W5rok;a!LcwNa!J8+*lrxhjEKu65rBS%Qx -zlyU*iH?ZVN9hnASrxQCb-}HL_Ng+h9=j|*RSoQcl7wHup{fQUs5(;pZ%Sm1Vs|X&o{Tifh5VB>~;w_;I3}W -zE~{B5m^tOw!Dc=qPHey3c)#|Xt<2MBW97?ieCvzl#}K_99tiV$$|>zbT^j-LbrlK= -zi=PUpB)OFX9_8}nwA9Ga{PDpTB5RsGkWfNP<_Aj`>$FItqY*;NkfOKe0dijI@`SZi -zzD*Dc(pkw$bxb(pWE)%tdnW92Ttky(wBdK0Qk5o?aKW#lLk8)i#c!<1Gz6q9dZxn~ -zlbcxazE2ChiB0EkbFlImKE|89TpNRd0VRU4tnx^4k?uwpZaAL+CQ2~%b+@uH8Mb6> -z@+*&pt#~yw&9QyN*y=#czl60+mKY)td>`wHqQm_8cKiA3`{mv@8tDJkzq1w88~}B@ -zaj8u)&pi4zZTi=QQghV;GV&khHsZmrYuYoUh1AjeQV)|60|?69q@`3_${5MIl0-3RVW*gHh@v^vFK-Nhp)&c5EP^o-i3X4}__qRmd>+kVrS6tv8_hU9jK{_f!S^n!rCYb)Yl%`#K+s`FC_i|W#{1-R& -zLr}GUX<3_oPzkuF$&<-73FDd-{C -zFT*XT_+=nhwzYMF{3EeS4_V9@Mv6(mVK#}#kfwD~if|brk+1j&W1nmJXj135EsDfFp7;r^+t#Ct -z+el+OiU2FkqP5dq3M;1Ew}y(K%Ye=g2wH@ae9bz>QK=%yPNsL0=>g$uzc$0)0@b6-|nH=#^w$kWZR*(*>D -z(1%f6i9SF{T=wK`q`a{>wtru~(_W9d-CqaRpQT0Iks9=`y0inT0HQl~w8rx3S8kmZ -zFT3Ed=kW(1bG#~WjD)>ZR@}QfI@10YPvnyPSJ&k-7~{yIQ$GpM=Xf#1bm;OcJW{?* -za+`~X-hTWl=V1F5)?K$=#7;i -zqhZOPw+3L}TP$NRJt8+`(dJ+3T~5sP4U(p)6)QgHN;9tJ%B5>Py0rS(T^e=$6w0sB -zEuDtBj2*|+q4}pGxOR&3(P8RI3{^Ix-0a&kdhga-B|m45u5o%Es;l+=ixS0zFa{QnKwtZ% -z_%(9)StfsV?B5^XFX#OG>yP8|4s7(Vm$SZJFZ1^7re&KQ_P&V75v4f&MLD -zQ23Xz`D9OpdkYib^Af`RY>?wkiv%SBCK%JS^PmNH(uh}{2|iFT!*mP~!Ok_s(!?k? -z%rKrQ?jFb>gJS#fpGCzbvL^X4_*hb3ay%5G@{>1u*#!J~45cl@Ae7)KZ_H5|ZrObs -zEQG-a?|+q(GkkoP7~1grGVJEl?DbGz5#{yWaBq>RDL!V5)<6+u6(z{jy#3k>^?R0W`F!HU&Wr3B7;Hc -zp?>?T)vxO7j}2(jqK1TQO{8yd0gvM-U$Jmm*YD)ihE=~ta%UyWY%aXFk<;Ho-($E5 -z?hN~Ab+q2Kg-RLy7x^E>Z?w0u@H)q?$~h`Y$H6UGI*_Sv&fnTv@g69`nJzoUk>{2~3o45|rX=GNF{EfZF}|H*w-E(drf_iSA0 -zmB_%AKSlIUSDKI|{R -zj_*$CY96C?@`ZgnDy*AQ*iFMFBrpv{6n>h@=iz`TQmHVX^lWUqYw?T>Nj%O5XaR*# -zUa3K-H;gYs9R9qHt+V8IZGh9GNO`Ua=7UDjsoEwQdB)g|DNG@qeQAvW^UjwIkgA!k -zhvi+^m~8BqPf|BOAHkN+Uf#5R*gYIgn5UCFn*JQ%cYbU&H{4$4QV)KWPR?|9=!ep_ -z15`xl$zRgEGM#T>qyIv;m+$%H!lW!vrxPWvoub4{r^h;S|2Ef`91gHhI^SiMqsseTZG@7q`ah&#`LPN-yNKkT?IOCX -z^oWbbp`-r$l5Bd|b+(#BiKY_ia1YgC9A0zhCqXcp(T!3lYQ94Mf!}+r1DXQ>n3F)# -z!-L!+6EHGVyfPU8kCkv6;s~Vmb1Vk1b4x)mMAyqNq6uI@8Q36Q2wwC&*#z08@W_m&e!Ut`TlWP5NBnJFE(eID*Br&k@F?E72Ec< -z8tbVY6xV(k;@+3*5ay7E{ygdR9A4fiV?7p0%;+zm+ki=RUneLoe(aP?V<~C}c>u0A -z3a0W-)FN41MEde_AcA4?u8~$A%7wl(ZLUD@BR8anDlc--@J!-pv6`hSg5HatH-|pI -zKWqwkwA=_lQrL)bvy+Ri_ss^m(3mw2XAO0DFCKyn<=vYGEu#c_jX(>#Cp-Kwu6S-b -z!W}bBB_C-DGJU@L22poC1N;qhm&)`Octo5DRGxZspv&0yUng#t -zGcSciI@kuQR?&gNI9%8cFD4s;)&F}05W?;+<5E~%zO=P4lxbOxWR8^W`7)Bp+)x@K -zZ8|Zht`@SVxAHP{c)3WNT&hL0p~ra1H|q#rlaIHv?qh1cUyhb+mK5h$j;@T5FUOJ) -ziIzw4ME{am_^&H$hJPdZBgF)x_?6})uX(9Ru>~$i|FJdYgT)&g`&!mIukR#}I%RI; -zgSGq+NLgU5(51BgDD9~AhbjB@ukw7pI!SZkz8x0Oa;LTQrX -zC|-yRuoI@o%S9i{ad{JEx{zF^p9Kv_{p-Da##;DEFp=ornqup}Y9Q&R9zO0dEx#fo -z$0d|VgRg;Nu%*3*$5!9D@p7%%9phfp103Z8$?(&cLmGrH${sPs>oWf){aP$<3&&|8 -z(^l=^`S=&bvw~w}E;cghfbu4bK;1eP0W@fpZZyIgDTG2rZvwOcoc*@O^HNv8#@Loc -zTXeiX!84;r`~L7GWY%)ua!Y6_Ti5LYe@+eZm7IV&Y7=&Ge@9o9xv3S&=He+O=uw6l -z)_WH3>pd8@^7<^7Bgf&3gq0i@ua5?b1LvyWA7AP3a_!@oo>ATo4sxy+s3W$)HaDS~ -zMl)LFrT-Y;$`8Unzu&*d$vAbOR~5R -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 -zx7E`2*r -zJf6GkPt*uscVESLTQ5Jh&WK~_c^ph~yr8bTj!Osr)Dq+qpohl)@d>!Gug@A{zWV^Y -zuyx@3^q2dgeZ&oSFB_;skj8PJc8R#njGOY;$wKk^Em(nUft4$ViSy>|<()rJeJwX~ -zA(VW%B7K>WNE5y+`2vgv^!oht%4oyCSUU{~V}|2h@=%;#hY*0eD1;X9zUzzTZlQ2i -zV0c}%5l3wP&<`A%z|>vNrA1Y9p53$bc)45JVDyFQ2M8*Is7Etga`x~+>3-s}+7D*HX6 -zh51owE_Sk@V%=Y39%Om;2QR*6$zuJ7h&(*Ckn9v?(rEVC9rlOOB|8kxsn7ESU!y -zNl9Io<{B`!;b9lnXAind_jTQ_Ql<}R>+*5Q8E(9KN>{q{W`cWBTCwRa|8#!SN5xo$ -z`Y;j=FPj)E0DK^f_g_9n^B+XZyh+!fimH^|fv$WtjcBdtb^n-m)NRE1#geLHW=rbb -zIlgE;Da63CP0#ZMD?cqZMth9i9JAFP6lB>3R`>YR>%s(xJ^iw37>j&+_0bsGT&<$( -z(xC^|m0G+wk|(pw<3-Up&{d5WojAJn>P4XgZM=r}KCzS^>?TxDR;3wN(PR|uSAZUB -z6M|z9(OBE+YZ2@A4OED1oC)9~DfTI}-XCYB2GWVNYO5wMYUw -zN2?`EkIzcc>eothVw;n=1Y3D{-hHOmauVrpzLv -zGGjg-qw==GhO$e|7W&il%j46o=(gPa@ve!npbXQGS!2|5RsYnRX?DfZA1eLjsL?%F -z)gMxD^jH)d_fhQ+edficqaST5_4{AC-5>6*kFbrFEz_{uqtaHxhrJSdZk>SjUvD>S -zQN{z*Uox|X9=X+WBis51!#J0VbF+hGTOM>^%~Dc`-Wy?+#yR7g5vdn7nQ; -z;U3l0N@c|{lU^u9(V&a$`6O&{2Ez*Ii-cq*heiFe$qdu1!(_Hk`FeYl1+=>ko{)$s -zlVq}sO7@}*0<)e&s`AG#UWC=1{5%VJ`2rxeRumCyh2-G+O5&8St`nA8EFU!T#E -z+hIg&bp(y0`;_&vxN%~7-oyY!8pDX%GY!jy`dEWGxBT(4aescQ?ER)nZ{*{EpKz6Xe_0cD6r(;Jkz{t?An46Ay}P5c#ySV&Oe8 -zkr2Jff?NS>83~!V0l}3_=*IV2PQ)}&_S5MWrl~{+aO2V|G;f4ejTOi%m|&yd&mbc?ApHmJx%VI`d6V4CL&Z`Ro~iH#Zt5psyILsh}}-pKxJk -zoxwJ8p28;ng&??g*oWI_>^QV#A`dp -zk2xO_cJNejIayrlF#pSP3u&_s=xV8*_fC$ySmbhu>QpcXD82%hCp>^CkSXhrCMsJF -zzuL68;sR(?JZ4ZK2$u9D62e7m~8{5aZkAzM;R5Y)Y-eUD!Ui<@;@^#`_J+ -z2thD1zsSDi{1#1`P--Zsj%-F{OX@nyA#%Kz9Q%~xop@Nc4+)Cja$r=jU3ct -zZ^s5V&9SFD!!dPvzaX -zubFi85g)uMTPp=dKvjFq9l&rKm6;4Y#sS_lnVn<^(pbt&^P6RwEt1A;ilvHz4))xc -z>wUeO@C>qCNl&y!pBlDM61Trfz=4dkDBc(p4cSet+A7N32DNmo(YVdoQ%=X=uTBSk -zyPP={N9)0GTWs=frIEldcB19XYn010J`zI!S-$kLK@{1lJ|97*0S&sC(lT*cD>rC2e;6{W)F|FHscxu@(faMv=WchPAOWN0?0ZfmIYUhT496!RN3!Lx)oZAN8c|Jz -zu}M}AVz(+G$S&ViC!^eiwHYa6D>+^}bFk@keni_0XnAlYMG4tZsHs!064NF4%A^x$ -z7Q%QV%}c*@s7*efvx}Mc@jUY3sQs;d# -zhOm!c;2edDHpYnq^^cBUo!*-5_~x)M!i2Do8+s?WutFV3HUZ=)%ZX(W7Xmz>s@E2O -z3)||vtes6QW~f59Wcp!LiSIcJkm!`=Tqjp{`H&5;AymW1zkhQR%$SUEw%SMrh`Hda -zo1cy`D;`OlS~H}Of~h_KmMmJxL<6wdz=W;=AyAM4e=SA(C-()1$*gaXxX`@jx5p%@ -zP!Mzx(#;6|`|Tguq=1+(5T#>HJtM;8J~kGjC&v?rvEF#?-VM&{?t%DDuMO13#?lTF -zVFj+AmA#o2*VhBJ7B|vci)^^hvbDRY@Vq6&Ir<)Lh?AD+r&9>Y>Y%r=AXv@86SnJbwGxVm_6lS>al?j>4HEnx$Kn(pu)DS8-p(>d_o*Qf~> -zNKm^3EoNi*rAr}=VgO -z@u74-dh3n4)^HHEA>3x*i6B7BApCASdsuV(nL6wMPDVRt3EF&%HQ0qG$54`XdHamU -z^Gn+l4Pdhd14k!ZsDL~4LUBG1u1+GC&8zJOGVv$bFLFtCv}Tl<(T6vrmpM*ysAy{E -z^!1OQ={3?T;PmMR -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 -zjmkG969MGL2~-t&nVlLjQ~7Lv~#c?~6oj -z?$$@?`JC+Q+5D&J9OLxlcY&3w%adePMQgJC1f|EPV{5jG6-{8n)ncUC#n7ka1%0{ -zJG68Rm`IvdgyI6W#~UY~bGn^W{5AycGkGAr%=YuRM+ZV^jw;Y*t0O(jG12+S6aa8S -z%%LWnS$PuXXQo)_f!DWlY)vW=8wO!c5OW9^Cd1?aJ0WW`%WigF3Y8=+&xJnY=K<7F -z{QU?yScMD?!+x(2;twxLX4%i8>eEie{$9v~QP=h>kn^3*A9AMmyL*yM(5?YwS9WIz -zkpCWtJSb@cgD4_|2h?jVx?N9Nm&fr|1#-SdAVGq!n(w^!MyoQ{qk^7&Aqd(V?<&a{ -zMazWv$&p)Tb)-i`zQ$YSbG61O#z_Sh_PC3hQlgwq!|pEGW^J?D^_FF1XsL}p

P+ -zI;SKyU1lgo7-^Eogi>xXTTig{& -zp=$(XSjlTWI~+R;qcg+{sG@pj`F8=iv7$Melv!mS{mHT9hq~3D_a&`-cp2nkb!w=R -zA$u%~nD=9&_$Nu(a*AlvfH3+N9;lq5$Ajb|F9;s3=3&$-Cm9eU#8))q`R?ljrG45B -zQ}6d*G9@UQK$)Qx!AqTxOfh4)H-5ZZrfazbV5HO<<1M -z(uBl?Q`EVeher5$6tD_q_UPjpNoA)VI%p5tSa&iD)F;QXP;Zb{szgy&Ha8-&ZITxu -z@rCj{k}R!PT1EH3vbjfk8L^du7Tswp83wn?51b(AQIB<~F~r_7@F}3T>NU@Xc*_-aWCu+!(b+LTwhHC0Zy{=!k82}HY7{weve4EW>Q}@~`uK^4 -zMEu1DEjcnb#=4oU(99tfX<`_v8-83Wx5b@^CS(KQEdd~q84HV&pX2kSJJBG4G(g^@ -zcp=mW`&KYxrPPp?$Tt_Z+0XH~TlfVD>J4R;O=_&VGq^qCIjFFhyY-YBSN3J+S*n^% -zh#k{Ra!;3YMZcytb_8$_Dj2QWaFkpSHocbYF0P%}aqr1s!A{VJXd?ruOBJZ+5QD^U -zw0xEeI?WTXU*~xFLJ}1O+KHPEs%uQ)>0@m?dTqOCWVJv`UfvFY*U*~&z=*Hunz7xX -zEq7@x#bs6#Hjnw-v+31nyxpM`<=?|c^A#Ut20XED#4s0^PZFM5Ur_gf)U8zq@k^T- -z*ud6?|01yqDm55o5QI9;ank|Cd+0-2MsX7p$e5N1j0hR5R@;I?Ppf$2;@%EuY&zfq -z@C^h9y3yhs_j#mCqr8*Ufoi^O3fMYWU2Jl5SRBt{qMccTTy&)D??sJJ;n@DK|MP#j -z|A$^#`~Uqv{`WWLEpSb0d7l3F|KI<%9D9%22U5%~fRD?n+GoTWQV8-MJrWmi?UDzD -zzBAZG-^k;}5{K=Fb)VD!Z>TA`$5YxFxkEXw&-kGCW6G9685+;kMCeFX**tpk{sT-C -zG^-dt|;?;09rv_br(?7I!POJP5ld@cEq*m*;B$n=yk$Gt_gZf-WF9&leRGqY@K&An=Z)<56@(e7(2&#D!rq#L8fE!f-|krR=st;eCvQ01 -zIjeqI{xI>#Wpg3VUmP~gC9oPzDHoL3O<|=iE~${IvOvLOo3zJsR=wJh+Cxxpm!x!* -zJm1%^JFO%2nI5PuYZ8RNl!GWZFCy*mU^vR+X0eQ9iX60?wveMJCw2M{tF|}Zu~EqP -z?4vq{Fn$~K)Un(T`{|6D7FD3Lmu6AEfAOyCRcOlusGx!|&k;X5ncWcRK?i-l-_rvB -zfwVSfRgj@D{s*!H2fQT9M#6kcD3IOC0*8ehX^)1>mEffAA*jP#qxnm7G@uNI_};x8 -z(Mlm_B(S+l$`m~lNTJXi^LN~+g*k2+-(cW8% -zMUy`9OuRD^)}kv&!8vN>k>H8Fyyzh+>-n^hxWvS`n%z;W&M&sFN_+l$>Awk91t&3< -zU7^^#&q_=@SDbBeesWeuH_(4@N -zg5ys)$X8*bUH5*a&{UvBpFZ3=bR$%9hsCT>@K-nZY%0 -zY{jA)16YVQcN17+)b>VY1KE?6`;1oE&Q9FTlU0udG1m{T5h+D-`jDpa4VD`F>gcyf -zk!1em2Kns{fV9T*x1uZZ4Q8@HST7wz6Hn@8bA&ayPhC=OBo^+RvMQ=$0B!RF&JJ4W -z<=e-d-#T0x67q4xa&l|;N&dy?J}0X)r*&lulUoqDClN=L-?=jm>7uh95nYkseL#`V -z%uzdDd)H4%O>f%vpLDwIM1Q{{sB_nH!+Hdw+O9EM5-j{?Sb`&7{eVJyoDZ_X*yF}T -zsUw1Q#a#`WaMC7Em=yn6D7>T{m=N8pTdS}Msv2sg47k`;?0aMTU647MO!~D -zvN3eC1}r$URCBqXZZ|jIRDA4@J>gE*H@de&ACn8MPIlnsORgKkKt`!G`*1S$>6{%@ -zf%K+q!g*_f;heA{ra+r*L&KGbtX=De5x+zjt@f#U4wZg4fk2m{U65U((uW~*turOi -zoCl-mgfHEyxiB^pM=ZH(>_mG{g|0lrlIeDj%__x4$CyV>3PS*>OfL+M*eKi9bH}xG -z&WH>M2p2M!7<%t@!+*`U+f)zhU!T9L-#`BP+o#d^`}2D>ysr=cPj#1B;cPfiMSHTb -zY;U>d43BLf;qws3`qS^50oP7~Q>~_(?)JqajiI&I5p`Ss=MVOY**fVJ6Fe-8j{qK7 -zGDV}7u_2u_NMH)~0r@fuS&WzB9zUV%WoNn0SJdT$4Q{MNgj=Y(Q6tUqi{KS^0<}jwaY#Ba4Q^fjokRctwVjtF+7unst4f1}GZq%+!|QH$)TnV-b|ByUR*7ym8Om7ry)avF!C)e{gMxW?n$j1E= -z2ZTw`V1Z;Pc5T8XN7bHl#u`O_;ElmcSLKO;SoP1vp*^F?T`^jeMqB0#?YSM*9(HrA -zydw4mdtq+uK7?0x+PlW%!fdClqaVU2a#X2#)NN%Fo_+)N56KKJWf>y5;<;vt@jX9{ -z=+kXmL#9K(=4Hj|w((4s|JN5Q1ym@0eE%+3;qK8mCrLd9Arj!8_a7V^LpY~5jVMbv -zpc{eg{I{9xND_0owrhwRxeF^jibnDVfH)=My#|C0_nDm=Np8?j(6&oy2UNc`iPne~ -zDY;FEHjw>;R4x~rJx@?dk?e#wHUJj{aVqF74OTcV$ek7E3>_KH4+CxL|5~tu_fa#1 -z&T2iwogcen)OUE}&IlD@QYck9+89r?R&4#hVcDH}!%s3ZBsJ|=GTx+u{Fc+zEF!*A -zmE_2HT4kV>N53_`3~2qd*Z(}HBLz!=B+2fbg7rv%t#Z#NLrP3Y -zps%(2V8fSlMZ(%TLxvS4w46`}c%_PTQrE+QT3;2cBn!FB-C2JKc{XH0d~tW7egbGo -z0KT}f2z*LcHCHRq-0ypeehao>TvUNzD5 -za{Tf0ChZ(_XCG{Vp;XM17150mP^^fuBzv8lq25|65$YXAhx9M4AVj#2J=V7<*=+_t -zxaD4OK88Qsn?YUqSymRW?nqwV1LW-!$4g)pFQaszD_Xs}9pTFu3EWs8qZNFyCEtUz -zhisTzLpGH&qY?qfX(=%B4lbU*fp2VW*w#mT+^C%@^z7Pw;#O76VrBC}j1gsUMFs?w -zD)#Q0xSs=8kj9f-pDLOp&@F{-UPP)G6hoEAxT50ZZA52nJ$SMLP|GJj2J^_A@U5l4 -zq3W>o;CDBk3;{BbkGrcm4^D%?U0N6kpk`m4-378TSVJ8OYXuoHOa&+kdSEyB>g=-H -zJh4KyQYQ>Fic}_MD#;zB6C-o^7Nur%FF^cFNg=MsNhdhraVpMd09)6VL)CcrPj{9> -z@*W&=C9UeU@v*Y$s1k9GcVLKA-M4vaV0TRZ*qXp~X&P7l_GmYe7{j938|Zm;Qq3u% -zu&Tr8gIVIh!A*{wm3vN3BGZY=438CfPH{$z=ATsk%Ep*TM$bCobP -zjuwYP_oc-jK(P#k#4!R6xbEg4E!*s)HKUUC4$z02^d6}v0Iv&zZ-jjbL}hiF(H4Kx -zc;Y&9b#mn#Km$;}BrKe&s4RX|xP0i>hxh745| -zN!TS52nf?No90@+2kZ`Hx~&iBbD5gl*L%)!J}0r891N#VPj6v^#qD)Vvnps12}9?j -z%;YCLzNf1=Zb+gO=yGHp&B*E`o-Z$Ku*=7wzA??47Gxw%~dd-5O$&K53S;!6H= -z60F=(2)q^41H2(u998^D*aJAIp+6k`Pf?(b28dT>b*%qnpXnRAXnPZ@-0#jTR8|iJ -z#{?`u5v`lHUr36R#vaEM_dh0Wn7_{@BKUT$66Iu$P(O>mq7_D{jwkV{HXf@qU}~ip -zSgZk$O|IB#$X#S2k@?XfSEVokeo2lNOtdg>4k02g7F9t&&SEsdftJI2Ad8ik@%xXs -z-kRgqqnmnRfUdAEjJR*GBUr!i?zj)lp>tsqBrlYl3XzeTg!eTXnKmg$01iN-9#h9| -zxsJmoi-Yt0VsST5FwA%+c#d$#Dyh6wx4fI+gUphPw=5gF)Sjekdu -zvoYeM1o@?l#tLHA<~^+fx1FlqlLo+gzgb&|_xhw4j49w)+(Xd1Q-i8l%+~kE}_u?~;=DOuTF0pA%>C3qy<3AurW(?2Pu! -z(@aX$ -z6%k|sAebLW=WWd8DQyvviP2y*KfSMl_yuB?`AkF1L31Fmt)zcAxgZ?92daEBDP3w9 -zSo%WVqF-M_$FS|^96{HOJB3O&E~k0@$tlc>YmA~DE-^}#J#5A`Q3Vzs)rO{wEGSta -z2s9jsC#yzB%opIh6`_ib<-pPcWO3PP<=4Uy%f$~Q93!ZQ|)WT-0Gid>dL -zLh`E@6;3nsiKNTtn$v<#Mq9U2z56DoH$N!xhJt9Nd}-)l8>l2RE6%63-4QoG}Ke -zFvLk3G8vn1G$VpuD)epJ#aq|^)6Rc?sGsQ`hKgjq$>6=Vp6{TQmeyLutXzE9Jc3Ou -zp^neZb^LoIhxfz54%1>zga-YzIV-UIa-+@v!&j|K^_!$HmOW-oF6{xNo=<6;-HZou -zbgEl0txt}?O0GMKDVz;r-EQv=l{4I4M>mHAD@+cyMKO>w#ev@|M(UsNBU0LupNrU$m%PlBV09Y*Ya3 -zijZ5$+@yt~S`n>Qj4)>Cb{o(uHLxJ;E%~RoenTInNI@`HJ(qrly})f@Op3Wl1*vYp -z=hBTjvtvjqxKCg{Qrt+N#t8wc0&3d@_Nu -z98#&M(ZMhmZR@1Crdgn(5E#%J-I)}%YK#C1V$LLM<{WSe?P{1D{C7eZ>!$y(;zn9G -z#%)g$#wX7 -zmzWC>p|M)>bq*M08VLo|PY(EoYK>pB;`9os6`4<0XRX#>T!br-03F8-p$f8De&@bPU7*XnFn{IDd8is3$MU=dadC=2@PMk3sM{ -zE^aimV2t_#%mc^8qw#Ua9DwO4j%_-1beCHleW-n^t>F>0wIDXr=DS3GDePx?eC$m= -zobm;iJegp-x29`82AuzqP&6^bNzVLbA)8{xoID1y>wNTZb2(o-T%@_zdN+)aeaLva -zY2e|Qq%R-S^U|7`E(7Hi9-BS`?l&U3ngA_Gy4YMZMwRi*@Js#o2=#E`62$gU&_`F* -z0{w+rQ%w_l#%3Y+c>`!prXM=v-~!k6wuXnd9<`Mfk$K;-!^gs$9i!l_{Iq-)8hSc4 -z3@?ixulQ$r&pgEPEa5|=R7_p^t!%_whH361SG(&DxEd4R#E-ruTq{^=a2_ops>{8t -z%fKIFu9JvV9+{)9H7F@XRGSAyMNUS|9*Lj|%n~IN -zVu~7E0m$3mn|a*PR7MQ8?0MPHlmX|y3IQKYUBY` -zS&+7k<2fyGLx4*>o>A(0_(>$PLI#X3s0|QOooY#PK%;pS7G5FSioAbtx{M&tkY`1o -z1%izxicrO&by@222MJridEdGOG8;amqye~LXnG-I*g`0>c-+2;<<5mKoM9ttiqqqA -zkH$5g8ZWt(1J6n48S-Jb+zJ>qZq+0YdYqkxSjonECd-Ee3RzD;_yH1H3+oV(N{e6X -z8tInI(nw1Wb;06MKT}!cMCR$(s9Yo)w(hrJjk|zB6}zV7Qv?nNIic&yEG49)Y1PW| -zii>oQDkfTEcu*2-9<5Xm%f4F^vC-Z&92kvE%~u`!%hrKBhP{*ynqx|R!y8$Y5=toYCOgY# -zRUZepdc~nX7sF>@r$K{9w&!UV3=zxQ?b5S(MkO?91EOOqI>=C>@U@TAY3tU_b&DLyVjb}bI;a|Pm7D* -zX!|DhdRqEZPl|g4f~0D-7F`5aed5PL)I(b6+OTtcU)r#F1eorbU?a>IWM=ZJ;{cjx1<Pt+Jq!Xd3H5;GOti&Nq`N@xHL1)GM1ZYLr0Zb^Ou -z=vARd!c4Xq@D&FxWlXXh5TA=T7(moCk-f!iMk2;wIcV*TsP`HPsw+NA2_*gvJRB%0 -zvX{yrw^mk68u->T+waH%fvYl64kU0_M*2ps%(4ivm@Tx(Fy37ZY -z_^=49GeIdQu??Dj0}I{|l&gh=aF*L`{K~MYc(+%UE$$s53*rEmYIl9r*dx8$1~oXE -za6erh;6xqi$e24#1YX6M3I(@Pc9cVpye~Pl5Hh9LrzQX7j*+S$>tp&OCKeYGs!V7t -z-PmL;dlsbHN~pB4sK|R!qZKPTsq)r`SK?s25}D#!_JBcnzAG`0>fUA_UJ8?$uOJxYJ=f;}j*Vu93yKG_(p3~% -zH7$=nvER2{QJ5P*x56yu=41s(OOr*$A -zEWvCNbAs*(Kl}ZM1wsIu24Z3(H+2Hvh4>#=os9mospSta(8ym5$jTav4{wV*H~F&- -zh*Jm`BKofB%AvM=)plE$W@j@kv?0XKDT-~G5nD?V8v~a=xK)Dx9`hKzN0PnpQ(AP8 -zXi$Te$;oJi@Op5N1ho=ne56lWFbN^n+s8rfI{n;{|E_c#Olva61#$NAon)iy&h2@O -zaUf;==>*%6{DVHM`{|Q^nF^p3kzRW+I3jLcnHg78VsWhiF<%=4ur!7I&y*rY5>p}{ -zvCV6gh8Sp#Hfg*+8Ssm2UT=$lOWO-9ziZ^ETMwXEt=rR!TtlP{X``(`MnPUUhKAd< -ztgm0tD9RxtEExg1P2Q2UE7H1KdK3_d$&gfl6$_x;Tspc*ZJthVn@M$y+ANG(<9F&2 -zyGDS&8eKgg?3+xBbP};Z_M|PCB~I-DVbPH>?sn7|;Ipe! -zxfy(WWwXVf2&Mc9eNaFgk~N2<)5kmh!kYx%Fl@ei9LPsNE3^}OJ$m0wu%rkUKxbgA -z+g)bTdXTwzE1F9!bfAns!?EL$OdS>GSFp!;?5OWaL%dTsAjAk=Na9D= -z;9K~cn?jaj9`+lppxMl}YGp`*8(DZ{+9TIK@P5WizDYn4Dpa!VJ-syejH?eMEdzrE -z;0Cu*K4&8v+6i~}(80|e5@F7b=vyF;yxqj0x;XH5AEJa -zKAGjt;6RXoI0-2j@OIHnN$Wipy?g8em!=vIsHpq>8#pHD_X9UkREVB1zRxO!R9;I) -z`UWE%K(nPaVn<}CK7>I7I0f|qisO}gAoOppU%g3%ktdUSokcQ}^6&WX&tC$*p`@Cl6_25vY0(5X@PEj6Qx>Nj -zxzpW$6V?{9a@e2Xf(Fq$o;2AitOybk8z(l((Uu4T4`l}cKHfn(pC*=TbBm3kP!&lb -zGCmX+rg{7zSyem7-eC0up-r)v5#P93#XGljn#zIkRK?lw#vdq*Xbtu=6>o7-DDd1v -zqrIyQHZi$Zm6nvFiZy@;Qo+%<8jX3ZS$?DA4Mq0gX?`APH+4eZ?fB` -zW?CFk?HA -zT-cQIRNS==O*5NvoCeMX3G(schI^2(Fd5bi)*tpFJ(76)$W}1W%O~V7Ti4*T!_wlC -zf8aLfvn{P7rO={09^^o^$F^DYD3|}>%ulp|==uTvl)VC3N$mJsU#&TP#x$tAILQDH5x1cIaYu2?U4d+(QS$*-~D7~ipjRv -zb{$c$H*X9kN3)VyK;62MKS^?U#reRRVzkOPM0nYAVYxx~3QPRhXcsr`^KFmV&S4Mt -zRmguIsfc%$JjoFUTGd!>7PXKK2SNeBeyNbZ~As -zp|@e)qfs+4IXy}QY8XXE&Jk!StllDrOkvv`LKZAR=H`S2$o!hx6et(~Xg>SOd37!4 -zq{UkdlHz_xg3izH0+TSMY=lP+!#qL<_l`D#1N-hpf#O#e|j|!gE>Jm9QiKS3QU^2`~CK5Su`osJdTH^roxd-mqvWasO -zX;v$L-9ZSk)hLLlLzAg@cqt0spG#F>0}MHLq_T;cll98d3A+|`1TXC((D&MG!V}L^ -z%j~-A1Q|AW)0vo$r{mPU%#B_&9Tjk0nn6s_UUcRZ=uHEU{cfm0eg%x70}PxVRC1mk@C^cZp#U<7{H2< -zO!cj2U@KV`VOh4@^O$Z>G|J_{SrG1uNoE7BsXYq78nDvInnGQQv{oTlD7~R|Z#iRs -z&waVf`ip2;8fd~Zkg@|a-@9s!=aUp)eA0ph84;(40XeOldE7Tj@9!8TMSKLcez-at -zhF8f=4*4t5%l@VQ9t1h;W8RT7;PBPlIb(E;X=Mg;DADr=TF`C6&S%u9@kQBMn|Xx -zw*C+D7}Y!8;ZQbY~+8bLa;ZR-OWXRT@EcbzL=dHJQvyZOA*U{rut -zoIif00r8|clgE8OE~L~b_uF$u7|@McR`nP&jgyfvf)MIh0P?H;JW7GQbof=U$Q#Dh -z!V+gXsW>PR0;w~uM4dd7yNN6_un+`JkKFM0JHhdE=#1f#?Z}!3Y#1`8F}m^4Ab)Rh -z@|y8*?p*c+!*>I8g+khJ*zda_vXZSN1v`JU2C%%cv^b`F;Mc8;S-^cLRycyqmq1UK}RTjgV! -z;0ksn0}1d)emtFeN962}0hzBE836Imf`YvQ|I@vTaDTX`^X*Rocrf1`%YCx;`OW)Q -zoG9O&D5c=g`?nutX+OzG6YJ}Ak4bx&s?fdv)Nc=Du0$EGhl%mP8RDIMgQs(>u|FeM -zlMJL@>Zfp3Y(3D*@ds>7(xrUH6P|>y+AQdkkK!UFg7?kSqOi<7Sxox7BqujU38U3t -zD>hRqETeU)n^|g)t5IVQw4&!_O~~pgVk)Y{>!P-j&w& -zIHnq(#@E&T|YKpS~);-vqGst4T29E-Zd$-w}lb!G9y(~Z_^xVjJjsjv6Li*M#>rf%0d -zwf2~;tM~n{fBrGkEm|)vtaf25B1h+;)2?i -zpH!1F0Wyo1M!aJdd^ass#o^*mU|1BZJ~*X2lE>YxG3xst1=N6r6X_Ui_+4Y1drZN} -z>3kkL2gd?H+Jxrj0p$1}8}ca%H%?wKQwyRDOWyAIlPOeiOHT)o4bu16{`M%SQ*MG0 -zE#^*40|KmF>RFYxTFwBiR>end5RMJ@5J}w|kVe#`SOmd&16CvXHBFSHtRm2mso#Z664G-MSuK!mEl$WfNrjk!P_3*MmfX+OWfZ7_kL|HAq=TQ2})@z@`=-cK99 -z21Gh^Bhy<|iq6MfiG$~=<}x9R_*aIEH>|a#G#{I`6Ak;`ps -z-`wN{BcaYjfdRi(4#(Zg~W-J&`Y-W=Y(NO3tOD)f -zs_CzP?6bh6+nPNeXdpe*Br|{%o0P}4N*@{wPd#65?y)rK0`D5ItSi|9!zA@pNIO1k -z%`Iwy4*PwydoE~OAMMwu5^ex7Av8@Q20HP4I&;lr-~NkHT{5riFFXHH_nZCfeox!u -zjcqn6qYZJ -z^a+5jcDH-_n;U%%ezsVOA4+iEfR-}-ieGF=)AN6Xs9g%QNje*U6tgm&v;hIN`nWDl -zn9~n|gM93J{CL-|qIMMeQr4ngV!wmK&2R;WY6~Af^rJ_kDhOu*w^5*U?2VukYKL8< -z-7@tfOA3)aq&WWiDR+38XZcsn|o&q^{owIM~VqLO( -z@nf_pBH^9U?Wc3R>&5AwXGRAc>|1((iR!-i-|77L30@?33|?KV$NN9m5t(1*TY3EY -zN4~e;e|$GRjw5Y{c*H@@q<`C(NREGg49h;*5BwUwbRj?5F3FCi>wo>QFMRySp3`v5 -zmXV@4fC{c{E3J*K;pxo69rpuR4EV-!g-_+M9j5cZ{SQZ4VLy^|`1mJB)=@7Lp#4>& -z$Qusv_)0YIBJip##(vApy#J!vvKRM5?nnsHekK9>>n~f9!jglFP%61o -zb=r^`nn-9i{lnd)Xd5Ki(`_7xP*2A3VT~~y;Y$e3ptWNzTr%aIKyCsr -zg`>1RxdKmDRRLZIkYVp|NIt!iGSysmFG#WUvqJ))1RFhtrp%rSsyju7$};7n1?7JK>Itvkl@Sq4*%DM -zR&#ouV?JcW@2J#8@rsI(K-*(rd;XPcPn?r6jt|+c|6`FvoYs)SQtuxbH-KHbC`$#U -zR;xd@xZi|Yi*Ey5(DW9icOKqOjV?V4`Xg3l5R*5TCT2QTK -znz=H -zXPYKWst;Mv-$cc85C|k)YW2;%6th@F5bvj6-O~zwrwUy~fMFNGiawZqKCo8bzb9F; -za3KwY2uQm0tMOZEL=u?cdjODVgJueC|6_ -zPQ?sBQY@FI0(%$Bfb1Z|dolwgON7QV0|mV-q2I+lA;Z@7TE}nc`Hksj>AfnA -zo=p;RF@4-MjL-dKA}lLfQz?g3c_t<$t)*ph#~jTNE+JJLuT(ekk$|6&Khkr{yq3jD -z{lK+A)Q`8aX!;u(Yp^BnVtE0W*U#r*i--~S`0o>qC~nONWUetmn@aYP5_glq;d}C} -zIRPYMe;yW%0*~ltncv?(Fuka!2B&IC0l~U>CnXJJWLkbGVV+!FZY2RyM`_8GN0@73 -zF9k5{;1@{MlRp-5LwI#3BdtJ8{rFD)I-;TEnI3>?=EyWkWuIg}JcWbfc^roG9_GYU -zZ~@X<1>I4?oM=jdbWTsfwRymzfaoN186_wq<9q-__yG6{IfEobafh1+PvnY>%ZBz^ -zq1!q;F91qQ@WUJrvP4G-QDu&IX}owD1e}0j&`NX2rg0zbpikxIxViozSkye9VLra- -z0`;!yev4;A4<(k$LC%6z?fmIFD4-O^I0bDtFPX+S<{#F+)Pn~Cj)M%Ty -z9TfZNWVmF57&d8efeu)iaj!zZ7m!7Dz9nC%(bEQb7bDfozX=5H)fM^a#hWA5$EjM` -zG5|k7z`ufW)vyWk)^W{WaDFyK0aiF@l!)9dZQBeto#@RZ+p}&O`A6A0)W|iJxn>davjxsIe!zj%#f%z%MWp#vw!7{Q8wEWtOn7286JXFlc`KrCOOh -zsSXQ~pH-$z+5oezhWrsRL -z$%k6Yu#l9#eHxM#XQ@e1djNF93F0PDrWz${%Qr~e)WIqoas44Yf@aLY#1VX}H_?&2 -z2&rL8(SZarr0zM(t7EVVWrh@?h*!SX6$4+~7$eg~@3R^dE -zgR)lEMsqfVSHTZJ;s2y!S5B%TKt@R-k?X^h+HAFaNv*whU(dh<0c1;&%e2yKx(_lM -zwK|zO|3rq7twDD6SXI`mO;%+`lC7t8%1Gg5c!sl}q@|>JjyLKycu>*Z{kdCBTIZip -z_^9tXGOTfE;u9vc6~}@}t#cLg{Aeg8c(SHLKOsfe2J#u6j=@(QL%5K;Ll+v#lfv(gg6t -z!b}X4gJj2s8ihUmqoNZz_{|GQdk1z3azapu&DXbv(32&WiYrnAbj~O3bE^%T{AXOT -ztdp}$U!Zq9>8=B5sxY2fY1@V}!kXb&uwqt-Sw?-fcv%B;8Lo&$1?AatU4KD5QXw%< -zPM5w5dc9;8qy2H>ML<(JqJrL}k}i~Gj~a*JFAd<2dxpVptv6Ieq0niLy9W4}?QdT| -zTn-zFWEUw3Eb{If|B*`U5p&|-;s%pr^*3f%ahevUy@g`DZ0pwWdNP{rO8bt(UjWSl -z8!)K`!@zga$J2ovQR{%WqiVuk=3;;u7Ji8Mk12F}bjPBhL%?I>n;h+I;h;OsZvU(R -zJFwo~AJQ126lj}PwUC#8dnBe(CeK+)Yil{C#Tt6~wgkJ2!QG`o5)j3S#CS*D9qTW} -zh6c<)P`=D02f4_wW7bNp)J>hDaE88&!t&UmEM)#psUfCmvmho3F=aE4jO!wxGTe}5 -z=7tsYb*KeVkc1*&3rxK5rO?Y{wPg{7#x#0lQizeEIJ*^JT-IllgSZ#aEbkm9^}spBiu#Nd`6Xdw!(;(~A_>{DScV&MMRF)U -z0z&gO6V3CX!grCmce~z-yp7nl;LK91o=%k*h+AZ1#u@>wWJb4WO0LjLs{6*=C-f%H -zn^cB%Ou8uDrXZjsFTc29TBeD97s4OS&0&bjSxRz*96up2)OpwEm_X{Izt#%Ru2kTP -zqN6_-`ANAISR&d{5FruZZMpZ~-~SO7)rI!>%|JZ_K!#y0cu7>CCP3&8?1@-}=vilk -zGcKbY(dKV4yM}qaaepUZz7ORUwuVnMWJTOegfw2Iq2Y61I~WRN7UJ!3r(~=nUtDOO -zw@p@?K-odd@pJ!{`rMwwZM|o@2{G(eaTc?{6$D~{8%kT{`st;6YeD_W5A*7S`7ZbI&ar0a&$Au+sbmtb_E#v5+__R0E1Eo9Wpl}a^R4Ug| -zp*7t@5$rix5`}Wss$A4Ef?Cz20vy%Eh3UeVQ(ITh{Pf3dKhVS3LRmt9HgRx5zNoF9 -zP@QrFvL1drC*3<&G^1v6;pS;f9nCn*US7f=&w#%bmG=<{Cle5FMi0^_5jr&^qH@!L -z5lxa;ivCy8_726qiE_<@WJ`G2*)ld57PJHiFBI*NKD@ON)L(9TD8ibUwp{qjNb$Q> -zL?aH&MD~Z{zJnB;`pNt-w|BthR#p;9cGvLsRI0Ul{&rt`4f?=X#RmwsyCmJ3*CSsx9oJTn-OYo_ol-H -zEnK<%3=3xzcutO0ljV_qYI90s&$ZMenz$H#ra>L=p2)(dDXvSW#_#0sWToC`?QMZE -z!b+J|Odqvfmfiy?_BZ%eXG)>y-~y1Q7W#xoX;t`ymvFYnSm}@c6kLbf`=oK^k-4$9 -zQ~&_`rqaT}s?j~ld!5d1C2}a#BJK`>w;^zjJh#5Bqk6(dk6LV)-_XX8SX`w@Z%K0B -zWR^B4kV%e+UkcpPC3fR& -z1as$|Q{5y-;fZiGFVwVWWtqeo?1`LLJ?dUr0u9%NSx){@vpYiBLMf(JFYRRo$u_J+ -zzIo`-YTS(^9<($Y32^a}j*&cyG0Bk8-B#KSXg9s-UIjuSIn~%doiuWxtV^z&{6AhN -z=y(~W&6s5%$@U|CV!dBM$)mXybZ`t|%AKMD;)!lXTPcldjI$V&HFD?yaHAwt}@v`&w~NC -z#be`wAr<>;g6FTuUCz8T)n4DwG|MS?z^~Cp?R_q|+ZIhAEeopSb=_;?OEn%RE#Qe9 -zW5Tm&0!f9*8)7M^uI&Z9d>=L%;wrP{UjPIqaqnD6GK2wj_40eiO#c&*AbQec)!d{f -zV>fV0oF|J52AZNxknOl3p*!|85va>ozZ8+jCEA&o_}yz`sNDL3g64aix5*mi1`jeF -z?IR#(YP1aae8fA6__guf%!+_?71{Th126SfPsg{ZD?Ju&vMuDh#Fi -zV!wlpt8I3JRVZ|RmkvXkVfbDe&3hs+X`ZOBXAv%(x$XUfL~0FS$v3H~K|f|98CP~b -zbl)nf(u1)ya=7K*thXY5Ocvj*=#cpz%W@tu_Nu{wY}(Tn75U^*O47ZORU>+3m}|78 -zC;UIwwLrvG0ivn_W{~O~bdaLU-dI%xYMj(v#TYZ*!t(o_?Q)LL)AB9gl*o4Y3LCh) -z1(gOdR#^Xg*(H6kdl|=xTv$O{6965j_~{!d*iA?e;S)4tBrW-r<-5xo6#~*-3#rLq -z88X{DK**hy74g7biV%xbGM66$TYzz2Iss`RThDz=u`#9kR{4S*15VwxKh(=mTnvd1 -z)$=T_vc|UfZ*;~X=Hel3B}B%cU7Tair9UdVv3!~TgX0;<2r70Xl>M=Uz|QI?TD};n -zyb+8g?kUs2R!T?nUEErUHKC;h#plMn4W2+i+3CCHa~sj33|$rhV%JM00y9Ry<3anc -zGMwNf`cRk_@@c57%20OFqp_aaf+2RxhBhk5I?zq;`p*FZrD8ylD&h_zm1T9eP8zf*nVhn=W{{OwC7j;@c6EhZ$kOc0~bd -z2SWvTI)EU&2Y`d1MwKInq;Tp47Tw%xR1w)$C3CZ7bTL*VU=m-EO}i^k90K|3>Q!~c -zOuG4{IE{6X>O0lMWt#F3ksa+BFhR}xNrB<`SD2BLA?kY|;G%F!O?f)=GivE4V;6J& -zN(FJ4IgM$~#uK%FhTIQ32m!XDmRDeGrzsT?Hvj}#tPpt%##RNiOxko-CdfDlZSdG+ -zthcSz^FezJv8$tPt%gln3GapnhJs~3BU5=NZ{i_IN^=;FTKvz7mUbsFDQZ|u3n|6b -z3JJKEOfZ{)u>gx{_Z4|T$nvp8n$$Zd45I;R0UxfFA~JL#6m^k+fh3>n6D`YYGK$#h -z)MiaiFFQ2;j79{C^b0^%Oa$h>1k-R+KEF}Ver+>`VV_f=2c -zs1EH1B>X}%j*|7LwL_?NQh+flY9pQ8kYj4(2MrmyT5V1~94&cWn6yT3)?l!&D24yh -z`}Ci*kEE(VqC2RB+IA&QN75Ooe~ldre;*^CE!Fr!Vk_)nsIM^hi}#>p@e?89zRt}y -zvzkDq7jx1q{WlO97*ZEkfMS1CZtWuTAJ*f!Y-*;`Yiu5zO+{`+-vvN!at|Vzgb3tW -zCG(y9TkzepA4Ly$GNM~zmABah05lSAjci$6+bFGE7HcX6ec}nC#a!VJMiszw-|0o+ -z*Nu@KddgswrOXtZwCtuy7zQR!QKx!Kg{t(Ec{zvq+wZUHXtXJH2op&Nsnw#DH#*>b -zDlO%K#!Rx+TXS4L5$?0_P_>3Hwc@7}W*#zEaEdIVGlhwKFS@RSF-;B}y*GfF2-X2v -zFUEFWN87-tY1CGAk)4chn~)kRa%Z%DSAM~D9E|ha;K^PC7+8&)1QH&7K#Un>&NgfY -zH*CsNM+eiTo!q>d}|AdFtQm)A_!br -zzRJ?aJz6;a@_~Tw8IhR`@{JcIJTIdk|2_QU&tclLjiCY*!y5N}IT@q>acK;{Tw3(n -zO%b??4jh=($A65y -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 -zJa_K7c -z*%PNBE?yetucc4Y_LQQ}jf`;m{+6?u4**NepqU-);?scuviLcM${djvr`0>8p+@+z@n?5W -zqq3~BqPGqst<99qH*U{P)#3ZW4QpjQ%ZyjVi7Ul;=;BXqz*Iup*uKR>Xnn|3O2M|U -zgVJDxolqX<`p=&~e=>5{JJa@#8}xSk3SW#NKMhaDNo`pGGbAd_-@&!@Ic5t+4(qzd -zK{|&=&`*d$jG%BBE3Acc2Qad!r72dfwURdaf7+%`U~TLITb{8;yY=Za;}rvIB*H7Q -z#d=`*h9zIu*(N766Ij>XRJs;54!6&a>Yjbs3NCm$Z-O`&|%4as1!U)Z$mu*5j)0O1S1Dw~(-jLiP$7AYH$ca{jcPX{LOU -zBmoxfJ!k{d#ELah9G%?iSjDf@gCny^HscaDrKJQ|wph#fF7Anqomc|^lx*!C0uv6T!2SMo%NzQ$(Crz3xQ|dq -z>-b+jy*p5-u{)Y2&GO5z1E~mpU(AlJGVC%oiWBfcAhYGW(xZMla1yb0@XZwzgF#E1 -z1lgty8H`;EloSo^o(#A#qBvWFhHk4}3Mi{-_jYvr#9LshsL6k;=eN0VrQ?X|XYJ@H -zfpLy?%PnMocK^VD3s2h>^CdmFdf=)v7WMz1v47c;6z8&q(f)pmGj=!3N4Q5sW=8LC -z{oV5n0tCpph~#4C*wddi*F_Q*c}CT!uQD7NhJldQea-1QSPpn^e*`697pv!8_w-Jl -z59b+Iy^6bnL(!WNE~ApnEw)gJ}BGiNEc^sM%(f9=A_+@jceEiG7IvOeEkGd -z)-oEJ*l8ah+6qi-1KpcB3X0l! -zKkPRci~PD}+0^jpThwGEJ9+%(*QWBcZpb(hrb>b4RhAY8V5KF(1n8mTe+Tph(7&Jl -z_%db>gy{MG0-hB}Eu%)!?-Bx{r)fg!4l)nZu`iz2*#o>`jo3bnwO|#&&nMjki!haJ -zWUJ)W#E7PKGpF5xxZRD`=GvXN_5jwqeB_HpESA2(k`?TCFpFJ^W@J9aCL*na?XP-- -zo;Fu^2_hg#l8QWwhSqP4h&f4)13V+Q4ETZ=Qcx8A`hQWf2#e>jewlP^ymhUJo2taAXZ>6cs@vMIjT7U-T1|}75Si?$x9=$t+ -zb5aZoV0y{AskB7~$PQ8$F1%%)0pzN9N97^V&SM-+ShC5BPqoUzp#4aKcHF}w`w77! -z0X#}BI96|JV;ClzgQC1m@(P5b&7hqh5oWc1-6{c#Lm*pTO{EB-+u{ -zDSToR0IY0r3d^6^3w}K~m{C~e5w)@8$9jh@VqnZ|kN`vPXn{BSJ0sWN)Zj=~``B1^ -zg#~13XeqzRRbj%0y62z7cNw6c1PT+RCDlyt0%<@M^ytqA;_d<~fZ3I-vw>R#5DGZv -zcOnx8)cEd+oGdqFrhh3fC7tq3(R#lnOv26pF -zea30hd?$G)jmdA2XzS|M$!W7}{`-pi(4hAWuw6|oUJ+^R#gK#%b)K!OidG{dX~rKP -z#<4+O>I&h^Kv&mB57M%=;MfFX -zTY5p~&m)mcbKAK~Sf2cgOjNubDgMR{`p^%;#5O5mPAv^HPa_^|AV1+wHv_}KF(cd? -zBCI|{6{##{8`z%d3@qG`%uq7B!a;9^`{_s20HfSU2|GrhHh68KR%`i*XHG{RSl>JO -z-gqp(M?sfn@|Ovqwu#BQJ+=+_|0V_0_d{p@hjcd5S9?@mT#_jmG%Qv0NndZC_P9fz -za^^+=`32DNnLVs`z;z~#RCzUAfe^xQa7^EbY0*&7CwVxjV%=AR@!bvN6QD;~70T>Z -zbjXwxKLV4_Al_sR!GktD=Wiw71n?o&O{xGAv4k)X#R_g;XglkYT%p62g%~HSM^~LH -za#eOl0KPJaFZjWL<_Ik7fWG;b+}*hw4T%a#uGoN=*<_F(tcYl4a)-ob1TF%eQ~jI}rVQUy2Xr8B>wHwk^CKGk+eV~KS1GTkvy*+E(O^Ieq2 -zbgBuRv7Y^AXvd^+c~9YXtiA?>^>i0^6h0@xjUI)asTBqMCTiMNT`k0uS7{k#A>tNg -zdtgdbx?QFRVF?x%07Nk4WD>#9m~=kc@ENT70+r3*+CnWrKqqskNt)X&Ke-QAJTzK$F+5E?`k8S -zA@hqo)^Cq6SSd0CT*%tdTtXkK>V!!c%{C%Qxa?)#67;$|ULCya7|X$=lVB6&_z#m-Oz2w`5nkSk-1eOFWTPhu -zUW5LMzs3@B<}w!kVgPa$Omq=a*m((aLPE0}U@doFgg6uhPw^%;G>6LXI`WO0g6s!h -zNjna?k=e8bUPOO%mL;|tvdK>dUPEf8bBBC}PZC2p -zC%6ZCF4rb5M_7Y6yRjnJGOeAs6H{BqriMbypB|0RJc~@#B@;TC638bENJI1L)Vl7=1vR%N%!BB85-eK~Z^y{!{ -z$=(Oe4gkIw)nx?OkK7^oge$LHj^KbkGpG_9V<{Xye*TR_)s~HR=sXRxkQj-(yWqGS -z3xdw6mg4A+YbgZHH?VF`$(}TkHq}9TaiWcJa3s%ITXwz($9 -zTB#%az?c|A7SZcP#S=yuj%5M;#wG|Zj~v~h7nQ0q+9IpVk)7Zz|4DBN=+B3SBL{}& -zPk3G7uIiWrlRqu1HOB|LN0V35#5ey{2aDv^rHQi~GwCL6B#U1OtzE=uh1OJq3t%n~ -z#L+GVoX1vR9CFe^$;HT~dIJ88kEBF{e7?cDU7$#T#@8~F3FjaoIK$39dhs52Box?; -zwGGHL5A?*nc11*gw2n5f_IrSmf(+TRB9E&a276hFTt(&)FybkyEj(VN0D~#Wk#qNI -zsqEESm=&O}kmjzZ%7PtO=68c@SGy0K*IX-O55U#Au=d5Z)pK{4310I`e&U2@feXMT -znx6Am@@puWUtzJiy{fh(F^hEDddAsTqf3|A?u`0}bZt!w3>X?Z*DzQ;SFVudTzNKO -zVmrAyFJ@-zsAEQE9Jx*RktlfBg8l#`HIP9sv&eqlMT`iYj+|MRJGaI4t~UNy|OppeUNH|BRbuFdI-3eKiK43x17Pq$VYLJ=#o3DQx+ -zYRC1c7?|O)((bBvV?x;PEz-1!;z6{ug()VsAp=tMVxq8pwEWbxshHFzt0n1lCK)M- -zU1r%7RMsk9Q+~S}j#dk;Q4o5T72le!t}Um-=+mi+8i4ToJts6}SUlrYRPIKlcNU)$ -zXbq)sv@kXtVKPe_Hd2*@cxcT)%0P`Ua; -z9+P~`hD&qhXsw+wxz#bWEhxAd!q!TFIoXsIxnx3ZKr|b$LM?%;A0SV8R!HU27J8a4 -zCy!pRN3WQuT-Spn+un{EN(940A0JoXEI6(7RA0&#L&kStcB?(PU^}ifa|UHgMmM`z -z*2&%>?>LsFYk=(*^Q@>EsU#0s=v;E6#>y(0UNB%~?=!|^1zsqX1t{p67h?hwp4waI -zglGzG@6$b_LFmP064+{+6gEqJ=Ga1292;NeY18s(Io@^bKIdx5O-!YF9%*$0vfSge -z^$&y69hR8Upb?RIdQD{gTeES_z6+Vh9g=Xj49ATvIn(l~ -zbjbh*7`3!Cu7_+?jyA98;Tz8Cw8Zbba4**bJyL=Yr)4m}1b)oC!x+!3N)ff5$%$ev -zo2B{Ltu(G4PLXjH7n2lmZ&n@>^%0$GJt~+lMpP(Tzi6i#tlsF#Vpu>_(uxVifk;OBc(+E#{qaIEYwuNFXx;~h$9>>=neZHc!tCs15#(%ww -zU)60B*(27%8CQ5g1+JO!mrpJgXWoTtL^OtoqHkI!zZIYatn5!DH?8c(HOVih(@3|6 -zkx{L;3C@+pZeu^4%-anv>U~V0s*M+fZD!r04IbLjS3zUn8|!r8PY%r)kAeIiiRADv -z7Ck{m5jr=PTc>wA6up;zBx9*n0N5NyGtYMBbeldtze7^qP>1-oEV?&ZPR%hJKpWhz -zEP+4$^FUkSHUdNy{^%xGQ*|?ek2Dy1-={N*Q9QG+NXm0v1jiCr_e7WYLejuB36^W^ -zY;|dzk00%~GCIY%N{w)k=L_vAHTIbICKbKOjHGD;F;o+W(B#585Fk0aBmYd^Ohs=N -zr4Uh{DWtPu(R=js)nx6)b&-C;)^ -zunFOVe%M0wuOkFDXdk!8JB>B;FflP5yE`zyfwSIEA4pi8XuWGNv7&xOq) -zV56MLL0PJcL;Ufb6I~Fh6WMv3asW3&T4bZj1g#|!swZ3g|6^eZXTWaoK9vgV8%&SS -zW9|}kg?9q1hodvPDU$km0=-$Qa)d@oY5_Uc4oiV{q%8T5U(mr;R=pro($O7=yC7;0 -zRffD!MwG^r^>4czMU)xTnX%UpzkUGun>IqRmeGHD(6D%b -zn6i~7^T>PJIQw8qN>m40)#(cKJbu_Dzxw<>b+`1W@lVZZZCcX&M!wf|;faSgG= -z6%*42$%%V{cB3cC8Yb(ZiFpb4{@4P-+$=%i`8`Q7sp18doCCGktzxqr8K3+S>sAyj -z&kov1MZgTgUEA|yk&^bUIn~0E6F-sltCG77^iHBxHLW_eync|fZ{n1is^lE&_cK#1 -z%sj>wBKj?E%1%|e9eM)RbB)KC@~5!BBWdlUQy$r|tM-2jOQv(DQ4}ipXjn(Jc|4>e -zS=0R#)ae{Y6sGXvpGmu@bp***yLDNaUIt}}WU3o4CRuMJaJb`ViV0zX*E0H|b0Q>x -zO#Aw95*gA~`!#-@i>&c552?UGjyDr;WQTc}g|aTg^m%NXJNZp9J)%$#!9bY&x4vmP -zY0f!5j!9gqH_>TM3t_udjEwYNQDuRijO1ZT%z{jO=KG+Rhd@(v+^RU!N|&M?ydh2- -zt`?WaQN^$id^owmAF${({4Qh57Fz~f5;l#)*2j*<8GV%LY!5v` -zdC}T%_zlc4hl(&%F*FT1C@+B-1aSoQw9u*y21vfh-Jh1zW`JN#d$tMJ)QZGlk(926 -z(N8v7)*J70=;Nn_Y-ZH<%^j0vUMki}Y`NTLiJIR9&}H%=4W}T+X7?^{+lvwK?-3d6 -z&-T{Z&>0b@2plY^RX`cjvH;pogX~ -z8~Gg)URG)d*kJTwAZ2J$YGdpA5G+^lu{;5fRRyJzVGM2vN-| -z6SN+2WmshC0~Pfz$$iKOwmRi^8-)CX<*V*B2gm!$t#bwVI~5y|GtXS;a?H}4X(6S$ -zM>%9HNO8EGL&7Zln>PX8)cO|YEBiP)ZD9d=0&}jVCy)R!9>ZCyt=ui`O1{@ecm%u+ -zP4^8EF!p2!X~8;z9H`j8XIU$|TUnw~p7P_z&*d1mLcMNb=!G9=vzN7dP3V~3f6T9% -z80kE$d<0{wOs;|w60A$Nx2P3#i1?s1X!mBUD4PynRHO!ns+FvYb3^R#lgI&Lpc2WB -zFfg=$6!=q~H+{xCa$mvJxF$^2-0>U8Jmp?#`-yGv3rZDp2^TXlaUsPek;*Sl0NWB| -zcLw#@Z;XqnKBA%#3%`xM#My;URUM?F*pg)n2{v>g>cjzhgZoQn=rR91RNA6stLsfS -zap^AI;Q@7SxrLSC04C|?63iGAf)YSP=NztY%N12!6PhW?Ze+$_r{%{XXwYTpnk1#~ -zEy~+xxNQg+@(l|BadO0;Qt~c)78~LU^2DKABUpHFU&SSKI!z@=4P4;UP<(f{c~n5` -zC)N-70m#I`<8!**MmA$%>6Yvuq&zx{Rw4*{XhZMFA^{XlSS-kZfh-%ze-Om3^TTdw -z3uq~yvtHy1DJCkFmUT3ESnVNge%G#Huo8)pY;Kw_)au{M*u4g#tWA!u6OXz_*bp>V -zYM+F?x9+e{5L3`a5P8t)rS~GVfDrvFy>nB@{MMv^0s{y5a5e$42c?8%YHi}Jtax-4 -zz5R&^+GN?_7R}fv4{w1Xn#fKh7^z8w9-?ZQ&WFnhUVss)tPAsvwhDXu+Sr?GE#zT@ -z!-!rm`~ZWaowCqsz|0eNtMg$vg!fRVR^4!>yDl?c%?g -zj^<4Z)$~(eBDS4q{ajPdkYC}ofT%(y8x%n@9m>K?X5*14x{{NV%nGTV2tGI2V_(h| -zFltZkT-6bCJMx1vD(lO{6fp@YI^HVNZAhyPGu^I#>1WLmr{p{?Uy;H~Oio -z>c3{8;LXj_qh>-U-}-uK?>wf5jizU?%1uTb -z-hSGapm%Rw$Z*lEicHWxO -zX=-*lf9u5ZDEcGH;_~yaU%I{Y_@^>L$FBIriF{%+BlMnvMH2Z~VV#Nrkgv`8*!W|L -zYcwe0G@Mm>6m^#Qv+F(moaiGOIYpZtBck}(-lBci| -zdJ9HNQ(=mDsD#~2>Dsxh*{=v=Y-_JRkin*5V-8E^u>EHeB{fM8d0@37)&ptNBH+B# -zW}dR@Zj79K;G!Nq5C^vv+k~5ydt)-)mhj#3wd!!f%s~SOJa6H>)FQU+VB3KIZWa6k -z$SdrO{~-vu4Fbj$}O;@;A2|aZw?EErl<(7_|yq=A}yQlXzuu3A+{Hk$c#AizLO}cxR=J8&)C2*G**} -z7$2pTg)1`BQT;3qPy(0^{8k)<@;l2|UT*v*ZEmSih8y+L=bPtS-2`Zb+=VJUQ9}>4 -z`c*7=+CW3YqM@p5SXXaW*9nv`m*=MNM=nHEC)lcWZ%zUANC=?u;OEMYXRQS -zA{?^m;Hizp`W!u~XLnHDtn@C-6YhY+rZDX&KvBacL{U1QZj8$uv<08MCJ;#eDIw%l -zEdHHaM*N=XTj_p3%j5YxQ>P91)kc7#hCKz8hnYDz?DP!)%m%tRpA5LWUOqmM*RumO -z*=gBtO>6Fjq@s$ZD%+ShOxW|^+I5r%NH7=sqlt+;yB_om+K|A_5^v+<=iis@gk*9X -zxY`7P4+}Uv{Ei|Kxf_J)Zr8X7#7Ig+BXvG8T){4FJI9vS{JjI$GXm->r@s^B9}`TI -zDUBKrAk=IR6vS$$(9KOZrjJgqE;TxK;K`ZHl~bjbJi9s-1vvX_YwfRUwxT`FlY%#( -zK(BMpGIS2O#SvWd;MyvD*2;bD0AnhEuQ?lQprl1S+Q{p!h>!XsYHF9r6R;LS4KCP= -zjVzVb1qi+(+!u8_2GpE*x;Er$;+4`&!St^@VZwHG1q4@=l!Q2@SwLHJ#)edW!voXn -z?#w*2E)|B?FY!mwLXWnweDC5r{ExLHWOa*)@H=1be&i;n_wSM^075eN=mE#3oMQT9V-|)N -zW|U0Mkgc{c_KH0jGJt -z=DK|I{K^44a{+?hkrmq*bL0YMiE7*4ZJXA`S4Vw<;@Sdn8Sezu%P0=WAfhktl2OWr -zSH^Pm47Dhn%-`dMSKdTIBNT3`QiKFjU$uLIw?!TCRZdPU;WH|!;K2R~G0f1&k9zAR -z7WrtMezl!ALn|iZqg#`oxLGJ-IQ83O_0-cwrI&q7%J9>M6;;zE-t=SNG;c~bCnnK#CWn-A;9`SABx -zl8$oNI*TV1e9Y0>vNGXQqHY^#vm?1@)y6`4b1_4VBuH+nCX)b>OY`8#g!T3YW7~iO_3CNU9q0r7Ejt<9+3hX)6s~pct&G=a1;exfC=?dKt*%Q -zFl|9bN`OH}^T5Wjw36u2Mn7zw|b^jx$-nKJ|~M`(~e& -z9IKXtJEPlrRO~S?Nu9ApSP240@ve|GHLQNp4&=Z8D=Ux@x?9D*QV|z3>?F!TwFt|e -zg{y|dDAh%T?ike!X!Wl(L4Z~_L|MJmw8_~dR#Dekxu-LtNSwk2C&5tbXa&zFmj>!{ -z#N`;_3qd|uvp*>uRG6CB0cE_@*hoiWZ~%Gi;o58W+fzGNisHH|(XG -zZ&7BOE<(4B0%9u;SNw9_MhGC-iRdvWTUWb*akTQC@&hCiGaU^Vf1cI{PmdjJ+90<% -zuBA1|Vq(PuV!;Un-5F6LnD&31EwaD?B -zZLFlCx_)m-Pg!PvBn^5RdQm#N%OxEX^76GuT^iE$LOO -zZm5yRsSy$cP3^qX@RA-iKKh4Hxi*MFy)*zFO!1&qJ?5cJBpD2?n%bm -zv8)NFq#e2790K%IAEbxHUFaV&6H<%e92UQ70k!1>)=;xWQt_Y$7C+)2RE#jp -zKYmJ$8Cs22yK!+m)E7(oYec{3L%)e_;B(aMllcZ8e;hzi8eF9@B(ugZ>3P-zHHY^& -z?x~LjezjFhtghY5GJXc%=EM@rdMl0{4Jy``a4Oth%QHEh_Q6t74>XZH -zj4g@DdFeXb!jBT$!tWn1_21kZ$UVh6GwAGtn=J1fxJ#m;gaSY~ZWq2@m&9}Cm63vh -zI|n6zAdU)Fc30J={eUi}E<18k$7nwL!C;S%4aKNxa73C~ -zolqY5|2AZmneQa6M4eR$9RTG6ilX0dWHW&>0||K~(05p!ErU;@r{4q%@|~y!R*uj$ -zbbxSvgUkM~q`~>rhokL$(>h+kS0{g>In4~D*I;yWD->fyUm#rdfMDEXKmC6vT(AdrzTkwMRJ1se*prZwFbIwe_y4N)4 -z-dp?MTvp54XDowJk9eivk`4`Ry2b`xo@*r#BH)cazDzp3R|V%ABJEMG;rG9+fz6valC=A6w7;KXM!g -z-#F59`~BM|N~I8-Qt99xN-rz6`Um0`n-wS1deV4FVl!uhwysz4KZ^J -zKlPVoGc$tfSH6o-Da#&1ZiW-K3{%GNkD=2Rs%TIhc~ova=nYj?Ci(vT`}b93i2jLH -z0SNp22=DJdzH6lZ{r&gv@{^CB+rq&gzShUDTC4aF=h0I(#yTibM=uxu`1yVNDvy7C -zmwWh-FY=XteE(h-=luBf{dr6J_{Xnb`V#Q9AOC#+ZjQ~5E%4WW-sD=vC4T;eo6tVI -zYTq6PviP&Um8X?I`|JCM2tqM{@N0jiDf{c!_hP~PHA&yw-|zqA!N2z&th&+SuK)c0 -z4PgqRdA`kmNXm!1<^q26$@$p5--`Y4OQEh^4Q_(W59(@PuDx`0{fs+b&?=;uA9^wk -zpYaL(EbRZ{m?SMS* -zITwwwf@~D9I*oCMm%UrA^>O9nO1nOz8H-|t0 -z@J-L`ad1YDJhkGQWUL@RZhP6Gk}@1qaR!Z$IR{&EFDrWrDUfOgX^c)~-$M@fu$2!$ -zs?Vo_TZfRHu;&%05IF1hm$6ML9jp51m;QP!i%elc>i^hdRjry&94r0FTB~zS4hvz}cF;N% -z)V-BwO~$??c3Vvk1-_)eHgdwJ>Z+}2)bMby1<d6 -ze&h9cTMz3`L*g0ey3=%|q&~)Mj#)>sHSXpceJ=?oIT2&!t>QSXCGOwWfE@Z) -zIoRgXFb8%nUxxc|_p5pQJhClk^YSDsOF8D`V}fJtS*LOGM{^N|wf0~m754;GocVIS -zjpozkjta+&tL$2mg*X}`(O%x_&N?zhz-o7*wynHswUPlPQ(Ub-)Y7t#ev!43w{z{$ -zXhL$#%Dd4v$wD^YwgAtSKY+aW;QhAl|6B%&?|?aeOkI+8B(WENhbOq#>+$qy=&URt -z$w%m!t&ZZ(F}Pc@RpU2Y=~-C(#qf*dqfh$7(f@7*jyVv49B6>cM_c3M8Li1wbRH`2 -zW<56&N2tf37cUPH(CpI`iWc>rXK5|U;C`x)Rh&7Ns-i~j$Pn^n;HZ9d>Cc}c(eUTr -z-@mK8#F1MkF@g1z4#j-$uks0dIw7S*xj!O)1{A8a^3zX#iw_ -z>y)bG5e>}SS)e9#EKhV~UQyLdW%p|YM(^&`9M!S;RfQn~rFaqa=bfXs#jT?1Y3p5! -zI>s?1pOMCwC3s!QNjq>SI_DWB_&`TY`Xfik<&<&(-Z;?aN*$R7U#Am0FW>Zf|Kszo -z7qPrPZ@2+(N5yaKuMkwa^)T-(TmPeM0ejhgrORK86R8q-+`PjyUa=42aO27BiCb6ixD -zWwarDoKmJHlW;+}qC-**2HyY^w)xWb9)Et0)yK(JJG0!~uHf{RXgxYh}0y6R+<~9Pv -zuWQ;f=!F#4`%({+5d)CQ-K3?IU&ALB_mo|lsH6oj_d}bTd -zEAg_pTtL=IDAoZAPEfji6?XJKN7`69enJCrEro^*6c(=p^KXg%*WcsMuDHNG?#FB- -zgmhHKw*1$POfda(DNVcfwx3J(_T{kn_%Ck#hoEZz(mFT&pm34ff0BL2$z9Iu-N@)B -z_mMV%+QX?7mn`IS3bkjaBVDlm%6H+TQ&>b0W`j|=sIEMTjn^kL%xJp^skls}(V^ErDmAYhYb|fem_Y4Q%2n`_Px;(&sy~eSox+gkZEYc~5>uoEK -zjt<$u4D8&JTfK!Rh%IKNWoeJ~EU*8(egAzq{_Ap7gm}9TalSed%Eeafe(^N%Cx5-H -zvhJU326W}67)N&dD1J(Zev~IoULB#bZUbn-z}N!!UmhU=KG+fMiNYK~q&Xg%wnKaS -zcFAE}NBDtQ%aW13kezKm(T9p#rtIFrVL?4TA$)zQ@zIU%|6H8WZgj=I>c%qe&`me4 -zSdqU;3m1Y@j!|c0=f14EZbIGEkf)oGwpZXDpfRJk5`BOgx$Mc?NO@y%Z2!J|r@bC^ -zyT1;sKTC_aBQ@w>b!i9O0YrD~XpQC5uiRWKUN)Ea7UK_q>UdS)7zul+thl>%bfo<) -zp2#)&udd5wFvgKZr+yNi&+%f2>Coj@c%*!rO2sMhBBWZw=tUw^+ttdPHu>qRqe5yPT=( -z8)Q*YJXUIM)OZa(DM}Mqvh0-7^-YW -zxgEG?eBZ6N(tb`QT?6+#R9EZ!$FDV?LnnCihIwEKyll!}1egY37hcBb*P8gyYop%d -zR-Uk4CXeM!S_J)iFFxCAR61PdQnrCL4l!eBnvlDz6Ol}RqJ}hC7;;Dk6e(YO#XMBV -zrylfO?vk_6p;vVqs>brG3>#Db;fn_ji8IL%W_~&)u@Zzmu%=h%7Uh-+W44~?@8Z|P -zWbCwITHGb%BLm7>Eq@mZixy0$E21WnlKZ_DfWKHs8@Ui5= -z8A(SV`NbWR|tLQKj53`gmPv+4dFN3gH6_1jJLYX?kaq*OcJKgYyaXhqNFV3xu -zsCPRAS1uPi>}1cT^iXO*N -zzGC6BuHVV24Xb{Q|~@yCD^+!^-K3TwS<3zahZFY-T%-)L`R;dPE( -zm2*^}Yvz=A$w0t0zKEEJcF-|&89l-d62rUS8uGK8g4&GaLT3(0x~p5UlE&@5(>i+k -zbKIrocih*!PyizAS8O%?%JD@8{m%@*{{H=UamDFZHozx`>PeF&e3YMba-TpfO~k;k -zwqo^PWe@hzA4}XmP~G?E2igI*=~d_`b1=Jg@cgYXC(sLa?Xzc}G8Yp~CNQc-e@9Vm -z`9u1F8B`O(%&ig9S|+S`|C9TwTn_L|?%BA~E0KXK<%|secs=XKf1UMLG2b{WeP15g -zmLfpGBe_&-0!EI{DkzJ*J>IWl6agA&;kmfyi$WuZx~;OIQ)4XTW87b+5o3Vk@8#< -z?gx#cb+t{*^NhkBQ*FK2&jnAlfR^!Wjf!&M*oFwFW>XYl}cHl -zPA6(!JB5vzPBm{9mm1@_t$hPKK^l0>6AJ%|yE#b>6wnE$I(zwy*>%Ed|81@>IUIna -zbiT_xNR{`y+6X1Z^?yjg@?#Zvb`i-v+eLI&=@D0vLr4AhCE4__>ufcN5=|x2;U22P -zXusypPl9nYqdlci)O>~h1Hbn_76#1$n9WH->ES_sl1UsHD&C!*)_*zq2w8P>6~Jj0nV@Gb2I48^rSmDiudqeN-2L>#_RLwde_h^59Lx| -znl@K}{*hnOL$?=6X}BtJwBXHB6;bfT&znOh;2%Z?TwHDyAhB%Zy4mYRU;Ji+T#C#p -zh|`EVycZ8amhy+)vg-IHN{7~ed%CE<>l>XMH%Cz(FqeSzwX%bAzTA{}glm9OYPVJ$9fm=}``N$dYT -z0!U@|mvJe*E??SOSkAO8N3u`K27VdI{BNigkw%`Fb6E=+*jsrSI=oyYPA(Ov+0bLW -zB%pPKugS;TS@$uu=PyS~MobEPEJs&{%$H+Hm_^H@c%pyFPW;yuM#R679F$^$Q65Wk -zlGnVHsMrFRqyN~N^1ixbgV^Fr5{V9FR?Yrc@!^12G}dpe6uq`}w7F$mUP<7KPw+<3Xx?2d7- -z=>d-Nfn@mU%OQ=*7j=*r<8_&TlYT9hw}s=hkZG%SaE1Jf;#omUG8Y?}bU=BNMdWTB -zi-;PuN;ewEjZ{XV#5X}+00Dnn<9VsPUt?^`DlR(SpP;7EqkVsP5;AMKZ@Fo-l&$Ob -zfP<$N`bu6w9kornxWA*T%4F4w>~ryy5(O#a4(mOO_w^nOj(L5S%aH@~MFvZbi`Pd3 -z#es9x?~kwace(a)OwTB92M0O%3tST0V4IszUZW|l^3s2dZ{-K!pWpA_<7B+NXd!i| -zak`vIW39i8&{CXfzQ@lOqox04f?B~ -z)0qJQH+FWr!Ox&4)UC6H5x_i61TMCgWo|>bX!mV6Q+*yEkEFgcNcYAZnn)8B{rqEr -zB#b`E;%eh%PA4)~$U`>*8McT~(ApaNp^Tyt^qz4WX;G4oWI8J!7C(cr$fPLUbyOVI -zm%~f8yBPkDZx#ml69C{rKg*F%z+EWuPnq!YZ|ub9f>% -zvGL)g-qPDfn&p~#+xV#MTxv?7(5)ddF -zsn_j8QE6aCP3USf;t}a%tIAqL8ETRHvw|iW`ns1VEl7)70~Q}5Bv6FwxgNT_JwD#w -zFGJ5`xP)h}Bm5G0GUNQ`S;_Lq}=( -z4ghNbrmKwQPVd!KB=Ia}m`1Ck=`5vyV@_!8!H;=p0nf{xDVfud9ix^ctt&Y!!&Q5= -zZG|}6>pEKZx|?ojs_wM&2Kk*ijcv|eLUmjOE?w4uJ$=KI*l -z;`6}yRlGnx)_^kY&e7d+)4Kn1oKR7H -zEHE3BV#^K)?5Ryu)Zm^`8PmY!t3^1h0RLcgqA$Da#iilpVC2tS=ZS9rn&Doq-+$d4 -z%;zZv -z&e6fWog^H>ipFl0dB=jn9x(iIR*Z+XY4oKaK6ckXf{@DzGT46SoQVEiZ1DT-+Rb|Z -zt1J!RGyZxiW&8b~msYsDL;uIF)!#DYJCdWtk_Lrv(nXB7nCpDmc -zj?H(u0$^Z@O4IUKKA&Nd+{!iu9YZyYU3LK^?x=|6_wd{huU)=lqp1S7m`&aq5 -zs+9XN)|YTBV_6gq#r;wKeJsVP51yGz6CVpQU>povKE`X*uklUs;IUbf;o++y0Hfb) -zCuSknU4b=v>Fp{9(y}wrj?>6rp2bmmzs2gK**_2 -z8~Gf|v%*HMDib*9_17=0Z^qHr&-B8+in6$`GEe@+5gA!Tf>a=*cWd$c+Sb1>kN{u% -zuj1?b%7Em&#!ol7UaJ6jl4KyCEyv82ysxJL_nqhhd_qX0)2geVUXr;y(tOWg7rark-A -z*mOZhza#Xhh6ou}hZDrl$ -z3LgeDiDcB$+IRcQ2V*3SNS1tg6-M@_-@G9!^Ey^y=JDW-QQcpVS=b%$*PlZ7#oojJ -zyj=*IToYObu_Ar!x+5dw(1yU)2 -zx$;i^7bmR -z&iNF2{w80J>68|&SW^TChBypLWr%vzY;1el*ypC4E1>Y1n|g%^rHZlgc#30ued?8)(=ajO4TUJ9_I>{uxm -z0;rl>LB;HbWY|(W6FYg$W^q-Thw6MK1@7o2Y<~_jViIE_-4tl4fRsu=l^3=n*QD(j -z+v7`LA*kU=ukS9ArxlDqj8x&1$- -z<{p6mj8zC;3K9wpxU4U1Hu{FJE$DNYljp>lvIHjBwr;d`X`C}gHg_9klfg*fsN_(L -z_&`qBl#s(@h2bp{gFkkL%4 -z?sBIs`z>9jWCVCd3-=d70_bWmgI<0@pvU+XzR2|nSjXoJPTL5YtGPgABi+C^UMyi5 -zZjOgMH@f%g&(I4R{7zCI99WG1u`5Z!C$>y_db*b@1tVQrY7Ad2 -zhsBLd4pBVwcC;-yh_B#pYoL8{(zB2;HOIBIjTorqg|ib3ptG?E=u;yu0N}cEQD9#8 -z#F9iq|6|z>bJq86x;_aS7-W$bcQ#^~T{a1=>czi^I+>W&(FQ2)43~M?bqwSh@f+n8 -zJ(zFHwY9+Z(Irz(EE{!PzltSsU3=@Xv&s3#bw=;=+yK9{gPMDpY>2(42ql1D<0yE%?=bO`wX^@%3N3X5(1nmx)dGn^=4)Gd4dCVI3aK%=zbQ -z#5?rm1t#W~9w61ryJI!7&M(S>mQlQjaYnm`^V2J% -z4gX^PG$f1}!FS0+aef^_MCzgtS|9?iFRHwS!dZdxb=5{3!udl#aI6ATcR809Rn3Wa -z&(h=NZfS$j7p5buS9J%6Y6N2R&g$)t*Pe+`0=DcT>r_?jgX -zn)8-8G0(yg{4#YLtzuuY<%za{&G!;?+8CSQ;%xxZSI)g`YXCX!Jw3>EV)%|A9Lk^S -zk%H}zCV5?#WQNhExLkpiQ&KHC#1=+6@&2-89%wZsbzRzTfa!+IU6`Xi7&6`0b-PL- -zKhUtt$0hH$@#;EVDc73`{zhrmrn~&p8%`e;V-*UEQNimpqC9#~gu@#09H%rcJ`MdQG5HC}Y$ -z=+>)Sg&wu>8t?nWQhu=CP(fLhW?V&+Q8Z`)oTyEppV92U4qz`;oD|mum?AC(Md+VU -zCzb&YZz$k}gr&&bZ*pygBXg$lZ-=18?T -zb+i4_)@#V}F}6XkNuITSQj53q&F%o@JrR?CfS>mMxTTtCj; -z50-v;(1Ep6No9I(99J6nqpLQ -zqu5o&nD8`!7|aMB&e5+q)Z89qs%RO3vM<4y2D1RES+{}|p|TQ+V_H~EB|>74VE*JS -zen@ZZ35P>o{OGC}P-#ZyAm_3W*K9m!e5l5A71IE6my03dWjj<@X#@UGYouq5It3@D@~yg;^0k -zPS50#Z(G~h{shMJ627#^Ynx9zDAGgZ)5?m4_r%;o^d<{F2CQXdXyOKpS2Cd+-)nsl -zGe_A^r(2k&5SY(e0kO+1}UrLsF+*X#mv -zvmyz{6_hw{OwnAFH}nb{*u^AOI -zMm_V2Df79}2+Ps2Rv^2#G6ez0VmPOQ`PhBJg`IT<+sKIvoA?(_;o4yzZll#l(cAy` -z*qqKk`>;8|LVn>IPo3CrK{E2j*-5gCM5S@H?Ho|%1WDLIZN>FvajC=nFUu|D(K_I- -zrH0=-Ir3tW%OT2DK{lWW3|z190Omkuxj&ky1Uvj{)8dK?z*F&*K``niAx1}2IH!LFr!N~j~`;rr0G-<-Zp|Cr$8I@qE -z>ny3r@m_N5Q__TJdJ|SyQ -zbFSryk={3Mis5p`n5t72L^2Me`-|)IY0Sk;lz>@5tX3;7jzCj_{c6?4q#AGJC`FXM -z(ZdfNEzIqa3U=c{+pc92>nc8+wTytayN{pxO2`#JX}j%4yh>y*_Ji(#On&e}F%Aq+ -zs@!~7L-u_mi&k_9Gq)A_V?oKkiDH%${PC2UtMT|UcBcT00$SOAJh}q{6hNm3IhceFLh2L^Okx);JdWuqB{E<4a`XH{19q$yF1)S{*qNRvwS=FOql@ -znK+yE5`npNVLNX(xaND8zCo)KqGr7i56(Z8s^h+9p3+Br@TP37HW&d_?M8Qi%WYI< -zGBguN(?&Kb7w99_HM#6$Z{n;(Hi4w*h0zm{we_n -zGSZ@WV^B0?H??Z3DBT;>(y>OPLuXGp9fR^Z9r*2X=2RT52Lp1k$-9+C0>9XamNTzW -zuG{!X90Fwd(#r<7WUKmo1pf-?B^A(?yg6N2GeSU?hM%7_qtfjGB@~A-ReC>2HX%4G -ztxP=n3{&N*hX-t8?$Ovi=|d%lL~UhKsBT63fcJ}9Ima^k8(t3Ua&8NSJ)7Kju@gp< -zB^&s2o#GSFEn{;lI|?G~FxBWfee9fM|Kx21zuwr>5bZJgzd!x)g#*yYr>`x6^r~Qw -zAz-Ss@!+Y|*Lm~cBU6+Gx}{sAnsT8tZ%)v>X$o#5Z4D5+(s!$)Y0gRO#%ZnGpxyjo -z&~=}`V-b>q>QZw -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 -z7bK`R)LAyE)9TLf_lW19wDQAI -zazWViTEn}zc4Ei9CxZn$K_8-x47Dz0p`Jqw62sAYTCVUkPr!bij(wee`a?V|D90#A8)I|Oe-i~Iv)!lrA+c89jyrPmafSxwkH=5x=cSEKQEhuV~X -z4Nv+u2UPQ+ -zF=-jaO-wLkS|%_eWUyMX3o1XY1dgkHJK(kHfC~UT5Txivt99JxkuHsTPf`b}`L-!w -z>tJ=U$<1MLJd25T<`r_$k+Q!RMMH&S`+xtR|NDP;SH%b{Zx32YhuFi2dYNOYW)ex; -z|5=W`NBsjSXBWWQWu@*jVht$_d5<2+3%Ga5i$XIRY@=`Fbz_;s{=?eOB>-=zE4jy0 -zdK|fJIj+z6pm$^nmysG8&m~4^Q&#yr`j4NOi9Vo%9T5z4Rv<{dmDAt3kt@V#+1J(f -z^RLT(-~@ihHXa;&^ -zWW%qZ)mV@8>Cj!SG(6MEU`^exCr{0{p)>e>8tjdyM_Sx0){#t+gND<-aunvI_Wxnkp2s^j3i+RXROb)|aDzrWmi=KroiW;?G<5dT -zLCW_p9(KJ7xtX9BR50i{>PIKDD*|2UpwstzTHrsB+UCp(vJ}P=LAKz4mt+}9m~aUz -zvRhf`u%IIi(s0QV9MwGpb((8*glV1zOv4c2ySF1+Dddm@HhD>*qLBh=6q;lHjvKW& -z$1UR-|8GOS`pF!f0?e3zpr(=3?5YSvEERa0z&L_ZB)^GhQ04HwOp} -zeS;)M5^HOKK(i#r9Q+&wnrdHvzEVM8>i!KAZPhk%{+;vn|$74$J5U`j4$m -zwwezK3a!Kflv_mp`+i3-#SR;au==5Es@jLPn@CnHqiY_eqJ1;C(VOJ5@i -zB#NI;!_*f$!Ou6=nka7aNo3e7B -z(aPP~k-K@a?2#nqqT)3otw@d^QZ>H8Qe%G|O&BSf%)i_q$K3(8*4O}7v`W6gR2HD? -zrDFi&Nj+_jvL+X*OUjMJ!kyDrMTHFTZhpYwL0`Rm`?&L4hg(BJK8{#UZtXtF#~9t` -zWX0#Su54j)UjjEO;;8aFx62`Abk-vxEE2#EDD;^*a>r}$`YEaDO|bxyPPd)t?{@@t -z?pktKkAPX*HEv6Sh2IQIaKx-1P-u_yL6#VM-IyqKMzF5fGo)+nE_H~E9I&e;Q>nJ1 -zgj%>M8sG9$*ig}E4!2m5x?)_snc-!NN;

>!(FFhHloN1!tFPF8R~#=H{D_jc%GaOFFtrXKPRKr;vx6#--jq!^Z!M6X6M)1NXtQnT!V;0S -zYYj1CmS6us -z^LO?8$6tT@G#Y<@ey@i2_2K`i?lLQ!5eN2YPd1kAE!Ujku?-}A9^zbo`h7Ea+ey%@ -z)pXO{zIdcEwEjAxcFX_#!G1AYC%qzvhlN2Cz&1;!Xw*_Rq?85;PQgAPe`XO -zyy8wk`DlACY3pj`3I!PJUvE8E*`Y+Oq8rl$YPBQPA!dDK(Qr6WOt28I$Z&F%mU=<6 -zu5Z%-MPu!n+DH6`h~j=M0-betS*eCMZloK7?s^1l$`RP3Pm*7kG4S3AFIY~2!#|i? -z&P%iTnso~J1|>q}U=)p7;auqCdj7_c6kQD2xL@LcPzky&kPyYLP3YyQ+;h&jrN|e& -zF{0_JY%&n5{<%2xY&5x5Mhnwu%bcM-x1-v_ZjO~#7{6dI%#GcLu+L6=*LYl*?X-3D -zL-<6VDs_~)txUwzZ@~T`nZe~OLnL=R*DW#V=cmzux@~L7bO_kItXSPPp2_n6`eLPk -zD#efQ-vv?JJsRgEvB$_ng68x7gX3ce>GY-%WeEp#B#@o|Hj^DmVlLNr4RIrPVWmgW -zXx;#1r$o=!fY#wYvvVT}4*Ch&b}99M3b-bbAJHNuw+RskvVV}y<$|;43F0Y|o$$s6 -zfQ2Ad1-+#K3&%ydvx1+YE5rF=piTW>3syitYR1)Bt&zC%V|R@D4sYBYp(0F*r7A}o -z|-T#8;}692sP*47QSdu22G8lz+1%yftX^ -zx8|1t{h;>xpXYR>fGOZ5*}YQ)9|^Km?)hY#i3v&cwRRtD_;S8TxLs$+u%e8Xlj=aU -zRFO{VdN@$;tAdqeA(y&4>k%Q(hAfCLZaLIXfHw&g7&jKdPieL0iY1!+eNPc^ApzS2 -z9?V8W2sf+gU(%W9MjkIxD1$f}JHy#Ltb>>AZovJgT-WTD(8K|@K7`^E%w@DyQ2xIm -zOxz*XM>1zxeuyGeReZw$O8hw=6C1MN5}G|(qYv&R^Jq+|;(3VOvIVnKI=Xaj(oOq^ -zTgY|KX%v|q-Ns8mF{ImWfq?NyFc@?F23OXrCYoN3KYre%rGxJ5gDo(Wi+Qplx-kNu -z6;YOCuah&>TfZg3y~F5`0;Uy&DEG0)`W7X_&4>uM+#t@!@P~Uds4G9q%Hq`>$;*3y -z;(g+H39RB}l(uxmv{$zyd>L;_+*U3Qx%R>)TFgn>rk%fw72xr3BqWX9j3 -z+>Gu8Fu*A>#5FnT1Sf1y#rceC>)LXt8V~>J&T>fJgG0WgRlPPoRyG|~BF^y+V3Df( -zHct)gj>#We6Sy`_W6R$j?IsdqSTutJJ+DrxIYqQwAc~!=WA~JbPr28F6;`sdkmYoP -zYTBc*sx{FL+7mjn{1ep;VkPg6jAeilIq--&Bcp~5WJ-(+##2o!1d=JcRVhTziSAp$ -z;9OlcXU)Q(B^@v$%Vfl#ELo0Ar=~p==;ws4(yGSM;!x5KTxYJZnFbY4WS{ZgCA~sR_Wk>J -ztXxrwqR~ip2I-rJaV2ExXq}>E@%gE5Mp&A9Z&iS9tkj0(ES;oz8M6ab?BC2ZrK%zcyJP|Zc6w&hTub->=z(mv^#Xk^ -zQY0Eo`v3y>4k%1q~u$=zf%${DjB%bQQ-9Nt6O|j?4pEAvxlD -z=ep|+aD~|1kWKp?aN#9`w=1wv9^}B;!o^Em$$w6QmD>sd!h)KBH{^?>ia!Z^030>+ -zhok=~G}O@m2CJ-)^`GoBeM2X0Z(^03;F+t+YJ%XHfGa4Xebe>}NpaHHA6g$8# -z$lfY~ -z_o6v;FKhzuC8-|82s&{lzc92o9r98!$IfWqJk6x!okuQ~$(s?TD}>s5kWqb> -zcn8y2ff~|!EkcS}vxz9OphJRA-DonIQwh|_=&!V!ri$ezXLRRpz{CNNH*9|(Kr9kX -zA#1h@_+SV(Q`VI~-E%=RhF+bnh48v*))gGxbl%2{pVAr;nLZ6h -z^V9n(h+iOPna^a!95e?k+e-R}lMBM+d!W)MQ`e=Yfu%3xEqeAfbPU^m&JlFoxKpTf -z<8qqUpPa(HxW*{l;WDFC-NR;F6IEdGQEd>*$bym;fHN&9;Onv#8tJ8dKZWnLwQrJ%JHd8iIR0ukka7pin_2$o6OJJvw)T$NyZ -zM(NVBIN1;oxQ9Rn?c4U6I@SsDa8~2Q*U5Ie;?iTrMYGw -zxOj*AR5#F$MPt$IaluWbO&ql$Y+o79H0%sunHHJ$c(??J&@|+G-MS^|W6yn0P&z4? -z0{iG#bJc9iO<>w1c1YPDNdfNcmFNKdsnsg-(h<^ROqPtVAw{0th5dOr3zM!jx;U)P -zHy%4%Nv0!yGz(oo^VN0V9TtUb`qiPJNlS5R=MVvIRQ;0vh+?*tK85V37FnjCCMpsu -zmQIJ2uad-bHeA7N$-%9ecFlBJc5svFEAi~0!Wmv66*NeT*tpha(F)+>@Y3pL}<`Y -zo3kRzFE`r!KYZ1?RKrOMW7%WYiLw`+0EDzN2j_4)B5BHtmL|*n8Mj0*6l{` -zb1Fu~&t&)stzTJ!yadwoMQh~$s^n*Ph!-OrvqU8F)ja*<9<0Otj}I2#&7}>G%M{1b -z_52@~qXFsF`s1^bnfK2x(l#0W@gLvf1nD2cpt3~r2&sW8Nih -znbxhqm2_x0*$U|2<-6`ccXZ$i?EHG8r|kgnrai;RFOsU^i|&5SVN}_)NZq4_6|z!I -z8kexAjsV0}ujjR;>|0R?OLC&7K2Rpfu5%i0z?hkglo)0u1%0nkx2;(Lyft2JoEB -zOLWG;1+MRH4JdCtYAY=w6Tf4pkA*oqN5NYOYWXZQ^mJ+*UKT%I@z3<0d5Gm%0**$x -zn7Z{_*^svk)7(X_de8<)T*j8U4o%FTIB+xGoe{;>UG25=JHBX@0X>7xg8AzsL< -zxtqP|ghV*wuF>l+d8~9Ra6%)=L=4f25bo4G62T#uB}!(>6k&`WlLu;dS7w&M?|Z;` -zTGaNd8=#~*)sp0dM)N8x#6q^!?i-N3j9}G}XGOmS0*)q%P|2aSS?cx&30=T} -z-@1f88$P700r+8Pep&C{!YHzM+`ftR&c!dBWg}~fQ{-}w#!8+VFuA1z&q?PQ0%Et^ -z3OF@x*(5J|oSlYQ$;Nsn%ZCICSx-Rv0U}xp>k!dOi(%^;>6T32NJ|g3!QxdvQ)%Qx -z=IPj|TqGN|?zdnKyue2lyQU;s1Re)DqU*}^C8VQi)yndUi*%7HHdb -zTSf(rv|v&1je$WAxr;oBGfsJq2@{r)uNaO)Z0Y*sbr3qV-={rP9m-;Y0v+akP}s>e -zr#Wh_{l5F$SW}~B!f41~z-cYr)&TDnh16N+kNp3bY)608{9auTUnBTp4X> -z{3ES|TtcdEnwvC9D8$MP!GszIkDc6Jh5nU(*UnncETp8HofOo-%z5q3P6d_^(vweJ -zE69{|--an_x)g1v+j$5?2|vknveB1piDnxTS}1ZSJIiNP9|yO5#i2hJ!)airK?6v( -z=V=!V5zE`{(z|&^WjbjCB4jH%$xx>7wU83FZ$0Qtb+jIjw;V$RoELglI4~Q>VK;0B -z)>J6}fzQ><kmU$+z0-4}vtSa7Dz#=>WOE -zgs6%oFGq`o!)}!|~Ya^zK8UkVyxw25$Fi;7l -zUA>>&%Z+N6gs{p2@Wv$oZ9*4m{e-9=%1urZ7Tg$J#zgqNa`$U<=uB~bk1Oo -z8V#Zxkrr6=-kqu%rUd~A7I%oxlbgVB--Dvi$OCX4spjE$oy>j8ycsBcftx9XnO18x -zFhn0411D_^z`8T)8=yRORy3v3NvIUhAYDU6!Sh=kp0+1OE&-lH=hw_@3RG3U(A@Z& -zY#E;PJff7mi~qg4ePBiok(7M -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 -zbSaR -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 -z#rgtBub71T| -z>+^s~0nte&Gs;j##`^%E@Bt7OatKL?;tn?t-pCbMmkn*ULcMi%UVxOA;D=;D}#Xm1*;mS9~?@~1GsbWpb8cQ{H<FGjMNe-mijt1EKUi#KPgk5jd>Wd!A_p%dn?jU6WOZb7voUK7IVL9he{vr=b)cMagBN>!a-cGN6r1F*V}_va6PdYsU)4bphhhglNO14bI%Qi(CR#DGH6OO~QfU!ofG4&`}ze -znENd()}6$tW}wB;DVD|5M1U?#sJ~k0WRt>3yh-*;zs<-Sx7|rIKi6&bUQtp|Yfp9^ -z*V|qIU|=SULx#Bd^($A)EMZ>_5Md!<(ERvIwK92A9Tp-#t4x`+17=+j`-+SqBi15u -z=XR-}iN|Jj7O1>DHfM^>j|1uPE*rT>XLQhnq -zs+BmR0|MHs8M?yCcgrSv9;wXXXDgGwnqfxEPIZQr54DzJAu)aXG(;=TRFk6i0PBV$ -z#Lb{gJ4)7;Z;-sHgH<`=`a^gG&6 -zu#zeTj6$j}oQ^(B2Ll1H|Hb8wo%ZaIIen)Uwr=7EWv#3Y=WGbCf+K(ifJw!!oK!^s -zj*>(o*M}*#*=qTcntScSo`DSl=$0a%Y30{+A7nIYg);O1i3}rKgY4?Ds;p<5tjdlg -zTTknhQNzm+4QE10OGy(QZ`5t@pryO}bGN#*&Of8@Q{Q!DSmV&dCroH7kOiw+=PKs> -z(Qr!eWKD;DLYl4(4Rv$L`&$wb)Cuf5%CqI#{(^+0LUNv*E`1mDddVzC8|1``fTnar6}?F% -zT`0>QH5S8P8o(v@41?cVZ|I0Zr_&sF4e~Mb-@bsz95xckE>aR$>v -zjV8zHZ_KvhG&M|n3k7-E)~(_7WMtcw09HV$zxEx6zyO{FW?)hchKKK@pQi&+qSgX$ -zN7aP8%*6mREc_7hA5-}D=#E9hhk(k)H#y?j!a;YM;r>|xeqg=5KcqQC>CiT~WwrfA(U< -zOJSJFYRe)D4Qlkrq!1%Rc4EVO-{~Eq#te1cPYstKklx0b0}trz-h=y+2LES_^gja= -zlCDYePNW^i-8lls_gJ~=6yzE{K)v*=Z3Vn!5x#?oC|6i|CrxwYyOXK60-E{6uQ1pc -z(6s4q6!6Lf{i@d655$zzWNz8D)IbY4z_9Hnw%d{HLeGv}^OMBfFvRDA^eF(6xwOyd -z2XQZ;T;4fU>VbEP74;b_@=LWv -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 -zv7XwBA-2ngb}Gm_&`* -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 -zRFN*>lZ%}p%P`=<^)~k+kVY<(9#>Uag -zf^C}9`#?J1&x9(HV?*gPz6z?4m+Lqlp9{HdP9!!&5yq=BxmSb$J?3IoYled?@7d-TA=P^WFxjv-UvAlH|;YPS} -zBtiJ{kvu&I6!M@!E6(N61FmNR%;P~0LEMjgz&iT!Yuwgjri4USP;9o9n@Vu?z>;H- -zPdsuw^lwzj7kyKW!&Gbw+Jm?2^;teaMCzfD49KCcCAw;27KQRCUwHri>$eW9)v1J~ -z=3H!GBTFK^;Ki6rSp|Yd+5A_O{f68?SLoy>9^e7{4<)CcG>CFp62C#=);Q#^lSmp# -zEHhI(go@|a3p_=ebd0F1FJ{Krbh^fU%p;Ek$({&2&B_N -zX%Xm9QGIdU#aT;(pq5Ae1un+(q9XwU$!jJ5G&hB#>rw|=7uME&<=2D4Tj@{{PB=I^ -z`lIa_&*myBg}&a2F3A@~snCuj_Vuoj)USYsm8$13f>0t-5Gr8OI2xJz3;7+xY|+zM -z)QJcGUqCQ$T!e`_7ehXuz|XI -z&zOiZLT8+O6L~f})~UM}Ue^3&GDwl|^Ov>SMViW5>I3B%^qXwhCpBT8%uiY`)q$&9 -zzk4Kc(`kJ=Xh@osoW5q8W*Y$qddZy1`VEn9dPk#n=ZnrWTlB^AkPq2TFsLXpjF3;g -zZrSd^_(6M?aOEfn3`?8{hhJ%OWPz5$)|08OHouI`WIpOj?-A=+RgYyQLBlHwu(NQ& -z4uwTttDeoTrFYE7b`haH6A6^wZ}0Aoo-_SGoiuZ)H4sxPJyH4dc6qZpRyIfTNC_M( -zBjqNLkp;rLvHmvT1p&olzW(Bd6pv6i@JJx3Okz{YKZ{=t6#&|FNdUS_r%~k=gL&Ca -zF{v`W>pd=b5#>_vB|9O1$8j&@l#WfjWK(kpGFUG+9UoqK>GHzqw}U(c6D|x6oxNy2 -zHS7$tL*H-gEuk*0ukwk3q@zDaQ -zHZO{y$^O8=jErZwAuLBi=a`p`MA^m?sSvNjr_r)}mW&xg1Tz4HC{jW;X~V7osNozi -zu}0X}6mby1RBlt)`(k7O!gh{U+%8TWKAwTnHLDuQg_)x(apG1`ZB`PF&^pJluIhZ# -zVqIo2C&xM~w=B{m4s#Vd8k=G7VDvynS`#c~e=lma_lv2+aDLKCHZAE30meRQ(jE{F -zn=1w}3k-HxOwUxpCXcbnU7ZF3`{^i%K6tT7lM+$9St+6E99a!bK5J -z6-o!RMzn5N&ZVcHYFVen>`cC*J@K*|;nu(yU}red)Mye|57e}}L5O|*F;;BjiEWn` -zK1G19fgPR*nF(O_oP^suq4?*PLkT~()MFUr2AJF-b^m&oyn -zY^X1b2~ODJv?(_bfKK|$rhQAvFr6D9iJX<@o{u@-*zE2S?=7_iZFE}ZCFKa&$qO@j -z7059U2@F9Ert`2Uxrl-bZ;Qc#V()fY5j>J5JRe?ElaBDL4aG@nwB-SP1L-?tC|M|0 -zfEhk7Br3?kYOD2Qn^LSyj(9`ZmCztW0w`nmU_+(@Ar^D#Y5pVjIL8jP5lW=9XRuGH -z6h%)@QS^f`t^^bZo$q4Jv8VaC3$nuexC)Di7|v;b(yn>gHj%`m#L$biN(#7fmq(Ci -z<_vm%Ec-{M7LEv^oLc`8L4jJZ5#K$&@o -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 -zNCau*@Us -zW678G4&B7Sn%f`+hThQvZ}fLYuEVLpnXERlvF-{Z$kNbKev_-hj16_qKZ)-$SU(9B -zCQD1|ncf9bfhz3Lrw{bq1(pCaEm?;Hw+bK}aLmaqzII130TpoBh581qLD^CY^S5Nz -z0UwxrK?v=JkG5uZ0_6|eI=wHThB3veGN)tP1}^=K)1*01@=zL+;ULx4)vc4$X8HX0 -z75||@4;tXRnpnId(%Orm3M2A7TXz+$Mn=?(KR%3agFMw00-6D@t_>fgX=$4nPiLax -z{41sCr@Fuaoj`~>vwCT1D3(D3EsB!gwCHwBAw>;bC)nZ`4^eEcso)I -zjvMu%BZQT0Qu3Ty8fTtHLfAll!liBohJ#~vxHm*ueTXVjSW -z3aI~w4*w77aHOyHsJ^%)R4{0ms_2)#-aPGbhkoVElK>(NAmuZYSnq)GOd6^3YPw!v@Sm@6Q+)9`_=YajGrnRXr_?xWZ&aoV -zbk0j>enXEE`bT}L?~n!)>Fj0dV<5DHzVPR}D2?eZOclZsEGz(uVCcytf}t_# -ze6-^;aPV%S^$Ag=2MeYw_AR4KdyLdaA`>c-3oF|1OlgCe;F;?XM%5l2X>o` -z;*pt!-Olj;SR8RgR+Dd%a?EjT?h+Q`k?EM(DBeBx -zACNxToY>xEG=d||dj8=rponmX{8t--^bfbL(iR{aS3RLMR1ruN)|jj-XPcR%QnoxG -zg%^*qXVY90I4ItLjXc_(QVsT~Vy&j*+B&#+wUN+}`9)sqw?`PP9GQVGWbJ4^p^sH{ -z!X%7l8<8Yj_A++~s@)wgk~1Sqau|j{9;+H8oO~#uk?CEuD=h*2`vm5M;bzd&9Z!2< -zB=N`$*%FMg*gEVeKoWiTAj$;k7}haDp4!qOtFR|V6OHDKWx-bQREgy!30 -zSELu?SE6ky=*^I!EQcFKDEhXIVM%3y0u%k?yNQN|gUf=CA@AU`Y1rKPAxl$uq*-kR -zEi>=PDLmLID#Bm8uP;{tU;XJSRrhg+Ri0k -zjQDf_SBm3vVjNWl0b2Z|dZV=VP+!K?M9g@quE6o!5 -z9BHluTF<&3Ih|3n75~7P?|`a -z>L9&1(Z)D9nr93yysp?Ad`xpnQ_xNi&;EvS)ewGeZg5*p#HU#12Qn*?lkjOE>GbIY -zGy>SJOqd3SOSV14A}TY-?CeNv1d@U5jHsB~T$f`l)e(MROza_x==GxN38M_lvVe+X -z6C{^Mj_}ZnN|hOHk=fli58^EcN^c1$(1(U32ZrcRxLx6{>X?I*KP|I0#|OJdlUD-8 -zH~&=!i{{p)iL)Ft=_YL^i(d(~UBqaG_EdunU|tZ!(k?}u$5vn+a^gaX#>l360tStb -zq)dZ+zQH@g8?171)fm4ak%a^u)b(Mnr$KjyA9Me1M*U -z4B4_Ok1HJpds&HSMdlH3;wiE%oL-~=gDJ?7^Y?10?A2PB6`-<^2Ct{ef*qLVcY|$L -zyAS-=TrXn}z!kc%_Qkc;b9a~tUUN%+;-qJR55Q%bo^x69YbcvvVZ*7<0UU@i$$QLV -z6Ow|7HSKz9|9T1!#M7!N0UfpNoA*JL6Ulx>i97aJ-aWKGxa!cPHup@A5&YXoNlx4*sA{Leq$cOJ;*xf~s>BVId_-dOJHcNfx -z+d^d=8(-#W)ADFJ-gWFg=WEGLOyznWsdWRi+~c(M4~R?@gfeS~MSyX{N<~>C05~B5 -zuf0&R>$n+Xmee9}g}LGsI5fg^+o;Jon6}2#W@e9)*xv>A(%qChR5tt98?=s}j!!ck -zmY7kY5s`U%O=SIBvvJP83z^3ql5n>S%Z)8L)AFfw$p8-+^|Umuhip`iHm~U88_w#q -zr_KbX26$Jai6zM{0Omg$4Wf4z%e)ol~mBi6`x>&t@Oq<$uFnVNVkWP(XF=$&XvV(V?UkD;SFBueN5o0 -zjTfYCX5ga@9@^1YL1W(=>vZ8#4$T>lf&3ncLqg -zWxZDE$>}zeCqldXE5Q6$=)QWOORV%{DIo*Th0P)0qnyb>S*nXe{PCR=T@b1h*?F9D -z07pYwWTVOittS%7CtLjgtKt&Qg5BVODlOJGm>-|V+$9JL?*wEIM`v_XBo*`olCxIl -z2&I(N1aiC`)&lKHS@s{lpoguzdO^0NBRg4K22p*eHsr-JqC}oN0Nd#(rpy4(jKhW) -z_5v>A%^j6T$xMoMX4j^M9%V87Co7rUo78q|ddYwk*MPs;x!p?f!hnux3=M<+1H -zZzpQO-z4o0z{MsOxf9nVPA^)&yJWbkrmVI=@>37@l)fnP3Yn}^sNebKvCLyCV`6)-UJ(zH*X8GMq!7AWe2%=;EU`&P$PpvU^4NI7tfpPT%&3P9@(KD~8egWx%~eWnS4 -z6_Im!B6$K$329TkJ&bXv!E-dYO4&~`a=!$yQ+gv{&Q_YxBM)lh41_6?&#Y1!G7FA$ -zv`fadMhlqEkbJdU -zmzAkzP@YKUx^ZNZ1xEshJAbB_kQR6?qdz()LlWS$uMa2DA#J%|oQEA$F{kX-xO0N3JnpAgvo#Fo0b#joaf`X#HET89p|(VwoBE>NbePu -z7U<1LUZ%t?$joQ%4|;hBHZ{ksiZiWrDcr#u;?&`4v3VR-4FAA~lN06N|iJBQ0Tm>}a6TN14v{&?A%>tqq6Zz#?;~2ty@9(~y($5}ZLG -zM-Wg8t;(Q)24SmWuxW2@jiz>ep=XOMt$GhF>&Ul -za-GDM%l($9{apZICLhvp3S?|{@A9_27ylZ>>%4^)pP8YY*7o#|fel;5oKs -zxk`b=F*)2@hh$h6PhiM)8VzuF4&4ZnXbM$sl?1qv<00W?<%WO|Mn4A9h9;#pwy+Pu -zbpd53_TiL`nG^Wxo%Pg6=kYZ6z6NS1z3QU8+Qhm2s$Q+~HW -z*iRV0>R$73ysz9kSAfA&u@O1@%*8IpEKQmgR;qiHM8<+3hubNmoVDD_-O{e)dwqmQ`2R8XCp(Vo-u5s!ueT_mhS!0N$mX0J -z6!48|`n^E`ltjr4HB_pxLxvx|_Sy|eIZxsKaewz@h?ZrEB6q*n!rRc4UmpQ!Plk{d -zt|QQa%KclGwX(aFF)HOMKfeE%_hBv6>l*s2aOJG_vNo?t9n<^w=~WXWrH7S|fNYhC -zR!~NQb?LSi^@0vjACw1e-i#Gx*5Qka)ZlQn5?674h@E~CIY16nQrQ6ph8B?mhsyJ& -z&$vhKE0`MBq{)&ye*>AP+%s)IvG#sOxneHkVpb+DrZ^>2`NauvTY~S-;6B@h@iEm; -zRAge|y0Mo?KFX)64pLEU$+Cq68@dp6;sm|H1tv3epMLBrZBe$>T}?M}`7Yhz4s~w% -zg@s`OM(OGj>=+Y*5=2A?9j|OROHpCh1iNm)>ws7bEic|P>980hoxWR{^`EG9YsDjuItRM0Nkd1@K -z=XARbY{tUUEtx_{d2|-BL?Cw8#@>NN0_d8sSdaw+aW)D7Ko+}9ce|xEptXF;dXcN7 -zn6y+{*U{)<^@p_iUAu(d$|MG|xoN&ouYW7!_Zp0{b~(OI-0LeshoHPt`y^~v>k|6} -zNd;X5(FdJgdM`o|2+_aLJ2!>QZ%v9QFtCFgXB9wu&`Vgh)+XLciw9TH+aH;%O_mLA -z(Tsia@MajIiTFeUlA1`kLR8J;ad$b%3s54Jbz!>DR$-4{8+>!Ug*=S#8PN-dA7HSw -zV-{KsSbD-{wLT1s@c#2%wKan($(J6^T#aRCL{)&W>LhY`xRo=dUHlJI)4XZ1nttj_ -zLm8RLY}^xFS8{TaSs@h^!RKas?90i5Mh&XrEXr3G -zj1l8flZqGCj3HiT#(~GqNBr#q5=(2iL|}q5TdX45cX19s!Ln!?VraoL{!(P}$eeu$Rkwizq;|KMn82`{Yw@Q$VI^w -zxD_Cc_jVM~d2bf&=w9l|60O@?H3))inwfq5d(8jG*gX6_)-HdK(Ifsf#znWUzuW&k -z=KkY)J8Xs%n&#gDy}8S4{G?5L=Nqs*${b=e|55*R4;Ftv^x6cmfdsm*?)Z3<=@{s -zg-*K;@Bhdt@$3D&-6MHo@k{pGpZD)=)Qss>UsB(ydD6FPk=`di+huu=OkZ16No=wFjnq=RFL9Fr^qzu668Tu+or(bvu}%5dxMYfJG$`aWyj6M>b(ZlyF&4Cpv5|Dt9I0P^X=UdsIU^Q7L1n0!W8jP3A>uo -zwR2gspOMDc)?R!dgH6N69G1*s`_CjwYLXuEz-mP-J5r}bzs>2C02TdICyoCc(3)$A4Z3F(hRS*y$u&^`!mmuU;2pCt4 -z^TsBn?nyGn*03q-g4UC9C{6Sixup9f?MvEHjY@r_MJ1Rn4}QxrXNwm}i-ZE}kFL({ -zOKR#!CMW}aj;Tv`R5Wy0To#-`sMuF6P9^`kgI -z8DKi_YjF_D@61Dax#54L)h#v4aI;?eeD!>*s{pQ$yHJG(>gb_Xzbe&PSfZZ>0lHq% -z-mDuGWajC#35E_JzwCVgPe8E0F``*h1RWj?`@fuC)Q+s9{S1<$hu=4m*7X5VL_VP6q?;E~k%owaJ0YRm2Cg_k;KKqA -zcfX-fMD7Nmy308(0x^=3(MX?<3|p{C>(0LBHGk{C`;374!YS}X|How0WJ;sX14uRN -z9YwL)Ep&0?g{h>|t4qy}9r$uabLCX2CC{!-g#pg~T3h?8nyhe7^Q7PpC{XO&qYRw` -zc5wjjJb1SXpS5yd8$g)~0Bp|28aQbYk2WH^GxDSUh??3Z0tKvvP=gotWFt#;bpeL2 -zNcTnUjsZ3&&aM@?ns}x+Q&9agXPB^Foq@p>EhQn3X%^7doUtO6-|)cpx;Zlsty6_z -z_DdX6w9%tAa6Lf_tBsT0!|`*s%GXA%8tpb-UAB)v=0m%!Bsy%H;e=AH%{T=CkW70v -zLHOm!Uj+s&=ggRUqntw7rB3{)@*VL9C8RzN?qp%*QYc}9DXGA~$wDS3P|{AYnuw>C -zOYyqpEQk5?8OUpDGJyu)*rkLbRML!8L{JwuNDF%vJGSrSy^%2@wlU(!^3nT8_L&xi -zi|yCO0=_r#9sZB%NyzdRGvRl>u)ri`90SGMpTP8}tBA*L%oJ^O%2qgt0fD(ljrzVboSL%V|Z`ws#xPZ3U4KC_d -z`o-`yCOAIw4nZ0vY=N)$U~~_!#eXlb#EhL^z|r4p!$jv^_#CZq!vzd0a-jPRvcNd% -zbYSnU$h(qJR{kjefImrfIIrH_xve -z@G~b+=na{%m9a-oz?P`Gy}EVP`uJ+E4^UoPFfQYspo$p<0vS;B2cDzu|@%Cb>Mz=m&g(n~Ky) -zdg?2;E}k%TUs(k(L}Dhj-P{5suf(}X+HZzsxugH}C4qIXf`L#f -zj+~_xv+>?7$yZ!09MK>8?V)<;X@kuq@WgwQuQ_V0YaBx); -znjF`%ItdLuF<{M!f{s==ne>_#<7l>4q1#RdwzL`+_qx`rhpA6E*!)ExR}~m}Ezutwh$?!3B!kSW#pi -zZqXwH$TbcVf3CF}(u8IAVTX->jo1WctvS_O#QqF?GYbleP60jsuqzDCG5azqK9kIb -zD(6g4&8Lhij3@jCKF+)(IBvcEr>{+;SNQ_cl -zMCg)H&48BwT9X85c|)YtOI@3sO=1yq}Cs`rLOrix8=Xf -z@utszOL>?4jcOtLI~3oYV*Y#e|D)LV>5YRMMU%khJTWSyJ%!tDOOjocLsRr>pH^$oO3D{D48;({w6o>rJHY2YMU-X -zw~ZoVD-c&KbKOP=BG`%OH78qFyMl4F@SXAlBtkPC4JV(T)(20I9jw|Yw>qw_F0=?~ -zB2M&4pvcUTwcab&pd21%_D|N5*2LJg)sWZQNtdL-pu -z0JYueid^8Fjxj}l4^sYH?s_r=fx&Ytu9eZBM;k^a6QN$!Lqrjvw-!i`0Jzah||lUX57+onPW+VK#GPPX}}>iuJKj67fWoB<2Bh>NlSJ9 -z-khGY%m7I$^e_~obat8LNw@uveI-NCzuepV`S|6R*zinuk*VI#U;6d&@`|{-UU$LN -zxyxr%`ZSs$u4#k*0`lriOa1inwO3qf1ErA-VIGTUt9o>USGC7MICs%;jZmTsd83Vj -z7@%f&>OitmQ`ICx=Nw+1{MXj`>B4v|W);17jT1{04`Z|Z#0?!v)-EmSRjY8Qk;|zO -z83cwkBgFju(Ig-6Qvy5=S<`()_T)`s=lE`JK-s__(OB0oOv$$uP;k}3|L9XSj_fr_ -zS1d&}oM6&5scci4I1$0i5J^b3HwQR6J5FnwtWB6=ap!MLG)Y$e7@8?R9v1J`;}#F=6XQc}P?ohpa-|PR1<#g4;=^n& -zqkG5lT@3FKww3Qp%wW<2b8Qnz_g=3gLKk4mIcs7j1^Gn_#f)|oBmv};jJJJW5?)C= -zaM3vg=%GHy6&81)f5=Qot%g&W{h~$G^3!f!uVixD8DC8b8fa|=&237f3VFFodN~+S -z99TqTJ9m`nw=P~?wRXAT>Ua7pP7+k;_Q8sI*pY&NxLXy_02ong!#?f2RXiH2wA+*= -z+7gtT-6qpPY_y**Ao)Pqe7IR?mNy(gFl*~$XaXn>HDe@I4{BiXBmPCp2*dp2ht!#& -z-Dt5J7so?=v82BS^o`#2o7e_EN6kK&d+`3(0R*MNRvKF}Yy6U`XW3DAc#Ff9dRgFC -zTh+wk+N~_*XCQ7)F2Ss~0@=YJV|@v$!fm#kS4RH|oKgd~AJBClEFE=6Bgx&ElbEQN -zuEVYTD6=j6{^3*u&i#ShTdXsK?moE5^3H+3BpOQS0EF*$=IeDyJZFv>DH^zOPy%S; -zsA6SzRc$){o7~1ssfhbV_u;sAv=`J5=wj-$BPVr;=Ckh%`gmVakg5hpq^Z>j<$?dZ -zA*;-MCut|@tWszPI3Lgy{dOUn3G^9A$|H%s!Rl-ogc7~|CRmX3L_M(bg)X53l=B;0 -z_PZqxj)y)RZRd;D@(R{E`4i1yW+1%=qn=x!7>f!!rU)w>K;(1^t^+AmDXNg^`9-qp -z5ed}9iEIKkk`tUYPLkPj3|b{sQb7K?FL -z4bqsWcFU=BdcAHfuW&x-{fv`(>+HC3%S`f(1tt#Pz0eEwnZ^LYtvSWENl|sE@UP$% -zFi(ZdAY1Jt7bl*O6NCg+pSKONx1Z;A@u?`Wf+nlpsjNh -zAvckt(js?nk?DFuKG^8%XvdNRa_r%olDW%>%2?m{3#mZVvfEVzd&*df_(=Nvw8>6} -z0lqH#fNL2@;%-JDKeO_tniCuD|HxX2KlgYgt&8}w3l%oShAy>ETl{jy*uxEN7>y>+ev|FYqlh1KIf;~8YgC^{!ZJ$4 -zx~R3ygGJ$qQcacSqYUeDaZz*|up&=o-7Gc85cIEKmwMa$E1JwIF4mEt*rldk4{=}g -z;+NtKCduWsp#v*q=8=z)=b>%e2;MP`k%I=nJvE`&kT)*wtl5^C7Cd7@>lku;WU1pH -z9u^f@1EYq68kaNALZ+uzG{u4qVu{F40X?s*d*HS?ELI43L8-DEx|0lU?QdxLB!$vM -zreXvxqNl6o6rQ^kJO(KWn1?*WdX%(ZwO<%!phyJo` -zW=2x|%6AbeW!z)v&2Ye$Vfq;UF?8EP74@nk_sT6hy`joVCEve&`?iP-(Lb>&0A-&a -z;r;#lH;vT4zyJPSe)92SojLf!*ZTNbYb77zJbKE?cn2l==;`7gKfbMB_&^b{`>nkgegep -z`8NM0DIac{3;4|^=VSMNDfYupg}in(I0`aXsH=Us_R`V$GwyytyO833=*cvYLxkk# -zj)hBz&MdMs?`)FWUG${s_{szKj|x_Wl4wEeI{Kt_Ri#?5b$mh7ft=8_1M;ebCH$Ab( -z!5KaB)QW48v4Z@#?PZ5*%CL{c88kxX9Bj$0tnMkKK&l(0F*=of4>{bzT0Q`&KA(zi -z9YS`(q*t7h2UFCUQ6yK_GI2%Z5P7+9taS+CS9CJf=>>1Max%9YJ$kYM+}?z8Tj1Ee -z7nh~uSO#1$@aKDZ!n)M<*BZS4ipk$aeLRR{TzNV|X>>-Z0=OQc7-V8SAJ!JH}RVvQaTwbR~;H-v=n3oB}RhT`f}au3;5E7W_E8}F=cRA -zDp}a3bCMr%8e5g(v8sQ3>95za&=fAD{*QfD)vEo(xzeAkwMy4yu@H!@JFS*6AxJ{? -zm5OlNTx*Fe6vqPjBqTCGE|(=oxG{f*252Ld4;nxTPI^btY*AesZ`l0|xw)o6-Cudu -zWb8}gx7B!85KQ`OB}aU$&KjFW4HpO709{Mr6tt@1mtQUPJb4+5Wm*#{Dp=5{!@V|4eW&ksQ_Y`Z(;AcoP$NVDcuj?9GlZfk*UUrbODzo -zs2!PVhKW_9MCDQJ1Zaq1aP`Fx%W1%E>)&V9+poU|izl?9LN(Ojq(uVWj?jjG`U?2L -ze~D$qe=8{tiD)40j^myZ`xvu1W6oLB36HgRoyN&0&4n1&;)9J;+!N4orqlISnopNI -zD;zVhvU^EZ;$ZAVTY0M+>&X-atKEV6w(_dgLPnHKakYF`Ys)_RNft}q&b3Fw3CS@l -z^G5q53)+0!0zy~*0CMBK_v^C#dm1Rd119+)bxYcj#9#ak-r!a*`@^T9qq3kRAE9@) -z+KW5K;ARO|jp1;$XJPdh!!MGLKDq9W{&y)b&4CQ$Knq+x+7d_4s7@8`6*cllhL$e_d-c6bfBq1OhCl!L_D$s_ -zj@&XTuPGn0@n~j^j(J7f#NUj68Ps^kKp671P)ESE+tR~C18e?pbHTzue8^n^b`>(y -zoOLPkacXqO5r_=!l3!ICM!o$a082IbHzHmNm@72RT5Wx7O7W&u@yWPL10W7u##Akj -zh+y8%0y&{$d7>lpjH+fTyI>>mdN;2osg6yrDhydD#f_jpZydobZWWbJ>(#ZWWgJ5C -z8)HM{g^o|~X6~<-#^;2pI -z?6ZIJlb~{<`1$5ic$Fl1lQAz*2;9|$8EZ8a1v97oIvCO?1dr{v8}FAZr!e#M*;x59 -z8{hh3`7y$;hg-s&p>j%lSAR$Fe_e%Y!{Vm`%1bWgfJY5Ic``K;H-CNbg>aju6ePaT -zlKH{X#dt_IoSrM!7KCqIWDZpGTM+n -z4k=ZWNjM>0(ILb6(c(8IW*P#f7CqB$EzC`E;+|MBpbOZQC&zO*@Ps1eoD&La`1|bb|8jv#_K0Inc(+F%%kzODQyDps;u)pnpkp!2TA0bj1a3aoZ;&B&4G< -zzU99zWP<6Rb7|VOm+hFd$1jJ)$G;c?0D`LhrL}JQLE$F1|0es66TF<=yO7aM?jvmi -zwTDwVE?LOO7;4W>N4jABmG8nwr|^g%&kUEG_m_cO?$*``9FW8+J!COs7%3(JhuI_| -zLz>n}DZ*uhM7|;^kgE%H=pxqIT3OK(6hEay-^-ImuZ~bzy8%>TU~Pd1FprP`@9l{8L}88~+8lRH-J#8WJ>@aZ -zBm6+DWy#2%$V`7z(2Wb!i9u0YrD~Xo=<1FWh7+UN)Eb7UOq->v&b*7ztacthmc{aHRb$p2&6j -zudd5!FvfvJr+yM1kKts9>Cov{c%*!r*qvH>{TRxx(JdW@&Ws($%%l0IBB*+b^U-$dNeopsqudsJ -zWt`vjYUTZ$PC5tgd8n?I_m7`TK8H^5<_+_}9C+E3zX(tbz%RUv(XTb}uGdD*$E7@B -zIZYnRo3se7%dPlqt5NN6noHRR);z@Qp=m;Hu1=&f*8_E=$-gL!3mtk@x1nk*$I9?A^;Jzh2Jz -zdcDlo>vg{V`pQ4A1OM6p6NuR+;RpItzM$}jQT$|2gWVRGCT -zqVkhBdf6HLx%Z_l!*G?LId9BS>Mz-S>n()A2k*bi$>~47Ner$3eHwPt;WyM%>*3w4 -zt`Fr2GLpMZh^Hp-`rda9liP?+(}hWgPeI*Nby2BkJAu -z!IjH}4m;Vi^w%2q;q+PEFZ-0Hy{FBJ{>|moML>_ykTDug4quPzd$RExJ1RdL3W*77 -zcvrsLenXzZZgv|Rdb8hum#<<=N|9ls^iaS3)#_LE^~VM*Yf(c&wkFayxT?o-l&@I0 -ztm`*&YQv&mBe}DXWi}Pw+rT+-VgE5O1$TsPu;N(XY=Dmr6_h4R_$WW==stm5nn;3SZN=)p -zN+0Z_zm~Xtpt|qx53~zz)vM4^=3{nC@A+F{O28NF+Go!`WiCdVOkh`wFqo4fEvb4uvmigWcfIgIAh1ae>niEh3ufPN{uR -z|6CT9fypRzKv73w@M>dAsT+_p`mnzMP`)`Owz&`1-WRrYudr@PVK?@tkigg%QTTBz -zpN9jYNTtGj(zCJc&J{H>B=I;Kpam2{d8G!S-Y~ojarpB*woH=SwE<3#BIUUx><=16 -z`)Zq5=oyVWrZ9!H`=vDobUa^nMXF{xAC`AvW3sVdK1nV9d<0uMdwJvXVfU~%VHyu^ -zbNYLL-}%1Q+=Y9ZOFj5mIyvLbp-D=65l|7KCx1yt%XqwnmHrFeUcTpptCg}q9S_vK -zb_yLc9%|mqE;Ywp8sUQSiFY -zlC9BSKwknA^}bF}oc+)#7sp&w8S()9aa2*|?WyIowzBl)<>&;X?484}Jd{g?;}PyYbI+dlK%LsW16R^OEWF%{K_e>lvVbn7UNZH^WWh -z^q@jY$RJ?x))d?o*5mV-bPb)x*8e(jJ)L=~F4Dm^SP6>`6c*#m#(6Q>khcEM9zZg? -zy^KoizoU+w&EXG7!rRXIVr^iqfD0OB(HfX -zQ?UguNB^-k<%8K9!~0TJMKA9pk2+<8I@ZFe(wC*tm-w3GJ&G411MHdU@qAL!a$Md-nL{K$>PNvMQvZA} -zpRpEt6HFvJy~f!3uNpwSsoRgcQOmE$$bO11(%@_K7-Va&F|);YZa7_Qa{I8=^Zxu+@zyvC%YFdFj8#*Ybn#@9+0-aWtM@w30g1Ii1d= -zvDTkPXemxK-$N?z{g4fm -z#GI5l=e5U&`7xJ|a)U41`}y$4n5~-iR4liiR@AzbIXcMB7q^#zK38@_LIMOuL-n$L -zC^`+ys1e<5MnWR}Y*ks0C_^pse^%5aLtnS@q#3DkYsBJ1gawL_J=a8+x5vlZ`)TO0 -z_oooed4yjAkDRSb89T{F9_j8Mnp#3i`|VEG*@@peS;j&6o=Rq2~laS)Ha;l*eR1CUs}#_sndX+5!z5+YV&<;WcGRB -z_$po?A8SyVb|+#4sd?RhIZmoGR0|Tbw-UG!j6mesf#$6|zD9E@n5?hv%M<9I$}BJ& -zlY+|*XzZz7RMg;>(HYag>8nLZtN;OFl%g-Y>)EB@d1nOBT#ZNC~6Yhp|$9(y6E -z4;MVwML=TpYx2RVn2p&eiVsTEK$>K)5Nm0Ym%abezrIrQEd7n@BLxxSzstKlP12ez -z-fc6y{|)q-Zq-2jT8t$Nn@p!FR(oQn=3_3J&4&oPrB8c*yq3Mt=w^)}+dbZ|zI2Xu -z?(rny5Ee9etIXSH6!(Dbk27ODw2p%>1@XSQ>pck3oFIg4H_nUb-^B*MUCv#tw_jy> -z0H5*eq4e#ye_z_+ZVo*ln^u6!knc#27E2m*!buk~?qaU>W#j3ZmhUaFr&~OTj&y9k -z%M}0zQ&gLl$MX3EljKsiD(Dz0V(hXrpm7I9F29Axda6gbP5&t26j_1&itz9B;z-@V -zgm|3eS}4&fuR_ab4X&Io*p!#^DYtmKz%AZ>e9OP0$!>m9*8k$(-?r2}f7`ywzg4B& -z_Mtw7V;R$;a42r~^6z~vPQCNYoErI9kOAwUU-L0uqkfHViU;@A5)F4>6#*FiUOO@) -zx$X+A(Nlj{IUrAc2lzk2EM>G7C28w#^-%7Bs9DaAJFu-3MKLWlJwDZ?8x%rLf7;0B -zP@WZ5a#fkkL9f4jX^k_EzJ8<^_EnU|eU-WLFOJB_A`-*`8NFGX-`BeQbAkr=+I|*a -z-xdZY=QVz~(OtC?fG0@?^4W6Cyvf^g7=Yh_PQbg+ddNU~q5}a`Vkm?>jv1@t(qtnB -zSU}Q`ln&ViRAjN^>yak>@$Fakjvnxw^R*w=!SHAbMe_K%ysHSOKY!U@#iacHHd?1; -z2HzP0anyjX1E{U1V*uxr$3}NFDtj+*qiBbEt{3nE@ihYlCxhRf23}8~-#Z=8V!V;- -zJ!wDzx#g6T25b%5D&)ds59W4d)Umei&uSlK;zt3HF33^tAW( -zS(9r*%V1Wdk6pKCgdExsc)Q7>OVSO@CQ)dgc_5IGxGI!S@L<3tPc#!%N+<7FabT{z -zQ~!mkoXnA0K-P5h>VzSGE5rv?o5ZjbA&QH#hweyn~Kk9FGXJMNY85!;IYCqB)C}OW2MbZS4-xlt+Gw3;= -zLeJmi%Q3amtW|4@gJ~V#y-^xz`mXr-EzH -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 -zJHFX1j4&eXTYty~SP`n>yIK|YSe@hlE -zWTHXctRPa?fDjl=fz+0w{iFMW!(`Ss=w4`E^V?&NRVWC$2U^wzzE^-Jvg&2T|I`vTpt9+9|B<4HaWkC*?|q4yaDfE1OVDCAf?&E7(kNCH9ESg+ -zqNo4o|KtDqzn)J$4Hy0Y{=Y;Vl8z>IGX1~n#@8Uzed25Ivgs$^IyyW^EjD{aThMtq -zTEgKPmU_?kU;onXq&-k|PtK<%u7)S$$7q5L$5PJ>#9FaPo)F69)Km)b_x$vv(`ieS -z!+XdAq=$Q=h@7NFIfQ82bqoE?ore2`B+YgjnzkEmNbZL;CFwm$>(PVJ+80(^b^7Ec -z5V!nL-XOipMm=xxAD(L;E)y_F5WmG$X)zpE7<=1cU3pKSoYBUbgEs8a5`A{z!66nt -zf#>8iDvR)wb}^d9CW#f&jS15#a1*idX<+JIZ4&v(*4KIgRr!O=8@VL=VH2v*=)()L -z&j_PDcadDrc1mCW_>tZiy&djjL8r%s7QU|*)wfSzx9y)!ukL{xM2=a#A2KWCHr7D+ -zI1oFP^atJMEj~EAzLOkW$w!hqC*LnEg3pL@S^kG*_LJ7yMU1hFSqsma6B6Wuh)3`w -z8GeP`s9~=sx7|Xs(*us5uE%Ek`0+LmPZhS8VVBU!lT75PCqK5&GuHzlORgJ+(O&NJ -zv(ob3m8<68KIdnsY9`yB$d~0W02LM+qgr&5s@W25Pq-SRE8q}F*wB6(xVy8~SIfJD -zDSYU)(v|p4)4kLC5-I(x$lu^RCdqV6PJ0$QjEgQimH#on_%X$T=aa(LJJlAL)t})+^s+>$fl2(Y>4ZngiF@9c!5T -znzlRr$lQ7P!MFMPyk?edY#GdQFw>3p*HVd{!?yy@4NiZLOS(TU;S4+@YBc$;KS;U? -zHmE$))eB&I@{pe3wZRpx@yp>~`rwmR#1fx0_e?j_?6jj=JQ0v-m(QS^yC?Cx$|9gS -zMc#h}U0#Pi*NI<3i`+no5&M+TlLQ)c!w=~Aa)_9`|Ni)euaPOt&BX8@`7$+c(f8lq -z{>33Z!McVSe}(}opA_31`EU~_k~%zhJd%-??JLzt?#8EtE`N05=S!@S7110)5{PBo!l{GMUy7Uy& -z1v`e1K74Kxdp<_G<}uOB@ne7p;Lp_cdeW3iL^4dIHGu9GNQi;S%Ob0E%Z{A0Hw@A? -z;ECkcwMDe`(+`Lrir~iiATJ}uh5y#VZ2uhMAOM7{W`svppk??=Zh0at0<&Y(^)iv; -zH!(ZBIFYn~L$xdX1ihKX3*;VKx3##SPc4#cb?Lrww7RYIs3*g@cZL!1gnl9c%-un> -zC&_5NV4}$*frKZ)DS4cC -z$Z;*AQqX~PjPHRO6lNjg-bN(3a9(D4{uRg4*4~ufSzmU -zs+-ORS8vj$*DTT#0ey6{VTF>o;}(A0%!(9)ZA5E(t?~9IesY?+ZT5B*jvuHh{3JUD -z{;X7zL!P-%%U)zuMCm`^jKz1{L0?42s)BI><7p`8h{DFUKPYR#xFn* -z-FBy2oecbV^CEt6k2PXUf;sT~1M8bCUr)v;8Rf79R4B`zuHV89JF(x?Xc3VMZP-TC -zZ|6I)gxlI83ix>4YLl&&N$|f4+YsC(2Kf -zC&IwTFH|F%44{F3BGGD;GQIk`$3XV{pMaBFxbYVe8ZlQdn?^rK4v|eV -zeClKQfwqK0%@cmP@t=HgddFgySZ3n+k4-0b5=Ld3hN;`b+t=}UI$HAZ(aHZ4T!kk} -z6*HB|+env37zbgKy-NExjGcs@;RFIEgzPRLX#Y -zx})_+>|&uM+q4qp31io@St6=t_>wv6nPJn`I#Bshv>WluWMv|*8D&-BDJEJIZ;tE= -z_Ybz2)9nMPfDqKpY)LKZ&`BNG<7ye6UMs|&ntjtF1SlpF*8BSG4oBVu5J2d`#fEM7 -zS?qvSojn-HBtoxIiWKQB28)nDE0foE)7LAv1dX%$xSLLxbC3Y7g?{X@MT=BbBko~mkPyk04x$9P6z4&A;xp*s0HoK+kOp|t0L5;ZkMoUR_ -zSzD(Vj757?in$J@P^8Mr?qn>)*sv0w9&i+q@4y;J&g2bh;tR5e)$JHKT=oReFWDjh -zJwU?0_!Gf-v8QP{iua>>bKcgp4W8u377B85gXZiH=n;U2)Pai4kO#6#o$OEwZf(^`~`w23H -zC0^+FV2bfZY8H@~>!L(_Wdi6HA{JUz_#{KM3Qm)gy1^D7My$FXkt-3Vi+_-%0m7qo -zAhV9wO~=sxuG8`(n&#DSY~8i&&eJ6aF;HRbg2JjdX(3KEIZTxM}Sbm5V#eP&t2AG33SYgVu3Y9B@v`;2GN5RC<0jNey=n?oLUH7cH -z?D`8gI|ITSFg0A2zGh*#7>Z7VNwP&9$da*5~*i!VGS;_ -zrGd=#5j5b$Ehs?GeE;!=GL -z$=HIZ^i}6R_`%UV%2Mq1nHTDHC)e@t+o?S9Y0~TC#|U;Zc|c%2t)0qKx+}JpL?Jsa -zh6$u7#ab(Lyf`;xyItX7kvL6V{7+P$PsxU!%tsoJA&w7z7g)KvJV_^4v?kk6@PB+d -zwpgoJ(F8VJfumCXE?$j!NKhzOr{2jOu+x`bnmT9}ru!pXIAX8JJ1e+eo)z9}!*U<{ -z?F(B#T^m%bki-*tL5}|-J5du3&re5_=U~qJLEaYa4l+&h#W4vGnVUx4o**!1?r(A4 -z!$=N~1_N)&c0nB$38zn(3IqKL{Z5FEMB%Vu&MJCEVS;{>3MmM?>ACLUkK4BuVAJ$4 -zDC5*+(&{VVf@v}y<~)}yQ4112rjwTB&)T5-c1~RnbijMO|;1ltBw(BH2 -z18ae{G9ue#veA2>d%fx1igYKb{t3_%GL1WQb@Z4>npT9{0=CB+=bux?o$h>C`@pRx -zcVw8^Mjp24z#h$!1KMnLq-WVjIzOp<04l^BPQsbw^zYk|s29ja-)K8={0wT5bU1@E -zYsoR|E@W!|#fE^M5BrW@)3VCrHHiNnw -z&^aezIQkMv71Rr{>-mmm9Y0zGg5SufLCW|hKmOFbE$#}{&@}=ttmNfgu=8f2a=ZuT -zmAa}KWZ*YeH%F5)sm!B4IbM8M*ZK1{rHz-!f9i(1|!17d{uie^0De7&Q(PcGZn+wG@J3F;$yBTg4kS8yoS_ZT4i_LLq-a_#A&%0j+3qUF -z#w1l%qa~u=G~dBJ+N?%+%gPIZq2QKLeNH6qP_9s_gVqBlHQk4Lpd8N9=V&>q>9vjE -zxlf2=>5pn9xdorNQn}~>dM-?*(HVFly^^WES|tkvh3mpYQXiz*{O{V+JiRMjm!e|yRj_PKL3yKcd;bedaFjShTs1SRXG_=Dr -zj|T%MUQ$sV?4S`QIy(l)NTK5OEkq6Fad`wujUvxY7TR(_35&Q%A3xBOh`-pNB}eAM -z7&w#aCKTDMNen}E!;iBx5a*CZ6S9HuCYjobEYZjoB|pdKL3g5o0O^6eNc}>nclNDd -z#!9szEs>`S>*S}n-z>y}B=m~P%Eo%DNQeOR9x)pfSxnt>NSQ19veP7m%_hY5aU!{= -z%ekUoQyV)1&<90~-fU>e_h8dQA7ah8c7)79FF)@DeTX(Pz&hVc1HavV-axQV4oq8jp6{E-JI_6DZ2_+b#$jA_tf;N3h)Znz7xWEjQ^d -z#bp)~Huve+vgy@mOr2b;8GU8Ze8oGN0S~MjG0er~lcc8B5Y*Q|>Q+N6^3o>8Hn6qf -zzewzYcMV1v1fh;|Y_v!H9$Jy+LEJtJ=U$<3i}Jd25TW)pJJk+Q$#Kv7>fw*Ol_%)D<` -zlsAxGb^$b9s=eq<4=zU;Z_y(+0naWuQ0P2^S@a}_8!H^9AC`U2@V}vKyjD5V{=g{qBRN~EWJ*UQ1f73s-bPlckeuhyQ -zu{9X0m0J=ncge;)wV1-J8nI~U4cD5@-M1-75QknkDNV8tosPb_(N1`)4*T;$=KBI3 -zjb%@t_TA}9{Ue}nO$h{`d^9=(tzT2e)ybueME -zFiaZK_EOqQ;ukTEqJZsrZ8t3WCs37dPTp|1apL^6`eEUb$L2zwzu2#uE?_O1vMO(L -zPuB86J6y6IV`XuI`#RoKjHp`eNb4b{w@KbPN-FQ`=Z)5px=bXfNKY%Wzg2t)X73Zh -zbT}{^WO0)iMlwYX%1w4N*WILE{~oamtdAQu3b~%wsD2@A-v(WEEcU~8sEIj%4h6nW{SDIe6ki^a)qVRbQW)GQVoS_3}d;oV#4Y|VJ-s$L!N -zGV~3S7?F#JF&SS97^G(j1qHira`;EXh4RT)8C*~Q -zv9-wt^DYrw5>Mo|H&G!CNL614_V5wEa>L%dOUW>4XvV1E@KcWQRoEywpImc;s@h59 -z!Cy;`o@XjFtk#?<&{BlTU4wE%lDdA#JfH#v>I5rP-W-#)X^ur@_i!cqQ$lRAWaI_F -zmSZDdg9s#w9}fl5R};Zc7gm_4bK!wq5pJJox4%hT3rk2y3)qN7!37`^ZSF>p$*Ad# -z;sr7%EBC4DNqxABC!-!YV0;NwaCMx?=R+pOL;p_fs-xo~1(Nxf8>Fy1;MD43gOCnr -z-17YHST0RmJ1fhE1FXq=>XLFJv2f$8R8as!PkH|iUk6R}^6mY`Zyg>D3Hdl+Ik~0# -zB==%)pQF~f4z#XpVR91!cO~Me@*DTY(VxKjMQ}x8_W^Z069?^h?VUd*HN9%%f70o; -z6aDRmn9fZr3hM!wYMX{^NwDynVF`|K^&JZBe%#3jV}~0PrG5z36+4A=tR|s}zT~b5x=*vSWnQnJqtr%=@jC$mx_5(P}^upkW4YF-L_gqWwjL3k1XdzRKq5EDp -z{MU53jCH^K`utt}{{HJ9pGM>F&u>-#zTEx4)lFuF6W#zDy^@V(d&@OPxUW44pS$?g -zpMF~n&vxV`ZKj*<_Sqwgq2<*PrCI*RcXo-{I=S}hn9M*(c!FM*Owp*7YRD$_5|@H~ -zK(5S87UQXY$B(FN*;uag6?OSwgDY9llYH~!sDZ#5j#(XMGuVA?!JZ0`6lI2&hHEN_eei6Ll4&e5PB0&RNwQvCfjP#jl1TCpt~NinsNm8=!4|fX$(Yn -zLIjpG-0%;kmQ&JfzGj^Qf; -zOfJ`xJq|EUk?e#w)&m&?VJhe?ja4|Vxt$d03{4l#_dRXu|5~tu_)#;6&Z1qz6xUya~(fD%w@#7*L -z8+2zMY=NN~%##(-4H00hh_WPmot&YoHdj6o>Fo!H>@Te#1i1Gt)|V*BZH7O%q;7CI -zhCh5YgSzsQtSnyLk-WS+INe8%m%u8Xc_$0(R%3N9bAVJ;2X -zRL+b_#2d#s1t@^yxNu`WIy4)$_0b?VXfp~uyEd4(MHRDH*}M>AM5SAi070ROy}KrE -zN6$r~@gUcyiY5tkOQD|^kt&A8P~|Z!C^&f=NO&WFOI85N_2kE39+?xqw)8ht9hM&a -z?#7cLKnC)Db2X>IX%NUuGh+eN?5nf8Kvo88sQpVV7Lp!py$;|HK&M{3q-M# -zb?hEe&?)!2v%*St780DUS53P&Ryo$2-Y7)vUX>b`>CL{i2d2(Dj_2i-cKId|kM>P%> -zhe9u<#UH@D428ro0uH!t<{-`MwH25{BkR -znaNLhd=FP~+>k^m@a4!npcRrMt~V~LUV%-B%?;VK-GB{VcoK`tz$ec;IdHac@e&vE -zpOawau0bHKpd8>0sp6>OPr@ERLJim5(f@dEP-g+mtFi#rf3nX+8>^B&8;DizcxQ4d -zD+hvO0&<{;?o8V+B*jT%4?~Lk@1wNLKW|fk2~IP*NR*SQL;WQFiWV550G`CB+IXze -zfU1>ZV6g^3Ho0PpVRw;LJ66BXg8LNj`n)kE{+fubb}TsL4KR}9UkCr34mFfTQq!8J>bZ}u8+9a9Hj -z5p=dAc#b{}Oyn4u)n^qFEW^1Hoyp?-OI7yXkT6O0cHBhATAmAS4H}9>0LK`kAh2;b -zxg)W6J3GA%qZFWx%&KWY2oa`UyVGWXbOL5Xn>tph3N}rWeV3HGXFgudp)xBwsLYa~ -z#p#fjVmWq3ug$|uO5SD}T7hj9v@9I$aCl -zb=%;&k^3-M3{W(F6&9eJ@peMxhUlz3WRl*D6T@X}0^RxuH0+2ct42r67x3AUJCLyzE{itst#BM4obQ$bLM>1Yk>#YyH!{w` -zBNn}4C@NTsT$X}D@~amWPBZk0q|4`$)jR@Q8)=gCIuQ-dg|eTtzehkP*~hrkMiNlw -zRbp6bSzD2Z>Hs9fP!4#ZK<9#BnWVjA4am+#7`4g1BvX8zooomQ++7e2&?HJmM$0X1 -z2%)TpHq&78%^>4y2`;5ORpE*MsW&j7eUI+?)H}2FT(`q*s4IBJqCWTiiVLnHZQ`K) -zUK=!Uk8bR+6iq4G-r*A7LDP`$b?N4$k3F|FLFuGm3hbkO$py15_jqXw*e(@+Bn7x} -zSE2*-rxvQnOGikP0a!A8hSYa*llABBEKIu8XyC9C-?(pVC7F)+-pq6X%~#jgZnr38 -zb6p&2nY0S0b`BBXM%6Frk0@qa=~KvlYLR6MYN8^sV(D~P`6@{~XTv`=lNd=sFA8OQ -zc5svFEAi~0!Wmj^%r9>FG-Q2XcVI{rP9!`tp)hiNS*LW6!>oz+)sRI=FM;%Y(fRnl -zRr_oXp<-lW=7=1=TBd*fy!EdC^}+1BsWjhlnc`Ubng8Q*G$0*Xe|=W6@c#Wp+98AA -z|KnSn8~tk-w3Wzv{Ph7dm&$7Rk8jb-_gslo&N)V3p9ko74YWtNot}jwSS)D~3#BDN -zZqck_N!n_!WTFCLS7h8m)+VhJRf=e|Vu-QDl7oP+)VPAsx8$GV@(q2IA_Kt;_FVWG -zwgQ=jQ75J*m7}^IpG&{##C{=Z;A?{Gk(X8rX?#tBpupJv}K5e=KM`JpW8d| -z0(O46(9?DRa?@^Lq!vlb@I^PjqQzgPdYtG_&&JehZ?Q`F#Kn2N@9(p%#sxKD@+Xoc=XdRi4m05LHqk~MJ-z=U=& -z)D8aI;KiQZ_#Z~xKKkT -zOXikGnEkqUS21R|&JLBCbIj$3P*^RwIy>w!4TJ*BC&zn3wZyMUfqJ=|i3A&HF5}H= -za|Oh|C|lre^+sYw=OHp~EzZZs%=cn!GB);gIt6rg>kxD~$Pm+mrDI?MK*{sp0Q#%* -zM^|!^eEw>UT%M)L_!zXW!|Voy3+7Q@z;)obcr-rlm;^8##i3274(@cTgAcV&r8PW) -zrWS-|+I*KtFNN(WkN2&~hhx6roF|jkOlNJ?d<;DQ-C#6%h;y9z%fdFrlsS0}6xjLb -z?xu3SHh4(WRmZXCaW0t;rOwUVeW;_j)SGceG47lHj;A(=bAn9Ur%_vlA -z*U3x$vxmCR+(^=8F?(&`t!e@HLaC`{i9MsQkoUX-7ANr!J&)MCz*W7i0^-rV)K*nQ -z)_uqR9t(5!i-Nc6)ACtp=;72ZJS~2_;veZf^AO831Bm8IG4<%zvJG$U$Ek~4>#jTC -zY)d@FjlLx0Di~_;9W5ZL%e}43xF3VAlZcclp7yrZn55KDtsWc|Ia38{*W!fcgH!_? -zHZFWOEKwj(Rc^|2+P3dM^M~yhvwf539=KO?O&{Hv^ROhU#yjG4Ec0SyL^XQ-C0~_p -z1J>q;*&U7lt&6K$po;hKRPXRS!pAb!l9oU -zMi85fvwt*Lx0Y)}A9r-C_4UfwVzB=(2#O2d{(Bq3J&Dp=uYl60Xf*eg_4VTyln^=Cbdb&+Rld -z$|a0$3hQ>eAK*-gj`lh)x -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 -zu-2%Ds6&&vb$BTXp`S}dU_I+ -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 -zxyDVS_}onK`9%5x(h3G@lMBUf&i*P=KnA2^qX -z`r%TROh3_9gDrUz!waaqemZ(vL=3OTe;;T=aZ83DbBzhwRIrbXxEl=%-;-<2`5zJc -zQ$K4EctAJH^#1;V=|wd)_*6^&2Uf)!>1exnzL?>Cxs6ZJQQu)Ut5vSDA`09j<5PQeo7$bOUWj}0beF(p% -z6IPG{JS|aXRL~yaZ}rgf)Oof?jkAfHL9w3> -z#!5DPVUq?Y;DCkc_9}FH0ajG!ThfIZJZ+G6F+$D!n}FY5T#=rhz4=ksI93Z=Mo_LA -zHDS^^F8K@2PlhMJ3I}a6k*z9zF%C6sF?XqUDDvSh4*EIN)u>}4e8cs!*W6`#zCAbu -z=M#&ON-~)%DivtyD2RH!FDs-f3RvB-D_G#21osxLKemNrq7^fFgXIPItk0;e!$?8&ak3(SO}&%ic6f967&Ic$r;Aj~8Tn(x0P)fup(j1wWg{1vERPOFzkMc(QHJ3`MJoCV -zCqC^8T7kx=(o__^Y7vg;fPkiI2CT5k-LiF_M=JC6*~+A^W?a#-Kb>*pL#3U+Vcfo;&_)cRNujETl>So{&ll$Nd_{o!kG}_2Np$PCIqToW9WtTUK#{vR2kMb2fw* -zK@ULL|EOYDPO2ghMoA)(>%(-~Y_)tzrM>oEPe23#U`vt8w90F`4>B6HIGG9mM23;A -zL3Z^}Ro1CZR%J($?MmyEVZzJk3@1TJOG)b-Z`8H-;Gw(uW3!U9&Of4XQQvf=Ut-_H -z2TW+IjRlQb=PD-o(MU@0WKD=&AIde0T0wGYNf -zinl|ot=+-=MR5n?c01UfQR_Y`R3cIiIx8tu$=(pK-ymPR=rYf!^_` -zyAF)0LU(GFZ7Zq>YX)P%idi6L8S>e}Wev<_xFQx5lxNFj{RQhtg}gjDUHUHQ^^#eP -z=Esp20Zr+E0(z55x=`jVY8ZyU)Pp?k5qiJ2-Y^k`Kd0Gm8sB58zikF-Icy}7U8E$i -z$h#;1kt*yFa^m0O_L6<^7p7NnniZzKg<8C9>(=mkGL-E?`;MbufXo6FFsTLuz<1Kc -z(}5XL%YfItYQjzCqK6q4zKi&eDRR4a`>c^eU}NK(9PDi2pgT=&|EK^uuw35n(ifuq -zXR8*qke7eCCz?`b&Y4SVYu?A%+Iji51i6cm-K9Vh_{539cthD8>n{a{2FO5Avdkn0 -zxyG<#%1SQOO?{$phQ5rya^IjVWd05*A*N}w7$ylZWipS9>LQRb+>T}DhSl?RC?LhvEjY%^bS#8hLY}whD#7bZ{x&)2lR7q!F@?v -z|072FpFs#ouOxXV(h1{k9DL(@tXy>nUJW0hRC>~m0$#F++`&YYE6i6Xt#ahMlc~1= -zi}}E>FvJ+(v*~Zt?#cxHtd`4n#FW%zZrQceKnpp*u;Wa=sOL8?kLcn59-dohmU9H_OJ1H3C}6jBe4AT%nUx_l>zv=uDheDGckFaZ!3r -z!9Gb|esROJOcVDmgg;uFLm!o}l;j9Ge!^a;^RCY^g3(8Rtre18DZmv)M}N-plX5Gt -zM6{tGLL$K1a__&t{VNozGwtzA~{tjS#?@B6c?Vjkziny5wX}m~3!{@eiFciov#M|RO$yi6exNtnLtE@HwvV)f6 -z=l(6_xmOOiT|IM6h+(&gvzP_0;12`ZP?{>2PcO||Gs;)Kqg8`m1J_++iqMdw5eMPo -zl&Vo#7Y7=@n5DgqtLIWVt^h?qy1y%NgFDvXE*V7+wWn7zJy5x04hpw0NTG5a6BucOefBU_DH7IRmnj03)h{NNk^KJxi#i3vu-^5Dr!KPk-RxZ#Ug0a?&1q0DLpRI -zVSL8DTCY6`kjFJVroedE0&=j;5$+R;E-ru}(wYo3#r}kudcrsxXlKMY6eXFk_0_~) -zv|8IK;H&}CM!L;j1JoRBt5Hd3F+-Nb<{ksC9YCezuXCPB1|@kuhoto;B#kqf-Mc2JR@=iOab65H22EFFP-eaLrAWfXA3lc+3g`8 -zl3bgKiy=UtgE+P@%A=;+%bakur_;oV<{ucNdi5E%(DkTs%TDLA8k+_;Z#qoS%!S*J -zFmpzM=VV_rS03r7R;L{HTuMElhl{~y8kF&Fi79*><1%+@{Eq%cR_bli))p8etdwcR -zT%&f&(t9Aq{s!ObNGTK@oB`3)LZ9#`tqPye5{`BsD*e$Pg6eR2A2rTAFfrDe^8c`J -zDydf}_aRF7}6{SagX+i!d|RkH#8xpRvqq-50m$ -z(990n@;)f-=i7DCE*1d9PLhWeLgm$wU*MV~A^o7aCt!uRJ4izWHKgJ)VrdPiug;<< -z8dY^wZUa4YAy&&9s5T!7b`}0eRH&(T*^!(G?PgWdO0by}8Dp8VrEmbTqcNm8LEL%g -zOgG6JWkYvc;3_~-ZQ@2;BZQsuyQw3- -zR0%WJKnotoqi{f!fgHaH-7#ptl-yh;=XFsL^#1W3n)eU$y8=`tE;8A`&VvEB#(m{_ -zAr<>e0_U&DUCyL5)mC57Gs`J>fUnU;z4}~lx6YbCnr9Tp>$=y(mufstTEG+8hlFO) -z1dgD(LiT)=LLG+~iqPa;=#%|!0 -zI8PQA3^YZTAlq?$!gjpUM4&8R{Zd38=V)hQ;y15-p>pdp>X~nGT1V@X>phrsw2gqA -zslhVf(;jam;+MvE6DtDJRb=010=(2(J?_u3D?JwOu`jSt`Nu9dXtE2fPj;zPH)yXD -zTT0&qfq=7y9y*YV}9AielzxIk~C8?vaR2a(h#eN4H -zSL@_@t5E3tCJlx(!|=T{n)g6p(mYXLPa<46b9?o75~(#{CEui^2JM)MVO**C(0r?y -zN_U3R$l;b-vs{Y!Fxwf@+OA@N8E;Yf?Z##~2k2?_7FbGTI(&r{yxjsxgAgl> -z|E=tiKAF7?;zS;-K&=USj#KdTmGtW>gokhmnjw;se8}qEWQhv-=%!`VWUus@=^Y5< -z&Z>%d;3g%AMJAbx4}mPes4tyBw2-OiKE~LXPJOFHt} -zTl_cr;t+E25VjH_W5g~_G3Ux3mE2gpO#Z>)3?u{f(gx|#W1!H9ckk1o9{LspX?k&QGSq)AP3 -z@_FP{3i>X&ob0=41Nra-u}+81(6yk(QQD>xST57@k(v0m$K+r}*sonte%irK0h$i* -z2X6t;AgEB~z#-|IIw3_jml{PxwpGd6Y#CaNwFp?m7bMee$`OY+zIu99T``Mpeko2v -z9i;gVwQ!lDJVYc%uMC%<*8QlcaQrLG#>x2fSHRz*Zb~hAI`cDX;U@zZbNWiJhywW5+&Fl@&$l@K?81DUN1c@0KY1*lBgbXFzECtIYCJBu|b-&JLe0dp=kjeu9X@x^dJ;vk-&f?m+KP^%S*C}*yz+&P0lb| -zI_LLqRMQqf!cy-Q8tza4GSn9NAMF9+4$H`-V@1{NhE6fL1)AK0)DL%6kKSkw?FS_K -zLNktn^{AyoD0NbFF{^1KmE2s7-KGr<*|=J3PA(iRd0m*aMlaT0uq`Nr|I+*PpR|vp -zs6c`{D1=%!B~3@p8JT|#9Se6K!=BC6@IqiK)L|&EFz<`^pd|4V8RE7~%{sA~K%o~C -z(#+QD}4y`(x-`pLYU!}R?9Rqc(or1oJX2_dCgwDJZAuur9=+|iav -zrh03B>nEap79FaV@TErlc)-d-;tD>I1$4$RlIum+b+Dz$f1~#XC=)?CAnV1L&g*C! -z7$uF`s4lXT!EF;xLq*<ivaP7`sT{&O%RQ032%F}aq%!UN^6kQ4;N-qfAG2YPZhe*DMS -z_x~7sxl58hD?{?1X9xw8`EV4<+RptN1|j -zuzwGI{Kwe&nwxw1Z5ntv5|5*g*DUxV{`DA2^SUDxOl6c%fw(>1S{@K2` -zU;Ts{gFA|EjUEUSz%@}kDJa=0DlQN$^{B@I2N>Hn+!V>?cp&QvF+BT8<@*p!DthU2 -zU`mQ`LkP!DWL`0zpOwoh2oWzUvbf#tX1T}6StD}Z5tnXupctL;jK~-gK+rd}=DF&% -zD4OzucB4y+&Btc{RLZw+|D3G*VORrM#%GfsfP18H$X_AlXeG=u>J!vc;@gK8%&}53 -zRYzN+;B5mpxg5X>BJWBoiBmR$ExZ_ejxnI1-rxU*j>K!7d`d)&Trk#h&;Y)Aff&K` -z9!i-hw}*G$(6lQykXD7G;;8|a*?n3Q2`q;M3%W($;XQ%DM2@cIXDWHNs0A`#C%#zw?MbREwFVw9gMpC -z-7d}n_7|+bvd3Zm-opFm17t*Kwv0*?kFG_kS3;1>(YS -zzCnvK85dI8R|L2!k!aZHJ~x)e#U|sEsnE2BR&9vdJMF5}aqv -zSYujD1Q8imrkiR)!Gp$?3aACvSJ6}t9%4~V&V1r^@>7q17>KJ;7a=M^QIR3^P!t0W -zQg!P?9*>>t1o7vT@Y! -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 -zVy%(_Zrte++o=k%}uCDNiJ@bT?om_i8zJVUDS -zx1TCj+;4>OF=9CDbi2cm{fQV->< -z&jFjcAX}jU#$*^1%z*ASek_{cfeiE7q5f1(pj~^(d~Z1Hc1=C;Y^C%Pj<9wMPaa8s -z@%7fLxmWYLYnV`35_iB~VZA0hXQnkkqV9x&Ok-p;&^D%*poZ|v5aVmzZrWYq?n9W$ -z6myOJPPUZw29v4}TWg5RqBtx{P=Yd+j)jdC>59dF!7DYkf>H_sQ{}~Z2a7;{7bh+W -z)EYI8-}TEZN)=L;FeF<_b7*x{n6hWhdn8${s{_OWn9tM7Mx0EeQ$=i%Mq3D%sY&?6 -zD{@uwZm!{)ZBP1Bx9dtugf`SAeMgQ<^|6vtAJElPBqtGCx+E!RfhNRlYOCb^v&X|- -zUnSuRRnok=L^4{=J*~H)%32DA1?q;ey2Bfl;3iibeiokS+Jjdz_NS}CJhkN2U_Hh> -z`Woq91fuis7tQd3-r1;(3gv -zSZQ$^`%5XGdF=dTFs(Hy8}i-yG?Nx=<?E&}ltlAbUi7sMEzi{^FMMajJIHA#ym>ZnNglEo}Sxs_nL^ -zR;VyAv`vYRHh{0H6fR464ef5|8>TIK$s%=Ib}!GWx4{8F=Eo~e0uGr6?W<$_79QLI -zE+(DKJDT-RRANY;t>97>H~mu%_rd~wzMF>kW|o{)=~OqL7#VLE}~PW{|=C`i0V6!g<*@(Q{qBjZp -zT;unN_X!koX4+di~zBk?&TuCg7 -z0lZdbvxuwOm`;nRmcSP2`uqb#Z8)_kJ%{6G(Q+H!@Px<@M5Iv+R9cX3;yZCTme=L5EfiefA#cB2SX{Zr$Z2Z~X(x@z} -ztmv)5NJ}%N@r}E)Q*rpVbH7>{&obi`apFoL9=iC0`!AKvHnwkZ7g8TGl~S-RY#=lk -zU?-Hvx%~6Tj~|TN_0F8V!wS6}zrq(I$dCPlQBqqLzzm2=^S5(peU90JkHeboagfg8 -z5wsJ6*exg;#sX{M*Z_-cYH5s>YptS<{-3t#15g{AfR<3Q)o$j2dN|F%1}j_ -zkyUFwa(;cXRN~$RMHXur-o-tzu@h$iV3Mu7LqNiT6S&7R)$>0MsdPj2xPW=Q*P8x2Sy^+4!${KVlZTBlK|Va -zAA^x=0g|Gj-GlKq2GnM2(9o^5O95py?cVl|pLh*S6gB#1J-tnZD;)@z#RFBHk*Hk<%K`80ub>3%V)eZ1E4`D)-FZe;ui~cIQ1oVm -z$*81qi!D?lIhc9%q1u6=!T~a(ba)Ib-HDDxTSF_b;){QfUz-ilhUBGo2JJ=4d~kOt -zM6+8^0ADuv-M!};dzpAB(%IRY(QZ7wIq9}z;~I8>%!0fmUq8T;H4la*IqR}14$&8v -zk7$KKaqi2((w#e}Yk6S(BE45@+Ul_9CvZvwK9**NZvea+G1V(nA$u>~lG=}svS&xo -z>CFJ-N%^3W}j$|L+xxFnI3EmkGzlTdx~00`EX5SeS2UhZ+u`oqHp7 -z{|}r1w=?uP%Pi(*g*3;qM|n{+m?NKPAeD_FlQHz907h)}`EYJgD!Rm%hf8wh1RIiI -z^%+;qM%1Ce5Q8wHojiNPK$_8-ChR=GAd4K&PEi5eiL?NDeSsn_fAIWgPTY3aSX6Mm -zn|n{Xj{Y7XY{ZU4{7D0T3r%GXXZ_h}{TY-SXjHge4GaCTU)?T*lVVo@(My(1r42H` -zb&#rXAuaO^A6La23J(Ewj{ahmm2C0iQ!TPEU_TO|9e41^c0#O3;Es|9j>VgrnEN== -zK4^yBi>M;oCoJLd8z9LBfpnvn1(_# -z4H|;7krbw9GU)&aOl~0Lb;Cz%GdaQThgqH87qG&ZQ&m~gv26oaea3OrbSF6{jfrm% -zXzS|M$!W7_{^yMP(4g}Spj}NYUJ)tm*H^u!Fjwa` -z4^pzUO^lc`@ow@WVe-u!^Z{5Yt)qjduv$4}qKoyLHO~RTU|$7bTRK6f&pi=LbJMv? -zNS^$QOj5k=Dg4Im`A`o+!!{~gPA%;+4`Ur{AV1+vH$8*EF&*3+0<1nn6{##{8Xh^E)l0M%&?Qw@LvIs`v^upBY2ZB -z1P9u{oS!Ax1kfRtRf+%-tAx-G#R^_uXglkXT%g01f*2<(dsiJQa#eOlz`ZhpFUY}w -zrOBLCim(KKt&Lnh=`c&E>Z6(sr%Us8RWCvg2k9ScTFE -zVf%C>2{eLge6#* -z0T01|lSu?aW77F(!e^xF6HYdNYYnx)03A%ACRuJb|KKiMan#_=k_NgIY?_Dxj#vF< -zG-@9Sv;of7Wi(DlrV@4= -zqzOaIpr_j(_QFWwkr}ck@M5ub^i$f`pDsf>@(EnN4lN)r46j0TT3Oi~!S5q8$B{VL -zlx;Gz_)Fwy-|VHs@OWD`!p-rjRRjt+^!INj8XAr(3o3@ZgU_a6 -zbLYD(O(BkEwH36&yd$S@XQ!x$d~LoyaZed;Gj6}T@;>S5VLwR><&@wS=(${*h#X-J -z;_Sw1V9Ts_uJ&S_ryXcg9GVm3r~1_B`1tV;@>FX!+M)9_%0gl!ZtjHQvd@S)r&5Z&+s~B{ -zG~YnFJtTS3MA}q4>BW&Y#?FB}qio@I#opk3oKl8@c6xYRFBn%1;iu*Tx8*=+ie-Kv -zvm!YOp9YOipN_yFfbGf*X`r-Z+e0j(GHJ}tj>JYF8OY9vinProIo3!W;RnV<7cz@p -zFAAP8%3v%rxHne8Z@K5-4!x*Ul+hMR-IY@y-qN4+mVo`dYc#TFVE%;G6>h4IIWGCb -zl3G)|vwJjpWlVhYUv;oRZe5x<^FEPo(mt~Im9W}Hj8^DOHLw6C0znwN6j*#M)0l7y5`r^q?4uX&aYH_V%~;!j%<(`^eAT9i -z==avq=GAr&@KKN19cJOV^K1+|65ixglm1vzl)UM-caS_-oQ+!fN> -z^-x)`0m=MkVC`!6f$*A3W$XdCI2YEwxVC!k1~b8HTFH-`?<`OOxI)u&8cTi+74r*h -zIQ2Pz{xBqYk6CO&QZTWmU2mOV4`F|JSRo|tLMTMvYac=CQNKcSLemdTpe}H -zxQqjL>E09n4qMP40Hg*k=&72=qo=dJUaowR$}!7_A7E$$CWVA~RMpPFW0#toub>uw -z$J95V{qeS|v4wI$6c`d(ZjDeWcYtYW|tei(1q#edNA>R6st6&(cfqT!?h$<4=VMli3W?BEo -zL*?LFvlF~%m~TcMmtQYT?zEqK(`OZ&&2=|O#wtAAQfUZ9tjs1zLk+7PcSXU#1do+= -zSG^ez!ggzsrA-76qNOcNF|rLAkf9e7h3%vHhh|O1q&8VCIj1AZNXhFm#in4gR`Hzi -z+g!i5T4#-V(4#E))@*fcDILb1PDRv!gWqmBpDDxQ8K;_ZHz>EW_?)QDI0SG4kX=w^ -z=twf3YHE%PDJi7fE_cShlh+d6TvktWpOe?m=$qxudM#x={ -zm)!fvd4(JVr#I@g3aFd!8t5f;k|BZId`f>pDx^g~P6?Wuy4pw{?ss`i@-Z8(%$1|1 -zc1Gh?$I!Om-(~z5`QRZOH}OaHWYeC~Gph+0C*>_6}*sp{!g3 -zXt$VWMbStlX~;t7k{dNtR><^%04sZ+5hg2;La8i3J=ZiF4VaMBUOFc%Q*e79?hy?@ -zFV3TYR@14w{^UX=}u6X7(s+{Y}6w-9^bl -zWwU?1LF@Q&|1{HKju{IY5t)bAMAo00jdS*0$UN?lgu7%gZfwbkmQSTi1}MNNrKNE_ -zWTSGhc|{9fe^iI%ecy$6x$fza5`Z`@gB~XEec~O)Xl7N4s9l+wDCVkJnxD-o3R8w_}UB=OfP0heH|NMRWzSjhRQ~k^-`rLr`t@P2<`5#0P|k~`|6%9vCxyHgbX|vHirO>awG?3u1*f| -z$2U%NL8y*o=W)sb%nWIf4Js3~lt_r4Z1MkZbtRktyTJKW9;_!UkI#MT5^#lgf~tq3 -zBf2q?_IUuhS!;5HLrN+EIn)kAfi|S9_>Z4Z!B$i~BT>?ki7eiNXg$;z@;Vt%7*EE( -zZE}=QW<+NOUPJi$4%lzn2gOoG_vuB0q_iamaMe4|U1_$9J<|&f>KcS0cc!x^y?>Cr -zy_qacq}7t16I|oB0~O$Jl5q#ZViSwBiR%)H7cJdQl3P_%)?q3+#rj9x4!7O_y%t^Ys -z^}2I_L>KmoV$vxmsK{7;9A<4=iI}206r~3AN`Ufxsbeb3V^vUO8#uhrt$kVmprr<% -z-g>V=<{aB=<^_QPk<)l0bOKEYDN?;XjB%8~b0D}%iBGa`zXYLEIwD}nR+`Hr=V|5S -zgXxgZtW6rS2=;WeNwT#@`fFL|l&|2HF4`?QGpQABTwJHqRQAuR<&%tXKE~TFd+~Yj -zu1`icJxfjc#a#w>F_^`QH1pJ|#Kq&=-*trf&NJQN^+Z(un}x*{#1d9aG#ex*ZVA|p -zo+vArtcFG=CETw28W81X0Sd?OL3&B`E_mb|c*QOiTjfajFk&Isz+-;zD60N9d(W&M2gN!}N&eT#R=UBI&S!!Y8F)k3%Z*fa@ -zs>$up5wILf+=rAth4~#xY44qq$PQh#{V5EY&K<^2sK}#X8Pw$Qkd9&dCQwtW5raWedK$((*=SL3yiMU6 -zKP_T2p|o%6m?`sAuTEmiCT<4rz5u -z?o!)ACB2dL6D+BVZI_SPX3MP=ae8E!ezk_`yhA|7L|Q#Tc=2w=rzxAD<%kPoB1;#j -zsDH`rLq@RCDZkqw;wKbe^;J`Fysz9cRRF(Ju@O1(%ylmNB(0eiQL3+~hKvOx4mWd1 -zl!bruBCwlU-oj*MAA6?_EWl1+!nO1S5+BB6IBT?(yQN*p_j(WafVZL9zCHrOo(v%^ -zS4WHk_4>CgYh`yUMN~>tetiEi@55TC*ERH4A;($mWo=&bIi~mT)2k*%HV-QwvDhjz -ztDu4e>(Xs4N(CJPKBx@ZycsJ>rNb8$slkzIWvb%T5c~Tia)1}8EV2U(46Ppp`jqEQ -zpV5xoS1>iM`I05~`vx*kxl`JHV(tBmO2u5k#WYM@M{&xd@{1F=wuIN6A$_(BqhhLy -zs8Ga0ZeuTTa^X`|2dOBwWZ6Q34PA&j@qgan{gN5FPd|2*wy4fg%Hy~d%eNsg}*_xg&cAvmtoJ_*~^dc!`! -zNsy&Xk#-kU}HxR<)J9P9R04T2k+W@cai9`pY(HV=P~waedQ^oW0ralP&9@AiL> -zx&OG{`1SV~N@Me8#T;Bs_K?|=L%i2WDoLwF?x@5_u0MPX((zWM@dkJWtO0U6z>~>G -zD!Pht4bhP=a4uZ_nGFMN*X9Buvj3Ak2B?NGvTbf{YJ1vdTnhbG8(`2rT~4Urw0RgY -zsvH|ryZZ~I8nC1fulFj~gM0#IY6^>;fVwwQ=Nx1!dTQz|`3a;xvQt{F43l=ly#dHCcMqm(;gvp7gC+r1#0sc9|c2ov!##5sabZ -zU-knyO)^JxCkl{o)$;RaJ?J0zO-q)W`u_8q?qM&_Nxp#Q4u8HNtK9#nAjOZ!xB7Wl -z^z8d)b7D_OcaX~$Y4oGGN$qW`@85sx>!rPOAMZArp1}$?8E<&~VOxUUz4ai&MYkeK -z)f2@soaAi}lr3?WphO+q>mXVI^EG7%e@8DdM3Lb~UAI -z=dxx$z5EVQ2g=LC9SYFs>Ng -zjZI43lVpsoVNZbN%u)Qm$Z=@Mf%8yN-$j>{FY>7~zC&$qe?%nG>+Rd}F;9%}WgQk{h*`f0$Q>lK~N -zx3q5&&Qs6^eDa#W9{IO~kXJGLckUSRTjp-1`~57B -zr{hSCHXv6U0Ers56j1IbX5g^XSHLeD8(4$xz#RlhZ@xfhCxDw?Wn -zW8N@f%YSRrQ63<{TQocp?60-8zpBY<_B2ll)_?-L&OOS|IlvYN5Y2;V -ztMFMX_q73vserxaY^*_&7V&6ft~=vB>W`?YUE)r_S_n0WU{5x(6jm1y_=;~|l -z6W`%~DZ6jlSBdFk-0+;AU5R;(m9z*8eC -z>ID(7bZwa#0qc7%;BYcO0^^bt6adN$R-Bqh0baQVj=w1uY0U!AVmExKTj>(R&6wcx -z$m;`3lrRIn-h=Twyq5gE;1Dxdet|!KuMGs9JK%Gm#tj!xs>p$EF^B;GJwU?0Bc;=U -zy}KgiO7>X!qx=Jk5vcKmPA)W(GtGzxzZ*6h7jCO+BWz+^_1ksmw$q;4zD_c1_hFX+O -z=I`;sD{mq}5ehL?DM12huiCv}+oFp2EG9=5@EMX+Kw$sI7iL`K@+{*U@C8sRvL@-N -zuiUVB0?~b?5x@{hnAB`@3lO>z;vzx68F=N6uGg2`)x8RaI;j}n_jtcXd$%MvakWT9f9SV|>Y=9%N-cXImENZf3u>lIu<84@YTA@;PAtUt?&8wEJ5u2}e05-9r|5 -z$+g!41?fIei4GvAH3J{PjMH;bzYW+9eUYKvs(n=S3&r8QX4<*4%Yp{sakZ!eFut^F -zPy}w=3LgP^GICzYW|6yyW0&ipQ~ZH1nPU@tSS>NTYTPZUJvn6zmc~=1FeY$tRT7#U -z(y|f>jXE(*&53i4RybMnni1nbw$`58P6n8?+7$P?)~ko9Pr%pwMc`Expm^i)_QmNd -z&4)?7naKUWBFQ|T3^g9KGJ~vpRH`hRjQ5q>$F;O`g>qTm@?s4{*3QATiQG<6Bpq(i -zBl*YW4HJK^Wg60YW%pr+c2y3o(5rn`MYl&~sGp?wh9gDjJOP&#-aMSzN$k%8W8g1T*1qA8zFvRC!)igY+daI#?iue$`6nj%ycxI+<96bJUw=>YJ1%3xUjm=BBY5p -z$0so&Ge_2XuUwOtG=JKp{zX1iAOpMGRcOMJdC$lrwPO0~vlh5Cm;#Y)+pXw~lzRcT -zcBd`VZdQ}e*^?%+PM-gu>Qzvvx{=QqZ -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 -zaKVcFO?<$N@c~pt%D=& -zZ}CJf(SLPaPJ^h?hv?K#!t*(t3^5%#{R)qiZYevNMFFid9bIHnrSKNZ2vQ=E^EQ%_>3 -zvKi%O;47p1u2-w<=S#zYB#$3#QX*wlE2RU;9ve8#(+clfgRn`}5oBoZmnGIxg?P -zMt{DX^?1F^%hM@z>HzGN%(<&moF&%X6!!MQ{mRa1o%3IFuxk)eA6O9 -ziGT^lH0?ZS!JRbXm6w7K6znh^17xssO|djF$_+G(cZ$0Qa!9Y(fBa`rfr+e1ehfaA -zRG1w1g{b`Ejb1hdf9-u~%P>eKc+DGgl=@3{-+BvS@WK1fa&r2QZxTc6f1QTibodRW -z)OvV#tLsB~f{f%w6S;~GGwU!*>GEVA{d^gO#j0qOG!)9z5sr(e?A_t|zl`I)eY`lg -zGNRsXA6&Uy=&+MLOMk6#A5Ndu{jyJK+I!lpXx&^+4FvQU4H={1{ -zp^%v1f_LS+?Kk8p>}I#Ip*Q>at9%t(Qi==~rHA_MN2_1e*B=|usznV6*_ue-;DR2< -zQNCi~vaa9AsSS&MjpWWkmf2KzZv&^ph3?026x@;huxUMPSN_6xR}er11Xt$GzY$^^`A={^X!QW6* -zTmF!KU(kxGU6q-SH>or`H?NaAreKno~@@=6Uty>qxdHbymwND{baKX3o-2kSgytwGm2w>;I5~<;N=U>>`qTwu|Vl(jzV+hmQL1OS0)<*I8>4C7Md4!!1<1 -zaehsm9|hrPLU&4`sQC)l5B%Q$Rb9{&0N9)alpgNnCYivIq2d+F0C=y28xcn!y`N$+ -zfSp_lhAAQem1IAUkXf^@7D=9vmd+WL3CR3fJU4;bOi#LjpLh%ZrIYf9Ww<_%p5D-@ -zB6B)dGflUT(*ijvTa2+e(p1skWSJZwat0D+K`)PIP1N_UzfQQSC0wk4>_l(kpZtTmS3C^>pT`ut*2nVAU%+P#B9d+vUY%L(ux) -zdjO&A_A)Mo*X2uF3d5O}J>U%*O -zQvY}_pRpD`6HFxfyT;i1M-AlN)Z@oJsO48=WIu%#Y4A0040g5GaM|KJH=M3DxqaAb -zdVsxrAQ^u8a!7;nMHwWMQ5CwOV}Xxr|dgv?UzTW%RGW$Uuu -z;oqr&zK~N;M{UwB?r-m^GFP=A`CL4u1VPHM!*a{weYpk0VqTu*a^$#tk-(DU;`Px$ -zao}9_>*JCBF4sPe=^5qi;2`IIfl6Wptp?LNQ;tOB-2^>u=p8_MP@|l&ZFY5 -zz8s#C-No>Ke6x5k8k^~N%jb!8eYy>#wnCX4K8@Iy=*Lg*jai6oD+6N@09L7~oTC$& -zhK&#J1}eZu&tSj=ba>1OxdE7#13Bg(aa!$slCBq~Jf4)f-ild^b$YIEEe=ng7E@y& -zKV$bib(@AYD7<)v5rU=TUC}K%212cpVc$T(BoE~G$Si+?N@w=h(Hmo=W^)s_V{>v -zKMg(i{uG@#kMK+2k+XFvV<*|jBi;Q&vnuQDlELHXsDM?vBS?kCB!>snOj$$q1^uMu -zI{>H!Xs$AlJH1!(a`(+bhH13go6a%{IOcrT7W|NhW{|vWnU6UQ*)d8<(z=qvGFr7& -z>spATt*)c>uDkJqmg-I$Z;;-Z;t;zc7b*>v+JTeXIb|~BOUpSVbsDfULL2H!ZN86< -z%svkskKzULvBr~WcMk57Th{%NnJ0SvYX*BcfB$uJ -zFrDMRU3q1t{45|Ofl-?F^LE8zIDPMc!Ybk!8+f`?>yeOOnJD6;M^ijuzr#yL*Q*A? -zw^Oc_j`Ei$tF}n%le>1c`9Vg+suG|66p)zTy{d;ieC9;s!P{zl=ELI?5R<=vhp -zY0Vbzwi&?x20l%=It};dO+{TNiiN;$HA9^c;DRh9)wv=aKW}4r$qGcVuRl<=U&#^ -z&$2Rr&-nRNzV_R{FP(5VhxU(6i@#;acO*xPB@O=Iq>C7BF_-zW@pMhg_ZHaGEgnQi -zIyT?s3IKsA3Qfyn`Fw&&aw)qMbPUBXcG($#xP#)A-@sZ79zGUiKse~ve2mwqU*ntN!F{zH!`)X!07k#p -zj!Z$Wy8>(U)Y?@J$Wz~e_Kz@28LdS%+WJd9lskZFmb2pyL@UKkOp8sAPbKLFfRHnv -zHu5!;XN8qqRc3F{>n{&2Z^qH%dwOAyqAKoDrpX^1ktI0Z6#vkt$;fvD*ztI#34eb3nZ2VYJm-Avr!_A;n?jL1AD4F(;q>QE`>U9gU*AS+ -zvdoY>BY=$>5Oe^m^>hrlobuTCjYg&G1zHsCP|u|TUVy!3VBciO+ta}73G{oX<5`S1 -za=j-FC?Ktz($N5`K}UsLnC!vasf-fV*8N`Xqs;Uuu+aq@${nmJjT3O#HFQ^`s4fL03f)E9%DTw~ -zJ`80N$*85Z@3xl@hDaKbEcx;(jO$Ooc|lg@b*x0pN3Tv8qWDRQPe>{L-krj_pI>9W#G@hK{q+?-W9+%lgl>7+aw>>R -za7ephCl^r&S_-jE`QrTKJXt$GdGVwEW_K30IkAt?9<>1G4t|1bo1=Vt~Kf(9y20^BBCkbm(1AU4y*c@qz@G7Y@ie}X?%jwW(uML -z`dwZ&Q#k1g3~W5DWDKr}KCUg8e=@UV>Lw%AZb0#>6X;RdljB1pRR5){6yQeLuu@L! -zPc?UfirEdxu%>P%cJi9l;;J+c)$z&*+|f%|{~l(%Bt}HKD9lm;D3xF;PgF;)N!u~D -z`$JzLc;QG%Tv6xj(tt-iG*|$J>^WsS6zS0HX{qOt44W<)IM9SIXbOI1cJm8T`+rN# -zEdc!)s}QUdBorDDS)aIU^bKKK(C08GkC8KF2}-bS-C*6)IA@4#?l#ILgOR{d$-Wrz -zft;{0;fBc&x47k#NGKulU723_SqYwQZcgI*A}lgf=XRnV4tGSXT`yjfXz% -z56l4I@gcMF5V&(uY2_D2(#^M0lh1>vj8HAJ}IPEw;tm^=2J;_tqiw|E`IC_Ka4A^^3x49G~d;}94{9{{Rg1#tI8i%oX@n&k)et1Q#qZL -zqh~z|b+jEMy3R9Ba;7>mKas$y;g_fK@*FIo{UI-*xMCC5^?c*VZ4ZCZb+&$jDUqqX -zcqR~e0KG_w-*!w>asBIF_Y;tl!a6IZCM%+$XEFZQt|SScs50s4>0ZwKi*#uzF?_Kc -zW;ZZ3MDfh)-nQf*zCyn(f%eHk&qBu36qnLAVw{#2!cNeCPR1diPmQ<$VC%|7fqC5$ -zM-mPFUsdfeU;WjM=LbRif~@i4#s;ji(;lHkJ^L3)C-bs6TK~n3;W96qj!|4Aextmi -z2kULQv}Tw-x?;+CWt)zxSFs|_OK;gXwmAQ~&ftBX8i1E}&~h(x4dyUx?bqRrd%2tQ -zN?1L4QDbpY$h{rmh_i%o0+e`O|olhh5vT?np#BwN0( -z9dedGD=tr0CINHe=|g!G6z5;tfalnaGk*2DBt*q(fBe^`Svk}=WcyV7={3%;Z(hXK -zw!Z5345wdA=*GP?=NHTZFZrG)VI_)|$BVh>Xsxe0*Dvo?bxXOn7H*qs${|1VM1uDz -zUlYEvdl7pi|AnmYb;m2oSbFtr4-~h!UVY2L|8-WjP0YR&8LJ=qu=ICk<^20K -z;vM?(0wZ%v_Ymsk-LV!~rWaj7%P5|tI78h-@Vv--A6WJv_)oKY!mK1^g^iuB(J&2H -zHJom%rR~WJ@$_qe1U=hQG$Np-r}IJw(5^cPlX7@CHrb!3AwKWEit)H!er%Z#*V6Mi -zxa4?2op&9V68x<-$VWhrjsNQtaBH8RHN<@P0eE6d&-dw1_e1-L8}eQ@P=}z6<38>Z -zp_>^y<*$Q<;`v*!3fUqnR}K^HP3y}$zoR-^ZsbHj`Eo`2G9#BJJX-P%7%k}a`RSF> -zhJUes8WP3~-#h1_IK2)bAazm*E#QEc7fs$m;Vi)TI%^}2;QXZ@I8=eDJDp35s^+}A -zXX){Bx3t0N3*#P^v$}&nw!UaZFw(3!p(GPcQtWSOQSF;{8|v~qUd0C8(y;e0@~>va -zhpM1cSfzC=2TnKGk^x&Tscvv<7w^2;A*xmOdqfZOqtaY#WKqTXdX9mRC3@X?@ilWM -zGv_UFV4j5^_+{!=TE)Jk$`fq?lkX+wv@$Zm$=Lv&ubg|@)Qa5qY;Hr?gl&T#su7^_e(Mxx_IbFIrCuGq7ya^E_bnr^Uu-kg=O$ -zw&H_=GTXr7?tgn>m;kY_Usercm#?or8$+S1RdilD^uW4Oix)@oWRiJ2DH;cQtKp;* -z2e+KPDs-p~=WyQ_mhzq5h6>86G~+6ojG{dY&_r!Q{ETM*b%1)Q;;5)DKooH)CPM#& -zI#CR8bVK1TBq~Mbev?Zp9GNqXf7=Br9^aQpkAG`kxHj@`_Sgg3A58aXTFR|LUA9+73}E#X&2PN -zA7SEjMLO>uG-!A47kR3l3}MN2w(;@tUa+iA63xH2TEcYysubORsWeBnI*CK}*ElJI -ztDEeX)~iM=??W5(n&epPH}1bBF4c!o?x$mVcB#oiftrrFf7un? -znwvx3HBlCnk@`Mq%zCQo?|L)Mrr7&^rN10C+UKhJLkf`YvtsGqtL?7OJlk|!2b)U$ -z{zJF>-QDyN*1@u88iu=9+KPC$S3=LN6R`aDcC!|B+(8v4Gi&IQYb`gjE`KqUbNM(o -zKUntVP6yUZC57o%Be>GIC%^FE|IF|rYFZtm*X<=-rJ8D~tXPITr;@jFD{4w++MQ$?!?lzIuqG-w4#&AJ7Q2$fY(?BmR8DzOoJ#PUaP -z;X`_3PdFU%;s;m7fI>4e2RW66ux8_#&}$wzyM;{dDrqsYz{s@a`g8tdrgbf!gf&iJ -zWC7igkkaHZsh?MwVVZTA%=Rf?Z;P^kHrK%u5;28x-jU2N&=hjQPKZC4>3XF{F>)rD -z6ADhgA`6KaT_-gPcxab6U183~RuI-?E5Cozb>^#b?~s91+ZLK1x};kj!N&j8&A3Ea -z_>Nx|6OlWmWL~R${^vIvzS3((?aIm|5C8@Hik9pS16r>mXdm5|te4phBh&dN#wgMl -zM(mzxTTWET8qB%mkLQJ(VU;S~XxAOnl70UCrcY2Ky~NbDuJ|SS(0y&Le+#O`!ld{f -zhiB%|9%Vo25jz&$IFeK@2o$iIa?&XlB+;sDeN~n@BpDM`d%muGt0T -zRz(ty3;1x}n4h_*Zn!FFU>B2Al{>8!*Gq5c#y-UKd>xDHkxMQ{K2 -zzB-+M_F;2=h5W)L9y+mqf+XaPu#;pLiAp1C+c=)g`H`@J*NV%_;#`O6H_I)g(K?{7 -zrFP#NIr3tW%OR>&!8D-w3tX;n2jW1cxZj(o>^l5v)8dLVpi}XfL4_b#)sv9p@H+!D -zo)BS3%F;s&Z=?Hzem}A)wJvvN``niApSc=t7c3(L!N~j~`;zlrG-*P?p`bgm8I@hB -z>nx|p@m_N5Q_hnY!1u){lxUx^!Nz7htsY)3*4q_HG|46!A8fQ5i{pGfXm2AaJ|byP -zbFS5ik={3MiotS*n2J+oL^5{c`isl+X|%=6l7Lx3tX2yy_CQmD{c6RUHBx+pc8>>nh%zb&PP?f#yD}=4m_^ps`qrRq=7p7lxFZqU) -z8~WQ!X}Olx&J^RMZ3C)-L^Oku)(94^VNEcFMwZB|Z?^GKk*g+nwK#GjtU4ayU*zyc -zGI3UGB?4{f%y!;pV9mEKeS=mfM9p$y9h|-^PseS^B&GLw=S|sKX)pq++KcW0mfNVz -zWMDE5@E*zRBtwwKQl^^UEYot4G-gvQRTy-z=Z;+e>)nWFkmX8xqBXkJu!fT8{Z#_? -zWTZv$#-M1(Zfez5QLZ|M~L!0|(%cPhXn@=~Y1< -zL%>uy<3UoZuk+$TMy41GbW4{;HRViaUYuZg(-d3=+8SVWrSDdI(;TCgjni7WK)dHF7b1X6NGadQ=Mu>8GmJOBN_Cld>R=C|Z8PcFQ7ysoOaWIpv~SdILR* -z@L3tSfgT2#UlbgoI%~JJ4oX9$+{_n1$w}-Ct)h3;F$A9tWSgc&@vupCLuCxsf1f^g -zn*&7&7%(S)p0~e!|*}l(Cf{ -zFP%Bq^g2JHZ3eVJxRSzzY$(*&saJ{V68vS-2{a2~xRBBrvICQoF_MVy?5X@C -z8l!ar;!j7`>>}ckW`}H=+@}RDPe5@Vo^zWDb%6XvK8Ms7>A~EvPy?pS+Y9A-(QBAV -za~Q-<7@+QtiWFZ94ozOv)4lMWL9c0Ht=61)5)3pshBOGRiP&u|jo*&9fsgm(ztR7X -zK={tFWi+tdxWY%_c4=SKIROeDb|~$^3fJg4uB}DkXy?K&BM~sggPjQMKs3rNw*Xib -zVX)fv3k(kU<_G%tqzpjy8Qn>kIH)EA_(3x7o;Q#^OSc3jJQzPKldIMUf^zEvq!Gz -zw=lwpu#fAnPHKGt#i$zJauy)b -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 -zl-U>xBd5^@$2-exRRAOJi(TW;J1UfyV7g9 -zaAxe!m~3pa-a<9^gF5ewGZ5Pa!0zE?dM^O4g}I1RiMpQM|zfhr1O(0 -z0APifLrpld@+8cUOu=vkp5Ml?HK|N&7^FEt&>>)$43iyfhOEsj+u3<3T#__B7yb-i -zJ5WjS_dVob6*4vq3%)>z-@PQAWj~9mPdgR+dnOM?UE4<>=R2D}gC&!ZS>Q;Z<=CtzRWsr;2 -zsi8`S>^{$8-Vcr9qa`s^wv|bPl$0D8nBd=TVRUImdl2qg()?<1Y$_CroN`K7TWKw3r{O` -z0<+ATCM3?Bvd-N-G{VoLfL18GM_<=KDm(SmL3_}~x{+C+J~@_!dV{o5C5pPRxe<|V -zle`FtFO=(%WNE$9FuFUI%`MW)h^-X3=uTV6Ft}8{=LEqO^;x?bL+mXBuL63jUgDIJ -zcL(FYMe?y)^7CNqx`3xeA3xHotC=rOgFjjAkST}`XidwE=mJ_-ul3Sj*l+@l%6U6r -zwrnOUD#Ya_MeXp+7NUmvxK@IsMv((23vIceo<-cG -zkMC$u#9wUCk|T3rES$*-&m2;bCWfK9;m4)&Til6gLN*ZI5+DMZv9KulIld0M6Acnb -zL*zw@8A83YZv`_}N)Ks?{BdEO{1o?_g9r+EVQ>l`niNuq*qJ8{`Tbqy&zy)TVN?`;>2+!koc^V=?P8(QNZ7!fvI -zGqxMFy-k{N8;uU-3?6z!U3640Cb$B;l#`1@$$My0vN{ -zerXc}9oX9N4-&heUV~8vL8#*#H|#74;CLtX%+ymsP$`h&`mR=D0lLo!*%#U;6J`&X08DZ?TBcg(E>s1wR|0&8@OPMwn1I3 -z-+!L=2PgD9wi!V8#mOxYT})!HtJue)S;o|;f$YmHdR^xA7p|L)rqB(g)RfHWzYj7~@2+-N7fRfqj~ -zA)9^y$;Ps$Py6n4rT&>t28HT&K6z~Z^qqn6(|8wkFAgZI_t@$xyAi5m@;!PXO|&eG -zKI>o-WMK?7kqWH|zs+sKlF-Hym!9X+LcVn0@5Nxsc~C_N(R>Shc1! -z49f7vu+X-b^vGCQ@Zi3V+6OwRuI)$_BG9)qz}5l3t{|6YRf~h$x^h -zqVMo(IP&5qv6f_t95kM`nWIoAp#k)Zwm{ynQOF;?Ms*fp5I5+%V_guo!x_CTDn%zR -z4W)el;&IoDP@M^wK?MV!qkwcWyC%?$4my6jr3LVhy@>Ml!i-~;J9ufs1seIK}_>DpdE%t-@F~sN+Aa&un9~G7JU^+tI!PySLEUn(@+iy*eOj -z=o=(4A{P-0Grm+jNLLdo5O&|>n2^TTmCs4V{p^QX6G8DvTs0EvqAN&II_l|>^odt_ -z(S20r^l>I}iHUJFyQo&dUu<910Q~oS{Udl5oYm_Fakj<&$$=SMPyeyC -z$yW3(VORe$;YvoS#NA}c$P0jh$CkfF -z7DyC7pN6n6c7vZTtVK~6!vlMQzoqqblVBI)YH%GKTehgs0Dhv)-3X=`wZ~EIKsILO -zzM@sXvtxJhWa%Sm%r(YKM4FKtL8NXx^zX#}J9;uwbeVs-LC(7ah^=u0F6f+mgXt`= -z*K@~k#-n=P9Cb}DRhN_-iG>@dv5JZrz~6kr0YaO-e0#s~TZfxNLOu>yPHySG$mbZ` -z*J!oqw61Jna+?D8E#j#18+Xqkg>=*dA}$ip4=DVZIFiR}@BAsL=~bZtl1{gs=x;X! -zdTv^RSPwv5+cb_#f`#7<4%?td*PTUbxyFZ*i)oyZ7wy83>?6#C3C5^ -zql8|#M;hPqV^~q)Xb!komAYbFyqFffYAylP?dGP7ijVES -zC9LZDLie`oV{-A;!A`w=$#p~M$xyY1AWqOeowI`~klvI{IIS&kpA(+M7-+MtXvz|i -zwP{T;Vwwo8)jn0!q5AJ4u<26B3xZ5k|1j*Xb*}`P^I)`|@UL4n7lvl!C?4m{L8)Vyh?#h<#8j%43Aw=dMLw~+*_{Vg)jCH^K -z{Q6b>`uzEiPoweI*SD&FU+(_j>L#o|hSp<8)N=XnpX?{Ib#hf4@h~%n0=Q?%6pdQih7?mT!7A7XF`f#3 -z{D@MRjpaIDQI`)kxG@=#!=Ai15L?4rtHW#tyRR(*Q~|W2OkNhkr1& -zoTp~*FgO_6VS -zVSv*`xn&?${d0C`;b?N_j25cVmN`Outb4VE%^WMQsD8m-m>aqe;i4V4uJO1q+iA<- -z`|yRlRcbJGYnhm*-+=u?GK0%o`bh41u47^h&@Uqgb?e%Y=@77aS+TlxIFjZ6c(77H -z)#AsuZ-OuG?u~Pj=wqNF0rz?T#*twB}2mJ(XyOfGRMO>4pkZ6&T+k^-N**{3{ask@&01Xw%PIzNI -zutN~Lg5J^qhT|gLNwLt-rQv+v)29Bf1uK{!HN)&I)>qv5q1y+2hZpXaP!T4@Qd&8av1Br`+O)s7|OMXJg#Ifcz4;*lyR2gckggRdl?E0hEm<=`v{FAci> -zt?#8rd#Jts=P~XnfC{upcJCC>M}lsZdp;RBFtSGDHBs%~u -zRiu-;?swGxs$eBq$ffVjdPc~zAq(Qc9fT*zr58tIV|1IlHT06*4eI#TN{qdH^DvUqhz^78H= -zd>=Vp0;_l)q)S~9?$zxG4`VTKL%k1H1jd&96+}N|!(1A&shk;=2ttl?fupx`LHz|B -zWlO`hK3eDo?Ovg0*NzmosA3i?n-^k?D2*$!BB)-mch|)2=((yi9_0E|(IkOxDRlfI -zQpLa-syv1TRVZ%*x^L^=lNEsaKKU`2N9KgDE&UBuhouLAg-u75h*P`)XQb-> -zOk)GPWAyvl1g=%nSo5EIyNblZisHtHCnG)jy@>C-Wfn>^VQ9{vUr2AHE -zI9Hd=T9fc;Nk`1UG8yqFOP=G>sfiB-`#Hg@B&%_-I24*ME&c#nW+)_%5pckDGY4s2 -zCm*e0m8^FFLtLaENj(90T@ZW&>`S07tJ93u`HRLAmx(KG#$Lq}*=M|WNw3h7egF0i -zD_4}FXf%?YLE7kHTnV*0TB&GRe0}Mg5zeNox2ixlRBFR=)=tvC4B>&Qc5}$-wRb3P -zPl-3~3WLqI?lYd;obcm=I}2C^l;smZLmDo~T2+yRT{3}yLOro*t|fiI_dxdBdV{{^ -zvB|x^#}uby6uZg6aQgD}7FJl?Ubi%>f(DT=bVJHae!=5=x{Bk5BuarmN9F;okQ{Nn -zaUJ#w^g?WI$foTE^zf3;+ZE6#cXHrt;o>DOI<8}i3d#h-*dfR!4q -zyQBXpQqL>A6wCV^I^CUji#$%NR+^rM?i!~s$$rW1+-HS{lGCw-xuM|qa -z&&kn(i58~SAwx -z9rva=bTh1i_JuN3AwN=+@U}!F;3nk=Py%SweeBpR*KxQfQzu>G*qXgLk~~Lfx7olq -z%LV)}#IQke&lY`I5n -zUU(;)=vVE2xNk1JyXITv-M4zE-rwCfYnan)k8D`-Nm0A0*#s2DPTXz8=mKU86g^ZR -z!T~+Gp=^3`RKp1KQu7&H$kg~|uL0;Wb$}j0D?EbdX#BuLj*%&UR$<6WNLZ{hS)41S -zJ?%FVCaDOIyY5)abM$bslBllsj7@%nUDlEW3~buN -z)Z>xhDn>L9iK~$8I6T;jgbKE=6NFe-Fm{t~S%+~9q);YB4VeKN=6lk4EAxL!t3+fn -zH5koL@2enwftY1JQx|j494KuI=^sum2(Rys%AZVRmzoIXYawsZ!>^%Z*!EM7pzFpR -zL!}#+)4cxR6z0h_Mj;QE9i?g?HshM80*jAoLtI7{l&la08g|5!Rih*33xMs&Ez8&n -zmqk1NRydAN&UZ^yp;oPi$Z}HU8yRQe8H?sJR2r;BE=yq}`PGXGry2S}(&cN(Y94{D -zjWkJmornhK>e(;a-y^`4>|@+%BMB(;DlsetuC2&JbpR5kC3(YD+arafc3lmU_y;7(tO4$z-ky&^9iAx(y8$#@%5^vPY>U%Rs~=~APs -z!|HzHzOj{LI^wgL=>nRsuCLv0QOM@HI21T(X-@4NBEXHRU(z2@%(l{}kp0vm%M{c^ -zMPkL$>9F!ul6cOBE7mPJxHXfonNG_NZZdr(o*h&;V+>NEkE1kcGJfA+Mg+Z7=-al7 -zm+ty+JN@&aex|z{a+3Kbz4zLVzJZEb+HDora`s{M2sW{V+P_xU@$Zow-gXB&Oba{_ -z8ua7ptmyLL2Alu8uUeOCI!R&7Tg;kVS_VixAJR&@8h7I0RJUMSpB#aeTz3>xI2**e -z-ROOe#i;n13`e2$D|3*SKzhDtmHeMdfHsHtG14=0L}Fjf)xYk^I^h5MVD{Zq+Vr?g -zaV%ZY|8Y4QkY298J}Y^9|NbIvo5An@@hwi6{xuAuOC&@7`hdAkWr_U9w`fIpE>9|7 -z1V&$<2cUTkR7$v=o`u6&EPfFnrFBBS(yX#dnscvYw*r_~1m8j?C@mhSRTy;G@m#)=`okdd1*97__MUeDq -z91-M9>sa7SIy9uL1v2pbO?RZ*J1_}$e!0-ocEEqro?_%1N%inWH^1bts%&DU^3mc7 -z*{LRuOVCt%03a*KcXBYc7>226Zzp9oPJ$kV -zV1d^1PNck5iv&;^b9Py?>405m7sKx0zY{81H~xoZH_*C4MI_80k~%&qQ~>_8Zm((i -z!Z281F>M&MLqsFpRQSyN%_f47%iTtEbE@XT>Yy>-G-Mgz;I9z;(8qPW9LPcn?mi(U`Mw&)P -z0ST0Yz@b{=V^VxyA;Th*3RG=3tKt>x|Du+Gd)^xfB%O!I;{d`!WjMzhftmg*iJ*!COgc`7AW_bZRV~7C&C`_w=55h~-(r -zl}7oPy7_C_us8SP)J3j}*Bx*+F#d>deM$INu-@QMT9j0mds~;mK*nk(5vlw$ds}Ou -zQVOe94{D2?z5*F+aYFM!ssUacm&hjwQkuESO?gh+_WeixuzfH;IEn6oyE@nO(VeLh -zPt?}j?cQ`kF`RMP==GO0SGpBA!I5MlhG<0ywQ3%Tpcu>&B@=0iFh&o`9ksj*6VKrH -zJGJ>j12g8&qXM+BOcyIKwpop7C%* -zsrBI}k!TAUFuI^tKuvY3CCMp`=4DvOg>0+MH{gO9K)NB%ihc|PAVWeINwr!U1_%<$ -zfJ47_37j^3NSOoh#n2qH+`NTVWbwFd6>FZ0VL0nX))c4A -zZoU+7YuwUFUiC0J4ZD(!^-Puz2^6xPfCL1@v=-JOqL&ua)-}@2ncb0=9%_Zf%YLR( -z$&t*{p;5U=Hf()egEja9K2_|Rl7|s^9psoU3$vS$j;2*B%PY>(WvbX|jp0T~0D7?U -zK`i@jNrXsS*Kn{jGNoU&Z!cR1@)-6~I%xJW^%si_&QO4ihhHR284O+@wU_)EPfU2G -zhM9F96j;)NM^|qI4SL93=1H7!3Uo-2v5btxa2;Yx*9WhI(4jp)?V)N{k`ol{FfD|_ -zQZ6~|QFAT$&F99O8Z{KgQU(J~YwOkqaIh$>R&$eAfR$S!@lRHuT_8;ONydYXzGO=@YoE|WkxSWFKCAlJxg{+2*JCyu2X-1X -zpk#ZVc0nJpyxk_fokvt6lr|t@wxH7tWebm)l(2p4PG_p4b-%ymm?Gf5(8I!k+Bo!^ -zVK=a*LOBq8u4ZzVDz4;#RPGPz2mK1Tc%(sY!ENp$_4(Y9b+g)mmCSqOfUR(zi<&N} -z-FU7mj^t-B_ttIufczGq9|Q@D0lzn?(ciTGgr0k{u6TM;)mUl8gAssXP$#n!M6 -zaFpS(Wg*R$3G=%El;W?FusC%gvzb+M(_{9BrRF;yhYc?;N2*D_)mD!Xq6$WehFM?WYD%G| -z)n4@s;m5|nK^p_8?~Dous85|0O|f(mI>j?c7g13F{Z@yk?TLX)f~U~=CDWb)b=A)_ -zH~u2q-Hh7%HH=b!<91Tn%>h(v!Kf1W2Qn79SwHnUeSGI~bk26CzsXWde?y0cdm@f;;WfQEuiLqfNcFnTv9KLNC?&?8|Y+YC62J(o8o -zSq>=B*&AFS>YT{lViqJ3W3U{w9!J!Bjil8X$E5@y{{#LG6dKt}WiVVTH6{&wxiU-e -zzyg6QHBllYuvmK~VH9oNm+K3nq4wLzGZ`SFBK7d9K_|P+2b2G>2&^-)DJQlK(tZVd -zULTa>g@kaH+iiSgcvZaHGdmaelaK|mgM+m@ziRA}t6O_DIGS)fTpr-$9qGuJyH5m$ -z#TX6+-%@szLodBAxwjB9rPrrz0OXF5svzrQ{3|9FXA-JRge_g$WG#CZq}pDnbhD_^ -zdr_kmD>8F -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 -zXs+p#1qHqTeViUmWQZ0EO*l_w)}p -z{~Anfu@pa)9K8XhW%?CA+mfc|{|He#7ig1oHhwQ=WjtsD0+RK9UYanc?*bcn-?sSi -zu3tqxDfFeRMZLs!1OJ=h5BAj>K0fuMd!s4{X93?)Ab0GIpgU@VU8Ef}^*u`pkv*h1 -zetwrbJk2z&M_z(mtG<7H+6!&gQP&$kg|Z;j_kYGf&Rys18@gEM>|T5hHbo@7GYbBA -z3^%PgZ~|mkMH1Aa(nO9#k#-$dmfSbRj!u%kALNR+wJq4>2Vxs -zi^M(lawh%T#zc_({iC0^(SG1Z|ImeeZ@VNr=I;9A)4uTWnLVd|pDZIqa{v`w+g4f{ -zTf^g#g*)yC@EP!pEij|?GJK3RP~ -z3%rE%UPz;2XX95j4;RH6u{B#4u~R<9Sf& -z9-3s$V2iweQ+W(?xvWM*9hvrgaG9=f<5<5CgN1R8bt`?(VH?Z>CdAepQ; -zr3NQU2UPYbDbZJo96>dpP8Ml9KcgNFv+~l%IFSWx{jucWB9uz*RGl`Yh9(l~&Gqgs -zQpgR0ZE}^kn2GBUo4qkgotBX9~F^~;;*4-<`l%7 -z!&J7L7b$aT3_bM4?F-t66ON9ebq(RGUp?2ov&YYW-5_+V_@*cO;*bOg?ML&;5Sy6> -z5s9RzHtqbbr%G{N|1iRr#p%X_JF!>6&f&Zy3dVi^@y-IZF&Yd!F9m?!AJcHbGW&@(V(C(9ISI&`vTh@&; -z7vEVyDzexs$B86C1GpCr?AWSIL0RNF0KA2|@tRXnsY4I@v`XBw(yD5;)y%UI?p&9s -zSyeARKoxK&CEjI3-`}wP=u(%DO;m -z;C{*N&m@Gl7%PS{W0A#PDx}@MGTU(NFDI<LunTu-}Y(P?| -zkH)X5VM!p0Zvh~r4Vo^rO^hkX6QlfVqQU@5zjkED;*d>=pE~gw7ZDgsfY4)p~zR*{@7rOYc=_`D~JqpSi|O -zL;Ku!Cc?6!HI?#8m1m+;(qvjrw@=ZG;}VXw@k)~;9|=eb`6yRzt=IB7sVO)YlKSCN -z7FYj40}i(2O{_71`ugeUZ4og#AOC%zVZ|*Oz05TxXj5rF(&TP5D1A@`(oy -zk>LS-FVp+`2c{Qw*WhR^=_6P_Z=|?^s!YodrOu?k)m^AdCI?5QY*o&Eyl -zdi47&t_iR1WVjV*s~_LUhew2zywx2L&m65rN$rztil^{*Jonu&;=`0!4o-kuiy%Wv -z=o8ILkk08TxLyyK6%d_dLZd8YU_1~25bpqKAqSC!DDH6e;GJBMg;~*tD^y)a=LKkK -z4!)n_PS)ulVXMp;FAW+mgMb|{{90)uSv3}RoL`IYA2ob!xq9tfcbKXX0I{qtV?7l_BkE&ozz~Ab&<*D;*q#ETDw~b;y9SpT> -z@Wdt!P7nhNv-MTz3j->t&bQyy|^N0J$rMmu5qjuwv3=$HI%}f -zcU%V;oSzJNfE5lJY9d=z{9+sm+hXo#?NIr{{T}plD7H~=ML3M>Wv{s(^?ZBq63!{_2ep-JnEp-DI~ -zTuAt)6FNvk6LZCd*}9h)^$au`I>oY>ng~#a5%pNhlx$KMi5JO+>9-k~v&xi7yI|H8 -z@mi5FWJFvf?%XC7HF009?gEvV`|3=w`JpF0-en^f=`D|5M!$U}hEfLXL76H#5GOwE -z3RZ%~r+QUX!fIuX=zxIsYlgP4a^AAZo<}MR0I-!wU(K+jWhXns(1%(}vyiC1d>P^u -zXRb+6dw_exG2&)XrYR+B%Qr~o)WNDAas58rgJ#je;t_nSH_?&22&u73QG^60G -z27ytNlQtS9dFdN_n@)6`D3#>wa!1I@LS(>q+ep+#3xK> -zE0_ffTjwg~2-5IM@MKMg>xi^n8^~vPItFfa4D~|p4qd>Jvg{X{b9&Dekhu>=Q;N4k -ztgYR_{6)nF!+ty1o>7ZIDwHcP9V$&4VD(5Z(c-zv&9;&xO%o6l3o|iHc9I<{>K3;2 -zkBUy@&ZyC3++1&i2+;-Ov0oZ3_ssVzfT8Z -zMXe29_o@junTsA~Sojq2A5%DY@Ag^4iGbF|H#q{@!a;YM@%~-`o?yAW-=$eZ>C;xN -zbRjSQa!)L$OuRFf*4Dg_vo-$mZ3)H~1H((zB;bt`0rG}gJl0=|D-Ae;pj?|t4szjP -z$BdU;y_-5p;S4>D{&L@-EM)!;sVk;wv%n?^F=a=OjQ=9wGu*gk=7tsdb*K+fFohzB -z3+%k`P}pX&+Omj30~`iL}SK8%N~$9xGQJf^5SFsGpv+&48CI!g(+ek^lkbZ1-&vsKdR;OiI|d_%q_c?8fYO07`FY$b~}<^=;5(zevz2#`}mxZP6ePc -zm--o9A?^hf%^QbKJ@8PmqP}89en}YEFqr|gNJ6$Opy7sHksOMnfN*`y#PxirFkfWu -zUCy^6ZzHxX__oxlr&A>c;%3>Hu|_~Enb9qpmn-y~>b^1e2|bL{D%D~g6E;d$D#$Cz -z%P(%2mT98yh44ocbm*h8(kMi2t&ueHL_D^zyVmyu3=7a -z+}{C+@Lf5HtuYi$S`jxBA&nPla`@Vo4u%4mg?M}1Q5oyV7Z-}?b(Pg7kay5>{M^5! -zX7|eBwyS5V3Nh>!aTc?{6{KQ-AWHk?^5vzYYer4WC;B(&HE=ODrU+d+8gURRPbnpp -zb#b5@j7i?xxO%Ri<6;vxxML0OlJWLXka{)K1LZvCpm1M<2AvoP#(eF8d5{0hT -zDqqwxf?Cx?102=Fqv^uKsjaJLe);{f?dbJvp)4Ulo7g)cZq$}gs7^To(GS0!gYKQH -zoKZ(Pb08g4M>7tymzOYzH{fqY<%|Rp$_Qkf!GkbLgig)KsoaQQB$ecqqEA+|y+Z+T -zqHFUY=n_tMwu}v~1#JStDMdTv8s6Fn+AufX6^TtuTP_A>l=;o7q!9;(I$U?hy$C5d -z^_{t8F7JTVt*lIx?5_UpsWff%^yju*HRuDoB>rQ3AEN@*(duylWsbhtsWTcMpx*%^+g9vp-;_p3u+++8HqpMV%&WeKoNcE#Y5A# -zk#4is05u2OYLwSm%#bCqxyJx@2c#+a>zsU&LCL7kA!)q{ndHm`xFzbJdP@$Q75uPB -zoEO8FK_?a&lo}VCfi|)@w3uK@l>1$JhxFp;8$xEzu#{`2=>kh&c6-Q&B-du*3JI|9 -zAdW4B^eFW9GAA7E=`?Yo`3FX`UVTP5bUg~+veUV&M#jM%oemQ;b2axf%$!l+IoTIY -zphxR*mja -z-s^OBE0IH?C2=~NdP|ZIC$qFc(M)ng{9NFh -z&e2;_q~(mQYhN*rG^YS)EJ0jkYZv=NQY^Z}qD7b)6-Z-^y3bhVweG=vJ2bO{HpdUj -z8v1sfw6z6LvXdldg^zi4Z`LTibhpkl>k3L -zz`uJ#&s2)l@&=~PX98%2KN1y`s$F&@Cqlbf>9q25CPl`m=WHn)!1ibilTNUC-Z}kE -zaul8jNAp5Wdsdc7oWQ)udDXqXD#M`Rzc53}ziM_zC|fAS)c&RYtsv-zmB=>_9a;^W -z5zK?qW+eeGUeZ30M=>NBGPuh^y8$hz7u~BsG9;%O`=^uUE|hx7b(8jYgegR~yA -z3?$jUr%$XOEGY3bw}B-m)oD%2B -z;(~#uXdPrbu1_eCSDFaa>Z@Oh$m1OCOicXdwOLedeMXVglb_Iuz)bNHVD~p-tif^G}$D;pe -zZCm}s7)e70r|YJ)$52+X2Kr?({|eY$0KDFuyhe^OBi~_o -za=le3bbgbrLz-duUK-7NA~0#5sIMmxE}Xf&`a6l#8UU1UQfGr6%|uYH%zo&|RrIAh -z<7?z_%dJ^1Mf{j7zDv)v6Hl39YGG0O(JT@8Ya%%~_ -z(_TY7Yj0btYm=74n_-Eeu-Q+@Uf#&VxJ%;FoQS;^pR}T--3gqE8XMzGigK~y0`55z -zyk}rBz>3;@MV=8de{7{DmCs4UXkc8xmTRT34BZMvtt22M$q)NNYx9x}CALJhsgu*r -zmgD*L3w5^z4zU!0g@$_>fFZR-{ztooxEC`rXIW97yP>B{Zhu|F!ebdmWK>*1JJHC^d7Hh0djBHyC#0$@0~SCPy_1oy1s`9?l( -ziM!DrYTk|RC7!MFP=1u^xu>jipMlTA#ZVd0x -zQwG5-rKjMyW!FtYGcbdS+SN-cUZtPR%Q;Mcem$za(dN}Yj3gnXev4M#;D8mXG?zOX -zILUr*&6)i|2+%@C)e;_R*^dWIKV-AuC|Q(e3?untbX^Ano18j&ZvZ_JOa!uCj6J=M -zwt-RSs4eXxI~f}{Av#p#;%H5;{DSK^KK?q@g-`Rd{VdLe+<&&GC^Hy7cev!)aTzA?`=JQBYlp*)GD&K{P<}6 -zdvQZN@bNnESq^}11iFcZa`}CiK8LKLPhBV5x{1qN3e}$wV2>Pb(^gU3XyYb^c -z#yS -z$=Sb$KK^6ue9g_h{5B1|obh^@?XPS6mxy2tlUICCyD -zJ;Og~B!ko(?QJQKB%|*AOKS+pSV({Gt7aS#rJuNCMok&6`$AwL;X9<7(XjyLUdbVi -zWUE@1TO7Mp;*n@PRr8SSF0;*2jmpfnz>UmAwM0g_DcC`PI}QvteQfI)Q690W$#DmU -zLNPA~*|0aaD(F-VmV_nv-!*(9Py-n;I!8Z+TwE1uwd`NJ`D}p$g^QWk9AjcfdVhv~ -zAJKaN@{e324K~*dE1wyw8!uE*Y7n7%dEL}@7WDb -z?pHsd@ZgS$Tw@o)1aP4gPYUX|iZTp@P(6xtKq1Dq4YyCSIUdNmLSWB+Qt3hjy^3D? -z9GKA}+z{9C6PZ_x{AV?^3RlF-iY#t-yIDdqaw>_OcLb}O9e77)B9C!ewtBUh2N95jHhUSLZw -zJBTuF%I)EuH#F^vBBZ6_D1&N%dUl`I#39RZ!h)^QcX&@AK#}7s$MajQr$wYrnt=`O -znhj6>8=YyVew%eRnw3A-Saar1=(XDL&@+Hyj-CsR?)_t87nQx_$6W<}SU)9C*CYg* -zlp=hh-LU<`Y(Cs6B-kp!(^`&5$gdpPG4%u5teeXSh^0gtL}ETIrdyy};AYu6o(@J` -z{%#lN0Q(EpU)lIDf41=c`2cAWnk{1@MUB$7&zYE%qZ0uCZ}QZ`A?(WquBl37DlcqRryMPllwN=@VQC-QJ`Liaw1IP7{QEx)@d9z- -zI0>N@n~WeSJuL!pl{h$Tbe|hbelx68YdKr)S4G3Nb -zajz*jghyaT=w)lbr)|xmm_0AW&L-pp$1x>ZXhk*FoKATE3;KKp`cOY@&yzK>#Jz0Cl9fxCTBj;LiwpjKn%RsD3%bFp!mrUdZ?5E -zg{iuI4QFE4cF?2_$y9lS^1bKOE3G+@0oR*#Mza4624DV9${4l*v2nE7r%Y+PxDF4X -z2VNL!wfqBd*IJ{48d%@RKiR~>*v0{+>j~s(pArmFNoqp=?7*-%A}C25?RBq+QQ0`^ -zcdulWXkyw@hua`rkAraf2+0p3ZUZS4Co7gVnoV4LenO@;I@= -z`!xa?9?h_fQ6Eq%t&I$ZMH~%!qD7zpeIqjc2~>Y_H=_}l{Jw4qVZ|un22}UQz^OT$ -z&dsz4*cLAmIT4>?mx&1tF^$8au7TBTrZ6kpyEFlfkeU3|GMF$Z=}`U`=VZz-j -zeA%g32H797GXWox)D`2JlFhuK2hT!TD{8;BrD9-m;dw)WY5H;QaBB`SNg(Ec>qw>% -zt@_e3x?dxVpJ4zV1Xe69jf1Hf63}_OqrRPk^BzHsFF~F~xr2ym1K_kWQq7DD{Us{1 -zIBme+8o6o^U}}k>fOH88RMhe!bHT941cEtnc^a5jv|7fS%c+je0RRn!lGFB%K3=i< -zxI{7+AAX@QX?i-t5RRA8U4#)P1^-e_W}bc2z;a;i8fNL$M~D+ZeYQ-2Tu9eO5j|rq -zzSXs)C#%p^8uexDdQWTbYp>jpH+a3Fy1Ia43s=uLx*5?MG)gFj^!Z!#Zb@y>8cOV$n&vHY6L-ZHnOqkP?dx$_&frD~fkOu3(;x -zshGmhL|7Y10nD*r>uYUcJQt~%^~;T8I*1+25{frT`APRL9X>V8`n=?plIpv1vg7#9V -zQ74?N$z+_n%U$sg$;@iXpI^Fty<{K9Ej>q^_+kq(+k@^~U4vI|Oh?6CuGeni0{W4p -z%Dw1*S+4_=2r%uG%{?G)eK{dqdp@H2Y3kBuz*xS`9pq`;G@s76kq?{q8>;J%a$X8_ -zGd*U4_r)w-$iJe1b3n~FxzrNaWJ?rq%R(4l?J}0FoY-HgXE;(jiQF0qfA7-T~jRjG~#E-QJ7|{A7m( -zMlM%ep&nf2yK7nwHyZacIiP4**L7IYi(l`kMa3(=oF0-4zf~qg$w2cmQ1G(Fw}aOU -zArZE -zPc-v%P_B@grYoFhhK3?ANy|b?urb^{5KhYl3U7t{to%eYu%ZHfy^_c0%TlPiMxi(k -z^{Zqz4!HuR1}ac8j5QA{Rl#`0sZL7kiM|k|JIawh<3N+^1ZgFxa+xn0xL3QuRKqX? -zl9W_T>d?l*{>;D#Or6#$+))WZR)O%1rtdLbnuBk7wE&e)=jD7Q9X(C|^)yL=Rw?Jv~~;U6wHCfxIw)JU|QaQjCxX4u-$A9J({ja`C!W@?-X)v9ee?MvUGT!&dOvv)#v# -za^-rFTFCO&WrQ2$%8>;5%SZC`9AL_<~1cDrFZ49z__OQTZEk3tge3o4A8F>_3#Ae$pW7 -zWl8-8gHClc~@tx4T4)9`3>BR=SgP*G?Ld!{%LL+M^~l}v@R^I -zd*s)H!d&TK5e_*xKKi5W5Rc|8I$Hrj7TuCBiqfGCN$vApBgtO@Eh|;iVFaN?q$E_p -zq;WJlUr%It48uiFXHh5~{Qm%=f#W1h^eN|g7;UQpXraH3F1(J;I>(1iBZhgdIxMM) -zkyx;>UQ7vnH-$~q)mz3;lo2}P;G4*^*|Cn@yzsi_FOz|a1fV~y)h^Oh)>1Dh$Dr?I -zLqDkv`(%33dZ~6?-TL7piJMOA*Fjs-EaU_>>p0m6IMhq#Rn~Wigws13w0mE4pxLG` -zo``(Nc7s7lk)eeA>Uqm{cg7dmvV&zG8+pm5<`HDHUT!+xz4F-Q -zg>zkZ@)%6GFqm}qs`-$2Lpl8cJdr1}uecc$3bMzbO`vV -zGz_*>9OeL>;kl!Q) -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 -zuRHlynUOpq(sRksMZ^m -zOUQ{!Tlk9s2wO1GMMz=iC2R@_*RFuS+~h1i_z6NcoJUnRGu?&-`_7Q+Faj8xD3*&%XnEG@!% -zQLrsp0~W5~ZNzp$X#U(cMS?LtCfcTg?hF~qa=1|hqd)5q=2RvqFw&pjOf)ncY!>_s -zc?Vxj!{*MXEKT8^X0;Wx?7SnVaA&8e2#0OHK2cX0!ZU8ayYfEi>0!S}4COrG7U;QL -zn|L5$4dU#^3S-MucP;^AM5rCOQyi}onD2x&!&(7(Rs}tXJ -zgQzCv9+{NT2F9~3_5j5Yx#62XV(nQ)+JL$!dHpb4;J!5>~b;aJ`eVkI-f_8d%UN0C|4dJKe0=MNr -zyozOhAhRMl310@HPM?lID}e3F1Z!Z#WZOe5qB4`r&W^-JAQ{Nch>FS0bvo8^9pMMY -z#5OXEUN5SkFv_qkGpIXOL3+98h!4G}RH@MxnckK2BHnVM^p=1Uy=#cFX9)j<>lJRQ -zjyYKQ-7;NMyt8{WdL>+Z^N%`Mbhj=|oOz!}H)(TOd?ZwN5u+8_RSi~vc|;IfI~8^A -zYk`Hxi3}wsBb(|8m^40;vJLY2dh39JA_Zz+%Pc6ImxSO98~fAX7xp -z6JNDcBKo~`w0X4$1auZ;$d*-lT=~%3%Syy7GLL{8Pmyln03!t$OhFEu&sR%jtCqs7 -z0QH45d_7ebY`{Ff8LYe7ec;RH`WbrwuGodOFRrbgyTMHGnrreSCqWDR0503~oZFIL -zLmB-78%})=;6w~b-eVSpB6XsLBuy}uMJ6#Z0uJo()yQW+t< -z{OVesXubBgH!-UywM~f`sN2>v9={r0y2LhTv_Yh6Yg%By+R(X%!Roo1g)HaFvk4R1(bah| -zGpk1(GlJv5t-JR`-@_L42cWBgAbKkC@o4m{ua_%dq;kv$;s+So08}Ai9#yq7MA@Y# -z=PRg%-!XFzScAOnYHXogB?T^p7RmN2i8S@7NrR1?t>Dhr2o%A6VMstUw35!@;FF%b -z#94#i;FIi5J!yPD1z_fQ2;m?m^%}IDJS*qX25E=7!qO4ePTC&gQxscw-fwZmBecB35P-q|1iYj=Q3Y -zV1ma=yQ|)eF=4y4NZlqX2+`6OrWo0V3`pCHiNf~L{9RM2Vp5x|mPFK%WTYf}nW0nA -zTdR0Z18%P0TP?muk?2uYfolr8wmc7`RHw>n0LO2)oaB^Y@r+ZUxf_%kT6|8FY#ahj -z0dOyk5o0&aIdVdpG -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 -zT!1B(REJ7KXPD+Z!%6a;`=cA4&WOKU*u -z`IPk{S4}a=skFAE5ya{dY4f{w3B8p~3}kcDe4&2-R>t!+IA!g0e4V)0SA-Hlk)`%Y -z*sj(^_61T4x(K2XI=%E>gi;Wqf1!773Yp)U6jfkg2baz&0QjJzu98{DE9`{d!xFhmnkiUcS%v2cZ`n#bera?%%|MJnsUbfK-n5dduf&h;1aFv5RC -zFBpD+!PbshXfA-fHFA(;+ka3-^HPxM~N$w_8~R8$0?oAI$PCkrAq -zsE)I!UtKUvj7v=_URXAUc$qm`f}M|e+y$hU){u$71ZTQfMYQkY9Dae7(KN)+f|vZI -z=;Vu`b^LMx9^h0YbzK1=OL7xw%`QB(PORS&?!e|I&5ur1eff|_sMddV<4=u#>Z1d$UL&a_Eg`w1JR`aO@G(foTj|CdfEcg_ -z$n5~lCLgKjDrz`HN4@~Ra7}17479PEtBT0}Pxcr<9m2@Axiz%yX`69<^jmGvLi=<% -z;fK@aVQi^#Y)p;uFW_rHoj$zYt6UHA35=^LEOvtQ-bkHukgaI6skh`Okow40Ik}Ka -zG<4jO9fMhY%B$)P*k#NRI2A6gB?u5|`jSKr?V#Bad69p0ww+WjZ<(|@`sSA1bMo20 -zf9mq@@0~)cU5EF7y|2?1 -z|0#kobo|qP0H;YhiS9(96s}s6{-+-FkNc)|%uRj&@lE%zm**s3Kog2TUNBhhzg3Xp -zN90@mJS=+leX}{SC!{;bHH|d-QQV|9yw&&5U;27!@7%|`jizU?YEDKbUccLxpm%TG -z%5c%GvQqU#vCMes_Qqb;4*4}`;E4YwJxMnEBM&sKy|9mO3gE2L^tR`-G+jF$zjR`G -z6g?AV!TIs?hi)%D{;q7&u`7OYB%j#K2)(CZkwiXL_@`n3#BEbPHtw0?8Vw3N4Ud%` -zMV)2-?0iqZrZ0OpKcG;8?_zQ3Vz0|H0$8YW#qE`sE@zAfipnb>6{Upe5&;muMe@gt -zKC|jnoQ_XjzO*#Nm{eJ8`*}vsI8BmW`L0lX9B8o)+^QY*-F$nuget6rs|BN_(J)0k -zRKl*NbnRT$>}Mo0wzU@@$Y9g3F^45{*#0YtlA5H4Jg{03%Z^lP5pbSsGf!D{H%4sU -zbD@tOh=bdTZNg2>S7Sk4=kU#Pxax4i%t2EJJa6I5)WWuPXWM}PZWSa12rcZ4|0M{y -zH3G&Jr_#k&XUl`+%FELf#SBdt?RsjjS;@;A32 -zaiJl9Erl=E7_~B7=A}w4m3U=w4x1I`k$c#AizLO(IBTWd8&)C2*F|L>*dnF9g{w5u -zQT;3qP!^aD{8}7@@;mcTUT*j!t#7G$hMV`&=d0&iT?LSZ+=VJUQCAPO`lwWAVTpbj -zMCf`&yR&Xkke{d1CKx(^1heRfmL{U0lZiw>~v{j$HCXi45Eg|Gp%>JF*Nc@(m -zU+I3o%H!!cQuhtG*#>~8hAjn@`-!*RumO-f1atO>6Fj -z%%X~>D%+ShOxW_@+KH40NH7=sqlt-lyYBT2+K|B45^v+<`#-1cgamUNxB>-%4+}Wl -z{f5F3xf_J)F6X!i#7Ig`Bb`1ntidL&Jo}p0{H+5|Gy>`ir^FLoAd^#*DUG@hAla;U -z6v=A$(8Y}xrk+l(E;T=P;L{n+l~bjbJi9s-3OM^~ZSAjWvO+%1lY(EMK)G|zGIS1D -z#sNI_;OQ!S*2+CLfHoBX*_@3v@X{h4ZNztHWJvuHHML8G3RnxF29NB?MwV*p0xVyV -z@QYd=19VOtUn_Do@l1!Np!;WzF=53z1BWY`NnETFA9V@)c*;eq{ib7me|=L*B{ -zmpG+pt4FKgdV(HS8z;Mm@jMz5A3B_8Qa|(hWnf7dg -z@XL|E3XEFLnK3sH|QNk2cQiXxDg-lGKsGVRp5l=0b -z;&sbe4)f~IWQmK}@GJksZO_e6@82YQ0CZ*Un1`D(8ZP-a_jF5{x0${7U%8G!WVT{6O1|H^=l-l7%- -zmic?U@XDJ=NQS~|Rf?5BDy?=e(732KKFiLLrG7><6%5(G;fWbmxjf703VeaHid0H^ -z>MOT4o-lY{SqLyhVkfob+yW%A#Jx!RZ-#xjqd)c~p>?lYt(r@vn-jC~{j+35cz<`P -z_Tv70j_(q>c%mLqXhwqo59IEFo~)DI_I=Y-CW?b^tfB{S;#(>`opyhVC5b7Ava@(X -z5y%v+eJhhiCEB;1Hail2R+TJ-IVaP^2!`agYBCcL%`~r`%xd3|#K{yapinuHqBQpV -zIOn4KL-VS8i4Ts7n}F=uSU%F#Ed!zfr?$MmsOm)Wvh3N?zJKlHo0P+&2%$#uBWBxS -ztE=r^W%XKR`>~MK1`65h2}jdvl~y;QhBQ`ygOsl?0SdERuQJtgvlh} -zFBE|rx59Bi@{BxMGGyc~;@IWN=@gXUOXh$DA684u{u}pIYWGeVn5FSlQ;Z25T$O|- -z$GNO-LPJpuXmg^hqZLjjzNX1Ix~)~}wv&NHt%kJx4@e-X%51*YD3ygfLl -zrAaa=LKC_FS9qD{lab1UmTQp7kMfm8GxWZ4`?!|Iuh2NlTVAZy$QnPmV38XyicG{U -zdSnE-=3(N`wRS_AwCq0Yu<@@EoWLwMr}~T7pMh~^K}pdmpvNC}g~>T)Uq;DilG#w@ -zoVk+B-PIk@+N1{m{w+6PRj7?wUg#0`&~QJsag@e-=g10p1QTMW0Fvg`V%ma?r~reG -z=79}nX-SbJX?UvsvqX9vqyQm6-oH+@=zITa_FTDwEI{djaBXL@ihb%cPxsA!EIC^( -z2Yd#%UQxxzoF;X~AYmm4491&6*VOO?NIQ^E|65idqkFfCk)6Bdinx2-|b0@9vwX_$peF^3Skw&Z%9XYRZuMpWN7&ZoWn7 -zZMq2EHj0X^U|g}!bsHh5U?-v%oorq08phGWcghct2+(vioP2y*A3QyFuxcaS>bTmv -z&?2OXIPoWeBQr@w?;~y -z?t-avm#?UFYcxY#;|Bc&q}G|1`sw9sFS*nTN~0UXJ{I9t_2>q#YLA0*?xN!wu|${h -zMjHh&LCyHofn=qou1SW@Iov$?$JY7j!gwxb6}@io0$dJR)O|!Y@`VWEJbykVAeIMj8mFC5z)&KN=Uvp2RJ=DPIH>9O_*bG=Wk3jNmdRSnkZV-kEr@( -zhK63VRjigcIk1!@xD7cv*!*h|jjU^Q{+|MmZk&#|bA>xle++D$K?h1$OqoPFbwh|i -zg}TH55J#IVN7Tgb>cf(Y#%T9*%1Z-0WYVXe7Vp;M77yzq<3ny>mbF20r4LC3&z4i- -z!)!03o5%8B4F3?emG4Z8}BOrFZ=%wt>%4voGc;;^OO -z7WmaxMX|VcD@*$sxSNwrFzc;gb}&d;U&5|%8!qRW(a!>>)WGlubma$2Pu>&&3r4{ox&bKo^p-(-d7Z;s=*OyYIQ<+ -z;Q!l@Rc5}Ev=?<&IkW@34`_>iyO7NUx(y`hkyPJcb+!yriQaz`EXaYPK3Mrhm(T&~ -z`3)}n-4Y4MQy-4D^F?cW1)H7xiRLgfkY0mP)h$qrMa3OciWLqZay$h$f|RZlRmt@H -zBH8tb1Zv_?wh3$!yCgT^T_%#!xpqZ*6e~8wB2aQ8GRisfQxfx0@hbeeQsB4 -z37pCbTKkM;FlrRf^j*@mq0QOYfQ`@b>h-$pDW%SIOjFnGR=3KeU3$}ydV!lX4CxQh -z*Ex!in@Ul6k-NFbbUh&>Z1i=sXUPFM_V7)~+-1aNtZ)2<)F5ix?J9yzWvoVgBz=F{ -zbSJ~T;kZa`14-O%@B)^D(%|FV$$%5df$72$xnIeIF@Rt*@VcR)ncGrp>f -zFcT2@@~@}TuaO*SVP{9P@8k<4ttE~%2e$s?R}W#iWRu!Fq$ir}!6&n*sO1S>G -z2)AwzWfSO?ww~A}H+mC6bvK#Z%hBv=rc60HP!x7`%U+4|CJTF}_px5NCrFNC?;A&Y -zZoB>YLirSeQz{+YU8!lsR{ucUVzq*0T2C4;NlfT$(AM=L{znl%=JFCLzt*TekA!8E -zh;>nWn+JkRj+_zb^H+`ByZVRa~qiL9t7Xy&mGe -z=*2I^8BD6nYeNTC$jl=jBhN$Iwh=sJ8Y2e{fP88~u_15V-C46OGc9<=jMg#a_{dVn -zKRhfdvId3?2Q@Bd9)?V3uV{+}Tf`EPp8~pGSqH&wbXcqq@PcAxH*_Z%+}hvJ@<|G% -ziA==_TvSh2%_%&0D|il46fh5cAhcM5F$%$r(Yy%GQF#RixPv8+RDRNK9PUlp(Ji)? -zDa87!Hcv4a4{+`k-0*<7%RiN!ITAt1T%HAx1z2BzIyK>njxay0hT|$mg_|D1Z-@S} -zY-UDUedN0cl``}(G-o(q%P`#x{}{S&p^AFdk$dHqo!(GorIYX9zI|InhUlMI6@a?W -zkMREf`AsAB@9)2Um7jckUuO>f@U=dE)LPkxIFFvPGX6n{PI|id$M0}geges -z`8NM0DIac{3;4w+=VSMNDfYt;g~WC>I1DnksH=Us_R`V$Gwy~#`;g**=*cvYLxkk# -zj)hBzPA#%C?`)FWUG${s_{szKlL~f)l5RokI{Kt_Ri#?5b$mh7ft=8_1M;ezKH$Ab( -z!5KaB)QW48v4Z@#?PZ7R%CL{c88kxX9Bj$0toA9SK&m68F*=of4>{bzT0Q`&KA(zk -z9YS`(yjPr(2UFCUQ6^W{GO>1Max%9YJ$kYM+}?z8Tj1Ee -z7nh~uSO#1$@cXkoVO?tbYYpB%V)A!UFAt&_SDubg8l6$90Ir892A*VyuZbyxNe0VL -zujG!~r~gwWQ}zC1&NU6{e#^5a -zV-JbvR^wekGwH9D9P_a{Yj7Gh+#GBRbTx%j5UYw0zg$Sr=vfZ{L3e5Y*}&^JUXRyh -zw?0NrhZeUGAM1Ah!m@AvRDenYdm&LOfL`WX*t;(0WKoVv_XGIH<}^}dt}!BA!exnS -zN2Z%$Xw@iLc@{eZ8e3S>8r^}re -zju~9p-6X4VFgByDyw#2MW{Qf{?m)d;dDUtmqe`Z@T0YhKvX6d{1(UaP?a`1za?HxW -z(O$`dH{Z5^)|EeiTzT*Px@`ZR28!>1iQZCg`AFh1{s!-GtC#)h)6h{_kdlwkTU+hL -zonvsb1gyq%xcam30*c`m$w!}DcSrxb6d3404sxIsE+1`)qi0knQ`>o{yqo1%NgSa@ -zgI>HmL_kweQz&25fF7j&FkNEwIo2 -z$xnhxisI*+OW|db -zi{;0Nz#eW2bB@X>?OpvJ!3%a3st=2w3MetG2XtI$lV!9afgDo0 -zCX;YN!lFZl`=iBgOwKd}%q@DR-CCTRSnwn>}3{gMpzbf-t}G -zNO6(wLKkj0=>XzO5Ce9Xvc(y;WNh*)kA>6!WDcU%Yn+o -z{P}wM{^Q%}-d7s9{?@;<71Zp2hr4h+PBG6s`Zlim*NA#_)dDi|ALcfK#;jv3zD5(<||^I9)*2 -zNhsCANekPbPAscvdwVGbpSGu%ir2Mfd`UUrH3qL3?s!P;4qs+WJuFG -zDMh%9kjPi01#)$PCSAl{TPsss(_zMYOG6BiS2)T#yg?7kQw8$Dmy}p)!|Up3zqAgo -z{IRd4d^9NrTxSLT9uEA37I*8>$!(;u4V8kGrrO%^Ce;^X?tnwt&}l+2aPpveq`Xl% -zwi&}wop?7B{vHJAC(?2s>E+bDghoCX~3V2~(oVrja~);EqMy_Iof -zB+PeK${3WUTctf&nhi+{#z(^e_(cPVyiO0Wov*PksTPV3XN!Ky;c{8aqrF4MFoQz3 -z(8@ZOGSPZZ_|qR(;HR36&k*Hd2OJi-se -zT9%CLne1%)iEF61jmqvV>=x+L6T;)6#z!~2|9f&qyTKLvsvF90W@3fM$*2O7sEh=CUVmBjt_7q5bFdo%VdxZT>v4d@n8H -zj?|!k)ukQq2@u_}qa~J4zi<<-c-dU?Ta4cUzT;JaV+7I8;&vBq -zgDBjG=+sZb^EsRhF&#Sn3Xha;licRwq1VqJ&H-jjc(~M^k(chW-84;6+!J&oR2nCPhzOD8RfR&E8_sK -zS1b4D^wK$)&qH;!ynp;y@;P*ZH*c5+=D^FQ{6&Cn0G{DxjDD?&cfB@hKrZD8%W3jh -z-lRovU2er^TaD_6(_G3nux27=8%+~(b9Ex2xgMx1O%{e6k^x1^*IqFX74qo{>MwW7 -zW9ZPUx(!uhIah|4ssHlD1Bb+!pa?TR9+GSc!aP{ht8=sR(u5&fPxN>3>tQrz+c3`V -z6!MV)WxSTZ3x!1srqdF)FbULO`%oktIs7U!#5(r-^V{j1-#`93F7Lobf4-dcc)iTy -z^*WEgzVgrOz`r)Ygk!cz_?iL6O}3_h0pm>lFq|c5(HnD=`b&1-dJAFj!TZm0a{7;N5<}~Morc|X_zm^ddU$uM>qB{h -zjO6YUxrz=mX)#Ob@?;+Ud>Mqrs<@Rj6w1^Qj*F-4-QoJbjN`t2yg0WqqTX#ET)AB6 -zu#-JYf30yJPM_8NvQKH+d)ln%=Uh%*1@ssV8KdFk@b#$1CmX-9qw=$%keHy7cjde7 -zH{>boX1B4SH~aakd=*<#iVQ2Ihx+YDt6$aE9~-c;MGXnrnn>T^Dj&yDzGC6BuHVS1 -z4U2w_C3IIc!n~JZwu| -zC;%Jw3$~hmWq*)C|2+e>zkmBxTygx74e-&SqS9muALS<<-4~Ee6R9w)tyuk6DTICW -z*All6RQLV;fp*2MdKEg#{LOCZJ%1}q2?&E-`|R1L%*9BP2`sC@-%w~<{*ZoP2Gxi# -zb8BR_mI*7~|L7i-%K@IzJsVegB{FcPtC7La*RwwV>#U!}eB-e6eR*V^ivR_W5@Z(rM4+lh% -zN`?8PXJgx)D{N#);&C=W3n+y0N)1B2VR#wh@aK7KnIyMs1Dqa3%5zCrAT)}0);6)$ -zGg@~{VG3#gOKS}1dA{tDRLyigEbqd`WMjX4l3M=x2)1)dhnxka>koO)0Flmpdvy~en^MQc)W#`{tMk+zUPChm$E<|57fbS3MDfh -zYTnE)HOq6W`wA9=G;p6r6ayA_bC4P+;1mvZ_VO8%>uM2eQ+>+e05GNVUFJ)wyx-JD -zDCx2PLkgB3tH861NbcD#qPt3uxUw8N>c20^riWc;tx1$?&Ld}6q2Fhy~+S+vxILEME8+yJ*fsm_r)+`=r-%cn_c;cAq7CqrZT@ -z1t$7^ouD}Tp;PXTxu`<6{%WZ9?>C4N}3P$BShhuptmkiUixdJede3dKo -zeUYe!`w|BW=*(3S8K3>MI&=*FWq82t<(2{x)kfBvJz@0EuQtdf%dD0-wWz~e@epK9 -zZ{E~w8A{M=1X|cvGS+wFujlq9+%Z#U@{#5#)90IS5SrIBKo>D}so-yh+r;TYg`AK< -z!04?h*ek5b=P~IjI*qOWb>ezD^Hgo5gKe;q79A)o$eE4xVzME9{qH@1q;`85mlEyr -zr7eXuP0Mm1o26{@myygJhx!p|_=!2cHIvc3mY1Q!(?v*hrGhmZx(}zMw2tsK`FK6* -zYfNqY^WKtSlY$}h-j!kWd7l%u(R?qS=r`Gpzg=Ni{Ep_^@{&JazxA_FD$Bp= -zT`X=qsZcuBLaNfYrO}soo8&=?7a{}fsp;{2QrdD{-b9&GB){r=!8%g^crTx^7CID6 -zBs#&y*!o8e;NH{?$la>tS7c;A#T#kxHJS`^w$~Wi;yX8-t~I%R*lK!!y?h`Ue)@7q -zBlSgXB*u7M=HH}Wi{)+MI4xw_svX=T|Dt#nP?}7|MkXCl-eeKYTZSUa2CdQ!#*ZV_ -zQYiaP&=^3^Uzd2CD)g5a+p@BYj<+XhZS-i{?w*9qQtn%BE-hv2vfknJsnx!ar%*?2 -z=PvGV@2WC^wICy1Jf%cN%2>p5%i?{x1%q;4p5=1nV11F*lH=m_(LizFT=nbYk^U~% -zK91=bTp;L4QwRO_I>3M!rnP;oL%)g1$QPKB56ez^#r!1~EoaS^S -zbA`NiBcEB(gn%N~)|eAz6b+-djPFQ`lKdvqS^2Q|8H`0HRO!y6;>5ljo-*LY@PB-> -zcrY59>37TLiFJLt4dlB*nK3?%*q7+XPw$PHjcqFfjS)~+sr{To7MaD35AOy)z(>zu -z5C(L3%n9QG=$8X|>)?P|?R=817p763gitWV -z?l&VXk$$(TtWT7o7WqIca+0CPtvqQ)s@xj2_z+=&B81O1(&g>(@%DZidhY!xWOE+j -zm%t-u>r%!}vXMu+`-i4l*4rh+%+XN+z;s9C3X4e&4`!*d*6Ry8Ps?`z_zSRPWgK{V -zudX7AXK}6$&H^f8S^`$o7$3|wK2aZSa0{K{j -z%(OcPcgfA|{^2;u&QLB$)ZR*9M=%JHX9rri^7tCfsbF%yx-UDx-xU)NqAP9^=Z53Rt9n$2O;hEUMm{;p5sMV{PbEj>F!8>Ed5`9|CBW&hh&-SVO#(K -zal>=n1VmQ9CLdgi+nBwg_@G1;q)GM)!Ima@J%%s+>nk$*g?nXHVxcw#aObi$#kk>btE=xKIS6Ye26ey`gHK;YZ(lU?$#)>KjNeJrE_#} -z4=4$Tu%ZE6W!|x%*az%@oGIg>Z5n+kh>zX%k08W!f*`ivIZvX07aRP3yLP?a|0>G` -z_>8}vO80*M=cPUF?$8smYel#W`Htjhv7|vioOBW6GUnP}HlF&leD8rh-Qq!Xq+|14 -zt^l~0qWZKvmd|IHB)774LB~)bW0ze3ojWSB`8_Vs$I(%8p>3|I)mmXGlo^=o`nJa}xDczF1#2*Bv~+KCy= -zbyr}GUi!Vt0eR{N$N~^%DWkP0QQLm0hw=b~&3bj*fqkVYi)pdx@ug1Ppb~OA)J8tX -z@~p6ttIFgLdj0iFYo2lR^&`EoucB1$tIVB$aYRNIksun#=-t}>zP9!63v|HO{S1Kp-K}E7VW$V9X^?G!t7&XYW*TV6MDV -z|Ai`@%&A&H+H~~lgkXxFr1*rC;=hMe0Ql=`tk-xpLNmHv-iK~kJlVCz9K>TrxllwjCH#`P9o%W9AhR@wBF7CpL*|@MfZNPqRDi_G -z%Vq{BU4em(r;UukEwRtF1#wU&rc5nnq}mNqUUdRJDtmH#XngFyl)nNjDmzxng*>X} -z_E0gqAsM#R;>1o~vsqk~=Ak-Y357d)3EQ8;jI6}iNjC*#Dxjwlpyh=r$u(&^#`gHq -zR|r};QW8CipIsX8h=&FXz>qzsWQigjnj -zL}L|#zk-B910L)P>y5r4Yzz7v=HxkXrYwODwyhhjg&OCKk=_lSLHY4Gr2T;z -z0FXXpRvrTNF3PX`%9y+PR%-Hj5Ww)|AVP`^=XDi8B++LD|LP6|Se=21HDolCs=M52 -z%YI9j=^O#5(Zc(<=6vwK+0~(PJ*BvvTyT -zXQ7VvlSJ2b#!1dpXJ#@I05<&cTwb1oCA2@}B@|a|!nR#+9J%fB54O+N&oCu26By3~ -zA`c)UDUsgJc`mNsAN4Q;V<~KlGIFva8V45Rf9y(<@QG=Yo}TXIO5aGAmb$|i%VBXN -zlSmZLyd7;z4&p0F+!|<~ob)VYOwDmEZ6gM6dExs6d+2Oz1Nzj63jpA*TojnsJ+Ud# -z(EqPe9<mPy9#17{9=z>O>Pp!VSETb7Jz8W_jN${ -z@@K{6>B=N^F5G{pnSwU`V{h;ryJ^9%_GrEZetN -zrJvFGiwWJi>*o4`SqdhH^diAT`|@}(7agtjP3QXMy{f_~*Vf7nc1=0t7oJGaM&)b5 -zfp#ylkd%UO{k@6-*dGR8Nn_+k0VZw -z7u0pvaecv`s)QT|bmRCxJ^^3%^;tvAcOQT}whnxs{&GLGkGOU3Wdn7HX@xaCIXlE3ohiu7d$K2318aXiCYq$!pVFc_cI`{l<#)b{4Z5ZA7+&OG&594D -zLYG)e>sSt4Zm=b*wp>!(=(a9Cc(X%PtL*m(DdtC|x!B3figkYtjF5TSAH4XQB@?9c -zmN+rb!a4jhbsMc>Uo!29wtyY@5{TLu!{Fk901jBry=-fMK<+&~$aP})jvyS$pX!m8 -z?T|WoU6*8<(Wbauft6EIEjjEKMmq8SvSc1;NhNh%+H`>Uh8td(s6E&<-Pd)yO2I#n -zw9CgOkGb*cPF*S7n+ZNhY3ioC{L@2D9~EO2ipWSbyli5u0ML&xy+HXG&3}+T^Cn$` -zDymX;2fFgrG@`Yl*ZpJOQQQ&d7fY&+nVhM2=lG)aq*?>ZHa*W5T!FOM7&kI@bIhiF -zP)uhVSl#1K*9;RNM)%9AVd(Si)sbT)b+wAFONSmYOubmHjN -ztE+`xw(%MR{KQgzurEHpHL@; -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 -zz{is7hHhoJW17(Q+MDCa|IXzi55iY -zxwo^{SIfJD34K_4%bTWqr}t&m=Hy*)))EpNt-fe6H&r3}6Te97cQKjxV36CW#8`;a -zY+7R_EZw`OwNT_Iktp0z=qwB8Nv;Uli0&Ef`$$e~uvPgcTfcwFjvm}{)EuVn4=$-i -zSJVDLz^C)_gKta!yU!fl*fN;qkPJ1FRh3vZd@JzN;NlOsr2E%pl!1tfO#bU%q*w(h -z)Rc^PmOH%S4wW?U~~)#uvF;yf*2(9K}NM^}(e&{0roa@Z!V0;COKj -zpc7ai?|0G$c(GW|WDoMk8(@As-&V0YLDWVD0k1#qudl;u;T_-%rM|jXwGJAWaPiIEsHPKN!G3i|r70F3`W@k7taVnYnc7Ic5}p29rL0 -z(IWPo=$hwDFUL;-B7i?LM~kLZ;*W3*Jh0sY2{G_`r8w%H=Ci}?FnJ_TBsZ?Ds+;|Y -zXrTyhoDV89Qe60Nt-SYR90iV$)r_#r3a|`+$*r6Ofsvsx=z1nMZ)Wazbs5Q?tqud9 -zSYQBiLWynJS{+U;iPWt4^v1F2RxwlG1~QWemk=VLpGW|6ZxHQCGEr}sX!1WG;Yn~x -zn9kx{vQ@!nh7u#P(hiGALV(~+Tpfs8Bt<%zNnoQV| -z19>|lydwDw9ep((s|q+;+EYqUbj$beZ}Uj*`)kap4b*gdV~?|=Q2e#Oyqx6j)SuWs*P -zK!suOq2lsF`r$Q3#Bz6?x@8R$TcU5irrDmhLsd&Z{AR?0tbiwW3X}oBk&YqdCOjJK;W(UrvJOfUfr1vo_1+t@3jrN8V^@}6cC!G;zghr}YSuf@|Gut>z7^R(%qzsdFr -zG0A>XN+)kCT%tiwINhgxc#qO>$ge4d?_5Jy)#xhkb5EPzaz+T>qn8aUl*Ao3@Z)AS -zBou5TTGMNdw>R^X)70&YPnjq9%c=@L$&P{dDs|%m08twq9;s#NKH%f8ZpOOBKeX!t -zxI6sDzOgzCbZ4;oWgm?|1YjRZk`bM|0XuX*oNje8=i}Xr_?7#z^$_{*7EFKWkP9WeIX@$g(Ev>@ -zSi>UR^Ok1vgi1Lbe8NF#K4KN#DhDeaRSNJb(3B-$h%C5sxA(dj06Ga=+UfF^tf|u1 -z0|qV->14=p+pngRV9W0o>zGM^hw)P%%a61r94eeR+T%a@;`ENiF0nks@4sz2v6C<= -z(=^WA5#GMe=Wj<#9v(UQf8L(D);Ev5=JQsqTb~UC(BTsG9Lh=4@cTOyc68Qv -zyDEfRMLKjA1MyMZ;3oXI=X#1~`_ -ztJ^6^a11cNWQ*WWgyO}XrsXK!kLt~3-!i`s`LTt9oE>=$|LUUgEyI>uGMd&V-FL(u -z0CU=qv9=z^ghhg03g1|Fo3%01xnu(-q*k~^!)9kZ)%VEBj=yV -zDtF{FZH5}mVx4Id)_9}egPF#gtXV;Kt_v2iml<$eh-O%QAsMk%aGIvn&A0k6VMPur -z;P@18^hs6-sFAjjOg>&y9g_sOP79G}nm50*<=3*SPnR6Uc!ePhva7))i8$QkOjVYK -zM>3Ms=63oCPCvkfR%rG+sd3cC)9U%c(nK674wIF~_HJ)ODp9FI<;rj^)1sqvV(b86 -zBj)u4Ul({GSmo>Jl$QyDOebYkK=>rY^R+Qwh -z2Aq=Zq>MV4RR;uN-MJ?@w9n=l1_x0wAO0T2+|%kIc90wknljMwO -z!4&f8*qW_kMHAR?Eskn{hj={ZJwe&@&T2mZNPQcmy#vLvk7u@i#FmkFRR_ES5Z%Eafi2JtaVf!pJ$a(echQTNO~r$7=Ngx%OTNZi)mZIeYYa -z5mg|G(2#M&?QZm1Zk!hTJtZ5PthZ24lGqx_2#Xtf(N_gl1YSx%%g(@B -zpskFkH<@$v9_U{0dbc9oNveMW4u#C-4*eYiCX%KVp}2tU@y40xoO>q~zYT$#P9DfL -zv;92o(Sc{0qYAXy>PXLWOmu!S1pu`WbEpYtR-T0UnMoOXApGqdTa&WHhGCl%C>;WZ -z$uK!UddS+$Qk|WbswK(MbJfrIc>t#re?LMFRv}%(K;bKd_`^%aS@yH2`m|HAzZddg -z)V2KzmKf_ -zzuhB!A6V-%r@F}#A1!1VNTWw>=!9{z92E+X)dD0tAgy_Fh-hOJbq{2Ner5}*=l;wV -ztr)vT_c_mt--CJElwwX4o}jI$vIY_v7YDGj0_ddmI8`C9jzeltcO!b}+-Qi|69@&K -z?3TWxZO2a*o!~bzX#g|6$&XtG7k7oa=oR`Och4#&>I=nM)22CCj!GG1VDtb&dv -zWmcI-e{wAOp>Fl(eMu`HUIw{Xof@iS$R5ig=Ka_xVoFlBoFdvZAdDu42g+#Z@gTX# -z3xY?hc^I|INe09S@fFQ@zWe$>ou9VG)cgIXObIF|P;+P%@lrG-Q_QIEjUVrp=^L?F -zt)jUC%E}G3p4M){q^$}YBszLppbgO&7a%31d|E9bj^J8RZ^fvYq{?bEN7Q>RA5}HN -zTUK5O3$sfWUaQXRA&2&(Bm)H~%+mp(_!5l?Ro1;>mSm*E3TO}Pc8 -zxMsQR23nb9qf4-cBx~wE)wIxlcU^c|ofEibwlpDe;e2&&?V%BV9)-9<%{`jBMpD_S -zp$^)EHrAcY0`7sHhN^mlUOmub( -zkgY=P>syE#=Ho&Mk{U%0oGi5UhGG_RlRkc+I}v}eK}(LzjnQ#tt2%Q?MVc6f>V_Ye -zYHx8Tq6yhRcuQyqWX8gxIcn-=f=59Tu;FW#Zd6p7q6Jp0SlibtgT+y$ojU55?gK|bIJsc$$ -zgiWvYyNhclcHDb1Sg;fHA==2$>rxWxIm93_9Id70>Q3_n?AJM7zK}!(FL$E6gX$Vn -zc=}iykH*_B8V4@$m6x|eur{>7KQKmYx@K&5XveI^KxYD-+ewz-s0I&l=j&8J4$9*2@(x~+$b)cGWn*z2D -zRu`Mx92Up3m}qC7Ar~Df`+HF^R5-T(d-cq6>^+JhNK?B2N-wKyRxLaqmRLy^fnp3>~d{mXHE#s|GH)4mMZ(0HyjLcg*K>(PJw -zz_j!Mt?USApv3|a>#ckjog2ASjP^iXZ9o3HY!1%mcWf|%e@HvV=xK^LJ(n__@jwrp -zt^#_-AwC{U=ngV7@vgYmQ=_oI=pR~4r`3grN!heDbgNZe5?pu5>b$g{!qA$qjOm@% -zn)^NWIY?NCmH??yvKO6>zPZUxc&kqP^F{{!3eJu7NS_YfP8$BBJj>FAkd~7g(>R91IHZrm)hUm)yuyS>)icP1*rEtD@~l4!E^0()FRi3}|Ke`ft1zDlj6ntKoB@jzJQYQ`9FTrcwLr@R8Mr)WRZ9q*7 -zdA@r)qLo74Nnrbzv@1F)kW-;K=I^*sD|Os5zQN-AJ%6HV7J=UnM7*?ZD`k%cceBXZ -zJ!~$fjhY2z10HT$PlyI*Wy761JA(*G7D -z3(jgRy8^X&pS7B}vN+oU|Kz=lZlM3z+GG>@keDusCvxPQXmAHx-H+_^BckQTqj}eI -z;w>_M1qY;Z)UU!u$=Tp$@cE>&#A?gA11(&rTpx@_a&=Fc2h^)TonVE^ -zn`2@(&B&-zW3DbH=fk(=8$Xhr@ExvNG#krhgFoz0QlxR -zydN~!%eRj^zjgRHB;@0W<>c1xlN^rGeNI+|PV34RCO0T>$0Cj@zjNOl@<(SqBHSX; -z{D7*TnZtOz_O73jn%)!?AnA15iT-{^l;^JXhxG`&wOxa_Bv|;(umnc{`vHaaI3Hw| -zu?vogQqKhIirqxI*6vcP$jH&VTGEzkI7-}wyQA?fKZOnDjplueNvSKw#hY1Swy2~< -zi?)7RWMk-NjbL!9spk4W-EMBasrc9*dxEa6Z**^mJ|)@N -z(>Xh+0_jcJg!9${209^0Oo2ArhIT9wS-Tb#BcO@6TJ2Lg9ZLUhf}$=}yx_}3=?|mu -zTHi{bISI4qpXx5N!s&4U -zllEj|+1_%^86Mj}!sj8L_NU)B!@iva>RL@V-R+A%h?oalphE^&Cz}vwP;vzCop}qPnWcHwQ{)vjP@zI|B%e!+Lj@bZ=Q>o -z82$6pxI*2wHDo#jY+hEZZX3^J`G0+}Qb5V#$G2|+H|`#dbCTs_h$4aYdH>GAGQ@X! -z(}=Q!1KJbF&VQT9jwCUci@k=pk-M%5OP; -z%_8C}l}(O}wpB)6Nj_Jo2QF&CSrXnF^!r=W%YepEd;QOII#To$IFsz&DU^>y+$#5c -zGT_97jQU!;4>o)`c_hTIGh|p%Q_C54KwGLvCv`m>DE?K!O0tma-kmj!kY_^{#25D- -z>L&o61RRVTi%6*STyyyn&HcWoaJVppZGsbKBO-*G)$}jv%yT1;7x|Py9F3iEZ64Oj -zOLjN708-*>c1vjD09zkI@d;Wp+A8P;*bp=B5cngRGcDgm5vnS_VF301oScabS#SyJ -zo~+Rax0HEwsZ{Yi#BSMw*(n`eI(O@){lmTFy5}^c%#Lp3CAt{WZMT5JcqBZGxqgEy -z>s1p?FUKE0ZqnaDclN;+7;48nSrOeB0n~~pOS0F=8S1U^60zT5bjSzO3PQ;H*kgT* -zlI~_`gj?W<{)J;47yal8ap@iIz(x&q#-+Y!Eu)WD7PF$XV4}N#!$q*m|`MA596XP@pRHlV-0&4cv*%j^u*;z<=xIUnQcSi;_K)oDD -zMx8NL!v-=X#?|AgKo$bYl-;WQqUS{St*CIWE<3emq1Tdjn2}{N;!l=2$E8yTAFB0p -zc2_x9<7jaxbY5Eg0W8f>NE{>Jfa`7!(z4AyTB|Bq?|_83Ni&jq0`R&Z_(s^5z*|f0KFK9{MG^>IJ -zkubDE%1nO3<9oV_ -zOk`yRLU2q#BoxuhY5RqwIBD#0OmY8X(sug$T;hdq=PFT7rWy6K_$yj+gmQTjpK9Z= -zN(16nih;!%;MwGgt%mDGCK8z+9g%w^a21^PJ{%~x~!5m4RBlOzrpr7UHeHdccptxs?zHErF?+hm-n+i%~^AeGP -z?$!8rOE-ytoNH0I*AbX^XZDtT-v@p5?&h@s%>Ov -zVhcxW%dPv=D$9l+dEX)`IgOHib#`R%2f_>QWE1_W-B0(;g?HC{tGxSGkJbCT`)1v8 -zn(dJdOFk(IH#M7pirAT3jTl$JjDezo3cNUAD>r;iPmXGsU|woIgR7Vt-yAidJmwCd -zBj|%i@Elzqn8+zI1JEXfSqTG+bta2*Ww@vPM#3aj;Bm_xYk4lcO|Vh>onwqq(AhYg -z+>zM3U!C5D5e(3DX7#loiwN_ey=)5rJOM$XEg+lJ37aO#zDvsHGk32+gHD{*FAObC -zhrE=}u`}8?Pctcb=aGwL@@9nT3Zb?hWK^Fe@WFIe;ElA#i;!a0Y$A#*=#ZdOH=0c5 -zR1Y;W3@q)Ysbaaw>D~D^z;S@+4ci}35Q{`p$eOJJJ{ZEyly&7#_gv7Kp;xDCA-rxI -zTsQI%MvDQ8#;?K(1T@}GsHI$O>Bla|vPeCi38-R1=a9Gx$&SN=ZAhqK`#Qmfbp?Sp -z`IdEJ=W{`3H1Q*v`>hi?@)EgMl>_>Nf>9pAguH@mS)eW3v(I_^1TyPU<6G!b1+gHXl -z4Lc)QrbVU=A1H@9Z~~GQh?ihB|1QV -zYUzr+bc8e+oF#*8NW~|&WPcvc!lY}BmJTcWjmOSblIe)=%|aK@e0AM-heaWqes!pB -z(z=}5IYfXPRllS^qL^)^Pa*rMMV2Y3iHgLErPE>Mt0eK94Of&~a&T+rWHX(X9o%I4 -zN<2HLaK;#9NrHHJ4~xP5gPQ<=B(oK%Z)bw4_~z|6?BrqSoWATx%3N= -zdOoF(b~7r)(W!31v_3fkE4l6{rf@chb-U5~oQhHLGZ~9Q>sOW_FM;%Y(I@%8*Z=Ge -z!DHlRmWZsr+NyutkoCU*@xkJ|xisi;nc`Ubq5tD@G$37Ee|%PQ`2P7t+B2g+{^MJm -zE&XE{q?gEq{P6+vp33_8k8ja(@LZczz6FfFJ`b?+8t9X7zdQ@av{?2cI!cR#9Hm7C -zm9*vdWV8a0SESxb_9v|zRg-AOVn8wj!`lFMsgVXDd&xh=1s(b*MNVQzxRQ%Q!(Je} -zFlxozq>@!P;B)C$o!L_)o!lq5A1QyNPve9LXIjJpWYVD(Wh(%Imv6cq-O+(nu=DGU -zp0)$*n|2c;*+_baFS`3R$5dqpBae^fRtQeDZ(Ks8Is$N5!MT$ou^pF8(LcaVp+9DZ -zE%jf9l0KP)Sq`aX)No;#i^g`+WYa9TQHT_174J-%TUAH^tud#THI)v)g?2U64*olV -zk#*C5m~|tq8`MI=_92nulQsp^PwS4FmM^S=73R{8K|4e!(#?g#%-?Jxc(~ksG9RaE -zZmbI$lf3nT7HI`S8e728H9^%FbPfP8!rf1PD{8~*9ko?4%M4W%q5CYVJ$g72P`xVjRFiPM}R}M#;;jneT4&y>?ts`-K~CCApeU( -z2JUumB#Lw$B6HUwe|*gBFvdM&V_%n3Kz_H4L6?IJF_~C82BrYiKK~6^z&d}_liTF; -zS8HVVEOExiAdMXtHyXGwMtuSIf#c%Q__$-rz;qPHHk~@U%dL(+)IJs4@CX`T5UgqQ -zT_WKW_Om=b_9h=r`GQNHOjj -zGtIpgz+r?8Muy)_0}scXe)*W5m)6X587Qyt*z_52zY*cq1bIQy#paq(tc;e1U+TX{ -zsD}&nAhw5MM7pXLa4-~~YTnp0dJFl}8(?)ZThSQ@7r64bHTb;ssIAV3?EQ{CKo;ig -zDFtu!sO7WJ(9@}rH>xWka(fF=05kP6T0Dy$VRWfWVh0-z}bx?6EQ?9 -zLKs!^NCdNBmMED&Q-m?PPaY`bU72qNzwZI^X*F0hfSyr{x^oh{Z~y@n)PQo>SQECM -z$yG}8j0F^M7@6ZVw-!q|N*ojRIhSCP31D>q1<15EOBr~2*;ImPWnBET!Me5V -zBYM4~+pPDmMq*Hv1!>zjp3?%q1TekPCC!95xeD90IhK|C%M$)>@?;|Hr6v)J|s}cdIAOz -zu+myshX`F-KwH;Hw`5XBT6!oH78m=O>Le#JPsc{(BH6HYzXfaU1!}6;H6{HbkUGdK -zT~{VGAstPtR+d*>q`y>A(;7pJlIZhjwS!pp-I{oi_O9VbX=En9>eyel4&*WHrF767 -zQ|c@h8Js}?83w<|mNEvsKI$OJGoG06Osz88GAg8`MUHxJybOBC{pCrVasG2mNU@BG -z#XucmOV=l_gV3QdKkcFFP;L`c>o6OH0#dFy=TUPZ_}%B0n;HcaMotC;P7CX{1}Lzo -zs#bH8SAf-8BI{39pd|zZvO<@9g_?OJ&S*p9A89h=dQyGU+`dUdAy#GxCOkQ~@8kn3 -zAh2}8cGi?;@g?2tq@V`o(`$EjDzJQzt9p^F#qxE>a<$xl9zRPrfmH4{iU<7$lz8Mo -z?!oQuCdK*Oi*>icfsM?2B!I1Io-3MesnK|;D-Ppl4ENUU$B5(>KpzAHi*depDbU}w -z_=KK&wtjtDT=YiUH!0xLTA+GTWF+t@RjW1eBHHQ`ofg6%(qz|$odf>TsLdmQfX{p! -zVZH!4lLt={jhhg6x7-lt1)c$~Iz`p6-fz_4v1K7`mI>;+fRf^`lCZe+AG4WNbGu{q -zho#^7| -znV?ai!L8%A9=*R=gE39i5D=TlWro6$fwCy=_x{S+kH?9Y06YfasCxie| -zdvcPn;Fjq!Cc^KP`(m3zXNr@3jJ~3E;ZCyFXdUJ7w1B1e?o`z+yn*z -z9~7TP9)OEVH7UpIWbRWM&Y9SZ{^tMDpUxGV}CAjj<{m(z_x-R6)i#C7z@F2hdQk -zX-MdH5<~Bne4p6Ul -z*H?`_(z|U?gQE%e)8zrq+>wrqx%ETc13>N=sS2__ -zraxk0aUr3~{MXX2P1dq!L8`rl$})=*y%#lFv67RrZ+&>>DK>Zo3`xseK};{B9?g^S -zNZ%CSLg@uDFoec(x{R9xp<@RqbZ{u3%2+BOnY<=pYk*a83j*ft*Dr29B7ID@P9Ctf--x3gQJ91*?aq -z7hDLmY@TjeMCGyv!|zerx5+Y);vj^mm~tR6Fa~Ll-a?rS)QQlkbZ(J!B$eKC!5#qH -zXlA&=cpxiXMWL0~^7s?`ecKfms(AvM$2fAw#?d@kF0yG$K(|g_V}hI2lpV -z92n*h*yun_iVW5g%qB4>=$;U^-@jWR1i)(GF*Yt#CjeiF|8W`0=s%lU{s3W({Kb&1 -ztg-m;wzzYXKihyfg-|D=Gn=j)YD-{kw}n}GHq$~ILhPKP*p?ZwwIs1IaQTCKC;0C% -zkI{Q1*$Y3VMN5eWHE5ZfjAsb12M0+|E3d{!`lJQ%5MsT39OSOk&mH;iO2zV^=)=07KKYlaB1$pqwJC!m;?|~_kvAn4*9uhgwNn5~ -zQ@8?6DPklMEAkQByvBftf!0`-#`}{Y!N}(Iwg|Y^y+HfBMvl7m0M6CAJ-x^^MB0!x -z+6wFxB#L8bxPQw!{{^q295Q~B5wP6k9a;Y(t-Ga1MS++MNd;K-0P4@B#hcXT>GZal -zgU6WA!l*@mryj9u1c0p3)dRx5$+SqGKB-fzNHJFc&NmNl3yPj-JCNq{zn8P<=B5dy -zjcaif5K4T06Fa~lDA?WA -zc!BjhGy0_324u~#ftliBE^w6;SHIQah75oLCl&SbWKEN1Zh&~rJ;c5D#yw|HFDEIE -z*&>7}gfo^$G|ha*SZkjxhfl*-bHI?`g^LAABGkNZ0Cp8e{PZ_YybqAG^?{IQW^&nJ -zC6LUfO(edj=7$iN^&41Ur2PeiH?xzxfQ$_O=Fnrl};9c%Vscs~bOYw;Os^b3;01fkBt -zkuvVuYU7pxLs9+20Y=4%U_W-P*UR1R6N4Cm;*9}X`18q0Pc3{L%TPUPiDC@I8Z1cPC^O>G+%U6(uDVa6x^55qagN2>qK2T5nQvz -zS~S58gdp%O&T0&D}^1el7HrZ -zFUT?AReq^ETcYHu4t9v!c6KniuQ2JRTR}JQm0&!0$DzerX{{dH?@y0>(psa=A8x+* -z6=cTj5tZLgr1^dq^RFiT%w@aBBytxBn{o8UaoBiAGb^4MkE|%YB9$Mke}*e;zF=MA -z>*y(}B3FIP@whGV-~y1l5d~*@H||O}lHw%GMm$$*oT)(l(qo#;QEV9t|i! -zUzvHw(-Jtwn{5B-_~dT6A;GqfBQPHaGtxk>i>b|UTyU2*)U^d(QKAkE&P*u!X4)qQ -zIeaimfJm0Ar_o62{J4_CV-@W68XpbW9~R02sd(<46O(`S9O`$P$&dieq1h}rpi0f9 -zn9M@1W5F>!%;*m!C^n@`75}Y6Tg|2%sezM20+zhE;T|MTOqMp|`-i>Amn7alG9C;k -z^9g~><~I27u(Y@-08r2QY|HaVv9xHD2YFQOv27Mk%Jo1v^An9Cx_$sz`Io$&Aw0>~ -z+-Q@Z8PpxRGj~gI+31b$kAp4J+=g|w0su{DE=j8jmjTQ``l+~Ynd!*4@ -z^rNB;ct6>@Vty_*W=E9t%^Ty-(X3<^QMaz-V3J^7aX!$f7~t{^AzyZ7Sdh@Y!ZbfN -z+Qp6geA^?obJ)Xu74qOmD)XHsadO0gRy9_eg)wBqfkOicEL8QgM@pvm;rFNUQt14) -z0hv9vCpfh*9h@vqfNz-hXlzbQZjYLQ8dj3=c?4PttG7@hQ{Xm-kPS=JxjA7HGC!xb -z4GKyC+S9&rqFoC1enBS3&+DPw|WH$Y-6O?uag-2}}vKtMELlq^SqXsCVBe@(>iG7iJXTDh}41nCO -z$UNs-Vb~Vj;;;!w_=*s1>FKOaSE4nmY|;tz5K3TZ -zE;R5Oxo^Tkr4U)2^{PnV$`w^HC4GlxX7)z3M+H}Fb&1@Z#8RjtP#b3DABmhv{ces7 -zt#QEp+yi%Y*~GbtRIL@r?%l($C?V=tbGxHN+8~ -zDWQS9F0cbats=mXGBufnY?#5E!vOPQGb*z?vlyOe>qIj}&Vdy(N+TJ$LRhYcRrRX`l(uK*|nee($O^o=;MI@kt93{6(BE21>Qk>~Uu) -zy}x6WobeIV`r&eI7+xi}J)9o;uEs=wyj=VDZ&kuoA`$%Aczs`Nkwr;qVF5zEH>d=l -z_k-Z{F=ns4+j<5~(dUt8;RJ&c-t%b1zIcUPSe85MPMbSK38~Ld4g(6^2-nphPLL;dbY0!NDngA0 -zLYErYf!bRSeON45c&sD?Nt)Jxd&OJ)H%9s&fDkc-WCysSxJ;j!4Hxn~0!J8%#DD6? -zufQly^0=1rGdeEyo4{RYJj+rO^!fY8clartm|6H?a5e9A -zCMa5GlcB#6fo!;u=uJKK$$bZsFT#_nQO53f4)(!vS5~RvUL$HpwrzbN1+7Jn{H}8; -zEHA%QiZ`EE=8OsejPu9OG$5`ur}nrr$c2g!{uioo{~# -z1cdqSSniWG*l*sq;zarGL~RAf;(vc9OZ!Pinpj__draEpRE6&Shkkn?b0x}fJxmNC -z&ZzL@8$6w3jr|$9yksEtQa^>>V(S5Ljz3^yk}l;lp711u2xmbjeH0fd5yWqv7KNqi -z$zsyqB{{h(@fp2g=_6GTi@^dU;q4LrdzabTUhNva730`F2M9m328?xU{n&o>xJtA -z5)dFzlb|rB1CYi}0OH+Os|%4_h8L)J8KGC+3gOvX)o@Xf6hRxF_Vz}4jI`qxG)LCI -zcaSlnfxxpFBdQH*TYger%ACn8UK;U^S@7Mob`^(>L~mfN>LMoCm<>zi&veC_*`T!OTX8x-5CS;}2$C!7V)< -zU^qzMWBc2qpm4bf#?6>}H4Q4TcB!jX8gDrzv|3poxj{HKU_@kjZ@?l^lVTB!=M89% -z!V@KXQ-C -z*XX~*53&K_n6i?zhpVQ){;|&j^K@%EeV~E#P?O96a(e!})B{xYMmy&)p3TQ(bwXbn -z!F`P8Ls#360%bUUy(|uV1?BjdWBI1BThk{is);k0^GWaG{b%~nfO_ira&wQRNf&t6 -zfMs3D78oWexI!NCVQX$t3v}4;quq1C^!jMOMwM^_xD26b5|_}4=hK;MCj0hZjQf(Q -zXn)%IkGkLNXZL&B9v>fe0-jK8uw$74C6hGM!x?wV37*-181=X^&a_W5{_lDDe`GqZ -zq5oGm*OPZelBSdXmpiR=* -z_@kJW>7)$^FxJO)X~LX-2w>!6-{Z%-eig-}(3i3n^%DCXv~PwyI8>c_`-d!fxX>3ZX*Q2vAZ -z@%I$Sx$B&LLl^6k-HY#|O%Vz2jDJ6!<6SRK_dGLx;9%d<158x+#s5y{#}7~`xnuC^ -zVm;pfxsJ&EDn-lV=Rfkj{r>%%>2Vxsf5amWawh%T#>9*K<6~I%$$sGH@TCj+(RN98 -zEM5QeyM5u~d-j}$W44SG%>h(!ZChz=Yzp~2kw73(hB>Y -zq{GKQIkJudngH#u8b#i4h{soAh8KZXWij?kX6F4T&6d5m?{Y`Nq4pyQ(4T+VlIH28 -zz4POzJ*x>BZo?!y1zDvy>mx&ml}}bbt^zM%ycg1_Sh;!?dIvuWP4MvnG7vUm4S91S>S>!wmdBiN$S?d -zRs~nuGwo!9z9o8ZPuIJ43o=^(6XAkt3)^6v-lO=NA;iVOCz6 -z7-zD8tvQw)T!d1|ovPD@)X+r2yXhb9CRNJ8?+OhlD?$KCUJ*2WM3Z~5MHw#aci1sQa=K7mdGOBW>-#@Eah&zWrCwVaA0 -z+cp${CnQ$^IF|iBEM3O=Dsqj$%5&|Sz*Csh;H4LEmAt89!f_$}m~P`hgnBX-5bKoT -z2w%c*1`{6B=aMP!1e6nqDjcQl$rX6IstWKzfE{~>L-OgB$EoHze8G~XpB*9)LlBoz -zI3rfnpRZ;;*4x<`ThN!dy0*7x{8&2|e|#9V;4#6MT+>bdBM2*gRLf -zv%AlK-63(T>}DY2;*{(MZANp*5SW=qk%y$EcJ2AD=StySe>1R`1?i@fd$2cw%;BUY -zO2z%~@y^n;>PMk7c -z9SZCpj?R!)$CPu5Kfm)%(@DpJ@R2Ze!M@5m_WUfVYK; -z@tX5csW%Usv`T!l(xhrt)l9Du9$b;ADOE4sKNkFM{1<>91W~bF6TjUQr_W=qlNQi| -z4Tahhr3QjkK}ucQaLK&ZThSURHFbe>z~h!1pGgAkF;Yi2-JXPpB -z0&=@ZT6D_n^MSSc{w)cYg)3_qW!DKSh|NRxx%>dY7dHQMou41rWJTvld7?N -zPI2FEWIzM}wC$uIr6XK1O_NMA8e23XsA1sHxNco@z;Fkt-ji7*St2x^Nh|1O35752 -z2`RU(*GhlO*KbT&OYc>w_-vApoay7PaeeMM6Jc4=no3Ef$}_nssWC02JLYJXaf!m( -zcxA_tj|3it9F(4$>a}oA3JR_zq<*}WW!1mYdV?)_7gG#azJ5LjTSN@X$A6z_RdH(u -zEpv?t+Emn!9J!keLEn?J%^4vP`}449Sa?Lo%l!WSf$2rXHF#M|)(BS4J85lzDbw;p -zk@Mv0aw`e;I%-X>T*O>8d#Q+FkG}x7p8Tc=;7;1M1rSM>n0Gl!~C -zO#38*;wiKp&*Ly?_%J7OgA3HwDu9p@_e9$gq;q--F4hBD1w<#=&!|Zm83_cq!w2A5 -z$U7tK2FujmJyVz#!;B+j*9?;^Rr|j`hS~*MItsmBAL|CGijr1$9ttt|Ai=#y -z>!EESnP|n#-oShTS?ed&N&d6+YQ@Tzq?hhJl$d4jKIB=g(X^vxI#$ -zsDy=tLG%4D)ym{rby$e}tTJWND42Cc>?<;cjDL&7o!h0HCLWs=U7!r}*qkXgKMthF -zyKLklx8>2r==aY=Ov+F_s8L1l;moJ?AR}meDpo}qtd`}74hU$xW>5>Okr`( -zG=&cGj^JCpiH_t&NG(;0A0$XyyzZ{F=NT2CcJ~Vb!%C_Y01K(ua60-h9Sjk`&KTD| -zcG}HD=JcIb*t&@ul(n+9qO&2q3c>(d111%_a#9t6OG*-nTpy<8W~=2(s`0fydj@I< -zKwXODrqyE8eUQ}VS{CGMovWA{NMkF(lQkXs2|2qqkk9aRjMwTI -z5(p? -z)pLoPZ6(Q=CI~1NW@4BeBs(?~E$rzZ6`e@RZ(eZSI}los6N1WYzP`1Lo-DCcT#*u> -zb3SRGTd~;WKjVsJot$O*0=?r&cO7_Eg(TH#-8R$})(qH!6|+LjGElSy&>EP_a78Rk -zD9@G){R^&=3YmIxy7XPp>m{=o4U!Wt0-DkhCG{qibfGMJ)W8gXX#nNiGYo!fz2PPb -z>rQjrHR8tvf%^jTbJ$2EyGTi3k$1oOk5qGyAQb-=x1b!WzcDF`(>yWlEmY@aTepVS -zlL2s7+IJie1FRMZgh@3RY`&9DpALMAS{S??RTJ(q7X!?&@Lj}zOtIXfI~I*40#O^^ -z|?1Lve`0C=?M~pyq`yMQbLjEsH3$uF)ftLW~UNi4E_4r+0{g -zGZcA0HC%$IdK+gBJfP=$5AI7^|DQ3^{|shG`YFjfk=_`0=Wra~W96z-Fm3n%#nZF) -z81RxsEDt84Tw&>*w9}FAPNv=p1m_dK!Z2h2-KM`$%_|f1vs!Q85mQo=xn7F9{GEI!V5dLU?4ntI$Q<5X(_zCBs&bvOx -z1Rfy$wN|Kkr6gAr9sRk;Ps**p644fe2#El1%f0{l_Ky&+F0{vQ2KylpGYoveOQHgs -z0YY~mT*M+oS36^%ab4{QAOMTmHB1GL`#XUQekc{OwS=NWE8=D%r12^p4xjtl!B8Nx -z5O0rrDPtY^;=&BQZL-<~><(IvpZk{-?DiaP>pe46h+(&ivzP_0U=#!XP#Q1SPcQ9U -z3kq7kqj`f~16N{WiqN8?5eH%LlsZyb7bjZ5nA^RLo9E&=t~7C@JGbC&8EFsIsJ)pU -zsO2#Sg_|0rbh(ZSzUdwcde7ODC@i&B_M(;%)T(9~;HW10Oc%bK+PZq?r$27{fiBM$ -z$`S&!iGvfqMr{U#>Xak!`|#U2>E5}-8AX%}w^w88XvSgo@)8E$2K=q4RFS|ynShBi -zdhkSv(5V?SmAep(o07azbjXUfcc}hNENvdVTtel}maze~phrNcq-clq;jN8e3v<&$ -zG1$bk(I)KbTVH_6|VZ%4$T(?i${n%Fb5Lzwc|WK_A#9 -z@oy7mj0^#Y=Y$ja>q~2BC(osYv?(8`5@eV~)YQSz>VnYlF&l?EDTf5J?? -z;Gm7PGh!TzB2C!(YGSWizwH#1)RQXJmEgFTs>3<-0Tv>BZ4B -zgtVNYDA&x+1#-ab_K*)ruFcHl5g^?`99wwkQRVGrPB_}rY2rll4~%2I`HXGo22{Oe -zr*qwmgM-^S9VTeuQtoG1IHSOGa;%y?kMvU;c}?;TQCvNutBV0@8Wi^KiC=u0;<|Kd -z{7(K(R_cA$W)~PEtdwcR^ilg~={=BQe}ivzrWA?}E`V`rp-*^}R)tT93TJzamHy}t -zL4LTsPa0<)nNDj<6#=ksDy<}}8r`G3*Xit5B8S38;_eW58v^G@eCyjfswZspsMUx0 -z4Q&jX#bt~1mLwTYW@&?pndFH0r9d`aqPLDnOBh?fzM>mxP641;g0;xjF7}6{SagX+ -zi!d`Dkj5HypRvqq-4{3Q(9Dk77C$Ok=vzN)UkgBFXUWV84fE#6FK|tgkbczM6Yxab -z15_h|EK+e{u`~ -zlw#`r(&kq1a>GjGn}-gq#@%@3!DO?M02eRm7|Ej;lMET%ZKd6S{?nW8RbUvBQ;q%8 -zNoN=8yyUvc|KoLn7MM}`j#&nhY(LT`)(jSuZ<>2U2ge|%+&U^SpJ?w^>u}dPtnDcV -zTm`tQUEGL1Lf9!QoI2ubm2hywE$_NbSd&}1qQxLttV(cF?i~EdjlH=24knD$ -zh8ZhxO~-~iwR5UA4h5wbmy%#70!_dR`lhtc$5|yPV&JVqiX+h+Fo7s{G$qu=<=lHv -z_ecS6h_bSnV6ONU%5^OIkG{6e&y0>VW>~szPJ0YxC0n3hCiAZV+y%7j-N|d@7&G$y -zwO7*%PiHwP_uz~+ufNT(Sg*&j9ebg62n4zD@rvOzzs=pP0Ho@F+3c0?K#@&QC5l%ug -zMpBzkSY*rA)ENEpve)&<7Y9rV|(!GXC7h6dTjB -zZc|f-oN9S7K(2^TkQ$TnnVK9P61WLpZ>J -z6rsXBLi-;}2<*LnqA85g%^QJb;;u7|bfx?>-^Hz!;1iloP@Zn=-QXGo`klUOKDQCI -z%4la1xOcsjCNRkaTp%(z`M|Hu(|RTGL6o)nqB3M}DSY_L39I-kdg>kH103)1iBGD+qOz?CAor -z%k+L^IKCY*xttLeZC8}2cCcK4xC7L}djNb0s#rOcNE)b4_|na-Mp=< -z0ygp$>9xCZ%^|X{zF$>W%*LBviqqf+>B3WOUZy$^5$V#NAr;i#pA<`ue}!2+8P&cA -zXf7(L)V8NHKcg0hGTbpIv{W*One&?FeLPVNXkh;^j1X}vs(l6dcA8R|aRbPZ#Y&a8 -zU<6kH*rZKob%TtQ&<2l9#){mUK_9f&5X?H-){5Gs+3;=q@tF_w2+out+If-%>?EdC=4*6c3+WOgtQ-*1~D227a-+YsVYOC -zLQyCQ?CM$`}P;KYroUdkyZD`2q)p~St -z>S)R9!lX5NvlfJXMX~&s-lzYheI#WD67E51)V3@6I4ThhjaR%cgcKy~gIj -z=~X0K^j!c3CwD25jflve)jHqF;cbymfMZ1ucQOcEVy3s*1ZFfcaE)wPUE8R&To!9P -z1qI^?vc}v401_4;df(|q;n$7T9eT=;m!<9$yteGONn8dtP*J#gOO>nilX*FZ`S-7{ -z>S(lWbqEtl2r1s8l{Y#-getY=f!0kj-dpozKN0`4cu}>6FE#6@6Lud`S@4o9#50A7 -zoH4qtgLO?F9lbZeod_BNSue(zUPs%&D00+hc9ES7iJPz-D)Mi%pjUpubsU}Z+ycsO -z1Xx^+&IA%3okEN%W!^Vz1~+U2aBtuC)so -z4h$;u?~L@eUB8h&M^tJP*;{^mHvYZ1As+a69r#`jfURu0T&0N*nuy2zpMx2tDu0F? -zN?-m850t+`QV_g+b9eb3XwKdA@gHN~|6}asE=l@q4CH^EAt*?4lmDFT!JqHnzP}EA -z{O5_^|6`OBDaTMeloV`~C-Df({?Rwr4`5aNdC@%l@&7V@z2T`{KVAp^IOB3GaR$WF -z%4Ly9%eS_W2qT+;B!U2%<*O`x+@rMA%R@cf-M@ePSzHdxcdsXTn0LZ1^&g|JH^l!%F;IB93{!mi -z{g1tm4-S+_zK-rO$vn2y{Y_EKxyJMg{G?$FQggJor8bg`y7x~lAS7cU{e5hjZbXQF -z=3W^!Ww_`IQH6x;kP1ep0*`wmhcuF{YAJ4U>^2ETqUBW0L$bTfHcJI63)=#BG85Gj -zndGKm2La_cFv|3~Z&x6B1g2)k?H7u`yq;vk-rc5fQ#HsD*5LoG;S+%o$jHz+^eKem -zs!*%-_&m&K3mhd}&BW#a6Fbt!GYrRs#shGEz=Fc3fWsL%m( -z7~3}7ILYRCAnOWIJ^M*z2@%{Xdg)7GB8zZGP{+??UNPpM70@bB5icvUxZVA3*~rLw -zBy!#nscsG+9bGYx$QTmP&^NW_xem4{qw<1?qf3j;$L9D{qPTB=U#$Ca+yYs~SCb#0 -ze57#5Um@jaMa>H;7SvPX+lLp-(Ni*2CtIUndjrS09KZ@9?@DWnQ+|Riych?LF`&fW -zKmLT5#A}^>N=-~$Le_H70KR&GD#4^6O0+4rhj-r4v@3p))`_DAssY~FW8M;VEC&e- -zl1AU*J%RT`j(ZN~w^~e#FrBmk8_G2sp8Pl3(k{(5+hXi0zx!Bo+D=%t+VG`k0K6Ox -z7aH38+r%!)ddZLL1$9_IB~RBR1Ui%=e4@i3{lj8D+$A2^DzDR4j!3+(962!cBO0um -z+XQf>#1%whJ}stupj+TJ**abhCSCsS5a$5<3)WxR^{{+z;r;UgawIfcMnH-JrTthk -zA1OyCfcf9#!<)X$qo{2ziUW`dLE?T{4nr{i_TwAkaoj&RlnY$*lt@$F*s4wmTIMFb -z0a?OwKD2!r#6f8T=c4%czZu*G;=*wTLd!K7J5m~21l%f7Z`kOuG?w{hK&jRew%nh^KS@`z>Lt#)&Nf1n^n@z}U@>k0+!eF99?L+KHJnso`ojjI_FMev5L=ni9RYS`GKWT`lE9lm53AYa>*s@^$ -zH>3?SE>SNHd~bM)-)Jg#@%_VuyI0_{OQj4_KV)YDI3%enMl>axc}D}Dg|apjerrF) -z$ehBH-Piwo-|%Cb0Zz~7pAIztbRx5?dv2qp#pQbA^(eH6fQ -zV66{}bm=3+35Y&hrob$uYomgmQ5N6oT5^+B=qio+GHSi2wfA{cZp<6J-cedz0I`MM -zGlFi$@&ZIwTh%a -zUdu|xmjT*3*Ma@@8e~9{*M0@wK$+F9J;Gq608*u9mohBBYv};4M -z5#6rnU4SRC*r3d?e7>P_2eb<2*_etc3{8Z!krcozTdo|BB3C#{RwfU^44(qTZfrS0 -zVK!`a^lnPM)YXyLl|h9LHS25Z0)TQtbXZ?&3*)&+&1|1;n$n47klJ9Pxz@H7P-b%_ -zu!;Y3*^>ZvOz78?tLdNjpBX8?LNlSy;)SFZgx8+PRWp_eD3>Q2W6?$vOqO1(S1naR -zn*^?OBT2iZk$dn`|KNJ^Z4wfZ3zP6E0_a}n74T36r8*51;LMJ+q2IssZ;%DnKJRCY -zp#M-9qey$h`q-U;Y0D{hL>IJ?LXA41VofIF(%l}4d`M$fi+%ccdxRVc?_Zv#<&vIT0Tr)jpUiZ~3UC6(pdUHgYY -z`G{)?lJ!it0Kb)&2AjfN3$J6&m`zo`knHq!7bJ3Nd(&!qK1Z4JY6LeAOB*=_Md=Wx -zynuD+Nbi7eSVqxF&2Dc-1Ael@0wb5ptxycE^4&EphZ~J@nH*4btLr+f=*4dj6r$o4 -z-!2bHhTkR=q8y-k87OSo>f6!lg^&p42$p=MJQuwcqB_ovn=rIB#A#3y!nIw)62P16;wGebiWXryHoC3qMf9@wVk0)@9i -zepY@W8rV?&zV+ns`LYhGu2Ch9L;Wh*jbkoCSRw -z$OzEnIzd_qo?NDh2IAFW0M#%IfgvU3k~*}ru)h*70!^p2@^(~0kX0Zwqv?ChlIGxB -z_7AYR9q@$PV?=O=SXazg;S6LfrSZfp>(32Fhq8Ke6k4(EK=A!sT$sH;2TON^I -zItiDsF-n>-=b%yg0eFh*MQBUov`^A#Tc2ln3|TIe^Eg$cOE_gaFUG6^aW^Jy!N)L~ -z4Im|H((N)gNn(;Q{pK6g-~z5MxR>>+qgqRJ^Z)pa8<+<3&e=5&^|4z_*oG`NN)9P#i-Q>u+^yVzVDhrXlpvxU{NJm= -zR7~-m+YR1DD3z}+K4`a@`jnwkRM#ux>auvb4&+q<%mG@3w_=3cZ?O7p<bb-+unmfwel7L`-n -z3dY}%Pv{B--NXZQVgI4=^pgf5FU#mRsNx!j{B@E~BgtrHcZY=W{CWYqXp@c+75v2v -z`%a~!9Dyry-MJJ+2Nt(Q^4atV(ecaIizo6g(gaa;Iw;Kp9V$vOu3I{*Y>?XW$iG0$ -zcwQ7Hup)V_HJ5en8qNp3% -zklq(+4HxFQ>ae6{#$dt1da)z)-4q5!mtyb?bzWByKvbTnAf8vyuncY}0Hb -z;7u>tR$1903{LN8)V_UDfM%G!xFPZ(8w~~`MOG4$tJf{tJs4SN&l0X21`L*F0}>%Y^7T&f8H){R>#V=X&x!@Wo4w?1TwNfcsJJh1|%Wid(78g -z+>q}PrUxDgB$Y{QN-b#dtDypPn=T1}dg(N(++vt7yD27Orgy!^1uvpp>b;~Y#jqo-RTwux81>7#UD09X-U2&#M*~ -zA$z!y9^PCRRn4U+9b4Ol{3a?({Nm`Q5_tnBYa;r4zpbr|SRn#`speIdZuCr#P|++lOYAZCGK5R2)VN_6EhHkkur -zWT1ARnsZ2RG*_RKypEZ+pSzHsPqZ|vBR?-qt%70a>7=ol<1xwFgB8G`t0}Cj!KBiy -z&KcU34!2&;F*pVqI%QGmLr9a*dh!@=Rcr6X$w#;-;;BL%ffkI`4a>Ro^iwVCw3waA -zSF|Tyb|c&x7z6AXCpH_+2VNh5fuSOf1u`x!v -zw%Dn8G(Q^5tePG+mcI^FXz=Np^dU4p-*mY|JJ%e-VJAv<|t;;#Zz<{?ocsKIm|7A03ya20Mb -zSTOP3E-QjZvV`Zui)zvlp0%MkNsYEVpl=|3hYTf)%L-(}=Y?wp30ZBzer!_;oXHVy -z2)h!xg-8HpR3B`}bRhg=ESdDrKW+@F^;QFvewp;-K?gtT_-h -zA9ulAm>*YR5fRWi?N8b@FWV-Pc$9#8u~ta|H}3KX@~j*>C=EVR%|3#PTF)Yv*)%W* -z?^O-bDx%v!sclx|(BoUYNUX)x0RT{?XoE4A=M4BWFHs2qOmwKcC?pS$#bazV9FQ{D -zkhx2+a|T#|5^2#9`1tlPOuPizo-tK@J)lfUH01m7aCo#eog3AF#hDbe18~WDQ58JE -zQZda0Em*|f#|1`c4mm9Si8!K@WJEdZOTcC>C|YQMaT}%tMWB0)AB!eS!fNAsJq}K -z(-;{Iw2kQ{s3H6^#28%nyY`#7#~9`^>0D#KlPzWa!=&oN-Wn>iC=QDfl)#OpV_{=O -z0%P@G@Jfy2pp=5ZU3qcd!99@Q#f50MJ>u#5S4p@*l{Bv|k&KpePwQ>0vX(-rfx2O=?(jw> -zxXCq$pM@v74Pc{;!{ur)Pc5A_S|2ixzQ+EyIOW&P^^$)?;ET~@6%}I_qgMK#=`$eM -z;<~Tbp?79In8gq_1x&$fVWobUECwFn-iWK9-(Xg`i-jtU`?3A>ZOffOIvV$lR*Xg) -zWL0tG_!`Nw-N96xhI@{7{VDxjP9ds`B|)Xf0D!-oFkT|bW}f7E#{i@K8oK93E;7A4 -zB90oM^%D_11ro)(<(kGsoCb#L;oGrIN$fX>IOLCLu6Q<3q*04zzyP)jlZqpPb*ZG)kmc>uGtN8h2L -zg=!Dt<;v9vr3%pZQ1&myPT5#-hN?#iqdG9sWZC|z3}d!18~ -z7RV#y05)pe0KHWH_TrAmLs`F>4N0>u`GhDNwTQT4RDbJoDHep0woKX;5CSA`$o{!5 -zn-!F+7OF^g1b?t2NpXFCbm>hmwjo0$v&_*V6d52>+F)3?ZJl&|m0#%9$70aFu81FD -zV5QYU+a%`>bmEvUIoERGd&t7s;Z%_lrx&NPe=wR!Ep`B7Y+6_tx~xYGWRHjsb-MV+ -zU))kYPW5j(L=K1AZPqTjhyB=IwcS3~3MU3$w>h!c2C!U}!etGwq1_#w#I!|kS)}gk -z;pJKNHaOtNta`;sz$)_~i*=0g!h;6@$fURVK>PlMfDGw$ypx;~mdO_zsCXJ+4wCs- -z%+1|$=*gO~iJIo}kRylNHBiri3gmEU-Ar*vodJ-p`6L|0mKNj}k_vj$I!fOxNcSGh -zV06j-KLA8_(*mX&Z1&Y)9g&w?^(H~OYpj3|5}{p@F?^t`V>atCMfqg-GQdlLW`n_B -z>{m`$p88q~?fw7?!f4#bkH#DCD~UxhfVawQ7I9S@(||J8mI=E@@AmCj%n*G5NEO|y -zIabO;_vFb!_xPFZa1?{7Jq`2h6POn&)W -z7svMZV>pV{1Zv`qP50VR{~k+v@sC}pEgyGM6v*<})ZG~YRQ^6SL=S072b$TzEk*a_uvE(rbc;|F7Vy))DAxIu5nukghv^V9HT -zB-NG$FoUMj{2g3upJTS*?65X`9Heu21Pz9ugA0m}vBFw7cR(kbTAE_zTB~uR|EF#G -z1o*}-z~&j9v|FD(b7C>lMxw+bTdW7TPmXD(D(^n-54(Kes!hkDnmD8qc|Zk -z1TtH`DWmGA18Wg$2j5&#G8ophNuX}pp~2|3fKAcR?#T!oBdWDEXy~@urGT=Uc5g?= -zPrL;tlbZbRdVZS=S2~U;ht?L45-I0cx7<_qXFCuKxbU=HF<;Vys|WHrqgA^OmIL0~ -zA3+J&#p-$2J-w6X!+Aztui~y~QS@en?Wm-Ci!D?lIhc9%q1u7r!~r{^Bzg=!-HDDx -zqeCmueM6+8^5?{9bJ-p|tdzpAB(#6@E(f&NWIqAP+ -z;~I8>%!0fmUq8X6wTy;0x#+Sf4$&!>k7$KKaUSc*(w%#$Yk6S(BE45@IXE0F% -zVwPrxZvfmIG1V(nA$u>~ni`VMvWrI$?9Bk=+C*j&*-r9oPuaX=0F&m=NufSIcG|~> -z_6F11Ks#rSf})t-5Bm+qBEN1~HZ?r@7Bv~kP9A^zwW&O<8!}FW+)}`MmB)o4T4{+e -zXL{)P-vNyR^zWxXzKr_=A$oql0B{9#%cxQGyM%z~X_}DQh0Mcr?2G4h_5ib3BeoBN -zFIb82^GP?sB1|P4*(!N8G3IIA%xSkEZg-=#xpwERJ%9!;ANis)i=}U{WCi;j%yXBb -z8JTghiAd{U`>P(Ir_I$}f*DAXq$1Cvq4gUhVos9d029eABfubr6clH_{{K_M2ovbB -zewnyzy!FHJvhWTxgoQzemZ|XsM!Gk0`2WBXa0dgXvlL^FSIBp41QZ-agF^C&JW@Fv -zGKIrHDq+IrUry&%C9q2@d$=UmQm|vfpA?B)hM=2rz($Ryg(vxjqe5z#^ -z2L4APwc{=y*I+DEN1nAcB6 -zOkY2508M7B%QbYL$ZB}CH)Att2U-c3lr|Cy*fPjaD{xrc9ofI@V&Fv;D|ql8tVO9q6%Nhtzot!*{9*Tpav{OBrqrUgptS0Ahf&G)?)^c -z!i9X>`-GoABlC{FPoW^20C8oDQ-}e@fbi?V(T&1Pk0_QU$JRUa83ToGgGd;9M+>~s -z-x;|mrv}fm8qCJjE5sp7LreKht_qtr)II+szRQ^YBw?6SE$M1{7sv~$Cm;FRH^n?vfNvLu95fAOvnkBKlaU7)VR8&1!5co>n%N2BKMd{k -zzJMpjOsvYbj%^#b4m3`aCP2wuX-uGlh+9{;PEMPJ_1{-yhz8wh0QPEP@rp==F9tr0 -zF!XGFSF{=#YcqcTFj@|BTUSVHhQhkGf{@y!ZDMquiLH|t2~&3FFc2V4X&s$Bh1JGE -z6kV*}ticW_2gfF`+|n&Ne;$dbnj6zyLi^-jWU}M!NC7!+;fKNy^0rAic4}#Zre%JDG**THL> -zwVKaQJaanofCt~n8OLM!JqjQ-^TkZS!A)$~?Xhj33@|C6&LDdKKcx4OzS^S{sc&Du5udZc-MIxG03QC|2+TL)%#& -zU$x;yh>9k3lX;{K?Jj?((N*%2urZA078O6DU%3>#-#JnsL%M;7j$j@))s1k3Obo~ -zP4eDu`N5sK;<~}VB@J{dI5-g%oO=CbG;^N`*a7a?Z89cECLne@vjkvq#En%hR_jK7 -zJ6(rCzkv_e#H%OFjs96pzDfQu2er9>Sd2$zZDtF3_t<~H0A+Jxdy~-!Dm6m`fb)Qg -z!X5HoZ3xmo+|){2po*4iSVI+oQDH61x^lLexh!SN18jKlsDU=kHG!()4XDYZ?J3n@ -zk1Ez`IBuN7e*3~%#bYs9E+`^pVGembQ$)M -zPvC-fXaRX)com}4%39|LRv?)+EswWX_-_krqFn* -zv88P}_BrI-qv$5TY~scS614q6&Q&HNj|lVJG9tM!901r^;aU#nsRRKj2ZWgC0zQuy -z5nkSk-1eLkXQL+xUV|}An#5@!yPZ23L -zw2#W~I`WO0f*%N9Njnb7lG(HcUPOO%mNvGcvdK>dZ$oOPbBFMmlYPQqobs#W*3<)? -znQCG2RSg#7RC2PQ9HN1`3P6*BK$F3MKM#DtgRB)XkLsC}PZC2pNw^1kF4rddM_7Y6yRoX+GS8jszZeVZ0OAw}>%=&!zzIc)aF)^x -zo?2GphgJ!re#o?j@;TC63Fw~nL&m8?rY&6*vR&ZE -zL27WV=3%~@^y{!{$=(Mu41exZ>!JYi$J0H_&iTNvAZCHq}9TaiWcJaA?nnUU*%xH~5(5 -zl(V3n9-jRTCe2l?6M{&hG~3u67@2vblK19)QbrVeN}+tLN@8 -z6TBvx{KOg10y%(dHa#b{;L6KmS_)(iF&hKQ$?RsvLN -z+c)oT1^>h_7a!05FlJQ71~0$5l_y%4{ryc$Zjyr*mP7hMH6}9uiXV6Euk?KAg>coO -z8E$T%9wTVFk)NEnXHeBng-K1$YsK~LdR6UFV&dtx^^C-?Mwc$J-5FaD>DrnW7*IBJ -zu3@lxE@dIhx$U%u8JnR0}^F=Dh -zOdx)Qp$#Y%66R4=JA;$mYI44UTKF9k=7227+pfkI$|X`@QD~8A?@6SoM@<@R;#38< -zy++^%9xHnLiI9jc|Muq5EmVj&iy0#<_<5Q=yYCy*C_nhIB -zVeyPpmAM<05n6ms)N7mqNes50~@nNKx0=Z%yUl5n>N^@Lp(|TaNke?b3|O8-xmY-22B5Hwe9w -z8af~n)o>5y;wGjQTjS&h1fwwIKFC|{hUC0L4uaDg^;#FyEe{R!k~+z-L2kJuL?IQ@ -zA|R&(?M_{7L=caMJSO>=4cF?*(ONqrf2(6?Td;OB$gR}`bM`4Ka!HNafM_9P9D9WlU`9%xzGn$x4j)Tln4%pK0dC{T5wwFslJp?hK%pPgjjoW -z!FF6}<_yY~jBa+bthK#EB62Ki*#PV<=2=ljQb}U6(7EJBjg^%)y`aR(-e(lb3RF@m -z3sB)TFGe0F)V8mLxAs19X54~qcfh?R=+NdSF90$zKeWY=*sVl635;Bs>XEpX_H -z>9$dmb1-d<&dtmo<+{HMAf~%1#i(rduQzBNKOLWDIxI2cMI$2f^qR=}w`Sv5>6bFp6twTo2i(9Bp3F)Hj^fX_?@6p=+)OdZYw0PRn3`3H+FO -zhcV(=l_F|A(-*~DM@#dwTdiC@oFd~Yt}ZF!-mE+%>LWVWnpQAh46#u3g3(Sj;Jwk6 -z)vrxBj^##WppYzxI&w1F_gJ&vzU -z`+P;|UoF!IjsJQVzpC3NvPZ0^Gp_K03gk1PJfB>u*1QWFiD(QFMZdLhek)K4SlORQ -zZdx6VYm#41r;%Zm3Tp~;nY -zph$9bNB)_-nTp;lY9pdPQ%GmSqW5UzXU}02G$67})Hv`U}lwhpi)ll8K^` -z+YB(+G?Osly2FmbU=zXz{ji1VVcQ1_(Rg}Z{vp0L!wJ)iSyQLS4(L^ld)FjK5y8{1 -zl3(7UmV#BF!LGgxW$XS2kIxjI-xh^#3XDA`HdKnh-d>fxT!F-0yS -z6MPC?Jl{Old`tySY#i1rfkkf@=u+QMa60Fd6`9Y^)9g(+--C>181yASI@1=U_8G4T}K%7 -zJkuRsPegZs*<4&@EP=*E&OvhGp1|MeiL%Nm>{6yO-1}n-h~jum -zWVed#bfkdtN33j7(mXq;ClvuRNPBJ1lZi^|xaQmohf@4R=CF$LHqbkXR_3(o)bjd4 -z4xeOaYP*titRv8Dw=nY!SNXyI?X&!LZ>7Q>lQ>^FDJuX(9yC$Z&nCnlVG4Xxzb9k%yzf@lP+j%`^kSs-yt-uKoaGuFiuP_vze -z2Hc(FI087D;+9(_(QYJsNO)Q8A&`dAsev4#NvVy^?L**SLE-WQfL0ZheTHGXAt=eJ -z9ce3pjd-Eu8M$)gEuerUs8jZUw7Mq;s%@c?-pKk1mgdE_%g1c9<@Sp>KQp+$T0?c- -zA)s&~t)5`McsJwIlwZ&S#g&nirBhVYzhwI%BiIa;-)#^B6k@Qt*Q6ZpE4R)S0P<99 -zL{3F><;yWk`=-U1>K^rxvEb3+h7XCm@NeD(no|p2nBwf?=(NcN_zFzZmYzT&#&`^8 -z&A4*6v@7{uAK?-3HZ=b?L?GXjA*3bkh~1BNN{P#l??0Af+zR!&g`pQp -zoy}g>?lr?>djB!MYGUN~u<{X|tuh}AYD%y!-QJ>j&>;kbTA|&Wv7!V#d{L1a9J^M2 -zD^3=11b{>iFa?!+c7%bU6{SF^^1SIYB9i+Grp7gcvgV%PK;|iTQ`=8$gI`d)m}|P2 -zyooC-E}2z+aRTX?O`Fe5&do6~&e;TS%~>3sEN?(Hs0> -zGDDB~$Dz^|HC$b9x`}If=?)L5b4xa?3>Yv;zn7rOm=KhRB6{m^eOs<5^P13ZQT8h{ -zY&$JKj!A=IOV=bReQ#mkJ|lEPz>u?8V2+b#{*)Sc*|XRXR~RUc^eW}mbQSV^EvB9E}3F(Q)y~P3y2jX(&l&V8V0MG7|G_Q`9ksjy$t4S -zWXc-p_&V{Zd&CjJjHUKT*n8_A`vjK-T?C;BonCq`!XyaMztTH5h0JeFDk?B=fI?>z -z+(CPx%fgJMre=d1;Y<8z}hJbtp;R1VYk8`226PW`L5cU;g;k}PiL;idN9^1 -z;8}GNxmMh2o6;`+n;C50v~o>9^(Cg;iRREXB@y`*UMq?!q_)8-B-5e9&15zniPbAP -zImxV$a*E({8$R~sY!RderEwPWs|#X@X{|}c3%SM^Zwtf4W9K6ncLUd@wPGSL!D%j5 -z5$(G;ho2y0Gz~Gfpd){&IQe8y9lzdy1UMHNT~~m|lH5d2vkOlx5*zk}IIz1}lcRH0 -z-#+9Ks_h@$_;aJ5x~l$577#c{K`FQw@Qsgl64Ci+R_*m(>&mjO`&%^%wrrZ2WBYT= -z|Hs%e{yEmJe~!^3{xQZCxUauE{5j_S<9gHApJOPN&6^c-(3|WbvnL0A`$#HD>qj1_ -z%}B04d<@d@R=4p62nMVHay!7T$ww->iUJPNkuQ)hTo9TK18wQ%k|MJIlRXAFhcK~i -zZmn!b+GboF{Z<>O&@taG$lOJ`hq&~7$PA=pc4Hvg0#b7d@@~V0Rb{R7SE>(+L3IBtFz9f-DJ8Eh~UgRHb -zZ5P$cTPCfJp}A-GoP72l-*x#9k4{0=`tkj5IVFC*f46%iPb_}Pe*5?RdmA-<+UrXi -zS~X9GRxQ%U>=(PtkD*Ri{JRLo(D7gP12|1`NpvR)qR?wW`tN$wKOValF*o(&=QrKM -zUY?VD0nH}>oX96OGeYkvSR|2;75J$b -z0AJgjkBxGsxJHAjPD5g)M^R^)KfB)3uldv7%}*$l;Ja8{y4dUTjDQrXTycBlrOO%P -zfuigR7)2=?x<)|5?~(j5W6i8O6{pivmoF_1F(y?O+kRfqEl!hUSAHl+9|u~j_qJ*$ -zeK+6UEt?7}p|@bPbQz|Ihf3JZl&+o2n*EAF#ewQBsrikOx*P -zVm**YEdtI;W?^fYKfX%|r_#c9h`yyamF#;T$l)5L$7~8_Gd<fT!xj(r&yDzE3BblHK0Xn6sxe75Tg8`yRFEIm(TYPxnT^S*r -z%z~A9G}1T4OzKL8DSvbS5my=V*HZXmi&4wMWnQY(Pl;C+m#|w^9=V5|w@6aljjC1} -zyz;DGtD8I9e<>kiT()X4+XSj1OeZG0V)lHyS -z$X%$y6GinZHA!(Ffe;xjCIyj!E!M4O7{Ky`C%XO -z3oAZG`xXEYEy5w24xZXrtk2P-oOTBp&PwmXJmC&VZ3^U$iWD_$LKLO*>BhLsL7Vi+ -zYXaxwpAte|#p2(&hs5uh@s;lPvpk;9Gqv7;l5GTRYS>did6=1{!%p7-(QL4c^U09B -z>*eDEc|AKo*PYe@*RK!vQf4&B^zW5((9>Qd)p2PU1#Tsc*0$+N3dm4LIqw$}ct -zW~<`UJSmt33Vb{FEJNo2WE??H4|=Y`XRX}V4!EWQ8k@7R23uOhqmA$GiV3MdqNa9< -zO#y2m)S!>O*vL|9UBKik27Xb=BXHG#4B-5Tv5PmuGSAkB;IWuPED5p?%sS`h{d`J923AWFJ2U%FTE=o9J -zN|G?JwUCJk{Im<;CgQ2(QtbDfWyxw$~b?vc{MqZQ?r -zxXluDxh}w{X|BsR&#xT7G#BjX9ci+SQAsZNm#D|>-L`4ve09_(XtFIbml07=-;8R3 -zj63@BE*aQtcx63DS5b@7%KSZEc;!tb07Id(DrHI_eO9{{L|jxFUj^sHB0mF}3UutB -zsKkt>T%Kht1-^h+MII$RbhyFp$a=!|{IW<9E4 -zSe1$l{;0QJf|HNd=~vr{Q?_D5KDsqIj+@0MhEu;iR!==`REpZiq@+M?SW#D9LR3HY -zO%thfb7C{Te=ms;-rrp+ym&mH)4Rkio~Q&AYSAE&1G#TtAk*Zqecv>d$>HD|E9U`< -z_@0VR=fmG)NnFZt>@1#80WwEx+{zqLiS2Em&5mrJ)guc}&c!YtY -zo7y)daWeA?m{TrXD2@F-&bjIS(4^{7!h)mRCLnb-m5&8GM`HyPNcs92pe@Vw -zDpM^ttC2vr4U?)xhp!BBm?TZsynjw=4G?Dv%#FlwJ8K699tp?fqs9jk#J?|@bOj~LB3U#x* -z<<**utmT8N6}jc2NJHGCM>>!T9%lYr3pb=a%kIMt8~+-<2~2KtDZYrq6%uC=d=#Am -zdi?QFfShyjWr%zsnGIFWX)8(F_3n(;AT|2;Z@KlVLSfAM!iso=hC8W^nl#o2hgCoy -zn1C_`hcq`8(-veb1sHTR4{R+%{m -zRiZvrtFr7_xQs}QQe8yopHa;KFo0S!255#u*wssso19Hz6@{LadphHm#3@{X5)9Xl -zR`7gst)MywPIQV1Ys&vCwoZ<^w(XhOGg*?}7gouKjh%R)pb+um@M=RecKS1I=)6sBo@M(SU -z^w`0sEp(gXQtLvCkS5}+pG1w!9NFrla!p>+{ArVV9Qjbe4(x6>As0*LJ)@J<$^@X# -zT42{;3PiT;_o91J?gfb4ovz3gp6V1+DEK7hzvq4^!xk7lH|bhU{dKfq%rX(`RXs*j -z1bS;OMFhG`rqFTaPPb~SXu62wswjZv_u-F^!ZXe0T_$MUK~OVx&2j%&CQ{mDCR6a)k{-BSmWm72FE8M@?H^X$L&&d)bSaxtsu#cP~dqIejab6H+N}5=h5)b2rKknu*5xiD62< -zZ2*a@PX0%qs&QnmN$z4TO5+5ru1PhV(%y-1UItG>=Dj&V<=JtL(`0Qz8;b{jW2Q;6 -zTFB5u(V~7r$uAQ#44SH9wZxf$wdB5S$kD;(--=LVU8Cp!5_NRbe8z*z+ky9E80!o- -zPy%AgB+{unLIf(*B?f>X+H45`SwN=0q9%5|4{NR%qutN>E)DRINuL^8yxY!uJgtL_ -z54m+&)&|LyAtV*NSVD;pv%QQ~9!q{P@I%-)zB4g{Nee8sO(flWy^#oAfjZ}`y_po` -z7cCSs+EJYZ_)jw4j%7_qChf=-=n$Z%`XD_l?n3{NnUI_5lC_=o)aZimc@T;waVs-6a*7Y-9H)on))?2mgXkfCw1YF?;Tuw5hnFUU% -zVc?JG#}Ag9dZ4T1VFXLe=S$b&CV$l27JmPDDG29gLGC)%nL(=`++=y@KxPsRC9DBL -zi@Wgkx+I=66^&F7+&L%#&~cQsvb(A_9sf;kV`g5&eWMj|Iy%}5>IZZ&wcU}EI!5!^ -z4~Bz$Y^Y9EgCo+^>V)#Z|J{&PX1AC9*3O$&PklAZjC<}@>qUV|~ztx$|bxg9f! -z6%HU0JOw3!)U6aH$@Kgp+4YD7YNAfI32YLnBzNH5W|Gpma+S3R%{emx>t6GodvE=Kb6GxXpRo)^f#Q|5OIkLxEgKuK@i|_-_3M%H>CD13cimw{ -ztIXAra056mm;8sm()r -zqP-q8GOLQp!Ec>@*0x{a-W{Rr0PSh(iCuE1HxX2KlgYiF&7o$>oTCFpRadtjl{jy* -zuorqCTh9$aavTTWIMQ?b{r4worx2V{>EIs9NGrDb2jUi+RV&ka(s)TCKxc!tu2=Ct -ziuf_tmPqZjM)i3ltdm5ni^AJHSX7}XBUNcW%CH_67e(scKmOB37VNsDa&}%rTal0}wWEOkHSuA)W)`z^s -zta+sJv$o=JW72_Ev8_xY*1g(1#b7)^wO3HW1KckERCeY_1SNBM5hxa*d;#Rtge%&? -z{J0r{s~8n-{tA9S^_OKcGsfyyzKc*PF&~3+h7-07v&`_1q4gH3Xiyz_RBk=!4OLb* -z`Tp(Ow^d|_{)trqko)`y@9*EgX{7%B{nxMZlaC+U!oeTD*2m9U%lZ)K(Ni`CKPYiY -zFBkv#@ooDmkAHrXd-#wq@|C}T`&Jj{eE<3Fc}x2E`_G^H67aR}|9tyqj?MQi@YjFb -zS|xEy>xW_ -zj9X#QJER~WdNK{<5Fz=wQ{fV#O^fWz2b<(}7XxWJzVgV;qyk)_TwBn(jy`E!RjJl% -z9beFNASZO~fIROxSCO%TY!uQujd9DDy<0B+apmJpU03W*60_Z53?x$3nhF5PYdFy6 -zgQ_J2>S?bxhhPKnP0#Fca7K?jwc?s&tRO#bd)cA1G8|KJ291z82U~J4OMMC{kctRt -zj80|WLk{<_l@CCw&!-Aphmf5R?iHux!4!37e96tVOlc80L|!f&>mx$=6>Uv*dcpg> -zoXq`BkDhD*cQm2g7C3hA#bxO@mH`(G{QJE;VOwkaYYX0g#pLgzSRNEJt~?!~G&-YH -z0bCDJ3_QsY-x5a#a|@QA_T-M+r~i8yQ}zCH6u6{(3E|PJu+~|JZa@t*THwE&a(_ -z>vv5s3+dQ)(9)R_&?NL=sTKF#wU*UF*(@+oLLw04LR#{Q8*^@GfOb{+paC@Eq=Xdo -z7InAr4pG3!oLd^y&6a0P#=az&TTKte%A~(G^2(>`s=jH|5Oc66(9aYu5v(eH`SnIp -zM$h^J{&SZ$pAEcz3)Fv*jz@6v^7SgKe#MT?Z|F3=&Ty`D$inDKwXTZt8ac>F9UAh{yeMR|N3*VctRU0 -z^h6CFTV&(y2o3s|uYgnhFEO+DZ{^M*c@03`X*yDtA7eJhthCrXck_+Dm!y@Ph_Uik -zah%o?cX(@r4jrx>eRFA;BR!Wd!=JeO)j|L~vMp!x@+2#ZJ?8ael4R{_r*U#nb5({l -z|6n5(_XOOW`EtFD=F{b#3&*Uj>}!(AI2wu3Uf$}?N;8GTYIma8t-NZrl0_v`T&>^L -z^sUeUx@2!5Dvs -zYq;0z@$_lvtSmywN9d}pj^fTSxLfvB13Fy#S-1ej@QdW5Px`~r|852JIWU79sD#T$ -zTjS&z&&hOl9xCr@NqDC^wK=ozd -zsJ?gU&mSVu@aNy(zNx&#ky|I_LghoYB+bUrF|VMU_?uxegIe+!2xGn$iVC=@Te_QQ -zV9OuwE?7*654m5!u0l4Ov;IXsPA%{_0^gxs@~cY2sKj3ddZ{L7N5o43fQ5EitGbU( -zDc-bRK3RHc0Q`dMls^b&#xW!(lE#-McwNa!J8-W$CmtmlK}XCJBu7Z@lyU*?Iq>L89hnAS -zrxQCb-}HL_$u3_|_N8kAZ+ad=%yxl~dY>IzIvv>?)KV7C#kGYjP_GJPPW` -zt*Md4`Qw8x#NIT&Ai;)~%nz0>)~%67N28sTA;pN#1LWS+X~3XqGi=G&O6e`hPGIRFfI<6@j*o_X|b+Vrmp -z#ptR9WaK~0ZA6S;*R*F?45_sDr5+|D1~8VpNlU56lrfTZDHrN{CTMWKJ)Gy#m(zhS -zZ5tbFggRsS%r>T1;$?BUfUJ{HtOHb_pqBe8?C5=tw6StPg$CkU3Jn=3EMAH3-x7te -zzsDb4ae;f>kJ)$&>8K2L`L7$9VEX4$ns)7NKbP$O%VF{HUknZaLDl}Hg>U*n;WM}Y -zB>RrDy`1X1k^qpZU_ -z^sqctARl~9S*13-u8#Ioi}1=H`&`RMlS;sCQM~W*#7}5tw;o;GMjG2uCRk~nt)1>t -zdNJkRH`EMWCIkZ)51L2H8x9X2nHJ3s`4YB`(wE9< -zz~KSnh~g&JrrT|O<4AH_89_#3d{?E6L20*Dwv)Blk+EQ8G#r3dG=RVB@&Nnw8poOn -zq3Ce2(5D=(x2-%nI;0CT7IaH)^%kDs!kCrGr9IZOy#Dj{?bqe_ugg&p^X)#w`RYh0 -z7hAFW$8;Rj+ZOGfrWcDDUQA1dylvU>}MMfvoE@b#s}M>oFzb8$wy -z(G~lu8_T#uH{G~|MgAr&TnJ7%M&XT}`?Bh~358Tco^A%`UV)5&PL1M9^Z|AnkAQL@wHYbzLrlsM?3<)K9|mIbIAg9lHDqkCbnd+~(q;x9>m8IoQ5d -z`(r~EN^X94Wu&v)3q!lxbB%b1nu9JU`}&WP_NS+v1cglwdSgY(Xle52tpQ;87Rwk+ -zkH`&KwE35Mms59rgS0BD$%@ap7LDt@a&cRaKCV7?mu6o-h4O23OQ+#BW5+Q;Y5u7Q -zMxWw*^q_hYLzT@aHw^cT0KD~9>(9BRYb2kC>S}%e__^kD=mc-xFb^z&mrePLfZG5t -z!^;@`S`#07Z4`jq$`jVh4a)PwQMU6L3&^r~({)mXxnfo1AHeDS~`apon$%ulCeT7nP`*7WM! -zqI5K2%+?eAUHp2OjLUCJBq9I@ZmN$gz^L#$*m`H6&+@-VwTe7$vpb~We^stB39B+C{sr`E}n95 -zryKq-j)(T^#krLc^=^mY%H=|bo$OiqYm3Kt`K%t+V@}gP&}Kz5=Xz-=pvP#)7!4PP -zZ$K$N+4zkem7k4;!~}!9E8p#~BTr#ByH5?h+3&x~SFtCh$beFMsNeo-^{e{&V*@g_ -zs39R+6X_dV;^R2VS1erC^*cGWVb!mZ+*!#on+xx4Q34#GbAV~N`bs{8)@KwIKAy$T&=+Ge*7p1&35go44YefI2A -z=3=7B1d7$@@2IjZe@H(tgK9#Uxit=3%Y+s0e{x@y%K@IrJsVegB{Fbjsgc3&uV;P# -zue1It<{O8l@5>|GQUoY?B-d_DK+*BJ9%5>~%;}l{4|<@3U%~ged!9VqvG65rup9k# -zu%~Gg7dQ>kBBGh@lmQ6E&}Eew2#-Pse05X_Z#K4;x&b+(5Bm$y<-1eLo5yIqeqrB^ -z3hSm6cGGYP2~0x~g`cMKc{m`7R4U9TJsaEZT3#bV5|6V1T0kL`S85RI4dcrYhd-}l -z>nyol8{qUPQl4u90-;g#vbKq=o^iTk3R6h$Us_|p>i8q-v(?VR;ueCL8I -zyRH_oHrJON4$x9M-({wx%KKeygpw8eKcry!u?jr9h~%E_BD$;eh|9{MqyGDnYFI5J> -zmL(jEIGT`Xip2o-b}1_6h?G>)20TKB&aqi+c}Ai-=Uiss`D=mQ42m>8=?jcHckDXF>EJghx55PG`NmbsfT4-y_OkZ9O -zRWKOeH5SW5xmcK{%@sI-%{GH=B3m~2isuvEILq_ -zj|*Gs#biVD`hSlAV%q&>T#B>Hm$nwBG%d@K43@IRUq&)z9EwMz)hFiU)qvcUN(Z6Ik{_6^> -z;@?OfOEJMHprtvpRJ#P8lTmU@boc+7`GmbSbUh -zOG|70Zsx%HS9!_5UcdEMp;6X<(z{sQbkU!5tW{K{V@sni!8S>P6fZ;u*iF;p<)X3W -zxV(unp-4{EkAiHZ{`p=$V=XKwm`L=1O|kV~HSl^j&ZN)0gm#4WccaJAq~?Pg^?KJb(w#Yel3=_h2yl4X{&bdjr@z^S;1s7 -z7aN&$KzWlzC~qB$5F4~gHySODluDuIH-TaRG=E#;d8y4`V{FT^E;`phG2^&Sktd3~14 -zkt6j*N=uH5*GB`zfpgWbkFWH1x%P2P&nRyP2RR!I@IWZb@JGIc0=x|~U4t-p-WQk-eN$5iXbcL%fjFAa0Cty$a$4$CTb87T4|n@1RD -z1NE&;nNNid`m12znE?_vc6PhL&tNpvt+Ry@&^=8Al(yDsZbP_e_iZ>+!5$xvq`ot* -z_r|oF$Qu6@j84kpYU5>2Co)&aWjD^54ebZ0aBYn+QAW`!de6v?v?$4GGM$wV -zi=V+*WFD37Iw~IQ%i$&cT@3%nH;V_Ov4wuOe4bd>m)k(HE0pQt%ZPo6e*E&@n9bO> -zGH@6Ha+Mm-IbM;;+xYNdzyo~r33U=8zN!t=H{Cacf{kP3U_wt`g~VtIFa;8ETOXvxj?$SJwD#wFGJ5`xWsF&Bm5G0(4DxjAh2wPz> -z$>GW5RMvETL(ggX4gh=sa;yyhPVd!KB=IbWm`1Ck=`6>9W6p5x!H;=p0X58?S)9|5 -z9izA;tt&Y!<5zpNZG|}6>pEJ0yPIxkyY93V2MM1!jcv|fW$ -zmjOE?w4uJ$=KI*l;`6}yRlGnx)(A80&e7d+Tf6^qoMC4W7i4MgC8Q&WgUGW38(ewZ -zM{_Ee)2|-N6X>7HEHE3B>dOwG?WvJe)Zm_R8`Hq$t3`aQfCpjxqA$Da#iilpU~JG_ -z_z66KngL<1-+$d4OagiAJ+G{ku?5T|a7@#F-g_*D%lA$wtRkMVgWWqdBMD`ei6TDw -zYKkWu4tUAvjMdQie#ySlQU3C5^%rSzZv&e6f$pClZ@iq>zHdB=iEACLlanv93GY4oKaK6ckXg7DD^cG!OB -zB#HiAZ1DT-+V6V*tE?5^GyZxi%lrMGm)^L$Lqo`}<=`^pJCdWtk_PK=(nXBOmj?H(u0)S$Q($n%-KA&Nd+{(TM9YcAHU3LLz?x>jN_wd{<#R>QM -zZ{?*TD{$Bl3!YybsXGW0&ud%@^;+dsX!&fxmGcFg@^(Gt9xoTT$NP_O`Byaa%}>hu -zU)=lqp8D$V`&aq5s+9XN)|YTBqg@mZ#r;wKeJsVP51yGzS04*9pdbueKE`X*uklUs -z;IUcO;o++y0Hfb)Cnhe}U4b=vY4$1y(y}w>XqUv -zrp2bmmm+loNyxcS8~Gf|v%*HMDsw*Q_17;gc*fD!kMzR6iaNQkGI9RJ5gA!Tf@L71 -zckB84+Sb1>paEa|&*JO*%8=!}#!ol7UdsY_l4KyCEyql+ysxK0`<-YDdt9b6P|Ov_S4!Ko=u@ho?o|j -z72)*fU-nlqDZjo=)^?d;c_x4#HK6qXp6lfpkUHhDu_8@M@(V;M+M%9{2fToPEx^ag -zu(+3j*AwXXF2{=)Z{&K<8c;x@IVGq8XoDULxiHy-xpx^wt*!favyU=Aq(Dm-94ZfR -zt&razOJwsJark-A*mOZyz>p|c)Dvu~jeLX`C=^tX_KXf!atGiu__^!M{2Ui>u|9M? -zl2*3@Hihn@ZDrl$k{^aUiDcB$+IRcQ2V*3SNS1tg6~_Lj-@G9!^Ey_d>ha)>ao=CC -zTi6}&*PlW=#@@sKyj?h*ToYP`xgve+x+7!f(1yUrHZlgcL^{_Nd_kFyGWC~{YBw->)d}>d?8)(= -z(Xjtg<_hqq>{uxm&ZwGuL&fZdWY|)F6FYg$W^q-Thw6Og5$@?VC -zSF{Pg^1=BP$^Jj3<{p3$ja3Nd3K9wp=&vt)H~NOKE$DNYljp>lvIIBSwr;fkX`C}g -zHg_B4o54unsN_(L_&`qBl(5BQh@0N>N%CXB1t`U-omc$g5XJ!@?b=ArU!6seCDI#~ -z#7y3^XFRM1wa4R-_6KGF5c-f=c?gWVsJ-$lqwVHfsmbR-0K=Dq2q`j<*Hr+KM4uJ* -zt2+>2bp|8WkkL%4?sBIs`z>8&aRi!13-=d70{Ck%gI<0@z{&U(zR2|nXvpUalG_Mo -zthvB!Bi+C^UMyi5ZjO<;1M{gQyEca8MPEPmg&(I4R{7cC;-yh_CQ)YoL8{(zB2;HOIBIjTpJ*h2|5ap|kM} -z=u;yu0BE~%QD9#8#G^z*|9c$|^WOJvx;`3O9AwoOw>o0oU3LvE^Tof&KAEZ2(T*r? -z6_6L`hzvhUOGD5i>4B%60vDU4QMY>=zH -zO>#Jl523{Z{%rZa4oF`9thhW~nMBTo?+*o2P^Eut44z{*E%?=bO*o9z@%3NZXyf4H -zm@QWEu(!CpzIhR3`}V5wGYEe%p*#26TwgGYz~qfy#FwaE9xvviqqV;2T)(_m)i&kY -zTDi5ZDTn;R6A8Acd`)=I?nMxiMi7d>R~ewxWa-tjg;3n$*87&#!RxH->x+<~n^=4) -zL^eMTVI3aK?)m3y#5?rm1t#XG9w6q+yJNkw&M(@7mQlRObq2_XD0Bzm>3Xhfh+FXx30z+Mj$Cgt#W?y^5oXMEj# -z6=Qb2{Mb4p(xvBdxXJN?y6!qIF8EWAkk^1d9RJ5B;OM?SYl!*o12D(df$!5_?uYgf -zH|@P_pblXi$GzSqt~WD(%3mi7#p}0VC$f!Jt{kT4o41#D{y+t{+{j$gR=!-3zRY;1 -z3B{JY1x6HleSUgnwBcXup@xJpgZ?ggD9*1#2vJ=WLJJV#^+mV0P&g}az^>YeV>*B6 -z2M%6f>MrNfqN+I)?^$}h+%0V|`oeUC^{VdRp=~c(5j-|qPBFJc8F?~{T}he{HQb+JK0#V -z?ypf1vQ7Jg7hkhvQgq%DC+1mrhF_*`qgCunf<4g|FalqqP#dEcT-*ghTmLJ#w-g@+PnAlI$|t6qhToa!RTt$K1k5C*EI{%mdA+q^?VY4#?i{ -z!3+De2dSp}x^7n~^#_1<`MBgRH(q_ID{Xr-!2v1l+;o?Jy2t6GVyr?18Ht9MO^g)) -z))8hEC?BKw55i~Oq-#(`Rm$!_SH7A?v{v-Gf6O~7JL3FeN!2lPGWG5pU$mZ-YGB!> -z=lOykkQN&wM#gTA*{%-?O@Sy@eYN=kT?~Y`%NykaAeLj{_PNed3;}DKNhf}UEjeB&|2&5 -z1R|(bDrmT4N}rO7%%>`0?-tU?Cwx%Hl36w? -z3C?{WdvKsbs9jMRe}smiYdo)uN`yXQi0< -zYo%GU%}Hc(=;N%suWq(q+Io#)KE^iaHObZ1Z#@2$NYxM~xuaoI{*qDoHy@8t*0G^J3G{k2aP1{V(0_4|mr`*hb5zX<+VAX}jXXUI{(7PQd!Fx0|&%1r+IxJ>hW3iyvJT14_@x9OUE{0-cR#8n9*Ld>3-NnT!r+(RFhH2JeGTWzoy*Hhd?zx$KyJt> -zJfRC=e(a4N#VDO%PAH`LhP))AcAZo$;Gtb&f`vI7TR~xyt^EF-uCw&Y*h2f-KT~ -z%6eJcI57!u;+Z0iVRZ1B?BznRtihaH{&-orVO9y&jjY` -zK6IbE8{UFyu`nwJ$myAH@@;E7+n+#zUc#4FeQooJ2SvV!d|Fwt@Sd2ih~8vD;efS_ -zlug`#0!t=z<9jVQVzMdw>2wRzR3Z$xap@J_H^QpM3gi{cP_;Fitf`R2vdxh8Je7^r -zSS{``ot=?%kdYjaAcXeZdr+agN%rQUVyOzxRGJ7fs<6!QX-ps;;N|Igl7ijux7Bk8 -zHn@yLDqs>CCd4pmOfnhtYM`ar-iFlc$Ii7SyjezZ9aZf7LnxPnFJjai+GdWT+t1-qD}s@!R<*k5`>clIIXC*P}uqg3I$e}LFe*QjSIG9^nl=3zNH*2>MF(drfiK8pdL3bJJP2^V(O8EhkGGHl{s -zXozcveYlNQFhy_w-(zz+|Lnu&j0^dNYdm#ge+Nm?8_g%lE)tbS@3wP;&kXY-0(3V<)@8rmfMJ|V^Uj;vbVl;38!vm-Uj1Iagfu?Qxz;O2df&Jy2Gkj2Dpy$$$vBK5Fs{$1ksUL)0%irVS}nmi -z0!<0_tCbs*YP^x76j2LD4?lFYFt1#^cKfp#o40 -zXl48H=ne=_K%pMwaE_4{HHqzQI%qM+goXyAA=kb95DBAVuiLl@O*zj&aQ1d=5VlJG -zw?Vp1`kGo^n10Ls<~x#b=y)@wu`?y*$Fd$m&gG;%wGj1hUhG?Y!Lpo$p=x2CYtrn)Sj}IR8*~kNcXbO&{^W -zo3gcHVFXmQU)=#vw^5nN;AI@(J(Jl;hCi5a`%%)hXIp|=|ow*{|y9v)A -z%a!y*Yb32<3ne}Ls{|a#NQ>f)LD7)i)T*tb3~^9P#~O`6ojv7r43_M4;J3?}Q*pE& -z4B5pd?^YTK{9-3s&b&sskmDn<43OnZFB^1}t?Kg;lr3PSRLEQM=5%Gv2mx7Mety!7 -zO8W9vZX=C@K50y_6#g<8-x)uEd-Y;t99Lwl$ -zcsZ=gxla`KY;xblP8dy=Y@pnAieNyujLoftDu}SdRHN(kv2&6Rl(!N5dSg#Rw8!ZG -z{`AKe4!}I0zP1F?tAb93fT=RggW6VK=got{OmP_KmTrw|%7xCnIl=p;DY%WaHNXW+ -z->r_OIVUY7r?ql}cJqgU+u@zvO#1O_BR;2s2>ulP*ttBEKpjeazPwXwET?i -zmPG^;zH=CI&Skdr1_qSnvodfaJq&WeC_zNM)?sTMM2JYanJ<7Ml-L=f#o(%Q3_csk -zHcgFUW|QiM${4L9KYi|Y2O1ObX3oCnM3OVq<QZ7v_k>YE?yvd7teiXhlNI5O6)tVDef`KN-&DH}aU-&z!ob}sxf -z5&?5O*@?goMC;so4}e|~-mCq%!Qg;zexkDvOLNiXgF6W`2i0T%KS<`?^A3t=>7T%a -z2V-?*O4b@dP;Q2RG@==biJXjuf9~tuNkh3C?V1JXiKFXTJ=X{_qi%KHC*vXe_z7lH -zsAyxYI8Y(!_|@sH*^X}x3nNSj`?#TZf-Nfqg=7;zjI8V~}}DKOkpw10A6aG1>c1`!O+Ykqr7#R>&M7a`q@ -z;J@GgkxdE^3Ik#~*3?xZeDPyrA$oE=fjaArJ@4Hh!R{WY@$}k2pln?5pek1I`&l`n -zS#fF94{l -zC&|1HoaMDp-m0sYVxix^lt)PKvQd8t_L -zCf;_W#yp^&(RP}H_UvL|cHzZ=m85b$ZqX=)Y44(MY|;qf;Dm-1IEr4_)u-OoNe;8k -zwO+tu{vxABF3H~4gxWLu@PeE(2TyjDSM8L({`DihF?u`P%7SK(3oUnFEv99G<+k6P -zUflyah}^MyKQt7!(=s1gS_s=|9SzK(|hg)uDM)V|fS6Ku!r^xoNpwH{j -z>N@dDXps>(Va7_pNx}=d;RiH*ImAgme|`OhuaN=F{lxGZ`7$+c(a&Gs{=p$V!McVS -ze}(}opVZmRxer>vyi9aC(w^DxVuX>~#cPwk%h4=UVDDVA!@odI2`@g}3yx>k06&2R -z@^&X<11}cqne0OTcm>vv=i4e)C#c%UFyQsaP4;zIEX)J2p|qE`ecNIMw|{al0RmEY -zAYV(w?u+l)fTK_T-AQA^5su;~%MS(+&|*7;jjQzU_~RAhYUVCodWspxpW&nrU-XH+ -zM!M!P(aZ5;fC%8v%;BObl{h3^1P_3>Ktc@6UMZe>r}^w~J4_$R6Up6ci|S}UAZjRr -z8|Q<}j1(9CTPyAT5C;JyWHlosvw|+eUvdj4Ltt!ZEV`b^-J6&?UR_7BYpdN5C}tSK -zoLFL;wpPbeOCvQqK7MeFx>eNFkDkos-X)j_=qD1u+#p1Il1$YLCYt;ZNO%&Q60Wm& -zmuyuqnxWK)thL=DlMo>HAF5-(+{enZXW7NAV01)#18HT4TqsRu{OGiPn>MZufFm74%1xM9@ae(Q -zm$Zpy)#)AYYP9mIgx;eUN@vk)QMKfH-OTck<66X`paba`-y!up$9b3V5mGO3yTel3gfwkuBuU1-she+z2%M&#z#XNRw#)(?&8PItVk@_ -zMzqe?8gFmnC#R{~W}h-p@S9Z?-pG!D7c2GSf&x(+As(q^X+hxQXE$Np;vd>|0qh-q -zWgl4`2f8y@|FVw;zyh!@B}s|ST>v1u?M}Bknf3ARMf^&WZCIkh4*U!2+rdj)dos#l -z38+w(KV83tJ9c8PD2a=RTxi2KqG~(eiKW@r7O}tA?^nav79`tn1Xu~q)4XW8k8@9JpKYgJzlhOl^%jk^pQfO_F)cO)~eIAB9xFXeZnCES!laAb4;)CM&A -z^G6YveEv!&l&N_fH^xcy{QO3)lbmCCq -zkaRNSxc67nO0eZOi+M~Wz{7CU$MOSh35QB2j{5i;U!2~t*d>;a`2Dv{Cw3A>WtxVm -z+r!86c>Q*?~XaWS8sJ;nsd`5ge4{t*8BRq -zI~;iv00E%~7aO+SXU!n1vj+p2MCdhYY2pM;uW=CskS3ac`9N+78fW!!H=Rr?k0dFa -zae9cSyw=_QezFOawhAp8Xw|jxoDY)0eg`z>)J5q+L~}l^v|oS!P#HsZ?BJ~Vc2OL+ -zj!a5q!(q9in;V1!HdSJGA>J;hlE@XmYX$jFYt+atJ^V1 -zkPKMAWQ*WWgyhAZrsXK!kLt~NTQkEC`LTt9oE&)#|LUUgEd!TZQkvE#-FL(u0C!rS -z0kt{+kN~Z#<>qJPo!Wi+%6VwA${qPk -zt3d~|SZCsdC0^+FV5adVYZefm>w-n>WdbG_q8V0aNJeZGoTe*v^DRD%Sdsk#Og;r2 -zeUTLca-?-2laJR_$20-1(}E?y5IQA`Uk>Q#tJ~U;N>!>*xiW0a#ONrY7&_qChHs6GJNF=m_SL*X?;t9s-QS~_ds;=r4w7R*QwBO-T+m_Cs%PwB4Lqy@Gy?cq -zg_z)%2IALO&|nldr2t&>^T!7YSAHYI2>dtBs;bZiVTAv9NnWV#crP^A-$7ZdHC&IuxOI)>&FNtGkHKjL9LxtCDm89q(oUe -zE{_SMM8%RT^uIVhWY=BceUYfmP5!7ypOSq&ng28%LmXfHF0gWSd6KNEXic^^aE06) -zTeDTHXaXCq$x#jP5Rb>aCn%e%vl>R3qPiM)8lxX4bl6vWNZ>5;Nk#M@fj2P%w=yyVNBnpQOb5_wS3KMjn)J#FxO~2P2Tyy)j0*e~;Ay3;g -zTdS{tOQ^}PnDbn+lsg6YlmZzFBj?fv$2-exRp2G>i`5O}8hoL+DH56F?9uB*RDmQy -zL&hz)=I9cX;J1UfyV7g9aC+?bm~3pa-afnEUsusUld&tpeff$b_Ui0ZDmBg -z$(*D2K=*pryA|n9QvC)@6f&DT^m+7{NSaoJ;sUnE2WO;n4xUu}+6Qhvc_8P^_Vchs -z2c~I`D$r)DBR$JL()r000Nz5(p(dPJc@pMFW@fko=5OQJnv^FtjNP1&=@2kXhRF`v -zL)K=N^6b1+FG;SRtAB>u4zN=E{RlZ&g|rQ$g)b1|4=qz*Y+96 -z`OfAKIn&$Sy+|f#D*+NIn=|0Ze|JP4ldo1O|JZQxdB#GgK%HG)ZJaDQPYCQ0T)oeeUL0A~DP42TipE1L0q_w|l?KW&kzxBE|-5>!&4_RuQhrFclDn4#YrKinVq69iEVbnpnBv;yvMXp|rj0IP -z89I%+%=HOPK|ZY9<;IUWEQAT -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 -zw+UegvVV}{ck4i_8qkSv!`D7bz{jOh -zrFLIz_;M0SSYRi}u%fn>Gwp!7RFO{Vy5CU*tb&zfA=kei0HOpu -zj2nuGsPtfS857O@wxzJR(1opn8)hRSgqy|mFX_xXbTHHySAmcMHRDH*}M>AM15S58bJw* -zy}KrEN6)3D@gUcyiY5tkOQH7{kt&AJP~|Z!C`I`g(1%<1o~!^A`N@yLJTfPIZRu~Q -zIxIc--Hj(hfDGjQ?rKhu(;!fqX2uPu*;i+GfvgPHP`iR)L5B2W0ilA9*%iJzyX-bk -ztdOk+3ImPenu(c8atC?F$lSn14I14G@PSjdhzoVn2~K#Sit`!n*0tqOHSGT8j&exe -zgF_OfRlPPm7B(GKB2MuR#F47|J&g_Qj?wRH6S!ba1J1u6?J5$ZpEa!mJ+DrxIYqQw -zAc~!=WA~CWP`THg6;`sdkot7JYTCWAQZ~^J+AKP;{1ep;3MTLN403?FIWUeoqpgMw -zWJ-*y$Wxd=JcMaf2wk?vbj;#^&JY)!(oC2cVS%Vfl#EQ5|qr%pap?dL4760pX> -z;!xP~XM4CaB-c5}$-wRfm+PuVwa4TH_L?lYd;obcm|+Y49)lr-^)P*cNocl1BSjM^LEW0hsI{>DBNZLCVVb0Ai^JDypstWXG! -z30Q?9dOB^tkQ674Jq#)CzmM8pf1gVH@by?E%E_FgeiDC0OOH@CPvTQ;JXUEy;7T#D -zSOZL(T(QM)zQ{x(^P@u&OF;$voE$BfXkl6%LPT6es)B%=#b|;9y@>Zf7Ar5~&+l=$ -zH2dX>-s_p+yuvawKEHvKVEw|o;|4W{mWEYuzfg-R#7Jrq-j`_P+@u@ZD&BTeCMulII9LHygNUxr!f#7&a*G*`hBiBJ3N(3(2N}5?Q@OWT1OB{vA2a -z#`usDC&8UXA4Vg*kk#Qk)*qC=Oq?-dEJl?&EZvNN%TqqXPO -z*VHo0h97y~A}TqJl6`e{Wbg;V3!h{Y{i@wh_sxY**Ln}EvLiCc~sXTXesqLB(DIiM~#yiHGzY8YW&YCeOjnHt~hHK0AF4j?4xhez-n -z-5;39F)|&{D(qPa6N_~wi*u#Br~O94Bvs;Z>m6%(F2PMOQrn$lj8V|qIGo&(*t?&d -z-i8qk(0pcfwjhrPQ?EU3GXOmSNusSFtJDjdCds}_%IY(buR(>5oZc@CEl!8LmC>;? -zdTm~2Qu59t7t7?$0MivhZQ04FK1v{j@u)x|X$=@5#jM#x6j{(AL8opsnars!YG7Dc -z+D&7{a+A}%({F&~0O1?9KcFFIiKdV>TLpa3hl?re${+4EqeDZlPS-+s-8Q&xoAUi -z6w0LdAv55^d`~)WWo}UEmxxTX2BZ1qeHFwn5VOo@T4N5H1Fvl%{lm!x;r!iE{*y`W -zQYXQDE#xg4`89M5+kVOsbltdPsC46Un%5tk!aTXgsOI6?qg3+4W?U0hVDV9H*vrU* -zk`;nL!;W~eYIMYW0ks{uZy8(RvS{1i3dixq`EDsK)Y8=uSx%~aBjYT*V$orSa)Y(V -zWhsCpzj{&OG($HeU2aQO^9XEhq)F22L^L>;(B5c&kAPXSk8!7sB%sWz#IRJkwjvMJ -z0Z8bg9PmQv&IQ3TNqff{@SclOaZjjcnr9~)0s?mz90atMl9ADJ;~PRK>!B?;n0zzH -zxQ>F0>`wK0;(zK53~2hJyFPW?Y&}=>aP#U4g0g6Qn^#V3uwN&zIMAsA)D*sQ01icIkj_$ -z05__BNq2Q&1BXi4{wy!^&4l;yD|xsJGc=*QJr<>k{2HvbP_wJsHQlERp`m^Hcd4Ul?1q@Q** -zUd6$wZo#y^I07rV?kJ{kHi&h*(fb^WQSmbwlS1oP<{&SD^nB4T`9H4%+8lz&$kEIZ -z*?qNH|F|*hh5zG&*>_WE*yA$AvGhm($K_~1y1M@OtR(jR^NX~12EYHuw>WG1$1s>M -zkrDah113Y2b@CtIqGjQ^MyY%o7=3>pVCXf_E8%{67LIMP3`Ufc77IB{vkEL})4h`M -z3Y=b%ehb;5w1QM!qB)C!$_ylL1qh}_9E1cW{}dN?=%W<5i49>(E*1@2f%L*C7E_Z- -zSY40LrGIr|kCAlqHNpQ#IV61=M?^Z)VisVN4y`F`0Teuc({1VY4pf7kUoP~t9pK=! -zyBJAF(m#CB%`Z8&DmxkZd^Ed4fU2G25>nM3fX@mpo*a?wxO9sC0gej&F)^H}e;RuF -zXp&~$rM6MShG8li-ASX3li)}pVxU#M6KQZ&B>`N=oMP6LIsh2j#ZWx>?*vlTjsIcZ -z4YY1h8wneTM2}Be70^Ge+iP0BunrcOO&bR75Ftr76^=81vx(s6a`(}EovOL8PH0R5 -z*E?FK6&Pt~0aMomRcFvW0K^D)Kl-((6|b*w!R_AeDC)5T*d8-O=WfXm^9aCS_wFiY -z4p-oznsbi1WD%;YB`0WyrKTZLfCJ@7aHy8}oD}X?xUtBt0(0Bl>Uo6kkymbh=9At<|#?mn`2B7}=Z@>lC`J*ejPdfl4|Q_&5Npb-W^n>ODi5>H_} -z%Hw@&^5K{-IOoZvHPcy}HXnl(U{7G27~LS<2>kc?u8NbEBz9b|pm~ika -zEmW$@y{*fLAVas4h*Ub7y{$D`Db-c02h&B)VSz2SIHCC>)c{wHi{%p{Da~BvraY%@ -z`}s3}*gly+oJ9A){he$2=)ug1C+=(Rdv7}7AkGMF^!iKIE8Pm5o -z^#ayN5UR2uZ5xMUoZ+7U-gr2o6#Vd$NXUf@7+p{+K&Lv@lH{32b2TjPLblcB8&Jax -z;NXyFMP~-0kRjoWq=GGt1q6v_z^h-ogjE~9q}BmQV`!6E?%rZ6vUuFKib>BEF`RlM -zYl`#ca*sx8o?11z`2){M=NVRFH(v_iHE!-C*Ls+o#$L(BdL_$;1PWPCzytzzS_|tC -zAxsNw>l*3iO!i1i4+X>GYQIvw&!Y23NdLBq^mc+20i3{^CZqV4>}|SS;oj>;102+ -z>x0)p=+LO2_E5De=LxEIm?c61Dwmx5sJS5g?sE%HjY0||ErS841$Ju#bXZhZtGUT5 -zz-lg${UDQWz8u_m@`V*BSUO`n -zYf`f~lWulWP(AbPwHrGXSU$*EzI3f1ebW8z$EZ0}G^nn}E?_47B;&zGU$P~dwNJRB -zNT_TqpH+SA+#DAB>oFUm13L{GRkA%#yP%I)-fojF&m$@?N*fS1ThMcc+J)y#O4z>j -zpflCcdOSXIU=hGyXk_7NZ5;Z|P#joOp(Y4ES2MXw6<6{=D)$>jgnk8jJaQrT;5K)W -zB7N@7x?2IkO6ENh!B#!bl}(q_cs$n?hx0SGd+WA+K#~g}5Q2%t_}`lp>Tg7&}dNa -zmSJ7?tG`&oF-=q-5Sz&5hQghJ@+j^9y>Zt!N?;NeD+|C2*9Ei*hoto*LV>73IY?M= -z3w0S2;rGgYvdykD#YsO#W6}C>C)sPXl5&_@K-919P}MNb2tcs7L(rbw1O^B16|Y7f -zfQw5tImhc{x~6oTLD&}vn^LW51z0_U`LQu@(8d4=JmbRw^iyX=^DLdjPw@=WN>o%q -zf7Ib+dt%_a;3;%|$t37(4Wks{xSdpXa{%O8(5eIof{aCO+fNNo -zUq84eom1ZFZ?e?V-_W69xfG@o$&06D=;?_XV_Vpzhed*^f|PMcJV$vEprK&XkkIWU -zmfp?DPXJ3R^hlVegNjjwaj>mj^h5M>;a*78C(wF~UPZx|AK|&{gkCDlUXf>Gf$Z0J&qND#-d6|A>jj -znS?6yVoU!vS<9XUsrDEu`z%WJ-qdKtN>0kZ_2HGj*x(j0B&~A=VZDrcG*QMqeN%i3 -zr5(gT9~#T;GL8;}jvb)j!J&{UW2=CC@|=vV0ba$e2$;8DzqkpB^fB2wdDxalEA`E% -ze#=Z0-}CYeFpgTt_sqKIaSh&P-RtR9+Pa3s*O -zdAWHOmCGIszej23Cd)vIgb<=)DuTd38Kga~7RqGcPJ~XSgNvjisq`xs?g7A!W`-+` -zd$Q716k3@rkH4_r*G+MvnirsY%p+j^TuZkdGQ~>}PxNI*BNA3sSZL`CqY)TQfng7U -zl@1i8$lxu(Y!Y*V?g?@G^ScE?0JH{vW8+A50{DgaAD5#H{?^p;2Z(IsFNSbsjm3wT -z*&VC=*#^WZgi;Zm+H~bmTOw<{%*@uanig6SV&@daI!}nLC5erJ(;wVJ!G8~VjNT*3 -zUic|3T1zyjLCfS|d_#CWI7ot8`8K}NCoKqx5bM3hUhX>m+@AlgbR2|jGRBp1_VJx$ -zqw9|KwGXi;Wqosk21)+GH7wiVlYf~iqZGqln=?2fZta>GiBn>6tw1-QI|i^cg+tJk -zB1RJ7A|J8MYs`okXpMboxW5=8jBH+Si-2q13-rHp%z60Mkw0k@Ydsx|^@4ED)0+sQ{}YKpncYdXw5boZdEb^B6-~ -z7_|8B&?9z@0GKtnx<}YInHI^@Cv}PyDdq~m`lkM4M)4DE2hx20_k0vx-87-JaV?HQ -z;%7>AFQU5y1~5vT+5_~WBV*ic(#$&*Sga5CDvrP(Fsf2R{eqZ$Vh0!`1-rW%FR;F6 -zMx#{QfUG$-FjHL21+JFjD!4jakO5F2rJ`=0tZCBB4G^%om-y+cYwfq?@M(B9I}8b4xLA-RLe2XIfLC$EPk-SAd=EKW?+AHjhL;sq0?BOJ -zMB;mDeh7hCzk&@$+F(G0BN+#10$4gz@VnH)(zYV~=+L#n&j-Kol!TI0{&{FYS=Sc& -zC>7$9t5Y2se0wFu#h(bJ{E3NBfFhDLhosZjC;q~l1VS-vzI*J+M?jCX6P7-D-%YTj -z2o^wR@U81zX40CIxvDFgOD(LTj99}Zx^@NBvt}QL_j8c77GI%8-ykVW5bewyDdX;~ -zHm(^!6je|hU{t&a_HzeSO@8RF$RVf&H^XI?Km+tJ)YPb1Yr(m?jX}GNo>w&9GH5%u -zwO7m)el?+B`}c8KozEUc*wYKDEvu7yi+(J -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 -zo*Kb@4CX^u>yH9;I6mJN2fl)`e9Wn(q$K0d~ -zd}_e5u4D`JqZD2tANjB~H>(BOZ}-9OxnO{Ow9i2$Tn~;zXqv<^bl~}P=9_3cxTp5?zjg0?$UjAR1 -z=BvN{tDEeu6GXpJSiU&YCjcJX-R|jc?f^Ex+F~hwDOY*}hRgITezqk|&;J#owlB~o -z>1_N_%*uGs1_U_kr=mqqEhHfS&Mp!?G8FPLn7>}HGF;7j~X(bSJDDMa>=;`r-_+~H}aaXs=9>{|8X>$|oAwSwK -z$&R_Z{`_uV`1+nbr+%L-BSmun6Jbv$79F+_j_7l -z-;;Fs`X@)$QAiV@{Z*sL8xC=QCdPOXcvTi-zhq`Uf6{E(i~BBjB;0C0k^uermn~_Y -zPTD&^e%iB|kl}VrvQv;%ijzJvgjo4x_2Vq?66Sj$jf$14SD|` -zW$ROkgL&VaHXTOLMHkeJK=Bd-uIY~FK_z}@k~M=Z^7&2WG0f$%Bn`!6+W5h>x -zO+ySD#)a0cG(U%JFbj--=OVR;YRJTS-8*OPhsB{pvj^}$Ae`Pyx10qo$YRUW!Vsly -zX>3(+#XZweHt1iX_x5sEcbAffg?xZyvfh;`oGcwM+oP^TUnz0~)qrAIr0x8SqBzXT -zTQlQC7O*wRl7ov-D!Eg2+K?KWNccC`hr38MH~6;6RpN>!E=Fwj#u#>5#=LMvY`xh5 -z5DsFox`cj%IWH4Ya-{XQ&R#{DXCjlj-x?UKM$nB(BBCvcIxsba)&LH&?!V@HH~G*%Gn -znBfRt!gK~h9@FZQDenZN69_9DrM;3X@N!iZ;DrE7_6~>S=9S;6=6Za=mZhKVBM?Lo -zmr{5oj>&S+qnAi!7izG&tRK+fQjLM46f5XIm!LAiuy!g5b~~B=?9^x(@#e|;sQJdg -z_6&?YL;(Tw-wC(`U-s(oe_d!br{_85Lq`0D5?)lbs2B;fJ$kn1-)Z~AIT_;cknQ?E -zubznG5>mYC^D83_u&)Fdj`jw3(6_fQXe3UsItt!3gj>IQ -zu7GE^pZ~f;@>m&8Pe#TeSrFQk=9nQsGYujaNn35&171&+!oL1yz%L8djR*H+uL7mR -z$w`!s`~K^brE14T&r>rCsVPUC@$&Jt?iMALkMmA%)#jYwu-o7#eaqTZB -z=@O`N{I9;X6#X^O6KlS2XRw6uB -z=tBacyGUGg&TP|;wfgxj37MHIY#4Sx@~F?ouc>uO5R2~tn4}HbFSKEdX~`4B+QWL` -zEqH<6G}`Z6KJGT&mv_#ps{A+V`MJf!<8Ij+=#UW#XBSCk0#R!KCNlh -zSU|_Ptrs#R!pidQ^^y*8#X3zg$!KoTn4kuNLnFI&(E-~Xq#xunz&m$Jg|khFoFpIyx_qOLOr36n8RF2Z>!}9(ificpC%&fx+2IJISg6 -zA?>+O1?srD>qB6zc|OCmKj{MXrs{r;M?()KCd^J=gw^qCQ_2Zx5cpH;Ljxw2f4ve7 -zOC62ptyk)`{`ihWkV}AX>bA?SeU%8LWdYYN_D;^k*HzS1_>D> -z?##alFz>|`iR;;$hjoo(wXkIb<*M-%roiK3z~KC37zC_v&{`AOs^S;pP~8@DXKRP@ -zAMX61pF_osx-7zLTrYdgovG*BgR5{pu^6c&$GM`0ftHR!ve)~vLaL&))g8M+4?ak6 -zZ_#>cTSz8aF_SltUqIRVj1f&*XADh3jNxj+51r6KTAP?UF3i@)#Q0}m)zB%H#neQ= -zGmI$8TBc-^!brSGN=(1a7#)|*N!vdcb6vgSsh}#K>^d&OJwe65Oc?qMhV%1hE}@yj -zwitB6Ov0e~{+DWHadVcruQ+{8irNF~8{QGOjWTN~SzEqAMyC!|`iSfI -z;Sn^I4pNWcTfK>neniX^AiWYc|+(Wqt1OdlvRjBE|EtB0zx?ryRwJCbZyTBi&;UdC-WJxW?i+Ut`zF3%LR-}=NZC49F=dd(Sb`^OI$THO?%F^;!^<&_ -zt7Fg?a(Czgj+AA;(45nIt^m}1Fs@R(A7X9o4(2b)J{Seu!S;+=5mKRMdFfDY(g3wb -zx{4OhrEa#BBy*Y|p;(xSVX~9#SW&#NrGHd(B00Z$!F%sObU{uCDzy3f)fW<571V_*aEI)oR{W)ECwa;DQyiK+H0Lv<1={n9FcQ -zEL(s -zC<+@-v)?uH$Hal#403eXNF=*RNnnw8zxj_;dyilg{}#8T?2ErJS&P$rG3_l>>1A8D -zhS!sUaTnTm92W!37KnvOH5i<}lg^(GJd0W&yzW&K?lKoW%&_oX#D7dN-M!mqjVS_Y -z8{gzGXbT73Y1;co1)zfE^7)XC5oJ?bwcLfg{L3Seo-z;5Tv}W6KF-zx%(o?IUyKtk -zrISEAPJGB43i4QgDaDQr1L}3+*NG?$H!c$S4$!g0Y3axDP$fOV>gL`7bd*A6D -zqVNpG-Y*T8AiCbhi31Pl0pEgq3KYOAM*5$@4oQC{c_-2%(N4DFM0Yf8?UGqj_uJ7Y(Moty@%3SYf?1i`&Fg9--KlMOH#frMciu{r=uwgO- -za*>2=Sw+LGyCOLhQ2{agn#t_>PyxTl+`F7_MczhiThMQ*RZpi%48+Z{F=LH@Rx+bo -zv@uucKGl6=?i0Ehr&UVEI_7Vb{#0;Tl9ylHFfG%>(AHHeT1@V4CNuW$bdA?r+g{9-U50y)D#7`!AZ -zupA(C2O>r+LUg$^CK}h*4gdzQm|epZ;kds8h~c|Z6kCfZI<+EhCPEr7(&=#9mJWsj -znT2?J+*=vz$QKvJ=yjFVCg69_a{S!Cq;U7j;kK)1<_a2Xnm348TC5$=W+qilzqT`AaH@IUB?vj!BP?dT$ -z(*rd<=AdwMgOo7WQNcLfL&5MlixP#s*2-VhGJ;ywYy%wCM62n-)2XeiXWsmN*>-e& -zwosN3piS(Z@HlF7C{(8$f%k{s&O!IirOqg(oH?3~siPT(*~?29JRI=1qEbi#6J-QO -z&fvixB|@iW3{~z%FwRQyO3^VZ+TNiGII*{R@O25rJ6pyE+=5;Kp_rl_at$AC1dEs( -zABxE)rY%Q>{eDQN_JQO@lw{ddis4|t{U`# -zT@wE`Va7-ifP7B4k-wf=OFMclF{DlTK(!#lE~2&$j#d|ho{#Z?>S#r|05wMk?bI2o -z4{-1RmTjx}=~G2*7*+&mmA-Au1YPcU%2kHOghq(%+xV&nZx6EUquZl -zGx|5js8|GT+L3%=^rhEDx{}XWS?jeY0rI+r*Ay5-TYwR^Il_HHImQLhMOv+aM%te+ -zQ%|^P1MQ3$hoV>$w!WI!i`H>F1*tU<+eo+BYk-=AZ8d7_EM~}(*xX}4yaU{n{B_Pi -z$)Kdw=a97CgmiMI2HX-8P`xFG&8mJ_B+iQ=&7d8N3`&iQ&A=U59QsT!B}xS^4Mciz -zG!G#?XQ;|Gvvz?rFuOhELy~JVahU|jco4@HetJ}UdzllC_H>#!(fkABTCYB19l9RX -zZ`tWwR^#U2woZo$nz^L=6=u#T@SN<6X3-=4)Jk5Hyh9XO59sbnY^MF(fVIH*UxSMYViO5~e|4y}gG_~yZIvyuQ8FKHjhqZpD58Qf)|-GDySi|$om8j@3u -z{nJT@7wWy_y2=0Jb%IuyLHdtb29j*w(>AL)3waa{h%)%&Hz7|3iI`HQtK_^cDuO=0zC-i= -z%WSa#Vu_1PHt_afz^!p#xspi5{*nOwD{_}J#Z9%<7j)Bd3Lb!Mv{A1Aq-g(vz_pI3>=L#RUUR(Lcy`T%YhDuQU-T*jK+4k;ggOnV9&^YsaYE -z`ix5Fdz{wMI_P>2ULI{QAZKc@4EVIiJBj$E@!iCVfOHkv_nA&FHC>PU@3AXA7Vf?; -z@KgE6E_Z0M3$0IfsZ=*;7Zh7c-vpb0vxejRsoR7#xs@$i43fpF1SjRr!K>WZi`(vC -z#z^g$u>uEmY`9}Pr)pzgP672yKi*jdELUEjr -z?FvdCDdY`NRu&V_72iVHjz#~`-?sXR(UOJ?Q`b#tkD;t&4fM-o{uKbcfO@?(Fhcv_Ry)>HlLSWK7QD09YTsU)k^$!xM -zHJ~Uzq}T?Hnu)JmiT==*t2jHD8rmV2{Yiuf^Ee3zni=6_zV^N8`PsvRJySK7NG -zxIAi1x_3fsgtZL5jn?{z|HpzCw7DukhBbg6QiX(`)8d8{wVd=|#c(y=;`Q5|4R#LQ -z)4DE@naHSkh86ta0&s)iE8K#u?5jQ*#0&{VzO4Ya2^No2DE5^!?<&NKa2A>&lKOnf -zy53~*3d!lFrPpN1^qEl}c;?RPjdS+=mT7zEvH+tz1jPVe|5<6r3FHSz^njn?wSl3J?!hsH?3Ka$t -zR=_@oz+UVPO=66C-UwV1ccE#-E9I&AE-tMEq0oeaa&=?(1{Wbv@$_Buxs9k-MnQ|f -z!@Ej}0+Ua`6+*+XlBM7z`cOz4@@Xi!%BXnK)v+Afv>^t~ipDDlK~P$6+mSk;`CY-h -zdud-Uy(`0MlOK^SHXfv7O{VgBltC$c16i*2MY!WJU}zN2f&G-s+B{Eq>1W;JKbDrlo#1nB|Efbpfc7kU@Kpc -zX1gmF9U}bd16Fm#Y`yuVI1Pf3PCV51Wh(R#kv6?D#Dd!WqhieQuQ2N;qupNtri+Ry -zweji9ThwAvhC$}UmP+U_aemXhkQa&qjRXJ&5+ZL!^{*h}j$w&I<|}fKkp5#+HR*lMBu2yL0@Pe9)n({gC<-Ql -zC`r!P4NcBVvXu+!(7`7LehGKtIZs{U(EY`y@uWG;2Yiu5zW<}CP -z-vwZCa@Qi+iiq%8?em=+-xhfVI9T*>2ZO^U=6ah=U`Znr*T|ODwT+s~dA2rGP&6JO -zbId&fAZG#6_nlr8e%)B#p{ERyS?W*0d&~Zt#Ajd&6$Px9RKZF=nU`~ze*bz_d!ucv -zeHcjqNkF#0LP!x8t-QejI#j7IceHYn5#O3edqW)1;zrdHo@(BY2kbwjwBRjSsAmi# -zIc0QR2P>OAJ9=+`KM`~UvR;f)y^gklQS7MA?IJrFDmP&}ROIJqVXypx>o`j1xh0g{ -z39!5x%?TttI)@l#%Diyc46a|5@{SI=-HN^+w8gg%t#9!qewlnyx8r{d(&I8;U27LG -zTo_d9-x>LBJ%1y8j_A}XvbX&BX#8h!Lp<>HKJdL90E^jpx=IrtG!c*KKL;~vRsIaQ -zlxz7bJW&1$NkQ=SP2K5xph0)z*ME$C|Btb^yCmteGQj_NhM*wHUH)^jdw+a>`~E)k -z^`9qx|Bq2lsO)|5P*S*2p2Q#2XM( -zE0;wcE#KNqB8+SXk_ZBDmaj5j;}$JWfBHb+`iv7z2KmN|+Mc)3um2wY{^v05*~V}L -zieU{1znzTH|F|@U-!3hB?V^}n#Rrn1{d4H+KgQ12+}zu5)4Cg$Ln<5{3!Lti9MVX(s-?Qcv0Ei5i565f56SK_+bk8T%xnwX$xKvB -zWR#nN9R&2_!06M*ww?jz5ulnJw_zwU^Ky_4dv~kCPt_nzSc3nzhED{hAR|lX5U3E2 -zt3s`o{kEIW7C2hCn2F7SCU&IvSLpW<4G7=@$%WD&cg-mCnZ>&C!W^Xr5lWcXO>Kv9 -zNA^&n7=W -z`bgoBze38xi5AVF8X;(ZUtrtfvR0I68$FwF&Sq>H! -z+|7NfkhzrM=2rb)WEJ5wNR7$zh}W+*k&j0j63@+;ZnC -zTDPr#);s7|JSGs18C|LvLl{C3r&Nr4&BGx)0y9D{TLVaKYZgWCd8>FfAt#8ADcefx -zqTmjzW5>#%HUgF!{J0$CCWmlH5TG^VlWCa|L}Xl6 -z{cjNZ@_$m=unh>1qv1ZKOWVbDcmO@{LSU;kAc(ux8XeT=`bPfACKkpv4ya#Ga8LV` -z0EtSD6Y^&V2FMXXN#ba)d&Q2*#!pRbcY_x+$0y1w4u|3fRk2S!eFRF4MglnJZ}krojjJ2FMepZL=ni9RYS`GKWPZ53uxFc3C9m6*gRwY -zSELU!PSI5w`9AOzztLpw;^&tMcdtNZr-~V*fXL1SkVsNjjBrXe^M*z|3uUb+0N1{X -zfw_j~4OOP;$GOd|Imje|m;=HinMSngOUvkSjWB+O0mu+ov9vS}W@<=~=k1OncMi^b -z1T}7gL5rFP5!D98X|<%99v3!DlxK0;fWI|z=^$X$5@7-95>%ASMO>QekGEeH6lS -zVC@=a>Dot#6OetjOo3rY*G45hqb`2bwd5$P&{Z1sWfXf)YwxyKZpa(F-cVv)0JDXw -zXGGnM?G08XR7CpxEqb>kIRu}!<0#cv}6Lb0r8p)_H(VJP(j0I}cpnt4Xf= -zdwI$5Hb7hFJg~iAgA7RW+Rs27D7V_QR~T%S{MZ?g2*fg#q5Q~t1CHIU)5M~ac5O&D -zqT3YB3veYC8+=6QX6bE*W9)O(rm5- -zHt~NhdlJBoiT;{$HU0DXGb86$Xe#tsypYs_@Y)jTYQ{DJ74v9gEZS&-$s8J^rt;uAZyURn75XsDH%Aa4leZ6EK$1OcaocLl3 -zGTVdhTU~=!Z^TE%U9Q(|;VSx(q{^dcfmyEu(+MyOmCZfCZhbi+T!22J1ZwKiX24j! -z%^h57+&Q1lxRVc?_Zv#=k8)lLoHIRUzW2o}UC6(pigQ5WIJwqCxyvh1drvIij<*6& -z`G{)?lJ!it0Kb)&2AjfN3$J6!7*5r7CfVujE=c6k_NLYJdJQt?)d0>OmNs$(Ltp56i9u#BRkn%&-v4*X(=1x7BHU7;vk<-2QI4mTPVGdZB>TGw@0(TiUnC`iRC -zzMLMC48K(-M7crpGEf+^#kYgk3n3B85iI#ic`kY^M0Ff1H)Cjvh}HOT*jCgIHwx3% -zSH(-l4b8M$-`+@#7aXBzaybyBiBGKabWpC4nx-q9XNHC%&`HZ`O7Jo~Jg`p71qyG4 -z{H**$G_ax!e!Y^%=gWGix<<7)4)v>KHx9WBrUpJxGK@73E2Y7B#i>|Ii;8Xt(jDbU -zpAn(Sb%L}Ke7Q^?4Fs&+0IOjb0#i!LCUt0IVSgrM1iDUZW$vhiAge&=N7MJ1JuUBW5bX*Q+}h`S+a3qFR? -zY(ObVldh+^NfMKc=?~wa78me+!M&|l9p!3upXH2=qrU~)G^h80iM|~PY9z;o(r0`X -zlqS#TaXda(oBzjW+{o0Mch0VPsQ1lc!Zu{FQF2H@XB^Cc;I8Ec#FM8jri2mY;QzcT -zOvM#Hf!*j`gj4wn*a!&{%;i9V1Y0D`G3S?J*z-bLFCus>t%zWrSPi%8`Ts%t!L{9A(IZhRisXLl5|) -z32%=FIWBSE^8qXF)30#@kl7a!azO>!TJAJ~_0T0e$pWHWtsg3)m%fLzfN*$AX&}q?~pW}UoYSoZPGEK3ZR%_ -z->H<8BXDUh8<(W$!0gsYzMCE)N`Cr!@kIVjsvx>f2c?;yLq$o(d246Y4bod4`41!5;vVzvV+B>S;!M?)^V~C -z@T!+=tgQ494ySiCXdk~QLNid`+!6VZjRymjB5Mgr*7KI_9*i`!WeHb~g8#5YlyLZ! -zCWjknIjmQ*-_;S2v59O-UFlZ@fEHD5SxM0Ff>P})oUlV-rq`-`^J}>}rgJ-q&@1y0 -zlrHhr-5ot=`hhyB>r!hV&{n#q^5^CBW_7G=qvnwkcUDHqO&}vPgm+_|a6lFU-p6$Q -z#T9uUVSwO~KvJ2+rqqNMzZxn)x#^Ms$d^u|$}NWdvYTR}W_s6Kobe*crGAx^h5Q|d -zt&meXHu929Z6ru*z1?(tc%`+=3+KA-Bz&ILuKxMQGV;nx~V{3anZ3FGdDfN=FZI=kuxs -zX2=#Uq=#46MOAYtTE|v*A-_oqjtLz6hIW=XnL@vCa6&#|16(2Obh6&uKdX$JNZ>E} -z%sOUPz8>avrUS)Jy=|_}aNw@3rk!5rZpQKdjqz6EE -z4q;qQo*h1(faf)-8p+j~gDVl`7BF>I5~I-K$Dyw3eA8lGW-%wnIxCkf(j+)@7CRcS -zVV7a>z))HefaUdG6mV}RQ-^{7r0Hy&(-#7aebS^?fIY0P7{n|vEMhS|V~M&v#3pk? -z3=H7zQ?m}~jppoolGicO_H!q4^pTckwdd!hsa25dJe@Q)aa<-@d$0mHgf)g`G1yeP -z)hR>0(&2iQa}1t=h7MU&`Vi7Iv>ZIfTh-cqaq=Ecig>J0PoRaPb;EKlJ^fhAIxS{r -z^cC%ix7`T02F3t;$cg1fGsAkIrqu;P?D@x7v5iNzUEc7hM|ijIHVg{vMxu2 -zEhWQvtN<@^R!=mKM3a-X2 -z1`CG1%V|aMNS5$?cv4L|!n4*FC#lhv2lNf3?~tKn@mYazxScpykeJn`?8iE$0Gb@} -zhOjH4Yls9;M)|>pOb5bC=F-#rM?i9l9SSCthiA*Mpi(}HMxUY*2xD9xC=NQ`#gYS3 -z(|#8WhUsw@77>A+!~UdQ^R{gwiAM>n7i*OiaN|yoAkWI7gVNw5)$AiEs`V^#nN0(8 -z5MR|Gts=S&l-y=T4n4lclf;@`9RLVbiZ&Q?dCq`G^A?o=;6#TCj6(A8Slow3!vQIi -z4VgO!JEw;QD3KN&fsbzw!-Pzr^BGe0*8|FwL_@wG4~Iuv)wy8}*qlj0I{=w1Csn}% -zEEUsC(1Jw_ewbl|=8(gDJrGZHl9VWCeGb^n1$7GzFpk5Rpb2!Z@ng{h4`i6v4wb2L -z0`1yMW{<;Rw`)?0XDcP1aD=s6c=9L*5MOV-ntL^`y9N-Ib8!b`7S?OBb7ootB)1pd-NX~ -zdZ_jyo~~RCaEiGKlAtM4RgVMFtvG+M8 -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 -z&@QQ=1AT~rT5T|Ap|T>E6sZk}W&^sY -zWtQ~=BruN(IbPaAFVp4Z(FAFkxmPsMy*Q5obZwKuW~t9~T_~4hhpioG_Yb%uOGOR|pB?SsxcCO$B -z4&5=`I%skZrmfMunb{*&9#EkHkm)W;Jt~|1`2nrt$Ngre!yGeyG$JxDuZgUGYc|f= -zcOmn*LlW+i0lcv#Ct5z0E*T&PqsW%V^^lFq!R8gsef?1#mJ$9G8t1yFM@pdMvkS{7$cxnDWY~|I-{8DX=#2otC_3&Lu6dVRVGE;o0W$|eMIM4^9tsRp%#jsFxsgG -z#5cIIO4bkJgHHySSfXYA_+{%8#>dJ?S8~e|Y?|3XWbw@AG{V!~Sd5c|ZJ}6;b`aDF -zaCG?Gyw6vZKGrgQ(D>)4_*LCHl09O*opFH|R3M=V75eB>)#hE;Nkn6aDEh4h^lO1u -zz{>tWa?|Q@T$B8AI*oLD7#Ih89pPMA>^5GmPPkL%cTXOaf4NkCppXRAx&eEev?lmjYGRqBv~JfCS#sjW+Y7;sHB?M -zhbC9tfilU_9r;)CW-5BKsF8^JOd*{Oi{7KruO@3ZE=#W518`WvWMH$y>M%5$9oCKn -zN+ys-ZZp7O(@esM>-HN8giQ$V^urdahixA$MC0js`G@%03@=PCW=S0%8=zP1{ -zMFda3N`85ZqACbTT}o0^L8ipNyKDgY9@%15e5xMCJhq19Mwazbr6;G`Or8ks?q`7c -zuONSQPnTHe$x=cFo(r2p08KfPgEChqhxqFoC%Pb1N3!!c^w;`_v_{3-1J@4@XCIV<=NqbdIS-YuJ7wf<3kht{@xCSe=zBO}vn9GC3gb160gwmT_ds6iBQxEr& -z4k~gLnE+Jio7ai%E}ZG -zq9{V3R|3rNOC3`wA1jF>55a+dZU@xT04+kedF$5(X>@F_nPmi~MNaUEI0`f+q+<2< -zFvjr*&mrO}r9{c{eG1;EbWy;@tu)I=Zq>?Z3DYjOtY;ds74~$rNgB3BVr*IGl*!;W -zFxo9SXQ@?jT#%>JRQBAeO_a=YKE~TF`}cY9p-)CPJxd+?#a#w>G0?_}boSJ$EXL#8 -z-*tpx&okZO^+a?FnC-208Q60O{6 -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 -zR`uuxuWFAYbMB(!8n#5g@B7h^W);18jT1{0 -z4`Z|Z#0?$l*e)&URV#a_k>IHjE(8QNW6Ava(Ig-6QvzlVsnmT$O65ZW>iBN%O4&d^ -z(O7>mOv#TGpmEi~|L9XSj_ftbVJt<7oS@e=sg_gPJrUN+U`oiqHwP#_JI-~QtWD@+ -zap!MLG)Yzy8JZ|s)Q>3rWx|GDQ&y~&I76_MoVX1+I@tVc5t6KHU;vz=k8YffxO161 -z@P7<@o#6*cfJ~W0I(0*cK!v)*01!-@EK$_N?&`ymE5~T}bKXk>JY>?R#uo3^;~o#| -zDC0wJWtO!;a-|PR1<#gP;=^n&qov1^UIP9&K+e=u8UV!tzGWI`j!5QlLQsIeXt52cBJ4R -z?p7K!0C3bAwof~66_3Ws?=~fwwyfo5x5;c08|~){I6_cMAMO^fE2UUmyOs6*jN{E2Cz$nCH9Hu%tS~PVN&t);rLF9)s!hj#liQdX8FAleNgVf%_JaBWT}-w{zP+_8Az|enCliO#-i+w -z8O90+5Q(0GDnaU3iqd3yev#~YL;^KYD%%7$iENTP@h%fd>0H4|W-P!dUcs`mqQ5J* -z`Ucw!Yft(zvN0WSG0hGgc -zFZ4ovW$5K!oPj+ac*b8iR8d^VTs(d -zWWpGbup9R*0-2jts-8O_BI+4wRYsT?hf8S6;h2WG*2lr5>TCvr?5Vu&ZYMIuP#!C`0 -zIvccgy@>x&#E-egL~5`#s?Q@~86{#}6yWB;q8de+s!H=whV{6(C|VF$k*8X3mKtOT -z`uDF(5pMn!O=cAr>qt=SQfRM-xG#F~OK}Es?DE>sffX|I$j8X@(6(&^8JWh&K?5|O -znow-W8ilUq5Rt??aqN -zPgxlRp~NXYUHt3ExAj>b|NJKR@Fid5D}Vp?tuD^_{`1@GlJxQSpFi~_;A`Li`S#5m -zo9}Djum8BnwTesp_zO3o4SLnKJ`9%eM|~+zD}VOqw=WTdVgTXS{z_B!*UxXog86Hd -zhPb~!|H*@YZ&wiXMvJ@t^XnIcDLCu-Hvb_hAMTn9_{AsZWA}L}_QOvF$96T?3^LWI -zt9`ll($V=dZizt;k%EEf$uy8dgyiRrg-eKbEwVEoY?9ku^rY$d$^$o*3V?-ja6#)j -z`lNMLrCP6bd_mKJoY1uc^1P>9O~wkcQHbj_#;srWZn+4^m5(=eU9me!%yzpml1O!H -zDg-32VMn_Us+SO`r@h|nf)T(sJ+a5Z89nmUiffXwg8aDcWrq^Wu#d$VG(zSaY{{)G -z`6;A8Dkh{cI+cA7Io!fpJ^-mcpDJ-3LUuyLSDcauQ`DL9CRf)o#YN;0dAV?`p9tYs -zv^Ul11#kCqGPgTDda?oB-h^^n;Mjc@m!;!a23#=k@AvYAb*b&IHF*Dw$=^lMJSb;e -zc{)OAbVjKHxE`Vyc#$E#Ce94z94tS*k~?mn{?E&qs?VP*zeho)_{C2yJr9+u4h=k7 -zUb2E_BWZ0Nyl(ad`sqT`y*I9yM|d%ntaejG$+$R*t1s19QWAjzD -zszmX)^e1br=QRN>q-5((OK400l+cHzcHB1CT6PO%w7^ISiC~ZmYsouq%*mkv+Fj*? -z2GER?GEy*H)ZxZEL;@pru4zy=U7j@=drDBZ8Xt6osZR7jnk+h=wNT4zbTv| -zSyg=cG1E_Z#_mu6&n9VUOFE-QNbfNDh -zsU;_3th`kmr?tc#-x{ey$16wSTpH$x&*{tXEAD==Pymmt^U=IL$-?4~dH;4oMbud$gvI9J7LOG+MIs&9^NWcI6KsVcvVcF55q+f#N%0r?>oD -zK9Zn}zr#h`>ScfVG;~xJspKPc*;adT=NQ~93#)-0E&(lEfnxYg^3f;P-O>Lp1tdB! -zgdC`b%ST({=o#P1bax&q?`Anx5=SW1pcgL>5zrpg6dD+Xphsy&%HVdW^HrQVl&Yde -zQpv#fWnizqcj?a`BGK^Y-`~Eeyu^`PM&(N7L$)Z**3mJqV4e7z;WL9;^cV<3z7~oL -zxXN3)ooHaqA8syKY={rJf55InwwtqlMm|n0@i+nxqFwS?rD0U&F9O9>lhY&Or2xc2 -zd#zRB$EFl-T0fsGzBB;d!DUQ!^#~K@?JVFFI+iCoGIyzJrm|l)0`7P7YNzVh^sd5? -zno@)b`t#0V-QreJ4z*rgivq_XBxjPw=Q(&?$w@nK?>Z+SB`QHj%pW92Nb;0&0d6|* -z=}H}$2H&R>J1^h#a{uG==bKnwUKiYex1-`WHgfW=F3$x&AehOwz -z`E{_aPlzbnZ#UjASI%qZ>9eu&Wj4O`#qwi-U=Lq~c}V4y_MuLYzz4euC5XjO1=O5e -z$^nnUdU9`SWOM%b;E5QV<{2dD(31JV(#5(r(&%7xlrp5)@p*vUoVq+=DV1*%gerAX -zQdJ!j#yZ&sr@<@J1v;*_$uin7K@O>3lSw#XV$mT3|Iy+%c4ry_`W8LYZq3e3ta#t2 -z1>VG_^Oq@Dp$#A7&7Q7}!N4FDLD*noV4cmlgi+3XBkGB){@$HG=T -z8=B?jF$=zr<71Zniio0-8PBG6s -z`Z2Eh*NCEY)dDi|ALce9$M0*}Gfak5-1|}wlMw@0%gv;v)Md&T$-0yi^;aftaKAmA -z=+dXtfv2{S4K+fZv3zD5(<||^I9)*2NhsC#X2EF|ALME90IhUqgd)baThXLfU`1mgd3xJ?%|Iz|D -z{h;uj+kcXM$5~%a`CZ89Cijsxf!f2VMwcw)V+^%trz2gke&)OI(J7E3xHrQk7X!#Z -zu7PXo1S3ddl^(K~F^m+GfWvGOks(d%q!i&YLLy%=7s%BGxO5SKZLL;uO@|rzEe$bP -zUg0R~@CH3BPZh`qUs86d4ezU?y=gIC`D3@Gd^D*DTxZ1r9}fJ4R(R{t$!(;u4dsHB -z=G)rwE+rUa?uA3`&}l+2aPpveq`Xl%wi&}wop?7B{vM3?E(?2s>E -z+bDghoCX~3Ae1O>Vrja~);EqM$CVLfB-VFU${3XPTV+96nhlu?MoPm0=tcv0y-p9X -zov*PksUV6DXA6PK;c{8aqrF4gFk?iw -zfcJJpd!jH$5Q2`o=JU`Hzn+pC=MjD&*0N+|&tzxYPh3OAy;OE@VYg_Xo)Df-H9orG -z^PiJ5+6}JQSKUy?9lG(tr7ZF{Y2iX}$}tLX?A*6i*NrHs>hp9nX!io71axc^SE3J4 -zJeNIr8!2xr4(;Ek@3iNmZu94XXl@<5H4vw_H#S^)B|J`*t4WfD&!yhhD$` -zEazZ-F80TYY?R#m=E_KCw-ttVx8+*#4z&kePWoNHN;;q`?Ib8{a?l$qRz_=+KQ0Xb -z#MfBHV6KSVkVTt+>FRO{@7f@}imI~WbFN9_y02X1c11teHFl@wUq6QOYjjJ8;W%T* -zF>z`BsR*W@;(YX?dJ;pG%_uhzUl|d2y;{vb=a|kBeIBZ-<@4+3lFy+Nym`YsFb7^X -zvAtX+iH|RoaR!tfpruy`DmJuyQ>o? -z&GkTWX|gcnkPIkNzV?cFsE|)rFoC&KGDC;n)orL6OT04BO#O#19ylbM_$e80}~kFWgwKJbqXF#nis5`Lh6%NG>>WxPMx -zQ{mpi1h}0-n70Pm;Iv3kJYa$`O*;=-a3_s;Wx3!31xQTC04D5QQ!Gu4a%&A^q~h*@ -zHqt9zApcp^W+H2nAA^r2NhZgAAu4aY(aUz>+uoP93Na -z>yHgc+M7Kq8)S$?MIKWfe-QS*M|Hor!Y7J -zxzL$TlJ4qKtfXQ6?6kn1{v0+b1|GI0FBHHI`vqG~zp_8cp#PB}+dsekDy}&G%m(=A -zP*!QOgpcx*j_wAG)5I|hYb#d&RS#hw{jtRD1J!+hexR*!t6qhUGM%$qde7eqQ$oXF -z*FJmpDRVK>WCGP{@OM<(mOrE)m_aon%-kBct!2WB_dmL4<#K>$bg#yhUWp8x*=uC* -z`}HG4?Iu`*79?3OaBT#jGu8SC(r#W3C;6itF@+%lWchQrlI~2a8 -z4R(V+4_;~7#05@6w1{Y?J7oq!QFK{t1|p=;0dF1E!mEufrEWmZ=*#{Bl=#&nB9#jBNzcZ%JD1tWki_F`fEG{)<&_$Qdc*KG -z#Np5L*fL3O*9JH}ij?P)06}OJJ*{mbv1i=wn8Fm&1DMtraP)lHDyf?3d|2LvjmgG- -z`y}=K^AT+6?B$Kim)*nOglRmu_vz08e&_pIb8GHtF7@DN>Ew)eht4T&P(Ve5p8S+H -zm+|-rEBzO`y?oCHmoR04Ivyy7?G#UDJk-3IUFw+Ue)ko825I0iji?AL?&cshP+%$? -z>g?q+CfC&>)~5QD!vSha=ex|DRC&LtjZm^>|A!PTKURTf7m?hvT|{@49&vd&bku)e -zl1&f0&RUZw(NrQGZlT(ZL2T;$D5yvi`c?`>%~!a7;rIUM6+=@1{BsgrdbpDVWui!i -zikB+`V9^o|MjVYuIK^TBd%P4GQ$%ViX$2l3gJ)kY#ylZmopUb}aQ?O6ZUTjxo^%Hf -z@)rI}TjdYSKz<%Qy}MHt=X9=fn(kkxrE^raOk;DTsiMEhW;x!%V6km4i?OrXL2>Q3 -zA?~L+4`B{z=+Beh&*6=L(%5~L6psD^IvAMz_kDum?1xUNJm#Vvkq6+UqqHjTSuMP^ -z<)$w$hb$PR?;MlmpADr27#)#riiaFDWAurzvwi!{@01?>C98fkq)-O -z>RNQ5Fe7KS*o(=A2=@Q(0mQZ2+qe{KmoIH8Oln$|0~s!5%fF0dDmfI9Nb66`Nv@eJ -z@3p)P9iA>iqAOLc+0bJ+Wu|q6ugS;jQD0+f=%4qNteX@OnfI=YrO*4EP>$wD@kIZU -z0r{^htc!mmc`n5Sqo9`NB(Hg?U9kl&NB^-k<%8K9Yy48yPcNS&k2+m*apOsk(y>-kl@2bAz6ISR8B)9u8DMu! -zkLQ!-mgDj!%ETf$S3e38lKSUo`HZ!&qhKP@6E?=yKWpIlroKS#TP?pLBl{`nNQ3Vo -zWpK5<2htYbx#4uJ$?d~d(*x|~1Ih5qmqQw^FA5|v#_KZwCjDA0Zwtq1A=6gv;3N4r -z#j}9nWGXf?>45Ski;&(j6rna~m2NP)94VPX?Qa6f0GR%|#N$+}zr@&<Y3brAB|K6FB$j&?@5?7iUa4WUtiDkce(a)OwTB92M0MT3?viVV5=KZccZzl^3s2d -zujL2fpI@Kf;%MBzXgYN$emb2=W34}p&{CXezK2xv$9D(w`Y#Q4vCUcB2M)`sb{Q!0 -zAFD?=X9YE`Oqovw5BjTM=9vH*H*|Kp!B1d1)UC6I0Z=|o1jM%1Yp#7bY4^21QsEvS -z52U^`-uKFMoX8&)2mnI?N{r6R;%dWbPDe6V$aOa^nicH`sB~?ONKr=7I(pAYkF+Ss -zc`}`q4~w6{SY&>c?mQ}nz;IgrZ^N~qP&C+T`&YUN2t -z=2Mw#u};sGuf^f%(_(527>I13B<7^{Ij=oF%#XQzl^cB7KF^0g#%$HBrwY3Dw4&Cf -zOx!_szWKro3A(Zy5)yPMTCbP&OL1&qMvdr$GY%8!e5=YLMHy<56tqew8G7E!lV;@0 -zt!0Z35i2O-_*^Jm-X0%spQoYM-k;(&=MjDhJaV=!W$Yvyd8B)MX})E>Uozkv9TiYa -z4}`CaU9dY>8nMYtbhw)Jfo-G_3YB{ -zyfap4E&v5SK+OO#=kLF74km}(w=1u#l(_}$BydgBe%`KF45#lMP*_DgV*~4VYDy9+ -zEfYn2^lXYJ?00y{=#wi?L*3lj&5&YER_We9V=!`4F+V -z^l9&p_gWYl-K<+=d&I}pm(J17-Jm2K!h%+Cm3jM&iXV^#a=MI%)^YHqAl^53eFWjD -z6D+aq&dCz}yV&6O%envc{#RKuz-RpRQug=zKW{y9cZbH1P0PY%$af@1izN*<;-rfh -zp)nT#v+;CI%l97G(=8rEM>;m&wj_Y?_27#zi-d-Z&fMxeW*|2SVq4n9E$s+{Cl5^Qy)Atr|v!$WI#pe*L;lE -zs9)oo;=z5j?8C!XMF2*>*N#kRuDb$j^wjiK4#-nKz#V`vOBt<2o!a_KJ(LH)Y?ia* -z4iqfKTTF{hk59$w2AYs_qBe3H%Co{st}1gu==GPU7Cz(X`6IosXHhTrEEDKYj>yO& -z5^Mt*y<6|!b6x&Efe1XepT*a=g(1v&jUR4wS1k|VNs@tlwj49<^0piX^>?5>@FA=q -zGSHsbL;$K73L%eUM)kNf*@yvZkTfZ!Lv{fbgY0;|(uBXh{gu6=7d+>D?U%JRyqZFh -zyq=d&72)*fU-nlqDZjpr)_$2`dPaaDHK6+dzU%225Ig0uu_cX4{tJXD+M%9{2)uxS -z&A`jaFuA9J_Y>&%PRFwtZ{&JU8c;yOIVGwAaD!e8xiHy-xrZ6Wt*!fawU07yq(Ds< -z+$s-nu#n#$OQiD}armj%*mOZ)zz`{C6clW#m3)LZXcSbEUKuT}}qyD6G*u5J*T| -z74#=~5a^O8nt3jzy?3lQFjwBGf1*?;Q>+%?HXXe>;hW+oDLx^k`0wr%3jX{W>m?oy -z`R?zp@D*dv9Vm3m%a&6?T%1GN4LiArLeNr(ZOSC)C+Er9`N@kP^>@3ou+53fjP`i7 -zAL$Mh+t-dFX#z=l3-#L>9-U92=Wp`mn3-wTQZ~hWU{J)MtcWO7&BnH;jeV@j(gHT1 -zsi_x;P~MfKm~*OyfeIz(%iI7SefDR*(2TQ}_o16-Pj;;l3GtYbFBB0?3BP2P2X|OK -z$Rr)2NOS|)kSXXB^fnV36>#zLvY8M{S72b{X(eNDO=NU!!6TG;DpQ{ssdfXGSDiqQ -z%AOn_8a?|jWwHRD%7&G4;*zSlM^wyiNQO1_IkA)1tQJ?Ld8m$ee&LQ@!usbhV=OU> -z(nX<}3J|IUZFwS2a!uNfvE85g3c)f*O5%zNXqN^&;-SF;Fl5guccMs#W=~5!k7THI -z$-sehd_lYLJ5QWnko5mkYHk6D(O89GvLK<*fEN42f1_^*+k!raIeCnnDNFE!ZR-Z> -zqsBQyWOKJs{uzt}j!O2$h!5n1jR|W^hPe4HpCms9e1KA%+Iht<_F?D&+O7@d{MAVW -zSt7w#)!dz}Rk -zN%To!z`7j)R%ftc4H?a(>P~msvft8Wc1NIUv~YhRB!I^TGwAIn1gwl-;hS6^fsTB< -zA-fG=%$f=eH_{D!o2k{*)ZV9wc4tf?crlz=*wh<$^ywQJx -zOms5d0ex!31pswdE(*-+mUxwD=zm_%gXS5a_MIOQEf2E#i(4MB{!Y7xmiz4AWT4F0 -z;%H|Sw~WiYZAZq0jrfi7iXQB`<)WKm6zN(jXPm7)u6V^-IWNj(-`E!Y<2r-)dC~xd -z+Cl%ly#?@)Vbi}4Z`}XgoY%37#>2G1zg(leeICI{8@2%x-yBL6CWT7r=U{**dRQ|Zk+L}*CpXIR{Qh6 -zw$sW%$RS&<;%TpOet+{K(6;qm^Jj4WVnR3Wzd65P7KOxiT!In(ha!GZATf6w+%??qmvfm@Fm>-qq -zVk28C*4J}%glyF7&Wo>^Gif?+i39U2Jj8EPx6&&1CGnnU3mAiM(WsTt3{Gwc(1GRL -z)3ydCJLFH^*Cp9!v?)$kVC9rlOOCyTflj=?EtvJ?<0?s?v>Qu+^I?ecNSZEn2!RA*ZEW`rYB+Pmp4|8$enN5xo$N-`1+ -zZ<`n^0Bj`8Hc&oB^B;uJyh)d!imH^|fv$WujcBdtb^n-mRCvVc&628P=4!gSV|deg -zQnG<%o1W(he;_S3Mv#o%6tjIF6yn(i7WeqmKf?rw<^8s57zurS_vRQ_U9F~Eo~Z8!%4Z&=C?b|@++tI~|CXfleHF2EVJ2|qNN -z{nr5=ri!B?!2pHCrDzHL6Y4}*z;O?S$dGsynfpyHx^QI9H2z~3;CXysVn7zSqFvv? -z4A7eE^#DSsRxD`PV@#itip-}fk?$JP$mrHJ9WYM=W`>XGZP1pxbFM0#((OZ=FDE=v -z`<&S~DhbkkA&ao1W2jwFA%BF46B+5eN6>KIqhI8ydNPD13);r#*Jr`mI!T=W(Q0wi -z<5nqF{!(f7Y;_W$?5}ZBK3F%|FRfRNWj=;B=rzgZ)^9xim55azM!BPYRbG=pc{v}C -zL0MyAL)oP!3leIg=5eztx-~bHd}<0UD8Kb%(rETn)j#xRnoW`X`$~T~Y8=p2^_P?; -zJ!VDbeN@{+pLw?FxDGaz`u(SF_lLXdBdmkv)igl&sI-0YVXuUqTPI-o*W1lnJaPx| -zn9QspQm(b!$h!Q&gwBQK+!kSZnFk$M1D2GmUyUwHBclAmga19li>PUJj9#~wFrR7? -zrm`{`@|;Q*%&n+4rG5R#NpDoasu&Z>2XKrTSHv;+CC8xKolF(2FHj;U7}FprAT{e2 -z@GDeSTd|KbtEt3o>=ET3y#*HOjlJM-$crCb6$47p$QNkVax1E_vpWrk_iVKUpNe7!Bo0@_>$Pe{ZR3Vla1 -zzd(A(sXU<(VczVO9>u7hU`{C1`HK7`qIaECFW{kFVu*z~8(TqTldb&uovt%qmC1(; -zq}sO7{M04g>IgRecioIjl!fp3WihR}Q-bHU%IAOoX2Vx{&8TWwnNk8kVz+2%@GziV -zJAy>g-DJJYZWx&yIPp)B#xR=rOagNvUe;jFC4W3G+(4_u>qg@4nB?sHU*GfzY9yYR -z2-g+ABpaTS=@Sw;Wkxwft7Ty!n7}1+7 -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 -z_hsefkR -zEDPsFZU@D`o_!y1+u#b<_;mP} -zKDg0}AR$R}&y+LGPCKgQ$dr4yn4;={e*cy)j1bHUk_>;zEu8RxL80;HdLox@V%m6h56O0|c0-$(VeE49i0#%|ol7l$)C~Ce -z!ExwTky1Z;GKqVaAR(ZiNC0y)5ba4aM=zLY@--mgNpMO?&SF}!Rl#D0aw4+Gc8fkj -zfZTtmjsaUAE6<)~7q@-U5$z46jvexyG@0?E(^_qsOxTS*c{U=vBKZd$eUzk) -z$CQld=I`G>rh#0?@5nEql7U}-Me4^Zo~U)X(q<$X4H9@k!g{Q1T6&bjTXJqZ*t+KC -z5y8r;4XEqG?Selb{h{r?d0NZg|N1Enii79&o{tS4+}6>0nL^+DP;n_C{qPba;0g#A`yGe)24_1Cfh5-B>PDz9lWh@i3UyJbf5O& -zJxYfmzorzba}8ZpBdNU4J#Bi+4P9}R#2 -zV1G#x51qRJEOgtQZgn!<gm7uL6fC${!vl*1BGp)7y8ehYW(#9k2* -z7ZJJ8hHXS;cD@r!rL8UEd#~TGhH)%Nw&4g65}b>9(Q+fBadvmq_QoESKd;}_(V(xY -zz8(x$@gf^{88pcB!q4tVSX^KIZ -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 -z(jvH^;1Pntf5(J@#aMN`Ot4 -zjJyC?a%|#j2!TZL^J!@MVj%eW#_AFkFg$Q1s9Rc3cZq5-QU({iu?dS(3}7YN+)ZGW -zQNtT$4P;DK?lW3FJ9}_9PbNLG!(27IM&uL8<3oET0?Gl%SW?Oi`5HN9!G -zf70o;6aD>;h|XPW4eJp&YP$w(NwDynVF`|4^#cm+aX!cdV|N=9rCtcu6}yCVt=**n -zQ$Vc07Lbu6b+x1@)ku^W3wJ%^TYd@~N*T@57V}Y8jEgt3xNK2L>lJPNw8+NL%^I!X -zv{KEre!AV54t-3nvO3v&moK?)3WZ9!BsIF|^vJ(m9m*-2@_CDt1AJi83FC*tLF?Kyx09!V`{k -ztLDPkOdPJ{Ua=ERJr#QK5J;xmJvJ*78yzDZIjIT(;4-~1cwwV#ThD#g(k~-2ARt!A -zTx00C*A4$Q-)>Vqtbcv}s(yX{>u;Y%;UPlyd`5)ieA!h5OSIqFRFe(CgX2}$dTEm81 -z(jZYO*azguEMzfWDtr8dnwOpBI$u$j4>q{57LjM3+%(Wz!!4`BVg|dfE!0y1hN8?; -zAa1iMjwnA6dX=O7HtNo>;!a@oX#Xu~>uTlF1Q_dIZ#|dSp*F3e8`I2bwIjzNW_@JQ -za5#`lun@1vaB`K_ctNwSZ_@xpWBr)gDEx*{;(jcGjdgcfsfIW1lpBNYdPHi<5!j_*ZT@2Z{U*dom3EC=< -z3B|5WxaBC>bIw?$$O*hLWa+9rG7zi&xi~asG`SZ>E7EAooS{9pquRr6j+IxOzF;rR -zjopXv&Q5#RcwCt6v~~1D_(Xy#wT!y0%)rxc!2Thb!F4P{BtJYCEHSF*rxAg=ZEMJM -z2-v)=Slu?B$@2gDVx@rc#E);^1WVjK8s{XV$IwFp*Yp0J17nEg^rjJI2?w+yke&ZF -zlO0K7E*EwUaU*wOrAN^)-T>&PM9kNK(BVF_b0e7z`U%>0Dd&LFwB4B222JDn}dRiN1=h|2HhVQ*Zc5W`^XY9ZSZWl#kzXu9`)}S1OSl8AYp% -zvXXqRQ2SfdeX}IIHR$8F2A2U1pZ5Bn=X9h4280jUC7SzvPoZz2|Jnrq%SJ>9H>>Gi(wXN*9xrkygE$&H=UQI=${lQYy?LnY$8!|0Ivr4@wm_OZwM7A3XKkO#Ni0nW$p -zhkG-qD?iK1;?*6=%X@&_ed2fttm0*qzH>#hSGOa48DoJP>tnQPFSg`+kou4fb8E<^ -za%NN_+Bhu*GTyaD@)%c?o4k$ar>zH1Rsah5 -z#*-mH2J&%tH7CJo5NJya_y5=ItFya6Rt9URL&2;dLx!nadcQ0TI> -z_yZ`Ip^!L6zya6Y9HeENeY6%-vfcspaFfO(^#tH`LGX>RFM*@1PBWU}ZyHZrXD+Ro -z1{F_apYh%$y+TX&{o6OJTv3Xm(MWa%X^e+)B{b^jnWAO!`KfP4_?dcd<$rFh)Q08s -zoaA>Ilmq4K=8)5C?@+~_GHl%b1)FU<7CgB*;pYdp5U>g;>m-10G~SS&sv-%yWC8(K -zdS=sHYxjWIfi$-@0evo0le>A(InL)Kc9VnQ^y%p>Y_Pb!ZfRBp4I*J^dz6{{gva-E -z6~_%plmb(Z%mZ2>IpTWfg6j=lfY~H=#MSEo_3{g?dvVI#QGHzD6V4Cglj20cg}?>ewyUakwXQ -zCw<@8nu9r#JV)rO*}*N#mHIHmut9Op7Jbkv -z!OUuDK>`uxLHpJg0CNIbMB6rYN$UR+~T>~MWiD(hi0u8AtJ_^37vWn@9g3PGUZ -zKs;GBI%2+n%#PffjID56wY6`9r6S)6PL2;4)k4$wYIMn=ocZ3v-kr?%N(^35RQS_v+s -zyVT%`|EV`HqOp(e`qEXi4_vjw4XPUm$D;9P_PF3C(k71D3AV3{R~mLks7#AYn>$=W -zLTDQDy>8u-^s(oLCn%j1Oo4rLthrpaZomFKoP|l(8tofa;2V#ftt8VC-$?+%MXHvQ^Q$)q(nwR4C7H>!R~ -ze?&3cN}odZQ;RH9P!ko26-%eX%2!F^IUBC%wdCN|Ot@w`Ejzf$^p$vaP~nU*NQEIz -z(v8W8e4`l=^irX3+b-U^{-1XK`$PRq_b@CZ^GyctweNff?X>jODpKX*!{!leVhMG8 -zZm#3sBRRYu4tAJUaw0V7r_EV)<(C_6{vW<-T`Jxrg|X~0YjWugAoYAo&+KMAiKA29 -zf@ytn1Xgn0QB2`%5bJiM_c;}#;%74Mgx0StL0$ss`JyNCf7kl#4uN9iVU~ytzS^aK -z{J8bB|M9`%ySX&pahc*+`kepcax@^_S$}+1lJWleMcN;uKmOxeoEiON80?kEdi?PL -z6PU_c_>XVVtM^=oRL(d?U!MnfcMWt$xL=-y<5w(a5ecOQK~B-4LP^?fdooagsVfq0 -zC0mnLiK;|2Suv=X0orW;^GZ`lp_DYMD|?t8TJCPh0!SHCY7SP0iR1B -z>damt>EAxV_()kJeHtf3Gt+_;Tr{kc)|zI)gF;k5t8-`4(yA^3_=!1P^_E&!-N}Y-5Bvb -zi5H(VCm?)Ucht0eVF9c#jdl#$A;OMsE}UcjW)s1su%3NYD -zJ%qYy$%&a%?iycJXT~ofo1J(b-4oDUlc8H7keWSqw5fvwie~% -zV`g|U{umqkx|{+6yKM}*9At%IGCl_T>$tel -z0D>{<3m6X^7mvor9n=1$qd2zd)X`mTb@ZY3sj!Ae(9nXwOq=f#$)&KLRogk=`>8u{=wV(5Mqre|{@l@RnhkyU2C!x&yA3#BXt;Zwb)~W*R(43y11*Z|gGZ -z$1v+8B9%JkXlso~N(I&C!AgZ0wqH#8 -zO`?0`KFuwC^kA053tu(&uQ#3W24|!-di^Csm2L&jWF(o0AzBf_ike3v*a5Rd$sCv> -zjL}u{K+*2XoH6))51>w~x1s^`f?9-~6V`>Z2MC}B+`-0tK-L=`szjtE?+edZ!1;!e -zc}jE3u#}#}G2xeUxh0tZmh&%wqO}Ri0MN^35kw~A;-3xHtz{a~!yVmbJ$*HjfT}D= -z+s5&n7Wg25A|B5uMLql^5>_DtMi&sb>IU7}{OdySMm>EFQOSVzzVD3#Zq}n&RBJ+@leZ -zr#IoYL`aOcDyQGD9%o#KBc3e^)_$rNgzeW;2T=>1HPd -zH83Y$yR%b)<%7KBQ`ZVoB;D^}ikc@yqv>`Y0!qS9GM#MnC0nA|hJ+7_q{+_mS=GnE -zO4hW+JMm5irz8QCwwiWgzZ}oI#V63$Kx#r -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 -zV;;@|aIN#AZ0s7&2+x$fKn@p}0HIb9U}%?` -zxI*U3pvqxvd9e?biJh4UPqb^INuu%AnYe7mmB`_kJ}@|>+N+3D{LR7mZgmI}S*tuZ -z@6Z`^?rE#&fmrTBYR(zaHN-b(%k6D5o;pGz83B@WRb<2Do<8H^qo3WD6EHCV6d{@F -zThEYIvMj=~Y`5nz-Jocc!h=&F+z*q?23k{l6lgU-q?0v;q7-SWLZnc-LhIfV#{Ql= -za+&29p|Uj4gl8aS2SUDg)f&$yDZcom1qlu!&J6=;TB-85W0c{%pLyFSf{{q_405A>SKh{ptN65Pgi<1Mjw;!BF&h -z^aWZZ3})>O}Zf6 -zK&)Sp+-GC8JK;5w8@%wB-AQvd!HEXly!wMqfk{zQa>M_2tEVRI`X#&>6ZyH{4J0DI -ze-l8eiR`CUbPNaC@b41IlV*vGAYJaIdc>Xy7(lq73=+@-D}!08+p}-(!jM72Wp%05 -z2wl01TQ9R}x{wQ)Yq1C*w9hKc(dwKyBbt-piOpPBH?N9NqcPB>#&jU>)7iNQL!d478<*k(2;FhA4oTAK_kEGT=vS#FO}WR=av1U0`I0Z;E()xI`xjo(;oxUUNge~;-3YDc?I&Pdl%vUa8Kvk9|G-QzB`utWR3Hi_pLZl -zzB^Gz!EyKB-^tQ`l949X*XbUUb}v<-d;g)|9>`pYGF%T6!+4Zj28`tG`xM -zrc_l%>rywf6dqTj#vW)z&&!$s)scfS$t8#_RGjVtfNjG_&V*V5gO)BR5|;!% -z1e7USw5*mqX!<4mN8!v!1a-9YX@>|qiHy1$DN!yOwyGTt-It}$+g(VK17f`^t?hA4 -z1wM^uTV0R(1AvJr3zFnKE_DD@*^=9|VabxO;#pX2w6$jSTX(C;Ks^RYePD-i`T`on -z0MuLh5i)@`^4`Qr{~lEjxRI$9b%~RM0V3Cv`!U=i$ir`QK|aieC|jdceloClZ#Z&jH&A9v*oo~xQ`ge=@&87AJa)|StFY}!jS>|dKbk;uMBy$AimqdqHLc`ki( -zkN02pM1RE@A)Qo`&Xz|H%VCsr==OdXh2+=!dm-Z9zdv$6%Gc<>#1FCo;fb>Hvxlpu -zzy7h$0&{I^>U^Mq^iY$`0P=VKyyX6?dZV3l7+2~;^P#KlM}Zz3zg`vx -zzJk(w%&~ma7^>-$6_vvor1_+G@%}S?XaGF*e7U*D(xeN#YrwLuWD5+F6jveV_^>s% -zs0BLg_tEaTU~7G}U!zL60epneG>H%B#PjLQHIse&FUE7pbh1C~{72ny_OtsvZI6!+ -zI{{B9HrTPufQU(&>EVq35O1jy>+x-?-< -zKLiN!vG4KYUB8OLQRquqi+YLu4(c{T6dbB8e0DFMD~#4`0Iz<;bo?AJ@OLlTJ_`OyS>n6n{>VLQz)-N{rGzdaCH`{IA6^Wz8TklZnNb+I1r|6E68ewAkB@$(<~ -z-hTi7&Ga~qv=`zL2RW1eZDZm#{_!y^`(!`xbNJGQ{Ajx*JC?5h`Q5(o@jZJ^!!cV% -zisk?+xVEjdHnxVRGYfaz4*)UX8_N|wmAZDA&I9*99BGApPtxJzpB!07u}pyWSB)ZX -zIK<;CvAc`FtFjpTB{TE>lV;0a+;_Pn;X(V61nAGdY)SKU(%$*;)1K9Y47Xg8or0`V -zob{0*#L6eDA6J2wu-gl1RIFUR3cZ6Lg(mp;0Lcd%G4kmzTc1ku%lqcC=`ey$xu9kQ -z3X~W)O?NyGDuF|jtQl;P_irkXVJ??tXDArc<_@mM63}W~%E~aj!!8z=sSz!D- -zH>o#NLnbcU(K%}|EDj}_J%Yyp;q*Z|;w*4M7F(Vch8lHiW2=Iz>X|ySL5~u>x2Nmf -zUCJ6(@&S^`dRJC&vUI>gkJ=G^rN|LfBMM@Xw(|=L-!LmL4U02bz}5&$4lY8eSrKxOIXIx?7*XB!Q8O@(JTy=IZ85BJf%|#gT0r3cv}Hs{r)Mejk=D<98Lg -zMquE%c1@rt%vJEx_qR&kRI%Q;Xnst$aUeoH8M}vd#c+f#VKalxjwx`-ly?HQ38WN` -z()Q#EJY7`3NR%kP*M5Oc#|aDn&Se3)>Ezz(O<-?00f`cDKYYBij5&wGd5yy$$()INXwkRFY-*H~ -zVc>st)57I+R$_{D^~M1q$;1G_MI$)2{8IE4Ney6Tp%T32oKxz#!-lL9KddyLTD3G& -zWP}G-8fyB~OIMEtx*PumKnFoZY}dp`H^u4mnCm3*wKzlJ@aa8F#CL9t-gOtf@I+; -z8io&$TR$S5~ -zlZ2Ijc4KsdRaobi+e(Pt?RXd-*WRCQ_RwPRq8yO -zBqU<`xN8ibJIO>?RmwiTCPTsZ*c=_YX`jDyhMvS~5SdBHl?u0}z>(ABvYJSC?B!@Y7LOa^()@YS>Hl -z3w!qkK=tI0MSKum-N`~LfKorck+Y6aD7mEv(3v?bjUw4684pjP-gq8|!Mle!5foe? -zv{nIilo%)4kszJZQ*dD(P$(ce$yP@F$;b#Fzz#kDyF#8I2~phP=D`iQBHgl~u~t~N -z&dv*T(h~eI$Aiq!QQ}jX*IimJUIqaqV9>MD7P4v3M|gQ;J#_My#f3132-Ll!n^Z~+ZinP{&BXBD)yJt?*)oE1 -z)tCv>)p5aJaDFx{0aiF@k%??o@r!Y&V2im!wL^&ycW}_pp{hpR65$!H*Q4eR)9dZQ -z9k`xYj8u}x+)$@LOGn|;>to#@RZ+g`&O>1WA0)W7VAf195XOr=oHIhY9e43CKO(+bFxWcB;F+LrQc?(joa>| -zeV+@qdat-BsIDiwjtgxskS{P3#vy~+{QQ~AWR|e627$1UFlfI2rCOQXs16H}pH-$z -z8UVAdh9dtdU(JZ3Wp6qo$cI{Mu#l0y -zeHw-pr>IF$d*E`z1LF2iW*8-F%Qwi{)WOOdas44Yf~Lzsz!7|_H_?&22&q*{ae)Lu -zi`U(iraX81*Y18HQCLZp0yrTR7EVVWrh{Am+415!$4yq@|>7jyLKycrei2{kdB~TIZipIH>PBGOTfE -z;u9vcRmOrqt#cLA`)C{`c(SHLKOsNY2J#u6jxkpqgSU{oLldRnYwK_@e^J`Oh}{mhXVj{X3U$eAhmw*8=sVIKw0bUQv#liA(FE8=A;st}!8UE78l!kU3tuwqt-Sq6KyU|9om8Lo(h1m)RsQGdZVQXwl(PM5w5dc9;8 -zqw#U#ML<(JqI}+@k}i~Gj~ayGFAboLdxpVptv5VGVa{oeyGHkzqJ5pd$);?|O5^*1I~ahemRy@g7=Z0pwWdNPRZO8bsuUx3R32{5S!gT8mt -z!P9{gQHy}LqiVuk=3;;u7QT!4k11|@bjPA`L!e^gn;hzF;h;NBZU3kMII!N{AJP?~ -z%x9aHw2+s7dnAHV=FC}2Yil{C#aem!wgk0{G2Nv+63E1fyLd;@9qTWJga*JsP@2pn -z2f4zqW3oyv(@j01aE88&x$@YdEM)#pDIlh4vj`>$F=a51jOZe8GTe$~=7v@CbtnW; -zc!VNa3pBj&rHIR9wPg{7mNa@~Qizd3I-O1Ej -zfx>*^R~TLlz}fUSDtBdqepc)4J7P*|GPmqnYM_N2VA%E(+wI75p;^bS`AK4K7~*q5 -z-V|8KT+?SvgSZ#4EAJd5^*}hqiu#Nd`6Xdw!(;(;A_>{DQifY_MRF)I0^;&Dlgsm= -z0(X(Qce~z-yp7nlpvqFKo=%k*h+AZ1#u@>wWJb4WN3PICs{6*=Cv+vwo0Nrh%(W(co_} -zyN2n!aepV!y$_`mwpLGcV@2Fdgfw2Io8fa`I~WRN7UJ!3k7TSPUtHLow@p@?fY?FH -z@pJ!@;@qCYZM|of2{G(eaTc?{73^Wa8cIXu`st;0YeDhKcQk6yYv8JDOcB~~G~ysE -zoKiC?>*7S)7xS~Xar0a#$5kb6bmtb_EhFfm^0YV819dy*pl}0&lquIyK{ee&f$KR_ -z5`}5jN?g=3f?Cy#0vy#uf$74RQ(ITh{Pf3dKhV9|LRmt9HgRymxu{K^P@QrFjvjtH -zC*3=jGoxT~;kIc^9nCn*US7iB%z(cYmF^MPCKIr3Mh~th5jr(vp>oH8@k^3diq2Qj -z_70W4iD}J)TTAHJ*)lc&7W4xM9Te@5KD@ONj9+egD7KoIwp{hg0P(w(Ln98%{Pl<9 -zrh^om`oXj?w|4;LR#p#6cGvLsRED*B{(WD24f?fa7ZV1pS)dX9? -zbmC%2k7R1~N&~82=nq;Z9cfBt)mZk-xAA+Zq6U;1#hYVPEP{6JEWR;{((@+W#aGO$ -ztsh8$Jp1sR17l$ez`?#mxKAj#xB-GlD>Bd!`x9pB1>bC>oe|?$6lB8IR}*{HT5YFb -zvj#>R={5%qP;;=YMjf5S3|SJJdkm;{fRvKI&RHfIl+^hWlGdA%GR`!9dt&XW_vEly -zWe(Z(5JNY|VsrOkMTVRZ^Ql=HtN9~oR -z_dtsM4ZhWxQYbpO0G_FZKH*VX6+R&)ob54I`lCMt(c$(!X`FdvN~|qq|6$)$S~XZT -zx<`4h)7h;=4uw&~-68Nc1kRD<*0*(3PuS>DD-H7-+87LrOBCrXN#dK#(gxKr$r15O -zfmpgkZ{3fU9JW4uMJ>{t0>G{WLy@gr><>w?=n{(-VP>2kjWy~%W0}{wFK*DGnH{y= -zeN@8Fw|>?h7J$Rfl7$s2<;{^_;F=^M{iwMo;Dopb=t2ZBq~aoCX$+`)XHgW5s=6vS -zfnHe`E~E4qvkWBJ -zexy&V@hd22H1~lHj=@X0O;q4J(aNpX;jT4T+fxj<3NTc=xDkDXuv2C?b;Q>y;pG}& -z!4r8D4u~>{<2NBX2H}^|nycjOR~13;AK#&Q|7B)Z0II}QCL6eUFyOX$Y+Nm*Vt-A* -z{1v&&nU1E~>l->|IRy{kHQK1X&((I@q6wsBL210Mdrf?)#^a;~JdtBeNES^XsW5rN -zD&^F*y?~eR!$w0~Ww!haAiyN6_pW -zaMo~I-gTR>Cb!Z=i$StjmEfe@IXI9TdvW_63>T^8GFIS=jtzHZ=TvPR3R*5M8^KNl -za)1|9O=*>nvr16Jz*~nDN1`ua5>W15N@$GBx%Z&okz(BtWo0o*T=6ZG=2-L}J#3qw -z8TDw)aC6<9_87`awm`p3=3fD%3&_^Hlh?>GX5{;8uV_}1I+{v_p$uQ_cd&7_&2F#? -zh0gENUPvBMtpO?dCIvNU#!TGeO3H`UTg6j)Fpx$L -zx7?fcR>Y6V;=2{?G5@KlNjJ?&2sP9Ak6-77&gLRSX0M(cUP|6@@LGF%lP -zry4*7snS93DEjM-OhpjJN!L{jE#oaFzu(y?=kPqO-2z3442Q3A#o# -z(HEna;hV^R6_7Q-&2b8wzL9p_gy;|sK{G~DkxyB>yDU&49o@Brnyi%}GrR+P+*wT# -z58S2vu*f5G;UQ2381bbOcos7B+{Y9f)2MHiFGw-q(QW%fT?|FUkl;`~&*CR*V2l4o -zPaFa+9->y_V~o|s3Fch)qjDQ-muWvZn1OVlLN-FvA4>@AseYo_ixJ8jfmY&fGL34b -zTr}Ust(8C%nn_T0Zfx7&1_XkgzH2_W5f#daWf9nQy_6v^Q3Tu_H2x~F2~MI9g#5BbVzg{%pn{+S#q_?Psgs%C6->CN_UF>OGE6o35!pu5NqW@eCZ9(> -zrQq(8!^zu6o5#oBpw#Km6}lCqI7--bfyre$J~9&Dj+orb2gN>4jjDL~Qz^58uH -z76jF)95y6vQzwk*=2oMG$hIoknk|Ehu?_)y_=;58UAf^9#aBPCsw-yC%`e4ipo8?@ -zsrD^XlZS}ZXwOgyYTHkW2gkp{ES!u?-vjs-Ra0um)0v-9i#{2$n3Gp3g~QA_O!G9J -zDEu?Pei%WBt`$|hf?hjKseHHr6v$#F$XhUyDu86trn4GBMnGtT$0lQ?ZB3pJ+G_}0 -z9c^m`Y|=z{HyALKD*G8}$~(Cd56MuPw{Xht72M6Bd%6Oz+Gel)eLk6 -zm`l5_$OS@*kIm7f+c{ep4Mz*GaII93q5q&LiUj&2Ib5G;R$h}u#3rYxwqk~zPA -zp^~sh{!8!Ef6_jZk^%|s -zpbTo;l`I_@XXO1ga4ejC40yIw;|p=EkcOeS!hA2@gOb8eB#8SuH`~l=0%cxIMYHt3 -z!Czn)U0nW&{ZYBKi_CdgkLR+fjY_Yvd2lKfi4}bpfVaurhhz^Tif1*1DaZiz|WW)ry2$hI}IWp!<%u5wwdofMRbC&(3ZZ9j-qfXaQR7lmIp7Ix?Md2N(og2)9OmD@zN(|qcGMwEBq5|wi&oy~0Q0F-lm}We$xv_2 -zYyCv5&tgN>8otzopHA3#NL#@pvT)86CUU&!x(=2!d2jUI0AnI32V}h%!+9NT1EZi( -zo76>iGOTUFXsF1S(c)eC1=n#T&U0%gy9{7mHA)glcys_UT9kR(uo>L2DLow>bcYph -zKWK~ZZ(76ROB^!!q;9AG7^KH#Zn@SjVE8VmxW6-k+jjj%`Wz9cO=NHR@!9zI;)ZzO -z<8|PBIRM77>2j4OK4>By^M4Lz^r`$A@+E!wD?CvC3Q0k5>&@Ned!QwE)5m{|egBWK -zm%AkCvoRR|b%vlI$tC`CvIl>@fBXJA^zol3e*ceAPMRD;@laBnQJ%yjF!4vEj+P7JvCb -zVE2r_Oa}SJi~60H(U1Qg{{H7M?b*ig0E%G^`o5fu(f_zKhF>l%dhMpzTg3;Gh5d8r -z<3Gl(*WBI9Z_~ib8LyYw|G36~i3o---nR@DAj9{7yyf+RGWPvH#$F!k;qLzZ+t1>1 -zV6S^U$-}%8hN%A-eZ3+6FA9Ic%Vn6R)9-)meSC1B9P)K^k4fgSrS5NvM9%f3S3oBX -zS&*8ey)AW+WYoQXYOx?03+eA;)6^ou@iX_ps42q*UWgzh#D-KHIu)4O8#$zrY*kBV -zi(|J*;1R8)Y95l^Wwu!=Mp@VvxRaTvmdGSG1v>~x#etEc&waas!6OJYJ8rd56y^0K -z8}{xtg^{X3aIgmdZw;RatUg9w&S6d=09S=tt;gqKK3m|3;A$o|2b0*5KAvGXCNvp< -zw<8xrgNQXF!e>_L#tX}n8bl~l-gdPerUMyDnNLQwh?P@HD~ZOPWGmlO+@I}>NAG7; -z7(7sVYs5g90IrDQNkPF@QE!1*sYf*q*uU7e;f6>y#{*ech~U{zD$|GHQPE3Z0+UgM -zI|4XrWkkl1fPucLHP1D#Mah&G -zq#IpYY(6%}r;@#W`}<+Dk+V&ZbKmV*ZH)eE!; -zCiYOWOu0S0^Mor9}@FvG2H{*0=K``@p3Tf -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 -zI##wr^GJyiDOPBK4HY2SbV&fL -zOQ%ug7Q=VhO)+sYz3V+LcoF4N?9>Pi -z0~0Qc1D)MxKIGj{PJaN!>6m>r;V57EH#c@$u0Dlr}Glp~;TGz~qZ(xgjh$Lg$!!jSShw5~&cc!>2K@e3s-GLj(x`geY=B -zHfh7Ik*DDtFtNtX*AxK|08?&L*!yB+0GM_TQ`|1z8$Ow_x9_*_PgChEPHQLZ*jWN=-#ZJwm`O#oz)%38jEbIW8C0$jgW-sc! -zraRI|Y?sLKi8QD$s|Zfm;1qBW=s3p? -zMG?xGvuAiuDG^08Pf_iIF)jfV2c7R?%|WO6xC@rT{J08>h~Uj>f6}gb**1~HqXf^3 -zwMq)OahFGsXXVgAY4DM1_7QZ_dKS6Nrhz$7uWFE15#0vLYO^AT9^c|cVlA!?0Cp-x -z8;rR;XTX(tiAn%CqC=HMA$fQ#9%G~7fRwF<%w2+=Gr$6rNQ;iZ$G3-J@+462jH$xw -z0cA>}A>WUO!=o+d+>{24&7`0m07=%1s^9^ZifJZj!6ME+E-*rK$YJSE#0;Gz9?Dr? -z0yc9&vqA%m$1o*`0o`l-STw;S8RoS^^{JddyY`lu-f-9*nt0;bO35W0VeJ;4JW~EX -zMZNU2?a&~h@*^IAzQTGkB4TANJPJmPK(`l%ND;EFB9QE0Ptf|AJR)JO!l`1fI%^^A7%i{4Opm5~wt4 -z9KY+AS(F;2EMZ8tl;+UpsxW8In)gVuS~mxH1#q6Hm5n%=MyHC{B8|2XE_0Kxi8o}b -z;=^3SE!&>-r*7Acln8C8Tl$V1m+E69r9Pskr$|jAv~){S&;m_}+tgOa`|lA?*S|`_ -z4XUJhb%|uOoO@btW0kcO$_msCV|9l&D#1;zH~cI-(QN>uWE?J6gL!JHtI_(4dGs~T -zzr`uPZmx~|Bide!Cab6zyBM|7*G!)QnHJZ5y$-!I>$fb1uqj{)UW+L8!(=h=0QW&$ -z1^ouI%3Ul}X~>W5r*B*C0@BgAZ?s}G+90cnBgfZBmhBFv(=p_Td2nkK%L^3lcg_5d?HOUJXjdTc3*T -z9tL1ZGB#S00T^9fRcady?abwur9FBK4Fy#D4KG)&MmWV>>2VphG;F?ka%>PWDklU( -z0V&tCpn1sBaF_2|KI`(@*;{fWyBC)@JAW`DkwAV$EV3W+0Tjbkt@8MKO~dmTOR>`8 -zHr|&~KJ(c1$zWP*N;c%X^=T$8*vg?ti{YV*#61Rorpxs4NHY^|q^j`m%nPRjW@P^G -zvwRjg#f~7au6I{vu#gb}B|+)h>e%a?lC(e`AqTKg&jv`P^0yavJRZv2&5TBxb;&10 -z*{DUt6{GrFmrJoAjI?Fau7D6Ac|-Qkb=j<-O|?)(vLpC|9Z8Do^P?kgda(@|0-0rw -z7M#ccnbHQY!Y%5g>#O`iuRa!o@pVP~2m>pv7TP8`cc2r;l*hSl3*SQ)&JL%FlsLUO -zmHmTJMQULKSYOk^!q8=qt804yeb -z%m-TaFC=0}o#UP4^sh|5*g(b8085a}zhZ9gmM>4%j7`)umxmlV+^&Io4pbnAOY3He -zL+S#6bj>H>D7Lg9zmQbWo7PeKW2fFp8o-Wv6~hv-C(n?2G@wZ+^RPT;#_0) -zdyok2ij3g{B^SDig!t&JDT4?tN5D!MBN? -zlcGSD$ENPi$e!}|sUdnuQ##Ph4tDYB!24MI9D`(zNQ=|z9nw%EwAlEwyQfiER$0+o -zdyy7qO4}RvW~b8d{oro3GM;6|E8@hJ0z7o_2X|j8k8Nz<;vs}SWGba#Ti8KnFv3nK -zk8|PMvtF{CnKb`EPxpdmFDl@!ulMu1s8|4+~Xjf!y{-W -z1f^S0EQ}S_!np$y+0@b$E7w{*8~s0R(jWpEew#Kum10f0!h-VOl>2S(t2f4b!j%~@#m48Yn)D5G`!FQ48W -zDAd>;&5~yMW!QmE1ivq4$5t6?85_k3bs>=1@=aM$KONYJSUdRUiip8*rA-2B({2n# -ztp!AihIUUz+Za)qtwBS#)h-2;)wFv%I)36UFiF(pf7kQdT)5J4MCr4(bCjq!$GYYI -zu|HdXV8Df^?TY!59$Y;T)ft7_b+8=p-u?(mz%EwLyYA_oJRi<8qIwl~MTVj`BP>QG -zjazJ?63M~Ls}I!<3=Qs$$3Kp~pl -zg7WvWz3<^YSJ=zMLy<1d-i-F*>CH*69UIrM3uG4LCHeXZj;v)g9LYtOO>u~>xO_w_ -z42ttuPnPc7H(kpE>lf+0TFX|4JwJm@8ql#cGkgQ!)QG8Gp$gf1>DJVIbe0`Ef=q7) -zAlD%>L&$cLXM4)#B?Fi=e@+VZ@v+lBKC};*)&^QPa}*SX^M2TGFc$fB%d)BA(YL6{ -zNOto0+pkUKY2A=K{qbd-9thF%`vov7U|L3v -zqTeM1L{HO%)EZt;^71#!C@ -ztq3(PXv(4!;onh1`_`hHu`cpw<-x;V#>oMxo(2ZNbvbg -zo8}_wP~e9_6wy9jyx|`$XiF1b9^j8fo|6<4z@13@kJr~H!tw{te&)h$4~;|xH@Ic+ -zr0MAI5u!${NJO7B+_%zH=3v&p2dzGXaRY%0x2j>8KabuWLNzH?1<<@?(Nx+T155|0 -z2p76C&(LvIyrb+8Am`{UR!PbBEE>+Lp1Iw6m-PLQ0zk -z#cCNms1=wi?t1LsbusXw3i2Q$zySd2)Oy>mq&H$qp3aV5v-IxfOz-smEm3=~n3F$z?T2EnDL}9b%MF@= -zvWXPt-^ri@6fik~kk$VS~N5{4eT=N;HNt2!AnlvW7L7c6t -zTPLT@g8A<&;zNV3GXQoqv3NzKt``FkM#y=#ekxjxjG-C7e;Bm}xu`27GecZmTRcd` -z(l#+l&cwLMi-c)6bI1oUrL>Mtp2BM5fQc^FZ`L>m^nzm(Xl>~Noj;F6EX@t)E}?kx -zFETmtcBJ4Nx8_4R2m#xqJUO+r$~=v4uz~!9FWn3b0LMgdZwRmY5LKkIm~CKqrZcc` -zL$X21<_ZVB74D=TQ2>luBjxEBf!E-*eOgWBC!RSSc|d&ch{<+!2X*QP{$8F{U6fPNMG$yc5%t1V9-!h(II`kdD`O+9m<&!0h|{A#b?s6-T}^; -zG*ac&Y6Uh31HmzCBc?^;K%eB^q;hp%4MuY}kVAm(WK}4$ThSX+GW!TRK4W*2DFpY~ -zV4Q!KG!sCEST`vFNPH4PJQOSVe4*{EKXQc*SMp(;upV7?s>oH@83Fam*u9_y1CApg -ztOGjcTk>`1ZZr%kWVm7jI%bnWey|FnnK>O2i51Yg0Gn!XKVRXdP~vm&4PB^bM8(8I -zsR7pBSW6YtoR`l0hOQ)ZjQUjAAuT1+%gZds0AmMJ;g5Gw8q=xvbB1{Kn}HmY#^pVQ -z+p*#rkkr#%+)?$M1UDKKc4kx**qf+1TlKRLOkSl~l!b^}l;nY#Q0aD=6@(>NSO5*d -zV3SD%Lu1nUXuxNT>I*_Pe`^c1KmeUgohCVMxBTD^TyfLj%aR7V6+D`V08YLBGMco{ -z1lR!A>oysiBa;Zboss^rIO4`C7prw6ADynlz}>)oYvR@G0{7c9mj -zGcU6>ynF0FV0*GTvAxM?1Ra`n`NL5__23TquQmkfA8uBqEl@>EE3Bc4z@D&HWL-Ji -z%zTux -z;xCb#eYckm!{cqcZS5*x;IvFC7E@>_)i~0&9Qzz{o>6p@Up8@B0}0yxAV(^biARKV -zZW&cvSPB5xtS~GGb4`Lol!HIaRRN#JiwG}oMQ(e}NwU$C1h2t*#b09yIdcsQe=z_v -z3nsb&g0xzOJI!h5- -z0omjygRLPo)44-9$;m!pkWKkja%<{=&P??$9LdQb^GtmmA}7JpBCJ=1&yqD@aT(r5 -zY$t@~_hVOV7o$?5Z7O)pkfAJx8^t90y^Uc>^?(8l{r#JXhK8fcf`}pS;InDi-1#m` -zQz)ZZZ3V3_@5m`U*eNRFUc0X^tW$>BjN9*e-X{Y+>?et#oDkdtJ(p_}g(Iv%oZVOj -zY?;%}wO)+zbO1?;19M^=Rp50ZML0_t22U-k@k1+uQ7h!xIbCxZ;+t*|)x_Kkld>F= -z#Jnq`68Riyt^`ca`W)lbA*+@y3fV5O;vgotR_-uoP5O0MwPf#uT?f!!jOQ`}=11<3 -ze8QDiE{AWxni*7yjj)y*SavI5>=FWG%d|*c*IIbIMQ9P7lxihH=#per|4XTTTR~Smp;ZE0UA& -zX|U+@=>+@%*sjct1~N;wJ;Wj^Q^xGf$WT^DBE0+V@=c%eqc;QA&cnsqTC6i -z48*d4bz>9kmPZcl(2GhX8Eui$-8cc_E%`}r3AoRP#v%s>)}@KF95d-A?IMd`38!7eXobF10}5aY5CqXK)tkpwpc`_=LOI3A -zrg{SSjE|%~gM7ZhT3w(>fy37_fe9xdAvnX%K6>#UcVrXTjI|BO><;wAy|zR|f3%J^ -zuQq#tiGmE-vK)^~90q$?iBm=95dh*Tq%HJaqyU2{$dMEGYN_niT9_4Jt&q;Hr^UWSEEap*zSz+hjeXC3k>KPI@d5*J(sPJ8NAIWE{Ci -z_mP-)*n<857&S0KFSR@#9i4T5>-i#;V}=hu!q5gp3JLS5s+~c{ZZ$byK`s1_NpC>- -z<84=C3*~Ysup_j{s`n())T1U1HgQ^lTU;Y>0gshI{?NHfI){T#dh!|NOFvC{6UcjG|V -z?=5n)iQGZ7w1p`qwjl%Z^J1c~eYE`0oT-@9CaWdmbS4=oSzRXA6g<`{Uh{ps8;(}1 -ztWgbmmgU}>tFA4f!?@F_gc?xr`#onfWmr7pR8j6mWpx&x6SWzqfK33d3#ttLNaj<` -z&3Pjwg@oJf!MJzwTB2LZ+G#E`jIGfB>7_@1Ba4{xHqH|3nyX4eQlF;@om~b|Wkh?) -zAG{Zu=9Xi=d%HBFa{r*(9ryn6!wo`_q=pX2KsDThxwwgG#nw3a0l{bpx##hgJ0Cf( -zkb~g#M!nVmb<0Boy`)Yu9FSWs$xldyvfj`cApcq{b_752whuiYrNq -zxHl^giTa4nwFVW;7sDwOeP6Uw4Nz}%WhJa1#Rs1a_^?F1{PD}yCybAc5v$~uCD^pE -zfym;S&1rU3jTNd3LEvM#~4Vn$^SC+t^{&}FMa2o-i3V(Ey -ztEsw~Ktmb~x9`&#vnZa~S0v@RD1u{&t9znFd?9JzngqzTcDA}S&c~1TOSzolT%|5J -z$n%Bvlp1@?c#|sLWJc1offA~TLuhhU9jK2S-I0GLZ>FL*i#mv?&lJ+xu;@LS`D(Iu -z(?7TQ-Tf6{{wr8tJEY;%Zi=LP -zo&asudK_Vok}5zBw8KoG?I`R0<0llb6;v-slXPSti?1L$5A}t-N=6jLlj(0;9OaW4 -z%b6k95WIc>@SAo)v5?VudeaaoZO9QE^$tW=n(Jb}^hSfa0%68oY3xbspCoPXCP@=n -zwIt^R(fI8|_4k|P+kvgv#3E_pxm`Y2r{i{xg+wOo}u#)M|W{D4T -zYp`GtMN>devWd2Vl)3!W!#$-Firhga

^$zIm+gm73J3WGX*Tvo)G@}t=p2a72M86yCvr(wYrT9>vWpR-dVMKk_pboc-v(kJ`X^pR -zsYk!L+vsivuvn2^o?Df-czpZ2jxgSNraQczh^l|Huef?xf{KY?gXF|Lfx6KXW%W|n -zpiD=&_vHU0#?9grZr_u%l4@Nr$T={I-72=pk?zSKv0_E3^6a3BR0PZ**|j}S<|wJ& -zn)56iHt`dgzACocK<^}4NztyK4WpFk?D*8Z)6{j)rwqgU3TUk}2I!K|RiKL{$ne{+U#Z -znnsX(wOf~!S!Ga=NOro>VUp=a0*8BjrkJo5crBwNI%h!=wzRJgCt)FNvR~uZxyTw1 -z^N^|=%GoM)ThOszr;=1A#h80%!C1-YkjXwuMT1 -zBkLzvN*CKMAG6Jt+bZJx%mDpr4b^#vfQE^*dV=rb-HcCDE2hF)lKHhWpS*KCgI{m1;OiIL00%10!&%A6{wAHlkG -zdy7Irhj0(-f_87lijwH?MMY|GoLV`mI5EWDK8YM)1uB2+2m?c_M}a)$dDCa4Bli_d -zjcc}K&Aq;X%v0`?wx8Grzo1Sr*KaWa6IW4OvZ(yx1gb3|b!RxA{lL4lzvC!Js -zOPpQ!RMkN$iY-~TkYGa>qE5V@H~79}h92{eL!~Y1wYuJP6W8t19Uf5UmRMLB2w;*v -zExtHKC27>_cYgby|KLe+EmIu1Qk*-a@>6M%jjdA;+-54JR-B -zDfRBMXR#r!@J<}JHC}}WcT`;Brqfiy)4=~d4ZnAHn@9P>eq#NQAAmF*JU*w}ZDcbR -zmTpN3Ldv7FP$eR;hqm&LEE2%XgvEmN7dWz!`3EoTIzQ}|wt!~xIqO9(k79mOX;w#T -zhZP>u=6CHH2CI)4$>yf{LZSY>4BTrJ${OVOI`OD`#0>3q1H-31Jh%DOP$XsfWRuPwc~&_W(YsEgtK=KI9Rq?H}FvbEBWSs{TtB5O_pE3%D1sjE{B_ -z(fMdr?crYQ$}+6`TQv%1Y?_&4`*Y0y$JjFdIo7U!j?p9jF~-%lufIF|Ip+T3dehgR -zV`cGJ^2ZwKC)F#F60^w@3thiU_zeqs(J%< -z88ZYf6^dI4>x1IGB#}cqY8pgdmEPQlXp@%?W( -zC4Rksw|gW{EPly;`}h5O8#Pth>q{D1HBW|CEz-yA7rV@lp-xx)y9mb6@n7}>I8E|K -zbSDaq&};Ge?|Rff9=jGSH}&J^H{HWto|Ak5%^d!GK~;JDtAZ3iBHtR8an-XQyUmF` -zA>BbPUZl~F;wH7Tt$uv}rLULv&SQGmXnF=K+hnZa?T2j%diU0U3>V!>C{<4s%Z!)q -zV8mnXm|ueij`(lVlVr1h<$U0-j95i=4Gezmrg8?qB)|hEI4LhmV9B$1C5(5V;z=h~c)jW(vZMuQ4YLs+FpQD>PyyWZ2U`P1Ib -zPbie&yI5Sh*z59)fC{QyaeL*Z%NgT=qQnZ=Ln-sQMnJyrk^C`ZzN|VGr_)oHFD(r* -zCRG;OeqPW8PLpI;ekk}J2U@JBwrVGRH{aeZa|$b=w_vn%6sCxWO4!YmuAR%8{faHd -zw)W}+8EhIh=CEWA+kYleQj_$M2UaU$J&-dk0?tcq<|(W0#yH6buISMNad2C)O}I_D -zHv-db3EwPPs}3j39CUBM^A@^Gtzg>@whj32R$)JYxx&u)AA*p3AYfcEvKyO}x+lpP -z+rq9q3tC9Vp)}E7gu&e0bnk8L6Dif|YbM(j&!e=t^iQe{-)9R}}KsQutzvQA@yO -zUaHhPiB}evuv-Nlxrd#%NK)L5ZdMw&VHHAr-Bjj*=u!GuxEv!L)z9Jp^?&KWZ^c0< -zzq5?x<;LIAUzO@CEYVK`{oH!=HR}ciZ+SXx -zhM@zHFMD5%Vb)Z^axnBt_Wk_%VIT4fD?Uc67Jv;c!XcXup4wQf&(WiFb_dDLO7Frv -z;SLCF3eb+~6E$o?6s7a&#<5<*_Z;@`Pn#P6B4mG1YmJf6=pwb_7H -zZ3G-@*i%4xn3;XUPTv5%Y;cS7$xyrN<>Lc+Jv%^$o!0!;wB}yuDXM6yvWp{<;4GF|7@isnw{C(L@$RxLcOHB~?uz#DHsC^+&cFxL+1cm96>P;imk$Dt=!iR -z7^VX9nzOM6M_RH5_uH;^XLiOE?~lH -z<7D@6`aG=UwNa}^+l)7t?IY0l&~7U^4clhC;8JTBPC@x2)1FNbemU}2fjY}MGiKW; -zr%-mO6F;haNBltvqR)c|Sy;ISO1NK2@-MKkkckOgvNncg;f#1zVQ*r`4xPL=GDgHUMjTl_djH5i)2aZm!`4{9_b$G}|1KmU -zlUwYAU-?@1Beyrbf0Hx;fRVX75AZeR{L&{IlP|mwqGV2nY_g59SIDUe)%1b|SUR@M -ziGbC;6hJtc8G$iL3h;mB1S?KWbO5g`1LvRAinL+@W^ouY)V*|w;bhG4c;w}QA4(Vj -zU+=+~9bU`*UJ!^GCci+Qf7Awl&fV`hOykBI$W-J&HyDI~(b4I^(e+5Uk~LQTDF1+> -z18Ov(lS|M&SMluJT%cR`NMGU6iZV*vW(k~J7l6_<*X5h%R}R3L3;y$tl-R~-BNq%y -z)YnwLULm9p20{3{`F5}VMatQ&oZU~UqGZHXOf<}=VrwVeC{iO0ES4u -zq(+;2fXI~q7m4}ZU@H%FyuM_v9#t^BNk#X5)LSos$Vcn+tL?<;S+N%%-I|=l&EgQl -zsox%}r=B({rR-x;VxKmwsFyBbrXTyJNmIHxu@B$Bmt+R-?=BTtJf6?#U1AhZRQL%M -zXb>oY+z&928FJXZZ<@+vZt#tj?f?mVPsOD3;qS2|8s(UE7Eh@5n4>jhWuB+R*f!8+ -zM`q9JjD_pwVuKhrkla>H_5i|`=Dw5t>>H9enLP#UCl@}G#(p2?+;o3v0`(}Ny-`{d -zkS3eTN9x@=!tK8_+Wo;YCz6+C&z|=EYj57H^czL2G?K%x*bduVZTBjx*J{ENwSOLjVzP<)%#&W&NRLjk3)X#0hq^gshLl$_+vDfkh={!)04iKj; -zgC4<%({oX~4ag3Ck)hqIV^ZV`Md0i+;oQ|>L38l5S&|T_14ddcibq}R)x$g_$ZP&0u&N3;yy<-V;^dWP!=&0w1OhZlx$v4)^Gh`s3n;nLpPe4Qacw -z`>;du{9i&ffeC6Zg%)wRLftHad!kc7k3Sv?d~+_o42Lfyv!Tj4MI|Y^-ks4JpGN=w -zEw@xvD1upEm<^B6aEG+fi^lrk5DF*&6WFC-iRNZu+JcOc0E3R^fh}WcGLdX(c&h%h -zjCmZTAhqaZ|7?z2qJnUL>1uEhXEJ|%>Ksq^%?>MhRV_z$Mz{4S*JC=8I-`oP5(IqW -zUBPH-nEa$2$a())Rv-g&w~BhDA}(gMNz{UB1(rPvmkfzfs*4B~v1$f1`PZ5qK$9Cn -ztX>M*rCkK|WZUKPeoPmzvlDoiK8P -zt5ugn!^1bz8YeyN&S>tbF#)8aIqfVcR!wU5QCq6dpSeB%U5+K<~1<@q&l|vi!W}j8j?a~;duN>jexy!r0KFJ6x -zg#hC79MgOFrYXLP=A!&FY@Blr7l4>Dq>d)H>ZO}+QDd7fLbr|TVXF*R*mB)Qh#uI9 -z=q@K)SNni*wDO(u10?P;9Ss*}p4JCXj~#5<8n-zvt1h$%X(G<>NrcGEk*z)|*W@M5 -zpEjv?kq;Hb!0vVvg0N)XGwMjKX#V=F1ttxqKxEr~FS;V-UVy6I>55$8l}<5*eNR&U -zd+u{G%z)8z^R3m-Uq>6pA`_ur)ni2UpSPw_M4QXR2_2KS?^bOAO&4)o0R_POKK$`f -zc*gl_ZXTeTGUS{?`3j@LDN#KmN*Nrmi)C1IXc+< -zTM>4wYxMG8B8+aD&v<+j)Zr&CT1{c -zfu**IqZ0`ycLq=&^_=pQl@ -zQgh)P7QbrswEVPNww_FGJL9WKK?5zSpt()?Q{gFBNiPQ@ssf8pZ0F80@7BfMRa=)k -zt$wAy;w(Xh?ij6#haD;ShliE_i~tU`#_P+@+r*=>61!aqp)E7H+if!Q!%qA820jne -z%ZIzgWO>5@_OiAHh9-c`P*X)x?w|%1KjI$@j4;eUen^2C`ixe)adAA<7fbqUM5pLO -zzlm+&bJXmUX$BvE96(SSP^A$gv&Ju3dDa63hxa({sfh)CwUtY(uHDNTe#YG9tP;$6 -ztBf5DB-WQeD%@Dh31u{{z$rBx`w@Ni!SYZKbdWrZB#AkB={nrJkNVoe?;kJ4-`p6; -z-NZUGXzPQUEbknMOQN9!`Cq7Q7rtJX#B-*Tk!pcE2PFU;j`CG@SJkHDzsYUP?1{K< -zv>i@IM|(m2fG(yMJ91LTXg>SFFprN7m8fcPM4DQiP#*aIHe{8V?<9Rhos|e3fa3#x -zqTg?1Gl3}s*?45ncUYY*!%m``-vkSiohSrWYS1-w0B?SS%l@#8!THpOqwRdtB3^-2 -zCx4n-o=t(*6ow0aH@Q46@ZeafLG1tRieg -z?$2gr$`Gv3*v`6I@PhU`EjeSJqXlqt&P>3%*Bs~GTkqdomde^^EQ3*ucxB#__6%*e -z#s+MBj#qE}dZgSrGbznocUXZc^KI!(L+S3bMucJ$H6y_^xS^`{fRm$1gBIwxQDXJimm>E -zxW#6b$+Vs{UXn=6*`TfKRs4@4e#~_wQfIAEeI5zxBoXVP$Tkla6(`CnRho}7tjEPg -z(PqGkJk@iv)F4C9zkXc`ZS${aGOM^)M}p#zVtPHqebI|wi!+!Hm)C|4Y>=5}K1QC0 -zwrwK_$23L`8X)%6gknS9Xt%RwTNhgJi~_A=$nlY-j(>PqRAdcQ8V+jQuFMLViC*y& -z3;u^SB0mMZyt3ed`{l4$A>aj<%5LaEGPt$Bq2-elN)wr?5V(4tu9{PL?p`n#q$pq> -z`ao#0gjW=98e?b?hruiUsBh(I<+b^!E4rKY8%)y$6|Yw7Ba(zkWfOf?u9*^BtcJH@h -zKm1gXYgdDnAk%`n+LvoD9bG@;wiomXDd2~mOanPYNPg~AxP)lQB0KZJCb`|kK$?!P -zJaXfxfK(`77PPLTPg+-1s`XmO7c?En30*rN&wI`lW2_(>g{n?t+}>sHmJ5Ac`FK;; -z6}ywfY3LJ5I-+Uw0BH~@UpGkYAI(IZc-xF#7Z$dB7zb||9^ -z$5fm_BV^9OmH;(C%D>#pvYtW;q=G>jqf^=Uki$J}HjWSs@{KY -z{H_FH;uk-i^e$AcIyJaxxyK6HizKpj;=08bNTn-H>Cw1iuHdOuvZ77dBnRR$wkeHc -zRsZIx)-qTqhXvM2 -zNQ8e}AWI%_V~z|B&<-jeG=TP-6pjMdqMkP1vF#aMb4!D|vGT0R*p~!utLdS5m-N?0 -z9{5yURW*$o5)Rfs`jo;YT2;j_zuriq=viODaPHDZvw_!dydH1sVV#Mb_bhH9er@~p -z3oAMNmy%K%I115G0k1OO!qIg(`HBKlx*s4nHkXkiMU4^Z`z?!3JF?LX{;Ec8%Cp!4 -zPz~eg>YE?e%YfUrKhLW7zy2I7p3sI0olt{!7MXWDLgW4AE8qbCOH3;MTlsHDHUm_5 -znvRsw$C%AAD=0R_-F&0(CCMZwVywJX9H+I!o!c6XL+2_-+FTmusLtif@Ez`cHFuv! -zw&iSIo@8Ya$2@#YYOLMrG)~TFuE4OS9&DuIo`8olU#_>&e7f9A;h1HW{Yo+qM`@2;H*PQQSEOcgwVD@P^Ag -z3v<61evy3iNq;!{->rZz2NsY6^>6uTYn(jeG?{+RL*?D9=SJcP#TfMB2o&P^%pSVa(S;0RdNQOV<(&Z28081&jaiA@>2;RmeVb)|be~skI$P;4HLD -zepP80751w@D%IrJhZpgpTEjj?5*h -znyKu2jezFez1pHWHovMcq@NTig8sa7=(f03lss*{Yf;2FhU75P__74AD>-Qg?m_1y -zqeLF)h`D~`2#K6hF2EHB&RnS@)8OlLV&~*69C1~+qnSZK-oVCiCA7-@7g>PQ(< -zocBCHu1sB?u$IcV2|`^uE6J&j3A>zZgUevg)P9aDYO;(rY>!iF)MOGa*j9AN0DiRi -zjcu8RfTBgubXe1J6D!{LX@NJf>HKXDR!qakc(a#lV=yq-L=bjX9w{!;-RQy%XBWU( -z2~NN6RyHlemW)k)<*~38uZE_%xsMoI9fPq~}4 -zl-f%fBUzX7p1x<21^3&-Q7-*99r)6Au(3v1GnUV6V|pcC7MBaiItj%(K(z_#wy(mD -z-seagD+f<#Ag-m*kb%PDl}P?AQU3aS{LvK`xX1mNjeC%e%D|TYx{(Q{e=enI*WUJX -z$*#T}79an`P5%&7?O$5trXLjkar;lQ?>Mu|X}ud6-Q+&fCQy4g)!~wbd`_YE>~y3H -z)?fK9d~^zk2%gMv%L#uO$aQXQo!|gTtkOdkGlr335^$JJA~K|Dos=S6Mo8o-ptgY1}Zs{;1xTPTmy(=7L9p0gb<*5Ss;A_etwc&Mjw4YjVSN_=NT0WXo{cVe4 -zc8@21LaVs-=;Aig*p8CGN^@%MbeA%VDfhIYKIk$b7`S-QJW}4M9NUcHD9@iJIg5KB -z;X<$SSPxw%OnA%GW_HMzux*sSR89j950F0;H?cO|ZtELIlE=!(FcQzZDrF2x8?7>y -ztj&(>1S6i|0MwuX99)+N*ss?()>QOFhl_CpG` -zq{*uzR2FRjM;Pc@p!~}tB)|tdqCHWVBM39cLvwa$Y~L;kjOz$L5Nla7vKO+m?I-$B -zale$^TR1GDrzeE3FEu{8@%^8RGun-=*jL?H#vQup#^oyVH)-KQaLO@?Z0y{ZRo6`@ -zni}$SGr;x=!~=9?6j!1TP#~8*c^fHjEROBpm+!RKqi*-tf%Qje5qG2p{i`nRfH;8Y -zjvcMBeEOB!YQ@Xu+TLRP0XQA63LGP0FO?PdwT_Oozr_=|K>yWsxeTI0AEHw~3D4(v -zF~oG}@+&-2zD;tQi-+F6|19TV`ôH+l7`Q4R~&TcOZ?QYNY;2r7)AbEfsHhw(KIghKuINU0uhA`?hR2K@$0Vcqry^K+iu2KL>PZY$Hly4K+%vN8)>~aa=aH^admgH* -z_5I`Ln$MvVym`YsumoN<~SkkSTB>u@+K{Ue!Ul;?KR3A -zE^{f{z`BN*C^SvT-PMUdraw_Ynk)=CBm;_+uf1X(D&$iS)-HERSm@BJx(!uh$yEl7 -zssHfB1Bb+!TL?2hosv}vLK;}pt83>tQld+AuBd67rD&C99Ud3x!1s -zrqf!sFbjBJ`=!`6a`;)Mf_3cQ@82%x{QL8d%c!Y -zz+7RrN%(>OEniUhmvQ@KPlbC66X5d_!u)KI@lA^a1p+1*)3o!T1$WYjS4IjxP@uzf -z41mGTHO11zD7Vir)+z2Ds3C*m{_&qh{Ux#{`7!ud5@B*Y6r%EzH+tC;{CNzeEyDnn -zU^H*cQ5tU9eH$!V+ -zdRUJ+P5VHb6^)zgrG0=NqakB7TpYduW%p#`H+EEhHWm^SEby*;x5JJ+h288vHS}h` -z|0-X_o|Ga3Md_h_`>WNj>g$gU2-Tv7gltWuZ*Vz}<0xOTa9P*yMslGu^&{QYtyoFp_TFg`J^eZEQt&(OYhEaT5B4jznttW@ -zB7^=%hF*XF_N%z!^fMdalSApG$r3)wPdd3zV3j65U|3tR`mdS?`{<7)ZXc-b`||^B -zf7|pbbd;%=-8y*wR+tmw1-tgyvrn0ei6#^1RHMJ6qPF}Y{lE;W31Q~ecxWvXR=oeo -zeN`?8cqaF3Tk8Dd3px}{Qr!@f`$LHFIsrfRe -zYXa=&fo^>T)#pxm@^r_-m$bod^w+_jrcGSnG(?MtX1Y@r9~3^96=fhT3LS9MQ4ze^ -z*jnla3;Y&EyvUglB{ -zewI$oba&{E(k28{MCi$1(#kTOZ(*bVLbsRi`Q$RCEKsKt1+SfA#!RQ0H;YSM@!ZqC -zftMf+Jmv{if5qLLqy`Gygj1cpe8%iLA+!HI*Owd)kWo6{Wd@|m`(15>lG*w{q+t26 -z3Ou`rI+~kdtKMMuv(PC<9=;5>7-Mf$V;c#Q^qkDHi64^iz`jJVHjzu~{5> -zMp8QGS7u=HYvJ4sN;5s_4qoCt{Fg?`AC|%TJbHOQmuk%UTFW%wKQ7DTtZXU9=1fyX -zf0JEuzJ$7B+ul}VOSOaI+Al-g7jqrL9MaIAC%vA-iybAd$0BJO{RMO)Fd6Ub1jWUV -zoziYBMO`5ez!69JRNj|bKx<1%UtSJNFreNw?#e^C2$-hL6NE8=-D?dC?KS*&r7ov;N^6q7LuHLy+0Ld()?7%s{UZ -zXkqtcl^@12&kaeqW2U#{BTY!A&v)M-2Crv;>0$0t3Eu+$i1UI9A|Zo7z}r$(SD1~j -zW6~#d8QcEr#O-qCrL0H?+hDaTI#8I33tQ#IWJApQe~$nn+5Kf)imuC-wiaeHEz6ON -zld^SRMl$Ui3Pq%aC+0-fLe}+GUWN`Y7a`G=D${J}FOiFTn!qa_O_ -zMLm|IE92!P9}`;9@+h9@UosN^b%h1-ZzS)em|zsf(wyWqFZC(5z~$&awx)crcw=#2 -z%R1=wo#aucjE{V<^PbR`{Y -z#Z>9U(&$TIO%fi(3y}eK$@F-+XlFStZ=y^dk^}XlAPlL0zL(Ef3zG>Z61`nhZ2eaa -z%-z)A$Ni_}S7hY41Qu!VHEaxCwbx+T>N_`Ht~I-3+-rJ(qkJG4e)@7qL-IutB*u7M -z=HH}Wi{)+MI4xw_svZ0w|Dt$Su#wEgMkXCl-eeKBTgM`t2CdSKMr|WyQK;`tU>5+s -z-`03uYVOw<+p>gJVOHfB`&@S%p=&CYP -zwIcOgJf(y{%Amt~&*FW(2SZ_ApXGAosC<#WlH=m_(LizFT=nbYEB#%reH_y>%G<#~ -z&in$A#5UOGCe+qweyhCnALCp3LHOs_`?ok57cZJe9SWQ-XVO^fFC(-RXPWOZ)%Ee+ -z!G!)xLt1QC7WaX}vN~M`iX6x05wh7pRV!2GQ&EHdDp+)8fWM8M-EQzRSP6COY+(c> -zPZI%$tu>k35H8w%8_ram$Hyb7?~Kj8F?A+#L`5h6SO5s4L$bKqc$w3Q%oTFajW=dP -zTLG$BTO&P`QM7>GGh!nxN^+1)XXV4@&v-3&1-k9omR>pcOWi8g}wYs%9ynI?rjRE|S4V1*3)Hmm~$A|eb*N<|8 -zulxJ;@W+&`n(b00w_R4$wwB2`$j%pkm!Um3c0)pf07VP+x_u}f4a}$s{cOfJA{}g1 -zS%@e@EfRlL%_Ku#_wu9#IdN;f;zPs(ida1tLzlP5$NT$b=y?p6*vxf=UjmO@txFlZ -z$VMLN9v_-h+3vRt97jh5q|yT+Dl8^BJegq1nyGK-B`x0p04+dpl_A{ey}F7do&^lk -zXmvE57s$sNO{U#Bx?65n -z_g{{)=?u<-jO@LHY6STYd3IoQE06nVP6hMw)kAp#{Zp9*W@A!m*#USxHHeBD+%q0y -z8n}G5h=mofAB;=%Wp}-}G`t*)`I(D6(dS&zy -zJW+g5;snwpdj(ZXle`|om;UvY+GXi)lpQH-5dU4??PZd-Z1L{9LHqAu(sY|f=(l1l -zS=eMcRk1n}5j7ukwQN2_ye)k?`17^ig+_Pl2-zR;(fiUlI=HKoghN=-(ycP@SWwji -zVn0ra@z6Gnz7)jA?)pa%PC3B@+wYtZ(Z7oge!pG&Snq$8bpd?FUr%LfzyI^n2X}X9 -z{@AtjTZVi`a;d^kuMuheOkWvz@BdLAUe{q`7T!g08CM4S{}>iGfa|O -z*`uIiD21`hE&#(F6|4Lnp4+7m;XePZ+)`u(4jbaW^NS;O2kGH?jccJctGo&=pDnm@ -zzF7kdw<_kzx;jwD*slMazDoU5{_jQi^8F}Kgz$4 -zr8xD$Gjr+SV?hRVgJH|Zc#Zlsz9}9&Hp?(Pd{qQs^n2~Z?%$ -z4CJ%rm?@I?^)$%76D@!bVepWF_QL!DaKumuc^or3$F0dm4A6h15h)$A3#eFP=hrh$ -z`19Le**ki|bI#X(TI<5IDHO@`>-Mf9oc{dF{wgNr*SE=9EHm8B1W=;})EvNRy&MB7 -zr#v=hqe+Q+ffPkM)N`SL7f`PSxHlQ@_A>B#0{!0QcoE}`T<=)}3P>uaWHf+k&`%*3 -zCVMdVDWib3b^mVmQRa9Q$moIxg0-Mf=#uNkMII< -zf@;y8QQt~V0DJ~Ncb%DI;{qDihptD0>Q=y^&|S2xteafk!!Rb1j9OazZh!e;jHD6C -zk}t2qnEv#eH)LgA$4az39=tK0`wJ!uy956EQ)s=|d-$KX3onyvLd)<~q>o*9WK0~| -z5O}-EqD#^ZBqmW9o_QdUkmwb>CwP$Ek|&xuDW!#XsyHxL-l_jWIZmcSEkJ5IdUe7L -z#ZOXvLQ3)9!zrZu^)=ROJR9=eUti%f#(}#`=$6+#r-HZuhqN1ZauJ1~r4ZYcEzVEQ -zlXdWu7eDInc4uK<67Lx8@#;9!9VkYx9YxXvlGqlSwkymzpF+>y~tv%sq2cuMnZUD@ifuR0{(RN?w;S{ylo>uiTy)FE8&yw=ACQ -zS|k18F(XkZBAOC@$!rbow3?4uxju6eCaC$BOED-9#zgR4S2*u -zg9Tv7o>QJfkq*s~mUQ#ZlgRh7zrGe9EuSi$O)SgW|$0dgIhjHehe4@ -zr8u?oieDVUH~@TIo5uO8vk0<8X2X)0NqP2+bJd{EcpTFHzzhHyA2KTsfi)L(R(@p^ -z-Fz!G`8)_<_;L^-MF!})3Lui`v%-0G2Li0l;K3R)nn~4N?zCmUrOQl=K+b64{z6Cq -zR}E&+%TEaC7{9_7xjq5q_l>pJ5kXR0%E -z6A7dmet9l0&%qMfAMz54D>h-Yn1l1Wcb_i|-kq)SVI;fv+4xRGfgif7)Awj~Gg74~fn -zv`&e{^GW9nU^ic_^lDYQC`u5?Y3N43k)A!FXgPVMaPw^ -zSP$2Qw;ns&n}1wq^gd4vU`spbxR;p*XBam2>+sHf+|6|zY@U3mskkVl-hp7mRlYcZ -zNW3obKJA2Js#qPeDR-5)XyL_XxZ2hvbHn%$YAayKmhbC;l;zKg%hQ!fyj=MCP#gud -z`Nt;UId;>6U+vd~rC1$b|FvZ{4m6J0Iu&nvi_7bq7ooLpui8BW=@%2ab05w11+%zI -zp65kWiJIl{VlFyb>zmH?%X?MLQm(C)TjrW_$S*vRV0_Bggs1FYgdRzMq3L_w?@BM0 -zUOig_#VykIY+3Zb&dR>N2o$=B#g_tO^WzZK;lXU2f4)Y%LtkECVovD+BE7sj)*XdiJi-pdB+5VCRH!(C!?GgGJhb+S;rehW4s+hgU* -zVT!$ZdwJ&%RA$SKT&O2su1H^I%+iEJOP&EE1-(8$y)xSHFSbuZ!kB@3mpl~b*CB+X -zE()Oq5b*k<$6F|z75H9PZN%}LKlB3!Dlm1Ib7@i4oOSmsJznmXHW+LHYcksrx -z7p({`nk}c3WTHum{V6S~W7keYU4G}Q*q~b)kKslB)vWkX6Lblxw2tM#5(fkKNGjGy0sG=%mcc3d@O(R+>dfh+f -z9aS80ezBzLn0b|YcaASwPs%c|Y}506!RAkkjgcT@H^*$l2Zdv{fz>_!^uaIzVqL$i -z8b&SOUOhGjL07Bjx^(D)b)^P8+YmzE3RW2RjWF -zlvQcQRWunzYZhRM+JyBP&Hn2E^HRl05nX^L;!;F}{t0y=7vR{2LS0Bqip>2c7gjhj -zXBz)@2uM7>FL53VPSLLKUza3Q>zj*v@xYmNk!&Um2`ItX=HNSmJXOx0W-r# -z^fqYA-8mnXPU()Z&6g8Sr(?-X8I=U$K9DIm(D~D@sDeMk%*l#$-Xmzp?lG+LR0A2p -zlId*Y*T;LouR2RC|Iumz)8n&JT>G`s4B6%+3OV#~R_<0e+b?as#w#CV8}ypwR_iw& -z|4LM92$S5=uqg-0s2rM)$EXaiu%YZyvjqY*8T0tGE4nQ=hP-QF7tBO8x$qZuf_~>mzKV<<2w+_o%cD -z@nNroo?9ni{ny*gTFmhPNtn#6Axmzx+{m{6!A#D@E5Iwr5%OIS)Z(NbBd40%o^W942{l+wO_ -zA`3yy#xs@IGIDMUdE8BsVq}4lY0K5;{K-P=T0RL|oWaEcq9dWB$w5-TY%;?%>oA$^ -zQ@-9FWdZH3gC`_n3dOt=nO`6%6T0!e78fyLl>KzNg=s301Khau3fmiD -zRbvJ63T6n}noZVJv|^cMNPC{j#_FjS_n6Mkh&ISb4oC(5 -z1ff(|=J+%=j}8#=^gKzy?)Tg3xw9I4L?RV12@R847`-K#40<(C%WQ8$>fvMO+LGHW -zCAwo-lsO1uph-)dWW-D}v+Y6>1lrj|&&dobyVG^eE+Drll5kwXg!9JC%tdWOuYiGF -zOj1?uv{pHM<~o3ktA7q0QtiTxcU -z9dA^fB)dpd8b#aA(PYk!gdL1lTwE5HI?VsF+(Htq1M*sG^}UlLFBZ8RqE;0g1B$)C -z#R?Cg4P=|iuDAd;6^|KI2!c;N2{{hFGbrN)4ThvFJ;eAnx!>saBb!pI -zau>GGZTbFQs_}lqGC~lH%rCMpIom~(Cgd9mxFefUd6l}(GKw7UCC5HxJb3~9SdBc1 -z_8A*&Y{t{-;pJkTU6DkSY@+FljaK7tT>6vtHd5jfQuZ|GTALW@edDGWC})hRG-W{~ -z<1m)LxIUjoSj_wgm=(lowcO$eG$q)tR$5G|@kWkPMBN)b{Lsk1r#23P2~ImF>r)J0L&-ae9!$IYwI4B(}Hdpv4>$${CD?T;uXX -zB#er^ZsUeCeHf+#eaMCN<5jgNXtsYQ9aTrsX_k&~;g0s@c#G}tJRjzt?04C-Jjop(z -zR8B|~Rwjk&R`d>dzo?aSETg~S<*+X2o>17c$$b|)VKiB?fi~AEG6CH(Hn)p~UoU~}1*2)dq%^wC@hj(@}>Bp~;OX)K&7Z=x~ -zR!HbRRkhx-Kxvtd1#v{t@-wzu77^VQi9>gV?P~2(rs})yXJ6VQogr*b0!>&KzudogdLQ0~#P)Nnb)X -z6e{f0tHg8(_A==NnuRdlNb}M!9cq)$C%OLlE(Mchj=4u^j0<~5MoULh8IfHh25h|_ -z=R-qCKi=PkaFDM|TAW__!^m~XS_~E0fyv33NW^#cRQ@X(mvsW+Pe<13BI1!|hisbM -zr3DsGz;K?PbDIiufc!>2htwD8!Q8G;1ES2^3*~CjJ}jg;3|=RUQ1@p=imwHGCNJvw -zQTWav*0iuzYfd}~2AUj08HCnE?6#J+Z^zrf$4Bzt=>I36d*|3P+E?ye-=k2wv@hzM -z00jd(l=f(4YxEp_Yf(7bx$w(K1kCYdCjvVVZF1{908&M`tM=mtg9E<#i7q}Y%|(|F -z?j+0{RFeVxAend1J7}JzR{|3rjG2{bRci!6x$yzgh-N4zf-x5UxrcWr4drgMYZjm) -zj;?3*TqDSg8r6B9j7#j}C)i1$qK%E>KsBV}SEsjTJH9zAj4&bW*!FKcI0iy5lWEt#koHRF5E0wm(4IakegK0o%!)@6r`8%N^kHhxza@(nGSR?oHgKkEKnP@|z-CL){>gp8 -zVKVC*1TQqN`Ry^CDij1=gmg24|9<;NHYorn3}ES4QwND~zK@NC=*jT}nyfblymy28 -zx_h9((`y3>vhlftZdgI>XXSZj#r5?-t;LP>)*>73vuyM(>OF4>jgG!Y8{(uT`soy2 -zvO4H(EC^O}@PuuD-M`??3U0f#9Lv@h$^2_1e`(XGsfdm)x2^G$PMJJrn^Tb)SED*S -zkmzTtn&8brxAOk&+dI5LM3DQ_duOYGbWZAnQ>TN}E430 -z9pe!|%~g|UFc)LC2IdoT`ZsV$xc{k^06O9;s(Qpk0Ol^<+vL(ikb8;7Q%l%@yrw(+ -zM~WWC-E$MIk|Uf5qw52g~dO~CccTi -zb;||;=NxFgn$f?$^)L-Bvc)a6P~P-_)2AD-pFV!PEu)cy+{R-w<1owvxvE2+xdG@` -za@{aa_HuuJR$98daYg*w=khyLHB)EL6eFWJ$9TaKDz)BV8(v*=mc -zABggFUViXx>3{c`GaFk5vmBCjMgpo5Q-*H^&Kdmr0he_Dx{M(ZQHIHX{foS+0DhV# -z5ft|91c9suSLoxH!@u;wC#?vQmNfUwA=4bRqgoD8xrbXn&1M)#!fvt%XikyZ-@t*_ -zp@((mm(U{oe*u1#=#s<|bis|dsGGeR4pd}Vq -zy_`j21GZK#Q|ll#6+XRjK)O}v)3oS5=|&+;Fn*K`tb@7YAvm_8A(Qixm{qd -z9vj=39<}e5rJGJRv$<15fU#;r<$806fDK49XnX9Q*7Enieo8mu=((5YZHFtjceGyS -zFbqCaTvJFtyvB$C?ygg}tYKpF^Uc>Z+tYTaYUzjHj7N|a@Wh^g0{J`AF{IptP6eNy -zEPY9vXbPR)@u3zfuS)1WdZBa{y%tqVZqUsv4>@f`;0ZdAj`1B*&oKEUR)jnYe0Ft$ -z8~5l+B68-5fQACtA&PA5717dP_9)3tGm2n1i;zP$k=EDZX%1K}aMX(!~@lwx+Sp{r_0mG`-)O>c=J#O%?jh80TUj@$EbGaIr9 -zwh^tRwZ_|<`N?VO_Qj`k6P#pKg`Z@{z-5(Uae;TJjn$6Svh)`4@mDuv-QpkGbpaF{ -zeq)DNy#%^5nEJAhM)do$<0Kh~&fS0vx*txrI@$2??nV4c_iR|B;tBi<>)XL4+Xgbq -zVF{>EmOtIFhdXxSpzw#Qh+JsHHljp3--+eawibcD=kI63pcN$Ba0I*vPRcxKxslPh -zxI2n`!GJppDmc)MgJY986*ZXLI6&I`> -z5k7fKGkHR#oDPoQplltn3U8Hzm5$N`cok^55~xEK+_{%~T@1&Z1TO7#c}vzZ>FWUl -z7o>AC7?o)n -z=k5q^U+43;qa_bFocup;h~2bf5c}2f%b4?41f~f#Jwgm(CSiSS -zzq`|sHvx1HdT_B}+hfsmu{wJ&kV%C0QR@(AXnGBTAX+rj{L2S&OVBu*kB8}GT6rW% -z;f&Kme93D)-0v?ofzno?MFXw6HJ+0{GB_N-yqvoz?S<&Nr@Eb?6;&*Le@M*0yWk;Z7iwX&=K3PjH-bRznZt1qr -zq@7jRtyGYflIXIwPGJ@c=%^HP9jcv3m6e^x9N=kK3C~YBib!c-4J2ps4mI%w*~98~ -z3K9_mh%eb9_!IGWv8QP{iua>>bJ@2{(?fo2p&(~RUcKYmQJn!u$wUXEVCT3Ft?1=~GC6*46sy7bKb5WB$lVXR^v2 -z`AnN(0<&0W_JcLv==Wfz@g{3lu$JqBMeJn;*cPH0R#ZqvY!#g5CUx_zK1^7V!wRrH -zMH79J6#|B%Z6uSA*Hp(?|E|;OBbw&T?`-+C?CR4cM=@Su2!pd~Fi9c~H)3R#dq)P6 -z)aG{j2~IztgH~wvJE?IL#MA2e!qP+>DGrm>#P)7)L#j)uLgmUBEwh`WUSjM3P$TB` -z1YD60MBu2p{=&^JfbIr7jnwwFH6AIxk%8OzHb{7a!NE)Ib -z=-|0o!$uo!z8wrYK@;`}>u}JGTB2vZ)0DX<`L27k$%0)#(Eb{#MlCum+rx -z?WDvwm{kXSVBNVVIkeB_83qSYF(3XO#oW`9A$E`)3z{;}@#N|alU4(R3TxnD69f_9 -z(kgZYzcjG7K7$6MxB~^KneRW|P^I!4=|lj#aSBz19=Y)lkuCuNsD_T}U7(Twk!ej< -z@;)C{DX|Ap_f}CD{OIT&Whr*YBH8DI+{)AM*Xl%*Y#%=+(2>al0^@1xtOTj<*^&}v -z?YI^ukP;P3uF(JD_>f)K!}}spo4fZ>d_E`pdN%)QI>$IY`CVY;>hdI6RneMkKSB8M -z>DZdBVnq|!Z~=~LfQNWI<~>2#^v()C05^Rbq^AQFvX5uBe#DlMcUF?SRCuoq>jdn# -zFKhvIdr-7O5>MpCGsabRqU9St9ZjBtsqaU5TeLgKY{?hr8ZZw82Gwm~EN8NBaqPoH -z&X5KQ@5!z~85RkrPnZ!S{R;g~h>k?zxMR*LdPQM|?vny32)p_Bc7QPM*f)SoqZs7N -z_RQYuE8u!*GAx!nmn`Kj!9C?MhQi2+v(fR+GFufu$j53$0=eK`cxsBQB{_TadJ$D1 -ziO`U7%Y8Vy1SR1vA-AcVAQq! -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 -z0Kd4g2!BdrB&BK~@$?gWc -zf68{vZV62sVCzFDKEYH*TLldO8v?~0qJ1QDrscaRLRG~#44}xLGcvIu3ofD8lQsI_ -z<}r`flq#Nw*ezQyJEfyb=f2#uf4FO0_ngL&+0kvhgcL)%?G~UHkA!?N*KcrTy=tQA -z<@n>rO`1CB&ORiFbRgrlg>H<1WJQ!E+3VyC_10pEfbTFmB!OuKA0yva)z}NAmI>pmd)&UIMFl8Ko0lG3?dt2w%oi;KuqGt?Y{}`5sh0 -zWW(GVvZJ -zv3J+R{T#TCG@j)8RM8}XZYgy2B2vZR7^*zR6?G?XBRXvB!IKq$iaz-Z!P@| -zRfnYqzq|2d2#|q%++EGta2f>u(!z)UHT&x9E|8VM8tPDZE69*xD!@_D3%kKrXP4dP -zi50RHJYk?w#4<5cN$w!27@6U>C^(~g0rGE34RKXYI>8CMQ*k~6*}AqIs>Z{Ay0aXT -z_u!B*X;rU{kCjbFm56h^152dpe$P__yJPal)&#Cj)9CW=N4tr{7#7XpK+mg_YEBU? -z7l>jf>)1V|=2PzVV1 -z1DO)zlJQg(3xQDBkW5cE34Ct_V}B| -z6W5t*Y^FiQ6WM3HcS*0%l70X74J%iaqG&Xdok3dVVO$A$I+~|wS$ux#n-Nx~-di1@ -z8!NS8IZr2vUWVyF9lJT?^x8X=v!_%W_kqD?+l~cKZch05!My~m0?L93ARdi3omU^snxdJ7vYZm(OKRY8MD82TS& -zCO_fvJzd3dLlUJxnIrRnR!EMx-nsI6141D-H)PX(2SRws*zF4VlLt9)ws7$hSMr~e -zVCBX_;I5!5;0+n$sNzq;9>7Bl{o&|;iUxHwK)xz#Wc?@mOti5oX~lt9<-T|3rn0Ia -zI40l*ifG`p{X$ZlH1;^Axc@O}9$nQ719gRUVdQ;-AHn*CcgNjm4*d(8AbO$jROpS=B)qTDD7HyC0(bx#^_V(# -z%XJ*?$=pdNIJV|sjwH_!8fiyk)vlcnc_Q-}M -zpA^-anoU3%?9BZ|j38jfK+!b?sv8iH8R|^FEyXRrAv)(jvAmHa|d`4G`}Nw -zj#dv$F~%r3Y#dJRNbKFO -zPH)3l1?V)hqFT^Ggn7^gwgpg~02|T1k4=h$O_OBbC8hA0j@LjyC(h*;h8CwoUTWsp -z8SR^=nUuWq$i*^wGs1L*P+Jc&s?QSQU^**ML0Y#(NHJ?R5k(esNYJSpO(t_Hf*Kj{ -zm3GrqvE1aG?))1tIKb|P?GMn0MWQKW%~k;)4B=+Vy7H%cE@;QltJAd*UbhXd8+iz$ -z#Q;U)S78O#8E+>PP_DN0W0zxDq#n-%Nim^aNL+>-Hz{K)+*a-J+u%4pIo~aHgj%N>BFjmYZ)BW>XDr&uP+PDS -zxh#c-t#P_e@_5VvX616jU=GVtHiLBw6-D- -z)d5Jjp&al+oz4xxGD&;K8o-^a5^B#VURo9>8v+9N5YPkkk&=9F!ul6cOBE1oSmxHZ$PnNG_NZZdr(o*h&; -zV+>MZh?BHsGDhEMMg+Z7=-al7x32%Eo&Ww&Khr%79m#x?!Fz2$-$6Dl4YrD1x%jYo -z1e;hw9iN-)`1eQ-?}vjOrX`&S4f<(wR%ZF-Mw|bKuUeO?I7wkFd(4_#ngmEapVBxI2**e-RONz#i;n13_zjvD@%}fjw*kvi!wbUYl7EV;IP_79LW!SP4}QXI%@6pBzX{knyOMp{H0L&^Vb#nN%<2ot&2M8(j$IPgt{>wnn -zClf2nAytbSBMfuV!cOXIngt;W;Q_7Jok?A*-Uy&4=6tf|&jGE_u7=OSef -zZlrZ%y!Rw$d{UtR^=aKv)AEHWu);>#F=&T~Kf1Z_lKGoW1kIMaPv+QE&5ad6W8$_x -z&~ -zmB{G2Y2e|QvM(Rg^U|7`E(7Hi9-BS`?l&UFn!qhcy4YMZUX`)V@Js#o2=#Db7R2^Y -z2uN4e0t1GMQ%x3o#%UoZdINw?CL=oI-~!k9wuX+k9<>!0k&)lA+sDG3-J{^G2(^3` -z8hSc44=;-!ulPrL&pgEPETKiCU`!qRt!&C$hH361SH9~GxSABd#hbn*j4Rk{a3L)& -zs>{8t%kUo~u#<>XR+*!%H8d%uRGSB3MNU|O;I%lR`5@H*zm3b_6R;@FT;=9Gr)~TG -zGk@5AG3Pgl?vXn;xAf722@o%I)!fnEbV3`PvDfJJm*iEt6*#4lWFm%WMF?SP9*H0h -z%n~KjV~Q|FpUDH&yDQVl;P*W+JgxAG2GAX9p?1z(7hWGgff`T;8!5upGk0nUR!eRe -zp0Pms4I@*S<|bmPL5X96Hs`uaG65|4UtmaUTa;m=m+d16QO3nT8?0MPIijmOy3M-$ -zYGeadS&+7k<2fyGMu1X0o>8iM_(>$bLI#X3s10yZooY#PL!7GxpYYWEEoUPe%9 -z$g`s70wKqc5JXaSmOB1Hf){Y%w=O}>h7T!h0EQSEVAi|0K#D9Lw{K#96nb*aiH@49zwbUb*VL$*FzzuJa9T~bH2`@b{+y#!cQ`tZ1g2tqS=Oo7>ex4 -z&hlB+$H8r1ap=#*uo~ED&=8XCdD;a-#PW8#^lzR~=}p>z7}<($G88I&Eu@6)TMs%@ -z9j(XXEk_Xn>4mNp4$a1K*bSe7H5Ceg;Bz&zyH#-`52SLxQ8DN@fWRa1aSv{HH>t?y -zuB*FM3v6WGBkOCW@?6GrOD)AqU2*I_L$tSUKSpG<0Pi4ZR}AC5OI7}^6({uEvvuav -z;-WX&zDd=d768?gVjzJosamaF7a>-k*s>7&kaoH@>>TBnmTVpY!h5FM2=fJ}nLK!s -zXxwhNyXA)9E|3d&)hT|4b$O%kjx7sms7y%S1!xq1m4wBm)0oYynj0IlKP*+=`8e!& -zc{w&s@~yTCgdpuIToW;ILO|{>p{imDx#@g9f+u53>ON<840wn2unFQE%LEPm3~n8_ -z_2~W0T8U|*hJe^at}PS_4AeqtXYVKXbEDoRp{%k1ym1jgn-E4?KOydif|HYk1vf{R -zF%f>R+yUDhI#ZnCW1JN&26vLGMw2MVqy-DTcc-d`X+Z#j#T_E_`ea -zhWyms^znlW&^f=I{w7N;{S6%&)>~mZk-Ye_bUZy#W26a(G^|MER4_13iRUQ20W=hB -z8WOsl1kSr9`3WFfg&qkr*=E369Jrt{$#TGbF5VykQQ1WH7IPbk7=z`Y6*!{aYow{J -zSS=;2_;0XsptQ(dDg)kHaWQG&ThH9TBMSts%|ua5xh1y{w&t#y7 -zipImM2Hom1A57`PBCyVMrJTw(p!yA*ctcR;781f)ZnyC(L#X22UOBh8gM=)I1I()3 -z^;Kh!^llr};Aq1Aba{Z&b)+L>?l%#r72_=w3`^Nj4*l}JWYj{)lwO|}{*yaKs)DSK -z>5rILTu7)gy|r{^leO$wkZMDrlE|Vi??sJPtmLHDTOVF&hz&>qL((T#@XpJqN5^D5 -z(l^DoQ1(C!456_^E+gbX=-2_O8yu>pGHMDqB(Is*8n9H{cYt~O^@}@>NFS4}lZS0- -zv{KA`SuSLBbw`SW3O~4fl7uGmKSr1bMkO*Kb#B;pXRa8;Jva -zni(!D9>_{pQD`-_JpROf-*!cSYMub$F^_=tb1kiPNDHq)Jkh5ajmS<_VWp)rPR2tt -z2L?0*3OewSBEzx-vq{Vex+g5{_wN=60fZW8ijC^j36vM&e_VSq`p>48Kfp&Le=#^K -zYb-vzE$-ap&o&@VAjvO3I2P` -zWAq+L_QFqT(MO^|4O%8ABNxK!!9fz#N}KVKK54-#gjjDM2f6F?b4UKW(sA&v$rzW# -z*~fR1jjlVl=P|~Cl=Y_*oJaBx`mpY&PyS^pgHm*Q?Zn`SxbVdiWo_}iG0L1uMr$#pfwVu@&07+FS2>PEdnlZFL3>?k)v)sfM~UDPcL!}kv61_ -zwgM#u+2I%(ZrZXQe?g`whm5{t1OPXAN7l4R>u%{$Mj$3bQUO*nfTDBh>n62%I=yYC -z*fFBBFlwdWsYmP@0Saq$^?=@Xf>9f=Vaa4y5_~@8v97xM@OZ -z<60br#Lt|HTts&Xz+aR&wFjI>=<8bf2QOg;q%Sno3 -zwg@4r-;Bf&oid*>*4kXl;nVQd955t!;bK9O2sQ5;&|Jk4KmCof?E~a&eIVqSiCQ*T -z2_&;=6N&Gs`5^>m{RUDO>3IR4jbt3431I2W!5>oiO52L`qeF`ZKOg+UOA<=*_Sc~m -zHC%fbqLhQru1-Z~@a>h`7Jnj?@+Sa70e48&9Fk5S@AwOE64=AA`R;Kb9{~-~PRRD? -zeK*09B3J;O0kdv*nMvzJ<`S-GF13(@G8PTjNj&+PGzCP?S7zfKkCA*v}nRHTiMqkwZ`mZh^}zfd=SdsHsVt&ji8ha|+s0^wp!w -zmf_gB|Av+%crF0?jGzf;F}ac*>MF8!fIEz6J95UdJLQgKlo7D_a{kE%?x) -z1;gI_gKyw(&Y3DVQOXK;>v_us7ZvUNk*)IIb;FYKK<|?Wr<0Y3N)hK3t5CrTszZ4$ -z?lXce0Jh!w(C&@olUeQz4rB?4laPV|ix=ILG~i>=yT>ljX{zynkh<+X66Z!ppUKwBClc0`8iL)bKcR!|=xJYKmILjUF})|=E#crvNinUtV5 -z8QsxG;~RL`3}%2T9KWSP?1n>XuuwTKf4h@#)%xNG?09-0|BnCu_$d$^O0hXw2^pH2 -z7EN#i3y6F-<#fuCJKg;^VQ?`khy4jIXb`>QNt3O@kRTzkablw!&50oMP^JK2nxysT>$jRh$ib{DH!V -z)*wJr2^W`!0^2<_+QHgj6O(&YX<<2PSp#Sx6)25s(wNnn)`v#SA=675 -zbG(D@?l6R{N -zR%YJj^xlv0CVPH5KDjS$NT}@N2uR1lEHhB%Vrnzm7JQ@)6>Nc*k>~(JD-+tinKs8k -zULGtF0FI?PX|#+wKd$8ESgm@!#z#X&hsCcz6rQ`}#Lizm$M>D4FC;2+XbKBnr!sFT -z+mbs{7A-2|L2gugY@5Z9auE>D{6tHLt{)&${w1$x2v2e_ -zH`>`}#%zbe%zaT@AbR8b;|Pniv0N>Zf)+kwvWfeZv+quBx=Wc4TC9;xvb -zou_E{-A{I@n0|{b*b&8h^TzOUG%J}I)U7Ldl_ZT@9QJTug%J3W3VLVBmK<@QRgKkVu?yL7pvXYh3ibQ!hLXK~`2A_L6FR?b -zKst|&2+k)=2WN;Ao*U*p8d(z))}v6MhG}GU9f6j@>MefAw6@J51i}((Zcf;N%(U|=2W -ztI)Fu5PVJ4f^QqA^U%)?oQsFHOTtjUH6%Va>FD-AF~g&%G%V~!4tK<3D2BN9TPnbj -z++i{_=4@n3HqtvKnN7dz1caS2-%(J8ltu$GPz8bKPys6ENG^v|Okd>NnL}2p0U)<4 -zvdOtB7zPD5Gi-tZzTcCTb^xeIo&Qu-c;^@!9Mz_t{h~iLJ)KqLN{D8aO*(=7LHP;I -zZw4GAcSu-#6e6p$t`vz@xuO)NWarRy%-)FhsNi3%E)kZKSPE4HKEtf^B9YUl-_3iW -zH4b2(d*J>pn>aU-ezj8A9TX8;jk1V3G?|Qtm!dELx>O4`KmofW6;IThvRCF#ShuJq -zcxfGh*4M@po_L;GX53vT$gsJa&cud19jESPZu+9>sDSa(3}TS>qBEyJZyE^gcS8vB -zD}W6ZoP`l?HOyL{a5m<_YEu3xC#lhG50o~S&J9;TFUr`iagFdy -zSqvm|ff5jE6#)i>sTnM!zzoG4R+kq;QQ6v=r0_%oC)y?&Z@r4kW;BW%m+1rJMylb8 -zfW_Y&mG4%EXpuF~b2|^6LFb;fiXI5+E~Mt1kzqr8bK2bAHbbo=Hj=?1IcY^UOz!eC -znm+p3Z8-rP1BellslN3LawW?mEX#I#9@7nqM%g_$7s4Gf$!wrCwMPM41A01HQ>adn -zHY-%DhEJ_{=3lQ?XLHeKG -z4lq$JpGTgBvkFRL&!ZJP;1v>JS?;VmZSD{yjy^v*_9tv2Tug&FBd-WR -zlFXh1j@`E4N7bYY(jUb76st180mk2Jj4`|9pH+JGJR$?T*&tb99Af@{i*Z5 -z0!ui_<63IY=m-_T)(b-3yqi*tcJF@!br7X%0&Jl{EXzmG=kFii;iq(BX5ojyzr53# -zU|^k1hW-yP2Ka!eFso4Vv?&d!tQsD@WFCd(x~BHBUDGWZG9l`td))Yu5 -zFTYfOH=kExj0#YT^T*FLApSJx^SB4dg_I!W-h0jq!z0whg#os6Cl6j8?l*kASP -zQ4r*%+pmH}-Y~`%mN*kk#X+eNNS$##>g1X3O=Ot?hah}<h3@@_etRHuCCYF;OpFlD -zpzq`xJe^~W{TaEYWFYlYKZU(w>w#a6KVV~$F6A?x@FaxiW9PYwwBuC%ttF;)6Bo^5qK>JLCDqCQBn^tjXkm}Sdy(}pEWzKUmIwb9m^)oW)WUDPE`4hA@`D~l?gZnVC`)qVI+ -zeZ3!Ed^1lob-Pxpwa087zVCni^N*Qs(fVp(wF`d{S!%iJ(lg_u9kGB>NdT`Gt_wIm -zfHh5m!iWsO2|EFDcVDd-L=qTYklba2UU@5gW^Yx)l|)kcY;f7z8|g99j$6>gSpVKZ -z#)t+2jb@A}F{o|%NlhtJBC~jD#5-oechiDZ94-!JhDFKhgA=@#IA*-SQm{bL~^mG8+ -zAbpSRZ;yg%HSi-|bo(c@{e`K1dX(4Lj_IQC%=_gA`{pb$JdW0VtAP9cKC; -z!Y$<)kNr{W{j~9GK%_%AGQCwL?R?yoN_ehnE*7%5e`P3n!&+Nn^Ra1D(XfAQ_CzB4 -z9`zpd3y=D&bmh79%{|_K*%SR0XM}W8Z8}>XJuHV&&Y|1;VeFD$@9%|(d;k8(jVWKF -z{}MmQ282S&>d+ppn*RF7J_}64tvU382GT=KG6P8D`SVf)P}LjloWp1|ACnaaeQ5;u -zF`5ruZ9fV;;rR8kIPewJ;A4*En?_zupR6b$&allVy^Hss=|h9$sprehJ(eb2;9Ucj -zbtPM1n54=I$;XGSxkW9|VZV=d&jpd|qx~9H!VRD*gr-SUK_{M1XRev-+kY{_OJ+W(o7F$)F>xtWdC7&r1U -zI0~$ey%F?7?XZiqXQqB+Ng=X_6vtmb -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 -z@2I|G{iSHpfE)p`Tz=wdzFvJBfi3(%|2;G5C -z5sMK0>x_2B#k3<@{w-$LFw-~g?*#Dop-jWp{E4=#h?|L!#;de7eC}%pLxIdfyglxk -zjCJIT3-R-|$!Zf=J7_t6?q5=++jF?B_e?+`hTSU8Vivf9Mhu`sX|Y^Cz4UM`sABn! -zjtzPZTz-uyLSK$X9E6}#ibrK#oap~z>h?Bno-5|Kyu^*}+=9DhOg)sK_GWsZfX5sZ -z?qra9*|@G{= -z4o>J8we1tCQ;tC2!*A!Ld*`}lR8B73NR6qZ8Hd@+OBi$-@VBBeK?3b$0{YG9K?5a1 -zr)G3iZapySN%Bh33oF{*q2xD_uzApK2~#^;#sE+d%uNqPTNBfk -z%YPX=ez&@4#DSUG{&3uVkb+Y`m@($|4(Qy<3PZ{68s45tzE;n_?`y9?AJ`@FZxd#W -z0Rb@Qgb4ZTOABWw&-H|~DIX{eWI#m}(!tT{g0So{@=qPD0vB-Q=#8B_Bj*9a9bm9+ -z6@U3uJ{!gj0a|6DU@MqTTnzh>Os!rSLiG#%LCd5gP055C%buw?eh*dDfHLEHbBu~b -z(5}74H^x=AZ#;4z|@OsI!5iGF17$sWOZmN!IUVYyL1cb#gTtPF3#|h -zYbM_U_g{8<$cH4?X6Bj*aOxnAEj05e?e;P!9PQ~eaiaMLMy%d^Mlo~)O5L*4xo$?W -z!9AP~6SQ#s_A@M;QQ$c_R!x~l`l-z+u{~E*k7(s$D4GV`6L!Mc9%H3H`a>`tZts)E -znMY>J+EN(+?3+r<2dhT+DDQPTyOqeHkd3%I1m1?gIkMgQwvOrv8$D{tVSYm!!((x+ -zBE2QafRkC;piCw?B7P|_Oqb}b4brm2)|sz3Mw(Lq{FR_8vbBr-At@GJV$mYZjQpdq -zM%`yD^IG@CojNqLqc*^g$_4t?&)UoaxY$|JvBI*vIr0l!lO&`cHTMMM5cdF+h+v3R -zTum$;0(I{!ilR|fSLJTdD?wtlzJY)9nLt?Kk3-R -z@H-mAofG_>cTRYd9EB&s(Y#R8o|R=1XYeU~32$fwU~Bk=J#vi7(Z7 -zoV0)^a*PSvq6s7wCU5AaoVvCb@bZ1wXo#!KmVW^#n8dwvImr+PRM*Sz9W(t;0E6gB -zk5zM%o{ZhVDRG`GE*NNvW&hJ^Ik(?p;;U;R=<9+zlmV&ZqN?V)n(3(A`Bao#3t -zmm56jb+ns+oT^u^xYfQuM&%#7-J!{D -zv_9FTQr(~}Pi!fD6CeW48cxf*ZWGqzR-yY9|ga*tH%56*upK&?&9?U#awHuyLs`id=$Fa-E1-1&;(B-T8ac*{e1Gi~-%3(P -zQ>ieN{EPh#Hm<#MrAI2i9p%8&#x~M?p#VN@9%| -zmZ7lG!k+N|Slt2|R|N>H1}H+Reb7ycj(g)-5%6(RdKIJ2cni+&cec(sPEU)t09Yam -z;wx<6^cI{NL|Wkk>}ALF#rkDrCvs#3e@!5DoFb}kq-HlELxgA0jFEKZQx@?qD^-X| -zcP*+Wvt`IE@PH+ER$RmbcPU6L63SeP2%G`NfawIVg)BbzF~!DI>s#duz6`i_+x}2r -zLoqTWN>tCYILsR1;=j=)hscYE%#}bH!+3F~ITrw_0LLO`Mi7o_ATOwBj!^l>5(2xd -zpJ@ML@bX4bm$<)7!&@mS&3AEYCE|qk5)`5vBRBX10dA-7n$K-Smok`H1gu>z^$5%% -z0lx>Wz{+`oljuX?UdX4RzAA&;Nx#N=YCDElFB@8_An`y$z3*r0ZRU3cTkfeHyY#LM -zZcTnf_S1BdLNx)(=aF+Mki6u1vJ0o}P6n;-fr*RqDK+Tn%+IK0 -zpp0hBSu7RDVdi9}xg1Ya02-D*tRaNiin?9_ww;Ef{|l@H1)CS+O8v -zBDBF{ld<-;w$BIcHAJwEwzWz&X)C-NLKupd{fvC&oqURiq$O0Thba84B&7JU~0yvhBD -zWEdixXI0I2@^V`w5#UYH!<~%rme}TPHUSBZv|A%vR@XKPESJR^OhK!7f`Bns`-5Wz -zfZca`QTTOZYKNXOU}Y&b1y?OQYZ8os;Zszr-cq?L{bXLwVgCK=t2!EOP#wZV5<)7r -zXyuI#2%t(=d7w#?EcVvi*G~lfEJ#$X;Y)4#>4dR|{1sdyi|b5bA`gtN>tIro8%OUA -zz$SuwK-P<~px4nhFe)3hZCzw1Bi<&|hKigTt>Tqma2UR2%L3&)Koonp^hWLUS{5xa1ZP#z4 -z&k>5+MD~^+pN)SnZiojyUI)IH10W-tE>~&dgC^oJ|L0)FqspHlanhH+!UN^6kQ4;% -z-rQZj2kLS+ef-DR_x~7sxl58h8{_m}X9x?8z|{ -z4<%I^P;; -z{Bmj0Yd1yXDn5{O?4Ls)|1oyG=I&m8n+9Iac)iU2$2I;-L@=`PzGd(L8NLT3Fs~Ps -zvG4ye_VQ2>kaXLQ2`WQF2f9-e*a_d4h$lF -z?%Ne79?_`TanFSUEUzcouy?m9uv881gEjbnYxqPU{4s)aj&}-4xGL0YJw6Zf*#d_K -zS2M9Ws>F`;@eIQ;q1ynI9=R$S9IY8FJ~K}@UI?JnAVR(JwyW(h9Y|Hmd@{~Otemo4 -zNm%YATlt<60Bm18dOxGo;DH)k;|#(CaA_1z3M#jX!V3gVJ<4)G492z%w@9)%9>}^v -zD9?UUNk9alieCB>n5QD#5y|m0nOBVNXH~NbNyN*FEN*wdTM9CA@`#*wgr}PWm_}E0 -zBQk~r9`sGEc`kk}YNxzl-{{g}^RYQTl?U$I-xuqC9JfH0@zvx9{2nPB@>fVXS|#&> -zG6nUN`1auibI6oT)ydW<$lSnNE(frJ$h*>l;*^wN3opijV+^RP_m4k;B=K5jpYjnC -z*NwFtG=Q&O;72g$hw^C3?ctp_H0_EMq{ZPVd}@Gf_L#TC49k(hf`id_cu$};k>j2t -z_^npZA~q)tzXoE>hA01xUbIVx&9)eM%I`kboU0SktTue<8Nen-mxadj{x-3TT3+(w -zdI1&IPs!6Y34ykx2%qRM#Qw0D4|fRywo2Qyl_L`5D@P7Y{fJiT<~9LFDNzBDm`{u8 -z9_SXhA-0Z}gGraaJH$D_{(|*awmK}|TX_F`fW!#Rmhp?CDrrBKOgGBW2|)Tc`S7MM -z^C$|Mi;4iGKaj0omcszbzy0`zcpNtk4&?&Z4mX>=`(UfhSvED(y;xU0; -z%(zj-7{U;OC8c8AYtjwj5ttEr*%}aOd$TGo&r5l;2|2-POsQ2`7X<}a9XnPAwehIb -zptX5@YYr5@^=`e8?0GW3lI -zN)ks$Jt!(vHjakFE5#(*miE-sHVT8|C`>&<-GhkRNJ^Fr0OP+w$n1&KhwM&zpilS3 -z>fLXKk1AbwoJ!&S8iDtY_E$!p52%jT)&;{Gjs`E$B2a)%5t;r3l|Q??kps;B*mi}f -zVkB?_qx)?D)ErLd_E`jMix-J3h)=Q0#BYX}#_3SWz-l%Vla&o!nsP?SO#W&aFc?I0 -zD0qk+iRV2*tCPnv@x@PVjVJ=SvTA5K;3p0HbOoFGEg|&51X~u&|At&)Mj+~?YwrzD -z@f+>qF1~-5aQ6yPb}5fRzK85gK!hZ9#Q;k{w7=M;WHayRy0cK$hH7tZq8OPnc-c`> -zntq&n+M1J05{NlqHYtG=|19({!IGmgM~z>1}%aWdgT0yA$9RJ3z&-Xo~-Dd@5& -za1c>#Ae&Y=s=06>wL~ozrw#a96W0j>FfH*8kS;++vIRtur`tcm}N_l<5A=aM@hQm!H3~ffY^;KCn(H@t&ZMJ -zse!sW5_vM1&Y@;~ZKeNEPKXZcYi(gX7pa-;(@j%4u?$ihAT$@)wgSIwt^_vme=d6x -zz>fL)nsPP$^Zqkq;#cS(^jW-+)PnHZ6L)GxEditQWMeGaXoAVoi}kAYDd>&Bm2M%0O8s$fi~fdYovkv8=Em;Mbdz}n~ij1e>)3Lz9} -zZ&)9@GuUi7<&Nlrc2B5LCrqo!WL&!2Lop7?%xcP?U%O+wWgo|_14o?rVk -zgS|KYqT(*MzFWCuej=&zDEeKteq^EmCX=$c2aK&RCxolbC)7L5UD^y7%eQ%e5{=vB -z(;0X2Ve@`NJ^fkEOMzgf$4uM4nxzZ*SCnjys1hgFdMtN&1%~dK<=gpE%_$#oEkUxL -z=@#I(^3q^axNG5c%o&}j>KBro-tK}#E^TjGP0!~jb6$<0-eGAYr=SuY!ju=V4jt(o -z@D0l-+Nas=&A7i$c35EKa*Y)#z*WAxrsZ&>F)EV-iWYTUhZVi}?Sbl3yyDyCA<6LD -zWI~kUGcN-LC|i9ydc6=5p&Y@IuaxJap+Z#0xpC)(_JdeK4~K0;rFPecP7 -zYTmb=JU(9*Kh-r#!*QrzCA)FVH7_-gf0ALWd043f#w$*hQCdOti6Grsjtm*=nOrAG -zD?yISEYQHVIt+>$h9S_Rq()MQb{6(mUPa*Mv{uuON(izFghe!ck4exRe9PVfR63ov -z>y>o$GX4E!k^-$@ho&m)9Sv)Z!UKAeLRJ)`#p97__rzQjzbLsQ<#o#=l1nGy5;n#| -zGmac|M?Zi`alHs_X`J>+8g1+IERP|}g>oLJigXF5Z0E%|G$8KAq%HUuMzf)!Bu%^UUig9(|wjRHjZW%Y}1_H2ip05CR~vm8%m$?RZxe#T*vYF -zTw4AgpK;gHVBR^q=Ak}ziwWD1#YV{?1uJnd1A<$W8}LV7wwO{ul!O0c37EcDG1HkcRLbXiW!PMnDc6C#6o4*3OYc^Ukk1XKzO5X3FkN!-f;RG8jrxKT%d$EC&ED8039b+z~6^I&T`(Ls48*&6) -zp_OT+f(`6H)SQ0OAkJlJ{0604gXpXk8iwn&be9w8)t`Fin0{zZf!luiewO`tqM5hm=E^E}M7O+m8ILq`|h -zCTHE@3hL@TBO}TPopJI_4 -zU)E|DX)0@}5R_xkaI$Hi6oq{^EO_r4e4X-G|&cX>h6gGLSnl`_d-Z3lNMTGWDCs6voy}LVl -z&h!Iy(#@sTKvb>tMdi=i<<06?*&xj$C48)ml$$_C76|Xgdfb2+1SF67`imQqJVNBa -zBY~tciA^a0Eq*mr0BO@D0r)PRMwMF(=w&y>MwKR2=4zoMNvWHO!PZ;6q;ibyO7@`1*e4Z{fS1EIGaMhaU?=MVQX8#>2$JQd_60Jn@QlW`pi0JCcPf! -zb*2NwPW{|nol(7ATg?Z(&clvJ60ya{M+>~#yeNhydjtdXGM?pzuq+9kV}3SLWgAPR -zLc9*2M$YnC@@5PX`~VQ5NDA4c4ZDV*hI7Eg8f{-wL_z>nxlLj3i;)31+c{owySQ=q -zcm`6}tZF2eW{$4Jid#XrSxG=bD;>wWs`E{Yb(zJS9P6yyvPhFi%vJ1YbcX$d(E}Z6 -zP0*D6y{OjSFQyJd`bj(4w4^Tt82hA2d%!qst{B8DFyLV^JyQvuJjNzdJdBLP?o%5M -z>5b;pYz_HggarS$nVoI9@e{bu~a#y45*@xYFU) -z%Q*(TKtrc2Dt!oP2U<@a`4#LI4k -zTLWW&-Qh%5qiJA0P}AxLA@=phSh0;Kwq0Ier6;(uuQm*->EqRCL)$gRNY@rSHIL>; -zgPB#+!^X1013Z^>Rh^o>DEyl4$S1K~BF884p}s69IAM#^rrbaSI_WQ)_AMpDbZ&qp -za#oysKIVL5v%5>gx6~4}(P^2N#3N)UFU;#zpvOEUGz2x6&cmYQG72ueEd~psz1w9) -z@JN>Me0Wh!I>NIy6ep?CmIw3=r0Xy -zpp4&x4VeyvUd*MZ`H$%196MA;D4oup0Y9Zy6kR<<*$>9J7El~?zKbp|%iX3`;ix-KtxH2+bjfr9TlobdrH6XMG9S%mo7r4KPB(lt2e`ukmBi1dn8x*A8Wmsc#fQ0uTedyvPu;E?DG}OGxAYx3F4f0IN_|9gPm!ZU -zXz7-upaq%`x2dh5_unI)u78z;8&pa2>JrIlIrp^Q#wu$m)EB55#_A4lRDzpac=%a( -zqT2wn$v9lD2J_T%Sfh0u^XO~9e~VLo-CQL3N7%g>O;%Acb}?$D)0sX4RxPgkdL4Ra -z)_7SAVN<{qyjD}{hsk2#0d9!63i=IZmAhD|(xM;RPv5rO4y2=T-)O~Xv_V!CM~<(N -zEZZH-v}p+EXw09|-{lmdq*$_2dJL%d%L(Hpl5FNlo_7o|uCL*EZsa1+aoE~r;akX+qGQw#=3IDjetW@_V|2mUrusAL;&^!aPFQGVXr1u;(NnE5H?85`x -z9>wV-79@0QB7yvh -zSY$us11N^8TIKQenvdr(mSUyFZIm#jeCDz1lfkss+-%5q>(fkHu$4oP7Q;h3iF*wG -zOqc27k!B{`NLAtAnHNq66v_PIXZb90iXA~-UGJ_;Wg#O1l7iB;)v?z(C24^?LJnY~ -zunizf+Ucs!KUo5_we>yl51vQdkOD@OIVE|+3K7-`F-T>&9L@`mi6>#|wFsA{2# -zWJmA^JCYRF=SOSa^kN$_C^E|&tvrzdGNlc0g?rUW*H`(4UVSWv=j)325e8OTEwoK? -z?m#Dw*^qMq7ruuqoE=UTDRFvnD*Fdxk<dfBeNQ<>OTJ -zrbFa#sNH5gqI=kn?N!_DbFIK(plzEINo@d$RViH7@EY3P(LPLD^p-{Hz8+qlRd0g> -zeoUHIoCH)d4=z~8Xf8Z>0BTGcnh*5sU--q4L&rPGd0?4*v4M)G0lFZWf5qI~EpeW# -z8JnnSE)O|!xLpJF9H>AJm)6Y`htv)L>6%Z%QEX{Jej%x#H?5=e&4N?!!30H@g#QDO -zV>hi@y1`~&4Zsn3xm9lxoVrH(_aG746&b?^YB^@J9#fQ0hA#uW6lgXW=EZ*HgypHP -zwb1SlKp%`oZTx7w(YlgY6a#px%w`c+wJ{ASV{MtRd-QJKj>Qbo2Ov|?vYKP1JakW< -zEOd{b*)CVR^nrXCJyY2kry(w08s)F0Ptx|3($9^IaQgn1vzZToOwHt%zjbkJe?Nw! -zSWRFa-q>`n4d3svq!<6#mAUe9Cq;oQk4@d3u|DPRQ$zHSrgWg09qi)MffBO#Ifl&~ -zkrt=bJEWmT7_;$bcTc0Ttg@oFJ|nHrl>Rqv(oQwv`@wB%WjxD_SHy`cMSAGs4{pO$ -zird(}#X~55$W%(fwy=ZVV1%7e9_K31A3uIDiq|_6`Hma(cKixoj3+-0PsU7bSpYLU -zD$U=)74|u13w93cy~ja1heyy=2)4JNpcpHxg>wf;vZ;hq) -zaY(!M=`;Hk!)qk+E3(CUAo}E(W-9IOo;=6M<0ahW?MwO -zpx@A)TcwD`z!Pk^zJy^yk-Ch>_EVZj^ZhP}qB#EVXKM7TY3p(AcO~reksC?aL?L^H -z43MthNjZPo&NNfLNRj}T_8zp2X=25i=#EZqc&y@A>co-RB%5&wn-W!`FlJT&LoD9k -z!#XJ$RA@O@eRJwhYFx1y+iNc29=g7*V3FK|{CIE(Mg;w0k=`e&Q`KZPes{ -z*Yn$4xYBV%4Yc-kl<+vmy5&Z)KYM^+z=fyniusZrTs<(>8JF61upIE-{s>CIE>_RG -z?&+O8AI>wzdKGtth@v+myhbIlTWp~c$-&I457iC~91g4z<;Y{0=}vSkx*J*n8DIUA -z{Mu}YHY6{#LFgz_=A(N+A)4KSI{32B@8La{+RMa4kuJ{Oj5g)z%}LW88`rQ4WESKl -z`T7agtYtK0$wik}+*26{Mi -z6ciQoe%Nm?7Ws9{vZ>+Gx2VZTcJlb!uTAA?-H>r2+?4{;tBfrS#!5?sDbYj6{|@L5 -zpnpI8@ntL@2+{NV1yn2WT1Jhc-z5Y@Pt%0dBV-pHI38 -zsqGWVMz%^`O^j|@H*?x8h}+$0ZLZyUYY*VQ%SXOw$71OlELp*R2Q%8GXh!B%Y$DP+ -z*#4?V=xK9xm!JcZB&o==XlVV$h?tY)IKVk_%djtqAq7R$um9)5Mc6%$^~+>rlDqkQo{V(gPEA -z{BkL>Nlrek)C7j%xjT&@wb&H*l+P^BUIs -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 -zw$RgbIeGMgLwdzW13@nKLL` -zGP>E#vVQgs*~hUgU;~7=m}f=pNF~|GLg$hjHC9&7^nwQ~d!O+pD=!rZel9f^GL26 -zsO27~t$#pdq9l}=J1hc>BUUQP90AA)33%;=l3mBmc(bG$foseaslcHXrrSnM&cU=b -zwl*_+l*;}t(3kF}45G5xzuusA{B(Sp>9E9%42_7)(`zE@-Zr=@@2g^jr$=#dhfI4y$#Ch%kC9md#ZRf?$f -zOjHze@hr{HZUu7naEgqpxTK_rd$aP8sE_De>r}yfF|I<<07g62AofOAmc;r|eDK+z -z5KA1)AHQsU!uZ%2!%A*hf=vq>h%BDjoJM%s8yRtuuq_m8(fh#!_Bg(F>hl$)X|+rr -zH2&*d{Hku7$R4pq&bY!0DlpE3(R^~LMDs4ZBcd@x6#dp}`K^E^U}b+IxoO2Wu1S75 -zokqGnjEr!-O>nL(b{qTYWF~L0Q}1H}SZ%zZZ8HxaZSc^Jz6u)q-dLv#qjG4@cnswC -zNF;}UvFHpk($KlF3_HEkq3FQ$BNkd1rflUY>^urdahixA$MC0js`G@%03>-`^W=-uKJ3v-7?p>1{MFda3N`85Z3MvRl -zT}o0^L8ipNhim}(9@%15{8BxPd29`%jV$Z6N>5I=nLH8N-CqIbzry#`16^XJCrb$# -zcrI)X0U_l~4$4wp9O92}oalm3oygAPlmmDg(jpsGCTK;G&_3DX{~yasI1hG%531x? -zzhQuU9&?vqEW8t_Jsh3UO_7w)6L`*Ap(DgnQWwY(ci0QGFJ<9>{Dda966*!|l8!88 -zaT-MVq2iF2%ZM_0@&RnGqo6XwJTn>_qSy~$fzx&@bL~0_mmMoos9lxEZ2Y-{qJ75=^SY%IJmzce11@DsMs+zJY -zQyD9^f7SbN+Z{j*Rz&^TEb(Ff4OR}qX^Qnp#?dyAR+pc8xTo|+kzdH9ok9W6H;;uL -zQz;W$g!PJuki0HGha&~i-QsiXttO8FjN%6Q4JAI1n>nRWnfT7F6tJvqSrFk`nLCFF -zwBUG<2vcR`U|Bo!m3p`J2ggZteQzi&opYXwZ06@_MyC~wDb_<#aX_yG(BHQ@rXoGo -z2u0F?qx{_Hr*!~Yaq#J_6B|U&vF$Ti2<(WQ%@f%ZXi7+*>g{2SgAJbJ!BxtCl9~G@ -zu$|H$0fV;Elpgs|8|NTQm3(HU(vV?rq@!JOt~Ih?>$aq{1vhxnZpjHst#{*6JDsMo -zn^p~=WQ+4L-geoU&w~$rGP>zSD%5Z8HoBW(FIJ?W=T-$T9^d}1BdmCy=?<^ -z*03mEo*i_OihvnJyte1bE+rjYbHat=Cw?LuSmk#c=$%BXZCZ6|dHo=9PqH&LSjjoo -z`)3AQn0burMD$zSpq(moJM;&v=NgYOWl>>;N7CI#r_8crSMC26_DttaBP~=o(y)$d -z`FKc2vZ?zisOve7C{N+VKa-A88wrxHcI&b-;S5R?$zV68OtRrf;BfcP6cgG4uVwT| -z=X6Mdo%Z$NBtE2V_iOw*7g^(B9#WZu9B(Gx$Qtu74rN`2>GRk&ck-KJ!bBk>f|)S+ -z-+j|^>YOuu9GSROa-!>;7Q%L^8yV@nqSgZa8OhI-$ORet%m6|!58aeiH2Nsh -z*&cd?BBQn8ARM@44i#ajWoR05Q(nR|2;~S4YN1sb7?3=YyFV?n&5*&G{A?4_sg;Vs -zE-4)jBcyD!#5dmO(8o^;+{~!(n>(h@yi~7~*mAk&67|0eV9ex08cv~%&F)>^wihGd -z-y<^apY5%+$^CwYOLFZ4+xs{{Gy*`!wk+2vkT@ond+U%6>*5I{*-qmD?#{s*!4plv -z%B_+RH?lk=ysY35K*H$BK;qD()W$aUA?U7PXn6uEs|rdk!>HU4lw`_|w3R?MywLKD -zTrTn!P_+`&6MH~f-ILeUwoplLWc>uo?PA;IW476HqeYyb8M|Mtp*rsnFf@@?Pk>&$ -zoAGH%Dri;W%0S7|6DsOoQv8q+YW -z(*jF%kD|y}(ByDyhXh;rH*W&MsZ}n_VD@oz+Rg$b1!iGOPat7pJchHjTe(}>m3*&{ -z@CbMtn)DkYfbGc;(&BZ5I#9iT&$3o_xAI1%Y~{!IAImXrg?in>&-xwoPJw?SQ7RDQUiL(ozsyawTu_enE5^U%~)QKDP1}B)z&}05_sI*1l -zR@a+u;sRc}!vpHvG7Kw215DD{CHOHW1SO1!E;?M_mMdzzCNx%*oym;KPRox2(IC*$ -zHAza}TdcRw0NfBT1AR7106-bL -z&JVk#Eug)8&U%sSq?o!?+Sk$SVHJq9`CYq)!3rftvbkx#P_ch6BlsGQvX(i%PCV)! -z!9x&VseKam-a5rTK~+H)LHt3dm)?sI1w!<%^v+Eo^IMZL3Je@z$k_ze9wZZ%ueFJ{ -z;^NU&^!6vFY?Eb!TQp;zJiG;lXre!nkff#(dWfoJIv*~lc>zqMvM$Uw+A8exYm;xT -zxR8etRwH`B@B<8*cFIDl0as7ht=fm75#E2ktF~rfCHd0RnX9oLjH(JCR-HsH5VwM+ -zw2S{{f|@riSJO{@iQaai4RlSJLw<$VGNKCkY>)=YbSN(~nT?RH<8Hf!c!~5hCN{m>~7YK=v>ve4|#-Y`$sqa -z+~}vSs{fJ&1d35G2JQt=+cSKj=BH1-t_h77%F7*X2l%zCVR;2$&ubZl1kE|kp~JglIss2gLJ$V -zYrFw$0c(KV4v=T^k&3ROYD0A73%Cncfo8)%o42`+i0uDlj{&$LOl+H5)7p`?8COKV -z)dnAQ%(n|hIBg!rk1EHe)cpPeum)u5)9by;^&p?Xqng5E7ufEd)Hw&)iq@KXPksWa -zk8G8b3%N!^z%4m1n5(C}s@{NI#teZ=sp3`w{h*33N#xLunh%i|`A09?MfLKQNvmUM -z?%6#jpZ&*oUH-$PQ~0!geE(ZciC^#E?HsM8hyE`l+1{FnUzPLl)@-HE~_^jd}fyB_tA$F7yjP5t=!P4}>u=OkZ1Q;0ub -za8@4wsvyOW$hU@NT=ne7ZgXN!NOzE{7-{sQxJhkss~_Kg>FcGv^Oznsnx4VxHyM3+ -z`(ayx-o14s!$r4RO4Sp^GUKH?7$;df=GUNsBmSH8B-!j=d7x?Sg?)TekY<&p_amRB -z3EJuWr4!4e=#nT)%+J4m>h{v(AIcFOyW$ro@`=ri(0d9NN#tXNcq#@!$2R9jU|sI>wbQA&ZX -z5g_n;B!A3EF{@6+>Gag)OG`tHNtMO6pBMCn(2p5_U7CYv;0NzoLz?t-bm{2AhVBIV_pO_Mb_V)FeIRfz^sw4W$%ko&6+A$4u)RIzMnro>_dKG#mDH`0@R^J -zIAqhoQyYu*IeOI4?x4L{>0Ov7+yRqKA=^=gqJ~X~qI5pp7?(L{J3e_$pp^VmLddIF -z{5v;}_&pQ4(*1sx$Mbonej6~ZjQ~gudkQEIGxKrS=^Mb94S;bz8GLuWe0(6UX9sAt -z)8gNn*4ztWMHNj|wlQy*u;;(E_b3mLU@rDY6BC_wJ?I&tC6}g!$?U4z7qP34KhnfVSq08L9k+2fo+c -znR#fvDh#z>Vv(Ye9?gN<1zuQfoa`P>pNG}HHfq&qzwzd>eFQ=u+HED>VcU!sq-t%) -zDM)~1+OrA5FGv0=aA-Ma#{3)Q6v{4j;zyP5h(9P{^?C3h3o92x2^&mF2L@giGBJUa -zc7fJJJhfbk{hqTN=Fev^uer%28hm575{^)bGg1*jUEClo>`m<0p_BJU#)#O)h$G8K -z?;qJ`S`{*O*cuD?-oqDZqOcOTSz;>J1=cjp -zb@}G`l>>t20u8+*H?}eU$OYaKmAAdyHm#Abj`{@kwT0s{_6aJPQ6i9GMPJ?}fFTkzsrBX_AbTa!Me=?(M9Tv`urDdBM->c;Qh~o8_0~&7 -z^3gi|YCCbBRt(2SwbJ-0si%!fJNuZF^QR3fDyT~Y>c_rm_LOc;48`~F -zCC|b8yGzv;kLPoGmte&cHGe`E8U$P*cL)q*j~uq|o2D}18+>CmJOBybQ+erp_az;W1+#h7$Zg-B)3(QVSxCh`SD~(`-UV=CRPD4 -z%7yBrvERozH{BnaNj*x`Z`9ZXA!c)2fp;H=|B8RseaFude|rvRtn+)pD~M{&U+f -zsSaf?kp*7z@U>1sdJ$Bj1J-HFFi5cG^juVP1H?mLWN7#5m=p^`!8!ZPMR)aF&@Mb} -z7JLBWm-Y~fz>Rz1Dj;1(J}j9oau;#xa&>eHL+~YYh=LERHD-^EdndI+rwql?c&Z!5 -z1dgssLX#s~Rw<#uCkCy#5Yf>JC!<~yV;s-cN_5-FK$uq3;!)Rn^)L?!4V%9R^r`|W -zZ#v(;IE$reF)2F}x&KE%ndg)7$AcDVkdcpql~r@{zH-O3mFBL{G0R(Ct)0l4JGexV -zn=6Xk!##TB0J+Lx=FhcSLmIK{KJ2jZuQ8jz+%=bqi#S}tZx%s9(J7$E9}k7XITv5X -z#TSyli)hev3*XWE!YV|{Qe1?+$c2UB21bNeuD -zK}Jo0K}YkzCbG1hNLn;JRsUJ)JdRSCTJ*MmHb<^iLEOLeIk=iL*}*>blBfG-&z0P( -zmP0(F+j`XPF;hvMaYk4P0$K5{@H91Sf6@-*#s4cSkTJVk#lcb$7c&qgibAy%%bta6 -zhr}q=MTAZn)eLC+uQg48wl~CDy;Qcz*(6p`-C4P(GwMj3!euAH5bS6L&nFiM>T{5x -zJ;Eb`e6YrUQaGqHHL(SzVI&Dxt2c*+hm)qoPI}s%f!4U|zeDleIp)7N|6398(;Ejvil%|hePV1#dkVMT*Ce|thsNm5 -zKC7bJrBy~>IpUymmv?=Ak`Y!40R-wfxcBf)Q+yTeM)_yhIOk+8urg&xJx*@kOE=%5 -z*fw2+ZX0F9RwAy5=DLj#Mz9mnZ%($Zb_U~U9_*Y2YC?t`Szc7fWrC<2Bn@ -zNltbB-jbfO%mGO<^fV-+bat8NNw@vCeI*0YzuepV_4wtN*zinuktyG=U;69g(z8^NlfE%qn{E8fTU$9>!+*i5oi?RE*9^$^Bzy@72`v0QkJzra%Bif1uvFG -z;=^n&qkqRTUJUUN_KojM%wW<2OKlTL_g-%#LRa9+IcsDl1^Gn_#f)~8BmwA?jJIQ1 -z6J|*}a@jcq=&3$P4~x6dKV&APcEdR=e$_H+`DwRoJ(=8g##fVq23lP~bDI*WLSe3w -zUJgc-2Np5e&Yfifu8X~^wl23^{YrnuS%M1PFtOqI&?{VBy -zHw*k~tD9I|yO+iM49CssC7AVAB0CyvtS_NexYd?3%jjT%Q)&?RBRcPcC8Qo`C3zTs -z64Uk4b-0}$g|>y?KVGW9xkHfqi*;tu-v>8Y-Z?OsL_-NFfUw>!e7!D-=gc%CWdnB( -zN&r(Fb*${Js!hj#liQey6>;C_Kb($^_JaBWT}-`pDlUK%#-PJksbptj?B!DAC_`9RTRrzx{$ -zu^4yND6M&Fw_J*+w|;MVh4aDS7o0R$Z^xaRW|D6#P;vO~jb5nFWCjRsEh)B5imF46 -ze+93A*(ziP*=nD-RGEuc5jGmgcTItWuS!xb&tW^#ZqL7@8m8 -zt#cG1w~?aOBKL2R>3Tsw*y-zN$dUtc?BSb|xyz`^Sl{>y$v{-I+f@XA%D9U7NILzr -z%}#~~!)lRg29mh@=mii5#lYvacL67o1Ji{ya)*)$V}QNx+@J`|ZC0sz?udw}XAD&t -zVSXR-TWW**Rwg)Oqp|ZpeW_))}s>VO&0b-?_=w^3rLRR;2TGJ -zZomKjM8On-Qz{+YLkVZaR{ucUVzUxuT2C4;N&Mz)(AM=T{znl%=7JI_xYnpXkA!uS -zh;>nIn+J>16D6D~%|{v5yyy -zDa5*0o2M9zCz$jK#&^Kj<)6yV9EqT0E-wPQ0z5CknVN7#511b}!)g_y!p&d7@2CE< -zY-UDN{mOR{D&^f{_|0&_mSGYZ{xS61LKO|FBah0h2fd-niY4E_efzeG4ADQaDgbAn -zAL0G|`!|i$zrX+bRetjEV_P`*!`J%wS!*pH;yilF#)ttHD!{8ADy|%e9w|uAg!L3mS$L`9n{pfgBlo%vvs-0or^O~+Rrxr0>DDwIkKTG!Dht*a{4dadINnhxZIt{sr)J?GLf -zR*;Q?SEn)V^Rjo#6+f&Y%T~x?}OvaU`Ba}vGlq!JhA&P+~8RA=F!(i&b -z^3$H&ar^XttX-#TOu^E6wfExMI@a -zvQ)CPP3t62;xe`=)nirv_|jjmWvMA-Nc|r>t*TZ3iF>6#S!<=PNn;@r+YVYUQ^Jvi -z@+(#0zPr{^StyVN`bkKnfLt<5u5e=>4Gqv%Djzg}8k{tbV%nm@Hr}!S8F+I`gSx}= -ztjXAyL~yI=p-`Cg*G8`RR9$s8jT$x%HUc`A!X<1~#V^0!NVMo#Ux0V+(vGu%*KfQY -zZ|h;biktu~ZXtec`}GSedH$CoQyMr58BzhtGT*|{bvX-*l2f`LfI2ppks?=(5$Oaj -z%TPNq)(jb|Mv=<1*bC4Rpcs*zZiazeDq0wIQrkMKsE)mqRvC*-K^(E -z;s{k4^y1|q0vdmsLfxY3^DJ#f8Qf3xw2CvwQdQK*AQ@)93>?+>F8%pKBpUww``b5_ -zmpF3kr2M9Q$mXLNHag}Na}$3v3T9CA9Rp#^*Fq%$*KbQ76Af(n!`%f71o0tv2G~`| -zP;=I)$N)J&#=pm@*&RoqGqg*7RcRPC_p5*`)#TxbcqyQ+&^T-L^|2|%n^wjr^DYg5 -zK5(5<#XMqyc{>a2gpTEjj?6cznyKuBjX>?)y&9!DHovMc-Qg?n>uuql6&nh-rZ22pOGHF2E-T@?5DS)8OlLV&~3ieK22Sou$IcV2|{l=D-o)W3Gtk4gUevgtbdM6 -zYqE?sw2xDY)npPbXjgQ|kbboIjggs#fU8B%bXXg66D!{LX@NJf>HKXDR#n5tc(a#l -zV=yrML=Xm79w{!;-RQy%rx`$J3A(@TR<<$2mW)k)<*~38uZE`iyN?)K9fSh<_Dlp;(SBUzUcpuT7R1^3&-V=f&y9r)4)v9U&cGnUV6 -zV|pcC7MBaiItj%(K-mcjxUa&F-seagD@RdiAg-m*kb%PDm5}}|(E|H>{LvK`xX1mN -zjh2v($_SVLx{(Q{e=enI*WUJX$v(dv79an`FaQu#?O$5$rXLiJa{EuR?>NQF`Mnz% -z-Q+&fCQy4g737kId`_YE>~y3H)?fK9d~^zt2nx+`%b9-}$OUh0od5z!tkOdkGlr33 -z5^$JJA~K|Dos=S6Mo8oQpOhl|BK<#4@i -z<CpG`q{*uzR90^QSr~X*U<1q}B)|tdqCHWVBZxQ0Lz8!C -zb>A+TjOz$L5Nla7vKO+m?I-$BapRQTTR1GVrzeE3FEu{8@%^8RGun-=*jL?H#vQup -z#&s+5H)-KQaLO^NZS35aRo6|Zo*MFWGxqih3C0e~H^3LGP0FO?N{x{i*t -zzr_=|QvcO;xeTIIAEHw~3D4(vF~oG}@+&-2zD;tQi-+F6|19TV`ôXG!&`Q4R~ -z&TcOZ?QYM7;T;MMx}4$bKT1}go^}!xHaX~xRVJg4$)C3d(BNAvV=z4;H)PS~U+P`X -z*Yyo@sVE^UKIZ~7F7nD1Z9ST|`q*9Cdi@m2uhA`?hR}>1$NZ!Dry>Y@iu2KU>PZY$ -zHly4c+%wki)?0x;CzP(?dmgH*_5I`Ln$MvVym`YsumoN<HgtSTB>u@+K{Ue!Ul;?KSEhE^{f{z}knHLo`ju-PMU&raw_hnk)=CBm;_+uf1X( -zD&$iSLN9m8T+oswP&!Y5eMt83 -z>tQm!+AuBd67rD&<*}B(3x!1srqiOfFbkYt`=w|%a`;*1gmvuS@82%x{QL8d%c!Yz%*jEN%(>OEniUhmy!HrPlbC66X5d_!u)KI`b~=j -zl>#Oh)3o!T1$WYjSF#E|Q0T*S49LOGHO11zDEHAY`YG-nI3j~00rHV+dRUJ+P5VHb6&;-GrH_CfqakB7TpYdu_4j1sH+EEh -zHWm^S1o5tXx5JJ+h288vHS}h`|0-X_o|Ga(N9mz{`>WNj>g$gUxYnYEgltWuZ*X0Y -z<0xOTa9P*y1W`)K90-nE5F8T}XeAH{F9x3Ta# -z$F9mbDiAnxV!UJ{;7VUaOhh~A7#`{<7)ZXc-b`||_sgWL2fbd*_{-8y*wR+tm?1-tgyvrn0ei6#?xRinS7 -zw6^>q{lE;W31Q~eC~7SeR=oeoeN`?8cqaF3T -zk8Dd3px}{Qur&cM$LAu5srfReYXT7Hfwp~x+2@vd@^r_-m$bod^w+_jrcGSnG(?Mt -zX1Y^?A5=h>rDfnV3LTKtQ5wA2*jnla9N>3;Y&G}cUglB{ewI$oba!Zz(ryG)MCi$1($g}XZ(*bVLbsRi`Q&<~ -zEKsKtm9L$G$4sZ1H;YT{@!Z_LfvF%3Jmv}If5qLLqy`EAg;Slqe8%iL;ko}k*Owd) -zAW}NtWlp5Z`(15>lJxpNq+t263Ou`rUWN`Y7a`G=O4MxV -zF<#QpI>OiF~D+A{w9}|Aj@+h9@U$Peeb%iPMZzMORm|&F3 -z(wyWqFNG?$z~$&awx)crcw>5B%gX5Wo#auctdM-LmLCFF3)C07l-BR1d9{8w8({sb -zyyRc6-}XwBX+Za&Q_+(r|Jg% -zRS@jVfP))5yWQYt5Ekmz*}@2ro+bh*TZ=QdAzZZkHk_$SkB>)E-x;=hV^&Qhi;CX< -zvA`Ba&t!46@iM0qnJeU{8>P&KMgx?!w#J7jqi71fXADPLl;kOy&dP_y&tNPvO-gqi -z6}R=}@RIW`hX3Q6#e>nL);N-gFb -zq{!TCeE2Yk0X}*LgDIfHb4fT3K)4*qKL@kZX6KW1y)hl~tgQA{(^{<4Ynf|tc=@!L -z8iV{H8z_l6DRjt{>$FU-$Rx;g2a>HQS|JZo90gZ7s8Okex4%FN1w(DN8BL7M9bzXTq+T9-0*k&QgkJw7zKvfXbPN{)^SkfjG=Rai`Ncry2twO8NJ -zU0S{aKwNJ*?244Av{z~)PHyg$$&fFt*T~dmz|IJ5sBg9T -zJ~p!WJaB#$FOZKltW3Lebhq5V?!O$T)fuh@so8r8-UwbG^6WtNRv!1!oC>DwtB3Lg -z`lm7r%*LeTvI8c2Y8e$ZxMzgMG;sN95fm$cKp3g$%kFw{X?Qsp1vFQCqVvCI=$GsF -zUpEJHJRW<`D=VdG0VoN?(zKuV9*g1fy%P$nh-d5|?@k>^!iZ&}h>yOS;t7WXUNU-M -zH6FfSQm%BAzdT#fMOvTS!>c_IG9p&3{Y^?Z8l|4&MOXavS~lYDNO&y$Uw{9UH6w>) -znd@O(0P}FebKL|eR=*}6T*}#)lcM;bL=L1$_6oC>CV4%EFa7H)HPF)Es6SF5A^y9( -z+shN3 -zw%-3L3k3L#zn)6se*fpCA@1(b1+r@mxD5G@<`m}uSfj!;g -zL3E^J^Ifh0NSLDDv^y_eDth@nJhw|l!hQZ*X{X2v95w`i -z=NCun4nD;58rMRRR(Ta#K3j0*e8Hx?T~E2k%LVT7{^MKz6-{^Zld}F7_x`@84*L84 -zRsO9i<$jFyB^=AR7KKA`f0Tb8OL6LhXXet%$AS!a2g8<+@f!7Od{aDlY?f+x_^JrN -z==a)*dC7HGV2xfnyvhN2>IWzQ5N0W(wJ1v4eyNA@08Gt#b=-k(rAUftvFY)pGTq=1 -zast#wKF9K`u#v0Eln#3R^-HUqarE^gy|AyMIPR;=mVa?XMi!Bv7Rcz`8vVYu_3sNj -zz}Nn>`1-ywI61HJ(@n0|S^%CT8OUeLF|#M{>uDfh@aMO`vUl`^=bW$ov>t|MQz(+>*X>{p?q%Th1p2+p -z@gl|>x!$t|6p&p`S!qDmps_+OO!i=ISVkpl>;B#BqfGxOAkqaz$^%p?Rgyi@;$x}40ETENzH^y-8*il3zTgp}gHhf|RE>uapncsAs_zrMm}j03lu&@Hcf -zP6cr#4rw>+%Wwv0!%48 -zR?3AEs^*4JF}oodw$#+bPF}NFT$SdbI$vpmJ9-J*pTmrv#P~=z1zjrOr4nf6h5yJk -zX*kG4uz9DQ2`W)uuIdP^e0SmUR8?9*?=Zulf-A0*ZFcLT_ -zITRy4kP|i~6fqg%PPcrL{20IhN^xrE6~8!yaR3~X9f7`4g^@80fseX -zG?S{k+-b{xOP5I+0in^t{e_SK(i+U5m!A+AGJb_Ga(x2s@%e(;HiGzSF3{OXH}H)Y -zOIU`RV`OT;d@9MVjlp-(%#VHH$7zFAez~EB=DRx9^W}ml0|D@TRr%9u^qGq}GEmWD -zE~m3{^sHy0j`ov8*LB88&Qxb+D-w`3{PJ90o`WT{KjbA8S8T$zU2hz@?ePx|&(_Z{ -zB{IJk&jcb5AR8&s+|GF}uHPT^Fat*^Y>V=2vLYG>7UO^HN|Nx2Ka-xG?&V6#NSBsM -z!xzh8aU&B&6wkaJZA%W~D-hfoXrG+)EM!d0aV>2lhHH6Y@dPL6Y>Wc>)QAfJ#I9Tv -znAbfqCehIUSiHkr_Pv{~&x2+LS?b08jaY1#twL*i@h<{Tre}4u4T}52WnT6kL%T-& -zMtMaKM%;3REwF%e;gr+MrXAO^VqsiY;Ck$Ac>Zyn(fd3@Ks4>3>|UlEbYj@yufscc -zb~o1rv3YW)rsARye+QxxS3%Bk`IdkFgLzNWt=O4R)=h#gPezji{%wlzX{ny^vIN~^FGgaK`EiSKb -zUZmH)y{h?)v0qH+&Yd;a7tC@mxu6%BCHj`fi@E4%t#3NlFYi@VOu4pJZlY_-A;0iM -zf($BO6E3rRk$$8Ggu(B1<16!6di87;6t}qbzGWToIxGA7B3bAr7GFw^&5uJ^hX*ru -z{`ng54t;rniFv07$oBH?SedNzi^`y76feS@@$VsjUc|l+EP{{&pxM0uS(47e#?IGh -zn461aQ#shu_T+_l`8D8#UQH?*5hT;gd7%S@*Mo#fIXs@b>`zn_Uw2={=v*&9w$2D| -z>3JMua=f6fyN)Xg{!||1Dxl-W|M3ZUx3A9{V!rzTbg^~d`}CLlp?$>dc`qBNL+r+J -zS9b~9&1|0X*U3Wh`YjlTY?zfRhuQb$?d6?6P^&FBGMB8BFIS{5Gn{DxsU;VIv4dWp -zpI#Yl_!lFnAz{pzzDpj8^Xm}eQWu5L0wZ{RQRpoc&I-h@t2W|5&L8@LBNmvt%el0u -zYEHjPEM9@xhxNqFQCYM-VYTD$T`ChE=TlYbb;a(*EGZ -z*DRUnoVUb@c^2;Am#N!m75kDuPqYOrzn9R{#yABRp93Jja_(hY1KM%#=|Qd&!*>MX -zQ2tbpL~Ms-$?Li#V~jS%(Yt?a5o(9!YJ**nd!c+ -z+f|DCfsb82F8RofR|o1!#okQtI!fa<-Q}M?ar&qjt57yZqTyu|V+DXzgh>O+$7ue8 -z#F;ng8dOo0vOCa~uci^L6}|2s^NwP#m3l> -zv72Ky=7S!8B05P*)Rt*E1Z?CQ!x -zLjQz1@eXj1L%}a3I7Q}ulPfG7nKO-lI|M%--%8snJK -zr=%kDsmjN@g)}m`ZA%ACw}6@9BYGRO1n@~`z9kAEdRHH1m-XxNmVWK??1$759TSJ+T?so5fenw5Ec -z+7;cFTSeYAUlx?6`Y~(hdamjpdNa+gfc!(HzZ^B_=c@Wc>X06b0_;Aj{h`mi*mU%x -zO{ISSOSk*O-SrW+(UNEyjeAtunE0?)LeH%eu>R}qW-a)5fIm!T*03hGT5e=p|6niY -zDst|Duq4cb4y?6G>eG8;z0&X}zwqFHFYqF2S{;+u?Ii@JnsKSDW`;bclFV{1N=s>9 -zKXQf}C9f*Rgt-A!VMh6Ij(*Jn=k_2|MT-fPj|s*!xCThgx)n4Dl@(GP)52;hQ51WG -z^e1moM0#USI2`igM_0vwdNVQyIirQ>X5*RVYZ*Dog@o=V*)g)f$h74$bpB+abuFKS -zEzY260SA&W)#PZYUpARxnsu1W_9t$iOer>7joWC*g%;6dZR}% -z#wM5(ideoO8HrF`C#4E_XqSjyVa~=@@YZB2zkjFeEWHx)kbzX&7Fxb^Nw+$JjsIOY -z;~Hh*JAPTrPVSVad8_jI-@n;#Pp=szEE_XJ03z%&TFyI+XvB`-f^?sALdZv?n+uF|dC-9z^@TH|*+kE0dkt8CYR#q&$CuSp}H(4+=U@aq06F10u&S{Fc?B~lZOtZYs$Q`aGo(FFWn+a^i+fCGXB-@4 -zBnM;#p*{B=Oeb%WvU#Xjs=_nXBZ6xxEOUGs(MJdLczT|sVE6lN_1tR>sv?mJn1qJ; -zE{yq-Oa{FgSZB7kA$9e!b8T5}mJ;2uEJ`W_G0>zXPBLPqnb~&X4+0}?V(w&emEGyO -zW*3kf7fCp-Ajx@S(&nPbp;rjOE+(lecUmjTm)_8weTezVH!9s=Di{Y5Q~SdhQ~2&5 -z;O)~j>X~UwxzLSRSdNaha`R`jVg&)pVrZv=3)y|bg`IT<+sNq)oA?)&;o4yzZlhI6 -z(cAy`*qqKk`>;99LVn>IPo3D`LGtp(;z_cLM5VE}?HpF-G)dS&cEwd@ajC=nFUu`t -z(>h?WrRLu|Ir3tW%OQ$ZK|i2q3|zJF0RBMcy+4|$lso)t)8dK?fK>6AL4_cw){~Iq -zC_KY7UhrW^%F;uOZ -z8I^LW>nyd%@m_N5Q|gl!z>n2TJp -zJ|TBcbFM{-k={3MilKAHm}*oOL^2K|0F3MNXnc8+HI9JDyN{pxO2`#JfxGQSyh`LS_Ji(#Onxv$ -zF(wQUtK588bM}2Bi&k_9bGa2+WI@coiDH%${PC2^tMT|UzNY}Z0$SOAJh}q{6riUE -zIhc-2s$%uqDt!V^Cx&INSIr%vBS-S{*qNRwR$` -zFH(6EnK+wu6oJchVLNX(=;nKuzCo)KqGr8N5zar9yyL!R=F&%e@TP37LKp#6?M!!o -z&TUj?GE5lu3Jp5gb7w9C_HM#6$Z{n;(HaM9*h0zv -z{we_nGSZ@WV^B0?H??Z3C;=SQ(y>M(NM}zu9fJfr9r*2X=2RT52ZM95$-9+C0>9Xa -zmNTzWuHN`ad;(l=|iQ9M1^HisBT3Qf%l7AIma^k8(t3Ua&8WVJ)7Kj -zu@gp5bZJgzd!x)g#!@Fr>`x6 -z^s3;HAz-RR@?fsj*Lm|`C{x4*x}{sAnsT8tZ%&ZCX$o#5Z4FSp(s!$)Y0gQj$7!wH -zpxyjoFm`xnH6fHkvyJZo_^b@vNDqSqFzOCbq;=R@2hSl=ZsrT1@+5YKT`{=o9D~mWvQ1N?=-8yXp)y8m -z!%v^P-GQ(Kw3xH+Ig#WHU->f}p8zPymcv%Bp$ck5H4(-pSviQ^s)QiBd{>=}Diqdc -zq>QZ+dF{->rq}rqZ8M+~!j*(3WJ96UPQ6M@m!L6|PM}!`g{nDW}`FxV=pYKvo -zO6HiGmBzTRcVvupB$W}_HO|1+`*A)rg!JS6UAPGO%B02Vl|PJkm#oE5ksX+vjEO{i -zXHVt7qS0I@SpIZmJuf02X?Dn_$?aMo_yjQL={dKlhzH1THl`T4Sakg -z|Be2C0^WCyEu)X+&V@b-zDxU}&IwSEvqNc*R=-Bi(YF?bqn!)Cj6}d3Pj(`(1JN(H -z-UC2Zgw|?5ZZJ6Do1bXs!_r)I`QT2%%t197zz>pn_q>AvTAC&>;lW5-nQ^s75R^M0 -zAdP5-V&WcS;h&p%chXSqM!RMKPU7f#R?jtp%qUi!_sM9+K7N9@6e`;IDGroHI(~I} -zYqsN?!@>v?!ai>3ouJ4H{~*}}kfSUomO)$ykcp~ZTl_6-tMjsUHno_c3f+=9j8Qzk -z=PW?tWSVpNT-p3XHo%5Z4Ilsd#l10OGRE0zBN-s(g0F6VI>xMcBynmzlEN&e_WWD2 -zXdx2~?q&m>x(0;6V+ypk6z!kf7aS(DzCrmy^P1ltGp#~F&_zf$Blz#Pe`J#adBPx< -zjy1KC2p#;`Scsk+PvFaXBgcC;@UOcEK0LiP@FN@5JD7+S=6+TRXjWWb57b)RNN+8& -z;Xccb@1pSYmhkE5d$b`=TB4s$0Vk`2-o}DpH3v`F_SgLjO0D3wTg$O*eUVJfM)H?7 -zjhc#R?Q+{1Kk1aoW41XJnE^Jc!vmXswyFu<9CR!1-@d)W8$<-TKfQOh8c64)hB$RP -zNbS;NOct?li^JNa?c4_}UwxaXf?#ZCSsmuzesK@kmf&#Yxm@HBb_y{714s73lNPUb -zU!WZH5l5gutCZT_*z8Rf=;j%|Lf$bR0c2e@c?NSaW@}(RA*X)>kc1ndY6+ktzM`r} -zOa!3t;=N5SJp{Rz=s>lE4d`sT!+)gcVcbpUz&~$roKBMnbF2sg0|#h33lPhA(W(C-aeyo1=B7?TiC3zz|jex -zDzFi~(4^0UtCPfK>uS4!ko-yJi(HcZtQl2i^x+NJWe$@ZDw*0jef{G{dSmopbb56UWFT_9>f_X)*Fg(eA0>_QAu;plrqghJF4aQlzX`K(+q}z -z#Oo%DfaVl={SB0O9XeTOehDpN{}&us2`xz=K{xz}o-T)o$osF4zwk9Ob-7&_{vltc -z<}LdE>)Ss#q$k+6u;9-yV&#+KS~$x=3z(OQE=Srk$6d@VaC;u^psut47LWLDtCVm*@u$RBTj^6`9I#p(q88kqpR{Yqq -z(xvB^vH2My`t(H`*mI(5o-@51KLv;Y{>)q}no@~4!Wr^6!WJvwG5jUBa@qrCg+`t0nH;;B -zIpEbvBn!4W3}9k`$;&Auwq9#>F|`O%^Wf7PN26OsLVX*^Fdke&fq;G@0nGhBv?s|Z -zyanqb=}`f1DZ1%o8=Lz@1Rkq4Y_2zV2;_jYgto`-X)S;M>!#RY}*!)uI)-tIbe%Ni!OJ>PsyvpsExs+NBE&8P%f0Z;4( -zD6YRF9Ye}Z*j4c9$ -zBKDl8O%MG|wpWNr_LEXNd0XKU4f?+6KJCMMl%_&{O(|gK8oH{+Q+c0z+VqwsLckvV -zYFMEp?zl-GH?tvyU>ngITWh?%nV+1dZeM)LHNitxRrpDE4E$B86c><(+DPt5ElY<1 -zAAfZ-)-C>_T^GQ};Wze%)kUB?gPkw?XhhdPdrgvl=-dtXp!?x;tCImA?_R{O^w5Si -zDyqQ0u)ZDqv27ru9F~9zW%<($d$?mK4hn*}ipYgFY$NKk^PN~iZEF$bd;Wel3|&F8 -z4M#wY;Ec?ZmKzz3i@T%3Hx8)(dH$}>2CY_zTsBCIe{TZ^`PX -z&(l@MbiI!Th;hN165)`yG?OP(%IV+*4ocn;tMFDiSm~%sfLDRWD*-%Y!JRw0*TrDX -zN#N2>m$zh%lfE7>Z~;CiLylW}HGu?Mez)kxOaeTNpZZvSq%Gl4)5P%||H&7pcPw^^ -zWgdS2ZPSUJgi)EMaqf=r_H{mgJ6iJa!O8#g2H;IQCef9=O}m6?5EePAw130YX=s_8 -zKmdV|-37F4z%4o4$VA@U-T3Wj>z+5ja$uE;!}LINkJ!aRJ+`Mx6Eb!^nk)ywG2UT -z6=0fO(<1~RW)jxN_PaYBc@x0+pa&NlwmlZj6|1uc1DQlM(qxFXWtP;%zk9?3Qi|P1;$7-RcBsDTyv?>l93m_fcfN;Ijn%(Q%un(Ss@@i+D0<@cujQ-{qH(0J)&ve{LYqN%dS3MaunkghA=3s -z29qS>aHBKO67NVqlG@x(Kf&n-fY1ufekV1KYIs^bUs#%mBgJ8|g4o{eZAe8aRj6DU -zpk=ai6ibX9U~0s?o`5dWffpPl*I&5V1pwXvsgc6Iw#FmHH!^S=-v$X!a17IrHHe>T -zO}6p&qzws278yfS106g!YuISR&9{T0CuqVRVI2;-QOokocbYQyWdE|pb`^O;?xJs6 -zs5*V1!QYA^9M*tSvYnJC2eayc60AG-B!~9dJj381D(1uAqnLYIFT@U#V?k2}I-Xp* -zVbW?~XkiUJY=R>KbXrA_;Fkt6*JsdR6t|xMJM;a=8%k7uBbNwxH_o4`&?7efXu;gC8B;qb$YlSS0m)kXw2B{aTu6lI`Qi1a>lc -zKp;JBoz)-JJzG+utQ{A^1X7}6$rbuv93QgldU#(XYI6@iD$nO+U(e=0P3IV=C%+4< -zTwR_dt14QP?I-v@J{?=LRjg3eFa=BO@_si=aQw|CAg=w#!whJYc@LGS!SyO4*6KELLgV$ -z3vEr2vLt7ZUN52wBoP`iZn+6Zm!Jf{9lYI*UdxRWVZWzjW0Un3>Pb>rBN<_FL%;c| -z;EBLQ>1Wv)SPQh35%nf>j@|>^>s{|wq&rFVPe7iK+1#O{W57hxv?3H2usz;5_nfos -zq~fc-1$iXTkXc!E9g%E#u$uY}* -z7FC~iD)#q69*nxSUxA$OZ2pilz2DuFWP&ygAd#{=!-f3!K;%KG92i;=Av|DVYt8L? -z(z-m3wyvFS2HEy75XL?)CH(P9sU -zA@u2Ue|+7;ef76{r0)YyedgpgdE%pmECXrus4bi@ZkD4$$+231WCx@*PYw}njH1$k -zY|zhaLG|2`*`oPk*XTZHcJX^KZ<|ugiNX^^6;;+i8{={Sc2)q7v>vA_TqS;V{_8%0G)%9c|^n+Al@ -zw(vmV3_Tts7kNSOXf+R`RyoOl7$Lr*8P9iLAE@lpW|(@v|CA{~%>=3ptp;Aogk*{t -z*}d`O-7eAc+R2bRq}(#wdg -z)U)VLTgfoEResDA55 -z7pK9Wtaiv0M8mVDWhONJY@65e=ud1ofkfrJ9gtdf6BQNW@{*!8i@C*6q#38eq=CbbKpKG?T{87q~Bv_yWpu+4ss -z$KAp&NKkL6s%%nU)tw>l5zj$^#oVo@l(@1lJI_+oY(ngqW|DiloGbb@wXq}Md{Dq> -z#fGEgg0SheVs~-v#EyGU1`BqAK13TCUR{bnJ%<=1hNIQ9T+eBqfc-kh%NLTUVB1ba -zc2Heo3Qr$vunKANxiAT!{Jbt8tkxO|fE)cS(D52S9bIEY``%(w=&HvAWfUGT2KD1#u>agLh~ -zsNF*w(lUyhn4rhBOkhOFV71Z~)OlLL8`t)Bz-ZF}7XWV{=+KSU=D5!zT^iM$qz+W` -zZBxM3!Rlg@o5SLG78C8vCFG(bWq&V9gbK&@f2o&Qj=e|u1L-mBakQ($5tDZzwCd$5R>_xkov!&-kEMWcrq285+;^MCeIY -z@jUvEADD?!D!Xj)%N4B%XZ-Wea9vuScSAJjGm^5%yYTY -z84vWi>3gSV9OC1#gzg~25^sm=IW_M3i~gbIb6V|pn3NS;gSA?@CE;|J?95AxDNL&g -z3zyzh*C-3v`gX^% -zNB>E@J9)$5&WZKQ4uF+MUYiSf{^GD{I)OE5%DSM)ZVD^ya><5FmBk7k+oWBdv#QpP -zG#}!6yX2*#r24*o-f11F+eE^Obale^mx>TY?M1L1P7DWH+$_eCOp$|v(~{uBL&iM#S;9~Jp}ccYqWo9 -zng$fZkl?$wBU&lsj|8@ONuQ!?0$CKAWB!gCwKm5s;~Q+e-}5IbV-f28K#WUUvr@ij -za5syU-NWW$+NfDHHb83$czE{~I$JYdx~ew^ybOJVBu3;SVo=7H0te|?Lczh|n;Zht -zaJrHv_xj|KJCGz6?3rkNbM69-)EznYh%Jsq6Ay@a5c|e5< -z)CpFoyg8<8(;SS-?y)BuRKjesWaI_Fo?}B_0|_LGpHG9)7c;@nH&&XcgW-WAVcgPs -zx=U<}Q8T#gjSX28WB?@5=57L=jGEslZXi8dxzA{|?d-?hJQ?=L5pxCc8j)2bzYm!j -z5B)o{yN-^F6int{Zjj>cfK+P)fGheU-(V>Vw)N66X7QwsHV0Xg2h}CzMq=U4S*xNz -z2H-Z|;qRb{UcP?kTE*z -z5djv7-v`wB%pADmwRioL)byr}|4FCYPW1OX;yQP&IAowh?oyKNGxD2Z367BU0}AbN -zKFAPbryCQcz6jP8JBDho>Br4TZlt>GAK;v6}3L6R<&EFOyQdf+NH?zBJ -zQAryXZT+;!#?Z|gv*6@X%@u#T-Q0Xr@v%Sl1V~-q=-v)}Os=&$*@u@exo!*t*`?O* -z!}-{!b9PV#(wnjg=dA^}b3%)l0&TVpEmtD4b}b=B2osUC+NT0K6#Lx-8(r#l!Geim -zAI8?T-jqOd9*nya?sTi>!q`k4wB)|A6AeBU`tlG?rrSL>D;66aqaHb_4FS?Jy)gJ< -zqikExJ=fAZBQhW$V#p+8=)Ttt|25xkQ$4JIeg3L`egErkpGM=a&u`W6zCQdv)m>(V -z6XJjy?a9Wnz2%xSJhp*^&qI9cPrq-5XgdjjwVH0a+ZT^ahL&GPly3PS-`Oo@>!eq( -z@USpK0tjZw6pdQRhK$l6u_@RG{DjJvo#i@TQI`)kxX~4nf1aE*kXXYx -ztHWXjyRR+aQvs5q%vB(IvxO-!aiQ==jWowEf>+!L+#c=4C2d`;T%Z7B{p+pgB0E&5 -zRdi#TKdp9TI>fAxEE*06RtXm36&X&h(n>FA*7a=~plGZ&Q=5k05K!EYMR2n2E-TgW -z#$9t`&|QysO*sO4^hxsTG6t$Up#sYpaQFvv%V}vgU$agD#h?VJ9E_q-3!Dp`T+hE5 -zf1-;a8}~~b5Gg^61@fWTwF$5sg?r8!ofNr(H-;}=l|Tk!)jt=928|~7#b{j`ZJ9H) -z=XO+k*v+x>irE+Jg}Jf&5W?AM?;4K_vz@k%eh8mPQ>FG%x0QK#`VH7WBr~|0Wr*aB -z=dvY6`1~{mP`7OjnGOM)mldnq#xq&|Utg>gP^9?r?VEszyGP@k9e0Avt^s-U+tUg5YVcUGh`G-WtH4792L -zYrzWQN6jEQt91=`e(a7>-{Fm$BUFS*tyJY`V?5DavGxCkWq0ZgKgrCH?6hOac#|UX -zTh3Usi1trrOK9Q%TOUI439>TUDyaV75GC#q>LZymE#E~Esw%!=02Th6j)@If -za0$SktkDOzjd}E?RPj8-ZrOs_DIHxpcjTu1!~NpA=QN1Sj&9>6o*2??w}88NB+QGs -zeuFFPRTE7w#~(j#($PV8_90Ny2hwd@=*9>zRzz8ny-vsyorH^U#?ayK|1!yoR=psxHZD~nfmBrop)R`-eHC9sN@QF_o7#$Mfy@MTm5Zmf^d -zYQET#@4@CnHq5Odo64C{iJ0TG6exKI*U#TTM7B0;>!U$#)MgcWc5Og$t14!(vUwrK -zh)TF334&r3dv{IT&w-0b<4LYh6-^T8mO?)-B2^5Fp~_=iQFQV)qPMmlJXrxK=aV0U -zd1Oxb*3#clby#}vyBkl202#=~-PN25r$HbuEsOJIf(?4-V;)R`uHWSlM(`i8#kQP(-Tk_dGSQJ0^c@P2kcr4K4qEw3|qbVbKH* -z^t?K$<`mI#fhcyej@?rVKIL8yR#?f-LXy)Bs%ekLiq=FsXanfX@=sJZxRks*GH?MZ -z7n*mNdYOERzv`vRpYXoqG0A -zpP%!&%A^`ci$kH;(&7)`UWP*A7y$=dcXN=IZT8XHQOSA-?88mkkJJ-@*9E~h!oCEi -zvO3LZjK66-ahS=7gUg+(^JGpsbbv -z*3o!FlB$X%?2-utjOm$8bFJV2M?kp0L--!aZfgblT&5;>_MUT`&q?ei2gB*p(_7eJ -zaeLj;tO^=L!qEIEGx-UR@98Rz8z1S@wH0&xW;0dGhbM-_h(_5c!U=nqH#Qyi$H0p?X%AnQNbXQGW& -zNgocxDtEjyJ(ZON!7%|nP(=5p?H7{bq_M{_#r=;-TjuX`i3z@)t3)}OJk-zPuV|4G -z3gk(As*T4g4X9cv1{P}oWRokl8g>_%NMwF=NLMLPfM1fM1rsgIn?s0*>qS)%kh2&~ -zaG>k(9>`+lW&Hj=YVTfUa;+`$~vLV90Gh~o# -zDkzc7OGE~`SL5H2<7|xiC_#Q{q_LWqwRumgz-_0h_oM-^-fvdgBtqQJrz?7KY5Vp_ -zcx_yowvnBQEgY>8x9(GOEE|60eT%5%G)nf>*^$8?2rs;oP4ugFKixMM-d*#p^6pzb -zR`2iboAt+OwnsKB`J^b-)NBH3U}tVFV(b7j28xy`u-$-z+%PmfIjUiTd8zpfu3Kt+ -zbJT$Am^%QApz|HUbM$#&BB#i_KAX^BC7dhPnJmtgx1RPJ36oTF$4z#u<+<24K|}3# -zjxk0-VB>IdM`G`Ob$S~{DL|WtdE-8P{jJyW_ -zIdLMtFtj)w@=`Fz&S>8}&7|a=M=qAhn-QifgxY$LQGJ%+2Gd!A4boaILW)_li72w5 -zLxN7-Xfl~o1=Pq;ue6({isdFJbm!jyzyWGEY=6K#ED}v2YqkpbUjeMR6|~&sTh?Kk0x6VPF+mnUg86}T-o_-K(ist%F%3rZ)B7rjUm#|g&-}z3GzSLT -zO8SSB3qsy|pwK6?)uo<+r7z?yTJ|+`4BLLr5p>b*~a+=qloWi`g#;DujDx*}~ -z!)9C)RbcT^ZFtJaf|3=2K*ND}vTAh1d;y;wxkDLS;kIgn-v-C=$@y+6BGe+)5Lr&D -zd?Vv5JY&&IhQfla$Ym)gB)@u5;WR^^NV)`09>l~a30<c8A+kH!zJwBhKt`!A+!1 -z9JL>8Um3eJ?2J~K7MZqqxP*t$G~|2Tx+Upj&uvdoIw_a}`{-D6(QL~-VA>*fNYx)n -z0dDM-=m7nx#VYdB5z=G;mJF{UHJ;pr{dqVGldd(IIIPS!9y?n}rX#*L3td3-)pg$; -z7KLp3)uEnAD{*S)5CLvf{gVEOVz!k&h3uymS*D;SDiSM}PKTARlEia1T#;8@4O%EgDxBiO_e>iFDT$G=B%ct0HMFs-P{c@~ahv9v`z -zl$Hg#MvICjX}#^qOa;oW$hnm)PFgFf7}0RWFk=RBw*kUZV+%szl7EUzIP_79ECln| -za{*}B3-lI7rkI;lmg)w4E0?$N*sQK=S!k>CzC15A@zzHAPjTSyiU4nngtsQu>q~rok>@#(g>g@=47%a&jG5? -zu7=FPeHZlrZ%y!RwzeA1tQ^J(2t)AEHKu);vvF=&SfKDxPZk@=fV1iO~I -zPv+HB&5fmhW3skB&<3qwM`H_+xhAOMf|dcuMY#LPZ$_E+bR -zdUBL}{%VbUo~6q8804?x;zolE#;7kKJ#bt+8XtE|1elKE*rroQce&NkhuWv|8XiG& -z3&JyPzDuN-!hV*=$KK?_DPM5OlSyl)v({@q2B!a!pfoYWdCvT0VVq*xoID01?0oca -zb2(o-yrj9;k~fTyiO8V3Y2e|QsV^VX^U|7`E(7Hi9-BS`?l&U9nqVzRy4YMZQk9X- -z@Js#o2=#Cw6vXyWtAt!&3zhH361*SzZvxY`rH -z#g)D#bSoHZ@E{8t%h(?Suak&WGMS^TH7+T2RGSA+Mb1`%;I%lR`5@H*r;Q8X -z6P_r|T;=9Gr)~TGGk@5AG3Pgl?vZ;oxAf72c@Hmi)!fV8bV3`PQP=48mz-6)6*!-f -zWFm%WMF>x79*N)!%n~KDVu~_Ay3P9gYNP^HS&+7k<2fzxL;y}ao>5AB_(>$VLI#X3s0~0;ooY$)L8Cbp -z7GWXVYWEF@T}Ciy$g`r`0`bO>utQR5mU{g`A{X%Aw=N;gh7YM~0D2f&U)H;~D2gl| -zw{K#+bL|T!*~psW47uE+@sOwXOK#}EbJBT+f7mUz0!)n?Hpz(|XQxqCvaz1Y@*#mj -z))R1kfQQz?Iz+J2LfE=Sx+POJ($Yg|usGGvR2eyuc{(;K7s-aL`z=`eF0fF=t|>_s -zfyP08=(;jh3F&BBwX(e8B0Z#vjMf+`l*F4ys}{tv@7Ba_w08~1MkDj{Rmc9abs&#n -zFQtR#m{Rw!$lwh0$Kduwew2~j^-%{&m+{1eXKIJpmQi6NEmqWfV_VQe?jcX&j5D5N -z!hdDlD+c2bTe?1Z9fS_e_h}DRhccF+K8HCT6m)XUS&o`ZzwbV`)zm1NFv>9)a9T>Y -zHNbX79krU9yaKGc5_x{I0xbm~uoSxFD^$rNRYn^c|41VtSCHzP<`zv73b8UnFk!~Q -zVJELwVSc6CwX?=Eizw-4Cj~VyOJ2LPQ-S4!?Br9|3KAvV?_r9XEk)Dmb{+yy!cQ`t -zZ1g2tqS=Oo6^hi!&hlB+$H5I>ap=#*P#V~2(D;$R=7p9Oj?2bz*bSM1H5ICV;Bz&zyH#-`52SLxQ7-5= -zV80{laSv{HHz~*Geyh8c3T$NFBjsy#@?67oOU=YfU2)((BeS<|KSrdp0PG+*SB&1h -zOG*B&>T2kW^5h- -zuzP0N2=fJ=nLK!sXxwPHyXA(+E-(vt)hTj@^>?G{jx7smrAz?c1zZ$=m4wBm$C%Bm -znp+yPKP)BQ`8e!&c{wmm@~yV=gCM;sTo5sFHbCw#;i+N?x#@g9f+u53iauv|40wn2 -zunE>2%LI-43~n8__2~W0nuuwlhJe^aE-V!03lu_WPwyvpa--NK;j6L$ym19Uo3KS% -zKOyLcYLkR-22)bI#Zn9V}up01b33BMtdj+qy+-Kcc-d`X+Z#j#T~-) -z@yS{4dk=|{C8XQfypDqt@u8wqM%*`eOvSM_Ff?g>*%Ar%;VMU`U$e3c7h2 -z^=OxjNBXAt7D^h3fgv=O#bs<92pu~>X@f(_RK`mIb>ubeS_6=Zn+`Bwc1=D<*fz&{5vQe;4uU^a<4LHC5B{r=qoAplPUJFzjGIsx%Q{ErJyM*rE=@&{;W -z&nGq({HXv(`4a^i5bAjukxZbS}H)H@59I2>~Cu^ECa|2Xs?i%jBH%2*w -zb2&+I%oZU;>6>vkqD|&A##%dTIeZ$vngfOeFI+505~1dO1C*;c;-|lHs(pZ*tq+7e -zGe64)D}iJ-Z6fhKH9v&Ftlz-pA`LH~v5|}eGyyD~Iru}WUTIsAest*1;OB#1cu7J@ -z(*8QMqJV1;LzG(Z+107y48FZm+Tu@yQvO6gD1Z*hnnTj*;~jtDO#*coHs3uC?rX`L%dTsAjCLb$m2)X;9K~c`$Cpu9`+lppxMl}YGqV{8(DZ{+M_IO;Qfr3e3O78 -zRH$UzdwOZ`8CM@jS_Z}ozzuGre9lHTv=i>`p@W+{B*L6~(YHVz-|JZ9WYEpcbY<(| -zrUf5b^k3MUfA9_b%{f!0BuZJ~Zar_g+M=SJKeAQ+yKY!g9%y{>pmMU>P^sX&q7*7p -zL3Jp@#eGK51(3E|AKJZZ!k^J -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 -z!_|HGPkp@~UVJl8Gj+R`s

#y}j>${qv8RZqYhwVYLfw5m{=vgkE_oG-hvA!(~KL_G~EG+Z*XI(vDlu -ztXTivLB@y%0()kRBM0qt`AI=3Ga<8hX~a8b!FSVYRU9r3HHJmK>VvboBYE828l%4d -zQJ@W2IFXLQhTk>JxyKZroX+R5b8svGs!jNA9)OVlz9FTexZ~snGshq*vE=QJKbT7e -zxAb&?+8}+8?Qf5QQspKX<6`c|G&sQ8rOs7puH_`qYK45{2I1Ji50Tfs0dGW2ibZgo -zHy}2WU(-a%%PI~Hnffi60b!5?DEa;sIk{D^LPSRnC>Iklp|go|VKdG|Q}oA=R~cT_ -z-@pI(re@7Lv)#sT;8T_SVC;wkFyHN38+jHx&^<^Ls0};phcR3*WP?;@G;1IxYe1w!H!{6d;`(dP#U+?dQh+>;`#GZ0Z`Q&?VQ8dGar*x -z27PG+_c59eU2Q)KB;ok=vN-S+6yRfy<(tM?O`oi&AI^ZyC%udJpXoyb!bY|Rl*HmD1@d-3_&NJPiL-~?Aw1a -zwo4|M{b}bv>VC7I-S268e0cby>mjl%N9kv;)1*6wyse{-*|fzTF9@k5!;8}L)6U-64AX?p&T5VcW( -zHc4mWk78D)lQtj#S0C4<33K`(ppcJ!k00;)Rg{lHU&>n4OYC=$xf#0PP;KGkyMFX& -zR0ZKIpf?Jjj=d2yL+!AOv|*-xWJw{ihZM(OKjaQCGmYz!mtfbbA0OZCg*Mxy>y4j6 -zIS%T_-%}vxu5^UN55gMCX6Fj3tX|2v%@KR}S= -zj=`&o^?3j1IwJF{#4C@V|H$|D`}c3A$8n?`5sx^?ne=ZP6Wj5Rk73y-`+=XsmoDT- -z+a=ktbp6lo_Jxn{*>f6>*)mcz2T;MaZKbubH9VbJxZ{2Rjsf3TuJEa3w!?HDxc}iu -zE9`rc4j=#I$T~`90<^zs6nVoT9$$&?T?Ag0#n>;InfISGTlV6<%N+?b+K(hafBt1l -znx~WY&X1q=tR`f*@sjKmWR>Eqj|?GJK3V;^3cQ5lUPz;26TEpw$fCJY)eu-QNj~1b=Ps@PA!swWjAe=R;2X4zMopD{4jpEsufy`B%|B2~Ng1 -zK4iK6FF1)fts!Nm-aj&X07rFEW(xpUt3S55-$Z7M&jh;A^dO~!9sy5{UOmhEqjHSm -zE|6Q9UoZ=b@Iq(nl4RP1s8`BQ5!EOD7$7m1oaGYcvYEW7kW1U=sn6+H(Hxveag=&% -z44=d18P(1KKL2%xjWKA=K<>mT^$uEo7J?xaGml~cXE;%aDMB`{CoA?Ptfp=9MeqCiuYJRuY~Hh^pk0H59v)9C%VnCd1GHVJd>M}JLr$}3MtCslP>ZNuI(#hM-S{t%I|xr=yC$8wDNdiq -zTqnD)5Dg{JlWhz_sltD{w&7B1t+%56QE+pCtp4Mco14kz>@il%OU4$8gHjl`V`HV@ -z+TSk3-}|xE&?c{da}%;ww`o)Boa1e}VS+(qTYr;Xp7TIZ>r%&W?gh_cNkKfHdUa2O -z{Z18ni@?V&wiVql`+Q)ozJE*RWMM1~Qwd1L^sDh(YDW^j;d=n1XoHptZ31KY@I;XI -zu>N*SQ=s3B);mMO-OlUs&h=BZAEz=0pe~jHsvsdojnX|_sQ|{!ReMmjG79tPW*Ugo -z8c|KHbBg)+WqyDE!0iR98v3fG76fm{JMGh; -zNT%rrAoJwvaw!R;I?yFoO<_jHUNA5m;}?|GlRp-TM0j>5Kdqon{rE;9I})N4oF3q7 -z=HxU0vrlp%o+8HaJPsp#4|9?%xX@{>Lh~q@PP8V$I;X2(cpexjU^>ZT1`1_lwhyog -zAE02Nc#w=J&T#Y4j9gK4+0bMwx?5-Gg+^%!ewgDy&gdvvs;u`e?H4bDAQdn&T4@p4 -zH1(r>^a*s1lj|QsO3n8(%*PjfLA~pCzs0kmixOw$pm@Qsx!P!Q;Ryt%)b`NSNadf; -zB%)GB)2eZj$wbn`Pp~{c*8-vOk}T$AB+QzE#_|3 -z4nQC7=AfSgwnl>!(I2kYqvmeY>**mVxW2I%sic~@0j)q&M+w#IW8Gj?0b+IMp~Qg? -zGTeK#KG_zQiDt~~jiMJsv_3OD)2=gxCb7UUZtzWS=qT+rG-#GiYMyEtbjD -zL{KhFfM2b1@=4(&-lX`YpJv{T+wP>5pJ7|QSB?}Q?a8lWxb21h1#ZGPWP+QYKQmZn -z3Hxev2n!j5=KEi|D^oDlVIuOi$}N*-z`R$)z9MJHRJF+5xm^G>@z@Mz0pR7aIosI$ -zIM6=cWhWQaERRk_zkepVQKsVoDi!^OGrz5e#6aT{JQcuK1>(pa5YSxB#1)3#EnDb$ -zq_TLQy-fOO<`^ye)R|L0)QZGHUHbNEd{$hjrj6QzsT*++w}P_fD0y4HLG7jv26Dvr -z58)BCXbwq^;9EV3j_gH9ZBxn-By3td@2>LYx%0nv_lvB;N?R#N6cW5}I{GjjOas8- -z7o#0J?bsoA`c5-!-6RakyRx>Mvm?9;ivZyNlbT(5Qx(BBN*0MiAC}i -z)NSz4q`UibH&|NdpHZ}_?>aK9acJTbF0|oeA*t56iUof(n-V;E)1jYGrE3Gl3{S@_ -ztd5CXDBPhhaI{$tE8TN?&J}33Pv%OB_fx#B!@>Opz=Juw9emHI*pCY6N$cF;VUz!iE2eb{mgxiZj3-@nP)`-r)TZ|^ii6;Tw(h(qfvr0NqmOW}JhCehwNbVU1zqQ`D -z5k*Ue|sd!QdZGfN^fg9rp4NN`Lu+=i&@?U -zBnhtKq-MMWddK^hl0<`SAgFL=vV)8>>{z~%!Mdqm6v5D!X;~gSHVe6br@)BmwpkvN -zjF>8$M`m{sY8h_JGIzr;eI4K+N|jLLY{85dzLbNRytZtj(4Iz@OdDck!cHuB?>jw1 -zK+FK^ermb|dGt2UoOnQA_a5ArwD&(_r2mXcNO~qII+1P|cjp8gpJU~!Q+R9m0C4G9 -zy9#*9B6|lHQNCg6owUqR>`t!U3SQMft@E(=<&wyfFS~aSlUN@lvuQ6!?jfq271B -zjtS~M`fIHS?g|K3Hahxqk)M=PfhVF(1rZhj(UyDv_3a;#Q(b6{-;CNrXk?h&f~Q0U -zjRK_ZAft#$h|YE9Ib$U4h-QDw*)=Tijq^Lf_kF0qu(f@nCoAG)BCPQ$Jq@4x+QCsE -zw-8T{`z2!?`O8J`dD~>R385W!Ilk^+0@3X`-PU{7oe;-vm0&R&T;U-G#i2A;uAg2S -zxE4TIzN1}(9s^^qaf{HDqZtR$qG-<=&_z8XY^z#VK%kmLFg(z|KmBpr4|H<2 -z*eqc{n>aX8Vbq3CY@Koh)gFF2C!ITkngN?!xP=wv7E{%J|(t(Z~a{qW$5x^&lmuey~u??H#1Km7zk(?;75os<~Frzwc|WNgwzn -z@ozI`%>Dox=fnm1>q}9ylV>m?Ey@RQflQ?c6deMsE{M1ubN}(h}BxqH9g1umR<6^9j1nt^od}BtX=S@0|ul!eAKac@=_Tf1P=EWAWgMEnzp8&kLfsROV8EB6E2{-k^ -zbvDw;FhS6yR-`Fm!nMx -zg*anMu32*nl7Bhup%{`vo0$O-kkUaOTh!%&>-KU_INQ@{;Y8~X%vHVl%wOmR;M{W1 -zxo)Pc!3~@aH)vt-_A@M8QQ&)WtXeOR^i!KtJ$r^zkLcrK5}F23-aV;?Pg7i%PMzP$ -z-^ok8&)VJsXM{IpnlXLUj#+vRw6VV-wmMS@MF$s9HMQ7Jc$8*^Ppk=NdyJL-=nr9c -zxV=xBXC7H3YfBga_&1ee2dhTcD6e&TcPp7g(HL=e7`zRMbCkOEX&u!QK6+HVVSYjz -z6Js$@k)D#2zsW6afRRaoh+hi!(j|K9fwU5__2esqk=7JId?kE}?CoNGNQp(KShNf? -zbN*mL~XYFJGQS2v=8nb~=Y)CZovYnsM-ho|HZRn)W@Vbh88V7oS3T-p8EQMWr{v&E*E -zy1lfW6>8h?68Yq@hgRcmYVpvg*~oxPlyr;~QH;rkjPAD5YCy;7P1h=T3Mr_@`st*X -z3&<|{-W31wJVDdTD4oV^1Ie}@=@o1L3aTQ_-JpYGB2#V_6)I0ObgOr`EAnc4iUU`H -zl4_SQqK`0ks`aLU_*y0ITq7@dqK?7|Q6_Z!Cep`{08^oJwVeH`Cg}a+J9gfGS?d+# -zDsh#Y4Gujxa9cb!#tf<1UlU1xMd5N5sHyh)hQ3)Y!Gna27HaP^=5AZGfV31XvnL~R(}B5$4vhT -zRS;e2v1)D7ld~JRB+fUB0Rv6ZDad}@kT@QDx)FfpYg~%V;}Y$ixbeH!-cUL91(@c0 -zoVUq(=}xxX-@eMCBj5 -z-LaG1Xnt}?rF(<+JF%zqO;`xHYB(+Lx=eT{H-Mt$Ala-+a#GG5s>qE!xcv^bi_~}- -zD=0|EhI_MfsWuLUP#1$ouoA%^;DupR8s_7y78E(~)}h3aqzqUVlzW&GGvjjZJp_3K -zvKykzES8NcJ_Ue|W&hF1w)vSEkj6|s*Uf2-0amgF`ekze3Q}Frx89vRM$R##-d}rV -zwvy7(RBjlm`NeSuJ6GH6216)xewQXgy2FUQG@JKCV$vc}U(aG(xN_V32bt6w^pbA^ -zt3gX|I=D&gdVt-k8BG1i~o|6a|&U5&QkI -zguwCYCmO$)v%C?qCGITK+*Ybc^I6 -zn1aj*AGRxCs2zM2uL;C7yTZ6GlL*dG(wb8cR^rm#vhKBrH#hgYVwyTIb>dvVCYx-EU{Fnl5sm2#UTagh1#KIylUV~D| -zPvVICIyc+Q+XTQ~EKalZzoBSgd|eCz#rmk++C|nvtjBZN)KjI$*gUwPit>s+3sBwU -zPDJtwk;^kY^PNK678L}9Qgm@AQ@bUFdAplnf=11)ktM5h8|cbqvDQ*ZDV`8r%s78Y -ztAMBbP7eydZtCpVr;JZokfzY5aCbAF$ -z*P@v>IuL)VMCF0@Omf#-i(NmF@v{t3wT3TsTywtxX^)P{AjolJC__!=sTXcWRLzu-E~$9Zn^@HWjR+gYGaO_k))B{-#J4UviSkD|I{l#~@uUtIf6c1;+IP^!=UL+_vi{ -z((A}WZDM=Nm(Rw(7bnC6AFl)7%K>PRO_y(J;)8C)WB$*<%tV!6L)D}&e}xCiUm+_9 -zwY|B!d=7HuZuzPY{tuj0=y&BGu6FXPt}p4#=}b>NS8T#hBPfb3a0E%Ipj)D|*f -z(5Yn>zElVHwXc_s-3qrwXie@s%Ctjd;N=~!U$g)59sgw_n9z9NGHrki-vg?b -z*DsW@@BcCOa#0U=_wV0+7GDQFyVo~)xObu%^&g|JC&d2?_)mEG8W!&K`yXo`FB||x -zzK-rO**x~t{Y|;a8C7~EchbZKZF97?1r13~-TS9P2FY1Se;=C`7?G5pxgSPd8HRZw -zkC50K5=3+=ShhC`NF({GR@9cjZj2LEr3m!*EP!HGq;whD1Y}HFLygwdux-?vpx104s01`VP~9I;GrCX1Iuz -zQ;{pl$(`gY-&6LV{fkHMXW$GT0N|Qb5N-hDqWGo&wpE}mkTLbZ>XIf_LPmn*(e{ -zS6(A>hJ+aOO}%+Wz81hKFRV8@wb*@Zj!%_;`}X(6yC26bkY{{#`9Zu#8xF-Qv^g4# -zc>zX2BPBk4M8TXdC0BK_ISLIoXqC$Wyda9M6iu8e671o{IB<>upnCuKlR^@Yb@r(k -zF)?VY<)i^(^@2Hqr9M0c=&RX)8x0!&i=d&zv42% -zTFi`5#Te2M!Xl+++-t=R=@GaQ`n5I4(e`FlMxGaJvl%&IX-suhniqxgR~1+xJ$3*K{Gv}BBieMt+#?n(wC^XR+tpGf*K8mJ#@(`P93g(l>lb;79#2{h~ -zY=mqH%8m@92Ve~JNHy$hxbV8Qqtu>>j;6;8`(H_XV)|wsEJo--Y$u1toK8--CCkm%yP9#I6LJ7sQBa_~U -zp(Jy3)PwRtW#?!(yedngXK7CjZKDV`jv~+_iap4 -z9MBH2BlEl`Qgw=0CjRnM`yz@&uFM*m4){r9JzXK9eoNeZaKV-Z_kTm7Fmn&}(z5r4 -ztN4w^aTnh|%(#0cC%a%{Q0yT;6XYOiyJFT-@|kzE+*vAX1JqkPC`MKaUUuL~(~omQ -zTXT|20y78JMskg4)|Z~qqmOWY#u01}n6Wf9PS#mSH0JFAI6EijJ(3!q!Yd1OgP3Zg -z*EH0q7Q#i#5HEy)egUIILddS2u%7}J;#EGJ=3qsoc~UA((o>gXKk -z&47!X_jk1Iir2@8$c#1o1P*C_I%5cqx5?c^-X$gf5(G2feL!A0vDSx0I`NU>1Pz}} -zQ}7bfcLOueOp0%HE!D^>bd_d(nVH_x-1|H#H|7Oi?*LO5WNV@K%#xe=x}k{#?4!@0 -zqGwB%LpW#WLit;Ovh6VoOj_faE9QeP>pDPhybh2hyAJfPxRL&N1(J*}1GIFm1N-ZD -zkON6k`;}Y+z^Yxlf}u6Zmz_z5APZ9&bC1k7aMK-no7i;Hstw6Ubh|Qifr7+xgK~%E -z^$l1ZNGDiiV_Qt&Xdo5VKc!Xzq*AhXx|3JRz~D4hlh0%k|Mq2IssZ%6>vKCfqtpyN<sIGr?@hL- -zILoc?R>sRuWK|wTv&+_xED^vOQg-h_VC%~p!cg-GV5hlDiveT#G!H1DagTg@$DLx> -zyxst&Kg;`4aF^*ZtF^D@>B9aMc+C+IaSE-+a+OyQ=APNUoi9*Md5N(E$$O?#K-|hx -zgI(dSMbt58UZ$#F$aZ==3o^O1ylFN)pQGIKYJ}nrTN`-`VCXQWJb`uSNY8*zSVqx1 -z&0%k5{C#r30wttE24o7 -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 -zZJajI$@KHmPz>Ep0PT -zQy^?$KM_$k1CznAG~64KtUg3FscdE&xS#1An7AQ%qU3pngPsa^)sKJy197Cv9V56K -zytY!S!~DcGry~#2@14SLT$bOX&`h%m%mjAZq-xzB+Xf*3vjQ6ap}+q_`Wxw^J-`>2 -zdI|=OQ5D_N*OR9;?$E8AMG~Nb0h)Z45$hcYo@qy_y!x)-31Lz=)^Wsb(QMEs1vv?{ -z?yJFs?*u{HHFhLhz-Q+=`8NRJ}1MCHiexv7KH*Q -zYUNg=Eu@rJX&hxE;ue*CU~N=7UDgR<3lHTQNXV&TqXEuLo3$@Sz -zoh+s%m2S8E;BH(A))3Ls4se+U#2?7*vU`8Ho -zP3aEysA8?I+eSx42{e*7czIWoY2RrI^hyV^Nq+7E_+$JgwF1c -z2g!wzCB+Lvpnz2!60SXz#K`n4+Lfk&{(XXR!dNrt>W-&9FtT{$hHQz%SbQCQmDcsA -z%hZni28OU>7mx>rMn*^?b3~hf!1t4!$N|uAwCm}1!DIiv_ -zK+NOCgqNoxr#7Q+saOJQje)~ix!$sDlk3@;=06GHR*u`ADui7U}E74Bx(P`1O3 -z@)P~u#;_z*ppZm=|7ND4;oP#YW5_f3Y#MfVzRT1U5ozAGf}+ej3JMPnii+&l?(2&V -zmGL*@^t+zd$v_wTNoFXQ1@}PL<=Q0b2yYPYZVU%oR<<+Zi}{`ouu5@yPMo6(N>8*A -z&H~2ZTg%({p}1fmhCBzSYX&2}=>pN6m|J2}twTzgchy*;m?PaQA=a~=$2fJUt)(x8 -zZ5N7hNEKZ1JFH@pejQ#d`TNk@0nHb4yNsaxku#*2aOIiHNgU{C2HnKQSQ>|qAAh4( -zwPmLrd!A-m$c)6@UD#ZX1$pNLr#QOfiiV*34aVD33MfsaMRm}=IMKp5IGJbiEj+I{ -z8hlK1s#4HO56}LFaor*O+}sehoJdcx%@5>Oq#)tbDAMWG30ws5U0E#+@|Ns-h(}Zw -zjyc$o+z2cK`593ew;7gW4b>5GU`)~>i|p$K=n11t%CbO*V-p^iM^5n2gG#`RwkYgw -zTn6!00;Q(}4(LNOk^>X;C)TcT*X@{dlRvDmHOB{sN0V3e#5ey{2TSJGrHiv1Gwn^< -zOBTNpXSb&^mjeg7VKa&zZ+@0`h5_;X1I)900VU4?MrB@ -z@7>`hcr7jYiEEw(I{>3JJ(sfN*MOQ|;lpXn0Tzfc*?Zi@CZr7}*0k!a`|Bwx5KjYB -zf;ej1H}7wS#>6leFVFrky;J7@EOMRMXULEUyL+|(4jR*Y!ZZ`H0OmXmH<&ushZbmX`W%NAA>pBrP8Hpg%xN4SvuIqQ|4Jv+i#_ -ze@W$7?Zc07v_Y3b#yslQ&IDw)nu4#O9)8C%IFJDHwyLp&GAIg42`y^tJ()C(sA&hA -zxH!R$t`Qu8$I66%=wGEhhm%kG<~1&w>xMXFcWFW6^C{>sr&H7eaZ~%C-Q#(4o@|g- -z7}te(>BFu-B{@9xb~+nYB-zz -zFlxpsJl$Gp3PrrkCP-5aZ#%9BXkbRfN~^2hO%Gwex2V)6p$FNeEln}84;fIU7Z-*7 -zqveNIPQ|4*TP<~`GucR~?XujaaI;qNTJ_uAaI}iG1}5|@LEl=juC1)Y9MlO&4O;m9 -zo@<&iERk`-mAg@Oo+ai4LgN(T2~c-oD??Y3#Z+^1-e{9T+3ogV4m^1*(Jdu{n!$## -z6+uA#>e1iGBj)Ojv+}xDtdfz`>uEw~UxTbNvb_`!-iw{)mUF&)yELP!0Ri)lbN~3^ -z1`$nCM+fqtn(o29xQT1U-Z;ep!GsC9^YNDZAGxlOli>73y&{3S<)MjQ+DD!HgkJa!Tv6!m+q#*p|aS&-mvTV>G(9)VTqX&8X1|V*Fx66H9O}V -zyO4X_p$K=&q}*7NGfkgLrwrJD0jH&LJ!GeHwEK!SzTvD+tNp%<2y;EqB_$$png#=0 -z;K$4>j9Ja9lu_$hq9|tMEZv{o&~f!}ijAunPg3N)dGnC0kL -zjrVjBQVz`-kAdPI$>i`a7HvVM6*@OoUZ-a|6z!LOBxk8r8rYmiv&eSla+_X0KSSEQ -zu^r;mGU?uEIyJ{^G;IjKvIYM1&jX!>+XyOE#G{*hn{GD~gh_*O_XR}N5e0*uYRM#oaRqBO05$U`-8 -z2u;S;K?cdu8Tn_5W-5BJKtn{mrjXtZkKUuDuO@Fdu4~5Vfeb9MFRpT9rUW2_pZr~ -zB7>(NrMSEWdmw$d&l_kOd&0BVVkFU%C(DKDNfrMxOOrr7Ne?Opyq!?yms% -zUy1wbfxcp;D@z3#L@w+Ofga^d0m@Qc0^*NvTYP(j*(zCMcXp1fOj3 -z|1a1QE`r?CT)m)J(vh1i5rgb}z#8&g83B-|0KgVHpp=>2nMv4?!hV1PoYq1yozaDQ(?lsP -z%Msf34$@az@#5(8MuR#J;mlp-?P>2n$>!e8o+c4%DbWeX@!JU`_?uMS!M51MqIBZA -zB-qivuqU4H7}p3)UX -zK_LruitIa|JZ5=JASQMP>lNuBd0c)DN6MhP#plFZP2mF17vrh`w47qhDdou|aBc;? -zvbH4}!nJbm9MaFi;6e6FcOnP3+F78~yRAPsNurZ`1E_S)MJjTbpQm}81{G75hXQUu -zj|7b0w>lS@C3Rgw3+JZVT>~k -zo|C~!mCv0wq&Vcn?<1wZZDqQeL8~4$vpzPRH`@e-V -z)49{M3YCR4tfRU;9@dc@>V66uca9^lDLnaS+F;Z{g5|5-x~!}-18^dF>n4y%4jdUA -z?)#Zy;#uIijPB@M3rTF#zCN5JhqU2-jbG;?b3DvL!Z^tBX6B7tF%QpB=4F^Zk8N`& -zKPlEp6b&Ny2$TQaH!auAxy;9Di3^4k{pK_gwhL%vq~{8t1v)cQkSS>k^72{ugB~7o -zP0ewu;!HDLa65QHTsd4VHIJi;$shP|a)UqM)N2M_#+EI%OuHm@yy&oNL(2#|amXw7 -z(Gugwj`kV7l<8~_Jp#gLZ8!r537JDp7=R2-Lov!rZU%WAp+7BlRi*@_aOCb!D{C`T -zuvR|XL~v?2F*qejQeGYy6w5-hxc;DQyYUTyEPG-yHZc8A47Z8}qi!_|_ -z7@M8DJZ&#dz`sXi#y?wIYm+xJnW1wniR%&Ah`w&uB2(vsvl2rxOlwmS%7)tVE -zM_NkI7+z?4M#hS~1wdAUhG7p_t9uHW+7?^V8+kv$3cFZ#`IvpS++q>uXQu2|Z>Y{I -z1j0cN=8=MDDBZwG7AW%B^z+5X1we|K?5THx=T-!et*vr;RM&P+;-3bOn+l#$`Bb -zxRtY|Rmtc22#LdnwLj+82 -z=rR8|)Y<~I)%CVFF?yHI@W6I%<%N|=0Ve6`66P2)f|5f-{~W&GrYnG56Iv?Do@6Ft -zr|HL8Xy|6?oTN?PTcWqmyxTA^6do2#;uMQN1@$g#77OA^^~Bj*Q(Aa%cf}=pI!z^2 -z4Wi)FxO{iFd4M4H6Z41S02Jd8@i|>?BfGKibW52K+B`Z-SRxO5Xj|{dCIMPam@FuQ -zK{Xroe<;PS^TSSQ3ur8#^S;O+DON0%#&xuL82peHziZbp7)oL!pPTL%;QIG6eXqGF -zYnJ2hiAUWda|pdF^-sdyTaVZ$6e{RTkbKbFOV3600b%-Adgitv^HUQH1qKcX<7~oa -z4{Zr6*4m9XWbx=KdioP9waK)>DVnoS5#9nvG^w6QK2qxlJxtXyoe!65yr3jfTNmaV -zEfo&Ma -z$R$+UKf3VeMqhPR{g+H2D2qZUa4#qtAMGTj^UBprO<#YG0UnzdEAByWwujuFoaXH#ZApq4c>s-( -zLVv^$%GJ!9GDgHKoNagxx!B=bU6K -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 -zN2FV;HbB{vp?6VG7vSJ}TSxA_Lk40BI9Fysa0 -zk)5V2mc?e=RipIfso!!zPH+9*@(kyL!7q5zV2vGj?wCojv5>^!vp0I6K5G~txwWL+ -zHf>ZL0R9!C0v4%|JIG%9#5iR}t|Dzj;m>AZWf)fM*v@)e@PPI^O*zw|qX}?x&RoE{ -z*GlK!TL<7=0%q+sw!wfTUbVQSNkdz&u>c#N^VM6w9;t%P+DdcR9R^cn1ui{lSiQhK -z8OGxWV(Xkm$UUS0TIA*}a$PUH2RnTn-B@x!fjweVa(9_e8S@)|p%MrvyM2o=Pnkp! -zA4!{^_SnhrU@R>HWgv^Yk6x&7fCN6TjSF}q1u$J$Bey4+F$T@+&fSS%+vY7*-#a2B -z>X|)NMp)K|V)@s%(yx&nY2jx_^Y7#XWUVESwFLJ5UlcA&st -z^GH}H$ygUq+dNp{PE=>AbRT6{kBcuwvjK193DwP3gB(Hs`f-8V=3mibR`F#W8Hz(7 -z^?Hc&q6fbg?_h;oo*O!_!DgQM76J^d(1KVa>Qms(D`5}ZHHXOx11}s^c0v!b!L9v` -zT|QZ%bR!cMfid*-t+|Bf?uCj$$^z!052O}Lszp(&G0hfXF)F{of!$!uBbA@E`G#AO -z4m5{tWeKtF)#oV&;|T%1Lg*a?cKN4rFh?dRxyy^tt$@i3M5bn3(E#Sh%~)E+sc`dG -z@cXI1EQ^_WRKN0Bgi7W1n0Pas@MTy#hJOsrw%CdW-6N06tp`1!%8-)p-@biY#fIpg -zm=z$h&zJE2{{5R~>fhgg{VHGi_^~aV{NeBV_*pBE4|yJa%f@sECHLs%%Rhd6+rG-< -zpWoyhKIDV^&ELO$tBd!1|M~5COZ)NnpFi~>;A7wa`S#5Mo9|oTkN>#IcNJgp<1d_q -zw&GR$_Asi&AN8$#Tlup;zkP@y6bA^u_E)-PfBpPcOqjnWX?^?q{hvJe_ufNZH(K8H -zpI^UVOrbc>r}+FCAT9f(gI#hvi-C4J{^pU}M}?|F6|}JHI(nsbRi(RL>-Y<859ETb -z9Z=*wXWSTXkd4w-r!j8wvS-V1A6H)9)OE$`Bs1F`rZOTp)&%*ZsNq0k4{%CI)YDpT -z4q*e}lb$)^;EEnaYQ=Ywvx54#tz`!=WjLnd9W+Aj9DK>W1osqHAi)M{jNZzzhaB!< -zD=&byKA$kR4khNe@@DRLy7c4& -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 -zI#4)_3;X89&4#h{{~iGXv-``q0I4y -zzlIJkUqYrU;nQsBFO({$J<%=F*WHgM@xQ8%6%+HS7y!0J|^a(k2>O-$*e^af1PprF)X+yr5KUg3Hl=EKPY~@uu#+mYC@Eo$OJkN|1c8mM?-)3yK#y -zmDca2Z?%3m2VniH{K~&xKlN9!hphjkXR*5JvSZS*;-<<_mPTLFYf|u3JH<==X-gLwP>5*MxxJaimm^u!NQw*{kRvk{D_Pkm-HeHz9x^M -zwDy`ZTYcxo%XiK0826ek;3zLhhM&G1(!_iLg~S-o%lw=4Yq2~n9H)s)OSMBZ)jV5*@;3%Mc6Y&M8@V7Od7ySJiV_O2b=y-oZqehSR -z{o%>TtmV4p*3r_ouG<4Ko;v9(1qOB0X6@qqj;<=}RVxb6#Z^ioq)a`m_iWzRdoW(+ -z^;u3w&dnD^EIBS79}N@-&Q-rYzS7_2+{ZCpqdXlP~w>lp;M?!XA2|fd721HUG!Lj@- -z0IkJ5y<%L8!^^A1tueA6@_~|>6O?nFdwiHLbNwh6_`1Je4}VPAtJyACx$QEewzVwL -z!FIkxy-f4DaTpR39VptV*X={OY2Zdp=xs9v66t2EN;sknwJ84?rb&jr?&X^nRK~3h -ziw}_%C^Gg8i7ro%kN5Y>(DN8B8Jg<|KLj4RdY3YGv5h>^JwCLuvfXc)M2?OMdZh;v -zRhUe2c(UY_HCEryS6V&;kXu0VDwDd?b9EJ2JWCs<(duYAt194_Yg&8oV;)){__Akh -z<}_r-fRm(oC5L6kYOl7fFh_e`N9$pC(+#cFoi^W~#52b+c11l@8Y{I6C%1LV&5#eR -z*R<4Sz}^wsP~U2ceQad$dEopi9v~lUPMKEc=x(`n-G4c*sWVXv>azEewh?kb6xl)J -ztvv3d1r@B+R}bYI=%30wFdGxRWd|zu)GR97;GVe|)4=7UMMkWk0AY@zFFWhSrQzjZ -z{?82cM9+WCq%YUczb+1zc0Bf;XI84wf=UuxrD;9yJto8Db0;>eBA>BCvpcmPi4c~V -zB0l`dG7e!yd$-!WV*$1YQh!_+OkwBG+J(E#ioAv)5r`!3%AGMEBvS{}>mGhC8e*{Pso0L0kWE+EDomACvJp4$bE -zaG(EHwJGufhYi`^`6ZCLLk97@=Cy#(D!+xM&lX&Hzu;5eu5Y==%NN|^{l~ZbD_ZO3 -zE9L!P!u$K4dgt%^SNXSYDfeTnFX>ojv?v0K`=k8(Sc0sFMF&?9S -zj8BROkIm`~4__4t82wy3u^hRs3e3?*T5aj -zR?4B6CYv5#VChDLkgK0I@;R383LAy0tmL5IzkVsi8Ao3~(gXV{ka1sSsr-vGGBSyT -zuRuoc*5&uLt$$yL0lxO1#mD!RX~}txpKfx!0s;6Y$v}R$9J6ThzMe+kccKySA(|dC -z&|b7aK$I8?BadTd>bN!8i2)Okv?HZM4gr-{?EHGB8~*(ESB{RJh@A6xKdph`*%TYe -z^XvAmCY=8K%l;~E%CB#eHCkrsoe2a-4a7RY*?Kt!ZBBV?T1S&g_kuNwR;XvVfER+V -z1sph;`t~yL`Ud*F%kd)48-?DpCKOOwP9l)H -z)`zY~nd(+hqtIEjt<0MY@?lDoNKP%yeYd~7Fh<%D$&)X?h57yIH*cuQypEO3c|3Sy -zZub{{77hpe^{3E)vG<5SZx^K|*Myd-tY|-W-I4imXhGoVCXX&zH^`bq(R}8CKt`fh -zBA?(Pe@l^QR;iRm-l^imTzRJc3!t1VkXjJdboA&%EsC$Cc!f5_e-Eeh?$^gyukmas -zc7J_@&lm^pHK9{p_go5M7!K`jSjj~ef~G=jQ_VPEIp3^nCLL5rXe7y+1d8Au+L4ESD@uH -zH}wh=%Bzw#=3HuF@NO3!uIDd^CmGf -z(oN}>3Sy~5S9y^=a!p!}u|2-@5ke!5Hi;fsXO{*%@}a>JFyzmv@}XFV=15aLk7W9E -zslY)pd_`mMtIC^SQQrU4YVH9n(3pi#ry!%yK-Bu8X`@dF%Yt5qJ9$oADNB@sZR131l81Gg9)no%39Le}B}&3|r^`f7n0zIYCc8(AWvxaRF>TM7_gDd5&X>*S*bMech8*5)J(?$Q{3SJTFde#7w)a6PnnIf3bFQ -zZ&pWZpg1{v&C9}LM%RenD8JD|1-G1D3)~-_HRZi!zm8F?m=)LQw;nrtoqv4K=zYFD -zATsT+)4kkpsEA>CzYg!*)7@NW!{#ZHnu;%l?K_Z?xLO$}q>0yw-lz3Y+$!D_*`d4I -zU9|IJNnAZ_vb#n;m}laaaT_5mV=&GV0?!1vfq3x2g<6T4z{ -zeErwL**M)eW*=2z>Mbs>PhL#dzP;}8nOeWNp*#1~TputSy%c|543=!RJYL+3j^_HN -z_xk0z>i$yBt(Dv7nsUf5d?TR&mA@15vU@Rov%P*K%YkGiTFVBv5l68LBFK8OYizR2;dl;V= -zo9_eL9~1!S?q2vSX~V+8&fn3nBv&Bg@ -z@ObXBK7l2^uD*(Sxn6#3osrwp_i=*B@r1grI))ScxpPpQfLEj-R=;RZ7;hb)M>U{RFWG_ -zR_sq}Q60N>9qRNuU(E)c(s&Fn_OIrR56GZPYNd5-2QDYrk`r4_scv*z7azRXVXD>k -zdt?yvrP96F$*YQWf6arCH`*UO`I;q*oAZ)5ai2vm_~q7ZG>d&Hnh0hEMm+6Xo;{^KzSL>e+W18B3*-SRHf|>^vze-h~|oZ?;rOaSdKWqcv5xD -zN=v;v$Cq7Cz!{jf>3Y84`KQUotdOyrWA@~O5;WVu>K=baVz>d~W53KA<}u%1<2I&6 -zSFh+gb?Ab1rWOy5?8z+m@v_l4NL`JWJ#lpFHL^md+IUU*ePSvFMK_~p -z(*i|No7g|2`F|ZKU#d7My9<~_T*`~kKcP-?1DxSd+6&1{k-Ohyc!eW(rtxow(8lBQ -zlI^h+6|MRXZh)ezw-c3~%haA)|4o(3(sJ6EOB -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 -z*G4u#+y!6V{B(?Y+ETWEa$g9T%=?De -z3*FcJ^jKgO8w7m`?afI3`|TfDq@bNJvZZ59eI%j+KQ@-4r@#};vfecD-i`L_?!gRC -zj}5ZOrtl5{VkNkrRr#4WuCE8M7B||r7FlqgWxIEQ`n)A(I{F+fh?A!1r&FrQ>Y%5w -zAX&}H6ZZXe{X$7Axb4<*E?XZYE3%ROrA4EzBKo@Aw#H9-%j9vlxfGe%HLAmdm3}tV -z1TPLcmG^Jo-VqHVgWR9qJDUx(=cH~p4LWGsrOTKsW8oHuxk<~p5179CG=YL(R%e+V -z7T&FF@OL^*1?k|ueM$Q3;Kv7c%RiuZEx)MCJ%J;%v~YR7?%K< -zu9_l)xfruKFrTo~zrjYrT~M_o(2-x!tw&r0@bBWeO)gyog_meQwSo4XG`ioD$pr7i-*Q}W9 -zZwQVzeDzyLhbL`+%~8=(b6$?taJojU+xuVt&?=<4UUk2@Zn_otSql2JkjCf%hAo4a -z*7&kc4qhrF^856(chl0P!1k1h1``CVI9Y{q2wAm$55wJEhKH3b%6=J|_d8BV&WCnH -z+TWyn*Fk%{7U^0I?o#&i`-iFn=~*@!VIxl1hH#rfHG(`XbN0LK?BUeyXKKC!ml-Xf -zC1_tRreYVKoJvWX%-d%)sbE^I=nb1SCpbEhQw2Ms7nSsRaCNf0>}72?=#f9kjghb9 -zcxwjQj9$E<%FOAKLoHN0r;mU9NKcHOj?4;lAkYN&)oS}H7}}0cr{C^D4@3c2eVm&7 -zI%r~#Elq@dH2J{M-Q$z1=m*)m4Y3fPImLKs5`0ER#p0jj7~jO{x@E6`3l9`)nCHK~ -z_3#fZy~W+N*um)nr%yLvQGNV)TSik2xsAtW9%7gWidTnx=LQgA$@hkFvWNTovr-iA -zCM)D~`5mg76}4xIS;a1{piq+M!Z)c}a?uVtV6I?2AftlZJU4OH`e=D|uuu=%ZF$mk -z?)1D2R!(sR*DGPW(bJ1wa@!Bua!k -z5X~}io)m57>4Z;0@uXO*qOeYY5#pJ*KMR8RaKy5n_TJ{_XLA?gw(8n)_ -zf9Zu!nh|6&>E5%bOmonRYB^8k9&Y_K$6+8dyU8S=dy4x022s2Y?W{9Dgcdb`3lprQ -zm?WW~3w}gnmqTXc{ny7|_!zmo+%t?gk-w(qCHnsB+dnv@E7-QM;Lk8(=Fn&vO0>DC>hkI{XV1hVbOWx!`zl4LB0mAn$i_FYsV7pUD&C -zmpAbFcs{LSc0z!STmhbc+(=)C)e<`(6iRD(KlVLV2=r%%O+TPm2T8Rg(7yVCT{e2< -z--GsOguYQCWBI`VAz3Vkurm_>jz69;Zsy?9SI;rC^D{~G>5E>l=S1Im&h&8n6kr1Q -zH4CxmmP+OkL4gN}TOcC_y{?o&z0>{da5^js$v2Wa)K=Y<{fIoF7;d~D5@ob;;eTtD -zuOH(mG=sd&h*+#J$nb~U%HDJU_CZ=G(BMOR;rs$ -z_O-cbL^!f)Bj|c_hwu(aUub*mp62rRzkW(%;^?`p=WRzkw|6vO<}eICR17SnA6{cb -z7I)WMx2$1eAN0-FbhoGN(58bzZOsTfK4LSoTo*P{hNHR5R>hvP3h!ig|BGP -z{7vU+FW#ec7V=|Ci96TOw`yLM*SV)fZ`C3s?$NY{8A|4kJN0og8%hbb5Usnl#?zbm -z%IVhai%&HtM9R7qev%)9xK$A2!t_v^%pGmZ(q_QNU)_v(i+^a<1!!{kjiX`>73j?1 -z@5?$G(fZHPlawJkcLPc2emGs~5jgF9CRSM6T4ej4zn=~BSCDPP5vU`$GV`SAMo#16?m+s+0XU%N -z@9J#OPgVCP(^Ndk$6ZHFIX&^S2g(;c4%pGxukr^95pK>&H}biEYLglL`J>20e*H>s -zD2wqpZcJ(D>-`%AOMcdR5C92(0d;6LfCm1S>VA4Xee0OM@1p^2T(HhW1m-Q>$rD@3 -z=@1PLD&G;S@K!l^>A)u-szCRZupYAE&TZZ6V#MZTaA~E>Q?l+!Uk@0#P@j_{$Njxp -zNP;iFTb5%c10Kdty(~Y{l5oH_ah}J2@|V*y7Qe(Q5WoMn+liHgQMpay+#TWV>wNxp -zH02SCQ~c+R!kbo15-fR}c1hPDJ#tiO{f4R26f*^ZU;`n)3w+t&Tyi*(iK4l?DcsT0 -zJ#XOVz$}%3>46R(@ry-#Y)^<2a&|qtC9>6wUvkd|*3q=N4(@$`b0dD4yiDXTqs%Iy -zwj~SWfY|<<^B^CFR9iXKbT?m8!5ey0M~=8!CZRVZm{!^J2#JW9jPX@?%G54YsRtwRPlDqW%rf -z6&>4<5wKe&eit(A@>Vjr5_fHo^l1&BvLjovMP-N8n5?A`Z=;*dVd=KeO*^Zw8(xs6 -zlI&$|opLRf)lnQVaN2~!Tq79i;>v2q& -zBjkU2^zcRg-e85D>im-@+?6L<|J-|e@y%{?|N#+`#beh}UvyJ{mQ}0l=mrr*> -z!6@*J0KwKFf<(7@^E-QfEr7Wb_ -z==B#)b^(hwm}&&z*VeeC_(l$HWYREw(znpuyh?Fb?m4DWUjVm2z-b -z9jJnJ<(?GKKAUG498AT0_@O;$agq5m3}BjRZe5 -z$hkg)CZo6w1q7P!Ki&XU`Hh+)INrF9sz#5(c$i3+I01Brjv8H{r~i?4PF9LO9|o7$ -zgKYN(D-3>gbdE9=yJL|O^g&_e>Gvx{(Jb4?j|uu@a)F?G+B(A_)jfMsvROL@#01(z -z#gi-ce+hiZuj>(gk*Up%{6L`3$-ka0ewxlPPEURon7KMV$yQY~C)-abfP6akW~*4y -z4Qv>NqdUMuA|8vLu-Wv^P#<8Pz75jY0hsLLnY|zJW#pNaYA+R@Yr}g2*4r1BfQCIl -zu8_qOd-05Mm6d2khfha0&%xFAqdYBI9ptv;FJ~Z_2N{FzZICc$^=}F6!$iT5CJOJ# -zuK^Z|jMFFFh>?DUekVjnrf}SG&nkLEVaDDkC@C1b`S*4}LGIW$@J#~|@?~pgZ}kx{ -zXqp_0CErW7a+lIemg|F8$FgA7sP%~$;T$|E!2~gv_^8m;)bU4RT&gPjMC4tGB6itDI@Dm?i@V_ -zI@i0Ntyp)m>Yv~}A-B0hXUBjWNw*cLxPayH#x>|%b*C+U8v?hRJWyq3|9RY_gMKt; -z6=<>5k*?*K=>5qR0H;FCsV2O$@?^}}{~pLZsGbA!DV(sUX@OciE;?S7+0-yGy=V -z+pP9|%Q7J=|A+yGQywNY!U9 -za#JKeTFNrejvlp@6VAW)G_8&de4~7`tZoxx$Oz -zgL~VQW==Ldp;gh%8kA!U3*cY{97*eO>V~{JPN`wL8__-IMx(}_pd9ezu=E`bJASh4 -z1V52U6PWQ$e%xxeI4dBcYb0fOlUG>>S;cS#2Ku$+_f* -zhSi_Zp<Zkuo42CR!@jCxCZB~m>!e1vKnm>^`3#Fx{dIXl?MVx!L5_V -zqbTYDvQTaZtp`B9MeLh -zL7J(OMP1q5h^V$nU4+aRPM0P@U5Z)3G0=cp9 -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 -zDLND(n^R1EG&7&c~Y-qS2_ -z+o{`o+5s@%Zw7G^Bkt$Z6+OAMe0vnUHioEep@QSS&|)0X9a0UYq}xyyD0` -zFX*%*cPe8k+*WP$+YmTDx!x^cLItaa$aYfg8#!m;8H=7W01URGmZc<-{ODy1r#tkC -zqRZ!+w|OMCcG^kO<3u(%gJwTzeNUiLvX^nDjTE3Ps>HD1T3fM)8UQ2)QBHUPtaC%M -zOv>J|28HLU0^2hXOv~bALBQZ1!hC>cQgSj{ZgoQnWjnR$1~=avGDc1?tnPxyllW6l -zU__fAo%N;1W*->C!|kdYWXGbZX!iKRO{`5EwJ&U6naecn%wCx$nYMbk#EZ~06nove -zCGE$a+n=!Mq+|;GqhrnB*_M03v{md7^dDIPZt#`t0R5?;6?y1LX)+;8rr8jzCpTk% -z9?sIFYmH_OgZsu~XD`Y2i0{opU!e8sy6+ClLN@*CfNN4jPVF2rz>RLdw0}f#+sc?i -z)>DfrQ&1Nbg%vBO!^>Ao;<*~G%(fKZ)-1bbds+@~lj|$_?4ZUOW3UQCoTN9C+4@Fv -zBIu!FziqpC>-vA%`R@;nGu^{@k}NhEyw@)D9pcl{WveWfiw~PevWYF!@wvH6aZuC5-VpQTxW}#60$`a%u&^}*uNd8}tKf6QP7*&}iqMol_>K~_K{qBFf -zu=s8+U3q*>aV$O1|M7J+Ae~!(yjBYI{`o;#Eu%mF<5OHG{bLx4mZ*XJ@dAsQ%FOtW -zPtip1j7lo+KSp1#2h4a4c9L+vTnlHj*yBc?4({b5U7~=pb2WS7YknzZ3OXH~oi0H`2TT{t;de85^JW -zQPBIe?x<<{!XH@SDD4=uLnI;HT!hN}$tFT|%iSl7ZmQi~z3-Y-p -z=mv(}2Ba5c9wxsPc<{PM&~4{-2aLxK;B72Sh`T4(%OmC9A6+kw4P)+r*j!?UC1Uex -zDeO7mn`u%M1VB0W8>%&a%}U}cidW=GL67Zjm|Y?GFCYxu;oeC8=sHA>uI2prn6+R` -zX~xFBE^mR<-8KfD4l=~jVd)q=0@(2RZ;$}i`K6u$CZ9iAqpoKqGd_kQ?6|nmsDv@< -z3yKdM7njDz9Sa1eqd2zdt)sh~>gYr56U>H3VD*uvY4cg4)D-r!JU;d&A5QrTmwYp6 -z&UDs_&Bx&SKN7_zhPd9DKP*aAET@ylppKo79&Rr0*N$ju?iKom5poroY&Q)&94q+c -zW4d0NGt*_D{D#M-*MRelNVF!J3$iYDubH{ZL}>V-{(FRaxCjkmc_<^Kt7;(x1ME~Q -z#-15lD3ablrIWRZ&N#ThXy4Yz^46m^gb{iA9mjrb%sEC1-jJx}wb0PhsgHP>{CLDa -z(sSk^wr7bv8mKXi?zgf%ZyBb!i;RKS6>#+{eoIJwOKewg+7L%ta#W{#TbDUNCS)fQ -zsUkB+TWfw&@Kl?JenqZYLG`tGL-Rpf1A;dO#3!Cnx^tDA^F3|b_n-O2_KStU$#jq0 -z!?~rG9;}CW(Xi&;_NEgp;mpEDkH6Hi(xt$4jbsxsL^DG4Q}alKj$pPZSuInHF*;5j -zfbg!YE`#6qp!78K6%C+I)bj0IzAi#P&;vEl6E=;6t!F9KlDn2-FpVmfE=CAk2G04OM>wL!|L(#u8??X}8^?26 -z5Rrhics!#(eE3Qv$wCf{PN)sUQl0LS6pKa+E-ceRzSZs<2)>L^){tvO_XYBfA#sT$ -zh?YkGK{6PKBh78{(2|Csc?sFO0|yI$%b -zWi!4p;hEZFwq;ZrNy{1a-c%U$kbBCLIpfObn0R5C2aCx$#Fws5o(G{rGk#h_)uBoz -z!0E8|g9ch_u6EQ60l)j)W>W(?VNzsp;1p7~HQ;;&o?6{ao&kokM7^K9Kr00ZO@&VR -z3TSzh%xFR5A89OPB&j}WZrLQG5G!*86NelEcZzq5G>>F!o>svSF}>X`ot$S>wUag=QMRJ53}}U~g*IXP)Pvrsf!5>kmQ#r!_d@Fm -z=V#+M?8ele(*xtJR7*W;&(Sz__F{}43(EMFtCv@Gj_2|>&q9@wE33N|UK=q_- -zNKj9zR%_fvp4BJuEF?grv91j}r~0Kin@2$Sp4B(Pe4%Zo2%an&Hy-Y8xgo;~4g;Qb -z%A{fa-ay~6XCbYXiP*cKkK&J#vAFacvzt|Oi(`(51?ruT!;XiS6VzniYJ(vJ=~-c5 -z#KctrIlsiOiYer#^Z5v#oGk%=&h8lS4C`SN?m4yzn*SNxI&SOH`eXl$<;1j5qxbIAtzlY_fM9cnG(Ck0O!+-1CyiVH!%4Lq$MaRr*wN+%gpT!SQ6 -zztFw$H(BoH)IRz!3GBulv}HFZsH=sMO2{6_S>)FI)Z+Bf8m)$aPJu||5g4eD?-;eNV2z%@JCBV%ql -z5z-ZtF%&jSSy2w1^S%_=LdujLpQ8UM9HXs*ypQRRoLF4QsIuC%^k|c}?AefNSD|Xk -z0-X1uc8}gtnM}@!)T#7rk#(dky=SN%NZRPmFt&IgFI`Qc0c&~uiS@qi$_3Rt -zLC0ee0q@VX^w*&_yatIxpXM~8L{){Arp`E-EYTd8+7Nu`U`mQi&=Sliu^{N4She53 -zTOtHxYEUgUu}$A)+1} -zBtxw#8XxJE7BWM~_4aX)vra#E!1&r1+o@ -z>wfwaUnVS+^3-cP24}>rK{K;$N-nMydgg170H&rW1KOsDktCzYN9^;O-XR8B(^MMo -zPo@DQpV!+YV3d2o@ORA|b?X6ct95&Nv1`b*p=`7jd?_dq$Ix)+mUa6JM@2bgY9=G7 -zxG6fa&PAGcOAjo8xD06vFx&u;=hECw+ve%?v{`Y-bkD-5aKBTJI5Yw&*68X1Y2V~p -zq)4B(Q_M(lS3t-&4{rvU$uN%alLn_~wv<;7fJd=%r} -z>Tp8^K&yrYQl7kN+L;@$Tyytu@4YF_8NJI%8^>%JLO|e5(-G}5pE1_jVaw^$@YNh} -zBzWRtLXru!=o=(m#SvfqjZ5wW>}-7?<(YL`Hh2kSvuP1Y?5Xu3Bxd~vjTdQrfxL}W -z9Iz9>)0u-m1pP|OiuOl`J`KJ;#D$k4loao;Lo0w>dl;f%!e>_}012k~fE<)5kmh!jl9GF?_yz94JOWSF{uDJ$l|vu%ZYiKxY)K+gv)S30E;0&W`OW -z^6r2Q6=G$BFG;J0k#SE#^~kzXVSc56jK>bBPa5Kt!U-Yf?Ls|2x(1)Z-`pRv9P_Z> -zXa>#ZwpA;$6WqwdBiA1Aw1L+%9`a2Rir7M>+TPPcL(I7PK-MxaZvakk8|8I&vavhi -z>>fI}xkEC{xhH)K6!E=|MJ@*2+)UqWz1%e6LyJBPd-4xHfxo$Cs!~O%D%`E-Eu$_f -zTKOY;<-hBOE#-j*C=ZDz!-xu!^U7MNj0M%9iWm18Nf%JuZhdI?M(W9IcLoR91msC* -zgMp|Qos@LpW750FE+lHYNA=|H6|T@pJo -zL-irL8lWtw59lAS+zz3CGnDlvU?Wd1^*YlgsGUZ4G}HJ75jHa#0E*+cgvM?-r3Md` -z>+-id8CL}vKj6pH1^IXU?~k9t!=Z|sqv6QV*|cbZ8>~PSyQ#!e&fMwhzloNMc{v9UQ7buR=tn%aB*$1T{b+AL6u(N~7eT7Mv -z+X``kuSDI!YYlDPDq{86et&vYlGYm7egyauQIG?(N1(l(*zx@?j$chXGedQcNh~h- -zG~?(^%dqi|?y1CNJhB3AMVo!Fo*Bm0e8I28$I(YrMaFx~@whGVVCctPs)3r=tnT)g -ztUi{brggPqPHT1RIKduz&7;3#<x-sF4>p+=FC@$;W0k|F9R8lBDlPZiBI6K4FU4(T46FrWQ8>fY>>|+bTQ)kd}Sq -zL9tYOY?~#LG7<>y{6uqz&L0p|{w0rR2v3SKH(K6jrf|ounLDHyDthDd<1~vjv|*mD -zpgR*eOWIF`zym$#19=I)M%x8A$?8u&J=)7#^q`{kcRx9cK`{fRD7lb5j291WoP@W2 -zYsh?V(%bF9XNF5rYgjmsob!msPz*5&T(ID%@US)->o~GI8|j&n&8FXV!pY7Q@IaNJ -zuF*gsR5{@}UjXrH03>MP -zofB<{R-1bEi~iK~bcW59Jk2VLbb=U!$`xAh40cBDm9Qi!Ojc+8DUz~s1s(H9a -z-pKAzA;?-?5-}&U6sicOhFR4{BG*vATL?pQ927tIz@1!ntbt;8C`N2Gun~1= -zvNjJ-MG*va2@p2Gr*lU_P}E$vS2a(#xPTPAG?8HI*A^7M@qBApg?F7`!{%-}lS1-z -zoVu2|{fll#1-6%F5U;eCJ#z~5q(RtzH?APRg6B|aTA1)wbFKA>h+`hikr&E0POmV( -zz!Nc=-rQ&KWHq|&0g!VU;V=$*Q5APhZiHtlWuT%9zJO4x2{2wvEn}e$W~AnDy}Wpf -zs^HF=g(q4$(Lm97>snkkQ&r^TOdps=QoUDXE&k@ze78EJjI52G8++&-^xo5E(F2*? -zg|<0o0@*O%Tsya?&CKgakYuh%u3V81ll%QlwU2&wTTW2OfNX?ps&75hUCFcv%d*{` -z$8^I+qhcRi5aC{#U?k4cKog#U -zHakf7z3Z;=eA31jpEMz%R>YNJa8j$N9(R+{^E*bV79T;q9|mf}@hUa!5$@1uH5&q+ -z<=Vf0s}h$Inc&aH>+@odEJ`s86A<>j0S17c57N@dnB(zo>zOD;uSc$hOA9J&&!ZJb -z;T5W2+3u`6E$$E{nLa-`0Vv`kjHp4fk!J+RNoLPk$8KBjqw3NH=@jDq6{UW5R=X21 -zBn8C_f7qRL?YB$$Vl1cKC4IUS*iij45~GOePCsxOAUhd&0VxK$hfR7wIQKnml^KmuG(J6 -zaOPS(0vPSH3Uf5n6W2#`X*{W*>+I%P5o$CIy417|j^29c!(wT|VE1u%N -zG17k^Kg2C0Kfo2RGQDPYTqyPkoLeYL{;3DQf^s<7<63}cbOczib%jt!@1~Tf-TU9* -z9|V3)C@wUUWkm^k{r%%R;*?I@Ec`GunRj|81X*XZp}&!PY`A$yZX}xOzk|0IiOJOj -zV)r|z`QW*$hSYGck*_1)wmwjNR(K;n>kNYB>6buw^Lf?Ds6e_nfBZ}X5>#_hkGp|f -zNL5nq!sp^JB0@!2J;to_WNM92j5-#u0BdLuRFIdxzX~3C!)#la;;c6n2USX-?TkUG -zlV|lev1LXff*k6R+W>zhlAaFzGK}7iyz@XVL&h{+Hy)br?=59sGfU2$5m0b^HxODV -z(G6z+zX?w(`AVX0sRiT~G*rOPh<3PJvd9{?DL~`og!Q0B&MW7ql~YBuLMR$ -zT60|S6D8++sx-0QIwIRSSQXqkPAt(=c=O}U^=cB_&{uAim*oam@GF^KfM4?C=`=c` -zxPJ^Ng3TxfNPHHQ0v4>G?p=)g!#$mEe+cb^#qOBylQq?E-nSA&`R)X&g0t|yzmuo^ -zBqvS0uhTsy?QE(-_x?jaJ&?N+Ww;(DCJbi|c!~|4&hd`@85vkI(DqV4Ma*LBL1&IX -z;A7HW%I|n0k`URO1>N&eLZl=Fzj>MzR-`A7Nq?8@& -z|52(lGC>`!d|Dx*VN~Wg8MX{eRVzR50EJW -zBqXJJeANNMWh-^lf+bJBif7@q(bAeVZru%`0dxjgeejBLF#|h@QLVT1Bjf^Y6un81 -z{ypkG;6@f<)G1B@1|+X5OD&#mv<}48efUp(ydPd-Gf#Kwc7?39$85d6?|=RCkGXEq -zI&9&!i<}X8Y8iUzSpd?G*ubbIK-7!S1(F|NohCzJx(1Mloj|_3uZ9SbDux$gcNw8a -z-io~0Th%a}NZ`-Lp1r-%K1RFa7PLCnzjv@PvI9X?Ge+PHYMXunEMN&Z>CQc-JmqvgkDZfa0n}}xgYy8j -z{Pzu|73CwRD44Yefyk1lJN{se6`a!3fqH}Xdn|vu6hM}nU`mX+Khx*|YnM7%rP-E? -zL8}4!C=9}}ks+eKdjtQ7x)h7>I&WZbq`0PuQlC{`8glhpas$F3g;0w9D++R}V1PtN -z0VsnCS?Jl!xu_gx0V?|A$Eyvm>hIrwd{eh(o!M{WC-AA8{9vky1GwPryEcj}cCdYr -zDNrAF*bh^_UC9_9p4PP;nH^dHhKa@aU!(t$ILHP>QOdw*4_8fp{bR2MR^`@0`alEe -zq9(ZmsOI_ef&{4QjaJTKs+y0<5JF#?!F`MtLs#36f>}6zy-W^#1VDV;WBH_MS<@>k -zaKxFw`J`v@{xiL32@usOG=2RiKc(ayQhb$zs7 -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 -zvHBZJusE#{)7kF(*Eo~V%E?Wme?mwPe5 -z4GZ7J{Ku5VJ-TDjEF$=`@kvg6wg}Lj7P@~_AR}0B?+@t_QH``s0WK8f-yTWIl+|^X -z(%V{&X|Xn6J}qJNV)l0dOM=5VsT}Ws;PL*Y2r8(V>>%R}JC?O%&~EA -zw5!o2(}ozCz!MAJ`%cdgP&2^0pPDW~KD~`ICmzt}y$AOt?f%ag=|7_uk{(KmPNXZw -z-8m7*=UBPw6doHs0Bm~J?gE~&$l}38ly6viCoOaoyOXQ8g0K0+uQ2r(D7NWu;CST* -z{jAp8cjT1RWo|jN)IxDVTjKKRaCGhGs4d_32`paVct1o -z>cM`B8TA<}ic7-Cj>!UAMKZD_Zid@)#d0WX0aU4Yab6yn&e -z5-eteE4;*@Jd|e3_0vlu*8(WZceHKLV_*z6ZV{SuG~*z8oq`~hd2yl%jFsHmxOs-n -zF~-D=?%aaAWp+K_Pxwc{%yvL*&smcoVX!>eJOf&@(e1ZMfm_ekf{}crbD3B1rgn2 -z4xl<33>U=Z=#rf~)9L}&9SE^)7JvDKp$+4P1g(lvuop~kT#N;hT&-ROL-hmwLDQt8 -zos#u8mOU$T{2r>P31w#Z<{TB9pk2F;Z_Kdtyh-Qrl@Dv{2QnbfK0N2ZJlR5iurCqe -z695=D&=V;>1I@BO;ig`=&qi7qF^&a16TZH>*sCJ9of6R+QEjBt95g}A$+jA(I?EZd -zCARPwH0~fUrFfldPBJKk^d+QSZ$<$*3;yj%->2SFz-BlfHi^q>Y%*xTB8O7*VhgxM -zR)@|K+!7UdmzE*@akCrWX4N -zkJ7C0iACXTkFnAp{UK}*xA#f&%p;3uZ3zni|E5w5Vb$mw<+V=lZY6Ul+9U1`gSR1Z -zj*_=Nt)qIvM~{j-%ui@zqAUh1(o>Q$IJu<_uretS@k_yGxN;ba*Sarm*P%N*YAgJx(x7kstQ{>Nj-90@E27Jr -zqqx8|$wK;3Yfs=1aSsTK2%AX7kYZ^QsC#Ew6wRu-Dz}7Q^%AS~4RV~%M8}GFBq{|} -zyB;V`gmyQ?w2E-1jf^?Y*;6>dUKwLw%8O?*O#`nLWLV%BA-0=&}!UGMIO2}8yRqkl8%ugiZR)c(cM;B -z4d^_*=~@MEAqCY~Kb`b+0pTUzo8mv7Cun{drQ?`wAlddKy<%-(LDi+XD|B#7Y|2fe -zLhXshZuJg#MPO}Dao{RYRP7Q*^by8RHQ+Q5U#rBWYh(sb)KNGg$^?(!L=qX&U@CyF -zma|{g1igQJ$IkmNYrukRC9ZO_!KnuaZi~mp*daChYa;EhC|u6MHPv3<&_By1c#yKu -zLhXIV-ffE(kd_5Nd7byE>Ms#2iWZ1Ojxn)ZG=Z$bW4SAK>>Mx)N -zle~Avlnh}2#9n^ynCU;E4x%ePR;^8Xa&`lk#QA11V4x{F2HB4r66a%2Hv$lSjZ2Yv -zT%x@bH-7ipBPyr90NZ?z^EO$}+~A?Mqb&s#OpR6npO1Ja6TddTn|ULky^8$%ERvVn -ztf%Am)Rhqn_uCg7sr+NNJ9e@g%})-gbZ^kUC-#)S2^#@d4X5Q@mkICW22`{hB%4)9 -zPRf}>ExEA=x8I?Dks2^#1!d{jaF2E_)yAO^@L~`NRw8%=yfAJ`<9wXef+7drI+Qq) -zv;oV7axYV2YFy5}hft3|cSDq!#d31RrvTKk>_0l%Ha{~X(wM2}x;d>ez)H42zfA65 -zL9z=v*SnL)$T?=z`)jXES5i8f$_+!cz&P$;=W3hXUsgEoS8jX%Ad^~yZt_jwHE7LDDPhellGT6!?8MozcfoAp-YkICb^70ojL7lh6u -z#$GpbP@nd+TE$d(ph~(|VQVC^jFgRL_k{n)6c-M;D!^(rAQjRr2z{mKy*Jqv;UcG< -zuVNA!ZyEai&MrD9>uDwzd`sj;e1#1<-$Gl1bSnaZz3iR7xWG*GMA59!u?fSDQ-bx4 -z_S#JZ5)mFWW26o9DKmMO=_+ESyTYr>)?GFt&lr2M2MfE&O)U0VP{u}*rNWXX(Udfg*s~4A>GYUwp -zIA$^ngm7vD#X%)^#J+zlA#mLKiAFHyGH-;0i95|S$CWD6d=|G>(oSeJ0VLg2x}hlu -zt~-6!{N6@3ROU8|V7coBl)#b_2!7BMtP&`A6TK)>4Eb#US!J#}>D*XPZOjlCW`zXQ`hF%IkIgZoD^6@vscRF;8 -zZiRe~N;_Q$by>!bT*kK}reHI|m+cBzY6qVMEIZ&Rya!N*0J+LZMB01m#3tR`Y5KuHEwn$bhAH3b^8%cw-B%P4q2R~PY1-+zb{LIu -z3j}hl;K|UNP(UQX6G`FMCmNa81WD)HLBojk-96+xJR -z^;qdKHV-bWqRgVt0@OFTGm*SQRe5X*iMI`|t6 -z2Fh|-tko1!izh@GGwvUfE8y?G(}TjVn|eF;DdSld#3}S^IbxHH47{HLvU*FHRr<+1 -zox}Y5*H?8k+NwH)i7bS`wrJ*!4uqg8VR@iklic>!V%Se){wz~et>H@@`sswnhawi@ -zBTMc~VWKdMzSqI8rdW=i8z@eM0fD?1Q%0|&EnvVKwSir1CllZ%{)UPo8-?=9FSw5L -za-Q2hIe>s#tBIGu!lOHgnWQZ4hR@)JO@-{}pgRoM{h%ejzbT@{mmFpCO5INXF-Vuo -zDs-)VfpNb8jelo$x9$3g^g8lUo7mp+<+Jhc#R>7i$LqlNasb+7)8$*5_@Eo{nE!Jy -zGgIZ)P(A6(U*UoBSI7!Ng>UXIpM#van?C+y?E8O=y__XkpN(nzuXhL=Bn8NS-t57j -z@87<^4t@OR8^8a@D3?%}%EtN8Ov^YF+2%lQAFvVU2U6z94? -z!Fj($PkM07JS-zJv#N5?(=+Y!1l=Y;fP#xCF7AO_K78-BFOu-AGx+TP{>ng(;~=Dc -z-)miOcxu;=*MUFIxExD_0a3JaS>)03tt}+N$YvmkARuP>DoY>tXp#BL2Lj1wOlLC4 -zH(pfpyo`SQ_we^WhiT6?h80i@YY6z|WQ_jDr7`?+Y0+yp#pNnKkeuwFLm&S!cD?5A -zUVfVfUe0*E%>KtU{!2tK(DA-y7y%i+2V^m?7nHH@|1tLRP!D(a@85nFmjln;>q#Ew -zop4G0$LQ+~@qbYU6kaaFgr0u?WAEdG1I3ZAqkBv;k1ch7Q_OO%F1><1X#j)N9PMqX -ziX@}%{ZmT^$yi8#ADbo`5uBg7KSoU%F84w_A)z^>QqieE-`>a}jby7@a$6j`O~R09 -zGgb4D>@Ks-QfbP1gnZ(`VyG7BHR(q@iUoM -zjPqxuvkFec%Ze;+cfVU6GI9oqoOi^in*-=ZSDYgwX-!K$h{<d8Yas>zv8+)sWU5D){oHEJY8B`8`lgdPfHz*DMjU&9I5tsOO& -zLo!t!p?vQ-<4S7|jKB464Uz1BgQl1NlM;n(Ku8=-^(jHxuCBua=z$knTCMs(+_l!| -zpvKd8@=tcLF!pIg#d?BtI_3mAR5F*4KRYrAjtEK;M@KybnZ-$gAt$3VI;r$u`|BfD52BHrr -zk=FhNLmrL>G|?hZfOZj?{)C)AySs4(%>LMR1*~FBaD%1$ZBW!4PUjw41Z;~JiByPB -zvCBkvhM30bP|m<=HuIE~U0s@YM#xP5Y8g5hymP2}h#iUNJ%Ox~$1?H7PwkH=0=cqk -zXgS~~4Fz=tx%w?(^}z&N7R>*Kgki=a>ZNt>4NvhKjpQ!Af0%Ih3RZThkwMaj>`Z`# -zBz46orerhkXuY#g)`pUA?W7o)L3r6wSDJpD8{3+bOcIDWpg59gM615Ej2?Z2@iUG< -zf53{RrExOWG)!;m;f#(!cK$EidMpScRAJ3Il!HvK62jQ(Y`BIA6G`^n!``jBh61| -zh{5qTxtq|wq~KpF#muvh(pL_w^07u1l(jTt{CF9EgZJq1D{(22EAjxaLf^DF{YS->ya8UANXV4+g -z#Z-pmBkK)Vb%#z9i%#0LA=!v-SHvzrl2~j|W>`MoP_qLn1@ml7#T14n!rDj*V3sXQ -zjz^Iz93=;n2R(*Q0b)0{oS-lpwmNz@r7r5~NL2(9m3E+X@h~xf0mK|GDf*06V7dYs%I1&->4ej$fgT&}Z>NQVYUsPgJTI -zzXSx!lZ~-xqX{NUFV?FTsh~juSGtj;-O|WCc&U7FJ^3~XeaMAL*b@P6uk#8>sDeP9 -z1`0rCN7~TuU-~zw0c)T4Ge*#PDEv^Qy=6PkGgMl4ffvXjEcM5`flaA`H7^;qiA~B`jIIEm|M!` -z9)PyKoDeQKpHTEPcWE#^MB6$ra$mT%`vNvC|owFJp}rdxpD%1eVy;jV?(F=w2ns$WQUdbw+Bj4@rrMkha|&qlL=AA&%6v2s%-V`==DNKgmMH+zEYlxt_o2d -z=f>?9+7x0{Jsh?bwZpB!wDnc-l5s;b?Y5UUQsV_jD4JXV1ZmM&4h7>2-&l0r!x+F96NX%>N? -z(^_FWDj~=!5K__fJ?2Dn@GW}_Q0a8uu2<60%k=k`NeZ-r9XhM5fi$c&3J>T>3RzK% -z7LP}!-4k`Pxo2Q*f=^` -zuuXG%AGqiHnZQMIY$$!kS3xoIavjIxbA9=Le8#OygL&udnuq$>EhcP378@mp6ePvL -z3<&O1Za^n_*_@3?7?jnxLmlhwi&rEU3P${JAl~HtAuv`c7dH~J< -zt-o6_LXJ1s`?hlE!4%5HTiVEdImX6{VCfj4d0PW}!BLL^!Hp}IiBvw8w=N^x7FUiW -zTwgwtr{}mr9yGkgxg2`H15GG;JjjuV`;iY=RbPIMn|#cokRS_c&bD%I3D_Q}a|{5A -zM~;X7jhgwQi>h&$ifuu&@OHgEiz!G-Jv8P4IrOyzSxwraY#vn%@85p@(t)))mCV$9 -zj13fJNwODY8FMMJK;9@a;0nFpkT>WG)!f7b-3Wb!7j_?H>lqlhx~PtOe0BW -zW^spX@%(xLvS^cz5f%Bx4Es*yq8xz}bKSWJMF$qQMe^442yyYt*NZ3eFLDI&bUG*v -z105=gFs_?9D{GL~^2onH$#`B=C6FO`t>mBP7IE}o>Okwl+Pbg&dQgTd{VGBf2Y*L@ -zv>oHwTqUMZ+dEMy`J$*8+L6n?-ZgUj6|k{V5gkSlQA8#}1xy-8TXTP5#ADDcdO8a} -z@!Ws&)6m*_yvhb}90H{<2oPNK;u$nV=klnv?DOq%G`|`AO@g -zI&gLCevc$>I;~a*H%YUS@7HY8Y$M=DFIiPt%^?6z?`YIseNla8lD;?~@*$fG1{_89 -z5z?yHE!#a9O=!;&t{ercVTl^y@GDIYFwk^NNG^*TU -zXfL}dCS0a>y~hPFqFm~|Bq`+YIPQg<(y@t`Y-$xjBJ1U*#Mu=3 -zjl&W037gysQ>T;l;_z85+)M(0)o0c*v+MORuQMGecIxNu>J0Mj+G;-Nbsly+l87xn -zK3c%n=0!0y*)15DrtvH{gr!R89CNmjFWXom72!q7(K67*>YTOF`%}SyYTJAX3 -zRh@5ItjjFselc|z+)o6uC_BY%M -zxG3VOLIr`Aiq;Lwx%Bi?E$g(Hoyk|UCth|V+!`1I>=P&M8qEdkftpq~2(hm}#)@q` -zvF-ALGCjeceYIgwQXj8I8yc`NM!L4xsd+R%8qBPk9yXR`9-zIXtLoJ3MfKNoM^cIH -z5;;DR6!m3I!3kTOHsuCZ&`E#Uv~MXHrgH;8k+TZj^D*Zeo84W)zNMC+jZVwFlyW)PTR46tn|a$$C*0Jit;h%>*r2MBT>)MraN>Ed7ZHqLVa4IqOTnW-bU> -zXn?UArUXBrdyOB9CU_*nymqKXl@n;!-ZCc~4!c9sP&`{H)r2Fg-NKVc0f6{=TW{{w -zvK<;SR3^m(uvl2H$cid|60;}{ixQMzjiqB@V@2v>^fy#RLfw6YN=)96$YTcptz!ewp}Zt;e^ReYFh -zxMkau{?zTdkrJT|bxYro<5GQWq|`@r_!NmsgqChe3R<8EahuwzdjCD*>H1emxIvXP -zuP%{{mUB<*ZLG4ELXm;GVXW@(MkTn()rX&jC%O&bo{YogYA{bNku_THF^|4R{kJ&f -z*UgoZf5hI4(PR}BV;7@VdYX5E*?5HRapd?K$+F$S#G8h7ju!nX{asEW>WU>brN;n$ -zznm~$BFSc+%#yn -zNybe}G618it4eKyp`BU(vb0CXp&^87_u=Kr)d;7U>pm{SmXysmPmT>DM&*QHC?Elw -z7Bml8Qtt9y%Whp>J9|rRWcT6{XXg(_BofH4h(-28K7eAls#P9euSt0xV<}cz+{O@7 -z%4Z(CJ{e4FP0)sXw?56J1zS1vXfZtWl(@&>&vcnS9%*L6jZ_u>oq6GOz>~}$ewNQ7 -zr`QqX)%EVmd=@eypera{TOE6yQ<4_QBjf-!s@nj!RQ~qjj>khezM1<-vo86BC>yni -zxMEa)>vAa;gpsyP+7%E2ByY(6xh|U(1gjRRNOlB&up>!veSY-kO)s_~!y~iI(ee`+ -zAXD0)SGZxFbbXay=+(z!puVn%A7Nmn)k51O=MHq@m>fA*ap8N&!r9?ekrJmDr?P)A -zQb{dy06%P6SQxsjM+{_-h!1tT_{U$|Qa(fy9X-UfMQ>T8?(5;@S@kwJ;Kv+##Yw;?^Pq-xjO)UK2SCT9tNB3V -z{)KJ~iFCY^oD7!97aOQ}8sH3)`B%)%-LmJ&nz4zR=JJpuhubw!&w&c$aB1C4aY#J@ -zkgoY89L1IvoG<7WcV_`OMzyC0blG_PFSA$S_|#|0RF*fOvjJL8_O$+MKOT4%4`;K -zRU6ZQGS-#}yGQT#?O4nZeE>WaeXBWE%0u_$$wK$|neB45OCQLW(KD6paT?;{rBVJ` -z`Xp^nssG%_2&eCFIh*+a+|*2d`CAvq_V;5riq!-n;*CxB+K~PpOM3B-U5P9ocTyC{ -z^4Qef8TC{CJ~c!SX-Ws0*}*P89T*~upJM>c5ovK+y+aymgg_gAcK0+Y%PK2+Yc|p{ -zO=*JTPVH1Ez8~DXR>rf;ctxDJQn-gM{@`9rWxS2;TRep9hfJjuYzsSx4o27s<#8?r -z{qf@m<9WR^ukW})Z^y6j#mMs0@MQGVmIW{arPBNzTxOqRw&3Zo27DZ(b9e-;g&=TktzXV> -zzga4AAA=%}wG8#*p4ixlO91f6*6AVO;lK~v?@zb9p;Zfwp8+`h2xYX6|K-!W1BDv9 -zqgm1{zYIH2jo|mi?AR(pG-IPUVK4+TTfQlO>Zb!!5o-tET=6j&%Ct#9ZrYo{h_(Ps -z(a`S6*c&72v^8kxw%VnDvYK{pN5@aR1tyT1{O@{xn+sPujwpoI=8h60=UBJgP4;Ia -z5Dd8Rv|TY@(u1o9+BzdtyAGBE-rFBR3E0KzdDlI?ljp;EMq97qt~gQjW`yCWq%fg!{JIHHt!3^?71jzx<@D{$khf0AFD4bg_=rFID&Maq114=6;lTTl#N -zHv2ui=X!gYcqr1v*_+YMJiR&Tykp}Uc7e=-yd+;g!JoB^hB3M5vMCPHBbSe8g+Xy1 -z>&eocyQphb*11!&8tQS`fn -zfaqzOkQ#-|!*uM6=XLe~n^+^Z55q24aq#m=H^CxIB^%i)c{MT4Y2D0ew;*nJqqVtq -z=dC?}052c;q9==`Z?I$q`yI?}m!cV&WwD7!>tOq<9-*hr)m?%UNRp%?&!VCA8zW*) -zlH&mT$Sq^PAchnaTfhF_suyAWJk~E0l#RC@I9?FmfpoAi<= -zLxC*@!9=@y@rI4Gpk+-Me1J_BIkuf51h^Av4f6UjMRfk)cab@C+e710!3}O1Jn239 -zdxYQ-n-Z}o4gRe(l{vKa??G$PAl^W=!fk9=^v|PrhmcZ=jRB-DSwfXI&H(R0s>Oxa -z%rmT974IlQ1ROg0j#X~5^@~rn;KBg^NSJoq*&|yEaU+32O5QjYa%yfK;zWC*84oXF -zi|mm1?`mLzHZdDU&{q4X)dlnV$@u8&=M50ajBL4v?i2Y8ua;(PCha;aL6XuILg`ut -z7HS0oi#sCwcU=s;sDeDm2;cw!KDFLe@m3$D>*dGZ6rH1 -zJQq}drC0>!0)v3*m#p7`8wU^-IOgOXUwfsPl?q_(!iR%Kp=>aP -z`FAq!02)j#A!K*MM_V&H!S{!Wo!%EP#F%$gS=F&^16P2?Y0}guIVz2bau9Co>ek6= -zvzY$-iU!f3BMo3)O)Op!DeuLgh7o|Ct=EcHBjanv?;l3OK@RH*InD4_*Y*!mxU@}- -zyfblg@*-h^&Kv*&pee1Rlc%uSIDDdu^_w--0omZ#1cX~UMCZ>V5mIwAx=RS3{EJL# -zyd5bN$8Gyi6++cEDWgs;Z8T3~CTt)-;aN8WgTpap+#7k6% -zvcSSYZ-u+;N0bAj@<6{JGtR_EWbyApJsNL38=S;^}0Q_ -z4Fmxu1=I~hzyF8yJJMHs6k%NQDi}0`Rdi2ZZ=UwJL-%qfPXIdx;PaVYtaku@CXG~i -zwPAr9!XR{j&6lpH{Uqt7VcWEjDjHo)iK -zB_Rb+Bi2m{0uu9tP!z=q9$;uY>z!Po!0i3i+jq6wp_=Dd_kdd_x!N8Er8!R%*Dl -zH-1w^Kj)=0zoBCZ-K0L1c}Tm7^!YL$GGN=mY53z^l*V+bHJ!nr{bq2;q;Yvq;dZRl -z2ITg17kAV^C&7(&g`K$<1rjG}23NfB78bxpFc4)D -z!O)m=KAQ6x&H93+&EMKWE$~1mldMU`+buu1J6D`Gc($a0ZUy5e;(=4Izl;X%Gl4n4 -z5xY&s`^a>|Zf8yaERMLb%EfBk$YZDLFvK@7;hK2$fw{RqtI0RXJmzpV_Y8~i$Q;dV -z8}AC8B5*0JO<7mYHZyaj -zY;*lA$B~W9rb@Wr(*Pkv!J@N@$$__0cFAT3jbXr;E9Kiu3GsjUm*pzKDv-nHo -zbl>fz!|-_9Zd^8|6?Cvs%FC@gl;@TanwIbINS=B*AO&WAWEmLe5;#!e0!)(}IaE -zLJB)CAyG(_b_3Yu?u%%LV&f?a#fFwq`CUi8QB$x1;VWs!Ax$!yw!n+%kIoXtR!%ng -z$slb=&2;V%_HwdM7=TlLmE4+opfgi7499gc96gg{hsY_hv5Bo`CD5nSaK+omcMD_@45N9`54_juq -zbLAJ~KOI1s;xL^UM->>LND68ad#JVmt#TvIh9o$-Epmop!o&@?kS0s -zCeo%lNH0#bF%Ayu8LbPiEA|E-)10yuw9~`0zhPW8grA!m+?EqzDwg?y%!=eBd>Ujr -zeL4Y~0JbZ$sDbv9Z4a@C$^t -z;OE!`*X5A|J@ledfks;-csEXmcuR%STLLEZp^?df0s9k*SGcP><{0G)*zp6u*MfCQegD8Om)KPNC?ibvyWc9#~rx^He+oAG7khjajy*$(I2g&&8w{+ -z;H)4+wk*!$f``FgR$^a~c?7t43UCY27b(DC3UcH$zFI1KwH9Ut_${Q*>#4F}2g3Q? -zK-|^t11UC_&DaBQp)Ra_ac%Y79cF^p6qBDg_gSC?aJ8oAl$QJ&s^?eOaO!ga6=F>C -z9<$hlq+nuAyWYCMp27<8w4zD?Np1V){jK1f80O;R*&oJ(%6Q=ASGV#+>#V=OiOEfJ -z(86*^JgCM*&R;R(j{TL44_y$hIyASI;D*--%)n!106_GylFs4alb*cBMPuF|jqEP1Xna2f -zJmz!?s~{$|586eZmGfkSw8J<*#9JS76)c1`@bH;FQAI*K9>{dutpecrR5`fS>;$hG -z=37wH<+mFXKpodU^+g3|(;o)aScRusD-EHDmDvPou3@#~dK3@L@K|Yg)w}T{?DrNK -z+eG{zTH3-C6Wfph*?KWi*gjf*Xa-eGYLnHHe>#(llpHV9a0*sy6|dR9-3>>pHP@&O -zJ@gJ-@RR$QCWge`;L46_~8a2Q&K|*w4oaA!Cc(Lv|?+V{D5GDh1>yo%YBfXSI9wd -zdZS(|g1Y6QfnHK487jyvmsBXELRtjml%Ub6tBw5O@sP(PAG6^qT{&87XH;)>3~dXJ -zZU(lsYGBSgWkoJYQ5z7=1_V*dCF=)BS)LWLy0nF!rpw8r7evx4QYx4DAm6sPqlOZ} -z`_RY76;2CID?Qbha>$VJ9hm-VPcGPwE6toi*^<%CZk9E*cSu2wWfdF1yu~~#3P>tR -zNftVn+^Dg#qNW#QSlRoGJXwJ_N@W3RyXM8H!i327);VFKg4_Fa&uGAUahU|n+9rj~ -zQlCkJX(%-9lOtITXGXq)t*O&-QX?vIBop{A`^9?%;8}XU>vbhQ4R^< -zPDsFOFO=*$ZbqXeB?(+;u5bko{V?4&YH|*yt&z8x*`v(%cLBk4HzgF6&HnWUt>dTT -z(@cjYW{hY=WS(9VS^w5-oU`vj=5dE4+%1E2V@uAod@5ZsKnF%yEsg6T8JU3^0KoGw(1)Ijd4ct!K)jm@8;$es-&ptA|r$T*Y-IMckW} -zheUlu=UTf8=8M4l4Pu#%NY@%Mxr_*g$0Q -z%;q%0)84p=lZ0)dSc?V_=CjA~wOyaDD4nZi`k?V&@8VZ=+eG$=b#ulQUQmH{CIsh` -zOLdxeVIUEWA)@HFmdtMjJ^?HH6Uj}hz;R9T%jq=I?O|lB>urK_WwG1XPbU+5gRFWV -z6Vz(s1$Uci`DlZOcJx)y*!RXdT?m##bH-yJzegfD{EJ0?@M;ob%^c;_9Ag7+**lxF&&ht(~ndjq~xN{ZgK%I9I7B4)T1V -zJ*CDTv*D!rH<^(%ZJ>*4;t-l#V+UF!M|b3($(yO@&7vwI>NACOHY|FN*1npo-MFr~ -zRuAA{359{p4y(M-Y5-6D#8oA8?gH1CD6Rtb#C)>=j9*b -zYcqr}y_hxickoRzOMmI&$L{Gpw -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 -zb`Ph|!wO&nK;TR -zlwIn?k1F30e^3JK^WZ@iR<4K=UYL>?3=Az~VgfVm0649V8eXVVGJ8Wd;KtZ1IMswodqE8>-CSl* -zz*=7l$ehffz<4DEO@Ok86{jZRfLA_(^G`}fTE76gI1EGTUb@F{IcE4j@+!e3B}{^^ -z_h1|lucd%5Sj7yeUtrWfY6D8=&iEX(apMiND{`RQ4I;sa>vZ7gdZb^;HYnCFq{3cy?|saIkwMv+!s|i6w5cgjlW%=xLhk^3C%r2N=x-DSAhOY-1#n3)&@W -zaC^6HS}k84^$9v`i^*ja6x1}MP9UR+^==&z1h_Qe{lP~kl9y%Ap7#A~-`=c59Yy3clKZgO4%=L9_bRK`>e$bfj5W~1 -z_7|{BD^c3qjEd1%0rOG5z6R*Ya=pq_%gt&G&~3w{ij-YN7I?|c*J1_fN>GUofTt}3 -zBEh87b5Yj~I1hc1q1~%vQdA7Z>g+Q$-PL_T3sX*RF>w(r1nhY{vT0go==7& -z4_c)`mOiRhR!z+N${o{I+Pp&1EN^+W#v*I;;5tQavnUb}_vn!bruSN#3gk`9APC0pvAia -z)zokRNIQ@#|F5h-hVX6`5lcl}%(#@O4ApupdloJr5~EZX5qf4+GXMaf)?5J^;1F>2 -zQr;$KlUPNGXXT#Gm?Uuu*PaB!vZEC|pIjxV&q0Rv2)79G!5{!g;h@;m#1@E$kttlQ -z@*El-o|;xX>1lVyeNRmbpdZaiXhFDYQX`PsQhol+?fLI=yczP}QspIoqiD$f4#jup -znE&4VZw16pZybavnhQ1`ilHLyDcpWvlkBP-TBJAotcq@zrWt+Z2!_sG-u3lKMp!8X -z5UuA3-@`Xe@l`Y)<)2~WoHM$B&Xgf_JGqT7-F%CR+jJ4SZPXH5owx#=>o!6x!A?Zy -zIoZ0}BaEY!@01@Pv7G5>xVZMTK6rZUVAHm_&2f=+p+!g&alTLDMP`m{^-;MdFKPa? -zNqvocr~n6cx0_IjCG(yUNovLY*Jmy8YA^*N+xC0WF)8-~{OwLx93EMSH!*cx(nvc-9Dpos?iK_X&dwx;8+)0 -z>X(C{YPSdn~Z6>d}o})gH&<+)c+dP>G)8oi++Wftu*41IbFwSd$E0a+G=Y -zUwh~08>6?FRrKOD&MZ+pjLq^BH+HC8yS1cOt76_>P>0sL?AB% -zCL!nEoFMM(IJ;@GHX)3~gTFD;Bv}_%TFvh8QS8Fl7?y)EyxL73vZLK=^F7)KC+<-iI~UiqY=p -zOqT|D$fQrLEZ%MBJ)YJz#)sUlENg@0$`FzYUM!WwhuL066OX0680;bJ8{e6j!K4M2 -z+9s0jz1~QKu0Wb|*3wK0@{1OV8SSV`0^}zdZ^yDG^pbYu+H(ldQ+<#g7I&e4$V^C$ -zhjUo`s8}x8q!0Zj -zwt>%4vri@@eEe|$L1`eCMxo3azvS;(50oF?Pottw^Fzc;O -zb~FH4UxKV~(=Df$(Z&L&)DZ7S^xy}}N@@ -z>&&3Z4{ox&bD%Mah7yhdA;DevdR-FFnRrHO2ksn{0K_TZLNgbp4><2?YJ~q^)s=*OyYIQ<+;Q!N*Rc5}EbQN`0FmwQ_57>%+ -zzmd%ZP7UPdkxSoUb+!yiiB5kLEJ%H#ELcfI*U$mj`3)}n!}15`Qy-4D^G!>71%RFW -ziRLsjkY0oF(XCL7MWG$@h7}GVQac3!f>f*&#mMyhBH8tb1ZpBmwh3$!g(Uah-DZ-~ -zxn`BjSO8EwgXLjGe^+kv4YnE9o^)c!2Z}2@O_@ZC#ki|R>CaQUTaD|iJ=ULiBcR{O;D%3Q&Uuo1aG -zn-wiXutH-y>v6#g+V8aFjH8Ygz|A=`0qb5fo_lYdfOA?#2%@Cjt|CZOMqR{5((b3db}~E|YKxRKki^|bFVHxs2tKb3 -z3^gHmS`+dZMKsq%o_C%E51)e%7{M;ocpg?EUO%>xo@*r#BH)cazDz -zp3R|V%ABJEMLk!y9+fz6valC=A6w6@Kyn-h-#F59`~CMPs-_T}Qt99x%0DZ%`Um0` -zo7E}PdeV4FqC01Uwysz4KZ^JKlPVoGc&I0SH6o-DGeV3afTDN40Fox -zkD=)ns%TIhc~ova=nYj?G5P-O+qYF@i2jLH0bu+52=DLTziFiY{r%Uk@{^Ar+rq&g -zzShUjS_}FR=h0I(hCL{;NG})v`0;J~Dvy7DlY97(FY=YYfBRM!=Y0S9?RiW3`1{YF -z`V#Q9@Be)JW{%DGE%4WW+~iutC4T&co6wfLYTq6Pz4)WPm8X?I`}5m}2tqM{@N0ji -zDf{c^w_?HkHAxHH-|zqA!N2z&w7b#buK)b{1z`#%dcMtnNXm!1<^q24$@$p5--`Y4 -zQvtAD4aR~@AnIyguDx`0{fwJn&^4s+A9^wkpYaL(EbRZ{m?SMS*IoFS|f@~DVI*oC&m%Upq`*G#tO5IF~-+Dp}vAdXhVF8QYZpv8sQ3>95za -z-V{8f{*Uce)v5%=$I_pywPx2uvXF~y2Q8W@!Ae2{milntU2FL)l*$4JB_yIiE}kWS -zxG}ee253K(4;nxhPU=S?Zc%F+?+^lv!?~qF-DY{#Wb8}AxYhJfWK8;NBY%9Vu8NyR -z4J8M=0Xt(?0+n;CE`(J+!7EfqHg@&lXSBpHn9ib`z@)dB0|0M<%|E)|pB&h+vJ55K*?_CmAkzJJ%lVCnU$L=o`(HEN}B|3o>2#14xk%-f!#v -z&t;(a4p`>L)H`WM5{B`2IE8z?9#5Z!&dOqwe1uNg>L~6UgS+KjHI&0epM~*X48KS| -z`lLS`{qI%)odYMxfik#!v^7qiF`P_W=b`d$)^j6qgwhOp@$wJ>EkI47b5Z(vmWHDY -z?x(t2#hGKNDr%&W3_@Q9j_P}t{`?^l4S)Xq?VHL=9JzH;&Qm^Q8`7*B9rFsoiN6^X -zGpG%ZfiUK4p`3s#xuv6t2Dbd+?t(>w_>g-9>?&lfIqO;E{iXuUO-Z_w4+$sv7w%)ZUX&ggxA8CA9g4dOtv;+62bIMWT5Ol<> -zKyrk%PAM1Qm;-~Z)RAfMbvm*0@=dSzKR*9@5zFiIh8ys9RQ$$HZe3pWPY%8u?~$iIvUBO3@IXf9w5i2 -zE>BoX<=X_IJe`#sRmX&fPPV~iuxAoL$MrQ?MjP(ODHUrn2^ZWeI%IG^TKvY+OhZ7} -zqGvj+p}C0_@B6gCo7i;zHU}%M;bXkn%e65W7>FVWt1FKb7wK+v;f8Y!V7CPOUw11T -znqf=ECcpAn*os#})12N%jI9pD{7YENWQie4!S}JAC`inoZ?_*mzg_Nqqk;Zk{X1Jh -z%>gjD8<*h}^UR}f)24q-C_`5*AS3@_ZX;Iwx~4rtVMvX=FZD1PF@UbzO+Bgh%cXSOlD5-*F(1!SFsVjZCN1XbKuVMp(Cq>YtB -zDKrq*QfSCPVev{_|CXqN{XPEZiVNK1e$2*FNJnLu%YWU-1k*p4(zI)D`?+MtUk;0p -z|6)J@2&(okEqT)q3U9gnC)szL=j9~djf`$`A88Y)J)Ej?$wEG-P1}C -z1xo~@X1L|_zYOH6x3*4Dfh1PxA&VKqNHGaG%q9^T(zH%W5iTPn@)cKsTwOp$7a`Zy -zsuQ<#n9<$R5Ch^Bj~k$2O=wsyKp(Z!Ve-B2xbnGg(IJZK&%Z&Z$L#&DG9Pg9=7J&n{K!DjU&lwWz-mn?p>8K2BpPTxlPt)N3Md= -z&~N|}(Ezrt%LDA!YaDATfuh63f}V1?-nR1S=#VJP$j>dg)mwOi`C?YymiAcB^7_x) -zw_lgzzb;2bw72^Z=c^;3Tx`YeCr=Z9^4H5M>;B1RKv!Oh(Pg)f;-_@zdwJ62)e$O7 -zIDjz>j -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 -zARaSJu*Jhfc0uo+cHq$)m3Jh#KZDb5?iDIrT -z*nu+pWa=y<)ouXtsuSo@*^}c#BVGTcY!%>4*|AbC3{f?Ag^Jk?$*`r)CU)|g&El#w -z57qg~8r;!K*!~=593@6dx+(lp0W_81D=&0Nu1VW5w#S#gLU6~ClIT(M?9zZoJTzDU -zhU__IL=@@J9BHZNkqoCU88}dhuV@f{Wq4W8mka&6(kfIkX>ImZuAXd -zThQk)C(ns9WeH-iZQW>{(>Q00Z0I^!pA)}d8-Q`YO_FKBl*$5ns7Va;E1TfcN -z2EF`*0Fv=5e39!D5RlIo^tKT^SaX5XM!JD-yja3A+#Dk_1?E#pc5Mv9i;jNm3qMX9 -ztn$kZH8kJVv7Rp%L@fv)@TKsF^70%kq5UB*p}1lbw(WZ3$Zd~*PwK5iR*UGb8-FtsD~Md -zN?}`+c9Rv+IItN1V^@-dPjs5}^mH#*jz+q)lpDTS4vQO^GNO3q?Pyza5MLqT)x|y#X#&7$2aWeK?_d|hHh&%7xyQS?u8Pf*M>Q1}g$z6pnz%|ECt!-# -z1>dKAQA`ypM>g!P@)zyB*cw+$nIXUP3xLU-=5xxQc)e#sBL -z2rf~&JYLL2M{9l4xqf-Cs%OfzwQ@UMQx5rsClcIH`I_*X-HQk$T_A*hue)D~$kMB4 -z+n~6`t@kY}g4bEu*B9|ZH?jCqd~ALk!a6*d#q-bCh -zUd{_0z`PzLOv>T$++}~Fw)ndHD#q!0`LT6Ij7!hsK$GJIb=`GbR`90=A%6kAH~x=L -zz{P!i))4dE2jGmY1K+2=+z;&|Zq$3(Kpg@&j{Cby6mMqul)p|Eiq~(!LS*Z#Tscg} -zH*YWR{DG=%xseM=<;xZ6%ZzTCFl)(AU=*R(=ciXj8~()-YDgF}#P5=a;`};<;M7GS -zw15m=U$lA)g|h#B`7n)8Q#;IIXz?s6_Is+x1~o~6gj-O>i5FHA>Ruj&rI+4iCp -z!CJHBbf-Lfa4ACyRb}qP-wcZ>vom$e!yjyk4uhn?Wx&~ELrR)xL<*R8#Yeld7$GoGa -zBhD|DR2?$|Q}534Me9kC29|Alo-cR+X|XX%WbEdcE&8Cq%{H*Q$DbYD3XnPna?ipGHgYrN>h(XCex3!Q7@HT3t1rTkzQqJpw2 -z&A5stqiEX#WKo+?L8IA!9Ux$;I4Rl-kVagJkI+A%PBa7@=};I9iBOTb-{dk2N9Ii9 -z-wuJ3$M+@bW1%YA^&QLrt+L)upnz(Pf(AOK^eL&xe5%s(ZXu0KZrjoUvoBy~_=w&H -zZMi#Vr_w3iF}C?~!v1tDnNy>Zu-pgo1_!!=+7&hNXP7y4kSp_;t=H(~V{C(7lbme*#^Ya! -zQ4L{|I~q1+D;bq-^YIv!3l=t%U23+lpr&RXpLRvJ<))E$O_~K|t$xfJzn-i5hu%!H -zD?a~F=`Tl({JEd$M%}B5F(GmQbC@weoTFcJ)VV## -zRMCn8rDuXM4e9|>vu*`zLS@wy$F#7TN{q!GasA0#D3RXS6Ap*G_|a7{py-UuK~8HS -z#MyWz{aQxObRny|Ns5dtFfwhq7M(v?XkE)EVT&_ZTR@2<#5Fl&>X%Jsm}VU&vwh0f -z+oLR?-F5JUL`$+&A3Kc_>Nx|la)KAZQiPU{`YS-+|z4D -z9m~c<5daJOjF$KgBU-W}s3F~_te3@&6I1>sRw>dLM*g0uT`qLW8qB%nkC&C3WR*_c -zsM#G;mwo^1n?6B}R1?$Ny5g7QL-)D6;Vq~Z3$x;WoSxYw-?p~1{R!mfC46bU*EXMc -zP-Ke8r7V8OZ^uL1@pt2l2_9ZAkrn>|9%_o25i| -zEQ@jsK@2o$iIa?&X=b)v=!8H}n}|G_Yh`!3uGt0T7Df_|D>!rBn8UfKbm$dKu!~8m -z%AMAV_oX*tztnS -zvl!&5phk9|aA9Yi!8URZ!zTWPbhvidhudhSQuOx!JvOKF&pvF~k8Db< -z(OuX+x8?hLsmA*a%LqX*GQY^a{g5Wnk($%P(@gmmK?)|KtVmV>Oy3 -z+GlLAu^CURhnI`>c|{UUvWccIHd>A8ap_Om+ena4NZ`|)Yo%hO_l=uk5S=lmLX`!P -zjKlZ<5eHy_rfec#BU6&=FVZbd3t -zu=8)CnB@e2Jf-|dIJ -zkuWOux{ceHK$uc_sQ>9^ctz9apHUN=)(uBEjz$2e;XfodQT -z&0wuH5{5o(3BJ$>6`2{%Ha@Cz)da6rM^1!Q$|L-XeBMMR&Sq^zpf+9D&f5*d`QD{( -z(CUP!Suf0l^AF|nxUZSW^bsGtDO)QOMnF}2)Ez){8MoMTY>K67gAVrGnQMW)oA3;>TuD!~M#&nsP?EvFO2C1Pv?$&f6b;!;t=cNe2M4uu -ztkL+=*;7u(;KWV`e!HAG6-VpAFkNi&Zl#gHFLt8k%xjcOI6e}y09n5DvOzxCsy-h< -z&;tHRg}EhfPFL295Rhf$=O@jmG=4w{#bHcE-w%>a2+m4Z6OTT_RJrQm0j8MSHFi(> -zP}w6QYfB)#Du`qVm@2P4h-~$B-aH7)6nlYg -z>DH*GTaS0;Of*7Q_)n%g@+uSwt|sJBK0XTwqIYU_e1WD+4#u!ypTc;zLww9k$j% -zdx(^q`2r|EiJhTX46ZuI;In~j)6^(VHmPo?jL~}W)8}q?pe_MR=Inb;BsoJ`{tU+_ -zph~jku+?j*f*Mgxgt19h4q~?|A;>P@RVSkqg|!(eV=G5qJ9Dt{bf`@}pXB=IyA-^VIp&U~F)r*K8G#*1Wkhz3La_CI -zoDU5l{dj*DYC^s;X>oex52N8FYcW)02PP+DA`#!&Q~9rGtk(&kKOI@)i-<>>9kOY1 -z&ldPT0nvGS&TT5}0rDI998zDT2Xpg64frx|FO+LX`>>GaFzB5yLfxMgDZUmwo4ly! -zN8vkzg44oUtvT@|7-(_~fe=~~vD;djz#VS`A0NqoqyL|P{GDUVXlA){wU5H^(!Qv3 -z0u)^BP}-vvvC(t%twrHz=fW=|5irM-oe1neG|jE|0Js%lx!R8#3=a6_Cwls@G#6by -zxRWq*P)!E#gJj-4?;wPh&IwF-Fb-EHV671Z*xe+%2{ysVu~EoP`fw`59VRFLmE3y>(9=3GNpb^wtLupv~#$G?7Y -zgUpzWakkn>28g-ftDB#WF)JQPoLZx#5RIul|CTIT$V3Ca*}$%@0U^+u0=F$i`zQAW -zhsmsOkiXEp=C{Yht56Vh5z@^F{`>78*`$Dg+_uI~I%V>hZB9jIl#S}} -zK&hXtYJxWh-OBs7Z}0F15kc-x@13m%(mAOsPMr=?yYv{7MJ(Lnur_Hs_W{dS-zKUc -z80A@3hxxZ(+(@=1OdNSG7deETLJR=Hk$v!_#j7nCs0n?<5jfB)rM5RVdy@sadB(7i -zcZ^2>ZC6d6!CZ{l8kkSW>EA#l;clo}0_cdZsOk|D0eHN4Z<9+8LGC5mP%U8tVw>*p -zA1QhmchfoW-q)xJ7f4XM1TAJ`4W>&Wjbg>YVf=smKe_s885wd9U-VY -z&B@cPD5fRPPqS%ULclf50IM|+t&=^N%Fz8jJt=V7zvSJXvf3brP&iJap&UYJt>43N -zcbDN|C9$$!hUWc_84A88Mq?| -z)-sU4+s+=A-F~J{JOG^0E?R;%>0&*0;mProq-owhqwxsSmPMo3tbxJN3D+th6TMKV -z&x5Oz_+?XTyMe6yNw$n!lAW#@C1>>E4XI|1nH(yn+Btpw<41a9^me2$4($lE%6+w( -zas_PL@#*yH9#}!-h1JKY5wL?+_t?@x*hk|Q9Nj%WIhB5p(A(e;@tu>SmlnZirmp@6Sq0dN(N&{9JyAs%Eg5C|k$ -z5TNId&RSnB?+#|~Vc{)rn(m$6m(`e)bHPbV2yis`qOsgGg{V*bBCX%WMB;-HZKJYa -zAxyJriIp&M@1E8|k)A}Ja7THwESx8KB4i@EXSDAlH?hG~<(q8%{v|tlaLZA1l)68- -zkQTj6`vdWw&dU$JE&cC4^K4_wV3tF&(@0cRV$|@hz)gdPKj4z?Uzf23A__A3uYZwY -z6A{1RFu0xs~d5@(XAf^PT`U0x31k@sI8f8lFn_i_UP8j=R`i -z>_-F(MR4PM@RpI{!hdV!wjbjt*n_NQgh^K5WcW*NW4o$ZTkoq=|l{~nF3jzH^0+>63Xit)bdc#DM`vD10 -zf>WY&7Uq(z3i2{k7?F{7SU?g2z|qp4QhuUazJGt4NAf1WBjtqR27dV!sUNQ}qSoq4n~`KR -z*xm&W>#?!5=}{AJ`MT+3gPS`@1Td>Mw5~UI2nc~RiMGe?X)S;M>!)-nj-Gpb-gY>3 -zdq?YK4#VI>#npxM!)uHPF0Z;4`DBQmz9Ye}Z -zNLTRb$BKDl8O%MG| -zwpWNr_LEXNd0XKU4LZT;KJCMMlr}?tO(}Zk8oH_mS9za%+Vqw(Li8RTY*?Wr?zn9q -zH?tw1U>ng|U2D9(nV+1dZeM&#Ji%R7RrpDE44hXf8yDDz+PLpXElbY_ -zT^B&q;Wu`T)nA}HgV8VhXao)byHJvg=-ds6q5I)G?OP(%IV+|4$A2ftMFDiSm`KIfLDQ5EP+5|!JT`&*TvAzN#N2>m$ziC -zl)fG?aKS?-Lynt$HJb!mez#D^OaeTNpZZvSq%Gl4;Kacm|H&7pcPw^^r6GR*ZPSUJ -zgi)EMaqf=r_H{mgJ6iH^$jSfnhU-l`Cb5{jO}oTw5Fz+3Nbzqf>!}LJAkJ!b+NVcc46Eb!^nOjag>m{C@h;M|ggaVXpVn}Z=AR<5>kyyk)ywTw(}(<4M9 -zW)jxN_PaYBc@seWpa&NlwmlY29ILYj1DQlXWtP;%zk9 -z?3Qi|P1;$7-HHZjDTyv?>lARY(2hzm*P-r-R9V@P%%Pr!mGJz8qln}N)yRpnZ<(vE~THBg~Ir6*r@MoPdNRmp+9AXkD$JenGmaJ?4*` -zekQBjkcfN; -zIjjKTQaFa7t -zSr#6-NK%{I=_fe-fD~Gx+3%#rQ5sLH=L<^{ailm*Rvp{By$z{Cr3#fRqqWR|j>?I# -z18|L)*AwtYI?#oq{`w0yy8zM~ur*TU*VcHX_(le9jp6p-N*sdaP$X)bJ3st8NH27Ol -zk;57=^;G^=`W(!v18%VH+>;#IXY&k$gQ%Dfe~)7BY4H#{NR9Gx}$qDi)o9}`H+IlB}v| -zO}3w)1^IMr%~r9Z32e9&M>W7hJRb9&plo_)r5}Kyz75jdfm+$eGh07m%g8$`DPStR -z*M@Zh_S+Y>fVw>>Um=Mn^5PleDm&3K51)=E&%xC9qr5HJ9b~rTi*q%Y2Qq`|Ht?D= -zCAc{DVIpTp1BLfw*PtMagwrR?h>?DUekVjnqHx?XXBEAoFhloAsT73W{ChhQV99@DE{C4nmH+n5M&Win>l8sH)Tc{_=YmH=t#SIgg@WNl`d&dy8GlBDRl=x6*qfKH0PA0Y>;kgZ{O@D)P*;U(cL`&m?d+Ns#z -z3wbc=+I|IczO(s5&h&nFPm&4RL4ZWc?hGmN-vf~cC3j%3MTGExj;#f_>q+bKINqv2 -z&esUUNN`^Bo!8!|S>}3FaI`N3L3`tFB^jgL^AJBda?8w+^oU5!c&mc0))>V&slenO -zcTrPHwzFy2-6h+sZC1P9vWyHtwb7>>fx%wql*FdX4220JO%j<<%1?_u6o$~J&;9Xr -z5BJsI?vcI^g!P#--QhJpdzRPQVoFJL%U -zKu41@tIVT6IhOoTxBBzGq?HdZgIugm4OKE^k7W__eryycB`I4@5p5a}Mi0XSRW$T? -zkX+;i!K2kYj9TR+17d{uie^0DeSM(JPdj7k{r*#?1O*f*IkbX!sTqo#GARs{OEJF -zsv6-fD=!3wf?Fr`N0HP+-9o7jS`XaRbRX)Sa;Qt6qveRFw|;_SMvTi)fu*F}0#jVF -zTs8x(Os&x+Fhi0xb)QOFXurEIJgv+L3^QArkhpNVI(PQa2tSVkTcPA0JzXQI?9@*O -z?LiysPG*7n0g!*9L3TCX79nuo{?ZP(uIUaWlzaT-q -zp~SLDO;&dX!ACp?)fRKNo>K41zU(|pg|i82j{<*VM+20Qf;Qqg5V`k_*D7 -z*Ye%PwG%t;JsB+63HlIiWWaT)2=yFdkQk1Z(sFU9c>?z994}u;qJo4w@!LUljVU~R -ztc^$CZ5NI37O2Y0+aXXJTHhZS88%%rwmY=tE^Vf`%xc2sF`s)jy&8?TJCvpTd-!O+ -z;)Be9C)SM^=Hl{6!c*%D>OPRVwMrp=X)}Wy*xK-4Bz8f^2BQpuP{%oLI-rmbJxR+b -zZeju>(=ve(A%oTGTu}6B)o)zr+X1yr2V4Nwf#5|qTBzebk9292dXhR&&9_YfTL-I) -zO>Pd0<5^6!GrN$Bj+Fhqs23_6+yA+EW;ymAwGgDJT>y`lRlLuLJEV~0J$fWE;OZrh -z3O#AClYWy2jwKIU5c?pP1H7Te!~lxIW{9-j^v~25e|NR~n&PS!MO;KYn0V -z`hZ4uL^IG}fq?Z^zKYI`Tqs6cpsuzbe_i$lC-XbD7eP9t{bKYqMVOuonE9nfwFe!7kMsBsHOJeIT8J(BrQ`lJ(Rx!QuT2sHr -zJ_m{F&6naWj!bJQ|L=xLGVEnIZ>mr|sn^(n%-)!>X;1cWe~$ -zMf<3ZB8=e%{dTMe!hSlVyG4cQ?4^;E?_a#_dKJ1e0Wqjx+;aqwPG+|RdeK3@@AtI8 -zza!1fSr%k0j5mVp!T~SIvXe095_)8}vH)VCN7|&}@+CN}dkE@4*JupWoDFD*AGNISFk3l5#~q1yU+B$NU{PYN3u>#y1#zzvoZX%p&glfq<7bZKdSV;BFQ;yNAui -zv{AF1Y=Gku@bK;}bhc)^^jmKZNE-SENsP!v#JY?x)eh3lgzAICH#r`pv32EiQc=J7 -zanU4DJQH7ygt_PnQjCr|dL(>eFE4tC%A`ImBrY*Au4ebtD))=+tJ0tUUi#mHW5G#{ -zWmlLs@3T@9PZnoe+@GA6(GBz;Tbpb_9}?0f@kD-n6AkQOtNW2%egw4Kcr@=?OuR)# -zui$u84*FHtC^`9DbL*-aPUO<}7ZRUTl~`>#b)a<%mFt6%N3QNE^MG;{s1vMEd2`I> -zrU@C9-D6J%sl?o5$;b&L46vG2Yg21KqbeBLE<7sdW -z99y-h&H#p@&D{jH8MVbx=|J{n)JoN9(zB_s` -zQe>Hbxk0|W1CXup1Fq -zdinNo=eG_QhlG3_v7Fr6eUiU1y3fgK&}m)S!sPY@?pMT7<#+CyL;C2fM?_mBm>*E| -zGjkM=*WUG0Qq!A40wkSoJJH|o2=d&u{IDK@wzg{wmjnyH8J6IPUq7JG9_NFsGWNhR -zQRgroYA%e;#1TyHC_B;mQ=wxIv1Pj5W3$S!(J>y9lR^;yG1Ci!V>ZgR_1uju -zT{R*D0>X#PL59A3-SA)Y?KaiJ`q$^L>eu(b{`P4!{`&k@4e#s2|5M#%RyaEjG}4}I -zEZbYIIm2TcNccR&(f;)NW`MVo;9INdrn`OdNNZ>XebaMVb1{33Y8oj~-_E?v^r)ymZhFxJ1`dak%bxmraxrpeT5 -zN7_To`pBZ;a3GyvAzqQ;+Z5r4R72}HwNAH -z2;P(tAosnM1>LwjyVwTImt -zE3asN!CsgfyAR=`o%XKrxG>vk>*$B@iJVnxEOlF%l&9Z-{X;T?OIwCWu6eFuV(iaP -zBM5cd){yBCuz6Xrx@|m@<^T1?N&yv%AK$(S#<+Vl&PkGw0g43F=lwg!$`Ib^O(V(@ -z4(LuGJO6DaJCej)uJsz?M()B&kD`&i0RT^lu&)8p!+mDwMv@)$6SVD88UodDO`=1h -zMM`cHq7P*MAhpZIXU`KavKCHY*T9JnY2XGwT#(Cu$MF9X^_?e#y;=}5s-piHuRr$9auaI4(&$#4@B -z66$O1KG^W(+>x-o&X8e6Ni8SX0c@!voz(Skp!QbD;TE_78WG>z>nyGCR7Bm*8SZx7`8=gH_W56i%Zb$esCIdIt$7ls$Y{~Z^ -z`ym_V){sr*%&0^Fa#{-fyn~DBZ{R6g8@Bb)IyY+P3O&1aqqtQSvsl@@5MxAHT#*q$ -z<%+$#Chq6J6{Ybc*Qbgm33N-L(-)B{2Fy_9F|MdUc^lDnTMwSB0Mz!$kHI`LCwyz^ -zZ>TyfJ^0;?CqsY?juXLo_D4AxMGLS8|J3{wG^g8tYIzB;?? -zHczaOt@H^4jiQ)|nM!g8>BYz#z(wg9-3!owQ<8}5bJ7V;_@9dN8Qj*jDb=5HuLmovWM?7c=?2xbM`IOiq8+p~bY}S{svA^G-W?gz0OfLE7Ij8X -z4I9Xm7#EMH`dA1gQ+BJ8ik=hQw_?J%x@^>%g;PtqVMdn8h(B549G6ZFd??n>$z3H{ -zjibe((0FO_2T(IZA#sd=1FpL{NXs_+XpO35y#o;9CcQ}N3Bc=u;2U9I0&Q8HX0*)T -zG@iK5Tx~NADxSzbX&kyb@U=>i7P5=dIydh&% -zMG|(&1Ooc>%%-`P^8wcbnQ!Y0`dp?a_xzr7oX<(@CI`dm)6-knU~zlh(yR&^M8ePs -zDKq&AkMHR!jvJCF1@au32ed+R#P!ZK*c(s_vAH3e_B&9+OHOZBK%zXzfwP5+m$;Ju -zoCGVk7y^q0^#O0l9Y+;^67~Q_YUmF~|5JphqX8OLSuN{7*=M4SRY_A0#47i~GkcZQ -z2f;A`dr(9xr|lP#;-s<1F~$9lNt@~KbBPwdovTDSnOoG);;(4M5vt`$e5#GdDh+sB -zDFzm6KxdOHwi>DznMh=QbjV#Pgn(a?qXiQ!%$q}qh>J&65RkJNO>m$E@gB%xw`h -zk>hNP1}Q;)>8h~;nYDROtH5ois`sP;u-s5kWqb>um{swfh^McE<%b~vxz9OphJRA-DonIQ#sVg -zAh5KXri$ezXLsk{fW`ryH*9|ZK`atYA#1h@_+SV(Q`VI~-E%=>hF+bnh48v?))lPXtyGOrTDQry~# -zJX8lDVTp3U3l%#z1j{7t9czGju1dK*ql{@;oNNdP+(Y0G&{0Z8M$7$f2%&7JcHUs} -z%^>6Q39hZXl;w&4sW&j9*N^V{(rB{}T*$*cs~d>OqVa0>xZozzCXU)1wy%t88g|C9 -zOp8qWJzN4uXd3dpZrzgfvF9ErD4i5cfqitWxq`OkhA{0HJER1VqyTsMN_2q!)XEik -z=?G~uG)ug-O>M9UWHl8;_l>B-0V!n}sf*`Rcmw4vRuI{pwKMq-8m^ -zbBF*ps(wj-L^0b+pF;Lii!4)66BUUSOQ*xiS4rYI8?G3)qZtwOQlW3#F5bHSpLYKHL;XzmFvKMDO$P6^6@3RCwY1tQp5@}h -z<`HaS33YsKuH)Y$IlLbZc9<4-A~fiy%~`?amm6*VAHHf`s^=tyvFtHxa%mSJ^?XVj -z?PmOmqf_02X?=18R&w1@OyO)0>vp5}ITfSgXEGFp)~_r -z$z}x@uL!-B%uiZ4swL5i#b{)Pgtr0dQUeXb^pbyy>pApMij)L%-g9Ya*b7`2#;ll| -zRIus>d@kLpGdqf;lKTYqBgK#OX`B$?Olw$ROgc28Yy}$d@=bT6J3254c7DCl({{jo -z(_Uia8cFT&MR&jEkg9B8r18<(3c0D~jZ1J;M*s*b06##$zX*47AhzR*Df$PfDfGw8 -zn5F*9AkrrjFv}s8j2bNrbJ5mLifoz%H41?Ot>K+XajOOipfcvnvS!i&x6rPJ*};D& -zB(iS$536pZb%RPsm_8(Nd{U+W`f1%!)AEH;u)*caNMj2ux+bU=gUSK?MY#LPZ$)Kz-NW;?d%L5S#|~g}ER2u4C;Q7I -z?%p3=FV+ng-l2ALiMc=#8muMX=YWBxkx@Va7(}t-;zmOj#;7mAK5$$-8XtGe7nqLX*rroQce&NkhuWuF8y-R13t}~G -zzDwkr!hV*=$KK?_DPM5OlSyl)v!-l52K4`t5H~TzNzeRcA*Nz>ojeB8?0ocab2(o- -zT&B6#`ZtV_y~x0u6@RQ%xIt#%>{ZdIP9VrYbt)-~!kEwuYUz9<`Mjk-6Wo1IWUh -z9i`x{9JPEF8hSc46fcV(ulPrL&pgEPEMZBbbWC0Rt!&g=hH361SHtTLxEdF~#jn04 -z+$&gaa3(E6s>{8t%RnIGvy+Ha&Y7dFHApE%RhtK$MNVCT47NC-`5@H*4~|RY6YMC> -zT;=9Gr)~TGGk@5AF+Vto?vcAWxAf72=@Bo~*4*XZbV4zl@!06~m(*6e6*#$(WFm%W -zMF^d09*Lk8%n~J&XNoXJ@5uvoyepH<;P*WcKCJ|c2GB8TL3hq!7yciBf*Q~a8)d@Q -zGqY+5WlIhjp0U6I4kHts=Eh>FMu}qrKIaNdG6Ad%pg@?`Rw+YHFI!3wtc;6)Hdwco -zd_<>rbenbl)yNB~vLJ06$8%cXmH@+eJfqb4@RLZSg$x*7P#YkoI@OZokVf+`EZjo2 -z)$SYczlkGr83R&q?PQGGe#f3Yax+kyGki)ZT^>6XmsNJ|fO!s1~+Q<>yM=IPj|TqGN|?zdo#y?{&=yQbt`1WpGz -zrR&O!CZwZj)yndUi*%PNW?Ex-Q4)L}t#lB}zFQLs(%v;3D2+_xR~`Gy)`2{Ry_61` -zV@iF+B7-voAYJ;s$+j$6d2|vknveB1p -ziDnxTiYW3ZJIiNP9|yOB#i2hJ!*5`xL4!%Q=V=!V5zE`{($jfHB|m8cqGc;O%uurM -zwU83FZ$0Qtb+jIjw;WFd%oqAsI7l1EVK>YM)>J43g3r~=?pDQ(Jdn!$M(v>A01=NA -z$UV5--J~|3JF)IoH?Wa;kNmF{&2vH1Ewvdhb;VKq4B+0n{TPwk0_1}rU@^$|F7^4l -z)}GLF&(^I^i;Lc9`zG~!S_)K8ii-p?rE0YnUIbfx;?hDCL|W|Huyed$+O&BD`0tsF -zBg_{RXY$}lqHzo2?v@+Eyg)PHRi~I5*7=PRJhm*P$ui-57eG?{RT37L?qfEyYHoJS -z{;<@0=i{*B<>e?f$+y~S5rQ5G_7Thph#zgqNa#w6~=uC00kFi&@EZj-b8jYhIoff3@-kqu%rUd~A7I%o%lbgT@ -z;De&m$OCXqspjN(oy>j8!Wm9|fu|`&npSr;FmxXq11D_^AiXmh93Vb*Ry4iRN!S$6 -zARR -zL`CS~Rf7(8nGYuXVG&qoGE+`!8;t!1#=IdYuL}v`EVtYEm0?x!Zm*17+)F|h!~x#b -z?)s{+M|!snYH&2+e!4usi96DfF?XH_{ED#}3a+K>D2E<;U-E4sWJ<43TL8!%BUM4x -z$Mi=`EG{HenfzM1waHrcEJ(GrP$_0nq4%OjD^_w+^{o%DB*g}Gi>O@oVE8>s^EO!qQX7O274r=QhQ%Q5(OW2!VLA~ymBuZSj-=9iuGa%x -z8_f(C7!PEnt0=VUS{{F5zi+#uLN!kS^O#4#`ni@SJ0ytLAfD*cj7H?Cs<6`187E^Y -zngfFz0vR2cNs*yig4rbI1l<$9_WO4WgaB3zB*sRB>IB{k@jtFY8U1Hd%O7B?k-r$Q -zl{FS0-WGRm@@E?mrx4ym^kvhPLv8u1?Y1x_&t_U^Lx`PI6x%W*ww5F|1}=Ya>jeKj -z<}rGYBzxhfwCE_&paw0IlhF*}_23{0Y9-b9NT0M|9YU9zglIba<26Je}S) -z6Yv-fS{SwF@6;o9jR21|x_Us^H<=d6(ilK*rcLdo~&uo%nk6axrMm*-iYT6=;b8E -zFbv7_E6 -z4e?IlfDj{iA*ml-gKyz)ZW39JdDw5Xf@U+@s+A!MZe-z+X^$GUf%h|B@=XGYP@$4- -z@9Cw%XIy1xhQ3YyY;-~(u<0A{>WDO@48`0d7ul*gYn4^qf6QO@|J?l*>jy##v>r6^e -z+l}t%sPPRvY=$*JJ&xZ}Np`~_HCU*em%rUfxN4>G19m(;kblR2fBY0M4kh3mt(Xk$ -zO^YVDfe%E!n=(G-$er%~o3Of=mBao77c_|8@ubOCVNH;b*f_CKjy6RQd? -zw}PygJ)-X0i7?;qV*S;mp1ElEm_+OXUNer~_zfHHXkx`NSI -zd>tJ{Rpg?NIUctq9$f!%mz1DJH>5|0xN4A53 -zWIiE}+1dsd9+noj1OVqbpKWO#DU}vw@*sz*J+{rFNx2*dXMUnhMAr}SD*uw#GlVB? -zp^f(VnGxNgI&-fS7meQd{y5emt!-FmE6~q`;*ylAKzX1WeIQf8*J!{1L|OgGw?_)S -zMK>y%fcKM~D<r|1rl`D#3O70F#%JqUziKS3QU^dK3J`y>R`rZ5( -zTH^rwxd-m)vWasOX<93f-9aF+)hLjtLzAg`cqs}$pi5O@0}MNNq%w+{llRK-2|E{c -z1uyL+(Er+u!V}L^%gns%1Q|AW)0tS4r{mPU%#C0)9Tjk2nn6s{UUcRZ=uHE^{cfm1 -zeg*8I0=6*ztp;4{6K=;mm^ClpZyaM`q=6?KHJ#jN@FX?5?SXRV(#_$D=tY^`HNp{| -zDW8F~E|3F4ts=l+GBuZlWSC)`!~XJOGAgS(Qy89T>O?C=5I3@hdT#NdGw9sYR?!3D-G$VgGtz8`Z%&}w+h!nkL`gDqB&V;)hRL0O -zM&d_5yDcZcWB@xtGS#=9fv;p)gk{-o&ttkl(J1!^XGOScCYcSiruHZRY`|70YYKHL -z(t3s9q4bW{z2%VoJ@@T0V=$s;X`l(uK*|nGe($O^o=;MI@kt93~UWy -zy}x6Wl<^VN`r&GA7+xi>J$xSeu7*SayIlMCZ&gB7A`$%Aczs`NkwwX9VF5zEHz)+4 -z_k-Bark -zFeS6+&||kP_)#_Kg7gfrenq~Yjn(diBT1g|!e4eL&D{jQ8r1dbB05DhMVZMB|J$v^ -znzZYe5N=H5`hGVkiTM6aV5=swpH|T^9CyRNOC;x-B{Jf6x#Q{)duDC`Q-e}ZKo6`8 -zd8wYzzPSsv1__tdrG_N*?lR!L%&O@^u4%5tB7o37t1w3^ec~i(&W|T%bY0!NDngC+ -zL6_Rs0ohv*eON43c&sD?Nt)Kcdc|A(H%9s&U=T5dWCysSwoIRy4Hxn~0tXn1ynpJ( -zufQfw^0=1jGdeU7zw2BH -z%gZlS;?3ukHlqUk;{5S54TxvWnLX|cav`NkxgVc1#PA5U%<3^_+9xA#1cB7C02EmL -zdz1!w=>V)?kvELHg(c4PQ*lt@1X5>QnL2qUgA-Y1U?K>l9=Rd#SAy&5&^f~;+>td8 -z*fV5IV|L@ALI2+3<~8Hx+_?-2hVKSw3x&MlFyJ>qY$aPs$SyUD+yamaMKr=E?v~8C -z1~rBH`2K9gY+a|w5;<`zDeov3S-@5THY4phPWuV5^F5`Tn1daj?Hnu>?i@##=qRE1{&ax{CGO`j>!2R12SPVG6LeC1qFizKB#*a;r?(>=i46w -z0Aap6miuJw^_%ytI8nYkQCh*F_}|~j(teVWCf3*K9+UPsRiS(Tq2C_JT!}JV4-?~u -zGbB9u22bZ$V}C}jE*VI@)KB5I*m|Iw;}6)Fq)YjXCp-yZ!CBBpAH_vV0-CBFh*7f`T*FXQ5=@zZm7FN5k8n}a?LD~@u7?lL@df~c& -z0R;HdBq)sL0F1E{V0ib{%0eWS;RWYiM(CBd!glsnHC$69HP8m8y}gkhBki~aO_BBQ -z9b}AXAdqavh+>1|Us -z`87?HB&{OUkg4C284w1^hLZ1Jk&{~mt4eg_fO2Ia^FEt67t-U*M@4`9c$MK*{r&ro -zZ)(=8Guv(a20m5E4@ROm02f{w<1$t2D6a7LVRf@Jm|#yqZ!Fzu6!|9f8kADPQ* -z=>OGCcGn4_-zY3!9O)APeeG`d^fx#D8a!>W6hD*@y#bA7`W3&}lBVbX2vNHhXp?j{ -z{wQW;I%xv}iuG|_nlPsy0vGw%_xSOyUqvk`^rfsty~KV8=bPaU4%HSuzUxPiMpY2b -z0MN7 -z{5=J7?mB1R(8aoB_u~6#Q$)f$qu)>Gc-M>5J`;G1JSj;y18CP4eEMv*rh;_;Pe;YHw8S&aRXnR)+7vt=*tyWEiwsQpL+^ygo;qy0G`7ok*gr|PsJH8hdXZu*D2Nf9?lwaHcDLME<3Y>vigbXrEZa7AprIRFO^ -z_OQAHdV@JH6H(>Xarb*MR$9%|$-%+`XVipx6fwsrM_WUb1pExID93Qe>|L3BK -zIISUtsop;_t^m7uQI-x$u~vU!XLQj2Z$BMS$gq@=ZU1RthHqZ6$ -z?CtYkcL*FSx*5o}I3@W(d(r$c#AW7D#33oET|2((xl(M`-;C;IF}msG4(v_vayTc6 -zLUBKQyt6Rvxa4`|w7Bs?a37ZVs#0E6Le5%!yW}5ug-Te%N(IQ?vV;|_yMyL|^QH_| -zhw^$2%^>fb8GvXXw8w0kmGfiZl6BLdeC)trFL)w5VE5HFIl(2iGHNM%7F2kHx+l{{`3wfm3YP#BDdl>GPQDqy)5H -zLvi**r-58mU{cpMToSMKRy0ORMO`2j@VMo+XA(erj1|L|vAALn6_W1Qm|eK`w+lY_ -zerz@P%qvvD38t&twB2>i&Noe%R420FzlqA{pb$vC)C!z?DQ>X{A>L2Dx~CNcPZhe3 -z0NXBt7JV}Nd|<7$d82}kW=o$nU2 -zKqngQcPk=?7Op(S_hbf1mI#e!#tM2_Lf?yf -zLdLD@wa(wt^&8XG(tA}JKAR-uX8O2mSfBgNL|9g|rczF+@=R<>T1?C6jyalPTtcum -zUa4{9BLPPt|D@-ZdM%ridV*^KsUL4;QT1;$-e61K#S#OMub8xwUJ7E^;V+P_Cx0yBmhkFMMq7cf`tgnYcSJ|YQ#}Cd%#mu8 -z(mu(acnW97^EeC_KFo>P-~zO@3L2z@J<+rT>71T|YxRIt0nth3GfGlM#sLB7@BwfZ -zat=v|;tn?tp2-y%m<{c>LeF(}UI3Ps;D<&8)MK=~E6ag^39A~W9~??v1h{ta -zrV6G6{H-oqo;uG4s?j`gyD0Y4$?(bsNo>;K0xhsILtlk{Fd&iYd`tdNqp1z@FhWd!A_VHD=M;~K!={A`E=tZ>js6WOZb7voUW7IPnKhpHd$ -z^PrzYp^bVf!dYCeN6mex*V}`Ka6PdYsU)?zp>%(`I*0scFXQ0l|DVD|5M1V0& -zsKr|6WRt>3yh$cZzs-mox7|sTKi6>eUeQxfgHLuH*WO-$VPGbVLx#Tj`7>9}EMZ>_ -zC}AOC(0u<(wK92D9Tp-#t4x`+31(dp`-+SqBi|x%=XR;4iN|I&7pTHKHfM^>j|1uP -zE*rT>ZF%%C`u#Jpk}^;aN>tH#IP+;emJVJSmV&dCroH7mId=#=PKp}($GrqWKD;DLdvcU^bCrd09SEK~! -zoKM>4Rx397&$wb)CufB -z%CqG<|AMHbLZY6WE`1mDddVzCd*sB6fTnarMZHNST`0>QH7>(n8o)RA41?cVZ>Whv -zxzikX4fruT;J$$P95xckE>aR$8Q_Qz-Z7jzvR>fYZh| -zIr`bcL3f(%{!syzV7ASgAus>-NX({8wzHJh)^bdXHT?2z3APu5!Ar#? -zAdM60@s2t?)?bPx4H$x;{F+G)a?xSOESFrln>tD141F2p<*`Fq$o!pBQ%uulK}`~3 -z%7z{p_eDTwxM9o84J+{LP#dBk3Pk`Hn0et#p_<8R%OVPmYxKyZ5FoRp?ewfI -z2E1eu%7ck0S6F%{&2;3ulc~1?zWKzjFbEkCx9M*b^U4JMtk&Ci#FW%zZrQceKnpp* -zuLG#OH!kDnOLE%+DwaaW9}{-Z^aQfrE+_^%*PjOTx&8$pU~y -z60&9S3^(eE$6_abxecD)sO8?kM{v87f$ohmU9x5&nfH3C}6jBe4i -zT%p%g_l>zv=v|yQsTAv&q*1z2L0Cy%esROJOcPx%gg=^}!w{9@l;j9GenNPt^RCY^ -zfdoi@trcEgsmK*YM}IEzlX5GtM6|;oLL$K1a__&s{UfZa3+?fnfqn?U48vaVlBhss -zfY2S-7O@D?)6NKJTvj^*2Ebx=4fBBG{!YMxAId{)4WVeziny5wX}n5)5II4*|(}gdmwyvJ}>5tofpvSX? -zvV;I_;^2g=QCmTwI^_uDKKyo0x_7Q{Mh)e{&DEGXnsJ!Dyo5ov0e>qhPb3gfCLrRB -z9wbpBbZSOS-tVERTuHo&e)NJ+q`@Z%X^nqOx -z|2AR9xDWt%PAHMTzO;mP@?2R+oAQAoK?YewNgW)mE(ix7qXE^?YHGwL3o -z-T@lhR`Hilg|uPZ5TI3#3bumj#KrI+$<*qVKUBZaAGAz5(v(ccvFw?s$EwNmNI$hXrM>6c>Jd#{3{TUbu6Ix5;?oq@rBmZ~ -z@^`XQ@3Z#0z!+hrOe?03+CEF~ffV~2e5*61P;_tsh*JxF!lSe*e8N*W+heTsM}G+J -z!|i?2IP=I{T3adzfPGVGAz{_%9_77GXSWhL6e<#ThrrtqI7i-F-_}t*VWUSaKFn`u -zW5_J7TBNrmxo|Q|8x+hWN5n4$uIUoJHAGsz*t+!<+emW?fW#7{MYeXaKP1JXODtN1 -znbCkW)~Nf8WnSyPxMzoEcGRZ$QJF&D`dQmr03ka|VpceqH%ESfYm$WYqvoD~CgL98 -z84+BOitCD{SD@~lMNu@W>Z;rqdZkaS);F+oJ`*r2{E?_&RPA~oIT703%BGc*Gbu7g -zJ7-Jb1g1x0SagEP^UkSnlB4iMIGPt~+Ox7u;taM$&Z{1EudITG`@*a!|ESp=p=_ZP -zQ|p)Zwt|!!RwCa#bZ9m1Mk)^)n~emxcuB`d9>ths$mnh>?FO`;-gK`5!H}G4?4M2= -zyHMsO*G>K(uM>2@jM8?@GLU5Zkv_3ru%Kkq+!{JKhB)QUQ33fxceh%HyOv>XPch&s -zfK~0{M)VQFPATEk5nro>s%x+YPvlWJAj(jW--IC9J~V(vz_pI3>=L#RUUR(Kg6-+>p>8dzuK;>8oFg$m0_2OicXlwNX@VeL;cq -zJtXsP^T -zw>vc1jn*f-RH_@a`H3y1ZvsicS;J|0*KNX@+^Q8V2FYSof|GLRAWv@W#qD?SV5Bb0 -zSb=CdHr%M4Q?+p@_`JB11UnI60$#8;rF%ZkDnStgZyiz`iR6IUL%E?TVKy%3-h;PC -z>UTqwmBs9G#kWwcW6^)KwQYW8Y@{)R(sgs%V<;=x0{t?Xe+AqwfL-rSUL(htk?*g) -zVqQt=Xet$kQiHMI!N%1#yTK|HI=@TDAovz^Wnds@x~ -z{1Vv`Utt6Hx1iV{<_d3MFT1EOb}-{UkxMJ+Yy!CB6mNYag}Vu9B7B5qjHET6vYdBW -zvqE6HYoRq6FhgdG2WYvoG9wZZW8A8Q+gz`U@ -z5ZHPBL`xV$n>T{V#64#k=t}8nzKdHcu_v^gpg7%_yTLOE=sSJad~PFJm7&feK<|2~ -zOkjoyctB_mRz?(@L>~$>Lp}|aRvG$EdN|foTQtOu+0bSM*$2AneLqvbGrucXbx-Z$ -zrFUguZ1N+rv!;_&tBF!RkK9ZF>?I$RojGkWAAf_3r$g`PRUu1TBD -z$_5!Hp$#6JjPyoZ{9+E9rT-1$14HuSicsv2%B@{w{=|Abmrc!9dX3G4v#ZFp=(_+2 -zPVP}86A^(ut8~7TzuO|60KbYJ?qmeG#7b|o3BYJ1;2PPoy0%ejxh&Rn3i`zpM2)!v -z01PaE^S;xI!mk^nJM@&nE=$=dIBnT&ldud-prUT|mI_ztC-ZU+^Y33@)zN6v>JTQ9 -z5K_BED{pkb2US|j1C5(xySL`Zej@y5;i75{UuxA)C(J%%vfw0Hgl7s9`C@ck2jiL? -zI(lyaI}t1dvR;fWy^gklQRAqs>>@iE4>ut>ROH@hJ+J(N>o_>)xdD{D2r#%BmkA_1 -z`h*x$%A9Z53~tzz*NzUl!%Dm#w8i%~Eo<>5TA6%Ox6^+N(&I8IU27LG6d2Uy-x=p^ -zyM7~mj-b>gvbX&BZ2Wt1Lp<>DI`F+509Dy^xk?isG!c*aKL;~LRsIYql)n5G9w>i> -zq##K7=I-)6P@KEz<3Gl}|Hs(NU6S#q~~Syt*&ouJKFegBWKmxp?|yMO=ov$z~+?_N*xFzOV$bZ;1bkTA=W98Rqx&`yYEB9~`KV -zd>!3ml6h>Y`UEOKBt-b?={AKS;(x`uo^4+lUDL%$+i7%5cpW -zf(i-OA=Qgc1sL~64rwG?)iT`T*liMvM8m0?hh%q|ZIxX~h)d0myDt=ec|FO7y}M1prfM)Ftik_V!zThAkP)GCJxer`AFfAze38< -zYMK`mEU2f%w+}CvgQsMwPPRrt^#*=(Ie-;J-j$XXr}P9{crgwfV?c$yfBXq9iPt*& -zl$n^gf~@7B0etlWQ-T>mlx0(H5AVF8X;<_hEfYrxR0FiL$Gj!pSdI}E42{0Sdjjc+ -z9QPc{Z?%>dQ95Y?Hi&CBJo#^QrCoY$w#BGbe)qBFtesG5wc$(80CG9{Ei|(Cw~1X; -z^^zag3*@kVN}jGs2s9`~_(X@{`G>`PxJx*&RZ^#|9FcHeIdWj?N3>Trw+YZni71G~ -zd|FKRK)1k6vUR*1OuGEtA0$Za!u#g~q)2GCjC~aKN&B&6GE$CC0Pw%b -zhc|thM^V~b)CM3Cg1r5*90p(h?Z-F7OYh({Bimz>Lt#)__ghn^m!TUJ9K}$O(R9O0v?rCK#^MHUD -zxUNwsAu2&}lOgm_B?H=0b^995!fx%T2_2HD@(AU7&uLd$b07e&ck7B|{~N5m{GXI9 -zYy;xrXs=IM(sp$n9zYMgu+(bl2jZ@^Mh7*hzLS5li-oaIBg)njxYIEw_@R=>g#6i& -z;c!Gyk~li*L6M@eaWouW2`JIPw5RU2QTQE4;qeh-A4J?nQnF+K7&{I^W=|wRWOvd7 -zeY!7J?|w7PRO!d#qzdoX2sC&!!ZI#>K%KNUF&GAMG{}h-fdcf5$n+;5{n_1(I$-w4 -zwkvcMqk|hj-ERY>=5RVU(js76yh!9je2QHr_A|sZPKTNXRk0s -z!l0o;=|k*DJnso^ojjI_FMev1L=ni9RYS`GKWTWVE4bEg3AGO<*s@^$H)IVnDp4=} -zdvAD(-)Jd!@%_VuyI0tsZ#=Fa@ -zj?Mx23`LUj{*E4AvHG|?G8Z0xq9|#8I>Qc*x5?dv1ttamQaxs#ebm2lV66{}^ynkR -z34lIZra&yDYomakF&5wIT2hl$=qio+GG@J}wfA{cZp<6J-ceayz_5khGk$JH@&pDOuUI$2$T?hKtB9i`ittuH`259SC -z2lm%%kO4_v`xSNrRaU#U2!oQ6A3MVjfjy=&OdnZqK&?A;npkwwt_{gXbh~1A0i48Q -zgEGVN`G&$BkSdsGV=AUFG!fQDQUJ4Tsd7AuT;V7wnLOAsdAX*|62oyD7C& -zS4W~&1`j&atgo#J0Llr`VSTMFjOQXXvwga0N+*^gX_t+NjO9NHS5Gdt3Te*efC`SWXcY`5&=xOL!&6JKmaW_#3qt81|L -z#%@&H<<@sA7tc>5RUSp>%hr!f9>7#nHur$G_2qX$4%XukK&GeW_-B+`8A^(cv%@OtDNq#Opj;s}O;@f|OKC>d?-@{>r)tES=V>+ffNYR)KJgrtdLDnuBlITYyTZ^LD+G -zj$Wp}zf4k~73|PnWnH9UtxyQBwWJA7-`0v -zgFfj8&?&ALp)HNmK1ri(eV*kpWVukz<5ZC@;gs#X7_SDz-I%lmAH!%ie3Ya~x69ll -ziAl!vn{QBp3$VW6Ue>FQa*?{va>mBd)`D%C)B8X`-_L|Fl4C>ZGrkHcl9%f^9-oWM -z|Kl_6UmDCiXV*N`$8IrU8?x9aIi%n$4rV}bvvLD=$;%c~dWdrHe=Y`7DaAK#_jebW -zRKB_Rpv`95Q-(@OU9SwP%hKgKkQW6I2WS!AiV^a@!RWV@Ll34^E?(6}KFl#TRt`(Y -zh|k+X*bClz3Ex{)SvaSLo*^ -z9^eZ54~3_nG>CXvLcc)~*Er;_lXx0QL^HEH1dQj`3(Q5Ebd0FnFJ{)rbh^lU%p;Ek$({;2&&UTX&vZLQHgQg(OF}I(3VI31zyJUqAvjy$!jJ5 -zG&hT*8&d~b7uME&<=2CPTS -zMViW5Y6ayObe(MECzWBJ%uiY`)q$&9AABTn(`ns0s7jiZ9KdFqW*Y%#ddalPx(-or -zdPk#n?Th|1yY$5ikq_BsFbF9!l8{@yZrSd^xI%lDaOEgS4omz9hhJ%Ol!2DR)|1(; -z_P>nHWJ>Bv?-BP|Ri|YoLBlHwv$Jr*4uy4ItIo}@rFYEPb`haHlMR%faPRJpo-_SG -zowRhRH4tAby;Aw}c6qZpRyIxZNC_@0BjqNLkp;rLvA#Fp2m#$=zW(BdbdS(H@JJx3 -zOkz_?L5p7v6@c4xNdVGIr%~k=gM8UdF$puh>pd=b5#>_vB~u}P$8j&@l#WfjWK+`! -zvRN-T9Uoq~>+-_sw}ZR|6D|xOojqzk*e>KZNx>;0fPbQSCC;YMZyb}5PuT8Oz&f3*7q8C>;${-~t3I=inQ^a&d7bG% -zu~R>HS7*#`*H-gEuk*0ukwk3q@zDa!HZO{y$-cqBtc_>6AuL})=a|Qhq}j$2sSvNj -zr%|_jmaG~>1bYC4DAGeVX~V9;sNoziu}13G6fqINS8h|-`(k7O3U`iN+%66sKAwTz -zHLDuQMVg~4@#9v|aaIzV(3;1wuIhZ#VqIo2C&xM~w=B{mCUX@#8mD1TVe~*uS`%Dl -ze=q8`_lv2+Fn`iwHZAE30meRQ(jL$bn=1w}3k-r-OwUw8E03|s1P~*mwENVWLwcjR -zx}4U7Z -zG0@N{i%K6tT7=e<$9St+b1zOl!bK5J70L*-UbJpl&ZVcHYFVen>`cC*J@K*|;nu(y -zV8=L7*=Ryo57e}}L5O|*F;;BjiEWn`(CG1qBW4mrmTbrMRpvu6-csTxIpPf-AbF|G;}2c7R?&2gytxC`RK -z{J08>h}A>WUO!=sJq+@}U4&ZM9nU`y7Es^9^ZifJZj -z!6NiNE-*rK$YJSEgb|(OBFb4`0ycBO&q4!?+At*`0^Mu;STw;S8RoS^L8_cUyY`kT -z;&9ji-( -zZA>pg4dIs|M&P>NwcW%$#xR#T=NkK+Y$@v=CRHEy)-ahxaafd~gl#Mx3mYr)7pwn* -zS84z7%SvZO3wNVb&b(B`TzXV04VNU~Zt2M`93 -zrKgpRIGIMLir6BJwh%6JlMswIB(LJbT*EEfp7f_~*Nv12ZKzxNjvSZjVxX*L}SX -zy)$dUEQYWtU(ytBNDX -z*GQJ_4(8!B)N?fJPwDS+3Q=4v`6)dH{QKpE@e)Zk^CZtZ1{mwtust_&k?GwbM<)@B -zEF#GmeO*ouxQ@75xgr_$v>=Rs++9|xdy{{isWn&}m$+!2!P=KloHo*Xj+!nmk`MOb -z0p^e5bP@{^I!zG-G(KJpN=9X$ii95qU`aB9T9N@6U0qdb8w~AC0+^*e+71mXR9g@) -zSFT1l#a#Sx8Me%9zIk$N5HTtz1VaH?*tDQ|$TD-6?^=rM^4i&3awEGJmpD6rFd~sa -zenl*@AMybd!&R;F_?p+}41p|Qk0 -z27ji@^zleD6KS0=TP5dm>Q>Dubp>ztCbKpr6n -zuuENpE_w4H+nzWscUM$N-tr2ExK!>!jaW5}lCo#c$LOupDa#nS+Bkj%egZtj*s -zPu7f0)HIie968*sfqD*9AcsrqW{N{<41jdaC*dfzv>?BbRM4B&QTk@Vxc6ZCqD$)k -z0T{BI)-T;)v#$o~h`ijYHwngFqXc}A2Q_Xj`_Mk79cG~P&GNi2#1yj5nih^yL|29&Y3OxQhow{OQ{hUfz@s%T!#u~Hto -zCr=i-$Ion+t6lm)zKou!?2*$D7cY(S*U~3xdrA@LMn*V&f6Lj-2Y{z$^2^`4IJUnZ -z!%?gz@Dguqy4QyJ_gK=4f9%R@`M8s!K$gd*?#}q1^7pABdPq|`(98~Y@##PqS^OMB -zX^u#X)9M}4P$PWW__MpGQCU`5(Obun)@n*89JgzyYVrNx2DUPuWyUMw#Fb(`bnyo_ -zWGVq}Y~SJ`v_E7jrC?jwL3uF3PAHFaJ?M`gKN#8TooRl@4SG9%g)hdKpN1#nsJ1MC -z88VgT@8DYd9J2*uhjroOAf3Y_=r05pTu^w771qMJ131~#(iAJ#T8SI|KW)<|us3#r -zHP6_j-TL&I5sQH~5+N4ZVm+{Za!fN7dG~Su|C9DFOOoQ;8YnpLx9A7(I2np@TZn4KpOAV9%I6c_ivEg!zuw=R232cf^&77;J#Jap$)DatW025J8QEdsi?xv$f~ubIluj8sl?3;iapjc-iv!; -zV<%Pt04ZC$hroyfNpQbE-SUQhEp&edAo3%W(K`N@Pwx&CYV3|?NwfSi>_9q#-xsrE -zs|?$Wjp78v5Xfx#rgW;G4xB}-9ei^I$zV{^CPBJsg9c;U0yRZLyC(y1j40ODprPAp -zmjcRa+PxheKk*irN^0`I>-lXiTt$)pFu+nfLWRuz5y_A#8j_Ph3vg_YwAZj%O)PduQvmbOB0z#WIM^TJ!SKf0Zf`d -zCx!a>*l8ah+8Ru21KpfC3W{2KKkPRci~PD}+0^jpThwGEJ9+%=*QWBcZpb(hW=nzY -zRTdWpXr(2>gz2H{jo3bny&nMjki!haJWUJ)W#E7SLGpF5xxZRD`=GvXN_5c>VeB_J9ESA2( -zk`?TCFw0$vW@Ns_CL*na?XP--o;Fu^31T2gl8QWwhSqP4h&f4)13Vt67mAx)e?BSAJO2L*Th=8U|(-UFhn{bwayQrbtTU&|0ft$<;1Z)E?ji-8wa -zkOvt7Apq#7*4q{)RT5ires*-ErFS=HUa0qPi6(p{uZF3PWSfTPf)cP4kieYW6G9%- -zg4AnJQ;+FC3J>ya?-O|bjKn*-K81g50>G6mPGJQU`@ydV2R8~UJ)%~Y{95nOWeg0u -z4H9AK9WC%ie`n;HoEjXDqd>qn -zrFC@j6jmF@P;{|=v-Ub*92}cqa!ar1{COmjYHmw+3G0)8k%^ACBgNymfgk!pnA;{L -z*r}zV=4nKQ4df@>>tIA)N0L&VjGs3MicYy(>~oq>fLl37Y-SUBjdaKHVCnqZV4 -zDZ$4GR0pq3)@nUJ@yzMS0~>rNUmTC+_b6!8OcpZ%1UE5Zx5u`DFTkXL`hw{E|B%i{ -z`f86#j7xF_gNC(=KI-eu(;j!|W6oR(Aj<%nKC_MW4mi-Hkt(l-ED%H(E{^FQF)bPz -z`XrAhRj~VNFn+v&d<66`t3sLGiVm8R5=db68T6a1BY4z?|NOh;rvQG$x=B?)BBBt+ -zqFBKV3~gs!lq+<&vKHfn_2{ZoMXt)u2tZf{{RN*G&>n$(9ne?blKVS%qajrx=@lFB -zIGYUegB2CcOa_tIuYl}#?F7GMaj@8?M@Sg7CjzZ`pxY4t) -zGZmwN<3vs4s_TXL@+vK*EJWO*><~<$O1H~&A}qne0sskyq)Z|h8k5dPn?8eEU!b-5 -zTU)3FDClI)HA#EB)+YC5j1gS%H7Q4N`2 -z^O&IH-SHwhOR^;AVF={CszJhuh!QfH-bK68641X-U{M&J20h*Jv=>GakIaxQ!5fRM -zqo2~g{&X4ikx$@yc4z^4VR#jy)5=ok2udKCIS$Rirfid$#a|-N`))5ChR54>+uBu7 -z#A%sSET+(Qs-dNAIrcf^)T8Jozii^g1`@RWLB3UHA&-di+%g=w&>H~OS;1NkCaDDb -zD93}CK7EE*zQrLM3lR`qZ8(=SY -zUxYjqB~S4vHZ+gQ?>h30nt~h%Ur9R-xsutm1ztpdbe1)?nzG4H25v)YrgMjonUj6O -zP@M9s6tS-M9zz)MOd#2vL$Q4LN&aN*iHz|@5inPFvh_|+f-1U -zAwyXXH;P>JdmF=&N(2Qy`ujH%4GjmH1vf+9!DrL3x$|9?rf^NO+6r27-jP#yuv1io -z!ggO@=&B6a8Moi{yiW#t*iRBeIY+n$dM?){?nhXIIJ>c;*fPzX%fA>2>Hyvp$Lhp5 -zsz3-uig1?744zt6! -zdx%9;W|7(1k=O_%1KAl-vADTL$6Bo;{J@wPMi$ZQMFkW_8LnjkUB@N}FOMAUp%;~^ -zG}Q=bF)5Mz?}n8hX}1rux9_0|gZ -z6n==ORaOF0YTGyOZw33rFc%-s{xDipMg}jxx|JtdkNy2kOm32c7M4TyK{X~4|B4=W -z?62H>XoYaqp$Ts8pB^JPx{;ooxMfh)PK8NL&TGZx?Rr&hQDWBVw)Kp|uSSQ7RnV;;819hXzxj+ -zsYgv3Y~oA>cfCfS2OcX!0iv0ebPflf^yD=z8u$i>WOwODCwSE`--5y}zulM*>bN$m -zFDf{j{xHzSDm>jO4XYj3qk>?D$4a}a-i;|?zqd%+CJG4A(iWze*oF*9 -z*^7z7_R;b~)2L!no2-^3)R|ZQ&3y0cufKBZa7*kyhefOSyq5+`nt9p52I73 -zs%ikn@AsVGlwt9VQ<1qFl@3~bPLyk$0!aZ-FQ_uKD49<+H|LF%6moF42czT3Yl&_t -z%c;5YFt)-QsFxo7jVxkLt(6k{UW-5!G-H=He!%6+uZ8Q*%hdd_vm<^Ze%F$XoV}7e+Xj@QrGsLZx1atB!D{{$< -z+JI;_V2N5nSwBGD@~n{Br7iR{T}~doV3S@kQ@PFuNw>WnHIxVjh(129z*=xx>8ZYy -zO@@r`z-(B1a=~_7Y32;dmW*z8v#hhdLmqN0OW6SHE#_HKMN&y#ve3EYMvawKHoaiP -z%HC%T$_hMEDhp8HH7~{-CcL({&IvIU+}@{qMuXUk%OtSYHYseD`pn6NDmga3%+sdj -z(Q>@&*nQ63lAD-H_dL?<26VZ{Y3m;lnJ5lrHV=yc~cj0QT2YRFg -zF;2^1fC>DVd51CHS(PGcJ(Cy3Tt-Xtvs4`Uo3irj8b%NEZ0u&bSQc;{Yb`As{pY%j%J?i%;`3L -ze13pcvTfu<{Gd -zW{0gKfs$FGk=qO~*ff(c;kv_)x?mH+2mP>x>S5al3(Z6nKitB&+;2A&I>L%>QolY_EU7l-)c8z;ITR420YIOPEDhP22=l?hr~ -zBveqg`2WX+CY%ww!5dZTtluz2K99Le&=%ea5Fd`t=%z^O=n1rEt=bXVDXA6Y*gGr- -z+M%)qK7K+cTiNx3%t=Q!v$zkU22q8`3ui>>Jb44Q>rrHxL7*9{4e{&;kiuzW6l)v( -zsW*+9(jFbbckjTErRgtrRc|z?ixQTdm<~4YWC)xjfbS+;6Y;g=>jVn|Eo21|Y -z%GksrkK($-`$cPcmuy$nl$DywXR-aOeu&%d0B5km>d$705A$@eh7ed&Bv5*L+d%qV -ze(K?#(l13GB9nUxRXpE3mV8X*O>7(1D`G?Py8IlD6i#=G&r!IVd8G5JJbc&r~9?C~{s;q)?zK -zA}xrWdJNzq#A!ZidWQk*c0s -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 -z3(RFa6jV2(SRjLrzPw9DH5*!%B -zmk0V{Uy@mmDi~0u!h%2Qt(Vy3qjmb#cH)e!n2?WdO@8BMp^4$tZ;#bePaBn<_Ax0V -zP#acMRhRhGkA2fTD&3rzjPKt|7KHbAm+CGa&*$_mVT&i~0EJdG2;e~O8W_kjIc(oI -zO=V&@_{OSv03p7olGFL{_gIpaau_>{Clr9p(b~2$K~$o88)&m5*=N-V -zZmT8}0g+7e=*gt^4N06#y8_yj3lU0VzmIcnx<53hdX$*psJ02noK58;^==&z3AnW5 -z{XtJBl9y%Ap7#A~2j8r`9Yy#wk`J-i4%=L9_bRK`D%#JLEH+Ta_806-t5e$CjM~vy -z0RmFKz6L1Ea=pq_%gt&a&~3w{+LZl87I?|m*NO${Pf&>tsHZJMBf+lIb5Y?9U=Mwf -zq1~%vQhW@B?(8#D-PMOd3-PpB7y>9@+E*w7H|~YgfW#Sjvt-1`UBs!&71Jpo!I#Xz -z3O=mXn0+_yr_`>UGAK*qsg@WMIJzncO^$I{&4h-b7|7;AQ%5VD%zI6dab#Po(`_dM -ze_D-3sX*e3mB2qySCi{vV-bo=-+64_c~0<~~YSR?W`) -z${o{I8ool?EN^+W79(r;;9^B?xG1s^_vn!g3DWRX{bxz^I7*Fb(eM7*9Jy)* -z8GzFJ;JVIa5&P6%p6;7{SaP&l4)%<0>ruhSJSKI<9$_U2+{L>>*3|F1lU{ -zfluuVU?a_$Xu-N_QcIB9Qhol+?fLI=yczP}QtBmtqjJdp4#jupnE&4VZ^g$?Zyfw7 -znh-WeijgDjDcpWvlkBP-nx!}Utcq@z_8EQUh=|Tz-u3lKMp!8X5VGem-@`Xe@l~`S -z<)2~WoYT5M(v%_fJ-MMT-F%C(+jJ4SZ4?w+vAE)$>o!6_!A?XEI@!9~EsUd;@01@P -zk)G*jxcK+9K6rZUVABS=&2go5p+!g&anetMMrMv|^-;MdFKPa?Nga-Ss89!Xx0^7F -zCG(!KNou75&}S`>YcK^O+xC0WJ1O@9IPOkY@wq%Zu@WhN`|R_xwrT0 -z@yjo<;hF9tQ^Q}s^w-DBE8?zu-34>!Zl6&p)@X*fz76^d=&TDZ^~=lG9&)J@lm<71 -zd@Q=H>d}o})gA}r+)c+dT8ZxDoi+;Mftu~91IbEFTayf3a;SOsUwh~08{@c`RrKOD -z&MZ+pjLq^BH+CpryS1cOt=geRUZ+Ns5IEP29P{T#vwXl$2~as?P>%_jlsAc^qa~5>9FEL^Ll$Cn53PoZ#{7IK^qQ -zHerp$gTFD;Bv~nBXrgFQKcV86Ss4b+RIys(#K2k--!|mvVDoQ9B(kp2@qYOwETXfWJIhpD7kgK2U2eYmmHvve1Qohtw89>C -zq~ISORuMD;UewyNFFS7&kH)I*c4d;bWaVzR$&?X0?dKbaKu|&-?iQxy4F_<{+IkwA -z02)Ni9!Uj+8d&^@e^58VF#q@=HD_o&TJ6Tg@lanZ>8}y}q!0Zjwt>%4vrpzHeEe|$ -zL1}Q7#;D91zohe757Z#u&&3j4{ox&bKo+G -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 -zoZDJRdTr%p=rs -zA+WYUjG;?u{azYc>vyvT*1yV2{`LB;zY2x2{*&It>ZXhOq+>0jD*aj-eTlV64y1S? -zGQeJ%9xoS#Eyv|el=(#RseTkpBlXYs@)>KPK*2Zonp#r+*!RVJ@iWTT6xl&DACZmi~#OwB5<^|OmiE;MZ0gq -znd6_8M$vo5 -zb)-c}K9lLJd|3Pp#v+rbbk|XFU|$X|+3#ZbKfYN!7>zCTyXEu5y1v{7a$TX!7GFl} -zOZ4NH_r^@dwv~ax2#BlHcFy67%-qI@4}%@xqh~Pa0y;dGgzW&-%aJ^F@IGyJK1tUb -z(b0ML!ykdS~v(P+JHABtK7GipNDn-P^rpIcSdCdyEYT%Z*=$XPEa~1>l->w%Xa|S3ov74?00&v5mZWthhh_L`uePlaM|)jI>uz_`4NcdbcH$u4GsiJ@MRHVHF0~~m -zH+;%u$d}e@jOsFAXM{G?x7vIk8(DlFIKPS)$j2IBrrkNZTW)IiUyc*(4B>(#?Y#ta -z1Zxm^cA$bQkNap&1rz$!LwN%IQ<(*3V^VzC0kJ)`k%}7JGiqZRxO}w;j}_n`j9&C* -zcfGhYyc~=Sn(ID+22e8`%=P=Pn}Zo3kGpW -zr(PuC%Q8{KM_*0xgu?+Z8GW%D8Q(9-S31gHo~`^MtxxXj)outG5v$hzCM6t=aL@6g -zD}H({n{#)>k(U0izkkY_kwdb~^)N1gez@VeZUP>wUy~0mg>B4OQG8IM3DP8cgpRbejh4w_+?=*kn3Yu{siiH6L>U -zZ9YT@E`2)q^R)zqMt5rx*&p%I`_ef&xc8HULs-%HtupUeQ0N0jK+cl!&^C>}6vW5w -z`bQ8lIzbNG@0=sizl#lizg@ds?|+r00({0_Po;Rj|MSuscX#Lq*|i#6hI~hIv{=%h -z98S83@fdU6FB?yNTE6$do^J6VI?}QEE>{3dOi_7S9?R!5Op;sKwxDCEj}dMlZcy<$yf(0|WsGvy{1}&V|iBC$W>*+2fhCKrS;A@`udSx*jG^|_f_W2 -zzc?Zzi%5_RWb|$=e_z}B_XRTGYyVk%eP0={oY(m2Cf93K08f$(ILGbqml=%WUl9zb)w90O3NJT^+CNf~~DCq+Bd -zbM1f^=&uFnI2jc8GVpo={odtx5#xG~jH|Vj&kMdoZ^yqo%cW|8DkC -zCWjPY>4HGz0iqT1`(ue~ULy`a4;q^;=n5DR<%)TNO|_Aa@B)N_0@9wb;Y#KJdzk6m|UOVSPOCsC-O -zc_5IG=oR88c(CM>Cz{DDrK@+UI51bU*R*xfg4Zgme)O}g19D!v>SGE5rv?o5ZjbM&QH#hb?}oHKkDyxXJKCw -zVHxf5>NwLKD3Y%oMbZS4>lS{uD;PSTLeJmi%Q5}Zq7`h4@W2p=L8%W>pPG$rPaFH( -zl#>ONKXX&B5TU#)NipYC3&Rphs+XAnJlgB8q@Wp9FYiOQES~IIV+-Ojqgp5;ni77= -zoDS}^GLTssLy_MGjv@2RC!lR+Eh@m_gJ~R&YU&>nn_LLnfiuOz}9y@c)0 -zVMbJ9%%qzFF%^(g3CQxoj^vuO9b@494Uz&h0iVxc*H}41z^aYQ-Va14$YC4 -zdLGHZ>XLy2v-pZG;a4&^zarQFr_|g7@S(8^!COH>p#k^xh3!V)5Vi$<4s-IHI8&Cu -z2HVz+);^7M#>nPwqii!62^^IiiV+{k37ZnKm<(~xTRusC46p#DIJNVNUmU_X0HR&{ -z$oZ?Y2(m(ZWpCjer2rPd@D8iJP2U;au6X! -zhVi-zAd={_f_`-e0<6wJ#2PZ1N!4BMv}M1g%M^|P(`e!TLP!984Q9~GPY5&_zrq)} -zJ^>5)e8F)WL5npPh;5`B_{NJREW^z)GI3x&m1Nh(fV^ny$G-66w81LB+)zXFT^;NB -zazPY?01UsX{Atzt%+wqiyy!8P(^)xs*0WGY`$?kfI^!f~sxvbf3Gft~n}nf;4r0+9z0kdz2-=R6nJ?~i(zfvps_MOipm5sd?j -z@jrGYN%+LBNl#Dra;0pfOH0k+i{-Gmk;x;9XWovsB?s{p9BvJ?PfmIkGN$IZmbMWC -zx4dwCf-!V9mH~Zg#03CsS1t<7>z-JYXy|`j#>1TVy_>F2h6V>&^u?WySaz39L#ur8 -zFQQK-YIU?BiaW(+UUne^zefBGiCov>dhBe1{&Ahr -z`#e{`JMEzMUM3%8W7zAj!#j6-H`k@Hd2*|!;-V0Q2jUY~k>dng@w)2!v^k2YVhzdG -z-Bk#q(HHyUYHpJl4&y^Ou>d|>zOMs~mPgf?1bK&|!y%aR*ANzvm*i8$5wO&J&ev#|xvLs4x7E`2*r -zJf6GkPgEIScVESbT`xbj&Iokrc^qwWyr8bTj%y44R3qdxpbN+U@d^03ug@A{zWV^g -zv3214^q2dgeZ(z$FB_;s6vuI=cM0mvte^7N$wKk^EtrXHqLnL$x%uYp<()rJzb!X% -z;jDbQB7K>`P7{PJISY&@^!oht%4oyCm_rQ-V@CX4@=%;#hY+EvNrA1Y9BHpv~c)45JVDyFQ2M8*Is3-s}+7D*HXc -ziTP1!E_O1pV%=YZB4nEO2QR*6$%N>Z} -zIlgE;sno!-P0#ZMHy|xG#*2*I9J5&;6vx>HR`>YREyDze!Tqvo818&~b>bL3U9F<) -z(xC^|m0G+wk|(pw<3-UpFk+1tok&*u)y+Z=+jx!tePSs;*pH~7tV%PkqRA*4xBy<% -zCXmo*_Fo4um?}<+`vS}nmx3hpPpA_s0f##j5JSRLWbQY)*20lF)A+YT(B<)c3H?~S -zigtYmGeAqNw-b1vTBxAWjwyXgDl(s{Y`t4ZBa_>E8zw?SL(&MB&NN_UKH -zzMPOj9ZROzs3bP`f#kt~{-Ab6Vf-0p&R?YS9zmmck71Rk8psfq*>) -zk5+4%9-oy0;;)q^%{C{2$)S(4lD@jxerfA9g!vfTpw}c%Tfg!6R{~W-nB_EjFn6na8JH(QUbX9HvM?xWft`pk<>M?czB>i55NyFc7rA7L9Uou+ZQN2Se*4|^r_+&Tg4zus=v -z!jK2p#bjm;e{!qkMz-}2mUFHr=WYl~$2{o3+O4Egy*ExQ4TSOw5B~Q8FQTT^F?roy -zLT{?Mm&&SV$a5;GF889yl=k%_=ekk+s$xud9Y7>zgb?TG*Bp9o4>DD>tU%eCU`&IF -zfYdB`|MhNAX5d9$SWP7YV~^ne~K95?mLCNoU44wKnF1XaNuH5)CZO+1LsOn{4Ix?{uA| -zSGpcDkZRjP%a<L*?fD_3SX$<3n&rB~Dc4ZCb-15iE%I&hsu5L{2j+xB9|Mg9u -zphmul*=}9&OY))n+}-dNREvdK5kOAQWRq`O+u8mE2K0iEll=62;z5xvBA-@PEW9V? -zDxx=8@Hb#BBV!XcV8D_I-S}SXjhJc5emdR4G?n-QZd`f=_l>Zsu>yGoGf-{KCTpr= -zv1Bu(Jx^t0C02`jOlM~d9b_a2Rc%2W)wI -zo}^&+`)&2ye+?odkqVfEhS@NT7n4i|y&5=awzna5`mu9u`EHgH-LWi6IRr7#q$N%= -zVy2ndc3~F+Uv1*`Wa^dO>AGeYkeeAvIIf`3d1FfFqTHcZSivqPsVa9`EAp4#(4BpV -z`N=mbePJpX2N6^I!}wJA?jK3auhfJB$jdoa$j7pa>0IzwiJi0b_&lnmn4Q -zggpFe)8dK?z*X^>L4_cQ*prascsxTlUNB=w%F;uOZnzF0@m_N5QxcRHz>n2fmuR1{!Nz7htsY)3 -z*6bBYG|48KzSw9r;>V>wX>TJ-J|T-wbFSrzk={3Mis5v|n5tD4L^2Me2aN0UX-vmV -ztbkcTtX3;9jzCj_{c6?5q#AGJC`FXQ(ZdfNEzIqa3V7o}+pcBO>nc8+wUB`3yN{px -zO2`#Jsk`k)yh>y<_Ji(#On&f4F-{CntlWH9!}fh6i&k_9Grbl0WI@rtiDH%${PC0; -ztnv6VHmCp$16tXBJh}q{6hNp4IhXvk$RKSaW)*y}d#K~utW -zu$#Rd8-%Sg|80ceFUn3L^OlM);JmZuq7Zv -z<5y&&INSIr(NzVLNX(IOltpzCo)KqGr7i70y4D -z+T*@vUeiZ>@TP37Ru}uN)9^M -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 -z7m#!^7?o)n -z=k5q^U+43;qa_dDocup;VBfT361B1XKvwT|m|bAd|z5 -zOyteojSG*q?s)@n2Ue*#Ob@jGh+Ql+WqYbXA!FCGSt6=t{E|5vm~qqAI#BvitQ+ym -zWMv|r8D&)o?k!0ehYIe$IWF>Hm1`@9p6+H#YB7gS>c}2f%W(Bp8Kzk`Jwjk&CSiSS -zzq`|sHvtq7dT_B}+hfrjvO0S(kV%C0QHv92XnKu|AcQp2{L2S&OVBu*kB8}GT6rW% -z;f&Kme93D)-0v?ofzno?MFXw6HJ&pFTE -z@Gyy6;&*Kz|7opWWk>X6iwYg9K3PjH-bRznZt1qr -zq@7jRt$vV}lIXIwPO%q@@~9MZ9ZH}`m6aXJ9QA2f3C~YBipX>bJ@4d@I!uVp&(~RUcNp`R%u8^Y!#d)EOqm(K1^7V!wOJ7 -zMIC*T6#{akZ6uSA*Hp(e0j|@MB%0>U?`-+C?CR4cM=@Su2!rlwFi9c~H#t+4CFGHo -zB(=GneuC2vh@lml{Z48eRr0iYzOXbAM~cH_g|fZd+mMP?s!+KyaLdH#D54lU0NIFn -zJpq5D1BWM_706Ne=C^d4|D3RLqCJM=|%bj))y3$AYE|bUeAF!=%-~;KLet*aT?= -z__c~L!7mNOug{>tC~ivuy5{?jHcnVDhnA=cRs0vh`g5GkzXGE5+ZBkb_l7+%R1D3L*aRl6#i@EUG^3RP67CJQ#It -zzXCbm+591AdcV6T$pmdCKq6&#h8+3tfyjfBJuvtpLU=&S)>_>4q;+{5Z&e`YYXpKM -zh_Lz2Yj1olb3H0p+82VLy%D;Sj8T+Lh@Tv}Wx7auM5JcC6+~BSjAEQrpm&eEs3~RO -z*);6#l5N&Dt6gtdMuw!?=u?isV6SsZV$)@Y8ikQ2iA*RZt;HS+L+I1z{`k6w`|5A^ -zNZ$wI`pijh^2A3ASq9SRQCmA<+$=|hQe?FN$qqRhE>@?8DjBlJvWR&t#Xn9F+zMrGoJ6hK2Y(eO)~X<|0z>~S_)JjT5Y_P56KiW_Iu;UyJh-DELN*+ -zu7I_2L)E7>o-l2zf(MC?o)&0B&bLBJNFlXaLL9-h^4^NEGf9=zXp^Y-Tu7>Fgtx4` -z5Eu$>ozx#iQV%5zr8;Oma8%QMsCUYtE`5%cBc9$`3yv8vE<*{H>T(NAarJW97ql|f -zMwh@1N!HYTs&1kE?z-@_iYGA6Y-vK`!kO#bU*?zjij -z^eEFh)EHuK8L$=5TlE^}l)O6`7cP>I)smkFW7h>dE!z2!Ufs-maT@%|YKKfgG(u}y -zWnAX|kh*tZZh -z%*Q1YBsGd0I9X`x4P`CjCVl)spCbNZgO(hb8)M|mR)6M@iZn3{)eS!`RpH`JL=&=s -z@Ro29$c%+W$8wYQqvIXgMBNQu~LCZOXRl;+wA9f+%5cq1oeh$%O>?( -z-5C@g@f;Lh%-woQ=_~uP^DM>ACd7_uCb_4}xuRcF8#@B<2ZfDRgg8nr2%BCjc^B7C -z?6~)2uwWR837f}!?%DKeG~Vt|q4MwHqxp&tG6SAi -zH)5EJ%O?p>tuLtiKOeK$HU(@QtS&aWIV_H6 -zG11O!LoPZ}_V=Q6sBmomH+3}2vG*v8Af4?3D88%?ento)MJMmkBc}ncFF9A}RD;R% -zo1Ag1ewc;W61g(q4do{HcuE5#_cX`#86WiOOb;`RL*u#r2tCXywnzW*0~6E-w6`O$ -zfwl|8uD9~7bZ+GGG1?7vwf*?(vQ0Rz-?8ZkJ|gWRqo*k%_FUd{#shtEx*q5mhxm9b -zp*zUn#9QO~PmRa^qJL;vomMLzCS}&vAg)$=NtoRw`}5M03X^NXf~L1$YZmy}=O6(d -zS`4I6$#Qf$`sOA(;jKFD&l{QcD>yjTBYiq_mn#j=bTTMc_v^`1^LywFtDnZZs9SPG -znZ3u3R}qeg9h3FZ3u&SyWAs@^6C^7`tRda6rNA}EJIaE$zTL4M(618jPTp|1bHe?y -zGhqFZH|Ij0zc_4~W?&7QvN0&io5D)FU$P`qWif=uHfdMrtSYx7jfi;PF8S&xDZsCv -zcUnj4PLU8J9iCVLq*6rjei4L+bHf1`H;d6EQ{R -zgk9XA3y)Po*iUD4xTqVQy|kC|{fpyWufl{T&;}Lkd=3WE$?Ty(MLMYZ{hk*1cVxUd -z;ezCaQA&`BIN&8&q7s%}0+#GnmPIW8NU=0r$prs(4?%tD8tr15z5z`!B>V2|h*k>u -zDS<6v(zEEYKz4=Zn7`vjt=VzQ_y*hW_xy=UT7-Z<5c|?ru9Qa_+|6QW_prH`Hfk1` -z4bWWz9^So$&en{VF6_+#Uqjy@i4nPo7@F~=@IiW

68&CWnSJ%&v4#D)kpXE}9RD -zXQHx^h!`795(& -z@xKZiCFh}QZfI2-ioE;&!tav`6ss*~5wwJ%a(ysf$<;k&9#FXgb%GTtZ;pxHG&iHN -zd+fM)^Vk8<00W8Q=hFcA#eDGdjg=|tV|d_5=(x0=?h^B2lnpM2V*?k3 -z8h}@{xtl;lqh>jZ9>~N)z!iOzZ?K>R6?^Fz?RZiLoP)2)v+9y^Be8JjY*tY?12CNL@Pp8FFW)}y -z{MO;^kdTifmXlk%PjWp*_c>W*I;|^PnB26$U5q%Y{LZ~}$RwThh`@`)^#kgEW)A4_ -z+Pi*AYI;+kfTYuHC;Iyx@t(U@BGw}?*me!)l3?LC!x9{!><1Lu<9v{T#?Ck -z6V6);Sm=Z+oYrQOi<~$hd -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 -zJ(BE&pVFeaM1vZ%Oiso)gx7eu9dTo -z?<5;tcW%#Pi~}j_PbY|wYh -zo(fXNF*MxCWoQ6`VNnhl`^gBXZt{+-labcl(xbLOOopTatd0Pc=+f*>YV&k@+sx2o -zJZWLn^1oA$*fj!Z*68X1Vc%q0Bu}5zDORMID*)`9hqndgPqZCK^ZDP)S@d<&gwn>f -zI0}iMIaR)h?h+`#C~;~J;ERroakoo5?_A)qKHRf70*An)N(~hZV)BU{V6YVI?rOZi -zI-ePlQf&jW=GeeYaWNOTUW)7B>Tp8_K*5xX%6YP;Ni#Piq0$l3Zp$TRc2Y_JkY -zX457T-&6BL2+aBooG{V|13DbZI6xD?(wT!lq#BmC73oKZz72jp_=T4wlqB=7Ln{iq -z_Ao@L5uaV1D$(HED>W|uL@4D?RD=Q;k*ql+oj%_27v3aLiedBJ<3K(Fx}=?O_0juo -zf+a<;06K$k-R?4z)}G9DUC~@>;TC1o8ZOecE1;q^`!KwpgRHgq3^h6jNnwI+XW1l! -zJV6C-8AKFyP#j=X#0d6tM^#OJ9D3vs)Ph^!GE1NVdKhYI(vCF2y84`g_8EQkXuW0N -zc5cd{B?(3hz(XTw!dXl%Z-=^ytR0|GL2fqq64YuKxeiL8Aeo0M%&!oU@z_!NlZJSw -za6pK0y^!CJuEDqPH}{Jy$2{yeT0yg!ZPm(X1vj$r$h1ef+Q9o6FZm_`MW|58w)gbX -z;4`j1khBbpBY+#+M){nLY-lIk-9raAcSwXe_o#1yJigbl$jP9ao9W8d+f55TwCKyQ -zH~-)p_?vU4N^O*~!rgk_aur5JJAY)W{CC~3q&(0Nyw?4FcBl%>OJA(tQ0^%g3U_b&!Hzi&9SoH3(3&@&kJYcEr_upWqpx+PNUr`}? -z!l*#2)L40~Cg~fDbb#8Hu8AFyq52Ts4L}&w2l$d#ZjaEvxwQ2r#Ydh@>UAb1sGUc5 -zG}rhB9yTK!pftyCsXDvikQyvh&dcBKBwV%V_yIef9>~ArzdwEoE{8I7j#gKOPNzi^ -z+&~Q?-%Tl@a^y~T|4q1F%*tVZf(sf%?|9N=t8ghuNNk+gC`ZR4Xg`!w0H}Hg>3o`4 -zF54|OhN4&`g~+H_ -z`2)+`u2k$+!eJknJWBdK-ky%=6)c(Wa7Y~CB -znmwW#+=*P@?_vnnq^Y@-_n1Ti1AjA)-nbAO?`V$2N8^zd8xp=tytrl?K-&~3WeK-0>?;}$JnDO1&Ay& -z?|oVf$9NM#Fdd)VK{q5&_i+Rwmnn<9O7dPC4M2yMiX7vBC7nzg94@hQ&p=drK -zn%VFMZyuHwHwpjp$K$40xj -zai4E{#C8sQxUWJo{79w0v!qatIMAxbYO{cbY&bA%AeDtmfA&qu2tWM(G}a28-!>q} -z$Cd>r8K#5N#t9A%^B#@sY4=}lL-jxnd&$^70xgBrTTqdya+^a)i6#EroG=cV$5UGg -z1vvmMYhO9#u0^1ui8pYx+N;k8So(_O?3*d -zp=S{w@SLa`-!{(iq4OJv7!Pf%g!O)FNPKS6`|W{uhDT9pSQwKW1Bu5_3~`mX)QThH -z!(3|21IgxXq<2a(n|{{`hC4&Xqsk0+l!r8hKZ -z8fcE(OJPA%h^)@~S0sexiu#z6+(UCTdn4MTg44CSM1oFYDO3?i4zse8M9!&xHWG)|Gib5dhQi0e28_yl7qN3(JzOsSB@ObpA@aq3>?_Ar``3TQCRAXaKGI&%v2rUCGNH!LB) -z0vAzXTo@o%W3TlI4`d$9uop-;4!1D=z!N^3PVO^!k{aFiKoNB5@o=5=qAc(l>weP4o|dtqQRo^*44Od#=^+Knm#b>q*}9x -zV*Jga`fhayAz7O}H~!EWbna=Z=z&P@LTb(#!8XJ<=hE$MGg3POCK+3jGg)NARZonSh6g_vTV2KG2NhOlpKT;B-~4r%m!LhdlXnUfUlD^g_0F% -z$U+=ZI!f!_(#igwyLp*i7=g4j(1d3oWe2LichwrtCn>)8qy-6fBhDNH!&*uBxZ9N8 -z-!V$|_y}tKaN#x#uk9rHML(|SY`{&@=m>C`YybYON?1!IfK*;w7 -zH39T~5T-uH?4NgA&p;~rJn}4@YCv-;VyhUf*ekD)70YsG-Dz`&D8cpl$pJwjBjE}g -z1Rr@t0K8=O9EI$*1wX1LU64*9)~`tYv$5Kp@F~ejUii!Iq`8~mVuR*hy+x;xr>Ho& -z;eWeTTa$ME5=M@Ryx{K!FcIIs37FMH_R}glhC^`pcZuX@vqVM+FZW?RV$akLpmI=d -z3h05AfiTr6+BbLM-XP(!y40qGj$TH@msvGk$mPwoSOgH-XBFmXRZyHS&8hOlqOPl( -zS4F7NROnJuJ1~9gp%06N4Ud&%AW732V6b?L|HerF12`h4kn8|gl$q%>v*AL%N8ngP -zQ38;9^eZrrlRU1a5RHydCTv|JKoe2Wh*<|Q%#3CDRE|Q5v)BShg{31}f8lmid=dd3vcjcTK?lt0fWZTvUlF?f3 -z$nQEA#q#n?MS1gi<<+PF$~b@gOatO%bCQp{g);sz+`U{FOj_I`q?U -zHFspq19}Y^)9~GRX#Bso5PHohI(M#!g5kRX@IrxbI3oB>a9qh&5;jatD7S#ALOqRe -zkGmz4vO!IuRK7o3Fgp%B}LTOmGFelHmvVBR`%_y`xakuOlfoBRL@cSx|^rpoY445$+H7 -zbiVx|un^|EW4TY(biaAuiWB9#6IB)*mH+*nEbS*5X<~hy?lEcSQx&@RANuWq%#|p^ -z^)NBOIAg|>Z}4=EHTGxZLX&~iOZ^n`i>(LzIsSl+NxGEJc*2tqnw$mQ^-)};L?pj? -zS`?PFCyPmcm*nKe*kZK$YejTQHD|Ogbu&v@ay4q~fmZaqtO=?e8S3Tyj8+s2mms!K -zak>it;|(J@Q*{Z1TDqV}ToU*YP^M_n?piXe>6h>yg+e0{)X~nT9U{CZGU{q1Ou3}k -zYI-=ZUlvAhccEVnhy<^+w#PA*|1_R$bv^12fGwhENK*H>)B!+dOMTOZB}=}FXJNI` -z)|%CC-K}B+)fy!Afjh>@4QLR9W^d_7$OPKRdlM)9dsIE(Mka04B~A_oD6%UHHJ)y? -z4#m}d_)mSkA6|SjPcwD9maw(QY`wtmfBo~1nQqZKaACCz{SjGexfIhgVWb_gfKf>R -zuNSThC_;crO@hLB5I`wA0i1VVtwKby8eV|lWrSXND|BdYRm0^)QVwls+uIxIG187( -z&}>=%-a*EQ1_BFbjHo-PZTU%|DKjdwcxl8tX2EyUDpnjW4z-6x9qWU$y(4+t-5R65 -z|52b2SU8c6!G_;8{JF;zx17%Bv2$=N0NPD>a~^=A|GpvBqWIpl3&wA$=51w4Vn5anE_#t#3=dx6*;+8umVL#4k#BHGBLD?b74i!gjMv%k5?I9 -z)!)DW_@-vfI{S{|~bW*`OTOK_uhf&U<+xubUlwa@fg@}9q -z{>a@bU!(sLKgb4zfy#>09`QW;Ry8||FKSU4Y( -zRSbP;1ottT4_$3P3gqGV^|Cnd6%^)Uj^&%ieNCUNs4LC@&nLZ$_n+xQ1MjKl%gsHO -zCSBlN1D16qTVR-^^a>fthpo9qEzn`Vk9N-m5A37;8dbs#U^;}RNlZg0o=<14ne5wt -zF&0cFs{Lu_Kk9z7pWW|idwhJ@33x)W!H#7HyiC$e4`<9OCs=6zVI<_r7}Y+>_`m1n -z|B=bQhW=mOWOtn)`i;W!#gRS%Fxl>QPk(a{uz}VVOYuV)(;M(yreE=kEoplGj}Wzi -zfi_8JS)JyDlkir=n;ZSYi1@vWFDMUq9pyFEfqnk(XfCsvjTU?S(emr0b2J -zLOBuY$KO*R=dN@14PC5Db}znP7ymn*A3s2} -zp=pFnhG{MIQ2twG1 -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 -z)*F_haPle(+Omj3I~zSRDa6PCpV;u; -zcY22?Jwv(oQ^O^QueWjLzytcg_u#$+4&WIh{m-C>q{ouH6X}w1cMi<)Jyxzd1?Pqj -zP)0p#w*fC%MD<`I$`zL0NsAr%?quq%z;{0JD-2BrNN)NYb-gk{Kdbfj9Wf;}nOk-( -zHPAv1Fl_sY?RMnA(8^=i{3J0q4Dq=js|u85uJ|(!L);5^n|F?&dZ43XMSaGK{E{%T -zVX^>rk%VknN5k#AA~_UQ0a5#!N$vSiLBGh{yIpTZ-bQR&kZ`G0Pp3)@#4WNhV~v1T -zGNW6xGFRw8)qP{`6FM5_O^U`kW^t4rRWMqTmtWj4Ez`v33*nEJ=rBYjK_xjtj-N0h -z>b&c7OkfGpUu%W9SBi5*(b1oa{G{9pED>!sh>!^Iw%q%#Z~q7_>q2|{W>6pkJHucY -zyd)}c9UycEIz}u)bh+rd+ -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 -z{>R?O2M3BJUq|> -zbN`H*GF<+J_(DQ^NTs7wf!4i|LmJ6ewPd$AcAJDH(T1w#A=zDKo262fg>8X5nTcwN -zOmb7OgMfh?7=!xUw=2v%LR7QkMhwMgUQe=N?`~5Fsv6V@Yw-Wp@QJ_|WTfdF1Qp_O -zRjAc^d>-br1&$Z4W@2-wi5=ZUNhEwX0vX*@JFdZgd*l`SKDDa -zkiV4qWJHWuIVH=ISlvms@;zk**uHr5en$Pl1BJOpIfMz|dMTb1lyeo;7>J~L)arm& -zjBOikret$GkadOlp8ce9hzOPyz4Rq8%|*B)yyIswuNVi=N@*3mh?f;v-0pt2ykz8z -z5;^aPSvLpJkFGdKWDE(A=$l&eToGFoRCz(k(WS-aV{?2ejoi1tFV_7yZhi@jmcxYw -zg`@BAp1_JC$32JjTP>?az)o6&4Fj7EPyQPXYL~W~Z87eZ-+in(fhU|>ZTQkN0Bw%e -z3k~x9ZDJP%zU0UCf=R5OlBa7D0=-HRKG9)-|6ws7?h+YnmGx;WMWdg{FAcemyhvA!l`|%C&IPN4I$_1_&OC&6BY*nXJEi;$i -zfHq;-AKE?*9gt#jxjg>;Zw7pUxNw|{(85i|la$sL0lZ4Y95#9^jpe`@WU95)EqAY? -zecO6yy@P(mV*=%v5vGbUgdqfVO2xR>OdP@^FeCJ`HNe#NW>o~Amzrl2a)RoZ@~yNk -z3I?${cB~9)qhYDRlFMOkatOx+16nginHCyBM8=INteQ}8t8oV)-GG}V)bSX7fU -zpSYs@JRl$jGHldLh)Pg2We7bK%z)Qa-M)qsvRgZ9Zii&5JVN>2a|V{y92kP@-5Mm> -z{|2ou|0g95+kg-`n(kA=v|U|?2hamAG`3m=g1Bp~(Ls%`@8qBCVqxslhzj-u`E<+) -zl&EAnA%AvckQ@<|B#w@HQ2eND91Vw8hD!7@?Wxgi6avUmh<=3m2NAcClq?wlMxTR_ -z*%SE?*`4%2pYDs*yWb2+Ra)~nzry=90xljsu?$=vP%^Fk42Db`4Tz#epaAV7GW`i@ -ze|C4{7MT69?FwkcnBfLn_uHVVIh@WtwFuZ2FA}K{pJJDZ9t|;#)1kb9)okW9E4#cj -z4~>wS{M9nFFnH=v1ra+E&wB!4Cy!;~i=WyrQ3P^j)zEUlPZ~<<3NrRv!t#R&wk(+c -z4GF}IRn$u>-y5FdHyX`deE%@v?iI}JQZs`j5ZRdk6G`fdQBKKb-qDI@p{xxh;M!R+ -zGUM>Fqs}z_I5)aACz&J=b3l0{(}-4mX&F8G2;*lQfewKcOH1QqzJ>&Q-X17(=it0Y -zP~%f@Xi@bbqT1j%t(sI5N7)*O!_S2#+}CJ#Cdp8~{gY&k(; -zHf(kDZc1I%)seWDL6i

uc)=fO0}~SYK-kb4c2W^*O5 -ziT`uilK^&1_t%uG>7VzX89l#3TcOY5g`^gQ*Pf_XGrkE3nI{`#(MA(YmR_t^Em}dt -z1g>-=NxP+yd+<^T;d=6I5;~C!ldvrU{9fl3kWmHUIt>(n&5pF8-@o*4PzlyP?`Mpl -z6H)l2NPENj*qs4v%PDt67qq29jXEJ}O(x^g-5!dDNM=@3{`}e<+b#PzZXGz{#1~tU -z*&cP@>Kg35(H|9ex%J)3b@UTSl}FJ8v-KlW3NROy%{>5beK{dqfpHCH#cvOkq~aCd -zE)PkD-zF2H454`$D3sai+tKTVkO<`nmVBi=7hM*jI?j#TF|MVC|5{L(-p2WLqib=rDZ)OxEUTEc&Ft8g||X} -zR(>KH*iZ<+_2lvSvLdRkQ7?`|{VLgwV=jcLff1ApW6i@#aWGzSDwoo-qE7_r&T?eP -zsL3htf=HOfQ -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 -z_;g^DEPjpwHb!WSdY -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 -za^Lq_g;r${;Y+YPp(wkLM6SC^%E@N -zi*1*W*=EZv8F7AQ=zq0_>byfh@I+cYL4WaX#-}OMprwi{<19<}sHlI*`$I;sK`Ou7 -zAQ~vNVRf(RIo?-pohyLmso02|l;#?kW0saqi#F9gDkWpVvcpXv5`p30ya`;VmcB3n -z+Q-pp;|nksn8YnTfy9pS7|t4W=JNEXTMN>U9f4FN8ary{z49uE+HLV}8}d$n;_5BTidowiZ;EU|qVsMH!(( -zFbGvcyEkJ+>3R5~A~iUQt?XBvHsV+Si5%bzDl_c}14C;|fm-Ex(`S?<_Z3WyYc6HY -zeZqmvQ|_>~pV$V!po%e9cQLgS*H~O~to-5x<}G1>XDFck#%P-AJ}SJi5a!rRoL%@- -z)j=wXEm^jZU_%$8PJE*`c*bOg9`lbwr7fzty54jXSM|~z9#H3&c32riV3Hm%L7Fik -zD6vKK+u{1QTv6~fp#`JtVP;TwT7Ddz2LG0>NmBaW0>FL7?}mUOx3NGZCm;PO)$p=s -zu_3O|P#o1Y#)b!XV_c%D(^Nv+z&kz-`*(MnM{&e{V*QXGfFvC}KBwDlWHT0)Zb>&n -z%A>PDCgQV)wgHbU62SR{#e(D**tby^0LIyMe%LK-0gdQ$){9&`#muMD=#I7!D@&x! -z@7gsCRy{G2%}w)#GX8rR*4G%7HP`WV;!*dAD1tXj?US(g)>HNgrVF|Vf)YBt^j?H# -z5TbvjcWw%q-)LsTu(`EWV+3kV~Xbz#2IR^dQ^wgcxf40#wKMWPoBKfpk2r!2G@Q2m76N`M$d -z;r-{kYHNmIk}o}-xf<)i_^W_y)k);4ajSAlyZCSBw|UbVHvQC>IBzE!M%R>1~7XH>0H&f4|#-Y`$sqa+~}vSs{fJ&1cp)&4(+cSKj=BH1-t_h77|Lez -zX2l%zCVR;2$>HBVl1kD_k_W0ZlIss2gLJ%AaJ&JQ0c(KV4sdVsk&3ROltXmn3k(dG -zhGxS++q}8Bi0uDlj{)K#Ol+H5d)tw=8J9`F)dn!}oN#xLunk11I`A37>MfLKQNvmUM?%6#jpZ&*oUH-$PQ=qkeeE(ZciC^#E -z?HsM8hyE`l+1{FnUzPLr$>-H8G# -z^jez!yB_tA$FAkfP5t=!P4}>u=OkZ1^NK%T5Lq7osvyOW$hU@NT=ne7ZgXN!NOzD+ -z8)@{TxJm7Ms~_Kg>FcGv^Oznsnx4UmIvJ;U`(ayx-o5oM!$r3OOVty_GUKH?7^PV| -z=GUNsBmSH8B-!j=d7x?Sg?)TeIA@in_amRBS=;ISr4!4eXq_nQ&dh{v(A4)MD -zyW$ro@`=ri(0d9NN#tV%gDM8V<~HYJBcv&=(V)K5&{^qG)LG`wuJ`n7{jU|D8K@4QOb+15peN)B!A2}HLFg=>Gag)OG`tHNtMO6 -zpBHqH(t=dW7&9`^UtHMg?Ef_8RhAHBq5_U7CYv;0Nzv7ayt-bm{ -z2AhVBIV_pO_Mb_V)FeIRfz^sw4`ft}fb&wDdCIE0F}Cx8>wWY<9NboH6K-+tjT&`Z -z!Z%Chs>2C02fZEeyoE?p>)W=2Z3F(hRmc$FwXie(halt*2^d$53dbg;?nyGnwy-Nl -zgO-_bC{6SixunM|T}|46jRJmTOC^{t4}Q-vXNwm}=Y+!WPp;1HOX~GVCMd&#PN{yb -zLJZ2FfoRf89D(8%A08N3Mpq}ZU9Az-`t7B^@jYl6u#JE)B{g#g?qTOGk`#9%vX$m;6L=PK7pm|?c|FwXSEV`&OZ3wKL$@AX&$>auh@MWHVdwxL -z%-$E{pEXsm91OjZeLsJG*oXYWijUFA1yDqbaLA^Er#2SrbMz>z-9eDE(z`HExC45d -zg1e(OMGcz}Md^IHF)nk^#(nadz)1P0gpgOU_;>Cm@q6ZjrThIXkLUADO*kNI8v&&n -z_7qSaW@hfN(>K628&uiINJ3bug)^UgiX&^bUFN08TpysPk8EBCbn!l{7E -z=4`A%nHKSAW5c`RMCy;Isa@h#z*-13$Yn1!vJ_nx(D{msUzGG1ymKP{+K{V>SB^A= -z;J*@&2}jlyMqIH~5>Av?{plur(I&y^HVgzfxvG2Dw-d -zzw$5LkK7vd{!NkyfL!LzJ^ZZ7o2}mI?{Ru5XNDcQ}@zch6^&oACgxK<|$z!e7y(b -zjCd^-e8Dzm0R95g{!tsSI(N?JAdVYvplOi<-F^@eMs%kGN7o}AOSW41qx=JkJE*aS -zPA)Zni9X21Q;UelbUqy -z0RmaVU!(+f1H?SgE&Gz!dQ`!XEEPBWQE$D3DIcxVueK8>Z^fE?bZc@UH;YmXr+#~^ -zo_gA-RJM;vDTCUuqSm?uuzu{Drc~+X#Cm-HUeYAIzq?d|@pwL`cZpy;Q5`50q(NW^ -zaxcL^M#^FPzG*6x$iX*O*aM95Jr$zPhrh>?;FKfUSv;W@WRBL%l^LWG7u-Ob9eF>i -zQ5F`Ri-lsWLvmX+SqlhinsZOqwQoq`WL_5Vs$7^-8vA{mbJP8y>D8kI4M*WkKoV^# -zAE|fih@ilwN$(H-I+46Ad-k;NU;FxICH5#Hsgc}?#dg@{YP(liy;kRbu4KG{Uber0 -zYg)u54%_0)O2Geds5x8+L{0HRF$gw4RM(!d` -zU9O`}u?fCpj$80ywZ`nmahIj`@|5ve8c!9*n849hNoaDo%gQG-BE|4F7aluW;biG+ -zwv2<^TC;9D835I4Z#?Q+uO8+hfoby>fpb*=?M>&~7pJx~S0=S+BKQA@GV^>ge0k8S -z4YK@E#j22Qa7fFR-G?1E -z{xy&jnEK{Yh7pG=OwJ;hDLMu8_~W6VIp^ZbVEIBa8>*ZWSdzf&-5ITEYV_~laywRq -z5}EadGw}!wcUK#6X{-+puz*}J!DtFfX>K&8Ey(x^Fz9F=*lv~v70H!`r|Lh;r^ivs -zRf{h8&*sPlEJy~FjtG}{Cga$ruJd%??9P(U)pFctbX$*NJ|;S;Ga?BqK>#z}709NB -zLqOVrT>F1z1v2D!tB6@D;$p_JM5U)8Zte0{( -zIh({PN`R+Acq)RyY=XKv4bm*dTl|CXvR`5Q$<_ID`0JIDO@ -z=6@@IetP2|Skc_D`BV%oX;0zy`Ndwk*M$}#O~m;>i65CcveifBn!Kd>(uAF`W+K$9dW@(I^ww~SSag|Iq2tP(Zq@eDbP>n(QGn9#!yg}oXPjRK -zH4&GN%hXF61l%<2NP`)%aSglDy;#1B9Ix5NN^Yy`_m=dOWnxG&q^DsXrL)WAPrB{D -z?JF6_{^j1@ug5RH#D-_Oi%cVb{nB3_FRzGu@pTu>ox6QTaPu$p{lI_-#UbVu98Y!L{0Yd;`GoH+!AIk_AzLXs#6pi&5!<2m60327H{Et3W1$=ZZK77zZ$Op|0)k)esAMg4^0U#4vsG-<_ZiE{*N$&A~Oql3-A6+y|m -z1`fa_{^+Lpj0YFG0|Uqq*cpPL1j&?1q*Hf<2vn#`3;^M@*-}MK?0O&8Tsua)pEF+? -z;31PfwYGS-o%eWJR~a92JF~0}k}E?&fJ{GrpP>G|-X@n%k6J6$W&b^l~twX0QmsR_K -z&JtAUj?rp-*pY&Ncvx}J2+&b$+P>_(O*|Saz}uB-+VYmW-6nHN?6jY6UmzeFBuEUN0sJ<=y{_#>8&TWI-iL5h& -zra!pJ^3H+QBpOOM1%xzr;p=rtJZGXBsU^5`Py&$TC~jqURc$){o7~3C%ZU3%Q{r@V -zv=`J5=wfQXBPVr?=CdCR5&76qr>X`=q^Z>j<$?dZA*;-MC+RZktbphMlpnAc{eB~x -z2^<{A)g!mQ!|H4qvJyxDCRmUPMVYXYj;^5t@bep7_J`#Y&Zj;cZReYo_zGY<`4i1) -zW+1%=mL?<{2v-K%{yK!UU;cDTkPj4hcA7Hj7K?FLjnc2DcFU!rdh7R=S2!OGe!)qD -zHGJH;lP3Ab0xE~^-spw;%!Pp9){zBEr6=5TCe>N*( -zhG2!pcGmNP7qs7L$r+~|Er6SIW&+l|W_3KiGn}0=Zj*l#L{KLbdB5NSpa8ToRWo5`5_lmt(a7U~W -z`6*!SmE{oJO^3w_0WX+Vc0&)6!L9ubEuW-Nn#fe6z_s;s)ttg}_k#5xMFI2B2SSS_ -zG^4QI825{y9+g*cKs{LVNabg3%HbBJ15IOFnL@04wRwucc!G$pAdCm#UH+-;%#jF6 -z=JF!&EI|GO@Tmz`G=}+cGgMbGD%|`P{C?^$%VuWW)vtUPp;FpD2I>qaY#HXD;U7a2 -zE>zK=I`XL8de9rHtb+3W+qZA4$PoP#s{+9H`4QgVzkkz6{rmf`U*#tsKemN~KYXo^ -zpS2eFA^V{>5^zrwfKlLTx -zYv2F*_RSod?_1!n|G3Guic9?X3pb%Hdey!?44UyreJf8ZfA;6M4-tf70O8mEN>ldN -z&u_(o`D>DvxWC{3$%B9IJ!pEP#a;jT^$Wrj%=LVm|B#dqcg+R-;*;~Sd%qR?;im#* -zyBdrJnQ+wAzFd3h==vEq#h{Bw;Xw3c8pt6+@^h!cB}Bs(*_jVE$?Yx%(sX>~k=sfI -z!a|w2pmiO6(z>crt=Brfpy@zP=-L5!-gB-eV+GkL%yk;$<}Z7dcsvn`@coB65hl -zTsYQIgzzgGoa*#~_j@^+`<)&=*#PcnLb)w)?B0vZ(s3*UE*SXtdwIgP*7nyHy#I>H -z-$mIxXlGn`Iznl5MyUe09-M>Pi!SG_IIQ_%W5NcT+{ly||2RN*`I(Kfd(WYgvB^ -zE>i!;_N!`DisEzWPu5z~Ya&|6$+m+Q(Uf2)p%F{{xbLpD{1!@Sfs+yv(I6Msl7HNo -zn?nP%zsd&#9%#f^6e1;*{%(x7g;JZm!cC1KradMJ`6{k4&QK2=vmPNRmR -zgWZ81r*Mg7Rq@NOH!~78?YLV;o(5^W%CM -zaQpV>S@r(cpM%8{+EAe}YVh46FKzS_VCl@4>uofjF85(LW_M+;lZ?mFD312>R(DpPDL7WU -z6J>AZRjZY3E1BYI{jNrsee{zInY^8AkM=^ -z-LK-zu~Zc`(nHg&95p9$tgvdpg->%*ez}q1yNh?T9i1BA-R(@zAVA(N>18=``0-IDRBupViqAe -zLYk+P3vkqdQCI57H26B5*m?P;*ZUuzf4zw1^?Ab$csnY7V<$JSFOR?ezK9%JbLHAb -zl6(?s`*Nh!^guB*xo*CGZ702>$6tlbS%3YM5(E3}@BAbvs3?BExfRYPN#11ROK<{r -zbz?SM%}~M2DZdW(^%*f``|Za2wdc%co<18ZUuNT5Uo1a{3HI<-n2%IWX&>qa35c+( -zP=r|gR6y0qtsL+uttSVkMn30{555qE(@cYe9a=I!Sh`pTM;aZClv0KiK|T+Vqf?hB -ztflg8f>5T;O0KG7!doZX;4;`VX`thJn=GRZ7vz)*HkpJAE*2d!_#Z8PV|k__AaKz$ -z9oF#N#ESQQTHsA=I)9skmD=zz-t6Vt7z_+l5rh?%M~aJdH@a}cxd*Uef-SJSl?~6Z -zC1aCcc`R(jtD$L5@FT`n2V(vutYxyq5Vhd@SWgrv=Fhj=kDuQz_rB3U|F8a?t)S)r -zSlo@va*BE8(YI;Szb2HWs}_)v|1h@^JAPf$o}n_N=H8cjn2Z=eTka+;r7}~-NYX`9?yIn)_c_wW%Apk+ -zh-)b{WT3EkCC-0KRKxxre{{tK?r}e6V>P6sGVJBQZe)V#pG#@lwYU9Tav(qsi;w?e -zzyJuU_Af1g(+>*ox&0^Ecbxa-q~DE#uwlJ~{fsZGCLTkMB -z=;Aig*p7n1N;7WlbeAHGDfh#ndgwAC7`S-QJW}4M9NUcHD9@j!K#O}I;X<$SSPxw% -zOr^`DX?Dn$ux*sSR89j9570^!H?cO|ZtELIlI6;%G7{~(DrF2x3$AjZtj&(x1*4_m -z0HmV<>|U1#*ss?()>INjhl>S4<#4@i<!TXL(n@B~xFtUNF6v7Y7ipSN$n -zF2{dej*94S_aV+#M?$&Sirr71CjR8FmsQsNlg)sxycDC)ZXd-@>CpG`q{*uzRF-rA -zgBZwMAQQ|ZB)|tdqCHWVBM3srLo<44ir+5jjq3Fi1H)-KQaLO@CaO~WdRo6`@sT%ThGj#U~ -zv;_2Q6j!1TP(GJEc^fHjEROBpm+!RKqi*-tf%Qje5qG2p{i`nRfL4I$jvcMBeEOAJ -za>dK$%HLxA0Vp1?3LGP0FO?Pd#Ey=%zr_=|eE-#TxeTIyAEHw~3D4(vF~oG}@+&-2 -zzD;tQi-+F6|19TV`ཏ!a!`Q4R~&TcOZ?QYN2;vK3Fx}5gwKT1-do^}!xHaX~x -zl`EsU$)C3dAmUprV=z4;H)PS~U+P^>;`I#@tf(t1KIf`5uKdbnZaq4>`q*6>fc+H8 -zuhA`?hUJVM$MmK7ry}@%iu2Kp>PZY$Hly4`+%qch)?3v-XPK@seIBZ-_5I`Ln$MvV -zym`YsumoN<u@+K{Ue!Ul;?KO%ZE^{f{z3>tQmw+b}Ke67rD&rNNfJ3x!1srqfEdFbnWs -z`=z)za`;&$igoPY@82%x{QL8d%c!Yz$|38N%(>O -zEniUhmofijPlbC66X5d_!u)KI4^E2&{rQ3~<8EHO11z -zC^y$IPAcvmh$Dky2J)XpbtbYV`7!ud(qwWx6r%EzH+tDH{CNzeEyLiJ;7V`IQ5tU9 -zeH$!V+dRUJ+P5VHb -z6>XjCrMZ9}qakB7TpYduMfqgoH+EEhHWm^S{PM1Rx5JJ+h288vHS}h`|0-X_o|Gbk -zOzEM1`>WNj>g$gUsM?~2gltWuZ*Z}X<0xOTa9P*yR7Be~F-RFdxMR;;9Pd+)Twp8gznDF+_+H7^uE5Bn8cO}}z{kwO0>!?wSF -z`&C?V`k4*z$)T{)WC^&+x3JNFq1(&%d~y*}7O2ySa@bB0Wu{Zjo5iJ`dG2`Mz-f>M9`l5n -zz~XLBQUe95!l}+)K4W%WEn;o1FF73GrgXl`>`9gPyV?jPXZC+c!SZ7jcyd{sX`Fzfv&7#aRQr0>9G6U^j -zi|%Gnsp&~~@FDNvzw}l9ungtr(aYPrRC3PON~ih$aalZPWeYVnXPPSdo2-`eB@hJs~r^Aei`DPn(GkekcR#|>Gd4m3Mh{~7D?jhFQAKoNq}D`C@y~Nl+a@-Y7%(> -zZaRvq@~+k5TU&7Y@^a9Eq57^-Ssuy-#58TLKoKODrH9%t^40KS;%IT5r78mCi=Q`# -z{=q-&4|u=aU_cVvhHO^=t0?v~^7Cd$+zxmQ05Dw6u=d-;sDaHL=&(HAzw)_>JN^G&^h+`C$S -zMMjQG*pUWbgUVoRdkv+nzH{T{TC+RGy`~2^$_J9+r!R*zU|*C-VvN^i{!RL|Sl$+n -z(?X`L+QCcmFN$Xc&&gbDWYPiUO%_4Dbu5By&??<%q&ZSFh3ek~lmSTnZH?!pUVn|T -zEepKpcz=THMvwOW;YrA><-X-s(^9ss+XKFz8t*GP40Y7z?&AKAt}63bD-zSiQ%ZoO -z3`wl_EZ)f`GJNOtSuRHaJwU?0j@cK+8awd(n{xU*Kai;kmQ`H~e9SrQh -zG~mTnXK^1mEGye(pvZu19s!*V6uB~GK9xM^uY#Xv25{Wi+3f~DgYQtc&K5?%`7{wg -z+gh=?4dJ5Qx8Y2sdwe{S`p&4|8y0UvXCa$Ug|5Xqz1F@KhnG)_sWEUMvVoGAlj`TZ_V_SA=K4`?@O6K` -z9{!lJRkK}c=(fv>+SW342if`J4Kpn0#%@SR@S$kGUbhd$vVj>jp%>1WOr-m*D$5jQ -zs6|@PYMo^0>t3F;AY*QATYQLUK@rL4Qt9&c_;`Q63_XwG61lmK@Jry4t92=37um=o -z-QzL-02l_Svobh5y;oO}#ItZ>8m*3| -zvup#7IoGuZKjxtY#4&s3cuqrhj53q7uH>+cWbM_q72;^G>u5diZn~iryVIr|q<-c& -z#;(YdN+YIr=j1j}nGE^TdJR`y2JDQ`hWb{U?_(p2&jaUI@dEi+W6iWXM|aDu?*7Yh -zuAPBhkgvU$Fpr=WBF_$7apiFz&8c9ogL}quOaqs% -z7Ll?7GK4XWzU;0Smxh;v@j`P6C@=zQ28p?T|8;XPMdY#fys}d67SNNxHck6^@39yz -z-#ekOig?Bj?(fu=B!pTfiumZODV}gR;3cD5R)ggGB@atS`OC9aVx;xS-M-owAtPed -z+TWyvqcQS1UUbDzuVu^bjx5O1|MmAzSu=7-mbo6r1%MDYJl9PiW%X -zhRcxeNRAdu8l1#Q7coj>E&*oasZY!I9@x_@9z;hvHs9q60FNn(P|IWae1=JKD?1o; -z423dw*#$tlqvD+3!*jcoDctA3m9>hjz+ppFcz$uD?x0gVuW>C@Zk1P|<+BA>&KGRT -z+x3)tyjb1Y`U*+GbQtroCU&67BfKfOU_ec5nu@t91 -zcxEpBeJsd;j4*8Z7_U*k#y7=-$7cD5hp&nNjDD}3nATi(1=i@L?W-J+r+$Dz0AZFg -zT8m1x?U#Be4*=S%SH~SlSc~3LCkq%m|^^U%#~U8Ao3~ -z(hK`4D(1e*6#5rOWMmNuzJZM1t^4n5TmQZQ34HB8i?8o1!1G`&|Wx20IV1aA&+B5_P90Khyiktv?--Sb^#TK?EHGB34eb3 -zD|<&zc+UCSPit&=HiaU2e%;5Q6}pSIm35Pge;5KKl2J=*-|a6SjFB`VS@Pvo -zm=Az{^MsX1j$AdS68v<`P -zS#(LdfgU9acQg+K5)!=v{{#;jUGhXT+od%4P8A2{$~*O6DAvhDs|CPKN3Tv;r}#;V -zPe>{LdpL!IzrMzLjb}r?`|B%w#yD^f3f=O$=Ts1v=a6>8PA;Mlv=m~Sa>@D0d9n_E -z^5RGR-R>;xOJX#mJzgDWx&y`cwWCOyK+@hq0C$B*=TqqUn|wLuXIiwFO>rL>7%?a} -zB1%=WvF&MNpPMqZfD>qL>J=iCcO@z2oN8gPLdp6vKY&N4{gpK|W9{XA=$6HkU2Akg -zJZ1z8MMP7=FPZ7VomLStOOGg0-9R^FBKics&9p`ZWW2m=riIcK7}$8)$QaxbC0$#v -z31zm*)M-Yl-2moQC(xs^C&!0I(*8@?EWoLP(W3_1r2&t4Xs`eb -z*>lREDAJ)h(o)YO8E#!NaG)Mv(J=hV7Ux%_{r{AjdjM)QRw39dNGLQQ$G&jj=o`Ye -zpwD4Wo)c%v5(Ht}y3snRan2ao+-;PD1|xx^l0z}#136(+!W)wzZhy-s$&UdcpcJQe -zUh#`V7zY5iYfCwQbrwOEh;UdEGojC(F|ry|A&*1aAD98a>O*GbA@K2{3d^sIz?*NS -zCZ7iZ3||f+q{!f2R{=y4eO4&2?m&Rm8MIhKMl-3p%bm9Dw{)4~5x5#H++PR@V6wps -zdieS#YnbX{khJ&# -z!nP<)Co7_HU@`v3t|SSc=r`%<>0Yj!j&x}$KYXzq7B@1bMDfhq(YE9uzCy;Wf%eHs -z&qBu39M{q|VhooT5>QZz&c;2UPmQ<$;O@#rfqC5%w-OEguT=D)fd<%p*M~&ggRKAJ -zrbn#6%l@GSzxWp^D08+t+8f19<1#NBl96E}extmi2g`1`>=u|sx|+&4XM2yUUa?xP -z%W^$-wnqQB&ggxfHUOe_(10)R0c>R0_OHV`_kcIoRkC^Vu%_aokckIE6<6uw1bp$j -z0s6F0im75{$%ful9;5viTjgqblSB^VLrAlLPFudO12ULDD=tr0CgF481w`o-lXsvHL*Dvo?^-j6AR&KXz$|1k-M1o5yUlV?`dl8AG8-xJxRT?O9S$g$s -zD-^f5^}c1r@H#8|`XX-VCKg|clg*DqSceC*fd2U!@eX}?fr+`S2MGM~?pVXD^NSv# -zWfU(Gp5gN$lwNd!4=k6E7@*m`;9!y>!^Y0nXqeio8ZWoi()Q$qc=zH*z7he7PchnbA-a#x3~`j5754{PfCb!@pQY4GCk01YYt`oL`3!thy+K -z77)Yhiv-EhmTiRgsh3N?ERo%f?+g`LH -zSZ=nQY?6s4DfXwdsE%E`6m|KXuVRC4X*`A(`B$^zL&eY~AWRQ%(L(jzf9dmtJs(Hd!j91 -z4!*>rHbykKI3mCZmUA!L8px1)PY-gP7``J2hw`U-WM?~MP+r$1S!lE=E>~dXlvGQO -zzJ-xayuU1&2O3mKU6-aEaKGV=7nW)d%1!rm-L6vp4|whJamjIRyn0nvdiQ36D^gm# -z=`R0tl+#DWScO_L5)Ch#7%KprB+NNbK1TB&#L&D+*Px23l-+@@d^L?|t>|_Cn0M58 -z#QDXNs$*ts>fJfMXgw*~z_Lxx^97F}EjC7xjNKfwg&!2?*#=hk_|rqf1c>eZvTE3V -z-d_DVhF4ds=(=?1fpw)8FOKBNEc19#G!B$m<3%TqZoPV3=xiIWp}+m;TPtpPK`NAxym -z%iTF!l}_o7vCWqgwy0yt92}K|={}H0IM6lJuBeee!_29SblxLqK<_cE@>ByE!jcDV -zrL-&{g$^6em3v#piug`$M03vFYeXn@auumu~lmyXzxtqh;1KME9t)h4Epp -zgq~X`VExzI&00kA0R5QEtf5kFwcNB^Tyi)SJ@2e&n<_>R?rj3GoA%#*8uI9Q~T3(CtB{ -zidGmXofC{{P!*7xbt_mFDyyzIriIm1VmS7Q^H1JFi}c2xa5&_}kFJUVMQCIWa+(Vv -z&&D%J*fMhF3t8SxQf6dHNt;>smeuTb#l20tzJ|y2&9_zicwYH0v;#?Nh$q -z9%TXTu7f8eVhW|c6PaJ2KICMckclvR_C}9lgikOh6!3gQh7$3+PU;u%&@S=B!kmq* -zAhXF|>V9qUnysX?rtMuze -z86B@?>wy_Oy^6_x#Tx`k;fQ3u?(^a}YKVO3)V -z@(O17+L}$)RMKL3XGnXV%Eqd#7WbIW&L}*{NDfF9LVNB#h*I7pkMmHmRE1|MQUq01 -zSmyXNo{$dU^YlDP!S46l>bWZ$Oh+OWFbNIQWf*ZLnGAY0kk)K(L+bxy=h{-=EG4>Q -zS(K9qVxUP&oMgmIGqdeNKLkSCMEuFzEW6Wn%`PCfIFfK&!LjqkoXMd_)H6|;QmGp+u^b(1<>t?56$}EY -z#UM}xm9qPU3p?u!wvlrhHt{bc#kIpe+(s*%qPPF=u{oW8_F;4Gh5W)bo;tC=gCy&X -z1e9bKiAp1X+d0Mx6&FCR;xU5?K`^x^A;+P426Vh2$&i$#hZx@`_Zz){WK(L* -z?!xxDE#KcuHQsMnMhJqD`9=06=fY^xgw{jBdSo*yV^h~zzLDd-4v?2IuLt}KXT -z9L66Q*XPrykePV_vw~Qy7GoTNrUd)d3Xe%O-pEmksEVV9A39o?+auNT#)Y@nv*T0muflvi*2;2LveKQ4exB$4HBs#P&8Fw3uT;NQ2RkD`0+z -zgi*2AZQPEgjOd_0dpkA=TcrlvAl)W?O)W1>zvUkE9qBmqzM0Z;Ev=n7##vhmR0D}< -z2FtCHHuPaj@Pd -zRwqQwdSNo0e<=6Iea*zDkNDtC*;?5!0;<}>?f|mesLW(QGY;^c$?POUkj7FLo8K%` -zeUUU~Q!G^j%2f{!u*KZIv3t^o -z$~K9z%cM}7qxPZW%M_^9MBt&kL_E^$kWG_& -zxWEqz2+z}VZc||pkl)DXkoqD$n41}Dz?*q{pi(=q@wMRP@#Eec0F7k(LufH|J*L|_M^iEh0Iz_AD`)_&YzaKJY|(c_1ux#;r2 -zorIZ#YBGQyB=hch2Z6M7QeeV^alSHPYmFc%w?#l2(G0~zUB<#cclhq4q1=sj%>qQl -z(eh#uZ$2W(C5hjFv+|WD0n-%&(vI!tZ -zSxzj2xDenXRlTmCK@o#1~zsL2!RF_xNa%hKe;bB -zOlEz99ERpKzda^ug@T}qkZwls-*5lOCIuXYfioRz>Ms#C`LVGOJvp90qV>kD_iiv@ -zcMl|adTpRrHl}zG87mU5CWrN@{oV&N8twMpB#4_LnXHc8VwY{;~n=H`HGp2>S -zV>|+Ay=w9d=3>m&zz$kj5S)T`2Cy~qM -z)pi4+`IGDyxgoevqKs-~{oVlXI6A!Dr+$S^SeM;+t4o -zw`>k@#(|s+Gx^uI9)_XCwYc3Ds+%5g`g8+!)5njuWi)z`+jwkd8isiwM|H?EHvkz+ -zt{cY5UhePDO3QjTu9koMTz-eDW=igvoK+EsD=?Mhz3?PeOU~ATFw7M&2qaAql;^I_ -zT3;>i4rcUWfh}*E?w#J3)tQq+!HG%;Z8Z6!x!kmas7(AKt>4AO;Db?aqcUS5G_z@0 -zm9Ta1p4LK%TaS=x<9y>7X3{7 -z12LY?%MZRS{qH_=abwG1mP4}5NIX?y$ndSeHG@|_;F9iNm+=K6iZJ=Ff00!cs8G`* -zg5RE9Akf_43Vr-?_?JHTq!mH3lIEV-XPSd{RLcP>_i*c{SquZo*G(1y%_$Q58`$$Y -z^taCZ5?TcRFOabkTarkEZuk+MUJfCV_g^1>;cH~;auYEeM7~VTTlD?cw|{U*Pq1xa -z!JlEo$|udWaGHY_FfS8bj&w0%I9 -z4%};r;eGW3+iLX5zXvI2_`FeEV)?-UCR%KVuybkt9e+Gy+|072OV2UG_%oXH>5JyD -z=S0^$XL>n)3J?MOnfX>Ur4n+4H{gNl7D$MJ*eiuj?=+tsZim?;c_O)GZB=#bM+68( -zaN~S%nUUhcf5|77+l-^&5we;QwpoFc;V-$B^B%A(H0)f@f1n;@!%3R1oRULVD1W{JxNyS4HHc+2P8ZRPKnG} -zXiK+dGcM26X6K}ZOY`w!JIAns%3Ik4>F{x3SBy@3p}L)w!jGro0Nv`v!<^Kl>t -zM}$`-H=(1ik|m-7j+XY6auVJ0{rlTIk_Y)6X(kjj@XN1A{dk2IwRTt9j3lGM2rrOW -zkBu!%kGgov(M=~C+1y1UpjovccD=bnfC!{fv^{oDYx(;xT1$M_DZXPA5vDMFS79=p20 -zjeB$@!8tQbKtllt5hXVEifHLCdz4hC8AULgMaUtSNb76yGzTmavFAK(dgyPmy+TZ~ -zpOn(c+X|Ox&<#%aX&>IBv>NhjN)bEP&{Z{{%KO~YrnfW^BKGKF!wMyF$F2LgnGHDv -z+lbcgTI21_{Nyxs`{Glw2`;j#!cVee;IK-mxIjPD#)n60S^5t6_^X?-Zt)N8x&ZPH -zzp*>4J_6kt41L*0Bd`G2ZIb*$=Waj^-4CZ*ohI0BXgr(~YA+{kEL -z+#MypaX!tjG41}9=w2f@;pW1as -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 -zWnAX|lU*S8Qg -z%*VA6BsGd0I9X`x4fQMHCVl)sLn8iSgO(hb8{^{4R%qssiZn3{)eS!`mD}P@L=&=s -z@Rk4&$c%+W$tuLtiKOeK$HU(@QtS&aWIV_H6 -zG11NpLoPZ}_V=PjsBmomM+Gy>vG=HdAm!`=_`9sKeMYPyg(2_JBY6S$E_qStJ%erZ -zo4jr;bJ%}a`?&<*4Rs~=cuGqncPYp986WhHOyM#xL*u!k2wll4pGW`k12fSFG^`_n -zfkp}hskd_aJ2!Gc7%ls{+J5|X*$du1;`MMvrv_es(Lc0)POJV7lQL*)v{q}kB%bb)p?PUCg>5xq<-%@WFk5peRGqY@K&An=Z$Rm6$BgWkv<)|%aw*_IvLce`}O3h`8{+7#82a0)V(*N -zaNc8UtE@(7j!F6Gg*4H!F8ZvaNsN{8(~#HK;@+AA8)XSw-|krV=s<~gCvQ01IkSG* -z0xdUmP~gC$K6_X&02)O<|>NF6oe|vS7huo3zh!R^8f>>O){}m&A0GT;JEv -zJFO%2n@C!bvQCiyQWBzIzKFKNi{VI%o5ebkDRR(o+D4AToYd_8(tSD`r*u!0H(JxBfMWOhZM3mtU&eoqVhJ5t-6 -zSwWV<_#(&_9PpAXBMB2Op+6`aUec7l!&_vO3XVbL -zKwpK8k`vA~x2USIL~eY4A@50*h}D+U1zM|6xjq4=7QAI>8E+H^(e)nuJl= -zJ@#aTN}NrWjJyCCbZqHsB!NWn^J(b%Vkh|d##$4FFg$Q1=v!J(cL{DWZU)!Au_cR& -z3}7eP+)ZGaQTrR!4P;YR?lW3-J3DeWPnJEB#9TwXMx+(V@k6S{L;ud~ucPN8MU(lL -z8|1h<0N5HY;EK-3H<-!-dA)QDWjv{;%~96mLUl>GkyyBM+N!9K0ldw3I6SZlf%zpLDwIM1Q{{uyfav!+Hd&+OBb15-j{?Sb`&F{eVJyoDZ_Z*z3kbsWXCg -z#hxKuYj>$3WaNNdEtyKS6(!WdJ<#};pTdTUMsv8uiqsY3;>`>%TU64BMO!~DvN3eC -z1}!+dRCCFnZZ|jIRDA4@J>gW>H@de&ACrr%PIltuORgKkK!&L`{BT0{>6{%@f%K+q -z!g*_f`JC_~ra+r*L(`RrtX*q}5yM0%t@f#c4%L1)flQaeU65m<+J_-`tve;qoCl-y -zgg@P?xiB^pM=iN?>_m%Ch0Z+0lj(Mk&8o#l$GAsMibDXvOfL-1*eKi9bJw+W&xi~N -z2pKZ>82ayZ!+*`U+f)zhU!T9KU*G@w+o#d^>+@SRysr=cPj#1B;fy#?NPDueY;U>d -z43BLf;qwsZ`qS^50o_i5Yptf6?)Jqam7(?55w%S4TRV5&g!t3!R~8|_*4L; -zD3cWk-)vz@1YM}SQ6tUqi{KS^0=Y-KaYCQz##sSYvg -zBa4Q^foy_>ctwVjtF+V$nst4f1}GZq&eXQyH$)WoV-cjRyUR*7ym8;$7HpT)NN%Vo_+)N56KKJXBi^7SHJbS3~2wf*Z(}HBLz%>Cduxd0`^Fdt#Z#N!%9p@qOZ04 -zV8fU5MZ)qrLxvS)w4782fTfCbQrE+QdS4Z+Bn!FJ-C2(ac{XH0d~t`Negb$&fWEk~ -z2!2XuHCHUr-0ypefD0YiCTL(bB0{)XP5+Y4JU8-qkwO{7(byTi=3x!HWOoDjKjpe+ -zw}d7Ru=ODnpWrZ~t%CCZ4PoLAu|ASH)AC&up{n8=22kS9`Iy*{1($H`$r^od9ZM?$@r>o>TvUNzD5a{Te* -zCM_LwXCG{Vp3Bzv8lq2Agn5$+vEhZHcaAVj&3J=V7<8EytZxaEFu -zK88Qsn?YUqSymRW?nqwV17zKX(@2>4lba-fuC$`*w#mj+^F3u^z7P!;#O76VrBC}j1i@9MHU3rD)#Q0 -zxSs=8k;ao;pDLOp&@F|IUPP)G7(o -z;CDBk3;{BbkGrcm7fyq~URoFppk`m4-378TSVJ8OZ3P)JOa(9s`d~Ns>g=-HJh4Ky -zawiNlidH6OD#;zB6eDy07UgDiFF^fGi6O4ZNhdhreJajp5L?%lL)CcrPj{9>@*W)W -zC9UeU@v*Y$s1k9Gci@Or-S2s7V0TRZ*qXq#X&PJp{b)Cl7{j6&9O!vu& -zTri$$Vj+-B*{w<@dQNoTiv8y5vN>xOE-mSR8CfPH{$$B=Tsk%Fp+G+;bd_K=juwYP -zv!%r!K*)O)J}bYrD9 -zENAH?&C3uSsA4yVoL+l}V)m41<1R4RY}>Km$;}BrKe&^CRX|xT0kos>hAdSTN!TS5 -z2q@Dto90@=2mB6XyR8@KbD5gl+k4J&J}0r891N#VPj6v^#qD)Vvnps12}Adz%;YCL -zzNf1=Zb+gO2yB*E`o;Z$Kx+=7wzA??4AHxx8Hgeexg&&K53S;!6H=60F=- -z2+S4K1iT?%998^D*aKLop+6k`Pm!RG2B=qMg{=Q%pNTeBC5<=`tK9R>tW{PM1jhud -zK@shnwqHn!lg1v$6!$+SZJNK&B`WxKt`g;BPEkLLzoJz}sE{Y|sWu*~G~jBb7+9OUM}Q7MqaIVoZn=)b -zJ()Y{0>{=I%#q|dLVL{)u30YFharXyihH)`%Z3R1&Y(fEsh~tQFA*8&UX6c8jJEMK` -zG?S8d9=TX1Z$_A|5Nhi|M)g_38%$>fl1S^d2q|XGCZfoK4hcGSqse4WB~T-Sz0z)) -zDwdm^(Vc$-0tdL=u>Aq}ut+q8tl28ygCX2ZSy%pa&jrmGdUd)M!t1udbt4a9v>2dh -z{3@)#Ipghw^2ybfe(Z8Ai`3(p;3y_E3yG_c>^MBwhJ*^XuM-4VSFm-HZ&`SdiE9oCjE(oXZfl8lDVwai* -zmcEd;=-JoMF>L!eN6>ZSPNC9`%V}PJatia}8l!NB%ZyTW51VmKRDs1uwIM1a3rbc9 -z0u2Y^$*R#2^96u*87d35BA2DG -zko@XJh0_duBI)wEW;Kt%)=ruvy-q}fbG7Uz?e7WTN%k@Bw2=gqd6gKJg4R~#p*jEw -zGn4~fsM5J1SSD%jSOc_kRjTb7rAy1=WJ5sU9s+rQE>bcwTJCW}2xU99+Xjz1UCJ@-99>7-x^?4x7NRkJNOfoYG}A!UCg1-P?Uq674&R;$QMM@W+) -zSTeqb6nSzN_UGX&OuE+S;;=g3cIvrNNN)pf6aK*AE2e)PdHq&X@!A+*G#Iu76XN*BA -z3~`dCOvdLM&4{3v3Vqvl@z(YKwDaE|>Swx#AtRY@GI+1;=R0VqrM*^hD;FO&k6;r^ -zsN-{U9seH5;r(#1!?d6ip+P@w&WbF*+-URv@Kx(l4JRp#Wsg~tON#)h=Tll|H{(ql -zo$3}$>ysm}lIxCQ3TJ~@w;R3BsTdVMli??{eq{;r5=hS%t&#tulAqlnUW|0i5|PMP -z^Yo8K3IG=mo_{uQyfdz^M7292BcT(kIzbu-ao%c+hp{|e|(D*q<;*9)Dp>$ -zKR#eyQ&|%K@hw^bp39NSiO1;c^8f^|feH!t%d>D8i^VMhqO>l^H(FFSN%L(_b}E2& -zMbNEea?)Z^&4`vOMjA7eyA3Fo8e9+-m;6&)!=aB-q#>B!o=ZT(Uf{PdHpSee!c;fl -zbLmQ***PRN+$T^UDRQJwyDb1FARYd7SfJEJ4E!+&4rK5-)tfXw%mO(x29@tEdCo4w)KHV -zXoWi(Tj0z!K{XfD3}7z8-A{fiD!}U=-nQM_9rZhQ05fA@?AtxrTpqFZ{^)wKXt>x8 -zHJVGzg^18vE%`eKj53Xe0`eyZeM7azuUYYWh1`lvC{VB6tx8w0{EONJ?rCo%aC99a -z3)g~ue9W{jMk-@tUzbzBYPXF+mxBy3OISJvasV_v{|&sqI)BuYr{wcjYb5k6SH{O6 -zg&h|+8fq{`eF5r$c2;*hYP15wugd0 -zx~dikFw~oBs@O9|3%Sr6z;iMU(HRF9xW2bFT)g$Dt+a?t{EnSI7Ut|61#cy&<+ISx -z)2VTIS^Rj#Khk^VA(m$eCmQ8q>eg>%L*6n>a~HYlU3b9Mp!hAm^ey3A!CHd@X;D#K -z?rmKL{}_9nM5OY`9Br+ENhze-Jg6#ix(dXv#R<&^sRnp$TmqjUMQP?LH|IHR+xMUO -z!}g20z)5tE+_kx-j~+~Yc%iZ8ZuX`VI^m4FMz6o5tDS8 -z1;%d}nY=VN5K9G0922NHS6z|`V5$ECJz86$3>Cd>9YKIHF8CnXQqQ9%_TdtA3`^$cfC;u~E55Hf-H*!5Vl0hbneW$*TxF4st}-mDx&2N7Jg6 -znWC>c_Lr>#c?^3g9W=+3`iDgZXQ)5M -zw=WW;4DPOvI!L~ZCnh{oL(H~}3LI&{qTU -zNjEzwsDX*{+MS&WEFYvNpSo6%Dd~O>Q`B@R+D^Cg5Qq|flIdilFWC~!HYBuA$ -z&#FESZuyEse=dg8z)ph(kZjM>E*K(~x7($6^NdPt(gsAxR&^sI1THjcw?*bJQ4g~*4r(zRjd7{9b*^9ZorGtowvF9^-#!IMPe -zR>R#bH-vV9TEMGLu`{g08)bKFSx7Tw!tgEtqxh>NEG}KfY-ZKm)R_HYsqxOoVaLnM -zk!g}|wbdU4X;$Hih>6nya(@X?6-&rX=kpOf8Cz2IIlE)PJFJII(B@bsXy9jX>$t5) -z?{C&dOcON(#3piOp^#so5=y&zKe?A1)h-EPl?C99O90x0F4Fo5Q9qQMoFpu`F}jS2 -z@O$O%*XGcf;`|~mZk-Ye_WIR1lV{{3Jw5v$mRPZlOiRUP>0W=hB8WOsl -zgw4Ap`3ay|g&qkr*=E359Jrh@$#Ot_F5ch(QP)KF7PA_O7=z`Y^*5s4Yb2?zI4vch -z_;2uWps>hZDudlxX)$TwThFY&BMSts%tT3$z+N4dgi*9PU#>5Rh1y>u&t!myip0aK -z2A%3MA57-MBCyUxrJTq%i24m|ctcRm781f)ZnyC(!>8iiUfH&|e}pWE1DvYe^;Kh! -z^llr};Aq1Aba{Z2b)+L>?luva6=N(E{7TtT4!!ce5rIL -zTu7)gv9)w%leO$wkZL=j(#N7I??sJPtmLH9TOVEthz&#mL((NzFwV=UN55n|(l^Do -zP~Jcc456_!E~Dc>=-2^j8ysq;GGYqYBd>Ya8jw`nb%1&M^^5zBNFS4}lZS0-v{K4^ -zSuSLBbw`SW3NyHTl7uF*KSq@YE+sM{b#B;pXOi86cz8iS!Rn#u1<3&| -zo2OeAQMv5F@OzXdZL$oc9ta^S<`M`De?i)#w@@a-aUygo%~~WKNu~E(qX$?vni(!C -z9>_{pQD_ylJpROf-*!cRYMub#F^_=tb1jW^ND8k(Jkh5ajmS+^VWp)rPR2kq2L>|) -z0y?mfB15tSvq{Vex+fg%_wN=60el(=ijCyd35*xwe_VMo`p>48KfpvIe=#sCYb-vz -zE$-ap&o&@VA)JWlzosjP+HzLgZDG2d&9u;l5Id(Rwq-_aElF$)T>jv83I2P`WAq+L -z_QFqT(M6&`4O%8AqZY#J!9fz#N|^DHK54-ygjjDM2f6F?b4UKW(s3}Z$ru;K*~fR1 -zjjlVl=P|~Cl=Y_*j7Rbh`mpY&PyS^pf>LC9?Ze=RxOHY`d`*ePwF1a|Z4SWF6cRvF -ziWo_ZiG0L1uTdLfpf&oW@&07sFS2>PEdnlYFEIVCk)v)sfM&IBPcL!}kv61_wgMpq -zx#1WZZrQT_enF)uhm5#n1o$?2N7k}P>u%{$L?9+ZQUO*lfRc0R>L#^$I=yWs*D;E- -zFlwFOsYmP@0S0Sy^?9f;uPK4y5_~@8v8SxM@OZ<60br -z#Lt{cTts&XxL=ewwFi_%N5;6@rEhmG5LO@VSsZ~CU{a-qQUx*j#11f^33hiiUSKWG -zj4`RU0ar_k;)mM%Sno3wg@3= -z-;BNyeKMah*4kRj;nVQd955t!;bK9O2sQ5;uw2CvKmCn!?E~a&eIVqSDOxsI2_&;= -z6N&Gs`5^>m{RTQ0>39K?jbt3431I2W!5>ogO52L`qeFuRKOg+UOA<=5_Sc~m6h=7Jnj?@+bU30d+{$9Fk5S@AwOE61c;#`R;Kb9|7&qPH6V%eK*09 -zB3J;OfwFFQnMvzI<^ry0F165tG7b$_LN2 -z+PGy{P!v3IfKj0#*v}nRHTiMqkwZ`mZh^}zfd=SdsHsU?&jh{da|+r}^wp!smZ8|W -z`-YYzI4%JAjGzf;F}aQ%>MF8!fICz6J95UdJLQgKlo7D_avcE%?x)0mI(> -zgKyw(&Y3DJQOXK;>v_xN78ULMk*)IIb;FYKKlDX{zynj=JA}gKL6*KX4;Oh3E<6 -z{H#(;<+W_2Z!ppUJX_i$c0`8iLzpyxRZt(GI$pUCLjUF()|*rrc`~WjnUtWm7~RoD -z;~RL`3}t{C9KWS9?1n>XuuwTKf4h@#)#~C0?09-0|BnCu_$dG!O0GFt0U27F7EN#i -z2Z($(Wpm1rJKg;^VQ(=jhy4jIXb`>QNt3O@jvyhiablw!t%)G=P?iATnZqsT>$jRh$iX{DH!V*5E%= -z0T&mB0@pn>+P~Uh6O(&YX<0ccSpx_m6(o%-(wNVh6*(N?;wl$X52%s6`ED{Q=@$rNXdM^+SAk(LkECBsEEUoa@~b#x9@ -zkqbTMc-)qFaLvbE(tsM#tnT)gY&)i$rVX`XF>6}u8&5*O?Lcrd~#3Rknq^Y5nzsk*=3;0#nfh;EqF*9s@DQ9BGCYbQzmqKGi{B7d_348 -zfEr6R(r6cTeq71Nu{!m7jgN**4vSuaAUt=-iIu;4j_x~6UPw&l&;%BIPUYNEuw`M* -zv3QssW{d}t4V%)Rip$oad1h0-)4=&4K|x;Ja1Rn1CgYlc`@>$OND_x1*$W1M`GgE+ -z3me>aSXx~A4-DsgwxxEYBw7^6gPf@L*fxtGKs9RU^DM=QuI3Ji(j9mGKC@*_2EIa64VT~Uf?c&CL -zzU>j)Iqc!S3K8%l74y!LD>>pos~W4#A{VmZK#qZ&6>9g{2_fMgz< -z5S&ez4$coJBsa`^G@2$Rsz;eX4a3NYIsz?))m!wC>1>-rh=V22+?=oinQK#<0|g5J -zO=w>^x2|QKw0Mg_a(*}PsM@Q~2Uz+F!tW+VSD|MS -zAjq1i1K&1I=AoAx7#9z1m4umoYe;-<(#`FGV1`FgX;@f|9PEh4Pz-V1w^V;4wZk-M -z%+<(tY@~NeGMj$a3H&;vy`!8A35^CMpbG!afdbUckz5X`kiN*aGk2`i0zht8WRY`4 -zFw6;VWY`4#d%q_e?EpxTy8fxA@Xir7xT#G&`$d0hdOEAdl>p5un{)#2gEAAE*9;&= -z?vAkNC`49g9Vrs4az!Cb$;+Y1n7tA0QNg=fT_P$cu@tHZY=&8hMIt9pznkwuYaF0H -z_rSedHgRqu?P_JPJIEon8buLxXfh2CFGb=0bEy(+fHCKeR60>}!d@9WVcVjX;H7N@ -zI$xVkc;b0#nQ3>OAj9TvIui@>bey`Ex#5eZqXNE5Gl)6bi_V+^y=h>x-whqeuYfdE -zU>3%<)gWtq!qu1uv)~2fjpHheDDZ@Hrjz>&o}@;%Jy6zMx;9+-yeLzR$} -zx8($A4B$mbrux=1z?CeEuq@l{c}zDb8s+uiObB=!>i<}ho3{=)i4Mkm23b0txD)gB!WL1ukVX3vM55$e-|ta48L2a3 -zH+I{CA61hsNN*79SLFEFSnWL~^KEA|qCpJF6bCXI2KVFet4A^uWr{mg@cN -zo4e3vkZ@UDYCJ-ZE`!<2teP(5I_6p|0toH13Ujn_Cr*s!oOoh7*VWCdBGhOTbg4}p -zaJ==i4W2FB9?hsQ*c7QAD$@H1oa3S9#a8RMh^{1};3hdw{ -zk87zoqa)M6ho91knS~z)@A6J(f_rr~ -z8TuPR$A;U5-qbmt+;>3qA|kmO7wmrL_#P~GrHdNwH3D^H+tvrN&RW;V?>bk%^72d7 -zck_9r#HawXIDh<11L93{Hjn#%TuA9r?z`u#Fg!vnt$K`^(#eP!K@N2+0Q^;-9_2t@ -zI{hkG25$E3YXRp{P-=(h(lSE3Bp!^GI&4EIjH -z!P7a`*q@OrN(NFd^;38&wjRjk_yaa3=~6!92~R>8ZWi>*M{$u7+56^cQCN1KEGGS3 -zl9L;wh0*G-6{9H?m(jY^%`ElD)u^!tTG8{eCX{ugqL&lg_G@wpVha_gy8sB>Fp@LN -zmVlzA3yQ=gfe!&?iWUv5B{`aY3I9=WGZH}^?R?rHLRliCu102*Ylp3Pha>o91@v|o -z=H!5o?@DWX98;Z7)dOy1zC~T)YxG3xst1>Asz6X_Ui -z_+8_idrSe!>3kkL2gd@y+Jy4v0TlV~8*(ZNJx*RQ(+r{%OWyAIgXvUoOHT)|4bu16 -z{`M%SRc?ZjF6NF*0|cyH>RpxgTFwHkR>?6)nTUpA>2}) -z@z@`=-cK9921Gh^Bhy<|y3WU4NrdOB=29Vx`d5aKH>|a#H6NR{6b<{=W=|xt?@{kT -zzwoHfN>`ps-`wN;tbh*(z|&7nLac)o_fCA++%6d1>QAaSy!?J -zhDmCyka~RBnp@NY9rpWZ_gql8KH9HQCENg#LTH*q5_IDEbmp4LzWo=YyJU{ppLYJE -z?l=3{{hqeR$A_JOClnj(SY`mmB+c}2Mv8KRK=vQTHm-~e?URiEdtUw@nWt;$|J6-) -z*9oHEC@fzb=@S5D?QZwJOAFsB~^3;Edh`0=h^Mg1uBrL0B0#C`{#o8b!%)fPU!>qn19RS?bsexpF@ -z*c(AN)DF8yJ7(%fmJ}j;NOAo2L+^ -zI%nU|#kyqo;`?Y*M8Z3x+)w9t*Nf9V&x{f{*thfm6V-k3ztj2g0~|^27`(bzkN1DB -zBQn3rz4G|^k9=>xfB$BB97oy`@rZ+*N&mJn5gz~e7?ypqANVMpkkvAOT@s%jwMc`FgjQx_CdH+eXWiRf#+>wx@{YV1z=U=v@c{*wD{P=0l -zYC?uPFUd|pRw>T<$Pi-Xlhu!_z)MK(g)}Nwu3m-S!H+@{e0+fNgN+#Z^p~wqW&Y)T -zbJ=tlLBm{7GXix=45Owyo(GlAp-I*Zw#fT8mB%ob%jz@KjcJbum*ooAjr9jH7#P=7 -zx6VRpr%I&iM~?g2&xfvu}Itb1@&*3m6yK7nJi%I -zhb0FWp;U6G>a-y>G?7qk`iHwo;Wh}f$yLhK_RY~4MNTV>_eE^IIRN_&X0W;hbb~oB -z6H(=MarbK!f9P}6@ -zQrU$XTrJxhbhs2=p#H>a_pjBa%n+*MR$9%|$-%+iL0u~h`fwsrM_WUdFo;W9C93Qe>|3`%qaauzPO}&3) -z`~Y_AqAVAbT&@1t;(imVExr|SL(`j-9(s5@HM;dI@Q>6nvb(6=$`FH@Q-pUqit`9cxM6H -zacT3)sc_?b;C?IdPo<2igp;*8cF8&Ls+3TMl?RZGWl1VpYX{8(=Smrf4rTNjjzO+D -zv-{B6Z;#ouDd)t%4eO?bi|ef56j|$y<3f^<0i25la%>f*AS`kl0MbHTc+IJ&)PaY6 -zStagRX+^c#Y39uc53W1ZEUK3tAB%T4{tNI90+raViK}jk)8{eQN$_iphGOW69s^mb -zK%lN|xFlQat!RLh%DF&d|8dLh%_Ma87%PS*V-dw(DWu!6FolUJy8 -z6TDWpXiLA;-Obx$k&ohoz}0g_#WEBayf -z`M_Fz|CZ#*!o@TUCLk%(uf}hwAxR*I?*X8q4Vo&n4U8$o6Gqy@I@~QzfsQlU?_3n_ -zcHWnFPN1s%I2AhpiLqRw3LIi2Dc!@BBw*ZLwFd<(BR`KO)5Yge+UvYdycE -z=r^XHrT40|dNxVO$MkX6P(JsSiLk6_O{F|i<(a6IG?$jk9dk5exP(`2ywcvtM*@OE -zK1t85^I9G!H3Zi}Q9s_w;_2ULu)&tRi}eMNUO%6MEh0wSWqyDE!1SW78XT)79R%y+ofI`tl4<#&lzDP>xs?P| -z9pxogUSY0{y%fQ)lV6}#PySfM72(yL47CD1_2V1)?1+excX|M_nWNJvnSGKC@f1Fe -z=W!V3dzcez!39uj6{JTAb)q>5(m6c^*XIF~0-}>lW|X0fjQ0UR;R7HnJN^K8~ja2^mOgt)eH2ONBCdA&c -zH^zXTTH_CcS|7r1>4Xg&0Z&U69_VimrhdtwR|W$C3RX2tKRA?}2XN=$K@}_r_*>ny -zJawLpQloIS;D>=Ai_ezp!xon -zYGv}KIxIwfR+%zs2h6%6_7xdJMyy5R&h1h`6OYa6EKqrQY|a#$9|zLoT{d!&&hqG0 -z^!sOG9A!Wrl%=A>aOTr`unaUl)u*EJRV#5s2L!ZNGjxTO@0LyUJW`p%&sHXVHN%XS -zo$3rLA8IYdLSp*%X^2*wsU}730oDyih?_x~c9g6w-ynHY2di?#^@s2Xnl%S2NARuQ -zL`U)>q{b;l2@*UlUUydt^W6JiyZeP%VI@@x7==_{I30bM4h8~X|BK5VJMGyabNWsz -zY~92S%34_)&e;%N1xEl40F#PcIjM>O93_cFt`Adev(@q?HTT+uJp&sA&@Dwi)5@>u -zKFDa)3T5X16B$Of2HDkPRawtAS(P10ww~50qlT9u8qS20mXanq-l*H)K}&b{=Wcar -zoqtB*r@rgRu*RW@PnghFAPZKt&Q;9$qv4d`$(j!Rgfv|n$Y*#u24Zy#ba`Twvr@C -z6VMY2GcimKk{uiB6!!FwicaL=H!pzg9hfS}2|+P7U*8%-PnK9Ju1E>cIiIx8tv+n> -zpK-;qPR=rYf!^_?yAA}Z!hUMyZ5v7nYldaPidi9M83Ed2W(~|`xFQxAlxNGe{RIh0 -zh2%UrUHUHQ^^#ePHpqz=0Zr+MDtePjx=@xqYAlAoG=NL)83w<#-p~<+PNzBU8suZ< -zzkLCbIcy}7U8E$i$h+VCM=G;N+=+jS8%>VY-_%7lTQRgYGoL -z{i6c>z0~(LSFvukyuNaNM|Xnt>u^&YwYFQ5)3Z}dY39mz!fJ#;~lkk -ztiKc|8gK(axiga-p|s8S1*98ZJQ~ -zy^S*m9?;pn2lpin{?8cce+DKbU6bUUNIQ(Xa|Dj>v2xWZ$TfU`dg)o)3V6vPdN8g4mxPfGlLbJEBxK8i8E(iG -z$)Pw22+!9{JkN&;<3;A)?RqQnHe%a?KTEB8I#psIZjp@{YXr2C8Qr2exk68=?i+KT -z(4#nSQXSSY0i$%Cf{c>9{NjdbnIO{|S}UBp -zQiUsuj{aQaC*@XPiD*|rghYV1<=%gN`$rg67uw@D1NRUh8HTsuB~gK<0HHfDDPj?# -zcb$>WxRiE8yT8Tk8s_-M{hfgPK9pnF8b8sL6>&2W(s-4ohR=QNU?`ATh_}Zbld+C` -zaiM(PHd$=~X$LLG&;3hkbbAiB^`5CG#IRe%S!hH-< -ztz1Wi*mMs?v*(0K6#7}KbWzI)YE=^pa8wg7rVC$AZCyR{(;v6}Krd$tWeEY=#K8#> -zqqclPb;=Qld-&~~bnjf%jJnB%o2W5$G~+OPc?p9^1O8T24oD!KOhCRFJqVyg=+umi -z%8ds`I!RtB`d~%dI~4pT`ZW*2E#YWq%h=#p&=w#ZQM5z)@YY7qfVt_RNNZx+a`7*t -z#_v`YjW{rq+8>U44^nXI2Xn>T-T|9iSy?FAUBlZ`Y1iuc_kHa(=mWbX{%yjH@gD%> -zoX{YDeQDY3Q1A -zif6;PAwaAA6Kn<3iHqSrlBv}zH>iH0KWLeBq$!zdW7#ta$M2zv8c=3TZ;ny12->yJ -z_{Nw@&ztlbUlFjjejowz?89>ojEpUC2m2D?KB4mB20$V$%s_kWPnf9}w6l?RMvP-o -zmkC>6P3%=mww*%H8Z>RB+Z;4N&B3-B<#ZM^WJzr9F@W0vSxWvoC!1tYGU!W4T5m?? -zICJ~$iOQ$mlfz~OJ}eTK)$n7`c|``L#>Ez(iL4GSC72TBa+h8qy*T=Wkcl&_ -z!1|Zn9`Yf{wVAmh0&F^nV++AN3cJ0`2}gT6O`K@{fzhfrpAih*fI_$Ibgr9`Yj6jr -z!vrl{z5NUeXB2o&j#U%pk$!4(N@>sa)FT?X7>1@nE$^O)!>1{(OQ*)~J^ -zfic2LnO006wPlvx11a`5_*Q31q3GZOu%;IJghy#r_=KBqw#QiMkNyyRhuiz4apsYE -zvbIzN0Q;uW;=!uXJ<5BX&Tb`gC^RGP4uQ8JaE@HJzOAEr!bXo;aG2lF#?V+?sYq{0 -z^50~ZHYk!wj)-3h{L&?QYl5^Kv32DuhLPqJ0DUEhifrv-e@Kc&msqq2Go$`!tWozF -z%e>Zoai0#&?5NG}qq2a$^|Q9J04jEtWUTNjZ;t!|*CYw)N6kF}HN-u@AtLx871t6= -ze?Z+ki=t>$)m6C{^h%9bt#4r7d?o-^_#;t4r`q*Eaw4?5l}an$W>RE~YR;Cz3G9x> -zFy{n&=bh8tBuC+ia5OK}v}a|R#2HMAoL4>SUKs-o--Q`Z{!z0#LfJworgkswX9eLl -ztVF(f=+J81jW8Y*H5&NkkQ>%+6`zqz3E;BQXx6j*gu^#bD^|LuABTn -zUMJ{!8Ku>jWgyA+BYk51UqOkaxgB(H3}wpQq5|fLj&8LMcP+izo?^gN0HxZ+jp!qU -zozlIjBfeG%J=fq1p2(wcK$IaJzX|&>SiqF)TqS3}st9`j_zuncFVnpOUL~$F*+9{Q -z0k_3ty&7Y`8f) -zr)uL+aCLF@2zDX>1iWBuO2>ShRe~Z0-a4c>5}5%rgK`s7!e(5~y$2_c)a-^RD~p-q -zif^Gp$D;peW!wDB7)WCVpX=td$52+X1^Q(&{|Z=L0Jz?ryhe^OBi~RgN>_gc7s(YbbgmELz-duUK-7NA~0#5sIO-cE}XgT{ewhm4S>lvsjERxW+EI{ -zrapAwD!S5x@icO{<=(8fB7RI3->vA9`5%?$JYwusiv#7fr)?@S%A=g5dnK<%1k3Q( -zXjxDAf2?hRi>m^}RRjDW)jjAW)gPAMV6{yuuVTCzZ=w19&bB#6>1hcU&`M-Ke1#2M -z-hxnrI4eAWz3i60*uISEL~g7guL+orQ!Mq3l^SO;^Qid^$0JQ6+8iCm(;Ps#l -zSlLc+5`8GF3;8ruS7lf`>D5?IZN(7VWkWj^-UC2FP^-$(LsB|*0*-EOH7bd0tCGptGSV2U5-^Le$f(_wHx9vkb@!^e -zVrJd^Qk=#+Nd28^<}z)0h{%xk44j}Q{-hvr{431R$#C^O&~Q;arRF@H`5CnYlyQtX -zho!hWORdwpPa`EroZ(21DVppOLM+lSlE8M5Q?mM=d^RMN7LAxD+)mriB#a -zYQ+THQzrP$z*>OSwEK!YA!Pd4DorY$lZMg2wSX1ZN+B7#5sKPKKtht=^@-NyH5o>1 -zd1})prPrqW*SA&zRf-P3}oLi2JK2 -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 -zKWPxX1d`WE{%LLsN7tne -zv@Wcz`^v8eg}2h7BAjq=bo58tF`ms;R0@5)6J3%oic+B+N$l%gBdK2j4J%d8VFaN> -zq##tlq;WJd_ZRXzhS{R0v#1jf{$GG#;J64Ab;@}jM%tzTS?Hgm3vZLN&hT;92w|S9 -z4ohlgq!lcz7t=xCO<@Cd^`0>iWrWT+`6lvgcC1r(FTAYz%Vdxu;pZ=FwTm>BwbTd7 -zG3Ynhuup2jKAE4iUaA9Ew|@6X;-=I3bkLAAD>;45HqABy4)l^amGv7U-}H_~?amjS -zXSV2z=OG`monTN=WEdfzdfl?!gYkp*EaA#g5Ezy?5e~o7aNv5>3+mrkR~Ee7+ln_^OBde?hg@FL2k-b;2u{*L2b$SED0c*&;b5M;1kZaO}^ -z^3vsn({BfP2qs(@96Ec^e8{_@oc;jb$BUU)+zbi>*+bAKP#Z59TWm}NyON>g>O0-B -zIhhq222&~yb3jgUSB{$I=_0fOYnJ?rkzte4(L+4`U}BB1uPNdnfT`T3u=mBt0EF!vt+-vBID9+so7%JWBoB>?vaO>q916`n@Qx=sz -zgtP*!Cy((~wI*Jie1wZ4o+^|MXpLyyu$)UzKh?5Mi`kicMSJ39H^QxfF~H7nqN&j& -zupX#sb%PN5`eUrv#uM8vFM!e$9NAYJ2DS9@YP6x{8e^nui=CQB^P|Dcs_9{4S>FMM -zOS-B~&0ds!O?PCI*e;Rd6WLH-789JX#c5M+AOM~8mreVYl3_YGKoU7C%{?D;zOmWe -zCEi$WXFStN=57UPx4sgVk2+$2O%{nH=$kuq&ZKhy+l^?!ksk2SP07 -z($oA$>~W4AY9o|LXU|}tQYng_o}%anV_XR+4m#h(nqyD%aTjET`EeB%5iy+8{-j;= -zvTY)XM~R^qYn2pm<1UXN&&r{L(%>W2>?1g)^(=CkO#^ehUezF?BymJ_ZC2#a<6FE) -zti{y1;i}Mar -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 -z1JKk!2)&f_cr -zAiLG%d+I$ -z;tW+!;nFyDe=F2CKF>*=^Qs4prwoBl9x#wtABT4@MHtjs1zR}HHj -z*Q07+hQ~^~tKN+fVZXOX)h4P3(b5*CnAnC4NYjgn!uHYfLsO?>Qk$%n#M7B%q$GEl -zaZ}J)t9VWO?QS?)Ew)Bc=vh{MYs$K|ybhyKr%Gx7!|(T;)RbZIj8kE`82b4x#U1071AOgrvx2NU2Sv^kB2-a -z`Irrt=gQGqJ7aaLV`y8@aWj;yl>u|YDJycxhT4E=HeiNY5?Mb$uJWvq&ZRB%G+j;} -zy)3tH*OHr<%Jn=_>jr4K$7$;y -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 -z#AI!gaiB#5w`9@oXJ$`NQ&Gi=YFv4d< -zFBpD+!O~7yXfF@Z3C?V>ifG@(Is636qG^b+1<&|P -zk;x}R=lJyoyuZ0f;<^GNmgFYVm|b{kUD&WET!G!qnh%|;`t~7@P;LL{#-AJg)K&Fg -zvVcG?3a-Gt0BL-*lZehovua28T3426-QTKF5MW4Rn%;Vj(h=j;Tq6v7--`*R}qo@pX@P!HiU_7b8A>T(l+CI=(pOSgO2%j -z!3U?!!`M;f*pwRIU%=IXDt&srSGgYK6BtxeSnLAXy^}iUAY0K`Q}4-7AoY>0a&jTp -zXy~^k+Xb`qlvmXou*;Ysa4A&WN{}Da@Fj^H+EKG1@*@A}WV@(d-ZE)*49z{e=j5~h -z_^!);cytP#){pOh%PH~e{kz>Gd1CQP_S?Vj-`l7e(_UZF(5iVdv}%z)X1~~FehhWG -z;@?FuhK~QTAHZpnKB7BOsDxf?(0|vX{_)tgZn>!+Kfmc7_VS$M3uprI=L^Ql<6jk| -z_!0Tmu#Bso{n%|z>AU&%ZV6Oa3B3iQrLizY -zJXFGNrgZIG*6dfLF}Af=AIM~VU}_=TcCc;0f42$(0t6Oz#{Uq6 -z+zJ8XigDi9q|`l0#@H5iWnIvEG7hDQ{vwz3n5BJ5TdGm1kF=-+)8)bMIp%EfB59FO -zVExI}*?mb(9mxb`pwB54%2kL#8Q2d^dWj5B+~UIn)ykOWWEQNlqmfoArbt(oOZl5y -zj<~Rpzm~!mTZ~!>F7r~Q7D~LbxP;vb@yI>wyhW1YZXC4I&JC*&;_Id|5A2W9&can0 -z>8O4d2Pgwf2YxFKLiwF#EH5|ymR7gaEW^!u>GRF=t!@IiLheEpo~WaTTK%e2XJLtc -z8U*OpqrF)-D9FsyX)_ERKz`Z#Vnnm13YLSRSF-Qt&ky^MUs&-mI<^3FXb}$Cbnw*1 -zVttMt6|_4jZ&rF2<_UMeV^g?x6rreL6QU@cPdCP84%&)OUK7Y9|CA8&Di;6FZ6kiq -zRIYTtpXKp{n5lkq+Jhs25m^-XNkA*@#F8yc0xkA4P0@8z=s7K -z9)3rmh};cAb+>C=1Y#s5qme$J7`9-S)}3R^YyRGW_Zb28l~dq}{*TF~$&^N&2asyE -z2Z~~~Tj=Jd8&gTASC^U{JMiU9=E|v3OP*bw3Im+|wYBzFHCy4H=1IXHP@vekXBj#N -z?BWRCdGKx(K5ON^c7QS!0N9+3HE_}*9&JQ+SL8?i5jC|-1PWLSp$0GP#YUFu>H-X3 -zk?xDy9RqAmoLw7oHStPsrl9&)&M;xUx&nhMT1rA5(=4E^Ib%gCzu|%Hb$4bSTBi!b -z?3XyCXro7K;C6u)RvRa~htua_m9LFjHQH^wxojVS%!hVcNp#pY;{~N!n{f&PAer`T -zg7C|czX}Xm&Y3ayMmdGDOP%;pHKDd%00K+@mWdLu$d>{gC(|V`LP^00phRKCsfi=tm3rX(lXj67E}$(AgNwSC -zeldKF8IF&&Z${*z)P{=?HDs*xQy5}mMotq2D>mFGwJX%pyiQ6pElBGd-ff%K$5%&vg7VseaT)gnRm><5$bh0R?~)PAhF1o2^bWNs -zpv>Rng;(B0LM9ZRs#1&uQem}wfx1OK@l{q%EafvosbIqX2{+6z$>mu_Ki~`8RHRPQ -zQ}^7uc)`?tWfi~>iJ8=Pa}SWb66YdmzZ;h2f&SN*1lFSp212Qj-;a9hB_8=`oqn~Q -zI7=&Lv)s^wPX|GNXM%5+_rtfD+|Ga?;rE -zHdBN{8fJIdGB00mjDSD9+LSq=WVZJ1PpvX96D -zFZuUcr67F>D$xPyv}Fh+*m8OJweEF%w=3>UeJICZ%)It3y4k~u)Zht(Rhzs7x&+MQDdVre|p3}XUES0$mz -zaV@Kp(9jbD)?6s)XoZtWuW2!kW@{C??POp}t6}k|YrT4yhlGR8Uj%Yhfsr?zZ(p3l -z(xjLaor&E4Bb?0h$;jhD%QMKtN4d(X8F^p1W7lVOT9%LuD~~oprGg!(BqGX!r+{XFQeiM$!w@{ -z&QwXJu6Jj&HmK3Rf6EP46>4GD7rMhEG~6$3oTITmIFbThz=VJ)0He8en6@AzCcvPh -zd0+!sT23S>8lI~EEO8!3sY@;T+CQ5kSE?ZDUwRx|%bBcTpZdtteY4+6&Q;3+p3!YR -zs`i+pq|O*4tOS9ncvone8kRq42lCBCTHP+T?5!tEla)+|wCpBu?R?lVIp|w1Vf8%LDZ}$j~0)4?#Xy -z(?2O3RGFIC0>>~?gsat>L&L*G(^4lr?amPIsZ9Y)qdEI5m{v_{{ZU)0&!4$H|6PtZ -zL;hRJyX0?F3)$bH`0gC@-<$uf*!Ss;gBwMYz~($LDx^Jy+wW_VU6n&q^k$z`(e2VE -zqpuuM(7DUIzCOtaD}?~U^c>oI_@*hoidLiiGi;o5DiA1|Xq(LA>!;UoI5F6L{D&31Ew#f0CZLFlFx_)m- -zPg!PwBo%rZicvbd%<`n${@cEiA?RQ3?frWE@=I)Zrn|^g@7FK=_3`qGxVv6=!Q8pq -zXH@z$njx-fgZ={Y>OxEX^76G;TxtWQkqu!Ui)gEQbfZ_b$3ZxE({YVZq6>Maje;1U -zW_apAvQkskBtw@RUY`Be-ud~)cr9iXy?Bi?OB4@dv;4%39ZJ@2E$LOOaHx^XsSz0j -zhBYI^{Q1!=AMjHGJPujYV?y@iO=9QxZf-!?!5`6B*Dy@Uw+&Em)yej -zMKzpY(lx1UQ<^vt!OIXyNVYd8I66B{YnrT0m}2qZZ_G4FR{j{8C|cA{sPbjTg+a4Z -ztd=+#u$H8@4LLg4{96%ytZQ`kUjmJ8n$LJ}MLSS^3_P7d1xnaUnM68uM~Fa$y2Jnw -zH=8Xd)Woj$Va-KiwEH>5r2!r?=~EAjciVZ7r}c^PAvY+?+90_ygrtHO%OUY$wwKYp -zWBD$IcL@8&cP3^qX@RA-iKKh4Hxi*Mu;rXJF_VJ)qJ?5cI|`Bj@=3oy -zh-~N1GX2)Y-c?(d8?Jt(zv3)Gh3*)wn1>xH_=ks80gZqWwKnX_&fCPJu}ZsLS)wgL -zx!Y|r9mG!i`38~?l+A~`g=Trf0R*$QK87ZM;!rb2QuUw)7C+)2w2Uy!KYmD^8QP6j -zyK!+m)E7(oYee7ZL%)e_;B(aMleq^Ue;hzi8f>MpC9}pase0A}b%*yj?x~jrezjFi -ztghY5Qho;F=HwF0dMl6}4Kmi3uqxbU%Xww=ufQoaaQhKm_rcOp4>XcIj5&#kdg(gc -z%8xSJ!tWn1HQ?MI$i2lnGwAMvn=J1f_)DUpgbqOXZWq2@m&9}Cn31A^I|n6zCXOmr -zc30J={eUi}PCIf^$7nwL!Jv=mO&`d+i!veIZxCBD_`guIzTzU!DW9~ -z;^2Jh!_juWX)Ui{t&=~|oMr~nYcT4$6^gN_uw#m_!U051r{Fq}Qk9|#nVw%HyB?81 -zO`OO!flXqIEHpAMJ77Y17kz}VS^JTFZchxA3 -zd1|*@N~gDeZ+V6D!QdC1G+1ZHom*y-Z!9oz`0kBfsLwP82yQJYwoQtvLxq0@uYh?f -zWCq!4pSVz&OIHy#BKK#rYGnvkXl!TAEqFouotB)@(a{39IcFwd-D|3I@2v%JE-Pm3 -zGnT=qNxaf=NtcE;UtuAT419I%)o07T9h{{;s_zS5()Uw-E1bfO@iug$S{ItnVh6lrG -zky-|lxcle@3rx+_^s2=+V(5lyCalM -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 -z5Nla7vS+fh?I*6G;cP-EFxn -zyhE8mm-BnqkCM;lN;?S(n;i7U>XOmLH*)w@W`uR@_vg3MIlq7WbzI(ojsAQ&>+yP- -z$Ln<-e|_bj*MWa+fC(C{1|*J`7k-|3sL#S -z8@=od{@VM}mSMO`(405sDD{`@zV#Nu;Dh&{<>d4q-z0|C|2hr3>F^ussrB&gR@aB} -z1R2TQCUO-WW)fnS(&foK`uQ>li&b$cX(*JbBODh`*}KE_e;LPp`*?9~WkkK(KDctZ -z&|xQgmi}7fKAb+Q`(>ZfwD+`G(Z9Kzx(Mho8Zt)1$>Hl!eNQ%iV@Ks@Lm@Fi4e!c# -z+i%EI*v)QZLvQx;SNSToq!bx8N)Pqhk5<2`uRk_mS&JGHvNe&u!BstuqkP4}WnI6K -zQyUij8p)l7EVHTb-UiNz3;U0ODYzqSgB90$*A^;e@DK7oir;82L*aD}U6pfGpl;^0 -zc*#V-b-sw0h<4C1bQ;~m213J|UmNnXoPyg7=$e`{mT9zgZ_I4Vt@bktGMF$BOBnOLj|SD56SX;6BuhIwm -z=&vPiAE@s8`vdKQTlFe*l=+z5(tG|^m=f>>yY|_$PnnC6CKFgygTJA$w)`RezznJp -zVdmDzX)P00y#LWXDwhL1qkA^4^h#vlOg|%opRZ?q{?}PQi}}W3>HG4?Iu`*79?9ie -zBd~IOE`b=EhdEs%KtOji?JLASH_Vf#I~2a84R(V+4_;~7#05@6w1{Y?JEitP{c~AZ -z1}3A>0Yx2!!K;lerEWmZ=)?X3K>6mB*ycW1dtcbry~4UFh27YnLIPu7MB&G=d>#&n -zB9#jBNzcZ%J6F`mki_F`fEG{)<&_$Qdc*KC#Np5L*fL3O*9JH}ij?P)us>)N?W=8K -zp=UJin8Fm&?w8gW(D8iP6{(u(d|2LvjmgG-`6RXY^AT+6?B$Kihuy>8glRmu&FSv} -ze&_pIa~JMuF7@C?>Ew(zhbAfQML?ujVS&r?&cshP{1b~>g?q+Cf5nW{hz5mp8sUQSiFYlC9BS -zKwknA^}bF}oc+)#7sp&w8S()9aa2*|?WyIowzBl)<>&;X?484}Jd{g?;}PyYbI+dlK%LsW16R^OEWF%{K_e>lvVbn7UNZH^WWh^q@jY -z$RJ?x))d?o*5mV-bPb)x*8e(jJ)L=~F4Dm^SP6>`6c*#m#(6Q>khcE!9zZg?y^Ko< -zcKOnl!g{7izoU`w&HJB7!toDIVr^iqfD0OB(HfXQ?Ugu -zNB^-k<%8K9!~0TJMKA9pk2+<8p^0U0;&)0ALER@Ld -zZ+aJt8&4{ejM0DES7JfD=b9G5py<`Bt``d+Yz)IZ+KXRL+Z -z1QUr)uQ9g%Q3HrKb^CEQYWWoz*-!CB8hni&gKX_JX14gw4X0~OZXdRq9$+sYNQR%j -z9MZ^qQ45JNUYGed>DOX;TR2V&nYL;NcgVjeo&^*oQ?Zdr2b4EiMDLcNh^j%Wbc6BT -zNOcs-d=vBq(D2tK9;XWYCC0X_u-vkEUv9ymnU`m|962~&WU=J9czrZb95`3~`go+j -z%e9YVdPaFWILHZL;FH(}Tiu8f8%=YSm;P&fEk6kV{(AowN8{;5E2%@B)9FkaYyD}2 -zmf}S7J*4tJzB^dbKQ*$&=4EjoI4o<`WuQoPtR9h@6*RUoWj@t5=&yoWX95)5(An(< -zKY^-Hx6T>{0Q58w7};8yx%T0t-Pis|HF|tJkowMm-7E8HB2`rM^$!KAF#08ns|}|) -z9m!lFFWtywRx}x)sI@gFL>Wax=q=+n(xN0k$#hmeEPe)KkqJ_|^QbtjFNdd$cQO1Q -z-z*-C#%B86@_AxipKb&Btx#r&Pb2mv`tj3yV`gI8%0OELlvQdk=MY6^W#hxU!3*%w -zGZ;hx9UgPSZ~(gHK;AhxomM-ar0a!gkSArcw~E$cot}$ai^J2W#nc$w57|IT%t@JZ -zUVD6)A9MLAH~6x>pAWx}*{WGj#d7OuMXgJjql4^xaeEo)b7eOqBtTF!R4?m?qSL^P -z8qwWmBqY+$R+aULGSnjfXGKji^thEL%}9+~BNiVbEKr2(xhA^2JwD#vPeaeWKZR({ -zBm5G0NO%9x)XI9hWEeR*Dgc)5h*V)Q$>G7QQ`TC2L1$_C4ghZf)~k%` -zPVbc*T=I7{ZkR@^z3D8ifMZT-ZNU$DXa?uYmg$+(kR79*B&{nsEJIdXwXTIY+Uh!5 -z7rPrTXs+(G`vy6lDGsqK5~9*tscks9u~Q~PzOB%^Y>pj2eUiw+m%;V -zO40&M5@@AqKW|qohST>BD6Ar$v4OTb^&bfrmWd)hdNjoo_B*^}^uKB}d^;sv=_r4B -zvXYCmKDmEaJ0N64tXlhyesg>2FjYDTomNUEb|!lGbeTZkyo% -zSU{)0{coVxbgKsH*J3PL*kn3YvDyupqqqlbf1DZPp>-U5DTw#YUGG7N<^&;ZyK!Db|1LK8?Q-sFz5Oi9 -z1Ne-ePo;0a{rl1mcXQ|g*|Y*&hI~hIv{=%h6HdB_aTjx~FB?zSw0v)YJ>B9#bfjbR -zU9JE)n4;RWJeJQVm?W37RYAv45o4E~0gXE-a``Ph*Hb;hZTd$Er^pKISA>737f0#_ -zCdA_$*FuR_c@NPr1d@1#a>7{agMOO?LB>vi=wM{CkPJ-(+G_9#l@9%Zil!4Vl*M1oi#qc>~wd#uYpCuo4j_M`av -zwlFX`ukpi;?y8jlJV`Q;&z586P2QHn0Q?Sg0^WtzLk8Lt9SEQjLm}jG%vc?lCL1xp -z0+N2DbjU8CB8wf5XPWTmx1ZTNdct$g*M3?D!?P(A$@6h}R}oHs{MV{(XfTPe|w5_b0T;;={ -zCXtL^vU4FuMB-LJPYC{`^zuz}T+vKQAY; -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 -zdv<|9T!SlI${R;*g$TUBiq& -z!+@1fnrr4X2Q6S;Cb}GH&+Ip`x5&fdwMpOQz!mDNcdpLiUm*X37a#5g$FpmIj=%zW -zyOCXi7mM{wCLn*j0?EhoZ568%+-qb5@cQEx`Z_EY(E*fD+RNL%ZLxxfKRIaofGi!@ -z)Dk)S;(NB$=#$?&DQEb+QCwpA!2l9jY=^LM4gL*(JY!tVvZYH;F$426KJ?*>F0kiF -z*E}YAIerWf0sNWyRy3s&a)dYF0pAu#h=Hmrg-&lYpB-+8`5<{Bxi@W5b?gTO2t{z? -ze6W*|;=+GxrLG_1AP9r3W`rnKuw(d3ZsEKK>SJmZq$a}0Hx5U)3WNIAlV#ky1Ofs5L;{%Ge`rsVReHfhlgj}KPl8h-a~9f? -ztqO`VR27k7wp$Pq0_65xbquKZSb6p=ySUMdj%aTngY1y@q{)nLomOYlWWs#x$-xof -z70FHL=&NLjsDPuTJ*J#QH-CPMd0NY#KYvI|;^4WV=WT-{w{^5$rqK63 -zR9sO=KfJ_<@a?8kH!opi|A3AGA7Jy`mZ -zHqit+z2jZ&Q(l$Od-Ou-EP5@fmRzr!Ssrp+i?9=PARXg7q@H2&Nu&r_7I^IH0ypm7 -zmE7da837Fi#6y(W*ejx?KW|Y|on{olY!)GhTq3Qn+0z`bNW`A=wCSP0$@U5{$$nBw -z2X8A}qCwj?-KTwci_%lbuPH_BTtipYfGY2EPn+J-M2Ognwy@#aPRN(*gRqJj$ihV|{>kgYu#<*)=) -zD9fL&-@*+$u~!VlMMN&NVH;7Po$tglYHN!y-}BG2VdM&uZ8!pG1gB)4wA{#OoZSs2 -zzOhFE(DP4qH0Y$NuLlEEJjupg28}g6@v}Sf7FQgwp|6+nJ2DV%%F#BmxqoPT8U6Xa -z2thu6r4!05JdPV98G5{bBQMEMng~KA!cUYNnhcd04ZWLoOyVke8#js5ATF|3Y5#_?)7UaOfxrPFy9-d+KwEOSk&(Q) -zn~~em);%sj<-jTxhv|;q9e-HcLd+3=f&Jo+&hKtpj!+Rk;zrOjafW -zmr+)gfZCFTaVXXPhXWuVR-(3WjOk{!q*iU{qz>$HwTwS+C19Ff(<4M6CKA^B`lmY_ -zc@u#6pa&Nlw%un<7OS%d1DQnVHEI>&1Wm6Y5X6cmnt%B~ZV4J^^>H_yOe>EhDV%Y7 -zh=;t^-Tis636!=9EgERmweg(#k->fk@a5D+=`lp>J*~7~|9n>&Lw4-othIJgl(vpc -zN+iBvxuRDa3<5S)Vs|05E~k>n6~Ai*n@?+nDI3BhYgAlV^~qXt@m88_c1zcpChe%g -zW`%;Zlth=cbqcarI7g+J>rm@Ns;q23=I~C#N_cw0QA9!mYalt3H>imRWDl#`F-SZN -zNWNr?;7>%~#h#|+DBh3i&3RihWe@qWg@T+Mc@4jH(fF2;$Swa&Ym@FfVh?}}t9OzP%ad>FAJ`vr)53Mu*| -zD+Fvu>p&(Suc?l4|6QlGM>Nf=-`MhN+0~~@4r08*5C(r$Z<0hDZgQq7%e*81NNRIE -z{0OHX_(2Oa`;F8%%He7CJg_toM~eMu6|q;hwINldRH1TZgqE4kQ7tiaK&cV)dIY#g -z2U2jn=U&ePtb(j!_x0`qn75GZZu`?$^K=H?JDwy+(qBCP<8r1y}uMyIIIE3WIHKI -z4rbK>Bv^OuK@RP+d4}FWR7|_SMKSlZV2B+g$AYE|bUe9s!=zQu$ifp+{~!M5Ie-0IH#*dKc*Czh{b*g}l$Z -z)k$nY)V -ztztzJ*l_ucYJj_VJmx(?*<78KdjNC#(o07N>SOQEZ2gEWBk!yvda3YU8`cTfZx3t% -zb$d{g6@;@C*GICl$Z;f%{DENH4SfJZ#Z{ -zI+~*jwAt!N&$5qneli7srVw+e31?QGg!z$q7p?&D+c>r+m52=^Gbh|R1Pqg5vV+Hv -zwV7o%J1>Pwl9uN}pW$l<6e<3`ha9XzhK8}g7YOmYmn5_7XHoTOr(%E4Fws8Bonl20Ev{%87$=Q9gzoRa$sadgzx}`twp!XLF;ng->N{)*8q4(FkADT -z*WL(Nrg~5$vk-iT& -z^@+3FThbPHg;MAmK^a!^TF(y0&cf)7`vOv_tF!#OAm3Qg98JokGLQb` -zSn^%n>aW|JRzAE8aea|Ixk -z3(7mK!-RQQ6&Xl$^f*Hsq8BbeN=U`DT0$JbwL0F4fiX#y)#!()w_Gu*YJ|6}ybu@) -zZW+}dMN$v73Z*(|JwQ^^eW-WJp)P%nmLs0tdI6g7a{S5@;s6(tycm@cgM21MS2;rm4X)CX$u(!m&*5?Ah@C) -zYgc24y=CB2KyTGcoKo`cV9>WnK2}S99*kWV@U-aLM|yQN^TlcKC#xMY1<~=WX_*mS -zKkMqXKKctAP7qN!ZwH{3%|u0oxV)sO9iDkS7&Y;dE9%G&8eyWdV}NWG%3a?=)G!~{ -zMv&Afa^Pg4Ef>_Uh@15B9Sw>2iw#}%jyh!mvsCV|QV8%+RAuW+VF07NE;(oL63lh{T$|{@GSaoB> -zd&F~4VKH^fAvLb-%TAM2HJcFI$BE>gF6WAVO>OK5G#^wjTD9RIxgczME!mx2JF??` -zC4&V!K_8-xjIJ(Kpq@hv62sB*SuW@_Pr!bi;g -zE-s%WJhi@{z6MgaRvpAIZDL>pTO0mCVi%-qFv=hZb)4g-J&O0xhcpl3CMM)DEfW|J -zGFYs(1%;kg@y5ly9U$6tzy;tN2sm`3#X0V4PnSk{C#eI~eCrsnb+EeF5J$5v)Sm7e-H0gyy+m>4-Zz-SoxNGxqU*pF_8k -zWr^3r6`dM*{YC%K`Z=unJB-SSt=zD+?QIrP>^ -zbCQYZbo9-QcEVeA*q;}&;TJGzEPML2?@m|hpXp?frEcew$L3Gp8R9;TcTxA=fWmo? -zt*x>ep*g16qZiUd%ev^Z4kj@c21-L-UyFNd4s4VqY}a~}yg7Np;l`Qu(-wf4 -zM{b)7dH!O*YCeHgX-d1G%x(+|ZF5P7jFklo?(3+1o|Ed=bn?DVvWz55xC9T`Ei80c(2)jdxMT^A>K1}J%{3apG*1J9VTka}+Yzl4a!3N3 -zyrfXkH-R(?%`tz+4O*Pz=HU%S-k<3UwXulxejv!D%~>g7)VqrX%Wh$HF>TZ=8yn!Y -z1U$TZ3!SYQFMZXk17e20K@uZ!5wR%aONE1UEurFI_f3ugX*^v?n^e5dewa1!6OTkl -zBcUz2f)t&jULHxFc$F93N99N#XA+l~7+14PY8Cp$_Em|`f6v!Hf>*(bjCoTyHt(|{ -z6YmvgTdbcPmcjM(A6uJjHSZF}CGkYQdlL=RV6CqMyZH!WxnXbKwP<*aj8efds2u34 -zuu*ctx#kvCHI~SYzn)lnQYB)w=5&G9Dpc+oj2&`uPnidls6d@yh02>_x;9P1sO%oD -zWQ0nbO_q$j02p*^>1!l`MDg=!F#2LA`02u06NNB5uqTXLT2D6#ZZU2K*S)bNi;4_@ -zB--4Kpp#Mi8`TYDQ&#RPT6H@+au-jQJ(9#+L%c+!70K~Ks>VbAPVBFv=ORUu`Ij5y -zxH}-#8Uf&f&d4{I%7Se@cZ^v)s;A9S*5pEUNx6|&xN+L5sE`4?%_kflSOxO!{l;${ -zZVd_fIAA%srTZcuV{l)i)tb|~vW3ZQ2;7&5qsnjG9fy?BQ4ff)NB}>e&}ZVv9k0Ff -zr=+G=ZT(L=-FBkC-4NKhX~|(d099?%xGf15elsk=5wpHSq1}%=Sz_#UW1`dU -zZq-~EnvtWH+&Olj#iv4N9^%P#yZdU@VuNGcBPYcnKw73324`%LZR@$~TDoUM1_Xo* -znPd$8_qyR9)8#VO{qpncSM}@j=RZD;#$R9Gs{Vbs`+uvO%nE130XKRj8_V{VYmRVV -zdlEi(ajw7owi=@CC;--Ky6JA8JyIE3e;rY~<-dQjU(D9YRl&l;%oqtEm?cv*YAG91 -zO1%W9U>}e_Gn2)5D)8|mN?$gX>wHCBKG@(!S40ka^436M4ezWDvl;BZwuny!P>M2H -zf$+^5#>B*h${RJ(9KQ%&aR-olv>TVSb+vGX0*v*?+m);AP@-1RjcEe4+K}oHvp%wD -z*d16UScq3-IJrtoy`Wi_x3Pz!vF=Q58-7DXaocA>%DTC%RKpwh%?&|!Jpwl62<*`( -z$*TJ;BuBek~^O3mKfvn%NRi2x;A7w -z1Z-YbtZp5SWcfcHtQ1hC`0?$VfQY+$G!~d)_}eK8BFa)ik0k;ed_=vh&|2 -zvLi{%<@&BZuH-H(^e7t5>jC7H82K77Iou|8ZY04$KSA3rr5;cL*Cf6pTBPJQA>u&x -z57N0@aP~aFHAS)$-dGQ85X7pWw=`hkxF~m0tTS|FIN$fQssC%i3g$=6FglC%4R?O% -z_Cep_g}WnEgh{bfJ2~1%#if7W65}tD)LKCS+j_Eq)N$wF}2EI -zE6L{yCBQ}bH%r1xgRXw-bLr9kX|MlzjC%^00!@7=gv9reB{SVd@BK)B?7a6X1V -zd^Ll*@{_DAUfq$rygOLkM~;`kDxL@FLRT1jbvwets0!Rr?}HV6u_b>6n-AGAmxgRA -zXGSH0j^kY5n8nKGg%~4B;fgE>s#WaWHE}z7 -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 -zEe9aL6uRUql*uDkMjIOcNGl -z1=TZAUc0eVf#rkr;h53Pcj~C^d(!OS^I<*irmS@@>$i# -z&MjZDzaF#UG_cd40VLb=v-9IqBq*U -zNzI;?|J0-6AAu;TTC7zU0al-QvJm-@R=PH99OIXEY#sr&dnVcl(+Q!OJb035+-kVF -z`GU|cPz!j~DRzc+c%$r&EemO;Oc>q;U=)9qgvF`Ln9Z!3n;Nq}EH&QwIBa-%IWkT1 -zt+x7uAk8XV5ixQ)K<+Ogs$vPb@p#^YCu2*hJ}0;Lc!zbr3fdgY1P%Q3ZW-2Pzxs={ -z5z|EV0kMf(St#TesD#q4-Y@RuMzu>qSY-it;Szv0p^LPBMAQ%ECI<-%Zj3HtBK%&t -z`?cA1rZ~UH7%N%|?j%u-22qYk3kv$x9jY3}8370ucZkoEo51May`s>_18^Ow=HYmq -zOxKioGYt9yH&Y5Tt=6h%h(0z34%!$%ac9&wKzZt{XiBA%P$`~4x`v8^=eIgMZBGnb -z0z8GzFPX*^sH%RZx$zg-?q<~9uVIvW8@H3nZVsSS3kH?IJCL!+&G@Oe>Ek<>pL2FQ -z{Y{oy`WrelESJJ`B6;z!WIR1lV{{3-w5v$mRPZkjiRUP>0W=hB8WOslgw4A-`3ay| -zg&qkL*=E35?75sV$#Ot_&feevQP)KF7PA_O7=z`Y^*5s4Yb2@8I4vch_#g0bps>hZ -zDudlxX)$Tw%avJw2NnoinTe7hfxX%*38QFpzFc1r3$?#Sp2+|Y6^Vye4La3jKA6mh -zMPQwYN;#2j5cMnA@cN*fEhL1q+-~C|!>8iip4qmze}pWE9h|D&`Bh_&T;1BM!O?`< -z;qm|{>qtk&+-)K-E5=wT_?5Dw9D3z_$)$ymDZM@|`zLpdR0UZd<6kkcIFnFiVr%Kj -zCTrQVAk}t4rH@5b-isQoSjkDHw?4cQ5F3aBhNMfbV4RmxkABIxr*DdHp}c_@=tE;^ -zTt>%%(6Iy5HaOHwWyBP)N1pSpH6W?D>j3li>lgPMkv=9{ClA}wXr+|-v|PyO>h=@| -z6=rbxBneGqe~c;*TuNj@>fEsH&MYyAdvF+bQf$!7@$iCvg4ILQ3z7p`HcvOtqH@`T -z;rA#_+GH6>JrF`v%q0*Q{(`i})k2vJ$BEFXG;5J`B$a;U8a=?W(admBaZgsdibAWX -z`?@LmQ}YA>k9h>FpKEEXLsEDN;)y=ZXhd$R3JWcrVKfG!DKMBJ5YT~*6d95w -zm`!3%&@JI;zkgaF1n_AfC^nK)Coo=!|8eEX;J=z${s0q={Kdemtg-m;GP`4yKihyf -zg>WLG|C+8GYRg%zmzn8yR?|W&LhPKPSmz0`wIs1IaQcJWCHU_lkI{Q1*$Y3VMHh(% -zHE5X}j9Lh<2M0+|D`Cb*`lJP;5MsU8*vnm~pWE}_m5zgPO~$w=&OW}8Y;@hRKKCK^ -zq^!T3U_6q4a1G0L_~c)vA}B?s*FFr6h+Ai7#@CcsTq}Ug=jH$`O(6j^rHGNln8-(L -z^BT1w23n&}8g5Sp{vw;#+alod_5#!I969Qi9cWg|`t%~#5NSi&Xe|&@07O8$zmOY_ -zq2ZP->+cs-igL(^O9p^%lXqk-i?r_MD~brjWJoH&3Iz_&Ez^paTW%x -z^E>p2T_eC?4X*AH_D!Zm^7KiaVnvF%0tmjTf16R~MB9NhpZ_x-MFTfYC~aJeqmcNS -zQi+S`E&=z85~ucnvgpVdcboL>P6fj1-93vVumX&#)KID*CZE^=1~kF$uEq6w4j1(3w@Mg -z@X6JwEj)L;Y|W}7&hN6_T(d=9oh-a9=-1-SW*NF -zpfga`^(HfEeaKwE70sm*9k&{6eH_?@?iJKODXwiUSZ~o3V -z@DJxqm6a%Eg}ddr-IN$1nVa(!;G -zF%+&MDMZGJ;^H)qA0(@4bwoX$yFrKP78SeNUg%Pd6f2IO1 -zE(`^(duX(OwZSGP_o~vea#XSg5JDA2##P@;n^IIY^Fh?Wk<>ICLl71vdI8fhzq4X=`a=6|ZeF+^2< -zj~g4G -zw-W)r-NfRnNhNb}?mmjB1$1T{yzvz_-qB==GsYte3am)W2kVmIqM8Q`N_-uiLsjHL -zk16h#IqqEZag#KlMl`FN{UzIuDW_>eEm+K&);hSs38mNu;Km@7`*1~@2{2YB-sJSw -z_u(Qte%!yfC$3L;?85*s$KLERP~~E3GtL$~q!ra`fftcz0K+L0y1j|E#!fyS><~bW -zr5b6pi#k6n(D&2D&J|~e2}0Z&#u1(2@R8R&A|O(D^eth!;kC*1HgPj2D60? -zZaXY3F8v3Fb3WTrJ5mxY3gk{sRJ*UMMUZj{5YGHUJBY3yU{U^**VBh5xtA;L>m#GJ -zLtW;cC@v1Y@cnUoMOxUf&K4k>31uZIQi1G1*LhFofv?eM0r;`{i*JvVc#E!6H2ZD` -zJ5)@(#rErf!o6u_U^$wV%n0h1g?vhq#S6{{<`g4Wz9GuX-V4hPx>s1^`%1gGabIs+ -z#C8r_xGh2id{4!^ljKVF*wd=UYO~0NY&ei(AZLZzeRe|0+TQ*4G{Om;-!>qb$0h`4 -z6ULqM!wJa^^B#?+iHYh_CQ!pLGNO(^OJVUAJ!CrDW*6dM2{bnctU%`4)aF3J0zebm -zBj?t&tdkaRF-Xqu3LaH^_4xoxUqSfY2=0c;L^V2YS#^(}TA0=ZfDQDlfqfOOECK{s -z6LsM0%E>(Ras%VyuC0d2BXS8>elOdtefCN>iRm0AGE?TRdNt_X%X -z!Ho>7pnq?-WTWi>DN@%z)fC=1!Ui|BsV6_{PmND!)wmL%S!9!r;C)bLLi3sd#K_$d -z79EAi>Z~J0VpXmvgeiGBG#RrsqCF~jSBpzTT?U+ -zyJZvSM$)cU2D^bAVy#gWQHLhe@bFR;?mw3*!Fm{TZcn8XH7D$qu@kl}Y6)K2MxgVx -z>4Ybqrc%6nAdmZ@dzl-)XgVt3yEMI+qgT1NjAzh6>EW -z*tQyEtq-^wQ*Rc$fV^>Bg%JgwaL#mcpTU#V=+-;RnoHM)E1zd&YS*Ync%~c%Qn^3~ -z2(^j;gTU1M6%t^EUk;ngi-7(2*pf$Bc0a^oYI$2YwO_3HW1PrA| -zw7y#2*xz!0E;9flVwMJ)@C>Bvz|!}wTI2a7#TTEnAVEyTDPq7+D}NsMkJ9_w2T2p} -zL9HLI(1zhv^3=o6q3>!K1dz(LfB#k`^du6&UyaxI#THqVEEX0ZkUKfNEsqxT^@ -z;@x^>XcT=Oc^1woD0w}PR_uOPNPlIyvuw1vLzF1`^yJ8&@Q83J4Wf*^A^=A+c@8&r -z>x>^&lP*Ya5bIau_}N(P4mgkG4bS{#chKC8@TEaTuWq4Jv{ICoT=2im%Bo4bK7>qT -zBzO1IAS2@YH-V=b$$nZy$8f9-|IU#dYL>`|)#c8rd%Q9$16UZ8RswopVQ5SBezw(} -zXfsH-EG{)3p+}d&>}6I>7jhkQEfxWU_ECi?TDcP^MsrR)F`et`=2a1DvBL%xt)j?-4ktP~`ek*L?+caFWNh -zRGiTf>Vd5fgnW57rU>nJ{R6~76s`%Vg@&*!8$qAHe|*AE>BP*!4}*7kqcg$1I++ap -zgP>!>?Lu$roR97k5WR>)u%@}ke5!s -z3Kn_8_*z)vOf40AB}E{0#?`2!XQDTeWd<68;OU+l|9&M{o(>%{T(%uq^MDyc#xzbh -z>>B95TCBWgT$~%1KEd!^0b!xgHXQo`Dd{;E()pIQ5Rm;U5CBUlXzb;-3WteFYAvdl%t;cTeZr?*jB-zB`ut -zXl?YX_pLZlzB^D(!QuBmpJZu2$w(9H>u~o`dzq@xy?@tl_hha_8Ls=0vB4ScoqU6* -zbF8tyB3G33q+aT$@K&r>AeZA0*qEeC`HUw#31PUI(JvpxMM`AvtEWX_*?F><^mj>4 -zu8bB&tG`x^rc_);>rywf)E`%a#vW)zPxF#c){%;y4{+Nr$t8#_RGjVtAaKJ-&MaF3 -zik2=Y5|;!%1e7USG_aQBX!<4mN5RcV1a-9YX@>}9iHy1$nNhACw&ER*;FlH9>rI%G -z146zFt?gk*bv}(}TV0Q?JKz&h9V9t=TxtizvgNpG!;&Rm#iOv=XlqUCw{BLNfwBye -z`alxnECw`)p{lp^BV+=tHPbCxPc5u=VJ;#|E!SLn=6bXv7BDIa;Pt|F0lNoqrb$p3 -zg#p-LN5JiFi%`oar_yNu8)Z-vS1t!lWANa~&qD0_V)Jx1Db4Vo6azITu@qJco5 -z86ye|YFmC%QOab1t`bkxo;dC3jk{q%9}e-yB8pis7WyklJg48M)GT#D2Z7` -zq9IeiB{LxOk^v>(zal5M3Ra2e$N}YQLgsWfaV~_$nQMyv`2H%xtNQcv`!_XfmWk~) -zegj{s;e03*ILQ5*nsarqCjofe%p=Yf{Q-ZE4N>sx3wR_E_zSME2e5E$A2S -z^-<}{bLpE~y#2B#`WYvLbW&wHTOL+{u($3k9K=VFYY0yI>xc9+)=xY65 -zU^%i_RSP=Sv*mTwwuHGQ(6fH*@oAM`HXf20o$j;EeZH+P?#bb)sbSk{$nfqs-4 -zE2JLpw&rHFK>O`B*gY2%uJ`sasD$f5QV30xNP-SLpUzw}+P8l)x=ZGm{bA?d>+5Pi -zyWP_E`1r6B@PuN6?ehe{n53ER&PY)X5Xk<^*v6HSp?#6@f6L4NBlC3i*WbFyZaP8q -z8-?YIBYgs(tljLM{^4d{gP|>!;)jx*H=w9Yzv5?G()9cvA!?@rZIaH$@5QW)2W>z= -zuHMf}6Xx_?U?K0@7C+wgtEeA^zLd47m)LILb2EIwzFNb_r+##AR0ZKI;5Q1Sj=d3d -zLv65&v}2~eXGtNlhZM)p?{bHyna1_VOR#Iz_m59|q0Kt#dgG^1mV^5K<$L>zsW< -z7weqei_gKPh=g}WxgU?=rWdDso){&tw{PhICaQbzzvJ=o9UMt+@4dQM_xFF#BQn3r -zy>kEYuY7O2eSR}Njw5Y}xW``3q<`C(2#>#i^z$~_5B%sKx{&W}mt@D>U4MMq7d}3- -z=hW|$Wu#~hpn_}LN=svFcs#Oj$Nc~v1HQ3b;Y;~!`|;Ru|NWj;*k_UsAOGgaI%;MD -zw7+T;dBY*@k3{({0kncuFs`X?rO!ER -zgIQqwI~OTCR6{1t>)tu*G%OA!nmvHk0pavs8sjW*K^9w{76u-5OJl2oi|d(BvO%j7 -zy|<^kx|>utEaU?ull7)l-(=~4njR%2`bv=_s0P%-rYqCw?UXqu2QD9Z}!G0a#~@$FJkM>4%lxngViOV8_ao`h$^>> -zyXW($jRyeU^6kpmBF7yRWYAr%30e|}xu~KrB4#df&XfYL6;vGAwxIyjAh`-4uk|45^>CaA$Rt#^RtdE*+40O#v&O;Os;QgK8NbqH^ -z4*%DMR&#ouV?JcWZ>ZKq0gH-}K-;5dd;XPoPn?q>4tLqE|5Kqv9G8$nQ|})cKY-o3 -zD9Z&USBu}*xLt&5i*E(o(DWvyhaMhJjcz>){3CUY>@I4zGQ?o!6ycrD;w4eF30AM< -zpCZyv{52HCoPw5fn96qYB1JBZpNGDveL;J0!o^Yats#8%tLM6Q_VD?y8-$D%*Ysph -z9Fp*${bxQHVlmSoB9Ii*rk&mOR4H!jA4cr5xZHSfr}ZjWIGl$>LAdWf-dTWlT-v;F -zD%?09xZg_rQz@e=;bg6jU2+b*DkYR*V~}gk>^`*i -z+kG-^$~iG`!@6)dxR4}d0Oz8C99xAc2#eeXfV5B-UUTXxb>LxNR*5@S -zT2ZZbnt3zAo$C%Yi|VDv$Ku_Me*oS=pc309an+4+{Mx5F34X27Pz*iMV<1Zv2-Kww -zr(|or77dV6ITuLm-!HknnS{<3W5v*9ETY&eg>>6jW(%(U<%Ipc?Q0Ew@(Pu1g4gO+ -zZEKyf!%Y(=RfsI?FQVo-5Cp<5wfv^56tq}W5bvj6+|vqw#|qs=fMgfpihh`F+ObyO -zza@Dxb1@Br2}sKH(fBnrBnjm3EdW%sK~sgcfiZ=6!brPYhr7io&~Zllor}WV#{2Td -z2~?FIhhhgHF_ueIfkTWWrMtV51dQ9OwxEDzDC(uaCQ*nJ(&@bB|_twje=g5(DCA)kY($xTF-AO`jzQt -z>Afngo=p<+G1s_hD4+YvL|9g|rcxfM@=R1pnoG;&_9>b%T*9k1UTJUSBLP7npXAD| -z^I9G!H3a8EQ9oSD;^{wVu)&tRiS-4LUOyeZEh0wS5(m6c^*XIF~0-}>lW|W}}jQ0UR;T<3>g?j7gyZ|Z9!S_?#$r>FbOqDs`r2*q*5U>J4X&=0Z&U6?&xn1rhdtwR|W$C3RX2tKiHR?2XN=$K@}_r_*>nyJawLp -zQloI^1kBo^KCc!TH2uq>^;zigE>7I*O@Y@5>6QiYiuj?1~+DC&9f%>y&LFnP|mK-cWjh -zMe8%jGijYMGzkZW3kTnHLI-JBV(zyvTXzzpnt>KWr&tzK69Kv~qW)@`l1&OD@gmtT -z{Wc?STs9}o{9Lzn^@@^$T6?nVxZd^z00T2&=rhF4j~}^OW)9n8fCw`QgXZ(6YGv}K -zIxIwfR+%zs2h6%6UMn(&j981ro!g{>Chn`%S)lTAU!5s7KlG%>yKLklo#oN1=(n%L -zILd%LC`(0$;l!t1!7|YJRG*5p`yiuH -zE0mf4Ph=R`8e~@wRb@TfWL0(~*{-xs88y5N(Qqb|w3IZ_@kU*H4_dmLKQ^mN>-;kc -zKlM#V`X%;Fe8Pmb0$H%Cb*^I09}TAjPu6s}j!4tBfqaIiV<1+?P%h-|&;=YR%YLCb -zr}ta|Y5QQbq*Orc7w8?2y6ZroD(t6L-nOEYux3~mte6F2mJy&WX4b%5hAU!`L3y@Z+h357R7lQ~ -z)1~i%UN4!&XoDPi5zv$lsG>Kiqzh%kS=I=yaO>ra?Yt{@Z2{ -znZrgR*+ohMi@f{8f21;d#GUxJxY1-^{Ds+8oTi3pZ=oPB+qyNpo{Vg}(7xjk7{If@ -z3{0xQ@bI1V^K>9e)LP(mubOa^x#(erg-;RxF@(7RMg0;nLW~UAi4E_4r+0`NGt_lIHC%!~dK)JW -zJfO3C3+^Ee{?8cce+DKbU6bUUNIQ(XaRiRsz$+8MK^{mxO^0lNmsYBxK8i8E(iG$)Pw2 -z2+!9{JkN&;<3;A)<$NphHe%a?KTEB8I#psIZkCN1YXr2C8Qr2exk68=?i+KT(4#o5 -zQXSSY0i$%Cf{c>9{NjdbnIW -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 -zugY0R2inQ*SP3mDo9>hEui=eC}|kv>NtY8BaA -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 -zD{HI~to|?_lsiMp_aq<@Hw7YHue~ -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 -z5`7*n$>kGlO@icSTs0+8hXPFu5{b6+>1Z -zFCp{fwz~$Tg6rMfds2Ax_W+3_#w3DJ8ug=z&kphWd#6Qcpl)DQ;l?$r_UC?eyYNqn -zaRF>ESv!@s$^hX(>cfS@%rlT&6>q3M1oAmLja6W>*^5uL(!wDANQ!pc%OiUV0V4rE -zN^Uq-aB64n<4BvK8Fnx7iVTqVPqi$;keDqZsHttxvVv*(Vkq?G>jE@n2C-a1_k~1; -zR}(WfqxPAVut;g|pk^&Y3AF-x#XXSMcU=s;sDeDm0H^>!Jhk4oEvb*#lEbs1^DMo) -zDRVx(e@nFA3wbh3VK3bc}36wu<>-4^W8paf>%AAgE8@Ti{ -zj-%#0$wO&OhJ#dFSGP`1o8|LAXZ(i-J!pXMYGUzXh$@B_4y%p}OA5aI3k|QPW7=Yg3wV7Hi<|m#x9eLn>Z{&aD -zvHTVVX_|>(MgZILP{E*Ks-j=|eDk!&9r~3s -zPXdTAfRxWnVpj)@XVOTOSK}2(Aq)%0RF0Sy4F`RZmy@d2ebpQHT~B@idX-h7Om0D^ -zOiA}6kogSgO%@TnXv22?Q*uuLCt_Kp5+IRG2pdtX;QEEOvu?=+I$Rlval*29)uAF+ -zWoHEND+Bt1D-5WPz_kwOpKrPL?Cdy>Mx^Z`$+H&@W3vkQ9LrUu-h2^AB!Wdta7nhS8~wx4Rjk!?Tv`VguQn1I -zGQY@c{c{h!l_N9Ig{&RTCtPDy9WV)_*+wJ@=dH|Lf@*iei{#A6oE(NekjJV92`3*) -zXk>a9?LtdH|2}{@VYnIebo}X{RftY2 -z%bO$Ueq`o290!}SO=cEu8JZ|h}k7eNT8Wm2)2LVKx(lh%3PrjXN(qMQ7@ -zisu?g&|Y`)r!vEML}cfZp~i)}0PxKU%Ca*7C74Ay2E+sw@Oiw5@bXsVwx^sc8$3zy -z8dO;PHI|SQm$L8|0}!-eqKlBi&P&)65}sWFZ@Kv*%%Ny_iaW8QNmPEK( -z!7b2pxi;}S!WzWcjTOR{sqI|y#fVQkaHTjtC&p0)vL{l6lT>5y)Uq1iwJ;bZL!O<} -zC08T9=>}0v%snwF*&(^io6;Ux!so -z_C6?g0QAM^E(1V+g#7NxS3D0Gp -z5qM7Z6nnRy%OPmKfq8pK2BnF#sdmzfBW;YGqj|>Q!t08?!TUI+GzIPS@Vs6yt{TEm -z%>{1Df%p{5{6Jpto9l9{ -zr8>e7jEOyD7QJ3nJzScEi$_+=Rv&XKuB?8&j;u!$dE0o^0?BWx0jWOR%9LlC!QkP!s$f{FqncIIDfB} -z%2q9fSpg~wY4CcgEZBf)elys1wfn$-&Gj<&09>I9YhPSjJ$Hkd;5E18M^1Vc_yAm{ -z={c7rzlO5;1vZ@e9KeAXlDx+(HX$jPSktbz_OGY#Ks>FQ63|iWwt9alSSI?Z_;~WW -zQJyjac=^?}JkfgTZ*O99lN_|L95N27F_G+7l(>C+<=sR3gR6E;YID!@5W&BVl;p^5 -zf~s~ZOlopoD=ul*t7=;kGfKCuXS{tix^#(c&S-#0*VeSafTf{x4TIHl^$JE)qYcsyD;x17|JVeyPpVYwTW>REhF -zlxQ3RJpu48s4}!AnNKw}$Ay#>@@|(qqu|MFiEb`SsJYrOw!#Uhmmd6uEMiXIILohV -z$|?y-eV!(Cb{RyK5$z>^@K$J=OOE+&?c5AX2!x_{-22CO*9&iw8aiMI)o>5y;v%LM -zTjS&h1mh;;*2hb3faJVF4uaDg^;!zl&36s-k~+!YKyE(eKp_>=4VUN2(Na5Ob*p1&ThMVcl&zHkbHXVra><6;fM_;ghFTI?KR~YXsF2R3E%Y>9 -zP9D8rke;zoxwZ$1wyhmBlnADWYrLNUwBWSTQ$3V5hK%pPOjlcS!8TlJ;ta}~jBa+b -zted?LWVW`cyDqjH*zyf6-1gc)h`u1+jh*AAB+x#1aGZ -z`!8FcFg{ksuaaAqVAIS7B8z7>rxBj^Mnjw=YzxI&bbc^(J&wHOVih(@3|6 -zfzhqk5zdvxZsT=4n8O>q)Z382RU0oz+swd68$7gwuY$(DSJvsmr5u_g?mhWE63O9T -zEc$|sE_7-vzfSM8FZwV2K*mz5K(INEW}fZD={9|Qeut#Ip$_qFS#)o-oSJGkWNOm5l9Kg|#7TKUOLF?n(I{By?{kP!o~0b5J%!NS>~rL;CVv4;;s*8&72cDRIi^6Fc+RbquPkj@4&hpvJBRqQV0e%K -zQ&r?(S3C2Ru5P{V93|1!y`rpi%2_J1n4gE4oK`HRI1fd=0lgA{eqZXC3iMbX6e$Oe -z@pF@(Rsm?e!I!r#Y!E!h_L^xzU`6Cyo=BcRQ$pHQZx3S}YVaHlu2S}sjNFF+c1mvq -z%-Kp4dgMW^oPjV!@|9IeLuSFAjyB1-*2sY^>ztAn+}uUGC8sB~){V>TbehUeS~Y)? -zCCPQSRz;4X%`Sdn_3S{1u^eEYkOu;F>8JG`EV9so15xRzLA -zi-~oEq_cb8Y%~BNJ-;j!CjlAWo!O3tyqKQq_D -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 -zNGP!W=<4jgq^6E!f-=zOmr_ -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 -zwN*_luHDK~eg@*^SSppW+z1*vLqM4DQiP#*X{ -z4OwO8J4riHXO%)b!1;it=(h{mOrXy|QXWb44OVB%Ae89sH^G9OC+dNfFLVhVpq$^} -zvfnLna6I+lXggoDmRGRW$)9KrGXv>081>u&#aL9>F-2J603xSTa2-ggN>PPO&o7c) -zk4T^W|$&3Z$#4}g|R`hq}R^MQoVeLr^hJ2t%vg4TfvRI6} -zYLLb}wOdZ5)9ZC>d4=;q?`NFUTW80OTV|4PEHH8S?uA~c&ol-IZp|sSO^T{Rg?|OF -zfO#rp2H9#Kxlox)R}nTM_h+?gWe8SiY-i0actP8ZmYmVi(E_+QXC`2M)l}zpwHCms -zteCaWSO%je@l3}hT^ibajSblN9Isxl%brr`Os_O`-EMWNOv0r%4XGEnDZ`Nb0BxP4 -z2)T(Al@_^si%i!O^1()5M?01rkYf+ul+0a5RL1(oUq}U_mffx**i*(*#7ENSr%iS; -z+#61d)H0C7-3BjUI4A`^&YcT5ksO#VERp+@Oc(>`b>sF#;BB)?)pG|#L_OoD$_O+2 -zkT3swD*YPCkrsA#H2Y4zK+;;`SaV?OPk!|f)=D<1%|m*ki5~ngi;BwLubqC@wvTY@ -z_E0u`UTN!zU2>y05ma}R$-NxSu4c-VqXR`DSGVkyIB&ABXL=v&m3x5XIQG7Ar02HV -zpD&b4AvmSd!QGW=R&4bT#4T1UP^R^y@sh-B&IWB=FXDd`@nbG0k#cK|>hnlgMu}J# -zwYGV%C_GWBsnUFuVLdJ`if#i|ZIuaDS)YR)C?u%ah -zQk=mgxx6-XV1>*)@-gx}v~3%~JEk#m&;YonCKMa;#>JgA+cMLFXG~}vLynIub^OD_ -zq9SWx)NoMaa^_jc^z@3RSg=7X5&0>g=aqF2+%|{B3IQ)DRdz#nlEJP04K1IfP@2e8 -zjKD?obk&@~bGL%WAVmT5&<8?`CD@`6));Mz;24!xaDX>h@<`<;?Y`k&q#fO1Ynei< -zuWIuYgYf`|UcvPa2)q1K*_k5|l+5K>09SzJ1t?P!uIK>s!)iFKVpO>45&U-OFUw|T -zB-Ka0i%==!9z$=21GWs)$MBD#+ZL**R~@-mZrSM#RaPqb{_WehMP!KniB$n8`}_#+ -z@1Nf^Qvd$`>sR^7$M<#S;16Hx<43KPe2DYtDJ$b0l<1?Ui+_Cowm!<^AK&C2KIDsh -z<5>f)TwAK#vrq>n#;{Lq(xuYLae?VC9^pKIW+f4|7Jic5U|iJQ<~ylPwT2DbRU -zzLckxKl|g`hX_J3fbeTS)0F-E@vT@eKS$|(`{(`NJowLc1;cK%xa+^aenFUmbe?bX -zUy}0Srn!J$d~!Z^@0Vgf{7}eiSA(MF57qkm0?uVXC135%Ue(qSf -zgy_s7JM+#ax!pxinvSnLaQ~=aRVaxTw63F1T31!7^;*XlG#$tZT{|Gpd&-4ltRNc& -zu1;gzwR4Lcw^TUyOYFhw;Ruh6tbq8Kk^!OboQW734war>&-530DRLEdmNn6 -zBTuckCK)TpkK0~$sHP12Se!v4WX{2s+{)^nLJFk1K^mh|+4qpcEv)4Okm~cP=++@* -zCro<9DS0qOof$=PbuANDL=KUc3&&cA5Pn4`Q=MM$b}J`yyV0X38^G;ND7OWU-FtCa -zI*w()1p~i7%M;e6w!hZk{UauS7xnQVl5yqf2&K^(r3&DBh+^PLhWMJ8Fqky3{Parh -zxPAIRRW4QUKURKaf;aJtA5uCQDpwsEW3&`x1tms;+4^$b>@@&vRDYj)}2<%m=GkP`btH( -zZLYOM7K&qmd=e5FAeYOMBixujLj$yt$_EXg1Sh?tXtt=XjW_ImhTL4!pzg0cYclqb -z_-!@b6$F$1TFDU~tFy+YQNzW-HbB=>I0db$`0&ex1dE>a0I+kH_L~j7e&h9cU3TkJ -z|qzkw#LG8#? -zGfb=+B`VKiCqP3CgR3uoSWW|OTmL?*-hTc)SUjN(6{?{ICoK~2c7!(k(^tR`{!=U~ -z{#!|LNJIl^cO3VW*vFX7G3zO|$lY|I?oiV2X)eUD79VV+;+}wxGo7xt(tNtyS>c$0 -zmEB9S5(i@^+R9tqSWl)XSnUqfx0P3|7BZq_imT;Qtu6cL2U#q6JJ%i!CnU$L%p2{K -zENJs>3kY5L1IUf{-mlB{?`fd;4w&SJ)GcX85`XbGc!OKL>`$MDj>>|Pe1zWFYA@~_ -zgPSE>HHO30o`uz448KS|`sBJh`roC%GzT(}11)g*XiFSDqc)kE&O_zhEXPXX2sIh> -z;^iR%ntqx>*`nt2C@n@A+z$1#iZh2&Rn*8I8Ct#!?A2$N{`@Wy4S)Xg?VHL=9Jysw -zUQ<3~j8->?&lYIqOp7 -zlpjH+fTyI>>mdN;2osg6yrDhydD#f_jpZydobZWWbJ>(#ZWWgJ5C8) -z2`VRwpKmUOS4omL8S@f_z+GLKu~t)2FmuYUgCTuF@YsI4@qW2-3Nufijg>F6@vSeG -zA0zyFxFyUPDyOt}^>+mS*Hx%CEPg7WyyQ|2c+}97CsQMF^VbItgxfTwAn}Ek%nz0> -z){~J&2ji2JAq9WW1LV=vX=Z@$u>9*UYYODabZoC(T4PKNU54k -z!U^e$4jImm7QZnu(-1JV=$UqFVQyl@`#vr3CN`bFOu=eu_!w{YbZra-?DiQPN -z>*f28Z>M`-Y2f->|ISuWvjhI^!u2=BJoD(=xawac>d#dR$jE<~+XxcBu4&KU7gAjB -zOFc|R48STkla^9~DPtt-Qu@R_e}>L+8j32h;GL6nQct3#LMDz0a+)Z -zSO+LNLHYJs*wOnOXk+CV3Jt`i6dE#6SiBO@za%f_d -zxQvjp^1+vsNNU6D>S({T?ymf? -zucdr6DgIk$1@aya{Dc;B>(R+=q_GW^ft9A#+VLjU7Gv&kLz&QNLNIXhpn0UcQ8~65 -z!%?0;&2<*{K*EJy<-Y8?PM8Ik`OfT+FJap#eW{!V9PVI*C~jhDy3N)%jwGFxabhH_ -zcUH<6l%`sxF07>pw5wew~hgo{owzZ}%b2S4Tp**oxf`o+kd}=gTVV{>^4US6+(o -zWY>@4r*!DEJZbdm2$i)PKotho7I*;j2nq1sj%ZI5<_MzAao5xx+T7Pu9^*X155!uQ -zjO>~0Z2O68sJLy)?k(&V*wYijO*wuC*k=VPKKBcoqmN!%C|{wbMesY=Z|s@*2iLhtVle`&2O%Zbaq=|Xm?vK3-3^7 -z(B=Hz^`qqTxzbL8!X^j3vASe*G5O=t02X|WWenzu$PHPv`IoLPXX~yFGN~vaD?aD) -zGcNJU^=wzPZe3${YU%Z3D8ELxbQn4_b{sR0=AVk7>M71g+o>lpRN0JjTkw@}e%Gs& -z_j5Yw9K7eDx?0{pek}PMI>DPa%mZ`aWmEnlKs5lr@G?ff*2KGB8#N!7@`U9yc`R?z -zBDgNM;4abOn`{JLN5O -z=vCc@s<9j^!^hNr`Qm{?;!HS%nI8{Ht^{Ectm)OcS$Sr{kgX^ByZH4m8dGf;XLkzu -z$bd3f%io21V52`@&U(CF=J9%+ -z$6sIh=XKy;8(;!4+a&xzzsnaCelv=n?5S{TVFG-eLYQ9-62EDYpiaO9W14mzwBSw} -z@k&#{2MT+bjsZ8=xu#f}809V+Mn1*e14E=&6hQv7D8oe7BtHfpOFm4F`$ANH@kTE@ -zgTMB^v}G8s5;W(HIZFK{yKlXPF!IlchQ}*s~{a?m$-#%WPTNzRBwhyjcE_B$* -zo~6ImxDTh#>VDa$H0?cYR`hQ!r!E3|jE0QSaB}#1RNs@0-`G+4*-%JKP{X_O-S!*u -z6n3-Q*wCB({8he+Eh$BYjnYH?_M_FW>g$gUSk|J3gltWuZ*WzQ<0xOTa9P)Hzuz}F<=GTV&ET`Z$1G&(d50dWcQmmw5eeblEp8gy*srwzaB`*|! -z3Ht?GO~0}~$e{n8f!N=_{VJ|F{>TRS=ukmvvV@QFlaB5S$fb!S7}i#-{;TxCKKg5k -z+Xt%q{{BF_;8wi~9c4adxAdOB6{ZAy!LEJw>{I4qq{#$U)!=U^tSx^?KQM!8M3}iX -za$3uT74Ls^kILl$&*+|wE4>mKIMdI_;OFaEpZ|5%&tkrDSo*#^vd%?-f=6<>)(ET| -zpGzRd=3!3P2oTU6P5TP5&kghB=?;Z2X@lM1&x2Q*HgSQ|5G^8_=}xJAQ2$&OmVwDA -zbU;x@Veo2WOQ{=>Gy1T<08qX;CAPT_*4`Jkb+52)N?|wlr;xzd7g6|eET4x1qDZB} -zeA2VA?amc7G9>Xh8=wUgLV2YIq24gO3~~7LJhn`d+qD5sk0Rx{BT4HWPRhdO)tjLCJvaQ|njPdOX_q;$T^d`Ok|o7xB^ -z-SvM+!SZ7jcyd>j!@Ce<}`|0`QxYl+weUd?k}QGE}@r82}BI@Fn7CL~bb-1K7@`beJNtP)Pys -z2-!CKYT@Jwx#^r{nE=$UWpoqh&h(@kIE%ONUy3PzSjO!0=;<|`YBQ&ENz-)uIIWVS -zvK1MdBTW_kP3Fn*67h;{ds&Q0)eeelzYKAg%y|fNNJD?0^m-1jc@(_vvt(=Z7toi$ -zM7^&Q6lXtl%Ed7kRfaqOe;id*d3$O(t*tD5c{w`4D0}DdD-Y$8V45~p005G2a)o{` -z64P*3;$Q)sxhf*zv!7Onj=;YR4Y;}7GC-o)$ab^mi~ji42Dv1e)exr=b$BZtf~@Dw -zn_4YH2YQV_3;RmO`ELC4+@6FxX6j2m(!6B)eDe)L@p=a6AEqu9^v!USI6bJ45;6!_ -zyfp=Ph4uJ6CS60PvGu=BTu*17s*7~64OYUU1BJynvvFQbHl(fpy$6uYZZG3ff?d9} -zrLdl9Sq@~Ql#To{lDXheFCq;+G3T>pGP2k5GIV&l2#Ky#pk_n&;gp2d5xyoLuSb22 -zsZD?0TQX!)@MGS)GHg!rF<}?Y_u`3uldbsM6^6v`NKQ&I!6=iZImv5Y%2aHD%h7*q -zP5EH<#_+zBRnf~k$)ir$Ao*Y^KLn;0NH26LEuW=vwS1Zdu>349`SbN#KMN(Y{F~mz -z;>MH8q+>0dDt%cReTlD0-lKRSGQggh9?vHwEyv|elsQE5qrMj`BK42=@)>KPH^D@r -z(`$^af7AftP2GOnjaq(1M)p&Dkp^F*#~@pKjhQXJbHnLcliP=_rU%%|2a@5ZFNZWT -zU(`ZkjMruUP5QN1-WHD2LZ+?S!5#81ie~{u$y97)(gEd77SX$9D57f6D&1gwH&Pvi -zGT#J!0W|z|iN~n|e~GazE4k=+dxEA$kGAdZNyseazUAi8QnoJZ9ZsHF=?i%Vb<}q4 -z;{NuoDic-j$DvW-~;%dWbPDe6V -z$V)denH5b2C~9qu2~kGT5PHk_jkGAqPcogA4~w6{SY(2f?mQ|^>&xLO<6R8@$2W@y -zqp_KOw|t&h*QeV+ek+t2;?szIiGKX_-k6!#wldHb0cDli%Q-}mS=spTZtwzp^b7`3 -zK!?YiFdTqxIgob_PN&t*C+T`&8stgY?5(1;Sf}SA*W&Q>X)!eh_d_;N5_3}KoYx*7 -z=Eqz<$_>73@8`qsW43D6Q?cB7T2bp#=I9_hU)){>`drx!2?-Ds4b{u~q3AR)qegVM -z83~E>vsGn1q71dj|5;I!3_Wh;Ni$O8)`-Q22n!S;d#;HtZ;y|+_tVgG?@u9`^9a8L -z9ywc=GIo-UJks4iG_|tcE*VCSjtYRKJ0ewBOmcWI>y))tU(i`vz5~Epfb}Zly3>0l -z2bcU^jT@%XYHvDAE8v)uT3hf#9-6`VvSoVaG-Su9CrRr{4$F|$R;_Cxj<&jv*2V6| -z3!1At?Y=>dXNp7YiiD`NR%#ngZtRrFkS{IgxYTLD&IoO&FSYqTHZuD>a6F0^$j2H~ -zrrkNXOKx8G564M$hH61#_ErKnf)R*3JJ7t9$Jc011(WsFeR%@?Q<(*3V^VP00gXMi -zi;5cDGCE@#IDNGUi4`Cqj8gQlyPjPdo_9t7&9$EB`mY)G<^28E&B5%B`*!7(m6Ego -zlLT66+Rxh+i{bRW0}88%XKeo;dtdtFx{>7h-G9YvKX=1^C`r5z8*l91o*C>cdItk^ -zWA{VDuaG2@5=#_G^UzT+=5L>f$RwFOR4SEe>|jv_{7SqcugJ)V$jJC1YL -zqKK}}k;>-D?ZJ@xl%IB7HI5oO;|ancDe-`}lzB~o!99rfM>}J5t2(4y6~s-= -zcBe!D&4~55RY)oTnRV@THwAy_ir{bq>hM$cp3V&FhonG0_;;IOzkh!DObZ+j`@JV -zF+W;bUy9u9rk2wBFUJ8EA6DI#hH;d}6#gMeh -zmlnziQ`D40!yR*5$t;Q;v&rj0TzZ=dq2K;&?>wdITS*0`DuFpj`sG>1IOEmX>IUqr -zgvOoKz49}8WCRn5j0NKEu|4K@u1a^18sJ>p%I9@SiOGq_FYLf}G7^9~N!;k)7T1KE -zT$h(Nf!_sB0-gk{hqw_B;6N}{VxkCnyrx_otEg9EFc*+GkJMd~2`Dp*UCz&4hd*mh -zZyi0O<=oSLZci{gN6JF-d|v5Ngu_p#{iSq@uN~TxmVNS_1Ex5N5U&HXwhpc_agKW3 -z!W|tXdN1aUf*HywUVw`fUj=5t>670MZj4`m@&?z1P~O1w&ZI*D_m;aoX-r##$0`J2 -z&qlOSdZDZ -z=`-ZOguv15G`dc@A+kv>V4vwm0zzUZQ~4wu5pcm0?SU%AN!~+1jybia{ESgKJw~dM -zvStfICjg_UCCU?66n|-$Oz=J&#<0vU5!mkIA$-pBJsmcIDwlP?6-043u)5()R=g0v -z3IJw6nZJ45Z5sD2r_O4q -z_|Nf3{Sff8&z{%MLsk?V^x75)i0-wJ3W`TlxLqAK -z&>Jste}5`9>jd*aBNrk*1qg)*ajgfaHgbe;TEKHuCoc!uDeIC7#xYCVBh&a!nv=R4 -zNmLoUlaN<(uiW7Y7-5GlgP6EQ=iK_2L}8c;KozI$drFD>B;8{wc6oN3KFx$6>!58& -z5)(vE-DkauFx)uZck=^#02Ae-%<69;lrDx_@se`t_EibN=0OJrS8t+AkV-*Kmq$#L3UM?co&cIEP@xF=J7~(wh#&@m -zVAA^_;FmT+pHP@{N>X&n)b0!zwDqDaNA(3n*RaPy&IFepsYoPP!;&+VJUL5XeuzO( -zC`L(D4J(d&+vx53XE@Rv3YHQ`gwp1!iDNJj$4TJI1m?*F+5*Z{mY1q-M9Er4 -z_??Ibnzd*GveoDpzyx+GQ((W=9a<9HdR6ESVc753Vb~fx$RHS9sa=Y!Hkc^D*##eo -zJJC5MgGr#&4#|vW9wl|nu?&?WMCDw0Mw -z6ufw#7w5!K#Rk!vq$h!Qg^6X=@oG@m(ldoTPzEV8!0y8sDO^1#bAkGp9SSUUS9S>& -zgXTOpb1L#TroECXjOr>c#v?CeS6z)4`98b8(xEk-su>P2NxjYh9Y`#(+R}ZcFSfwz -zmF(-$xXJ}a<*kwq&_(JkUQkCO3{+1O4Q4iyeXs}!?7s1|mzZPS(34W2RI%Fem{x#s -zuhiv8u0SOUuF8#yr~9Pbp9raQI*d4mTqSTIyy-nkcC~i2l$6@lYlJ~Vw -zFtb>>r+V^1ePABZ(Y(r^H6*o6rB8)<|=ZYSS?WR8#$gT -z%26<|I554hcy}Xw$?&6cF_ -z;&H?>Cp>Zr%eAV*VajeayA_pmhiIAXJe;l~pdT}1tIY)qIpWfM8bYu~2edg<)wZkU -z)FSR4Dfa>l8UxWVn#9Nf2q!{t0cta%8SrMBq-7!(DphtTKzXPd0k259lYYlwjyxM_ -zQeobME$!GP9j$sIIs@6ZYtI=~|Bl%xFJ!*W@?MosWRB+cM#)Z7Qw%#mDA^;fp;YG8 -z*l?rF=u#^hvJNy@a;h?LAWt&UkAsDVA=*_sSQArL4oxdOtCkLZeox5CC$b#^T&z?z -zE`ZKZ4r*bNqPR-{nz#Dj7L&dN`9bD)!Q3LObBw^BBgs}dKV@)&^l%)yr?5o!uSz7|D(UVVSXFfw1hjxX -zLsu{wFy)T4E!DlUZPK_WCxD)sqKD52gg?%}4TA>H0mUT-!(Wn&_AI*hPKor~o%W?@ -z)gBaKvEdo#XG2#&S2N+#KgBYR>GTxHWcOttH_9p|oRRxoo=HGgmbE2SJL$GOrEwx@ -zf^{vwIQ=4=Q~Tr~YP7E;Fi9$bHBYBh!oH#o)so6uf1uoxIX$%$S=ApC(dBMgA_1yT -znRHxdL1@X!M72!CzYk=|xpeulAT&f2(y5TCbx%Qkl5H;9?%1VmSIY0ta=M?`Q8uAU -z+buNdi#rAKP~xc_5@@&VfbtjKR%wl$nkuTM*(N6Cv3$r6lo?J=JW#PUI?< -zWHQsog%gnEx{9~${KQ<(MRJybUR8F%hT;|x*tCLU(Rv~rA{a>pn*n(lcWLqpbG?EJ -z9r2xvF(MSHw&<=3hl83&fThJwCh^Ttt40na4yJ^(A*rlg>`J@AjMAREGHS!B3U)eN -zwk`SwD9H)#3F7Km?-1i;EjDaUQY;0@a~F+>C{sz1<P#GjO#G9$s`|d;^8Q1L|H%W4J331rT^nu&Fld7Voq0I0lD|93qB73HainCx+ -zFz$tzs!uIe3f2CEh<%brIbn=R6!aESSX?z_fWY@{sDen6MQNQB6lC^kj@N!H^dkxwyoTRRkW8nHVT$;e@#ddc^xC$|cwi -z4Q(>V87y_KhP;YI!z#Q$n-m6GD@(e?Y7-mB!4d$_T9!OF@ROJh)OWeNMR#29=M0t -zr9I%4gJ=?y=x`>bwFPx7b{Cl2xHEphoqOnW8KRiOcw?m~ZBCkZ5h?|GGMX0pFE5{; -zTNGmgO~773U#*O~XcFiWoUd(!F)WQMFqCo(e}l&Fx4@XysSDc83z&8>0a^$7iM7W@ -z5W;(xKgl5hQvk!;+u4Xii8~l|12q7ZA2FgR9}H%zVp-E3%sy72(TX*MP~4O~WRWd@ -zB^GA!0&kv0+*R6~TcoE1a}@w*^R(GEC_pjcX#)mlngdgV*scx@FmvAJJVT|S4|TDG -zgpp!zThX~Q31*JSW$UIwVJlJnDwJ*qIZQDzCa?Na>|Oq&}?nMoaY_CA4ZLg%bF&O~>g -zlS9CQ6UX$4{W*=A!+I!zA~C+QTToevM+i7Cq?XeZDPQ5>&{|GMLs6gY%y*$Dq^&He -z5KEWIJOxl?oZJ#A1wHJjssWu{zGY$uP>e>x%N1D~V)aP5`^1|wULd4=_gRs^x+-#z -zp~F-{$RlR09L^O-Y%-Z`0jji$`q3~_M12p|MKSgmG9)lS<FyyBeaTm13 -zBmh0IGcpb!;CXw0dsx#zGXbca-=XHnRplGMc8kEA}l*D+G!iT2JP6z -ztrrevF4|=v0n1H3jBKOxcc>=MbID -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 -zv1M$GXbnBze*$Ae&w2gw`{ -z3UfTD%<<4O$3x2;4=Qs!^vv;~GRK2pjt7-F9!AXZFlCO9A3ql9DUJGn-r41yU9Pjs -zPaoMob|sI$eEz!MpqcC?ef{%07rk@QOI#$c{tEwm_@@u@>QNkZcmzh^<)2H?tW*A& -zK-K;cv6`)DoAB#`*YE80&R%y2DUeY@G$}?Ja8dQnM(=ENi;YO|l!#iu!}^_{-uY=+ -z-RYf=-udXaYfq>m{WZz<|M4$>f9ITc&bdnh1=V`wb9@&+?@V-`c0J`G^Z=kcyGd5a -z6AZ_G6H?A%%y^1{xMHQrMKG0O)FC+2`G?qV}?sFcNSA4eqvVK5bZ4 -z!9qG;!upV8_fUuK>fj2}`o~XS()zP#)VJ_fxce@I0ocMAehX!@XP6q_RZtLo@+~sR -zcQxB4(YGZ};k78p&)@H@*s&G -zN9|VF3)`)9L&pNynWj*OA^5(x^S)>J!k*!mh*!xr+rXVHVr8^>g3%UCw>jidlk#fw -zXF@)#HZm~2=VGPzfz*Z}j^8%~@|1*xt@xian~j5d4|qsnRh9Dm!X{db+U!%cV!*Jp -zm;Un0c`jt=eC{QmXN>RhwHkBamsGjQqm$E1pJWs9&OR`{Ne&B}$H~ZBav$ -z;e}!S;T?D?$n<|Dj~-K=%Uv0#EQ(;Bt!I+> -z5+0*(nV}as?y|`su<^FYusE#2-T5F4UDG{X^R@Xr7}F-+l@rQxT+OsJ!~62-b=0T4 -zl}8``75JA`mtpVfJl1v1c4AYHZNpeHX^Clh9_GVpvIC|ch?0PX30TU@LDG*YFLS2w -zZB%cZB%BbP3=t3hlE=kxbPV4QOgD_pz>k;{E}J62u_mJ$nr=DQ@=GaHr9B$hU0V^5T#$37-WGbkPc$)L^khV=uK$w!X;o{biC{Eigsa#*l@! -z8ybr)ve0T2P+iG)BbQv8$9-EC$#n20YTh+unfs`r?eP*yK~Jvx)#mY$z_U}>nx^6w -z*~05)l$t?j+|#-3T7D2QpD&p<7e`wo#2U5uO(t;;s+>!PBdWD{l(Ekp*kx6euo-*&OOW2{rMprHSex<$^cu|1ty#K`2QBtnrS+|Wr8{P -zD$)}b1N(IyXg|5T7rFncwSOU}45y0rfqz3oH5?Gew*xG+F_pD8h -z+c^G}RBh@$h?wZPPKR_ZW$(H<> -zajN>0Ntgsd5Cj2=1j$02_Tw&IWxv>(g;7!s_YXj>6T|g%>yM$_C9VZ_oW1a}]Y -zF*u8o0gZB(Jj+74fh)Qk6t2ZV1ZdPmK^PsxNbmo>O`7l1a5?W-%TeuZU&7T -zSEE-37?WoHNt&7G0Y)eWgLdhGn*NJ_wR!?J((q&7pOS}7P=CbT{41I``UK5rS%K#^ -zv#sWO#AT-E`x*JQFmr|dl$N$i9i+c^?iJIx(-BW@1 -zFR-gGaAzI|_Q%IA?y3MQ9j+BVAvy~{PD8_WwVMXX#Lna9)3o{PKS2^*2X_%hX+FOH -zv~$;eG;xUIqB6fVX4i3DR|mIo;Z1_20TC)Zty#&VC=O=c`gAO2+MebSgK5Fd4QkvX -zoi=~F?W2Qk^{<5iC(5*&{A)Z>1Jpn#&(|I%`V@}yrDRD8+U1z7PYo?&UToqto(a~^ -z0?RWsVg?q~Bm1ULT$rBY;J3~r3a;OnalkTw6=mUj{Bakrv!!i(r^xz4kn4E5$uRT< -zlkCfoYs52%OFVBrw*0A)moLj>g!8*H##4g_D{Z73W)RvI7_4AYyEi?eAzt~KHvbt@ -zZsGXMLAP%5nd9?OE-8jZ=J#X6QdZX`&*Oj|?RrssXqst+_(o`1_D$6x>5tD$o4+ECA(uw6d^Fsdxm~G;LW9E{DZ$Dpv*&`;ny_R`ANk>evu}(x)BQ_Ghp{*+5=xhs4|29rjg~l-h-uirh(7t2l -zyd9Y9^!$E)mH^l6*;lh2tp;Ghi=b?(je^+EoDXPR5`zm_tL!7qBu3rTu*b1@3=|=* -zmiXKkIm6UgRmi@Xj^@YtdPB2X4VFo?bxHHMW;)EbXV6B#!`_n3~k&RF*<}fYadxzvAu+L<5k9L2#G-+ -zX^=?nKsJwal@{_n&ZjhC`YSY=Rz`EHyY<~=yg3LDxq>6VcqZlnA&9lzP{mL}k~-Y0%)v+!n8cz9 -z8h``v+pDAdNSvm>v{AJHy&V1v6<0m{|qWUJN5` -zL4RkA80IwZ^;uunG;oYUn5N>sR|hj(m9!_?$R}n$+&=N_PQra;5(T;iseZf`HHbqL -z2=wn76sO4ZXO@BT8;`VKa-O97e9P8SYod;$A7*%QzL9EOzGMCPl4 -zmAw{~kXn!fy&}gj*Ho|w6k-jF6NOc$68sHPT2*m?qK0aI1}Hl@0>Vs_uyVVX;~%6A -za8EEc$oKLd9b|YG2Ng}zxH~l_U_1qZlk5p;?lO|ugbEgJ(s8ql -z=96sVD?Dufs8X#=Jxf@m%0=-6W0dV=itpqIC(&O1zotTkCL3waC7XrnhQ4Q+n&~ic8cmy%e(t=ie$VZvdY)QNmqL3tV -zS|!O|R!-@YN=f#mdkM=nvhNuzHL`Zz2n~>MY1Jg43xDqdXbXw!1EeoJ&+a -zyo(Rk2~5FCLO4ENKajB>Y#B`3;B=+6%!8HTs5GO&W>QmH6Sk_4lMwLfXy04)AO=F576r+$XYUBVROCB9t=wqvP)U=IyzZwaM=a(9$NpEWGOrVND~_u9*7@|0jMZp(2XqQ9zzR(tCFu%U#>zmKuqJ1_BE?W7vPslULsDt^7QD@- -zXr&R<`hzdq`bnu$^#Dy1l~S-urJ6{jP+>}FP(I7lUJP&>`cLZrkkL*Rwc#dK4TULH -z=}4-~Hj?7ouH{1CuH{Bv8~d;zXfjiag|~h5pJWQyBauEz`>IVs`F|40hLS9nsok?8 -zB+F#UTpCYp?#n)NUzX#EEC+5BXrsLHc`2F98`($^Ze(hGU@W$UbOzc|4MbUPMXK^E -znJR}NtNn0DH^TjHVM>bBo);x6WX-*tyR-2k -zOQs(B^Wf7y6X9^LVM5fg?Bs^g6c&cTx?my5f7&fH;4cb1uxNyGt0`*m6<{&)IIW9r -z>$tBy{;x-kCsV;3XiA#)Aywr3uj*21n%GxCWBNs|#p63&E(K!q(Z3nr@_N|KM_+`O -z{a$$=!RMR%Aj&3V{e{YYSy#Xvtx6)^q> -z{9oPUjWD*a`ZZ%+@}@XnCju_@6`&8fh!(X#R|R^gy2q_JSikl#dVPaudome~)2xYi -zdwRB%zgcF6EEDi5<6ZC~da6r(VZ(A;(9G3&0^=Nvf-0`d3kc{Y3fKv!#!i-IVr%|n -zAy7Iruf(i5Suzub$jL&F+;8$VUn~daMHy_m5K$$pKBr|vbOUG8x@G+a_L-rs!Oy5< -zG_Lcg`}v-oFR2?fFskM!=2-va_H>) -zMR&>k>9*D~;J|redC`E|nK69A8MV^63L&_sy_t8q7z#2AXvxz{hO6hc*WS$d88Q7jwfP8JXti2BL?kP^&bAcpnRvn!O?8$IBL$1 -zUfT#`_cXoWw^Ejtbbkp6XhNe=8egCjN*2V$1(Ojh;!Dt>S_@ggFHn~$dhxg}rx&QV -zIK;i-3w3KmGnhO9a*)naB8Z7wGal#7KTU^Uf0tE*0PvE9502EJg(sX0uGS -zSg%B#J7JXJnS+zWlp;(fO*j04)ddxR`p_|3vTcofRxaCKN~1QQMR*$4n@gm)Yxiua -ze{Ep4H89`LkHXKaJMD3i%=Fd~xYD$)HcN)w(Y0A#;R&d<4+{*7x<(Ez>qWX_Ihto! -zo&|3BZI3&7U9_JW8q~=r5Go&rz2ARX^|^6qlNs_mF#~7KZ}t`FHdz-#;2uUbS*T6J -z{5}GYs&BYE5OZ0@ls0*=@%x>*RZXAormqk#)jK$i1f%x)fByZ;ckkXkeEZA&o1cDM -zee>t)`IWxY|19wJ@6nyXYGlw4Jlurbr{U_G4}jr*9Y?3QcPJnUP422KkF)r$Y!cdg -z<_E``JZAWYZo5|GI+1qML(+ukc;0fBicUyo{}G`WQeJ=5uRG*u64SIDZ{YylJTtC4 -zPVG6CVQJ?4iNtf<7RSq)XBOXOaY>H{gJ~KyEXD|le9H)LdBzL}125N3o4+!u(E;tB -zcLnwwk~0@z7x^dd1e7oc;5ElvbU%)61~K0tmg(w|?gy5A(^w6_V7y3qNPuE7FTfLN -zvtU!k6~+@NntBySw8QbtbB3Wr-2a$8?S9y&OVN3^MMo}2ckz_6JfS0ac&A -zs4bm1jtf)Ro1eZnZOgP>leng1%-?Z3+t$%_h7=3{{PMt#h1wu6Pnf0~uIbwbxn-aT -zOVc{7F>PLn^dT?6&|BfPJ{HFLeO19M=0(k$`c*{JihTh7JYxvYT_4UfjX&Z=H?w$! -z>H^%}*{cMTmj7#FJbg~{uHo&-OCLQ}z(PfRoiI -zzm7Or&GWAcbSuNJ`ko)0wf^g0KNRJ*=FxP*V$7O^?O*-)ecOKf{@-u^&VT!1vkm_7 -z@cz5kuit}-*FLnrJiLAV@b_O`E8Z2)|GWRye_NEnyU72WRaF19{_~vyh@Q$=OP@DR -zkvz~}-~IE4AV{~)x9?xGw{IW+`}_YZU;psE^Zv*E_wBF$vfsS~3<)h-loOnS5)3Beg -zRY5ZfZt`C2lfNLQiZ@HdTiP##u0j5c7sRSheGED2x3auqE1_|~2aeDZewoCE#c>44 -z7er~9t;Kse9kq}Rt3d4vydXm3tf=vOTpt3VT;Ji?w9-=|N#jcwfb!dmTf -z{Kl$q0tl*%rS)8luE4}7Il5-CF!IPv -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 -z;y7PHXUPzKauHJ$?#4RxEY~--t_Ca*v;sPMsG -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 -zyrdKXgAPY1Zxe!FCfsIv+9B0 -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 -zrnq4)NjDyEZb2_pO?)JA` -z;#cYWlX&nXH8{%tEaPYkbgfZiDr4vn@w<6R;6QJJE67RsqPQj;lX3z;y_lRO-sJmH -zQ-Yvg9?;=4vvY(gwALYtI%Q7Uve#mL!8k9hU)5QN&j6z9D$Z6~v%_rE@DT`^A6W38 -zl7zrP#4v&N%QYkhx*_FI`9d_4ZX$LoKckSLT(g40fj-IoAveBI;}doW9SPfr$t3$n -z^N4Y-%McPhEp?6Fee4X$+5l)en$y;=}bv#Ql+|+xWuA%&r##2<3JF(h?1^J5H&WIRNeZziSsftvwP`JdO -zjEvPtD9R|cwSR@I(+I;KoZf2$Gw_$D8~Q^>9X0qR;m!}z4cc+(tTO(@5Mnu^yAruaI?vAg}Ib-6)EeyW)Hif#F(>DhESs~0qSs&&z -z%)S<_z+ek^A^xf{xW;Eg_6vh6*s5vw*}-0d(e3lR5nuUS0Ywm5lWxxIW633#aiS-I -zLg|aF@i9hZLw*Q!0amXO%!42sQqwnl25O2U?12Xd(hozpuk-7}@+8X%GTSWt>vIgW -z#1AqRdfcM<^n>*riOJd?SsiRqO|Vf_;le1;@<~3seiKQiiT~}p?Az$-WghuCKEBBZ -z^J;|`X4~qK*{0ECyQm}&NW>fatottM`y(Y5{Xiu$MiU?;JPi?gFV`134l -zgHC2rYkSkc2RZ5*q&VNDJAX4DzZ=uk6bE$^GS9oZ91L0qAKjk1zbei>NIfNM8OdRq?wAdI^oW}7o(y<%@s?bq3<``S -zw+jVAV$==x`O|A|tgit5BF8984+I7}1o5UpX%A2QtNMlUE^Kcrw!ed2*fv*AhOo}9 -zS!!K#kK>Ijg4z0h7oQCe2@TR1&!V+^w>IE&Ld}emicd1pR84jXS -z12h;1BUxjL|ItvY$YheL{m*n80m#;sna4(8vKCjDr!BaxxBvktpl* -zmj4Y{nTh-_shpLzH^7G>M|0q05}F=)qexu -zBmN%}K*1;);lq}sp-uI#1^VY2p#ImI{eRF`Cr7Ql*qD8PuBu8}K_4m_poBp*gp#VF -zKIQ)bvXRjKhm=t?h=hLAE~z2xQq@k|>qEr=wA5r9Q_<0=YHOG=mbWkrhEUSUI2c62 -zC~IqQ6I1=q^*?1FIUNjspwDp)lZdPTYg+#tIi*xZJwWxpfp43n|0e(GhBs{rMg>nd -z4h!^Oy2~$as_@L-b+4RbC)$cek=V)$X$3>5tbmf*k2SUb23*Bd{)c1~jiI#s>r^mg -z-m)^4!gyksmTFt*X_^bs;;Z^M&2Si%8?eGS7)$9|QQz_Z0Nl4&G^a&Y?3iEH)$ -z?xPw!wj!Elskez0!20I&Z{XM+&oty=9Dz|JRL~sdy`d{UUruGLGTS_MJ-6kLdB(9p -z(bZyMAWxDOIgFR^?vc0gI^zdg>il4TU@{mKC7dBNCtT&z?XaOGT{ -z19{YjQr-eY#rw<~^V|;5V_>onQ;bmtuX-(8g6v#C+0(-9>!PnDM+WWjw~ahJI=N|w -zY7q-I`hLQHlC87KlyREtJ_Ea&K;hGwFuwoC|`6$IQgt+MQ` -z!2!^q_V$yj_}0A|WfY5y?xx-z|Ryb6k*jxU2Wih$@eeI{r|c(RgOq -zpY_&BzBsGZAb!Gi?kd*om+HY)YSPo6DpPlPKc{sS`JmKcCsTzDMYIb$0%=YUw7H8A -zyINmFTU}7&*VudZ7{)~(5nafwfvt(27~53;``6VWWe|?9*vRZj0(W6hP=+M))HZpY -zO(@-V-4|H7R+n(I5DXILq2NQUAF<|X-v3AfFTNn(G>B@t`GW692ayf`FvsBh8w;FO -z8o=qg_~`K2A+7~zpY_`#A1>yW8ki4$F$Q=bo$7r_IAAd$x$mK52fRAliL#*ty}+%V -zA*MZXf<0gH&?dnjYB!s7&!Fc|>sFXonqt32ldG?_5>t{;B%>%|3(+vBH6FI_Af7)Z -zftYO-swLTeSqr>}=t&#A|D_LzsjXo1HW}%@<3)605P7>2HXeZ^Z;G -zQjrb%Dx>q~ljK!Vw7bP8CUE$Z?SSeFIBHu6H15LOHeW-qYukTlT$|9)utlzZBGWm| -zWzo~2AYZc*eujjY%NVHULKwgshKg}#v#QSN&GLy|G!eIM3;7YuTk3!oN=SKW}UzA&%LV~?5hS{XR6o8aKqqZlkk%~kT2 -zy72)-+I{*IN^be;%o9m%Qo0l`WGlJl7Po=W7OOQ#%~Q%2vuv7GogSfi(=#Yn9mUg!n>t?HBmZ|8XCNW@xZ`oE7g)w^nVZIG -zWN>3M9ITe_SP%r`fY&h=W;sc)5^A+>7wuj{uxk-JzyK@uswD#=vO_DFlK;MO{wNz* -zqF1Zx@>l4U)up7tcWQZ``DS@-t!*|J>3SboZW{}i?O8nK<%)g%d1tV;Hcrxc_x@=I -zV4c8`nHNUP$(77S4F!CecjN_>9`EGjlRFso?OjQLTTr@JxTp}%yVCbw&qWTjv2Kv|Igdnm0INwiV13ph4DbAt9OfmwJQWqQNFwFK0_VMPI*wDK& -zJ0I^oc?@6+)oCn%1@9Te$eimMVxS3urvcgBIq`^)G%k9!8!85To;kZ`31qn0dHh<= -zngvszB^qrHs(q)13AggQrUIso+K+|fF9f6T4Y+lD5-folk-OrOGer-Q(dm -zI9trvW)^Mc2G)X*46i+K_WWMGu#JmWkB`MmZ<(8re4A^+!!~pm9<7yjvCl4W>8Fdy -z)Mv*}+pgTi>9bM{pN{T#aWlFhm}&`3@zIO#=*Wh=piD{3?_5xv^G9u_znuE-c!q0_ -zgM3pwRucSH82_g8HREmG%6w_Y{TjN%&sDg)+#g=%Eh{cUH?VDQJMvgN!Cee|ul*1d -z=>N{;2=>~gbPskay@M? -zc057UwIOnq5eoiwd|EubUjw(iD63F(d?M}N_Tt^<>fuW3$Ydy5>t2{>h-GBpT=N-w)blvnJ@Tr1w7=aKabF% -z<7Yz~z(WSZ89U^pM+;V~?`f#F~uYV3|gznFho2mgX98i4|+b1+j4I -zv`ahuNDF70e%H_m0lny8z=fG>4&R&V;Vk}4HiR2jdgOKuaVLA%_%nx3roj8`@6r0G|!{0PwSBcu{1U)4|bd!>a0O^fRgexZ9&W=D|tnIbu -zYyVZWiXm&U`>^)C6JNZOQDQC@5iOo^!Eta>xbsF^ke{nitc&W2s&T{!AfE`r;60Xa -z`Zx9j=0#K4(lD=oeR=c1Wn{g83%?%9{XWj9k%z8!(joenx=srBtEuY33c9KKF&=1iYN_ZwARfDNrrc+@>L}-k=xp -zCU@b6x6aHnG`6sywigYuw<=%6LKup@)ouLp9p16W7LLtm(`x!f&D~>nGr4$Aqir0C -zF&AJ5=MF)Wnc7;oZStPK>L-f^N2GRVuCz)%}L5u2kLmf}59zDBzf2yFiobYYc2BDpO$dDM -zUhTF&?$v3o_57Y)Ui%f+M-j&Po|l)qKcBDoWjsti4l;AMNBEw{AT_V*r)Y~J)I7N9vroW-PLH+`!uWgX- -z7-$)grXz}8A`PBx3ue$tMHD+n?ladB!n}|kiKzU(;~RPVM)dxHKozZG={Gw25IKK`Qz7CgH^M;Hxo -zH8pT%nP#2tG_BBcH03PSb3A$}@*PbV$M73%T_%5!o~j@`PtDSFTcmFl8O~kbIilxm -zrq%8~K*sa4g{ku$CFT0u7{dD&zNmU7O+9&b`bGU9O*eaU+@y9*y3`66@k)x3woiKj -z?9}lmdsU`V&oLr)nSS=>m6S`@uWTQrzQT#Q+vnv7q)R^g*OyG9{@X2gBLD8A2I;AF -zGB!^=mYXc;_+k5wYMb^_P8B_d;;3>6@SXwYB?TwW%}&no_?w5K;hOw1%Te3$egvwW -z?#5i2VM(iMgEw78OiidM&Jv{oZA_{fGwq#oO^Sh+)8=vx2rxDFbOuhw@tb?mhl0el_a<+)ArSXU6VOsK -zuk!p9a5>I#fQuZs)h~1kIuNxieS#d@jYoZXc3V8Did<~6}|G_H7bjq3{4WwE2J(E!h)WAob4>u(lqS}P`i9EV -z++rK~mdL-o-*b>_p*!!(nL)hxN2lW3oJ$T}{nWh4qet5W-@gjU8 -zzRBZSl!?0)s3VWRpm#j3fq%09eBYWzu;ej;aL#iS=7N9M&lUG#kUjifGiBtfam>j7 -zpERk3FRG$s6k+8Z`6O}TWMv4_>(m^(dCk2~zo+3-B|(XP1h;)uG20H?dV5KU1n$R> -z5r_!Rb7PM^`IWnY?jbw9-pnnTr=Z$tOg;|1gy(+xBMfppj&Qxs@ZtxCXmG$5%`$@? -z=xj{YY3!9b;PYpcEdzNJkW1`W;zG&VT_O@`*~8k|5;wuBAnDpS~zAS;ytI -zhs)PH=*_*Xmwcc@zEf^zMZY73(^doj_ci9_6=#3?ntvi`y^>v<>U*mZ^KwiR*Jn3z -zku}WWkjTh -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 -zKQ3I)d|S`TB5WIuHrikLY^Cs2 -zn`-JtXTHT8an#e1EfL52-X=4<^++0~ar?D1zV)yqw#oZ@DBd@H;t_aF*XH?&EGdiN -zUj-qbFhp01ZgB@Mr15m|vgxB`Cz6vlk9xib($bHY_*v<$I&C7pNuYj&pi%SwwJuUyotN1z?NirAz{i)-z6!(@DwS&ATC)jhdWl$%8PeDo -zqgffHo&RuDz~3S-v&pM18K$hMDvTQx!CSH(@3?SfiMcK0p$^EZh^KQS=Rj|Dhr-fs -z*=C*Lx}wCG72~n`X4LYPj@pAwWCLrAio9^SXp9OOS2=8uz_>PYaAl9Sqd>r^1=GzS -zYe^|o{BZ6T4groHCHiEX3GOb>~kvPapAvoCFblAM(DhG-t0_#8#SB*qkW -zSfip*5?iUZQhcNGSY|!Lp%YR1a%YL0Nup}BCLkjzZ)va6b#7KHZY5M0qh_O9zX7vm -z&4|v$g2H-|B_Vf*mVqt)H@#AY@|5IfLh)WnWeyBI^J{l3c`f3OShv3Nyif6zhwEW$ -zx-*pCH05#qW2CXS->)0c?7uizP>#|$Cl>k7l*(F62I<-}pjJ6BNt5?{1w6mzH-*eo -zAt?=UU0Jjz-MW#W?)oBD!5n13xW5!_F@<@y4(Lp-3nYZX;7|$AT%E-xR7^$@QGaE7 -zb8g$&H$ZjFAvOTZC+={fmUQ?KE8-5aM?zM-VrRJcG|wifDnFdnjZI=K -zP36I`RML2M#a+vYIdrIPCYvziuy%od!d?bgt14eDs?~gV)0doQxs5i+Hygym2wif( -zhmJsVlS!5+U)ue>JxsjO(BfWNR*G{oUcXXWHtM=dUYo@9KsBa>7duw*dgI&fLnR6E -z>=P@}EPZsXucGYUO0pg6lG6Xx8(ni7_bY6f6_!F55fs8Vwa6&bd7MLU{ZYow9>&=?_v)SsL;rVqveSGi!zcVfBjUWI!lu=*>e5Vf -z2W1JxNa9YLz#{plK}+6+z%@OC)yyNA@4pT!V~mT(a$$PQ65Ps^T8hXQnZAGW&xmte -z$e4+_|p -z^OatAhdOtlx(IFz9($*D2Xw|^V#?@1tgP2llmS5OUhY+#$sysZX_m3r@odpg05Qg| -zNG}0p^;rT*)=Y)Zjm25H)a)t60_>mu) -zjhw_@rG{n7Do^jA8{yS4u<$9UznvI2Xqx2=c=V)e&4$Pp(`h@lvr*-A(BC#X>&jD5 -zZUn6?rmwat@rw9Zrf0TNu9Pjdu;04xez$DX7n3EwE7u_FRaov|2tPa4QMp<>y$Kpk -zblA_FU0cJWFme_HPJByt4-+`5VK3yeL0p2YI2DbG-#bO2^+eO>j%F59LHOAK?mB_4 -zj?0;M#zM>tfP=gKx>H%eXqj3#&qv`RQ_f@5hf)-XrY;Z}G-`Fb?!c#Tus2ojo!+bB -zmsmiGwHx&$T2t9Dzz%*TrVN$-E8!N-de#};_4JD#1qIM1Bm#N|a=Hv+1@`(5- -z^x_nDK`Nsm$I#9zC+5M3%l=!#(!5#o1GMs0f^!3R-Ju6RBbFV{A99f?MiDw&r -zzye3ZFjRBfO=?|OV_QNCp!sIe5T>SmSUG6Io!o(euG~!#yR!$&tPZbBCc38}+xOk) -zoLaH)>?*O$cy2YVku2tYl1+1_O;MC@OJH7m -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 -zGJ6^Rt)5NM;<8m_@4eAS -zQu}Uj`itt}CNcYZD*w^@G~&x;SanGheC7(ZQXinVA&{2=Xf2x -zNhCs&9`mK#kP;+!s8|+`V1+%GqxSwCf)`9!i!M2}Q*sccP)N)Gp7QU^VFn9s;mQaD -zQ3fgp>PLg-1IWHbPi_a4pzz%%{jNa%X8Os1Ra!P+89%es={%!$4SbJpX;(ZkZEZ>< -z7doUfBD2RT>!_-XxSNn>(JX%>b4(T?+)ZDmMU4foc2YM(2wBtO#GKAlWy7!h -z>_Ko3iHK=8%mQ^rn;c(!+-Hem$bjN**yn%=?(tRB8Aaua#A?;077dj~D@IA{T8Fw -zweJfPUbskPnmM+85wC5MnM5NNlrkcTRQ7WXA=mA6@+{%F%##Z%txv2~uDXf+=i82hc&A -z938Yj4L0*8n}%s_vA0L)RHVVUoyx^epl>Ew&t<;8PId^-p*~sG>}cQClwmg`R*78K0#{M8_jl}ud$keGf -zCM2HL*$kA#!N5I=3-<*dvfnlMjK?%IS;kG@2*G97bSOi&TEowU!61&9&p>H6{kb9W -zXYr;e^|c~(gRX+iuS;w6lxZO6u;Y_P^MfX3YKo!SZ?f$7?PAc0mjj)zx98WLFRz`L -zK1sw~3!Z1s#9Qo>kBzPL2hDETfnvBq_^}q$iZgZ{Z1=DpJ+?8euu-Y$ZUcV%aM5F4 -zrffCPlU2Lvwxp -zRn)-D=Uja^61`qhsIi*Zj5C-q#F3vm&#@K3dCV(wJZa85Ae+pxa2VNIAN;Eoze!AY -z%)-Gj&A1Y|h>qt=kDy)OHcj!|j=l4tM}3^0<;eIt*%#YlzUb9AIOo63uspMW2ENp(i?w5p#0|(TaiV -z4zxx-2i8H9tuVyeG;CLP>~ -zkE_A=*_9;Z>+9MBYtN*Cq+zheR%0-1_m76*$rD{C1W|r2rKh*bCYOUtM -z&Ukpp?@0jK-YYraXW!e4o#m1{mkifEXW@l)DJHm`42PHqZ=(Qnw5LmFO>1*5RrAc8 -zLcC({JqH@8`-Rveg@f={)BQ-XkRrV>lPgn -z4oq~v%dEqiMu9YZ^z>FCPKw5bE5pF-z|`TXcYcx_QEjMxyCj#(%sSo%MJA~u!*s$L -zf2Zn5sLg!>*Wc<_CaTpfGV=p<>DK|fc>_!l%o&o^CI?qVeS?@$#Llf?0bB+reeB!8 -z1dd|InefOCo`X{;#PdA@S#oRk)E~6tYJW`|RaWf6pq4YpgPZ!Kx;td-2IpG{@kQLM -z`Kg>?Sy3RunFrSZ85zsjV5=DD!x)P~R(X4=Aw7s;4f?k_cCV$Nf-~Uwy3kr%)pV%| -z$6ks;ZviTkL5fb~uPh_rUlg!Q>|1?_NZ!3VJmPsf7>D^;i;tu1{3Wk`acXPT=OjBm -zHxXri&L{J$dRVYhF9H^HNcmP53sZ^yeBr+ -zt?D~+bCv5V&+$CjVUrhL*9?4aN{ANzJR(cDve -zoh~gX>u6$1*MH@+1sG@6tUZ0_spRJi&muH^%$?>e@kdhoSgdRnC|H|`)GsVOvkA&f#URC=~$4D+u%9*3HfIg5F*LFLqXSd -z$ih`^eLO6HZuzWodGtrgd&S*8=0NaK?ySR|s|G@_bExt9)G3M6xcq4}J`!I(?zRh6 -zCgSQeiS~4L@0F#s*LWk!&DDs`*b(!Gmesh1%CB#!bfz -z;O>FlLd~t_{lG{K3Nz9x%lB6n_M+~~DrR=49h0c2XcP8tNWSJ^FMI@Gk;$`nS>zPv -zIMDAFJ^Wk}{X{9A1?E=LhTA734KM>c#4@k%y7}*#M;5x#J~$t3eGY996@g)uasxIq -zTD=NYpVg^}^fw%{jm<}u^1|#J2}R;uSZ*+OMi)b?DL{XZ#U++?)Lj`)ylVA3DBEH@ -z7tnc=rq^hCt}mV6fLpVA2p#;M#kL=mtusiU?904^VzG~ziX+2K9bj!9n`J -zA3MOEAWz(5pNRSR2>r=}>SjnRySdw4);JjdIws;+#l@wA`F>G@tS!%*yB(O+KG{f?Ms6fkUh(!&K?Yyxq>M~m=rtd|7=Nc##9IH* -zM!Y_l*&`rD{>!hiyL716PRfO)t)eWyVQnuioYgRKHWl5VyW=B?QUF>x5~uKx$@bzX -z9+|wFcw%ubywFM8_E-7r%x?~a9dZ-cSUPy3HbUkq)*BeOg6@LCXMIzZdfPIV`^Kg> -zN9jHBdr5Z3DaBy{EYXfs*BKO>O}Hcm-xX6*+vgh}kMQw*<_)ISmktSwu}!uI#h=^G -zw{Xj!RMyz_v*;e`Fd8{44zV=Y5=VAINs-WH3$KJx_m`T=BeOcZ#)o|#AcN*9k-^7T -zv>Q6zWjb@Y0LR&UREfuL;HW0Q>3{eK$--ktw`6{~5mfNYM|4Ix>R4FNf3*{m@0%<) -zNGTxmZcNhB_zY;|i0EOsaJR|u&=`sg_E}VA&d9qTI*HPnUv1ClGm*zEkQNryudB1C -zSN#2U5Fc<(H*i5qo)O4vT4QG$_@kqxm|6`@+Y{J_xD|m#Y?PY(oGK}HD=J7IcKoaw -z<(A!pJCIwoT?BAZr{_ApEdVX}&0>XW?3{dR?O?S5NGmj)5FARnIAxa{m7wp#q1=`V -z5=AWD5@@nUB4tuJfrJSBxI&hMZ01CLY_Px(+eS1@6`9M27|smvqq -zRQxPbsJb&RCDy#I9^eZY#W*xCW*c%yh0{A7p3)lIE4?a3HI -zWgu&wnJhy_-F8Q4Pvtvd2?nf5J143b -zOyWHcaDnc8c4mlsajWes)=UDNU0&=3xCz2bX-Q<6q>Zh(PnW795&+>?z>W$5Kjz?f -zO|)=jqZ&138kJ0fU&p&mHkNZ0HROj^YRyH8!@I&@f*%)}hH6V`IhF03pm>WOgOW(Q -zo@tJKK)W^Q-?*$Z5;_ij#@DsJyecBvt5W|C%vW6lf^WQ=0ovP<|WU+A1 -z#aymiqX;TBUP|DAEaKWmU+kYMrRHkbfXzq?90-aW`AGe4>yPyOnG&|hQ2b1(0}Ai~ -z4PG%_lBp;w^(Kv)fT{(|**nBrxIh|*Gi@$nh -zyEkOKR3yWM(6I(V71~avfuw={d)|(z= -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 -zsml~iJ~)z>r4?%}8Q -z4Y}e|cD%IAI_?=#@VMILbpXu)0%<9gVpSGQXwhJ!8~Z%lY}Bf$JdD0LC(Al-pQAI?v6x5ipWTu -zw>LiH7ex0N}mF8Hf`) -z4@QGZK|r&Qnom@F_j0F3lkVNKoI0CeeVkq>Or_txU(G_YM4M>eK8L|da)Y1h@WwsQ -ztxA80@6vN29Xv#J&FE@&F21W^L`=vp+o~Vvn4x9n>PH+QVJ!ee)J#2%rs}dQ -zEhTEt`q#$Sv@ekKd}e^tuZ`B#>-q@#`6f;qyJXvHS!AxmA7z1{&)GBe-cpU$b?7dv -zloj@1*#kjWik2RzS5{iYwuK&wTH0a9#>2g<(KrYMl;-HWsdif|*x@Vm-!_0m -zb=!hRqkc`Pc&9ca6ke&=hjJl+R!+^i-C~iEP*r?=OM6r9pK)p(zaI4-5uOdwYJ);m -ztEI+uv;!m=8y)cDDn0KN@GSygINU0pc7j=5P)aiQIUP&uSyQZed&xa-rcs%D)4ewe -z3ldm!`So}{x%qiFy0eLLri6ueuzdV3Tlb@E(s4!aCo+d}Qp0@H-K;k(Pcb8wz@Wo< -zBEJ7FnD_Fl&Lof~^Y+hCI!_aVjNTc>c#j{in>GR?0uh)&fSMgZ?v^>3b -zfbM6*3~KMV{ggzFzj>7uNp(u?L+3yF)lhnjTA`S^I}Q@#xCQppWXb^MA=!~8nl -zmC5(<4w;=Lpu9&S@eg&0?0mMX-Fjx#Jt`ord -z8UKO2z`%;)AOhC{D@dm3*I~~fFzzNlCeRI>NoQFj+8R+l`j?-V{H&~xRx^5QGoX<_ -z)lt@A%LGCf>kkBfw|n;_`f@jWEt1ecUjQd0m#%eDHTTOVDT0x%i -zc6U|=0mOrc3Y+n2?-WNK449w?e;N!qNU{<=keM;W`647v+3Vy!)_;|)@A8*h25nlD -zTcrZVgfglVK~EkO`$k*K@eS+23Xhydxy`<5Wmi}1E?w2ad&qDgzYv;i -zytn3)$RY`2&j?hhtCdf#6UKhM0-o`>PX`4J=-ztv(;#DI`MO|2y)M%eJEj!^gyUO& -zKtvjHvtbpP&~mnh4lBHwa7A_r&8~2fb3brTa+&Nj*Bs=wOB)o+gxGM -zs)kxyrzyaPzFyUCxLRrsUZptN7w2B$heCzn9HskzwHtrfmW9poaJ!^QCMn -zO4mY5UU@1^yVp5tnxTu;_&ix{APbpMgP?rTIlh*}XcZ2LT7}exI-riy{hk`QGGX(cO>zvNVtyf3hKRrVk -z9b?5b#Q_1Lzopq?lRCv3r!uANZJ1r+hJX?Ag(M1=x~DIuS54W>!!2kP64YpJWUG*aM@< -z99PSm_x223Dmjc^Yq7cbhO#k#h#cg0Ho4sM^x1q#SN;8mo`C+(5}tgszy*mf>ruJk -zYv=exYAS9gp$!S!)3M>pzRj_#UnNV_xz)d43xV8kO{Rco0mM-eHlFML?(_-l -zx6njei)(v1EHl%tT%>4gdl{re9Mg;Td-*Z2>%P-t=YRgw@G=g3sn3xfii4%|ejb|| -zJmUfD_&eD0y!`thNMAs-F9Kn9WUh-LGy!g0utM}sX4BNGK)MkAgB|l*;NcU2MO{wD-Uk9 -z{J9TSGVQ@~IUck);3_9>+4ABafUdbBioIjZ?Sg)Y*Hb5w%^HE*(D1%LUwcRZ33m3b -zbw{|HwR!GEQeoZgEi8+_x&q!p7OyM#u%zL}9m<{b{CFSERKJ@PK#k*FF^D{RJaNIX -zTHRH2jXe5H=cr%x)hKa@=?DF2208dzdf!45qYjQg-|Wmj_Kg;6&Vwg3i?D@IizgcV -zwp!y5;EaBvg{VC%<9)4^?V0m{P*mmktrB@~iyncF6Z*}Yt&*F9f`AU8v#`u#9+bED -z(a#mZ3*yK2V%vQoS2JgTM4W}LSCMCxG}KR;9(Adqc#WbFLnH7;atz5fUk2Kl`!cor -zyRA9<;^N;c^k!Q+@9140?}traQ^1n4JfF8OH{Z`6yFPC07|jo(2MlV=f-ZS*ioKp5 -z-tV$KygUD#UnL`{qZqkyuaPKd>WW?S)Z4RcR -z7X#y3i-{q@D1m75{;Qnr##9Yp&Cl8y4L_n--T$)XyDXdX{+RckoXNScAq`X6yKTu@1-+ -z_ZVv;Ls0<&pcBgB0ilyE9G8|FK3ga(w~h*SUY4;UhXMuNZ;~#h9BCOwt&qi;rS5jC -z;vl!Ga27}*1ZhOa4kp23Q+%O9@&H8wD3OqAm)>jNMf6qfpJN(*{n%;F00cg>6%GNE -zp};&i`o106;g(U*@NecIVD}?pXY(O^nk+MB6S#O&V)&2YCKOfse#?Yq?)&L{ -zguhZHmx_{IgzI9JI&h3a2qb48*{M;KIJ;uzqG-$IX<+2X|;2JL%2w -zlDB{dun)@Ge}kghjaLT4wb0!=Ncn0>b+f9x%aS+orf9Ui*N0<&TW6ROddDHH=tQ?H -zZ??mUf5<@)gXRSL6Wgpl&R$YH)tK|al^p!8Q1;45iq)v_w8GG!-ln%qo!d0AbQ)fo -zYV}}(|Jl~bD^xzKm8D6H*NlxN9G?tJcd&7X8&{hDX{q7SESaFUUoK_b_1ljX5YFyz -zwg`o+&%p4kJC^eK$0IT}ZG=+nKBV47mEa*F146i9iTaH`+l5@jSwY? -z;4;!y<)L>5!xfm{C%qSVizXH_T97Ps$Y?miC@9E<-!XQ -ztPT%%2{K`(fMuJGq}GSZujj>I9Sh4!DgG*5x-)}ixNn>4n9NL}iev&B%``A~#iRTu -z=#-tlnyLBIf>q&h)(+*K4b#C`2~v$ba5;^Y)_0}JTgE;4nuap$(eQmJ@*I_CI`{Uc -zT(?X9-HKm%b8!7Rgq-ZJeO4~`Mq9oM@a;_IPyCD;LbS)*sPuwPU-T5#gl!eSyY=+P -zuq3crbH-T;M9%}AG={~*$~d3)!tvtecGe|_P3PkdW69BNYLSF}g64{Ayz?iT;AI&$ -znGP(OX(%8BL#X=^)_C5nDp>anRG$VRquZ12W6wUBD>W_VXKSOYbEH=9v!1?+lR$ct -zpTQ|%r-Wxp{nLRLg{1Y5n5N)Dh*dwu8(Itk7g<+vm%7FVk*ga -zLX;ns3%WnC{b#v@x{1_J+bX)8oGt^w`}q%E1R0b3cX1}5?ASJ~dY;)~f(3{!XzwTQ -zxih$C<#VQ#li&;^y>J{F(hUliKXOGpw_01@Ud_5J(=Sbw$~ -z69_?7gT7-FV%IL8anB3m-!8$`?tR-mr5c~%8a!3cD|1Pge!Q>$aRqNt0{g3oJx%#V -zaD6XG+Q75}L3UjcoN+QaEGauj#Oa)> -zvip>B?7{;|2f|j$OY_0nWUswR=l|RmpQ7e~_W+4#= -zS2pV(7w?K0Fzus6g^1QI%5Gx)>3KDMp^QZyN0DRa+^n<^;;PG|0G)``dAj@iwYW35 -z(jxpYClJpmki?fR>j8yRagfx$`e6jP3@KA?1M=z0gNA<eI0)^)Cu)3~$Dq7$&} -zVoC`js -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 -zhGTMU2o=<_mgLKSW@6bv?I7-MKX=3yf6rVo -zq3UIjk*YOurFC%|Z!h`TFK)b$4k9& -zX|brODr}(=-45n2!J&||bw76Ng-LVl6Iz`bu@m{(yI6h^veE6@QZEN{>zZO(+bK7n5ElI8g^OjhaW -zHCDqY7BI3e7BRrL?&Yy=fR*<_^zabB*m|6HnEETKU@+|+2kufZ3%d^%aYOqnN2nQh -z5>IO^vU<`ZfeWK}7e(1PKB(i8ibHJsw3U$@lAcg@6f@rV0q>=@yo+E@Ay##)Az+tvj=Jt -z7=+w!kXHGdl=W|>%r)#~c2q_cG9rsRHen>2D6NflFvQTy08jou@?WL -z>k_nbEqrAdFnrZCap4_bOLFq!$q{^TF)r;8z7)m*lY*tz+rXN5@n3ulldZ0ikFRP} -z&eINC-zG~y+S6ve;4k7`%_||51#c-YAV23jIAOCmvu0ivdLwg4p;RiC)|NMC*&Nl< -zRw}3r5lpi{Iza^O8VrLza0fOLj)&sMHT&cz@ovv6O$2)>G$vntJbXESQ_jr1Clcph -z)!VVC*GQdyGIf^Ep=8=r_^Qan5y!OFG>_#y{?ia-l -zm2vjv62xj*#iwKp=kGEUKkA0TTx6G^=AIoc?d?U?=J!w4+>}pb?lPp83=^vkSt}@# -zWab{pJ@!fUj8#XV8vs#&ImNX~Y=PAorUtaqB&Jf6q1#{K -zz>L1|F^58ZK0H3?rX{s>oKG%2_k1q2as06U)dSa(Zl#H0#n;( -zj5Tqo{9BOCW`uwhZRO`#cu1!fyKm5#!&>#bx~<)&^h6?Fki$Y>s$}JQa;&PEs#&H4(LW;%0J6`gz?Ih>OOGlCw<)Ek{SDc4c;qORJ-Sz6hF&YU=rwm-= -zfovftqMxF>9FJ+qfRs3kx9_H{DN+i$qf5o=kS-tedQmWMIwLmAH1+8p1I#gluqdu~mGa@53#XNQt#JS1& -z*d*=EGGAUJmOl0{DOyUj)y_BiDNe$Ux4v{g9>%%L6E>2%A4sM5m5h8LEG^SlqtBscNsePvp>D+&G1!FLzjjA3hf{_uUeTnAT-vLv -zrE}dX=`(>;kIi>LV9A(9y#ELW@J^|k!m-!N2I#Gt$?~V6h3vRU5Dw(dTPy4I&hkx! -z?eJM)%3=+dR!0n`%s@ZP9iHMburyk;E>H1w93D9Bpc_dB1vG79uA6r}Jk9;h?El9^{Jms$!1~2lm?^VQxd`!TDO@6M0>Yw#NrSXY!ToF12PYH6y~6%m(wuSRK(=^o -z!qJZ@aIlCvblaJW6Vo@Ly550Q*3rW^hukw -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 -z$XpfnWgpEoN51rbqy2j7a#k1E -zE8))hZl>XgHyjWT^b_4y@86)n@Gt(y_}_%6nyY`)G_6Vozy)+POzpAiIHr -z9(LVH$q5;8<#-<|-Y){0T#3fiUaYN`&_5Up9e(yly=kX7Qp^s8hB}uC)*x0#JtM_u -z`^ia-N#xuLdIP^9IIfYeX71sI-Q{lr4?z?kDU{#dRK9S-1j(dfx`|Z2JgsC@C&fE8-NE5ED+VY>V%zk{g&!>D|pw>AE7#0%^Gvht$%;D>dS -z{2Ao^=Wynqp%7}ogtg!_hVYtSve81iF+#d=e~54W560d)D6Z{^8V$icxCKaXcZWc5 -zcZcBa?iM5v971q+hu{vug9Ufj0E4^p4#V$$_0@a-ysA^&nZ0{=uU@^n&(vh@48A55 -zPBol$HQdes$*%ztTws+fTwelPP#g@2SrZDQ8cqy22iT_mdBOMMT?!022J9LF?E1yz -zWB3|^CX|ygnuakN65#6x7!??dzbJMmI}qd#Nn^~*Y8GjD7G?MvIEes6O{f%b&V*nv -zfGfa(^Q%K4a3odm(cJ-(F=Mm~W3)N2|HiKrc6WVPQ*b;}aHa~RzZ6MvbHtd!@jIc} -z13p?pK~BNZO~F}D!Ff)>Q52!g6`>91iZOkT%o2{&|Bl~DX9*=dWj@0}bLoN19>5H? -z2h1*t(2!nzWs5Nhy;%B-MV4W|fng7zwuBz!qqh -zP#9q7eMM+MBwPTuSR`Q4`3CF*ksWvs-~|pg*pnF8C<%ZAg#U`~ANjvaF#5&c|EMSc -zrv|`$4fg^Q$r6h66#?L1F!HxhTjt6T -z<6LmaIpm7OX{konRx5s#w)E?eIY7K;K6uArX{pvi&C0Cs?X8K7IiD)^t~UwH;9Aq<`;!LOdcy{DfmHkK;}{C$ZCs19fyKCm6k -zD@@TyeL!4*;Gtf$_#zmfJhIr -z{~vaNsK9sx00M0YsQ9H50kUBJYaGBQFo+AlyaGi6P6PbMX=ug|y?OwKHuoz#K-t5< -zMFr|*1n#fbc7Gk*Iy_xKLjX(x^YtYLK=12(01^kV0jsYq^fEMo_`swGh9-~)Foj;r -z@&X+^s$Xe)5e9IM6_5mw5ZEEG0o3GWj(&TY{=n0h&;TYd11|*zNCDiu2n{@%|2Omj -z<^a4vjr;z~61bZHXkN4iZh1f_FH@HTOyQ0K=`K))*XaZ}e-%04AQ(vOb-n>g16BbV -zYJjEx#@NdeAcogL^g4xJ?tXwP06h3U^U@9Huke7SS9$@?fGmL`0Puo~V&mVvG?>Us -zVlOlR>VKt=_*Lj&Xs`XTCj4JMxL{~6`GCjWOX{z)8vr2&t|%}BlYpuAdJ6<#1Bt%w -zy%Y+71}?@+J^vRX&2GEr0t1BS>Ym)PQE7=Q){;H8$YaG+j<_`mr8Py;kF -zaF?e5rvzYrQS$$Jl>q=`05*V3fR`9Rq5zNx0OWu1UZ>5AD_{@kI-@kWf*_QGaV-k5 -zR1G+kFLa%%#;|?PsLri2#HuAHR&Xa@kw11qe+l?V0*Mg?U*L_7v`74FfNXc3I_U#H -zQ@~dynw1}$IePEkX)%4M{oVCTKfs_9xA^Udd?)a6BSaQx>|H3~U+@KF7)X*7yWHfs -z8LvHF9golu|e_Vj$U_`~+m?%9Jwi)c<5gMZ*k8B$3$V7@*G%_a-}5n(o}fG#YF -zM9%!P=l}I!Z!O@(;^hq3^#9)jCBpRoPD$cKygs~h`Yeef*B{_ta5378fb=E@kIMWr -z#K;GE4C_6fbz=-gqbQ3WqR7}BYUim*Mbe2q`5}Vs5PC(i=QGCRV@&kWDQ*1c(=U0! -z*I8!77nP{;Bi)RsxE<*yqOrCH3SfIC7 -zp;UKFsEpVe71!_H%Ae8a_92(yR|Q`DShQa%UrOQX*_yocLBPPdheOc+`}^4T -zcNkNDpquBGtN# -zC-#pDWVF)vsqK;O1m8W4Kc3q8CHn+Fot^gI^5IxQV0`;j)1>RGX2IB>{Iu<;y?vfY -z%pj5=W$Z2+*hZB=ywiWK7_`3#%}vt(t=P(%Q7i=!vvB0EqS3(qM#F_b#;CgAO+$6^ -zgX^GffcV9?HsY1lxLOU4ZE2k()s<#MgV}!h$nnIc+5>4x-Wd@jj^>54n{`vcEs_lNgov;HB~#HP>iybVg4!26_zb6J!p62a+) -zy|BKI+lY1YmP(nA_Jr0Xei-h+kK~=^nM_Q?5G4&ZX>sXXnOW8tY8}0K3}up<9E&9Q-91?+n<3^8g&#rCqxa;6Y{v^?HWPdlUJX^^ygbrg -zVd^={>Gy9s9*ghBv1K^3#Ijb4BCy#B=aYCS2;x-4t>Ex&bT~>o@!Srf-Opx6CHEAGG+o)|Q`N4;?KCvtC2yYV`>2UZ+8IB)WhH84 -z!Dd~#BAC0%_fSBb1M++BcoJT&Y3oo#UtQ7^o^{F@bK2nrT~mZ(lOm{PYz~*+-7ZYC -z>-E{0lsEMmj8sn2g*~d`i(9<+a&Z2aLfLD!y*$g;XJQ7O%m}*5=AQg|4aseGc4yyu;{EJWo!_5Qs`)dGmr$3ZFt;gAjLM8g7yraJxE^bDtOUPL -zD%H!eyx*_fs(VhDh$&lIHPzribFG}_fir9Abm?5$QY-(`AO2Rr{y8K0CW9br2YJWl -z*oVa-{nGPL^k{?}uc1-61?~Y4N7HuZNvjW3*YdZEtJMneTxa5g&tIHJhpca^xS|%z -z*{}#brQ+#7)y%)J{oXE}_S$ec9dbMZzV#0S>F(;}vS6OEmRfh0&AIS#Ez+2whLJR% -zl~R-boQ%3hu4YuYxbPyA>{2P&Hixd&On(C!^!=_b{(9ud@)yddQ8x~CKIaw}UUCbMdR)lY`o4N;!^P6BT{76$%b@`FAOCiaLfSbE~_0PshnysR`NbOSyg$Eo(=i -zKc1am%vY%}{hW@g98yEt-mu}2iz!o=+%=|+rEp6??1gmQX}E@s7*nTZ`&~L;V4ttw -zJasRGW~e+#R6zSthZAAqbKd+;yNO!Z^^eO#2#_a65N?I;seif9vhn?=Fe;tdWc4>S -zITK3O3wNSZ+#h>gxDlR|_p;xcPzBPVCpT7ppyqmH`}1h3=_&Vl;zGUCx;R9%g?#-_ -zx8>RUh{@x$U&nRbtzvCzcoa8`nWDKn;$oMzu3f|MYVAE-RIW9=vy&+SPyC?c -zqP+OrOmCe3 -z3?yGWR2+=Dq%zo(`bDDr#`?HS8vYx3h6sB@N^~_JvpxEwz)Vl;bo!nuC)V%9G7eg6 -zxpUWD)B>UkW|;0@JICjTy6+4*f7@j?xTe`5*3Y}ipnG~7kE`~319VzJIb&3*D7-+TpJat>isGw@xfOJHNSU0${xX9Co2i# -zG>&N>G+NYy1&?vmTj${+!zk-CblzsQ2b`e7+U|F90jRA -z_RD=7Q8)x8B(tK*tg;v3G1-`KnfpiX-m|>g3TFr$TClzET2pDMat>?ngs5$}7#S|d -zVgCG*t%|(>9QvrV35nv{^}7n_{*`FxOz+M^X{`6N;=~4rBW}kQXm(D>W0rP8tEtD9 -z!~^oub1S_1WJ|bhDE@M=&4V}nKL7rVkqfUcB-1u6a2C6Y(?+bTJq$Ci-%!9C -zj}Tjf$ya6^WmvHip_m@54&nZ&ixwNJr+Jj>LnIGNuda!01h@8G_I>k8diU2z{MuU9 -z*|Qp34N$jAS3_N?%XbJQ&yjQ8!>p+Wj$b2$ZMk^u&xWN2pky5 -z<*Isvrc;mO8F`&FXOEGzL0+pz#2&E|<%z=`#Z!8|oh=${wFluPkvJ6%C~w`ibN#c? -ziahRFs5Z*EtraRzDB884X;ClNu6OKpM3Hst8GVH=)zzXs$q$!)R6uC(mbH>0eWFA* -z!R{qFduZ{5ip78tP-O@frkz;dMBSrxeCX~j)=Jv@0o(h1a^s+IXT8od--U7DsAf?% -zSO($xQ?ZA-a!VbWyA@8k{+gW{mFk71-x0xY8Ka~vj&}dc5|9dG3zoxW;vR0sM`STj -zyi!wwAQdDhmPWT*#Wa@70K;ZGw)A+BtmNrp%PP^6PT1o!$@`!n(Px2)9l7X`!ddd= -ztbatlw~5bUUdu#Jg~L%<&kt@3q6SM3_dk5KO-q`IuGPf4>qrB)M6_BtSVJG&YI;4+ -zPbz7?b&6a??2g=cd&yl-4@-Sz(y|lk7bNXKA$_jsE{UzASZC1mtHsR9l&)>RIHN32 -z#tv!NK*N$r<_o)E9?>JZWU=`-p6ubMxXT5%iDpI6rcNf<`tACr%->~@DcZ{x$9J2L`;#?9tvC~+a0YpCwCUlh -zoH~3g(LV+KM((0DV(rdZW(y_|fmrC@9X#2(raY+NtmtUQUy{KfDs#%U8R!Qs6;yf; -zNi|s2RV?;APtKfm%#skeK=wx)e=uKRSm`6L%9^_<&tIlv`e)+n#hK-SrSc{9 -z@?kDC{VEcTn!Zg)z|Z%CYs`^x5NYu~OPp*j6)U%Q(49uDE+Ueo&mI(u+)>kmnJ`A+ -zR;WC`prjfr1)EfEy^iNXkmEClqZS;?>Jj0+n0 -z$`rkSf0f=7Kw8TJmV%-BBZB|m=$NH$gVsTC_N6GSU2C(Be8Ne -zgGNlxCgqWBOfDqiF1H;heuCWYh-q5rKFhy-ChjS9!C!HEphwUNTfR$+j{;Thh^_Pq -zOu)aZrdT~u3E$@s7wJ8aYs}yT;W#X9O?y;C@7<{4ec)yv8R$tyfdGK!5e4&SE -ztCe3|u2Q=vejGe{$sgB)1_a29@iC| -ztH39xYfz3J+t3gK)OJ_yz0_+<&| -zE2N0i$I|0m+KW=O)dF|YNsXUod!$wANy1mF>p8aH;dbviq1JE4-PR}GqbvIZy}dA_ -z+;Nz*NURqAkFXsP2~C^OtL&0(bKbNkY6oxP*0YS`kv)O4n~EnTSh|Dqj_Co7M35AU -zU+Ld&&`f*%3U6z>`gZ++Tjw6C_5L%%)p0F*SyS;-Nz}0=rIOErd=6*F9>ZQ-w8t|{ -z`WJf-$9aA|kyEaW$cLK2OZ?0i?(cDbk<;pr1 -zLoZC}oIN$iMQ?D$91|S}QaEy=VRzo#3`3`%E`*BBLuK_X2B&|f!rP8pW!t-EXz1oyM`| -zbT*2>dgtGVgW7*F5n{4(e}{W}$7y26DYS-0XukBiE!RO}Izp|N7HAloaSASCzhzz8~_W3S@FgV?y*1 -zILYO5Jf?%xig>1`jn3zZRGAx6YPYeP=xmw1Zntonh@QMT8%h*8xOPV9cklRJY5X+x -zr`h+WkCB~x3h{b(({?xvv$(919{X_+1Y5`QsIB*yfVJ;rXE9%Tedlh0)*u>oI@P%D -zYNgUa5+s;|MW`Q*%tWgfGT=iWUrG1rsMN=H@vo#IF+;*(+?|@{s?fLcr8)xW+SzMM -zEZc%`yB!A^9*|QC3D6=7H?6$+{wUS=P$>>v&x@+ -zJeGW(#u3wqpRZ=qc`WbGqx}QbmnYcEsB(;dRr~qf)J<+>?%6IILbO+yF-n^22#=V4 -zJi&;Iw)wN&78h|!ZWPciEBf4B_)IFVtT|RaB2N_{McmDa4kCpZy$+4VE|p$~kwCah>GSS64Q -zdT8VIU=B8ve>hj(qA^+v&!l#)L%Eo_{B)vJ-AwQsOpbZONAR~f-=`JPI`T&ft8bid -z-_+&Rw|JV9?I~4j-2G&$Av`s?YSzn!y(%912DMA+nSyUuS6qcx9lqT4&DZlXtjJnX36Dm9aq}^8 -z8&sTV>-R}ra8ZvEPrCA+ZBZsNz;$2Y4BP$DAC%pdbV+t~SxrbkFoZq|U+se4Xo2pz -z_sPu)A$=qzVN26P?<%Qsi1L86@Q2*|h*sOSs0+GUf33jnKCQN-IVSf&+Y|9cmYo!o -zQACDh7fXbHp2vK$Paiqqbm(=4+qS`xNCMaQ_h{Tz!>#cIOD;?N&SSZG%YB8bSzCNg -znQ0puHd57DIf`8F=Y2h;BYoFj1THEMNS?AqJf&@d;vw|ni -z_>hZSJXYJ|MSew*&^^Sb&mS5t*Y0pAutchXF5HSYfKrM%nT$K>(Cjj{#d&t~KG -zY{gqP=%J*Mb7mb@G)-RKA;w4ODelvZajRLihIHgNKxkbh>^?vS!bG<52M7E=L -zPLgBO>$$y}e7@RCOkTAZtQJtswcJb=KRL>!Lw`6q>f93+P~@p9qK5w|H$4(g?`Gmd -zp>{b&X!iIy5EJ!gZZeR-v(xgxDEu>uJ?2p9k;fHkPoJ)ZvRVIqZ%=&;L+s$b -z20^O*CYj$sjqh2r06l6w8@@MQD3%_Azu$|8$g9L!L_(M*nI~i))Q;eoTjFY$;q21; -z=15x8B7~g{;>A=$uIcb82zPb5YFisLNXYF{9PHK}%-!AFSzMu+tf8y_CoCLdqSkvA -zvMwBGP+m1>R?AGIG}!7z~ApN7_xashc^Q%6cSyD;_NpdEQVS!9o4z-Rmr!;MpMDi?CH9M|X4OVCixx8Om)UT|Fv5pFU&!2a* -zKV1(tN%(!({u(An5I%Yzk^3_w(ey1`oTqc;^Onx@K;|v=^5n(n5-npbR$t!0SjJ{u -zUQ>9kwOo$nR7!lZ1nHOC3Yq1vaw0ChI-4wg0ACHTyIC{@Zh&-a0w{6)YEqDR{fhBj_$pC5OTTPELbR#h}j^IY|86D76( -znJ7<030?Xx4J12F@Nptd%C5D{^T;VOFVz{U*RqI4YD@;ri?3dE+F5GV%>9F&9<{-T -zj^u*LYWLb6D+YP^W*OC-ss6P#OKt{9^p(0Fn$n_G9xn>2`O}MoFd}9%#wu`&)3{fi -zZp_=Ybu*qEx3le5Kd>Ub?{}%_8A?>CM64;!lNps%Wp7z6lyxE$GYoX05}{K1c-*9l -z7RDAq7c0lVRe(44$IZuYTW4NkBTy)X6bZP&eL6CZ(D7RM)q2?%uh@Eu(XThqa%6?k -z3_|7>*hE#ha|OPwTE6wZ({AO!uA_mCH###P8`b-yIjqyn7u#=nn&p1`JlZ|gyUK*t -z_hGTn?c*u^@Bz~lx~mPDHY84bMd=;<7dGz4lx)4t$ZR&`RyCQoTiN9F -zB^oh5f8F^l{NR}k=C -zg<(iRRqXyjK>qu0Rf>62eKhu4Qe@YJN~iDhg~f0EW>FrkU>7BE#{w)lKbNxj$&F42 -zSPK3elsqY6OHEhTu<5ZpY|*XPwK<}Lt?Pbdx?i029UEXvwg2=f#gOWoBDG!3oZ?oH -zE|*S;Qv)4Sz*Tiiub!;?wc^ -zBu~EGM87FDd)N5CUw+__GGButC^;Pd#4Sty;p+Dr5*3Y_nbVY*h}^8mKUtQg>uw=3 -z`W*i`%=w6v|8cYMFgu!*pvx*4?Hy$KQOVfz?ajfO$qffz$bn?5EY78Y|9#|LY0~O{D -z>W#Xh=d3-h)ibLC$O+MIUYd+l)1v|vX>aJO0;exFS1D9a?54;B9y4?3`v~OV{jmBo -zMAVrPT2CrcA&m&j25je&K~1aGowhV_t>y`u$Q3OP@5LXtZ^;;4W(#$OU_-p&sj;?pqT}nNupY?Vs^28nA^RE6=zwl5<#=`R=f`Oc)gbY3m -zgt(tVmdYVX`WRZB@I9jE{`856Q&Dt&gDZLG1XY2Tuvb>hVTsmp>SYQ<<&Y`i!8Q#BEBdhh$h -zjj1Di99CpY?#+;frW*|>&e1n-KYTGNBj2O0Ei-SG$?5R#GRb=5t-3Cd+2sVPDU$4D -zQAU<)rvro4%6|*vPUYmO8Fwz%WC+Q$bY1LxaV59j1oT~DM{nnpBdMP#Ypl+mHN|kF -zw$(=uTFR`ao+|Wr$hR4C=D+3^yTE2S7^-{&-*Le2n>%zmOa3wLt7^%-fHwV -zt{zSTALb>rLEaoaDuj4e9%sYf|1+WuTTS2d$%mCl5jB`!!BhIq_0Vnx86l*2V>>gsl->7BL -zdYrxFy)F<6Yh3Ft>b~Tp+WoTG8a%j4YotNA`u7n8$kwaTa9-*h;XUL#_U+ -zB@!cbP&%R-!)P0i-BA?x_MB`xu=YfdroLC>rtFNY2&Pz -z2|9EPVZ0p`!P7taT4t)xFl(ZY9Y)-0fRz&DcpZUIpl -z4qJC3|12#Ymp^c+uQ*{yYwH>$uI}xKC=yW{`>8p1YlxUBf)Wu*($j&t!}Z1~9gFp+ -zg=v2Aw5eE$VmU2 -znRL<4RqaeJYRNs8VZT7c`)c%E=}pW)QfJSx_x>vTBAVJ35~1e7puldE@Rall;QvO9 -zf)jtcFrBCzE3V#_fV%xB2v-P35v9wRDvl#S55K%Q=?!e2=@Y&=wuD16T -zX$I0^*?-nyynPi!;A+f=*3ODHq?|i7If8!Yc7F;!6&l$4qPL}AIsUb_?t2Bk18x}K -zb#@QQl9!JSm3q-$W0jkaBjb@aRo9GH{Z**gwfZg;Gu@jH3*$dowo4W%JHH1O(dDjW -zsR@+L-mUvEFnG`}@eAkjG)pc(QmPnevVA0=Fxq6HAn2I?Smk5z$Ck?&e4YMfYN1+ausJ4wys3q- -z;Li=@OlKX5VZ3_5O>Mpb`=e}z)swTWui;@Ie|y~x_o&?_LZKIQXSJ$ENDhkQ@XjLw -zo>RbAa&0rD1cK@U$Vs7pNuq!B+q2)Fx7R{#R@Tp_vL|>OO@_L4x3rcP$BGrtD4iY` -zik#eH$4_SzHBGK;+bjpA88Zw`;Iw_JDd!}fU-M2`xLt}E-a9DOgjPw|tSWkTZCTDp -zhg(z3#Vdd3EPv%UgS1|kFFS2Ki#;0ZEMN@sg*(r0@U=q3MOPaB)$Si6!PI`mAA8T9g=hJhb?R$h5kw^5HwSDO -zjIRKAz-7;Z1D^)Le48Rfw#)8ZKAsT-S -ziaiS+d;mZI?WfRfqt?dJPTO0r-Fn -z00MvquNRu-=V*n%ZNwda0NiV;FFq7sXu$+16GEl}Xb8X`1AG8D0QkVR$JAFCFs~`u -zFttG1NbFhMmYMKzWOfA4Wa5e#02Hc^sX93H=lN5j* -zK`=+JK>$oZ5C8@%nDG%XjF&n9#{mEU@4z152gnqtA3)@5)_p|~vVbW7R~+o@^{+7a -z7|DOY0A~QI7hV9w0INXe!0Ccl4ZMm2UtI~iB -zf$RZLKze`=fJVSS02rv{3rj$VSE7M30no(27B3j5$*}crWsCc`KU=EBP8|yNKt5XJ$v49B)I>%YMFTT`kXZ48TPU$`kPK%WwJ(j -zbvH#E6J6TaIvu^@MuIqJ -zc1jSGPX>Gz({_v+bXFSCRUexIiBS7DO|S3FNqZ{QTDYzC+^_pwxn=g%OF!A_>RzQ; -znLD>KAIVob!TisYNvN&xIdHkEeL(G5BLGQXq{6c(63RN_~>x% -z>HfR2L+jADZq*tkRr~>8op)#$@|w^nd8F>xv_)Q>M67ME9!PVLOr$AOOUOmeDr=K;$OOxjAii)Sk3p=L40QEAQkFtnbvY5@t2(T@TP;%v;7C^(2~3{f25yIbaw<4n=RJTU|5k -zDePPq7-!~vtKQg)u6xQB{s&a*j#e!3V|qWy)>UumAEcH4`gEp%rq5$@h*8TTeQJBJ -z+^tB~BeEQut#6?GaMBr>*P!QfbHWDs;`{B7w+phRpxMpwytnBbofm#`9D8{zE4qrH -zqhe*9(>*9#+`R6i&f9ZDVT1ba?{Z61q7FIuvBJ5h{Le94JC%OcYNgkgwwL`$>qIIX -zlztu4^0u2se|m9feC~>+M6Vt`(%2v^UN^V7($ -zz0K2)inUZ<3&)L-LG!KM<&IkT8@S4Um+tP%-G}~@t;4VmumX<(-7wNWMiLVLh8zY4 -zMNHx>4Z3QM2R+~o89m8YC3G*$q}`IyJmG4F={bs_g6PedbO;j?tA)2SM=XEo1Uhl8 -zPpYf8@*mVQrgnE((E3#y#{COCpA=Y2SL{{Ry&3g;UR`~X#>pAdkoVm)>5yH0;KPiZvSx4Y-DaS(AMtrlLvIs{_`y@}3UeM4TmR_X -z{_}6XXM-Zd7K}-uGtQ4sFmYkGEc}V3-Zg`$15&nI>sIG;HuV&Qf6Jh|DU2lSx;w+0 -zPD(pFksgZHkMz;08GF+MvF=dL%UP&1<_pfdj8`U?pBjDUZK_2m?&%DET_bumuR77J -z_|0X>cbS(?d$!Fp97jEh{5v$CZZ>DkImAy!G#x#K+1q?FNhDO$%pg{8nPq%ztm00p -zHHo|SBkJzNwQ~iHILyQQEqz*i^jp7jHFM(lkQQ>`vB6G8;ITxA67qQW0rkF;{awgN -zC!G*al;f5;mUE<=JTLj(R!98&N{2wE%G345LqlT6!*0nZ1CBi|5tcOIiy#8R`}%1b -zdNJm|@c%W?fBK@+(bD%&Zsm!G(rBJP#!dNHo4GQnG^2LQdK|WY6cCdAfj8OZ?%DH; -z%g1haqSB?Dm=lPfh@66o_8+KzZV -zFsDT2lEOB};-_s%R+gm72A%3aaf(kZ;g{GNTW8-1(H%I=0y``tE&XPOPn$SHxfkk+ -z?T(wrhniNi`TJyu{C;XDCCjnSE{xo7CDXjioa4^KK`I%{tnGos$<}yE!bZ|=v!W{H -z=1#7mg!$tQtVyM|KP%Jw_sS~Tof&TO#yF1lVWn_1X|=@-|G~&l`x2qYVzC?xQKBn4 -zhb78{ViKbI=i*cKLGiAN{~T1A`C{8OnTjd&;SM7~m%kQgHkn*Rxw!N(3`uJiOX*({ -zG!`0u^1Mu7u;X_0;rqgcY)xolwk;YN*(JTn+3Z4in66=jKy1+k&UA&RL7i0EP+vRc -zLm?Ur7sGmXNm3m=4!-G_&7C7^JkPY|U(A@~Yzif(nIiDBF>g2FZ1vl#NJ(1OyAI2^ -zVDtZQt!?as9HO%dBPLspZ-c|;ZFnk5Q2bMaQLs0c-bW^)zZ1~lVZrf4Oed|Wl}9HJ -zq{7FCd7P5a6n)?6;CD#Kqq*v1vev!w%m^G`hM6u{eh5<>LT4s-lb;}R_5L-f3X#%2csuA -zC?=;v1Umk-dfk7+_&(bM(*yPl1xqfu1}g7z7+NG41Wm5X8oM2?k3re>8>a`BK5-+- -zCQImd7mjvr%XrNd@Q?eG93c5I>ulWF&e#;_#iStiAE;*PqNcDM7;4n|!OYx|$I$(l -zhPA)P{TuFfrqt&jDJt5TWqV7|Q>Z=l20QV>RHKghr9aY?{M5gSi$7&wibpp=$#myX%5#+-V(H$@|W;nul+{#jdR04O$u8kh<_eGeqDy!jo$3356!5 -zrIUSm>i54dV@hUNAbZi -zi8+ox7YDvAe=~IK=k+QaS7<0pGSYD1mg@C)P9Jo-jyd2GLE{nlV+WJ&z&WvFqXrY( -z+Mqw}#FmrXoO6oTJ%PLX03*GdVp48AFt_oWAJzXnocLrpRu0v+F=^QR(E;}U4|OrLKx<9b4ppUk>(@B -zduVlOy>=GZG##pvkMT`-s_BVL`UzV|x{H_dkMB!nkl6^V#7rqQG1E~hEk0BLMXa67 -z6idg&YnW;e$GsriDOiWPr{lHHWmnYs=MxlXj;J`39Y>jd;;~)zOS_Kw5KiqEUTHC_ -z?Zx9KgA0K$-lgz9jW?VE-)s$@DxymN1~h#A6(97zQ9DAbU66V(I5&pybSfjH@Hf|k -z`s|Zs|EU+k8Pe+cj$J^(jK`2%xKR|5Yr7$gZNLckHGL~uL^UCwvqa)xPmU9p6B%x! -zquIJ0mre)yFUxXI_1#)#)+I~MVY`5Fx}*=hjdo`+mE$9Ln2}aH`78zDE)lDcU90g< -zCINKm7`-RB_nNy-4*vr3yJ*tb`gNNrPa#Q0Ci}Cm5`qRtBt&K^6bLb~Tl4g>5TmY- -zm=t|?J_g~K!}!K$%9la%>oej16BpEhzk-#5h>zh`T0C1rQL+tK%}!ifutyasMXbD$ -zagtyn1aV4DErsWp| -zsVX;ikV1Po=~`&}N$F3mvurX2xj?enG5Uk0G-3F_POrNC_KJKjRr7SsM9m+6RrDP5 -zI%wn%{HjU| -zyp$pJ=xmc%~rP$o;?ek}9D;y#6Q(_#V_CN_uPwVX+ufG_{DtinaKP!7$o96$}g2 -z3%xA~8=LN1Hbyv*igPV;z29{f-5`}Mo{FnxqIXBrXynO2Mc23O4A95NfN;IZ+Ch7~ -z``qU^k*|sM_RalBs;S@t5%oui=mMgY6cL)@JcV(I@>*syzC#bvk7n3ef7iqr0#s5_ -z^!B()bzOz$BC2+j%v&OME^E0~C-V?;&Zhl|jM68+|Ij)4>Zrq@50(nRVY0M(?J{)m_!p#DC^<{ -ziYaxtjd<-kEH@L4W7pLSSxUbnd#E^NhJDaMP7$3u6nIRCwAY(+9`Rpmoi?B|SG%Gj -zsXB}n5VZefN?=!_NF^<;5j9L=v*x0dUDv6fL+T1dJW)yia0W%O9g1h*E(Qj7Px~Kr -z?%wV!=DD3JSqh;d3+zKJ6EhiUJh1qPSHZQZt`yb!hGayqP|2=;;@SQ{mvoG^UB(t_ -zQDLEofXlZ}Ac;n}d7r@<7eZg4n$DQ_b)2|aRcnwgE-3uke^$1mjxcw6SU_VlH{A2P -ziSmBTb?~!={Kxa&jNAJLyH$fj1LE!4TnwD=$jRqblSo5ku;XIHlUP*k6q9+JSV#8_ -zhfh0Z`dn*6`)c`1*VjCT!*|j3|BzY@C|AN*gfwUzM~+t|Y|<#wyq<4imjcLsn@8_h -zV%mRD6p(qQ?AxRKZW@XknR9z?fDtEABO4RlVQQ1$Nrg7QRnep9WS=?ZRB6Haq;n1v>l^yLCa<&k$|@GOa)^ -zm`@NmmkUoVWdVLMSrZyliyKdOuoi5f=e$pYgwK1!eGhh-pCiYjpWV<6zf{}6+&r5% -zP*SrPL;Mgi*UGt;$2@viwO9Lb)q}myF?V!EOo(jxz{w~V7jP+$qih568#5!KLWeq) -z#}AC^<9N6no%VaG#MXdN^0<&^A%5#~M10lsyhPh@^h~4xB}Uge^Zcpyd1rv={j-zu -z?Qy$bT*p!1PiC0{XR;B;-^KeNVn6nb&#?n}8N2)*CsdPpynic$6{=&kD7WPx -z-wm~+%R-el0j;tX)je#bg6fI(l%DPsghCyoHOPu$<4^Wurl?|wBmv_B6am-1{% -z8fLE^o8?U8Y?bhh+LrM(h594^wjHRMOSHj!9T^}cV{@Ykk`taZ|cX1{1X$EL&<;JA_<-eA81ycNhRF^hpxKe -z16MY~zKWylEWuo>9Fym8k%`W&=tPHp`<0$G-4;Au)SKUp+(vO;apIF{Eo*+jBGrL( -zyj55EEb5391X7U18MegqvGf~V@zt`XgQ2(+!2WV;3lQWSh^_^PvMP~UN=H~^iad;gia -z)JLF;p+g2L52Dq!ZP|NnLDZyG+x*9m>_pWelTh2HdFGVrJ?6rI@wYy;vS++p6Bi0= -zl9i!)|H9@o#)drJwsD_WNKL-OL5$`iDwX@i&tgYvcXpna>vu2~bWrnzX9`PB=zClgtzXr-D53NZW4Sz$Y;h)(0$TIx -z7G*2dUwmxpq`Gek<(?7dL6SJKArxB;>ww -zu#fTxiyuC-JAUFr{&&AZK&;_OLj?PiHC5!k54juNA$PW2K$Ugi+oL*}e`*4PD|VaI -zZ{8zxGraK)G?LKoArNbgUUkIv9!q$zf+(7X``6<&jlSoLBNh_3a+N6KqWQZks!xTT -zzA+iZRvj}f^sW8Kt(4vDaQ`r}{SFv}_!qqz;*{>j&jR_o=|z4(LrSZgjIefPdbd`N -zEvTSXJUvy2ZpM>JZ~a9_geq1;MlEBB+WOvE-yo6G7?W4gaNw+z(s%P4CQu@=T7UcY -zit!5V)8b+uiAKA}wkeP2G6EB&Cu;@Q3!mSy7@sIM -z)D`=~gpF0bGq*H1)SO5t)-DNJXmUbNg56!M8|Yz~_j;;f8mU=HCk)wX3oIp*V(dv( -zshmCtUD;f6f98=1ue{{je{>*ipMBFKsfFHBX|C2z8RlDFg?H?=yUH{3G?QYe*;yzU -z0vUy`7)*oY`YA>D-PUJb_ar@E#u(~4qy$!bY&(%SiOn~HQluZOybAo{Nva%?mt6oZ -zRbAkd12edk8@;l&W5mj4?PBs5cBQyen?Q4xAj!x);u=m!>;uI}pYz3nOI93|%YbL= -zaP>+&D0cdl9u2lSvr$Fwlnkq$)kE&Pzg^G2u{Bf0g_?@{-h3b~YbPO>ls_~UvYtmq -zf$^G-B@tOf%I%z&g@KB+@SQdui~a`sA!mIOH+koovumi}vR&H@q%}>ygH_xOb2erF4*)|z -zyuUP`#_4Uw=@^ShnS6p4n&vVftVusZis9+0#dQsfjp(#U!ef+s{^YT0XG>pjO-Ji7 -zi$6ePAp+n(?Si@4NZvO5@f9H&+gp{|jG&EZ*+)xzKu!fKd|B#Zr>VuyUMCo*Y9)cN -z>v~-Gfd?7kn6`ad*2NC23GnyZjrLn!jr&-+g$*=5RL2{?)_tyaSQN!b)4m72{k>*z -zK2xTRO*h4UO;O6;_FFn5)BjEaJ0@PTg^5At^M(zu_^AVCVlXFX{gVt@cQ;rXgdPNX -z$H=awFO?3emK{K57u2VfG>(usJ2XLLzSn4B>(dD`4cf{Q2sk<8t321Fjq^THL%JZ3 -zg7g)PDA_C|-PiLHs1ezty-+tx`H?xyg_{L5oM7uo(M2wYSlRU65^-__CGG;x+Lv=J -z)QC2PLWILRlF^6~x>!GqUfQj8OG@-2POOuckKXYBooJ#}xdr>q?aG;0By(pKHgy%h -z|4|&xpYi%=Nh@$SQlzhcIy?7Mwv@WoU&H3zv6Qddv8_05fMcEoI6h8^ -z*y`Gj+b80D`NA$muYfBU^N|AOKs}=Sv$blxg_PX|fp%eVok;~Xqo7MYr}p=boysae -zIX@kJtPsiWjfJQMeKhY>#JgwLJ|{U>f8!N^LlW$5K7qJ~2_j-lm07Z+W6*n$ly74^ -zW<)o(yV6LZ{5K^j&1c -z>J@-0l0+x{nx<{`Y2insUWiEg$Q-45P`Etn^uGv3ptP^K*0Eb*(EKLBr*865!pI(e` -zZ(5LHUCd`d$9E`_*>%dXDt2I{*Hkcg_R`IBf?J>g>}NNtzn4#h`8^XWnb!CGocltf -zwy#~9p}Z3p;)WrRRc(;51fx(RnC1cmdx>|mndwcDo_al&E%=7()|Fbqmei{luNy0~MvBi> -zsl9Ty8+%;peW{V90zVr`m#MWo+tR;!4*_!#!PYIm>W-@4_FuyLl16A8B!WmZ_Q`R^fn+h&1Xh3%#ac9@~UmzG@}rv -z#^ABkX^>t8ti8GIXrn5eMGYOs<)C>g*R6PwNUG4YaTuJv*%V#QJ2nkCyfx+CHYoF1bm}sJtPS}DjY5T#4I5|3ZTBggFNplyM3CNg -zZ}U58YlIh0Y0}t>y>7&uGtX5V*~{QVnqd0KWK1KE8ngK2i)r3kT)Tk} -zC?zw{-*CkXQR&%`LGV_&zqC$ex2vM>XBvi8!twHe;2k8tpmQpR*7#vC7WzS&tu?Pv -zq3>lpjmSyA&AW;uge*r8W8QOx^gdlU220T@&I_)HTtPo!6VS8IjlUEQ+Zu_`Gl#eu -z-}ibAgC26epniie;8e};P?)p@mt>i#Z5(|zlv&9S&tzh(mflSiate*;L#JLHfzu&n -zHN5+6-0iipAmOk+|gN)N<-3e&~1i}N#JyTwYvNTLAeFDp)keq{YRUu!P9QovGMUv|W}u?|r&+U#j#UgarxGlWAt>oP -z?2H&yL7PDErW873C;<;m5WsN#oso0i=!MbI69SAjL9ENvFojb>GPTb2}4>2)VT2II%fBWABH`!$XG| -zLK^}0kEBh}G#}`zf!j(Jew)IHEqwCGP1Irk^L2Fpe5H3U$;~PI53JZ?>KM77Bch~x -z-E@hyq*g7o55AlayVs+oWr*XKIH?+eh|JikX(OkR$T7P+Mp9n(S(Pi!^l0~q=US5U -z?H1o53h0DnQlQrcS34T9kS%mw_ll&=wG5*p;gm+OibiP`(ACYlyJjAZd1Vm?GU{ma -zQDI680~=A(egd@E!ePoyDqj0pwc4d>I-FK_(7k5JUog=P%<ei~+$iqa7K1(zr -zNqr|tatMBc^5Szt4J|7=yzuzf+D~>AYMOi3rSiS5`}Fr7rG!Fy+EFKZ+TOcsJdiLv -ziOSIVjy6)LfR;4K6%SH{qMt=6#j=D<1+#BD%+!?s0?OhuA8nmJPkUpZ-w5_;BzL99 -zM=`9v1JXC#eDKPG`rpBSrXov^;g~x#D%PBS@g}u!+t|{6-9z<9@0;J=^?a~uESVoae*f)6H`R&sf98^7<0a+Y -z7^QQLv$s>)GntI2WP8a*02li_m%+|*hbv95bvMHYrY3DHr0^FtT3q0XczLSCu$XO` -zd~Cc@T?cQsH5<@xg1ckcM1ik@3jS&Vc*Uw#FKr+q8kJK5EH -z*Ztfx=d9*2tIQE2O@O`A7#Z4gIZInkkk!Pl(#A+KlUCD>i3GF+KDE>9c(z4O9C7H; -zK;kTzAjxE>i7&QXv;`{rLtsVD%SMCI7u10M@ -zk(KRqV^k8s!9Cx-<0=v_ucYk`g$3OU}h$F`;d9I0|9CUYNjF=}cxCF&x!L -z*xhyWrWi0eg+?0{fU;Ct5G0mq28BmrJoDI1oVk(oDEU0BZQ|ePGei0q3HX(h2xyDC -zrTf}i(R}5DPcpK~=tbcWvtvEM2{Ma(tc;aORs`xNobGSnbfZ&Q1&ZWQ8Yo&eNX|O^ -zTpPpt@}(2KqdSTUd!pCBt#-V4q7QzO7HO%Zsh-k}$b^|#7}E^9k(s3*+h*73>+~c5 -z-`186BB@_(fF{5$%(tmA$p)7l(2J(5?Npew6~a|sDWM$O2` -ziLZK9Ka#4aejBIMy67ZfDz@lv -zR&U$qDqG}Ma@&}QowGXlkDcuv>!%)v=I2hfaiU-{rwADsY&qN{r6Vy((IdqbfS(}e -z#y>a$ON%5a)WnZ1BFD#)vO9Vtn(yWtCJMQ1cXq%M6?a}(x@?G?E&SPseMHoxOy26@ -z>7HRCK-}vaTwP@y`cUvnYH&{0?%{AI-mn(5In0K@a#!@me0FF&)9b*pYRWQWKYTH%B6JtR0Nm7jT!Tfp~{f%AJ11dwJ&Q(v} -zLND&-N%k7<0arhexy_N)c;-o>Et0N2T1`zZt0naK`?v2UIr!6+$k@{b4d9^A -zL{;I13dxl8K(xxtDgg7)1qv5-4zt06(o4tj -zcv$mN7#C+v6&&DqK{}^}#p&r=I^V>8PQ*m!-nIALhGvI!NCw1_P9}Huz+eb8C7s$Q -zTv0e2i~TAlT-HF@I7W#@vaE)%iQLcP5^xnN28^b;Ba^`xP=2>WB+H(+Z_YaQw6$lJ -z%^w_N8`z?FeG-=zmS7(t3rD$++Po5|=^WZ4sYIYd1q`bu(@g-f+Fc)X&H05x>;k{A -zy~=ehx;e>4gIBx5EhrfXyi%}LVWkwd42G30E3>M+o93`_;)+d0Ps$(si{X)QEl3zK -zlujMydq}KB2NQi_A6)0=>*LDl48j*xoJT8ldSyA3kT8U7Z1DZSbKDnFh8BPu*kl$x -z2O1Et=b-u2`{mO1c~4xT;bqcb&dF`S1ZO#MhB;4 -zAfE!MrU<*eoTP0^@0T?uM2w6iL4g?kf?U6tnJL$isfPu8NbrAdysv-2g`>YScj$S+ -z?-b_tLb|m2gEYUfu~X}0Hk6-lZIfQ=jKSbCDXB$LE`s?;LhZNV4cnuFs!WJ5ul7Cc -zvH+%Bn~_&65}7oCf`>2>zZhoG-U7{`myoSO5%P7{uQe=10a}Y(TTV>u^C<~W>w8Do -zO&wESKp~6NF0_SRf!$LkT{1I`++BVMcQ?0V!Nk^-A2vuX28z~N^d)AWG(GBkxLcSH -zj_M~C4fx?`rpBkZVg0%ah+?{hIC3sgoirc6onjy!NMmX}kgi1#Qj3|reQX`r5mY?E=I%>^dtU*{=?F}`CEd6Lr3yE={$D? -zIqYX4LK@QdB7Enfo-xnrK5ri0Puk>-db%l$`dMTSq;%(-f65MY8`YeH^DET`fEc0X -z&%50vaS+8PB~34}Z$c6?|3Xlg79afD!+ZnK(YnQ_?N~$mMLer~?qyTX);k>3iGzc4T2o>iR~bSW5KUj{9&7Z!;eHTJP#` -zxqa#;&jRoE|6-7dRk7!OZ_SIj6=KCs#z -zUKQ98085K*aQyK|l5{{$7#@>IuH7&n40dz?3aSx2R*q)v2fZiKT{}-SoE>8H>J|0U -zbh7>g6fAUH-W83t&giGwD;yfM%?Zoe)c{9QX3ArtL&$euTIGUACfaZEl#DcuZsn-J -zJzvNVZkD?)ezeQU7L7Np3>rHK2!VO?P-)tmG{hy -zVJP8kwQqAs)ClM%yqIH!3+qeGityJ~Z=DvE4}9;_)ldpafdGDi-opeKl5N=6uUWGb -z!1~;Aa!wKtkxiM>q-_AsDp*DdYab+rR*lU{NZ;4C&O{f#HZ(I3hhu$Qcz60Y+$40# -z60m9c?@5&;2IDWjEEEPq%$hA84M`2ttLl?ad@c56c!#_HP|qIT#$##u^En9!6WJ+$2Nicw)SFnJj(_xQHUX$!g0E~$m1K(kD8 -zTVm-5Sma7q;VpaB7bIhQA`M-6+mLF(5(i$OoX#a2JF6K3ll#;uP8J3y`v_6rcYVFU -zPUFlQvO-dvpIxH>Er^@+)T#SvuFhm8!(P)TK*Ma -zz-GJ3&k9#=48-ws1{fX0A#Y3|%iJl@q-)JS7QSqJ*o`?@DYSe`&h$nt^;GTSFDiEF -z6usdII!!S~Q54F_GBYz~zhpX*T6?2~|JLFfl&yDmmVTXV1O@x#r2|&vbPOZoTBoZy -zuoV;eP;G^d8|Q4~NM~rERnZdMfMr}s#{1;S`qH}cgsZ_!iU`n -z+#?G{)moC))#2Pa?7Y!22?GyGL!zz1AaU-#qBW{ygU*V)1fu;O43D-yD&1KSNoAOl -zt41F(!`xd-O4(26q*_9rIJ5RCvA#N_i0c9DornqQAA1>KVhd_KOBeqMCls)i##Bj9 -zO#j9!1&2j!d&uo|OzxiC77PbHO82=u?)*3!yfpvt|dY+wR%+ddRGxjoX+OA!Ei -zg7$c83l6)IH0Zz#8az{Ir{zcIt3;$Y?X=dU9P+eS3z53@PGV0y-?silAQ0arbl|Oz -zz-Y-(zgvHIyXK`#1(MCQUw{74BcRy57I95G)MlE0h-Z}!z=@vQj4ilvb=A|dc89hh -z$=k4gRpc60y3H*EBpXv8#3pCa7dp}AL^Vz%zKSFrb|KS2u2Ew$CX{d{6A%wkVTEs- -zXJ6;Sv*w~Ys5W~<6&L6Be@P3UiXgyr51Sr+{+0~H>9`_yi-gG!y^n)&lV~;=ZBKRZ -z9Fd}#aTm<>ENsay2XS0x9Bq*FxB|;cG+#PH^RmneC`>6e>&zS&8j1e -z2T)6jZ(H09N4IS%$Dg^jZ8{jO*HABt4*}Ejm;425hoM-EgJiobwT`$~T(VS*9L!zT -z@w3H?3-$`a^V72f#y~%R`CJDHUIK{~4`xu!H>a -z)C0aXNGFQ`v@>Umuli%c#A5=qHzw}A#1rF5f%MP2cJI>bDvr8fSD&l;`mW6Sr-=Qz -zc4F%Q2f*{mf|-#UFWG}EKIit% -zzSq_UujT0D$Vl_)MWBnzR0h9@Bbt1w%f{g?giG_8}gn|shB#TU)_g~BGaY_st6{2_m6@POct1UUUxD`c6mSYm{* -zu{$FUa($J6=H5x1i3kqP=aO^=FoG3c+R4V0YSI(l0G~p9@$}Zi1^~TL3d8h!>0Xz` -zWD|CuiuVoLj<1@PbYilz>&*Fjjo)4vJTXrko;fGZGJ=6nM73{e*4nqzt0MK_nWh#m -zRIurV2+AE2_ho3Rl}_C~3M%LD`Kg|fIsSnSbKXY|abuY2a1+PreD`UT9`2NAJwG~W -z7h@uQK3?e?U?+KP9Du)ng&_!}Y4DW+e(5=90rAP2GzP~m=TNV0?~};{?XtC_nal_v -zi2W7XuA6B>$7f6X!CWE6O=2K)9SspgL_%H-1ME>f-1f00i@l{Q&)|ZjYDv$ItdWPQ -zhpg4(nRc#Eh3@5+2FS5+zz$JP1B|%lM(T}S(=xQBAd=wK6Q}b1G6Xfy16&A}$ss>{ -z?L$dnC%xt;VWxJ8dh-n!v_tDTn$$js1eIb=PQG#4pkYm(3Zn0%EoM55UeUDSbQWb= -z$tA$Eo40ZF!}D~bhEv6w- -z<)Ag4`dLV-nZLEoy=6myuS7S5Idz8kb9cbgHtb6ni2|s`V-6SDDhQi@B^L_U&dK@5 -zSk(I7M2xVZfOLf&^^odDFB)=nFts;Txe{ESlLsE}G}=)uuObg9>?t|^F2 -zRIlv}3$toA?9$fJbA~(ax}Ebx0&$??(|Se`gC^9#u;}MBMLP4``=dy*Uy!fTTr*_p -z(#E1vb!j)poqLT!`kp!Zm%)!AhGjT_A*qHXXD%|(s*#(xO87|7`SNQ8Z)uB5t%!da -z7Ia0@;{#tWO&DgM(=%{lOuat@)rT?El))J<^v6je_<|(zlcV#mrA(XW2jywQ4i4dc -z+CC-n#eIVRYoSkR~chhSV(@d-L-?Nlq^GJhGF85-jY%h#sm&E`byEuo^<^XgiRKCnC7loh+Kb_`7=f -z6uKfggcx`>t6g2_?dKfI7U?96&PAtzpVke6~|n6n(8nLvLDM@v-Sui-5Z+JMdkZ9>7h -zvgeWC-iq$6tAvkb -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 -zvRGu!W3lS$hvO -z>04{>fh8LX)uMFIu$N1=LdLvJn+|acgMJHa7?r6{+wwZx%j;k-=b>J{3^X_~Cf_5| -z#jr1@L0?{md?^QfDTjM`8EmA_Ah)m>FnC8LDV@_7k~y@Zu_=cWk^K>tpDcYy*=dkeDQ>2}a^!n_yYJ?)5P>sbjTRoS~Ce_ud< -zGum_m^o-Ag-pIPQ3p}0n8#_Y;IY~ccB^Rv5F=}rFS4WQ&B^EbW+IxeF#}8eusGt*w -zT%|t&Y^j5IzZQu`+r28X9kzSDLT29V(#bvTOtLWT9P*^pU%ow({`X+0Bui`r*}Ktw -zCM)xSuIi>WAN1C8>pCQg*c;`;1P@A2x(;Z|C=}Tqg7?_BxyL-&%fWwt|2u|*G4kkD -zTm`dHK83A?U5ME`vrm2DUEgPJA*Vi!9he{MjF^w~yHBEhUq)_N(dU`DpAxUQ6a{k; -zQ&orEI_gA3>vlxZ=#6um$drwR#NX~^m|uDX?3{~>oUa{d_Aar>Ad=wxbo_;ygZRY$ -zV}YK#6Rfg3sycmmJ_YMTPL2EKIuXo5gbBG%2)xN>(67iH1?m=9N4eDiTsrkM1!2j; -zf;#;(We0(_kDz@DKpgTeO^Ow&taI!V!R|3hH+I6a=M4F3tW76x-<`7q$_?}0?kJGd -zZ|+XY*!=}=3s6 -z82<^~HG+Lzdel|d6?ZCd+5>KZZ#zf>N< -zBH&fe_Oe}CvR1x`0q+W>&@UZ#+V34Dr$7_c)wKq{|LDOn;+|QBqTfiR# -z00X8?=@)Ffcq+0@nNj2wJj~1{OOggv}<0a8}E -zrAj3R5FSkBOH76@vOB8)y(qi$_rDnrkr2O0IUJGm(IVqV<{Qyr1#+Pr$Gr)PDfEEr -zlH21(`^Bb7eS9?G63tMxSco{Qdx&$wIDOz`8{Vf?pg&reZa3f9HQfGk3+H@Rj`z(o -zt(v+`0I7C@Lyb{7qmJc?_AA7yvg3$)2FZKMxrME@mQ -z@xi!DSff5CDLir)Sv~w0W9sjsRXjebP7el^Fdy~>w@R1gO%eU+V9p2s;+scR%}5K^ -zX9~C0I^7FBLi*D9{Gw^$gR9bP|9SwQH(rxX3Ikkt!m?dal8q7yB*0?f(@EM2_jkS9 -zq21QX@8U$HK@XxLp%}ql7O`?a6i%GrjwC$YI8N7bPb@nPMt#z>lzHxit<24h=c`C$ -z7f4jXWbF7T8zXZp6RO>X=2e`dip&%B1HtFaQ}I`d{{ZmjoiT=+mdRnXm$2P`@~A8M -zxS}!;kfWxC6Hlw~=?L*gex20{GL?5f(EFv-B#3cKZ{>07<@X4msD9*ISpoY6+O%n^VCMVfFR@;v_CeIZ)LPw|f9&I18=9iCc -z9`eDzSSRKIw1cZ#*T3oIr)Ei?8+O2y -zEy|?}@hb}JLHg)R8>&OXFo0M{k(YxkA+B}C(W4c}WjWIa6u>=mRT*)R=x;@$M6Rz_ -z&_~MX0!n>>w$)x6pE6~RuruUzwbe$?{UZY}@T~?|JLWE8%J*he9=s*64pUUsbNfPV -ziNwdN=0$;6hR@USuV>Z4eT2udjD}dSl7XLq!B^7Hp!xjX`wV0KOvo%x*C*-l)Shqj -z_o=4j6W;G3=!WoY$Ht|uE~KcpMKuA)jD1CvV#mw1wBmBM$8!`V^*Obgm?`WqRlL{n -z!5R*&*?)dszkic5k0)t}PaORp|MkEA|ErCq;D3Q%;s4WwddHl;NZ!PMaj|uwtHxcv -z+tm}}(LkS)X4=ALM@mb!$e+8V6w@Oqaxfmy>O2S?Rj&S=1tO>3kGy_i%_45yb6e4hLsk5~+IFn>HTCO}L<)%&W}p_5AegqPqK4>N6QI4{VJT5Cx0D7fW6kx7e+KEzXZ3hBub# -zJ$!O(KKr<;wS53+IT`g}pu2z)+=CCk5tO4^@8t@SGXe59&rF392g&p=)+KSF+l@yG -zKvnCG=I+IK3Oq#ypR4xzcEsPdfn?p9o@=jTv-cL(0$F~CB;Ei9bxa7b=8@)5vIqrw -z!}M}2+f!<2IF&ukt$pqHxj9mvIeK+KR04cG|6Yy$0x-o=8W~n0_qcPIeq{Wok`uD$ -z(Kv2U_dQ8frxg*&in0rlgz?ioWsY!? -zSXlS38tq-{n1n>l85^7ep4TdruL$2hS?wZSNMO{*$3B}BW>u^l5|jq@P(*+^87!kj -z*$mpP9}F|Q&0n9M2JiHBdoOpUBwRKTf*a*7=Dmb-oFpiNeUVu=aUz(Uk}Nc>Ayv+! -zFI!`Std0UgiTj&l#z1f>htcsj-*x&S$t5S5pVn_fGJ^w4Dc9S2WRnSyM-;86n^rot -zN3y7r38TBDpb;?RrsKd3p>JtE6L~~)Dm6Q*jw8S&9hyPqCd}v(ibZD`0xim-NpX!N -zP-ZnRT6R7~|5?s`E;>e(k(MF}V|xEIGG_b^u8M%9mF;S^GGHWRY^ld_$L(|4PWKHZ -zVZSsbBPAeoZG%uNnq(&NqvB~)#}R^V*MHp_dNhPU>Zfc`TY@L+T^z~i -zNe|fvl<2JGVi&RT`XKPBLrkGL_a_qFvOSkQ`=a4l<+DO%o -z*2DwpD4d~+LX%=)(3t~^f3>7Pi3`lT5?kPH26vsBF~Bdq8WO@s`yj1R-&w8~x=H(3 -z$QZe!(UDF)cUGvVJW@SYuFD;d1g(!Dx$Ki|8=q3jR2fqVW+wT -zh&(g2RC@COMJCCBpR)H!b^w_nl{Guy40&{zb!gwCEbgdMtnvv$9Y6{<6tdCu3K@IN -z-6NwSrr(@ucwLVdfjjwzaeL`^GDe>lgz(~-j8*#$r&>6;dFhY3aw=Qk%35;G$^0r7`4n@s`rLpART3xh1UkoA8W -zB9uU*kdviZW7sQzs*y~$RGLTgqu8gQ_aa^(m50nC+rxKc5GMS|h2|UCt!AYx$cToD -zkyr9UvIWY`kSO54&^@6L-gow<2{qSPeSQ+5%T#jiZ*43Aw{W -zOPvR0NAWY~A~HrdxDh?JA2WZK6&6*qYEH#cBxb(1*kbl#Ih0ql>jH-v?I5lRFyFOs -zaX>2(?8R1AC2T+5d6VG%Dx1Z^mpB7womy?D@G->E62{_KH`b_vg)Ir@n9JjKxUu2i -zb*V58dJ%MI9U`O`?w$*ma=F^(Q0bB_7=(amO492mgO@gcQ)W4Jg|VPnMd(tg(I!)1 -zR~p$~GCxOW^`sk~w;a)JM^Ewxo6AD}9lQORtWEoLPW6gW1)alIAcX_)3>bs6NTt>w -zhBC7Z$sdDU*1B8=;;?E$8)*s;X@BRW)43gs^j2gcF_3B+7y90^MBa@+3@Y|4&d*$F -z(x#|e96h(k-sn|zsl;juc){nluwx_2?|1;V0{qux@mlWJFfc)XJ{Qe -zzr8V~1a+vhDN-Vlv*T)O_QI(;H{T|`ivJ{DN -zq&G@ac-Jh)yGIwHe6M$Zcc>bsFOP}AqrQ<8(J{X7c{6#~V#<+Rde^jm>6PqFDkMg* -zlKlttTiY=j)bxWjKA?4J(^}&~>p^}!Fog7(zkmDo9o8Q9(Gd=Y6SoWIm* -z|BzaWf0tG84~7U7n4rb|^$%o8{7>4W-0`2zY|Q`mNutCC@xNQ2bTh#JN4q^Y>uc1s -zMDL%d*!jN=Wb_P+^&cI&H2#|xr%A#3rvspZ{NjHA+z&0QLHv`(prf%3fBkdypZ}|E -zcCVfD{z>LTpwIooKKGw{<<|Y*8RnpsQsMtSwEu=?W#fNZxXdX8taBfvjA1gRqtwjM -zRrOWsDCy`u9sSgUW`AOOD8oLUZZ=2kjH -zs!4ps{2|+D0xoutU!^5kw&f)))FG6U6ETaDBr>IXuXnrU%278y+<_wen{Ek;ou(PY -z3E9gcOXAQwu_UR}Sd1>o-8rj}z@^=^#hhS@{?{bpaP}bs4bdyO2g-mgBfXM|Y2hu;U2af{wMQkjHYKDh+V>;u^2>hWOfh)f -zdb{}mm~$Ospn*znOFg?R(JePS-YxseB~U%h)efvn)TTDotGg@?=% -zthxepoOv5r>-)+eio71dV~Ew)I%7Taqe<6sLah+3E33G;4!kUjb*l$R5R`Q8cYR97 -zWibA&{XC_7yLF;TL6-fw2Rim&_8dDB3Kk;8nXY&bLm -zo;8OIwRT(7g|&sJ81gd^>(M$&uivDTS8?Av0N5Zszos6bC?+*q0ig{jMKck2XVk%5 -zNq{=jQo+umR|$B>UE(aG-?=gwMCzU3?$v(S=5bF6-|k-I%{tC>-TZb_pgeak>wO$x -z-(HgM1lFwfYrWgTd)&Z75M471+$XBfQptdOws)=y{ouwWB&}}Y++-eTQ8U7ye7plp -z*o=hg@9#XFD%u`8BsSn05Tsf)Jg~|*k|PG&-jaLJRjvhI1^1s2+H==D^e@o`$S&qL -z-~PouqEl;4L~#eRc`G3Au>^F*v7R77cdj6;5N~gD-ZasX^|I^}LN15&R<|FpNWfL0 -z?h4Mi*Lj6Xkqf2Uiz@cY;{EBeQ_Dz;g%?WB@al8SBHuGqG1 -z+qSLRnX`NL?$vv(&$FJBeKg<0IJn0>uIu~jBeU6PBW<7w7Ru+Do`;6+Eb-=6W-Tml -zvVe(Zx*LtVdZVmXYLT4{(QL8cj;;o -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 -z^k$f>xbjL -zuM%l(3UcfL3VdN>KJgdsw{puqHhHNIcAmdhfRNU}^)}AwLi{LrDa~C&JWykkpD}$~ -z>Ylb1zZ~FtM=sFvdeB#M8{EMcUj$_o%+F}zQN^uVEHSY6*7FO+aB(t>kO~pg|vP=Y3?Z3|4_$!4}(9iJP=#q9lwdkrEGE|2AXD -z-U|F}x1Jbeb~aA8;l9~|=ad`qdi||%?=q2SrH%r<4Ed=Xf4872|DeOH)}8JVIs*L4 -zfxq#&g*OQ$^FHG=(OxTkxqUYY>N)#QNl}(jS~2j8XF<j*ruO7oEu5&uVk`v>hBbsEMT=>=L0gyXoquOg>OT#gHiJ -zhha!TM#P_*3L?c4)x~n+&ZS=q6;iqW+Hs!v4R6J9b{?H- -zvzSW#GdWXyt>dP8s8q(IfZx&>g;S|dOg-{Fs}`FF(M8n>vcbF6JpuQ>Ohle6OB-dw -zMx-!Lk1Z$y^7(-}`7iZB;D*`GP8Z9Tq4hj2I5^2ef`$sD&1cwvOwnob{Ob`>gh~fY -zNb@f(HBEEFba7L$p@+2p*QNrbqd$reG+|Jj3-cakbaBj%6Cr_FWq>(A0FZy)9kfnd -zYn|}ln+gw+wXzq7IFc^9tFDee>s0Arn16k<56mgWl~2MlrR4M(V&tn^W8&g~eJgK+ -ztBIrul>xIRVqYPxw?i{al(3Pa!3Pf0I;Ltfu6*$|vXaZsp|-_Uq*dGLf{mYT_BS+T -zHPo}u;_4sn*)k#^I(e7X%&$AwtMhgr_z#Axz~G7rhJN(9OsS0FcX1K*cH9f;&5U!2LAey<*AaI0U8-)2x} -zJFg|X^^sRIZ|t+sMn#J4XweZ&)X-CB{IHq$RdLTv3aaP=0cp%v$7&APh08x3A?*qa -zVUI{g&`~5Y_BoV_KwEv|EpRd+?vlR58#~%!GI`$Mm@%kgDuw!78N<(;>jw -zq*AdqQet{TKj^WF-rDOs;$%ru6(SvZHJATN=;TjuQ&{fWiQfVDtLdn4f+Dye^DQ7xst;+`zG|Y)DcMbZq3B1JEF8SGqIk#4qjp- -z@V=CIv1-QJ2Agm>8H9+9Gps}UXe|?Eo+IXoD%No+KpL`HG-5bez9&VR|Eq8SdWUtU -zM+WRBk${F%Et@PF3q_pl-zCg1)R<3u?noLNALR`YLuXC>)SnMGte$x-ikaBd2 -z7zeqmQ;ur)2RmgsLymST!0S8R@0xem2+0<2KU>e(mT>iV;dvj!yZG=O;!Ng|2SAHR -z`x|L(0`pec5_TuGR@v~w7c7e~`-8lXpQS#0>wD#C1_Wxf6E(!vsOi+HL=g_?PM?-{ -zL?FQ02S{B?1&9$^!k+6)3B&=Ekf*>!>Dw#?V*D%DiEa|(d?G#L`Ewv;GHr&PC|0$t -z(^Uq=J!eD??JK7*Qa&Uowz%`#CPqxLTqmz}aDKle&BT&}$@l8P7Ho}d2uq><-!Tee%m(2Wqr-qe=AiU_ -zm>j0K+`gmyYD|*IPUls7uE49_@5&);plZPFN(7>@CWXAC?+`7x@207$se|_8S807e -zd4V$JFvh~yT!z0GU2`@%KeRWnxzLIch>51k(SvAf6)-)C;7#u-X|w5M5v%P)pSotp -zGgRMV02k!(ZXo*OYTu~D*e=OEGo@R^L3C43LSTqV-F-=_K1Pu*Y~jT)r}Fq -zK&f4=iaX9s-*Uj5Jmz-Tlr=B}e*2wxqHJ1sEu}$j&iQ3FuVJ^;gft`h?2OByLua=U6GCnbHOO=#q&8fS -z5KZA+GqwKV{H{ct$EBdS9~RxpmB`mVsLumC)#8_u^F_y=@Ud$|tK?f=`(WH& -z>7X;nU}7iB>GsWDW`R5R4!i46~qG=MjI5+oKv%4LSmE~3oN~;lkJ8m -zTJa8#_ -zFFZwoxgKK%WgRcAAuW_YB4EjNUmLB=>}8qeHW~<|8)5_HZ~}LIc;Q`Wy_Cd&0xlmh -zh(}lR4TCjdwQJ*mmG0(3!L -zpca@-sB?qqu}r30bW`7AB-q2qE?_PG#_ywZ{=}fl_{y`tBpvu^ri3#SmIm1YO!QRw -zi8!uyb;#N$_a&Av#HjO@+`Tvx6>5)mnnH(*l$<{YJs3wu@-9f2gIP|IL#rS -zJO5xA^qneKi49G2p-)Nr0;&KW-mCi=fBgqe9#HauxmO{1kCHjhA2G!6FS`I_cL9{= -z;pyi^#e(r$zni*Y>+Phd^kE7rFNWT|Rf7k_~?qql)-ZehF5+M6()9^EskF -z3iFMt9t|*ou(*R=uHAf~TTib!eUN-M>@e$mHHs%c6$S|gXBvJOkt78%Y=#4La;4}1 -zG|V5@NK_6hUhxoicarIpw<>Ca8KK%6DW$@Qj19G<2UK2`#FHE8vJl1Q_Rzix}~uKg_q2Czix-cL87(2t!H~;FiG*xH4L&3e0Fgd2oeNl7?l+!C!SGx=!w!?I3Wg>< -zMTH;FEqvP0G=eb0T5L~m4z@nNE_UBuFm>aHzEm_Q+rDQZu9!(;R(_K>3467C_fWbP -zAzy*Gh^Fo5GGlD5QTX~dpzt@K@He3FH=yu0pzt@K@He3FH=yu0pzt@K@He3FH=yu0 -zpzt@K@He3FH=yu0pz!}2pg`9^=Q!VVYf4{{iDe7%63a4*!Nx7AQN#MN#%lZ|*jP5y -zu{0EI)+^Y2u0ta&og?Fw81sAu@5k5k> -zn3M$dc2oAE0HMIBHoyP0o%4xL#<%<+(B@W^TVT^|Y7EC{0oH!lD_~%9ZwT24ZSe(! -zmf~M5AF$S1MOqcBTGZda%UOTCOsSY-&ar%Y2@^CEu+ivhUG$}mwwoLv4(t~Ep2GN} -zVjjfiRoZ>a4#j)xgeH2IIrigAPMWSzHJ)asu+&$R?4y -ze(lJkbyhaupL*1Le#MlCk51swMRWT(Et?&?BCRJUIUp6W)YDl3JDB -zJh*pkSNUsfWG3qutC!v2H5vaP6Bd9D99jGq!+xf7D$@x1Y%sK^&u98t8gYF4%S@n& -z!h-`-B1#F}ES=^9DoFelqFn{k9F);}N3y#iDS0&JKVawAbQqGqt}#HVF5yH}Qx2FiC$`^+Y(&IaLI789KxWVfmv?i< -zo$My~gr$XryCjsPiv&NFCq=>2dwdg7FVFfsufYmOCl;H_ah0COS!| -zxKxZkW4jj)HmeQ2Unw!6sd1}D{n(?gf7rMymM)h~)T~pBEd}&zJ|%Xd9>1fXJXNaR -zpK=1;J+(Qwct`QH^B53>vC4d28rPTkDH#hQU8_$zVfIftVXc>w{F6>-{F6?=L`0vZ -z;!{t*!oj@I**ejckNn-jdS~|JJtw=I%jQRrhx#3mN5*4BAn#k77^dAfaO&4(ioh7q -z0C;HQiTH2;z@t!(v_``60Qhe?=LL>J+@RTl>yAlj5(&CWwPl{kO$dVCC{sC}_-LG* -z{1PIK0!^5|i2})S$&$|wSI_d&uh-3H3N2umlYFDDD2GiKi#voKDoCI=aZC<8-iVJ5DlcrT?saO=hzm^7*@IATt-sgt^)B~p9P}<30O~oi -zakz&>Q&gAI9l*RbEwGTo6IIh>C|Ny14)p_wbWOfUbe1~#S*Y+LMgeiwR+hD`WH78N -z!@aku?T*`=OzC@eULhF5yD&KCLhF}O%9RFq!ruZ(JLnc)_ -zQ1y)tSa4y~bzyV4(ICrrBh1BH8G|Xz3UM<=!0aiuFI(;`Pn{B$DKp1lFQF~k%Ez7= -z0P{rWC`aMAsDqc}=sY~uNt1K^YV>S_8R!Bei5dc$WZ@q|o4|KgIGdwSP3n -z^X3aFmT~6bx3p8^VrNU)C0GY+T|Efu*st}l2S6=Gk|{(g)u4y8 -zlS3&{ne{n?|0a{NKZiEpYJ#3q8qqq8wv-^smNYgweH_{+ma14xZVb#bNMJ>G>OxGn -zjX?udz&>nR$_gHL^n=il^LVBVCPxpB@KHfsUQn?wLHjEdN~eGbN&Uz!Liy`-uB>|MHXAR -z(!D2&8GW%$Zd|a+^)u9?F2ZUBK%jB0tgBRa-(SPTi3d*ZG6EMoqBkmKvMQUOa++#uc>4;iDs2V_Qv>nl&<8nx^6h=K@v`cnDk{>BA-zePfgX{A -zz-={1nhME8TGf%o0^jrw$F#Nc`T6Gk9r94Sj%vT7a}n8a!K<$QU>7Nh?HGQj<_2!l -z>-WI&F~{S_En*Y6gttuW?|wY-ImFrDA>Uu1bJdAO^U9FhVhf9KnH8(vZ$1Va;kzk` -zKIneDyoj)e=}vFg70>FJrCOGDcoWE+^xHju!V0O0pRfWn>HW>4?e*c~rTvoB-pvi- -z5zlWe&C0wh#Nvb}XLa!3dQkj6z#41&1Vg@0S#@H~yL=hT$-mFzghSwWyc&6rOuTT3tar*3@4^Q}h -ztFE5uXlx(N}$MT8j6EG*8FUMHEhS?`ZTQ9p$x{+ -z;rqIpHy(0G7YI4N2E*;nOI1r_M`x4%w@U7i0x*LfWepFPpo!W}s!0O_{+ZQJT*3JA -z`vVB+zin15YS95X=Ecwf!g`kUr}`+{=%Q7 -z0bKSE?x$}Z$D+jN5Sui4J$CVdH1p5N_Hzep91&XIn*#g5aT|uvJAP3}EptEhP^ujx -zagtnvw*@`vgLM7)e4_u@jPV8-lG0Hcr=VioxQ8gSh2oyp)zJ3C&Vr -z@Mgnjkz!pgWNC&cSTK5p?bF7ouq0Wo8aNOop3XnzU{(oUK;Kuxq&uQJ(G1!4c>uLe -z$5l=GS&u0?zqvBWWb8GHYb5y -z?vUOj>{Lv1f(W|DHN%tZ3byxqZmnFDT^zuWTqk+fm(&&8D(E2y36SeQbWe%5dU!~TXzym84 -zwDnX)_?@kxv<974?dxJ?DJo1&gf+@cDwNk2in|cOA&HGPRkBEOKwn&ser}Frzvz&_ -zlbcJNb>yl)XHwAhScdPRaFN=SQzoLPV>)td6(JiJ_2|L6G-&lmWCKEVJmszcUl -z)atpIh+AGoHeaP#dlEWy5zq-e|NGGHRzp17( -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 -z45)NV8jmQN3jj4tF*GD!j~TLmKMTo|6zC?yF -zU~zq4wHQ2V8?m$G_&>=D{0uoHkocRL|0j7N5DU&iRCL19RF6xbB=f~OUGX$G&YzMc -zZZ}_M2-_g$9hmWzs>O}X1d>;+LaH=a@kRty>gtW9TV3BeYt%eObD4zXtHEIz!iS-0 -z>)=cAV9s;1t&KRE^Z^!Mw`>0k&mHO<#Ks4%XmmP(Fii_F@xo6iU%gi7)_^z0OF<*3J;v4|9>Sqeo<&du7$<+xdP1MoCyP5bKvy -z);kuwjY>jW$O>zc!y};2AHA&cdC&Ek`iTyeFC$ANQ0c>h_`uNCNozL?D)3Q`<9rHl -zhwVO_t;sBdjSm6%krcw%MQ}skZV?PEgcqTv+=pri1*_d^27gTMAQ -zA_nCD#$C{$jvYm!0w{q{-Y=(q13JioO^zD8yV6>Dja}lNI*&l=s7^2yt@zT)Dq)|! -zRnzS|BQ<#KLV@rW5aap>ya06aKfw$06+P}u&9#uCJlT}R<*uLCa}K<)cPcWi1^#6Y -z(GZcEvcRg4waFcnCNwID@PcNNxNaQ)bH@j_<>S(FSuV*Z>qndOcj9Yq8DT|Xw>Yy?E$>LhERZoG#x7X -zAj*#Elw;9jN|EGpjom?xyR1tWRWozcyn8BJtLLz-^dGh@qft+Kv9;=egCbz -zFedOXc>yrzBy($YAgcoeN>0A}^25Li^G6Oe9tctPb@3%#8_71Xw!uxwnJS8dW)LG&*&ip|j -z(dFjJGkT+OOlSK$kY7`=Ljvtcf2&4utDD?4rF`e_7=)P2L~5FDpAl4SyQt4qZ=G~m -zo-DEQ@npKc^o3lqPko`w`QP+~MeKjm7d(UiQ(uS`3*80AhcKBXd*%i;58-oum0clR -zwqs27Lxw4o-9v7{^-j3c7tcVRVjq5IOL?r8ld=Zly`x%L(7<56Qg>xrQKSOg+R}0R -zcbDN?3tSHSN|X_hFNoO(lb#sL+>KdM|3z$B{`4hM)n<81Z)AFBqPez%kNKQ^)ro5aKlJ#^(=a{oARyFa134oa`&sg -zBSlWqBS`ET}v*V}hmTb$uO!Bj9iiVyiH(D -z75~x~piKVi3;F*=UwG#J|Ee$G{15d77_a}XFOdAFzR(Ky-}D8C{}+8>wpTEfahHDc -z3oRPOW0)tfg+pJX6N^H8LfT#03F7Tqs#42uRQN+CCjn90_K$+UXHOhHG5RpAPt%_{ -z?7Na=0Yh*=LN^;cDw#jp8{rDTh>L7bV=_kL`LY4Di2)xQuvHrTwq -z_&l}(ccI*Vrrg@sg -zDKSiylF=k6N22O65#w>@<-h_zOAX6BR1HNRDN@g-%nEDiZ*3Gt#;)|;eQbGl4 -zZFN11RS>?`Ps`>C?lxlH=`~j7=6+s)Fx5EzV>eug&@C`eBz7oeRBtWcgAlelmZ2G5F(mn!vxYJWd;O%NQCflD_;YEbi6Myyt>Jku(bBCe -zxj&+`8uF7)kcsPFvM`?SjigRpuos(Mvz#6HR^$gh)|U(a6m~l(q)}EUFvDnXA+!&% -zON~Pc$GqhqrOZWW*x4Kz$2l7*SP_{)x6jd)2N(KPOFR5FID=3>lvLZJ^;|+H33MZZ -z)pp;Av*#xyW7tonKRB)!H&|aefM`h+G3p~|m3J8r(aVj%^Q|tT4xT4~trfX+J7@fh?YfqFW -z`m;$nJ8#!{Yb>`Z#0X9uoMJnkzFk(FQ}Klk8*CS`eG8IZf>B5Tb!3#Dj+v#)lr3J} -zJvZQMX%9QG%*7R{v;PoU;Bh|>Nd0$xJl?)~VF_n7BHXL2MQ}9Q@s~ppGs|p+8Kg~& -zC*_2zdqYoC4fmb}!vd$jVb1GuhEAE-`FjS~CNZ?=l4ip4(%vTLW!D@dBrv?BP(k$o -zfql_WRs!t0<~>r_vnK=h`gfU=sQ^i`zGMxS_ZW<$EiI)nUv{Der2GEldg;*nc^pv< -zcz`PrS()#pv0pgt?JbS=CwZ29pDLCTDG%cpb}b4HTKyFz{fk7sRua^T;+|fJNfU8G`Ur3%7VZM<<40AAN9kqCQ$(}jC@0oyx -z=!**>Flntnn4>deF$RS0vV1n0Y8p*%I9#znxuRpH17MmSys9A!J-TS=U3rlMl>c|? -zhNk8l^lKY>GOV=CRS|wf<|f|RX)y!g9?#imW!sP -zBAmNsRj~M$2YEetj_q$>B80FTB$(S}F})@u>7DA{PVEQ95}k+igwvKaijZUGD=tFDuUMdGz>aF9H__%0F1cSuJ(?3CImy`<8 -z$lqr>LdxoU8^>!a?YC9!WpEW!cnZVA?O(d{1EoX|3|oUG -zV!6Gf!1kO)OU&JJ-LZl8iDthrtmT|<4~dNRr+Iw(md>Y!HBRErcB_Coh6AyiPnmHT -zmR=uR)~xH;21c;Gt}!iqIgiPvDu|=N<)tEQ|EgnRt=3edx$Q01oERx9^7Ik#fL#x% -zpP-hZ`RY-DMx8XxF>PvE4a!kCliJI7jl+>J5FXJ|x2l1{I8Bfb<}BGKe-G -z86gd(3r#x&%cn~y7&y)6N9GUjbXs%Z3cc>JR|sbUR{4>Y!4pd~D&-#e0B=QqGfz=Z -z8Md2b$?S9E^N*85n~2(U8NoNaW^HhN=={d+N-2yb7MdtU_jjRH!u%wPF}p9P!>*M> -zq_H1!=8>07TXlz?CpWyTYmrJt3#KI?y-&_6=ceUcRGE?KZ!Z=C)$cCF7K*>@5eLny -z<7Mlw6(?y8T(e#scaoF6ZI3*8%xg-3% -zTx^&cSa=Bi%VG2O3zE_-W -zC0$O&vj=-iIfO1}%VPyFi(Skh-J5#ttRekN|E1h*C-3UDLPLU_jH`1xt9Iq}D!3o{ -zVQ4Siai4}5142akBgLfJo2#2j5kAM<;!Y4WQztBMlh9r_q(t*<5%((b?B=A@L-hC+ -z{MV#AKF3hBe#xK=PU*u|se(tFQo+;bX%T%?_~V;fv8`YBVY5BJ$v0{UL0n0{8rW;` -zNfzi3x#c_tPG^=-cT2Y%8FJH~GlUY6PFpy*e -zS=k=@^>BTe9H@euB3cv9C>{OAJts6{&2iGc#>`fGmYxTvQSqm|>XR?>V|E@!q1LjZ -z1l7nVOuZyWRz#M+^Nu7~g4m>qXbTAC4zn4u(bObMlRN9j+YN+$Y6VyQS(^Nx?OXt+ -z*w3UWMs6kUw4*7OhSy{eOBHi$UB{K8!gC}#Xkf97XMoGa6K>}`q3gaqy -zkrx>H_8jzB?1J$~e_%JG8(U=77tvn!s7pgzLz#oRp#LElqPhPo!QdzUzatoK7XHTs -zL&w~IBN%Z0MKFx;{r^TVd=USOV6gr-!EpGOV4%7vl!Tdf%jc6t>PIJu&&A13Etbwa -z0Y5TNeDBmv`CkS@gwEr{e=!(-3jZGrhEtyZo56tIbYu{xrw=arD9`EunN=3LgrF(5 -z;jhe%*e`QsGzT)Wv-GD_zDWTTc*dl;61qEk%Lm+huuY+8UVY_V79nz~A$rW=1-QFP -zzF6sofB({swj^UR!SY+>qXG3RVmyc2+1Au29T>{v&d+Zz>aOd~VVnR{2ACgL#{!N3 -z)9n6Nku%`AS9OUpAo`BL<@1GQ2wmb^|0t -zmX0pIok;5-C`laG#vf+7L812hRnBz16o@?A))l*-e0j|ZDYd&)Nz3W48@_wWUki|} -zfnCQ^3~-y$wCC==29iU%G7~lXhcGQ-H6jnT0Ak0S;M5loAP++k6VMwv;Aubn8E##t -z4T@YT%9Y`p4Tl*$nzQN#e)~RFF6mTNxu3;!wDhrAVyD9c{I*fU{$u7Ris;^u=#71~>-VtAB(siE -zuKs>0etSa8Yl&NSgvB=RX-2iD!NBE@Mg|D>W?Z$;B;VSS`#Y0n(3!nNkRB*SLQ)Gn -z-yZIlH-MVVzJuD%_{6ZPOh`QG$l)^2D5vmp%fqDL8P15_|64=YpP|!aOx2 -zssSvkYlu!`dtJjsz>1|sU3qYJy~<;HS?6+_Beas0Y;ZXrN9Q@ZwKls=*T>koSJLvL52u@*b6B62I^csH>TZ*Qgr$YOC5|PRI8fe2h{vjyZP{pFeeVj>bPp~fDXj0FYVre8 -znlSg7vd?`eiIr!2tIIh9AUZR5F*a*T;UMbC;+nM^VxGYj4e6M=rb^$KmB#7)Rt8}r -zZ~tUZzTRl%JN!N8ng;W;=*?nqA+22$E+~;yNk7*auHS9G=rk_269ZI-$^&^)TRZP4 -zYn7ewJK4X0+k?Gd4~cgQGpXb(^I;sScyP9=zvIGvvH@P8q0bYi^FY{p` -z@&(lfmEa+pC*6qkCKuroGYH*&BPs#MHs%W_?TzgbcO%{w#dg~z%Z;n;D?Y?Fyh<^U -znW#<0x#9BQm3iVTS}}kY{3KY+WD}qaws7n)%lsRtI9q|{Dbz2O@B_VfAs%HAWDhxB -zp_n+(?Nx=S7U51hQi_bRNk^;K4Qu|C;GXz9F3c?EdZ~zIfK?&CgDg-+6p(<4h9X5KPH}$^iK%%#7Po^-J;b+RUrjJZUPiz_4v4eTRdiyETw3$Vv`8<9LHuGNV -zPX^`aIbgU>Ju~|e4S1yfgx&;x_&L0!m^CeV{$C19=s#^pPK4cV`0m)kM -z>R|*JAuQ)~1JADZn8V@n9scMSPXYU>5V^Ih2bY5W{cHIapEhB@gT|V^_bwD<#AFd9 -z((iDRlDJTtNA&&9e}p^Aaqf07$w&QchDc>JYzBcUnFs@t;&p;RY~$R!T3X=kCYFKZ -zB#oxNQoB?-%7PUYt8|gsjTjS6>pH~1){ivLg|@aY4K14m*}^#p|Lup#z|+*gH)iK12`TfR~Vv%5l~g)0TJ -zBf{<{pjPdYQZIK3F22X$>3(3d%>p$Rkq5h)ddDYjJr8G#5#udGQBYQFjoaD~osP&k -z%#1Ld@~QbddH6I$c5{qSq8{WJr5ujIckWl41-wz$gCRorrEl&ys;G*tX8dkRfMw8X -zMUf{{^9kNsUOOJ~79qolV6$uX0utw5+~4%Ogm2go2zjNAFy^BJwA&uz))rW2ObBJS -z$YB3LOm$S{%rQ4-mvYl~?I6xDvELXMW`gnesI@k&@C<8j$muzvW7f3eY)!6zhEm`v -zf8j0*@n${fQ^2`P8b#=;7Ub0AmE6BhRg*VRjeQ2o^dyt{+G8*1r}8bI3=-;QjzZOh -zI;G{NB++qY@h;>`Q}f_G=(F>Hqrh?L+*i}R0ZV;nu;w-K1++A@^Iv4esV-ZW_R6@2xA5g{?Y8Kh -zk8~0+1@t}_&_Rxmozo~XbL{I%ya-nsqo%r!3ibHp5GX@980-&Tb9kXS$nUidf`$F1S&*VkzZ4+#bCGb(jCm(c~nd6ooPow=Kd?-Im`~Xv~kuHM;fSXvqx_j8uB3 -z-tOvNASmwIbuDt^kCV5EFVJ!pWkVc1OHh-$|2|QO-aqaZ@&kkiBrvQEA$yc$ic$HM -zV4FtmnKt9m28F-Pp_}f7dp|#z;{zWNY61=k3(Ik#1RNLBLK4*u{=g$M?tQqMO9Y1) -z7!}0pjVeQ$V_x#WT=2_vmM$=S67+B|>c;RzIS6pnrZFQB8Xl_EO0aO=_T=a4n -z3oW0KDwJ*2cqJC`w@Eknku{B&@0m+qqjZ7m5$j-xSjDuF%N3CP`FU=8)gb%}} -zJa6ai-wCBsQ=Nhksh!CI{5~hxt`#YmbE%E63cb>)jZ0_ibaIg6N~DqI3gxDJO0|tG -z`r*N#8b`twc(!rM9iQ;ZtL!kJ0`G3#?0^d=dKP_S=ntGvtN~tUf)Z&7-Q{_lw$zEsk6TX{+UJys5H2!1@uNqkKFb)9IolNyh$ -z`si+QT{=WfC(^Gqq`aix8pDY=*MY0R;&HG^#$;?rc-QKQd7O#|$aS($bYcmf(Jf`g -z6h^|%hl{?5GerK35B<2At(Ux|uyi)~K&g)JV6n-z60V0vBt7OWxGTdO=p%AXA>Z1^ -zIZ+L^J6~Q(2_c1sws@9H$pz8m4RWOfupj4Yu2>~+oNbs2;Swv+QIDL%V>+g0XwB*V -zah-)LZXqc-uQxXDV!VLA6HchK~SvxA{aAI6~U_g?g*P -zm7`7WVnBb@IJE9)^i}S(2J!M@pBX~yZj0}W{`1>agt=dr2%k^*cU-L}yDxEP8B7L( -z<-$6=;!2#rYw~bs_$>|4Q<1go-k&MAu%K6&iM_C_STsyNrkyZ2 -z>Nw~l_G=k=>3ndl)J;6Lb^2d2=Ldz5sb(P+!-7K^TS8gLBWJ+m8@IgGKwonMPMvQf -zHG9vgzu8Y39lC6D%$F9efyA4UaV(vpGMeDT@Ls_3UWbZ+Bc(5|c -zNvHcm-d2($4&`KDcUuo_w>5MT$qqkGA=VD4`Gt}PjnN*BgQJ2aSKo}n17Kp+>B!ws -z^s~Q7NVMMyh?4&%V#>Li1Von3q+`1w}o%{tzWQL<+YZ&Q<>GD@}EVcVMDn>bF_z=9NIT5{zpWuFMH&Kk6 -zP110M-9cC1iDKI0qo~RLemJbGS#Fxaa$;d@_ZL;Faphef{@e7$WCBsYJ*Z=q=zGOp -zg`bFbCWtVy26R<%cmF1xO_DwU4%(BL#cZisf#jzKC1Q -zwn<^EvloG#U-7Ji{MIi!i5)HD^Ep+?Re2SbuI)ArpP8)U3$VDhd^Ju~MMZ4%1aoho2YIU6;p23IQAvjOfBKg0!z@j=`(ur~8x6n+I^6 -zUO5pKDC|p(MC#z(9l-l{hd}-ux~ckk{WXcwF({j`w6gk_$2C5to4+k<-#Vi!qEZiA -z;r%YHzjInaMa~Agg%k;|4l6y>5R+Fk8u;J7-!nfuKYIojf@;y7Ud@%{A%*^&q}@%yQ$9&4((!z*e<(`G6?gTxbJLM$ -zv8b?=gFqR+{^AT~Z+~$H#gcz;24lM0g1C@g4?xZYzwUyh<KVwKOHb(g9a*5-?N -zZYW4plPokOg0z+I3JB_iki3PCT*Nl_KSx#O{36gMWa!N2vq?lV!P$|E5El7;3w<{-F%_*5;!LnuA -z4Mh7iFeGe97d5AOwy)}3lbb_T_ykE1Zm5S0rxFOH!6 -znfve9Mx}$Hz$G5(mr3pO*Q3QE_*5=pwy*!H44fh(IhD`vE<-yl{zh9FIhM7CjW1|R -zKz~t&!z}<%XK8@CNSbwi41 -zn5u-WZH{R^MjxdS$V?}5Y&P;YJQ6CUporsP4bbsH+Ew@lZV;o!txFWYYs3MzH>rMj%f_ -zh2^X|9%Q0wS>#Vo=_%iz_8Hbu2&Q>O5`F2LT+tD$oqiR>u%-s>YE{rEuPEAP_UkrJ -z*^RTFe3Hr35~HHez#3}=bCK9d5+7ym=yNup>GYyPEbmbmy-5=lo{sVZ1=uYkuqJD_ -ztN_lUS~zMuZ+6ln1wv-FqFjwR#Dl#mTw>kf{h*aLyB8!E{H6EW-$JoI2xFf~v=&mQ -zM%|IbYusmqAAV5T&03d4zjW|H=$ykSooFSp=gl5-i7C^@^tP*~AjA3E2(OouLzyk> -zq~>l?A7+zvTeGRv6)Lg(#U(q&_^pWV${vY&C7 -zM#Qnp*XKOk2(W{Zl@&}CX<#@V_3mm@9?13m-PH`ByQX$)l<2|Qiq(JxU(N7~SkJls -z90{_W;Xz{(yRvZ3m!C|Zqa=$}j7}K0AH>H!)l)wLF6a0ljd^b5RT|Lm*IR%MOgpmoXlp;w(t!XjP8qJ}I6lPrD(|#rFss$DVI-F@qp|9P-~pO)CEi -z3`hn4RbaTKcakd$Y*ocQyKX?&gN)uOO@bSRKmf2Ovfp)pyekM6xE!g374T~wX?UH; -zviPen#Mw#vtqb8Vc&PDT*4n=+m4hdcdsK>$;d=Y)CnMK~lQS<^7|z{vpveHegdxIXJ5M@_ -zwW?bZ4uLZg8!WEOQUQ3@?o17rS?NHtM`crxniYdtifAS4W3)aD@!`2<6aUX;`| -z+Mll^CNxFMo7Q`NEXm@C`fD!~Lsh`H{6jBr&?jhDO}{uwLRYn;KW2$0T?T+BQMbve -z0HYgYsj5xW8qY0;GNmVIJcl45zq6%&V}-&raAqL|=TFiI-H#F^H`A^7vsY!zie?N5 -zt?zK0IN6L6b)rg$M-^s_1oyO7#kmp#1V->gE-D<22 -zUap4SbKwD01H7=!Qv;bHkKLU!=!jnI^*yj=UC|3fa&2pQmvn3I6in{UKmd0yIb0A3FX06u!3oay{hapxP{Q!O~yF`VseCb8Q>uIkyF1O8k -z#Oc685PBcq?DTktHivpU1qJR6T?M$i_r0xd@ER%FGZ}Ui6e?V>@2#+J;F99)?D*Pg -zidHIKe|X|DntX|E{O*{3aa}KB1DKg$_WJq4Ca*o%{Fvd}MI!qa^wz`@`^^ZgZTi*2AL_^Cbd`V?tH+4ba;`RnNnTE@|O3H`Qkyc)~r -zTRnc5bja2kOyTRJ_4T2X-}kF~rSF(8@8#3cx;tiouPAAM#~Af95D^HJ)XYBBmq23Q -zcOLI3=Eupz@ViwGiS$?4&(?ZTCg3;U`c=Ee@4^yNk00UwXqgJ3xEHwwWFYTr{O9(cP3qR`pJ_X=>Lie# -zoBS^}7El;F^kBMS2Obo3qnWJeCjS2X#vOIU#D7k@nUG -z9#j@ucAxGJd%K5&bt2Fw8+T$sNAf~RWSscomskpG2xsHAxqRxbjUcf^7psN4 -znpEW`@jN-4+e3p0f_SKm>TP=OB9$x>HW#=fpV$9WSg7(FA&?YGIroz0uyDlA0&PL4 -zA++xgp;ZjGrJQiEpq<3jJVT%)y+hpyjmm?3T@mm}Ue;OjNnMl)O_PyrqmhgqGdb_x -zzDl7M-g>nIkGQg>`amU?VGc$PNDYn~a&$G2xG$;45J~8?Qzi5l?=+9(h)40Rkw`fz -zsnLXV9zjwu>BTRNoTT7P6bGkZC$WO6h$daiu6e{BP`(9D^4Ab`BKv;Rd@yhvxCi*_av7;c^|(&+$FDEE`$>Uq+cCt9j%%!iCjofnC{6dH2y&=GvYB;9L?DkS$V+WEa>uq#@et2+9<;NZh|w`BgV{kb~5@)jbyL -zoHf_+c2(l%cCEAg#NOB0O|k~*rE#_5(Hi{H<{zrpZi3Jzr<`6q5Ab4jqxJRH|M%83 -zw+7nNx#jashB)5bz|HD3fR}c5+&NX6c$~!b`dA6XLoM9&lI=-ip$8CGM>zGd$1(EmG`=d6XAUtURwe73O#b>jrL8(EOH?r_$oQyze -zxP0Rp33(Q;z$cG -zCMN2Oxh1k>R9R*}0zC$$h0(dfMeJX;kVMdp2_85*W}TJLENhESQ#c@p3^ -zHHg!?$v|pG9Wn%){vNtAJ;gBp8!AeAQX$9KZ8q(U+3AjTjsVG1a2bkM3rZR>)+LOk -zI-k%{nPqa6Xloy%vzL*jUmC4+hVlnzI+FVSQvpLRDIX`0c5~eU%1~GW#o9;iEKb{! -zbi1hxg$NLj9^mmW*+7d#y_;%y{hb|XcaKw59twRO71g=$Kt484@dB01kgXdt#mo=P -zF~{Q6e;b8STW)(sG~>SLOIxT`EAQXk9DQ?&I>;Pq$0IYNKeTfe;f1>5*`4496Q1J^ -zJfW@QjiK1*b~1sRF&>l_(2I>*!~LfXu+z~5_IM@bJqb=agUZ|f7ujb$>JPDyt*KhO@-k=78o3o1uBeu8p}lulJ#=`IR2M>+By6C4+4^a@Wz|=dw~75(rZdS8U*^ -z(h~1WJ2#xdxHPXpWSpZg-T9d~gEkL~JB2}m!WLbU=lL<7-dlAJ!8I?2VgF@A1YbXh -zfu&l?#4MYsaEnjp+n^X5+ok10tR_TIWz0Zw^*v}sbgn5KoO4gP=|p%y$!vILrG}%h -z&etqd3&KFSuZJ_?58B$1_VH-F)7L_e)z{`}ZQj9xFi}lr)!eczAh|-d8RPBEG6ZQ>4jUDKN_cM2Bx?6P8&GYV8QKUbLceJz#Y!o!0P+d{b)fn2A{LMzIT -z?r*GLH^5TvHC*Gb5J+D+c1jfrH3?Z>{*rQY($tNNbk>3Sg!KCEWtGqxaM{(PnZS8v -zR0nWVpmzyLy3!n2b#m>QSfg;xJ+>z>kjZ;+0;fHi%oKx=a -z>o0;ukRQjtucZ;zyc91`%dBpijl#+ -zy_o|?!0cWqNP^12qJbZ$b8{YJO`Zpdw|Vi62F?o%4e`x -zV9s-m8{AAXK}TS8oitHG1)6lH;!1izVk(2;j8rRx;uu3V9@gxNd()qqCX-l -z`EVvnA;+!PP|5k9H6?N=lpvmf>Ye|v4JqUuxJC#77HDzzCKXPgGV0S}hA&HHLTh_D -zYn~zE9z6c4nqd7o7J3J=bOMMK2IJ+xJ(z}Gv!Wf3yM9#b_M4zTRTr91(qNx@gCp}G -zsBb%W&my1sUF8TGsuwY2 -zU!0jQ9`Eg%Qrry1x9#BosbCw?%psN|ZeC})Khn>Yie6qBx0N5Y;!9u8r3KR0QsA>0 -zM0^-P1U~8^cn*8L<_x!sq-|4pPzzzIoJM|;Uyp5GnYy|&;h-tcGuH6PrqwfUaS=6Z -ztrt0~Uw-j(O=5J@E4K!Txfmi{hB8YU%^u%u@+hKr(2+z-X?ACKd9Vh6OrJO_DtXnc -zXE-`0bPRvA?*PXPIMa+8{_fz)4Be!4@@P!^WoR}Z#Y{!_9yW$_7dGAaF(dLL>8sQ!05Q?p*YBu*q~mEDC?zk12?Dh1?FWwQvSm% -zhRkBE0FqWT43rM~+VI>1GUfMzCq+`o3{NRvYqB|wliMK7tShprwZ10F&x$AAFm$;R -zfEa1;C_HQ%Pj_P(KW&8%W>pT`uE@2v_HcmC!raNqD}%#oeR9nS7;~tPW@CjG8plnv -zdb$WN!v!7{FLZN2mO$sp={b&lpcLvon;D7$5nj{p2ck@RtiAU5qCt+i@9ZScAaqr? -zzkWjui{D(A;aMw73HM%mgxt09tyqTM`%LMKA&)$BQfVC~qyf&)EN=oMbrNsN$|h_;G{tO%C?F>25u)O)~0mS<#?EAa|o*RJW^a-02Au!N52i3C~X!%5E -ztC#o~<=`xNJsp68dX@YNm@{-(g1=ALG)X50M#{pXGC3Utp5LQpTb_MYuENb?=Fx70 -z0#rhZ*p|sDGh`OOjDq^~trDEswLo1^YDp-AgPJ;snauf3-iQ`v3?spvuWm>a(cfkf -zBfL*MznM6(lL{R0P_>M9Ed8kr2oWrU5tygpxOjY%p1UFpM(b&zJ<4%80#KyZFz=J0 -zQ;m0>0z{JPK|t+bGkJSQI(kBtt)>!aNrnnrC6-FZ1D#rkBSQYQV)JgE#+5gy1PZ#L -z;8aJOG(K~u&pw8?vjOWg&)jAtZ68c!4rMGCy8%m3&_=_qS+JYBr{LImUbn^~Kf0gz -z?a#S+HZCmko+PxOcZ(a`mHE}uVoYbr=4>N@uerlyq17pz>T2$jD;8Mm9CV?a8U({S -zNIjhtx{zVj$s)l_pPU~Oj`qizwn2q}#!{HFJ~k-i>v~p)}lcwEwWD -zos969rRurb7R*dqrD2{`Q8d6u=t@ZeiBZF?6uvCYUZQD*wYg6(?$%A~Rr@wVaUt|D -z*I&6|3KkLZOov?CfV5nNM|@&=v>HjikaN`U{34UR9Ls+Kv!IkIN|?8?vykuz)M;}a -z6lQhvUhBc3Cu@W}42Y9J9O_oXUbE0LZ}UL*e5z_y$)BbeaZ+q$p2&@>ZrtkKY|;_k -zo}e)17d~o<=0pvJuDoww@L&t*^+c-on&0T$+1(NJ!eK|Kw?H;a=tw?VjI>zw+wYz% -zM8#pQW4SKJdw!BUG=J%YeL6zOEg8H5bLl+nlvxg!&UmXSW$dHQt8<(tFZ; -z9pG`W7gi2RR?Zf`?iuC^;E|#; -zih2@BG#Df;vT(#X^N;Ndxf`!nCeU3_sB*sSZrwdX2c^7g;+QF>GF%o@a#|{;Y_$Af -zY($LN7r`5A)(6UA6Ko20M5cp?Pj*wBpJ89yEMt8I{tTPu{OSJTy^2QvE -zp(1+ME!|5yD&9=k+axO~&HHEzJe9V~dwms+R!emzyzQA4Y5(Tn)N1_ZJw)r|t?lZJ -zS>+gIu#UAoUiUmei|#vm_{%qVt;k;6<(;ukPT%^Mn@93*o^m4QSx3vY+c9on7+<~{ -zIOBRZ{%&k~O7B@Yr({Yn+HwHfoyc`6{phjHM%jAVX_J$?=^iRx9)&*#DxP6Einlry -z-qB}3MPhCeIEb+a@JUg_uuL-JM4*y$(EF)pnJ_|(ZlCp*V$8eY> -zqTWzpUL*?$?1Akepo|JyZd}shW&s)%J(6$3ps|?@kp2x#OO?k$JU8WxEWk8`9}6WIqek%^3g*8v{oSZ)m5U* -zsP(#&6jjCP4!c-5HRb68z|^m=+E-7{BWik0y5V4n5yGQQ5c0`0TLZ{yUfkMtUbJ5_ -zZaP5(+do|&tOb9;4Auyaj^^cCkmah~6EzxWqKPsO$sU`Wua(KBd~{wW0l*JU;EmEV -z+Yi7+O-DO6NXcGNu6#dFQhFD+m0Y%8iZj2$VMFbs4qi%D>2E)T3@%>+jCWLGZ?h0z -zQtFMKTb{ij*+a9KVl+c`2WkBlbOY^)3%ma>!31b#ueA)H1L}oj3Qd -zuJVJxuXj9#{;?N>Pu&yY+t@$gHeXU~(qsC7z~o$YV23OkbS-e(p0$sMuy7Ia-h;5x -zYK?vuLnwolx|zd8^*e5SfK`H4Z(-)rD`%Zn?3E}XWaUEtuDaYLus{lIrE=@wN`sKr -zp*(>NvFCeFhsjR`SgzT%E9p5vXwDvt!iMFtZ~ez|Kz0i23z#UMnblT9H%$ny$Lj{p -ze&j -zLac70vYo?C)zD(KBEVMuS8DqcN8nPF*GNsnwIzw=a^t1oKbFI{7XBk0Iz)jeo|Atq -zO6^g=zHv@gjV32sKbl7?v6+G@5O|$cO{7^7Xt#t}XN*x$lZ!*F9m`Chy(}OHx{mot -zBRkO0)UY?hqL>}DOpIpU%^9oiBY^PN2m=ojuf=WW(1ChB{JEe_jVPn%Sl>R6)0!|( -zOxaNTB?%1YNh-N-%97oYo$tsZU -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 -zg21A08{$+^oRL6A2ip7WvYF$f+2a()?f$}RQ -zFUyihO4JN522yW%q>SL#i9~3qf*qA8)%JNWQZ+({Q)lQ -zP4<~Z&EA!6|LMPAh1loFBlIS(aq;WR^2FzRC8VPYRCLSzN*w6IrulcpPpJ*QJIJ#{ -zPI~gkScxVF$d=v3k(GW23eWWiU>~=sm8bJ23XmDHfPXDp*0N}(b_<#*IN~lUL}fcs -z_I=_uoJGca0oOI(1Z+_|nBJ4KY8GW~eqKML>6)3Ffyx#Bm)eIg-XPi#$Eg%86uOYuZfMnEK_%nVI!}SBcr5xaOb)emNB^i%Q|+3uJhTWc>t4Tq3edM* -zk$z%}T(NVAi|zt~COMns)$JXm+XGIceu)acFHX0wJHh1%_;o1L6RgL>n(0_d%B~vs -z!nSltHQ;hX-SVHOXF_L^p`;VcQr|hid!AJja)vpV#+tppuLvQ5Tz99+mqCs4J;Bw% -z+F|`XEUn6i+POUR#HIXEI9Ws@p=q&8olgbc06cm%`QUV}T0hmSh=BI6@`^zK^?6j- -z%5+%4Jl+X&JYh8C?zKM4R3VAiNNd!Lx1~sYWgv}9UYe;n4 -zb@(8QAGX)XRpOv{tWP+fUYL%7xLvi+`7tYIU-;WJvlIV^h|v2cBJ3t(UvlNN2RkOC -zRcV}tPhK^4Zr^f~ry+dH-CusL2WSBd&e7IH?dO6z$frMkIwQagWKNN)L3Ew3>9~}R -zXoKet1-Zs6IOy}GK!nkl+1cNJ4Umbe2p~cCEfIy}cJ}`>BD~xC!F8w9bsmR@1L$AK1S2PPOrML>xIgUl8xU6I#J7sw))?p$ -z(ZZ?}q;G-bPE4t`HTOB57M|fTgFgnOZYczfp_tx_r=H5NNh=^T8YT#oCS3jY`pdm~ -z63-$xvybw0lD1wxYPE?-h#$z#?3ON5P{WAQZI@cW)8LNoIk8l@g6ZwF9o#qPKMdrb -zx%q#z{bo{$az!iKcu$}|?37^dFX`9lgkbEH(y -zbk-4y7@}vh3xcs`q#WN?A>X?WW;Ti#`-){dHft#LNN2%d8`Peix>^Pvv}XZ@oz?z3 -z!xekbTM-dKMi5U8Wi(47`nwRS|C1uXSBD%z=j(ONHP+i}f~vC<%~wq0$70gTiW1uo -zzNv`zQR4gw_4Td@5vBOI-yecET)^_@$l+c{_xmaQLDBJP!vmcGr_Zs%n(0ZzbpJej -zXA8~;b4-43;jVaHQ~tcO#ZHE@4^&IkCHp(uqlStj*LsFApF_>F;6TOKHz8=ZG3O5E -zOPq#uLi4CjFTHWnLRaLKi<(`IhwqSJP$O5I&HrE#Gh^|OX25OnR;2d*)YNjG5G30w -zv=dM#BEnvuS2cF)FF^OgU#_Z6V_c_j;qFyghURcU{8FAt3S-j+F`Jz2wSvd`k5Lbw -zcGlN}$ef3S4Xh#Hgk#+ECJs=%DdK)t!1hkIe7foTrS%`K2Er-9$Ou -z0Ug|h@at&_{4$9?wjAyA*rad@@(K6BVln!JF_(fmS)aCu3eE$_>2<>IaxSacyxO68 -z$fDN(>&i`xX7LGH7n6xIuk}tBRc)|au$_wF=7UYq%?cV*CHk&kb%#(Y(PV=Ib<`m^2s9QZghN@=VDub -zw&z++3hnWfetcSm!-d}tA$_AIJfE!RGa2e-AL5Qx&+|QafOSpot -zvptm`;|6aue{0@r+|*2$LeTh+yhaA=KRvwr&|7D7?i+1kz3h#4TylSc{23PUIq`Wc -z@>(c3GG!95rds_I{H -zq7pzl9#J9UYrQDt;hJ@iYPrZZIza9l{bc##$3@8-^ts1#MTdZGT1J<(1^RkvVn+`Q -z=XI`6SLyZAZyi2j#Ep#S^lm(1#yqZmkmWdwoogK0TG-uHcui -z+Zk(aRLoQ`4?r=-)YpIkfng7HjMbLNrC!EZ146836d2()6A -zMCWhrTzvs=iHl+jVqN2|BfiQ>e|JCRpuzRCQ#3wPQeKamj~URxR2kmSsoAm(6_8p^ -zhj&jpqn#MokPtj+xwTQ@4tcKzV@fiW1h9=Ed#P_S?)7n8^E;Z2Qg0q>$YwrKCS20N^~-Hk?B -z9zW~i?CMiPt@Cp_c$e(-F+$K`UCCPtp(R*~a2@tV+op6dzbXbYc!u1%8{E|H=Q;~@ -zW-y(Vw|MF{2&BmKY4~C5PX|j(Y=Ds4pVua6ejp8N!0Zc9jEcM+@C4?UpyiEs#}5SM -z{OwnRG!UK)kj$J765YhC@RayM6nVP+AF -zlv7adTZC+IanHr%>A~y{e}J3eWAV0gTc`8Of@a}Gs7*@k4_O(bQN9KOSGt|L&v*SH -z%o7)A6OzEgR)Xo=)KEH%YYoiyYmO8j`{=ny#H+f7O%hV7hjf-f-rg^f?(WVe|3ln~ -zP;SZoNAQ;Q|N3=RB;-=!;6x?xXX!)VvmRt7}AHy#5!Tce2o#>k6JiSeI -z<)-aLS#1R4XvASQYG`IgNM?ug1+`PAu(|zsnX+B*$&(rL@B@D!qZM8$i!Ia$h -zJnW?c6{wcc_ya8|iA8LgcA~EJxXwb@{YfgV9OiT0T{}oZ>vj|=E0z%R4*`B3l^jY} -z>rxg5C~O9l3ydh6%5+3&P0yt~7qnrlKAjKX9qafp+_bR{el9GH*2#3`<-8GF&#G3j -zz+G1T_?x4NDjNq2_fkyGrpiWO$?ksH$#R^{HMv}#KXekq@}eORy~>lWp!H@dk81Czh9bH9TR)Pr2*DC@mQt(% -zi&Ykm{vm?k<`d68r8bOkaPPJT -zlFre^byoeo&0fb=+b(unw7VIGSu{fYM_gHY2e>j@g#>q&E>Q^mI3-K5>m2bbOqJPDWayH@(AY1Q9|}I( -zLxR7ov7Ld<99FygbCoDvh{?Q|Y>v2>et8|HKL{Ury0-2XDbfI)+8eW-d_JI}76M<8 -z1PoqB{y2@+t~U(h=_~mOV+ZS-k3$!>T>k=81vtUHh%zJbw!aaCTa%1<;*>77dy#tZ -zPvO|I5pcE1M;6=JZN4zros3khWjgD6ws;Z0-M>S_1lsC)t`R-=aiS|rKGU1QnlgEWDu!cwiqjth4EfyLnL~`y9psaI=M~H8fldpz -z@Y;SF{*ZLtwuWrq@uk>il&(?#*-GpE)VKuL(^5@SiE_XfD1JaSW3xr7c`qL^_1omC -zFMe7|(mmu0>w(4j47nDW;r&DAXd4(93zD;cJl%8Dpi5mFjhnL+{T?GeWQY_xzt*r% -zL@T-V>EjX<(*$m@<l^WPGc`X= -zh#h&YIV;0>XIrL--BZYA$#d5W%pLZzCZNc3wD1Vdg0ua#@7|o;Ch*FCVy)ejz5h{B -zBI~q2Gl|kKkbwz&=hs)1X7%7?Wu;mWy6>X@u-fCtb^2QsZUV2sA+EsbjbI-WI0G;= -z?pr_5#L!_1k01t)y@&S#-qN(!_yi>1i>(}F@cO;uKVpP3-W8{QsSZTHS+PWig0dYJ -zis$p8CSQ4DVsM)cJg)cQ2At}D`qK6K0c!Tw&a@vYDoK{G=tR$h`z$eYZ*!4YBrDve -ziU{S(9@A&v7MXqc2vBD3p7^gv4QlXXK{9UHg3e%^OYw9aHi|)5T*WK3^A-%NVtu#n -z<)*dk-Kb^HLC~T0DPDv5_Ho8sZvSYjX*%WCu`@>6m;HW+3dPkz%CZXFPVzBxcvagh93`F@#u%7M4?&Tsl~Fu8j?TVq># -zNe{DHUp_jK0(>jW33$Z4{fw8WVrTjcW&AKx-8v~il!PoT`+8RENh>X5FPQrY1kSZ9 -zYW^UKKkA>&CkoLosLIU;IdRdltqRPLzlzcyo%)*MLY(bN88=K3RS))gKaFR~zjC4* -z^PD^CB8feSMG;!nh@J2skrVzzB*rL!-hUjPbOP!W#6x(X8l&j1YSZMg1|X9Q{(+LV -z)=6di;z80KV*VTLh3c0_LkgS%7{2yP9EJ;l -z2S?$wGmx}!m4Cqus;1jdFt~@!N;+9oDi+T4s4Obp5rqVy==*dU%|l6>973=h4%-eP -zEYS8-oSPv2*h#eNmu-KU!zGI{EL}Aj{my)xM?kQsCxSi6y^5^iDCI7^!7UVD{w_fIBeXA*W}#qym3Y-9KF&(B_xQ(S9=lRi=U!RIU=KI -z_4A-ABe2UXGppEhZ*r+6BpO_RP_N-Eiy|Qv`_8POeHcTVX=gnHoym7G^`itGo9?&_ -zSyI(u+{JDx08A&)r)|fL^vVSBZ$JoyO39=1PyGrxmf7XP3zO~C6O~MCCAPw4p#^@dW;YH2>$#%ldlmM^^kpfY4K5in^Yk#&IQay7 -z1t;{(e&^sg*3VB5g1*x*`g4?QPVgfyrPi@T#wch%v-QTe!Tn=NAh+Z6h#- -zC3bVYX#E8?&38F0;})Rdu1lDkYpON|nYt^5nqcEWjz~C$U~q96OS5-&7y`IsIdP{6 -zQL}50!piPX*~{{|^_yZ2D!_k{^RK9Qb>Vv)YAlSH{D9jDbl4`E4!7-NagcW1%5qQK -zw`Ns)Szw?#|D$#~0VW|J=INwmXxPYrPiSIg5u^FH$drh8&)zcMI-b%l1Uu4Woo+<1 -zk01OEoFVph>0<6ek6Z1!71Gv$v0sod4@_gOd;c?ZT9U=mBk0mc2$D;~}fQ+^?Q$D_Q;lxOi$L0~# -zimUL~2^exsXw*=*_Ppr#pV6_~@`=5=wG;OdgF&& -zI6OumyQD8k_0?8~T>M&yMbiIR#a1wiJ93FKps~th3y)TEBSD`GEOmlGC+c4}S_W>e -z(il1-R?o}N-m}tML0;%BjWg-$eF1xv2G{cNfo_N0L-|FSAyG6L{EZI(vMo2#PWfja -z*7C?9w7q}?yc1}2P6Yi3DV_i?!4)aXbxSV9OPY1&jv^@i%nrJge;JxMqCh(P;pE3Uc(~+X^?OjfY5$ixC -z5U=^OCn=|GazeP>lr5NXk_YK)n>~t}c1huQx46<@woE3^|UdNdp%BFXClThc881E*|3*1&ixa89bRJ;HScSc)>`D -zj*0826Lf$+%^~mCs)-dCJXZ$+w>(X*5ti5}IlZ-57i{zlwPbCA)pZD%Db6ZwNXVMO -zEBlEcAQOWIt8NkLZ<{uJ5*H -z#Uy@D#C%5A(m^#lKz>zlAi{>^^^VM$6mK5!cXI!swQ1N2cgdIGy*020zbaipO?C5D -z7RtunB4D;9{xQc3c$j5nHaq{Ii-g3wM2Gpg`OFLl*p+78p(6Fx6n(KNK2WaT+bHN1 -z&=Pmm{QfUqI6IfB)4dh_c04!4qR5J&FQ2!88{De4p8oLYFM3%EL -zC+BNC^d9I-Bf1HBrHrfV8gF!nRWcR{Y%q93t|tB&mv9%C6k5bfc0^2tBjn#OI;Q;1V8_554z&*Lx~?chQLiOi`T(=u@{Ru3$)%RemW#nf?dhy6n+<3FmP -zATXKqqbot#=Xp8o(0dd!?vxbO`*%UC1P~>hKY-`|?+b5ykH0sPd2zDWu-`=Sr=*`% -zXQW>3jYDL_+ToHUOp;{e;X`D%wONt{x%aX)ghmcf6sC6nw^+LVzfm3V*Z-UT?*SW! -z@F}t5I97=)oLqtbEzKtkgE*Vywsv<=6#pxA7k{^R4-x)bQhNUH&i|d#%k1jEV{#9) -z{{KfmzSBHG`Tlp2?_EE>|Cvf8V@`w(>E71opkvI4ZX}y3XZ!Tat+ls)AmFZVA&=1B -zh;ewZyfHPn<)HX@UMrV)9U%1G?YTiDfGPo1qSTK|qmjcajOB(H5t!Wp|h39-zgWUXr -zX6xC`BGDe%4QRq0oja-l@OW(U!ncqBI-_PJX9+x@d!psxm1H+rxV~`?wDK}`*5qnA -z-uebRdcmmht#%=~H1QPh`_10)q -zE?ic{4P6z`Q!R8V?*$R+P9$f4O*wO0uzt!*z&)0{{Xrel#q6Q^nBrKDQIk+!>+$sX -z;>@nE_BWnv4}QT%q5jO8J5gQhHdH%$!Vb1mD}Vz0fC^Ei^*cqcVrBf~!)pzHUb#ok -z9(C9k`(qCi4BY)vsc?F05Je1x9ddlWT{nOq5x4V9@roNs1fGprfLh-dhE}v$?@{ZUFNa3a4@d3y(4Egaq9-Hz -zKVO0ZGOAQRwM?1kEI7>eb-spuUq$6}&vsrJ=U{AgmTFJ`2@C=%MhSR=LwvuJC}LKI -zuYKO66GY^Q`R9?Uw-vo+ddyr^*D21jN@I5bu`{!drt2%*P&5QP943II -z3E;h=m#q-xx$HLgdv}YAEtQoR?PFA^sPNr9u!yEg0%!c^Pqb{MjWd|mHej{);KnfI -zETb2Ck*gb8;ecltfS=Mmv-#O-rf3%HmxSyxf}5?g10}e>2PL;$_TlDC&c*0vRW?On -zFiQocrov1oc_4}IICs>_bF}+4-OD5d();Pjdv*DegPA7@UlU?!b#$TLi`A50WOtB$ -z{Mq08Nb>cXb7FQM_f8TtjP6)h3{yv+2ZtZ*~0B$2^i#-qV -ztS-E5uF8v5FaEwKQ}w)+_9~N()bitl*co9d?T3E7=k|hy=)YSa_3nfG^4|RDj4zfH -z+fQ>@*cq|?Wb1N&1zcEmb@X}=_7>C%@W*7XbjPSyf?xJo?Sm -z0f)FC$j1wm&Gc?MHsm{tJ^Cb=0ZU&kF-nRek(e398>xLi;7DVZeg|50Qhg0@MV~3) -z@t;-_>K(?ssMS`iOPS7-o)YBIrB2Dng{$`tZD(xf*Wj^3sqFR1t?iP`T?B{|ikqUY -z`R}t;>%>Z=dp6yr#ak&J{Hi(~E#lg*WcIGFO8C^Hwj&tw3rK8G+y>Q#Ug+ar&g`o+ -z)fLRM2%K!=n5(ya2weA1Y_+49eK@60J%kn=h2sM-hc1!<<&4~{Xvpj^ah93NbKoQw -z4vM~S0-v4P6I!5jyb7#}$V|g(7!SfBbB7Y0_LE+qv)6A@`~O^ywGt6u$LP=Mt^V}9 -z+6RF>7@KM%&7>y- -z(yAiN{pZayXs@qIl4=MEwT3vBoRW&%^le#Ash%JS&pV!h -z0YpJicES+EU2riJ9TLr9e*TAG2(XNx2f}EObvQm_1|ZUILa9NVtHaSK-9Nc0Y%{m? -zFqhg{mpkPp=8sT#^p~3Rda^}b_Rz+iIc3E$fOiY}1&)b9%Ya-~@|%v&mlotTUhn4z -zQr5dw(~c0iuS&)Rp&Z>9+I8h3r7FdPe_yw&Uxj3EGCC@TnUQ95wP7&JM`Lkx?N9mi -zKcdIGBO?16IeKIGwyuiNaTdX1mU-5#y=t9=DpmD1G+;lwT3Bnm^G)!l%Ti6|zN0pG -zh+;Xr!7`$4&J&B7)9vkTC%5o$YJSdzYETI%wl?{Waq>5SJ*}(9m14zy93``ZE67{Y -zfaI;tr=1x+zB|S)?h+Cdkn`e4CwGRLpW(oj$=26FR6k)zqRSWQ;6WYn&XlUU!%d8S -zaf58S(PLavv5;^;gTVf9bx!E -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 -zQ>2d@xLteXIy(5q~p&}5Z5&*HebU4w-z -z2JIRNM^oQaXJNEp4rEp};ff(@VQ`x(e2VrekiYF>uCL<_Jdfxae+8^$ -zxvQM$_yl;x)LagtMoKXEu|#!4xnQDiJ@Q%*FkdRmml(2f-L5ws&n$X&08ou!;z(U* -zT@zV&-ZS}gif5}@lyzZ+i93#K4p-u2OTWf@VhV?6?-kCvBbW{{N@r}kP`i;;wD~GK -zOBb0547@EWXc#vvewk;G2e#;p4U0aKhu$BdQk1Re!ZZ-Q64?+pyZ^(r!3VtORp`6N -zbb~9Fz)Ox|MFVad6eu`-eopCKXVEweHOWuM_{`~QOUrItc-=CXK_hH -znu;PfTpo%?17Yp(Tx6B?4b4f<6$QI&0j0kf+CUjhLu>Y>YBBw($>_4)N!J(e-qwF` -zv_|?1O)BU3m<`iN@RwugAue%Z53+Oh4Di -zH5dPa9a7T?+b?T*&>T@PyZ2%xtKfMga#d7`HXC5GBAR>Vw8n{wRW{kKC7aAL2^#Hu -z5sJ+F7rYO4LZ>l7luinqK$w)^SN~}Um?EQxOE*{hVDm^qe8g7x?`eqvNo1Vy?2r6#zNH^NYa*>JxUjCSZ6=9*Z^i|juhT-F`%5Ld -zih0eT!D5%WKQXiO&6n}%&<_poDd^<#w0T5!g#q*)=(v!eT -zZ$M*rVq27GUbp>@;(YPyhQ-#JpQ^RJ_pKEg9=!WMt1D^{Bsp}xpbt3&AY~0z*1zRv -zAEt|wt3UH5%&ztX421)|?!4+p;hv%dc+d|}RZa%25ZNnIaMb;XwNPS*kp8(Tv*2=^ -zn70vJE3s5(#(G&KN3G(awD&wthtlA;!IhEYg!<79kH8g0h4@&~=Si255ry}x`ZHx_ -ztFCKp!5lLsT~-VBP1g@BCnj5QPvrPcDj&{CE7WJn*L2mzU6zfR$68SlUGopZ?dN1& -zn$&$vA+4BE<^IWd5r8#Azz0H$PbWT$Tgp$|B{c!B-y3v2g2#HIK#WcQC+v(Ex{V|UIEe^qGwrMW0WplFtR6fgyzq@zk&c+~48Bu3 -zF<)rI2lacdySfxO6>d8?2O@5bobe0D_ILuBsf80-4=TQGs;7MnyaRk*1Y4TDG~MMR -z4sI-Cuz;WKo_yRYfA~RrD)W}=iZJMCb4tA(u?2dND-wNI#Kc! -zr(S|J=X=`WB6SM`*)$&31{%pVlv+wF_S^W;7A5-T_}}+-Sh-5`941hutrD3JLZ(V$ -z&Sxm3&eb~8sv9-ZGS|;MetGwF=9f@!^327iP|NP?7ZVhwWPpQfHN|Vc`3?%HtjD!L -zr;yx@?1;_u6(I(SYliFxcA|Qs+1J9Y;V^OEwf~T+WM{>n`i;W743?W2{i%HI>zUo@ -zYjU=oG2VY`$d+zQCp}orVmY;M)T|RT{zj2XR6kngeXx7(whw;h^DEnv4TV;zK};=1 -zegZ5vdg>=W?duniktCT9>KK!4i67 -zZCXAu-wlEE;8x=&dc57lc$z7v((CsYn3XtPvOM=*FbDq9Z_IaVs^ -zHj!@_7UeP?)(cPwH6^i`DVw6{@$ad(&>s0twWWyZ>jZ*@`KQ_6B0cQM0hDD4P_uEDYe#nT2AEOTJWvB4Y -zZeR8b7Q3zEqS0~~>&P$$b-U^CtKg;iq)Z<%wVn44vD+I>>*9?qZfRLT*{Y!&sQ=gv -zD1X;LcO5y^TOE|j4DSOQ=g3T;p^ozOrpd2&;6kev;5B>ajAw}VcGKWC!Tx~8+aXpT -z9Gd537OL89vdK&DN$aTir`%Oq_PG!=vx(h@qt-R}=t)5EoQG~4eDJb7*s8~KIQpuq -z==6h=fn7_d2)n)Za+|w*s5_3b&=v}ERalM>)^vyIULGc*>Fr;{pTT0csl7)h5WlU( -zt~|^Q{Xn%(3U)6Fx7-2T_+l-NJNWP=2!l=%zc)qu0~9QsQ0q@&pjciDwII=DUU6sx -zTPkAyNY(CNCYo{TU!C^HVYgPIHm;z~-M?1fkY7(ybB{_$^H(bQ`5{QUOgF;I)~@?Y -ze0g*|WMdzLZ_j$KUdZFQ^nOCMQ@6xNz8Z+pK6p;K$Q$0>iB{{5+KFX4LT3>YWfnqi -zEe5P!D1e=)Z%}A!bi^^5&EnsM13Pc#v>m4e=I6%^o&xRm`*!wWKZQw$RvKmXVDR;n -zS-OIM0kA=Q3C!Qp=WfmV((TkYx}iM3#YHn}&Z?IuEq&E#-Xr#?g^G9Pd%lco-;>?1 -z5m48Yr)YJN2>tp-Xo7HmchdWh?vUzhEi_dLKJw!*_Us{l -z&LO@3w8zd%2!R&tu!veV -zurGHGfiNNy$ulz#<{HPz_d~``;>SlH{rkeJ=LblQKXD9;jW#XMy -z-krh~p;|Qfi?Z2IFM|vITq!g55k%=YeG@WfF(z9ihDUMF_-yi?0)3oUl#N&%QG`%E -zMs1f_nWCL1>e+2UzayqDNL^IcVyQMV`dTS&Vv+p>n%p4c9)B6-ZHqr~mjNzg=b|8Q -zLW(k)F(C-xe9+EFo_Ei+yXWt%{W$OrC=a8@DAJ^<-eE9H1% -z>-y0@ZsU%8vD6SXL$t88K7j0!@nVu0T1g@mxS92^`@6^{2@L4GJd;p7~HfD%@y(9W;|1}0(OZjPy(*Zy< -z&}{>LS!w|z-2rCYC>Mr~ePz^Z6;r|XAVG3>N0P>xm+{2%5{9V`bdJPLWdrFcg+(EQ -zr59|eaZn0hG(?~W6S&Ps8~lQTZ&oQNwJ&nPhV!|9&~Z~A_LUydPiAzJ1b!%k8&i!# -ziT>SAt6COW4q1qgiL5>R{!5qPSH7k3A%HBXU1J#?a!Nrh>VGrNmW>_vERO}Ht~9j6 -zDJhU!{EcH8J`SM(G(4%rN?UEAw8teA;pJ*o7oVYz6|Ti~KBE{0V=>lvVb9t1#VXaE -zM|)$}PJ*wZD}nhMla)1aPP2q3erBK`S4M=+2{XyHyE$O?% -zWi$mxu;Fy+@XS_)AL)$448WUNLq+2raI3JYb7X{!YpHEJY?p_P-3R)0E>8I$vbluX -zo_K3tAX5-2Et&7xBr-U}wv0F1s}jkw_-4XE|7ri-B5sn%yFq9TANxfGYzp=i4N;=O -z}zAY~ohP`EUUn=72#3`KS4e>zOaVyY)0_gS^5Z(hmqS@yW -zddo1T6A;i5ngC+{TS9c51`oE$9lwl_3s^mps2X>EztZ*mrf*z1<+BaPhBm{L2&9&Z6fA;Gl>9zFTB9c -z!3Nzups_?M(Z>9d08ioOBqaHJ)04fINO9!&kXQ87qQE`)IY2>>BQGyHF}d006ejy9 -zuE7!umkfdH`pX~${Yj?^Ug0z`)uyQ(VxD>9}Bx1Fg -zc&g;;?wn&ys(n{dG|pqIlEG#5q~e)qYp#xLU?B~qa^=Yw4pj3>xU^7ljRQ|ixjQ4@ -zU}4N#Fp)1)c)EfC=Tr6`eh} -zd6BTIAk4%3CWf3H3|GU#Ctr4>zYZ_rGCf$C_;X<&rfULO#ITwC~*@zH& -z07oUg2x3ZCA}UVCx+}c~PI*eBjEN*hcF}M -zhOes%(g8%=qJ9Ps@r1C(K-FyCKT)`G*%*}sD(+JO1Cavy;6_sRG!;oS3C^3JVf(rA9 -zs2H3m5jaBy7UcZKjXI5d$b!Y)w!dRWc#>XiJ9skJIu@YON24ut -zHu|yRGl+GuhA}S|9br)Z81YJosdreVz7d&UMnWb6q`5|y+KhdwhPV9+hd}jKk_IPs -zZDYrw!lp`wNg(Tb*j}fdxK$_IZYqKDnF25FL+e?nLsy_P!k&u@fJd!L3TK(_hVU``a{ -zi&q9lC8v+_tW`exhAigKL-qnX0i`N4v|>W9j~Ze(z5b^tQL|3w+BhaEu1`^!94RQ$ -z2QlVE+4HSPW~{;%H^1TYRHaL9Ez;~j#?6wD3KFb@cqlq!Xagm^WK@d2>s&3;+`G+( -zc@&_6Z%Ss2jMWN&s#hNT6(Qv@vx9$-%5>lAl=+F-7jX2E{ -zl&jAzz+d%D2xH)3W4q*8N^9WIQZDvRayqjEm)UpT0SqEyF(!A`TB-YV^N<~o+SieJhRfdlX+U0Gj#}c@}h?qB0ULktPYKUV_+#z1)6AGXj}hv -zywwJ9O`Nj{_y!vZP!G-r%R>iX-AMzm8wT6HI={+B##S?9%v5WrJrZ}gYTKlJb6sZ# -z$NN;<*K8>GY`H!#{Q(!-JX;hqZib2~J_MY>woXK_{2!%T23MYH -zp~Jbc%#TIgDMyN;b&>!0lD)wZ;mk2h@E@j;WaCW}cKBh0O=fhp5TJbrhMCW9>2nho -zIw(Xs6-Hx7!Y~>VHgiX_+Q4zgx~LFK%l(yC@8kv`m;dSXe5u+T%K}4rG4v)GQ7V0B -zBAM`{5J||~_hSouOgxpw>zn%xqz-zw6OWpX2hDO3jSBMQh6!r9Z#jGQrUz%LPLI@1?c -z5WmF-+{vk%`q4!1O+rHreTkJquK&q*$r$Ily#DMS!r#Z~Z$2p5UdkL`x@3!Jys)do -z$SsBwFhqQR8C&hE!*&xMcT{}4kC=*Q%reI<1XFh5$tDroZw;TFj#|nkG>SAh}iPr=yQ@rjgB$ou%h^LJQZ67BO*?VI;7ngHsu`+=C;|e%m#N?6k$Zrx{T-prcSCZ=mX#(s?Qk<)sDT%EL`sV`Ya+_Fi^j%bUIA^9?5u7YkO% -zS^VFHFXPr5dMD-oUryf-4nC$IDmTFp)**@IJmw!x@mr76p4-JsQ)@lWuahi7@eIe4 -z*zUz69eY9(Seh@#%(>3Wjpp6b9mJ~^#n^Rl{~aCsN#3ugEu4kj+d%OK7Qp|Qd4_Yw -zPBEnS+z`Sz@GUmoE+>*3$W}Jd4q~4E)RQIna=n%Ok5WYO|88l1#Q)E)-sKN-=pIT& -z5cMO(X4L2lLB6hc@;(jR56*uj(bbsDdznPsQ9tK}W3c+XyV2V?WftrDAJZA|z9Z-z -zr1ED=9zzqJ`@X_Rn(>W%eWOpS&peziV7@WAdWD!N?}iVmfz~``BxTa>P>u-3hGa8lcbFr@d?F$cT!~&Sd^*2w-#D3KRoPF -zb4u-$$=vm<4B2(bcUn|3f+y$#+8uLq1tv$j1S%FBgIoHX#Zx2B9mV|o2sg4C;W8%T -z_(X6<>M?=+ogC9U>`^})6He84yQ+zKUlIsnoh(qP1X!aUjeY5>H%u}_wv0>VpGD@6 -zB6v{U{8WEE7N2f&sASiSEfaj0yza7o!VqRlEt;@*oysh##kYdR)oMLC{&sZMq~jEF -z+ny-aqbszT^{^<$VU<=BXpt -zk--yD%EkMu>UwRR>m*pfnJa>RMOwkxB%XHL?#V?|dz6!UNyrBLr|zVC8r>6P83ZTB -zLdoUu`TLSZchqYoQ+G#N*_rhR%HX9DJrnj -zWIR7p{}=6DPzfgDlqpt+{OqQhuYeu`mvbt&*Hq*V#_!&iWyz%Fi1quZo&FpA8Y&L= -zIuKmY^XkqND6%crAv(Jv_k_d%4tw7Q=}vm|fgnsiyFf -z5W)^Q=X3LtJPYi*&=TjWJ~RTiWGuPzqragdB{u?Uvdr6(oxbBsMDS|7<*v;$)PFpc_4$R -zm31+-5XNHZaI%PIKJDxlaApzSNe$<@MzIx1*FQTSp)e)ZD{>qGn?sHd(HkGvbaS-2 -zsYw!m)fD@|?%RPO$b+H2w>Og?jIxuAUs{5IG`^nC4#()N-x~{4XBQ7qkJHm3B-wA1 -z@5;}SY$3}g20`D#(TiX;UI~`=uI^yIvV@FEyVMuK8>YqKcSm#tH2Pf(8&mG`%xs-1 -z44|$+x3BK*YkNh|3$YmE#eElLa$dkdsWScPDr&9~d+fIRmJ@NI?Tr+hd-Ji8KA; -zU=Yk)g=|>tPa#T@#}cd=hMx#E)dT`L7U)Jtx&oNW%Cf1kqD#6Uf5J^#F)p}$6vohB -zNpvo2UA6oKXbUm1ax+I2v*F}L{NM5dW -z(L&}+p9@=SM)=Z+c9ov6?v0116=8c8y!OSZ#&3`*;rUXwmasWZYURQxTKl~%xtu745-=ZSQkp-vYaVj62SP>H^J<`=)6A5fun6&_s~K9m1x)4$#;~v -z-S|FSe|5Os5bpTCUN+Sn--dMsi$1H==8f{^Zk-}j*}r|ES~)|C6KMPNSR~NV#f}NT -z^?Mn^h?&#uf>k*6RkI_Y_*iSbbj3`^G6l%gJde_6Ow3+DlMRN>v(qKun~n?)w7R~y -ze;Gl=Bk0$`KYd4()MVUD0Bjmki$9JX0J&@aaNOkGA5sLF!_y_?m-u}&KNEK6uIEC_IInF&lghIJudb~`X-ltBBZ`5>Yk5+Z8+E8RZJ; -zqH^gNjd_nKkIg4QZ*Jcp)pciblI3t3*a+YH}l08Ahw49oPn -zS?1@}pzoWM<}mcp;s2<@q0S0?T3In(v53IZCM$TNJ}&A& -zb=&x)tU$|t%K2~JTC&cH<0sF^M5_qxiroxrZ}o8Ltq) -zUz{wwo8Hh?SGsal|9CGVi&X#1i`m|G+Dda#{QQh1#HQ>8QSBbQQfN;(>V!R)ts`v> -zd5)WV#}wTJU>UDra>4?8-t3W5G++C{)S;hz6<@P(qdw>B=S)q@Sv1f1Qp(AprKIQ> -zqN^_};Ck02cGHtvNqw3kA-ke=!iR>{nRP6I?5<^NQbu3wHOIURqy~efr9DgeMOp@I -z69gS@$9|L1AT{B(C2~u@bAdUntH7V%eRaIF*Co*MaQ9{vjzJ}VYQ9XW(N*+7wh_+y -zG)<)Vy8=cHI6F&~dKDFK)V=yB!fnUz=KH$igb!8!=|A6+&jbhNtahi01L`>!LC-k) -zVc>F|MCwM#^Iuz&-t1}i&5(_(UU+w%V<6s@yo|s~C`$nP;14|=~RiT@rxX_?pyYZ^}K!<9HRJ2x?ORPdpEG1HQxW(qF$yILn$_Bzx>m~F_rA|7pv -zy-mDKYR&C3Jix~59}}y-X`4(9^lnWH)wLhKo}~0*N;S3$hPiB}QS04K<)o&ncrfm) -zh>{QvCzuk&wR8j~)B$0yw`;Mw1+ll~FR{!5?|IAGCWiQN!6|8zExOo%)sj7VTxP -z9FXHitx6B%+~`{vTIip8G9j3R9$Ldq3E3-d+G_x-mmUcE4NMlWhnV9`jaJIUH-~4$ -z|BKK=W!?dMvQxXoqDJ%@+Rs)dt_CIE7i_=3isx&Rxbw|E%#bOx-2(q_x@kj|gnSAx -zm@wr@PIvQVzg?E^zqU-hRh~6gIp_WSea%QZ@67dMs}@D35?<3SY59x-aV<@#&2|qK -z?|)qDDI88vg1&odNzeqhT(Ac> -z$r+5y1o6ubsNdAXF*D;?kk-KF>De@sCM&4bu(7sD^m9~iqEA52(PDL}swZsH2lF3a -z@0%a-Cv(>TQ(szofcF5-8=4_RFAR$`e>q>`!toy?U$FLhjwA*2P(y^U8Z~5gfvZT) -ziHmOTSbq&1e8Hi3K<1zdqyb!4Y6{@oJ0XJ3Kxw*87Q02fx}v;cwHb0fL5h}L2%sD& -zr1G3Quvf&VHj1_Q0>3!|#N`Elx -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 -z|6Gk@koXL2G)Ds8dH)kun -zm%B&appso=4Hx_fVJ>gXd0uIShfpliAALodCcdPI*@PO&SG)BJ(`C|r9+~X72)LYW -zbgN809*-7~5;y@|XM!77xNbcqXYQHa&;`Hgqc|Zu6^^rq+{umtJ -z@(qf*OuttfOmg9V&&?YmMZC&v4q6B)A=fZ@?BRgS627ccfrRdz=7l_a-0_{YvA6Gt -z-t<~7X_T_d0JVv&&KC3HBrhVH9{6#PQdRnUSYBh>U~t98?r2oy$pIAL#?R{6!6Ss1 -z{dFNYJX=360=-mV)~Z#t#P$CA^A|GO=xQAF|4n$J6BVDRH^Yk3qB+624voz5ng<7w -ze{+A=sIH}afGx~tXgi|eEWkE*bxnFWY(VZaS?M~E(!~`LJlf6W5a>cL67SkOHkK=h -zuiC_Qtbc}6#Ud+hx^`G2%#f3ur^R?$+3HYL?2cHB@yvxy8oFw6{VuFt^NEHdsZ>Mb -ze-7fPxAPy8K!?mOw?&gc=FMIA&|j>Rf`*$RVlXF=39#Q^<^D-joj1OyhIt4`I@DPR -zbZ3*|1TJuKHkRlb$O0K_>(GxxMReGbvra|8T3W`KWQF@jICC;4Qk0(~CtAJC{E8qL -z!c`^@M1U)ttbHWiXeeB{CzSGKY`gL6aAE<4MMWYMEk^iNU7#DO8*p0!2-NdqR$v|Q -zqmCTJ6Huw?o@E$q`^y}E6wrmw;>W=93$2pmK*6VwZ9d6G#<7h1e35dj*X16^P4d3; -zWt`E_h(fp5Rt4@7{~iS1IAbfHMQlL(99&dv`AI+OpbB5VGYPr7oP9vX)rXNE;g<+$ -z0-+FX{#ui`thFG?{UqInoBWM`fV0doC9ucONmO+C;?a{Us?ZBChxiT8DihEC>`A}Y -zm+jz?WKP@(coOuV!YY7~*_0dLOdu9>WgW4Y8E-}q8VJ9U1Sf?m`Qt@|IBJ_6-vuRr -zc_|dU#!)} -zt!Pod3OtX5@hLIw@?Id5Ldfzz#0TOn -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 -zUHt}@$h3{G84k4S=_6B*HgF%nSgC^{K+$j -z=99%CV`qoG^1hUtn-)WGa_%Y)>?c?AOX}CkCH=MSER@zxrDDsYQ&Px -zZSMOTK!sm?2(#4lGFx6gq!?_{iG+l$$~_D7jCY+Dohq#q>6O*9JjQWpTeph-iBGA -zgX9}Jdunn5#=B0bLFvM^Dm+?opFtS!CIYSNHuhDu -zl$JnjtLt|f1C74;6>bEZ40I)!r1zS|U4BTgS;wx5l(LBgl2aD*He1QB7Mdz*|GOxM -zaFj!XpN)d7NX%=F6Cs%&2eq7{XFf`J)5mKT^#<`<$d@{05ifs^u#jE+VGMN-z}v4k|2&56VIvCt{^d1qf9g;_Wpr!$}T0&A7nP%%xv2SVN9Vx1Cbn^V$i&(!Cl -zX2xNqBvpC2Wm2giySU>OXw>{H7>8K8)Lxo1@w-Jbc*U^T`j~!s-WRwJFt^3$`Y(os -zTETZ0T6Eyi%03-&gpKzP*+A&y#+s-_4zHy3RHqUi4)79i$GY -zT?=jPO#AaZ&Na)W?`e|r!GV*=!p@Ct#mP$ZPz4o9L73fz@EwfmX!aX1yR(U1Ia&&ot`?0UAmq0L>Mj#oq1H&}5VYQN -zOYF%q#xw5c2?3uy)XAYbx*%-!W*u@G=v6u7oNMrR)`hzwZm`{lz>p+O`*wpHI%0vY -z1+hxmjw0~Ro#xk>;BSK$?NazHK}CsZK95+#yjCMI#ud&n2u^69v7i&P+H~cVyptcg -zNds$Sm0q>^XW*-&WFU+Uh+D9I^$Gp?L^vrg^0(rfXdUniS$Z;#cYHni@~H%do8N;w -zpy`y`WF?4EnYvK6ygb^asGL{aT-6*D5-CLcDcaO1*5ZnlIc^5;%UK%6Yz}@v7R|ve -z!*}a!qg+vbfz5gl2XMoRw*%PAv)0SA;&xl1qi%;pP0cWwat1Up&;0m_7RdEYU9x1b -z)1pAC-(Ek8d;J+s?yZpBdE-SR(bL1zge_JN<35`0?Y{kd6{LJ_^$2ApqaT83o;b1v -z&qP>CvSE2=JYRYYNILTdGgz&o=>qV3FA`N-_gw9|$j!P_*W_H*r-f$iIX$>+M@jY( -z+)7|x4_omkxld;KkVnSI8Cj#c{A%=6=LSQGdXkX}Usx4+>aLhurxI4a*;hqm=2Vbe -z096yDAEUiuFvlJ=GcBn3wqeVDjHzd~kN^?oKwA4z*H#ClOZ3c#t}BWbncdBIx{%_T -zkG{D~@eT|;D}v}C#8g6pC+VjTrfuAR*nl>@{$L97|C-d*kVB5w;Q>(V%^h8Yr#1E)I1jw7Dd8v -z`D{Wh25U^-FZT0ij(Ey?!IA=9DvDctLZ(!qHavgSiPROYKD2f)UhNDK*rMm9>VpqG -zy5#)y?ph6W%(c;93nQQ4_c;cjagZYA%?$F5ZM%oDqGh*ii2x5=YN6ykM@k_wT1#FQ -z#@P+ze|=RXVrp_(;YDDvvc$E9Zp~H=O#!jpoVsy!XRUj~UIb(aFHe`c1;6FZlM-^j -zX?~)G>rFTw`=CWa_|=#ni{MbkkNWG*93h@U9^6|yGV_))j8<3G9@g7b2_3l#1}ZUpY5$@Vp++K8&1mE%vMT$m-t`IOloMTlXw={LA3HG82E7 -z&yxISkA!IbxT3W$x^iCBr_CfN1wyqd?`KU*AwN6JO0ziQxbHsiiW7c#D@yfvrPnQ@ -zA8|+RcOZ8N(_8dyz8fBNhKQ;PV5p+r{x!N7JBijCb=*7{&2=o3eE|h|!jEh331KgQLF;ZloPoDHZrS4g8(` -zqM_H|{zoevWw+n)5()!?wKn9J)!NaHI~iLsh&! -z7F8OW>8PtsJEMJqeg{$`y(H3U)A}dF6E%Lz4}wj-gfJ+a~vd5?)b_AWm9XEVX0jxMzIaFaua5$O0W98 -zOa+9Ryv(LPcZ!Y>Q{k*(5ynuG2Qy-l_umD%mwA=Z^+%7#oSna_AaIL&jOI8Qud7bl -zSAcrmz{oK5E3B@xdCQgiWSd6W?#AGH@`j%-D%$r+#9nj%?R1voP)x9V=su|54w6Gw -z5$rAm^$hHEWMuKB7){(und~s+smltaKW%-W))hcYS4#@RC&qp=We;gngS}K^+H=#!iyOX=J8ks@OCZaU6Rq;>(hr&yy!0Oy!J&n{`JZ7bUD -zQ=wmdVA`09!__9v=4R*8D)x!BwK>s1UG2y2H*}9G8$p-W(bYd=l$irAC3b7Iyyu!J -zwAfUInd?xYQFkxi2?&y`*st1Sa7I)!+L`;l(>UL+Syk_z*N&X6^2FRTJ5ixBkt!7> -zb{4%7moO?D#{OOrBenh2M>+4&aJEcNX<&haaJKYoy?A?C0}nQVsswy?Pw!uT4aIS2 -z?V2ec(u4RN<4nKO2F9V;)0pF8%LX7wC3iDv;1Pz1Jdr{fV&>=0%Z+QL>q>`O4Tbpj -zGSR-YueLTaz&j5+DA{H)57Bh&;I29N$U35=Ykp`nt>DaAq@f~3pw<1N|7XwH)w{A) -zdZYy-G{sK2czPA!@w<>cd`aUsdb)TwzgtJ;o-u!i$emk+nw(&m)tDTJDmsrIy`DVL -z51&z8Gubsg`g(%#pp=X@Wup2G9y3$jGb*C_r0$hgxs8*%N3jE0&!1){cF-)P@JG8Z -zE%QH%TE-lHvLO@nJ(6zRlNvqs^~1Umc3iH~!lh>UJylSLEF7DCG#?U!$8};CpF)p;)Cu|$|zB8YFA+~2gC#kmAQWo=oRnb68!S?*@>9_H( -z9%gxMiS^u<#lkDGQ<1a=*{rFEePPvcA_%QLY!p9K)WtTg@!9((%#!>>kUYMue1lnT7&lDRrLS=at)byM|<;z!PuW4VlQ -ze6#k?M_Y>LN<4+CC9h}MdL5-!0%t=bpq3tJ*jiRvP)k*raHk1E;pl{Kn)B**!r+#-ijSytUe-7?$+tev$BIy-Q~7l(g}BES-<`K;$*f$6m3ng;Um@bUBs<*oLqIJKn(Jc)%L(Ko~IVmh%8!l -zB&3mu) -z*cU$fSu%nqhtH9mQzw-H>~h0sQod64?)@%+{LC -z-ua(|o_z|}_y8h^5Ub8)Zz*76w5H3h)N*rrKxvkgejN42kwCIIfR$ipRp8CTkA=?ZKJ;}JP3$yEGNm5=a$KM7d|FA)UBNqA)Oc4b%C@Gto9Jv=_bX)l8B_z%yjsq -zC=SD`Hw1CxR7%IBJHc!RNgnnX+Be?iPW3&*gk;%gjXrg??SkvyJ+l`AS@`S=#E3s6 -z(L^ikKB-DF;~=Cc*R5U!&FwFd;p`t@Z^o>e%)4tbo}3LanlwHOV!|gkh;+?+8|)$B -z-)~y}F$Qz)^S&6Nxri*2E7rUAjh8zaPou6XOLiJUe>X9I(%$ZOHka&uzT;GZ_-xfu -z=%t$1Z9Z2r_XxGU(qhB&gDWO>DVD9qPjgTZ`%eE}dfI#4;#7^=#AgVs@@6rcajy^F -zn`d|>j0zso&&@M^&Enj?J(XFtNbBz?5#^>a(r(lvvqBmzXReV(SjEg%J|POOeM^W! -zTuP0lY8b$Ee(tmgA$l-;_`=hHP&dUx?U%}py=S4MlU$+}8;A>YYLi|@MP$Are>c!I -zhdIt#Fs=23M3-=H3vbr?bByMJ#Q~~J^j8vt$1c=oRp3=JWWmk~j6_d<*-$K-@#L~+ -z&~kOU&zZDVEnE>bd)vhfI;T&h0~^38_KrSJ=zsZFjgyU+t$gfj@CW_Sn|h#oKwP{q -z+1y;>*!U%&@tJ-jE28Yh_cw&R8?||f76t3K3ZJ_SUA#&~4r&Ihcsj~oVi=ju+DTou -zXB;=oDYvHi*V>J4rExaSeXQHTY@KUw*wL)tp=m7@hy@wbOKgqSL03_~d?`(`cEu5* -z=&2;9XUR04mVddWPZ1T^g7s)5ig7L~{9xZ#W(hNall!!Jl3#9n|Cx|Wats&i0$R#b -zy7{@L{YT^*B%6b&+7;rCqFy&7E{Bp>%04QiCA#U}p-@kQV~59lxG}J|5O*z~X2LKq -zkA!y*T8*8%mA2*++!@@)pLa1Lm5Gm`^!UH2R8*tS{hNP<7pqSD6m%b>KZDA(IyI<~ -zvcJh}@j~;vNjj*QgD5IpIykME--x=M#DNZQ*9Wnt<5s7yW$kwB7ofQ0y!KEhc}=Lq -z*T-9kL&t6bH~vwgUjhtXL7np}MZ^Dw02XP86rP1soUKPM?T6zn<7 -zq|04YI=mkmq@HmD9wo#Dyl3`sUFj}KJKv -z-DRQUEWz*WJvFi#EJpJFF%_kjEzyURGeA3^Tz_)tDsWi)wMlY?c>xC8l)@0<5v;T% -zBQeaVpnayq_B>1K?2Bj;r)r6<^B1K=Ow(Z>=Levb+w5RW)o1A$n5ISTGcYwQ -z(|G3FXmst0_O$550pNX<=pm~w9-Rklf8jbr8vzA#-Hs`dQ`3!%`vhz`Idf;Et4&I! -z7+VTcOnRhv;ZFAPD?^RFSID?&ox22>tp9RRROaz&s{bj+i|R#6^d!!e5>{N3h^H*O -z28a|pqhYlkP70_56fShohf`rTy0=nCh)@&Y7h=QBF!b_UhH5kR(@0)uV#`BFkooG9 -z4TUV(r>H*XE|)UN0hC=)!fEkNhFBMbC7Q2=PSD~H&^FMK^vi5W3hP~tNSNY+HJcMN -zGH?P6>!<~>P>>A&LPv}$}BDA)l9Bh5!T1a#7eqe -z8(Auh1lp6xMmdSpp+-KDp7ot%P`NgWxiL4A+~CTig)%DyB+pY+;ZRFb!N+fv{e`co -z+u!>Jo^DB8k|!q{Fa>~LVlTJcEuuYmBmK<1qEuFfoJ1>ucgy^F%HVJHk*}-BGPsvW -z7WC=`I0OrRUlEy}WGl31A8sNWW)HRzaczB8w@S2>l9go;{_XhIz9Ia{50MYv+Gc$C -z$3p#6+Y;k!cfB8-SLFwhMB>D(zu$T5_e-_FBJ3$p-{!TR9a^$txRKSoiyW!;q0>(B -zN{`Z8zincSBX*4P%8}ax_gvD$edQMRy!PQP8h-x^N%8lI -zX~)QenEuevZ$X$AK~u1_Xxlf$%G@7NYj9bYticN#$?ukXT1JaW+meIjMJf$D>N-#_ -z9uaCmMmWabQY(7DH2M;~ud``!H(#l@ch*Ll$3ZHenJA9K;46vQTZbgr@*t} -z_Mr2K=)lOi9pXJo -zyNo-2i}^qUo9%h3Bv%l2(Bva&R4N|&Bf(TUmoN7772bXa!b!xJ7e0MSu0wY{?Ba1| -z_z%kU`{#4DGzo(?n$JGSFgem0Km@*)?hU%NnWtTh3o!C7^J=HqbX=UuzK7*obAAgF -z@_H!zP+H<;<(t=^N>4(T{5c$C6MFnF*|Bt9Uhd0~mY_Qw@iW{ZlJURSwqUAZ+$`?D -zQ|XX%^onFH-^pC$<^GW+(&eQt0e(^s^ouh#i4u9sRp)}@Rd)R_OyWV6I -zhU}kKeX)%^!qESl3d%P!9dCI9U1-ci-QcLG$fceMza#M_GBTb}*W{{lju8@_N#~Wf -z9>GX?@ov$x1lKeiPV{90dWxP_H`Bbvmq&OxdTxF7;U~$Y|RU?3AiiN{No1~ -z63Mk$g#FIpI@d_mvsAdg=fNGxx8JCZMHP`YasApSvn$vGT)hzUccMd=+>v9Pg4jwB -zcB`L``^#Y+59^D$x9s;08=o!g@Eft(Ms0C-NJzj2f3XjFK@c^#iI*^=$NM2_@o72@-5YGJxFcC<=UPvenFV*{ -z?~U;b8N2&NE{u(WGYd<$-y450&MfrqPyU&@Hmz!mZRWa~Q*^!rYYGZ6Shi@hMW>NI -z$(T7mLEh@S^ek4_-zaX{Va$%O*;aYB!S<{TQ-)ol3f4#Wn(U&?Xn04aH&gN4^ZQ1; -zFwCYW6HS)Q^gXXb=GSYZ1q&99i{1vsNw4qw?^J{}PReg^I8igl+ZlXM_uA9xYg#D0{@bF7%X%V7~vz&7GZ$4zgU>9K#-2rZkA`~kW -z{_67C@dw4TAB(3At1#@9?yzPIm@fZlV2a)a5;TSTi1LP+bmW1E~faw?V*O~ -zI9>JxS)bV^%lgj%9lK4cS@%G+E5vZ-d_QKp(Bry= -zw++ZLvOXupDq~Rfm2_Hpe+sj-{ne^#Lg=pAIV5XHCz!~~b_ODJL^YcsH7p=s=kCy5 -zd6iy!5bWuJ+#C=&`;BVXzO=rzSLyruW88kd8jH$gw1Me8Ntm`!kg!Is-oE5d{1n18 -z4Jd7TXs^{J=?br0W?R+_*ZY|K`jwz-VV$719a5*oBU*-}rK}(QF(&V5Kj-XR^}EpI -zrdG^YD~Sd>*ad8Y-7K;?Z(!08BV$^YWDoD$+OfAu*4)8hX;B8pA6o3|Syc`v?33{_ -z&N$ddYh6{B$Srb3;_fuRCPu;JiW}aXhi>zEqbhwu=Vc?WKP71d(Wpye>{FcowBn4i -zeoNxwx#1!_kfyXh=bCsecH4OLY8!Dlyu@>uG~q<9JazSp%>PFCM3$$HO|dIlKM|&` -zx4Ls`v9;TBK -zZUVgHGftG!Pps>3-dHF+zx~LNf_93r5#=PI2r>88d)+?3eXC!<9rGNLM}hs(ri5l6 -z^Vcav6qBG*Xz%SnpKu(J-O?5Q8!4mUlwYAcQ1UWM4z!Ro-mU&*^emB1j7Zct&x8rK -z-^CsCl~^(58B-!1u`DJiwzRtAG{YIOLn4w?8I)ZRabo6iPt4!##7Ki#?X*o6RvaLD -zZ@w;WwcEhCZ{Zu4>zeY{W2?#%U#;g-2e>x;15#SI7f_-ToMr17-48#qQ7s_m#EKZ( -zf}EUJp_2RWRgH!CE4dVqS@~AZpO~+mEIn1{z0NL-(fAc_tsO!ecZd5UO)iW0wUv&N -z*~$9RPi2-sJ7>`)^LE1Dn(|RQLSEO_;%>oddWSnH+=J$(xPrx`Nt}@M;>w8**$Vbq -z3ADWUUlpFDlFUV(>Ve-wpA=_KN*TOd^z!|ZiHN|i|K0lB$(U*~YZvs8^{2<T -z+hE+TeAo5i>bZRxCGlYl(#Bf11yt=-Yox_bH1HLPJny=jL*v0xA=+qQh2L-45Zx+v}}c&;h08 -zftpBJMn?1DyBS?W+GC6(gu4U~9gDp>yKm!khuq|^M-976l_FBsC(`09`;D!I4=E%t -zey~(av3;GEG<}iiZT4a3M~>Uldw=Bdi#d}f=fGi`02$G*DDyv=@X -z^g&JZ!4JI!=4hcLMR!`Hsa$CW_LaylA1q5}LHkmSi-te2TB=ylLl0_A2`J -zavxJK6fXZ*;q+E&3_B9*FMaUP#o0r54-ry|Oc0_y1>Bz-scCYW&?X|g&o&|tv&HgA -zWBqWc%0hpQgPu(Bb7l7C4~ge=X0^L(PvcR}bkzl}?H03?SgVV>7v(%m4}J||gq&!N -zQ&iZu-hLg(csDbF4V#wd-cWIAZSVNvhf(!SR^jX=qyF;rtzB(HA!x$pCR3u;-JU?I -zEZK7>_5+CFOuTEHSdBq7fHf#WsxkDoF9=8KOukau(m1uMgEQCDMBRO3Q%I#SJl$n5 -zqFDBnP03xgDU>Zxea%(G8 -zb?Hh@thVylWKwuJFr+1W%!2!5s|RSeSeEjmjvy949jPGa2}F^>=`EM%xVgkOo&+mz -zKTMWVuP5S2+;kcEB5}K)JrT{RqXXF}F-*Cm+a^7i4YE>-w!<`JonRqyg8kH#VR4Ol&gFCL4Dy1tpi -z8zk^y+HU++eZDr8^N~9@cZb~iaQEm5j)ER

~K@RRlj@7^~@9LmQ?TL|3s>emP! -z82#$_kZDXJc((FM3{%qYe~_+#5HguuWvZ=}a~PDlpxD&vrA -zZtNZu@=anw4=Em=Pg~g$PLID$-^H=aV@4cd20ei4`EO%_yX|nyjDVez8V{pWM>Y -zh?x|b`J)>XnjEIdQS{QL2nbJs`qBcyyRD^}A7q(*%DuHz{lv)p6u0UDFXW -z%dRhoFhoezUnZuCDpvKK1V~?(ce?^YL;E232pL^&vFXA?F&MoFVy3WcH_Oy%lo$WB -zh@P0mscs_C^U?Y+w-3Um%MDTKZ0((A7{8LI{V@p4}BQDmHDkP#PM8uiRWu{=560K&Ci6KP(F?__a< -zzg5cND{Unwuplecce^iXN0QeJAbXix9^N!fQzXsHyq?zW-Q^J?dhMpy1R~L+{DzJS -zHyqkJ$W$C=M;T-w8rE@lxZi_u|_og3Oy8>`VT{E -zSOZs#-FJdWF6x)2H{P$e{h1e6S`{ue*7o@@GOjdAQku_xDB=ju+c99MAdNreDr?pA -zrUsE}-VQt=^>)9^h4|QmeUclc&>Nd3GipuZG*``4@-cMGE26*`M>&<%l?wzn%Z;$N -zq5;pz%v5lj=H(O{#Z4)%gIZoS3X6;w%McKCaK6RTBk$?qDZ8@U)S6MzG2DN4UH9qj -z>+Cbu?BmaE=Qusem;x!+C_ndqyJBIiN%#!X)j$v@D2iqeIi5d!tTa{^rb#Fp#k2Y= -zjy+27{r69^+YNUNYMAlrX%`1Z!id4l*O*pFQewt94(m%PPO*|o@>jb8X74Rzp{<6( -zM~o~~K|#*(6AyTG>V_KN|8E=!cG7!WJ{LTAw5K?(qVeNMiH@rHx<0+!P_JX4U3D~F -zZI6t!NR<7?g{>48-0Wi!M=mq=bL8TNcyRxuwIC3Ui-xQ8SuiKj*51qvmT538mqVbv -zQ9BQC0V);QKNhIGuPsRwF@1c@{w`S9-4e~pHj?=cq`IQ_mqUL -z$bG6M#vl~p_q55M3yaGq6e`;kK^fUE5g0BWOjPR>GWV1yIN*wWZHl%L8#PvuJM@+1 -z!pg`Ic;D{)#*aIOv;jZsGwH}$rk|(q?P;OHYB|yt%sfOi_)Qwsw1{Y>m$&})P3!rU -z-yR{1Dtr$a2T!S{c8dS5_4>+&c?O@#p5qR-bG0by_I76C!i2La)>_2V5P -z^aR4W8O>8*DC(%Vu9rm~0G&v0Bji3)Ygn^Iq-E0ny=$aMAdtcH#UauN+dY2Pju -z4;5SdO<#pAiO){hpn4-GmvyI1ld`|JFGu_Q| -ze2s6q`+gt9t^AAa?7-fdBqpqp^jjI*9uVp@tI}-TpQFU*) -zMsFT|D-`AI5(+!^T|2M!Dj*qS;=`oX-Hh*qnQ?r9_RYLKmK(Cp28Wld@hDr^S7$g@ -zL~Og~+NQ>YyW<#BcuBaJkE+K^wnAVcTFnFuxW!`n%&SNdJegk6tCf8RFCNP}eb_yY -zbd2Dy>o%7+#sBKBs%FLGnNuJzNA~8+tEl;MEJ()Jo7)sT$Q|AV5`v6?s^W#|=IfZ( -zEqzk@>0w4#@?)B7g{oo>FMow+^;cKLz?%F-PVK`Zk#tyJPik?V%EI$ES0G&s%%nPUvONoWpN-3he;H|~wU&HnF{s4v)T -zcrhgsBk>Bfs~CBLs3N5{`qDnU`GNk9TZ&&%kF=->zeggeJ78~Ih#;%7Q!I{2h1M5! -zROUys8$zX1zweyWj?s*XWeFRfURNxcE1)GI(zev-(~y(F5ISRZ7KzCeY1&ow7C|?h -z4z^#F43G#@NYphR;Hv<4S(|n~sMSg&NBAn%(qey(-yrwe$o^bifHveEv(Hk9%(*(F -zdIV!{(@W`XFuOG0-RYIyT8|MJ77eq7-a=L@!(b)5^FlCOpIfc^9UItXn@;6{QI&H@ -z>#J~NyrY3Ugjr$krOEC$9p~lYD|kkVEthHRM9RBzH?Ss#+wz6xfqZpy)PSXow)d|! -zHPU$n#k3WPH5H7*!@UX{A4{~cs6?ez*p~O|!Ojov1|fGR6|l=|AD9dHZV+~G-~*$A -z-BN949Ftlz>WyEMNH*huZ~Q%O&Tm;l8d2(0W7))-V%cbjw>2&wvtdoZf~`Bs!iX(n -z*{;TWX-?B%H&fsO^Mo010WU4!UUBCgyK5T|@XgiW+Sul76ABsTs!wVW0lQ4sgx;u= -z@$NKvLo%;Dkp{cBrfHnN*Y}%M%8_n6Qq5Wunz=>+yCxDBp~c^~c1G#S`)A#dn_=*k -zqC<)O5v)~STsZdd>P6j|oB+ATHJ8`mV3$=N8@J5#c*CgK&x0I7wWZ@U&^78ARmR-i -zHYkj~rz8k`bs#=0bI@@tdRtn1B13?%iw9+r3Wnu^JWOY+YCETQ^i5f!;$lvVjru@$2b+RG_!dOawQd`p)mNqLb)u5oH0g3$x66>cWK;8(AQDmaJ1W1nDS^&Xdgr>3TN6)&Ojoq56v7K!KG -zLn?RBT8W!Is6SC2&nUCsxxq0MMvx}lZbc*DsqC6xrwab}$_#Tw8vxdikzp8SvVrjyL -zTX59WS;aNu+x~)<&;3!p(Sg`-AaP#P=ZsgU<+(0(A6F>Kq^2U@JG)~Dms2!*DK*w& -znR4E;8H@#tnEcxA5lj)W0qH3qqj9?g -zxh`%uo%he0q(f?A?2RWKMrb*>3MjWWa~Mf -z_&!N@Om&@6byb7L_CuXzCDQnArxQeZ*P`XGd@AHIWUln;-6Y)oe}Bx{-)rf(I86E- -z#wSjnycCUL^uTd#wqA0kt^P@;VVpPfEp`_%-_fa|iaOh#=D@{4@>Y@K%(dEMHj~B> -z`OAXaQlM)`Rlvq=Ud>&VZm{z~*>BGjsm`V@%wg$$9M_WGH(3T~5?Rnvh)`q&IK`mj -zP7zF|^Pv5*6yix14Xxd_gs8W<&@$;jrFic4ExSPKaiL>@Vyev`k+=@YToUhtRKL3> -z*vReUtMf*Zy*aF+<7k_w^JfHsbuhE?IrgUywq(T3|Qh>|h?%b0Ad-*%-X; -z!gVj1_CxX%#~?Ln)fL$+-WQ9+8G7sHs_L@Nwe{oD=FW)weiOSHUm7<`i-EfXxGsz{9X#xap>B*jo}9Id8>CKA)APp*6(>&1>x_^_%r5(y{E2O` -zI69Ks<@2i{)7+2>Cic9PeGeZ^HZ_CwFW@|>%WXluAx0~+oBfMjiCZropNsDIyT2J> -z2lEY=2fFl!YX{yLi${vW#&l$Xj5oblcR$jyVDk?kw=HzSa`W@!!7k8Hqq66CZ+_GJ -zX3aSn3KrZN`$4WG_#Y^DJB#9Z%1%wPrkuxJ`5%QJXfJ({N^MXO82n0tFj*a>cNTiM -z-uwgxUHEoh4tqCsb92+bGZhVK6sOf>WM~(47|pu5yO_v=elGg({7ILv-#gJ2*2nvE -zAjxk-1p(y(QP;-R36xLHIwI?2cS^esAh*y`6YX?qy=B|3Tgm0$G>DfTi&~byAP`gB -zAjg*c(28sy8rKcV%|Hv*(3?-I>sZ%58zYZEx};;3G8z)sWTU8hHy9dQ&k)hn(%-K+ -z;)WQyec;oH&}0EQ_qHP3g{NV9Xs#iYBGF-tWt#9{wv0Si$fq0EH~l=l^PvtwdM3Ci -zusV@>3!3ldrRDX*p1Fk37?!bs7doY%v*^|VYgmEZRq=1L#1i%j@taEe92o1*6K|1l -z7k(5}HCPYxRAmgWeD3ITC%4OB?_{0uD+FhiX|$=evxpimNnioNEYjH+L5H4}Q5rOWJh#510@LhLYqw1TXg -zHAS+y)Bg)~K#ISs_t??z&|zaF3vpIgG40@BDMG_$(PmcRjC*qjuJ79wc?gyRv|ZP) -zvqtEdhRE1Mz+o@THu+Cuqpes-u=zVA!4Ze6ueElNMhvZ4=#3P7Vn7|5C8;_DX9C&O -z@@|J*fcw0R3mN~*MK|<)i#E(u*$<#1bWH;T|A24HL}V!_CFaU+NC;*2%5T1^y>k4~ -zBWC{e=3bByl1K4@2$lxf6k~rUz%jGzQ)oGjgVY{cxxKT@&NwVJ&-Wv+y>cT<+Pm?9 -zk1Qr7=82kW8C*{vF3t1jpY7LOG}6z0dbmQ?mAkmScYZ!^#1v4t@L`{Qe9tHznlvKO -zDP9+-jNOcyKZ#|uew>82bWO2*%dR}$j@|&e|BR?{Do5upit+=Z?({{7J1PMZX+XGp -z!1@2KA!f%hVT~xvfAv59kJsz<(e>^|KZZFb0b?TBzb4v4+#SF=Cz#BGOWBoT>RR;n -zgA4t_I4l$CG{^5h6hw<*$UJ?S5{D&4PGjRfX@Hc`xkwKkcOHTbEg2;92a691QiDv+ -z6|j3De3bHlr5zqXcu6CSB0VirERpl -zy-81GhY2ms=>7(?PPZ(CWKYW0I$GVw!x+chi8znM0k$G0A|lpzR&O53VK>yYOLb}9 -z$=G~IS!oa5N@9XG#0fd|XuqazR&htdt7%!q;k7fnlURXiJF|1knFtK%3@|R>vnX5H -zB;wtpX_K9Mt**UmR5}3bWhIp(p=NP0d)d-^@pQp?cy-gvwMbssKSHpx`D5qUifU3$ -z+sKhHrmi7_Z=m^Vx!2#QQ;Mv)R4__T$53mRKk*wh8!8JnANqDa;{5n`F@;EzD&x}kWWdvT$kx>c~i=V -zt{kg+(mj6ma~rQ|(kpjuMx=bOCMs%5C_PJaJ|gBIyKwGB=KS*KNT(P-;FPBYOUih{fJ#-Ir^&=*Zah!o_HU=%FhUGpu#usc*va2B&Mv|L}7wLX2NTBy9(OuR_ -zU#K3zj0&@M(K)h8mi-&nBaD}{Gw?@uH6lFIGr>QRrUc_b?wm=y2QDT6eHk4R -zwnFydG%^|6+`s@?BC&5x81+0KzG(q4nW@*zjS?epx<YM7AG$lWYjb79F}Z>wFUb?RuB7kOi6RvM#KLvkPLGR?Xw` -zi^4!aej-iPHx^X%1A<4gr{|7%2{)@X{T0)hA@QZq^yd{)|LHjoqf31LK9ehneyOy1 -zEK8zoNF!1#q3G@^kpjLz4WU8QiNW0iYt8F)372Pxsb>YYRi7nG-s34u1Wh&(uhc22 -z0)>4XV4{-B*u~jc+)TTh_z?d!ss}s~LJLdKaA{mV{USN@)x<^D9jFk9gUWwlPAqN_ -zi;C3hmR6E>d#q=Ys3lgT6*hIOf16LsQKQt*0q9|jbS -zOoJ|5ysRQbPP+qT-gn$~$k**rY%&P!u~H&*xl`)eoMQj_<{Poqmi=YPwv(sEgXI952hRB;E=f=5HBl)#Md4SJ|sTs{sAgv^Y{X -z;#qCFLb+SJssMJbIX+PYHFl8yT;H5v4wRT_3ayp83Uqo?dY@xn2B2+F?3U**RK!iE -z8`@^uEni(|WMLYl<3Eg9Q9L&9NQb!I0S7zW2{Oh?vQ -zb7si&wW>j9ItEjvXIP1353LysgVbL$d3v{TocnHS_`y0R=8J3{`y38N${jld0rUjw -zG3T`(lj{V1(UB#Ta6*{%55!?JG~-uHLsm7pwu^T?kRW7B!-Ck4Tu-XhKt?#}=!aVTNlzIR^q`V=V%Wq=*4M+jcu(+<`)Idu^MpiXWQ^{1-^;4v3Y) -z%3VeL29+u49dlPk6CcUSyzF%0fnNeFTbj@kIfDigu@!-xVY61YLwH8b^V*r9;>hfhC!f$WmstRqZY -zPg^^fx`<^PXSk8(yrPTsQ`%9!%Lerr~fHPsAe -zubT(6oRI=PTZs+n&UtG2PGFPCw -znF#7bwJ;T{uXM{5t|3MzH*N*>18d*~^Yr0uFM5(xL^1g^jM@6F2yp-*1X?1@M?R-m88X?P^mZP2MM~fBa&0|1T?!bF4k7sdz((d&m+=B_N3gL_Uk6Q -zQ6)%b#VJ0{N$=F?%wCq+4pq+1g;(KbqwkWADqiB{ei>VM2wFZ?W5Q$N1X -z7z;Syl$hS-U8&lw7FaUWGXL>IM&2A&>HI5_q#O@=%2s6|+r_pwET~9Ss06_=OF!qS -zSqLZnnX9BiY9cZ6feRgZw#|AyB&D2AQeFAyE~|;It3Q2J3g!(A_F6F82V$UI@V#>W -zf8h^4eISW)Z6)bMB6P4%Qc?|#wurAO_;DBLwAje(ISTu|uVKY~nAa*w5DRb=Z?F7a -z=j#QboWq6o#qZzw;_>&@=?^JbNJ@0SKNL3nzmBgTCNgzj;O<%NF&cm5oSNI&;?Vmq -zNmz0mZ$QlXu?)+WS9$$ss{=z4%sblbn{+k|{=?N5MQl;sYcT~5|2*9TjbvZKtqTGG -z!|YXS;%IouiKK|GS>Dc{zD9w#|HLK!m6Wu1pLC4me&+&G&*RnVvGX{ZEk6{I4^>3d -zsY@0xb`?<;QtU`tZ}TyjoFZd6S_r4tKiegHz?V_nuSlp#=F9Qg-_cWK)i}|yD_?s{ -zxBOjn^RNF*gE*cREbHG_PajCnM0#ev$@Nv=`9^8$y|3`1_vr?|+pFtsDc@urWMTT> -zS8wjX-T-2SX;Rj}^_dK_aQI3pM}gSPczzi>vMkrTFZO+s0sb#idcckW_U^3cRCCQ< -z)Bx=@F=KGp;qVBVO1)oq!gcT8;ir!uKfIr^@lK)+r=DEK6E_AZqU4!o$v%JLC*ZsZ -zDuaxbLD8vD`%1*3arxB^?MhnVZ~>DRW#{WJKQkU$Z&rq&I4AHf$js{?ey;(z<$U2Nri_Iuos!x8N?LRBw4QN6-Ai+Ur;lHXXhL`P -zu7rm%j}ZY!;_36x0>yqU)>@zZ^p(Z8DxFUspFiPs)~?gh(3vmiFxx<%e?G@a0iHg7 -z`n1mZo6;G+w(j?_(7B&ku&R!!$D<(j^D#zHkc_{1M(*44^HnVEuqo;(6`|1a`CO)3 -zUSFaO>hmWeqvNPPe_<#%XK(ZwcebQOI{xy+KqC7jeEA|m*$y${)?MxEpPoEfw)0-s -zf(0z&wTRpC!9U4lDnQoL$DcpR^bjX>b2>-nUOBCr{zfOh++s|#|MOR}oHSK~j$T}^ -zHzP9|ZxxKyJw5&W@mxe9!>8v@A3?@)@ad~(*Q(r%#E{H5SNVc37KRkC43x_O>? -z<{5EOPkenL14!SVjs}eb&_|`q?64E8bUVzR{PnqyktmS1$Jb9E&;6*UKkK$b8Bf$x -zpWtz^Cw|6??d}OVe$~%kudRlWzJB4A^={HbP^R7Er>8{F*$MBO&W=AFfNQ?~^yPd} -z^MpQw^ps=CQQDnffBHGy2u9i0pPz)D~bAE#_ -z7JvHs^H*qQ=?e@YQ}Mt4tmFIn77yotdCGUn*I)2tGH`8~e);*u%v<^_k0v`4=9A{< -zef^3%h$1S-U(ZXm+2`Zpd?l8t#&YQZd*?Xu!rDx@ZXy2m^ZxnM7yFDxPcVc~@D^8% -zRXIr4!C5_+=gX!Po@KYg_`#QPfJTyhw1z9$Bhtz9vZRn~1}M>Wc}xcz12`Z>AC -zO82r3JLQ*TSCdru`sJ%0!n-J3OivgFCB4YkH>ZC7WT$H4Pz$oniOJ70m6}@uvH^R2 -zdrn_0J4d@jPfeFiR~P}Fub*TR%VA5d(h~JTXlfb~co?vjh^BNps!-P}D)4F;%Cuh~ -z*z`N!`7>EWd#(p|4Y;Su2Rm)gu<>wQ` -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 -zv-ZOLh4$u2T#%!i){7siRlOhRxT}D}({ -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 -zO|I`@kztFII~< -z(uZ$r45Q;w<^e3sI2mMx9g;efz4bD7w1;Np%EL^{PSel%RqWpuL=5w+dC?qpN``3} -z9aMA+Pti?W>FhSuB*8H>dY#yz#@l(v6roKAGZ -zKp$zJ17&9#Rp}v8EZqs!$jSp77d1orq3EyhE6IAHz5T+1J!M^sWDmpZ<8q-bMFQ>G -zfjtvA4clI__y>@JSC{rNWL3b`luf65Fw$xM^_=T2G -zhcY#OZ;&%1+S0s>xJJl_L?=<{s}3~FVNd#>$nfmQ)ZH_z8rU)7%O-WJRF3}paqPC! -z=hJ_PS|t4Zw9bFyl{9JSWK|%$OQ?-DH7!Bx3a_)>_ys8pqte^I^~>o$`u%1Q@Wi8t -za5uxxfs)Qq;nvFk@x;=Uc(^|cvV+L5S?N90(nXKtC7uoast8!U%--@fU7SFo;;{8F -zmh!pDi0E(s;qT+(lM|iI0kYSeWL;EYBLjJXARXI{hs-zFGpXzeuy6D=;m})@!-^p} -zg~+!fv1K{m`a2sK+YfG#<>X9JxmQG0{hsH?0%7YRfiV`Mppvu=ofi@t&-ml&$x8O2 -zdy#X2sVU%`GGODTAvxv4~i!?Kr`L&1m8_f(LDL@K*FDrk90weRe)9o!#U -z@-2J)+r$nfgGEBN&4S6IbGqdxzust}-~@y#w-enwRvNMqi=rm(l)05?VTkNWw<7W* -zy$j3^)t=eM@|He|yF49|%4#1;v2)#iM64to^w7ZcGwq%98B>}LF2h4Pu1B{J@hMv9 -zK@*HGfv5!jFVY@J|DVq;Fw-MSZQ-h+&*ycf|J<1k1eoR=62dnTIe#R~+zq>^!D4JP -z?}~;?>u4EZH1iQ#e5iAgXOUEpPbXct3g6~0(%%glb^ux?$6gXgRf2w!zOXAsmo}0Uf=1Vqgr%!%rl#V>biO+AV^*>7x*)OzQye -z13vP4>66{)!YgUO^f3~llVwL+Nw+oKz14*z>ySQRSg{gI6!&r63X8%@RdgQ0mObR4cf52$3GcWJW3_Pp^SbL(8OK?e_+1zqVn&W6BfcPf>?^H|W -z+%vCGfMgbtnguF1U4XfD6iYiMG@x -z++}+tOLa6HDE(!E$Awmr9kq%?;<6Y3}QJCA-y=rJaP;I)oEv;PKJlaoyeD -zW%?Zx*VWu?qFJ?T0oEkC6AdYPg@T#2q5(>vDf?udp6)DlQWGc5j0vO!`4gLv0{87fZrbogakHUQAUtiQ;k`hBL8lRiEa$H#o|Fx`wGs<&Tj= -zJ(kXU4bc3EY%0|cVQDvtV*q7q0|7YFA>x$E$y`S!9VsSqhs0!rmf+xp+qGHRTTHlH -z(?q+L*w5ic!f0XKin_m+=j{@fWS=qPo2>?j%(a13_Lwus`QIt6%1h0T -z-SNG|e^|^S17%^1BDpWAiKl;}Ir8Ra_2M?5O+XZ7i7dKcapf|=xzp*fGf>#kn(#y*y3CK(<$ez${5 -z(Ffm$1X{9=m3cwN@Y)&BK@kMK04qO7k{F|HJxw#Tx_28Jz+Dmc8dSSu>q(bYV-^59 -z8(sA{Ug5}qQ{K4N?A&s8B|i=>a(#6+V$;i!LT+PNHWX}@&QR%8t!!vARaxz3V>mLg -zz1D}3_TZYgA@fp*CRUX*}Uj -z;z*9q`*grJN!l?9zcBil1au!7(j;sf&k?>*4ffT=Np48xh4da15(J0XzhIr^{&J -zo6eP>MNK#6G@|X)W-RRt#F24_ux{4K*;39J1XDoDk}Ct5Dn86812>)Exhfnh1#z?8 -zd|n%;_{FW?P*ty|NtKtoBfIS}%*3z2@fW9FQ(E-iak&6j+35Bo4(kQWUV|lkfA20^ -zvS@hhp6sJCqumvi=Hx-9bdz4^fXM4u-uW?u$|b~0umK7^@kNp#cFkzu=$>IK6<5LqUe -zo5bQ!%hjp70B-VKcc?4GS!wcPmR&_xHo;R0H_xg(8C7%RFi~=>Yr2oSo{(+dI-;p|8 -zT08*7lyp-K-L3;$=85eb3OOF6#*Mf_Pu!UU4ttr!0gUE>c&mSj+rxY%;$4+r(5(?_ -zV;ut^f+aEI(ezi+AJ|?JEsv}UVErUVqpT+Dbwz+QV{Far=%2U6Zl)I -zD!Tb|q0+tb7cC5);j=xDDCbjzP=DQX0XSJTJ0$jSJ!>F_CJVp;X(%+g3Dl$VrIclj -z6YpcvDZ?v~LlxC*<2pHj6zKJN6M>fqK4tg -z6pU@^{=hN(%mqo>5lS&+8(C<@tqU@LM{|f49-)_^LJgvN{Tfo3Aj9UA5dhaYDO{vO -zm~x~k(~>r;G!)8>RXhs;m)@Wvmt{L7S(mN%lVmz4Ne||kIWDPNjjZ#ZV+(H~1>YyYN$*tA0Au*qcZ-ourGa7&ifH3Wg)t>cB!|ScOzzk~@ -zFO9XI)P -zs)#(x*gItNT*=HK(s9H`Q~@Xenh<*cIW4`VXd+Sact*JEoI$a*uB&}j1%I5$(_%8X -zheX);Ng3xD$-rCoVt-Ow6M2=)-&TF1h9XbLvp~?C=qbmuzT>}K^b{U5*IULMWo>3&-kK|y=N%#($!vjPMskRzbfIt1}YwwgEE}g4X^Leh~ -z=!>|C9+IbrBSXjY{Y$g!T?rRmpE@$o)mC&(G!|zEl~wkOL#=D?E#ipsSb) -z9frQGXI+w|t@bHHlMvbs0#TDr(JY*4{L&IZSk}mh7)e@-I*0rP!>~DriDn*2*0F3) -zl7sT7p-|tEu?HWF`5kFMYO||r5GQBad0cXWTn&!OJQ@VfbZ&{g6IGZmh)D_Y57oKm>p(djdX!HA;4>o}2=a?gk3+P&%^9H!fGEi6&(cvD_?k88o}~oIYjZ -zmNeBJn3;?CJtyroD}wcG#Pb+1GHA#5Z^;BkuX&g{T89Q+ZYwX=)8*P1=$x{4)hQb= -ztqMK#_`(bqR1|*8r!Ku&{z~gBty0R2wzs$fu6ru-yOOja+plfn^*Hkdr!ht;F1;YM -z;zwd%!m#;XfCR$|A7lH-0%#9w!v3lrr*{&#f@m@3Y$S{!#V2#>D%>C$orinQ>_5ed -zV26nI#EvqXi@m7{-VO*UZzcorqYYU_>ts_|x~ZeRbvF|$%!6341Hpb=#AZl1P{iI^ -zfQEHlKJq?HJU^Mb!SjZ3vhy_~jdm^11JDHFRTZ0uuMG|2k63HLAmx0_ed%d;V>|9A -z`cRP^XZ{+xef(!@aCv|>8WbrpGglVO99Vs^2vxgRLDo-1ygqcyEYdm1iUndMSN=(CHoyjV>O522Nf;!|x -zZBNXjfj4YUJeY#9Uk8J~hbZyWe`PFNhk1ndWcP -zkXkb9^Y27cn+PkL7GkI*nTVZ?%RMoL?u;nL+ihR0i|^9{kqL%mr<_1KkJpF?odB-O -z&O<54o=(yM+4%W&U6^UdA7;7W$W|^*BgS?2df2e6QNCed5y>$}7IGDX;6UgdyT^IQ -z(7NhW-BBaFCuB*w?S9{t=k9G0m19+UzLz%idL*oj3vfyaduX@23rQR455z?ze$S>_ -z$6Py`oSqHX1JiFhHP!)Dnhe|!(McM?>F#~u7GN67XWzfJP$q4#oXY|Q -z12Hm{;Kt1GL|VE#saXNHkoff7>4qJ4_jB7JtKlGu8H5tDA>ZHh!o94(anF)D;!&<~ -z)I(NiEIC1t?1cA^mFK%}b3hK(nA_cA@zJxwd`$xm_p_1m2#tx@k5 -zq35N!8x@(w~~eGdNhnXiYHQ+lFEyVl2Ue< -z&(Jg-A}7^xlD37d10;XW$J>IQ-s~+Jfgk2Osu+QcQ6tF--Xu0nYA)x>ZwGqE**l&f -zDIk)3&?2GsAb-$3WwAS4+x& Q$PRtAp<(=_|#l%3<;SMZ{v;sHpY)oePl*J&3^ -zXp$ZL@_u>h99jNpXIvyV^dJ>6-PuVb5apwgNG$Nvke0^&LfrO+D25}$xW)yNdr07k -z%MR`$-9Yz?B$3^(xKmmdZu1MZC3_-M6#c1Vcg{EitgO4S4v13q6Y|%0enhGonb96G -zg!F9MWqrIBQ*^w@Nnx5MpMw$jS2jL&bwdRxEXu=%Ue8+2qQl&ChEW6nqp^k=ly;sk -z%Z|Zzik0Nxc6>k>XJWH$rtDscQ?NZnL|@lX$8(ipR$*}DWRhwpCEEL>(*e=pnTCl+ -z*ldJ(KGGCVxzXT3y<6`Vrvd=OlKEtK-o#MWY8PWmeQ{8QVB-=W-=ByPnUr8f&)>Z% -zXUih!fJHeDn88f;<%NGH9YF#K2Ytf=72imF&wOn)?jsg(iWx;lsP;8SmG8E@oxiYq -zHDo3(p2^!Q-3`v8;mr#XuONyCOc;Em@@+E0P>9^POFhgdd~cLSQ&`be0L -zL~Xft%R0fmn9Fa}*RK1($It;xq3qM?;vsW!@NGg_JrsW-$V>ie%QYp!(15Q=) -zG$7`EH~4--Zb5qX6gM!uQ#r9iUDPE>=F*o>YsJBGFWl)-oPJ~&`#bqQ)BYi$MBKLW -z_lkl}(cQ#BmhqdM?pYGA@A39YUS-!74jwVG530&FOaj?DoUCqr=4qTOf$J+G$ -z+v5D3gg6K15Tf?4;)lQq()%2@wBTh@#Oj7rJakD}l0TS3wvub2UV5;VEUz2MUd3kL -zYAuw;(`kG3+n&vjcFR>|5WJ}WDAvLd>sgYP8+ateDpjRKHJcS?e@O6n_1PYG7!eOr!;1$fO>Ls0DXyft08TE*j -z_{or5!X}|aHR#6+u4P%L$S-`#(n$1^@d6wmg%d^N -ze1No*XWJrc=$4(l`Fj)@r0)Z;JD0NE6_O^RQSyFVW_axTodnkZVD6`zCoZL(?!+Rp -zf!m|UiMuJePIHcu5{PULqUSc)Z!ZCy;yFEetNfErtKLE;9f|hY5a~v&UfMB$t~1NIw1@^Fzbb_J;uR;I-z -zAa0ni5~t^DP~y%7zg@2psBZ|0?BTI}Ekp}uzUtx3-Cb;M$r(0QYVG@7Y`JMnY07{t -zIRv-*dNNu#`|VRcW&F8dhOGP4Z_<)c#Lzl1GM3R~e2Jg;fg^V7?q*ctk~#x--?57& -zkI;-LQiVYC@Hr$8D1_p(vTDa@QpvgC(ne(5n`vdGcqd_1IM<<4g6G=VH*cJQfTb;w -zSMO-}PYZr|+|u!_o@{P9?Xftnw_BI!Dsz3hZ3fEO?$N1tBr>8*RP0KObKm-QZ`r?z -z%o$)baz52@LghO96)5QLf@#lwmaSvgA~~eT3|`$~+GT&UGgi_&4pU~oWq4Y4Hc;+9ntbHk!cZsZ^__8OXu+h*@Z^0S(NcIpS^?SM^sz`Gs6KO;O0!~cn -z$Siz6!g;^*3+b%Asu1PbvfEq{HQnZXqAWEVjEu1*>OLdBXXTh_#DXM}_EF;Pc4DjD -z1x^uScfw^P5kl8t?`Nr2LK~K>fwk;8Y^?i<*=M4LKX%~K!*#eP6GV{(B!pO16)kkj -z;54XY%_>O2%pmSyE*O32CbMRm$f52SJSpQ=mg$;NP+Bu)F&3oe8*)xH%F8{o#e1^b -zUwzp(%|6==y$*7=Q^3Y=&xhHTByW|XcXPpgH~KgCOx<_(8z{i-{aiw8DpA#E3h3mk -zS~Kz|>0;gR -zFWI~$1xgojE3KbQ7f^#?IT#ms&9+`M1A6H3cw}-gK)+pbTo%4B)O=SE*S8;{Q$1Mp -z0Ozco@kJlGv(P0&)Qo@h3~gsp>0kz<4885L+NanFp`q?PhC&OdpYv -zxoAc=B0Y6S+ex11yV1>YNtbq#G~3U(E^icz7YDzH#jCzO8(a0BevNGshTbyb#pqX( -zM>_U$!1F)9kYR^f^rqe{Uz{Y~g3ySRV{zfoXuuzmV>u!s2<;qgvyN?Ek+tUJnEfK{_*YU#Y)QM`f0$n-$M^1 -zNIl~$$Pi?bL7SCtkvi_L+Zg=W3ISeru8}_yg{aFm2n*2|#M#Za -zwV3Irbk30)bSCbKrV|^gf+o4+NNViM;}Rdv9gl&wG|~{jKWJpbhQv6qA?ZR!#7+lD -z5ecswK-OTvgRLj)BH>e#^_A97#w^+mA(EEZW43bPdbBdPl@4sI3N -zf|go)wx+uIXB6}3;i=ZRhKK*3SuffzWfjA0Bhqu8qhqZ7R{ln-b95J&Q}^i>A8zTa>XNLkcb;DV!@z#L)obU -zOB}Tbi4no)HAbsrWOh7d39b#OdbNZzF0kt3I%mvkzS7(`P#nSITh|+CJ-^S2q*^|@ -z(UPo-p^HAi6}=A41=5XVGZ@MJDYqnI*p*AJQ7WSXM#+i-^pLo==&gH4Gj@5A`jDwB -z?3Q_MIKfP)ZSsML$%-8hO#=H^#=YkZiKEF-W?Ih@Pvlv?Sj%Ov6m6_d^oWoB0Oif6 -zcJo>e3fHrhcV6IEO{|VyAk^Z~oO}%oQ2hcyWkWxp4U2GK0z_t42k~?Bwz~(5SZ5l^ -z*q7g&a`+eeACiEdUQ=Gl2{mG4R+x|@$AZU4cL;JY9tJ8i-h@7gYSG5Y4aoxxoiK2R -zrxXrx+jMt34H}m&nT)hh6DTOnB~Bob68%9*3)+yhv3z67(FKd -z@Q+!_kou-y-m(lke4Qs&N;Y|mdKWUu^Nq|&SL_MTk_m{cG<>CYreqy(K%wjM_d&29 -zn+ZEDEO+6Z0-7z7G`uH(og7Xj%hnu4t(L}5FPEt&Hp5G+Z(W^*c25~jX -z)_Ifrip4u7Cn$bG&hbjpUmPg~Qj3~Sa$Z43E?R-W*;ZNpD^V7hSl0)xi#UdCJ4R}$ -z-i%9gW??*_K={oY>-YBzR}x9cn5X48vzCNsDdEx@O7MM*rtAW;8lS;|LV9C3Ibg75 -zv6*r>sUjfu<$zcy27o-_H{;W&%~8{MoA*;9#xNYBE+xrRf0v$6PLYK4aDO)CbmcQA -zs!K*=bY_Tf)dTjmG$1CZ(ix4@ENa}CRi=oHkwY8`8DB(49N@VpHK7)UsrAQm`4jjA -z3etRXm2-!0geTujV6|4qq~(g<%OQ2)KA&eDYT7;6mwVoRwN4=Y`vG=RySt%< -zA^-<(o3`}KzR^6?J?8~@PHoJypM3ZBiGB9Of!zde6QKQwVq{TH@0Qq)bL{WWA$(^W -z6(vjwxP!kDBD+selMwvjbuXwe?(af_iq`{uWLH{h_`HcH0y8#og+v4gwxF9UpB6pE -zx%3&G>*@E-9q$+&S9F9S*UC984Jy6Mm$$h(9q!S>4H2&g`+&}IZQYR_r1);WUE~Y2 -z!8~RxaAcjQiv8DMRrh(1oK?hW#P6h0;?0q$oG?fA)M4nP!*EVlVyUfvrBR+hiEfWe -z2i8%l(?-{yS+YjxllJxk#`vY@Xo?0P(;;<7KN5fRC7 -zH!16oVH-ef_t|+8jK9m)@tL{oufkU{L5ABO?P3PP<=Pn6r8mP#M6&jL&;647&9Q$o -z(p37pU%VanaLtBz^;s%qeBHkhxa`B1`A)!@(fa~`Du+r9;;z6`J6^ZUIRoKym>1o_ -z>_K4moI}mP1qGOhySD}U5d$LJuR49v3hp;x41w{m$NHvr>yGqC>Qf7+5nRGZqa6u$*$LFs4cp6U*po#Z*+xk2WPZ02^-G+9?6 -zD#rs -zFx};(FyM^V$sU}tR&sI*Z5Z!UjoE$10i~$nH@>*)W!Jg*=I|qXPbB*RBHX{xH{a$eV>1D{)l3iV~t3vl~9)j -z68Zd5<4y?TGy@QCe8T*E4u0nBLiOhzbGM10?)Cy#ryw0@ZV$_jDn}C)OjL&#SWxbd -zZS_{^;))^070zx2szS!|n=%Pt6o%PyOb;h_nRPr3Ss{6bhx5Y2-d?XyzmE~(t83_% -z;}3|SB8vJCL&R(y)gDrtHY6XtC6X!bibDU85gu>2qjQxLO|eXO^vcEal4^SY1?Pg@ -zu?jd?eC~L{35j04Q(nlX;=K}ZC6%l8m3xyW5B6Qstd#c&Y-C@Oc)lMW=CkSIef?yb -zXH$g^X+G)OoGh=QC;9W%G()WP9aZNVrb(0A(wXH=R^l}?8ffCh=aE;S`beaEOhQMh -z;qiE#m;~=efb*IKtY@miA^(RvZ!IlnZ}O9o2S;XkrOrSa@|1VXcyy~-{H%Hc9vU1_ -z*cS|_3PJS@w3=3I1QL0yiJL`e%%aMJk-=u)Q0);W^=e+i#c|OwipmTv1A=DYcp}{- -zsM1UWExL7Y<+09g2Zy@=NK)f22y%VW)P+l26mwVVnJ)o|Ii$Yc#APl!uU;2zS`O?f -z1ip(Es%M5Q_O;RKclPqOqoQfF?epWv`Gaug()hZdSg-IO&xp?3ZQ-XTZLzn$9`Kvb -zkHK3p|GrNPpr&uhzc{G~a5Nr}e0iE0>uR(`wRq#kdv? -zItKaIOIYXBEMfLP18GL%ACn8{6sJ>0&qdS9QN5Ya>>GiOE5?*Ph?*>?Y_Mn64Wsz@%%8W{u6T;kX+teYpapaT*?7X=q=D -z*s>M=rbr~Tmv|v6{A%1L4PnM^J_mzux~-FF$uf5VI`HDSaS9{CWFd&=${5)i+V4-= -zT}5mQGP~#byd_+jx%)h~csSXF%}OkSWrwm3;GZxF(Ih;d(*ua2PbG|gqhWNEsJKOy -zIxyiMEPi34TF>Vo8Dt~CR8NAOth@!e5JhLl5a%cX9zdo0qco9NUVJ|HB*zWU2m0of -z$i4%q2&O9b;*MNJno7?LL6WrtJ`sIHTZ@5P10jAX0SE?8tu!vrJxoA1o0@T*+E&J>T=Sh_BT} -zc>$ozir{8ITJ1RZu}u(H%<8RC&K%>;!O`^sE|PNw`N=#xxEz3vxFmZW(ltZ@-PrEO -zg)^`N$1#bJ-H(+oCyHp6`hfyOP6<#+F|R|6GEW(tJ}FaU8#G4)Z|zDtyhuk*yL~2x -zu@0|+ZjOLj4`b{SUbISUf8;{kL*d;4vF2dErg)a|=V~pNqe#Ak{aoUxZIAXaA6k5% -z;d2#ffGx3CBv&P|oC1k881mgEc>P`#V -zH;HC~-BkILkd#(vg#fXq)FWdaqzp}u?7aWBuJbV?m+^=Uiig+>$u)rF5na0tj}?_%mMU68yJ3*x4YGMGV-gH`*1N3X`qEmsBip! -zsSroTEx2Obj|U}D-00adGU6+}R$3%3y=lVK)eNdG_aIvnHG4{OY&&%UD2)0Wx9v(c -zGB}9sr3r2Q+Oe5s1_Uos)?zz0E}v^jwV(4-*xWsPloC+d>`3u&xphGggmb^#SF&sw -zk*UL~g+> -z<<}@H)M`F$^gX2(fAf901T&I7B-n53;@Z(!?_X)L$lO#_P2xTwCoooZ?q-c>7VS9n -zU0?wady-h8?YgO>7LZaLlT}QiB`1b#>GtBK|8RBDu}O-XLL{S%f0=%2&;5m`&(hmx1J-N9@8TDXoEcom3b@Es9aL|!;46tK1 -zKz9|7^CY@X8@BSP=_jerKb+%k}I(+Aj*)zx2Sl5N+tMa$1hAei$@tB{u -zSZsn1-`qj)T-yZtKIXp|UpbBU_=~$!ndf(i743qham43RNYn -z?GF<#8#C>{{L8_?Bo -zEgjWU`WS}v(a-7Q=+nn`-On!R!EQZ1YssI)kq|km_K*E*`n4&4=_l!9vyV*BQ1x@S -ze~kCDfo?{2_%f!4EO*nkzvyy3{M_w7pZ1q+_mPiX{&u&0R_CzKV>Sc(L|6Mff<>m^ -z?WfB&eJngFVeV`_9>jcPiX~~gF6^aKL*n`=?^MQ3mS$p)p3PcGOfMfCqxH&@5m`mN -zz-oHw=T}Dt7>JEc;R$WBMSej)5YAs(lV3F$vYySXcR~eJXp{5>9D`E5ot%nQKf6^` -zaw+egG!<}M3(^zc++&>Jfc9_B!#BkeqX>m|(Bt5U=|i#NwCGD{0wRZdWDMF6*)gcP -zQmj?Th8DgYHmGyub8jJ0L7z!Y{7{K_onChl-&LmUgyq%+?M}zlNyt2~X3F#mnfm!) -zEmzKnn&{xJ+{6OTvsu%M$xigsh8C4jaCZIw#ocaOX^^O>XPhslzQDOWI`aUJpXyK; -zWHuadYs$A(RkZ*>GJ=X%(;D^;H)w+mM!TD3-3qhAM3!qBeLp}>ck^oa#nXK07PCC( -zvAgl^MqxY({$vDn*KzbaxT(Y`_BF*YxMR^|^;q!t(ozaJ?T!;-(8SHfi6Bn=dEBH# -z0zsS>ka$Awon-4gT%k@O1bs><*Wn80E(rUJ0cz(br4JLYG*DRIE2u|`7mdnV??r?> -zHBhiMWFidVw&#o&$laXH#6etBwc;S~M>-v`*rk~RZM(hq>DmS9w8Le3DM=mP;t{o?86UU;1P`S$9ahmQ?bv7s -zRj7KAonl>uYla`Lb!VZk#0;)y>se -zqPoVFsk?(&QrGj^X#`;$EzZwzB97nbv~iC -zs&i*lJzCN_5Ai$S;XU5}is#}xUt#LL^Oa2I`(MfweP<+?@$cLd^ZEW)HpB0K>nb?w -z9(nogfcCy##ON(r_gJHQ#d5JWBFuE;*{H}g1^w976Y55G#?SdtefSP7t5Ljl&r2_K -z&6ZmvS8=J&NQJ{@G7fOwpao;g-(q$yz{RlgygYsn)%z_5yUdF62D9Gys&`(ipbn~2Y3W4#PRTV84glRNLL*r0= -z;&q+2&kTXWFEU+7L!;3E)kn_I2hao$nuC{NLK?w51ab6gE6%1zrK -zat*`&Y!IpR*UGyobI8&SuSk#}?w;HO^Ne7)vtCdyXPFck;((|?6li#%N+xFaU?uS> -z0u5D|^zN0>evP!`nu`5Q(*FVB4Z1tJfC^#r9kX!?j3N4o?Jty&wN6z?2@ABn9oHUS -zQ&X{l_}%${hCtNTulgz+#D+a`S}eqZ%4g_J$xp3yS1cB32ind;_Vw&f@FodOSrwZS -zADJ&FWPXs{hDHaequVuJQ|y^$3V>BI=g1`xwB$!pG&uVPUgKxofqk6A-j0H$Gd+;? -zXL&7jhg?jvS}wi28Ga73C^zM!V0W{XS(fuGom0{@b59X~RhBB}WA)|Pu01VN>JR|Z -z{-&JCAxTTCqU-dcv{D?_8Z7FS!~jF*;&X2|(roZ@Bo9TRIt3NCTsk+wXXc2cfss%U+firz -z$QUW}>Ac%FP0{eid&dfCx$dSS^^M^)wiQMSw)C<9gPsQ?r2_v=Zfo>#`Prv=~3hDApyS0V5i} -zlF4Sy1Ec%r(p)Msn*dC*t^gwlN4t0FTn{(P2k2JXq9puJ35QDvJyaz!oUQXsH=OZX -z-0l)w>hrFe6k~)Kh731~M7gW=apZ7#m%BVNdsnSP*5Nc=BX4pP$3-`ZE2{P8y(*uW -zJ1cvGLwP}hO@a1>!)Z4wA%#gYYaj>Hv7+Vkk~K;IfXT5En-~ylX_W=2xs(Aw5EjJf -z;&o5)xw^1uU%97`AD>V`g14Cm( -zr2$&SdZM*8x#-j6*GS}&4qcln>l{_{uX~t@_rj?5ch4mgqTBBQ&&%DWZE4SMB}r82 -z|H_4yi5JpP(4ND9NzQ>(M--E!)@;Ob5}!@(rnHzyYpvq4KU~5ak8H0z_!F<@vezkc -zFH9~el^dot;>4{Pz>p&utuZn7CN4;Hi?6XsxU1z`jh4q$Q!IAel?7Rc=*| -zRjrb3V56$BJs>T%@Gg*6M?4Y?re!TK;=Ri -ze8PXxU3qN3N_0kQr0{qC8Pl>viZ59Vf1Ert{7MBqJA3p=wDx4g%jWp}DQgN{lgydI -z+^Z1eOnMAZlPIsmc4me+UCeJqoPOIm2JM>FvUj;-=;Z31@M1H1-~Nk4Qt%3#0N}s#!6u2`SQu#ZppF3%}NW)dnfg$<1}P- -zi@*|2&`cPV!XHJ6XrPhk6jIVl;G8pfiOkxBqhg6e9HfDt_CjM -zX?>mC63=Ktre+pVXwTg$7R6aXv?9!?DhAu&I&CZqFgHNa>FH!wzR=2uKR?3hQ=X%- -zcwF!Ts8qCvJ(~sr5;ngFP;JhfQJ7NTbzT<88$)t#NY_yt9OYsqr-O5w(=9oc5Xb?f -zC4%ssrPy%oN|_n~hyJ32YbVnN7Dsko(q#`QUl8OZx(@kkNkOU9ocEHL32S17RhetWlcomN)-q1?8pH6KWbM{}ak&9@wg3lc4LRgNQV9M0)TM0weJ -zS+ZBN%iXdhJD9)dZboT8SKO-rWQ?+qI8+Z^Vlq>St3=Tg=0GN-B$atH7ilEiAMm=v -zeZ%eL^1yx6Oe6~{%v{d0x>;}VDsppIx`lN;)dIWHb-NVI6r@y(qX6WZKx(oOu3Hu2 -z*3GoHUZMb7Vzq2j=G4+JP-Z92E1LlG-uD{; -zNJ;jU6{cNRPExagGG0JE6FZnC{GY0I%C=ZhM_`!jy6>JpKK+aimZ$<$U4+h?%+|KK -zlfgc6UF+Fb?4AJ_yG}tTzHs_HuF0P@JaSxnZQ4Dk%pu^zPPwvv3;$=r35945gM}?? -zlrU-z0*ur7y`N3U`$rvi@?N3jX<&F5lb5t;fr(dM -zMM64xW+}_x1j@zj{!)Fdd2?0GcnsA;6JqHeC(pH59sMDDdU^4j$OFUVWhL{+W(U|t -z7bh?yU_Gn){k%o9fU`xDS-6|aQ4L8+*}=L#ReSgGZ|;;uE9wp2y-M3vJQhxnPF&t= -z7DXWRXnZ-4#*cqt*y7*f>$7ZtuJG23J#-B0C`mEm9+CnYRKeK?lP2jzMOwfx`*hq` -zSpYU3nklb^sTLhiN4MRVoxCnEnc>k;7*;Wy{(N0t1 -zu^$F~^rrO1BmopUU5iOyd^k=k?24=7rq#Mu*R!Q_ER*Dv?EcPfEeZqIrYZXTNiV&G -zsR=`H`>1Gwi7i^*P>Aa*JgynJwVfq;tw1!BEi)ch;W`zaPX18Y&Dv@A@Ley&>SPF@ -zh^LP_{g-X0EYfPmR(*$OO$@s_gIb@y>77Oe8ZEES;({)V`Lm3QX7bzWPz!D@^Pwm| -zE1^kc``ke_(-9Wa{+`RkZBP8+y$WkVJKUXalp`NbLvQ|!%zvGVD>9f`*&;H&8%hE) -zE>kV~nlDAIAKETa1>hC*Ry?#Fciwj~)wK2-0tNKO<}Hb@Pe1MS9^zGt(nv+=$&`)- -zoJKPP(4XM>oO)ZI(1DLM%xF#oZN3#%0Rfk`g@HwZKBFUQDkT*)3&(&x!e@`OL435PS|+ -ztp_(*m5g`d{v1p-yi!cwL}rL3Gq9_0WB5ho!yUp}g*q;!o$MG4U5_&+NW)YupLu8I -zfQyAP01^w^LNy<+DE0a*63g>hOF4*jqJKt;K*VcT=3Y?JS5vtP -z`$$WP`KC5T@mlT$prm1BStr+c_F5%o^rr#*y^cm&Wc23QI%CVyRGQNp4Zge>#yg%W -zSqyGkGiRWLR-1K8o|W5`=mi>1$2do-7mAlO_E2FN>|AvWN%XLFE=osMy;uOm#^PC{ -z&NNkL`2P1|NTLDmALdN9l64bDGx#dD_bnTgfq0-43;Afr!!a~IA-uRtmbM_OZq{X{ -z{7esU7xVa)ypF~(Xvmd6qWQ4vakvEg2=@++j|;F2%!w<>NXc_O_fy!>IQh2*RH5)k -za#F!RhT9I6GTdm((H?8!+W~Nk;;bP#pTzPbHCl=k40nPD*`lHGJ~(79kbTDeGY3=z8!~Rmu5Jz`jx^1@=G12vE@yj838z1 -zkeYahl`F4~i!!*?mv!)|$!!Vn-fRtygzyr27`25vJRR|9FP-Ic0#UJ}vN=Tw@Rj7| -zNH6E(t+oz`&|`8wl15cbwDT0aOHK;Ym)(Hh` -zcLdkPR@EGY`K+)wZ$rCs!Gs-t>kNv%V{o*_B*H*?N!G%IXM>0vEvrCN_%+e!s!dY8$& -z{P-odNcb6!=+6wyofFPInes-|V(gvhpfS_xU%7ux{+@=^#vI|uwdE8_J$A-_Z8yfw -zd$ZdO<5iZ~u>9VV8X2{&TvN3HVzF;8LQ*55m6i)ZW29%%E*=i64^7VrAQk+8UJW+h -zV2*Lmk84rE(c8p~F~FggS5#McxxFf(^DuCQ+|x?;4oOAZVHSJfZj@n&KucC7ZP?JF -zCifJx;GHI5NXGqLX$l5M3T!6NKqaJ0HI6s@<;W>EK=dEkKnb%lKvl>Ih|J|Vjhget -z(5@1AT?_+p#&QQ!k*%_p -zE$Lr(yb_UuD;fx8ux_%8@;g5Od+5q~M1oD#MW-ci-i#0R{}mvKm!rsQrF1^M-r)LT -zElZapz3`NS<${;pjdm&a7>n(#lBhwZ5GkO^bxuWx6AcL%gu -z2(3E_MYP1w#CP+AW{T4`ACyXZ7C>*rV4f%DL^)IGvrREzceOd8mhn2hoj1`#P*J5S -zH<;H!hl04?I3MeN^PB;#aRhyovG?uH&C{4T!}##(&Dz!J>(-B8@b}XONTNA^jUF}d -z{{B5^1Y~Tr3~+Zxuk<=ZGw(4;Y}1zWE3#cu5jgY+n%Dt1SCPO8-mR2jkIB|36bk2KMHSquZ^4T0(8?!Ims;?QWf -z;+@(`0O+mLTQ1)^!!*5{!IrD6h3zuEtF}jGSizkjj>BlfNEhyUY7QhV<8+KhaoA4W -zFOApw{(cJ=!0k*4Ho@Da>}c_uc)i<1{g?u_4rp&>yHmBV7)?Z7B}u@(otF}Rd1Pkg -zLM>&bKq6($0fd4ggCEn1`-`aYwiEtb&rdNF2!= -zsYrpGQdm(sg!+m|dbZRIKm#lhwfQC-kPprsBu6Wy9sGvG8gC#f^iHws9|!P8?o=+p -z7a*KkY}EG*F{GhDIf=dm*=3q3M^Cd1eQbq8SdM7WO$V?UH^Sa0!>ln#0~j~iPYiy; -z4_q501a^-XWgtQIPWoJ%almS6IO0-UQyZj_tl}@d+ur_Lxe_o-G_%M- -z-E&*#NnH9}L{{42E`k-Qk02FXKV6|H9Im^PGNNA+C$6QimJ|C`aR|4Y)4s~Ozx*Sk -zD*+A=#RFyP@WkMKDMcLs<$`9mXYP0g-U;TAghsNb$CyhCPCj3DDdmlbs9>{GzCIK8 -zU)a6LC8gZq7rlz8@I=S-`;=I^EJODEJ=Wo&DkizCKnlR#dubmDjbn)B -zfINCe`|#?y3kIsBj1J&LL?~2%pAVU0v+}KS1^Npb*v6Q$ABofC0bwB7g3j7sSO)v7+87Pw-ucWGiY5zw|6idB34G8gg53q)=# -zH{mF1vt7;x%Yu8i$)=ze4jq`t2G!^`POtD?D8d-lznTQZJ%Kp9Dm -zIJZti>yT1pr82Gyz+ecE-Q}SpS|$Cz+&sk}3co>pLJr(s>FuG9mLvjgWx;J&IGf>3c4qKPNmj -z2yYMmiwNY4*T@vo4N*dqQbs{V9)&Pno)7neMClZE>FEizCcvW5+IMct -z@*#_`ELQ%V76^KXeSR4a3x{%VKKFK -zv_6W;P*48bij08M-uJm>07PROFYe-iAhBoBz@e8zDe(?+Y#FL*vosgCYBYRezFh6N -zlN@2IHd7O|rC*g#QHH?tez$T6E8=D*2C53s&T84s4 -zt#dp1RZ_34x4SdIDopaO;7c+fsg2V9NuC=I=^?VeXu?2=rpH0ghedxT-mMV8-Xsf)=^ku9T+flyk*t(HT%8>D?-PKufy|BlyAL22GeDAo*rJd)lz6TnhT~Vj6s1 -zPbwXW>r+2|N>fI6Cw|;-R?to?r&sh*+C3>cO%ETturm9a&%P_dijNmGwjibcP)d-H -zBB!+|{O;6|_Ts`pOPlBtiBof48?tf%@))~qMa`lmS1ef{g6x;->sAgxEUSs{TqUFh -z_~uZuhblvBP4}6tT5_DO**C|yq-5e@5r^xS_D&;Yz7^DN-G0#G67x*`XsS41os(fNN&E7<)x_EE6sR|dL^L?n8v4h>#d!` -zNV`s|pI=AY^|2q&R>QI#5Jp`YeRo2_h5U@U>PY}YQcLodUaFbLPx(OG>Q@ -z_Tb@xFY)Z>&ubC@92tNcm8Lq}tdU(f7ja95$BC<{P@Zk3hdX3f`=LR8&yEt}mQ%-# -zGXO8HCK)VDHGR0KJ;y&?ICsi+A4yXn0yQVVyq{3Nq)g+2#>WRQ2s%@mUyH2b4c4=j -zJBkNvz~W|%G}s|ye_9wpeAL?HWEXisW=$k1`UVaD4~nMHl^yi<>I>=;3TZRubX09>jf*#IDt9@?>q-2{TwQDbk0FG3b)s_|s?tGvuks#c;PvJ*6Iq$6@@Y~G{;(d%-BHjMOvdg*Uayq;* -znez~2=B>H5Nco?ED%_A9U^8YdZpMy@<+KT#j}sqFWtcy;?p0AV;cz&m!X|c5%&(_C -zVR@WC+r=DeC{_(faIb+0Sxl-?HEC8Xdg7Mw%tM+~k6@d#!Fhza;{vBL6}#i&pMEy}go53LyClt~B~+d% -z{?VFpk_s{z-WIn};Gyq6A9Rt5ZnWlS!mHzy#DP?ZqOe%WYjIaA%%F`#I$`bwoUd`= -z9w4bbT)&WD@P)W+Pa(WXOalXvNL@o8%<7uo%*=7y*UY!rtOHWF8?CDz*;&8#ax6`nUubI5^?_~3$_o0Q -zfBv{2LaOX(S~SZFMXZ-x>m55ps!eINoqSwnI2OIG0!(Q4;W+bsrB_F_Cg-6Z;%rlga=#XTGoA*hG -zhfXx%W{^7#yg#U9B@pAVoO=rPLu60~1@XR1+RtATlKC -zd~pB~Qo%l*!`mNn{s=LJb`n|^KhHZ4V0=a^n>8=iEovso%+T#Lho63uLal&cI#1)- -zap-r&XBp4SI_wQehN3)4E!G(laX{nKF`zH9h>idal#`9Jmm#ZV)*PmO)ukoD&V3v1uioela5g$b!HY8Y^cU?hN9y -zLDAY0N2gVo+zYlW-KGz(;gP+wjHOvkLJSi5!(DoPJz(6o9@)hBx~sv8*d(Qeg8eYr -zoSzxR7G=+c`gk}BX|?ym{4*Emb6QP@9C3gp?Ojkx;NkHaNeKoMnGt-j+sGtV2> -zx=L*{O6%yt+eAY)wBW?uhG=;YGWiG4T%N#d(k|n9Uy=?P65`OMw?}eM9TT{1?_B4g -zK&tM5%lKY=VTYRT!Z3+W>=p3N!`ggXl48qvV -zNXkmsxI;IMmRPI~fdPTu{ur~&`*$`}TgYwsjsJE`bn)Mwk0-V!B0a@G-2@1Rw1z50 -z5lAVHu}kqDR!aEbi{D+gMQAtxB5w}2wRF-;k+=U9jX+|jWru81^;;NSRi*c!J@>`b -zp8)6h&SOl(AUMx$8}nYDjn`C^l_61JU7(#P1f|>r%#Z -zM_27}F|wzH?6PaO_5<00TMULhN;;JM9f&i%{YKllE`;ewGLC=?n=;^v}}Dd27xqnBix9@ -zqKcp{j%1G7MZhMDtD&)V(lIMR+_WA6q9G~T?vi}Fj00FaG8W -z<<)!{rvEieb>WOCNbFg$uMj-)NYhGRHN!OSYs&DCp -zRy{%lydRa;7$d9Qjhz{(k-MY){F>sOMJYKm*ZS460<>uu!>?q4gma_6fivaAsMqF@ -zMG;YI{08jq)P9)ww&VI-as5_@GRf%zhfL;-+P>`v+1@vcjfCnsLDBADV}hO}Q3p-Af9cw*XiAPvXq>5MWu448gDp?^bRSWvJ*0$IJ+>GlT2I~_Qw{HUe -zb0o{D%Q|*)n`(7w4h5^N+!!XFy$Diu!&HYx*HXQw-I3XmIK9b<1bz)Kw0U&|N&C#{MSOt48cw$3^-+;!(K5NCRRstE9a?y<_TDcRfbXuIh0{>20y`KPGHW;=+6SNRvnRBNl$PhM%Q2M>i)y -zQuxidF$<0Hl3Gs*8<0lUn};j|zK~!l=gG`Z>3s9)3!CN%+jBzdi6oslW>U4*<4S{!e7w!4 -zpLJhd?i#PYa0ywaT98`0cedjGV~N1wU|KFoe|E)ym+j2CB#+|Wv}RwB+OxTd<;1Ai -z_qPC0)cvhUNPYdPgg?u`1des?te}Xt2zI(AyG*>?qR;bd^n?5~)@oG_`xjgD$X*9=huEKfotX_1pZe|tF~55$q&a3=}Hogz-0>8J?#ZUX}c{LXbd8pNj;DsID -zBTaii5sq9$b1ltTlmVjuN?a1q3@vo5Hl&eh_8`e=^?)VWl|rx6%!&Jax4N`NCS#ak -z7@u0gjsP?v#Sl?bp#8bEja+2_y=705doB_Nh-yJ=2&WM)V_j#01Y$w0gEX@!gX7M -zU|z4ut0AN(g4bFoL<#S -zc_ky(mFCSx0W|K4Zsv4R3inrM-L#y&cTNdEBsh?8U*`J*_-C3duc{u=GrjDzmx&`S -zVTX|#)&c(T2ATUqT4=;`vvqD)1n>&qB?MGn_9mu&r6?rB4>gzV5`coXvzjqhVeR*n -zfItFdCFVM><7{irK8v%+jLs>0L9#4Lj%km$%96V$QbGVe&9t^0L?-EUwC`8Txj?&f -z6j58)7~q|g`Cd8SDAw!_(SRq?jI&`YD=ERKIf+R(6JXmD7wJpiO>ujyVFqmQ;S3vW -zk0dW9?ro;?fLW89U##?_U~Fj4XDM>QK|+4dLTk~s`INK_RH8$s0K(`EN3Tt$f@>g2 -z`wYI@IJoaj|C9aJSsF2^<>%lRl -zCeJHD3Km6*gd+WS({vxws>I&}aL_EhIIAJxEKx{`o=p8DTO2DDiZhec7nH>iciU36 -z2N6BilT4Lblh3#_&>UWKPM{hAx+t2&xGE*qFw2x+4S@cO2974GE8=H8x2ze8no|=l~1s^ -zQ?A;e$ttucEj5@V=GvW;7E_dLyH4w#MMR{J6vxE9D?>ftOj9HeyU+|%2Gh)W6`aeJ -zWcM-BeKr1K9@ciPh`F#4l8O8-aIA?Al7q4y)jfi6e=F`m?OijS3wUy*9N=U!@? -z0EY-iQi)4-R}V0wo3m;h$(Rz&u8I3J|7p|aYb -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 -z@`Z?04fNf4CMx -z2bUm2TGm3}7an7qmbHn?`trEM++^cfK;ID=YZqVnNt>8k6B1S?;0iCTRpYeq)6k|O -z@$tn!a@q4kBn9C{9ET=|L?Fqvi??H5l-qHufiR64ET8=^A59=eB!ZEIwTy-rP(8hk2XHYOfkQe=9oDnux{V`B -zpAr%-)WuN1FSE4hXm@p~&lZXq<}w8#$y`H6?KqIRYw2VaS>u%??W;ted}pXUfa-;^ -znF=XsQ?8h?$I$VPCQ(On@RZw7bXLlE@6S$a-*5LP{fd0z`?IOOH~)e*>WS~cy1~u0 -z?t)ch7#(rn){}I+3cf_abni -zQEb;)v7ol9xWqYfkeK}YGex3k03-!?CJqq -z1bcMQYthY~cI|2I4In30XHraPi#*QfhcnWuNMWXrHNftn*V1RyKQ|4dU`Za3%v8_$ -zK^osahnKZya~Fa}0%?{5BtEG|v#M+K0M@|50~xY6w8e(_^0TW$WT-fUk&Zz7RAMHz -zN&pVE%8+qVcYwoy?p3Md1NS(Xwyaq9#S?!f%caj)9iV@Yb|q4VNpl$R+GJp(Bf(>N -z18gV<%OK54PJxt%B8OIFEDA+v<$!pgWj}{A&pQ3+HBe0(OV@!IIBg*^lN)p~A;pF# -zyOmV1)}cB1mIPLeh$w@n+=zUK$Mfx>ejSxiX9Y?xxSJd*9Rm)Zo_=A-bYI>!QAL`F -ztmL@_Acc??LTD(j*iSj_3GY(r2-|Jq8=u5cW!~uYc|FVL-GknQ2t>`W@TVvrrfzQH -z;Rbi7aG&F;{>=$Q$PVWK`;{Npci-PX8WWKpt$nOGqcj|AsT -zdNNw|$hpl`&$g-2+3EK`|HC$qE@sr`yeZkaXbA$kE;GaKLt2b)?9H4$EHS -z;@~|?S{a)>D8A#!JCd2YsI?}nq2CH*i{BE+(Iz{mZ -z$#F-~f&~bpx8%WH4X`i==~va38m~dV>AXl#A*FWl3lK+L6wr*G0OO0SWKm+IK*DT56p>r2?7bu)jrP8vcm(OtyLzJf9EQykaLS^{ -z526obZGGgDd0A@-{#ES64e$_EB_|-JVkD?Fv~#WY;F^*qM#TD)MY|_womcN~I!fAE -zr&(gHDsKCrq92$l$n((-M0>r$6>aURXi3(wn9WM!=VIM^ttLi~kd?-KGcHfB>9S$Z -zRZ1a^5x;yc;Dc5d2(p}aYLJQA(6J6=E4PFzGfy*x&N+zwpqaLi%S0h^xwZ8(xOb%! -zGU{o|Ry$6vM1{EjY$~K7(dwFTGbgA&Z@_`qJT|1n&S@B~m{H&Ekpahbe@eQFh7T~~ -z)F}sfO?g+*%>B?EjFIP0`{%vry8z|RMQ7HT>F1ZEgv7q#s#!Ry43K+SwgP|Ti7EEe -zOwlxsao)h*dxYq%b(jE=7uw;w22(D5(OnM5-1tTH0X>!KIu{sT2u6`k9gn(Sf=PV--$wmzkyP4!VrtIzkXuOz${G7Dh?yUisu>SPE@Ii*<5)#f! -zgk6$uxiin8yOoDcunqnmE{TYz)+cO$(C`g4q!fvW4k!K -zx3vOfkk~X49LP=MpRb`_fKwRCl&hI0)$$P+B(qKNnljLgd$W@{TJg++9woGg%JX8r -z2sjgBEhA7q$932OilVR7p~Ij-7qf4qG<+I3e_BRXXBjHro~->8a&M%B5f8i -zu6kwP+_4IMEHnh+xnT$VqoVy|L$dk9j=uRuRvxK->_#Nji5t7Af(%C^Od(`9Z>3ld -zcJ4-`1h;8^u8Y;p+?}u@5mf5b0VNC5RJ4Wmkc%+`AGsQaW -z_TDFYF=VraAxqE-36B2rSF}O&MZ$H&*Fe@wH$ZnJQWPaSL_$Xu5e2ATV2>I@f~WHM3gW2`D9OLJN1WFBV(EH*9` -z_Nm7Mchs%+5)PW1*}(ORCs>L}ase3DE;E -zSA)xpTsMw8m|7EE>JS0%7)cq;F8H>(QEG6HZX3pp<4R#pf}WE4(nP+%Mh5p?87AvF -zhe&xA_zElg -z_O^9s7O8_so)5EdfyPA4J+(_`pu{xsg-6ks>G&jVrmnE^dooqXG#+Z=%j>jT%+SlZ -zKX-=Gjjm%m$CHcd3}aU1l=Q*lhD-=2Gk_;wi@G`n0p}n&{|JGE4&C9296KvS1~Bd9 -z=7XzIJwvE=unxxVI=CjyXUBf19Fb!rHip=l>b97mRJRU*)?v%Kr_mm%z}PGp(#GqQ -zDrcq5)zzcjuqF)8b3Q&U*oUf~&lVjDH0Av~qW0~@Z3p-ebjGoKrXrFym&2n=+;VJ5 -z{crPM%Z=u5w+i`Hg;iq}8%>|LN?JgKAgW^!Sm-t~ -zY}dV$QptdCqYuR8Xc6TiQt^_fSst{aqYwJ=bQ{S`pj%j3m35O7&*cWTzmAV|`w^wK -zex1`T=g8g8*oZVnNvHtD380^!AU?ofSBh#iTFWk -zUBcH3s2s|j^a3IR{QMlMTh>Gw^`NKJJ)9H36UG>7w_oCx5hsHSpRhT5y#g6(K|_m3 -z;*cStpAeBa+W~SR@*Imy`Yc7Mn5CT5%?&2A*Fj5HqFuQZP5g3kAs$sO!;%R`TG@H; -zlPUL^&uiBKtTz>!Jx}R2>9YCAJAto#z{o&x_8TrNzf9mW9nwt4HQPXNkxjeffC0$d -z%58bGDQNw^#@cCEI>vDnk6|lpW!TH>z$ie6!TKjj2lJD4g^_N*Kn9#Dy9)xT3AB$v -zj^?EbV;2o%vqXk=yQN}h1;hq_ZGG4qd3jeKz(ZE9m)~EfgWsu5ux|JXAlneXHWvd5 -zB|1`1;eOJD1U6Dh9qu+npLG#PNjvIo$Q62@Rs}P0pZM76I0*$~10(_-1bqxR9Sq%jGwWy8A|g^qdk( -zl9Wt}>;;Lh0?9-#@#pNuF;~>8kTLh38~;qZP-e|oQ5~!eE4V*GwD8_&Nr81~mvmU2 -z1ZyBb2OM)y&(1@29+6LBSIr1#%Z)GA%)9DZZ7(vzi6_p{>1G?QL);WTgwu^exdF6mi$K3u(J -zUpDksIk@zN)N8VdX#XoSt=1mhTVrizpVqOTk#SD;#Ber$>N<9eoh;v<#3X@&1M$yk -zSUZRGJ)_rfT*c@Ozq3WZglSpfx&*A0^-9ezo}ZCA@v0Xu@BvQ=odn73^f=+8Xq?4x -z?Xc)BqtA4ZejD0O($sbY_sf`+1>lh^7b6Qa$0frnBby6bU9?2GUFTm%Bn)4C)s^}? -z@sXe4LZMBuv)$|WG(oPQoE4|H%ARPySjZYu%Yy`EZSDlkO+Qw=0nHgn-N1k>Oxd~m -zgNeoTVsHOuU1+OR+I}6PcRHs^4jdWYTBX*63hJ(kT1& -z@VU?*#6D9bhlrMW`5vVUSWmaW2U#Xoszp~HsN)(cPOCqpCEyqE4*N;ycv#QqsK|7v -zzaoQ;OHGfzkruyv3^f0R4URee1f>2(0HFzp>_P_D58Y7_xyGeC>n<0dUHek{4JDR? -z1Nf?&Mw?q?NVV~rn8{TOJ^^TtU^`86m5Ufs@3Z6wON!pVe`T7VlZnl)9zar@@_S5< -zp)Fmf{b;)mzJSgjt_gGI)!D}UI~x3%G4^)o3-lLAS!bl^VkgTtz}OEya|(K`g*O=8*Z;&XK$NzO9<^Ry~Zi&Hr)!}y4<31H=6@NQ0Jgsif&Jyv-}^$ -z5od+6r6p?Az|;hYpDZ9*LR}GVdkyb3R#)RYeU+MQpo_`R!XMg$@J&QL#=hs}+KCy*kRcqV;X!c#rE4g4_oQ>nU}4f;XQm -z4r`1_oNe7f^y3)4fiv}+Qq&?Td~omH94Ui^j1TW!vVVpT3-HI$S%r6Y=x3;=p)-G$ -zbOdCklNu(~G$(a5=N?d9CN44Iw@p -zVA}1CKKtz@76=BWR?PV^N4JPOR0A4xSY8K7cG?horpK_N2nSI-p+NQh(5sR~L_|l# -z5);1Ryox_WN5XyDh_7;rq>RArO{3V{rV~<5#mk3Vh}cd5WW)wh)8-zEcBgC(4bI*= -z`$^7w050QT*@r|(v|C)1z}*}dUk+TFqqQC507_R+8TU)KG-_@!P4Wtu1}#zyZ6rM` -zli9Ff8mEaQXxJ8e?M9TEbr5lbttnoGZiLO8)+ytzaFYPa^f#zCvIy8bvzR|7NKmEK -zZn=_1S2e&8vL2w~5C$Ja`efpjq>l{J1+3U{X<%Kt;f4&i4h|Nw(OQw8v^wK_x~=_b -z@=Rxyhb_Nin=-3o$ZNN`Dl}YqB1E}(YffHsYh8!mNfIRSN|>Cq=LIcAh4xU9l3wa! -z)nPdiGdUp#$#G8~xpttZ@m-Lrsd@pKMlNb)FTEdp%$u`vp2E_NRYu3kz9YK{q{XZ2 -z;MMH|{UL=w_m7*1kGjI#=wQ2m4iykTNqbhmIYt2oP`boNKkJyk%AjU|h$Jt&=NQu|{sR%nifMo`IA>2}SeUGFHwSt7Quma~q -zTDBTW8N3?ZP74T~SSt~fr)s4w9ik4XbeW%E4h`IOgKa493+wUgt_mUr$C}$0$Z&W3 -zNZSON8lhx#ZqJ$NJ44vN+sO78CZ4W--ENvC7biyfw_Zl;B}JZ4?>1zKuwa>?+~GJ# -z^C9{&PsPaCh2~DI@E99yu@9W?TO}0w8p1q*Q9-S&C*w{49)=u6#EfJRU`5RTg0y^2 -z6Ch;^VQI@6Rh{^SW*>Yqhn{NIKriwNWut%Hk5q)qH~iJuNuC#L8zh$3y%#z-)x`dB -znJLmk1L%fZI>;61i(&ZM1#uW6dh2|9UFv!rYRkUw-3)yc27Jj$Y}m!;D-pug@dg6O -z5MP9>@w{!1L7{4{&dTu-xOZKOk@EHp!o5fXL7R(8>y(R0qEqYCJ-X$AY>U&Cl#`nV -z;M*X*FNZxASx;_8I2K?jE@`6>49muyo?yJ%FjR#pqn`nZYgYrjbB@J?#c%Co=$n); -zhf?B`bXkLzBAHOB7MphfaREy=-C~{P1E{jvt#eexr6>K9EH9)PEDvNc#JO`|Gf4E; -z4sFDQ$27bbfU=VPCcQ~Q;>5*5EYq6)(j1F!w_HeVi?y|j;sO)!nX?k;62~*wDGY8! -z#TlYFjJDpczx&vyF9SpB -z_}3D#4Iyn{D`wdNx;Dq^dL*2r3Fp#&FknO9R7&%zA7C?ts^{!(ysS$gA`B_1C5@&X -zkLX1)XtI-aoj8dD$lOB%(6ee2qvh~=LgesjZspj$O3q8~UXY%tZ5{oP_Xyk@W}!S{ -zKdM81G{yXAh*2SND2n#rx_pw$RgY>PHNC)(1IFq#7!wn+Zr-5~_6-P!0(5rGB*wnEOy9W)bs?t2c-=q8!9W3C!s -ztWEcu)xtk4?iE28?&>Z8hcv4;X;05c;pHzKsXQpzCC2m3IW52)+@;W#Pqg^l@N67$ -zHOQSdT`LdeNhwmXgtV=nR)qr_XixW?CWHWyHMWMylkF&$s>I}?c_447Fm|RT6%vUy -ztTZH2F#8q%Kk;VC<5N$Ilt94gMo$ZnCyN&l1o2zOZPRuOzKT&p{0N3R@kWuHFVTA) -zK+pi#$2~x>gB&3jjkJnW0kA}3sa9^U8sGte8Y;1Vls!Yl -zF=eUawC}&6XZjAzHfeyS=rB; -z!tgTE!EnXDBBW<@!VJq@u^;!5{a2baKR^;dxRGTWG4h%B{cnfc_*e0CWxS`b|vjF39NY(^locP~w -z27Z5`eGN34K-+yD_rw!-)f8`1fc%Q|Pb?x(srSAZoS2Y37w-IZtdM(9dRYr@OT=Za -zq$7jxVEF4YlL3;qI8YcCylAN=Jgw9V7muc}JUvMZ8a{nWy^Jvt{HNL7O{h(!*RIuG -z=)wz^w!zp|^&tk*KJdyD>XlR?t@MN#kh(&nq&v9Q@;w(MB~OJNk~);V^)hyQy$VfH -z#~ArYo3n)0j^0=TG~97v=?1O+q0{@;f{l%I1MkmzZKK*$Eojx+NEA -z2|V)s+k%K;o~^sgR%&UM;7~ZI=!Pf^=Z-)S<4BPM=v1AX! -zE3C8$s^zrq%nAf8B!Ti -zT7#aHsj&BkMlhAAjx`yf^rw%RO(6v+=Mr0zSI>yHWDZQ?+>MYAk|n12YISu(gB-1c{wFd#J2G|m46BCS+5xnX{N4yTr4F9gBd~%j_**uNH?vKxEi@ -z7)$xwWJL70|M2&55$H9WAF_p@abkw5ux04c;_}7~U?|RqCosOC%08OXMLDb(l7Pox -zPjf?K>+;{(z}S9pgDfWlU(3CsWO_z(PXW(vSP08PuB -zcK2}B4{dy*xv6%Kk-Qvo!i2sjL_Sun?nWm_pSi_L)+XxRfhpZ-ZVorK4ZVi)YVHY{+)Ah#vG&`fcY)cpM0wfA@|He|13n#+%4#1G -zz3KKNVkPOIhX$sfN59{fp_1(2GCY*ydUOkQ;)d0p4eYp7Of>+2on0_=H-;&p&*ycf -z|J<1k1eoU1gp1MZXago+DL}~3X$-pps9q=Tl&%1JV(}>m2tA9Wf_yqzy4nTuhvkz8 -zx~o+E;`1^TWoJ7bdh{2ZtpF&)LoygR`p5`{JG>y$qB=wE15mpZ{}{yDsqPbOnb;`& -zYzrQUy9-cg%<=ZOgd#xS11C|ZOd$4dS3tid>_NUSCqO6QJ{AUa^y-O$x!K;<0Ihh| -zZc%|0wfiei>%aj(`pE00Pj;gVucQIfM>Nd~s7FBL8D -zL?iqPu%!SIC%?GS#tDm217G!ms(%>~v5n7oGCYAKk4OKv3D|(Os`&I#e=3n%{Ak+F -z%XN~9yqXK-Z3ZNX`!tgRiPc8|&UBr5d2eRmVI{!Y6OCLHG7m4jx#gBL$I(atVQ>VK -zgW&*>w6~6>QX>s2H(h|avGxhK!r;`x5<>cvq%6}9{SF#Y@6J2_U=J85SITyCHjIW( -z7DKPuFK8VD9{&CP?^Kgmx#yN9T1y!594Z|`K>8CA>Q#aC0l0K+BMH;1mEr)R->SgL -z_$9k+fj2vsuofwu}nd}fwdmhl=VZ`z8GX0K;>uPQ` -z(X86FNUcKP2agJ6wDP8;SI%<`$T~gUS?Z)FPKxsoNFPLE2>WQbptprxF(eZlg+bjV -za6@@jBbSTeGpo)I!k3`8sGGpi+_ixMHJqwG&2w)}NB-#=rY@yrbC2l+fCLE94CriP -zFK_DJN6OX)0&sciBK9&@yr`4#5OxY&-2}I5v$Uz;P>{}01ar8NFj^S5qVA*h9P%v9 -zK4ZqW_nIss&=~WYe$v9A4;G_#=;IP{A)PcS>&Uh7n#BV*O`U1Y42!Xm>A+IvZ`YTQ -zjqvI@hr>55kfu>AB&R_{%SHXiPtX4@LoA^6bL@`qC3>p~G_c9{3_ns6Pyb|D-*}8R -zMm@sF>4E_#a2eu7otg|fuvj=1VG-LZENDdqKw4&J$&_TbB)k&5BBUK(y4?eH(MB0W*k4~<21w~#fSXqX)PTXZ3PkWqq4X2SIRfbICVI^O$mz2}g -z!*oH;LO_YvV99#_?E7&6oYh{nsI$& -zXGy_5x}T0V@COFrNCkWgX>q{1}Kh -z&s-3$RUVo38kU#^AX`RPJ&sp6GT@Xqt~EQioL$L}gNs~WosHP^a-@*k7?y41UV-`+ -zo2r!!O{OZVlGY7|BNJOF6lCbdT9A8;rXXGorqY -zV&hz8$@@XB6R>aP%fJ6O|NM^`OYKn8ksgCPgN5YiKyvXZMRAm^6lgwb8azD*_11fe -zciGB5i5CsXWr9Pm>J(V7zxM1RoI6^fxGs?J9yS?V=d -z!uLnPX0m8_?4e;>K$hj-=3WOFtyoE$zkkoXe}f$v`&D%Sf$qSi{|n73z3m@R+4rvv -z)^T2^OSn8EN=AkZZY-yLiEgp{_r3YxmVvC#JL~z5WncvMgu1~#gsBARGumj@^G2!{ -z3RnOMhgxA|!qZ){@ -zf1Z3QY|I|tYtxG5(=U?b_%fq!QCJXxPq~KlVSUB#l1~C7CVeWUzx;=;QXv^%n6z+*ViyiL07hV0IFNw`3&QXbh*&585;q`F -z42@-3(yb9{V;y6iO9$AW(ezi+A5y_6d-*N`O19%rDfmgB^2719z@Zv~j9m{HEO{u* -z-=upE4tmd=(6Cs7S;8kWNBjb3nKDCB^G$)D!VTFT$G&^)2@gmu;vz`N<%Y2t_JIHW -zMM@R%vPX#9Zn=x9ahgYSh;qKSHGbELMpAPIRx~=e&b7z1B??J@=&VsWZn;UzGd{l3 -zcB%B!f~G=QN9nRfEf-hKW!QTcpE)iWedU-EawEM!y}Q6SbQcxkNtv<{LSa*|89 -zxXTTLcH7e#Cw^C>02Sq#a+_+XP8=yON2tty!LY0Tx|08t>@JGu-d1Ln{(28 -z#xg15taZ$18h@Npk3Lco(W5L$Yf09R@poA8ke`DF6BnRbDL!rJ~;*b|a(16rt -zSJxneSU3>~{b1cfwv0ym?H -zc&zokqmxr0(%rbs5=uvQ`G%gxsGC8_D%^-M1&BejThHlJCT;;T*_!Q)Yv`^>F=|$B -zSv1%fA_E63^Zi>gfzfLorjFL3ftMQrk4nrtX&lrug!I}~r)@OApkQE{ey~xZ#{5cvJd^6N9aoQ| -z71MF9tH|4%3>$ME1~2LcQl3K?_#?C`Eo2`?aIj&O3b`2&JsWD`mu1%YN5lQSqP07v? -zdxX-SKb4J3G7b(bou-xuch0jS8YB_8q0z+j1M5VzDgQaN%ESH8tq<@HmY7k&E0br_ -zbf}QIU&}09U<@A+syk11N|<+C8T_J?%;kHM<>w&Ji8N5)MwznB-vR4=$Tm(1Gow7$ -zc)*;$4r+=fOv7QF$tuBiI8IQ9oT&UQz(hNLJVURb>vwoxFbb9pEO`#AMq8s@c|odC -z@pFwO(4b?3Y`*)g*ZP8}L73^WpfL=yKL1WMwTZB@X^|cafPz}?i3!!S^Lv7)SQmxn -zW76CvBs=8<(s{f_Jm>^)U3MNyLH2Z#4#>vOuj>M;+z+!{aAYf&rV-=1dp&Ge)+paF -zu!!WCBMZ5TL2w}SPEc>LV`yDKr5d{?pM9nQ6QyS_1B -zMdz(#p}KyC1O6bMNL@-QFD^<-*y8 -zXIAzX;5_qCo_dI+KrR*0;BD-I4r?e~#`v6BkxW5UtC3_-M6#c1V -zcg{EitgO4S4v13qfG3-Fe#G_B(g-g-n|4_ruiVo@p?pMPnkF*V_WSu)Ha>QBLj@=- -z%EN|U&y6*)=V9(S!zcoP(U@As%dRca(f~XFc*fiD0b!hp&9<4cdj)bl>?tDpx`sNQ -zs}!>egCi%CR6DMY_xq#+cY^4JhKWbmY=n6}(iBg*(cnS7TkjU9iW4W_@BOGTZ(=BG -zwTrQ(zBs5tuyI4v?oY&sOiHk#=kMN>vtmGgb_59|9P|wf6f}1A -zJ@d8IxQ`e@n>a3tjA%bs=BV=BcDM7nP=5}2%N&3QVtb{#!Fe>ic_E+zky>}hg-Gai -zN4*%JI&&uNr%GWapeFVpf4%ds2e8L5#w8BV}PP3n>)bLq>c -zwc=p87w+^ZPCp=5-^urx_74fAE6SPg6$PE5yNQD=<2O0ovm{>MzO(6It~kOm7$%C5?9;it233(_RA^WiFZ4{5$gqv2ej<;YPIN8Oj7-jTP_ -zQBfsz*q8UJeCQzT?zn1;{+y73cW;aHa}weloI{A(zbak{+RU692SXy|RRJY{TQe=_ -zW|gYc5VAdVCInl_^16}iRc!XH)d$Z(z -zMcS`9ZBNsa4SHiOGE95)H0`W)rVd02h^y}S)D!pne~NmMsK_1tvXaoaG&&LJ66)Rokltc9SIr|=^lzAo`g6Qki};;`2W -z@Cs&C^^(pnakE6m-WliusyHWLS4bK(qRfs-aYlv; -zQWNL>PRQr*)4|+NH&0xuL~~=ah-~2Y=#l$7A<;#0j*=3HY!0I5HrQ`30i5DFJ$bAA -zlTNGNLM9!F_Sq28V|SeP7eO1`Jq3+#^NBz1Q&^Dz7#LsTzHe+l#B!02 -zUw1#T3SntDm+S}HBx#P8y3fCL{pnCk-=u0PxGy+BefNwjZPcfaU*!6gfxP#*AlXOz -zrgzD8CCO7K?$cqfb@qjAnc6zc#^8| -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 -z*Jvx$Za%CGGz!G5SR* -zuzoIkR)4^DB6;^rQ<5XKf<+MoqZQMHIBN_Uzx?ms{})I~4gaxeF!&!k?Iruav2#ho -z4F9ImWrs?7&CF`LvF%Og3s4(hlGro>TG5i5Hw$qmRbUZU5FcOP(KV69lP@3Nmi-S$ -z!PQ;gnTNMGU#L5wzx4j-8lqI{&)wGo(R>Cj=k?DG>w?H -ze=Ypj*kI3&qApr2djSe=jU-dHqk&dKW6>_BaT779gqJHfUkXSZ(v;+a$kIq*9-2#4 -z=f^@)x~dkMVPL&U2=;#mxz@kC^^yt`K()ivaCEJh#?bd$#sCNljl -zzg_p~&&rb%=I*BPAmJm=SlVs(jk9zbNE|;)r7{*-TFE?m4r>LNUVm}S)+=X5Wfk=T -z>*=MRAC3YrOg0XM7szDG{ssR)EPrhxzZx(Un$7HY!Ua@nlk@=+gVMd7l8Vi^x?Npz -zY42VX3OMf-`H7#7F)v6!`%mv9H^n;!WY%S|a&g4`q1Z4i`VqQ-%3-dI!5gAD23=Rm -zwTiu=M=pm0>eBhl5)uvknIz(ePQ+t*<}H3`%-IRsYY3`N$K6Rl9+;Ri-9q7helf|F -zJE|snaR-Z7AbGYbteE0NznqY$goBg){}10#ZCzj#?6!)B4^Iu9>i -z-Dr$Q!=GFM9d(|4CO4HjMSiBZ3|1^!tRD;cUV4-=opR!Y3^ZADNg_xRf1OWhkw6ir -z2PK|N_d(D)UkJLF+Hug1S)uMl -z@fQ0k+%x>;Xa_5OC1Y^hO|#AvuiD7Oe4FR2)@;Hg_oqePOPoY}r>@rTqQib{s+G#J -zjQvxWJN#7t1hIyE%Vr=(H3yR8-mxSwy7)TADVzR0=dJenP=?e$T-o$oZ|JQW+#Owy -z23qG!{7*i^ef;?&9*h6vBMjYt@{tVYpFfl#`cJL|BmSQp6XW^kk8Fhh{Hbe@tozE3 -z-(Jw#*Do=9i}pRXP_Nh?CL_W|N6w9oOmon$s-AE+ig)~4zG^R@L9!anTkp2?LEkyc -zh~$uz`U)r<7L!?k`w1_g_~N6zL^5uRF9|Rw+7p1OQ2q|G)Yc)p>?*L-6vyT&!X+k} -zfK-Y?n<;0h_GwT3kI1`b%meBpjw -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 -zjAc~3dwl3q3{mncTqAR{M~HzW -z(A?diWn6~LZ3*Df?-d@j`o(mMk<(IE_*~ddTF(4nhTwa!Zat*QniRZ~_2*)$@s(om -z779ZQ%)qI_lj#@L4i6}6RhqaIIoUZFyB;GZ$iq}GpKWK68(GgB01qo= -zfFu^Ng?c_-S?cv%v@Nf9ZRH@-3H^*zfr!UYmswEqS5vzR=SXX*`6d~oc+|N8lst?A -zb#lbJ*Df)ee_FuLeKaDGFmXAbGElq -zbQ5O__!^G)4GqdfJaCF-`l#aJ96FyEUfiRAEr_dIsLa&A=mhRz8NZsJqgf2PJHZ#(L(n*19FPkXpRs=Cg@BS-jA?-;u~`1P=O%~AKD_)y -zPrPv3w_Al=L2hZV`MK^DTe`Har=#V#A@?tPCdwn%Br`eUAQ+=ovyyP8H$V4ql?9iO -zzJ|QU0wv*+G=MJx{DAms!4s<=DLo+H)MXfZUerYpfHy006W_RU<<{|~f^PL=pL`Oz -ztwG*fJcH{*_y{9{+R9zdj(W5gW%+V~=(eMKbE*>HBf;i~mh<&c=Kx0NIVB&-qpB8K -zc}m_UHx}a(;XHgAAKFFy`*qAq)#Bb*Q`ADt}jw+T1IUfmp&`K+$YO$Zc1W+TYm4=0&Yov40DxNM+AD*5QLMr3|y#{Q&z#Q|QU!O&TL~j=h!+?ZZ -z*-_o#=5klU;1S@;bWcxubO05dmr)$SyHSTJf-PB{wCRLIO_?d?jdxkVAsO?%(hy9J -z9N1z%!z>|Rs&l;HA6H9pf};Ow25N+r0j@$hfhb&F(^WHG402V)4$F@TBUsMP-@C`k -zKe%LPL(oyBE;o$V#fQRneKH>Feev8u -zt#KuNlxrXRY|Ya(F~azA>)k%I>EqtdF!1lg21=r}yp0h(@c#Wi=n5#<>Y3o~ZNAd& -z(46^`k;JmiD-s2E^8G7!mYWQPON+bA7%qbUIOC4M=@3V^pmEP;oF&*wpDzykSQ({9 -z1y^yn?&suMtzeZAE?$~PZW#d+ecy`_pnRHOI=DI4O_w-zs#ct5TMYueefezVduN=c -zZzI@qm$jH(p6}}IQ5aUS62$c~`Y_WMv!7ZLNy~LQW}~<)C)P{jXZ?P>jT_*yQ9?}c -z`B4t^@Vj`tEuwKw1zQKUx4O@>+BeK5qN$R!!G0c>8hLpjv&u~^p;E9T72*J5%)m4N -zQrFA8bxX-6i7kZ#%ocD>T>%aROG=mr)xen9tvtJ+XsP7SWq;n*;FRtROjCEA8Y@0BgLFsL(ydVf;G5HnLK=6kot_YPC^6GR2UV0_9EU -z5)@xkq#T{i5c*gOm$DqqLAPAUX55T;p8~VaC=C$Y6hATg4L@;jkW8?5z9=IJYV*|R -z-i!-ZOUD(L)YKFGayFE`p#f^sEjmS|*wLCx6Kb&-_*5P?d&97VVy -z^%UfS>t6>Ph0FI2az^w+vc#=4)-teP9f$CGIn`Cx_2s`ZyAtRC(L7Kmg(oKOOAvJs -zlna|#M(%hf-U*hFgh!I$F_zLolF!#eg1pfrsyOVFkMCstH%@PIODQY-LhHD$cf%3z -z=|I18-lV+*{qlg3Ci+X8S+D|=p$AYw(YdXvQP#{>WET-!1Y>;n>w9fa>ae#CD%InLfePivKf!@{BmkD;h?I=Xr( -zZ_eC*^- -z_jJexj0QvHXb=2w_x<6%w&6=tE%LPr5P+<`l&^%YV~Uo5ykW}ZYoDz{fItXaioDx*N;z;Y0-qIPFdK|&K-Zckg?5Uuri -zXQUZA3TZvwV#_3}hA@Q87br`3ff)7$L?Y8^{63s6ZHID9kOo3BH!V0c=fDXxJO+|_ -zhLy1u4&RT0fu!p?e)+h4*RE)mYA-(dbV%k=4`?H4QRmiS=p7(M)+*zM01k%mb$EOk -zXfD$hGHhQ4ycPLReryIh@;kZ$_D;VA<|`-EyU}QvMh{p9n;9$}SqSu?sxvLm^p31X -zp24Wb`O~lY+g_Nt>@~T9{mvi9e%mP^-M)IyoX3b~%sO5ut!MH-O$~wOjWqS?Yc4q} -z%qY=Q(FRYGGv}YyyW_GRjSWk0>3*w(gW*F)h(SY(u-kG|3${2MC_%Gy|1+fAoy;eN -zq#2|N0?77_$dG)V%FR5H`A@BoVE%hFr?BXIxk3L*d}`Rt$%I6!O(ne7z$OL=F5Xa -zyEpLes0spSCes@*d!(`qaa6f|ES`~`4h#|*MT3N1Nu|Uq$Z=$-uFcjx+^*H|h3#^ac_+ET#7mjcS1_1|HAhJCk$#cO -zP-rs*qZ$BTh9yvEj~nf-NHL&UViVEL`!K2++VKX@*$U<^G(a^-?3)B0^>8g}Yj`p= -z){PPAe4W^HZej_UYZxV~i9;G)H#Ro3N-E2c^-Kkqq;m)PRdTOP+ua#q6$Uvw_yPtb -zw^8JukAieGB3TP*;YtSol8nZd!`7-Wc)xx_(5aSd@R@3{OaNNddLlGpm#94 -zF{G4so$8mzJhM^r$M%|fx -zcLCr+e#TbyCWIkLlDwz=QYJW>7AcHXuZGM->3|0}Lhb=6CNqq+AdN~x9bP76 -z7w%O&Q{ZvqZYs2ATj=2~=xRT8!1rX95Vze17R~^@xQ1kiFg5hyruLHmbYtw4tv=dK -z!3fmdK=Xb>|B@Pw2ZWC=Sr8~wT3(By;uF!cwL8rLi30AQh{ts4$k$u@4fI(lK~Q-# -zO@+dtq0^b-3-<)61x)R7hA4(1f(xq-4y$XwFJ+pE0J$bOKM>w8)6ZppW$kP{p4+V! -zs!18LleQtusW=(m23-!_QDPTCY)Yd-e!f7X*N3ZUq9QYLCbw;LpwiQ@qeg-yZEO@u -z9bU-oZ0C?yMRi@8DmOP24&n}Quww=Vj-`unbg37!S-HoU8+sU#*80&HNGUc4v@176 -zfJbU5dP}QBcRtY?;l8e9;yxJbJaMKpWLA}c7Q_OT`r%fTdaK3mmPs*`mT%o@0<=!( -zJCJmz4c&5$`ygvqHmN5A{I*{CcE`$PhQ_gABq7VpoZ7}_H(@cb0P>VuV&qH3_5|gK -zlR3sRtm>cN)?eSh=h5e+cy6GfQAJNYC;da|odXn>7uyLL#N7yV -zY*T6WaTXN}e%{<>B2T7id>YdgNta~GU&ThqaskpPEuEY6EPf;cgWMSh@*_Fg{zP%z -zNLij6_f0A@K#LJkg?b(b@Qn{3aI;t>KnnVFLl+#jw0VnqGcD=^v;&bbo=DaygH -zg~}~L=3y)Nff#nh>lnR6y8Ndt?{nMZcDZ8;=dqDlw&v&o`Cq{*+|fS3Va#5=%p8-+ -z=@T~}10T(0Sbz5JsVtgEINVZW6DKIv=Pd)4=k=F;nM)1Tt_2C!8d!j0Qm;O?Eyeb* -zQHkFGrXK`k;1Sx=Sgt(^J2ODJw~1_Nm$h{$C_|f12ACervp$W^(rJjtvz$CBlY^q5 -zX(m6;XG$@qPzS)dGxmt~fG>;q*o^CoGTE?Ag -z>yb!j&~So!L8j9F^p>oU{Rw;lOrU{hEJr3MjG~Y@0X?L9#15hhPSdO`iK}zYRkpQ> -zAl%wB^R65@(7HqZm+Q(mLklzGJG}s4H$nSpM8YV>1#Z%+T=Zluk(tMC(tL&4T#e2n -ztOGYV)v4JXU;f+Q%|4-FcVm^L)x3np^Njy$qMYP{EXKFRG75a@Ip+fvspw`CKNDLW -zm$V&7hbS70b$V^?u*M8pNaPciS-|y(8*6|hdAM<-jlml;El;v*8c932ZeT%fX#2fo -z!3#H#TV2uxV)k*QzpvaOu==44$Y>vU+0a$ou3Vl7yU*UlyX@sOd0wu9^Cv89OrDwA -zQkiOF9W`jvOXyQ}>ACr|w6+H=02Wf1qtr_6Et{RWrNJQ3MtB&@(gz9lg;$Fi?QZn4`Z -zK({;XtDZSozmM`-M4CTnXwvrs$B>OR^#Az#w+$6iHBZZ?C@VCvK1#259#E+^r=1H! -z+Yz?%ps7beQf9X%kyN3z=q$@9_O~VkSXo3n0l)@rkD-a&tfI9BIaUp=mkS0P^z2h^ -z?WHi1Os7sC&|HPDi~=kX%2#$sio-4YB$J2U=)%h=cRJ<^Kfiwe@w4dQcJ5 -z>)mP&Q$`8oC?}$nHl$`?GV6_c!jlU$4QY0MIFJbG#=hLc=N~eDgp5MJ$Xu2@&mT^} -z{EXH%Ygw#UR3ypD)a^8eKmR6;S^>p$9>%-l((jJH<$6B$DGQQJReh6QtUGqZ3Bspy -zfG)CZ9RVIFgN=%tp{Qk54AXeBs87kZIfyK>=2@pgfk~}2#UqC&E4=h4bVKoCV -z;vh@PDkwFu6=d?`^oUkaL|ay`_xOjA=Y?ykQYT%dDZ217(UJ{4aI$VwG~9y>{)IG` -z2k=PVWxVG{G5{eV30=B-fP31Q$ZbdG1_uXHeFuDvkCg#RdbaO+Ltx@eYXru4O0q3~ -zSSAsUSR&lwBQ1MZ8QH_&Ky5evVF}Acn3Vl;2{OU$0enfJkEaw7PC -z$fTwa1BK{%-?jo$4_bz`$4(;;d+)-W3OtQFx*0)Frpsb1AlcsZ*sv{uq$L+&P+~T6 -zER3^R@tn2h!Fx`hL`_Z8ZpmSW*MfDBD&-4)l)b&g -z1a~+IzO|FN>QN%#^{8`=IkNg3?5u!B=0yAb -znd+TYEtr|3eHto2MZ=hWr6?raJN*rkDK}=lwuCI2h?4LdxVw}5FxhR#{kf9*Z7yw+ -z%L56SA{ll5&M%6!ZxI`9s`o@io5{w6JxQt#43uRR+D(~qS-yc~nss(haVqHSwsvlq -zPy_WNvU8EiO*H01cdd+$c|08%EJx#iOVi}8ITW($V5<+a32M{WMRdoSW-HkU>xtCu -zmDN=&UPLD=_Dc1F{+r1bTY;N-y~AWWQSscTdmLmfyi$s--RXOB;~fx~b!!HQ`C=~b -zG!aRz69!C%X15xY;N{9{?nD7SoFSiTvipFZ4w~l$MWoQGtA6+VDB$|xp~T`kA4l8= -zr)`-InM+3*sM0|q3j{wu@RfXVvYqh(`Ur`2SAV&a7dV-I+mHLWY5Ra&(2oUM7jJRG -zf+A`N^5pi;4@`!_df91{qA(w<$@m*UmKFSsyXiSn*E&s4&fuzFekcEaeZ) -zw1=-?m;!KmJzAjZUX_zC`iL2qdV_;6GZiw~?7&Gmp9Pkb7j!(&2-Me>1#FFdGK)EJ -zY%hbKG0nl{8i)Gm=lPxGZOVNLIPX7GVhXn91d2eOY_Vgh))4lntRRu&I(kd-W -zHNxvPG6iJBZX#4927yKXSjIEMS|mVF>v#M0Q(YnQfH=&mX{|4R2z8q`jSK7 -z|La@1*Z%zLo3g2rzfhe?eK*S(>mJYhEB&~*PP&!HLf+6;3Ns+i*111cQcPu>%=$gO -z-~IfHL-WM#xd3`1pfkrts?~m65y&X7xBK~bU007c;nfdrAuC)9a!a$a73+_s362EQ -z_DKG-t0vs+V96yp6>HO4d_iu{=@#B6X63$r1(2fVyP{3%pa0Z}zsiLP9qT$+LlG?z -ztaJstEj2j?3Ik1wZ&39nJ7vYqEZfca@Cw;nW{uxZx$Dc8o)nx|m*_ih(~nsIECwmcH}ptcu0 -zMr}J}#Vdx5r1t~O$b^L$gEY?;aCZ78W3Cp{njD9Umv9QWSI$=~VNIM=l14|jqU)xp -z1r}*$MHSj34`Bn(RHJLVaKBMj7mwAn8x($sd*F>O%@G!vAqR3z01cHYPbzNJUatiR -z809LiC%R=cDFzAknD46iCQGIZO|4~u!E5Fg6#jRGRhtx3%EPfB9Xf~Uak$LS#>b&m -z;Iou2emWNCYq?R#!>v{ZFRbtpFzpFVIPxVLYY}Hr0|@<EkTsgxlEaT1#Z;Ko!CbdsWcxFPh!# -zA3VU@p{p1k14;?PIBE|P5&PVy6g@wedatVB!Ns7rgD%b*ZLzW?LcoC{m}h!KTr+X= -z?5!nyhqq^H1w|Hc967PBGtzPN$4?2qghg@Ev#WyddIcM(Ex7=j><3c#5e1Z}AeCx? -zIF<$*t#9BTz{5;=z-o!u;f6C&Fz-joYRFvM`^0*KxCkouYfhP9NLb^dkVvQ9MO4!h -z+SgVZE==w*C4*rE)*7AMhK`4eg!%f2PbPxM)$;ME-^}_93HQj_0+2eeQn&ck5F!|Y -z`YaJjKd@D{6d+s1b1su*Nv9-A=-&1p48}@3Uq%s+q2c1s=$e$%QOGVC%7hd%%T+vT -z9)$y?V>~lDZ4%M|%W+(unx#A_h;_APv(W&Jqe9J`zLd)S&0QBQqxbF!@IxC10QYsd -zKEQvbV0m@*Xg<@;F1bw{u!Kw_HSH7f;T@3sQ+m*-=N8Yo-%-G;{E!$>`LTB~>6N09 -z3_nyX+arJlEt{G-Henw#Bp}cRvXgOL_j$Ev&N+*_>=}bo^8&CeT8?RrxW>TU3ppVm -zpXRx?UA9c}>1f^WhPi;;Ihv@gYz*?w#d5EVH;OH%L$u%tm~nC0YD#JtY6dasVghY@ -zvLa*chb5k0TZ928ayZk8*dy&13u~L{IAGM|;16s4sF)j?@hnxjanL58QD{A6n{Ua> -zKqor(6i^s_vgobtsjwOVY2RUYJBRe0`G2zB27?ikTYe9IGpjD%t7E*8LO|%dnp2C_ -zZb=dIK=(OS=j6}iK@0K~G6tCD;Z$UzHuanVD-C{gSbBZc~D -zZ*lBYD9=oCU(gmq*6mE)9yICkJSkLZ6@13ZKx=rGmOwoMs6h;@1FD1hSh*KDnN(Iw -zNa;MB-&;lk>KWFrED8~Pw6t^)(C|Kwyh)<2g|o!UB*JaNrBAWVuI40}e80!He -zO#vQup_`V1rkQaSjO9vu_qEb}n0>JfYri*STsR0Rw)`Qm*t)|e=BFyL_XFZUUq}Bj -z&NMQ_$6Cb?Ky5SjQe^@hDjdlrt~Fgf0fJK+8h|FTPSz|o%LrN+9XinE^yG6dive8( -z;rQlhfg>M@msD?R3b%?5c&=4yxkhS+QykBnnSMBQudh9OkUG_dnq235v81P6C&L0V -zbGM_im+5=}YeQ$XQ8}YiZW+j%*t1K5)6$>=MdDIV8T|+x1{W8)3?^cdr`$Vcpfy}W -z>v_k=-HP!?v&F`%)q0oUB!SsFU4htl+e+poxgWfLq6$_FTu;-WPm93SBS@=3?;XjS -z*e_Y3V5nnO&y$N})uMc?O0b>l&3o^O^mTumywlWxC -z<^$eu3N_aCjC&roFxBVBKABg?UQe#ERm+a9prVDbhAPncHo?drJrEc`vPlc8*kBfJ -zM;^`;D0UH;xTSPQDr9rzSvH9=fCitZ3Kra)Vr_^N(XS1QH#zcM0Gk>@j=X4V>m%a% -zgv49i4De?E`?5i?+$QLLLR>B#nheP;T(^uwF1#xF^FW{Yl3c+B_6EO88N1lI%JSy} -zQ(L$tJKz*to$Fs)kM)}zD_5;(=ao2MF=6oo#Wn^2lY4Ux8DP!f5VQPQ9)IKiCBJ=H -zL|HP=Wi|xJEZu|c_T;c&g(YmVd#zx!S5@IJs3FP|n$5M^xMe!#JecOQLFN%n^_`YR -zC)*Lj0cC!HY#x@`Lbi@>@+A=iM-*b}_pO+OePoU$^wu`XBSF8=d%%np?F_%Pd9*!-UXpo-QF{cs0>6BIq2*vwQPDD$})4(C4dAC*X*K#>=Vup7P-Oy*+ -zK<0h0XNlAm`9$PNP>j^a!$ztC+%mYy(y2g^r7)fMtTa4`yx>V`BD-^(5Tltm`7vb7 -zp#wcn>Auz@&mWaUa9YG{PPD>n0~g-l96ZQldsLCY*Rvt2G;a8T!r0Lz&zrpDwXDI@ -zv8NWh(Pk1rOm3Gjup%RY0pf|7*|I>Gi!#U()ni$CPp9paZnsEoa`mYwx-te5M2B|k -zfoqBh1u*VgQg(G8?g@xMPB4o0iyR0%D!sWh?ssvHBOYa$H=;Eoy_~^ggZxUd>R-wQ -zc9<9>`7hAQW=5+69^@9&;ujW5!}5|(i$_FmwdLqW04{0J%*tY^(D)YL&=t=8SGF5d -zNWM&I&QPo|&@{?hy<2)3@N6vDx8~Gh5sR`Pii>e%FEmFNQ_==`;hYC$asoeKLD9WI -zwa2RL?SAdSC!;!5re`s0KPCePQiC4$OUR|r&eNyxa7FjTG4V#Mho+q#(dOX&I2#Ir -zW@~E?*=!@KC=sr^%ZW0wI^7x%n{68m^wpLD4b9BT>c#2OpT}&7^pE=74D!S_7-HZwFNwTFI*p -z3Ftoi#->i0ZV^qQj1QH%gBaG-&ppf -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 -z72bO5#_5r#p+!a8$6x*{w>^J}flRn0w -z!)_WTK9bC|gl71F^KmTz`v$6+ayXV62+OR+^40(2n{9{@Krq^24bkv{Sx~hxNm-Zu5-Rr^JK{cQI7R%WORq?GBf8w$RM5)~N_d;TjaR<3!=E!O0qm#v1|c -z>yEzo!B}}f)eC1cHB!=|+%aNb!@w(=wmRAeZ)FTc?@Al*`@73Nj_3QEeg~fT{oT~x -zTYf+b^~T3w-{9qX_rOzR8XaV4Qf&vuVNH!uewbXHTCKh|F<~*v-iIk*;Uq2aurAII -zy*s1zk?d2~BkfqoevjR5*t-yWlr!Q;WBfo+gj!!zhu*O&M7b8r^cuqy4(lcL})^z-~8u*uXo!Jc;Q`&;4 -zH1+lIqmx}#)?NfJG@9)OYZmk`T-}at=Z(cWy!enHh3zvxcOT{-t6?sY&OJ-^4jOE_ -zfjdAj(rSyQ1sP;HnBrCGau@|FM7h%O7IA*#8J9;dJDlP3*_Dc|JRTV%3aCu5=;gk| -zoopm<74Qr_Ep0H5x_ev}z^NvEYBbr5xe47~_ArG?B7XHX`p(oD)gI2*VBNt&SkI1h -zXqn|gEeKxvr!%qRFtYt&qAGk_l2`pAXSA -z>yfF@KY|h|nX4~YB3Pr7eiv%?v}$kbXaqU2xszi;OXTZ%|8fVciX3M8vjy2b{95`O -z{m)&;ELegAl93u2AEfo|d-&K#4tKH9NFmKIK$4T{6jj|q16T_SUnr1$K^7a^mtS2Q -zB2&c~jdTRtr%q;atAyZCy9}8pH4_{Ls8=P$2i7=P&Z1fO!;^ic$Ym@{9jJe=aU~$b -z7L6kG-O#Q_fuma%GbE5(dE9UK_SpOc4nNTPTZ9QzcPZcs -zq;@lB!Z!}(|Mm^{*^t9fZ>r}&uPKCmpjY9c6H0gQtSoU66#z90A7>(_`162MTv8`H_DFiWKP?AIFWem% -z-P2x9SWdfMDR9tX%RMd**|X%8ama(_JFdI~%rr#pHDM3^RRJyjN+d_8@U-i`h~z*? -z{k}%z$kgeAu6(qnKLL~Dh~fnc5yoiX!R!WDnS=bR=1jtC*xz(qq^OXfU3>#%Q8y(t -zqcb4*qNv#~>3N~_ED)Vkvv*SgmJaI*>EM$a->tvF^a2uR1FDEDt&+7Qup4DvP@IB% -z=h -zifA)9>%M#c(yOGEbz7y@s@v@tbn6GF3UEHEK$QCx4#?Uy(LmO*S}jWA^WwRW+D#0N -zke#miWmcYU(-oJ!HVHx+BYyd#LJnF}AV4|i*&qXTLa`3hRt||&W(hNe&pCn7`GbniM(D5$3;+hm?xsS2_FY-*&Tt<`nmWl2zfKfwd9I5t3H*K`@KTG8L` -zfq>(_Kb^YDh7U61q?7|(Q>iLiq#uS$F!JMP{yR5)SD3kLHCS|J{`n(0A#v=uYZi$r -zBjnz;v%-JmjH&k1EzvxVc|Bp?N0jJII!uVjD^>VzVU%lM4Ufxf7JgBGK;KGzof`r# -z6r;$ej#u9=(VrkHLFa=VR@DQwG)VsR%&g9PsC;@e`6*y; -zmmvYHRJntzAVM*Ib3b1CnAC)%cXaI2YeoXya)FRD%uH%0j|Uj&;B(&s^b>9z+rbSU -zLsv}XO&WqFGB>vvyg^{fXl*-WQl}Xd_Cf3D75uktaA-J6mtE-|#)m!ix7Gf7S;nCc -zoA@iB>q7?S24=(|C<4QAA&0MyGZH{&B0@Y?=s#a-o$bC=#>s-78**JZNrW$>>@U=~ -z6q&oK9K$Lt774CKHQ%gQ1sw}5L3kGIKz>xbe=JB2e>l;%z9`Bg*N@YPxry -zG$IrNy7{anda(CiG?kDxE#Dhr^Rjd&qDT~#22FrUBJ;kGUvjLHHI=uHCDydO?LD%v -z2RWzr$k)O@RaY?#JEvKJfbg*VoW&w%+m*HYTDI?`sLS&59jYl8x@0&VOBopkdwLb&_mNRkw2CQ -z#XDJL-lVA5@H0bG5P#^cCMglN6EpjyEQgXPde?0UL@4pB!0xtyC(GvVP -zR@3*tMw<5Yrd#&dh;Sm5n)!s=k^vs{_uyZzoS!qdEq&4FZ>}D5;B@foe?X7b7jZ2s -zM&u4Wa?hbmu}?YP`$;zjG+USofL2I!^uPWI8AM+tUPpWkX1#PkNR{I6zjZqx75Q6B -z^U#iPdbad*M)dwjA+G@i;Z7SBbMEC|Abd2Rdp0KW8H(xf@3g_BLq`c)gzJ4$paIoe -zj^g0eVl$b$Tk`SemGuhp>Byx&(hE_#G6n-AFaWB%p5X{QkYwzZ9Sh#rPe5_Nu@Uzh -zj3({E7m9EQS^A=<&S;LlR&gI$FGvovagR?M>_JetE)oVs`eqr77n}BEnz3JF(*P{Z -zZJ~>0oKdhixmDOFjR#iLZE_0-jm>K0dMu}oDXV1L>HI5HA69Pa?#;JfX|8|=X-WO8 -zv)>}ntV3e-0L|6piXhj`b0$;kqDu-9$d1u2qv(R)yPKs4_nNk0-Z<_QW)Sp}+?Ou$ -z7wpQAzN^Dxnu8bzD3@Qz=xDjD1GyFX;vk|~yo9%mv|DTaFCE<-$lU208u>C^0(wE^ -z2aNZmL+WKTZk#Opzu~aAC2EfWcZ{4gUfgjmU#B2;DZ0g2Taq=ScP0y!FZHNZ?S&{} -zPZo8~4IJ)pck)H@e2rT#w0p+$fWHd?Y3};+tU}16a{TzTV%EX?8SS+Ni(1uOr!B%n -z^3;nToX8b6_UY>!AQq_?kuo0^;ew5cjC+zxXQIS3@Rdi?m-+a#+blz6?e`R_P-r~0 -zWS93PN6hfcS)aRL>4xf9ws`WTw&0l6eM)rjSdaC&ObsSVSqY3 -zO~=6+kwHwmxb>21)XWgN9ZbR49h2+Qcn+M0Dj7LuGGnNnsc(w`N`31fXr0bNJ&o2# -z1H)#;kUkzu>YNpstHVQXSOLT9T3#PF?88+rM~hwxHRby_qWA5?ofrBLDB~EOsfy&y -zmGtORx14+0e_i^z_=d$b#PgsyCYQ<4WIM#lYy>L*BhB=!_z8IBrW;&626)R47c`1M -z5G*fjRQH!K=Xc0c;zSm>bGDWFYrdL-28uF8pZLBO*l7OrY=Ez-tQ)I3Y52T#(t;uc -zRUM8 -zAk>1E76IarON5>fO>vF`khKRkd=KGN_vcCX3sFq$|x``6@*G%I!ijs@#Sp -z0}NQ%J?mu3an}1j3?S=Gjb=ZVbeQzD^=do8uYKXjKy&sdD=fcEzpOch4de!&d5GHqr^b&Dbi00NZ=rq+~MIw^;sVRIcZnF4Ok%&Fn6ZvB|9+)0bv+BNysa8UFk+(@eEy7ApH|R5LNE+!HUIb3hKZz_9SqRN@ -z4>(XC!y1#WBL8e}@=cHN -z2m~3*asrrx9H;D(Cb^p#|M?w14i03lV9^-7`T*Jt_MnA8QFQh -zeETdu?C7paa_I-T*Ax@c`d4Gx>?71$V{2ib_OaiAIH!1Gx?4VVp9khnmd|hVKB!sr -z^e_M#5*a1^d@UR1X;pV7lKe!a9wH4ep=h<#Is6cKqNek^wU}B$n9R%BQlbpkD}5ep -z{|v**7SfN*Uc+@2n{W7?J@iLdwjHTU&`OzBYWd~$2cQ#A{qlw!@RHa`0A{Dti5-P- -z7SpvOqI=A~@Il6N>IZ?TWd`@hoSX&lk!%l}77)j!z^j-x501L%5tVVBf6f35KYTOP -z`a8*y-;hF~MUlu*HjmtTX;f8&5-O+Ud@|Fi)?1VmOLlk11!>WCb18}7Qwg=p746uqHj -za_|DV>aJ69i-M^(9?6&-+VBZNdlcJgkehOgA@{xjKNu)FfBxh-zornIQ$3)hxRu9P -z98+7mLG@^d0l9#|U%nI8BCB)GiNBEZM=wsNg3kPD2T&lHu#k`!z&{PUY(n4vDF7Y@xnuKB%vf>2t*d5M%@RAC -z>*8dJo_J5ipF9g4fJvOOl&Kel)$JG$7qNO(ak;K;xsxEkT-Qul!Eeqz^JOp={Ge4_ -z`6L-IoK}WDjuzT*xqF?nZKjqG`hSdCr=-ISJ96uCh|axi41__Qi*~8Hy?93Xf0aa> -zHOkfo)M&w}2@*effD{Q0Re0qd-Xk`L*`2XTA{$UK`McN$Ij~Ab=oKM@YU#8cayQ7t -zx@EnevR!bQME#U%Z`h&31i)6YFCV)#f^)w*+PI?WHgUbj4Jbk8i$wI4RGyH{r-;LZ -zG0C#+nM6O%(Hl9_cUA*)wT+=XEK1&n< -z+2|y}q?X2{jh5U4tINVICVbZvQ6PEGxvT|!JZF}(rd9h00H9Bi;^PjvoD{s#(nDyM -zg+9mgBUUH|CMo9fHCMODIy4gmIttb-;u%$o95=t4LxX`K*vm0N^RW_-cDk%xfAvr7158wt9!`m=P> -z=vy5)giHfe62h>9fKMh{N&d(rDqvOSr9pJ*rWX)y0}?D0qxG_X($ksO+iM?hi|2XP -zc*OEMmMNP$ro48iYeL7JCo(BFZ{p-FOY1uPPC$@kD-m+inisYd-L$8Mob*~BRvWe( -z8Iv0@NRBmqx%bF`v%bc`Ab&>mD5&`;6iyOf7!84q4qX -z(0|Aw(DmaMvZJoDG&;;Ks6&OsPhiiQmt4qCE%X$owg59Y;mc)QI5L0xY2qAotMdZ* -zxV12_=3`VdMH6KqT(O}ofea&s9(TJbnM(Z3zgHpK14L$s7s4x{>qmepGzyZLg(q-NQ_G%) -z&J2DUL!JvLotTse+EcaDmR_O{sCGr3U=1D8b(1Y9?<>>zb%&BjA+hH212WznKhrV+ -zQX|yN&g~hQo()3&?4;OVjClI?^L!~vE-uXSZ(2tCBUPTz?=}@cSeVREXF3k@d}w}I -zrebF9LQ5w$IE`Ixl`ou*+awnH7Mpn@qk>!6E@quTJdAx56*Jm{Kr3ST7r^ovCP2;> -z%F>1!RiF5SMjv*vq@L>bKsWM)voSvNE8W876aHu(1n0%x25rlG)T~-S&lIi`zlY$x93HeGu)- -zDc2&~#jPmEf-J=)ZxkEDcCykFf>*l?bz$o0S5V^Gw?W>y#%jUC@9oVnb_p+sR^pqe -ztiekWBvk6f<`qCzz~H85YzsVqI;+FJMs-|9@;@o^0?c6hLJ>n;2M03)puZ}#krAHL -z<$ZvZmEt$iCJD(BR~wm36aA$z7T<1rklPkplZ)a86WE!%PS7pRckWY|+>VYjRB@PX -zz2EO^bB||; -zQA~<Z56dgZ;VGb((R~1)sk)ASDn$abVix)%@~bwK -zua;Q8n&O+%7Mt(lx0hGTp0Gr?9Qfr+h9}W>dkCtB-X;%%;XW|AbDYsL5|FJ+jLjI$ -ztCr>n>}eJS*5MJ=MNmKD1K@?1t2ox>mZUnhnlfjcPI)}( -zSye_kMX@S8r^TeGO@aGNF*7p!dy?#;?S|N~l<;UJejh!e$rJH=H7iD3(Z`hls*?f0PV2yILuBJIFvW6WlY -z7Cs|w>5(v<14p(%|M2RN39a&Mbf+jmg92MQ=i~?q1z*RJt24StR+Y@v=!@Oy@w8_6 -zFPnR!3d6GQ!f;5VYJ>Lu2Qa++p(CFMJ-cLhemkcfxRZNSs`*3@pB2yM8Q;cqr$yJx -zNqJDJ)GZ;p^~LeXS8+{G&budALVIRl9 -zgq`FSz-Z)F+$yjol2N6{Iw0l^(!7;>GErfRz^V5(qoIHY3TpVo`lqZJnjA}k9jA5w -z8=~o%nQyLTM?8Xx=7|6{lMsW_bFeC)r>*;kG^Xv`BZLCi4XisZEwg%D6~pi`(~IfA -zzp_cMkirbxTelwzN&nshUE`460E1kj69&U0fFsP@Lwi@)3bs}0z!@ZUpcVl2G}=0h -zvHjO~vKnKQEUq7TB=w+8ga##^K|s!8Rm`PHw~bb$3GgFpIKLDBhT_XE -z*aJ-gIm9&ZMgzB54&LnCGI3u~E)<$9XG7BoweOWNo4e&^ -zj|gT`&b0W8Qq}hOogfb6^P)UPgX(0>4KS@c -z6iYx_0{%m1@kN99PkSVKJp_FnEw0-Jcer+@!wirKhg|hJ(WF((SP~ok-6=S<_=jeu>7R3d)9tX50CdQ5b{cY^`4_eot -zqY1R!*Eu6k+@Tn6a)A5}{3jkFXsNR>1|t)S^CF+W&keu_wU=kXxm!~snN5jvbNz51n!T;%Uz6s5#bla^43`6+f-Zn(r -z>ORCk-Un`ZLBo>nNIRV&24Gj{D(MKWH^AoxRPs{UOLB*byWZv@H>}VQ4NQ^`+?*j= -z2fAaa(6HpfHcZ<5LvQD$g&-Sv1Mlzp%5z%){-S$a>~F;g6>rd`?Ptn?)*vL$pH?&( -z*45-?&RTo3gowhyMK?-eWOsyv7_XFS(}S~X;nX+Y<;$DWML^zYw_m_j;G?x`$?W;xj(QnVL*%Y;BeqBPNxhcu_G(a{8MXjffT-mjL- -zxmGvVey|oe@)3WhBBOR~HA&|hsYUqX+|^@u)3p1g*Nx?}dHE+o#F^Z;sFKNV7G5K(9r%NEmVw|KX@V-@i9ig?SnyA@(k5t+^r!BROk#U%Q- -zfBzqG6Yez|ABu(Gabkp;a2E8@lJmv^5GbyfGcduR?tL_*n_5^2B*BltspgKZZ76?d -z7sl~}o8)ma^R*l+3e3w=$|6(;fdcF3s=;3izSAZx+QP(Q~Z5762q=3nSXoFH@n`wtRw778Fe08h)ZcJF-FU;6k# -zW7Fi6k=z_WVKToLlspkZKB~F -zq|$?eb6C|jj9SZUSrjs*mC!a~`rG7p!PxaQ^NK&~SNc;j@aZMFtoA3$H$#3!rX;-> -z;eqMjv(Lw6t|WW$n7-8WeoYGvl805%2F_e6sTvr-?k*U;8}pRV-}il`|G7H{2nfwZ -zg^TIyXaS~VDOkuLHHK9ITCW>Rr7MG;M10BuLg%7gLH@cKUhRSXhxaEBdRJ-t#oyah -z)q|~c_|bpi-3E*@d`ZRwM}IO!VdfVEE^08^J}|XQ_m6R`-P$qnmPw4l=eFvBq`Sa{ -z#uhK%B^&|z97KsaWWurcI>7yw$OrkjjDSweeY_datEVRe=2p8~W3=K?dqrhZRQXpP -z)`=^C^d~(s@-x9L{dsXrKH~p!UZt -z$lC}Aiu<;b1Bs`P4xHs!`SHFiz{8V(X-{+Hp`3ZR;nQueM*7wjZ1U!_1Yw-O>z0@yUwlE$0PI -zGT_Vq`TjfgBz6|vQlz!i5$~bVO9;R}(L_CzNgs?$M;~c3J**c89R1b?PQfq5WgD^q -zx=(EFzyZr)3NJd6(>)fR`+nciVRvI*ay7D3xMd*F|Ai}#|5xGP@#H!z%_g2zzgI~s -z1bOhNTt+)DO1k9|WI)mB?JZI#H*ry-hd}-ykRhC-;f~%OamAEEaC8O@kHCuZ>PBu4 -zBWPBi9}{1y-r{b8NHco_6`DBJeOlMiR7d{f2+NRg*(@@h7?8jrS}>h0oaIgOedKJN -zm;kQCE@CZn%ZnxnFLkHD?M+C#c3Yo14u$FrT`-peiJ?VsEABqD=K!>{_>2u-7MrXh -z=orhUe)7WL4_32E^l=ZlOr10+`^?Sp3gbbVrY*c?=EXQEbl_d)-}aACT;bsv#NoRh -zRMY4dlD9F5wuk1AzyJ7u7nB9`{2Zs_M=9Sbf(9{phWL@2c>527ed9E$jC$pf(+38k -zz-@{TO=>dhz-IMSltpZ*@J1^x0C1Uup(!bDNrWZ1N%HS*`>bbXEGJ#A0jvKzQ&nDQ -z4}R^)MB0K%r%tJLWkuc_L|I0+PS$0gZ@JLBhuh4YDpTR{u#>Of7tCoAG2H-K2&TR -ze_wF-Qfuy`yt<|~h?rJ_AQsjE;9K@!ZBZu6sVLN9Q3)H(f)vfGkFx6QV -zTsI7k46G4a2(s8KKcdZ9ht(|OQvoiW~ZFY6>ev>;b( -z9Qv(6nf1nF~v#6O8yrqe`4msnfjS-nl-g -zojK8{uWyqpFGok8?booPRhumS<}_sKiT%5h$G{;s}CUD9r)`1henm|_Fri2`+pg)Tj5SZc67Lr1e+PjbBw81U^j3&PC? -z;&1e2O&1_do;@Buo)BeznotwBecdCgbIH6Doi0|ZUQODBpSL%q8f;_#d-18Wu{iyx -zsukPMe+bI)V})>0*ieB_U_<(2f8uv3CxI&_e=6Z${`KNrL-$Pi*G7*)spNt70j*o>8)hJ}_`{2QnlOp_0zUSoN_pFHy -zi+3b*34*U{cKzm$;_c#+CfGy%KNC9&r*bKSg|NbSN74eZP#Qm^6 -z6en=_WjEs}`yHB7LcoX<govX;S0fj^$x=<>|Ay3gfNv6^My(5keT1T{ -z+mZl1Xq~R_h;=PHfOXl%Wz{wn05w3$zgiYu(&~*m(4AdC>k~D!b8#qQvh9bmoSs-J7w`6xo=v|qv<*Jkl~vf1rnj -zV__iwB2BLss}*3i&;*+w53Mg1fXEX77+SJ@@4qESmo~`DyN&nEEfjKF9yVq`c&F<( -z;p9$la|+$x)%o@wjf~!J@towH>r)EFs= -zG~fHu>wQJDL5%6OqcKdYp8suY>eIw3hDAgczy-CvPbRd_u7BEis(n*#KAxKA0v#smsB`DJafPy93bp<@bhwHuuXYS6taDchiXLdb>R=SoSDC8L$X&%+-V( -z5)fP_`XIEoSTXcmb*SEEBeEwHNxJiW-PL!Uq{Y77J84;b-)-pjXtOdaz>pHo(4KE! -zByVKAOfH(@?`EoZY_*HQ899Kx7=7?Bkx#H<+r}=dBSp4}V_QM!p(=LX-tHG^0iI*! -z==*06XVNZ~u`F;fP$SbF+>9B{NRRGq*KDAgM|S${?T!<6?_)av)o|I0MM?`AVC6*i -z41?Z~+9}s8g(IE`NiTi~$ki?rg7!{i|JZqcdkoEvsa9RrxxfS2^sR{T1a~jP)4b1V -zwLRrq%idMz=aohN5sk~+Lm2tdyj>NA)S(5dMR~KxD6et;qhre}oSX5ozp)9pnVSjo~Y41Up|*o@|Oh2?spt1Jr?HugxgY_k!KYBr;WqCundT@-mY~* -zm1+b(*^=!MH%N;TUOG3evN0YkYN1>{;xH`>1#9_u{>i~db~khbMMQa7(EGhJ6??wS -zj2T7~0D{J(88550hNb~*00@oG>j}cVl9}xbXZHYgJmM*u^lb}wymTp6-3+dlOrUn$ -z9`Ey@gLs1G3tc8oVWSb&^*X0`$ZZZ@+`Ikl;WTk!@O>7f#<)qKtlchVmd5Jh3L(Y~ -zU7yd0E3#dJ9X)0eOV}&yKw?2ZnLwdq*W5FIx0&-5W78&! -zizXvl&y6Lj{BXXleD2g=L#deq_CPGJbTlN7rcXBnS|D=k-mDO9dc)N(2CL3m?Dk7& -zAx=gM?2-^GM)K`~K+buYn2xqup`UWf)0IcrPkX-bIZ#9fn1G{L_{#yGz3G|#nD;O9 -z@-B}f2js<6sVS%%OpAOMXWPGB{CEOekj}kC=+;a(kfSDdNx)os^XXY}vD}Mw`YK63 -zP*=b0?<=hz+LR9TGrv0uIz(>+hrNvN$jj*JsFFME>vvZ^ -z4A|`6tZEN|PV9kicZ>Jew25;RKgPI%-lMMKqBF)Koh{)OdI5^QkNP^wijta -zn3V$84X{^r+NatJrS)`L9^;wO{Jkenz46vx5qBEO#Mj3D1W0=eaKBRRw+!1;c(QSC -z>{UT(4^h*>v@`WWbOLeL9lv#;g^Y|(nw!j*zr>=Qg$|D@{shd?8tb*@ZZ*)57(;j+ -z&@+kd=I$m`_*WOB5oY4$s2$)9!m8#Yy}!lN -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 -zytGY~w0PR`WOPtfUN9^Y{j_>cGd}j+4Eli2H -zgFlf;_6|^!68zwe?DZVjoTW -z#@7BF=a-jAh8(>=SBgtI_LAv7i;WS1H{7Sf+zr0@1HO;(y4Sfr1W5EY+DK^d7W)t| -zAuhD{xyT@Io?Xlpf`RN*JU-(-!L>SZjh=Vmw`oBiKRESxf#Py5r;{y`>24D0kZBt* -z+1}B4QjC8?>-ZvE_J`P&Vk5)huW>OG;c{<`3eDJ?sAOflXa36j;>e#s*44lL;`4P+ -zM{$XVFQAn1nLiP_?8}GcO29j__be-X>C_#_qMe(Ap9Q2MOQFq5ZFAIR5M6H -zfhOYZZoz)Ugb43Xoj&M=_Zu{Z;CRTjzNJ5h>->Z23TrG*4KCv|9taNKAAAc4kAj0A -zK4t?BA+7D=v-La56kjE8!6+#Gdl6|Be&Gb?{FVk;i)pj=i^61GgQ^?@2nPUr-s0ng -zhRW~gI+AVZ4Q|7Z_4JOEAz&f^>;{qigGJWEn_UGZfR_0fO)S2*slK6tRDr -z1uG|#{?HfWkGn4(oxa<}_o7noZ`Y@Tz`q!OSpJA+murtm>Xp!x1%Q11>TxFqaT)<^ -zZ~TVk`5f}h#TPZ7cg1eggnC;G+?@hA(Ar-fJGvZgtKdm>xq*!(`g)+V-<>Y*7-C-G -z;!v1XKsEDJC8-xNCBifu?v&Z}XL#=LKr|{sCjb-b@7&EWS)U;SH%? -z{h_^(L&bL|;2@W)^^N-klZW}PX;kWW02{@Zv^~FHAI7sA;(PyO8fSBbE-;_;X*n&A -zFw*|>IW$A9^bfAi5tc>4ZRwru6Dsj2f(9CR$$69=s6Nuvy@JpIHN3vw7tw;cUIE@$ -z6tKS2R1Wx`3KgrZXY?kY88|o!%NtDw(j_mYV#ZguTg1<?gWC!lGHtM|e1HI%YW@84Tq9{KWM{I!I8bnJyGc#7W9y -zUtK1Ldw@vNl%`_4{Z#0}BW}vMEB(xm0LC10Utf|kmzCGrK(tl&gdT-7Ad7X+XTFNi3 -z?(sO8m&&pHRI0Z9_$NJp#UPbTGA5MUPSH<^QkXlvK`&>({W_C{q4vy}rmP(^j*(n? -z4QJ)Ul81vi>lzh5AAuf&LLKH=zklgYH?gnvmANxgmQs}em#e)zM*jkjy -z4f^$!OYvm6b3;5dD_^3^JbT6z#_5iKah4mlx+;+!B--hl)(Mf`rM0RRJ-HF@MiAPo -z3?r*0)O5eWE)q(oXark?QGm6MKKAKuQZ6ewrp==Dig~X(CFC)_RV(G8sn}DsQcxGQ?r>Pt*JMTOS+H#FV7l -zyT~5j-2z_&!}THu*g>644uKX}WSH+OK7<+@`JG=~ZERo0*m73>rA#EWmiR$5_|<$a -zTEdJ21mTpv>9sH7CCk_a_`sWE;S^?sDM}FC!5rCI+8=MKt|GAoh286VKNGLaI{aFD -zoSb69ZYLALdxx41@SpG$qCxm^PbZ)meX9}l+Z=|XM8g`In!rSUu=)p2s{MWsf*_kg -zrg{_RWVJ28LR5pj#&(Vt;0d!dpGtwma^vfLq^rtkV0q(b^g&>+Hd_ZV=_MVUVtm3nIs4W1MSryz0N~_FsANxdc#irhb -za@H8L1&8VdQY80+@-vD~X-PmwR+6(0={qz7hPltLD`#W}j%yO3I37D+P8`t!`hf;S -zh6LzNvF=lhGEN1ZK5KKDW-ad8)$|gKnNu!u727bL!!z7Pg>XbL_6Q%^rIk;)k@Zk| -zcTlW3#ILEIW%jw*>+QNFztMhfaaP%*T;_ws#{{X2NEg`etPUs^1le{vqDjTkguHKH -zdmgu#%Q>M$S2iCNJ*!@O|wG -znat?6m}D*x_nd>(JD1ZOT!dQFb>_jwZ9kaVG1GjGCqf4@njrWN6HZ`v7o;st{3bXa -z&>AYj1Y{|6T0N>_h};D*RWS*cFNJAN^zk2DKTYRT=f(`8XeQCbB%|}PH4QkvA5XOV -z$ZTkL+Av>Uc+%uBh{nUi3wW`-jutx5<+w0@ScVnt0jYtD3$QdT&iquyGY%*133a;M -z@m$CFr(tX4$&UNVqQOl8dXx|9hk{X|fqJs4Gb1WTmmVgg -zAFtG274sNCr8&D{jR*~YB7x$c=S~2FK-KZ6qS;KSd=-leJ|Li)<-iK&-E0|o_q+fXdS8Mm-W+3uFE0HkV^9 -zQ2Vuf3yWLCqZ3iu>MDrc7tsZs5Xt>IKgqghMmoF7df=b4T3m_<=-Prx?1uGCD@SUlHhpm -zo9kzGW@T3ew3w}_x|(EtLOH?M)p;8=nzNAO(0f4yFrHc~wAI(5s31lm&NH*WX7P~q -zQ5UBGaTc4Yw7|7j3>vjyejM%Ep#Vf9Fr6`*9v0AL&*~4@P9*Q1X-aaWR;Xr@dtVH+C**nBm`4y6jL%ubEj*H@3a$d;x0XOA?zV -zKr32u^JXFLqzWwJ3gYAIJGv&adh+Gt+p_=RD7d=oJM-}N2CTsK9f-C8;xa&TDCxjG -zhvgqKtDMYr;h+fMr)5GD<-;X%E -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 -zGQd?RClH0pYr1O2i$Sic*kSoGVFb(B`FrKm( -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 -zhRmuG(1KW?Qa{{^Qg5}`-7+bL((fZx_D-|kqs -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 -zba6J#5KlKl? -z?+n^iKD}k@O}dv=qitM8RDpNoD^(vE%{=+q?|*$O_u8L-eN#47@)xQzsqbbPW8LF< -zf2AK6*GaeXSjZdNN?``X**f>fN{XqBlUcu~_q(5eacG{nJr_Vv1a#)uNVVFJD*_qi -z^>#o1uIuXYCcOH=Eo6mjL2hYQwqpIUG{KQz+8)V&cGZNN9W1#dr($hdi!aFSIo-nh -z#H`%+uK-fid{?wd{qvtX@mIMpp<`VKYbc^6f|agdx1}b>Kw+Rs@eQipWT&jSnPuC# -z!;3XvlQ`V8R)geB`yi{L9oVk0b%7rWki=JRXh$0Y?OLX@!6TFGTjiR;w-C-$f*7Q -zc7wtXaSy!Fr8&YPGvq+7380};{YA5z{euU1J9HJpV?ZfE7)R|vB4VHWl%nV7 -zQtwq2Jh&M2cF@IHqb*jpLKdUjRtU9VsRwIvr|ll?#nKcavV6{J!v5XaJBqxB8^19+Gz4_GY`JKS(43g-Pt -zSq+(Md!JZu5Ent^e$6Qp3<+yo6cXvQyNGIfLi^fE!-dH`rerXTz*?h|+tBfFkuYB$ -z@ySFGxmrFR^_y9rA>kfbTL4lAR_YeN8bSm^P@g42=?AvTmI7qUc+O?AEa{X)3EkWN -zgTYv7=gTPKF*IEK8C{cdIttk(Lz$3bX1R(-&7*Ljbc|<4r%gf{U^$Mprjc%sFRqmpx-}YF+@AMawa*5!V>Fdm$$Tm5o8( -zxmfO%@kX)bbchx_0W&TxTTMv~L(L#2T}+^DPgZ2C{jkLIYl|@8L=I;<5qqTlVqtAF -z9S4k>9QYV(UJZM3_f+o-FgcL4{ -zR0#$A_f)tKc~z2c0y$^_FD`lr7$u6GVx&+%?JbU-3gwwe?hD#t$hw`W+k+-Oo+pJW -zt%A>38E6g9(h{gg05yn#bwG76A1n7FCzHx*2`Qb2^LxukKt03yl|>0jO=pUaCxhLxm%`#I>fY -zCqQsYLj%wx*2$X1W*I>XqeBO}oSuB{Wigtt9!X6|-W_A;FhU~TBEHY#Uy$}IzV6MJ?^ -za9SF4ph#TmDWe~O!{FjVm%&6#@|1hW477%8Xg%-vxLYy)XtvmRwOa2IoFp(?rz;Tq -zZd=K`B=>{&PgKE*f$M1+^l1^edIV`T=)EIZ6Z<7A6byCD>UnaJtXhl;x2ObQs$h(ie~SudO=1vz|zgT)m8=r%zVK6O`*oRo^j8^7N+|A*eCPq*z3tP -zwrbhY6;!k^)=&jH-zFIOqXz;5NH%F<6&uXL?a0HK0>v%@6StJ^NQG>!Jj*6A2GHR1 -zRKbFqQ>+b`hz~10@DPtEqS6TjiU}_7uWCxsrt8@Kp>#=^5W96z9?Yt5P -zEG8^|pxDL$U~+HHAp@*A9AcI~%j0kSzvQz;D|y@ -z{k|2Gu#e2Kgx=aFc_io;dJmX!g?-stqyA6A)IY+*p=)nxq9q82%_9C}@F9@Wc#(Nr -zW1CsFD?oXGXs6BKVWQcbO6|}Xg0!1n9gPkE*vG_jKjxC?&BL)J6AjYyI_5M2IGxf; -z0ik#w%86)6c^WumH1D?R{aP+3PR#Jmp&R;48_2v5_AHUQBAWc-Tl)fLjJP -zSvnOcvJ|HCo|T3NkrzBEO=NeD6Jj(ICqIUaIdq`sDc#q4Y>z4u_O|Cu_MOVf^g6Pn0J#bAip#a8xOUkb9!#x2J$O%T#evt!# -zN2NEH#{DkNam1r6^G390q?a>zY>;0mR{cx4zz!3GB>x3k+01Blz=PakTKvL7X;@zJ -zY4M22t+pK92*4!`nps&a6&l~-8@j@||H^h_3dxr#%^8X{2AW2Bt9MIJ1D=fq`_`OV -zEMigiLvb;V?1kp&VoKT|FP!tBOithjEGW7+sPVRkwc(iFm|UT&5Z|`L=@Hzexdhv~ -zg@g~J9T?JLy_pmb&m1rfLu+7F_U)i5Lo0dJfdRoW!n$>caWXON7#nPdVCTxk3F(O? -zn^ibNBCU;-VX@~TG+^luO={8UaT(cA=^M+Qw9{OZ<<8V;>N{OgvAGoAs<<-!RVi15 -zBwwNwsySHUl2p0 -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 -zi&yK;@69ss? -zp5AlU>`nsEC2Mlj5>hhVw12$XKbq$EN{qmRKpic`kK;6b`Kgy}FTYIlHr6Vf2&HCz -z;W}r4hy1&1-rsY5&cn8NVUu6EG}r@sLR|k9daO;6*HSSePvA*-4rPjM$obxna$`WV -zwL<~WYJ-mc+n*qV*i^ymh(Ci_FFp`brTF*H*A0-0{HnQrwTWHO2uLcF- -zCXR}nd-)wmA3f%toQZsbVmjhG8!)+IqJ$RVc%PDJK=qbc9HLq{lj(Yj7=K!*SCGF> -zLi$Jiph{QHV1NP!Ky}A&c(hzdF?REY1Mlo7pg3S|#Ce0>rCoTTNQY3RFJ|hT=IB#3 -zZawva^kY`e_*`0l5R$H|gh5fhnLFpj7N0CT_S0C`084W$boPof8WuZ8g`3cLprUS_ -zM>u3{7AM!EoI19wk!{EKFHn70IMjXf*nW|{0v@C}=2@p^9f4-;g3$vsS3@e2+%!#@ -zOzk?RP>4WvOuUSt3;w*NNoR16WgGIwaZ;Ed=sCid>&O@Qm7#ohZfDmV#5zE^{6I!0 -z$7SgxtjHG!5zXR9M9V03G|sTsYIEL2}~L$7KpL=kUdQKvk>ksj$Tu}I#p<9but -zJ?DAAzY76rPJK00A>^t&zJ7ONmab_gjMo+{YE^yQwn!5tQZL@HqgGh^U*Go*Vv%+c -zQTgx;7i>&o+(Ry%M2WHRRfC}~kMYIZ%w6T<_mZkeYCK%TE^l+rm=Tv#pSxh`hU!?h -zc>1DC!7*!oN_Frk$b@z>2|W2)%+-+uoK14R35|pf>hQ81J0C;_G3}g|L#fd!Lzs4O -z1>^J>(lyqzV;!nwap?7AnEfy%|)&@iE8btjb(H8psVB -zV0c-|>*K&aLiKXB838mro6`5K?31w{zDI!=KFwUJ?eWF@6D3E!rs -z6)PtXQC}n>UR0X(i#90wK#!-}#b<)u!pEvyO-?J9JIwwzeUgu#FlyUuOMK)qQtgaM -z6tILBF3apB%HLpIKYc5*0>s&*(6hz$_qnHLdn2a%$FOvP0V}&_olO0l<-Tjk3JO65N{nj7@1+ -z730{&BW;C08CH1{3-tHmV19B{7*+cPGvHkNr=XDG3 -z_84|HLTuRAThnGCuO?j%~pzCLf?KT~|y;jI#9 -zop1FRy%M>L>?Q%VXcq~(L7(AEQtQ<4tZ;h1Wu#DKAvDh!aG*ZAWeitCPNT_&HNhyjO6uSy06MIQ> -zFFtrI1GTy>jC)VvpE)~aM#jeK;4-YR{%FyndSfF6uF|e>SX%@a5Rf0(bFj+J@9X;n -zJcYk%K|5PN_|?U{>+WXqA`6OmS{yCz;4xmUz(tDB%)&!NAjnYW9l#vaIMqv{9sG(b -z$~QhrMw|JBrx(9){GsxGKrc=+;+j{&z_rD4{GfPA&*1s+>b>~mRqm=JmwuJ-T5=*e -z|7J|&z@R@-P4zQW+)t`%(_f%c;J) -zNb(yx^$=-*3B{Ji*St*t48JyYceeLwjr@cXiX4h;b|3#z -zB*+QM#dvz_;v4-Pt7Jo#d5ELDcsaqa>BosTusH+N4Gzf4gPlinNYO~*wLtnq^5bHi -zQH(U`w|&-p>9*loxOW(L9X5tGk%yTK{Z7LuDSh$U3lt2+8x`*!zE$>yu`dG2VT5E} -zc}C?0jMKgGA(@GfYRRh)yW`Q;gw-El33vyp!_BPwc-ZbxROCLicS*v=QPbmlRN|LE -zgUx?s!m-3#u+_hFKo9}ZQ%G|CwmSwQk8$npcFL7#*Z-(`Lt%3818UXRtBG3_Ots@9 -zjLE|WK0#=YX1gqMUAhS!0VTz${ERt~+A?*fN85F%1$52f -zHSJPVb@r+Jn_T>z9DAAi0{Q}hI+H*bCt3djj{UYNiULy$m9^sY+I3Y{8Kry(g-7wp -zCqC5^qskLCk~4M;4e|nMh9Q8qwq}8;gJ?a(jthby8>Yms0pLv39@;+o!l4U|EhO}prB&ka%jpR^F?gR*A_YFxmn2@*ej -zfRYJyRr{W2cpqc^aJ$pjA+iA#lV8+6=m(o*gk2FTs9sLnAa{dGY?_z*uI_?u5{px+ -zt!6-n4FFfM%`ck|f^%LSV_c)_HnHE6ItYyuZGRLT23Tya`ceeWuec0e;F$@14D|r -z{F&V?u@3bBfey!Yh-a4rk&zz5h9Mku@pK1T?MH4^G9uY@vRTI9H(WNYhuD=+r%miC -zA(DCpDT_ui-IibII29isK0@7g5Ri!(#7tZIeRaz_o2|j6ab-Wnytm+G92|Wp8%a(} -z8ntn^jB9fqIGSU#9n*lFZk00Xr8|t864Tvb -zd#c+jCr@-!u8oV6Uns4c@ID1WimgP-DQ8~UQp{-&wFK#BdsvrtJ&7?n0fUsN>7%b5 -zjgJ`8ZGIaAWh)W9@&Fya`*2PdA~e+qd#R5)jz=Nwe6| -zRCyU4W*5|iaNp4UQwZYZ+~?(RsqW+fV>uVKUoursI&vNA{OjDkgFldO5Mi -z*Z9>|`NHLM>tLb3z?lab6~fBP?A8gy!|5VyQ#Ep%9_ne}m9DTzZ{>>Elt=qsR$ -z;r!Z_SQy##u6+AgFPCk&IQqU%3*u2E@MnV9aEk8_*$9us0|b&Gz6hxCQntsbPz|fI -zu|I?%y4!IY3nbU%H -zEXYz)M5AyF>rSO7B(HuM7Q&pzW&tIxzZ&G7%UI2L_&5J$+g}4Ohf(5_s;nVOQ6yB% -zV)F!u6>zxeK3)nufCa1Fwu~0I^b&tc<^`C+`g_S3#-&RzGXVOVLYo-jDK75?q^y#^ -zsWwR)mbhBQWV-0Dtg*&+>#Kxqb4R$<@WJM9uq&HFE|K0EE_Vs^oaO|J| -z=C4tP+E3Wb@~^-CpMUi!)xS!-1YrPt)(=PM5UMG_J{p(-Z -z{ZLZX|Bjb)x=!mU)&9a?4OjVVB_8vKawJP0f?cazbGP-wU$xxF|6`fYfAiPOVg7fq -z>cjp2z76cb{S5%FfBipypq3&Aw}V~zcfb1|Z7nNs{EI!`Uw{1k`R(gZ^53tY-{e2? -z2_P+Yf-BoR=UV~FzO8-t(+PN~Q6caBUQ}a#U-gf#pFe-~z+@TU3J&n!{q67m2f7+3 -zvW=)O;1{`ljU69&ec?_cvDSveJx_kRrI<3Ej$ -zyg`2a`R(f;KmYol2iusx{=Ht`uYYeB|K$h3{eY2Zjx97c#YU$3ul{d;m41*& -zm?S-{P8=WEm!E$A{L@e0e);21KYjUGo|o^x@6X`ZFJJ%SU%&jtzkdD!LyXPC>V9T# -z+DDj~?@Z2Pd~5HFiRH!1aH~%3@T;G#FK)u*l4D5XyF2^i&tLxZ%a<>ozy0(VUiR&e -zzx?#4pZ@suo4ih5rpSn;5o?7}MG5I}t%qNRZ&07`-w9p#0X=`?4|bRGpY&H@Zojh) -z^4Jb<`<=hz@8cc6{(F7Pzwko+@?ZZ!c8qvwaK0=B>5E>;-~9EL&;KC5{|Ej3Z(hD! -z$@gro$CWz%UH<%|tlLjNw9r6W{Pp&ee|V~)b@tl)aCN&0D!ZFjYO$~%e(l#50RZ1W -z4nHi-6=^tR5o2$kIAe4|U79n>Kfv -z|LWKNP&l-IMOgD&5y|g91S59cb{Bs6zlufqbxqgb_W2*btcTXXIlLz7c_<#N<4~SR -zL;!25;wZKQF7k^W$(Ciay#@<)FL}9y(Rkz^e)}(kPWaE4&!2y7;}CrPLA#WU=YEId -zHE#F($P0l(+?oEAKUMzwvwYk?BKItO?EgFO`uZ=t>tEP4AIzzouz&kEfBoP5my85{ -z`T38({^NiB@4x={yBIAwTmK(kxi3H50bx|1Bp>vD=ugEZQVixdb_KS;qph#a`j=l* -zt(PAPzn9(Qmmh!lo~}>+eA$-fgb+fE{U87Ir(gc`^B@28O`;X28IhO#{XhIS2@!rg -z{o{Z5_y6>F|K&gapZ`Guw7>Z0uYdW^Uw!}<>&3Osk!sjp|0j8<`iQ^$tPlLZZel9_ -zF}2-ae9!;cTz=~<#&4BFt<$h|<*y}X&WE}Mv9;K>A8cIlpk(`9xb~-Y{7EtZzZeek -z{3?c%>U@8BU;gQr&;FlcxBT5d{lgDLBX=a6lQW(xIwT)CTLT1iTVo&A6#a8a;4kV) -zlu`GrplvT6efTAcu*cs(CjH|ZJ%^27UFMI!sT&UTHnoke*)^fTe`5Cb!+~>C{uD<6 -zTT;cO%7Ec-aYK^EkiqP?{{Tu7#1CITf6Q9sHS;KeN&WpFe#bHT6HrxL -z_cps%CDjp=Di#CCXpSn}o5nc=&FB~3f!qGye)t2a7S4ZoS^hvzvZ{)r{IGm_S^mv( -zp4(~ty`q-?rVRU@@k2X4Kjt#e)yV#T_}jmgkGgD4_lJM`;ls`f+{7y&T-Mf~KD>Yp -zPtyo|>Qo{|Y3+udwOnF+ACmBPbe*{8ciccvvN7sMF_sucFgUkflz9HuFx)e3vZ(U{ -zjuE|O^zmHKYq4J)=jEQ&*se{2F!E$Sivb#uTc*`X7r9=?-+VV__xw0W{ge|#b-+TG -z^obddS&7~B=iy{c7CFVw?=c(n70`c%{ -z`ux`qL#)q_L#)q#c^>q6oCkeg(H6|(e$VgbL!Y9e*{ibQ*+pWWABJ6@ABK~kzcI%D{5TN%{7r&@r#Qq|k>47beGZTO -zg7Gc?drIgPm@Jq7>M&jV{BFAT`Q4oL^SiO>rwemsg}CQ;L%Gl8OYp5dm*N(V!@5rx -zi(NgV{fyxfd1UrP55v6ArMT6PgT2r1c`TmPGHfnkkbYzK_xW+4`?{+2H4g -znegX#v%=4h!?w@wM$Mnat^C%+`xElDwf$=aA$C?ndp-)2@!g0ZJjC1S4z_}md8@Q6 -z&AR+S%>U`!0a^W>cgYo=C&BM>w9VcX^`2)D_dd&d&$FoaJafJ0d93$5Kh}GmAL~8O -zvflG7>OIe6y+>~G`TX+bmrs~;Yijd{@`r!^&Ll(?aWCa;!{b?kU@}+5-o_rKVq2f0#^23t;fBWL<^5Xsg+N^*6|Cx285t}(!7L8=Y -zi4Wifn)wg^_7CU&!?TtRnqJ$gaToA9Dkkj-b??E9Yi**#|GIDK+RFCcAO4r$@*AHm -z%iB8`><@oe|9AG8v8|`a`iCz+{qdJyzWK*~t;Y!yYiyf6)0wo=Zdg;-5x5*bKwMaV -z5chJm>7^$a)NqJFaApS|Ge99M{ggastoKvhF4ryCb)Lx3VlwoJQJEF!q{1&|KJL4# -zw#e@Q&jwWAatZuq>J%&c%q-kbs)0Lm5(6*b1e?97 -z$vi>DjqnKQUk{Zmj+$=cRO`1wW^42t5wor^rRN={>)hHf-jnwr##mdH`Xki&W{-Sc -zo4$Qp!6Id@9x}-DN@08Z&4S6L+TJlijjT7jNGIRa*UfzXhFMo}YZ}SnzW42J4{RBM -zYvtNn3@;uxFEM@YI4*nDT(8MrKtVl?i{oWI=GE)#IJ=05nCBI+n=u2?pWC!RR{=yj -z{P|U)LM6X?0`{En^z{BvDBVf-Z#RVm;2khn_nHk5z#tC=c39sPyB?w;k^nbA$iJ}4 -zm%lU`Q1}`8^7-dK{jof;m+q7&UH&y6@TWh0{`Tt?kSd8p^9Lcw>34a=TVo*01blkThd%ZuLrCdu7xGyK%^A%RkJV8{4he{~pISidh{BVaQH -zXnvz=@>udTZx}m?MCe~}bN|*$kHtD2iw$ztB^R4BIn@&zeLLTZ-yrV5EE>{UGe`E_ -zR0EhgPvi9$f4Iz}#6&vX_=oy3{eg&8|Eq-;-=+7#7;K;Y_UXL_{y15j949Z9B7i-o -z3m7%cJT&VWsRONl#Mqqq1%hU%TufPR+HNyljmk0_|$?**yxKy(KQs@lLk-J0=qCI(3RUUqI?mfZ;fl -z+p(GWmQO4sKbQ2Vk6bL-Ldd;*IEc8V@-=H{nK@~;i{4C;Soi@$vSrdlWNfWcrlfI$1)4rD(!*IS{m -z9BYM;gHLuMRISD&jzvnt4nlwjNRDBj)E{Dj0c8Rf~-;3sR4AasTJSv*&X;>LG!Daf6ii=8;GOj1LaS2 -zoHubzET&mJr*k=->DNLC>rF)q&*f{+rrZZrtzQ66Oi6+D2i$`JaL -z=hf{eC@stl>y=noF{gK%P<^(nH*MhS*IVC)VTW0={Wj^h$PKj~&EZbYvb$~yFnW?k -z@PXnT`B8kU>Qly4+|0vn5iZfRpoEU;q9+uwlW&9zCZijG2rmZdLF{y?o15p&a-$=F -zsutK@DeI2Q^KXEO=~&Y|g*cOZ2_Q~=@*n3__LipP_7J;9f=P=q#h$DSI%ot=$A@Es -zwd<*)?nvAwXt-!*+}l8^TAiAlktE(pUJygUPa9vBecis>xs%f?TNE039x-E9%ISyb -zG34TEn4T(|pOui-mQj8YlK==?gPWkVT^C7QW~%w6+3*QZeiupJ#ND~w>Gvy&u5v=k -zXP!Vd6Vv`r`_n^XdQjcFJLEF -z;->A*;*=-4I-djavaoqP0CRO0gEDf~KR#|P=K67gI3~o%DaoU|Dl3ns#c#ITB^*IT -z_3pPd-frWA2~hiP7b9NrDml2Ey2jR1%+NF*j*80547IAv&@eUVWuW&4{*Afupr>JW -zfBh*7 -z?C7fk!0Dg%y4~Y6qpZ<1OF#Oa2BEQ-=F@_mqyOf|ZF2>+vNh_CH}riFWkk8ILL|^6 -z63ptl$Ps(Tg(J_)HQaOGYC?0kK}w+XJF~c)JX0?zmakThp7@DH}GYF -zBaR1!&&9*D^W5FVHlqj9+U2*DCh#&lXgVIU5*4BL3iXg*6p*H$C|fok|N{rxu2 -zJ0@njPwgNE?E311)@Vnq;Dtd9slMU{usx(X@!V~r8H*!HeZ28D)(|rz?Az<-z_cTz -zk?gpmpY%vU&J;IG#5?E}L#D&tX<}>mq_mFj<~z22+BKN0VENS?wi@|Kh+t+`9*!*B -z!%DyFNLRV5J#Dr%vzBVmO5wt9#C?7cE -z;3W(jNpfWu_KrEOZ0VOqB3(QNNuO<&P)`MtB@iIMm4RH*Of$T=hOnLz`l_aZSt3J# -zu!;!(Db}t8#?N$-bQTZbysiF-5R=NGe<0zpDwU@fw{an3o*4YNVzZd$8@zj_<3*qD -zq&~c!UYf;r6(U9_0l0twIS$*7E<$vM7>uJvZc!hotde}(YBCppLbxRmP|nddv|n@5+|-BuF*`*Fjg&WHjlv1 -zpTD_@t1xw}Hy6v)u3#GBSyN`|(yVi8>9r}OqJ2@!5rr%6mXXhK>#H)!#Fn|<5P=~7 -z^-7$0p!R$M39F7I>X*Hba{SIwT(jp#0cu8b_qJAU@op#C5l}2vPeqCHJdto|sCIBW -z=bg)T2ait;>~v1u%&#E=s=SxEwB14<#0CoBzBaJqhDZw^kOtWzTF& -zn%anh+k0BX9mGCrFdSA<8`w?D%LvtvhH8t&o|nawH^#j{?$ZWkJ#Gy9*u&VDZSrfo -zbP$}et4ss*FU$d^`jsQWr$ntMcrz{m>k8bo%!k$HkCHV`z8<>iyz-~|XnvA!XY -z(aOVm9UDTAp=b%h8Q$6Uyh}J^+jt#cy{Fw{24?Z1){U_dV##f>g31Mxm3Z#rk33`Z -zXY@cPZD<~mbj_J0gaG=>d?8beUZ5zB{pjw2>*2jWW&^ZxloqjXuZlF -zXg#M#@|%JF`Yyq*)jFa>|0!)xauR{75|lSQ$8yGGABmX(^Pcy}<=hQtkW1~Lrit2g -zwN({Pkws8*3%rS|u*d; -zkw^}bSGf|>^wo%o?A22QH}vP*coCO$@!A0xRS?XKgC{)ga`d?t_>6qedZAlmjPy@% -zf6C*m+rY)h_E(c!zFq9BMB7PxyWPszUDI;u06;0Ua-Q=|oPr#RiwkdA>h_+jL`H5v -zSv@?NLpWOjHK2{`r`9d1=q*)b+^F?`y>|!X)v1tZdt#jb7Vdl^$sJ>n=8SA$j6`mIa*Mpve!sQHp=h;Pc>sZ9`1`Ctw{yH#Lv#~RL@QAV(s)QismFqP9n -zFBU;8NO=52%$h1-)m$C*Dcf0@*%cWx1Da)zQtNl%cc9qxcGr>t)AJWA8lwoUesh^O -z+fG`)0mrYbnjRt82Mo6Z^G*D-IYz;#sL{v6(#Bu}%km?GlBd>aqyST3BG7upY8i!9;MA4CN -zFEZmXKy7zNiERzRz9$)yqfG7uS$a0a1Nu^lt7r&-J)dKtn9{L8>~<0Z#LemGY^zC!eNYnQ5QjpC)F>Q=OVAQL{+KmH?epZMbuc*68XxP|! -z-lIMEro73pA21pxa$B1zoF`sT+ -zku1i5P9T+~gFw7BPMr0Oa&=j3QxT+59<4F)5Ighr%b9fP{^S)OE!nW-0Ts*ZzPaFw -z#l?$VZM?(6ec>#A?MTQ165Vr}9iiAU^)(|M`3T8eA|ye)4TrLIov(P;Y1W1D5c?pc -z6S5%?wrL@F_uyZg* -z)F^H%0Rw^pj=_Fm1=K?T$eF?xu%!XVa_>SmOtkVG^`5DnIlgE7BXo_47p{O$aBkPG`*= -zjehYew<{qbu(*jHc#U9Cv0CQ*s%d`4cwaC;O=jEqHJ{@K;DxpDBz -zXl7hV-ge8#D+$H6(_-vRPeky@JSu~NGIr>(gSCG4VWJdjWL1V+v|Ic1~lJV~J# -zuz2}mTD~E?^6ucJU2`awyGg(VNNylkXh8_j24o1EtLEC~@;|zkDKX!sGs4Os*M7`H`u^zu>UWxp(ik6(b0J#?>ngy8~;UDwD4Ci=Q -zxbDjeuTy^UR24I`PZl;&!5(V>C*2`|dYG-06Pp7!ue9{*x6hy54T4j0>9B+RIm(QP1Q>D{~b -z))fD6tYyEwLcXCm$adauvH*u?6YWZ8+LL2@24PP`609jV{?N4QxunF4D9KD^(AkTE$_=IWp}Z6+hK9g3Daqk=2k%5Y_rWt$_)bKNd>ShBSY@z`DcA+v%s2?0FOgS!CLdP6iP -z(VILM-%=QW!|_y80Qf=?4oOP%EehNd`;h~u+oNXleN+8A=f?IUQvC?|t&UjciGWq< -z*dj{bxk8WJ(3`8_iW|Z(O7kt(Kv}Wn!#bG3-4@x?08Hx2%L=Htn*=nzAChY2BAr@C -zOu6Zm%3B$AU+0WZSjWWa2if(*=7@^(y%@L%I=l-ZE)lT9vfcsCC~r{vUMER?3uHnA -zJg!9j7ki`Z0F>GmEzRr0LCsL@l7@2J5n$A8n}E`RIQ6xGf`mQddL~jztV17le77s0 -zzmJDPfL5n#Z?JvOg4>%sz9<8UV<2CwgOVN -zDj;5Sk*&MiX$GVHA{mvKGa#&xDtr~gy%pY^Jm%$c%jO1Q(On64NY<*{q7v$^& -z#q-k-bp%#{ -zQyPUskUc2bXeJqHw|hSE=J9(Qfx-KkybGtvDz?eAiZ6x-3d;g8bm}dxEHJ5 -z?G9ouF!}4cs~$qex}hB^?_9ww!rzd+^GcOBUYIQuYBL6o_LJdrIQ_0OJKjg6>E!Io -zI7Iq++c7x3piRiulGr|J2nsQ>}Yt3Itg?n|dE>a2~5 -zDjB+3Q#njnZ8p|oAM-9&*GQ)H^hED(3tzmA|eNRK|XGbJLZv)+aYE!n&$=G -zcgwjLoQ{N4#bnHWf_R$?6xI-~ -zZ<1CQyefcC7v?Vj$YebV(J1eWQMCzNUB6+ -z2C~9jWu=EluK@^alx1_SivbQG3dB@*ZmtO-CEgKRJO-zgfMtQ0%5`WQDXNx!Z625$ -zFllH|Va#CG`gFZMS+HC|=J#`c-(mi%GX2V2Kz^&n+UU -zfZpbFi_QPIjVKIRa=V3kb3<(B;xUhzl<_`WgpW!pnv1Ze+pxqSf6w%VML99?**SD# -zJNK+KC0k|eQ*{;}na=KVxAS?E2f4=7o^2+!e=_QyfiBl8i^vGo25gj< -z(e^M(xD=R`SFbUMim4kQw%wGH=cz-^xg3G84dAIZkj_B^2Vj?}${oVy`;dHa9aMta -z&V(cIqFrU_h8;r;1_6Q4U^YhIxm~-xmO!E7e2m*I^w4RsdVpXIY4g>PJ>_MH#ViH` -zaO`Ql3gEdoZt@rSM-Odpz#Lh{`y*1E4U|W^sOUL`G+Uq-UL0g5CjG9Hr?AXq0K$3Y -zY}n0FUC4RvX|`Z3Bc!K5h);54$5PLmVJCP_Q=#m}rtEfZ^!;LLAW7I{PkCtQvW7zJ>m3Q!*M3^AY-ntaaqL5YWN)Y_p^X*Y+ -zN}s0nsre4@AB{HRnY0BGGS#)0LpkiKg$U66*<Y18|rh?6%OuvU&%cMH}-|K>tEbQ{J*?wjvaoIc#PIe5fUKQKZs1E#ScP -zz_+R-=a@4BT{f8(Jg~G8*@@}j4~;02E6nxo$HZQx@Ca+KJ-yn`$s={H^Q8KuofH1C -zl$9S~(_d6$XOBa%pN?Sz!YI@OS6*)Jcy!dNkmIAkP|mt;lkO;S0$R_s2f*LDvdtI#4G+v`k>~TJBN!E~kjPh!Rh65M;UtOGa*%4&}fLAJM$Z#LLz8hmY}?t+Rx&hk -z4+j)&TDlP$wG!=i4x>#Cz!w-$>7kg&9plIfi#x`y&y#!dH22h5u%Png;~c=Gw9<%r7p0SvyDptvzux7{7@Q -z!!12hE5=4=8*}I&`)g=oY&ZAz<)C{*QjC6=FhdzH^u@ -zJWs0aQ>7Wv7lEUXVyFv1@v;jrV5c+$28>vcZfeO;KL@Z}Pz>g=g4c09Bdszah79yMjGz^F6tk8yx!;&o&g{L#dcEsHlaSp16Dc>xwgOj<)VOw7tQhD5f -za_D_@0w?dVY4yk|2_&tK#74^PGv1@h#2_EDXdloW7|!f;O3{6{_ZlXjs&D+=MoJhCe)x_945veptI$^W|f>$$OEuPN1Sfy*FihV>x3H=mDF -zfV|BT+reExdLnx=MX>}n-N2Ut@IYj;-Zp4R84>6l{)2h?j2VdJ*qyQ`ppz-SSs3hU -zmGoGq!$Ftl@v%=2>)QZaZE1)z?1S;xl;xa4#(@&WdaEygcqxIJ%j6g6llCo6zyhzFy0JC8hQSgE -zFy>XRsCN&$+(*Dw=v!!p);c_~+h-H$r3 -zBp!q;XePd~g~Hm=a`jLW-8%^minJDnXCiH4(PAe`c|8)uKur5Xok#*u93mEwP`1p; -zGo88EQF->mId>AVjpf3;?XBO2W_6nHJ|Aq;@gAR!R5qSKG43Nu&2`#jgJ(F -zO(jqrub!?-SRyBIydXBri5H(3pKJ~#w4*ORU|%jyt0KnaQnqSPp_l=d!9`s<=Q7b& -zGgXVBOKTef0YjBf95=>zG26?82z?=d87}F~BKq;xf_!WxWq>gv%APD~Rn7p -z*GSYduBcEqcEijP!`>L;8aAkJ-{QnTo0W}yc}6JO<^bSER=>KvqRpqbFFPH_N1Z}M -zGkWI4XdXr-U=!!vBRFL1nOqwvEL7-k$tVdLkUlj9(kg~0P?IsO#lYndY=J-c!RzG0 -zN_uVX@v14we|nUqBrJR_i2u|Y)p2izJ(aD9r%Zcif79x~xgGxO&m8qk9r@r5Nl+4q -zjUv*SIpErKwtW&P8QVbpj_?v>P0^RLHg*A5%MrD`t?9Nz=ujjq52jdsDquN17<$#5 -z*J0`~A^4pUWog9XXgv`Kbis%He36`R&qF(upxb?T8Bgqm449IxZC%i|+^7&R74O)^ -z3;=v#TLn3LuAMVhVofAA?3H-lvCg{Tx)V1!k0V!=_5&F9OSioh=oG*`Rn6Ia@~{q> -z$8*iZGvZuLxY+m+hW=P0Ey{lgIFBV7Yzt*Py0yKE6!A)PM{zwBNu*_N?BOaD!#kF>cWipz?<>2TdMi0QUIEx)zq8t+l>*)hhM-O_pW8U5ay~=B7;IdV6JPXInXAF=HYOk%tBdg6 -z$09CD6SGiKFL>bMzB-oCowg30f7`8C!xf>LKW3oJ8lE!?sJK_qrjrG~L+m+bU&UA=%8ct!S4LpoEu7^Z-2=h2fB7Pr{UEyxCoitNozY`^gI0qgO?BhrG+r)C%xQG -zva_x}%UUE6-fjr{JsyX`XVzUR2HD%==^7Jt;A#uLW2Esjoc+lsX -zjRw@p!%*b~LhAY$5;@3RAPEN;(1R%qJmQ2$JOfmQUlnaU1Mui3t7 -zJ+=&nWTVvE09Lj{s>kZOU|Da?|7Ztz@-yP#LC% -z;=B(WnWG8G^kz2FlLLE>45n^s8%LUe@rNmR@4&io6TgSX<-=!I^;fC%-z7$sgck?fJe<96OCXnOo%%;3i<$WRrqHvo5+164s;#w2T}d -zfxILQZzMJfO9$y@LZaU@DPzqasW{muxIOYGC -zd}VkSPTc`#*%R50<$G9j9?gOSwI1lYK$+<^I(mj<2gu+%tQ=WM(*~HB@uU`Uu0)n% -zti9R>G))b%zw9F=YuBVUM&u6pWKOS%KgFT+kQt={dRTJ}au8>Z8^;U+KDO2Q8(``J -z?_Y*UFI<)bVs*vyxLEiC9E*%S9-;jSCBM{d4*-2q~+bSO)iJ@1mZKC?~oRdJ~7 -zI7WX1tTL_vniaGQ!TXp6TpNKJXf{+<%Ti&HiJ%?Cj -zH+patOdejyHz&l*0w^fsNpVmD+2i=D@umc-c}UF%0fT@=!8@(QYWrd!aVu2;34QRL -zveXU3{$+tN&m`HzB1|1NBL@}^?HPT!dJJ^q^i&_B$x(9NsvT~|^Q7B80R?t5U};66JfjFYUc&ug#jd?@%BPP%O?qUaiKO+pd^2 -z6$_9jKcVS!-c}u-i$Iv*bKBvp7AVJcmxI#EMp8!&QBaDIRsSx?~?F -z*VnXn<9sUSK#32)rH%$k*7%1bLra$)+)U=PXSuLW$Nj=@u@fP`+d$Q8SU-7d&J*n3{I$iP -zioH@SBF6g -zRU`EKT49;$(I(>Jw#QP&^S&Q5=*L#`D&;`n8ixZ$)L!k^Hejm5%QKq`Rjp9;bvuRu^XGFBfiuZ$Z24r)BV-579G}#(#bRmcqV2XyUVh1 -zDpS5NPXb|l%~S;@CuxpqXbYHEu5)9^!dR2Tsqc9-3-bwD-}ad5=;9ipHW7!jlmo<9 -z6EN?(-49##I+6;vNvu7ly)ps4jZiw%z6ft1N~6Ifht -zm})j&0rYhI79dck790nRxC7_pm=6wg_~!N!y;z2Fx%IAxB}f!eBqv -z2And-hKutOb$lV_WC*`6qY#wp$Dz>O&_7OD`4jHru-!K02Ph*uS*PmK8k`g4V|^ZT -zbNasP6&!)!_J3{bXl-9{u>hMCy_p{A1nBuZLphHee2TWq4G5~C%OpyE_))(No# -z>?QLyd8Icwf-Q;_kxH4DbZR{0Z}8ND&kd@!gc11UR`rkC|W;BYl`2ZV^1^R|J+$_mo~s9rg#Q -zpyoXgyE7Y!M_yI5X!)>LO_Y|y7Q(_?f_L63$pT&rUV}{Uaou{!R(p&rg~0jvAtmpm30Z*a4)EhPfb(yrNIIdxlN -zF)%X2?AV9TU<4$#4}pMNrfV?`bPxUDU!+H?~1ckO(-1W}oez^t}I -z%@wtgLL^ViLx8G$>tK7@Q8jCsLedcj@xq=qJz~E3vY$>k%>rZCLh&Ps-Ei~3NeVNMGk>M%1i6uPN -z)LX9-#9Z>2d8UCuBuk@J11{52Bnwrlbe0wt$(FROAB_BSWKlEPATlIjDAW6e_*~R4 -z$~yH~2aCN;q=yO}&GA$gYc+t8|0Px8*(&bNFC9%>kjDZe!4Qef)>*0F2v*&V+8&VB -z3|V0s$>ZtBhbqm=mp39E4E?wo%=|%Gp>-y|4as&dp^OB61axN)GDfKyU`0Dc4%xf< -zy+h^a*#AM1$)`@}g{t;|#^3D&DSMXG6K5c{mQPG3nY*#1(8kQWyX=A-0-BLSI>9-n -zjKtRA=E`S~RIHORn3;rYs3yAKMR^9xjh*WY*L0X&Lr1r~OCEW+Y#qS*;PekHNSyNU -z=5Iy_lkkbO3glVI5-R-mN^Wp;zl*S$cEuHSR|+EX(;|#eR;6RZ^1(Wxj$uaJo$=6J -z8?u_6QjmlM=neB=!Qax7eoiZ3dlr)bH$q{M@1%b->AYLBLyO$;^GY~auupXfx9w`V -z7aj9-c{s6gZFkb~Ewyx@2N-1kC#PEimtxn4#RQocXmK->-U`_fh?0#kMP8|H=Bn); -zAfd7{3i#+7G*t`u)}2w(P;d9|#C`7X2#JCPLs6O$=?vq_A({;DSB4k%Z$lTy7Fe6Q -z%|!5xeW2E+u$C-FJ(j4Ft}@esUZ69FewciONFpFa^@e~o$_V5- -ziFp+*in!F2en@eLk}me3cMs1gzaZysrX?nk$+ap-&4*ECumCkO${D-}Cn3ClMOfPo -zG65(ac~xq`gv1Og9?)$1722bDm)KP;;oNF2JPT6M -z*EgRP$Q^?Y67sa=N$T-^2li}!MG2J7&s -zZ5mH@IZB?Z6JxAO-%f_)gPic|H8<{wzdTW4E-u5m{8tH-S{G9Kw6+)7o*2gA-qM0) -zLh%<<=Qdb#&e`8>BjjN$DnbL> -zzMQ#Qe`A1^YM`Nl8Keo4Cq7PvG!E#OXQxKFB_e`XpM5H^STdD0}x* -zVRzDs;H;1sMBSs}u8}1=9U+9xhe5*8r7=LC4R19?{pz)ahFF_Ij!`1Zp-ASOLOPGK -zI`HPC$(p`0P3`(9C?wYLP1Q8V%*43J5w$vtsoB)QfT76K -z2uND|2ia1;_fN)Uj+oBMEB0|{w<#Y%kwHX@M`aiTZ#*RvJP=LbAoc3&2JJ1RqURj!g7pO* -zj&TWptJ?|lh93-x@h3@4=5%C?a~c%P*sh5c1=uP%#VhR3c%kO4n_zY{B-RRDne^Vb -z(cMDDixtumo10PDenz%+fQ>I6!x|D_G0@5)+?OvF1+9`hz7-~JN&D`u7%hwu!@hvz -z8fLOxIXGo1Fa+*n7=L^$awxQkI!TNRXyHZdK;^<>)_PGYqH`XOWPtXO=^d&Na$}Dw -zA-;0eAXhh*yfK)Q6~&`w9Ha{=K!<*mD&Rg)InwK}1|u6#k<4*|x=R69Me22Hr-Lw8 -zM$FRa3~h3J8OcDmDU*wyDW)Ztn+1@#LH0b&d%;vuyK4E8HTI%(+pMQtZI}4?5h2su -z0E^Xx*@CSuWX6I2?>cZvAV>6Hk)0R^T`*y1g#rrNjF)OeSIu_F159LN -zO&U3Sz7y=bj$8S7DO`GwykVQ_DEyO4PI5Ow^6cgH!lE4SIUdvwT4LRQqj>xq6i+gv -zCdHad^vn`Y%`D`+50H#(a(PIS9}K%Jq_;t3#BuW5%I@QWu(QyPrc@jPxlF!_C#a4& -zC+sijIC3l(r#OI#d3M`8feT}P0)&o%x8$=kDj!YjeTfOUtbz@jhMqxJ2Ky3Dpf3zI -z241$>Yt%>|=qNe#6d!U`%0-t(@_7@;S38HnbXuF?q{ikHM@8+j?DWkQoUS88M3uYS -zz_h24vm6kLMQN^T-=E5AfGSx#L=o@>o8bZtm-qM4_wzCu^J}s(9ZA!?sYe2CjbO0^ -zxT=v2numderrOtdNkSXsGuUAOV|9KM#)^T&zG`5Y$1ILdD{iZ)d~Zw+_*5+ouhcu}RQBrGYW -zsXydnS|3BH;nFn^0zh13QJjMYODIXBA%LGPFp(X|xTrthhky=0+Jy=;Rmn+Olu%<5 -zYsUtLF!2)3j;m3P-P%F1cJhGep7)Y?DsmKmoD9$X5pjl5%KGw|B+~lBk6%A8;!IFS -zi|uq3zrLK}Zdd0>D-~PF2MVp(W1i1g9SRlSQ<5-N#C(ccQB5-V?xRqI?vp4~DndC` -zqth%Y$Pja(MMxmgJ5-;u`E-cN84fUcsV7v^$c>h%Rc>j0!C2ccB(EB^0}p+3fJOH^ -zGK+}D9^g`G>W}Pvx;wXlOltw?B09fuQ5C3VluS%bch_7BsgYGC?Oc^zBV4Jq;E`yh -zYbIGXjlaPW!6vFz1cAI-vAu=OZPEI>ZWHGlE&fY&ZLFS4k;zb-RR3r~gB&@u5gdzm6iyzV*3nBKZu~o(fMIbvbim!Bnr$*)pKn -zj*IVp%$C*loUSFIKGke-3obrd#y9x+WS#DdTz41{Nkvr?2vZp5Dz_>p -z94B!2fb%X4823{?%DTVv!(;8ufm@h>vq1zg0;U(h789d~elM{(8doC-FDAt$RfmVm -z9o_O-i0!Sj0n#zfE5;Hv8igVpfut?xZ+(HZO?zVI8`XNO1fTgUvJQ0r36oz~^S3MgXo6@9tiL=fg{xnK~N#4rOUE5-^-}GxWxHai&6>4{6%}-v<*Fr;1^9osW5l-cUh0n0L{T(s -z?UPphS5f@h#a^N&*o5PB&mC)rf{nQ&07qKi+p` -zG(D&{-1d1kIvP2@%CAqr+!0kBBTo{294PO_R?80AdM~0&u(I)O;plX)YVY}hDV;(p -zP?GAvFuD?}((-l*EfNLxV{Br)oTI&!jl2&F -zU<9fXXZG6WfB>~H%c}>_H86QcCS70yd3{D{6Zq|4P*j&_0#^UI^X)qNg)azQYnZ>&ZB2avZziP -z501P`mqmldTi>9

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 -zV|yYqcQ@)@vWm^xF;dPWquFX1;^t2yBrgC)D -z%=*wQII8hN5%9|5aQz%VaqS6)d*$rWhRq2j(7%N|A)0LR-4oqboQlelFbQs0gBma; -zqMNv{NHY#r1G+V?+;C2M%bco(vuP&=LipWF#DQ?^8Q0np8S?^)$UXjZ;Smw2aaT -z14tqJ_gHzFai2G+C#7HUHtO>9dUE^W-!_B?#)!VLYKG`S6{iN#-pL)VV!-)0&AZ)5 -zEGA7Z8?|ezrwU~0Ibh+=fTs -z&c;S26WN5uCPC|VPiDB<=K+of&uK4Egi$VCPL5m4O&T&+y?n`!)SjKfG2Ru@(1n0N -zFziJCr60fCph}`?fvF;bxZisu3IsG?0F_eEtt>F4OYmPOc;ouPV}_#Zk@>LB8SA7B -zF~w3s@8X}zvzTEgU@@P2Fm!i_^rmAHT$cH>urBR2fhXbhM2cCCGVEjAcYhQKHMKtF!6@fQdww;<28_I-ZWe_>+odU>myE} -zhx=*Cd(&QkEs92_kRobVE|qie3o!0b-GZN5<&I~Hir7dsPkGGNXUaHc67dn8xLG@# -z>ULBlHMW{kCWLALz^=R1jF{FMM1~ieItr{}2j*b}kMaQYi_al(LnLh_BLB#Y5fZm( -zD?b8BD_AinWv*!D3Y@M=RCW2%xarmgx^y`IYhKt#wbqugY`C!W#=p2TmMqARO|VOU|k}R -z4`~}JZ#*&DDIQY@IP-`WM6DD6tsI2}^6J`KFNRlg;)|u$r@iq2ujGXfTI=6(Le$qh -zPWlX0(z3iNWF!m5O4nN8l+8AjEAcS%Upe*h`J_6|;9eMFT&vK#8vxsku{q6yco^{NLcUJ%Klvu!ULf4AC1zS_*a* -zO%@^S#?*dKs<{syF31!1c7uN5d&^qE5(lfFxLqg0OHoNo -z`Iu^^;hZJrm@=f-7xH(?7C#@^@Lc416u>r(q{Tp<5N`~~N7n#93S#Cf_R7?>CE3ZH -zBUMb;^ST?x0=X{(nWK)ez+b#UA3W`j`HX*d8>#TsWGC6Yjc!DgvXUa;2xCF(RxoCQ -zw1+IlZ9EJbaill})f7-h_E-qZ=^ML+*LNAOpW&3WIV5Y&;OkHrPRkD0rt<0=V(2v( -z^eK@`h_akk@UA3$fC+wQP;}o^V6Hw`omRKc-i!3#@zriP4W87C034V&$F#*-;wkS` -z9_*rNEQGMi62Rv=+V5h}b0_>a;iuUm1zr%pts^V>Z5`Or5pG?Q+ywNp40nHqMi4Ct -z@h1m;XxC3QvK_6S{ugbq1An -zqw|pJ4qVfLl -zdJ_&GSYuVt{f0y$FLCx>AILj;u%1}Eo}mKf}dc@;#gxN39l`<~P* -z?wVF|(Q>hzn#xK#*Hhl-Zb{WhOaM*7vSBZnPoT12S!)}Z0l~ZN{D)r;(GtX~eIMIQ -zQmWm9-CqBxwOSoD`4Fn%luqPBi`}_&v~imp&eQ -zmTU*N+-Ht&D6j*CPmFnW`t4<8v(WV1DL?USi&H~kPSx#V1RkNIUpLH2mn6ns9SO8C -zw~%c4mOD~Oz=8pc^~=8vULLp;RtJ6WPv#XB;r=J=_NSN3(3=F0LQ9|P0?|gt1 -zEHT_!#zK`4P9F(6hf0Mlzj_nVJxvY=0Cp){YK*BEiaP3A&+rcs6(2E`Ry(r35~aM1 -zRc=w^;P)dQ;!bh{c~a5NmEjDG!BDxARcRvI09EOVd8X%cCqXUNZajcfHI%RF+PSqfqdd-`p+izh9Yy&k2isFJk8+9kSv=WD?4A+u3sWH7dP9Fi81LugVE -z0jB_8mDB@eYiuC;IhUizg^2)#sg9OGLxdA|dqkCbudEobJ)Pg6rI3?w#aYcG+FI}6 -z(hE4cPz=pRH-KXp#nn|V7t|^2MY_kP1la3nhVl}Ool|ULA>~p`n*F8cf=+hI5r4*M -z88}5h?9-<%$ZLcL0oMQO$qSkV%&9wyU=^2n>yQ0f^Y(hf@S*kbWzqApRlgkewF8@( -zG}g#uXUeF*sje6;lptm5aEb9qsG*~EpWpgTdUdF|9IllA(V)=6l{QQPur>BJ80~PE -z;}fMYG-kp)$<7@tMeUJg-)P9%WT>Q7xvYnO~Wl^ -z%+bR~gFy7(H6VBNZlk4nWlF~Il_4OS!gp5Sfhy(L!GocD;?|Lxv@haIkEY_x0G2dq -zBot*uc`9B?FVC -z(bOEzVu(8`DWCMy02}9dFb55hTEynobFd_#zpaVRXBYHDEW{+W+Od5?xn~CiIRYAbfytNqqvae{ -zQMC%`1T%1`5>`zhR^(`dY5w1m5y00mgcM5Cl%t+&J+nZykju=G`IibC8TYo#oeP;K -zuWB{1+*W>9BjvQpyp!k$^xkRpq<-4IU^POgV=Ei^J_X -zrd?=hdh_k6Y8c;{rFC2$LImwWIR<6&1g}Pm=Ps0zu>S~i)@~7lU;seoOkQx@vA$G$ -zKpw`f%-M&5h&0F24PgmUDIz-mpa6>XVnw{iEL|ZrZX~uvz6^D_Ncl8esfms(v8}`)?M^`UpJ>~gz?_>Nm3_%@rDUEK>~hy$iBs@KcNk~={}wgy&7kiS~PV!Rz4J-VU*aE?=1Y@Kxj6VD6V)6Vkt(TFP&Ka95|bv -z|HVsZ<0LXW{jYgR584wINKJfVUGLfBlC~5ND?f)*ac(j`*bVC46>vqVq}shith!qk -z)-rY}O%UlljQc9vcA10+J*-au1!g|e@aG2$FRy0zj`o&hsv#u)3Q2{0f0E58ihBRR -zoH24ch`a=s!j_N4k3)=<(6H1Q&Z>~RKR*4TO^1PO-PP>~oFz$J;S50XQ+nz3OZW>@ -z?YmJ6BgQWYeRD5$lho|-GOH&?U><8m7!@n_41wPKACC`jHW3gXRE(q0tQIB^ktiPq -z2?F#-gft}|#lD{{p_>la?4$ib`(g{;p?0(r;lAPC?Gt1|dg1xde$ZEQA92(pN$4eR -z8b1>Xw7)n`iFD_OR+R+(so@n@m4Y8V9JXC<0)H19ikWhlS(!L`h_&G>+=n^cdl8y- -z^=6&+`3-s~Xh%}&;|ywsEV;0h`@mZCTv@Qc={GbQPxzf8d`k9{cGF0e-zj-J35VYx -z)MI=iC6L3b+I=5*-8Z(LL@V#Grkm4$VdIk+bNlA5lCzoNv=o^_w!96+tnJk|mX))Z -zo%BjN?4Z0%V>sRwb)Z}Bg*RjzcE}v2Q#Ixki*JK(#d*3LXVFdQyrWU -zSW6)_gFsRuGMA@@xvL6Ai!|>FCQ@h=`}Z;tS!Hlu+{f9CPccAt=h>bCl(0dE?#<_P -zp@y+lmDr7yT}B`^?V44<1Dd~TC>K$c%T6r{8?@C7Zzn4_HoNIsltFg=G;k6jD76qN -zB(mut)^3cVg`Dg{FzT2ejTi1-Pii+ZN0O(w{Q6Mt%4~|S^02U;xa5Mf=!=hQDPC|_ -zH&wVn&!Zf}koZhM-l{u0A*-{Pvk|t@zR|2VaD?X^ic3z}^u44QYH$u!wI^;eHc1 -z+su$v7c?+x$$;llmHUgNuWS;R$>;WOwZg~cZgoy9WPc9{qxr1^WR$^~O-ry7u+>TO -zt8$ha54`fvdkT_;mdk;`iPs4Qo8=2xA=hAz_K*)dby6(}9%|77ufEcsKWP?;-gY@d -z`5f(>%b0Mi@$Y}K#YO40Zth5p^lDy($PJ83Q8lCyc3S8g(qpmlA%3&*X_ -zPy`i5z+C2+b5V$+X+(Po{k~Sn)XgWhpHp{Wmz@ -z?(^-~No|MnsXb=WR{cxs9$3YHxhae~coCLag-;>tV)x=+yJ13On;`Y;rPNqkWO5rb -zGcU8enlzs6$DuzO2*t2ioIW<&c@|xdboxGtptP<7!NbUFQ&2T513XJE)fk2T%c2CN -zXuBJn)xC+QQx8TgzkSx@yC1^Ifi2YDfH`Zf!8IqbtPrT| -z!*>s!x!^LiCU)jhUmOO9T+kmG-IZ1*1K^(ZZ>dgA -zInS`HaCiUd*@?*1vFZGm(b8SGFLxq_j`n{1pky(^ -zE&Z>!23*F8|8AE#s(t0%k)uta_M-5j#@zXsoVU(zBFWRt`Z0wCH=}5q4uqt*{Wn^X -zYNUZoZTZOVGjCvo!B@MTL;4XMLvis$aC=8l;>%Ea8wHVz(HZXRhdxYOFDT)AvMk^F -z3b11c`p+@-taFIU>sXD>>hdfqU_WdTw>(iQ*)_wspXpľpRkDe71%SP`a)T3@4bWBbGr}3gIO=U^QV|<=$U)Y1%yQwecdi+5vWV6bskD(0 -z>kfgZsb}jL$Y($Ss>Ii-Rxd`C@>n)C4X$vMY%FGZYc)|GXtl8r(SmtKj99t>og*pL -z5c3N3uRgKfhemv~nk5>3QQjcS$5#H~MVRKF=+6#*u^kzr0j|n^DcYimk7)Na4L4bK -zZ`#57|C9Co1Vwr>tW2<;`@YMA6`0RS9 -z>BFkt8`Cz4xyoKG=$ddQliDLTRkcPWB(A!2LJs8tQ3K!<9q3J$?8<)=q@?7*-JtYE -zYmksMSa+S_8cr2M&^FCEg2?+^Ri?qXYgJDmGd{RDj`Q^G-}TJsU|eYDsD`>G;cLPN -z5e!1+oY2(25CwD&Hl;Eep88|CvPkCDA?yY%-?8>Y{yn>n+ciA99O`3v7njj*Zo@2T -zagw`bedsoH_nt1R*So0K3QIMD<>`&q74N|iBXP00Fnb-`$>5keWA{|TiIeF!!o -z-q@(vh#^A$vE6J%hE0(si@Ido)#$KWF5QG#sBw^69&mpvuy#C&1@hXKR@!}#J*7ui -zQD`LxEuE#H%q!-Qm@|#~UTd=KI5wkoLP4E>ap&0h5UUd( -zyry8tG8aK@uM8jEi1#E5tI-l%3qi|>`IIgD1kam0bwzZGM}!edrS<8K=hx!n+4j^h -z5Ecd>C0%(C3ImZX6>93cwm(75<3=N5#=4qJ9`Dp_YWcFd%r{^SvD4NTx6d4w;(Nt8 -z8OGPoXaPx$q|ZG200uk<%mp3WZm}F%piV#ix_|bg&O{2VhjK$BTEE%aC*aeqfqu`n -z(HCiGFFR63&I>*4DiXPns*N_XJ*F0-QqzraA{a&hq%SWR16>_v)Uj8yXM@Uz-(SPcI@?9neq -zxzl#O28X{cL(-83-5LY_e1=dU^G!>GwC_j{RH*2oA8;7fug>88xd-r;PvRE;E#V4!7X7wFx`2#@QdF -zZhQtLIQrz68nt=xL&SGPYY{CA$*hpYKb_Bc&-sIIM#2$0%Gfz6`aCk}L&pDGWND))2Mo;Ip8|});6%PH#C)*gbHd=1<0-1^>?LGYnmNNBw)~9y;T$om*wC((-Nq} -zh8k)W&+g|DP$g8AFD%ck^o3#}>ynOhr&%hkuIbGbUq|@wzg5ok-D|<7ay{YENI4=y -z2@*eayQbs$Y@0b9u9AzSu9@@1qgJi2fY?1@q-*0YS_w>)20(B5rcHB<|1FYPbp5E; -zoT0>sq!VlgulxSZA`>BE1JG6JmxG0|qb?^$nmgW!OnGbZ8}DROI6}vvFh^bxR*Cmt -zAcN#l*`i0e5w1q{PJLED5MKLN>tuOPLtS_yn?|qfvSxiqMIwr4=&IEwHP&d^J>(tn -zF1_|M{9Ki}ygv*t7PE>>QNi~9vAW-p7Qa6!T8+l7z*5??N=1+B#~s* -zrzAdXLX?U(VU{O2u(%_|<9|Z@d~N5K$UxKIZlp&3#;gyx*TkuiY7VA) -z=&L_rc;ztlgzF81p*HN6-Hd&@q}=3ssZd25Rc(d;aWVitqnhY!9AT)Vs2%A%BEV3R -zr%w%Hj(;`Tra>L2i%*&FLs&RqN8bgT+=o&_$Q9;CUe?2qlV_Lj%J~Z^-IH+8a)v@r -zg|Jx=R4cD@SX*OE6SetmPCn09z;$uFcEMU~8IuaJ9lpeM`b|#UoM#2a4=OK=cA+q8+VU`rR-b3Z8D>X~M|Dc=^ -z>g)MH5EMe%6tN0}Sei-KqoP8+9qDRZa`*6Bpk}@rav<5^i3S{zdbCw8p?0)$#Xv$l7D}fO@Wh!a7+DCxu#6t%8A$7*Tp#44!QAmQitH~FY+4bX2lgL*& -zyC27dh1Xohz+BOtJvh{Jrf|p2GImnR|12G&4S?qB*zoKoxAtZo-d`b)Tg!}1{v(bH -zRn)OaiDQc3iX#1JM)UnIw<*}mqv)%o)Q?zmQi0N7OB-SZxLJaNEQ%C$sw?lkGyM?W -zqbfAm(2U(WZ4br)Deu_)-eSGr>B f0!zvexVebA?HP&eXdD}Z&`k2XXJM3p7)7%iq!AU2~sM6{#^GylZnBipR)u~0o~703pSvt@IorT7{hp;vau4){vJp+ -zyH59Qe3D2|HY-`IzDsJDJ2tl!cWk6u>KS02Fkb7ptPSQqKBA>Ig&AzPl9gPRDtr -zj2EelG!{Srya$ee$Ubg@qoM?^25ztcX}kovU0LyR#Tpqwf;fqde`-faPJA!8{XVMs -zldl~_sL2HlyWdhY(@V2(8`OVe+HfHbhivfcD|rO3iPc3`P;OkO+VZ&y;L4qO!z9>o -zLjs0eb|U7QWOg1iJ_$=mf242SakjQN=Tnr}F(4ddD76Mp9hCPu)lToVFMIVG{W##@1? -zEQmOTb>{UWLGmqFIw5B?F7w_IUpB>DoCYq%KGl^ -zYk$qhfqDf=*C3@8I&^9-KEICvfjL~he{`V{36gy=YE1;utLNdtw-uDu^mD;;D@DZe -zO-FiU;(ZosRjj-nc)9vy6Lw)6M-sS0kY8>i{g*6tXeuW<7#R@ -z{hiPRZgB%6{(~caSL%COP~V@F{)t`$iUjvP)@f|waV7?fkB%qZZtZr$$CN|LMOL^W -zhQZjHxJNSvPxjlUnj$RnimiOlE~8-1Gem-BZzf+%_-@oYsDIE*|NXVuWWKj5(S$Wi^y*WUx|~Bp -zEBih3U;OaP$0O)*v9=?OW|uDu!!EMEm&ffwEf4zSHn|}fIadbBd3h(qQc^K4iIDS9 -z{i*ixA5jP|2*@`#k2w_Kk+hG*08UNFBVax|BL2esU*6Y$)PVZ3N`s{^bfMdqOQgBT -zvE=J$7k215bRu(K$)4K;Qy#4okw!0(7`Pq`TAo;(h*h=WCel9bs{hyXTjNK+;>V<` -zeq=0+hd*^E6aH*Gvg+rwzPYY*h7@4w!qNHi3=_qvpyAYsn@UoD(i&$Q>SXG_o#Al< -ze@Lu3XsFybD7_&h=dyP)!PU4coXZ6i>C+H@;bFb+gXW0+@KyITs^vnE6;mM#?<(IF -z2rXV!%2TMO%$PBEYVGS7xLQX#Y#*?g(JVF`0aIhl(xZRfa;?%a+w)d!k_lgEbF^x_ -za1(m!Nt9Bz#~gl6O@AhstV(n_jrZ+!3(*JX&y0`ji1SX`+t`_kh|nW>J5=5E$UCKu -z_#|i1eUFwtFp(~`48m<$FYGR=*1XjnAzvV243+ycN(G_&wS>_kL6V`pwF|aNG^{@3 -zEgbgINc{=2B}7Est&(U$Gt~bOL^pxi#E6>DdT8dkp?FZsYNg1MS&Vly4^7W_aX_m%);EH*iWnz{vrk^$3V2==@|jmn+E*ZR690d=CahhXH0QM6Iob1ob{b}AUPPG$|spsd+>Gm8I9 -z4K8{}ccZSekq-pxeh+Bn$Zdsn_Q8aH{5T`-Y>UH#QlI@Uc9`IVeX0w#wpP@Zu7uk5 -zIp9vj&Zv)EVEs=t_~^LyyG=)$7$=D^&Yq+n88pZ*`;u*`pd7mT$RFip&>|?2AW1|hxdPY!S&c@Zn@70+u_zWoxI{j-Z6Vz&_T*x+GJW` -zdaTd~+8Qw1Jp1Cxe-wttDdg^?@*zcwJQtb7X94Tapa>rHC}xbmA!dZ1MUQZV^_CP> -zRV7IiR}ynTER-yc;p7d%miF^4iWrE!BC4x!Av~$^)3JsIgi!>h%D -z%K#{&0L3jbR&zThZ2^RuiqA*4>KEoTF&^DRmiF~YLwG?+=ifX)b5fm_p2iV)XLrVf -zbz?axKyu{Wro{vGl9d+to4r`no<5z^U)+D~#B*#Q_4GU5);kHr2OsbZXrznh(pz2e -zZrkOyv!Y)9|C10rtGi52kplyt=tp7nmY76CHO90TICj-4{ss>*DN^c6c(O{tto^TN -zS?gaLgjD+`vBos -z*ey~;i<+)AJGhZx(=@X7K5VCc`ng|hISeNQsg&oJc5IJ9O@Zf(cNh%ONd(z=w_0E@+a-YGDaw1E>tue{r0|D3MdmR2kV;`G(PL0V7M!B?hT!-F -zwTC^2tW~^lC|I05w5DT4#2d&{YiJ!redu#bVf9P0L<82h&&pgfVa6prr)GnN0 -zhga=fu=8+l{0N)<^Vk`=l2*F7Hc9r?WrxpGKR(-f#}FSnnHbwS7;#fGSAW!Tk{?H} -z%f?-x!h&(obRW{B!%TdJRQwk}99)WklNU2|5XVWPBWwKOdo3*F(8-la%R231Ffly) -z4*{MED^|gD6IpOysa-)IcGY&lv#E~{JQdik!YCgaY5}IYm{Lnlg;<00o$%`eFYM5@ -z(@QeXe937Lzr@QI8rhWriT}u#rc8rdBw=GZ5OG?Jq%i*L2Iu10oWGE0p!X%vLC%x# -z$VIQ~1CFyVxI7uCrZvB`FPVnIgZu=g@Wa} -zn@b7Pe+C4q$&L7Kq?MKIj3@8|uHTlB{d^)JSdcq2L0#0=@`i@c7HbAcn~-Cc*3bQu -zn|L?E1wc$w1Gx;50{bofUME?Sufa93%+Ol3px~o`+7z`4d5U%O*4eUhdVQf&jvR2( -zc48v{07fP10h{s74Rtp=&ng8U<0&-s;gbhj8ItI8ict-DLh53V@XQ6TuOXv>$iwW> -z{OBgG*7{Q=AcS|)UIu=OaURpcpG{XvN3ua- -zDv3d7K>GUJ=uv)i<&h6t6hYbwOGbZkHZ^-k%%h8KY)g{G&O#aSPv+Z|l9Vo2|n-~iZ;xGTZdhKj5c6D{1$4>rRSQSsgvXZzcMg?C8@mL^D`h -zV)}*|K~py%j|AL>n2^xL=NF4UI=A@!l`GwxT<+F+rz -z9P3O7_I;eN(GpioVjI33ra!!Jj9H@lLGXQ2tH=9XoVL)jp5qBOb^>@BqF$uT3D@vU -zz`uo0_D@5xpfg28HK~3Cr=p*v{+r(21m~ROnZvKJih9F^ypl_$rO?dVNvy%XXQ{?{ -zRtf8{g@aI=WIJVW^56*mg4;%>b!)gbvOsYQ?8wAVCdCSNZ4M)uyc+w0IP{^u$RsCU -zdlwUheucA@`1~E@>@^kvhHHyNd!x`gi{BO#AQFS%jsf0cu0{pZ&NfpNa#DSy>{0dP -zJ!diuj6X+2$Njm}XHUlGZ&{UZMp+MK{Nq?LwBUmKlV8$*l2)69C7_J2C}~-Ix;DtG -zES6~zw#<}10Re9>GQ*{{#;vzi)_;J#o|uZOt$x@%ro-|f*f)Vebp4tiRBBc_1or;2 -zMz)?FPHVW<_HUP$P`OkAjbGLZJyjFuMuf!zCJ;CWz3%L|_7rTsA5$l;wxLx^0+P&=e8hi -zP9jm}pvg3|#k!i-QoRv}L+T!wk~Op8t;^9vG^j5cT7 -zTOg8+GiNJJiKsW4Tut04r+&L&+ks_U1%qNFs87k?UO;K^Rz6PRN^Js*{jF!lG|$KuS4-3)lJFOKpy`)i6{IeC~r~GzX*4 -zZJ#@L!mC-AvB0Cnd*T=rRxQNb|#T%0M4%|#J=$RocZL?M>YHDicgKf -z2wA%0{kGuH2<^h$nHjWkQD-U`l<2QvO;T0zicnf%A+^A%f1EdT@+ji5)_56!I+9qG -zU-229x=V<-bARcl3IEfdPe2d`NqFg+NDk`qul7QzC}6LiNoPcsnUAvFA{#<^Y%grY -zXpu_j0HG;&;4aOC>x=@-Vp0{)2ww*hT3t2&d(RhX04ME{(Q;-i?;79}pDpwh@bS*y -zPaS_Llc@L~oG&qDw?uIB$w*kYy+-(ho|H1a4)V+KgA-grtClfe8$9rbup<6&(oHHR -zJFAw1v)tms<^lZQKkPwzXv(5yKZL1Nd>fh9mTAxG<)p4o>i@1$Ri)cR9FY#w!(gaW -zVgyquft-7$rzVN)Q!`2m_U+UUzYYVq%p0w;hGav~ZWJH5p-rXknnTlqn|tH41g!#$ -z2#MOSe#~;{Q}zn~YI1M_lasQu)jPi)S(yVsuI>n2I)^9Z1jYWp3Ew1&7MOUZd=Sl8 -z!xDrIwx2wP95~gw9OdAnLd_~=#)03>gXP&4L~dvEfH%$r@K -zBMOjV5@S$Uv&kI(s-DoTn!~D-E$Jc7H28;>R)4&#WviYK-#YnGA72^T8ULgQmX8Q! -zmt0Qb2qQyI8Ch4zGkWR}o&WHA3(S2rSUSbnffn`2e15s3mIVKd0=Pdm -zB#_x)_2cex0%7WDAru_cASif*PwRAo>-aKl!uA_jt1#&`%X$;)2(;)A>k#owxh|R5 -zTs%?4{gt&0N3_4V?PKnYThd`s-bF#!bQiKE9uH~=n8rASaq>CN^qx(ntDK=c)dzxb -zMBUwmHGP(5RLhKA_Xb+NI45y2$*#}bQpTJi@H&5tp%O)67^9l1BL^6JNeiuy%Bg7A -z$-9xbbHRp!6DZ9S8YxW%{e-ylBayf5JmkLgwQ+BOW~+mlq*-MSWU#4cYM0KsGyY{K -zZE4Ok)m9kR|5U?1MbB~>OHwQSy3%8o8>nG(Imt#Et^)zm3YrQ$C|%r4&%N&Y<%PX9 -zlY>1ySPo&k-{k`lZtDk&%AQ}RSkOyRL~bekzJv~}!p;+xKi(MGSv@D?d8s?`trKIc -zR=qhU{GFBbStg|=Gcd5qQq;Ws-)b**N7OS{4PwsbpV{vz`I^2-Z3b+Mt3p{bCd4*Q -zJscRtDjVnH7pKCwoir``0bTVM16Gz9alBNWgyqmP*6S@&W(fE7p>;|nW8&S -z=g4DXkZUuJu*Tg%iXMuu3H*>{6OG@orU#k05OlT1_K0)y($XO_ygXJCIqK_)g@dToM&RT3#eBDqgskkiI= -z5YwzOOD@ambn&B{y`2093DyRBNz?xd_8PgLHA2U+JUD1%a@B>%E{VLHVyKbiu>FVF -zJ0rtSn`SZH_}lp3(+{{80CsK^+5O`*U1Q%O7GnNy7KR@iPRK-mdXYuUPhthJB&~9r -zk<{OVs-WA_l4Du49)v(VZ2$RP8dUb%Usz73{(OPnRgaz5p^s -zTo2G(XpB)-&v_9Y814_XiBmA=)kT|3FW -zF>8~8nasl9MtXMYna`p9aF;0?R7=pjC)wvCqgGwIX(L+Ej!63q%pexo;S$x#+|0mf -z-e=sy`{|WL0_vTJ>0-v*F1J7Z#3TQI8$Rq%8|d*zpqWa7MHM3a@r=zrvX*HDgX+Z}*5kkN-=~-D -zM5bPyPBJ3U1Z-F_TrmqnUiVajV@>^|f@&FbOK*mb8{n6$?F -zyZ$J2&S47DzoqSn$78Q4;d^JEK2ux3+qFjT)Ui&_Iqc~PuN$flznblD6C{q#mA>Q0 -zHNre9cEkc3FC%S7?**!P;?4U5wUJ!)@~0kgbDgh=c!i<<9hhS>S)6@CF;vYFE))&u -zCRfXxl`TP+Odr7U4UURfly)(}%tf31A5PQ)rjixJvR3)xVD)$)(0)*XsEWKl!R7S! -zz9x}rM(6@cd{fLIv)`2KLLmjnefIU~w>S%dI`#bk#gSmzo`9*?j;r<5cGKvBQ-Ait1&TI*k|Nlm>EYw^IAJJ@ssz79&jU@{eW^$x6m(aJ| -zRta>*e -z7iFFiwM_O%hFJnb5Blpc(39f$+b{`)A51oZb72{GY{gexMC5tK^KD(9PAm3A@jJCP -zI1gG+uN_Aq*dxc -zyzU}HxNJ63Zk$zfx0O93=<&STdJRa)7d9K6 -zPJ$RN`9siq%2L7PHlKru1tqdb_LL9nDOZb5y|+4-;$t_Qich#JKOi4~y|^Z$vcXHJ -zgYxT0ggieG!B4a$jP4i}Q#(9n&*yFJT=%THYbyWX;Om$e6x`3N^^2J;?@Tc=l%2#e -z%bpm_0)P8$v_cYA1XJo-g}cT;@b=dG;-e4h-q#0VFaYHu9w0ioe%i5=8~;X+j$qSd -zg{TsBH2mMmymJFWr46r{Otw -z0AvzOna8!-lKO>0)tDF*PY{Wak~>YvKIc>g?{!`HBhXAiR|8gi^@SiiYM{Q6%EB~D -zY1(jMatyvfdRMWZ!N@je;tYG%Q{%wa|3ln8bXlTBYXS}1wr$(CZJQ@-+qP}nw(ZEU -zZDhXNs7Cdw^Tw!OvDaRhpRiiu#QP|}W1HZkb)kAP6kl$5|K6nB_gh^d3p`Fzv8B*e -zvjU*=tdP`4@jsPU-7yXletUSY{?rLkYLXdpHO8`x$SL@`5zx?3tN=NNUEP?N;mKx&KP$}P(+F>~0v -zi=g+xmk#sKXMG<`6Su}0!F$1>%0T`_5`!3(t7l*U&H?rxBoD>m{(p+u9Dmu1hZ4@HnmH#!Cfcc{!*m}*&%%BX~ixZ)nI8ZLD^dKny=I5(e<+!LG>K? -z&nsJj*k{BiRIwUZHxt`|s%M){&IZNtjH9`5f8Nc}f>rpz>P&er2=%AY>ScB(jC<^- -z5tSs|n-$i|-0FO~z6BDxxcv@ZVd90Hz6aXfTHA^JB^#xeaxRk;GN+sPT@eJtcg9ZJ -zK>wTM5x(vma=VU+tv-+*DLBTikrC+V`J_cIwMijU8OAd~2o=Q0mQO)jS3c^OGBcX^ -z-ZOrkXh<}>J%25+6t*8JzTYkzD7&eF%s}m=N=k`FzMJ$Ks`&IvYQANJD1<}6eW^De -zD@UzQ*qJT!3{*EUyd`_(^e*S%4PlH$CwNCCAZew`dfL}7i7du~v=ltn!n}i0{1+)U -zyI%U-{lBa6Y6iRhAB|Tr%9PQ$_z!QniY@5T39nb`PGcT=;=b6RpMS!Bz?v)vl>T>Ju3Zj`iL%~9B3fhGQ`7+aWU#9FqM9A2iayCkOdZi6NT41 -zN6^?Gjym{=xIZU31&H$foEbINq!e*wgg*HECwg%CGJpA6#djt|P3f5+axW`xl(d0H -zr`30}hC*h>7}od?{SdEXni+5dc!O~Hd#6L6S&e{OU_D{wo?f?u@$a2CMe=mLKprQw -z{L@g74;g=8FO%bFx)P#gXW-iJqbvbz3}>hIW;zP6mG#C=V{SKn6BbsMvHQ)4B@+nB -zPK3}P{Yslq?K>T=!RzJU+CyYGjrb5&2iurxjy$kmecl2FVYPBnrkY!&=P(WXr&2Wp -zE~(K4@XM(Go8+Bu^kvi-g3SaFM?uGMy*MWVS?dBAO|f$cAr3&F=I>l@1ab=7bh8K? -z_C8hYuaL&nqvDaO*v8gL#EmDdb+@|5$YSrUl)77)uF87NX%$2nKr6;g5IhUKcJ=EE -z!I_x2R*`k1Y5#qtV6z;>om#-gvCA8lv$&gi$~c%nC$PV+*MKo+@LA+r8zD_CTdf7o -zw4zOkq|xM+g^4$l+h0SH{=?H=jpc}hlg65U@h29*e2r;V@LL};aYVf=5|MP_OB>UH -zH#!NBPV;P!?s=A#M8!O58kAxZGih(n{pIw-jk&w4I%{I+X{(Qu7=QBQb-bgtM|WG`s98KP%?X}LiH}HO_{c{ -z>p(2M(N6c;HVjF$rM74EZfPNUtT%Cu5j<6Q>3d>@24;yi>jksou8eCc`aGwbg=Y2%Z}U_?s|?Q7 -z?cco4g_zk}Du$!`iz|&xM -zr|2QDqq))53duT=X3#}z&B&e@N0@N+E%eol(YJZ$d)6L;kELqwdd3zZlg03F-E-s| -zFasksC!F0-Vr8W?vo3`g7qdhKzxjk9wnPLK111VXLiy~ylD&Nog!@h3P4JNTqb^Oal=8;Q -zz`MHrhI(711jX`pkNS3VhIsgFa>i5i0i70=(=i+>h7!}nrV`dr| -z{-K*ZF_gYo+cP%vGslkfm4VNM9x;~B+c%!&whZh@tr}jx91|ydQxH}gFOHJP{v}|C -zGw79>OoWK4N)*sn*uNlWIUzU<{l?=rKIF}yKHXOofKiY9{gReQIYX|Tvj^J29~=fe -zG#JN2ZzYML6Y+g>dLh1fD}U9)_#3sUrs=&`;(8m60-?!?}iOQ2lAc7V{i7O3VbE -zL~U$jyLrNc$&c(U3%?^J3clr=hFr0c={-7ngjc!J7UgV*KC>N~qoD+43hP~Raig#8 -z%*<`K>ESB@BZ4d6fW_HT3x#O+<92ELI}Sv}uP^!S46Ru*xE4n$87!|8G(`IeVW)>W3`Cx;7vB%ZR?Kedo@KI)Q_0qApsI^Lg -z#C47KOZ3Be{qGvWF|^}d`R%T1_^uRvNSl~BvRiUYpH$YBM+7PdF(kA^)-+H6ci$%Z -zYt0rGzKJ6YuS6_eG-;MQ%$300?Ql*yh276Qd;3*cNvifZr`kF`E6O>E)W!`%wWTTq -zJfw82p=clGKhKKqKPLirZDX+-DY5kfvAN9uz94o6k2x<*^X7QbK~*4_Bce1Urt{2G=A?-=E;MhEH{ydW0Jv0`%O?ByiZIU7}GlRhdfOrts= -zT644DQDjb+bLhrOsusPQ<+9JQq$eyIleUzcgR`XhH`eYN2-lD=oSm%Sq%cjqlhKe4 -zMu*(PmsV~!`E5_1SqF9y?VW_0BKwwn_0Gmy?ye*k{slqN`c9*Dksap2}|T0a^sc#9$Z!I -zzV<|Jdn10?uC3U$&G7h0DpKABj8OyK0hOS$QR-|_UQ()mK*HNvr`{6U$Kd*Tp!vNd!4 -zUtsLM3tuIE>uC2siN_C4s(dpE`Dpfxi!AcoZ0$)eLL%&~lcz*7K`eJ|DaVlM$m5fa -zw7m&%W6L6Z`6@0jK$b7Mq7uG~!lvP}^NALNf-?~6^G&-K2oSLyOJ6cFlE$MW$Xb!qlA8!EW?65oUodSANWIxTlH?GUV+0(B;r_nl -z{@k4HY{SfyC%N29H34iFXUGKFH6&g$%Gh#4N2Mzoj)8MM*nc2fW_Z~h=#EgkZt82j -zfV(&Y5z{N>X%{TI2rJPwA#`Gn@NOhmopf41Kts)nx -z!iLd>08z>N>Wj{WfW9+C$4p@TyebFM%t;ghso_C<#UqA{%a^|FJOMTBnOiQ>IrYE_ -z&A!@qALs6kTuMyop;$&;T1!PvHDGe0RUlktq|BB8EU>gy@1bm?mZ;efxvXjWl7#?B>;zaRJ5Uj2NM22Fb+BAQOi1YbcD4;oE>1(|Ve -z8NMX|Cx371~A -zW_S53xT)P(%7EPllHltMDCW+?3&5N=qzvf{_?xs#5`DdxU1%Y`8W -z6tUWd{}}BH8#qn~Q!Jaj?01m42)9duwMPqaEG2{O+8sJa;a`N-v1n4dKfZXn-?ht* -z*b{awKYBjf72s?8`>z)h*yWVq!Z7w1WxQG6c#5OpY;- -zo`*57<` -z=D?cn!ZJdl8L`@HlV`{y%Z6b`i`B=M5bz~_j2Zvf&)JS$p-U;L<$k>1TPDEfWT5M5 -zY9s*tPZ!y1ukt;$2g3)kTXAh*EOYB<(_t@3DjBxTv`~v+Ze-~L=#ly}( -zVZGFr4{z*kGv4?~`HNP#P(@ym$k0FSTF0_YIMeNC33wa0 -zs%lttP24O{&Hrl>M?E(+SB=E#dniZTGI*URC_6 -zyY;`Oq==yLm8u{myqs>HpX>!wM_F!BK{+h#2f*%K*a{18aK}H8!z92Lkx# -z*;=!~2v>GJS|PbG@3?sM^lT8heg%KoWDqV&$eF@Z`kC{)VTer&__LO8 -z3CjJWq)b2i4=OlVPh5bC86_I(S1lo6#RM8anYD%X$!-r&G~!0P_%x28x<0)OSE~)~0+Rt9UQ1@qfZ;_VTY=DhgarZaGzuZ<1n<%OeO>{Pd~djWD2# -z_Vk`h#cH}<-$UV%kw0KMxkHHA%)6*e;wydW#z@3G-wq+4@<2)=h7U@cDF|7SD~Z1bo}hyA?)T)84cXmQ -zc1Y&3?f^5$N%>M$k -z9m5z9{wslpBrd7t>ySf;suC|A`k=DtNMX|!y6#$uKcR34zQE?mAw>g&F3}aL6kz$8 -z;4`WcKaUp#!%%n0^Tsn@lLn?L^p@Rha7#=h`#_E=xeF7R;ub;R<%PD=Am^N-{(I7! -zFhn%!$R>VItjMM2CMAQ*SlxsxNf(q!S_fUX3{(me7*uqyAI`?1?c^_sTtXl(J(Y@{ -zG4bN5jrkWC2LcTp;`lW|z16^@)tb{-v8Zm*Et+Mw?rp$0V|mLoBS%u&Zv%b9^6{E! -zJy86zTQ^J-ZCAQzJhDhe$4&%r3gh%z;~xoB;F}1vGcNaC!5xz~|I86VK%?hQBtfv{ -zIR#Zb0zl;NN~Z9FYMWvkX1CC>s&PPDlrSElHO{vE5$1s24*1JiE2EimPZwaRDKITte4Xl>(S -z<#G;T1+1GC1*VW2#lQcvf8y1#v+W_6xAH)vYeA|vCASod%-Ui2q%kubkfVnWjFKEP+9LTBXkqei#aT>P)z?u;NRUP#V`TOEt(Ib&P02 -zX9JR$lGf170={p;Yi=X<46NsVT($ku@Kk$x$TBFY#iRB5K`yU0MJX-S15P@}NY1v=d$#BDjS`aTg>MnAa!nFc&Mdx_& -zDPW*`QJ#y)5HIZ^C=djH^zP~U&ZOO;AGHG@OHQM;Tjj04_~9==TcSfi#vxkCFZ%K` -zwV8$>_VLOGr4?OJHdp{p!U3?}7*)JVK*-Eits1@KZ#TCHIAA9TE+T;Ez9K?6fNBf= -z&c7$$hqove7F(T$t7t=HK?&`x1AN4)Os-MHLpmr>7z*>l7ij1|OImDcxqpdW{BqgL -zs0Cg1LrC7d3@Z_9{VXno+}TJfiHKVi`;McGhN{#c(u}c{-iL+)36BZl71G=+hcGUEDDy9reYNOtJJ)kfISt}mxZ?xs6q?YXKN;R -zG|BaZ)*;P}j}NLSzo=enz~Q;FaigqNlt6g-IuQq&uLgdZGqu+Izp;+%Cno)-FZ#9A7lmPrw6| -z)rQb5$#w0qgd#aT&%QaBIej#Swez+((?kQXPs8>#Oa8+AF&{!EYd6RGZmT|j?S}G^ -z?r2;!m|5dBZZG>$krhvYB(yELNb0df%Xd|F!9k4t%)gTP$XF`N3Ga4dxsS -zRT0@|B*+VIO}bqxzTyCWN^o-Ac1#?=_9Npk^Eq0&R^cc^jAX%vJV|CDkC94B3BQ_y -zdKNn<_6N0TTdIklRAUe~mJLNt`=a^=mTwB&{aFXHyNW^BgsQ^T&|x4Yi4R`&wi^ePYwHO;0;ZG(*Fkkxbu=kvCX)E=3?7 -zjJ4tULu$I_<`{wYC6A8UKQR%EiR8DkK;Rlq22(weCd8NRXGk=cN97B~D6|<>81;myMO+6G-X>Z2^59&P~~>vITM;|O1CGBL(sQK$g*44@0T -zfM_aM$o5Bt^_eo(hRCP6c&)B>X0;f<1FB}mEa4CDa|9)w8=s&q+t|^03vl(O$_DW=h4~P;4 -zR<#1Ya&qWgC%gyzx72?mpKGu`{uDzXziDEK3uud+^6k9PYi;!78e~Or3#v7bk{tDh -zn{FH`tku1C&PZ%2HVfl}d4|B8(YIARxnQ+X-Dl#m6ywheILKl(bLA09Yw7=a)_IT? -zTCZ}v9!ddzrYL(?Up2_`SK4(s>ebOmNp~%m5Gfri-fe-9v)PcVB}6X%=H5HIgpiMO -zAg}GF&IJl91Hm3%^siJ4ms0$bs6dx=2_u73)!h)GVDw@lYvv{7E%W&#HhW}(&VLku -z@fWgb$ma&!IBj>1W{_lk)$5}QY7p#3GIUMK; -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 -zB|_Jo-S?aRr-0@?SU^j&p87M(NKoO;=xbEQQ -z+QdxpWWPHO89dzm@&u8<3bG4%WbbzvB}tpF(i6hs@GL6542?`{=E -zt-xfyZJv5J=)5OI7|JmD>B~h)#O=MoHZ?EAFKuSDIIYb#DF@5n#Or({QL}D@bH33= -zs^oikW}LY#a`3Sg(Ej+Vb~t(o1o?0^pZ2j{<`P7)E?O6)g4WWccw#mAFFy}8TZH%! -zwR|G`m`p5(yCym4czBPF;@3(e_=7U3HHS(=0fklI?GY7Cq&g2ORM(V-xI5{)$d5co -z412S2;6AB@ocM-83v13gMae6?Q33?z^B9>3Ov`<(kPCRGW@v;Zo_0FG+`1w>`hbhL -z^N{TvuzR8tc07;K6Rfro9qtW{sbXU38YZkul2}flU!_%nF7L8vWgSsxE7MlN{@QFM -zKi=YGDxe1TfE2fMm3V?8Uya8n+PD45_!1TO-fRJ14Kc`;cO%yqB -zEfD&Ih}7Qr*S4_rWz{1AaqkDZ3Q5g$PCW>OyiBDCEIK4o+eW=@lvBoOHQW)4B4kCb -zC>_DWb+39;^O&}}66Ix38`&na(O^_QO3y#wF5X$)OOWs<4`D3R7wDY_dQW`D;~dYz -zyE`ZZj0FWa{1VmD7xkDLWgF57GDg;8*z$@EUxJ-Bf*f-#?99a1o=J%lU1kiHj&_4^ -zp_@3}kzIul%rs={RWfE_E{O8Fyy`hDkjGX1JdR=I;x00AdI-Mnx43FCTVfyf{U}(f -zgoBW{eqUgqL|f-=pZ+Pl_GOyvY1hTlOS&?b7mUj-x}kd>4fu(hT+O>Aqpggg(|UHK -z+@NX|2!>N;C+DHkM&Xj6?ZmCTsqaCDF)!~3gEI7RxrzNET7uRxf9#8Oa2}) -z{NZu%{FO#kxX`2}E6I0sSh5DXjCN_f;hk=ihb%Ff?q3l7L19X5jJW4kk6n2+qFm;A -z-q5CTpm0DQAdhb6Ln_O?zeAW$tC8otByFN=BCM0qE8ShM+W9Ob98Z4g4kGEDz!6;9 -zdHlf038ihX)-FNO=5KC}H5BqnGv?_UnAQ{eDt}lwN&+r})()NpAK7%+E1)AmL=}8^ -z6daYYaA&jD8zR6kL<-Ddx{CVDK@gaRo7SR0bY7|D(Vh5rY@K(qD!3DUHu<(gdZ0}1 -zzjQxxL0)FP@cD&B!-^S@We(U6A%y;{%CXc4+gzIfP#SX(3HI -z&4q((u;DgCFnC)h&N2T_eL^ -zxAoIQLJLf~Yk+6@NV|nmJqC#Y9INdH5Os&73`S(mgy=_QPbRv`Z^;S&lU4&l{e%Z*>3$kDKI5AKg&K@99$bSyF1UTIuc?GcJ}y)vKJCO9~G4rdyB)myA7xboSP?W%Z|jZPp~utb3{dBd#ooH()1V~0 -z2s;Yy`fqo}%aN=?G#%>IwdTvo%sPRxlz_JC0v3PMw+3`~3rLBIR=Ywg*|AC2J&ax5 -zsAP2wBQX6Ul!5{o6jzvP;+kdQH7zI%i7&eQEoX?XXdZodH+Vfy;9>Ig*pMg;x46Ai -zxu^IGs{Dp4IJ%NFBQMo~Bmfws^&u$7L5xRN+lD^IgugtBT9keIGgVWzJv@@8p>tIk -zbKZK16HMmdoaL5T%8%d`n|uf1%&DDfQumQ6FVO8joRLthw(&`J_Sw|n#qnU7FChE- -zJgIEQos3!DW3~AtWitq3c(vCHN`93@*0DL1M}!laA}#CtRiMzh>(+RR!eExKezPSK -z_J}$Oe-x5dV9AUypHQI~4Y}Hw%7V~ek4i=G2pqdkWa}mYklRs;g#{d>ieY5BEv+;) -zOrDIq6s4(4$^R}GQPW*B5{T>KmTS;Wu>oQi)9Dvpmp3q^Qk#Kr_=lNJPQ&5qZ2kD5 -zCtrVMpASK~92H6f@e{P+Y2>laNMNz)q7QXojru`_FL3ctdFP-@5)aVwd0fv~O@GNRB>+5_? -zEbzNy;%?G?+-1V!rx2bH_KE)sVb3b)`WI?3!*$*`ojjVXEjSK|Y>}lQ8T5xFgb19JFcb;|Y -zd2wanKa@kKrW}WA2OmqLvf5oyp}7i!Fp^mAkM#+Anj8xP={_f>-5np!VS~n7x^gz% -zlx)7*8NS?tP_TT4c8)q{jz6J$P_uVV -zE@CXZEp`#^tP8FX%{dqP19z{(k_`thTt&{iL -z!^bEVRn{t~cXnta>k{4qbPm^1sBFcH4;rZ}m=z77KnAc@ -zF;evun*s;H%>+s?<=|n3uGR;Yy(i^#0a@NoNQ+x==`;X5k8%m9105z1@L>YClgYd? -zZd6=-q~_$h0^5DS>!Ias5x2m5rX(A;Tgt)^~DK0M7gl0K@Dd -z@akYzZg;exN|8TmpL#cXv-oC0)8nb>TaGsE^8eXPq+`uGZ3ylx*J0~X&@;uJaDQPS -zLwGAo)TzUh#0)NuSd_Z%ih1<EVB -z-Y4n|Bid1^e+%q>x8jc{)9Iu83+}lZV8qN?Y&J%~-!kw9sZ>z($>OHQPhC$Y4!Fnd -zW-GO*)aqlUJfh;ZTDM{)P*&Gfi!ka1=CQ3%TxoQFD{7d84z6%?K;x2JgRLtBNL+W2+(cE}_{f+loZl&$YXf#G+v~HmcD$r=r196b+Wa4> -zSO<0VRCe%a+Uf<-8$AxB2SI4WM@u>WvwV&1VFctt`6pGQ@tdrw0xK|zznXIe -zLCr;Ohl0T^{vj{{i9xJ*H9zf20<1)?ySj##bp(@tb9@#Jyy80Ao~+7cAk}NGMkifX -ztPrMT&Gwc9$JcSJyjUaHRFYo)6y1kvNa!!caUVpy|KubnUJ5&&czmmW*=?_sv_qKK -zI>UxiU~A%tb*)E*=XdmXGFD}dmeAh(Hyg(yk_f2tt>9)&;P9HA?&MSp7WU}0gD!5U -z-|$qTJlFIC88h=W-I^N -z)w{<2&WiJN7r{XOg|Dh?Fpb=hBm;KP|>v;=axy(w0=UMh)#j+8?wYZ0t4Uekb$T(3Ie5rYD!Y -zxY5C_ei69+3%IlyQW6<(&u}7;Y(b8aoBJ15W2fdqn*YvND!+Bo)6l4rY2?v=IyebB -zP2ihT|A@zm1$%hQ*qcstQct@KNrx+D7TwMoLtd`vG$l_LKM7UF?;4ZQC8PXj{Q>&Fr34~7EHVUdMsYi*FRj~_&nM#^4vC+N= -zlX`-JeYz$%BnynLnA{I;=B;Exb~V2J!8gD3X! -zC!+mZCfL8U5U`KuHb$Pq9ir0ka-y}u&vGRxCb6BkpS?x=}1;EAqy|8i%VWIssoCPhaApblG#7_R+*If -zbU;U3^Hfr=m!cuUHrKSHb%`+t;E1?kDVo@;+XP=@`FR(!UCAT+Q+p& -z#JBu`7W1IP_mB#KcQs{;;Cpj)xh0%-m5~TIg=UV8-z6~@{6C_V$*U*>eqY}^tsKbf -zl~_Rd=zX^i2BldxMTYvOwR)wAhV~(LX%g=fSHp7egez52yG^#lf_lCc2|LeudB2(k -z>r*~Xghd`2b|QIK-{T^+Zbz^6{EN3$cG@m;GW0@G`OXS9jHxd-fjp8b-5d3hv(+&T -zo#_GWVHEDJov52M$3<|G%XL$BLkZ|ZBn?4Y`bCqi({i4)BBrLAD+YB*&B4oL^}NaaX}o~T8@?=5#{&I^sL_xv3JgQ8JkcN7`h -zkb6ZP=S&s7YI3rs3@h_gx9Fl1tNcd&*oo;jzOu8QhJZ-mitGCw=Lqi+Jn(#_qtdwn -zCZ(yBYw9$1Q_ldnqLFZo{n~nOKi&%*JA*Y%#b3*UJi`|)3o*ygTHxenoh}8KGuWsmQEU1nppcY -zOIoy!e=MV6{y_GgcdOITKwAoF6=?uqQ6R|S)b$U4r!oGtla1LW4omTSIl=Po& -z(La0UYWN&4&TYCyfoXv%5`aGUqfdbd(tEJbS~zwyWEZi#Jcef%Gq?twcHu4fl;Z5vbDwr$(CZQHhO+f&cdmGslOtno -z5-;%`wh?6->B^CuVM&c5&Xz5~)BX*0#F9U%NHJnf|80ZN5tC&@BTWEeKlXJJm;ru( -zWP4xzlwM#5ND3nNIKcn_FNQqdov%qwqd+v> -zfMfGsdIi}$7C$|7qnZVz^rAt+Y%&|1;`H6j5FvLgsD~|kirQ7}Q3GTI7@b`iTT;KS4 -zw_2nc^n!Z_%mW$4oy)nHJ;o6{ra)$S2#s35OSc#8vncKKB6`RS;b0vUMw1Qbl4!CS -z6uoE&n2?tnr*l~J;(MGX)g~Em7^G=N`g}Jc1j|xs;%`Kig5Nb`K3BCzJVSK>#f|Ug -zm0m)CFn9GjG7vIWW*n!u8ZHFvyjUkDXA#@1P1OJH=ADVp7OKi<3}nkLe%{`kjvod9m -z8rk{22J?HuH~&51H6mg7@;X)cnQmJr?%U`JY9AFX6BSu@cKU-S9ca?G3pNFmEg`|4 -zg4CSY6tDZ-Yrzz=DHg9!3anlWdYV*>RGtH}(c??>D2QG}HJ@;p4p_P}5=^Vq41rX& -zWp%+Q?fmXGiC!CfBX{OvUI8aG%GD!AEit}Hl19M+0l>oGw`d4*lVR4uKKTRl-O2t~ -z!kHV!2(>Iv)5V!`+?GGTg-OFu>83FoBOyE$C>C)(_z(XX -zDyh!~d?v4#Mx8BM=!mUN?Pm!qKC^=|--xo-v+m(?&wLkiW)Ks;sisD#>?}>}?QKnh -zgW>u_?VEDQe!bDb4gZaol1z*DC2>h1%qoD=xl)~hmRe4{iv(El`|sy003*hR{K2>} -zcP<99V>5BXtOxkJ$43*DVSxTy&fwYY8+RYuRBh?!b2l7|}c9da)UgO#VI!a1LEA -zjm6=ODvnFz*iby0I8GAf(CzV{wXy^iJ{TDSMS?zt*+kD@F)LDPmOAGLg8ue`IzP?! -z?}Wy3EGw3f8tYe7Fg@3cS*~wj1%AA^K0Q6-Dcd)d0_E1O51RTe5e@7YS!cOd42o`y -z?N$V$zGB#x_rWBN^xJJ?#Xz1~{FD|Ua0_^Q)S(xOVmU9 -z7O_~t*?Pb6rBNl2NTo^ -zEJ9sHXZEB&G}@K-6LNN_b$%jQT!Ivw`s8XtbR&xb7=c~7fDyllZ>bKIP4=SV#DdTiFg(t%({|ZsPI%I -zhQCc+DGR7OEjU|E=~q#iFSC9u_wY%TIsBiTGr&H`PIk|Kg94`Xh^ogHr-_DriP&gB -zeB~aw77fNV_{Asu;j@h<6q!his>L}7^%5-OS~MG-B-H#Fn}-%VCT8q>s51nQ=f=B( -z&xG$lHf&s^BD7#fmQnnwBMGCRV=uQWOiJRXPhk;ox2WoouVsOb9pm9ZnbxqC_cQj? -z#M+_*`2Ap2k&s$#X9N&~O!o@=ht@}m@E1>>3r5r8v*)seSU;C@Z3(D+PcjfpN}9kO -zWLD*rbFjpGC*^kQB3060x31{Ujh(0KED$%*cPy#5e(^>&cf;>!q5bo+*G1c`net9sWOw_G;~g?uuTeoc8N9`Li0;6l2~ -zpG10xcSzI>6rJj=%~j$x_#tCW6K81vPgAr#)!~v_N?e -z*hDkMY^5g|AA&6ZEAOcDqM?@jv819TzucD3>oRPeP!rUee=Mo3%a+C5FRCH985o9f -zgZpuiaER#`tDrZ%lwjZQcRskT>h4qxu%}{&?6V_AdtYwP)LX}rn7THC{e#H`7eW*G -ztk}g(8qRJ<^}M*3>+*MeWC~eA$b@vTA*aS#f|P_&Z+VhezS#oD(TQZr&K|=iFxLV+ -z5XzV;l@{e$=tzVS4<}`b|NiIgfh;S`q`W%oo|rQv=BC+4s@?{C7yW%=x8CmwqED2<$N{oxU7l(oE6TNCL;$M@DDPb<$do -zwG*DWF5VhEjPcnpd_fqcU=@#pYfoi8>*Q9lcE*BcFX{aC5sJ9<0Q(SfKE(x;Tvrtk -z!nH-T7G!BqEA*Yi{|HVW1-xbt+0?n;UrhFb1~qscoeIJWk67#T;&Ap+j~69?F_*nKN1HgIgeJRP5f;J?{=CYQ5GRJ*2q -z{AL?3Yrj`#QoY!^yzH5q{|>r5BD?wwNXqt$w#Mo%nslx`^eU4V1Jo&!wMxd>#RIHK -z>zBa)WBPIUYYC;^aW)6;+m6UYb(cegl2QO|MI(Jf%uzm}34%LSTREmreso2R(8TRG -zI3WcTDKi9yw2@lkt{Mj2p;e()XOb9hLXCcGWcS4iQ?+>S>|5V(z{6L9al$_Nt)5-D -zw0(l}yZM`rqu5|KK}4>th!b%gpA!;p9~axmBk_vKw>)#540~VCUY^@a!yzgr-5e?Q -zs+!SX%5UxXXYts6GO@Wh1Onf2ut~^kkWEVwvTaOe^qlrzV{@n$Po+SZVMpfCosB&W -zvJ#mXGO_crOYv4R&S*%29h#R0f&ncE{UD8xhG^bzGNWL{-`M}T7+xc(rFsH&PeTG4 -zO?`bG%-}|WOett%UI2D;Ws`8WzOcP)mO8^E6t|1XI3jKc*$~lK;g|1yOK@n7%Q$H^ -z%s3BX=O$JLHy0J-A}U;g{Sn_EoycBO9nZM@JcWw|hpvZ+Q>rxx)m*XEyN_o)806iI -zoGWxvw->=lx)8%jUpHju6w+3@ulb>r1l`U(dquNg4gT~x? -z&IXxARsmvg;NT7tYUvGy!ID=$o#RWCKypU#Ij1aEi6@&&>Ue2*Zut;j{^cXdT*pF| -zzqhpyWYnU5qRpiwG+#5IHMNQquwP8qlr$p$Rh$3FbOEpWzK`y9yrH^lRfQc_>o{Ls -zi3D1)ph@Q)%Qq!fX8(m2<;$jFeX0O^t0x0!@ -zDzu7H$F1N52*32wee~feBIAZM7gcV_>Xr_2oE{}5TM^rw!wW=qFbzd~j}RCD>_KZ$ -zmaj|QWOpEW5jN=Syt<`sVR=)nR)viiA1j%B0)&3CUh1K8g4)Yb(yvV>XXQ9@_tikm -zDudOzh4JTd{%sAjLb$+5>`WR6JEUn>&z-g_#-dxmci*=>IR?NnktB3cJuYT(@Kh0t -zeBKAp(zWkhQ{3I<;TtZ0N9=IcE -z^ahSp<{9c48nE!(y8A3%BR`{-rKeig`WvpvtNEGu6ajjn)ml@A2R1K+b9BSDvs3iJ -zolk2wyP{Q^C#D70O7m5NQ%@b-k5{i@4hYYc^}i6C6#tr*9D$B9U7oI*;vqM6P;FX` -zb)h*2#HsdvX0$lNRrHs&|7RIhcSJ~4-X|1e<@ztGp~8ygPgkStMtO&W#a;GlS)%Ik!wyR$fni -zjD}y=Y0;@$7uW}(DX?p}a0oR)+k2-& -z^Um2uc-D8HQ#Dr`&`xL;;-W9_#Cp;QMPc` -z_cCd9<$zGmwBHCdSqIqn)aW2PkeLd$luK>1Pt2*Mw#f)ODOI=MgMp>PF7pUL;k0**Bpc3a?A(eDmfi?VX(7M@J!{W;3)HvK92TI0k_3|Y8F -zR$e#PUQK;qnu)K;!g~kCGWb`*9|si$0lwb(p?&!Gu+-_hO0~sV9#dVYVV6wt7(+0! -zJ43-!(ok+fAB&v+(o5f~9t00ZJOv$yjqT&U8 -z+jYqH6}>RzmA(i;eb#l%bl~5>IEYkUbm -zZ!~#BPO3fCU_dqH18e+-_$&3g6>XAM&341ZuRP8QNM<8UXd_>Hrri9PlIOC5KvPXAyt7gojFp2o$ax~OkHQ)`;Wmq2o>c1LI~o9B -zS`9R$KNqtQE-vTM;vAG#fN9)7+w!%%1hDFnO##vI*A;vOp&ENiwB{06;?|*UJ}b7kol8`$!o$e%Veh}BK&d>g8v-%)gOrB2jF{#efW -zxS}qyU!=?#1(PP|urx3Y(%Lov`{^H$On!>r3`FPOk5vlAx&P?iWgE}~Z;G{nMBGRo -z2O8B;78v!-usU5n01L6G*5u&_0$7graU^yjc=0x)sWxJqQxi9Dv^a}Ik2wX_byvBi -zL#>XWEgH>d*!_iLG-TuKKV -z0`qD2ppKb$WN_b&GNaeVr -zeG~Ag@-)OOWI&++QNNRe@#WZM{{59oAf$I^*NLL*^yfONKo7)mQZxhHdJGA5_87Cr -z(Wjxm%(8Az6j@V>53FC0^f_cY&k?lgE(!DHUbY2pjxGUEiVW5azjAL|`#^$FRKjLy -zCr<%L0q5%U-Ktz~OY5k8FcWe`-#I`9dR{YHu5s8zAgxaZvxGqiQ56ic*`J`*Y}WjA -zOH#Phz<>gqw)$D%(uk9!C5kf{u6oZ2JWS2WnLP$&wj6SziE$<&Ml9z}86W=+;X)s} -zmy)IzN6RL&Ybum*VCLT%+wQx=ZR -zk~}VThCmRZY_2uAhgn=<)DMY>@U@^8!Fo>+a4@jj1BhnQMYOiJm{*0ez(xEr?|`h8j}Nm{70sbx>Ow~z8$jCTUHZeZi^6m*_cE1c?P -z3e;oLt7N&gXb$k|W -zH^)Su(gH727wrSlpsrhcbFM99B+Dtlr+pO)kZgNr^{&;t!bV^ObJRpDfunbj#Frs+ -zyb}B13K{DT#7rDHo1FU_-+%54e$MyNp-*WQV*L2&u(qT<+4S|u4A+ZT={2|>o!rCd -z=j#}l26=`~Df}DGl+(LY_2q7p9;JBWq_h(d1@D`GU{2N -z9tc5#7ic$)h_)B9s-@lr20#J5rnNv#QOsg&C_5c0dDz6zN;0uRU*t>Fx5&+XR~*Z4 -z;TPc>!niZ4GwaN4S8U=t>yd?E3G3`tp8QuwC)c=oVW -zq6>^2e}gVojO;DcP+HPnF6JK%;f?~N5>KdXxgP~GkmbyW2BbN?>9<-jdU_3yV1wQ$ -z&)9ZBSXa4HGjrSkdj9xFn+hddCrn03ui*c#y -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 -zC*{`0+ME0PH7}<M3|<&`8+};$N-zbi5An -z@X0@!GIc?!=7)L|Rmp0;TCBD_f6-8lCWHF#&muC)=8RbdxF)j7Vtt$3#^Y|~@hZU` -z5)T0%|MsggEr{Z#W6r;4krr&9$kNbR8Pz*yVABO-7~@V?+rG~y->Sm1@t%JU)KTN} -zW8W%1K0wDa<>&d_63-5a-D&DHRK|Ec5wznIGkQ@$va6LdxqA9%%Blg1%HW~%IqEoc -z*AYCPRFEr>Nrp^9{wagyOn*RPTqusO$kS@vDGujcN~10$oVkaf{7-Qd=Qz#s9VTT< -zcwnNz{XR(_FC>YPwnukHDG!%@8;_1hO}S^*fugi=Bp*uMe9jE#)hlZJJw2v>KKL^G -z;zvHV*A27rf~*ZRV#HojMsEMUT{>U^KS;dphE81w^p!ETu#1lQRQ}MIn^qZhxrh{s -z*KWlI7<#zSi5*D2yZH=kj%H5n#=Xc+uF`aiqpZPi2>0q3b*lt+CxP+@SRT@UTuKT0 -z>!vR+BOhX^cNZnr)(3R+CN)ETKL6y`iEnysMt^nYnmamq)+psK*4h{B@u_BMQLqjs -zKYPmq10szQweTo>)i60F`-sGXpS;vmJg5J8>YOZ0@@`p*WB=L?oISsRbS)M({-@4f -zQKrCCcu`GWfACKzmSdE&A0v3|i^1!xaw658Gb)480KH}C4WkBg3w>%?+XVr-BVo@d -z0QNTNT0cF;I-0a|Jz~z)(x=pcmv{L@i;sgsxL=79^lr@eQBnf8GHOJK=!O+#G5-^T -z%NfIRLtBGRgwiL0s>7n7Mo-8NN?Gz+hu>hU)K9F)`dHVn!n0(E?YgG84HZ2w69b=2 -zXi?DDojw@|Oc=THdcwfy3JKt-GY8YW1%fxNV;2KH{(o5Sxg7h~&li^z?CBB`$Y7A7 -zOKQC2*~{4XWR@dOWdfsS-Kps{5)>6XQg$$uPS63!MCSflm3Z%P;Q8m0@vu*^N9`|B!R+d -zCEjoV9Y+?Yd3}u9(f!yh*WB1^t -zI>*XWw#1MciyFDuYe5;x?tB{*E2WjcPe8|hHeOa$16fO+o!DI5T4`Ob*vl=S&jG-D -zkDrB^0R1s96%jD4Em?bHdG7sH6TIZ5}+O0ae|x+Cv9@LE2~u&w*}636SJ -zxU+aw2$4%T6IyfhP1_IGDTA3cmp#1Xq%iAu=jA}yYwAm6IXZ$xP -zOx#?^Ly|DT|7pEpXr}s^w2K4}vp=6WVS5Be%;qa*U!-Oo#UER4q@xH{paTk0{CJ31 -z|3I;F{TnIea{nd%$j2E~MOS-L#E!1dOV(#5#05*5VF}8M?GzcC2b?vw6!YWxh+7y9 -zXn~Q1vpfN6fN_(L3PI)g2{=l_Uc9}m{_yMBMzO2{c`kuODp#gZp^#sZQ5&ze?#hI+ -zM&n85(T9~;Z$iF7@o^}t`HDwdtZ2ju)J~sN>Y79%q{V-n`?ESOavpn;vk-ft=#`qW -zDR)XBg}DV`5IfuJnqkg4_k-%*Ujb!osi`pots9N!=_FhWw|P1%a3^}QgJbs$KIGPK -z%A+YhK6Oxf1O(rIFCB#P5ZfHs=+@KlMdH-BJnwTx`Z~5>RCep5E3;vJmJppqsL#0rcz1t-$h~Pi%a%ebA -zll+hCZTRJS?X)Z>|5{WU2gCmywz1&5NgVk<^tZq!lq+ckpG1jp0Q=H!LpJDZ@trth -ztaCdx_XiAInp-)UI{t%@6S6-(XDb}pIIjBSS|SFdE0Ej>l9r5&J+)%CM<%0_=ky;= -z4FdXjrUn$`GZO}GiEe!*2DBC;L1K46dwxB-slDCC-DLmtky$LG&d9M(zyQMEXXvm2 -zXRF)-+@n71+ttASZFUy)?-vSqNe(Zm7_uY#t{;e8pn8?_X?_nO_m2F0a0cczz&gz=te^F;$U#3UAOrMP57AwDb3+?#X+fVZwH%P3qD*`P7 -zcGmlQ<1NE+j58|gA+}>}-f70jy1){&Ic{;<6HJ>N9k-NTdRUj&*F3EdmpuUg#d;{7 -ztZE(#c;<**nOuvoHIKLKHIl9X_iQS0>=yzh6uIcNx}HzOIOycEc1Qz0J;#gBdpwVWWs;qgW=RI~4h!j}3F|b_agBn764x~LF$y|<#7A?hP{lWs9(t9BW -zWYN^@t4~b1xn$_lc3X@eH`~|A0M*@lQbdp}2Dwpn57ZN;U<1TbT0y -zuwFI3=Den9qj9NzDJ>Z_pj2Jk|Bv-n5&vSnt<{Ak-z3U|c1&ITxmuDo5n$#IaZ41n -z4dg5Udp_jgI1csI*eC+|{dJ;hN95PVuJulqm;Oyzw@X(l>+d)D()D-X6 -z$0n+GY4}-23v6e4T!g0v;`hAYNVl|&>~lw3ME0vrZn7`l_TH1fzhg)AXLt2ND%mf?foav5YJ|67$R0b!$lOD -zX|=#wh3Ny}nw(Ui0)`u%bVyQ$gYtv|mZ6;6SC&GGbITr*98#v-{EyIBWoM6S9H#Of -zlTVrRZqQ;AY8=<9XaZc<);M3s41%=nhCXwBO_t(qI_{&FKUjB442k%ka6?b?OE?{|~FrBnO -zm@@I%a!Ae407*U2dy3H9u4M<~EEfcTGR8qAysK0#7Q -z34na|128+K{J)+1SUV7UFSXhUk6L(EMOc#~M^CMdZ0_&RU2klkBB5^pi!;r5kB=ok -zj)tw{`$p00sqds5V9v7TFc1(o$ahoI?^B{3s|3|c)wxPC+L`87@gjvt(HkfO)?m)k -z1^D96>`AT(ERj&$)`V<4Pd&#x{<@$Hn9fnV<3Q#FLC0x6nYe&sJ=3-bQ>M1x;IJJT -z&m#USz=oiI3vQe%N{o@H$# -zraP>9sIOyiN;aIe@tBAkMm`;6_twte2PIsx -zX40*R&?FHzoj{z_x0?`a{>X^DY^?&ftb -zK$Rt0CQCRxgx8wxp4c@Tu7Vrv^|Afjof!DLa26EB)YL%sJJKq`NXZ3Z?1tmXxBUl* -zEaB9Jp|!wu-0YWtTBizY2#!?zmO*DIsx2$GP6=~5NJNl&iho}S68uN_P<#yQ-yJj4 -zIqk>Xe7)9{2IErYpl=stfC=~OxKZAWB~qZ<&g$fKK4Q8X5uAL_jU|MKd}D%ilDJ&j -zR<3BFkJ`t8ToCqvY18AD^v-7uRth_faL2-3+c~#W>5Vy@1&Ixu!e+fn$N;s<8tlmE -zz%H390Swds#&uckB -z%&Aew5K5nwidcm^q05{NqNMZklM~KAJTpN?s9Qx-!HdgU>Ewo}YggupzRiw)@Y!Bv -zW&7pdFu|2hxBE+i4WQ(vBrKA$|CE3Z4KVAru}Y1I$nFns=yxN(erb0}I%RIu$>V#t -zxS5@4t>=;EaUir5?n9r7s4N#WEKv(ejQIGG>z<$2`ToNpJ))Ozv@EK@dhhBf^)yAFhaRHmPX|cJiIqBC* -z%B+H5Q4SEgwnynQ4m3uS4fmL<2Uk@PgKP-PBk|})dU(k4`|3TRPD;{|4;$r?IHqn< -z0$S;Ex!OG51y-JF&VX8rND?ax%RM!OZlmAcolu^Ah}Zn#;VbPA{jkPU#_ID}jKJoN -z12)WlMhdcKHoh=Vb+Yuh?00TTp1Rqjlk*duL``6KCP$RofxhwiAj&M6xZB{xmu -z%Jh541QHamE7xLpdNj$SW_p%gmBv7E8B%3w_!b0~ByEAYZi@RYK=&X}Zze#kkBpBs -zJ!tj8324(GL{D8M5`cteEKMkk-)zUfSOAz>hwV1aHp2dpW5=^84sc?p;cKlQcFN>a^|NTvsb21U!qNwhEDDq@1#YL@>BI1-jM`E$gf!F-SOv -zK8f<`NSFh7bQocyiimZ%!PxRX`CUOGg{dEP5qV1(w}tJO2qPKdX8$Mk{wQ+y)^Bj- -z5RgPtJ}vg(CNO=C$^R$yns#SFOA%!-4pra4B;{(d96$#Pi8lFhRPzbonb;XDA8ocU -zbG+ioi!FSZ`hfDpxm)F56WkzRp9@^V^lQVf?oP(33@;f86)kvNUT5c*obw)H19$do -zmu9nJ6lpC94gAuJ)GXO%kd>?ZBK#$O)T;ix`!M?iQ&-iCZKZmA_V^ip$#MAb@r?t3 -zAQ}N>M9zKAgG9gx>5dX>Pq~#l|C4%;P5HIjfX}H#7%_l;rCv~U`4}Xp&h^Ah2K_?A -z#^g%J7FPnM6;YebO59vo2!GOGV6eZ2ZRiRU^Zl(Ot*K~Oz$YgL%UU4~6g -zLu1n`T3n$Pnxn~_1*B|ohvazZ*;f-Y3qrofKW?6QBrvFC}_A+Eokn`}V& -zqsKs#LtcJ{2Bh$!R0k%e&8>)--C|U6|1!PakB+T*vM4#RI)xxT!dn8WA&Nt1c`(B+ -zM|ZJl&cgf8?bR0gJV=B>n>?Us55Huu&t<8PsNP?Na|8_4bjhy(PO`jCy4f3Y0^kCi -z^fvcI!=RwTOIT%|-r)} -zo!%LnCt`l38lEdHVx%lI<*RI=2^Vdn!m$R7$NxFKrlxj{jD!DkdS{fH@Y(q+ADocg -zIbEvtrMC)tnn-Gt7#s#(!S_!0Cw1HQcXDCN?Bi--vUGAl7-eSSk_nNsj64pKUXEvU -z>0iovJ^H-A4LHKIr;MHv1m=bsRhbRnypvd}F!eC@5w&gKws?0L2&m}^#gHs(v;?nG -z%^-^v8UbtVJp*FTNcf55VG|>D;j!9ZGr$1hnvy-2u~>&>7Igj^97DUf48XyIizew= -z&n0IICZ>#*Ni3C%9>)E9MK>>fK)PYjOz?^WsJRnX`Pe+SJ16zxjzS;4wTYkugQ+un -zdEc7VFkoBofbT4ey7wdr`gMA5j!Y{4b9#N=r1Ya!E@+sO2f^lsE!vGEU-H*!DgcFq -z6|RU>6I&8naTMv~u5mW2L^H+{<|E)a1}RMh4*VZoxHi*^!t@35D|5fZ4R- -zuikP?2a?(8@pMQXaCanea{Lp`2=`vc73Sk$g4007rxr9vJAYg|`7Q}&l{y}Xr^`it -zEtTiwSm8cH=ueW^OHFL>X;tob)QRk;zj>z4-1<+RS{$sI!Q^}Oa1=I_DcYN{;ZUie -zs=|j*%&3d(96R7%M0xSl%+<~j8Z6Q9yU;YnEeJD@jj6m#$(DDxvG@x4O(Z5;=+EQL -z2XV7NbYDWgQ|Hw)oNP@^7A{WWIgA-$WRw{9vDfLhUfw?G1pYk{q0fRke5(HV!#yjd -za8U1|6XiYRdwd_~Yd7i4qa%R_LJPhjG?W`*pP`-|lT>|MW%1x&p_g+n0n{UrC@C(h -z5BdBpBVJ>C?L`rMVsEb%w*1>oq-VRlohKVXzJdb7D$Jjd^-Pnrxe~6;Gp+m|90AFE -zC6%&gT5uVkm|VgW=#0^q$rHO}5vj%bAC(MpLgBMehdCPFiyBhB(>k%NrV1~c^OMUb -z8D{ry6EyP-r86#{mLy_c?Fm4*`g}tuL1(j-PAp!tOcGnzIBB1)C<%`r&`q7OgpNCXK38E>Qej -zvbd_7c!n2Xp4zh%czIeYg-pEPX7gvuq2VckZTsAm5}MbcldwT)CU8Kan~x(*$5@i7 -z8L!xKmbXwPVUO&C?l{FXxu{#2sx@9mO{G@USaOo#n(Wj4<{aPGw}U!RrQ5H7Eg-Pu -zj-~v@Qq0PaAmA+*tg6<9yiV -zzM|};9C@GX9TVY~zZr)OQmJS)KVkWS>zFev1OMAsw*J-{j|9BgoDO`7S*x=qs}`_L%xN3GzmYM&WDX!!Fu^oP2!;0A^Q>{_`O -z$CVn`@8p^8YEc2NnaO{Y-k3KWg%TZMRuaKd_x~upwX;RfT6v@euBGfN>Tpc;uP4zW -zN;ICk?_`#`)qnX>^pVPt@{_=Ne05D}vl%!*^w8y+X#TCqtWprEfFuuDx_IzTYM+D{ -zii>rzWjM*HfZa4p3a9?fK+;@MO*A){b8?tT@_;&6ljy>$Ok -zdZ%|Wm@l%p`y}y4q-RMuy|(tTkCvz!$zo_oT=WdmJ^1O^Ss_jqD{Cg^E=FDyVIMmz -z7SHZ@bF}@X71BSNZpbx1p~@n~#Y$Ei-FY3*Vwz0E#tD65UI1_gV67UR3nM|D*JB_VdLOOgRH3o_>BZO#4{LH!x6D3gS|G -z{Zo2ZI%@j;zKa5?zj?fBHcejc#mKF4BIwS9(qr&U`hbEi(FU1Wc%G-s4S(o$`?iWt -z@gA0MO0)u+7 -zO}hhzPAP(xPCkt^i2L*4%3EI9jjbD`zt8C!tauyQf*>9D;*p*5Q%)DP2Z53V$hvR* -z)RSbxxP8A}Tt1>Q5)&v+v#i- -z!goQ_Lrfe5Xss7conXtN3HN1+3~`)7kJ;xDWewb^hN>0?)VCBQxY3;e=_S|hl^^Sk -zvy#M}wS#$lixgQ0Q{F6(+=|L|-#+%T*L{u)-JUu!Dr_5| -z#M;~_XJS3hU;mHKD@Hhnd>Ym=A|KA^>_`$k8jROu_{LBZ`b)0(AEcKlG83Qs8zeU2 -zlmO^pAyYbn?%45?pOQe4oGs_h`_w`dq8vI+EZG)`ZjND9LV&2>9#AO2R8=+#xuFY- -zi-yzQ;&-Js7md!(Q_M+_?aWK>cr)~9GOZ&>X)WuY(aSDng#JH9Z(a%YOr_K#%$wC(|2%tIzUvy=h+mek5R3a| -z*cB6tbXshC$n6HuD5c1n^{)aAvdQRXUrV^<#)rc?@n8R+yWj6OeQbd;HBpB9x8J?r -zEwcicUw|3m|dX7S1CvC3uG`MC^6wYIUu8)W> -z3{_rqZGh`YV!#rBozY2=9SYy?lBDNn_xNYsS(Hh_>Y;2tzyukq3?X=M@Q9Z7Tgyn5 -z^x7(*{U&8Na3{(7j?TNO-C^b0*GeERO4yp4fxrnMx2GJAcleH-Nb6E~2AzKDMvP>+ -z_40n9rH8cs<7dpgxLt#z>%kVrG7&1>)-L2yILGPRri$JG&fe7Cb$i>}RZC+fp^>{P -zq(pmAQj?1tPs|So7F}3wC$2Ar+*mPwr0YL89&LVhZpz@p+V19?5~7jENslc=|I~DJ -z+{m`cM=JhE$cpyeXyHC5K!A8_yR_^$6z;VY -zZ&HyLSEp)gSs-+RDivR8R+w!K21=88k^(msS9L4C`+EQHuPYiFz{+w++hpo#v#|mm -zwq?^tbJY^wa1r>y*_qrWmwAW~O~tm_&q#0*eog*Oy2OBXc+`tbBB`z~AWea!WFEAc -z2Nye@X%~DQfs -z=nGTvJ}jA75u|kn-2zs|?X#G(A815G97Q^5MwoHX21(I}FOm*n$+7WJo@&>{z&ThL -z+JrP4UfD0&mqC#3O4iND{ifqzK%cIaGzB)%p71sM-I;tcp%6m{BJ1T^>(vd0-wq$Yun~;FieBU-=sb1P4Z13tOPwI3;0Uj@=gd_chlxa@=k-RL -zuh^*oU$nPR%O%ZJ`sP{ZM6B-*Ros`{C^gFWII(V;MBeNkTa0EElq!0t)Le3T-J9;4 -zZHN7*+H-J5lz``KDQ~aVMGFep)PgsM?!4ZRG2^=hL*(xN$mw|i>aY73<(CwRKvM&M -zSnl$rJ3(xjTCUY0`0FS(qJL_`{#;u -zm)%-VwWFVN!2K(O>&Aa;N{2UdRQf2LSDH?b@2l!Bj`VBg%4haBKCazzQ3EF{X}OO# -zmqyX;yr$l&73rq3q7$lC6rH7O0pyxlRaB&uV8I8;CN^q#!yV(ZFBDrJ)C5A;19S{0 -zCZG}ycpufpyo7CCcGPPoQAN%);ghO2 -zmjW(aa?`cKl|8w!$p%7oNt;EFa)Q7#d-0N^C~Csj*K9^!_`n7s9E+`LPCJASx%Yd -z1)+U3q74zjhWDEJB@sOXil&3VK{=z{q^*M}@5 -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 -znC89k;#3jC^O0C8G%~L5aCQgnZK}B?i*6 -zS_y7Ky=1GP_RVHj>2-gm_KBsQsaXd@x|6|}&b7~**7 -zgu8=k^RR^ZOL$=1ed-332YJvFr({G>mJKYGmD~djiH?{M!5~;QROB|hC1C_J^W);- -ziH*rpyw$6hlCiAByp>!KmYyJ~U==$nP;rgjU|a@8R~ypOm5E>mIbr -z@)JCZL#}^x0*LTM?Z4HiY2(?McOqmRb!IJr7b%{B+i7E%Yz(E6B9RpW3y-^Qo9igv -zDyqv0s%!;qFQYbyw83o!XHq+Q?AR=WLYqR`K;ap8d0)qfCzy|MiuJHN)!)FeDtkJXd7eMf0*5HptM15O5HqU5FB>ZuFL;?Uj`({W|Aj` -zO-h6rb8BxT$w-;>RmJ-jSS)cJpGsxy?K5nG&@RD&ph~FG=vG{X4@R5taZyzU9{)a_ -z$+N*vDQL2vNIF1a?^%AP8EnDz(LbkTJ2$Ep;((qYf7d{T9>WC~@K5M}6Wq15RzZD@ -zpfdb>n>1)42ZudpXEanmOq(m&9!=sJ|H$epxJldSvvI+f&?8)fgEPGzK`4o&5X$Fw -zavP{_VxK!m)yZAb8X#YJxImSV8Dk$uE+W2yQs}7xLb$f_)q$)CZ-;qt2AIMfpn%i* -zLmqP;1Q?&QYl$CE6*87lm_Hqv78t_Q%9=GoY*^DYCCzroScqgDurH}C&rZ%ITvl5{ -z4M0}{)9MNivr|Yh4%of7g+$SsaFA1AxGtg|%7%i2mV?{#P=ZuAq?rjl+f2dY6G;Uv*%sOGfs-U({R3Eij9dQhILQK8Iyy -zz7oC-qwU2GV{Re~AJ#iIqc1k#n=7AilDcDwcnK|;$7&*p&uD<#*??I8IdkCiCKG5Z -zeb|?SUk>1TgtRrPOXvmUd1#ULb=zE!Iq{lco3*;2r=NpQN5tV`NTMBGCWp -zoc#JDBsM1~)&{q?Y|5qa%(qfO0#L71%qA6Yj{vYCb3h8e$o%IhU5N_GS+Neiv?L(MIkQ@c{V -z-V_Pqlm^}O*zSidhFbZ_#g~Ecn75x4;jClYcO!>rW%nF6!Y~8_w~5hSinu~Y2^Z2o -z1O^)L01wyHJL#UuuPSwi68qTDQGwG}+bJe4!vfX+zLqISHgNrzqip6Nh160K8c^Uk -z%-sDo%)YGz$u2%SZUuMH)DpJcOC=a?#EG^0Xlq}KtV|}3Ov0k-N}`jJI}Vz7kLIW`&wp}#O -zP}EUAUz2GHhStq|90@;?e3)pwhyY;Zk@(04pLx!5glPrb(L!TeE}B-9?bv|uUuycrnP3J@0ieZG~BlhwNUh^VLytCY%QLPp?So?C9I=t -zTl-g42aM0Qf&MN6$}SOrhs=dYHdD@CU#+X!4~?ngh7&T2yb8qV(8&WV+{zaglBJ+w -zzR;f}ndF?{V_8+Ann1pQ-1*M<#`-NW%3H%(?m7Xwy0^P?G`kM%7jq#kspXy-y`@d8 -znC*6^p}YxYNOj>S+YP+#`#HYf`HAYjO%1+Rv-^B=EgEFaj-n0!su+IRew0#?r>2!% -zY;Bv_%6o6oICi;^N<)vPadb1$goh!>grhze1+dHqy2vJ01Fx1FDDu`<|J9$rgp3Eu -zQXI82w@1d^d47tVa!q1$89xZd**pUIJ63oQU;w>MMWH!;m(!W_RmA8|*ZCbyC+lCe -zI#qbziRtpmzko2Gw(I>=E>QbUM578jEx@`@VcwqA)J4d%{ySpVHJVo@5bDO$lMUpyjZFIeLI1M!6 -zBZQ4wmOzNSxd3bNX^9`%sWIrU(^c8(nBEH0hczbkxK~=sz+4*d*T##BoFxFc`vWUz -z@>8N}3jX0(YuAJ5#>#6}9B!t6zMQ?fB=&OA9F;RMSd2*a9>S5|Orsjxt~5;~N$s8> -zS;0~dDW`?Ht5Vg%L^$##xp&8u&W)DS7Cf@h*!jE-v73L~;yr<-I|Olc;`tU(2l<*q -zqO4DT~zWdSm_lUp>&F)!WV&36vEGZbF -z?PnHK_`41)FNM9DG9)tT?yyh8GhnxI5fI}-wvW%o7hLj9@okQY)p-R%^LAZl)T@-f-aZDM{G?F&@;D(;_GXg? -zrOz$uHMD4`)VmngRL9B2tM21dcDC(qmN{pp1;C)A0~>0JQhwAsD|RC&$B;=N_i?>I(d6v&?r~ra>rMnZ{lXHUo%8U

6nb6mr+9~XW=X4XXw~nPS8*H>8{PKMmxYeZUF$CMT5`QXtgzn -z$b!vb9Y4{oDdtl6B0@{XyI8J`Mut(VY2gFU@`;?7r63pM;y#OWVgw(}Tkhd^pJ6ml -z&*1f}qm=)738Fs>!mM!ucH|NCnD?9^3*m5A=NHt=uq3^bqKK{<&7*Jw!(1x#$_Gv` -z9&uR`P&4d_+=#L9;1Qk6=I5Mb^_=;U{%mw*B7rX5A+Km!XsM$;GtVK^X6JtfXBiw6 -z5BxzvLxgK`ed`<#oRB^HQm?hTC}3&`GwPQwnPv<@@nkN3P8rTi`NN{1v;H>lY5>W{ -z)j)UWbZhAF?lfEFM@?c%x7MrQd$)4C1{-#*qpW;K-*pqQb5Ab<{a{E&*pPdZFcY%z -zNzJ>frF6gceFjd~nNLm0j=^uLuAaz1Ouk{w!o~}W!ta)0s&MyCj>ccDQWKaM2llbACZkG -zdL_DwEY+i0#Xm2h!(2W53$aXU`BBuMDAHx!$Cpks@j?p#M5m381mJEF#>3+>Szd_R1~h{g -zYG1umm;_ccxg{h%{kesYBwFV{iP>5KOVT;9gR-?&s{3PbEnv%*uzUHcQ+yh`GNro~ -z+ttqon-^88lYR25;e+at-o>lJF_k#(#?zM$d&Wq^A$cWO2c49;TdX|ty#zA8&wY)f -zDZKNHTtg95K796;(e%96K9=K-v+PW>j$tHg=R|` -zeI|_M9$u&Q9`shM*e2;FuVSLz3A|IebMZ0-xYu;=7KJ1#3q6-e{f+ -zL;>jmlfr4JKqty(ov%Hk+*3XXx8auv{FsS{91;(Ks?EL-*Td+K -zOiK5^=Hale7Z3&HvMVt8^`_KC1eKfXlgB@dh5v^-r|5!AX||e|7@gX5&E$d;A~)n; -zv60%l6!JLLBdpTOHtQb<)b_V{fL`nmHRqeQ1kgPMl^~bIngxOM6DlmICinX*{-~URE;a&>$Nu9!2;(GTP&~2A(zm6)&m%}rY=j;vA~47oo-Mf -zbO_DVLI*RV6G)sU8T_>9#1Qto8$@GMfoB;X95|^0Z=8QBK2?F1gq0i!3?Lfl-E&ek -zZgt>rttu$V^TlyU2a{#eAe6Woro}7=SUsn$0ON`b4h<-<@RprnKDZ3>9C@Yk -zVz!&XOA0?zOIq$9;|jYj1+kQ5^Dq;ZbC+x{0Ov@NPrX}d^ShH}v$<_`3IuQqv~=d( -z9_OibR2k(+fY5hO&;+-=6h8DwhLOTWh?p!_5^eKZa)5=QC!wSb8h?e-0Od -z)$lj4oqeUp64IqdfJylP(z9TbYTn@~g|8CybY$GjmRjU5{2c8ZkqG_Ug{#&Y{H*@9 -zm{tmK>v5%|6S5~cJyv-*5ocSY2Tyeis9bOKUPPMBi$lt98Y_d%Eo@F21<#Bvgu*Ag -zdPQ}$+~$xi(;oHfDe7}?wt(YV1`zAwgr$fBr|fz7kVXci`P>_fKp?|7+#B*w^LZnv -zUXzg!8^NtZ4PLkehYeG4F -z>UEsfzLA?_nWT~c#|sPl?+nX~{ZuD0!D1#_nF(Ap30igB9us}a2)|8VwvEPunI9a? -zyLFJ0EN1{;j#Mi_a2%XBxYhHEnt~I|Q<1C%O};>q+(j<%NgY54XRkXEvvB8aa-Hmb -z4?dLqo*!evUePPZ2M91=Z_9Xb8XAxrZI`n$X!Ab0ct+7LH#0H~@{OEQ1-4u$013zu -zt}84PrZ}jr^HU{(#n(se2&=fl#u5)DXeg;puLPTio|Y4md`RzkangtAP#rkpL`o^=8MEczZRsM&^BR -z5Cq6~MhDak-7?OO!pFIqk6i+-EDI<6L$N}0pWMQK%em?aaSgFGk|(D&r`gbM3%{Jy -zdoD$&pH9?!f3}Pz*ih07Hf1Wt4~h`jh>V>*U0^zZZy$>-w#3va5PYq6Y=5zi!ixTG -zt@vUDXA(G_WKMnC<2;y&Ja0ZCG|}a+L5C@$m+#0Z_UWVQqJ1BvO`SUpEB76M7v~QI -zLWMN+DI|*fevS^0%ow?Aajc9lEvIzy0hr|UGqDupQ%4*6+~IPJ?v74307ajtVt;I|@Z0nVJU^4|i|Ed*W8rG< -zdL+g!RZ^gtsl-u$b7$uvmJLE&+`ek2Q{kYyC*i&AQJJbvC^;UJ!ttRENo{QZ!fAD6a -z+}nrM*QuvSecawK2rWbbZ_RtEFaHK6u`}?aSueV7tu5t-m-T1 -zDBprl7IwjxNXx5nf~GKuW8rv5BLnZ{Sk=R7B;zkD-V(d9C1mx#=z0`LP=$(AjdMTL -z2`=2MN}F~QV`^KD1*^0<*dP-x<{j6fuLB^&vH<1v$;beK1C(0dr;&6g4ag{GiW!OC -zO~K!fDG*WM9kQq8kZ_pt!OJmZCCZhJHA3V*aU)5mdrRe8ztGZ43DSxaxS_)#&2?2_ -zEIgXpYf;pelZJrXgYLT8mq7ikaeYc -zrNjmwBR&B<2A>kThJ0}dg%;W2_ea&z_zDUS^{qt=P;;Y&o3i}GiUyp7sWv9hCxno& -z!v_P5Ct3rl-mRwbcq#uB|3gfmb~=ID?kcj9B_H&o+pl9ss8WWKF{4(I8@g)ySfs+n -zAu?Q_dLHSP7|`9egg#|OQH*eH_^!tTYHu(ZN`gk?RB$GVRN_n99OLTbi{S%5%pE@E -z`C;R>if1Z@b5)maRU^!zPRcD*wx}u{jTCBFW@~$eCxfBCkl=EGxNPk_r3VMw33H7# -z#p&=t^X||cgf}oSuOMzmDgKV{uT4O_t6|snsIl~DTIVcYR=!M@_N*ao-zx>-JYjvB -z2L_f%6}t-CF=MSt!&0e8M@y8%yV&Q;_(Y#6I%N|)o&cg$HV6ICd9J_gds&SX?JHA~ -z4TU`8Q<>eGH89Rknd;FR*L@{DhJb$9I3U3wdf4Eqc)=c|3ZL8tUeYR{rXl9!&GlF) -z8GU(Tni70~zb2H)FGAficic|6a!Z?&SP&m@aXm3g!HQgTUNBDhS^I!7|IRt*KX2l+ -z3MpTBm^5j1-2h*5qq&&e0npg$3zX2ZET|LP8p6hL=VzjRh;Sd1vj`e)OeJAM%FaG3 -zsMIWXYJi4xdysX0Mz_iAv8~bhv)=`{%_`$^)qR{cmRJi?(=Pm55+srq4(|^wlo2GK -zqFOL3)u?dL&h8YvF{fKH6GI&~QEr**t5t$nRpo-G(YH>nf@OBR0}9XkY*@`%0V1gp -zz&8L6{hgNg=)4KY9hC{vf>;&sRq~asdB)o%>@++uSG{jg%EwBw-IhDHBx{*x2T#se -zhfg=MqILpErujQ@l2%a45rfD`NCu|4T~yNk#|@;+1ha6Qdu3ndV_BQXWh>jLKn73AcB#YxZ3zWE^kZz!Ca -zvyVzJR`YuW!QWLj+B5u&jQ7*R@a}4^m?R}d*HsHssL01zMfyD3b@U`mTc=a4phlr1 -zT&^lm?>I<f -zNfoR1F%zq90FfTfIO_xx9i^^OA#k(6I-HMDpAbnR0+E}z5Y|nIWiH6RC^pe;D=Gex -zF5&e~;ay%ixp!!*TQp50sLbtbsb!x@t6eU0~oUQOQE%^Z`@*kfvub0^ -zYyw1}1J7((BNxU(?*Q_1v1r`P?~`1_yw%F0N;F_e4kw%SFCPhX_+3_6MAJ_z@RArj -zS>jsK!)b7>BoG^SsdEY<9kG(q`srb8_PQiSNPa{}5<5A^n)rlNPhYNP;5Oqq0inFN -zq0-qM@FBMweHkF5QU;$!xR=GYS48y|It_UCv-0xxL(yxU;@8&e1Q&!bRyX9rC7_xr#tj= -zAyu>fzGTJ{Pf#o8`~o-dh6bB2?+{}lw-NGAd7WWk1{nkI|Ee9yFs-^|X@Q&mH -z7ZB5(K)QvvQaPJ4L_G!!64Q{!kQy3UaGvm~aw3{aOZRXQ`yBDFe`2zd>N`Ar!jrrf -zmSc^BPV_9BCuad<3Td7fb)zZh2+Qq13LR1aLIAyclM-cBtqi8pbE@~EwG#_8!D%BS1}Dw%N#uiauKBDO1<%nVqS{RSrvZIJ$M -zxpi=S$Lh}RWJeWFZ8Zs)%VrDND4>0kT(Nv4W6<(J*y9)9@Gge#h*AqR3ppY1;-R|7 -zQZ1Z77~1g3CdJj|0)E8wtf+oh&*9-2`9g7vP0*BAWjI4#2${O>&xl5|eowHxZB-{F -ztUsoAS)LXRcTA$S@p` -zbZkN=KFU)rJQQ=3(aAMSlieMntJ1H -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 -z`=(^O9~{Yg??f}^3Je-o#@bg+pT&RwDg&mc% -z0}YV~2UGf#z&(coz_a@V=;uU_m*TpIgsX;&eyJ6cRASOzmD}QEc{6L;7Z>XLltpTh -z4-~6|d@bD?(E%?sc`uET385`?5?%vv2$kM+<~5<5^id1ftnQT4>{`xz;%=>)QzJ`R -zp5b#10qg;g{`D>ypo>64CJRdepg89Ta8#hez2zO>2w?WET$S@&A8e!=%F5;RwzN5U -z{Q1B6Hu^?~`~lL^wIK8MssD0fxy|Kejog|2Cp!mpPOA?I2<{T}&CLAKN4(b}t=O%g -zRZm=;X>E~4qZEza6~b%?bxfrnNclOJca$}X3_WZkIY0Ei -zntz%e1I@q8ZWGOBZbdZy-%bRKYv6WKeAaQJms%DbzhwetJ(?D2b=gHI$8Q09Z~FV1 -zuUFS`&J%b>_s)i!wyLM?o+ZCU-l$GM2D^UXv_?J@L+5Ljv{o`i*=`KGKbqy=-_54w -z|IueeMO3O|-CL(*L;XJ0TxE5Z(AvG^0Cc}AHf}T@(f@i)3Q9I?FFfRQ;$Nj>t|=_J -zK#g6N6Mfls$zVe2fJIHo_RzUiXVwB_;HTtft@Xw -zN%$MauwGq$U7-v4*}=ldU;Z!c#H)l*@Zkx4l3yK613MOGyANS!%WdpjEq7KX>C)Qn -zm8FZUWk)b*c+&R|S##ua)Tk+=Gx=aSbYA+NDBqhQS_%RDDYC|EXXfPRUSX%=0e7D= -zCgsgj!F<}>Wjzuof_Q5pVtS)UPH)WM%#&?32K9$=9} -z8X*Kd5whSD<<*Yn(~-g>85>dNL}v2np@d%BO>6bS3{IADTmZGWWheM>9)!DO@r7^{ -zh3*zfePCSxr;sc3FAEngB?U$B&|dEaR73cj|7f+g%pQaghb;AixJ)FdwPE)SttwMRmtKkP+>0 -zb-FEK$a3g}NW$h0pZ7{n0=7#t9U3Cc1SSpYqOzo#eZHROiPU*rHnLa@&Bh~lyGzpAZ -zY>g}rNKb8Fo`_jot)oZ$&&vNnZt$I)f}!#=4yMq%gG&j+6rPxq(k3}MN(+dEX}oT2 -zmW+#>#EZ4Tcqj1txptN2G__x$K=SJD&eFHCKTSS!AZkU$7to8UszYO`S%i{|`~Fb8 -z)YV`8!ogfu(@79JtY`?J-s$&OsWEoLQ>bEes`P19mJtJq(&E${jeDs&VV9EDxc_R1M8#cGowyU+4|7=ZYsvy!(0SvLhRqB!jkXtw%=smw2Rzn*n#2R{% -z=SGPNFW}?P -zRnqs7S~+@tOoI*g**>T=e)FaiH+&uk#5nCG2H9xH*3m5I)biMa5#SfOzV&epo|hanR}5n` -z3gm@nEg}ZmLfFMbh7x99m>_t^s&!_2hNEEiB+OB1(YE?Yq#wy3Lc$om$YS&$5p3&y -zWqXdR_G-3Qk)?QE7Yjzev*@?sD_DKi)3;eAA3(!I6!SuDQH_{}Gx@+WY%~!`eQyUN -zpI`;UF3b)TN?6ZQxFt?dP`}qEf=aAc^3LBspH+r|JgYEwzc%22s7lMf*e8fmwI_3N -z6x}9(6k(iE5)X8U<5zanRbnHQw#^<-!Fo@EBBM4`u^W4OwNMtFd#mlHkPAFwES*|@ -zq=TrH+y-{uNrTf0z!56ml?&L)$;`F#T)+-OTrLre(Cv~U1%{l}%2LSk-IDuj0A_59 -z-?q=R4}meMFjEx`;f(+lP+-Qhf*j<#=vO3x`n;CG*_ZrFWM{>?Zol8%S*aib?TadG -zhfXpp(Qyb8W9;Sx?O=(kyRs!>lIRTUjeNS2&;ass$2Ka8j&ko9+#zO55-G~B*Z*8AH}ha|D||*VYPQULrN4?>Zf}>B4_%Mp&A9`WX*Ut7nVjcWr$hd -z874ioYQ`4`hm2`=)X>#yCppK;X&H4&@9`V*d-9z3XHq?XI8G^YU -zuD_QbtBR?|hDN3H*xflnOVxeIHwJWrxlB24Fh;kihlJU7(OGIZ&k|Ix#fyMS|5&U5 -zeZ(2WLzvrHr*BQae&9edfl)esKtRX>1rTHdnu^r>)CY?UL|)1zUD0`{bUhq!p3KdF -zwr&U1S&C#Z1h4~{3ND};CFXRqB{gHfM8#w&Rpn~!LT0Ru+O}0aJe?3?8p%pP{gF18 -zl1&g}1uK5-s&Pa=fyK*g&#GfLB0;IOIIa*o36F+VUZvsrkybQ3i(Sr@UeFa;|K5+I -ziNy3ptw;?urD(0wE3_T2&(&+Eq_Y~%g}iJ|7>UU4F%^pF;Pi+p>5qU-9BY^#+95RL -zYQVt8YJxK5tH2R{{jFAB3JS2hnbbDRg%e8LMl?t2mdC!#%h0|KSGZa6rSNiWp(Tax -zvlaTsB(Grxaof@=^ywg0FV()B(8aP`*3bHIFd6A2vd*v+vP+Nyd!d4Qt}Xx|#c}!L -z5_)EUwn7WK57{p&pwSiMr^n -zF+RYyuIkvuaKDMNleDTgD$sM?W?LKU>J|pZm_D}LwvLHMN;J5D=vAUI1^hAptGIhu -z;+LM>>^{VeiF+RUI}QS?SIl()#ggtxYd!$PSFB>`Vd}=&)iy!m;P?GY5~r8Dl0yG7 -zS;MFH@d4+MJmnxvYrZ!TR_b}SQp+CM50{%4HejUE+ABoSESk~-E4g_JJM+HaSVh<< -zdQG>RGk1}oAy1aq{qlt}A5TM#B-dZ@7Mv_h?WPif<{fRFV@zP<7}X^C_eGH5Jj^xW -zfD*I;j}Kfb8;o1OarPZ>K8;=@vhmf+v=sm^8W&I!*!c|uD}5+f1tl+`t&7g!F;;m% -z01Wx)1_wpi8>o7Gi;aPgq3>#;!SwI1 -zKmIHV9e)MJ2J$#l!0{$2-n&I2PL)kvp{PTf7=Uv;Sn)Z(+Zs-?i#4w5+r%^AsLrwf -z;}43tJZ0_M4h0CuI$3e#s!I9x06-vK97MnH;hfv*Nr0wWd)l{1BsMLm+Bt`m>$t{5 -zkz+CF!4ZlWV3Ezt-ehHlQ;FV`!NHuTW(@TIxpc*6< -zy&g1h@iPqq9A+u?sx@qgo20vd!^{`z>VzF04vZ$h*q|vng(NGFPm`!ojmRIv@h{L! -z=Ox}_v?BK&0b1jUs`j_l-_%X^cor{;;oA~l3>aR|?)AB!v%+qq^B#0h7v=Rz24nY* -z-pk8UbA?st`|_8-7OmG?Xefsbpo`OR$rSHFvs+RFhKQotN30}kC2c#TUY^`LwpWcZ -zlOv-OA999O%7VrL>Faj3F-H+Wn**Q?mAsOoP#puGFG>4-QPtu~o|}^~6S@xYB#=-* -z&b1QpeC4cZ%n3u#1*Ph1E#%$+J>H;plW3}5dl2f`r-8Pr>?s|Ie#I8}OB~s?HV&Gt -zc=RijIqQKx&FFZ*>h-pAY%~c`z+oLy+EgmJwjB`_EDf!Q$Q5WRrg3t-5B5erAz5fx -z=@PSQ7$3eDT1aaloatpPeW)qb;yoNeqCjU$%D6A=lWE5vp9Nm}hy0k;S)FxmW@ppt -z=8!sNG7nEwFytNGG2!?4`Y=NPdlL=qg}Q#M06~g-txX*i^bM6!dr`oD_SLc9F=>vC -z1;>Y^{R&%Dv=8|W^>UY2ez{K}5Bd$+q3;7(j1?&=>#pZPfohHSkbiJT6Mv5K@l)M^ -zx@S$&zkPJiwFmu#f{LqX_!D4fmR&rP>}Z{Bf%bC(DSt{;ozk})GWj!hh?Fm67}+V6 -zzfTh_NkR8jW1fZ(pB2bEv-qa7mVBGL9Bs^^?zf|ttIspf*>-g15j`naP -z1w6ohh$#lspH=5-_MT^wxHmd3`E4m8W$a?I>sg#Lu!8O-5kU@It>wGVJm_%O8>yyW -zw6xxSVseCx;q-OhlPr>DSdLN^*y58gV#H%tPtjn?$$yL4yd&US-fb7NlE1{9kZ5$uovP@AZjA)9sWT|wAW7%|Y#w@VEN-^Q -zbgza0(!dHfkJk0tQ1{kYvD>47tXVWM(}^)0}%ksUW{i -z^j*j)%O*v4r&MYmxvZ#Ki^h_aVc1Rf@7mEn`ucEJ0;zWWKy3g6N#AKs+tZBH{7CAH -znlSq|dpS2SI7i>$0VYL}-)nkk1Fi)}#IEKaK%TFi3b@DSH -z{(ojUY!akItv?~D<8{b$3^70Y`mS?nbSrubhmp(r+QvcxMvvA7K07+5$tE8O@r#~h5JhJlb -z2>qYUWuN_Eg$4E~kRyR1b) -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 -zIlm~mcG5j$=b?~{k&J^;U|Ap0bn7 -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 -z$&P(!>lza-vg{`Yr{wp;LKH -zvR9D9)b=QZM?g*vmfT3IssTfZO;RWte1tc0c0J|<#;Kth> -zle^pGaR<~XsQcEmYpmRG+Bxj?(8Acm7iYf@M=OcK(3|I%CO43pM8u-;mmzKbFl0}C -z84@uoVgRKgt4+ojSKUkTkAxVn; -zN^V$a`=I7|rp1!Af{>mAAwJ8NrCv%*Tak7`yC&8AZgpqtmT>=MZj+~Zm!0AKRG5a) -zrjvaS+l%N6wB78O6uB6bt1SXq8Al!$Am77Q&-@@E)gS&jz*k@?;-3o26Zg9IC_Dkf~*riUQB&d5iJle3jeJ*?O3Nsl!nJ*zwEXZ*86+D2CV)Hk8Y -zOjQl!o~)s&KsS*5oTI*F7p?Laz}sEW$?BqK*C4zz#@FS9>oHcyh8^%kklbx)J)iwr -z-Y`Qfl*tWlY`Gb;F2?*&9^{BnmOFRA`Q#+R1a~WCn`evB8f;0&g^ZFTT4;t;8Td}y3)w<6P74p-V^fR+ajsw|5 -zcqHIKm@D!j<|efOkD`C!K&w{7{!M5!lWb-Id}<|iQKV9y*W%IE?Q#fDgq -zeJx&&68ewRAZmN?^AF!9_EQRvu<=@mpOSf`hwFm505v{}-1@B+S{`raxe=S?d*us<~6DOboL&e=i;hD -zH43UH`dJkM$sGW}ev-fXLEdR=RTcP)D`3_RQov|W4jRyJV#1&rET2iajU{!E^)+=t -z+by$w+2}ryyh5!V9Lm^>p+^%@gf@TV?0{EgZ=S;|xjLt{fKRI9(<_jej&G1BL_^jU -zpm{_Px#OU10FfO(>@+m2#+yCKba9N0||L*Ycz{T -z!dPXOmu$piLM7G!y_2?{Zca3YOj}u309;5JYU>Udxgpw)Aco&d8b`41158zl?zUI-elRE4$Mn -z)EAOGYp9YwV!%3bVIyAmo5T6;nfk_-#C#lAhaiG=9$G`<$#@@8Oh-60;Ii*jQ9dUPJ+? -z<5O1p1<65iGw}h=jxEQpINac7Gc?I55r_DIp2syHJBqKZj2vwIeKzz-69RL7m9alh -zu6&#Q0-b5!V+WXtTJGKF?!nQ}0{hm{PuTSd7dZtR**bbnm+4~9`%}bift5Zq&-}*$t0`dRrb8e2;U3Ja#CMKRRDmvBwJ^Pt -z(JJ=fTjc|r0&*7N5$;C1PPv8|YFVp&$wSJF -z5BqE@LW{&w&AtsZi- -zcG0!17YVN2P+ULOM<1x)j8mdmSZi;LrnzU-_P(XZ8mU87u)J7ejkO`kcwhv{a9$fJ -z0!;Z9MA;g#JX&`I65ad0?Eij9O?VX2jtX)+d70+spqEclu938>Hz+f*^Zg$G? -z{I()IQ+d1I9Rhjk0NWm}L9BPE=}rnClDFVGc{ab1YP?8;;EAh~n*(%|DT&lsnUmJU -z=~W#m+KUfZI8>$Yjl6uXgGxCw6I6Fnmr_rQ2RK3t0Uyp21B$xgRohdN)iXhilwz3R -z3VJJzT#7Ms54=3)+1Y>R2v&fQ4+~yPN3o6A^c!hRVE3FKPa6XfEypN^O#i%W#@iZ;& -zd-lRMX8r9J^9Gi1e>#{ReWELbeP#(2*UD8@MoshxBAIkuqK0H_Q()8@M|lA`A(+ -z$;)|L -z>ab(HQkU4d$qSVCQIz=c%1Ng7Y?caMIz@ZK&|p)&(uuRKI5s_2eSN0p+IDA^&}Uiz -zFkD;=hGi9}1q4val1d4KMjW6mxyd-7aUp8V?tTh0YDSmg%dc!Kbt^O{Wvaqg~u -zg1j)(O4gN77FCTsQS1ydrbG2U2O!6a=ca+I!gmw18QJi7ik>%ra+GWGn*EpdW9wu{ -z7D~HMP-UZMU0cr2I77B>e&`QqgoTX)?I|oG9AxY6bCCm+o6h;KTGi4)Wnc}(exFF0 -zV+bkoW=82Li9IQUX`r^S?}6>X5`1)EUEbx~!{GAeoK^i+NXlHUd%t?$tKF{~{Mfms -zrruw4+Y!6rUx*gs!#qOZI@=+e39t88dc3uyV6Xen4_tCTS5j{9eafz`B4I{Ove$TQ -zCR2la9#d*REn!%O30qa}Yb3vu^jo^yS}eO#xoOw^p%$(QG-)3WX@hb(qoS3=5r!1n -zez)oo1WKQU5{T21&irOuINV+kH$95hi>xP?V5V<#DbY9ck}0eh`aOzP!g!?22R+umC_Ma?CRd}@L5@Z -z{8ux&$K^2w9e+abqIn2pqFa9+-=ghd1)=5MpIP -z?@WCh4oaYU9RDgmR6wMVc|5M(I3|n1JgL&)u(JSOU>K#)5CP0blE2wVAe%OqsF;~-pSPkDoDk!#n>B| -z-(mWEjxq9P~9}4j3_7149RHF -z={B_h<`Rkaz1)}1-pi@Yp1H43AP&$hE@!-1=a#W6n5Gf|3iI;{Anm>>eJ&DVibJIl -z7&Yt0La&!3QCD$-!OS+$n$0>iysAHf#iIwUKC(CF`j(C%FPDl3N_+q=H5(*Z^B+=% -z)*-#PnC#4^XP?sj;@sjSLjG=tRIg$E)Gd$lt3f+nJCv3nHe{{PiDu762~XQ&Qv=V?*veyr&d1P%4wZF#i@LPzo+r{Q<-cB0UOU^j2OepFAzU4Y -zltu!R-*|i^ih-AW?qJ0T5)5(fU_Z@2dk|IZCnX|c57r97Y7ZP37{HGs(3(tJ2xb!i -zy-H-Su1DVt%-QtO#V_AgdyR0d>D5Nu2>pkV~qrzk8hg|Uv -zkRet!^jNNSu+pYfP{s&6fFr`%d9DIrx%wu3>~4hef=3^wF9kO%Wx+mGBCm)k>ERet -zt70)pMvbqJyq0}m^I?lfIgJ+mtTA_T6y)~3aLrrqPtG*RDoF+&hlc*TiJ6Z5S0!Z{ -zG9uN?fYN1y)NtL&ME046?wQqWjT;Td!o#8Ma8F36F$dI(SEUee!qH*vUVnk~-c6Qg~U!V!KpvE@c+c09Fp%D?-C<4OO~$uk<(U#1=bfnYYcne=kPz)r-t -zPitVddgSTy6kn)kV`PMVip^C5Y15$ufSf|Gp{PSB;jFNKR3r@+UlqHDsOlOTM}{G> -zq^g*&fjW#?to59X6>Qs1>*RfcwkHrbMxrjP=CJqVl0^IKMZ08cYfIeNwH)zBeS@6_ -z7@dAzty?u=Z5HG~3<|BgyURwntvgwn@`Z&71p1n}3d}Cj9NkdZ=2m@fkSt6!IS%!s -zP_w{K(EhgPROchEBWe?QI9oYqzudMzPD}QlDTRJriuS;rO=$+hlJpuVml^#OLI%W4 -zZf-7tm;rsjHC!4=%j5zNu3L}6rCm|fUf!=q(~CKj2QEpTuekBh2W3t?p%Duo>F~jD -z$71yQiiHxpT$kvoY!T>c -zGcmth4VYmkglvUujlnUu2Ar~k4HxGv>i9zNWC*{nvkH%d%63u(A-?U?|z3yAhi8I`!+_~aK0nhq?*l)C@0L~*j_q`Pce3J -zZ|wl0_~u9dHgpc%E)hNa$hgxNb2Z6_RySTHVsxuY1bUYvjRDZ-=6-3iLpmCKS7pqH -z1mEX}zPXK=Y}1mP`2T?lD5piUQovcvsc&10`=@ -zek|6c>$b0_If-%rDf=HbR}L*971^FCFfSD=rXw_}()4f9t#OK#^1miByqy;$4HH+pU+%c1JR{(vAnIY~k1@Mx;H-TQ9Hy -zAR1`|Jbjs%1P%a7*WfKlb|rzCrZSDhir$wW;E$n1P&~wMEICPV%6uN2U^FA0Opjv` -zI_GyJmM-^{KG*77UX+4bjzH`#93-A~RWYLF%igq5T2D&|58evA>)uEe@LA~^6nT&P -zK1#LftOHE_AnoSXbu0UK_bZW9cJ=AHOKMU!4vt641IQ1Sh1e77;R+Xsx_|yEw6ORE -z4-5NRBLJ=JS{#)N(j%zX-j=-_8gd!fHI{SW^jY%Zb_G3vfuW&}+)|G6KmN8rM!d1y -zY~``0<;z^>j!aLfO)TlLmfm`m5ayEC%smYZB2^l#8*rP~s#s`Jqg+}!Q+c1gjn}=L19lWM31}l!0r^S!H?z)r -zbcf`KfuC2w!AgB?f(4D+~@g?lqgg%6r~xN&XhNj -zXbQYv6<#>M4PP94z&h0JW`b|*1GP7W=PswbJOe9j4abHcaKWh@Z=C`vt=-&n`D?5r -zK;uSGMC_w;vQ-k4!_mrlyTQ+dfBp*{tmgQr1~q2$Q9b3 -zqUx;C$`lgioughn+psSrGuq_LwFF~@#yfOW3-%lnz%+pwR;1KvHzzB+vE3rOJih@M -z94svP8NuLs8c5;3p$5hX`wWbyo_4;C2P^yOlMx -zTr>1)n*xE+>Hg&rB?DXo`tG9t(`Kt;8J!^!0^xX^O=ER1qI-cS=tqkjoB!vX5TVto -zrKuJJNI7$C*8Y7+77pJvO%Y}NYX_!{9!w&yCF9KpTayHAc1q_cBV0zLq_EA!8#l3& -zFbF>p2_|RU*Vx%yAunzUmxb+ZMw=Y-@ -zHtDD6lUu%5W;1vWuh!UjvdYo&+*}xAQ~7o(B%kbrKksF5PyFSD4s&rCHs!y=N#2c= -zer)|smM6$KTwB_(Olbasb#BC(YpMPonW(?s<;TM$^-4Wd!=On-mij$<7`%A3kf96` -zOCf!`WZvi{GUc9d2#+Ou0^z%~DdpZTPKBz>etjonNb?HR<~~8~4q#!~`1c6MgzQM6 -z3J{+BTWRkod%$ahFKELlnySh`ryk-?fYK3|a|OCWJCr!JnM8QOV33#-$P=)zG#&CD -zDxHY3q^98=5W#UC?SmOLC0}v#_zorYqNy9l1k1hBW|f@*m_k|TrMnhUTtZIY^h4n& -z0SE*3dL<*9s?@-iFF9A+e<85a4OEr@Q%b%1&l&QeVXcIrOsme9qnwCWa+c!-1jbq- -z&55-)9(+?FDu5m*?ns;Y;$D(2u7NHep|piGdw@jO@7IFMgn;7*tA -zfKq2TLfP#Ykr262WzE29ru>AH#n~kAx9xCo`Ww5PyEhd>m$zks&YCub*q|)-N!Drf -zCox)l5Z*pU+k2!7yNgzYW`*P+dORxb8dajp5yIGfnj{@vI|K9?d8@1XSD!sR#QGF= -zjFMSSRWauh(uK26FJNP6YH@Ai)s-?dwKPJMXDvUulo|Xxoh$d)|diQmQ -z_ZCXgYe{yY`hp2ZUgNygm`ej+rCbi>N72?)( -z9DWpIgpon^1tixnll?~Gl)1nVxDPUZeyy@8bci}jjtgkvP2xb~#$q;lQ7NKpAxAPn -zdsljgD}>zGt4YYO+%?GEjiqi30vf4|I<7I&8qm0aO%oWKa(& -z;HoIS9{qeW<|>F;2A!!-jxVDa=sp*5(JRfgbGzjZsptxZoiz$*Xp?VE -z##GH#$O}qjxuuMpz26z}UFlX%FU65QqHfsdHX8rbl9SqvkUabGc4bqJ_Z%`Hq`iXV_&R?6F;GvYY;edF|TMcP?;N7E_} -ziCht1#T(RvxfJXl=}bA6i&GrH%sRX8{sk_K^$8F<2Huj-E~tDAt&cSraK!~1F%2_= -zp-%QCoxofeY7D$=jo0XrzA#a8=qWzru9AyxjpTe2*jKxT!F<`e>7v2r5?e*%vaIyo -z9h~kNCZej{ZD86AX50~%n?CW{Wru>?WrXyvV -z5A`U(tr;vHfiBQ|mmGF+uO+psDByBaEf|lxxg@Op0O0;v)tahrvbm_6RCp6; -zhJqmJClX#an~?Xz=1y6ca6Jp}pboUsmAdGez@~gezIqEMXtJD;r|K+o$tNg1eSOxY -zPz#=r7Fo{ydHUu78Qf6=#5;U3^xdNfjya+six7R%`_=lXhyyWLzPt#)jo9w@wK&via?bvRV~E=j^%5&RU5qFQ9|x6eiq -zx=x}|sR-rNWS3b|kRf=XRZ1Y)J6xYj_;iTM6$fDQR!_L5Q5&sDt31;70b1KMCGQ&b -z6E}T#f<=!9DvQX*UeHqM+IMw6U7hy@)KE$KT|LU^CUKl0aUq#NI0A_89%$_nG`g%l}f_nyTm8x%qIN{1fw|*BAd)pF#l*V}nEm5;kIKmM~+LM3l4@k$f7goN}t;dt#JO4!0p}7dc -zM1Li9uYSR^h98v1OrShVI##rg?micQ-p>JiZqaE3;2Qbv;VpQ+yi}B_W3cZ~mL8OV -z1#nIbZ!CvNlDy!KpeMgZkkl$mC-;WOu`DJ>Bl}nN^$D0eqpE}QB-zJF@?K)KtdM>5Cb}dmJAW+>I$f(e -zdwzkXQ&|N{Q5_gYcVczCxF`1Ltt40{Op4760agy9&TtSk)}@%Yqg=M)rI16{nJ%s; -z(eV%~0HSwDLF=4>#w|OQ_AoFW{PCO6uPc#AbRT;ktB_aw$(EZRoAEej3oLSVD9xMR -z^`(nNW2LqN>g6^6@Be82LK^RPXNz%u46=n~H6Gnp8p8wUv&U%+%qQW08#1p4{hrFy -z;usR6x6aH__7yoEoZq*m+GBFm>n@8<^3_s5 -z;`Db5KC8bc*pU*Eg=68Qo<{YEuCt=Rj)xC9<{aw;V-O7{p6$&1y89I#3TFB -zDXj1TxVMttR$K^bVt||sO$+(q!B7eq5KXAMD~FA>O8}JXc4nZ}BKTb9eq%g9Uby4v -zaB-KdesV>!uGZui9cB_fUO`|+6jqL5Dl -z#8^?U?(}Dd3XN%4*#nd%ghZjMeiR43FE?Xn_j|OHvBZQLU9ectHIg3bX -zeGuIJsuCm?gLb(g#ATDvi|pQuKJ|KusiP6#BpZ{`s@@b-?L!Zh@23KktkRpdBpv7VbmT)bJhM!t7{iFji?D -zun1qdcZW(vLn3Sz#tQo<=Y5agvv#iOIhBgBXs}F>?nzTAys38=XjIw){RVZxJwrNK -zWld~B;gFyqu}x(^k?!4r{=@nT1Et1-cokCB&Cm&3O!)rMxv|NsvPvM -z0j_9EI_!Y5fz4gOmjR -z1LV#?NX>QOA26tL7cJE^iJ}PzuLQcNo{)SJVDoc0C=$%!j-K|&v*t%K-iswdLo4C2 -zs~X_myp;3BAGrRg9CFJ;mdd%0KBhxXNECB^f=dK$UH_H!%WZp9zBtSQ#)KH9yEOGC -z41%IUvcvBxWwMGaTt1g}(1GMDWO#Tcke3_^0S2a5IHew1n1N}!Ooz-r|MPbof`^pT -zpjn^wo1Ep6?sMOn97C)X2uCdeeMD%47if3_%BnnhhD-iKJ&vt1vg)Nc9%n}@!D>c6 -z5-Oc(2tgfrkCLGUrpwln0)6x$rHu)18Jr;2)CXi4@Sq$IDRlk?$uTvo=igud1AVzI -z)?5qdQ4=UqsaCE~ptPT`kX_q;HyPS6ekgsy9Gr+Q?1onD3#~kmyl-nV#KH=_W}W-VI`q(7}0~WkAyf7kJ6H3uJO%UC{_+ -zk0pP0MYd{5=c?od63Y8ij~n)ow2ilU!M6M;cC^;n -zi|Z)*$>FZ6@`80H7mn-!^d{*{He;bP;v9P=yP^K^f5yF-(_ydN

>i`U!IS(IQfGlR&D)m11bY`*&5i=K~H*aN*eA -zXVt#DP`mSdl?`*%DvSv?j!8JM3PGEc@e1Mtd}x{Bv@UWgZs>^hFO$5|It-h#aj@+f -zg41%EH+Y>T51-oP{S!nZ8sxNd9 -z29?(?8P{^{;;4*hQo;+i;<3J~e|P8XV|ZG+%iGseqPaV~o4=WSZS#q_mENb>QpuU3VfI -zdUd%}rGt`pfU0_~Ba2uS`>$+_r1ek$R5uiM!028xXo0vZQbP`|M85F$;{t_h2}+v!;Em~Dzf0oXF!GR1xSjWs)ZiK7*11JkdHd6j#E5m=Kz@Rw^L -z0aT3!BoWgnw?*ji?kPsuKsM;+X<$18Ss*d(0vT@(uz^G#N4;es%}`A;OwY?(n=@oI -zYq;xJj&60P%`o!SD7sLHH=sER)xk>$pf->hhzx}Rr;zmgJOis16xOwpK6{~-E{JdX -z%mK6lsYXdreK@7XE-2Q(`E12$LDfwqM;y<=K`c=Ew2iMGT}w+((6eHKsUWaToevksXU9MJbs>qj}ouNn@al6MRcjFD3qLHSgF)IX%% -z0-<*Wj=dG!ScGDx!zv*G!$Tazqk*ZfY2CK -z1l8oSu1NP@{N6AEoG6;jq^2F_961Mn+2FInORH6Y%F5mhkRPH?sbdAd`EB&1p~Pbw -zEXNdZEM>MkNOxd!bD_vWE)$gtQefSnBLxV{_Js0pjDf7NBg^wDtUpk8lloARj-p1J -znAlCrHURrw+2d<`1O`lKRb0eiA1J)6T~hkluUeZtd`1jVZah4f>8kOI7%HADe -z-jTh8vPXyFg7ao;`l8_#y%X|#tBu>Ht1EZ94(uFWfJS+XULgv|urtJ23;d&v_iJ03 -zGfNj?c}T^*3EiW$fxRCx+XoLyfXwMtfv$MI*9Y@nv)_zu+S1=&wEIRsap&du-uFWx -z$H=vVn~feSJ{w+T%+H#^Qe((&*fe2J8x{jK7R&%JG=Bykzc*a}*BZi8c)xr&T}!p7 -z*_K6FW-F`U*t`r-4ra%DxqnLg4y^B|`=8mw)o}kuxBl<#p3KcY+((_sjj%cJe0q-|HR1$b5}V6ZO-K@0B}Ga67!WKPJ>!+eLkwdrr{6`!^Jqx&EwnW+p3vDn7!7yq|Y -zGA>t{Kp@oXUhecvZ9>@xLjs4D4Hn=L9VW+gWxH46^?{A3k7$i?E|EfoDL~b}L;yZ7 -ziLKy*kWXK|V=T@08cveIEQt;IZv_59ApPD4#3q=5I?P7cNXgQ&|2t!FyUDS56NGBs -zyepnb>ENiw9TjA0W}9hJP4ueim7v~wF%SI -zgF1|3-nS#i_na|~@6a9h_9BN~+}n$WZmbIn!@uFYPr+2iIEIg8Vs~kN7j|8yXL9V$ -z28`e5*^<*+j;A!S1-p3lnfgmXm^=LR#&CX|<7mRK<@o@4QT@kH&i>YR)r!r!%ILs9 -z0aNW=#a;Sn&fcw=XfJBxr|{0L%!VNfuwmM+zEpM-^9B5iH(|(+(RTkoem>~J9u2^J -zcWm|jB*MQ?_Gxq8ChEtsw-S<^cX|S@^SgQP-=2CvKWMqokm_lI)*V@LQgVYY!P!H~ -zL3S&csuM;XY$cH1*fE|}kl2*C@`nndN|;)~i{{5(NN%d}0|SGH{Hj}6+r3I=G>6QT -z&?))Vr1t<8!Kj3_#J(0gAFV?$i6pD<%yVVQpH0C+?Zl#1G{BD{|BH?dyuNtC3R+Qt+=1#{@(y9)s{H~o#Nz?b#)w74pswvjI@O|7j@mbB= -zbUP7%z>xi}hl&$uJ`U`JXN6Ia;U*DKq9y1+Q_Dp$WB_jrCGgiWxp0&zeF@DVx+Wt@ -zpavu>Vc_9%7heFq2$R=M(i(Lc;33`s3QNi52I_1RF5txZ|mvOpCq=k?VF)>|95Dil&H8q3_WgrknN?W6F2-HY>9`VlZ@0CmB| -z-l1)-&WnIg_OV$4Eig_CvwSYZ)5Yz|Vjw^P@+&_3DfK86G%*DN<){WH*C7W-@7KQv -zjr -zIZB#9gVr>5~+2k1!tD9iRdjp(N5}puzNFv -zc{pRcXyP`hjg};&6>@KnCcp6z==R&rey}V&kGT9ZLL3HY8(nfl=}D%L2?dFK1_4iG -z3G6-)V$SIhJIJUn#)DTfnKR{owuvq}{{Sx#hpOSA*tdv8+_=xleJ~3RbY~t$OmGM5 -zCXHHm7K(|&Khi%yL@h1QFALH^*PBJzfKmMSF%hYA5Hm-Jt~tI9YHNoR@2>qCEALdn -zj&|HKXjuHIBuxgG+8PBFuFk24YqOp4;(H1l?R54#aMyMwE`Yc;h&lYtnUmdG(wwy) -zu=6cRw>2_qOiHP!Ab+dxok4?Se423W3gMTc}tWiMq<*2pz -zj4!!}_C;($5TNVO$e*h12b&3Lg{+-ejY}(7u{X9y7KxCUh>(R&Lt825jxoL{*?G`F -zN-6$AUXoqFIGaNV62${_#O2d$)N+X$stkggAyUdAb^d+@Bp`;SH4GGXppy@&!2V+9H?#q$ijrNW(2A -zm;hfHgRPP$G`<2PnHFxzxJLdqtHK>*4xh844#vmrk&-iBDj*V8H9{d66+WToFV4qM -z6TnB)0}dDw#AOl7X73i5)@)AFi{7Lfsw*AFop?c{92d4c|7`O9X^^4VM@7IAq3(YW -zPB62d+!LNKGwzLgz@SPfO&pE93=$&{N)p-Mm?-jZ%L}JbpVdga&D6SrTkJK*B|=Hi -zlg;Im84`7~<~nJ(Z#PAwN2kaDf2!l^?6cr-i-1++3=(Noz_%f2z92Ref?ii>H-h+~ -zKa6OeXhF{kk<>xqcM8fUz5~zK0SO=~mY$KP5gl2DrR~=yw3ptIzIwhavqxX6?!OxR -z5MBZ^F^MNFf505rRW*ksOWLRcriMLeHeS1xj3}O+GUAe934yUTWZVN|K={rN=1RNAV*Sq4q`W_{G -zgD{^pjSVN&a21?07Bd&lsn|0$tr-{x$?#WWs1(M*BC2|Ysp_8`F2J-S368MZaS}v- -z8Ckp!e#&Y2!JOO`=xXd>K0K`ns4RymB{g&*Y(|Sf(*aoa@kAaAjIOBuSHQwBLxNKU -z!AD5fXDGwCyR<;C#{3VU%<49ar__G5C=~IWQzs9Qoc(Vw$J+Du{#~C66{xK9i26 -z-M&P&_JpSd&el`{A$+x&m=*BNbc0v>F1+w#S6cldYjYMyU3jzj2~KgIiz -z&6mnaA>fRfvZ)H*I}2H-FxyRoKpx;EO?8G}S3p-R2EpFkp2cDicm{>iB=(JTST} -z{>TijmR5kxY#0)-N)=x;)(18^>ykI+mCRpMHG_cd7{hG-&rt_j}r$2z@K;QTS&%2w#A2LDZVq9A@Q{9b-8-&&__mP% -z=tEQ0kdMZy;UG!C?rVueyauEOFf4#HY?k1GGv&E0$Gx`Sw8L3u-62MBKTPd*y9*;Y -z=jdaBZwl_}7wsGaF)xEDwwZjxuKho5f77#zdq(y+WcI9u(;)x4yWgsjo50poXjx(MRgB -zkDmJkaZ%7!gh4O~7kTG;g7m8pF}_>iV;KYxV==3cNINyo;DNu{dS#Co3~`>=G9r9h -zLpVbK&Dc6YAgwWrX*ET6#XMh}dbYHCI8_gmn8A)Q*C>WI$G6upJ5f@?(4CL~8W2EGd@Rb~*DCZG8db -zgnkaBUw?DjaUTOiyhY38Nmy2~Nt^gJb#SvWlYMkG0@9&!LcNg?e&*N7lxFkTvJ9FB -zluX~Zo;$+YbiLC^6b+I1^w|zYnmLjdnfKTCRIt2tB*^VCe-iyR*|67MC%B83$UyJVQ{zxfpGcs3R?8S*obey_VGa; -z)1M-}3eC0!au~3RisNaD -zH=gr+dHxG!n*Y2B&#JC$)_^!0JcJL=i7vP}rX6ZQAMQiWlnei5*1ntoO%VAxp-`s~ -z?j|ZXE*9lS+$1y<~ihVN!;{P11!m?Bf4~lbt{?$Y6l1TO_KH((kgTKdve6TVY{Ai*htCdn$C$KW+ -zr+m7`sg-nZ(GL3Upw=#WM>D_Y?9J~cJVJRu-|!b2JOv!7#pRrCZSJzNB5&!+by3cI -z{;*Sh2|+*>HnkkN4#I^pA>$i}MVei~gW{J$OIxxg*hZzOe1Lm0RtUIIX8MH5Pj8mfL9g(@=MIiyLJ-Jqw6m5S;y%>W~_dW!P93!MD0V4^Q^ -zSOd7KV%nDY_@IH6DvQmM5P)poKkx$AgCyJ5AOl3WY!$?K7}y}BD=IynYLwFLO;>8C -z+T3LNw9cM1+C_RRWrS;hE|Y7-^ -zj!^#?V|o_!?ry2G0Y})2Z?8~knNU|;U=VStO&SIOcPdp$e`vz0_ -z;lahK-LzeTzl2M{B1$~Y<2i8{;p|BrB+*?J4OKh)U=)Y*gnBF?`58zM8GTT!R)Hc<5!1Kwd( -z_AaO02Fst)Ljvm>WXAz*%Dj-vgqt_!PnrP4nTQV$Q9ixI7hVzk-}=HRkVQarARw3b -zDqS`1)W4}Lq|1VCumOci!a3+N2o?NJsZ)r)vcPqx@}T`jUmxl#Q~zNfq1DL-p^{9E -z88z+;@sFS8QwfyXq -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 -zw=}y8Tn25#!QBYOp5bJA`>(fv-F8W&iQN|XOE -zKNE4Os`I!=K4*ONBk#VAk0w|6#qQ!eFbZV0pWU+r86L*)tW|cLCtD~lXTC(4OurG+ -z8ex)|G`0(Y*%jX%$0R9aJq -zHeZdr2{bG3aMo1PO{h5=c3I4eyI)aS&{pe?Et*S~i3vLTmshSVI!GfGKcX8M6-CpA -zpUU`)cwR4YHv>c$A?%jMgBHsbp3i%*&$XaGPEE`p!u$H`_POIHjtt?zqGvt0kzar6 -z+A&&RJD4jT-C4Zq?{}raWmf}|AYPF=4LQ^`8S!>F$<|?VW`>gYtw$phRi**ag{xPk -z#9LP;hPNv7e;m_fdMr{ly1nzvhAO{mm{NF%B_X5i9n){wvd%_g`cx~wS)Nx@WLp<$h*V3L4|bo+8<=q25+Z?c|LM+!}R -z@a$wW4Fb;>41hW!6jAxy<@Z#|!Iixfg#rWkyOb%JZrHw0Imrt`E_p8Z=4^as9W+?@ -zl2}a;YHGfn6bS`Qd#jWZuF-3%92P(L8{;maw^46(3V5LLb_L%EsHJ8lRhC2*8?}H{ -zGyCFtjV#4f0@qH6!bgIYILP_s4VzThmbK?DiCs_zbyNL9D#<4>|STR)xZ?0PPHK$=* -zf!m{p8kA{^-n=zKh}R3*cayide15e32=EUHaY8)chq*w64#58Il-@Q;Ac=`IxrF1P -z&9Y<`GZ|h&7*NZUaE*9`v9J1LgJE{b`osUr==F4k^2rXBOB49y1`aX#9AI#SfM9s!{^+}Wav?p}AiZ3gIaeLzzk89IGUB8H=49AA= -z$ae}9R&O1xEhLxEw_O-5(V~Lwur7M!xq2Drtv&NiRa8T-Fh*U-*9VWXSlh<2{tm61 -zqgdEj3AO&%;gxkxOEGNP_%24assi1~>pUyLMcQgXt!v>YZ~5kHo~(6FvpdFz>c>rC -z5;)Lk`{^G2j1nHYHY|5r`n1<@G~mPo1g<8>8=@f(VfY`9=LGScvT>$`q2#Z1Sz-c6nG`$=Fr -zpY1e -z!8bmW3?&yp5AMOHy{FS}16K(A%{ZPk6nSp6jR4UI0dyZK50C?espjn;#;X*4e)okL -zX2+N}Mzlm`({ZRUd^eVKy#U2_PJ2eIg>}=&LDDDhDdowM5FB9z9TYlGfKiLqY*zhXW;c@B-j0+mIramI`_bsqTHbhvf|*^dl!~}1 -zhv6mgxf#rF5)xrnNeIaiC-FAZnUAd{5 -zS)Bx%ROLG95Y#HD#|18)perXBEgpK|Se9G5`(N=zK+qGKjK;z4Q72Cf4mivGRe|lx -z!HB3TjN$i2!I3O6HHHYBFn>XZZvWKa<`VkSTXZ2|!#9UWYNKOHt`*X#{=f3H%cSJT -z0*g!kh^sP8LAH*k%Z&K&Ii%xT#(u+2Xds90oILSMOuTe0k7T(MV1U`or&DJm$B8j+ -zQ@q7COSW66&9dk7DP}@vgPI!N!49E7+9e=Xq=fMH6L@Q(g$9#3L{y&}@;9Qq?-l^> -z?1TgE#7J&bojVF{q>T`5!DG2|C!Q4TyTxu=V(%B+pJUUgMLW`7TyO&nxm6i -zrQ^)Wr1>NjB6kW2&;yP0FLw{y7J@4#TH6fD_HyLEgy{o08kN@~HKX$ -z1Vs~5@{GG$Jh^T~jN*<~$p0s5+lPuxn$D2wGg9jrnu$D=QLx1oOb_+HVcWRG-*=zj -zh`GDO@`c#*s5K?+STp>#9T_i!Jtm~+?mux`R%zFqxLY3E-tsym!p%EnUKppdzh>0$ -zR;YjWDZ_f^EeByes;Lc8M#mNHeW6obwxlX!k=rfO+CRj!vkZOXl~-zc(QS|Ufc+7u -zQ%if&gmU{u>Bh<`5dWj@O3@thQ^f!Co~Oj2%K95suy1Ih58Sro2gaasOFESo#-$VXdgQ6iA=2J=)0-ftZMRJh>_V$ -z?W>1RJJEdWR5JS0YDy)U0&m1Kj#Es_N-)okbKq1Cnza4Jo3P2H;UtyLJIiXPwKDYKZ5C@(qvC%YX@(nTBf%+)y3Aw;il+p!LN|_xNtV&nA~c+d`KhI -z&JsZk2818vYS*+wAcVrRt0$3H*y6RJ%y>d@Y;Necua%R+Kc>27RbsY1@ -zLpY#tX4rts4dYpqf3c$KeHo7jSY?PT4h -z*(h50Gd1A!^#}%ai*42HELM@tEV!(??mM|#M1jyq{C&M+7m#-l&N{oB;zkF68P${D -z)tSHd%%X)|(!%QxY@xS}ucxqEG_yp$+?yK03Q~}ZCjPvX!Fwd_z7x-Qk2UDrSJH&h -zx;;x|1L9434%hzACZGq{joB)ELl<19puDDA!@65*0(KZxMgGBjt|FON;6<-DraLpM$vy&N&{I-hr&hN-3hK?ZpQ6&MuFV&|KNJK{jp -z1qef90OB^1Ku+>RH+00l{+z)k1@w7(+@|Z_-sK?#vLGgQBVpJ|5YjufdfqWRPpU*#D-n|W>=8>hW?gEv{<&1BLHG2rL!SB+o&yd5A -zm-YSGS0hWBDPfeZiwDu>2y23t0g`J|Okqc^obUYy(lD5u&LL_Vub#8$EvxOX^jl8| -z>Y3!{;*5CoKU(57cZK-PrK#^`Ju%r62ufM%9h>+Sf(%-fjwPQhNAg+!GG8z)f?hsJ?AIb_*F{=sFfB# -zUiD0~yLF=?oZ7R4wCNM`2usY%ds@aB-xp!yAqbzd4D+1P!b;eBDdSuq+JTNKq`lUi -zT;(d&8Ve)wlwkigrtnvc0Ci!!$Lh5%|C(1PVdGE4s{C~G?-`zcUw?U$f^+jI9|b$V -zQ~OMDFvtMOeniQXwlnH-Y`nohG7>tb`_SDk7|3ui`fsyIwVYl#s;ERsU8h=j;?rm3rkQ@W#DyT8<{*ic{5Gc=wUew@WSijY!Z7HmA8zhR=X>f0|dVYlk{S~ -zW}d?ALTR^n=dY>#?ZBEH;_SD!zB*!y6;c`@-;ZQw2d?~q_Ti8gD;w?2AcK)FMMnF9 -zMU&IrY{AAJvdrxUqlh_KDs3-~OLf#uPmMY4?4RIEr~(ZmRRcqwl1_CRp@>%|9`i!c -z*GIHI1qGHo?^9*iV<(&FC*CmyX9=a0>vObqZf -zJw|*ZNRJqhsO -zQ%s?`RdQ{3B$~U51#&jYv)UV9SZFN7)O_)VPFe&~N>st8qCUSSPJYuz46TATTW-cG -zvBYQc$p>`eQoER=CJ6!?x&bVEX?PC2SDP@iGy0*50VTfS*NY%<5D^8gGd?o$V(Ic{lPRDlR> -z2SctBzn$FxB^MKb;EQh?pBJA)FqWl*ow=_;$XAYaT^}%~_nX7yp5N)yz6d$&=dnpk -zJvyYU^MM^d!s&2H8W7@Xv$s&gRUUG>Z{FExK|8-Utju%!L19t -z9T@A%CU3p9Y~8d!WJ!`#yl)rCu7E)l=q80JT3oed2+|Hz-U1Kv;Yuj(v7G*CB -zRCml=5MV%@1_euIGGrRb)2rQX(b#ek+=xIP#nU9(OYj~FX=v}WN~=~(JknDl&=+@r -zl;~U%yH1?vJfalc6=zaBs4~a>-H{tpt7iE%ufW~D7m)c-p47k1KF6VSIIgtRlYDW% -zPxw~xoZmc>(J_LAa=;;XbIMVgTowufSRy-ZL=9t0bYt@F*565vyCJJ``w9urg>YbuJGiVjbuXHMPEgA2IWtp0-0szqZc -zLO=bBctU|Ua=RWpwi2%w-ia;~z9^a#m#E~uJY@UWi$k?L3c1XlP3xdaRd$%~75ixq -zSrD$SC5Rt$1vXYKich0?1NkvZRTGj`=44kA6ygzXRiHHxN(PIHzrPI`<4<&y2$L+h -z&gl!^Pl&5?O<#8tk9OZHEv8;GQqS=Yn+#q7AK_-T%2qmyY$c}O^(zwgVl~PuO;Y(G -z43&57yhYF%Sp6R*sI1KIa$#%LWmGv^ZUX6-KHuh1@QID)M(o*FKKF`;?1#i_T*Inm -zBRebjCiUq& -zvcj=W@^zVesSds3KleYP|AfM*eI`m=yof8*(7YE|@NiU)t;8v0S?0%Xh3}D}3;DV`Xt~n&O;#ri{>793YJZv= -zkP9xMppjrS*pQe%5E6*@>CMmB$Y6-uQ)*uZt8$&Y@1z@)eqGZ(kTLxB#(E&~O91cX -zdWWVu#wG-Z01TpXo)7Ip7S_i2ilZonU%!Y5_Y#%Q9S#0Y&FlycMUTs%NC}o&f8j-v -z0tQC*$j210J#u6NF;&c>R{^Q*-Q#_c(%lxTCKI^hpfq)$N7!iD9DxNVj3l=BBUs_d -zoosSJ_H;6Y5M}LTGOrB_9lxC;Dw+)j!jf95h|2nCO}6899VBsVO*s`>pQeV?bCf7|rFONsEinn{zVhUH7m -z=pNT_x@3@c0bYndAIFQABzMcc4^A^#=$CQ%f#jl0mKHFjZ~lm8!EDiP>Z*vO5t7LM -zR%5#vmc2+H25ai>XpxMmoupvT6>}U#%FkDyJESnGKa;mH#p;$GAKil!)8~Vu;+JOf -ze7y>JoePyp%uqR9MR6;7BK>AMiOSVkI8;p;K`E}3Axh2sb<##W($&|e!J@BbNHE#F -zLBPl$m?TafAAxoGUTS|6>{ai$2>95Bclg=42iI{Vt6+?rL+XREv48VMBuAIH&~@C& -z#-|S6v12F-wZL~gPe#DQ%JPR!N%osFROdJCZ79F%j)Ver`IR^e47U!@QdB956vDnF -zyptC-M079iiffiR+*0CLL9;t`6WwrYe(oZ;{NJ6F1Rhg%UxsNM91?=x`^KsIo&*(k}u^*+tY$hs58trcY+_gHyhM#pKmDlJ3Dj{G=!8#zHyi>_qq7YG -zp>uA{Fp8KuaC8%XFTxAWah14zgZOm=g>{n{d|4#H*{wLWT_A^H8a#XU&C|s`SUX*t -z*La381y&k*D@i2YQ}cHo6XZWaI}*7}ZpAnaP(PXTE?05*aej8}e$&8(dCP@+Xc#64 -zCD!Cs_OLjDaLXiWvFA8_`n}+7rhnWE?h=&MffRt`Kek2vZ;pbS+N}_*PHu5Eth#ea -zOUL8omJLG_`vQc$4g`pdhiC2=ag9cG$sxrTufa3oNJz_?rj@Po^Kneas&Wvt -z$Ald!7J8$X44x`$IJ*;KjVyWzH#4%Qhaa>mi!x2~^6|uzAHAFTQ^*HS1z}3=4|%^y -zjiEw`I|4DcLBQ6-a)#BbjFr-?X!^`cK4@()?<+@HyjW?x4UD(f{R4&$>y;zxTnUay -zF=@dr_0@p!6t4S?CXVZD21PrFug|CA_@n&!Fj%%HaA>09z{v@(EE)UcyHZDrEOq7P -z)dK8!Hz*crSqm%%ZvymA6pd-lCf?CN$Xiuae&O4ZBFD^X4fXMgX?DjNSVozIQ>ud% -zsEKxcR1@!XKpgQ#KIx#ub<^-h$WM}$S&>@UU3_$mjF^SSNy^P?gfG`%AU1W;ho(~C -zx^IU~rOn)d5_KP)WLm&e+j$f-?VdG?!dl1~v)7a}I`X+w=~OW`AxB=`jWLj?V;4t}{Pti)VYULOi0pqsOPKLR2m;A!LMupzZxv -z46O^qWJWc*6)Mh)3;Z|2v37KwuKV|+EemN|^!viX)@H@3_y4k%Osq)dmQ7UoM?aw2 -zD5ja#;PJuJSM~T(dymgX?k_G3QtjER%ek8j -zEQwhDy1#3pC}Bq*z-CJsZ1r5@KL+Ejnzn-)Uo(+-f4e_tJlnk7Nw4_~B!n;HTrg4-YuWOsq8l`xcMN?)9~DSzoFz3Bdw@ybAxFpwo7BSHhbE}3;r`%> -zyTi3rA(x}zg3VAu&=LLkSliFcY22b6!62fNQ3ha820_@|RaI1*eCCG%5#7!~#4}*k -z$F_91J$6Fl^;)KS0!r%_4D=Rb(N2%Cn@x9WNvd#f_r_oiIGIgHx+_@YtrY?f)nH#* -zCZ+6D?*@7Jk4thwDd(%Nr^ZBVj4v}WE_;r-O+9RN4bW*)N}e`qd{lD@;!z{FmS_Jj -zXz44x7lY-=%Ec(mQ+}_-v?>1AO^MoF=c;?dFIv9KRKj5q&g#FIC1iY(%CPp_FqEOP -zwD!whAgd~CGtKU(1r|BGn}rw5#KjlQCpYN}oCmhBydyvEj!ZkydjNzeYvgdmltcR4eh%v;!(jg*i<+Hb;tjow9Il$^!_0&Ns5Zd -zAJ#8bWB*H9h8EQiWsDtY&&agJU1B(!&y(HYc5hi>Ji~1)bjd{puMT*Bqdo1!W=lp| -zI*tNIyyz=*2Y9YUv3jV11^jZr8Y6=Ui7D1FX2VLIzG&^5IBpJUT`a -z=-1iD{v?COALp0Q`lTJ*rX7B-19SWrwwy%y|G<`kSDrY^3sg}alna1^g6&sq{U6S< -z!1NGZB1mWdOOEaLN5L*cz1#nAmNhOc)?CDIP7e)Up;;XzIO2kfG>l>Kef5Zxc -z(t{mKrDZmSaNqS8GiWZG*o -zWT}h2??Z3UoQeUl>iSSZ8QqriIl0sjM_yX3bSh1^3OkIeX>DJ?Kqp<1Mb9Oeut5J` -zk@Qw&9Ls(zcW;^dw=7Yh@c@$D0e1zgH0yd26haRIO!6A$NwQ>7~V -zn>MLIIl2$Qn!6-z0eJ?i@no%xb^5f5e;nt0btqED(trMkw4{z&1k*>P^`Urv|TvaRHZ0vN()+f=Ubz) -zY5%l7>!AzLU!r$4o548jas3N*0=2?TyFaGrOD6l93uJ4312FYR-0__y(&j4S;QETf -zQQN=c4xmKD_@;b4EbA@q&CrJcGpq#3>8k -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 -z+xEY3Ho1X)`x3^3uv9Y3k{sazy6@JNpc>N -zE!g(LIebUx3vE!XCkWvJt9!7Rfs^6%t1OS*utJokJuSl+JhvJ~6LN>4v9R9%HkW-J -zvKKr<-C5fDTtebQ&a=veHD~jwrT -zXCLC1fW1q4%&_T5s4tXO5#x~}b}Gl9cQG{_0$@erkwNGqgA0jfkOPxWV|L-$JIHzp -zgEDpCjq1^3^UEP}Z;Z^HNhM&`^B{Jkr@!nIU@cnt&LtS4W2LQ_-TTL(RNvQbg+<% -zZEu{ig;7Cth!9Y+Tm5fSx$D?1*+yc}S|Y&U$ZPXa8L$k{QuRyzd){;-u`dm!0yh?L -zBefsazMj?b*iFP4@&U7_Lr&x@vt+goGTi7x#w6#gS=KZ%IeE$Oi{rjER)-GqrVMZb -zQ9~cf(@7^ne`;e+<&1Rpeu>NvBm^4~QGxbtavVWnw2;E?Qyxex1bz~)FIvjB1o -z#I>8Ua9v0>A3SWF>bt?T1AlliPco;O5}DHRg%@ar0%0dK19tF_|JVQXzyE)?(V|gC -zJ9-8Qi9PIc@h%3A;iTpiwgUZbdJaIw8a}Ytm^mH*6@A>*Pm< -zaHQ3w!c-s`$14u8@&JiEW1}h5*yU0nl -zRG?z=H;e;d1cFz#!4z92PEn@PTx-nj%t -zIS{=9#UGtoLut~%pv$r3gcIF`r>g%4Bn|$1Lj^$Lj`H-t>8gH4$I_gq2z}vyKN}D9 -zCqlkum46a=!-j<(*gbg$Xn|oNc?{YDe{R-82hC~@ZLHOX0Q2`M2CZQc!_|TUyj49^ -zekpnd*!{o}iCr0u(V+GtnQzpN32f}Y2b8GI;~Uv{eti5Up;MohPhr@OBgc2Cp#pDA -z^3=i9>;LmV{8u85d01TF!bXhC8m`A&J+M>D>UtnMqMor_ULuzrFGf@WNYLy^04&Zp -zvV#I)E<*6(V3_*+%`b>dYKuwf1$7M<8p{}n$xMkDcP7-5{J=_-NO=RN_^t*-nN1ed -zn}D5)pIPcM$8Na(XeFE)=)^(xY#rpD!Q>v{V5LQ02+A8mc$DO`>~B(iUjjq8W_%=- -z8-2qTZU8-^uuQKZB8^5*{oo>975=n3dXF{H4RQC+dEYH!>FG4Qq3P}|X^x!Gqx|tCD+Zrm$sZT>`EBapXC37N@p8+!I3a{RC -z(g*!9WX-bcJ+ecRG(^&pmu(YjQE+_;z(C1orKsDb;dJRN4GCbcge>2G6W-NHVmG=)&S@F@B -z`+jOArei0UpzY+^R`IWN#EHHgh_{W%bChnfHruhqpN*>zcSD~EeG8T>oDF#a$0$6= -z^6oW)aAs0#Xz4hj8wP`c#CG2R$#QHAy$bP<+ZLgwF;eu=)dygN=G&3njV|~WhyyJA -zq=-^HXOlirU5dMHD*}*vddjvnuQ?ow=3lz13L7%dS7=o3MD68HB7}e+ekcTMY+GQ%~JY>Gh -z6TgVufk2NC08O%7&iw}z9hbsR*Mv+~x;j)!nU7wocq!lt04bZ?Jcl0eA*R66*JaC& -z2CA5bU_}9UN1Um~w)I%BdDi$auf#w>yEl5az8(ocD>it_Nt|#5Wh%0hTScTFH>b;lgBKAQ$OZ(b(i@Ff(KH@P|^EKDyfjHjuHFd0y+lvIAxLALYnUn;`;wOKf)$cO$cQdqNK$6#EtFG}dWq)f#hP6j -z4udlGN|NcC*TO*HImg;DOqM9^{0?|C4g|mWN?u^}nVX@bc_?7&HdJ?QPNyb8#`#pE -ztYmm$niYEJ_JhIYU6SNWJapm9;!m31N0gD%N)YxHGqRofB<_{C4e5Hv!e7J@OWFbT -zf!%h3eBiJD#EwN$D#$rtd$JYTL>S{3HL|PCXH1#%=sq1UnTNfiSK^=%Nz_`&Dt+x{* -zZ%07Y)ph*lP1*DKMB)aI8{U(Rtf*o`p682c0rV#=qp2^BTdGxpYE{@z -zVR~qPk*={_00@00+IM*`3A)4}H?3Ko!za*{U3fScGa_%>?UfL6+lw_dAImXWF4_S8 -zCEpv(leBDSsf>0F1{5JKq>E0)G5!IC@gSx|ZA2a+w8u|nWfDMT@gURC(!w3$=!XK4 -z1P&z#Ii7q&I^lAPZ--R5>F)rjLKM=}0E`S)m^dn?&WYMw&Sm5tFoG{d=#11jU6>bC -z8T6u-faA+0%g;f)65ucTEC}2D+k~QZ(Z)%kW~9{t4;bRlLE24^Vc5(wX(h8{okjyx -zBep623J}pc-?ngFJ)XbK_kvI`Z(z=|nKjxP$B8E->p12*5Lc3tdXEZ)S6lCh617T9 -z<4V{fyIfodB+Jd> -zq9uMwrjCxOb~HE*E3g})U({|OnE=>quxZ&y5p81KRwC`-1zUC(-wU$@|4J(GFZ3J(K_jjFhIP(Zo -zPP}JH9m$bpv6Vw6NG$P!Al?aU9}CYH(~wPAYRPt=OPC*%KE`~N_<0$g>~c*j?TMTE -zsYsUVokj8yjmyO(G(0sIZ$&C~d2sLBkA($!@ZG0^E$?tnEnMY|VHTM;lZmPu0PSqq -z6NyVftQ~|9|XJNOk<%;PQD)Cp~!n&+c<_5v}h}M -zpqj>HIvomIXnkBU=*#!T@pGj4hn;bf7|#t?#BfKAh$4#LLOicsk0j4=37DX7v|`v3 -zjB8v;e6M9#$T9$O3X0l#kp!dzpSa7zwBQ2~gZ~~qkyjM`bMSQ)Q3hyP7w_7_E7bsy -zykF@NBUKMMdu`JZ_>WYu1X9r6$>kLeO!E -zj;~L|8yS~iK`+1fQjUs+lL3>mePPZ{U8fiJnQ#UUBoy?D1lAIYEw*RAHtW_mmK5Cq -z$wIWBGc#1>^>VTEM>emPk&26F^7ab7!FbeOeGt(KqUe{39x=UoD;FOpfX=SmzAp~} -zboOHKbtErdXqXP$h3SaZBHMTBVP1^+H}Ywx^~JlAG%|z*xE#2woce!6E=b1w%cQ)` -zbgT+_v{X_Q(M!AwmInB^FJ8V`5K9oA-J>!Wyuv*j)J0s9h^`fJSLTYHkwTG9C#Uj$?lRQ@%(PP5Bw^+HgT|sk$#Y6uHYpQ&0|&8 -zEP!sf!AP94&f+d|>XxYmNfJ?eIZL^YFkU3laO}^xr6_@-uG3H7$lGWusFFCGrcO{GcsyR*SKd0@{ENj$0U@EiB()^LfA+XJS%JKw5;IBda2k=3$sn-^- -zE^c4Aan)=uSLS)Gu^<|}XbXt5=eTJ`Di{%;ur>h>jpVyEEd{80FdrkvXz=NfmTM_e -z`TDd(?jw?t?;H1CHqLSF9Qew?8G@IUiwe2c*LId_v5SxW=%1wkAOD0?Lz~E;R%LIY -zee{b(Gd50f_CF9z!l`&S!D)g*R53<3&B87eYS{iHK>-XBZK>ni3+6OE1Wzw)$^yXl -zXtV$)g39jY1Ysr*wne709@pi~za!Hi{9g7M#{jGXN#PHnaH|T=h)6*w;;{CF_>H{Z -zsQaPwK&2EYNHijQaeH*vGX{*SHO43ifr#Fq^?WSt-ct!m@erQ8Wcj@gt9BuSj%fSn -z6=&2m?bi=MZL0|K0o^?E;W~s_g`#FGIK-sKT{4r=EsvL9Z4KjzBuo-0E^e_*Uqjfr -z;R=wSgq9wWgxiFH8xKu%%ZF=ro4oiUq)Nf2!T8k|51wiF8ZcsmGDQ7K*IFs;)wp2K -zk_f6@S5Lw0MI72$(L$a$B!@_0&u|UW)j6BDZqzOH9iEcaXSPm|h{jB8b69v+yPF$h -zDvs%!nr7u?uJ1wsGij6c#^co-dRrh>zC6Z5#>WX$Y2Cc}A~09No2DL4^T2BTn}1qg -z91dM~F{0wE)DgJ&jqNV6+Xhv2F*I89+%5yBd{FxBu;x~agA2QJ#Ao&sOUmoIRw;C9 -zGu;K87<=`_ahWpPCzlX5X~^c~_hv^ljiilDt+-WE*U`Q-vWL25D13cb%{+&2gq4YO -z+!d-`=z;Yun>s9WE{N_qsA@Z)a-H3U6?AbyzlK1|*0F0Dpavs2yUno6re_PS#CU9m -z%}}}QbLk97Bzg!f^~-fd -zt0Ih*45TfRMGHvs{aa#@HytecE4>hy(n&chkCt^a!@AG*m5$B4^K?)ugA1!`sCuF(n#bH*gb -zJlEVI2Ua6@JZG|ax$M?YAJ_qPt0<-K$>xVCE7pmN$LNsp=*13Yis!I}Y -zA#f)^o|@3fIxnh?%4{sDb9NmUywvmn%rPjlc(8d69gtD+vr1&GEE_2#m}ykb)cA1D)qDf7$g`__X2OVT02 -zGDi*ThWqDG({_^Q2@vrZF0CbUwi$3;45@XH5;eU~-u3HQ13RoS*w`jz+gMnA2*z#)g<77dIX@$At^-cm51o+$y -zmeEf#!Eg*=XhYgNs9jb;m6zNZQE)@%>pCceJaQIn<+3$mS0c-}EQw3=P&!MBj6p*# -za}6q-t$gy_hXiNf7Kx^2Sq`SSftrO<(}C7NkmLV!ASd2%KLW8#Q2 -z64nt$INDVHf-_NqqqzLIJO`B-m%J!+IU)=ez*1eV>kB9b@Vt3V2L&k#KMYumoHsQb -z5n-rYuY*W$Bb(7gmAsp1`(*h?I-yu#&q4nZE*;_etc^$?lDskvI}5GX*S1`2_ojp% -zI_3@PCmv`q+Qz1}kQwBk_`o(%0GhyAerINzua?-e_w?>Cv)6ernlJZnmTWH9_bs;l -z>W?5snlp$}?8`0%wl1=!3gBOVVRgkl0PnC@DBB&vYYg&dSRbBcGwth|77=e-MzCS9 -zOyr*{!{?<7Z~?DaZM{ENwaa#0)iIoygw;klTqKU?^U{@hW!V64E7gb}i4@gwX@!KS -zW1@1yc}fPlmD(JMK@|%6wTE&+YLJ#`>PU=zyBYmQRr5R0mPTv>=m))7yC7N)WQak| -z`j(+F5jRr4F91w~TE9q*!XZ!v)>BBOPw6#gAkZj+)y%apHfWhrzYYZ{^lkDR68GO6 -zY%R0}E#9^Y@TJi)GJ5oMcTi_X4yOQ!f&JV@9LXR_d> -z8iUZuO6EAK5fUMSA#ANt!sNJ*qFxKE>M4MMBFn1r(-0A>Vdh%VKwWffTjwln`<|)M -zO13v=ni4qZG|~|E>8UMF;BLg5K}ar}+!z+aDqM1+QtA~AN@f%QhD5bRZjEYi!wyE` -zLnN-St>&TNs54n@eU2)6mhtH8jE&5?cTx}Ps3Mks?+rrc7)q00m^#MOnl4&cvMB7_ -zt`DC8;VloqothI0d$i?vDuk+%I{JW8Yb5vifhed34@3R%hKnG8tZQLiHgym^Hxs=3 -zFgJE2k#tS^UF#2&Z}dMz2H(GjV3QpZ#kwdvA?!@v0Q7XX@q92+2GTRG{2{bzQRUpl -zl}S0(uxwoLk+`M5=uSP!sS7G2O;nE+6vh$_h^|DXF=DynCR|bW&4q;-%{<&!QFZWW -zjhnaUr~tm1xeSSK`r|nYyTi|Mw55cYACdGzDtWw-ITDM_<57eGEi3hDsh%mJ2<&C3 -z>-c*R0f5cK_@?89&nJOoj3+8og0z)cF+(2Tx>3*$2C?a!xJuCj6ZSe%Cas36NIUuz -z@z%iECLugm0kN38ZN!2iE5sBJaK?^=0!c^>jT~$cEf-Bo;1H}RD3(?hh*;f}oGh{R -z=O|2#7nTikf03rC&ag)|1LLDDKfy(g3 -zFmga)iySs-yHi0x^vf0wQoI0yhp*mGT{&Ax<2o29h2x>!xMEV`r};(9LfU&`((Pqy -z2=t0aPDGbzjZsVMVZUGDo(;KqUE?&0>P%*l$s>$pdC}WX|Zj9O4-+gM6m;K)Z*LsY5V-HuYHgm!0NrmE}ka -zy!`e8~{bNY4hqN!*HNiAgRav -zo!)YXmFQMyb;&YHw%xR4UDcP4a8i$HX4!BPrL>i;ttehZc5TZ@Q?^~p{uD*H!OMUw -z-OV-y_(|R?tyg#y`>CBqruLV?f9n=m=1k3kE@eG8kfSa9)g?)Nvg4k)@WryApHFOh -z+{EXyEvFC`$v`+E6p^tTu-Gm`_QXSf5yF#4>T*5{U5OYOy5H)>jB?8fGg|N18sW)W -zgFx3yE;q;eOGiVQU)*v1-t8Q{;+#kEmHvJGMWC-YKgK%&EnS|Y2J<$3gQzQz*0$G; -zLrg%p4dbFam@NoQo@2Zjn4o|aaq+dlMPgKh%UP!%j)LJ0yg~pytiHbfxYXPAN8-~F -zMkAPn5nX!~Bm{x)6WIdQgGu5S41J&rslyk)4fk+U+=$(RL!tz5Z{{YWJ -zYy$$!H%V+mz-O06A;8gECw-75o!Egn(m*7a@yBdFV+YbU&4H6pX{N5iN_#(Ly0R^kru;4}hYZ`@#ZJ_kEr1GXgF@Boy#yQ -ztKdbo`G65Q|JYX7LKmkIF=%kq6;>6(ps#W#qzJbKo^Bdfp0#ZTuaMxwO}o&r>+ALD -zmp($S{ax1M_6Ax|9+~}{SHx&-#U2uy7DOanFOuG`f;Xp8{$9Lsu_HxpNKkh+4map7Fx!uP{lb?8ff6f<`Ji* -z=AM@BHZmRYhuib1=OuXY258sNU~S0~hoB%XRz4m%q?4bF;5bstGc^X%EBA5r3lt_& -zjh{tNU_XNb3i*Nph04WCgh)*@)&XYRABdWHNX%N&3?4gNixiNuSF7f!JUPxpMy8oT -zW`NPO>`$alN)?*vMU#43%W_PETM^<;fS6Rj3!Ge!8oF@uqXO<~z1$M8IV8TG#bho! -z?=X#thSRm49pA|W(KCV<+ZUP=&sN@Jr;r-Q7}dneNMnMh?KJu+;0bg3 -zH!$Wbnm=6;!{B@7n5MN3Ow)K0=~bPTA7gM12Ckzilxq=EMjA1%>f`iLEUsl)>xKa} -zf|ZhcX9Onm^p0iTbiNjp0^5tSxPh%cuq&P@_nIY7VrP4XH=^-f&Vh!$t?(C5*@4w1 -z0RbW4OYhWA2=gxORrTn}hvcpST74;iaa;-^rSC26CC8j&d3`T11Bl;5DeTJ1vJ51c -zX1)3=x+y78@h5*jmD3O^Aq@E|;AYhS(YrEB3{RlLz~Pr-g8xO{46s>{Q2G@kYgih* -znT%uUXb&IEpHlm}&EM7hj;IZv0V^g(*Pf(+RONce8W^rK3BV+4bf%3B(BT{@LHKb3 -zQe)rVxYQuO48~`KVMqeE<{z{Er@ -zh+<}dY<2B7yTlEv&VhpEL$w63nW26fj(E6~4D$!(9ZEU?io#2X2H~L!51cY>*`w1tbm)pibcj=bO&t8{&oMi5gnptMayM=tddrrGo)&!et9lXg7qiN -zWaeP$P_(P7%Xf4`KV;$;Ki96~j)^QW#w9a{$vWy>z;04SV4zIMOBX}a5$R-8 -zM7V~QMcp0O^TZh}f@4QT8TH2!nG@+WiU&ceBF70R`xvIydl|e4K%XS6?pSKz2EH0K -z)BgX2{n?h=OqV4H-uGMdebblRC4KsJ*&SJtHD=|i$QLjG1`tjF24Nr_TzdFA`%GqV -zDY{ntp^v1K7z}2|&altk5nP&6u6z}HGak-IPX|YpZA652@87kbE1!~vRr%3CnF2Iv -zQRFhC-R$*t-lsnif^KP6U87w4gQ&*@ag0P4cqN-_<`SUJg^rkdWfoh)Z38(pWW&A2 -z)0dFT<{bifS23Lctjm>=XPTNz4oYdf)5IZ4fSf>sJt)WU^SUkH7YP -zJ;QXFxyVR+$mY;y2l_l{)7w+(0Jt?;$!1}7qhjVUml(%aU`?Z$qfitLs%EmS+tSZA -zjP;EZvwG)png>^=R=>_X*tqRGb3SGQ(D6V#L6#JJ;Qch4xFX$MFAa3!Ou-w0x=;~2 -zAa$YB>RuH?6iz6ris`aqDMfRj`QNJ#lZeOH7kbWbRzu*+#6Ng+^%7OlqIgRB!t0nQAw9D_ehhD4r8 -zz$#`un0A^Z?wiqF;Gz9N7sWr%Jp+b|s?(!NW;3DdRV*$zhQM!@11msyvt{J+^A_r( -z445()&`+`^w7A5hb$7JGjyJ(Zl0P1mJCd`LHVT243KM#(H}_F$XXCQC7e0UXo{rSs -z(rR!5D4w>zAQr4t6;P1)%8e(<#RR)zE{VQGXMT?0Ey$L1xbf^cwepV=s#;_#x%z2u9~} -ztOb9+mLFkpkDO+5O0_kRHxkN_gHDKyf1RIXeLZQU)&u{X_2E2BfHta%>WJa!0KhdB -zFD!}3B`o#7#4XLlo$3-;9|Yc0358+sEr0h?fb*ZK=Rc!{MOGs6l_Rxop3z% -zEnH{zaAj8o-k7ba`k!Qd`f`G?|MO|oXwE{tL+=G)0huQ$Alm9{QE3pPkmi|rVYAlA -zdasL9fMScylrM1YDx(#(q)J8dd(bcy0PsIIjtG##+M{E -zP0&}gp#1+J!&!6a;;G6sN2bX34%TaK3=TGM0(+98u=T9Kh2HeX4!68?E -z`xusg$*fATZKs{A%rnwsoxt@3uPrSB2@Di&&|CZVjcNSG`$ge#m(AJ`q0S_S#sXe_ -zx^Cm7bk|E*M>Jedrh37Do>Yw8b&|Ni-i -zb9k%-3zS)58&)j}l<{5TG4|L>sT`tM==x2u29 -zfBavup^ZU~_-~lp{~ZFBa@+q#Vf*rbAoxE1!&xQ&&la}lzm!at@(~@mwj=*rLJc|o -zyX8XIkt<(cT1j#IPahNo8JoU+53sW0M=#UU-?fXs>?eO2SARK2e|g>Wr<OH>?hei4O_m^?Q!~f$Uk55 -z&0h1B&qH~4&pfJYpU1HnfjrPn9!Ho+|6TsLzWU25k`oqgrv4z|BhOgcZTF2+cN$1M -zzLwf$tjV;Jd5j#^3R=DX9hlcw&Wv&^iU`*IOFw@E3cxVgI22x>gDv|P`~$K4wW;`O -zz)*-Xv)>69P)Shy56BiupSNckn{f@hy5!Obz9>F$-YfDG|2W3HAS)gJ_#6o<-Z84a -zQq4TBn3zA58pcZB`>sbhF_+8W4N)9}RxD*@#olm5f`HUG6dRTX3I$qZMuvz4}&cl;eH(Kb?1t?cQN1f-GX;7tjk)J6pg9VNj -zYtljzm>#7}r<^z;15MUkk_eIoTjxXiCQ#YAf;>;A`yddW-w(J`s7qg*54(TBxC{6G -zX4Ko|ha%g=Pa1r!e`~!5?u)L3tpjtgRItme{{+WT~6#$*9g*Yg7s#n|#ak)$} -zngRa$^=T+v_Km73zK%l2$l|`J(j|A>)4XQd_fZq+{)=w(?X}uPLxxoj -zr`2-_<5DXPd(Q5IEgk{cob~R=!|M?s+$?+7gmHqyBf?0$?b66$ZilRPx(~f*@Nn;* -zBiE5ap3y*B*ntP=^3Xps;3-=B9S7~073y9TAF;2(jl{nn?O^pVHwKTJN!*!0R-2f@ -zZ;PDOnoY9g_F<9tk|vSmsjKx>gw`LMs-v=sFNG$cD;;(zit+{fSl#AETF{0T$%pZrM% -z^Y4F@A^K0Q1S9^R924XD_dnSP|NXC_L9*_JAHTh!wXa`do)>L~Y@uth-A!PGjgFif -zZJOqwo2t9Es-54$`zSt%Yx$0L*5X}z`X&^t(eCxx(BA1gM;Wd>B;URQJcpHL=HYh0 -zMJT>_Z%<)P*wRy?&xtk+pfHpMgv_}0)GoW~GBw4qx$bZZm?mJ`Wjj8#9DxrES>OCy -z3PzO^y-1nMSVq^E>+9nJq^Y_u`$r!N1*f%!QuYQaSwo58enTToy}CJT7nKu=h#h7X -zaH|$$P^YjG$NiCKWK-N -z(;}l5pIJ!6URTRbmt*e$Db-;8!37^-4hbA|!@x>&QPqP6DI8{4*D-NK8%$7Q=+zZ~ -z&ERDHEymfCMpxr5;!a9qYwzNAi?fz#)ucXUCJ4P$hhc3+U}^~Xa$F^L!FI}eL21{lM3I+awqqVt_I{l -z@(I1boZyS*a%aB)c(6{rWPw%Ivl~%Xx%uzh{N}GfF&wI%+${I?%NKPgz@TLJkytD> -zX};w7ae4i+sJrtfd??U7`B3g8_F+E0J3CT;Z(-U+Say5#Q$9B)smOAbLd#s_4ATc7 -z6=eE7cd)J~p9hnWdcVn_$R$oF86;ttms!b^IsCRJdaqf-PbQ~)XVPGsTJoKSlTacf -zf!YTh9g3ndvH6I_bqX6IWXSRjIYHN@=^f%g%R6wl;={GbCbD<86Mq8DwsF^6;j%Y^ -zmCI)J7xYTQsq!SYc53mSNh{D+7Vz3@ydc#ibISVObn;Pba{*R_f;#9WxDebUJ-k{? -zBL&_o8FQcygmn3Zyb#9gAf^1KD{xF}pH(e*>!uU3b1k<8rOD0QuI)aCr!npTcX_BC -zg}Ga;F|%G*5n%CQW@!>|Ue@Xaq~`mZefP30E;N9t{Yx!V0IW;)c(TqX-0NNyyZ^;eR#x*si2iYZXF4@T_Q0jYyC!ic?qcR@0t#G;S -z7OjSG70U(J-@57qg92ed==^1bU0+n4Q0Nz~0}iRLQTJ5Hr07gp9?HsIhqk4CCW=y` -zMR{?WmvqmGWirhG?UEIqX~`p_XPx^?e4?E}2JT549hAiNc0vsk`0yeo+9Ss_$~(?1 -zU+5;<_M1%Vdt@+YvC*?ried$=VasIAG?lrVocr+OlrHd^6~P7UY#3&g2MV^@1J#(j^@S~ahnORlV%gJQZehki}xEZj*+hN#L -zyFr=*JpxP^>xku~!WzeZR{kGGCt_P7?^ -zTd`W4qc&hxJ2ILd1`PrhhU}2uJ4F7%Y=#4M$*Hr3Pb7^u!xo?tjqvbv|B|#=BbXyL -zp&l{y_Cn%Q@k0S#iQ2+_+bfV@%wOdy_ANoT5hAh_&sk={=KWi3`4$;XP%N3az>JBb -zqF*}J)6>8L!%j<-Hvfw=cgaNWn;MvC6VMr^8-9z!-TUC0@#;x2tBA4Au)ZW3WKI5& -zYvn_k4=I9S4ISBsQ!GcRm6Ya97fGm^{TZV=pBOu9ltZ?810<({>fvNPh%fI7k|97B3!P|zdvo66C>e);l>o-6!vfP*2c -z7fP0f4um3(!NIyMd@uT}>1vx`lryw*A3m`pam9RtOhGtAxRf-lb%H{1?;gKO78^U7 -z0}r?@c7>dGInB%uhw;dxpIUaCU5l(2+MSuv^_GDm>pq4iUOF1Z^};WsLGl7fKGg>W -zp5_xwg?2y?RUPaQ3SQ`Tu=sLq)7FD?x-jS|>Kve_*e>*JZC{K&_${DcBJ_2rv(6>A -z_>pT+ycT8+&PQ&t5Z^vmL+_s!?UmO2QPYkpva#Hn>9&wA1u7p#WpeAubwvA#E4q=% -zaXag|D1Vp$!ZvBkCzsmC3&$(JH+PRL^~E-KD4SK*yd&bqf5)DoES29kO!mpsPhOAjayh>e~O6%(iV!8v}uwD -zQ>jPM&rjW|*8wuUiYkt^i&6^&r=pFR?5!NCo|{&;yNM&Y3X5bzldSK;x5IE5$hIPd -zKps1lt5u)5Fc6J0SN$H@(xy=u$mPxzgk#-%^Y||BNTN)Ryl> -z)qh?h-2O&)e@+kSndsS5WG^e`+t)&1x}}Y1>DN(rMh4{L0u_t-AX~IDed=bJE;9c| -zHY2o@b^`%(ODIM)uTD0AwYsKsueq+>kwdbng9P->*bkcGMRnS%hwUprCL}|o;_;pj -zj!lzAhYM$c6ZLtE0Ln|g4Ri-+4#um-d(%D)N@r!f53KFB`i#!p6vvX1B|+hY1=aZ_ -zZ-(5>=JFmbf)WFVER=bg@2Dk+VVh1K)s-GFG}i96iYqWw2pH=1U;NoKbOn1n(+dL= -zS?N_%tQzW4Mtr-&@ze?#Htf|yO=Jmo8Z1b=Elf-cK6v_M<>5VN=nbhxBoCni##SjAFr{^H`@XeMTG2hmRCk -zg^+~L!rg@`IATVO!Iia2yD{p=KMzSEPD3P3_8sJtZg#7AW|0 -z2lqr4hTWaEt`p+Ty_QDfknp%+dwU|mp@#vl1vW8m8szVO*tk&f5QVkKhD(bff}4wo9}*`9qN)#k}amgoMu`$i~{jVdCxkToa!9PTrKS#Y+rOWgCT$$_jLngs$y<7q+*~22wihCwtDCqfrH-ak%FH>eCizk9V}4}uyJ+dG53~7C -z(57UK_HeIu!>6*P7A-; -z3E#VGE<U5*nn)}HLoh>>c6}5nfb^Y7V7IX@ro!e7d=$x9EWybbP -zdT2stOLn@O5Ix8jp+K$A5=z4$vB~R!qr6oNhCD4tGpnmy?#&R811{v(!q -zr3nq8!D!b(j+~@YdF%kIcmlIh;pqm)8{VbPQ({qh|8;IJmJ;+fT}$z*oAJ^&zq>xw -z;bn>3(lyXO6l8Djk)b~bOx|}2e{6I>k#rBjRsz$rYceoei3@aHG?-O*hLRkSoRrM@ -z^|i@L=D)(FC}Fe*Qhtp}VZ2m92vb6-V~e&CIyL?{k;jk!BHG1&tDkSO0EQ}>uzNo+ -zKcv8DBxfWoH)y7_7q*-D2Mu`v(;EGKXN?3{co1sdD|0Od9**Jo+^F)gA#7R<{E420 -z9N2a{?ZF+^KHo09o@+lV&JY6SWaYgEBkJ!6^KI|CUDNbte-oxCo?GfdB~w7Y8EW={ -zBIM2;|7yaxM%&zF1;gW^{VS|xZ_#+nVZshMxJ$E8oV4E5Akk(>NBcOH={d`&U9+vnB -z7)_SUe0~a#r5bebr^XI;U2@v*aVJwJmw*}Z`bCHTe&m@&Ud?>fgyK!1WRGBs?aMDc -z(yV-?_2W$dML@d0^3rv+ev_-Bk^Hp>w3J&OeX8njI?<#-ejVVN=@nK>zRzu8NtJlI -zugc_Yr%xYuYLQPL!*BkEUI8772QW`pSt4?MPc#t}R;JnXHs7mOUt9;D6<}%5L-D0$ -z`uaE|Z;c%fR1fHmEnAX4UjNDSy-yEqVm^I -z&t=HM=BSVBUg1HjUre`{I4xz>(1q=!CDI>EG<@r=zYl4$#)EgV{#;=-+EWbPLScv@ -z95_{YFpHzw;Q_U-N)wkNRXg`a(#J3g@-WrQXWLmMzPVdERn;-rMs{T?fxFc=z%`55 -zLOq|TWcPY5+LqUwHh+-mgbat5CDLQ4%Pc7QtKQ(kInr7R!7h=M9(8URB@d&3qCC87P<8mb!#0=a#X<^XGx1>0LGx=FJI -zd=1C@h96}({&@O{o_OI# -z@vsUS6P@}e$+0DM@HoA`-xS8g3&Dp*_J_bIx7ZVe9L -z;u)ML!h1g=sI9{3>?l%4QLQg0h;BQ&H+z);e-gls=tQ3nbqpYuo;~?U9#yr_%2N(F -zxv`X%1n1$8@u6KLejZQf#G%Pa^K}JhQ=N -z6)qT~V|mp)!h8xcI=vy<@E3?~^rBpQo+F$PD<7RK?oShLNLO`pQ2Vo1%vbt+O3rBEO_iLgCS%$qi+!Sg>2mRDkz`^sAAT$uvki3qqDw5S1xUpwaB+ -z9&dwh(I!A9d)YoM(nsiTiR>%WJ4cK^r1*T6wKZ^#5-Yyk}0SUFT -z2fM+|9RU$(*dQMGE>YO@3Mf3GUa=vA(#R= -zu*H6cSwg;47kI(n&z9l<)Bo8F)CenkxC-S2qHuZjt7Z@xRIiF1mLC&Fu$-O0_K1~# -za8LCgHpQ$&#@#5}`{yrqL)x7k{$yBqUQ82N#yZol$WqzsEBRlaY$YlM59kmT>~OM* -z$|L^%8EC6bJrTL2@-~RuDh0#_2eFJQTthiR_=F!K(vaEjF!BI~2_&W;p&dPS9jr -zj`ieJ(z!sBBLVZeuq7&u%2+Il39IW`PSiR*mOsZ${1AXw)a8cpI{8r8t`7!jeO^2_ -zka3*3Bjwu1YqsWoO$<9e-FmkVt^fHNXBha;!v+$gwY-fHUGwqteb5z9uytjgyifC$ -zZinW~-;5-dZC;Tmu#@j!g`?bLC|p{?X~u97{Ow3P0;h*Kx&<42Hsh@1R{DHt*vHC9 -zKq|P3!+Ad^*J=e1jZpg1JPOMQ?C9sc7y-&36HEs;=ep?>5Ao&&S)iWiA^f -z!~}mn%7Gq!mmZ%M(Kvg-Hh?s)zUEmS8|EL;REck}e~wFyygZOu<)-GS6zoWa#()?z -za1($V_B3z9Qj$_)OW^>s1%^{sKma9^^6o)=Fl9ch$Sx?ki)4{3kqTVo;$=k<8jTH2 -z>D8baAQRXUy7_H$07#sLC}(TFo#FvtO*GmSx~DXZFB5DdtDsBq1w^S<8;v8A5@{(= -zK7_nM@im3d(b){PkEL)b%h4PR%ZZ*Q%!v0XFzbv20l`i26C>=16E_UW1UoZK{T-O+ -zTtjVM58TCZqI~JN4AYum4zMM=BvJ35{shP5b`8%k+M|OiCfJ&2xPey9DA;w8JpYgY -zRXZI;cqsK0Edc6G^v`EdA!l85@r6m6KsAUqgWA=j -zm>AH(>>xiEQnU=`iOk>ATb2@TO2*7so(q}3SPzbaqnTB4EGmD#(U!1r&XYS+Sv?ry -z%5}XPxPVUw7N6rHjVNfl2jJAHHEp`VG)x95Kv|Ld$p$YD_hYAR(ks9M!hESRG)=oe -zSXNo=Y7r~qDwlnRL|q!PBoDn1oST0GggpR4U4%zS?ice=5z)ZnPU}5#_K@!Ky0!`b -zZ9>PKhuejg6hK%@x_~cEvc>Or{M&`LWs2E54Y!CN@kc?9vv<(yTIJv{yXe+q -z(5jq{u3l=M^ya@AQQa9AJ^<`cu^KNwl`w8=KITeKd(*=&O(mz%3yIqh$9v!LvpjD2 -z5nc}OJNejGI%ET4grN$wF}{b}eh)8g|GTLc`C0{BK-P82S3=h@CCf^l)1_no5m{ja -z{Zuv&kXb~1R7j;y@Uc~mS-pcq2I9CWIV6(IPgx}fOD<+w548m=ATqF%n`czj4}7Ea -zlz?|Q7%o&TJ!+fGsH_7WrWDI>@+>v*Eep2;aSr3IQd -z(*CFKxel$^BWJmyU7sdrPD-t}z_mUa8^Ov@07+K;wpkasKOi_K -z_WFH3Jvg+90|bv!A;4!cy@9<)e#>A;RoKVk*~D#q8%TWD10U^H1uJW7NxDfi;u?KI@g%QWoVc9YX?l= -zk~O8T%%f;#<2~F1h$u3&23fw6k%?DO;BZl0o2|QtT}$K(+vO(HS8~~jmoh`LU@#xn -zMj;hR`bDlyp&=2(Y(Rk-z(74fZpk~t#{h9jO+w%A-576Z#~UK2Fqi_-P}U&GZyZq? -z;ab$z8f6fz3&Yg;Ia*p9`mv4LmOzfwOT3GFO%I&rVDT*YrpN-^Rgs5`8=%% -z-R9Hrd&8%5*T9&GIONM52)Zu%qu8&~A6fUbY&!+M3?BI6PX?RC0uCm4i)5@& -z&u2O!Iru?wl~QZ(G~!pZD9OA);Coq*(S#soT6NL|{W06BPvZnZ4g)x#a=J4`?*fd4 -z{EThpMTkRO%=}8bp-gZzFH(@IJ`0(N(!K7(2%!jMmCOp_lIf{4;(ed`Vv=%G#9$Dy -z>I%wYgDe8XT3^{<%j}>*Z%ox*{8tGT^3vm;)y;TsK{Y&8y|GN*F60aKrv5+|H#%(~ -z-yYGlx3_#|ThPr>61YUou -z(&1sng&U~Qrfq>mI035T)B)0y*+Rm08CY@y9ON2sA%4`rhMU_jZ63 -zcL5jt1uaYNh4tGx#{o@COJz~admuKp4yU|_pfI7QIYpJ+$kFa`1UlYsF6PLjg11OM-&D; -z+d1T2QBapY$}J3q`?muR9GFRgBjsWogSTHcEB6|64-bRT+Bh0bDMj8ubLAcgkWCFm -zJ89*d=o76GZsl?l_s;O@LabyxsV-@}UPZnfCmGC78F_pLikfHnw?2lDK+ -zp<5<#A7t&yCiTIXzU``{ykiwIjpJA_laOU*;%%e6o3I#II(f=nF!H5hdxGY~!9-*k -zN%ix~`t9{Kk3Q$YbI%NoDthBN&)=6mJkW|Fv%>p#nkbOaIY2>ov7L}X+>J=bHkD={ -zXVK5#=gplZ@?@GO`k1arskkYB78@aJ3P^9XG;7kccyl6y+zba2BstptfqJ@;vwUpa -zDya+sEk;DO?RgwPN=#jj?q4(%YWMPKDXU3r#q%#9UGbDVjfqZ{8vy9ceD?1kg``#Gsk3du1?^` -zSVwai*00y_p;VhlCtSRjiPI13$0cKw=k=R?nX3!ct~Cf2Bv=4kQo5?twiLO;Mmf&` -zOh1Uoz$di%Sgu#pa%SLgFB93)F01lT$c4_Hj46FIAN66Jmq7zKp5^38nUK_+=9&Ds -zn5o5>XC0X4&V(D`_DE5Lyi>mvC>5o}MJ>#jVjJ?7crwV>Y0b~=J)s*A2}heNw9h|; -z3u3h!gm=w~=$crhhz$gcmXz*}NofZF(M2dPNgO#KJl%r(o4s0LNmDAGM;&L+YD~~R -z@i2C|9%Hd7_sqEfuUO`n>1D*w+2GNB+y3*94kY?PtSn~RPX7yuA`R@wr$FfjOCVSW -znGv=H+MSY9j)@ind@q0Z&2-46YGXFMUPP -zYO57^?i%J&Yu+HaP!Ktn5ZHhZxt$yaXl*Pw)1Euj_w;DXY_ZZzTagkgv_|n6A#bP}$ZdQgZ8+ -z>3QYIJ*_)rce#{&F@P}B!qXdIbREr4BhrszT;L|HN?1?U5_xy*Cd~`X=4!Ma{W@?@ -zQ|ZPwEbSPDn=N{ -ztuAQ;G5a{u-&bx5SmRIzWV8=FZRjfQP%ck|-DhvoP4;q{JkLhuBKRsX`kzY>&uW{IRY+_FzHdFX?#e;V~p$E4!N%j?_MqG>yX_buG;RSurvC0est -zjS?_f{n2bZI$nF{@j(9$3en5N%<_^cEH6%Jj{b7lbGSW%-P3Qn?~$c4$qHJ#R`W3V -zl%5=A=SFFJ@BbyU-l!)$g`TD%&Cd4#G9lgAms|hm4;eB-M&Y{1T$Vh~UrxY0jn*k^ -zS*&ML@W{&i?lgv9|B>FT9;I>~##`XR?vB@TJ@5OJRZFI-zDWDk4Ljll$<(=rqOxoq -zJv>mx7Zo={QOl~ZrSV|ppOSTR5J6>4s!oMWlUiwtM>ch2(%21_)ExWfVm5|z{7maa -zm(3itQY^n)5CMik&UFMEKVT05SeNv@k^+lG1}h{IJ-V-Y%GM*%w|WT9Ba!PS$NohH8+(KauD106yHi -zOt<_<2H+ngp-XoUJWrdPD3Cl&8nVHF1=?~WSrmH0rtCzqWK!5%iqs;4fHFjI<+wzkMOwzuwLt99;tV#K_%*`-QxQ#^`Yya*8=KtLYGSO8Cw9m{Yb@-*L4=?i^`rk=ygS -z+W!f)kThtgA%|4s(a)i2{61*SeK+@~M{+#d7~5h{dS}7MYT23c1fc{}N3ko)Q9wJg -zE{R53bXEi67a_RolPa7t!#l*c=glZ8g~-B*w#Z#+g`OxNF}oNk5=iSVxjs&A$sAcZ -zK`Uza=uw#iBQlJJ%^>?;WP#W@G3GFur1~YMOye~B5Hk4?96h8>EuQ#0#0rJxdf&DJ -zM-MKB^@_bl9{1k$vzK_9@aSfQJ((km0f1zE{lQ^l0y9f4!=Qw0j93_av*S5$&FOQQ -z7ekDkKr!tE+AlfKh`N;DzWq3pdHFk66ritwMT|~0D$fgkl>I&DggYIFzQYd4YVVAg -z=k${q8SFoP`1uMMD*kT#+1MZ`TAhy3{Jxr(ML|#ma@-_KrsXscnPVv@;|@d{V>;~P)&(=F*I!JRk`X|l1q?^!?W(r8{OCTgmyHT(WBCO@SHrI#}(d4dnxO;Y& -z8DWhakcDKgDJ#s8;nbUYkIz`CwdSuev#vpfAkXZfs}yOGlp~Aqg1G_x!xstGea@`6 -z-Y}F*J%YKexVbu#x3N0EZyjW=MidEnk?LGyVytTpcUIsbbE^IJ;T6xS7EH{e{jjRP -zYKt-FN>NIHmBam<&Kn0k&Zfkv -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 -zg=$5+uEYV0>5o59Y-0#8xi`mDJqBPYw%K -zn4^=!a|MmPi4UWOC{JiM*J|UI=#=wdn$HG27ES{j{fM+^v*`2~h~SY`{^I=acH -zL<}5Jh^gPVViH~x6Dy&2wsDUH9Ydc3W?bR5Y_3uN$5Hk7{vOb`w=~HTgu`YLzZ-n0 -zqBKziAJ^1oYV8VO9$?yOGq{_!Hm6cMw1yz@(^xfRm?mU+a03whR -zj3W3V2LeyZ)m)nJt2oCaJ<2j~LUV?{ok3oM{7SLvpGpAsFj+|QU!a=JG*%CIkX!P_ -zFVvHU<|UsNkBHoA%h8R1T+*PKmBmt_@h!fgE1Wy9Y&WKme3^XCP^>Y~G|F3jSgthS -z*;ue|&8fvA7G*ya7Zb={XpSy<(uSLjJrBy{198BDqI-i>k5$>*{oG?uMs=!8#A4Qt -zOa=^iiyrn%Xr$22bM^3WMgPQO;*D4jO*=iJ%^}8dHWUQS*47@f*+x`R5?uF?6J=y| -zx-~s)wrw!bXIln5G}9@o7pF^;Yc*FJ$#!hj?H_w57Ks&?sRj#?+4`rp>@Y@$pSA){28-TG))q&k9XUuWE~ -zGMZ2M(wdLuA3E=08lX2gjm%jj9-xNO}M0NBm -zb?C{lUBg5h*^-=*jN;vT+Sh2&xA(F(#VL@g7j!FwPGy)MbhaHx(<;Z@yra`xi0|QUPruWXGw>k~6qi{I -zAETs$$W3#Q$KB>=^*nO4E#$EV;ljH#Xnq5D1PFYPcLCrnxajvx9zG+k&(w5Qvw2(h -zx;7W~dXo@W=3fISxSD6k3~1y*zy3RjZfO>-$OoE_TYiuYB;qSD8- -zvG1w2?$I^3Au8Z$2#&Wa&d| -z@0AZS<2v*l#aj9OZgNICuf&;z+{rWgUQZL`M5Nw7$O58!SWu9@nygdo+e154K24I9 -zYz(J{%@f$}^ypWJ!?DBkhe{PcQfzc3v)wyQXzj=oclJD-@}L;u!sP4w+&2aNN&MG8 -zi0=yKF`VR8LH<1d$S>uUx9A7l9-UzM1UhWDIVt@Q4Z~4#x|6@&D;x~%dY96y{$}2e -z92BHy1^(kq=!{T2L#nwK5jA^7r=#Ir8)F$vv-qBaX}g~O$k@zF#_W7vYkwPEX3Z*2 -zB99wn8wg+fA^8uNotDpfsrM>gba2>_!0Es+BAOOr->)=)``>1SNS)bqH#eV$A%67h -z5i#}_yrP4`~$ni3X -z=<)hRQ9JvVP7`8!jb0B_Y18p8f<@L_tPo{{;|#s27C!iVNO0htLyDAPY=uG -zm%b3s*wjq<0+@=Ye5_nn$MgWpuek_!zrvG6o`&DQ0)4-bs3Z5e>=G4z+feoG@d6O+ -z=L-z+_x%Aut_8T_=(~iZZ@fD~r@uEYVW`&ooOe^Qe`3jx;;cs*c>iUG$DKXLd37(6 -zrYpiKnShT;n|-o&$WY+sC_ZXk+oT+n9?D2vUz5>%7(Z=#a>}e|5$~Y@vLhr=FO+ry -z<;)o0-MM*iK?%)OhP_(V1h7lt1#a0(c%le!P)8+GIWvdbc5;jObKsY}$;#)H+D0sf -zV#rx17BcJkIepsu*$+my(pu+jvF9A^l+A)Ux<$Ce3-inEn_DQqD5ez0(ngo9eNebh -ze9GE4m{oU}P_P&SVT;Utm)$c8F2nGtwMkS6ZK3W18Ls(yzQZQ|es4x*szH;OVPo7* -zz~hx2!4l#~m$nvJKU4BV$$2+0BKLJIwld~Oz^!LIy!)Kk0<~aNa6TjJH5;|2(lIlZ -zFs`Ltp549U$I<1j7#PxTw0*CJ6yuYzN+)fk{X7O(h?b?xK*Up`9VFmjfxk+9MRHfWF6=gE&0(kEAlkE5ICXA1c;1`ta5N3ZD=4ATD$ -z`LO>6WV$?w|3b5>m$pn+WmUn&(1<=OGZrv)hd3he?ZY52_?)$bym}9jVgTG>_kO>A -zS&{Lexa;*xOa3B*3)nA*wHl=tOL_dzr4AH2SBIt^}3ss|$5{g#I -zyLWE0wJ$VNcZR}f62KQnzg`vfyFp-d1IQqn-514=G0g+3iPi?q=1Y(( -zd%##>sfDy6nd6@AMWRdl|(j@Fq1R33Ek -zOZ^P6Y5uzEDa<5~^47;xQLK32uUopcBVMp8b4-`pUSEO9q>pZC++nac{wB;1O>25Z -z2cuoSkF|UaZ^{T&pYWT<7@l&D -z8_Qud0kmJ(Z26;Y;zl{Vq4feZr!uIIj`O(BhH<1gGO|$@9cktX=2{{yqj}Qh-;!L) -z#{a#76NCN>^exln;tjM2w_Yx3+bg|aq?K)0_AYJv`^%Qf5ROLyiX?KaL;Bz|9TI*m -zK(#C&7v8ScvU5e=h87iVAK&8(cSrwD$Mi*1MrXffJh4fgPkSx~to3GqxOql@luIbXee5gbX|^l0?jFGvxX|&i)?TTk@C{nqX`=AgFlP-# -z=Zzrybw^*~VB|gE>xJ{_-IlZ{cZ}FeKk$mCt&aA=OBqwqr_$^D`O{?|$K&&daR=!5 -z^QYbfT>gO;>V=QNzQHqG!yQkN*>;ez@d6Nx!|L5rahO8w{a7zea==E}ATjk=IIa@j -zuSru4*(;T!r1BAo+2C=@F&#ANHKN~3 -z*_-sK?&FnK?4eQEhAlV%TEZP%kVE~;h2qFC58T6uH$TOVr&rq@`T-2Dk))kn4OhVV -z&S~zB&_12fdk|i()9dk-r=ww%wwU|*_BGIJRTV%3b0Jd -z=ox;eoopn)7w`-tEo~5#hFe+|V6G;8YBbr5;0Y~Z_ArHUBE7^K&1ve4YNO|Kuohxr -zt!GENZA6V#MIf{PWbyf28igo7D -z4%y@F>+8RmMm^TgLtK$A0lK`_V6Bj;g_0V2F!D!1)#8KqmvG!Bx$;F4SC*aj*ZWOg -z=Zt#SClGJ;8^22OVj0#hoeuEnBOK@a(fG#)sFan1ICDzkBY^f -z-jf~%_o?sZ4RvlBw?zm; -zb(aG8Kx#R2=7r->{+}x-L -z5y^p)A$|pcqIJSRaXwjRpdik1MDc=!En_r_PrjbGRfM_BS0DDKa?zi*JA| -z>ZZJBbOr=p6g9`ipBGBeg5&WTewYeGb-%6<6+XB--kKmxR=|lJP*r4omCZe9>_%BJ -z6sI5`I=d(8&*8Fp04_yU`M3B3g|?4;W!?5xih&I$b$eupnwn9H-mwI?hE}dMC_Efl -zF{AeH5p70r-S!xtdX==YF00gDb-NvV-TFbi0x*!u5ap(Z2L$h$WJv5(trjKmd6_s< -zTaFwCgs;3(?e7*wxsKIvKfP!57xf49BWwQr -zJ341WG=_>5Ioj#$5IS)RLKXB(*tt|}5p?-c%-4F~*2$)hwE5PD(y{6*mJ(zqkF6C#U -z&^?+onCu6Bzer5>+r4*&n8Xdx+cmWXC6*Ya1@b&b#Wd0nOH$U6i8~70Ce)m)iB%vB -z`NGiCZ7|KWHzyh(=D^(o?%PBHnPAojf~&oL{p+J|H*g&GwWBdNEB=X&y}xI;&?Q$9Iql4Zc=C9Fp6+Arc!2i8 -zg#$kL#$(?V6M2(XVhPvHR|ew{I5t|_Bbg3r2K{}n#r6tL-8KZYD*0tsy0P(L5B+Vm -zKcAL{xb~YkF`)WGTIK>)#i3W2M&RlWUmd3@fa^rq_*fwqeJY5y`&Jp73%Yg4pW)0A -zz6@-D(CSjS9;$K-D_<-UagA!zS<4C<7+RNzEcStt2ioJ$;H4WPs>06D>Wv8hMK1bK_hzo?DO; -zU;yC(SG}aCxoE|TB0d{w7fKBuw$OjTTLkYT&zi&N1BRfLkB0nAjzRUsU0=lbTPPKH -zA+QFQAkVRyUcZkt?dij??5Pn+MF>0d3AZJqKV4T{tC)135 -zNlgQoH8+$lmWDwcF(84;q`*X!%%u9aC0`y8Zks6eCt{2fv!bztUU* -zgVN%iuyfoJAg_aSfq)=u3Pt1_<~h@_bt$;I1X5Ym>MC*0Yc{|8arAp>p*TrzBtHh7H{D~BNx|N=S)X;2O@a-hK9pT -zw16&B`2mAM>5zIEO&BLD32Zp*Wl7qdz`Z61jTiT-%hxHgU5Y+4R-I%u>78jtJT9`p;yM* -zpr*5<0*N~0}#W7Yp$5$wNqV-pN1q^i41+E>VzUANxT1p@u -zmKQQg{7XOQPslUkY!+B{ww0M~UQBHRm6@WWd|wN|H2?Kz0J^HIZ>u_JxT5vkf=mRZ -z9V5$vGRbs2vg%UJ)Npg`$*R#qlP{4==jmoS(GK+=X!i^U?UCTYum&tso|E+D0W-hP -zFLd}BO}TMj{g7*7Wi$?&05EJ3Up8w{8XO=n(88-3hFgqNHpYzinwoN)^|lWKXnnmU?QQYH_}A96tppSIiA@7-+<#bI`K8m;48Wewd$C}UCtGr& -zfT_yD&H}x~5L{z^#;Q3i>T+DlV}c8NGMwrSFbtT7y=g6pmifgLWJLED9D++@M?p2! -z>HU}vY2BKB9+J^<)_`qa4{wWB>TKB4YwWY=R}AfmW@P8i`g}VBl22DBfWuEf?uH_^ -zr4-OTF_1fo9F(FGI4C9ecQ{aj)`vh&+1XD6U`V9QgDHT?&dZ(HII}~3zMckn-7B&a -z+rE_p-_-k`&lKl6{gnKw`r0Hfn9yD1Z4r2jekCUxL>o3Fjr12Ug0bhHBo>t{BCUG}>EW8tsCM)sv#R -z3Huto;bMbkZ+ZgI?0L_ckoD^Cb5_RG;{PY6cAJ? -z%K=0V@|dy{q7Hn=73CXG6t!ly;rZPz9Dk^+5HO}HxbJdjJh;?W&Ij_ZjO-wvzI_yb -z?C7pa>ghYV&=mL3npXqb>?71&Q){7}cDdgGJ*Svqx>?S2p9f}EmcL)-eNa;v>0tmZ -zBr;3-_qA-NrQf6@I5v|t-q5z -z_yuVaS`^vTKK?Urk6S5MW$|r_GukgUig+}-pv|$hl!1cO&#iCZdIp*s43U*NIFEP= -z!ohgz4&emg+tnbieFFP -zD*Ztk3+Hi4kkl*JD1Cu_ajSSx^kF?)^zGB^c=Qe9=}&kB`~n%^xX3)7_8Sxzc^>Mo -zC@ABe)AMgc0+`=}>wn{*V)dV3s{gU+Kq5p|Aye=7!vH@(z`xn~c%*H(=_(f*Ui+iy -z5xL318|0(APNgpj9^3SAWAf0>Pte_?%1(pal-mlq^abj{(9rqsA3Wz*52HDq1Hy_+ -zd5k46@nslPuXY#^?+@|xoqjDcH^*H5jV}Ji41Adw1L^|~HzVg3D_Q;m2L3)4f&bh? -zg{?SVziq-fBZLsH07?7sg`et$J;@7eC}+?ZD&qyj4Cw#9(Sm?#he*ytmkS&p?W)Ab -zKyf>KJLCeur(u^(==G-{cNpD{4c~dQ(tul6O|6<$ -zdA87{$rL~FnTkV2mO%i|ID;s?353<}7zmfJdR39Rt}eNSpoh7xnb3kioUhEL!65Jl -zt>P-Wpulig{rT}|p&ggo*g2zSS_=L3U!xW%=`h2N{J9*W3r`yZ;aBIvoR_ti$ngFb -zNw!(XY;6dQ7L1#q_>%`n(a%uz&)m%WNX^6S&e*sF2Q*H8h<%U)tDuBl5wfI~GTR}B -zgKTS9*4rW51(!n9PpS5Xoj6PYY!&Gu251m1qVD*r)eFk#)D!CrqXU#bmep|sF&cRx{i??xw``HhcqY{NcHZrcM -z)Y2HV$r5(pcv-lYgzu7~1|;M;KeeD?=g9Kbv`X(ikmggO7`Q`z#sf53Y6#!5@aK5E -zrwRo=mu4>C!#Aj~bJK*+5RPd_cMU3WGQ%`~L$^jz4oxbW49VFI*IjZNdS=#XBfH7i -zM>%82I#L`$(+AQg#g7MvkZsxN$H>f~c`f{|u6gEid2fxT>?dIM9;}R$!3t@j&}s-t -zif?P$Vm)!sjW%t}6K1kzyI3#X@X<_M1Q}mgP~&~+g5p6S&z4429&%w0nyN5TN<*R3 -z`mi*!1Lvx+2zku-gtHIs!#ZO7$!m0rU>6VYYi%Dd_ -zs?0%y_%KXQ0M!PhNGQs>%5F%{VqP!LeY`A@XHgRojqg}=Y`B=-IvkHU*ZOGMe!GxqxByBNSieWUJJH$rC_r55E>D3@ -zNZPPV_lKJI$F;tfLh7ko#s1WuE -zdRa4x3wfP|cEZ#a@Pi=SxD4+GN^Cz&h=Xo*UVs9(P6SqXOlov!qRhsf0=BdZ7E)z> -z0{o<3nDtbfwQLNuPXTkgLpAM2A0fW$(MrIbCz|E(YJq?{1{4|C<7f|dl*${M{Y6C63MLSO& -zib#L$J0#pDTTn4prsx|UN*IOISjZ2^ICkPp%LLepzGf!w$N=-a{PW)qir&RU`?o)i -zr-I$m!i@f=TeRQ3R)n^-slcflk0>+vVlLEJE{3QUrOF15+I8`Lg&eaPfV}n;Pd8zhdsmOPLd_|+J -z#?>OVqkS1(!uFe@g3E*4il>&xuf3>RPPtOpE@4Hn6nrPa{YY#A+rbJ>2s`aE)cL4W -zTtRhf-v%k?nyLj4`f4BcW9JYzbpKvNJ&pX0zazy=w5&lJ>Y>& -zGp0g=);Rp=(L9(+K_^^F6w&ss^Yw=~)H{+r%-dl3tA*UExH8~M=0c1prfn?UXYuVE -z;V3k;JsxJ(MM9YZW7nyW{Qc$(b?~lW7e>PxFgGG9yujmW*^`%)ke6cGpz-kFe|Tu6 -zt(}_zs`Ri@>z#GpWqI3y=~`0TK!+$pO+mCstET!@X!2}y{Za)p#WrktN)W3kzr2u` -zt+OeG*l0;i0n9-tD>y=!lOS!31FE9dYnjdCQ3+~1{02=>Vr1vK&%y#1&%P9JKUpt3?d~qa0YL_GH-a&U-g>f@<1wV&SYzUXjeHOj%wO79NbD3lA(&P+ -zX@4*U0)225`u2pI*Nq7g-7(JY!|2Q;|!2C}O7nCY~;ap8gXF~QT&u6@R_j);Q0#mf*iN(vw+T#_aA -zAE>g7x)#Pb03mPfO#SnDlo$JraYPx}djMLh0L+NaTDB8l{XcVdzr2I4m%P8?xi8Rd -zqunMGWRJ{>ma&v%`m)l~HG;Zh#jxh3M4rgq={`}OK>Jx%(7lu6JHaQ_n?pN!!&(UC -z;-A8u_Tkwx6t_q#8R_kO-|%mN?@$PEU#d!}Zh<~li^LK=MHQkH1BsI!Tu+ddBDz)- -zUoaSchV}7eMUTeeg%%zlGYTQ3W5odtI{fr|OJw#<46};X^AwhaL!Q*THz_`P2?v># -zcN~tfjf$2j2 -z^(oCbBdJm4$O0mAwU?5?9KQlU2wE*D#yig$+E@aGHp5 -zDaEsB{sO&8gV`1W#oQeZM+>vJVtH*@!wH#~hddjW0i_Stzg!fS5tA#aFH)jiPk}@_*G+(^((3 -zF){J8g6nATFazo#Eaqd#L%tyAsyBD1IPhHe!GXua0|OKodZ<)Azzt?sFtpcw+ -zUujV2$mHI7H`e%VF)6zZ28heUc4A~!XVt_z(jl~|a65?(mYCDd4LSlFdYXMRWyK8MEy~?hO0i|g -zz{!od9~gn4?p;SANP{4TS9%T^R)F3P370@20yK$v#j}SPYOf_F*zh*+PGaw8E;K0%&nv)`xbwg2zA)AnJ;MBDq=; -z6AG}w!Pv;extlMtO}s5$Wo2Fg9@PU55gXcl)UD^Xq%JNuxZ-ldczy^3qDP(w4pYgP_P -z-6qPLplOaNA#aX-CbO9xrvPO&&_8TBfMf;`3Pkg!fOW{Ju|g&S)fT>4<{v!AG0!73 -zs8CGCdcg61niFKXTh!)8rMr3ylyqpPTk)@!QbVv8u{T2kKzi=`q*PY7licd}`l(>0kd -zOTL~}y%3=H(R?$Sz%kY+z0JKiFW!& -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 -zLJm>U58x1Bbdf!BP -z8RUtt5x`i@RWA3UDO_z!6&KbGTD-`JOdeMRd}0sbQ;Hky-$8f}W#$_nk@Q%&|8#(V -z8%-WlE(~E`U=9QNUetmcx(RD&320fA9i$FE#02|M6cf>^i{y@Wa`jyTpD&vtHK7!w -zprpO8d0J68LXOc?bmsKhp~!Q1RV_!Gl{98Iiez-tMq8uA!4*YmSCJ@{l{xHy1Zt}F -z0JCw&hS@!Zk&*E7?VO^{r9l)m>7iXdp`B~;C?mTkmaLf9Z*Zop-q-e9cD!+z$(h?DO?S$GyMh>^!(6hMOyO6HH -zwp$;BOp$T>_T`K1dT`{L6Im->NHSJz%5?=J8aI*ZJ`aV&GQOh4oY3qk;8mZ~J^WwL -z_YCF*i`UJy=X;qO<86a`AZ;%ll|Aj#vSv=(4m=f~*d3ND4Z!KycmdKi4dO=)rc(DC -zq2^m-a}qgux2;EVl?)%+R?@{T&d!s+=o)F6P;ESIu(vw9#f+l>nRj -zU=Mgmt0!Isll-Y@{>SFVvr<3O_>B^gUZIV8%CnOU4zFIE>$2T -zC?K!D^@hF$iM3S{@$ztxAr!kLt{l$@CiIKB^MZ`yJwl&TA2IVdM{FabXYI|dfDR&e -z!7kkD#bciq!wYcC+h6JNdD4eA23F=VtuQhHS6<&?D*z%>e2Bpf4t$ky?9O7e^a59kpU9j6ND36Z&~prf^-2~gEV_HM*V+IHygBnbl-)nD2(4tGyeBoa -z5BJ}-9%X(*KNqzerdC1s)ZraKZ6>c~Ei2{2w!la3%gB+8;E&u%Z&VA?_I4>`gXA(*F&lVtz -z%kt-IP_-SNph!Kaz^mCjPG`^xHrrpJP!fZLYZ(@d0*~nH=H`NEuClM6;*!W~%OF;; -z>kdV8q*ydE@K^e^+i+CjnYFawR*^E!y?4>T3PE&@&Y&hNxrfwy>T(Y)Y8gAugmT-hy=1OH^ -zteN2*G?U2vKDXxOK=>WV@my4+`$F-CoG)*xtJ88{9c$I@(^ZqHh%CzaMIJ@-$dahE -zKJnv%ocTMFB8PWseV6;^2aGHKco48jO<=n3R`9ECn)D| -zD=2$btVN$V8qX8RT!|X(vg!(;!Xsr-+xqS(L;&h4Uq>lpiJffm#~L$Mm7I>U%U$-z -zuJe9}WpBytZ_1IIm(VeUq^M}{Rd+#>V(eYK{7IU#rZ6LJ%W_NTp967IzcEr;cTfWy -zGX0u^LInZ6B^I7Q9ja94xb74s9=7*6KR5)Ndhh)~8_-3vx#CfXcpk+JxeclZG=;sb -zUI*SfV`XlfeJwJgOkhb-@I2%Krx<5i)xp~f#Up$QVXx=5DnVS76KNyk;iC;h2F06| -zdpI?>#%_aGct^71!(rWsUb$ezoG46Y%o>WE^vmth-z3&!)<)^CQ653L*LgNrv#ku} -zaz*DjLj$Zj$fi>{bv?|y?%bWHybd4fBXhIRlJ&a->&DgVl1R$I3wGy?yD=B=l!l_2 -z!f1^djIP^1g*nZ7HAQliVz>oNVgEN2|F~d8wlC;bDaYGyG1HZWWf?cx63oRLXM_aaTD@S#tYO`wrBqq0Ji -zOC=hlL0{!vS0kyS4Ihp(a|D@bNeD~G6N;-@?Ge2U9_zd#?oLhFW{DV%X_$nbU`0*c -z8jIkLCI(6&^(&#rzW&w_J19Pf-Fbd$@V6}$0 -z!y}Kk*KWqHlTLK$XjJ}hjv`U)=7?tMRGn7X2fX#x>2N!wn%TK0Pv~C?b9))DwPMPQH%e~zubPS*D58gQ`P~lOdB*| -zO`Z&x?6<|}HS}Q?YJ%+MFVaqoODQN*(B(&Qh4I87H_Jqj^zE%6=~679vvT -zXfyvW0%fY?L);-?$muc~xkVtzCR0>M;||1bd(MZUMaoVYIRiho6#_smW^g+=6l%YKH -zs2TL&-4J4Axo^^k?j#f}y^7{7r_w`ca|_F8>Xim)o*mFV)5>JBGB2LOy98BSD7$z? -z=O->M2FET;n&zDrz-k}Sq-PN~PH5uq!U<*MJ&TpswcI(&tgxQjU2UoGe>VmOz#irf6lDXnXlbq-Md4ptl -z2*T-o2tF)=H^r>%f9+P@8IeH>FY}hQEVd|hb&ky(#t7m*9S+vr{v^G%qN@>{x#bv2 -zN*Q^XHjAmyY~5$W`Pin*-C`HDrSBv42Mrb~Bw*aa!s?*zIFeL_*6v@;=Z%)Mc1 -zr>BNI6oDC~dCh7+RjMiqEpqFzNG33JgND`}II{4^sjkFb%1d+DGSP1d+Ci&j&V#^> -zLb8W0Nb@s!S0?vuOKP35Rfcz86vyT49l%>cqHo)rm0c$$`I6Y^1l7sSsQWB4%EXR} -zqNZ?JF&RZB0jvfQ{UkJMC?BT`lu-8~-K6qSqQHNA{lZzn -zTqBl6c_IVB!Z(F1^`mtKcMFRb%_(#E18mGo#CIsC#EC%j+W!53GX2tM@Pu~56&Pv5 -z9H3H18x6W;ykH>YYWE<=W+9w5m;So21xYCI@X=Di9}-!#)7NYOGlpAu-E-&=)5j5)rmTB -zAJ)z$=yq-W)rGr)sR%?Ro)h_#)LT50?Ycv*+jQ=H|1iqlA-ZZsne3Og5}PdS;z}~~ -zoQ-20&@`SZ)?f!3OOk_)!-dJhBS3AePRfE5v^TU$2*A}}b>@pMYjjVuHOh+Tpxmd8 -zxOUKu;9(24J}qFM6(cD6CtI8zxp2>$RcdFuKC|~lm+7KId?|254nJiM^ui-<(WJjA{Y&q3rS|nw3?3668Q!Z2cyf%rb8$q- -zJY2Q~l{oSTihvci26d>y7$~ZED=D~`G4M0CoqSHL8%_-&A(_KsVKAh-rAV~SRYA;L -zx-ctT%h^zF4$I9tc(s4sTvBGK8)sS)i?tNRZr*_bhE3VQp5C0%XNXloX?!{`v4c*e -zN3K{$5}KGdkxn`}fV@8(Oq;YV$%{hlTV;XRtq>Uuj=AJQOOsrQg*=f4#Jq3^&+@z# -zKiTX(nDk;eR#TUysWr4^5eB)3rB>O@c2I^tqa{Lm!wHq7JY3}!r;6ihZaD@*#RqVN -zHhicPpRRps5niCFU$V^y&B<7_*VKT&k|(f0CP^0vXBDO9G>Fs@cyV;TK~TDALJ#*u -z&SU}+ll8DN!Vx3HagQ24K!WKjPda1MI -z+>U&W2N(V_Gzh~<*Fayg$mcy>DYAIiV{6=**@-hUNM*lETgzX5@d1`HdO{&_prip2 -z2eU6v59K@ -zh80pu^V6lg^ly?SsQc-cO$22xvn*B*@^`(HQcQ-sRO68O9@lH{VBUnSBa5a=DvV_s -z&tU9*3)j_Mh$3)#aHutwRFva^iX+?jQoaiq$xoJ*QzYt7%QAt(+wIH#`<-ILBX{12 -zRE2dQvve-H!Y2ybxbsrJ1o4BYkP`XDLAC+t3Y|ZQ-E*p(eJ0M0_$)Tw{h54hG))T*(v$>ZJ95o5ESeT*?3C$>cTFusU0ZoC&35N -zQ!v&uE!R*~o*6wb;-Vj92pnm5gbOY0kDAQsg~rH}i&wC^6(MlT?erE8<*;UEtXxj6 -zu+IycyDJ)f7DjYfvlqb86<@WE63w0oe7VeajfOugXJvJDAA4>SHtDJ)?vS(U;5cN3< -znp}}C7Adq`1HvZFy~6vL16)+n5)w|+V(K~%EL)DdO~hES5T=3zdfPj)L0DJnRq@w1#uTDj7$(8st47ae5k3D+Ai)l`vQ(LbbnU(a6l;AZo*9zZg3~Ag5%$UI@75 -z6#Nl~o00^{_M+@zGM!tL2T=*=4DaBwSG=gtmZFOHJnuKA|C3Y3ra(+^)?~^6bATUB -z$y0{Zm7@<}&xAq9c2{KJuA=si2K0>ndPJ-ci_pndZu9`@d1S#GJaX=UHkX!(wxme* -z2_l0<^a!U$a{;Ew-fHtRRCNPUm4X`L78W1|7vpT<*ouqby_7#YcEhX~xNOiSmK}#F -zPG2dapJ%IXSN^RKkDlf{c`dyG3qHJJgouuU~xEZ8L%-Q4~6=l -z$!FBxsaaRht*JH`vpr#t1$Ig75%L0q(LxRBaY=2vMk5!(J<#reJ~o{^oV+TvshoRk -z;2Hy6zS=e>@$nyGGRYRsgmS)PLGO>{bpZ;`;^ZUk5aBG(IMT%&sA{s#%sE?*GCJAl -z$sA4^`Nsp|ZwpGS(&C5h2#kQ%jErOvp -z8g4G_w9lbT`LNbgIV*TzF7@88mhWozdfNi>B~ZEV?Ljw@p&52UqzGQPY8vh~{zOGTv^1x~bYvy>`vk@F7y4wN2OGm>;PWWH7a(LK&>BpH-9 -z{8bvQkN~p`_B+{&8meET#IOzmS2migBDgfm8(Rs4VgvW18aMAK9%1ot*L7pMcCGhL -znLfHn^nV;yWt^61DHVXpkwNJgzK0gwQ4Tn9-GM&~9F~@n6KR}NjYn}foG8+yrFI-~ -zEE9Tou;eq6S+?XF%W$}wH}8fNq)QCzJ#D8*F-Ox3B*pSGXBe4*EK`My2&ChH0JQc2 -zW`C828Gz#)s$V)o-VXs#BmZMj&Xyfl`b=XDnNhSIp_Gyn;-4l-3O_&}NEE8FVGIQtTCf6+lD}Wy!n#WRid&0*Q~5%EcPc)O>iVfaXqW|IzPK{9@6Pozg^g -zbBCwO1Dh)ir(rEUuUp@6&K-&3r;^?w#+HhKM1w7qL1fa9I|DLZx^*%}#^13lN42|_ -z_{d$SG#ky0a-t2(+v_I8F$5Fk%WxR%fXUtXqjVKU)7({NoqNuYBA}d}ys~3ew6`Xq -z002oqw!djU?VU8#ksbVXg)#RuhM*1R0h5tC4^9Ob`MT^FsJF?gKKYG_qT8yUu1dos -z(>^fUeHl(vB8HOtF?n{Oi=$|XMPVD@-7JF2O|K}bZ9=Q#)D1#4T^--P@KbAg)IzvK -zLXlQ!Am!qNM7@xlrwN@iE@7e&3R_k#Sl8NNl*%R=Oa(uTW)4q8Ucb7W$X -zUa9?xQGQP#Kepx@g=aGby<0gNGq|1J|F(&&3r`Wx)$qs -zhU`JXQF38&>89w~FTmK{yUMtYUD>n8O5PJxxi3OSCUa+)a3 -z<7T>NT0J+oS<zk8OgkoWiPHro(x1#W$66Jov`Jgv}pS>r;U>_ -zT;chy6N=b*PSHidovAg;l%7X{xR8U?cn0tg3u!S-*ApEjumlrr2x~Ow1dwo%G<;VM -z4|a+suC8RnE5!l(RM4!#h=i+wMKwT0r5NG6jB!b|zNSNGjr1R?xzn86Nt2h?>xCz| -zruAqO1I-b++`dc5&y`$s>^}->Q78H+(*H~)Hc)sLPnr>syuT$8FXfd5*$^nCBeQKD -z2y?yx$YKE}R6wv-Xy(>NQE>gRtb(moD^lM8$vyR)j}#MbKn~hZN3d$#BrD3Fy<$I- -zesj_6b~@0MTfhbM8QP -zH9ek^$ZS1W9Yr(LWGHrtKWwP!z#_q51BOgP@0r8&!EH2ra!vRz^_ -zax&e{4$yJFnXO;;ausLGF8ri)^R!4o&$qhBG51gMeDf8CHoeoq822;52#UP%>IB&%*7i!#IuEFHPt^ -z2U5w{yrl3^rp&l?UP8*8L}&+Q^Gcg>s3WmT&*36%P7ar4ez#!Ldwm5QYjI$RfYDx+dRAz1PBw-~lz_!2EB6?T -zPbu{Svyqx0voSvwE(C}wN8t0Uk&sKZDU{+CSx&2W+X>|@nrYERN62%6-<0{5_^#1Q -z8`n#rY(oxOPOPK*YvBTn7dw0IvU&i|4;Dx5l#_>vn%)4YbBVc^An>>w3p72%7N@ex&g)h5K5Z<-y!c%i);Yg-e2GT2mBT -z`C)Go2(70ngn`!puHGy1^6v!!L1y0Q_K~7d>l;A*PNdZ=YC(PuBB+ZMdG4X!$rH&7 -z2iqg}@zWRcMC=))VdN9Ax?f*&|Cay2%)-8wfIbbY76a5YeTkw#(+fwx)+GibK)$>4 -z^ItQQ%1B-jq*z7v@|VCq&;gkyBfOSkQ=`HJ@>#!JT4xTECYDWSsP2WDO|qbq7C1P( -z>w=F&vP6T4_sO&xvh*O6ZRlwte`sHGtzw;wx&`L}o91vi*O5n7 -z?eVQ{#I|k(rrI8e -zRH#j+OPP#S#mRnT?!sC#>PGMERE;bLR#>7mT>K&WQ02}g~*JPpH8 -zg+&PL5~4qsXoKQ#aCQmFBiU_GaND{R5r_;>XFcf#h4C1W#W~ks<;Q@CIw3>ic%9mkb*42kA0`&+vF -zI}8A`9ors@R11a{v(yGD4(K#P9k#qnUf$TArCsXN27e+W;+_mE*=BGr^DZ&h0h6C( -zwGuviMK_pikA;iOHbfEhtO2J-bC*HLjn2i#2j~2xY0`b{3}qh76mq{FcO#hS@D<%# -zPO8!~_nTz1j;z}N!h*v1-k5t$mFTYVAb-%I@51(1kU$Lqx2=2c)JjvPX|Itz>xYXp -zTZvUe&;CSnJs9f|hzy6(ts|Jcz)72F>^3NTK=CWV>{!-0E>%A~zy+ll5>UTK6iC-X -zla@WAso8ITDCgXsaDSYdLa>zX)l6yQmY0mo7uprB#kvHI4zLtx7Fz&RY -z(->&fs%SGT_zR1h+EZs%lSXguwtO4Q)n1v(5`*oL6xj;?$Kh!DQXuvll2g_3UKCwa -zQKLZ5YYH^)b?BRfoUm>sSY5@&6Qpre>V_JUaQC`3j%PtMtPApjHrij+nOH%m4ieK0 -z8%H%Si0G@cma~={&G1TB%LswkGyK4CzT}HBj{BjWA`){_jy_}Bnan!1Hb -z2;9lldk~7Q5+s*gvsFzHXoBoyEDVb6u_-dD0>Dknq3Jm%9wH0-RDb!zP$=!!W`CJ* -z1yJA3&{qRF-sHYjYC2HYGuqBieTq;Z1n{TX;hcKPfC)&v)kN|grsE_BDejO$!x2pC -zzDv>vOn93)ftg*Ts|rT(DT&4u07A+GgD+tv_)cFj80|oZKg5MB;k2T;VF5o5I44=$S3Tt;4;SZ+mk3+(Me+o#K2q4*u? -zG*MnCN@-11Tuyw(D37cUAh9%cAS9{W3+$Xj2xF{YLfXou+w`VWb!h-qM)q7nDt`3r -zIdqQba!X%mDS}p(=F3ti5W`j(x*}Ei%hf{xkn#8NBL8WUMyG6v!O;PRcI-oAu?Zq8 -zfzh&Ugto|keePS3C{*1~UGLlsX6UK?d60Jv0W)#^Xs%0UrSaTK;P#V*r|f-{+#1aZ -z&)LHRRpX&3Bj|O1a>R{-`xun8=N{+uJivaV_oAE( -zS*%{RX5Jv$9xUd1g5}^``{e0v_2Y6)1>^8&v`>y^G%}Z)F;i^9lg?DcCner{mkaKU -zki4)|n_q@j=R0zWdebL*+4`0|J@m}*+>%6OKn@rE;M)IE=cw+Q7?;-@&$p|M)=WIA -zC^53W6qkE$f-hc_S(t~2LmYX!+#n;D$gcE+4R_3*5?Zly`jPJaVjW9`POhz5)LI^n -ztK28h%>m9!i@bBw%TOB%Kmn7BP{g*hjo|ss=l=jXo1mZyZ*zjiIfLC8P*VdHA(=<) -z(Cjc+AfQl|6ATk@t}q?+90~@9Jf)`LGmwGHaICz`7Lt4uwc%YvsJw`q#@YU*D@agj -zWdL4~Cwk7Bxy2@v(^vhFTZsT*L0@^n*BS~pK&LOaMs0s-EoE6vngZ-T%GKXzFm}3P -z5o#-qNJx&f`_<_?E&}3;&&2{6!Ps-cMe7?6k+W -z!a7b*OAVbSV{)s3^p{UGPd)F53gMLj=%c5zA(9LAMUh3XMnyU}4a!6j}R0M9u)toy{4KQ<&z)Zdw=6-t=e5dU2x)T}Jiwp#N$2{vx0%G)jPP2gCqHpz^m$ -znW#!_F;TFWjnPwt;a5{1g^p2+dgfwO3+gj@i^d$GFMPBnu*l$(zLo|Rw}!wM9` -zA}}8_fb-Lms5=y_5M|ccj|Ke-3KePf?Nw$Ex&S}f4W%z4cgyI%*oBG6dvVpp2N0O3 -zU?i$AH>qW@UG^;*Jn?7c{Z#1$txO9*X-N!yaxw+SY_cnq5hWqF$^=h9wZ -z)#=$NEc_@e+8U0-c3xB>5?XM9oKD-eJ!E&Iyk -zxwL{JoIrJMS!93gGlM$R7U;$vRe(EXYCNV2Od+9j6ARcztTxyWf@1@1;y8BYB+0ea%B~R4JmWYd@dltunBcZOqgMgMl&m=00aK&zdEv=yJ2L5KoXJ_t>^* -z^XWIqLUO9S$iT+!l9T4-`aax4S|T7*(XA9rb0Njd*)B)k2eZ;&PCr){xmEBT= -z=eeTAO>+P&6qDL2p*W^977^=@UEnh>&2P8_(Y}cN>LejGWW2 -zH!J7X_@4bi9U%Ty|Bg2JE0jbsgC&a`mmrtb_b@ex%P~QCG3Lw<#WmTWS@;$V7_c| -zx`?s4_)-zOOf!8qWuz`aic{FJ74v#Y+*|>=}WP+xST-L=jj6?<^W5AV5U_3fiA6WYV`1&(%G?T84 -zHTTTr#l-|hnVtuEPIM^Rj)cd}`Ni(g@==m0T$Z#WXnIywbI!yfkoO+pp0=)_%xy<- -zOQj^aq!Z$u^>WrFcL3bL@v)rK?5sWq0B>Y64olv7?RIyiN#AQ(vK`YnXWN$AO^C99 -zU)d;XulKS?p6#o%c_5d?>Q5zeNYT#xDg2Vu7qSTL5Ff}Rx>O-;4&oaj+l;(E-m4!% -zGmzb&vA#`?@O|_vE4Nf72WXKU_135Z6BzQot8aEZ8dVy$0lKfV`9HTjmuRPAPT&5SOGqSQ$35EGLq1bv3>)ADj^247* -zA?zBWjYO=d#1#DNvjBt46VE{kkT_Jy_>Ke%h(^uAB_L-V+R52`8q%c31{f@h<7#9~ -zQkDr%u3>vepV>48O9=H7FZy^wFOLTT3HQbxU^t1*XPP{jo%_U;XAZ++5PdYU5~xs= -zlt^*7N$7+~NRy7buFB#Mu2d`Oh^s=ENsU!IZ!+Mnid7X(AYU!n-oobgsNi+`%ngU? -z|AnSe7R@!9zC=5Ok5l4_LM$fTT$8$gjORzV@oTqn^6n5 -zqqHa9QBh3BDzr6%KK{XZEK3UciMx5O%{;N`o}L>msEwf1U$LXtT7ncw;0ajMPmS7=nzegQH9 -z%FoZ$BlaG~qlDOqUkxX`Xx*mB96MYt%$CoBY;Thdkn~k{=pGbr6iRCh|LnOT)&@wb -ztrre-JrR$Q;AehE)FHkI%tT*vhh6!AXE8sBgxP^IFX>p3E$S@g4;G#SsM<`J2wXJ$ -z-NUl${P03%g7*5nAyRrE_ZNULQI}C4CXn-jI|6_E>PB8RNQz>a5UH{6awTGF)SC71 -z6$L7qMW4x&1xA0mq31PPne;#=qR0{UdZbNW6}hg1>?Kk_wtlMT$RWJ#}(wR`X&U8j~ -zAdgPLyl&;R6fe1lbDdco^+fXR>;b^x4#B%GXJBaaN@W2S2>QMJ!MJNwAY|Rg-YO>C -z{(9#On{AsuoUv>B(`-EAM;KjY -z=H6pB26U5Ad>cHkD=RAHBE>O+cT;p_(G9j5B3ou8g5*Lo7+{n~d>DqF+`sw;^&HJ9 -zKd+xNEg!9Ge+V2O-3_U&y>gX}yg~fYsZ`NscJH%8fYg`9)f4y=ICw`ST|oT!`jk_~ -zQP)3^Mr84LU5x#@p1RrQ@K`4YnblBz;D1&vNeS#iDetT<14a;q75yjVM&Og`M+Nu7 -z6B5c$2N7~8SA$m0<(1+lm_d3xi;El5QYTjh$i~d*q6uH}`r*xGJw+Hejt9CJZ|cH; -z#2A1cYf`(v^fkFTw1z?0EZg<_o-O637X<&<~;)`8j?LsNUg5u!r>X}5k++veb_f6izubL -zDC$+dEkgsM^7HG&V}u=C>E`%4dhRi4tT9ZQ|G347At#N}K`G1mx|1=bI4tKy;MJOB -zqvn++$k)n3*y5S1k7-J5-kRI1@@^=Q39 -zdDv(zVW2D8RCU7!Vk#c&KG-mDRvM_7leXMFjPr396?i#v5LAt>Go@^#ea12XWGqa4 -z0E~?7kj1Ccb&SZIm0g?J4ra>zg|4KP1d^PFHBOKLFbxc5UatDj0IE$@a5Mxhcpt~T -zp|Gv!%wh5s^u~icg}yu}um*L`3E8AVsfA`T`W<9_vI8N>opbu;i7FS<5*W-A7Z>_d -z*T~QBsouQN37h=E#E3e(k2PGA{dkkkqjH|d8j6L(PFs9|po1b+ZXRMI$-KF6=ZYTl -zEME3`Nm2||luc>tA8GK&=DmzjSrIENt}%OP!smQyI%mKnSE0sZ?z7SYx8saO=U>Nq -z-k>{Dax@)4nnG}ZWARluvScYm$t*N!uZ$mw?jMQyveXUU&<< -z=Ol+-t~0!8LH|Ol_adWyvD%1kKvHOmcj0&wOY>VY0m?!%zC6gi_X5sC1gHCH*>lci -z2ELzx#-6}>{r=@kWAlJP6sZA>SKjYz70?y4q}Elen7qYSbOX_>r9ySEF+4342|p{E -z3RoBJK<=O7yx@7=<9Ax7_*HIS@aZzy&jgOBFy(|2vnx7Sn&qYbKxg5e!OboFIXa=> -z{IGzvf(z~lV>*D7;n=*xQB<%iPw1~Q2k2tZ9?nyjW|bZTQrxaN -zoa=p$^e&gs)9`RQ!?QetlornW^_3PrlT26z#Cx$S4q5V?W5&e-baI13OrfrQfj3_; -z^qKI$6+&m$OMFiN@)P_SFYH)S -zp7s|TaQP~2a?6#b%DFx?hJ$uUBq?kMCkxyd+c3xF?RG8nmDsl(18kJKhrROBz?Y<` -zN3}$X7Qd_tyEKE;)gR9H#Crm_#XCWT_Id~cST-%xb|nmCZPl;;eD_W87~_C0|1(jT -zHDQHr?xV7S_*?-)+2Uwjm`13`y0#?E%9F-C`SnZ(vlW79)@i|CNxgbjl; -zH_>yP>f|s)olAmOlR*j_2XeU}2wPKbkhyS)G?R1f^9S6!Rie{=zy1J`;pTI$0a~td -z;4=jZHK1f{_`doa_CICsEmo}BX7?;)p -zD+o)V*)19Ww&QK?>Xu-^}N81dha=HU(oEuXA>?9fwZf{jcr&k+J{+DQ#4CkJ6 -z&Oe}z0B6&tGK-_EGkOlaLq)hGpoQ4Bfp%=9wvZ(+W|AaH#59p_F;{zK@$~mM(CPVn -zUC_N0Q>j8)2e=1PZveoPCRv69qv^4)0;ZT+n_V02GITn2yO(Y=xRA>rwrUrom~SJC -zbmd1Qx+e70)ro?f#)MjrwUOr*4xr>9q%NpFxioUxPOVg^W+e(lHq$Nwi*|+7lcL>F -z{-GPWjo@~)1=GFoFbwQ$=Q|lQ&H5Vac_s@-q8x4I>5Htq447}#{!c5a?ePM(QaNX;jZ!> -zblVh>B2lJ0vblrjkg!T0AZPLBJuB{kXjI+IXd0GIeg#aT7}H|sL+<(!u2$dsi~DEt -zNc5Y+TjDw*OmEy;ryihPdVOI_M2jyXox32-MX&jW|6l*_KeCeb4%6}f$=vHjGKtwU -zO7cs-U+ia?mnefZFVcG~(jQwv3DN8{HPU2%uUK84n~=+I+3T(YT}=aszfPTQ3uVhS -z%^uL0pw_?XCc|w@AonuY=?>!kROz(_t_*Ua6;7r1MS%@ro%iR{^e8z-eeb(9Jmh1g -z!2SA#sYukG)74B(njY2zbqnkLxM5!%w%;xD`EGZNN?3A})hhB$)}k;WqtvUc0rW4! -zg`DIUB;tQ_LwG?ao|sLaB^>2YH6nn`xoyZf<~xx;rlj$>(X`REYAUm*%bO|;H{)(5 -z1e7$~72NZ_H59Guq13s6Fn&U -z4Yw=8%5)1z0Yj#*hYL{D_Q#_!U1(-f>|Gzw-vx5yk$tfACuV=f`GTQugv0=+ZuJ>( -zYv5w!z`T)|>kg4c7Hxc~Ynj_1TCoMz#c{i@k$V#9HsDvPbHTMY?(!MtqWFsIRKW3p -z)^Es^knz9!sM6O%zrI{2W8FY@t;>dBSTFR9X*}y#9<)nfcH;ni9?7@HFmw^5p8SUQ -zOfufco+1px$#xEHteZA3|*<||_%=R%om;!P9=wzO4JzMu(XX@5}qLQ6wOG~NycfWs+1EbR$!a3OfBXIl+KyRgIe`X+Ogn+q}l -zxfOcDya8e2jaUE~x5;61S_f`|@v9o_k}U+{&C8kwIGFU*r0{0y#PyAWFXO(*5OTgW5qKo>>1Zme{vbY&@~`@lJ$4TJT_^P+K&}7!htJ=q;TvA2;Wz$^BR*EV -zgt`=eh|}CSgmI{3LZb&+@%Ol^mKpsto&Tm+Fb7sO?NxVieGlLmn+MP#*VnIh&Iun} -z-)Sn!-}I%(P2~1bxenSn^^)KBNNx#O?m$%1$58_(`Mim#dXHOLX%8B#|Kr+&Lm7Xl -zx8m&bi%>JAeO&SWrCs!6yB?lmeS(SAPw1h^2Xfy_pYTz64!d{^hB$&0z$RAH7%Vg_ -zp4j;-_4U&SRs4;_Wwa|7--gKooos;l4CT3D_T)d?Wz0?cNR9%OW^d%Ltw=yo358mp -zS()R7c?-pUVhLUg4{TD2Wr-%}_vwm(knBUNph5O*wRXYZLr1Kc)&l7>!?m=AzBvl- -zkY!XkU4bT(vie#fWUa4f9n^QSbLfpms@}K(Ae~Tl4nwV;+<7mfgLN*<2K`$Sgb{jY -zT^gZ)7`-b39;~rUEn)3H_}R-YnWZ#0r+!?LkYe^uuiy{(M=MM->Gb1(RN -zF!eRE%&692k7W(k*Dv2I?_j2hPLp$s++ziRy2UrEMi4*WzP_~M?_WRv^&S63sPOvj -z#~0ZoDX5Wgia~;SsA-vp5^7jbX17|yzG%^)rv0)8D}e8oaDm*rJvR}7rir%(W0Bx=H}?&ccuMi=>FJm&~Kzk}!aDffAr|`F{H1oP%I;g*!x;Tm=WAfbK -zHCg|kq2{^73%>X;70%C8siHNw3admLiHnL?J?g5dAFR!IV()N#*_Pk0KiKW{1`N2h -zj2brBe+}_VB*`%VJ)m6E{=wKAq2DAoN%ZX&#b=Cwxbj}a(wuN&J;^dLarJcCx48h+ -z#pTjZz||WDU|yR6aQ%POTe%@uLUTq_C~~k*#}fO5U1<)W4!GJF%!>A`rwN`P?gdPo -zcufxC>XkB~3m%3`XU!HALoaI1lUr%;+wnoJzy&;=Q!>OIA -zG*M_4_xlPoCw4xLg#>I;Prr5HaSh3Of4N#V6b)-uA-I##+r!e3gRJknFzjN{U#dmc -z5L%Q6b?sQNlW7GqZD7~)4ZJLg-sFt*Lhd_)|HaC5cpwyrVqVdI;e{qYk7hHx(hZlG -ziB60>ku1Y-EVdo>SW8d>ImxJavo)Y(15H9+#(eVB?sSnmSVpI0LIX5`u4H9aN7{7h -z-MF3Qq0=`RjwAEapm)|icw_LBBL6}K!=#lxCY9LSqplS -zeG~X)mlmcEX#_%Hf>sdC+fT1(G=r2={s;*rRL8DP;zJ*R!+=)s=&(LSTGI7qIV-xb -zF}6N&m<+aN7y2A|$U+d8Kl}4C_$S95*>;a}IGw=3%;^9ZTv0I7_q7AXtj2WlFUMqC -z5vQ9t_S-vhL<72%?s3WSk6x+8el(5b%zu2tBeN#nHBs=lphWPgWV;ZO^0{a`X>ImB -z`f-fpwGK^=CT?^DnsWIz{E}=m&oK=PMPc^jOWr<`s-(%yk2re;)`UwLr6~S@EbWpW -zriab^H01}V?7;r-ye-g+$2DC*62i+D$FYeozJR^~$4+#8fYVnn+d;kb>1V6c_}O2e -z6o8GiRx{GrMv9b+1|Pmdc=IAU_E>;VeUk-cEfaKaj?-!1X(OGF@=))A0_xm5OryqY -zxVMc&n;ZuuA*_1^HPgrS02e1?_t|h$a6rqdDP(&v_O#!7Vh1#*P;a`rBSoIvGdl=X -zxPxNeid1CZ9W}_Au68$`GTJi-=T%4A{aBfXR+i(wusW&Eme((@Kbd+)i?y#`-oA2S -zkDkbApM1ZWf+)TDaZ8H<8L)tPM}!&ysWI_qc+J8_mJ_ -zH67*W9r-JIu-C6&a96z{9$#O7e7P9~)a%>VFJyA{2EP9DMGN?w -zJ%z77zrg(`-x%Zv#jf!B?d{8>iaP4wzI}Nt>bAdr`-hKtgj=uGcZ9OH<4}h2?{9KN -zu4eY*^~)`4cK_!a|Cr|cI~hF13;ulLk6mN?& -z|9q41k3#OBU%%W&6(0Qg?Tg$hH~8yEUlCN=8NcC)CJzw?u|`1a>_ -zh8yVL{(1EYU3?IOS%aT4Er#HK|9-pQdV7tjr?q)`=d1JQKR^6H*av_9c$N7ifBo^* -zA343g-Im&3VpKyBp51cg3Fyo&;^!k20)9Leny_PHG -z=f7}fX1Lb(Ki*BQi(bpAS71mxOKAT5`N}0<%Rl}6`SZ4En>M{ZKb)VBc2tl_%{mPM -zRs5Wq8#c0UKl1CZ-|e+`mH@rCD-sr#7YKB90mA~BSon1EXq27^8J+U&zr;Mhe)$3@ -zM4^vf!CKm@@10}+)NlX%=cj!_wyz`0C2!Lc3FWnTc7{I7 -z46`sh!2F;M!qO1$`;=#X4VscL{QUk?-=b0?R!l$G^fKs1e*W>%kFWL-pi|q9oFT0_ -z3m+YX1M~XlXL@7BXS7Q6qvd`~hUM95tYi@DDQ}iF^P&cpIxKh?X-?^IK)Ys#)6xQ1 -zK&2>p_0;`=-;x#dH$VURa-O98;ZM0-5YOT)v}DD!yncU`pVE$u -z-6+4djvm^ZfBuw5-6b#ug!{^-gwqLVya~t8f5`xm>8FGIu-CLi+tJ_XC0uvNy9uXT -zInBz?9p2K@b;!?pv0CM8ue_2IL*4~C06G(Uje=$SVxB7f=19 -zwePfjd8l^$&==`LpU|y6^p9PTz4dlg*X4E{Q}JVPT8*#YzkczzE6x4W8++G)%Wz-0X<^+=4egeqAyLxcW>(((_~~zcD&`Zf?GPyBjRCTolO1b4e*FC6e}7c3 -zZ$EVyDbVp_{JQG|SXy(C@Uj@kMQLPii~5Z>F*mP2{QIePGeU1vwPlTyoqcV?zy8sa -zGk>!md^Ji*3Zn8cK5jZ^J`}5ZJ31Yi!_70mYwxt|btMlJw2XbmYQX~`RFy2ZP`L%U=F``(8dzeDd`*|MKUz*W38<*BvsB&` -zb7$s$dmFP~h_CF`KkN@-5cQ*-Lx)ljsEf0 -z>fvvyM)yHjy4UcEC+xZyE6-_4oHDAb) -zpFdu5TZg>+d5W^09-};eO5CI&+k3RWQnm_{wowTB%qk~3^-+gNyU}n>=-yA}N~f8I -z@TR^t7~AF)vt$7}619tiv#qTW*CKI0dVUKD0Q!{_2D`u<;fayRCB9Cc}A?JKRIW0Vj -zmi(*8kduSHYWh70sMi*|5#;V9A^LsxCT3T>W+m(gXQ -zu-kIZT%D-U*)STlOTR5%X4Ta$Ke~f+8 -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 -zc>6r&zP)=}z+1K&US2w@dbFqx(DXtBw&*Tq -zi~xm3T?Jx69)0C7EwIADo0n%rMjJKPvdQRp;!4|yc0)EVRuiRyj2KCrvV-V8(X`c~M|WXR4X -zJC^Eb{80KtL1`#fTm9BTo*M}u4@k -zd|#YY=9W~;UveJXBlnG7y=xQ+@35p>fb-TSDo<+;MPk~UJ&jb=Or6|7Z}Q1Y+ld7= -z6fwe&=u8Pp(V8`Pnd%UG?z#Bz$LraJM>3D~KPFAkzsdgq5&rg`P$w63jLk)xLRy(z -z0CM(lDuIwY1AQ8w3L`RWA%GrA(Ngvt_G3uJl5i|9hqID$9a6|B4{E^-N@IyP0JDS$ -znQXb+3Ad>0<|WmPw>jLO;B_c%ZKtazJb*vuE+g)nefUw}@9=R6yHu?C4c#vil9vma -zkSylO3#friD=ThUoT-=umK%nlydOXTu$ahry1f*CDtN{?qmd`*dwp|#!XH1^Q}8}E -zh||GkSGg`=iTweC$~$$@~asNB@k#T)^RFDFz=aRERPf4V-a>6|@{�gp -z6^Q9nlc{AtZC}6(^%7;1o?hQgh_7v~xM+ViUm#o2){b1Shj#i>n+Kdy7c>VxHUE|MuSbh%vC=qn}EzoJDKQ(ib$n -zkJaUL4CunGkS-`LOWtFr-Ps(Z>hCLGI>D09GoFEUcMcWv*DzJDs7PXt2r~W`kR|RM -zFy=%tYHyt`U3?fKzLH73weND37tF+vtJXbzl;*r>`{6#kR>UPdmM6=^P0`!dPd=kK -ziTt}0xu<-&_RFJyx}nN|cHPr51szJen5{R$6#r=2H(L8w6kuK=8Ibh)TqQ2K(o2^6 -zEH*|2-f*7^b2qfjzo7q!<~`5#p&un|Y^=@D!7u(HKtwFV-*S;b-#o4{R|p2NQ}Ov3 -z6$)zAi4}bA!Y|W8K7KIucmnD&mvhxElGHc}lSmQ=Otx3-o|fugusm%MF1Js$E5$~J -z!=K|~^4_v@#-xz_O;oZn8Z>|9b#dfRW*N%%i$Y!*V6y -zow;ox&wTFV5bFx=we$D3wKO1n594Ahm>C3`=aP5^DJYOeyxc9Al1Pv6`qbrvo3eU? -z!4QlOxz@Mbj^RB2#C^IUX@rz8V78yoLU8#0#kYX4uz38+st>*)tNh}#^&83*Uo>w) -zjFkPoQ0H1-1Vur=q(RnV+N`(5K(wJjRgUn&0kEH!_&8yu@;kPUbQ^jB^!b>F)sF_j-h4QGANnKh1)biKKt&nrWZ+ws>^*?lry^ -zm2U0jMHd2jiah>Qwm>V)xq~EiQdr6YFu(TfaVNrX83Al>e8cm60eR-)iCL=n -zo!`b@p(w=D`)b2Jf8WmjS|g+^ct33CAIOA?Xz@Q?B1Y@%_K4eb0Gjl9k}NSh3ge$* -z;&H*9ldFWG;xWCxuTH>IT&}Kd!Y2?t -z%y%uLQoq96B)*jG`StoRp4TD1c2}lxc30>G0!p8j)AHGmvj2Pz%}^`-7gy)mFN;Cn -z(mUHH%;K{M8f4%#=TY{jwo#_;8KMp#;`#Nya0pROm^pkV>kd?A2>sPR#7RLc{aK|CHiv1Sn-vx%IcVu$ad -z7o=Y-tNG|3fi1~sIdkp|Y%~+=iE@zMoMySuYS^<-$G(P4754z?q}5$ebxHodFnxtQF=cC1+l*MR{y+CE0ClgDZjXe$KxPNRe&-`W+(ano2rbK -zVkPC6GHeG!KP84?_JM5hMKmJ7DJDp4UM#_5aI36b8FwQ3bTy^%JI;IHqMIga88wcKy-7rC_r^~Oc{ -z1_0!QO7`7_T2^sPo5kuC^Ilz{0o1-f`h88>2y6Q{cxSBsv4p;nT}&0WDR#-PZ{DcweOaG2WlfWAdM;cws)13x`ze628QcH9ANP^ -zW{<{J#Bf1^AbhxkvT>Qdgxa~koX_Q`+7II?k+sAJ(co9}u~-Q+4lC5Il+5X4U(`$1 -zvFqUjZvh}t<%=mw5Z5Ouv#qp0UaGL>m;+ko>-|WqGwbkkz2W34A{IOD9cDVfj>0J< -zgYf;HP9QV-QX}a1ISc`bhN@haz(jtq`VS}7PCZo8{(yM(qAbg1TPO!N_-kzEXb_$- -zOY^A=W~?{9-bdNTo!tli=2NEqK)EQoSXhgh$4Wevkq<(4)&Xoq@+VX*CJO(!w${>; -zWVNxnJS9so|8z5X5;dJpUA6C#`Wzze2OLSP=2wXL1jWOGINMIm=axdsX -zY0>*olGTX~Wlkb}N9M;c-}37!I8j1i#iB2cN7pQ4=7^?&*4K&z{axh;n4hOFK53x|y63`{DPg>#xY+of8 -ztn97|oH5J1DNhv2^!b#w4wFXR7Ma8<&jiR?W!(j0ypmwXI%x}=z4G_lfA)Pn<8{ep -z{V836ymg| -zcdn;-vP89}>&%0V+kTJ*GE;(%2LcN*sh|q)r`dHETu_&}vJSngbjFPgYmc`ONikbEyJKGBL#@efXLNl)oJhvFbR|Yxy -zN%2G$m%6seFTG;xn_wfwF>j4cl4(jGg}|jku5WYe-b-0+To$|I^Luach}}J|jw^sT -z+C-{OE_d$@B}=Tg3bBz${L?BV#yH+zYU0uBR!%aC^PrtdZmn(|uMywnw$ejl+s?IL -zhK}^?dJKs~(eGzdj*->SgR#+m6OQbH1K%NLFAeCe-3JC?9$xSv<>v^F=W?tSh`*L^ -zVR4VlHzks_HHcdh%Gg6rh}3_bpJaVI$*0x>e@^MR6fZzF)%14Ma9n}Jb%8G|iI)88 -zY1-3?O>#2Se;AA@_A`R9-e({WR&CuzOQLlGVr3u;o8wkCLUpMP*!_J27FuI~KKJiNRCD{y`X3T^?|aB`Q;8xtYiq=&`=Uek2l#>oh< -zm#~g#!Jb?YgCEcDOZ)WvhrDv_0e{W#G`o02Q4E8Lweqd=?_o{T!{O(zN1VfRbtJpI -z{FfsZ=bYbT*Hw;Y<)`L`Z2pDwYo2lQ$^~D3I)ZY)-V#ClT>fHyC&>5wiXaJwU;i4^LbU{klFK~_WKu`rXo -ziBwdB&y|gvXL)25g7hE|jj5&>Q(RR;kvFya}Z6h0l -z9`V0na{uqpw$$7HZxX*R|1U)0$N!OdCjYk%w&#B?xh?fAIdbhs{%;Y*X!6pKczq0HT^la>CfAq-`&!Q!+t*3R-TD< -z5`ER=Kgaj)d}Yd{YJU&;&-gkT&_(i>Z*w}y_A+ewMz`nb=OO=m$v1n; -zS3VEr-F@UyUHd$a#R%kqZt^(7M5f>6x9eN_vuec&3wPIp(D0EnR(9KcV-C*(iRX_} -z){JsZtC+`@VXeZ}>py`^zj|iWT~ST&eqj0eGe`i2$;ME4fkd|MU+@pq^4Bi#YXL){ -z*G#_?E}+q(qz{lb)Xwjea%{#m?B2kN(=Du9)j)@P;IgK~I+Pv|?|#A=ATvx^zCX+(ZL^CMo)%Pw~0D=PiC{ -z+}Y{3kD)gyJN7OCm*7Imatnp~`N!p1?x?BQ#XTu_fz+C5v|lAoY?lLim2hyf|Nj;~ -zK91VyRMG9YKHPml>Uj>HAD(}7edYApNYCvFjccxI1#)GS9G~trWUU-XV8hVnux!{7 -zcKDVRu2;K1&{YrX?%c=A`WQBkJlA>n;Oa(GJ=y{F3goEs+-71_tzzV7ip!w((c;}& -z$Og-!)ajHHCt{$*nrjk4vta9dXafaGJU7tk>2x0y%k$?6cM1jSOJd0GpD^yq#=kik -zclo9&I`K(^!S&yo@c{snt8x*)h=Qn<5ss^b2vh%&5#<$-ovVj9sCt@L+$)v2PBEDQ -z>F;mfmz2ZhHy2>MK~wDCsG8#IsCbOj{YAMhCbvD#YbJspEu)@(aUIk4TJ5STLjlBT -zO}T_|sg0ODr}@DjkAQ5>Qh4Iw^#~B|p1o_rIKkmj%_MHSGIE&PAq%1IL$9hlY~o80 -zcI1+0bdnZ!;0XdfG|~)sir$CEpdGWq+>7EZ`YP-w{`2exFN`H)@VvYFooi=xk)(cG -z%dFPyA}05DkGz*SsZdW{t>09G{kfTNDg_>I@3!3Gr?&4P<-F`obak&p1de;OJj>%Q>u`wLn7_9ZgESXX2RrHk$1k|Q)adT#V< -zx`Xb5@7A++ehKfRc&A; -zHJ0=uWv*k{Ch57pJ}!Wqn)|Z9_o2{qT5E`CZy=X-xESs?G}_&3o3pi3C5jQX!xSht -z3kL;6RXgJM>wbEK)s65ITRWgsOOmrQJ&p43Z(qOJ1xtKrRN#F}E(;qP)zxd?Wrxz! -zBBR!RWN8uqyIOX+9DfCDsRip#R(_OABrxcPfz>Xfss}MrINY$VV`M}dTw-GA%@u&n -zV6y(+wsT4v-JH#cEtSsSer>mVJ6pZBT^5;KSVbws`S!Jw-LGTEW3KNlE;9otR+Z?o -zzPukFP*o2}HHaQTDu6>YbSY;DBIBYVX?viCV-*~^4s$l%_vQFWZWZ3h@(}k;t_E~L -z`i}g8Il+r&-LqeSKv<_wffvTN?g*RSSIfK$ouBT`2- -zTE67t{qpVWV(!j&B}Rb?%Db^C(T92emH3kSM+eicnzP%ppYpjeNmZz;)L>?{GfeNm -zR*30Oxr22@9X+_H)Z1MLMK5te$sj7{yv|Ba=J3b6=~M9bhGV)KZ_bt*q1gvs&^CCaW#(|$l3F@Grkfhfj%nZ;oAz! -zb@$e52sgD{aQ(f#PQfUU3WV}shT8Q-)d>}UB|TtBeQRw`g>Z_^l;vqW?RDrn*=JhS -zPV^|Ro#rJza$;FbGtj$Yg=bmv$mn?s|I&V-uR#ayLpC~yjN9#m8Yb|WikRq=9OJ03 -zm|4EaO?2H)oz#z(sLo=er&Eezg{)!EWX&>_*;dYm{C0{Lc+Cdo0*E#YvhCSc^8`{F -z0P6Jg=kV57_T?Up%CV4{!*^q6o{vPHnAtr^R8aV_O#V!ImGyEm*|HylJgMCrVUhY` -zXsVMznu9z7Oc-yCWl~{n$9^^@pc0Mn@O1y0v{+kE -zNNmbM;==BQ=%)dR0=yElh5NQwV8fVy=vC}ngpwolWhI{T%!1GR@3rS!bTq-W4i*@8S)#J}UlN6vPV~O10giS_ongA;w>aFR4@pkmJSozPIQCn -z7`l3)ZRs#UXyiC9?7D?tMZ>jRZ4;b(Mt1HaO)O1Zk%5q;ghLCLQl_;{P-yTy+8>(5 -z#*UVN2kehsq4Zr&Gxx(`Jo4zrj&5^OC+n4eXC}VN%lijF#!1Rpz_+Oy97)RWo5zcBg-3FZmIr%T;uYR9775Z%3<;v1s_GEv8najZ?$#6-a@QW -zc299-DswIR`NQ_?b%27e;f&il=~XKhr;;6646h!lo}140y@?@Rh1Ig5Z8mMk_rn1i -zNV_7JAg)ti@I#63&{;O&=d+|%1pfq-)x+H}JfQnRe|;jBu{C>Ed6iixPNrIa{){tS -zi_DLr{68-({Qt(>0OpD8O!Dj{#Mh -zeZ1v^WA~&Uap5&EW1sg5z`gX_fO&xUV7yu2H|@h<1Xs=kLD{!8&FIWlaV#-HdDVj^Vatx(1WFPy=RDi90J#;PTo -zJ7V>)iyd&k8czaGo?lFg49zR8o(Qb0sXsJ=%x@%X|UI9Q=Vdw2f=Q`oa2pv$=v -zjF_@Y0dZe@yYCz!1ME!nnbPk(h>ZCW^j}N=J+v2{$ -z791~*xCeE|ha9O}LWmd;#UckkN`^1&Xi2;|&a!X_2T7CiktH;l^Bl^gt?V7NFSeS&8NgP4+W<*^ -z)+Y-!!k1V)kYf8Oq-ajlM4Y6$)R0lV;_*Zi-oNU4Z;wBeZ}Tl#O<|Fc)~8!YkT;Q< -zvT_I)TeZ%;It+OiEF7fN(=}>6$z1YXnk=5^#rL#WW -z=6`@lCCj&mN3}apm6lp%3Uzeix-&pnv%ENJmx>eCCoHS3UbGnk{lVan7IUyFav-$< -z)wgO#3xZR@+q(Py_1oVN&P02m`6BYZ@7bo-yEvaD8)olq!{iM(;B5#7&6LaE^PaL@ -z(-)S+_v$&x_0S=*EE>=DjV^kO(@xJd}_gkF4`)A4>#kplJRCICV -zyTfOns7CJO05B8AVr}!#6%3C@_OGy(O-AD}hY366kX)KY;-vL%21zzUIokWFUe9!+ -z_0i5=sm_hGPl*8R*!;OfYqn7Phi>FUSlJZmcM20Lv#vHA!r&#$YO{ClmA4sfkDnB( -z&{-Fj2$E3$rK%_$J|!nH722$QzI+coyZHY7TiV+9xf~aHI2!Ce7uzE5n+15y8n4{W -z^fZXp-t*m0&u}`MoCJAsfS|p9;y~S39(*d*P9C^oU>N{bHY=WP`kuANYgPT-kP)j5 -z{(UuP?mk%8;r-D%pzl3GC;D{%Pb120B7CDfr!=2GO?K+T<`<^~=gy#&mNZ(nWrA4i^9;?>MI%PigvQ}ztb -z;lBK1N1Bbnw0?fq1a)1lKlQ3)B>&k1n#?_+K2`Nkn`qiHzYcKC>>GdIPxjt3#dSVqOW -z&o_IDeboF4D@gF0AxIBclUQOV^^h(?(Z#|`=W}fFg_#h(xwG1r*l>wboETL$wov2C -zn8w!8`7TqVz=T0pZ=OptB2*0CB4LO_ -z9hfRS$m?i!ctFvsvc#pT*v`Gv_7P7Z9;SKuw4Fr;oc+_Ws*b@ovKz?-9$x4G`z&G$ -z^L$#PzqfPAw!Gf03q(vOggH`uB0h(@%z}!)nmS#WBdxU}oYa%zv(CMv;$ak+lxMuR -z)?nuI&&vC`1xK|vM$c^Bv1DZ^JtYoZu~q})Ow=k7Ls<4A8K{NV>wcun%EwdY3p|{G -z1WM)?YL+yPaAC=!Za#*>K>RsZb&#lDBLFdD@oqI~8LB%f1G$e<<^W~Og72*o-Ne}g -zzJ~F>14+s71E*N0j|nZ#{k2WhG2u~w8r0P-WDb_;LzbMZv1|N%0aQjV -zbkO-G9zRgk+TY-W7QDzCbd>YO0oNe$8D%?9%$B4_mIazLYWek+{SlLYc>0N*cwxtQ -zSe3OwZ)x!Px$YG$U0T=Evt!(lTc2Ap@QG`ZDI#$Yj8SJ&j90WSi?gZOGeKx-cv?;vmLG>kVc>LLiho0YhUFC@Hr>-bW^qi8&RXCj;)#_FS?aK*b+m7wcsY-y46uF}k(&s}R1E{9wlzbGAs#;{_87rLL -zSd2@A^YCeWWEW{)$1}0y$mEpyx`IXW^XybErhvq2(%<#RshmOBaPUR-8a_=ZTun)i -z3l8bFylRdxPa#I9cW4_vfec5lqPFKb!h~4)=yY+vOt>N5%*{a&(0h_gg?1e@?9k-} -z4R0CZXb(xoMVz(#qxM*kk*W4#jQ172Tzn{>S5-SrL#ii4@?pt69G}NKJmROb)nNjL -z;yk&=UEVp=ODXu9_*o}rm(%X`nU7HE_6FSWe6>0f=C;(4d|5Fv)If{vbCxi{fSrCD -zoa25V>)O?Kgh~98LK}snA(IDS;-lo6X*i -z3O7?4mao3R_* -zTyAI>S_HT{-P4mE10YAoX%t6LcGUe8LBniL+H^qsrpy#`<6RbzQ^tI+G6Yi)2e#PH -zFiXUjx&|)z$JtUG;Ql|Gff`|D4_Bd_KoTym>8gn)gAP`)!}2j<1k2g^&)#C?A8fAv -zWK-NqWB`uwzrTL*I>bHk#h(ld=fyOMWvnv~i!PPDzKQ?!Vk=Q8ctV+|;EU5$R37;c -zNR6KKBN890J#=~G*H706>VO7Z$J=?!yJ^>by1glk)n3=3B#GgW!{ox2y%LTLjYbemm9|Gqh3hm-#BUBXj28 -zj3kzAUXduUi|=2BqugX9Tw20u#;^$f{fIjPr>8o)1wVW?g=GYY^mQ*rfbwaA+2H0}w_M_MHId{z+iEcL?aOB?e+y2Q`Z9ty -zHfXEa<$O19Pr|T@5)&-(Rv8++%nQ9?}c`B4t? -z@UQXtvWUhx6>I}&pIF;pO4u<8#Qxj&y`x2O4oecrOP4N?F?r0}=4(S9tQ%(IB2))EU)a8Z2 -zzK#c@B48#X3C*{e!nVF)nS_3kJG -zo({Y|$3t@`nQ6(lg7`jy2k2`*ZKZmzn -z7THY>*?=lxsDkW}Z{fZ_!k4c9(^QLotpY$GOFrc*k?WYErzg*O)3JYVDZYUYE1w5Q -zF``haeA6c!*=km;-a#t^-P{-xHd5?RSuO^FE@oN}AqKA`65+{q8Wa2j6{$QW03QzG -z54<()pB;jU1*0!&-v -zns?&R(2XeT@e(_7yE^_5>SEwR;R11F3>ZqL!-<2KOznnpOpqi(sy8h-H1@znbhHLi -zevYK^6%Nl(LWLwJJN|jQe6x0I>chK -zXOOup8_cl%8Sqx*pL}c%Nosd=6zo^~7AUoXGX6&AcN$xOHfUzBbaWxegQ||SJkvY6 -z8aabet80&T&EIa7^2=X~qj=l-alCE2gsa<^wk6dvq8+!6CnoJ#yi*rpka?pGf%cjO -zX#*i8-YePuWpd{1)Orsr`pMW(@ym8&V>0aDbc6^gT9j0m4Kdi_aG(U-vi;9-bayeI -z60l|nE0`s_7luUfh^jDiBJ)qHpJ4vCXl$X@e7Sx9Ohj$i>cxaauUsWG*g%tu`s7<{ -zbt`}o(SDNvrI}v1rn6hj0{V$*SKr?<-Fa2wsZ+{WhN- -z92&=ghDXg1C^Vhk0O2Fi<#?nj>|^n4+HL*L`HAg#R0;-LMi062x)xVchr4UvNnGbW -zsP{J9xNwc9LmYsHs;Q|B?i%_~I8UrN^kLPerLBLcvqrX^TN~A7=$7`M9e9CDmYcqj -zS<%hLTX+OeQ)G+{(tRaI6IW1R+-R=Nc7251YUK;KO^XZKhTAGw! -zelo^w%4NQz?=v?c~Twr+fEWR+B&Kf94*E-Cg7`m5w#xukq>CM*nccK;PB -zC~l*wPAL%(7nF<;rk*=)aQhM9-^Ey)ENkl{Qh<{;v3i(%RQ1(9HXCEMr&fbgE{Yp& -zyA38!&S>=Q6mWoRzhXz^!A2(Du!=&e0rTlO5#A_1ob1n+asJ_$`^RXcrLs0sWm?WO -z5B*N#wBFmH>UaG4fLew)^rtq0L@>GRRn_K%j%t>xeXM;LYk;QKvM*$3Yw{e2V@Efm -z11q*d+@ScS<+*Kri$S`^fBBY99B@MSHM3I%$!j{!>V1^+@+>|%*CZ8%hh?2l%n3+$v1x&c@lM+6~yA -zg-R^?BQ!ZLt5z^=9iSWglHrHQnwl`F;?gB73dVn4_1sMg)lM!w<#^MzH}v4MM#kXy -z&sU$C%XT=esTtG?Fye{*=G=e4Ah$$i7IlA9_Lo%_yB-7B;p~hWZPR5-JY8GcqCu-< -zvS*V}QGH$*;67~!MT|#=R(oiJ?6zJs#rh@v&E%2+cd_={jy*4{rHjwgsRnL79bY?8 -zo$Ui-rsmKuGZ3(|&bRp*+>N4NWk2$MYTb4Upcy>yB|RBz77JLJ;4O-=LSdf-MSAc< -z;wmHC-etsZ=vC5rfx!2&9;0hS%(CjVFZzA4mP%}`G)L?-V#!4-jIm0XG_)GUdQYCY!iw9YAuf1ca`SVeCx$8k1{lX-_^cK -z<+@y!`pLfXtkNz+b0=!t0jW*J>>W<{7Vqu)b5A=Ws{%-&%24+ou8!B=t9Yca;=)cU -zG;Vuf5l+bJcDe%Flleo!b{VL~0akJgxDY>DV8eFzk~VcCZpv4mY@Hwyx?aEze?jk3 -z^1}MKarn8m9WfU6Iqdj12pM -z%mSuXIY$%25Wzt;_l1((uS;2GA^@%l$`5q+hl}#k8(FVD9`D3XGJCaSW*svsu}F%w`^<(YkhY;!=sc0qe@m5TKtLioVh+v7}G3 -zM%dE;OF*>0l}y|lan2L7qCt{zAX4ALiZXAt_}!8&!`S@RT_!*ml-L6aciGTA -zleiDMc6F0_C%A9B8BOn4g-q-?7F;D_nMuX%BzO}R167r$+zz8(Dz+!cQ5>Wu%aE$y -zU)P`CzU9$pLOeIm$f%-Qo(ccH^x*+pR0S69-*J*a!sdVk-Nkky261<49p6-%eVkQV -zgU_2SCi-NWrcGnIBBhc{`A4x4Qe{A!q_t~Pp2hb>ZIHX-K#QbD+uu=GceawzPSRb~7Dn1F{4T#KpM_1PRE&afQY@BIaQ$ -zn1cwp;yOkjkuCpe%lq8+xSZ}-f^}?Uo{M?j0QX-(MtqfhfI-S$eYiOmlXFXyegr+b -z%dq~qg?A(0L^|P;nwpq?Sl=%htURwj{mU#fRJ#=;C{eHg!DIwhvFjvqhmA_i2QdAh -zCIiFJmd0|up{O$hkb9ZLmR_@9kAz%k@yX!QXY*bk&Vm^%fa5F|Ps%l><~Yyd$F-Sk -zjLho*H(y=T5pIuGN5nf#mjV%^xFneiH>TKzQg6H%C8H;$ug7FW1i~cHCVpHzP!T_&W=a(yJwBhQ5C;M&p*Izb}XbkcCm~T7%KS&f=U?)BWYB*Q|!CT3k -z!Y#<|6cY)Vsx!bB^SwxI{kkumoUrDsu -zSt*|F!>qaH4U&a|mbrvL13u)wau}es@!-sw?@;Koqb;+?O0#T5#<0*4b8c-%s<`Zn817PH4+Xc1{vm_tpjE$&GBkm#mW!263xP -zB0!<&NIBHZ85~Aqzl8^X}xjZ4l#YCSA(|OM^<9S=B){jo1}CGO6Rb5I^cLX;DL- -z(Y{efs{aXidpW2ic?!H~%61pd%yNrevc*vKekQS&VTVxKe`vlnb)q1LD -zrsDTeU#s%-n+#3*e$N=P@n-(-e}COj|1|ToY=*Ex1M8#odglREYIoXM_Sv5ORvt9< -zCun}`(j@vSv=tp?k;MPDga8FetP21n(*78l$VL^bBak^hx;@5J^hjU9;u=!R?z#lnx_k@ -z^x`Ndl9aAbjlg2o8}o#x(91NG+4&YgFJv40a_>L?kk}D13b#e)vgUdIFu!J`(SvkzuzxQ95oh8d=v*={dx*m=) -z+U2d&{$-9jA -z{744iA2gvWcMo7s7ZdI67{UuklzJoMdPFW;XfgRs;YXtbj>E4tCM!bf`33D59ikX?UbO@aizWCMVlx@{tS?$m}N7`Bi_)=Z% -ze}jHV9IWM#A=P;Fb7-1$AF}3tx%<;2Ii78dZ!svnQwy?Mc59c11l3_(#?y -z%1EmOYe4*>ly`kJ@l$fXLzjEroU~FIEfV9FxGSCV6a^$^7iUKTjol^J$Hgs~TWTp- -zMeWh1s4M{^GK_|1kiM5#AUY>bAtsa5zC;o=rrC#(S%~21A#LjM#D9UcLdCh>x2-_d -zgPmc$Vbjs)zF+$})q0xnyv~S!GHVtgfntW!6T}V$u9jSnK`q%ivhWn#pyvcO^XNK3 -zhPGuU#bp&_<7C9q+M53U^Y1ggS9+Di2IMQ?6_Znq#{7aGWydek#hs2L-=Qb6`YWgE -zIsIftD*Mw9U$2nh@i(W|#!ew&>vW9n0M=X|1!WOkHS$s|`sNK|C`_Wcrw)r)Z?mA`&63!`x)oLxWb7C64U~WJf@ry?7Y0j+o -z-cgk#Bf+FM0A1aR+p#9<-#X}AZBZ@YYPGpWs;pa%dsZMMbI$$#o=Trpt>Bnv_wMC? -zlN}=qOHos}U+p)@t6WHp?YUX>5+&(45PT`@ZMvETZcg2j%LBQYA}@9PlV22; -z!Gky1U+;;pHgk?CiINr|h?k{~?Phek6o8-%w9W1*P6eyo*3AuhHBd?tD;UXfV&NZ} -zY;|Moz+cbyh -z|KYO8Uf3r2cR#t(R6O?S9tT|uA1T|`?eaan@hhN~b>{|%v@xf5nuvVY0RyH(vwJy8 -zfpKMFcaqp1eo>psv-^P74w>f#Q>1dQn?CsbC{X+T!`R1dK90B#W^l=w%qmhwq+B7g -z1)iVp_)5MwP^OtByhTX3hx*T59Ky*J;J)9-&AJHmg1#@<*th{I8H!3K=#$&8?LbZx -z>T#znOd@_zE8}khN%Z2?}kpO -z`exe8CxyifK)t}%*O>|#Zu)Xs*{4L4(Swf15drVovIMS^P-ZzOhWR@98SD)IyFMev -zSvSj8S!_YkV2U=ZV``62?MOiRif>o;ZclG|GuIc_wWv#G2!(1WpfEaPrveuV>iF%tCArc5)eOb|gTOItzH=B!Q^S*tR -z!IR^O3BS8!Xl>%_o-atgzsETqEX&!mr(c0skpD5(_Jv|0*^5KLJ~mcQ?IjWn9-7dL -zZTFE=K3fH>vi7ZL=4_fNgr&F0l3|6XK{Db^LOVUT4)*uE1{=%!-??rKkLBJL8{S_i -z?U!}?xBDf3+CId-6P;_cddqfm@n7mr`?#v|0(ayyW1kq!Jo&nBzrL1x?T=qyjZ{_q -zh3ZK9y;%s^_IU2E^5fz<%X`r{X)^hEKw0EMEc -zwm>7*SzE5EXq4A`{qeW0tH+CU>l-`C3fDs1(yWa|1+z54k!#u>$$t*jgqs~a&!nfK -zx~)ea;`SV2;XW}NLHzrBmosC{pjZN}$(^?IhKE3t2D!PGoh1LarDDVDJ1KG7)jDsVS>{}I@ -zq3s~OX~yjaHcr?yZvfS6V=UK7-22b&7lHC|?2YMUD;|qDGYkEumA(F8-CjLno>%Rl6Ghymd6n?O&gCRtDwzdy!h!@oUda?Pz$%( -zh`g}EN8qt1bld2cWUN)e#S9=sTH==YX5>M~<^ZD1fP}J7TQV%|U8xGYtVHPZXkG0O -zS%P7*F~WaT448hun(T2Fb0TcCy51StU%?o{zP+lqCNP=Z^ba1O@32)2j{#K$B_8z$ -ziHLo^rEEQ)OTAZB--43CZU@brHM(PUON7dUL@@8^5wUy{=DGFG@EzWsOBxgj!Et1c -z-DYH9^v9JM%Om*58z>@lwh?) -z>~O=8n3(rx%4+Cb+i!{d2652=;iz1o#gI@4qYzn_-9>fR6Ux_D8ZJ!lG3A9}1lAf2 -z-426?i-h_5i0|Zs$c6LqS-+U|86xnJ0tC=Q@T#}^)le%Kdh=N#pa|a@wS}0kY$` -zyj#NZDM4(gJ+X~GXdD%K=<=mh`ETyFXbI%IC+v@G96;9B<@x{(nxW#&)sy)wH@oC+ -zaUc{jo7A*VNR3|s(VxWdqs8xUT!W`ZH(F;;wtf5X`&)H;c|=StFrwQ1>EE2so%Y*S6D^DL$R7``zIe -z5KKoewO5eA;kkGkme8ZvF&$#HPauwq%QjO|!%!2?WQz&x?a7LabvrEa_|hQ^IFQ4c -z4#Xa5zgQ@MX5)ZS(}O>}$D<-eG@&h3xpBxQp8;t%2tQwvmw|?K>?vR}`ee~N-&0{V -zfY-jm?p_1Zckch`dK(;3EN=O|Z#TE<>b(X+j|>eW-?f}ttaeX|xCgq=sZghXCJ$Oc -zuwct;Z9*y~MJkE{349pxN4zS{H-RIxKpGdl0|bm>rx+#FPkT$CQ(<&7$$dfpi&(cK -zwROm($Mcj>r868F<%8D#y|e`85kM4TppvK!=3`|`ax$qDO-SiHoWJ#q1Vl8vZCQmP -zc(k;15zug-N8Thc*uq(&wmH`b_96*wNLb}lLaruuX>(#-OYy^c)*ITaB_Z -zT}symGOh5Utm|OW^6PLZ`R#I>cXC!ldkLj(LI*2$XXY6+%=(UAk4PA@+9vN+~N!HzGU7O3)(cuA$Frf{p| -zfX7;;-fE;~nBsWPndwJB6Z?9j2WeAnsKs@@7fX8DZ89w2G!Hw9e3{h;2sgA)JEJpN -z;+8?Yi9Nd{IIRpi03{(ckI9cfWpHw#%U~iV4a@yXB3g$ybS-y$+^rga^j&ORt=<#` -zCkX`C=?c`o`&Ke9$^GE|i5gika5tF-x3maCJ%YO$EZ!ry%3|@!_v*W*H#9{&b-0sJD>j&geaFL*0>x_tJZ>r7kqX&d -zeU?q429Uw$RKbFqQ>+cGBKft$@}?lZ3lLO8pCd2X+HMi?d;;YyVFr%#_Rnd9q9!L; -zfBLwbS}}>vEnK$@N-n%A{qu>2@Flr|3+xSkmoj$o8Y<794`jFqOLo8|xH{Hf+YReC -zIaZ-s(YLE{z~a*6PZZmT1s3<_7&6wH;SkCGJdeNe|H*G(7L}jObD4$!nWcO0yS+Fp -zSYZjK96nYM+q*6?YKZ!TW_PVN_D08?2eW)OI6b24#>>*U>UKnApw2IF&ciZ$$aa;R -z{LqMj5rvxieJdv6Es|;pO|(t&NYFa;8ZhGuZ)KN_`9BF>|L7k94SY)zJwZ5Z9`PrG -z51o{zRV~OhcA0Fu0;&h#cG(ObF1yWC>J>dANW0n9$>;!!{hX-!<1UHaJRDmw(cnI> -zV@@N0+9|CR@QUC1aw2+CUIq>s&AYGqb}g3^6Eoa7Y(t-A1DW^1pCwXP;uDD{Au-Y| -zK7FJrATRqcc{&wgQ@XG9$oXT+2*HY& -z&4HeG>*c~5%)x_0_J%4FXnQt9l}-^qNEkbY2Jma%0^G0-Oq?a@3Y>;0mR{e)jf<0X^Qv4SPYLnRN2@i6M -zY4Ix=rNer~r^O=@x7u@bBe0h;Xl`Y(RAhXMZ`cZFE0*uZ5|S@dnlln>3^I-KRv(s| -z40tvc^sSj%EMigmp}3eJ_QG;>F(qx-b)52`WFcq=EGW4*i1&Dvz1z>t_F`10%4IEP -zYt1BJAoc2Dzl3Uv>^!#=9*20 -zSe@${pFZ0*80fPt12CEd%jU(|(qygX<|EmSow@yEpBP5kie;+7Lu6Y2*p;ou2ojJ| -zNsr*JeJ0q}JtTY}?LbJ2w`oc|JTqV#hR$)T^z9%nBP)5efdS7k!n$>cadO4%7#nPd -zAnD4*32l!Rn^ibNs=tktVX@~TG@t^ACAH-AxQuM5?2Tnl5^ABzs%Pdj-LAHxVsk3K -zRdFQ?R;gNqBwykVs+qNRa^@5bujLy#(|~$CIoos9=NhlQ3z5lONysS)pR>Zv8;I-L -ze{2Jl|AHS9JsZ|7wC-0BP8IJIdhTn9t^OF|mO^YEXhFl~Nq-0#rONHrdqe%|7UcUj -zyGW3ii~^b0#Ze170eB0l~f*en6?~ -z}-h1keCOlP5B(`sLt -z$sCbBd*1pQz54!I*QPoJTJ?gGWw5CX^Me+*18G`gott;GoGTSR-0kU4{9pz?IWLxL~K>GoAR1xIUBBdClhg -zy4SV4u(!L0xH|tDV8YEjLwLX<5Bc?ffu>uUg{Ao*6LZT?w1JF#g}nx;Uaj#TAK~-E -z_y~{_sCU8x{o(42MBPtZMsrO2d)vMn356ZybA5NY_0+oE`IlST -zDbBD&r;y@uK>tYsrN~a^-EZIoXdSnMa>1G?>u^75%#{uBbv)}x=YJ-~PE1bf^-(%j -z7&q+;<#^$FFLCo`Mo11G|9pYK1@w1|+d -z51qd@s>lrRuyYiP=Fgie9of86uM$cqA8p$7WrCbI*88WJLi7_W95SsY?;ZR3w4Rlh -zNwSKuVUE~cg6$!XeuZuvJ*Q6sR(zz`@k*|{H<{4Zqo;oDc{ue!5$Zx-_I>V~f)J(s -z&tC}i3NA97MyLv!Pj~nCISlQ4 -zzb@^&U-_U766MqthjzR7nQNe=^} -z{G!LVuLj@Qw|JTm)5lo5^|kbhzl2*FZ;sx*5oN`qpe?{mO?Jye}OET-TShoo_)s_z$BTQb<`kv&eU7(mE6a~kjxmcpF8JgeLNU!ES8 -z%Rlyqy2vhc$_pSlPx)9`U&r(S0kHcDk9376i#!c~{t5E^LcLD>=(2BAsc%EocgGi? -zVP7vWw0|B?Xmu?B7`JJc&^%7+m$2!dTA46Z>toKlsn|cYJ4`4Djsdkr3jdnjGl??8@Y3w00)@U%_dyKTd^_J^)BbsDMsnAnZOlP3 -z$xgua)g8ez+5y$BbW5z3h_9$dA_pCmob2{%|Cm~t6-4+ -zpHLS2Ujb3qC-Fbatm?HOg%L -zg)Dj5Bg|Jsro8$PFIA-}7}#AY -zll$j=IaU_ -zMELgm>woZ0Bh!qeO%h|=dF4QbQu7YajQ!%Iq19)CBiUn+Nrg*@66=B{D_xuz7~E-m -zAj-q>+8$9wzxpUvRF%ijVdIx6fd>_R|K@KOjuzZVcqjhD??3;(DEA}Y0fO%EI~`ZE -z7yY|T)-CSui+Bh-FUq67paY2Rx4TXcK!jv=zxVbmt56+ECW;T+I1dyWtsSGyOVBHO -z!dPLdc3YGm^!I-4^*X~HisANn?!ArH9NypgW_y>B>`8m))aPuFUv1)}>J4c;jL$8$ -zYyY95#-2!&(4XJuK{q*T1AV~W=+r{rb$anKnJ{g_RgcxmH~P^IOwyCIX!sbKcs)IQ -z*s1zRHR7POeLKn1DG2|8v`CUJ_vS -zjrm}9AtZIj3nh1=KSN?&Ju}t$E=2p-(8%qLY86(kxm~I@ZTTvg&a1o1Iy0ooQ!aj~ -zKLTu8`n&2S%oLCE-nX%mSnVAkhhUVCELfZ_6z%^|3q;ZKE&e40Ld08``W{r*g$O+Qgw|}063tea?T`> -zlkd=N!^B5QT9(iZpKyMj%f)R2sZBi`6$tuew$l3A{^zT2h!LZZTfwEciG4Bczv_ofj)kH -zH+2J-AIL(z@EG(BKEf?L@D$0vgN#k81i?70sg0@~rckHGtS?PW$c?g7V(PJQl7M)> -zE}H_4W(_K~9UIbkO+D}_Lgb8Z~gpzb%Z9;yGKd; -zA%iV9a0g^Y8*|a(po6RjGjyw54l$$3u&e!X5$AXMaeefg1!@Lpo& -zv8N;5ccjNK3xb#JdvJy1ex&^&!xg@*$*kL=*&lnvAK(5B1`1UdjE3=2umDh`LhED -zKKxqw8{N{^E9tWoHKZdo5=~^)@O%HZj|_jY(P-Jt5ks1zx*7(%gK)4F8vaON`vEO& -zY+vmfx;~O)&iSV!XhLl=i(944h}M%xg4N87*hBIv2|-Z$U^$A`-nUllvqUaqVd}sc -ze2y~#Fc!~Y!fi{y4WWWB^#}MySz5zxRueF(Ck5hG_gJ)*$ddyw{V!&kyN!WaaxQRG69PFC{$8G_N=11DFVnqEJHswR6@AT#V@uz#AZKAG5r(RKl -z4t#t?QBcPKgrAO^m@msgp9}>beeVd(cUu4-Q+WHbhd<;tgJZ6#lO21cynQ=7 -zCn+z&9f;n;Urty~yImXgH}D(=>dHjqIIUwL;t9NE&oXDNQV-< -z+rEh8K*<@uf>P02VjxBzy+u%==QyHz!AhGkI@B<`0bceH|Ef8XS{wE^8y77yBp?`X -zKrHHJOlWcj1YZ(0w@Z3nC`BuvC)M!7R6wiyb%oyW!8UpChH#;Q#PEQsA{AG*JJoZKl+t*+dC}=HcaaF$PhI(;fkqs32u$7T<=tP -zCWyt1+JA~@GnDJTx9x{rrL3&Ws1{E -zr2d29ad*1_14v -zE+bScy5U>k<=7=?Q`czp!GfFwbbx{?rAUkP!*B{lzW>O7=N9n_Gk2{9kIvjbeZ13)q<`|bdO_R51986C3{yCQwHtCOJw}Jk!uM_Sw4XR@sHvr?7 -z_)KUvx9v8H#I4`dn*j?T@-r6@E)KonH3G{#ygKG9fb>NC_*@|=eX5Lh`&K!>3;K7& -zv0(}cUj|4(8FwXa4^=saRaz_>dW~k>DRTvR3@cEy)B!>ERAU1yNCrnt1Fjzu1BzqF -zB%?T1RD(138EHraN~G88c;N=}2NM>WlPU&L#9u9{QT -zx1LL^WqJF1Vt=3Fy51wNg+Db%vLALPVS)Q7PO9It9O!YyHQjOV_@Q1R)82Zr0W2_j -zra6L7%+7k(-(P3@ch!HX!hYD_K16Cvn4ISHK@wZ`yrKSR*NKN~??@^YgN|V~n&>{K -zdgId$Ezd;%SR!N!!>_MjiQz>`9DwUC$X`>t?!{=x)0dDz2S_e6%F^?z(Wj`+H_j#F -zxdlA|1`w`r)oY%b)hmjPq}eFDP;7YELK*@u5yg+3HHQ-l48ckujX0bPM(vM>{n566 -zlw^Smf%066MaOFT_G^@BFK>orkBzD=Lj0L0+?EUnk-vxb<0EJ9+^I`nZ1XqQ7IWYT -z@cO?)#I-G=UJ6m44BT -z#ovEjcK|T*x0dE%-R1IZ<>`#*BhoTo13JT9HY)P>=lE -z6k3GyeM%Stsa(c*@OiPB%-2hb0Opl42>Ep4@ITWF70_}v1f(|r!8@Pf*>fPp*eyF2 -zyfdkQE`gB~dlyDmjNyeMSV9iJ=+AS?q%T$6N6HZCVK(*)b-h0b3FcK9p-Ap5gVSxx -zo-8x=OKchdui0X{cs?5CjDu~*ZIX_l3~!U$L1b)JC+ed@JEp90c&GEP5R+KhAbxYt -zf0elcPNgOF#?I{)fqfkkI|wMVrci{yVV*NF+ckzHJb~Pq>@tQu_-7BZ_Vb>TI^>{Z -z*D)c}OLAYXkzepDLvpX~7Z)nTI6w^jL~JL^WgWz=$QK9Y&Eh3|X(Z)3@1?oQ-GL)s -zzF~1OsTa^!sy`q)R1RsE(S&jG+Q5dxUY2P63hX{PWW3nDu3wiBcPTp0C`d`6>7B%* -z`lTBxS$m%XA#PsTm}e -zCKKq2<%Nt||I*L-9r28q)&lR&wvzkiiwkj}L{s#b?`wga=BGyk^i}1ZT-71N)p{2$ -z=tWTDar!KXmQ2Sp3o_Lti<{eCteQMD{gSwJDetT&+93=CS)bvMJrc|q-jd~_behLJ -zVCMJviyVGNn{K5yxrXc~hiAPqajm(3cC7za=cH1%4l;oi1WHpT>gvZ0USct{z@ -znipf42N6F=3Ml-(64Ien%Dx~E9Y4SK%}1fMj9$`9k{BmEJn@sE@B1wt#bhKg@db-< -zv~K{v)?1+wkPf{>$P&qvrr)n$1PZb$cAKrLjqj9@Z|YPQw*whinXCF$XaSbngXUM+ -z!leTYkl8)UZR&B>`#uaH`b|x0-KV&$lxm3w2ABaQF%6 -z-cZfZyzI@!nG^Qs$7z7q -zy%IaI?OQqUO}&49ra0H>r{Y)DwWbQqnL~9BU8w9|`9rPptU|YKWhK#+R -zc8rk#QQ0{qgeY!sY}kG -zr08Cxg2p7Cl)EK-7I)*fO4 -zL7uW4faV~NsXHMG!Vg?gzVRqgYvv!G-~7VyLFE;JF;*e@E)N33wa9WlQ2NS92l@2v -zqxkSDcU6*6Kg5NWxJTB!8PH}QA^aLU5ACe){SFMe#0=BjbEf+|kZV~#zs&n!rm&TV -z0oaf#Fxls8*%4Jr|FR$MLo_Mz}Z^-j5iOmG?b~&BePH1kC -z-W^ffV{Qw-V?3tYpg^_E`2Luag8=@L?cvh`y1Eiv71QRy$Vwhj8N0RbGa$o{wi#;s -zo#w$WNR!B-$foxB-}Cm^Q@I+iZ&RGnf3Zo#W6_0dj-96r46T0dfdl(9VBO%1tlYtQ -zwx=+Rq+cskLnH<+#u*7m1Ap7GmTuUmYq6!nplfq7WR2XFq`P;SqJ-_mcRPq5$_`Zg -zdiq(}58_xjk5h!&Ub#l)3-rak^dZrQH*d+ePqX9MHw4z7fC=~oGQjPk^LX0t5M$&# -zv|mY3#^%%WZ&V$aufhJmF{oJ6PcYR#Z8{JQ(N#z?{(d++AJ4cAcU$F3%EpUK7F$;p?gGN4D0aA)G&VkPS*;N$go=Xp|x%i9^aheBo2Q(38ASUOA)3P$Dm|W@rQG8!HHynuz8+Y`MVkvGz*54LEnA -z8ii~p{z6_K-8om&g65}JzyigD^$B|c1k|wWCiLyMLU;&s$A+JnwBmqUH@U5vf<0Tf -z#>vG%@t)~MwG>7G^ElCzsT+jCctpfStX>mquB%J#CFo(UYf@bB&G|-t4WhxHvWlxV -zNem2!7owlf4zhB&pPd;sS6Aq7{~4`PDTf($`IbPtm%XSWyXAwh?tT<6f*V_Ww@rM -zST+Ntjfc&kO+kA|*?t6Z_$s{~+-J?43tv{ShjZ{A@8V^Uco&l@gjJc9 -z2JvB-K7d#okRp*N>!!P*Jd1g~eC*?8X*r9U7SZ^QMMuL$!s~E^roXb2M5o-=x=MLR -zjopCXDX38_AA&|%!OE3lTkzC~%U#=}>H6&=rr`qkL!hFMes_|y@hE^^+Ac4FPKegI -zEBA-2@DaQ{r*inP?YOb=&m;=MMB=jy$it4k{71HTTODB$s~9Rze8Y%>I8-V86vk|s -z#6`T$LQP@n3iv@#wp`-80T|lVbGJmA=jES2J0yBn6P>>Oeta0} -zEiUBvcO|3!k!nTgUz-YGD-2{`XSxmXV`P4Lu3;u~p(g|zoW`%V$`>xjZ4w84hpjnL -zQNc;b&i}L!wOFl -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 -z7~pr7*)|ne`2QJW$ -z{WP8mC7L6^LJulb4C`YM3Ct|qhp(Nd1bX-OSbE311Y{gnZJx6per)uWBA>iB(i$=W -z6ZL^^y?hdyfOMR)VI*un1f$>7tXpd_^^p%g1zS_9yTceA-QDSY&&ej^UHlk0BsQRdaB -z$*t2uR)YMu?kC5pSdJsp=Rx`|b;Lbdf;N&X!X6hZpHeS}KBYsF5I$E2(_gpN=mB(o -zjuTk<+V$jCnA2SVT}Q%?2CvG40ERk!ualYOX7HzIUdmxLOLS(kvU}3>XR)>4LgmC_ -zvNgALi_NfTVBK{vNn<+#M?C_cC8M4;1Gpwr@dgS8V_{U$yP6JeR)6y -z(N68V`}f#*;q9S!E+t3}khG-08xVe+#UP`yV}Tbvq4mO_Z{L3~Heh+{r^8ldn|kk4 -z2jHJ+hs4F@`=!X_8c|vQ(TX|gJyF7OPS#Yd9wR-?>FCq^U(D!RRC5LQj2?2N+ -z8>0JeZN{WBzE?n%SG-{Ou{Z!MC{N$Zp--{d0+;00+oBb>>bq~a5N%j9))hzOX0XL% -z@KJm1mmxyZ-FEGL1|e|UoZ)w0idIdQuXHVe5Hq{;h``!{qz9f5vdYLxDNRj!ym+uA -z0q&O~HegW{xQB$fkf*a?o^6d&Ny(VJlUyvHx8IuBuG7X91@_f45S1&XT8sAG+a0~j -zk{a%orBTqD#7RG^cz9xfK=FQJHjOWCDaxj$4A5?%saDg|UKk9e1xMgxnO;{60hxw% -zZ^Z)9MVp;M#yo)hDG!%pcfs?^Y*4}GJ@$=w`gwcY`WXzMeuDt}$!@av>IvI**{ft8 -zQIOkGLHPvlwE^h3I`rOhHcvw4CSFrj5D50uI`v(WnEeEF7l)))bwW>@wu3{Vw`byw -zW`;vdKLUvqDlc)1RY+>ywxQD-&uMFU+_y(?S_taz4F~&q&z7tQGEXLax_R9;)FW<+ -zcgpNl8Vd#wi!TafV^I4pP}{mx&V>hYrw~xauIU$j^54FGvwKIm|LHW!i~D6JJhv)8?g+YN4Z7gdrlYn(_*?w96*QQs-6<21rR%0TsTanX`s5 -zhNPVce%gN0hKfX{jzsRFq|v2cs4kA~r$zC2k^rSaNqpP<0^ykzIu}Iv(0OMhud`0~ -zacFAOkJ9UH#5<@UF%}%q-#*3M4AH^NYJ;g#pp}mJWO0I>JGpTtfjPyCGuaXGry&hq -z$ZF#>ND|6J*|&BgE|^yVLLEa>$b4_&oKvH2O<;_4-NCulT-xV^-h3_Q5+nlz0d!qb6A=!xidEV@K6589<csQ2ZyV<=@wLh{X>2`ll9uiz{XS{-I%KcT`7 -z&B2LC`0IcMy1eiMPp5N~OCc~ZqIT4KitZVea&x7<@ZI7`Kct~FlV=F75YLF6DU0bz -zTj-${Np{boR?*6E5|zqg4(Q$4_R-?FcDq>ge{t05f6+-90JFQI5mh@A@>0R}q((K_ -z3MLFaWq^WD1qQ?w@NLLs?8cssTmfYJ(9~>M1DVVcNdfz_C;*jRcI|d|{xCJI`{-5s -zN<#GmuAsXJdX{qPAjUE%nR_J2W;czp)us+Yq$d=*N*~UrD>|jom6MU(^wd40)e$cc -z#JD80h>)?#JtT6Y5g0e`O(JLwm*;1I=Qt38a)Kwwy1gXmwp@YiZ3>mu$&EyXI1{>W -zBBje9HoQq)NUUb$8m78u -zVJs7}v1u8{J#{9d)wuzTy0j<6yJ!tFq0@PElI&M~l7<_Pt5v#BC>W6a<~ZIyqGW-B -zoqT0+;6`7w>pJe_CSBW%U6&|?p6au}?%*j-`UzGk$*Gxwop3kR+$M8#k>fC@ -z21!%>P+UOpEIK@tlyxe>;qJC6YXp~M4#N?dx5!C|c#~kZmS>Bg+KoD!7G#~Zxua0b -zVL5Cn{yQnIO?N|iHcb4~>NTZoZsekVhE`I8^ -z*=u7pV`)HZ+l+&DaeO7xUH4&-e~Y%fra#j9MPaRNy+|l?8W3yQ1uiRQj{eQVv87D= -zsM0{NCNieofE}%Es8Z#vkwx`^3omeFghQ}z#u5;5=xR2BCl{u^s*s5V&f?$f8efIH -z9>EcEf|q(ZF8dNgw|eGqmY`Iuv8>0?JH^-p6NyVL&F8#*IXQdrwnmHX46a{;-lm1T -z&AH^weUaVLU}lhg^O1UC&gx@y42WS*X=QwQf!*+{(oDYq-s|1-sGaam|#P5AVRLa0Ty?HsR -z|7vcF9trdBRJ^KWc*GfD2G?aPSv(OF`qAcAFU#jpvR)A^cEAM-FMv8Ge0bsD1FSsR -zwy&)?op=o5CmGL^IW&sT;^qZ$3p34xW7D624alJhJKFG8207=3tQIK^{e35~5FS9i -zd$TTPJmAJpS?R$A!_4Wr#Z?o5TY)Y0K$Cle!@86#=3hbwgzZkySk@gatCt($5Rm{G -z>y8sLvvRn_)uiwJScBDK>CG|Zofhpq5G6Rx{H_BYx^jNeUP4#da9htb+`&t=7L>pi -zedi7G4pItSqnR3sM0(h4E`h(k{&W*p!O49A(28R>#f@uCb-zyTGB{`+Ai)*`gbs%^ -zD7F!$t$0{t>h~xTWrlu2JRQfB&z2piuP?88&JT%ZLY?^i?D;(-8l6d2(l@I7Hdr*g -zMen}e5$jv)cy&N|E6-e3Db?!-n{Cci*}ev!Ct=fkI$sO}?njV?^Un@q$DDV>Dk_p$ -zz`pJ)iZ+&Hh0x3@8$g;lEy#Uj!@gzsmjpkMen(|*EM~b3m-8tw3dN?bG-mD_CW|=2 -zyq7vuS4951w=`~HLQjQld7*ibpzRWV56r -zLNv$+xU7BG5*KuXVae@G*#7QXe3~td3_JaB_QMf8BC97@ZuExWFCw1T)<^BM?rYhB -zn9mQn#=uhd)IJjqaoO~mPKj?=Y#1gquU*YjdR0lh|HN5*fNnN+BlQT({z2qkywilv -zYMblfk*6a0F+PL5?XGrxD-j4FHk$$&ePiJwSQQkV!JDt&Ig)X;Xp8|CsGvoWl{Co8 -z1mq!^@i($rPE8H6EQ@j?TJ2BF6>7=E8*85#f`xR?ac;L^6r-REPk1ij8B*%(jIu!~ -zQSn8jfRR~>+!_dol~%GJ9!Q-~>%h@X{Q#YK*;)?}1^14RuJ)=5j)Z^}g^*(JjRccc -z+Tnj(vqTF@V+VocwiJ=HQT2+nM^oMeX#N6)q6Nd78fwjV2IX6as6u=~UAK|qes}4Exjk7sdfZ8b)9_#uk -zO)Jl17AGS+w1j4R8UaqD<;=;0}P;c -ztbRT3vgYbUK4`tr-PwVtwjz(S>0K`Z(_f8n`E#+e8#rb{%4-eRuxfKasa?FFqed1* -zmxR!D=lTd%LZCW>j2@oM$$_mviEGIv%{*19*j$nSw9)@Mw+DpZE{cRrFaXf0&ki|H -zeNSLm)TK9#2QqAl421hd)#4b58wYv>sm(OaBH~*W^hvmF0BY^jq-3nwD3G*nt|j*1 -zP`Hc$Sc#)%u}H^m$lP_@_Dm-w^HIDH2j2nXEypPz#^t)Kmw$I~>B5>ZxuO7|t@t`+)BGkiLR(NG -z`-)gJIKZfpSd>q?4v&NlC4*J2F0gwVP(D}&BObAU+#x%tvgy9LF1vU1F-LPvy;{7+ -zZVi2^O0%t;G%BSlxY?(pUW+Csh4q-;J&(AKNg3S1$v0{l=WFE{oz8t*VhH(NbJo7)$85&^hk<67wea* -zy?*)QuU`i2Ke-#$<=#3yypqRwa%=8E`P){NS5n$56=4;T)YcA>uv`T(lug3@DTCXH -z-7#<1Af~vC?IpUeK`8oiSDgC^vI!h?qkV(yuMK?Xl -z3go`M*}?k*=34ug!4x0)!9jwvDC -z_>?OG%@jJ3LbdewYRQcX%Z?K+O)6~x@>QuW=?Mym{*~pFxF&j2nVgu(bC7HttMI%B -z?Y=Gz?Mvhe27FyI6xv87iN@6p -z^2BQdLe_GX%cJNHH``LR3zdYHRBc2ij}?J5v4`-I;zl2MPy$4q`A$rv%@)ajI>5+{ -zZjUJ!hOjS?%s{@^TICIGg*DU#tUgKy=?WiWg8e9}is;!za>rV_`fCKkFHMn|Pzh2{ -z+uqkatt1=~$7m{Abb4!5IjM-fx8QZkc->7kLB~jWJv{5YiWi!PX=Pp>Dj$HK94sV7#;!|-D#bY*z(b+NDWcBoj9G -zZQAZw1Q8fxq%BAO!lJ59wnG`pA~~8O6qOX=@)`*9$?1LtC&aOY7Fyf0Q=Io}y@N?- -z-R4Y~)L+qFpKHIw8l-F#896ekjb6^%lCV|gXcG)JG%s-!y4FZ>lWJ_;0_zTMPP{kr -zMW;=NxpFlH03;OdkOV+KQ#yNQy>YrYae$lTm!kQn&5h+n1op|nx2$0q6#^xSmN4-Z -z!ZH@b95RQzc$&82mcWYAe9JXZwtamW2Q#?)Dsy_q-Ra|qR7{^Bo#ZG&~By?`Ejf^R4?{)>e5V;+8 -zVb2%GJ}!T&fjF#$KO@30jBk*R&E!3_xktK;5FcoRF>8cT8* -zd?)i{y#*);t`a|qIRl~;aCqhE7zS^eEK*o<_inGP6B5945?aN~WpVgWq4=^dY(emy+yXmWfK)C8 -z(br)5JDi|MJ(%RH+dQT-WCgqJuTUsygNADvAB+NzD(>bkgVtT;w0??960a?zSwXWq -z6kU>P(Zs;t0~%Q%ld$p}^mqHDAWHDSrkq^Y?sHzQ*=5CaY%T}Juu -z+HeY_vu~RX)FbVy`))F!dr7ByeujV}z*90gZh~ -zPl&o0V(b&D?VJY6G&2EoR;+i*GkEL0$`PrrOpcc`${A}>yW6vutB$m6%ZuTku@hl| -zyut5n8}N|WMgko6X#GXhlSUibv)OD1iVyh;rUm&X`%W9ELSvEn^g8lqzI|q6Hx73GW1OgxeDw}!K -zXR%D6d-`Hayr9&+BM`><3l4lD%$ixYbMM~1QKFjZ@BBRo>NFN^<*t@+gnK4UB}3Ls -zc!$g+alg+!dN~k&1B5&m)#ScVyb@JgzhJ3>98l1 -zo)y*UBct&=f!vj-(Klazi4qUr`w~$&B%J!x1cZK|i)M4xqfj|Li5YS~R1athy{+B` -z-dkjKZk&BBF`{I$lqh%}a)DEgv#jcn`V7@0{7~lJl-sHlaZygBO^inxZ5T30->hur -zwA>oqhE(Al#f}e$w?678E8Aj@g -z7IH!ZygEqJY2>;o%)ISv(=&pH_xPSkT4c$ly952kE!8EFl!F(XoHw>*E+8xoMOTIM -z8xxFf+rNZ4&3bcVr*wpHr!_IsOo%fhmZp(yPyn?9}FH&sRW -zC{59|TWhUqPDyiGb8E4)!+eO<<%VjBC^4};LgMTTiV;)thKzyp#!iIqMpL50(k|S5 -zB=~h{Y%x-n0!eO?(KAIO?f@GQBwG?JNcri*Q;M1FGGrT-Vk@krtG&w3`agD1KY3!WKPod!X6n{H4Fm2sEw -zITZy*z``nnWWXK*S<#zGPuNG_1DOA0X|`P_ligx_+XTVMHBlpKIZI4k0s)!fY86`A -zC;1!jMX4Nt72JT7M*20!w4`c8Kl+6D{ch&;Ng$r~VwP-%vf5XOzg(vm8r=<)(;Oas -zyuGzGUa#7cuC0wm1kNZD#coD4)7A89m4+bo;3i(&E7DDqJ1ofu({&3^DnV!qLT8!$ -z&s#(S$bwi>1Sv%ZF`BFUJZ4hjeKDUN8B-JyUzzoksFuk$G4XkG7{qoSg_?KAUbkBI -z$l!82iLNg_8f4Cps+m2Wm0{h-YF{TAscT|k8NfjM=A0YW>ueN(_UI3J;4_-9-A@Yx -zr3IXkh-NZTWzrDIj!ur$tAx~sGUYYNT7eH!N;N2;4C|MDxOS~t(mG`w;L3Et64v6$ -zfYN?joM*!xW}z=gH-FK-Vq8kWoq~2hi7T8i2Dw=>Ldv(df~{vo{yN!Cq_z-|CbBm7 -z|5~6-jfIFE0*;(6qmg?H1li=$3USsOfNuaMimEaOnE7r1o$@loL>7pCtaBAh$cS;-sc}`KA6mxl{>(f=Py^MWJQJ!p -z^x(}AVq&@P+K`^uC@98?=B>o3htTF8meKVr9nd@{K=&*wldNT_cna?loN=LS=T*U< -zc1fymbYbE&@3H_^e@iAk)!dlSuqB6pziDR&l*q*(4sBqsa&_^z0I1$4fS@Xdfgw6c -zHUJ!f35fqHqLyok5FS(Y{-b1f!y&WQS$0?l9uCYU`ep5=dmW^7*gldr$VM*pu+**l -zHkMm-=j}v@_0JB1Ihp4ZG)z6c0Gcegm<*K)dp3~FAZ7{&qWdyr8BcdXimFX1xC&OB -zro4jXr}ku4{A7}I-k&!}!b1>F -z??Xt#qIgrx%Ko3-%R3`7Na4%8Wl@W*)w()kvjk%VgP#otmAGFtxK?yEf;_hzLrp0o -zFVkgJ6`8I3>^L9ablELtnwM$cHL3&&i9mUo+#b3hB@LcJcOg`$GL(KM!t?%7tXr@B0<`1wjmq^;75;sl@G_UX9PiWOIjRj9=H(Y^{cFX}P -zb+XZ*TP76@lx6J^v=uQs3^Ko_Hucr!QoSs6uP@dh>O#w7T8oKUBv}zEOR>cUZBX{) -zS&NdZ^PUv6e`+iSW&!%)O3Dl|sE20;^*F%PisyRIJpm6$AEn-S -zxbEJwaVt!Csvq>zVX-UbKHJLHlm#A%L6udWeGs<^8N@=Sh^8!7PShF;Tb@_IPe`Lm`XHGy=m>csEE6hJ3Rwl(RBa?R{)W -zDWn|1iIqRTP}%5`9l{eWZ`AAEQ4U^}y~&bE^ySey_5#*GFXf<3g}!%t5n=YW_rycT -z%w317i_Gc4fb+Qd%LuHlHv>d@WLFB%`9zYj26e$L)k{ZCY}o65b9CM{lJmrzxOZ=7 -zQ*^tv{@TJ_L0JUGl9Utq%TBEFi4(@%~i0cHp -zQ9Nux+h+yrvvh<+|6+^dGZ*f;S;cPl3-n(29+TeWdt&c`N;j5y7Ki|jzNxNv$Q3DE -z$fnM7x=a@v;!A-eO7K&Xp%)%;hbH~acwqX(Tk2mg<>4{mk>S0$k|$&Aoy8Gl^+@_H -zsKkjsPz0>7HK;=s#=ua;Tgk;m>cCfQyZD?~H%tv7A(_Ksr81Pel}NPCRYA;LxiBwW -z>)B9l4$Iv;c&&fkT~gB3jk7F?#aoKn>%0R444blpM!h+s&k(DG()e6K$qrtT9=T#0 -zNr+?KRYU3I0CImg$e*+=F%^aATVkW)-#OG^pkg2y$$`L0P(JLJyB9&SV55 -zllQO^;fN7p++&6hkYM@BINM?7IjoqbIuM7OgksN($W=!e(K3~v{PwX>zqDC$Zb!bg -z2Md208ie7LYmhH_YS;cfbB#T$NH5Qb -zY^`a}zfH(78sCiGzRYxI+s^IUw&uiWo?07V6PLrCHU#KvB0vR>3c2@NFw%e)EPic) -zl}gPHNWNVAH1{>HNEThpId8;}3oFH7ImfHEEwF?m5>Da?K5QZU7rZ$L(P*ohbmxXG -zm5G|fz3ekh7u5aqkIx9>GxKy-4?1|erBYso?W*mN86ekNpHRIKdq|d1)tnfG8_%fh -zeG9iW`4UA0^JL65mgJPd-x>r8(T2-OOQio4O^nWIK)T*W?>TvL43}c(|KZ&Bu!^$;-AIYM)#BxT!BD3 -za#U$ufKl&;{k_1U0M1DU1$&rsvr|mtw`Jm(LSpdh5XV#I*H(B5QoVxYeo~;2JO$@L -zv$~Ch=b73ABd&@<4#m;FNBGj(2WeTIUipktmhlFjw;~qq*jMj?QI2nBg649Th0ZUC -z?{4V$SqSa$t}mdZD_*sYlFXh747%jMM(3aB)))_>B~xYV-2XtV+wGl|vaAMKm -znyM|Gf2RBka!4`jyDacFnx12DMM;PlU9GIWNjQ3>M8!2~R+)?>>2k2JNqg*oWZ6m% -zvE>I%$WWP -zzO31aD#oe|*02f71o`JQn(*Jf&7o6T7i40@`|-g@_hA(9w#pf0iD9!kgzC{r^prH} -z+9H>hi$U0}*)+V5InqT*Eh6(YEv~oo#Ij`o?y|-Pif~;d5Z*qJ7Q(tR_lk1^?Ac<4c&IM6a+3!r&m&9V;E}Tx+I?FxZfUjb1uKI^ -z^bDttb494>ChPMvRCNQHm4YMU9u`0c7bkCFki}|vuXWHX{V}f!E*sQ}b;lv;={E`O -zCz)j-@xO17IYBM$5s;;QkoL#+kNWn3#yNcz34h8^Pw&J%C>O`x0Uz`6FwFm%g~lA8 -zno5Jonp&qZ?Fn5M*d?_`NDvIp4>iQ+C3fA~I?E95L3Rf;wAtig7OPaNN+e_hiw$!5 -zX4}Z-lYWTFq+2+d<^%17BD!db9!l#4k~-lX!(Ic<)5y4dK+Jx>|= -z=M!>p3u>*}>xb -z9O{)%??KhGf)M6X@BQkDuV$~eEg*3M-TU4jbkh=};U`26@n$T=P&;hly(Ed@XSluO -zq#*0~≶BKNr+%V26#)jUr}7cCzPqY(_Ez?;h1?-yOkXj1pTB{A-ZxDkH`!_gzH- -z1KOFr4y3ur<&13B?u(@Pq?vY$8qxab#ZE$N8nzw3kkb#H%;_*4nUh6k4nn#vL%pAo -zAWRY#0~%4*`HC^S&2SA3_% -z5f6ws!t_o8qGZ$RSl^c@ZgZDP{!S>DTJ^8s_PDu`l%pX9wgQo!0^UZmLV3eqwc`qz -zFi&N_iM^n$P@;7WW>a(9DN@W~H4&v)e(nq-MUaK7kQ#xQ9H4;SM?gMU?VJHh -zE@AddXDBsB03G=((+SqCrSJ)JZ%E3-xmaw>P}pd0K6`zuquvP8QD(V^FvQeVEG9DX -z_ULjMgx -z0crugr9>Ck#dn4NmGwAH1?_1wjkCn5nGpRA?Q?R!YoY*6NmF#RAY};XBP=m+;RZ6f -zWO}cCro^@9BAEI57up`D%Q;cypebVe5MRG7XFi@~sWFxutf@zbSD`)K{`iYXN_X|d -zRjN01bJdLmg@{jAS0|2?O8-~nMAc4g7BAL}T&x6ClR4sO#U!|Vb;j446!0~n3#Bl+ -zF_?UB8$lK#9QSqcwB21~N6DDODhICw70?cO`!DXvt6MGP}9e(*%Rv -zm4?%>mY&zWZFW6Tl~1kdQ50dVL?W%yKCUd5<^cj9g(wkEmFH+_PB& -z8oO`W0+(D~k~oDCAT-Ouf=QR{ozAxOR26WjpIYvPSM@!0;^;=JL-x{hzJ+6m%cbbx -zBoqLb8VzKu{tw%J)*(DOnQYIdn60+#rG1MP2zhS@iLQb9RGEXssHtIiZ4pGGK`HNp -zXSR}4tGMP%n3hX8Nu9g3?r1hP+O)LYHYM~=Tv&0ekmDGt#200G+|2tdtLF|kOFLI< -z1k&E8+XH$uKy$UUL)sVujgK^ZZ1zG&@i{k@N{{I6<_h-R{L!QJ#J(vO5o@sI?p1Y= -z1b4|Q^>T8fQ%h9Vgfy>W*^BGZCj(hj9lG@6tJ3D6#_0Pp)5g)MuJC-<3DxX8r{tpG -z&eWD=iXTS-z0iZycn0tg3$Zaw*Ap)#Kn0U*2y5%k39#WRa`3?#H4HBNUCl!f%7}|SOIa97I2#G*59hq(SKuG=uM2iQU&;`L> -zVVPSWMFsf7vMR{dtVn$aHuuzgK1xiu0Yd0M9YL>g*Q_Yt`-c5U|I^AC4eK`}dH`21 -zbJg^6Su9|ZVce%R;jwx+=FnnCsG4d+SeRH%*>YAbe10$=q=qIE1d9F24Lr(T20hNA -zL5INT686R>LE=P}yk0GH(qghKaFaSyBD3|RUW#R? -z#Zc@TfA~<#fmJ%rH>huHA_`?`bU&nQ*+Br8x^`H2ra!ve!sfaxvYBCg93^Gp%3t -zat&}x7k)C{d0C|3>06WRF&im4pHp{QkAkFKK#HwA^N#cteIz$b;vCnw&&1P7pLaq^ -z6}mA=bHWu$khODu8S2KDPQ57>FiqYvlx#hh=i&A(;W?e+FHUGf2V}`PW20bGT@~Q^L)X=q>m(p8|=omPBHToKHRU=w(?GC+8ZTjo9?> -zy6cu9xN=S;pfnr^+14(#0WNF@keMGX#W%*rFi^H};o>~moKA?&7UJhiF9S(;sMjRM -z3H{J@EjQJ(JI$_Ld-zMwO~$F}de^a%yB~97n$zfAui)wftNx>JQpp-JwFHqARhALq -z0%-C)0)ZfBO=+y!Cn>db62QdQIx?||Z_uTTk&RCtb$F*QCjQRqLgoa2Zbb+{ts=N7 -z0Pu840d<9f?7)P!hbeDjYwvIRTHtAK#zCumIVT%KHYI@a#mYSgCsvC6Kw46lXm$$7 -z!i4~1LcPg!EegMOT23|)wb)Ukhl>CEhpB| -z2DY#OlZu@^+pV4e_JhvRTITd&qNX|)Efv;zf-X_k6MtQgDmReMV?2fckx8>!ol{)hJN{Co`^j` -z8qPuitNY_yZsbZoaI>(lC9==Ls>J~{O<$rY(EY;b*W1Nl1jKhwME$o+sWOUJ1aVds -z!u&^JA83V)lQUmyv8geI0)4MvE?uG!({7f{W~l9jmQC`YQx-VLyz7FPM6*PL%lYZF -z8nPH6*07uxqu>cjxsbqsL^kv|i9fWjxmK}G&f$XdfL3$3oa@LV<$KarH)30NCR6JZ -zMDkReA$TfnF||k@xOhs+($YPeT6{)>cBO|=&jQx)n)_8Q1FOb-4(vWlJX|)Q2jDMp -znZuQot^E5hGh~Dg%gt)!rB}mfWj?7n!W$(=uz157TI*GUGD{va*EFz&6Jem7x{@Y4_#|3u$O^!QK2>&FJ&^;G${L# -zB!;zR)Sc%!m19Bc3bX@VB$iDVC1oQB^)QNgKvgr?gi#}xr(+nZuqcyVMD&-m+Mq!k -z63v9>k^D9!xb2cA5f}|nXFUlBh4C1W#W~kmIGlMUZ8bX5eS0pb8z473g$p*qkkQoIdR%$ykgD*~-?HU@#Q>1@*!NhZS}?Sj -zr9MdQfR;1VVavPZ^2YY8eN!(R{E3x_%^6;@%_v_IFp>0tEGSvFglDhh2BYt>aFJ<4 -z3`$QiI6GQ$8I5sr@ -zIE=|Ug3=4*w3*LtgVYD4zaq?zXPw)n>W3#tp)5lJ4)_)Y(zQ^jrAIV1`~8!I&iw=K -zPvWRhEM@X)rns^9B}4R;e}%Q!q(x%`tOeS3CS=AAsCg!gyX@#P1{Sp%+6)W+Lb+3a -z>ZCVm?B?#v&#_$XmCG#=b&sUTRuDlBN7I**u|JWVs*bm!=wi|u1&rQOpn0!D10@88 -zZ7ad*DmI>=9i&<}w2*{t?A}41mC>*+#0%PFe>G=f1+O~TOf!BQ)x4lGu!+8$qHZ$7 -zD_boiBxBF;0|)$yFGfK3(>z5a=CmAr2Dg*dI(Fm1=-14^iX;T?a&cn06>ToCw~K6_N%soH?^aIJ>K}$uT4U8NCt_oi -zN7g5hSe80awp2C+C-NbLG2S?#{pH$rdbg>%G=M52d#)iBA3Z&XYeIA-OJ9g8f?rnV -z%Th-$#8w%)qE-3JErkML_cO*2_h?j(eiCXw#fgyHZW)u -zYVN14cXow2dTReT#Jh%)nYw;5*EO@!q})niA4(VNPZ=GMAfERBTF^PEO*JB=6&z3+_ZnUZ~lYF2kzxS8ELlbzF#a_<*!T`B}~ebu7Y@=UnOeFE5%78P&wo&H4U#o2A1I{!AlD%zKPlJYl~2MQ8$g*{^eS*p~}htydY2XoHa`pTTD)0 -z^+WC{0)Pb#<^^$UDBJ*>zU-0O{-wv1`kFEY=sxPzKW0#OCg~#7RvOik9A)>b*;bq$ -zKte%_r8#xkjR&7p>ib9T62xb6s;!$|-KavK(R@7!f%?6FQBV~cB|y9bhJYea`L{}$%1do+lwdC#qYsse -zUtNY2f<_(cnTvBSn9r12H0BmU!$;>ziv*wawKk|EYpB#-AZDi~f%}*N|*-Th0SU7p6tti&d92fWSlrXH$i_i5*2_-Quz^ -zA#PL>ZV4Y_pNdpSTrtsELTEEg+Ly$>O)%-jW7v{nR_ZrpF74Ylb9y!j3*QTiwua;I -zofnmeh+bSEXARoeZ|qz$nH3`G(HSnea_;(0s+{`vaejH%PJ^J4pisfMfzi} -zRO*mjkQ;ke0q&H`^0+*(goKHtSiv@GwLyar5;o9RP6c=d5=s*io-111EC)cvnAlYj -z#W9;9Pf&oxhWu^zd}o+*?SJy_Pwe0$LV|s6QvRMKZW5LeIcHyQR_4}t&*?!OU;sA% -zPB!=(BtMpzd|snbt_JIyk*LgT -za{xm?yuakSR)-Zspc6D+#bsSw%t-YhG6vj81;*oQG6ZWs0AGJ5kS6=uShHs?FD^0} -zWu6}7Inkl$I}#o@^NZKR%12SBa9PrB!Pm1=);TkbK<9ged)g%_Wwsr`E!C3b5>JSC -z3g@g#?f|%h>|;5n*(pN@0B=iH4o}{t+U=esC(~X_?RHG#oNZg`WI~J%{6?c_P2bDj -za<;FD)&sdL%0QJAB1Jp%OZcU!FJuwAp?xBcm^2Gzb5P$1*=FSR@!I?lnSpeJ#`-=b -zgzvLoDdAF;WS~WMG_^(@n848aUDIaA(Wv6E4G@5x-T%4gxg2#HSeZ8c+-JG?oltdvBC!|}?VLe@QNI-mM454d?HWIa> -z8dLDsXC(%mCn*Q1K;lqECq7avAR09bmq46#h$v_C=}40r8({D(PLd@fTUlm4xrOZw -zeP+`XJR#IiT=eY;y*wTWB$7Aw1l38~yz=Gg?A#}EpCuR;LG-PwmOzf8W3>#8jN;7YBMj<_mZGrO^g=uHmXHPx!Z3FOs^?JaC>j|$#(pV@F|{$FSsqtjel -z7nNr*-E%{7|)M?62mjemBZI2h!Y&NOrNlre3I>k0$6`ixrGj?$e7NL4x+ -ztI*d7`uK-LXjyW}PweKok>oS;eT|S5c?*k9mt@nq|H0RI$-i=6M^5F~$6OJS@C9Q} -z2_^NqoJ+Bwh}Y+A0ncK~#b-ZSz?x -z(6lmYBam`uNU=7(X}UwXF2&e*N{ji{sx1o4hNt}mT(5QAfI-9Ocj(u)Nd!A1q>qMS -z{q#!;l$rvUf+sh*RaxO!fzt~dyD(s!PkAZp{LT-LsW!)7p;68H1;hv#Q9r9k^d82e -zgxIKG4JW*4-ImB4J6tZzmd`?LZ<7s>_ElcdJ*eI&B-aT4?AZ|O1Ekf~3j^Jhh{s6q -znLiM9s4oID(bw#-DzBBsWySr1=Pp`uy+Sv*-_ -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 -z_(Ht4{c@X}rUO~H -zYc?3edXZ-=<5{=mL9Y>1a17MvQG9R=!?gtqC|_`I6(f%3lZiLKO?v>#%Z-Atv&MlylyO?lxRyb~g -z6S6u^lNJJT>1B-r98q~{TB&ngu*S7#tvUvc1a((;Z=bZ4y?M~)$5QQ)-L&N -zZ^eB9EgqOn`gXJcOW$wWSiQAdTw}ct-Y|0OLAs0&>a94t{vy=mz;9Q){?aY>wqFmY -zSRY|x?Hze&`i9>3(nq{ip2II5gP{(iY>kof8-s_C#S=S!rM|tqQMG@N;B5WM)dwQG -zU}7gA0ir%P%%1$QU&h>Y&zN9?+8vHOw-*y6dXbRqmBzWfkmykDCzjx?@YE&~XV$1g -zejjfb2+dM-hBBlFY&8yk4=uEAS_^2<3>VZp0OwYTiahhmv3AwQR})qTS=5)gq1G-+z4R#y|i3{?9M`i;&{m&%eLwCMm&>j#C>n*oO|6dnloX -z1tlHU8urDC3$^T*HE1NvJnxWADET9ht2JH#C9Af(xKe~t$9eeTkX*Sbkb}wNM*>@% -zx5JT?WR45s-tD>T2)s_*8k}~5X>m3hlmJZi{^j$-iB(V@nXa~p{Tc5^OvH%b%;=pL -zhH?~SJdiyVw7CG2`cwF~t90|aUaruMcU^K6PsW&Xh_~nsgATK2DHsIvVJe)TsWL5W -zkQ-J}Hj*SqUiGNI#(wa=nLBRxJjyvw-}&f1SXby5k)=W#HM7-M5gQMv~ROebZwVQKLLpESb=$M2H^YuGH>OM -zoQljDOSS01UXG>q3A@r9z%_95F_;Y=T2B)^KimtbJMp(Th-<2-DZlVAT&~`oA+h#i -z=1i{(zWcLp)E!AakKATZBm!T5$Q>EOLEL0dsq+HApiB$vdT(vY@D%p!fKzwqAF>c$ -znHfVDh&qQ+j*KzU0+`6k-at)UhYK*%QwkrE@<(Z6@Q@Wt6nqcc_pjO(Y;$ -zU>AZ^m0cn#1y;lx4jWtE6D%>RgtK=xF7Z3Et}>j~$|@5@W^uo-fPZ4=V=SbglzRGO -z3y-xXZx&`%Z74e2ypr$`qqm2p5eL~`U&FAgMgLMQx`xoxJeX@osZa6{WS+rm&l~u% -zM0t@j*NeFCND?ew&cg#~BI8W?7hY&g=dr9us))lSCNqk&EsA9rj>Wg59%~8GAt&9H -z)SV6N*&vgU%a|vR-7XiogO+rPu1p{k=q6TXO^BRpd~-5redzK{!gh3iI#$oy4evxt -z8B{P-FichfBn!osJnGtj#wpUhLPT`k(sD39*wDoT6Q_P^mhX{ -z$RoO}&Uvz8(EDDkmyF2*2)=?6w{Bxyc2)b{%DnKrv{S;t*ckWWIQ6;VX@45u9Q3;v -zO5Esk8Upsn86XxsEC&n8te*X0ZT%I%r<8601P)wVxTFM!^Hw5fW3A%!kcjT;Em8Xx -zPjWF_DD2bl2&A6dMkmj0r4XXJH*;(+kFXEU8mN4Ud=g?vK@bDpg~nFpO*|j4+&0>W -zYW{97mdmOW5=9=XDgq~}70mJhT%F_n;!rvIyoqrP-s(JTSEb^uo`xM`&W6Ym^ -zU?j~l-|BnTcdGg;6rj@U{f0Ks^dpl@l^eUaG_=Jx@2779@SH@6dV{gmGVE)G?+TVnl@H$ZwID|k#eKtx*FCg-^=xv;VA(!?QqY)u#X9C_$MP?taZ -z^E&t^#~oSu6z4FVz+mQdfD5iDxas?G1t+b=bnU+!leVIr?&{cYZ^#i1Xlr`3OOAi+ -zNB& -z;svZCT)sGtPki+S>;*`9+9W7&`U++{xSC#mwkF;`{{+$k*hp(LBaLsQNV!<>k#>mG -z?T8jXD)yOgvY`CsQt-`jI_;Zmr1Mc8>Mck>otuqi)VPLw-$<-0azGNo+g(swecld` -zcM|MR!!5yqEUTu_`N7!BexDLM;6;Vp(=9nt;>mqv2cZfNaMF7*OYD0>7c$e;?M`ea -zd*+ac*pZ$;R`S;Ba@-f{n%Zpn_VwFua@AN-_uJR+KUe^iCo=jwzwWL*Dlh)N$Hf7k -zKYr}1F+%t|{BAeq2ua@i8~r`rw`Z?s%{lWmuApLPI!MB%qkLcd2!DC4I$Wn;$&dTJ -zPKSKH#e_or@dUqjc~w7uahDE$M?Zg)N$cuY`0E?4V90~;>lYg!{qVp3W+DCQAOH0Y -z1oa{3-nS{T1%N_{LyMD0YQ! -zKfix{R;`Wt&!1nPi@ELJe*VQ{9^u|wl^&t&{Wy%0{MUEAq9lLz_qVV2*0TG*zw^g3 -z-`~XG8Lsg6caD6nCjI{Y8xSeGdwDfkdz}1f^RjpeRf^(eapvFOHT;v1`}dEp_tBIJ -zfB*cdw@O9;d+P^+N!`|Pi8X+jrow85>x -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 -z)-k8bZ(=lH-(O5ttw&X-AiM4y|g@ -zncw$0c%iWAwecNKeg*g5>`PDf)eRh*R($ts0}LPKuE~5vB_cEWXsuNMXf}uL+x#N$ -z{$5ILYY5vTv^*Vh<#y|gX7kO7TkqGf9W(Zc;P}DZP?xEEhSd#@4(yoQLD@8H8i!^d -zOuHkzJY<*}=ui&#tSz|!7?KksAW|Rp+s=CGig490*tNtk;BW=S8(7P5AW11cwlR0h -zHb3?^@{QVeAT~Q#u?LSG>XL_-p4rF>5vJC!;wWSzsy@GZr`>=1U;gL+bH<}qJ@Ys+ -zOh{dl*DqgcY8tjp8_}!|O57k!tUo}@b8ArJ^t3`;wQ<%(rk3w(>F2= -zxPjmd$mF+eF9A>NR}d4sXYr#`0yUCZSpspt1?x1q#{-!28z!0;$7H -z!~%98@Rv$>d_a3y)+%qeTM)F0i31jLu%rX><;8C*IEwX`2?YYJVSS|Iwj|pdZWKtS -z?zM{|>+_CIxsPq^e`X%4)9FW3z}C@IlH2vHZ84fplIiO6_Z8v)%hepkfJ_bOXtr+9ky5k3Z61efD34s`hO}V8!+@p#0vTn)B?Giwyd+y6+ -zt-eZJQk7szx@@vO+P*=(W%f*I69YxW+oC@ORv^VYdF3BDbCYv*5D;dF1ge@@(K*w% -z2VFX^{kGAex!ZR5FKnsDxR6?X$~!yBu1mTT8P+%G$Cvm4miAo(5g=+v3kc%0mCY_+ -zFljo((wZ_Q>KM1Zjgaxn+qJ>83vz*Mx$^GE?!1-TjnCWm{uMDUZW_-XN|6kVFZva{ -z2hAd5*s>9)`hc7Oos@c*Zt5;95ilG30MyP)!Wu{m -zLrc;u3|i;Y2(HY+pA5j{`5m>UYXvd9hv5nq(s&-p%a(N|umc=CQ)MZr^OuJYb+J6X -zTH3RHa(w~TATQ^4fmmMTEa!LQK>U>Wk>e*ZcdFFW_1J2ueJF9iR?!k%7AHYfighcLy-lz;FvD -zECi$Sb2UkVQ=Dy=Ck_ys?c8GbEqUd;O7s9zfI1g-SjoaqUA0HXT$b|~tgS*RHjR7p -z3MntNYIIq+Ks+ARZKu9(OVC8`Rh}_rtfvbCN8 -zl5B4-y-Zyyp+q1cDaWwT&Ww#lib&%eG$J(cmCayM!G;|Rx@M^GmEbyt|37?Dl -zDF5G2&%{`(l)28PzzdTW*IZo*NsDBG|MvbNqvVn;Yov5fJ}beodD7@=;yfM2@4^08kyK9#${al>^o -z*;-AF``$jptsOdKQ8mWlcl#TvmR)f1apEq^qnFi<~yyZ(o_AD3@- -zNrbGeb%E2iE2g4@HxLd7Lbd|G}@Qj{cN>*Sgi-vQ+_9S<5d -zU{rF%Mu#j+4Wk(#a{B%(tMY&w{2^|YO%66O->fq1#h?h~_bJQs0N@0Ijit-ZHb2{; -zc~C7J3jMT?D^9T1w}U>N1;cQ9&JvZpv`w`dpaEd0`YvEZhj@MmTzC5XPWKB#!M%Yy -z&*`bj(zx$@Al*!mb~di!B`xU&7~lKSyT=AJsWhhb-Q2`2S?&C9Thl#HtZG -zyuDARet1x4>z8vk`xeLifFuM1%Bh|pAPa^=cd~9_krTlwsLn3C15o$%_lACz6@MD# -zhLx;(HzgV9+wEb&(xd#vfF(d`&L-rg0l{ga4@`%1#mIBDp?aH*$d*VX8IJdL*FJ2L -zR{Qon(3M`_cN@7q*{s|O5QxHz?D6(RaAlq*mrU_@Gj$KN+STBU3}8=2|2BkGd;+k) -zA*badCANvNtwQrq1v@Tp_lvXu=U6@Z@e_2W`C^HHfrEjXnC;+h%y33|bZ@(62g+Kp -z({FFzn4o(f+W}aJ(^ia3+lIZNUf)9`{&_jLX|Y82M=4u1Z4c{u(~d -zH;WANn&!WBY`MbOi&*@P^`$;Uoz)TgLG_+ -z4uJYx&xgf)`ekk1L6x|^%?jD%ws-|J3fUxvCRes?)rZ4;$GdMfL4hL*Sx~K}djFxs -zy&vIquWtx>#g~kQZE|||peIG6WO0QxXB%um;Rb*ZQlmpM)K`~Ag^_rm_fE$vvxMNXPxly}Z-oC;@pjRoVcdh!k?B0X6Qoi-$z3EQbCYB -zUgFUZ`?H-bO17xw@yk7O8J!(faff63?#lPWm2A%^t17>vH~oIMcz?~CIE!&8Nyksk -zLr^>DatjC~GL8zG44}CO<<6G#!7R}#w#2gZFe?=r9N@0z@K3D?%IfE`JjSEI{6U1- -zbVpH^wd{*BuBGkun=uZC1u?XvPawA2@vRqn#{zWP -zZEk{o8r^!Oj|IGaNFM`Zw5E1#*{0SPi57VW&64P1{yv7!ehh)?JgAjpXUJ7n$`*ym -z6l%3Eg{S!WuPyyek%0UNFP)yELs->)6Y}T% -z(h&nt9FkiCg=Kl&LcbCTI~nqFBnnF}r*J}6L)bkan?}c>Ha+2e -zGuguN`}=Vm{+64ukOU#6 -z_S==dWVt(6;|OJ>r5M6VwZ_Jf6JQFty3E6#^JKE62iH;LlScbVnAVq8_xT+(#Is*` -za6R)sQCcZQw(>;Pm!@@&6i?0WMc8VykLSIQW7+(|GG~Z16kJawvhlk3jC#c5_j<_q -zcSEyot34h{q@|nLzM#sU_vZAG{wNoY3UGKEQLS#;2)up9L`_}inbG5lZ4t_1Q_iDe -zYyDvcKVXuU6h+9(nL@S8PS?6D1an*Wsk3Fn*4tn1xK>W{h4oI7)8>9*UbpJwUKbym -z!I-gBYSQntN}z^gy`|w=@@cK{ht4d!rJFA -zECn;IOUJ)U3LK2!E1ZU1tproL3JN(5ng5#EW(;z+Q#5P1fIQC@bS~BdPb;L4b!?SM -zC{HW6&&-E3el_ybuRb_cNp%vL>hJSPWxm){|f4)UwE@fw~EB -zU;2rR=9etI*ML?I%Y#8$u5iswlN>Ym1PiNssSJ`KfT~a9XhZPtp>xBL9Lf(px=JUa -z0i3d8#geG6W^v(h5iEp8tiJycOvEtJ6H>hXCeH&caos2)m@A!&B%4)@C-e(|?`H|T -z?)ob1SGo`M4RFo8c)Q+Vb?Qp_6FAPzaNwvHT?biCdOqbw-tt!mh1!lQzE_iWT~#$_ -zNzJF-Jwvu@0c~TM^wa1#dQBbJln00#3bAFl9v>1OQsVV`ILcghybT2wZ3Sb~((Jq; -zip-p;Mgeh72)VRmvy1E3lqA9fvC;a~enkMm_$BgFq?IuE)dj|1bnslyMoGmc07B&l -zU+D{k$E!w!?sre{!Tm;(!HbdVMXr}uso*LXT8YSUj{&?tP6oAc3uhOQPFmR(nS}A_ -zHO2exsKxeyXUF+24ir587*^*D5T9VZXWZJ_E&*|xi@I{keE~MNc4-)L1j&(ebXMpJ -z#8;tcR7weL%xYe$dxns@kA^~gxuWxH$t~1iM$*vE+af&DgEh|Pd -zU9yH#n4p>CG$xt2{v#}m&*X75|QOg9J3joVvR7Ci%$)_&-IsVzfl -zQy*x^PVzGVqVWxTkZw0@eZfVIPSVr$+;J=-6hnl}S&>blIbJH5>o?5QN9|yj)BQ|_IdmL?4yb6e*2O~f{LC&6Oqu~r`r>|o9xXnB=2v9El-BxT(YyN -zO~yB+PZSi1Vzt$8tz^NGI1~4wa#xt#`EesmO=sH@A?)WZl4S1HH*MFYziC)X>HV -zKaw*qDCKL>`emv^?78Rc!%we!S02ecwtt!=LjNKE2PpCP&x}sFptEeQ+8Of7ArrdA -ze0l{*kZEN_FpD!4yTG!}mXp9%@mk -zm`=5uR`%2Q26AYZB%Ac~{%%Hw)gz~_OEt&johc#VUkIh08@kMK8AYo;(`8D)ot&y! -zz>Uc~VwvcDs_ASYsck&JSD%4zpp7l&gga<`HWWF38NhDu&d}#h?kfNQ@s0}Gr>m?U -za$jfkf447~`tJvgq4;tVg}!YJ@Iq0>L$*yG@1#1o{)wSk3vvc@QTJ41sN(SJ8OQ33 -z6Vn90!l>hn7G`x$-yU(C*EGJrha#XaR5U_m(hz>4lk6SlriJ{|?LN_$JiZkejVlQL -zNO4-O$a#xR1jB5$3V9No%z`bhdRXi&BJ!(wZg2n9d*>sjz`l@vs=aa+w=qlKQ1?Do -zm(wwzN4G)>p}H)2j~#hubC9dV@BHfoRld%+2iE5~RLoz)RK24oiA^FH`7gkjxO2dr -zGi9m0b-Hx%VTcUNCiNaau$Nr)3IymAII#Hv$&_XxcYg`**ZpSt13v^!{8WF1gW5miw$W -zMg-n)pDJ@V#O^Opf<*nE=lal(5;k_$j_4p6{}5m!mh11O$e?c?w^S+wgV?F``V~D2 -zs@92>e(u6=(?ULeGWB=@^fH%o(=C!zI~lu3vIk7IcZ{Ew^xrT)u?m;tOYKUvk>T*? -zxR^Y;?65HjW`7fvtb!UXUwK~~<&#;4GQR!d*Xy2M)g``S1;|XFK7ClP1iUlH -z2wCWJzlT^?aJikox2?4S;d>YtTfxjA&^*@!HAq2$T;lC+!MsEoh4-f}AKaBC9E^xy -zhA6eZ<$et3`6uqv9Z4gkgaOC>1yuxx?=O4{2pWsWuPpuGFR}_TK3l(|Oz}qxhuH_#3p>**bD$+tOs -z0$}#Py!(#$|5C1YlYH>U6R1h_uAjp)jj}oBpNQLUq9%sd{>|>{;ix -zu~#Ts@$|mhuwTD#XMe8|QjWYIw(}2ULM2cEoGuZgb#{BiZ8`v9`gM{lsW=Mb&uZdv -z!JU(wV!Ae7gd?Z&+e`r)vUGMAT2;?!5!00lASqvE`lCpLq~JYB__C3wsxnudxUzKfob -zezC0PvwsG*E~7QgIX1A-Ospr$L3(qVacR`WscY`iG(`J;u -zCgIzIXGh%EFHM>2%De7cWB9u%vGCpOa6KzNvVYyIhn`v9`)nK>_xq1;Gf{|0=F0UA -zz46QpWJrTU-Zhr -zvjq=jDWqEKG2+T}9Qz<^`0DkPAq`XfwDdbr8>s`iOwHfDt3=f!EbuijTwme}icFImT~ -zhY!33fJv2CrYb?)UZmi*(*Ag9!dhYuXsEA`BeT=2!yoG%Cs$FjbmiV*rUNW0oI)}P -zKOXr6GNUgof_|UF5Txj+@?{B3+jfr9y`o5_pl>MRR35B(<&BOi2H7ylZ<%ma&AA}JOJzxKAZH}J>c{I%T^12C5ybxH~=&R$=g$wG=Rsa$-LlRhE`^~yfDd}ieoc`jH -z&G+7r9=L1BxJ9saPNh^I$Ww{X{-LwC&jB@}21r=|Kdq`_ZsohZ -z-Od~P8|CPhW|LYf#X{(eOwj8{a)Ea-(r#aY0$t>YsW7cPUY&~>j*TH*<8b2YcD -z?7|ALF$=ya?-a`U<&?Hwvo_wAnCz<01ZZ1h-3nslvQWo5X-k~F^7rGP`@WuWz2ru6 -zS|Bk}vO9vHPbTJK2aVbki_ -zR6`U_u&aiIT(MTiIlw9KVih)@&s-!ot18?i6H`prm#=BG2E_3|>ygfe>n_{wS5%HR -zJq%*{{uvblSzpIh#`<253sJ~Atkguz!h9&>%CtDjQyGsm9I~^t`Eti&9n)V8TW7-Q -z``QkX9sL8&oDM1(iha1EnVDVAHjxYwOQna=c42wW=U7&rItvzGJ5WwG17y!VlgbbX}N@dprP -zn@Ii1wF#;QUFhJUG!ckmx;6TLed(gSaoDj#1=C4=aj6=aRuaBP3K1q#|?;G7Z$^kh~#z8 -z)1J<5ma(Dk#9+*`zakymeFj2d)mCt{I9g{RRtB=QSypg;Z@Qo%DTT%H*tc+>=@RR% -z3V<@LsX44-efoNW(P4TUHJP&z6tR0j93kdOD~`VUt|(2YQAqPl=Gh{DvOe4D6d>`U -znaT^?`qpH{u3()U{o1K@FKhKk#q>bPEYY+23xp_AfS-9vGTy5g9YJo|kg_Crd&&6o -zf8OJNfv(l?KQ;>~|Hm$S$^KvIqDGa+ZEV@09^aDX%{I2Z6EC+w<9JDG(-f{HOK#pg -zP@YUfMqNRCe16B)1aI!wA6%CGFOGt%JHImzZ*RZ~oZo?R9Dp(dG?20w-RH3UQ)g9* -z*Xy*4mHCSDSSPSa!D~xPK*j@=9(3>i_=7}&A)BF!1>oZ*R@N96}FU -z-B_3&3?#EZeuKKmVWD$;O~Z -z{0~g-{|-$}z3u;yIDh%S5Un5oBlA}N-&fe4|59^h>RWQ;){p!j2}S4lUp;w3N3Q<+ -za@Cy3|MDqOkn{EX_kcsIe)Mhn%CD|V{&wn;ioUrh4eF+U8Ib&tF-8bg?ERcBpUdyRb -zCTbP)7#Y?oyuJMy$Q-O^Mtv4l2k$SIpTB|xV3=$Sg%?P3>;47*KrMgk!on6XR65c0 -zJK+Kv%}V|N=|$}%&#B37T*GcIxwe`w1}L2OM*PHIjxjGtW5-|KM}~_#M$UO7*N;FXOXYy;Ll_wLG&}emd~=q51l(Z -z{q{BVCZWe3C*T)cz*%mgazB5%+{**C7rVF@1vHR?Gi~^r#EEe^ppyv)r}+OL;p^*Y -zot_n4k?Ygl7o@1?;CbZv_iNucT{qHrdq(Y=tJ;998KudWdksaS2h!Uxv?VMXc7z?i -zWrf?#?ho|W!@4_{^0GdM%_Gls9=^D`(WH;ILA?Sw>O99nw5rvP@=S3V)LdG;s|#6U -zd6YVxO5#Kev{-XZB4`$DoeyoaKq=@BdOn@*gJOPuzTi%wkbTLF+x-j1UD^FNC-<)3 -zR3#}sX)wb6RdYXpVsce39+*%#wQ|F8lMrF*zY6la0RnXO5C_#!^NM?=M%O7OGa&!{ -z{l}7Xz5M0^EI4S7{ToeJeI1pNk$S@@>!s|rr+F>J@}p(m^Dk~=-d>wsRca`_IITIC -zFfOeTy_a$T_~;Rk%|(JwJiHzO!o#z7T^J`gJgU{iZC6GPb2}6P)_v$z<%i9F8S0Ll -z^Nfzu$_~6h$cKiT0Z-BU^%%5cR+xKHy+vPzoyR|4*TD;D*%-VYuDa)%UDrgCz%4SX -zHM=Ov)(>CjO)qa0%CfG`0$@`}*clfFC6C@w{EuVoH)e=aK`;EH9=moqH -z?d+QO%vxDa^@0wqAw1AK>Cksx;(ziP?&GgN;#mAAA7SYJlaF*T|N286 -zqW|PdFyjBoF)^Nh{gIFGUw;}pBvRX* -zh32id?feqnNA*rz>sPX~Rv>Tu;6S3l*n;X#yBtx8qZf5*Wvj^)0`ZVANRG -ztCYEpWz3RyeS2I0O*Qvr|LjAh5w*4u@7_RG>##E1Z|JlO*fwWtyULU$YKJL|ZWa#8 -zi>jW)@3;N*467UA7q)glu9hsLXZjrV-`{`xZWk=^p;3$Xk(?JcG^*zpKV^r~(;}l5 -zzlv0e|J^LRT#mm22GxS~7b`@{O%fP%!@z1cQqzNIDI9KC*D*1o4K7(R^yUh{W-wX* -zh;hzIqr0;svGvmV;BRqz#M$b)aam+?VHM>N=lgG0+5N8Uj4XA)#bs*%*=jQV*0;~& -z3u^8ms}Rv6$c1uGv+r+g}iPRAsa3RR%? -zAxDSEsZMMjvARy>TZGVAxuHw}cIoy+pVxpj$q}o -zdHn^=)o`kE65Cq4xM#`=^pypG_ZlxqHR+u4Mmd{&65Ct=E|H)PiVRt5?v-A-ye%UI -zW-T3az!j9%`I~ql1o$AO{KHn@nAX1NW^n746VkcX+k*Jz=5E*a9K)AW^Z=-Nm>q?= -zTfLLBU00QO$-_+X6R>Kw<^-hfZ$JFImu<;X2AJA^nq>;Wfm!4AHQ%T_Db~CuM;LvD -z@ymLSZ)2D*GjvCy8-w@>cuExCk{#F1W;Lak*d?$!`NU+a8pd9F_(y*+TlgXC-7$i$^b0kLYpP{MF -z25AoR2ryy1g_cQ$HIDskgh7NeVq2sJja?QsUY7Xu$2*MS^V47%pbeAXSRU5_ZL--m -z)T7HV517@P7|l<|5&=9TcF67>GJ;`t!-2Zwbn^~TB#k%67N8Q1@bGm1nzUFWs3tb$ -zDse&iN<`EEM*&`m*}{F>8?a`~zw1@(TY@qqbZsS`^UQ+J`yZ|6TXZzR$>j0{GbWD7 -zirH9CUk(-+c3Gmb`Cl^CmrnG)YXPEmiJoD4;I}y3vkzIu-aIMNkT^{Z6)e$F>jIOk -zl@E13qzZ;DbfgbwSdLnaDb1TLlF)SfSB&O-V(h%L4%y}n7@h{YiqoaUoY;kBXSOO2 -zhGU1K^;Ri5fFtGH>@5a}URvkXYj#V3Yr-oWLwXey(JSjvCpyk36w7aYaT$k{k{ZE~QLso1oD2d&b{2i;W#E -z0}t3oyFy{So@VZc!+4a@PglClS?#P>o}QU-e9u6Mbss|)FE<&*^};`+WB3ASM9l{U -zp5_gvB0C_MtqwYbiWhnu)Prt)+UDR~E)0r|HV5P>UKe?`zAwf+_*Y=XR7&hHXPqUt -z_*rUDTnn=W=Oeo^)VD9y(C6Ety~~%mn3lbq*%r#BKu5&6PaeIvj_6m(nsH)s -zvYpMjsQfU2obA$9POi0&Z;V%d#tWb3R$3t`(#ft>Jz#!Defl?{zhp{)2XmIVIOXl( -zmNp=AX*3)++B&dR2bxr*Rca-;#w@SX03Q3~`g^A+=C7B^7~^JHv?ra=Kdz2_(rp9M -zpu5M?17J3KGL^FhTacImXvk%pz;R2Vy99s66`{rG -zX9W|Omxwr_Gk1acBs-Hl`$^(z{{6@AmFD$TcCMvgN83sX`Nsts+VdsGYbB%W=BY8+ -zFOFh&WbN$^GiK8%Mzt(wTFlmbS-ICz2)~I3vzbQ)xX;)RmJ>!fJC_@;-}#u3J<$@$ -zM>#llS?VBH-UT!JWlsStOur2{2#6HMy9J2TJ`6^f<;)V4n_KgYF6ia+W-dDI)g!W`S -z28gn;tCrw4w6(JN_JrB6k{WjSHOHn%EABE_C_#ydkd?PWksCa721{x{R5Tk)mpB24 -z>BBB|!2NGL2|RgzeF2#Cfx%4 -zR|moq^9f{$sk|YJAK;RS8ZO#|?_2UiKe0)Je&`;rIl1uznrjxU$qXGS&aoLG3<@Is -ziuPxi4K|eHv49)|GdiDLqSFs~GFmc7NFBA0vPt*5s4xTfm1sIW{>f0*Mffe?YieE7P;yAS#FSx;We?<)5hLzz1T;w~N -z;wRa}lc!?j;783Eh8-=7MyFX84q+pCQa+1xCv&4io!phZgZ9N%GdKuH4PYA}$<+F6 -zp+@);iw9h6XN3gLX_|}XYR3VK_2KYsiE4+wUmUD13IdEfVJQwd(2pOOu@kJvHE1MYbnfje;!}tQorNPq;8KC&o!cYxf<^G%5!>DeU8-YD1Y;MN4zWaIW -zQyac5kxgTR{3B8M_7RB{LSXW-OZelX0}`fZP(Boxp53yC(Q9HL1e3vR!dIy27sW{_ -ztYW`+MO^*QaH(n@*8@4i&eS=+H9;v^LM^R}J`*`LKAgnk$A1wX@VOmd_1g)8c4R -zG&z(=__oU)e8bx3?ZWH1_p<>Lp_wjLJ{N6NkREvf-@6|7H2v_;l#7aU%Ur1BqRbD6 -z*}hP<+{r0mCX7Yh?x`yn9*^u_VXd2y#$yf>cE};SG>gPZ>%$C^Y=&~Q&r@BWX-VtL -zoxP%68gpL~0obwmbBWe$q4rPR$cM19$CRS!$Yj}mhOP$ST?>riBN7|l$P#{BR -zU04!GNBx(o-gNksoWxXU^Y{7kJ@mY$&mZ6O*1pg6xX8oNVE47y7WvpL!0Xm@<94Q} -zLA3T+?tXfO)7j)C$e#l&?R^#p>cjHjb4hpdz!d|_0I;!H@p9AmYCT?S+8>6XSZ(kh -zt2uLz!MYe9&*;Fv&jfwy)BV4Uc(+UNjmn(Ty#F-WsSlf9oD!hRvuCl`jZf!cMO^U; -z)abTn^?EpBWLp%rQnIGQ-ZahvE<^Ok@AlPazufw%59O+4fW<62G^tPfC-Sz{bh{6Z -zCEG#0rb}i%KZV!Q3^w>v=LfqlB~SQzimB5}z>N6*n+^Z-C^JjEn)z-S$cJIiUcoux -zmp|=DvoWH!uOFJoZkzQFy($^WKlgy9bx*ucP5XyUG;P6O2e@W-h0Rj#b6cqL5>NNl -zxZ>{g_V&#z^672(&3~Y|z=q-lkknn5h+f|px(+HU(`|N}AI;VNxDR<&fCs`3#Y-y$ -z`Ef|O`F1=|Zjd|nY)Sh3{`WH9`}DHDH*rx$38hnmq|r*IoO~)XH`TR{2cgGUM%BBo -z4||Gz()cID?Oq$ -zqWSzY7(i*&Q7wyX8}iqX*H|E& -zT(cYSB0yw_uU3S%_L1=z@}^G1c;}+7f&jePh@1FE>Z`YoFIBv-ANv%urf&FlU#!@q_ec{M?7+p)blR|)WuB79W3`h2Kk0Cn}8laJz2HH)k~W0}(% -zOKC}P9)1}g*+t^}cxKienVd3TSFlq4Iy;ryDIoEhb$|VFDhClZ9DGr|hF>NWuBIm2 -z1t)c^ubLywQ;5;&9Ri0>AnVbqnC^LwFd{$kGRr{aEgY>J@q3JY8J2fh6D~QTePN2!`W>dK1 -zy<`&*lf7(ji}V%xhd4c%1`F+2_XxypXB%j~mnDY!^+&n`HZ+}Ss>vW;Pn`E@%7tkC -z-euCkW0t4?qR>u#pH3-9i*UBu`WCuLis66V50d=-vf7=DRv)vI4*ojTB&ZGTo*Noa -zi~aRWfJUNP>4*xsMmd+P;_3AC;pqis&O#nATENBy7D&*3eij`Py|+{u1|-z#rtJ0!6xiq -zY>Hcn0@N`+`S&m0hO}q?`IBMcyqG4jjBVj-(WSDtck#d8Y$YlMFDM;V{BydB>LdRI -zNz#jcMCNz3hc1u&_RIBwVxR+e@^;?x?%JK7Z*K}?v$t)i$z(X>FuAa0Z&$lDrN-iG -z>%8EC76*P=L3%Z75j8)r#_2eFJQBhMtl -z>a~yeV$Jh45vP2*_1ivN^T+o%!@$1}8(5Fl`Zh+i*~j<$kSma2>rN)VxA`i!BXj1j -zj3kzAS&=BPi|^lrquyjBTw20u#;^$f<48LKre~q3 -z*~qPCm-F4cJqg1aN>-dN_ReRBY+oKlywck52^0I()HPmA1B8pdxEY$Ju)wfF)mRc@YHLXsFw$vy`QwRyZ{d0+>+KVYl(%ad9uYs{TS1Sr-yk2h>cL^B(GN&ite#G; -zUW=si;=ef+-Whp503Fd#Aec`jjN4j{xysYt?C?w1=xOXi;x@$b+28mqj|YB)KZlQ9 -zobtOIvIF(P&;;2@Kf+^whHuyYXV)zHwFW?fA~jX6M6P2>p2j@qSI7P{QuG5ITRsnv -zibO$Gd9F`*v(>C$yMv|%dc7%S45iqsx~vT1Ud*%}0uWwtBodVEIVLm+3RHPY07x9f -zDR`^fpF4yaD<)yo$P4R_OjZ(YBCAzeJr_!J(P9-Wi5^%F!dmR@sOnH?s4J~jLt+wtee<-4_SQ{TS&*5bGZ?wVCUbAp* -zV5Q8XC2oRD&XUDiAA!X|85=5%*{*HOi2a9-5TQqllKHa123s5slmTA0|2f|7A?8y8 -z+X8h3Q|0xIaZx;{Cd{13{L|_znEw%tGSs-QxA{LZ@f%zMF(Jt-Tp2Ys(Bz_y`4O$Y -z1<)eec{1=6vnZk|XQ)wiAAnou;>{>$xEhQWP2X_{M}?|v`fc+*_56U~&G_FR^Xb8% -z5gn*`)E0qO)9DScJ`!S%TWZ2SR?jAG>krOPY{#QgI@mIL%9XdRxTHGV*Z4^yJnw0J -z#Bk@rHQo<#06MC*=C-<9=tJdXu`AazsnHR2-l+Z<}1f^ -zU5IPvbz;xCs3jz|G74W410!2EJ~pyS8qc%c$yt|`f(QLocCTE@J~*=$2DyX@3Mmw~ -zQPr-LScnTsMhH{S9XEsrNCZ5@SeqPd^bx5*%$ry}Og^d!YhRp=G2306!6_WYUANr^ -zlc!`p`Zxs~;MT9$5qYqY2|BEzkZZ+!dQPl2iVr9I^JScWcWnN1G!j%<8@YllXPSq8 -zr*T>zacKG-e?FnoA&&p4-5?WIE_>6&lK4@rbhVGI4`T~()mrzD>}++O({SwQj&uOV -zR*5Q9zqEX~t#2_%xAYg^(uo5u>b_+bt0Ilf$638Eb6#H6C+FIwqV=$>3vF<9T%E2w -zc$h9a0H<8)Tr)fR14PKC;|D&(4;h>8V>!R(t7qKXp|rw*NW!hcbncX#ZK~aY0a~a4 -zqd!8^^s;KD)7AmHyDtT%i0rBfqAGq}!lGcj>rKzyq*4pz(o@bjU3)_her#kGj(`5< -zQ*+r4r%5$~+5m1mv45TW4;bl|q)esmZ_56%%3{}J0ApO7QKNynY?=3KixG`nHG@8z -ziK;5~!a(?CJ1Am2GQQeF8)Ucj;wsiJ>2xNSDtL&s-*)VIMWtPQo~vr_mecXI1KQbU -zFczv0{W1dqJL`O(Z^7Lt`c?KL@6Xn4rvjwG17Gr!!Dg|5pqOou0R^ftspL0o;o4&`_xyHlwA~qW6GL4NRb`m2-ItP -zr@_|QA%orp=ftP~s-Z$zdhCkboLLuS##7TfkLBYczEJOi6moH6CMJa9&)Bsefj>zf(Qmr!7{gXWS##6-6X*yb -z7KY0G+W{aB&X_^3?)ll`HHkoyOk~PBK -zuWaHzh=-n-P3;SROOH0i3c30bR+NLA#qXB%8^#W}?lJ+cL5V_;n3oORGl~14Ygad^ -zPl5oqyV3rRO(;Z>W5sNttk3r -zx-RB1U6E4Bru?hg2&r12&D7f6DbM0Zrb;N?bD&w$qwSw4z&riR=f>Vj;~=|Yb$UGPGx}z;%1-bD}_5lVdd-LVySWM16Qv?zm=`O?i`#pRb -znJ3Z-m)!is^uzjjDWK+g{lmY^azwLR(Sni(3y@Amh?TBaiQHkMGLr&KKd8>YShVG_ -zT<<9U%mD6QCb6ZrA`~Pc7g~V|2=&!{wuiH71`FUg%f*v&ZL2xWv-okbke89k9U$nN -zYe~ZG(JG2~r}o8iV3+feSI7lVAC*7Dpw650omaP+w%`}|AUCRV>ec-ItZ -zx5T1EY@m4br1b5WjMxB}UWD?R#L)x7)2-OW>D4L^o00vz+BoN|#sqbh9L6s9W2`pi -zo~#b=igkXuB1a52A3WJ_uYdo$4I~;!ypHDEPX8woMHbkJPk~wwmO${9GpB?LvOA?r -zYNl!r@Wp&DQd__7%hhphaJX-a*X^9cVMnt}qr4pb8t^2vz>sCD+NEzKTD@Ayo^8gg -z&6W+4g@VXjLZAU3O8+?w(As%$W=(o12-?w>*<+Rv(@Ipe>%!l<|)i!*ys&4HI*GCGjNN?~>-H?`Gi$=iW;k)rw7rq>o; -z-n=0TNqoXO$G5)HMk$i4bvJIZF+?ZG^NiLA@(0y5@Kw%<$9-3WuY)ip68W*;N{ -zePtKH8izU{lYQXJhpu5ubA2N0K6{rQx|hr3`3eo3KjnKPhi7hGB^}2)TF_>faL>7; -z&n@PqwLN74$Y?&CtTzTRzGl+3Jg{`Aq?uJ6WYb93YDXp&-8H1IHcVR7kY}`S)TO#w -znuUsLzy0r4{?_aH*r%e4GBxc*`?Vg}5htj)&OJn)b?fNiffA5Z -z-Hb#ntKpo+gW5thujil|&z4l3Dj_Jd(h`qs=E$V+Hh5BV?7NHG80Pp%93_`c7F;cs -zKRt*5havcf<}SE}dtmbUMai=ji!M)L2_IOpa+tCI?7uNPOV-YA(aE57Jsf4U+XL19 -zJpyrzkB2Kv5kpdWP>3HEAM*$Ka?u*ySdND^M(@v`)_<^xpU|5DIC2mw6)~0;$O$p| -zX?i9v7ov6RZuj^XBhQ8F;#P-Tr3=e&nOH$a9=KSyDLJY^2meIR%K?04?=n5gBN>2y -z(1fnsJpe%0lxcLw5QYE;(tHPejmIh=COg}AyCHCX<~0IiJZ1HmzgQ*-j##Gl;*pm9 -z);J-=5I~|g{>2j3i*PeDi?h-nlpB|;6%%WhK+>RJe~eM)`dytr7yGvUCjNPbvBW=r -zoZmQZ3E&f_k5jT3@ftcO;O)dIW@gsXA#_Uk;%~8}Y@7bZYKPuA($*^Im+NZ(H}pu- -zV6BM^sm7z9L)Yc|kTv%=cYk^$$BT{eEe54`YEU-IPL33W5)eYguBb-=PszF@8EKV% -z4TxWqLa$FIx=Idt=z-6hlVB?IMP}v_cjc;lMgfW0#aWa3fLkN#b`%M3r(<+SvE@3dD3HL{n{D-f3@H~;v|CDNu<5Y6lQ=`aD4J0q)0 -zReN~c>^I22Tu907Ib8H6Wyv}ai)Z;|G4+9MznU%XPTiNw6FHnJe|7v>UQ`yugFM-X -zADJh&aF{76lNKt7zomZeW;DJOo}f&%&F(2p6-(ZBojdY$pyVXhGLbXI!bCLf>gc$W -zbQ7}|Wc)9AnmjD+A{zmy^!wQb#bxXgnr>ZfR&0c~TH20GT^J8B(IAWM)f}h))n%K# -z08Y~JesYDYbnMe34Z0S-a#rrT%lGugZ-8XBS2sYUp*g+NCFI2p7%&~0-OE-ApsNeO -zQ+(2Yin)xt4`>yUd0sJ3D(AcDm(S0t3!r}*>$%Ox5%8^pc98}tKT -zDHjI{HnW8H1c~|3{(OkzIJxrNkH@%KSAt&9j|CebH%cW}QK<%fa{Da~ -z=>{0(Hw3R=kBl_(|H8Y-<(%5+;6bZY47Qqm?pqHf2Qx#>$u~aQS8QOIdI0zC=&Wk*rulqQ -zb}T^E3t|GDsgMb$&!-3gN<$gl=y)6nFtDvi?>ebvk)dKbKnK5oqT#2vX9POyYsD&y -zEvOn+(bjcL@%W{^320#P0qb7y=|gYk_U7U?4Ip~R#9S#d2}jvE8jwW0s57Jnf%1eD -zAT3B3jVa9fUHa6bCOT-vFgrT<^_mNY+ -zSOu)I_)#^7cHI=h(pv<|@Waz31sNwHpq^U?`^Q6rlI8OsrM?W0g1oeAn-P`>oz<}+pJ0nQ*g%=cDvgRMqt; -zMckevEZiq%Bj*3=!L?fMN;au~{mUl)su!j#uj}A_O0q<-(hUr^wBi^TE;MV^L62PQ -zl-EOx;5-}0s8*Y0?WVOEG|hVNbyZvk+7((C_@Tg6d}E(H`VwTy8)4ZWnuZ=NZl=%41-7f-V=5+Oo1Uc*ty!#5_XnlulxMFA|V;p2gX86R| -zYfo;4Z-3mDDqJi&au#rG*7pf!%P{t`n70ca+jYL$W-MP-x$H99adihydfKV|BhOJBK3NY9j{2 -z3Lk;np3s$}Uy`v_}ym#el?XnWd&!b&if5;LH -zlid;iqhiJM`^{vJvzilOqt*3J%l-xi67~T$y)~7|?52P41RaR2Vt5RwJ}8l?KS)IE -z^F3$v`CQt)Y5E9?2fH0Khqmap)h!X~5)#3D=10UbOPJ^Ao#s2dJ(p6b5{Ki+T)fT5 -z!03-p3BH6!aoP%OQuTHP8yGWLv(5GcS^tEZOEO$bvp~7af{knJ;2*%l%&Eg>N!a0r -zBQrbiubkD;xwhXknGWKj1AodgX6NL|;!{F6%^{b(hF!biLB*+lKR{2tZrW)s5;o#B+ -zOjO;Y?>`ufRd&9DG9LSm^`bF!Ij3VNUon&!T;`Umdej_+7pl#8W^&rB@&WSXw0v4( -z^CdxSXgvXrzG@s5I_&bLj1cG^wrC0Xdt{7|Y#cz~xApn}t(u|d&DE3nEH}H9?sFg+ -z3Om)bPe`HP0OgG*a<7;qqmGaZOM -z@_w;Uc+JKEqoxOcdM`*r%4tGintJ1qO}+rv?hu^5WG@2^?$}cRML@d0z>M^ZMZfx< -z3abHJ_XBqK7LdMk|4-N3;K*Zf%O8E*+^Vbh8VFG`)QEi7a%!pBJt^WI=sxFyp8lCV -zXa&oHeJ|RCREmpSJVj>qFockJRhn-C=V*mUu6hgzEX7VSN~oXrmO!V%=xeh3f<76s -zZbxqakV%i{DWS^M@M@GTTKmu15|~E-k%@r{rZ$+*l`YQMq*8<-r}J?B=otx!a(ElG -z3QzE8dFdjc;XaSNNoK@_vqVjGt`Y1-655ae%cq1~O}ggIiS;kV8S7c^XvdPMH*Kba -zAu}6wyY-qkxn&)Uyib>ZBnb&B#_03&O>f;Hw0al-Up_%k*wajg?_E^qa3|mfZNb#V -z%(lDKt_|d2;YC?@!lGr`;gP+Vre*B9>;-rvQy-|vY`r@tQy@4Mc;nFDrln$kCKQA4 -zue^7ki{mf1FP>q&@0}PI1|ij!KlGG|57@-w)MQZrpd#e!Xh_DHMxuhe1N{YbZh>o> -z`anRPB)i0|rK=~Pc4|WdoF&%DT4Ztwx`ok^1D#GUKKHUXHby~_Z=M#Y_mOzXC91A+ -ztK@*k+TY+SA0 -zJOw8SgxUED)V}*xGB4Tv;QonPS~YNYnFjZ~2tqr83mdHANvw(glEMc=n~JobUL+-z -z%CQ=ShgSTAq3y2{RAtQ=J$o(CE@4Ht-@JMuMz@Ehn|H6R434q+fcKk2jdeZJUWToo -z+T&xN+^eJ4Qz~`MvZIlx>S=5tHgvpAF!4uU2n?VnWwlsrFbn&Wha(4yw*(m7QoAD! -zvbp*!yG$V}8qDGz7>jJ$m2m -z#bLn;%W&rKwSp+$^^j3R)F(8%Yqhb5I+Z+_<+H&Nl3cG|mc~uDBO(ZOeu2Xtmf1tL -zo807=MhuK7)YR`=H3{#D)J4!eR4> -zKO21Lu5?i~DA#l?KLEkYX7F^mZ>Caj=p{kg&8|*H2bk^GL=_=-N$lp~*ouh; -zmwKB@8Ua*Md8L4-{NC3S(UbBraL8yreAUObUQSHRaObcMeU=Sm-Uok{NL`6fB%XxC -zNcZ&ek!pa@?8D^gQ~=L%n9e;b4-X5AQGb7diN=4IHd -zs#9QqI57(e7kGG423eAMEGzeP*-qtltK=rDPgT*Cuu1SI`mOh@DP|PFxNli@HhhFn -zKm -z$(XH$lYoKT(}(>MDlD?|+;e!iqT%8-aU-@v%TAAIbBJ-A9R(q?_397VZ6m5E39fr6 -zi88S|w>7`Y5mi+Zb?Rv -zfRsvp1P|>;!M5%p;S*^GLR!3?Q{v&70n;#C9p6gd4q`R3l2;oT@FpXyTZfb;SL#lw -z!*&SLuTq@QHd?V+l{2Ke-$)r&doDr)DvDTAOHPl=D2B@3SoSQ*7P_LMW=_-nW-BUn -zr{Y_aRDIfjnaq`pu#)h(DCT^C -z2rvF=8>svXzDe|USXa@y-#}nhy;JGPuQdkyYe-uTv3Z~cjh!bwBV?2sw_Bebb+aSL -z{B6b!E8%~}$ku%>e^<1IPIE-%y8{ab?Zxn~bI(MUD<>$}dpFO8{EUryx%>sB`)2q7 -zrNWbEX+tlL?HVT8$d;5j&m@iypWbOnrf_)mMIn|Y;r^4;5j9cPkYyB7C+jeug#u8k -zePt%YME>k`?_2cr`)ggB>J(_z3(AA$$F1$*ELVo8p -zn;+}mw(i2-9~$E7{Of=nH}ec31B*Q5*Z(He-O?>A;Rl((TY2&wWbPa6Nk|DR7U1{_ -zzdp3D02zaJC*05{fzDji2gS8C2eyC2_-UjTc9i#rqj=-fH=C$Am>iWUv!fVQx|L&k -zR?`J;W}i#&>pr7-`BqcdzF0aivqwner2>dvR3%EUcR%q3YuB9i3|&n}PI|+)TV7F6#0^)t5P1SZx*?FSu3f&){f8=Q) -z&q&Pj)n6M$WdVZNIjY6=^TQREY+kAN2?ds~n4JTeASZ73{v{?8{mBZO%&W?_LN7zLa&Y<)-S?Ye5BYJYwo-cnb6krr~dDGIQ2mh5<@=teeS!8 -zU?u+Z?+6GhZZn+ZyR{K;{)r>YmABX%Y`{)1l?qPw+nkJGNQU94Y39Yj?+rhOhQLd0 -zhkue8q(l+vs{ti*;h0A3UO?OIc0`fi@b74;x7J&tZz4+-YH6p+vRTKlWf -zB`;TX5`EmD^FX}Y4=Mj}*=6~xmv(RB#Ri9-2TlhL6P4M}4dE^Wxc}9RQ1vyR?j9F# -z7~*HYF7eZ^e9(rAdg_X$-yVJ8F1XT(>zS=r9LFr{*}|!3Ka1V*yg00BtCF$R9xNwG -zst`Q5dTAIhWm3?4MflqdMzRN9upE!{g4r -z#(B+dr%YGGVLAa{leH5SIg_CR+DSll&2lUCp!5)Hy7jFX&6iW=rZ48$swVUvq9i+F -z2yx3A;==sx@kh2$`J%{jj-`!0 -zUVo!kzc)fDE^gF&a9kw1Lu}s*J>*x3j=Pw0O+&Ni7n77Ocf0^(qyxf -zcN#-9!H03J?ed)6J3fwE*@^)={X@3z)uClP8HGb-Bkkw0np6BpMnN{%HWVve`nSD1 -z=t@r8df$6w86*fN+_P&AYE>(eJzoTdTJWSmF>4==Ba>|ZFCN-TPo?AXJ%167!E5$> -zAy|UPrTMf?WL^9C{AV7ea5()-k!@II0~@T1?0xbh=k(?Z@i?}5zO&lbF@Un%zk18R -zV37VdD4P8@K-u+4{1=&3y*7SQDAqI}L#L9l@;(HI>WFX>U -z_kMo=ZAFSi;;!$%UBzD{8i9T}tktO9Ud9xNK6t>^Sx%aI&{JX>vo%}(rjFF&7OF+7 -zCPcPUZufc2-tW*&;oEHyBmM31;}4!ft_3Q)&!50S0lq6A%Myh$HouA?omS=Nl$W6B -zf$A>`Uh=X>IzW+|^6E>xRF%Y#7o-YYl6Dfw>nj?$@`nLndmfPWc9=$a5w8-!;tv$u -zFXR}|O=L;B&+q&iDfL3)ffA^j5Pr#v6%GaJvv@(q0{)dI!nSzYM;v0$Uou%Evlc)x -zu*FiI_vhzwtSHV+8^cEYruXhDTrIT&?)nK!h-Al;7f6isYu&X}<%E3elY!TSB(7>e -zudA4e@cm!E{S)tWGR;T=B{9Z>R}S_~RcJ<&wlZK-wLC -zr{ik&qW_f1x~2Vd5f5SKMS0X0bO6yM_t5D9D3Q$W&)%M86PiQGN%3J!^FV>q*0J2Y -z1ii8sj1{KpbxZPt{?V_!UT1hfsoWmVqqotT!{;a8j1L*fo-}$+rOt-?)h0fw9L}GqaW?SBvHwWhL533 -zx6{LioobIs37AvxKev76 -zB>{flnGa?cLXvpAP_iicGbHNOGgB4tLR63qjojX-R$2V$L2VI$Cx;*yw4iKlj^+@9mgT3*aFh4S_ -zGaVX! -zEr7u+pfBF;-s5ve-bNOcY#)D%-`IcsGl|3SB^E~pNVY)P*Phnw2CA%(t8knGzzbz{ -zbtZwF%!h6pCO%TvvV>;%g!AiMR*oGcKJ{=^H0YPvO7Ls^=Wo6tCcw*NhjpC92WGw8 -zO$0wORLikDYj@WVN6^hP8mh9YGu+3%L7ry2Lw@fSvM3l@B-S>UHYI$6{CAop{B@98 -zC((JQtpK*8FL7{sATR>M`ONK^vM6_q*tdS*ik7WT_Q6XXQ^~v99Q^+7vXA5O{$|{P -zQht9ocMaDc$U?pF81xOk!aY3k6v^j!8okB-6{@KXmbPCw=QLbN8M2|^;kGr -zxV&GN5Qlp>l6R-<)9sElWTjC)(xq2Y4eU>x5)0Iry)N1tS)}Iv5sCTWu}4`Bn(P|U -zAZGkf_Eh)rE-Uu1C~U(P9Dqe(%NG<{|KdV%WS9pwJ>tc`)Qy+FwkH${h{w^SonH-0 -z=Dc&6yCdXSXEZB>Z};iv+TM|GL1idrQDIo)vr>)ovSU1_DsdS}TxOM`xUCK;mR)BK -zLqV!u!I+x61^MW7SJkzbKtGKZzQJ1%;}@=OM-TNzO^~QQB-m;1g$DfI&p%d2aw5HZ -z)HEV8*m468Kx?#t7p)LF$a*kC!OG(39U}>_ -zTwUoa{7k#pNT4;~8Ae&!pg;|ev@8H=P4?7evN?qmddU1?DyK#I7F%?)nKNpgpL^a?GG8V@NG?I-4`t%xPRUZ2+QJ9%Lgk6_qauC;|pD> -z!HKN^JaF*Nn+9DeD7=cf`iUiiH9FaM7jd3s)n3-onR-(95XVH8$hY=V`Qv%yB -zXn14$ifg#`iJW!LXPrPhYLi*qDrH)<-bE6&7N*4>Qd?PAf>H|0QMCYnM6u5jxr~*m -z0|)Ur&IAxyJckLlEde)#55Bcu;4ftf4!c=PV5OcE$XwlH(S9ON4m=9hOmuqZhYdd@ -z4Z7vv?mCG9mn9@&^9^Dt;@EJo?+P%x2Pml@dBaKxb!ym@FPXm6x5wAd>*s6}bv1hS -zhSGQFpX~AS`}cp6s6Dn{hq@xS1g!Jgg62Y}7D{Sp+9+=Y6R;1tA%$_9=E@gMTzPgn -z|Ghu-?~+l!^$FCT{l>qN{;>?}Eu9YV_7;wFerx>Y4OGld?}2};etmuW{QcAzi25~d -zYB|)=>W6aT4>8@&-h}*qh7{^E$PeSc0W*toG;#ZY@!~D=2KZo2 -z8Ad5dZI=RCL2Eg4VV+|s|M%Z;pPe`i?PjtO@>)XJCpsXWHlb|yE&>)O^*}sf=L(YB -zU&p4sl)0ytM)r`XHm~z-MM6B;I9KtLp$Me!9VmM10{EK3$G1KFBv%?7b4{J>*dyib -z`{6lBc@Z8!{vQ5v!gAW}N`bEKx6(NikWI^88ABel^s$}~h}4j*gM}XYR|5?CS7uu} -zlrY}*MI;Am4*C@ojovyl$ZaKWB~*wyj;LO+(rb(kNi1%Fmp#P4>W-`uhyBgQMT-m> -zFvc4Yi@F)Jnw$Z_mqg8R$IRKZcs{B*^fl56{zp`%oRf~Zglez#tp!EZ=#@ylrw?B*CmH;r)Kpi -ziRUFXr}Zd9ie#5-{&FiXw;8I-Ub_rTO$opJ(I6*nDG*?%%WTkrIv}ryX{(1sYO@Bf -z!sndSe=z(m_GOtN`gPYJbl!QJClb`llI;p%uU3gDmYdsiWNQt#{>zh~@o|8V-q3LX -z+OGLBLbIZ4J_1+AZbF;7M#~RYDCc -zc0$s4V=pceRn82)ZAXKD^o+R{bX$^p9P@g>ypJf^yF!^VqBkZ-euYtPV>3KYucb_w)1opaTue^ -z!B~tQI*6HW<4hqxTb^*;$~@E?hm>0<_BAa)efoAUlO|nnLvXYrfKWGCG9K95HC0FN -zK`xAetlv|W@zK@FbOXuvi%e#}J^Rc-lh|Ut-P5%q-BK&IKrzV4o<{j$%@aG48l*CY -z$`(qQt_s7*3q#kq13}Z?ors1=%ew{Kx9b*?^EM9z%ftEl*H?etK)cwt8AqB2)v=Nr -zfOboIWpteH0ZdgVZ|vD1xgsmEeQci5KuRKA^$N^dvPWDATkMtw$RRotGczo$bLSw1 -zbSF_fcVhkY;#yh21usK}ZJ7`WYbnZ@ehELm>@k@k%J10N=hws+T}s)Jd1`X>>Ei)D -zyN{)(0&)-+Mu>2x$NpALY?+h0fe;q$?3n0eOA28iV+IUow@De68ObQupOaQ^cYuO%0Yt)pY1%5%1=; -zYVK9vdM&Ay -zu*&F}<^+B+JL^M#f1B;UtNxcN@rV8GL!`!pNo-CZB)esA9NMqAPCQ(EAo)}cI)>Tk -zsr!-=PA@yOJQMw6NsvbjfBWq>VuF!62Y~w;#J^d+>=0g}s1vh@6F^eL*7 -zj&sR)Zb46g0ffuk^qS9Rm5U-Lc{a)}lsX=^lBB>(MEfIW&EW(EL$FdwCyptDR{P^= -zf5iAxNgKEjC<~_8cC4oFe;Z}m%bQ`@Q>QAA5U1t|x23>Fv9XGdDS%PB1I5XQ(8fNMsPT8XF<|8Sse*m=nO*;ne?hY`Hkor0AA|KT -z9}v2#`1|j-9YBrpt)+Wfx4JxAc{(HdlC&JyfgW*}jf#ALqL;BC{10p<^X-x&g?Xj?LOGoT2Cw`=g}a06Wbk@81+n2r5M*WMq51pTVWP$hwu -z!D+r_PnH?`Ep;7$+-zB0Ja3J%$H6w{m?bMH|J#-J5*eG-iT|h|k11>1;raY4L@ZV| -zoZme{SY@t&qiM;#wsYJPFtS5t8vzB^6sk};%yS`nyQPo?FOXxCUB)m9f9_${{@`=+ -zhn#loVkWeD$?nT7@e6)sNCLL~;sS{n2Z*(wi1K8)tb@1}<>H|DS-phMjpW_cdvk7b -zci^U%Z&>_HDhKqb>JNw_l|$NPbYYylhOptVmnB*M1G`xc883Fj>(?a|UaC$u3Sm;< -zdMA;oe(8>i*Ip?&-o>KMrMV=$!b5zKGGEhnS4u$Vpupdi+BG}UA{7)lDz6{EteAC( -zaYpNJ#qid2=V^;zQ#|$R2M02aoqzgu3{bYTi^%yCkCVX^CB{7~#FNA^4}25Rkmf$V -z>^95LI5mI-JQ83}SFy|cQsQp-00sM+CHVSe$>VBwi6;c55)A9Y8kFBy1^(M~qW3#srA6L6D++ -zNG-^k7h_ol5kJVvEBw9^+@bZ#z90`BKY#SySEcZb-qcH$HYbcc^PQoO{39LJWF*n? -z1&eXCZvf}kTR{@g54}XlA<2}c->+W;TC%Bjo2_Y$Kb6pM>SI>71Nm8*tNK-F5Z2p+ -z=3&_qrUMKx+M~#P>T%Y`J`5lZ&P{JWmVB7}we@T(!S#LO>p-LUFIHE7nTc=)fK}(c -zS};hgEhSMvGPJN$Gq@Updo0h`WRO+xj^1^|D^Kj7Z-u>}PWagZ=Y2nNuIsCs)!0qqupxT8o~8H|BJskpzxfts~F1aZpFei{%)s;(YfluUPC_Il&Y86))j -zX@J+g5j(N%TRreyyZ`!3ajw%(#jk4bUCI>}xr?$b0-({a;$(x$!-u5P4(3Hc`TR+u -z&ZRyk`=NXctjMsYEDOn>?OnMEahx+9+t%Muv%l2_nR^c?*1F2W2BC0u2R%sz*ygUk -zAp`I)JH|*LsqCB*LR2?6#`vfXmTG6L>nnpkQmbew8!x?IW0i2_SXg`%bCIF3W(1dw -zS0JsO6x~qR*W?AO6PCUC**#_;FZ^383g3F*r>l#1!`&27RwU{)jauEoE8Q%KMT*hF -z0z~W}$XJ#G5FX?)btgpO_=zhjH=ZPFEquoFhhI28XuNVTrY2--Q-O?@_`j{ybW*}*E@4l564+P! -zHQ4eA*eX^rj%3ea1;*zae&-MU*)Q9U^dxAlT;8?*^7;cHi%Z(S>Y|S5Fxjs{Pz62R3QIzrjJ- -zxP$YGr!b5pVk^{2BnGa=83{)NiQBQ3>#$F^YD5s;KkjBb+oDx+2>NP4~pfBzv5{W*%$xFU{njNpcBLM#dV8Abs0gj8#<7t0D -z1d{X6ekDN}n^e!gQB`8ThMK^}pkmEG!Bqcc(}4(yu0oRg_ruxwc%^N4*eX||U;j`g -zlCsIc3*@73Hxt*Wm~zuA8 -z6*n~u#1SeBY%O(zT}GnR`)#FT}pkg=C2 -z!?ircvKe@7JZuJS3hqP7_A7|P*XZ@&K3nEo__BdLoP+m*S1;oV_p={7N2Q{LG%{J{ -z=_+GzO`fm=i_F626W*mn4M@l{KeeF4=O~KXvPz#lpy^YR82E<#Ob*awsUdtTTBPIg -zks1{EvRZWg8ooh;om(b+!F)_R+Hp{c(-~&@8@V-!a%57;WJsAmaoshiVP~dvoY+l* -zCH0JdZ2?U;q**#--7;jk5HIOjQ^unx`C0%MMyP;3#$g$WVU?bT}-M> -z))bZ-#D`(}0*)r`#4@ -z9sNpe-+jFh5lNlYED6^BTfRF8hh17Us -z0iX0Y@~T>Qmye;^>UQX}79r1cJ4S3mGOW40@=WP!m?Z6^ly8+9ix_w@a}r2A{HAm& -z@tJ>b`m*{FXTkgLzcQ+R1PsDr8l72q0*^ek{At+C;L{k&TtKnIg-Ot+Y8|)o68%2~ -zGy^l)-;i*dd_l$7xX5sL86_1`W1&1CXYq-%EE8ZW`j%YZk%;uN{L5#DMDJ>%^S3{b -zFGI(rg_;4bjI=*LSo -zD?CYr-YtP@Sh0_nJoH!KVga!bzXW7>E%@Uks)nT5S-n6qHslH>mujz;N_+ -z+$>r<+Lz&5*nUb>aCwPa@nz-ld#^&9Q>heQm$0H(3WAi7{YY#A+d+*egq?mF=6tj% -zt{~I(Z-e%8P0fM_efKx}@s=@hXcxYyKAZR(|0Zae>!@{TbUo}@W^4@=q4^ALTqSUA -zEyb$LY+c4Hy}B348f=E9Bq4C0rN@5JtNK88h|Cb4@LI$Viz^XYI(cG5^=+e?pa;Zr -zglEyoetP&mpfb=BNoVN{P55t_G!O0=49V!=1kyF4Bn-r#)k(Pql}{D(46Tg^|KYRH -z#(B0IH0kBF*(bH?)gJhPB@?vC^=sM8MdYwY8fUHH2+PVN -zfoNB2!^s+&0=S7#hsYRYW=*a!4k)8~H)pY@N29p(@DoHtiP+I~pOu&{pxcPl=q#2; -z2S0&)c3*#(1KKXTxC2=k1R4?Ip9Cj0ee_~p$74vl^U}lxJO7|In_t>jsQy%2C%9ZT -zZLn}r1bc7|m;tJK3AiC3I^%oH;ju2w3FfVYeXwc72W7Dui6cLe9VxJ}#8l_kQLrB- -z2jhn7(T|w=QD(ULrw8=Qr<`@t2%yqGLMuASXj>=29A)PMk;G`z&Bz|b7iaZJGtgoM -zZ#Uc&!WV;Y$t;?5%XC2Y20E7Fv5j+1X*{B=WaPukeZwIJAjCk%eJyllQVRB1J#40AHfJEpKM9C5uqavS8U*Z7gV -zCwJ2}mD!pFoiZ3@t)bZa)RHX<+^Fuv>ZOHUNAV)bs~ -zql@($4;Ki4KT1Y;e68!B!LwQ7Jb@GJ7BY$9zCf4;m30Tew}2m0>nYy7jlq`1Y4?ZT -z_s&k6?I>08_>x_0z1yZnbrCuU`f1C?lGuR~o^-k51|o%iIN+OmHu<=*X}4+H9GDZV -z48gUp-$hq>N$OY|vKac@UpVq8h=0~hST>LWeCQ}s;A$6$BBBvOme!Y>1ls*V7B-C| -z#Xc+txa@qVLfp8LTf*jvR&xxNkGYI|XF3q*4&enNrzWex&6V8vB;i+LQ-xfrHxtLt -zR;)7mBCJajZ+`#nHzbA<(!zuDS^m6&Dj%YWhjwb_$=L0~=Ji~zKQlh7^D>WMO;O`g -z>v_ri1>92x^IB;pv;Q297G`fl#cy5138|ZxJ{u~N${TVwtK4yR=~_M*WLJ|+lBMx$ -zR8TsQ -zCE)(}`ftCn%Bxk9iDNF-d| -zmlwm5)QM) -z|7w!1nB2a>(8%%rC -za#0%^PX-S&pdG^EK88Nz3zD>Ub598z&xIl!csz1ofQm#9;j9%D*xfo9xl -zW(HqWc6&LvS1Pg%=%iN08w2I?1cEw)-2n15u#(@>oP-ki1Zrry20cRf)yE -z%Am-R#l6k_UgIB&tLtqrK&&VGi2;^6Y6pd4=dw2Q?yJ5S8_=wT1&G*1Ca43e?rFQA -z75Y*ihpq)&D(VE<&Cm2%EmM#DiEJwDKe545b9&1L9f6HJ&Ayw8hzECzdUw^@Z5=W& -z8#4C;Aq(c--6RC*5X5k$mylrvO775b2_#i{9gh1l-wze_Ex<#)!Yf)$GK_^D`qUgK -z7Q4V;xH#x;R3=cd4-yns1Ej5kn9N$|upc51u^MXunrN5xWxcduO0WZ{;3Ke0S-^>u -z1vEGq8=Y8B=<5zeRf%z8ez2IC5|Avir!EGh;Wb0isl~SJq!V|BHRAWb;?4DBEYcDIk~!Ne1gyOyWsLdzgS03l*cNC7Khp1asr3%>=L6SSoFs -zsBc21Ii`fZIQCi0W^tSX#NI$Kv6TRl93v8lmQ4Zckh!!LMxm@9{hoyBDLTuhR$Z@>TjZx1<SB^O$Sd`_(rfr!J%6(b! -z^}I}m0KJdyv*r1s=Nz-%7*4^+N)}2s{WD>?vhQyo|9^Q9W;&V;wq?(K$S#y*r+BetT5j1$?YrE{&fuDClE) -z8Hiw?z|`7#;?qtDl4*7cXTwgri2)t*)>{#%Xm#xP$yClGAnwj_A46*&Jq@yTl*zqV -zt+vsm01r+b)1TCl+6Y~YSa?N|mbQe!UB&jo_yn`4wy3xvwbaFc!9hHVd&J^lf88}I -z0raADIFRI2dk^$Mp#eASgM%Hw^+gW=9(OiD2V+5CaIE;sP-oiJoE;@~j%U%6epbh8 -z865h;H{qFO4UcZWiMOBzD<8p6q^^l=lCUn7nw`w?E7%)aYlYw^@QrzTcfvr9i*^q7 -zhr2Ta0{t77QGUx1WZhH$Ya@vMfs;^OB)?%>;kcpERE(0u!}9r8{EHy*h1o8Tlp*t< -zdq2Pe<>?N;01in40t~X4b}#&}ciE~@X?bZj-K}cIS0)kuDQkXu9QBqbYYVe3UE7kt -z;0K5o#d2OD&F!~`H3?@(?95RXlx#brb&$cl>W$u4QifFgpy*@S*VX%25R&dgy3)XV -ziw=a##1NX*gR^X_=#+j;X%?fJQ@fb!8&FQE17ESH+jI}+a>kgx#OAIa*r4tPuKASE -znq3lBv6deIuDMc{RtJ`pr*XRk%9UKoO3dt(hK?Qf&s}y-DrDuT=Cwp8><8jFF4x#@ -zLsDS|2okhN-^#xA2p|V^i#20zl*JO28wp@hJrukwsNAEu9YwedKVK?*c?h?=C(d4+DWCyZZ^hQ@dco5iouGAjnnJGa_+q-q*Q{q5z?R{=hbFb^fSGNZLvW0y+y>%=){QT4 -z&dXY5=J){7&(Y+N6WNzYKfn0ck9C`EZmbYO$K5MVU|)|7-KpM#B3^{KUeFHOLCdTK -zx@oyzvqfGz^WtZf=WE)$yCnpVoz6iTrwHnvS1&n?A_VVI;;jah`rm5m`t{k2+z~# -zV*q|_!&d+gbKU@Gw)WCBgq#tU%^h&i(k9jPH`wx$F6W~=2h6hA_s_ehMcL5TABx|L1L8eP?Q|(Qic@a@|@79nhJA}lJUD>lC7qFdSp)q1{EGj<>oT||LsBAhuh^t -zTyaO??c>bd)%>oJtt;Yl&6o~0<W4z -zUK)zifN?6Z2?~kn>QC(2Z)!+^3d?CPgF2KLN2it&>YJ68XN$qF*JikbF1ugHl3=zP -z46aXsEbCTsUNXz#K$Ze8`&fSWyo5nGDqEl|V=L4-V!^fm;t$hIrH^cl`&cM>k*|Sf -z`4uc;1#y#2t=NUYaZw8cIRc1eP~?G46b#+W+UzpZWZK@Hg!G7*s_eL4oYHrDC4-)@ -zGUxTz24VhmXsXY$S!n_mI=8Hptgq_pjskH5Hg~n_z=jij5uES3LXG -z0`=V4lQjRl$9C5+>!CJLCqJ6)eWUbXSk|lT(dH>UdI?I;wjbQ+Wj1P+RifU`trRA% -z*%o3L@+v2mq|{inxR-n<_(00J4L6)ghvFrhfP@EKR#C*!3KrR*zVQOA=%_uSb+ -z4wHT18mav*JnJ{=&ue&UM0JJ+4ZS?Zq1kg)G26UsQtn9fnZVih#AC=3pcRxv*JFU+ -zS!dgH*bpdW$L=M|Mh}*l}Q7-P3NvWPE)c&LuGqv928a@%{Ul -zp@HfNs4L)B2t?}yP3?0j(@%X?(PNrEF3ch7D(+D&@ddrabhFXo#HOmK*p5@866PHu -zu1YFzBWvG~{dLY19s`nQou+W)KzWQL)M8dJTe=~j_E^_Wv7mgE_|T}L;}&kxlt^+4 -zq;UDVSdQGUC$fEG9eojEKGT=F$IAdLR*eP9kel0noM0bF0#vRlrUx;8%Bc&KWIv6k -zLW$-Gu+W1FB*Xd`L;^Dl_u*^jC4t@}9!u|dmw=4ps!ev*>yM4TQRI{NP+H?A;G{m# -z(aR^H3rNQ)Yewz?fKc^^nssYIrY`frr(kPJb$l43qYFHr?={(Ee25;4@m>!KDiFitgIZj~j -zi|fg)FsHi$#Eyg?4PKQ8Q4Dqe-X}B5&EQ$lyp+RgmgEd(b(f{--ePONhsFuWWNVIX -z#OB=tO{wn@!aSAKo#jolBT8m~lAJ!*%@ESELrb?tWKV20A?XaP!0b5YwCF^1xmxjm -zk1Kfmx@>wZlY{D~Y$tBdfcWuXH_vi13tX>-d{b;7a72TvQMYM^M1$QUtv=mMz9B)e -zA~ul7f4Iw}Ag3wJlr!fF_VeWg2Vrw!ne@2J=IAe9F(j+k^M8wvv6I(FAg#4IPDdy)p(%$PPTe+>+1t5h<1vf -z?%!kMg|~+uyPP03K+=)}Z$SNV7K4n+js>3ejMfW3zyJ81u>s3le>iMawyDoPcMATT -zc1UJieq5?dt`VB`Us23S?}-wQbGD{x^%&`CPDh{S7h?#(3B4ix8_Au?>fzfpn1WeB -z&qfXRfjtVocz$rQErU2E(yaMb3rgPFZ$uJv(_&61uKnglcFi6Y5uQ+TWQe#G8V3!& -zWoBBwBBO@1Td$Im!=5(ZL!BfVXy{JyN-Ik;qS(9{jR56%p%>VBN)Fl58UpY(HbnQ` -zW5J{{zE?n%SG-{Ou{Z!Ms88R^p--{d0+;08+oBb>>W6Q*5P?_=))hzOX0WAf@KJm1 -zmmxt)-gfPM2ElOb&hWc$RZAz!SGtx!oLSs?L}0NZ^MNOXtTM7vN@tTFFCHvOh5Mz7 -z4OkQf?jd6?Bq1y3?YAz)b=tV1z|vX=qH?8Ff6@MYyQ5E8Qp3Zt -zGzwaiIO&fj9iA8MAak+qtymzs -zXp2+Gm1@=E;Q5H?P}=nc- -z*?yZn)|r-J$yDB2%j;Oe^Rgy@(TXSbxaA=$@c;>~S%$eEiFn*i?+-#8NK3DUtiEAU -z9GjWPga|*`u`egQYm-yRwb0Qk!Vs@lEqeu8+GP`DsdK9Y1Eel$fC^vo%vr;jLe^pg -zk8M9`Lq#TMMK-3%gp=)5zM*IB3gI5fKH -zN9px;;vF=QEDH|kk1sJdLvk>)+F+_4Xr&{)Se#(zPHCLUU{3MkOvXg~X-JJ%GTk^0 -zl7#Y5_AO4t1@kIEyklqzneSbiOKQ}u35=1hJ2*yFuGe>%+^n~XrTM6Aq}^r -zWuGqxdUL8ZF_xb+E^>ud5Huc{&-e(kfS76_u9a>RwxJ|GaYQGHjIxernhV!BZ|NDQvrFt(+dx`; -zalAmf^@UVJvq_55wC9Xcy2KsrzPxt~|=j(Shgy^>OMuCy1vTfFFpbd-AX48aXz9O-IGWqQ&Gebp+- -z?pf3(Ss6~EQd!Iay*t}JS{xU*i$(tzN1gtgIxYj?csDe*Y6nAEQrO1S_-32J#G@8 -zT6U$^L~b+z3+Fvd1h?Vx{0#6g2R@Dyj6v4-B}2UB3Sd+JQm9kBcNxehbwIJNEBs^PV8Iz4o -z&^Yd?(;2PP9pKir-61YUYn>Uz&ZCpGzv;6i-FV!rB7Q>4fIPUw`}Pqf5EK;UE06;> -z`r2OCaVOX58VklOMBI*Xj3uQfmbL0d= -z^|D>@Ifm=%8OB+HSFy&j9z*YxWfM#!F10qF^Y-oJ6sG%{ECw`Ke+#;t2w9zTX`K5f -zyQ;zTAp7ex_spPU5S@dFXmxjROnlwIYN{M0X}0N$grWq2b-M&v5D<}Vft;qfTNP`H -zlLa5@=%ZObcD@H_v`8m9Z0XB(i+!9Ajm(=2twPfstg6KMeMVl&z`eZ5IjNs(?u{M^ -z^Y2vTYGioCXu>2I; -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 -zr|@Zg1Sk@&59H}rE=%OMvF+O3Yrr;P< -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 -zzQ==wzXA=yaLP5vmptP -zGa{>N-t+Gha*W1Hqqi?J-C4OyySA-4F`B2=2H3>qaHkCc`kIMSfuln1{T_@oAcE~L -zR#>Ur?11FUt7(be)y?W5g+pX7fHEe5*Lt&I$?|nx9ChRpumQ{0S6oNdX -zxA!gF*X(mtk;*;tcZjt5GV+!ShoFn}uGOfhpR=78(Ef`@$Dm;L951d~T;)lo4F -zZ&{`|FWSf_iSyX1sb7M;LNpAD{^Ag00yu_EI0XA8w@xRE$&@_po!NgDryN~YPM8Hk -z>cml{6#|z1I_#enUInmEGA-D{l$)JW9>1*+%v6$vH-|!=GQ?&HYB1{!r1_HqisUIc -zubS0&B#bWWMk+g -zgGld=&Y*=55bq8Hn!4dt+bGHGnZU?PK5cXedJc|pBU(3A2G9Kz#KhPAY9%kLRaPcM -zX0N7n>mY%pfr@NW%>OQiASTm?46aZKQKXxdzc&e6kDSoBCCxsQxg=i>3;=1A9k?u8 -z&LI|G+Xb=>_O`cvG*{N2thmb1Ayv-OicFBC6=#7M&1l!;9bmXhXYNFhId?^xZIKz% -z-@vOiJE6tc)Il9KYndQ_o<3vxs{?3c6Bxv?_-IGQF=?rP)&>L_q?!d8K}EVvVkXDX9)zlPo$5quFMVN+(6k5 -zGG4NVONXl%NBAbEIRZcL~174<}v4sH&R$iiA&)Mrc4#AliJ8wm#Wl(DNI7EH5D1(6Q4q-%xh -zkY;V_17J0!9P;fLDZ9Js$)jVvz{Oq>E5t*3v6Y)VKzSZTQU{NmEz|A;lbK7aYHyet -zETUI9b*3wlO*dnopP^|x$hK5m5|6L|Vz@ZT3xhFM&3mnv-srb^^>EpseylqVNmRd& -z;Wo)E3z<)TgKP?FZqI;h?vwODwtuwuFErTct3;SofrNU;?m_uE_89n>kB9XJoY`v3 -zL29X7n60UGB-5VI#erQ?dxS*7;5<@8dR@}>x<+Rs!ad0DfW|kQJj{00>Q|YpY+zAB -zF5he$S%2~mF`0A=Cj(vHv7jhO0biiVi~RX0J484OK#p=T2g;ySvN@;MQFj*`J-LS} -zBma6qUT#56R(k@m9f3m7yO)t&f3e(#=zIWc4y!|I?yid -zvd^Ke`SM;>Ju8S~F74j0o*?V?cH06HEFDsj{-C=^EQg;ExyHM(9z#7b!h6Y*#jkLG -z%UwYx^3QL$@7=Wzx*K=UpY4)gW_^Wni -zA!Ft#?+>vTEp)|34SF+b+~{kHPT|rmKWHToyA5n$b@ty;J;LhYuIolZcq80oJRD9=D6f)orGfS4`v=$}CGNFeD -zD?X!`WzWV@=p*Zeb2pTzUW4A;1b2!QOZZLXDVCo*!$>6*AuOa&AWjF!p!XY)UsgM8 -zfTqjX{@NMJ4HQ68zUs7tb#*Ds!rU8@H*qdj8#5F;y1UO_-|DDeg0z)c?jZ~*cOQ$1 -z%=|vO9COJ_HvV2#$Fm5cvRwyBX5ET%iCxah739*UvTk63HrG_tZAf+lx$QR=CVSQo -zvv+`GK))%|%3af^LImr&ou-WTyqTt1;?zR0{(&|-x!*NYh34ccI$w}l1Vj>+82E7m -zqg)CN*gjJ-+jADoko^U{kJIX$D0R?0v3-fJAM2TqXIX2OWe02O(Fs;*S;yc1PQ<0V -zdg3az8@j&QPJ%+jr>mNRmU9Evk%~wtp$lOWSzuR{ue(`9@PwBF~r6tq^ -zh~1Tj)3DZ_*Q4*4q(^4?%UJRdV{3^)qroe*M|9GNI|KGzxpgr{PWZ7bN3&RSzvH;XwNqnN@blq6)Vu4^QTLP;Tnx_~SP|wXR3;gf$h3v}yyX7auh0 -zg{Zwu=#p^>lY~&%vPz9}#x~fdumRXqcimtr7!2B03o|(AF>%k4OeDQ=0al~@k-(Ph -z-8zQnCdqxaax!LcJ9ER_rou6tB00SeY4P@4xMoh>XDC1jNG6v(-jp~>B^JG;VgX8T -zXA21JzGRoalrO -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 -zb+gUkwN4pi)X5Nt3*x#g -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 -zC?yDF$Q6;uWol -zk*6LMlEXF8h4e@`*US -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 -znv}ykIOEX>*C6ey8wz*}Irofuy55uH)yQ; -zwDHydZ^v!x|Aq#_|Bo>Q2xsRTx2}c*2bPZ^s<_F&e;N-QPh5TLF#iMmhSLiRczi$~ -zN-^&ViDX)&QJnJtY0P+sIG>!4`;Ik-5VO#F=lyc(=L|h -z?Tzss+t~kzj8T`i&PA_gC21`#I* -zK51%pwHI_~6w=to05Y>AV?3K{3vs4pH13s^+kLM>pGpQcMuAcMnY}J6@5b-9rzvzI -zGLF9IOc9C -z&WdnP<=%E6yCFsY!!PqG`JP!p4&(f44eUbN#weZ)9Tm$pEhL(jdiN1k0&fEUmgaSvgLukp>CeJD*7`1!OceNg1jJO1ebmOjn-l(pf>b -z^oF$M2RX5K2bBgut+e&^1+qam{V*M%Kpgf8?vRwNBD9%A)4HSSO`KT5K -zP3~a?t7W1u1`6`}iCEJ$!wt4>sKFQNuOoTeqO1dUfRoRZSqhfpi^GRvSDaoY+p~Q# -zdVek~-maelhP=>OuAlmWK~dyKjvox96QP`{v$jZXn;bDf!fT^n<3c1CcX`OO8QB0~ -zmkdHTm3MAO2h)#0pc7t8mMMpV=e`|JJ6sY=Yn~;GtU+$_{cjG6*rsg4?y8g>M?Ix#7~!y*J{?wn{_B4AOL;A*17gm$CK` -zzFeZX4>^TkzKOfDxNkrs7}CA(78-eIE`_qaB|a+@Hlfoz8EhG!&;@CXu318SxYEiK -zE@04@FG5zx#ZS4=D2XE$)l1GUxR%+7$9FpVN+tRF5N -zO8GYuCxhZF1d#d0s^>^U+R%C=XC)yD1?e20z-zz|brNzl&Mz@*`T -zgFoFRPcXX8%h1ttXprzm?W2-#j;qc4SfKlSAF5k+!SqzTA4F??WM&fvcc -z21-dMFhcucLs`0Iptbch5<9|yj1P=I49yhm%?J_l1x(QSm5<%RC-{lfE~5X@{Yd&f$7aU^Ne-B2*r9llzD -zL;J`_6-v?qf8po+^jJUxO4Ddxn)Yh7I#{h9>nT1ST3-}vTqghkuw?t5e@l+;9a4MQ -zrZ!F<>h#gkOB9R -z!7wUhVRCHD04>tzXPK1;%-|1x%WSgKiTPxeVJ`-O9Y0T5J`Ye!pu$+H=xp=fc1R9n -z3x{=f%D%=4*8FzRe6wH}F3*{wl0$k=vjG}_aLVrjMs)DkPryni&+l@-FciEu@Xm92 -zYP2-kogYXwGx9nbSMrjU&;XnFy!2XMfY6kUX?`~ixh1Qf|7mM#LDG -z%6C(y?R>gDELip^zZkFpoXpjP91;**Ci=kXa9%O=Ty?0PW+SpC6iK@CdEJ%0PSR}O -zZXLVQ>+^0yw?~_mSpi0ua7Olg`XX2@FO!R=__LX69b4^ea7GSbFGjx^+)6$HtJY(e -z)sZ6G#Idd5?N9|fZ%_A&v;fbseDwVXh)3haGOPs-25MrugPSqK8R^kI?V1(HWywxI -zecW(@?s;qn030q`F*0o%_J(|Y51v8I8&Wy>nx$~Wqu1iaEr!}V!a&?dL}8h9sUlQ=Y~xfd%x9OgSdeX{6blr@qfRf$rRlp;ByFZY+D=qU1!E8{Lm -z&&#fe;m$q;mMFgpsl3h$T0OTj@`Jw9jNwW!z5|7vePW8pE|PN!qgwisz|z50Jp1@q -zaDzbNe`IIm8AbopVdyi)l -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 -zo`CmcHS$xUU3EJrF(F!>=-v9*i -z^4$S<@q#@_wj1te!9|Tmr&D#j<7h-kh6w4fq*}t}c*(G@4QBNoi9yk8HHLl7jMaLu -zdNddq9cS3NBirt0A647-()P3LlHn$+S_d -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 -zOzu-rL=Ikw+QNO?3s7Oq-{mUyEkMH&va%G>* -z!@vT=PD_+F|6Anml8N3`C6Li3rZY@Eev8B1I~P^t)stdw5#yd=tx2@WniM40%7;83 -zk_E#WIu%6lr*h%f)`)a*7#U9wKdcV@=eTLy}(`{*ivYiJbL8^81h%yS_8R38+0nkSeF -z?SP=GI@uub -zT9`FBAGy^+eEU=ly+1A5me%}P(vB(;vfQ86hDm6r0>XeL=#F>cO#P%?QG0N -z#fJ$vY!$Y2a;bg1aJ=&AZ~Qd3)ZfT*n%s&i2aM0C3;znzMb8;DlrsgpA=>;VY{1U4 -zB`}0%X%JKyJ!S&U@+HnBUisvT+Sn(Pzq^Dcf1dxN_nW51?(A9qs1490djXU=cMFgQ -zU}xlHq9zMoA6naxaErzNvkA*nW(@f|2!_#nRC@%D#_g=Hzr@f1bqkG3+B(UPDb%m% -z=7(j2?iMHu@s%2W#wr=abatgalYoU2+ly@}(w0!w8>!))A(`_s@F$hjhsKz>t~ -zF+-8#P-`mT$B~mNf_VaJ>aI5c4~V|dSsy87birQ5U1;_HrqDCESi1jN!CZt59?(v=uj;)hr -zh%=Xg)Aebi0M<*s4U7jU55`ubzG)u@rM5B-2v&Pry -z>h|s}juJD6T$K5n@2DtO~xnBgu_5a7JAhb -zvAQxB7T@l0KebMVZF`LYCvt^54HoK3WFlzgtq{ZpBb;K53Q!8o%BMv;I|6mLlN~Up -z8czaGp1;1h$0O!^SPHc;C_Q;b10$O?V}c+#vOVFVlu;>2B?L01OBca19b?syK(as- -zIgBk#VG_AORbJy1d^c&>+l>OOgk?pm9+Jq_Wny$ucN7Z-UC26Z=`-4HKH^A$VF;=C -zB;}pygd=jq7__WjA|F*p(t4(tqGA2JoE{BZyxyPGHJ(ZZndB||j*E-*SRm@EKuw|> -zJuNX&7vzctSYN!vfI8v3lIfZ6*m*$|)cQJREZ!h_rV$v;(2=z1Vopz*+rj%TNk^PQfI)BytWL1iDz#N!L^U|)s!Y;Vp5rm&?%K$O!n5;3CcbzC;= -zH^v*?kQ=1oIXcivMwqjR>KSuRC;)*a6UF<%pgG(QQ%0HLZoKQowTn3lo1+jgy15tP -zFzoTPbzN|8(RZmd8gWOD?d^dyhaLtT7udwOftV+mxnhd&hOQuF$~lj(yAOJ}^ht^J -zltvtrG~E`_b#db4@_18p!)RcB_`+>tr8-_SixrABQ(I>AI$Us|XM6RCRIL}6i!RzL -zo_4;^+~ci)peoF>6>zzFtAeZs;3{Zafq^}XN5In18@SGq$vMuzk_h47LDn;@1t3Y0tW7p+@); -zi$zh~cnSrY%QPV;sm!HgM5cJWu!DEca^BnhlU3VnOBPd@WuxWkX3FDLU@2KTglVj5 -z&tB<aTG2EBrH#uR$aMB8w5Io!5&TKU=`RvYyc|TVn_dh -zF~IA(d;9kKH}o>mSg5`TeQtZUiu5kVB+0F^y{|ZP1L}7jfpsKdKddvZi7@4u1fi^TyJr9p0+aWh!XFzQ&?ViSFqgpe?3xnvR_FqC7Y%0N9xf+JBqt^De|@i# -zw)t;&%L*CwiNs%};utT56Y><7E8C)Zgieh=PUP|9zleG9-{RMsEP$c#CiUJ8%oQnM -z8p#|<;|&_??1k+n@q>!IfNAydePiteSa^_b-V1Xr1|E*#d~R3y*bp`?1_4FqLJDu2 -zo%Y}cYoBiyUQgT2iZ+B~Ia&Ewi4i?`1pBsk^=+8m>~F#v#dAwts9>7Ny2g&AL)S2!quxi%mc23+pl3?mt+cLS~&?0_Z{Q -zmm;2Y+LWBgR7jil_3|zBti#9KYuwuRIUg5#I1=n0i*AwqrU72HhK9E@ISrzVbbZZ9#i0vRrlO;1> -zpTe;egAV>w*}>W+CI5~)nL4=y%!t=-I{f!D%`Eb2=2p{+y#mS(XYB3EZ#~ki+@(MbN@9oow+n?4og51nYzEWZwL&GZV3CEe$?u*izP+*e_Ox6{+djauZ( -z$MBnfpkqLX;sElgl_etA_dqK_W@V~PZ}YvV^+h|xSpmidJrrMBqO$ixh;6dti5ddk -zv1Lob$Ln8dzIWl!W;SwBMhc}vfuzyOoHp@PYHqS?9Z$v+V;NucG_ALKmew+IM7gWq&t-;MmPFp06P7=dUpkKT~7rG3Y+amU(-3vTu -z^^55i1E-~|Cc3blv~>Exq{Dq@U4BTDRWW!c>(6yoqd>*rEfj_r&Vf^fCo?*#9Uf5e -zDl~B^;Lm3GB}*DcxUkHh -zu0DofKm4ONe_Kx(3-IlyXV&h}P{Zo+Hja$YK -z#T{tm#a0W64|$)EFwc>I7=OLK!! -zS@1=+kWWq*2T%jWXROwF;k0C8WLlt6nwG!rxjAC8KVE*KCtkQ++^xdbAh$Hw{9N~f -zEnQsK(@}HWkoulIbMKLBlE@)(5R6f+SxGq4o1a^_$^u!4UqfDFfo^fmL%f96ja>XtzOE`iO+&0F1ZKjbdpN(2x4VZgXDi(V0L683jXQmEikFfx -zH}T(UGP^wOo}c*$ac=9rb;q;Sp)l98eB{%Lp`iv;Y@d^O2?p%)TW9R{1M{slwj)gB -zmt?9aJQ_5)p_1h@rfZoB@P3efHR3Xv24QE3$lMB|G8GeOG`qRe+dy2j36RNNwx>mU -zxUMIsClXen$Ex*!;a0kV#(P=3%iq6;7FeL^N+``--}%IOo~FDIwTU}TI(W?V^beNA -z$?wz1-`FBtt+srG7LjE5kM?9bzAvlYXk+Cu8$ICHsYXGqEBDx?fLiR=F9Gj}YNf#> -z=o;xepvcA<^4}%rGFKmUm)TxVhBLFn9#GGTq~o -z9v$#T=VcT}@O6~k6hOeNPTF)r^(N00^TxX@prs7yUTFv>M-FVZpJA4eFV#3+@b{~w -zIKldVH3KEW$_}nVK7lA)UgK3Wlne@3*$&H(2_u-#&fmMo%0IcY`io65E0NGQ%KZNP -z#byY5WQxBS7M>T=M3%8kBrLL2_Od1a>&aH4QgA?%C}WC~Rg@q36Ldxg`w@|eRUbM% -z^5)C+fj6K6%kg&I@>*%RkGD6uvDnMfJXtRT6X -zHED`pSL1YEJst{Sj8OLLXz=QQSBp*SX@{b@#B9e;;{<)i`&SiX*%_#ptVsLKuGb@8FFU7rlqdR{y|C^@b?l5*{1o2+@fCI%m0 -zZoS!uI{vx!GYtImuz|{G&2M8w@4SD$54r*hwp!-Qdz!CwJ2YqhWF)a{(~3laoqYeo -zo%tq1;nLzRGlq-cZ)eyMI342XX3X%(jI*j+?(>CV9}A-bDc~v&*ZrJas}*cCLhnoS -z$Sorfq|bXX0+cTkOb0jRy6F<9MzxXCY%9UZw=Z9po%ky2mJqp7L -z7MHkQM%&Hw#pI{v+|+WNj#(@&%ZVk}_*p+6Z{xMUrNSWS%7&9;wfG74cZ{3m;RANiv0J8>? -zQ&)fkF_UueL5MIURxHmhD7lMdkt~r4bmS7tiXuAdE1J@)K{G%pum$w=+vWhMIEzxw -z)`C0v6Tlj8`}YN2VsyQlNYYse|lm3ZkR48F(K{;Zl~P -zIp~%PNsXHk?^9sb7!?A7o9rh>+uz<9&WS;2%StYH_@O2xtb8M>mu3yApo#;If^h->M6)O*H;I8h|Bj5 -z@>BGWWTb29)#Y{o^(nf?!>PctEd@_)V@A{vh7SHTgf{JE!%VdKmvcd4?TFhrNjayN(ppAL*Z=S`YY(1H)} -zX(ZdUNe2Tl8L$AwMeZ#dVu`pL8*Q0h0T~c3Ockc7>IG7>%4k=Ld=b~W>@%e6!jMFI -z=!Kx&;x|Cv131)8IECbXF&h;f4P5TD-aY3K=`P!~4)|~78fHP{G&fXyi+0lh>r_*nN1`+(2)Y%>(2YQ6&|c=?jQ#Rg+fk -zAe4bzZU_+=Nk%BI6@xbyGp&REf|U^&-pP$Ls`Cd1QhG{2J)8_au%@)%J9H8=B3~4~ -z6F(14R_3`xswy>QF07En7Ayfoll -zwRc?cqp@M3FWrij!?1go5n?>iB3!!M3WF^U2a2dI-Tw?k*OU3AXf@$i!6{ikaU+sD -zRJfTZGQZT~3Ff~?OAAZP=X>{$NYRFUo=ixvvQ>nF4Qz5zoP76Mv;q~4yTxIAW2cTlH -z)Yt&mxXxvs6PFu0w@SOx*4@QZW1gMX2XPtd#sA&`7Puvq>6SSa&1}58y8|gj0@xte -zm$NhR3UVAYs%x_~ceiVyd||s>B`QlUKJij!U=|GKVJ#I>m!w~$3Kg0YLDB{+n86Ix -z59Ic|D~Jq0mrw=t0N;)MhIYKcb0UN35DjY$%KR$gNSS%vA^(>Uu?YXR(8Sb#--g!blTmGY&o -z1N33v67~=&Q`I9CP&$Q0PHE4Jj(3wxtdp0Xu)E3H8#*vqBVBO*^UbE_vYkd~ss^{db0N0jy*4lq?6B6i}Y3SC+E#zlxGjBp766MWX+6`rbqmhw< -zRP|ZNOyur$=SE0JAh%>z5SL6(opJB`)Mb;DTO$SoiWM#Biw(F4C~MiW!Is%UgI<}= -zz4)&ZDx{^y{i~aC;DUB|Dmr7F>~G`?b*2YF7dJ)*d3qMh?PR=;!$UBu-j%jW>AFmf`rwZ8B+gDl -z(=%k;(5O|xsXLtTJ@kJ4vBw>eO9IHB(olB~6UFQLBAhX-xN#d5TDC2)a2Hs$pBeyr -z5_5>#ZUc*OfR9`QF2s)-*l?qJPMEqeXv$U}ZJnSHYHr|#zoBs{dSTsm&2d2G(h^z} -z^PY%}t6!9kZpcN7^%5P8z5 -zkQXnQ==JUjnyAQooY5&89k};2s3?&>i5nXQN{1IVJli?sT~=0?ZpzIKnftc`73`Q* -zfg|N?99?X}tXA$j=1v}lqSbyh%2JBFf$2(}5Fnl!vZm4^@}p0*M!2CXnz(lcIZvD- -z?Gn>Uhu*^sj{5Fa)Od@^}@)Pvh4{f6ep9CB|O!yZ|jfO*EIT^4NsjjG^*&6 -z=WKtM`|!Xlitq~W-(jLaLgxSl-Pv|R25~o19otl@eVj#6gP%9|m&lW;Dj&ymMM@=_ -z@<+B2vc7r0jTKGT2ojKkfeMvxgv`U1aRxEoiq|okh;;c+TiWNg -z`|Wba6s%(-vs}#40_(qmhPa`9fP<91c$hgRlhZ~rKSn&7%dmcL-G|a{BAsxH9Zj5m -zSU+wFsXVVg?8{tZD0ZzxusFd2_>xjrg}SE59X2X*9>Da2lnmTLTO7-^MMY-@8uvDl -zEp3uc4~1Ol?@7qgqxvXMUwHa8~a2)9Q{BjlaN -zOM!M#Sfap%8B=USu`!+uayzZ*xxEMU1R~*RbA|T#LwF%pyFqx@tdXvXMT*!!#%M|D -z=A4v*06<-Y@{+`n1H#kIc);1K6~;8Bbcdy&}s -zbzf=&tHI%J7AwXX+ro|xm_isdy4B%HNP!`$MwLrfP_$ZW9iDrKx!{^MNG=q3&LucD -z;6rLEhXGnE3(mCj4plxq+A>?LG}Bh3^a?ct&b8-Av^Hos!MPw)Y5(w+ije&YL;*~y -zfoCj7CMS%dkT3x@qwI9J!-)hwLsFly3$TW{P-v -z1Eg-m^wWrRqZk*sNvo3AleI+N9lJ^O0<*aq#YeXe+}TvdE_ZzSufNScp;LEb#iiA} -zgv#@be=&hiazPg3;9}hczVwvQfg)9Kvk9q*tqx1v4x}{{9mP7mHg{M@1}!A=3G*D^ -zdW4NdL!#8&xY5SojmnlM*)>U|ty?$HCReom-jYIw8_2EBDFiY5IMUx&ZVg!dkOyS6 -z4?Jw>3hq2`lS0FSv-@hpfzn(he@e)<6zgrLiwn2~z&6P6? -z*JJY8MbWb*i%w5raqn2NbeOUG=w3KG%lw+vB9lStdN|6cw+B-E)&oY2KMyrb5r?Go -zpb$SSHs(Du+oIpO&>Rof7_I4kTL0$Ge8$rZ0EdGmDaodkKu(a!57RwZxe)zWt={7w -zMxGb0$xxkil_mkh%R~z@^uWowO~FtNGWZuFT^_(AdY7S3k7NM;K@z%j_dxa3Arjt> -z&J7L@r1}o{8Xqemlk{w_dP896jB5nOc#1kNe^@2~j#wn&;v+44Qy9y`;6Qgb{$UBr -zMVOhH$yw=6R{N%_B@?Tcz)V12e~eM)^}8C=E%t5sjsJaxvH0I_*ALDn0DNLZZ^8gW -zUPEP6xfMCZoSD^h2sawRcGm^fJY}|b -z$Z^k`(NzkaMWovzccm7RB8SB6V$?_=u)C%DIJqUWXB7plsNH>x$|5i#!D!eFvhPI} -zh@BJT52Hz{Ut;<+PO}d#Q4qn=L)z5hiGKyOLbkZf>#eAu4A(vpfXC?p#@79N3F^OU{jB)ZIw!Fx`ln3@9ZnjCI;UC?ho -z{=O1>#dlF-fW87oF*?<#oGzy${q`4j4 -zgJxgQt!M}{g{Af-kduYo=-394+KL=Etw*6~iVnBC#~d$n#2Q^73(U45Y0i=P)SG(u -z4_~Ow=C3i=t^tN1+Z+Q}Db*r1M|R-_a|4QqFA}oHIkWbi;VGGh1T$XIbEPMrV~vcz -zrIWepQ7Yi2s&kD=vf32%tiVR5gnR!H>z+j^$e5%4u-d<>jWPd9R#500{SA^TH)h1P -z#4NgqqGB9)y`!Wt*>A@Ux{?B}E`5^A9f_GNDRur%Z!)uBksEEUeWa;PY-2*7B-IB- -z%CdazrYyRw`@quAI=iPZWqfv9Jy*=AfjSbIz`*P#8vCKWRz}A>pN4Fiqw&ARY0_&h -zg{(W6?7P`Sx@qhJ+G9=Zm28AHMd~)ovMd%iqLmeUrg}sF)ufQEs?D6=-DCn&;oPS_ -z46+s;G1XS@^gX%p1~|*IHUq?jF_%xOfMnMR113YWTP;dZad}mDqQD+bk&m_6eLzzO -z&GU>SQYhC|6MVjBc>V6Kq~kgtN8AUeZ<#8YOGpWh(m-1a3_ox9O1e0ZrKu%s17zD> -z`Pq{bY-!(9S*3Nf{E7mb#wH7vYhcIeh?85$ -zKakyf+!}xdYjZ|uq-vC5U*y8Dt)0v>PIq!6U!X=d+Oj*svVBpQZv3?TV@U%^iPIr7 -zU2fji+$uIfmPQElKfRb0WCclIp3G3;PtdV(Zk!yj(vcbb9tU`*y+t#?YQW={-r|=+ -zNv^r$yvzsry<8|wF2>P>7Q@1dYy4;rU%)VRK;yOOfht>-T)qe^CiLkIj=s!PNN=+v -zCuMzBW>R9%@jL^tU0YJVHTub<0>v@D41Pj7!}%_+SaB|zC96!fAZsl}1J*hD^GhQV -zAim_-!*f -z)3B0b3d?~cxEsZFa&8&yw_YNR<>T*EG=|60`)tGe3w8axX#d{d(qH|Z>^nnql~8Zl -zTGRYxxoI0$5nSLM`O4KtMl(&m`t|3xe6Rif^PAGClD|-#QMNbfAL|~^`z!r8yH2{5 -z`$FE(mWwtZ-qyK47E)AYyv+IutXOt?TOk -zq}ck-J!F|{L2hZ1#A4yHIKh!<+V0VRcEyC79W2Qtr(#iC3q8o~Io-nh#H_sdj}EM; -z>8@y#`t?gE{wfzHe5~tW9YwT6u+kObwv^-;DA+Sf#X%07?35KblioYGc(GV)RF#|7 -zVvyWv+sUe^2evD0UEqfTEb+n}?PxZjUCT5$cx0k|D_k}B8j720+*i}S>DEX}CFyjuE4pS1T4<4OR#c-s@)0)h%r&~!3pX4kS@KX!y8+&Zuy?%C -z#W}(PG~__85vZXW=TZKx*vmD8`l4*bbw#&~Cet9H9ur<=-(;iY3@(Wq3XxtuE~$Q!vatjPM@?04CorCViaQ -zoNyakUF(VL8gPYh$6nEC`xnh__7CnL?$A{Xj{zkGp&YdbiHLn}W2&B?OSukdE$!AjoZS3{&==+tKkPyvFivZVk?GoEvaElXM@QA+o=|6njy+W8W6 -zcgt4H&hZgxq1;(#Y49;s=ckQZ-&&!6Ih -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 -zW9YE))0Du23budqZx>mqx2s>Yt -zMSV^N5Up>$Ob_6LXm)>e`Ya1qoI)dtKl(5atS?#`K$|Z?uIzxZ!c?udKtJgEZtdhc -zT@RsfeLQ`qqcyva5B|{iG?Ed0t?+Tn7oBvzx`x)7!c-2r_@#U}*tGb%=qSu2kFxK4 -zC@5Au@z*W%^@tbj%AC`!-^&)rO!}w~;|_zp@i$?9Xj;=NIvDNpoiF8UcuRhHHFYI_ -z5k;+u{?_mOjs}R;l~=s;L(jh%!@IlDg9KJyKH)dV=pJ&8o&_>02MRE3w*1jHal0Je -z(0T!;Q`ywVi1xV8hIFJj(z8()WohON=87UNqk7Qg_dzaYaI_CoI$$z>asy$Rd?{<4KUgyT_wMu}YO5I*=!r-WY%uq_LShPT!lcUt6aXi?Gj -z@zcL>r}Sqahv7jMhX#nYK-$;t+Q9}=D;G;^JOuy(isI&+1TxwkcH1!Vk&mV&G{YyH -zk87>iS5VlL!?E^2x6E2sU;RJdY(osdjL{Bj;D>k2db%4ACS!<(V|SL8tv7?k%`>{B -zqNp<5$F4x0W^18-cetp@g}wkYK+L~~wT$&j3g4i<9VQBY4S7~kbY2O*Uw8Dy4@Tqz -z?p`>bvFDN&<&F`1=>}fWwAIl*c*|od`cyi8pFdspaXg=1lmXm#I -zTBIQ}iSUtKdZE9-{=`#aff%wCJ3FOyl!QJaF&jK?Jf?#Ny+(9>DU*{v)qQMf#hx04 -zZPl0@0{lD2sP9h9SH8F -zoj%vHMZN{)9v?M*VU4dsF~*>d@tm^6rDuvUE&up!HJmW*I0-HM<=_g -zti1rDX!PX`)>r5sxVjyU(HpCGc<~{@Bikmz?zWrXR)c3Ey?f?_A2ir>13mCE(v^$; -z1{q{Im_l3Wau_fw+`7^n7jS+f9+yWiJDfrJ*_8^lJRTV%3b0Jv=;1!YPBsz{40wi~ -zmNv*rT_2VO$g4@88cjAMdqQKFJxpPr2rs@wi<&y4+V1%ntdUq4?Aej-Y9_`|3xc=) -z!f4Is-7GZS|TrN|Jeh9MGiB)tigT{zm{I3Rk~@II7=Wy -zGEyT$iL?~ncklbi;V(8Csks?kNODw-0=g -z)yYh5m2e_zLn2eFCQif-N>@<=f<+IOGwbVp_hg?bav3vI2e#mAoC$O>c@7h9n*we~ -z6uguVFpY9u4ZB&%Xh}IK;I^{IqNjwO9LN#0L+J9!n+`w32dd@d-E|@ZPD_Zw<_5AR -z`ejkj?P}n(Oj93LJTkPRI=wWc5`flD(ZI4%r -zgN4(Yomne#a+3}zbYhSn#(y1V77NGt?H$I8Z;@|+AFOJ)2zjXPQh*>xEoV*~aU9D3 -z^$qt~k;71KD)2z>DTKYFt>LZ{N_X!hHE|K|!xJ`EAG-Z@EXrG&dtzy55AkC2D%(~l -z#G{RKB|jP3J@VPSV_rNgubTjCFI?d^o+wCj}u -zGTm*d9mXM>7QHeKdC;fFMS9?#hM;XJ?4dsj0Lved7wHsgcik6}9LU+?SCA=MKMXYJ -zgY^dr?i@!HFIYG;M#C8oU^TlAo@8zl`j(V`AVDfglv*1ONZ?h$@YtbPElT3^GKr=(9z!%_r)z$gm8aWu -z*=4U)M4N_yU%nN{NoxuOfao+EWS~x{+hN+uA(7h55vlMwC-EN?l#6|tW{7;y+w8&>L9fZ$z*h{aMJ -z5H64iVfoFyJ@hfDb%~$o*vIz_8oH%gA}61jB2OLxN+DA4|(jGY$9*c -zRxClgdCXuR0^de$J0(*?%^<|@wB%mEwc7@VwxxL4g>G+r*i(O7?2m^fBie2gR|e#N -zNY32Avp94L)^J?o;j80h1u&in9*-3=(wDMmy>EpvyP$K2yc*6Q;mbe>2+=MD?XJkj -zu!xIA;;vCGJF8nk6+^2Np5;G~I+efx3z8!v&H=6u3INF~=$xbj#Uz>^3kz`l9so9M#lFbzqJp1 -zE&NmUBD-Pd3@kt&*-7PlngBf;TvLyG#}DNaIp-}W8^He}XPN_;#PqDa{Jxp>zpMP0 -zmDf*wZ9^o+gfr7TeUQPX4R0tPex3MmzDGtW8*~h_vO{+%&l?UsG(8h}u>`0Sx}V>^ -zF?tvIa6qkVN3SNo?%8P2)2Dbr28b>*(9*N3k*6r0H_k=lxj8uj1`vL5(Mgh;OINHh -z5@#drLZRZrW{MDaix7U~S#uhdz~Hq0QIWUFk*L17>kIEcg_ -zo<4NT9x4%8gy1uua9a`2pI25tNT(xj|A=oyH_LbsklO(M?s|r!moq0x<^iqU!NAs?m!Js-_W3#Nf*#jDnDRoC>>HS -zqjKY9g@Fx+y)8jI6}a!@r19dub@@8Qw@cP@#yXU&FTFG6sC=nK8Eel36kD>Wb7})| -zhwI4~N%J*qt&sN_TLfNbV$<9^=2^gyN9B0?vSQZ3`x#BT85dhoU8gM~Nb=OPADl=d -zR`%D&IY3xaFCr#IEcgYd6B+lYy3TZqao`J&)-m((X}4L1!kYLgilL}^s>v?zOA4mp -zm$R04#`z5mvt;q)OLfLntNWCw>an~ND$Ps-%HKtI9#e{Q{hWV<8p8mQd76%cwKId> -zc5&+^3#myX^h}uAu{$Q$#PJ+BMV0e<%w)z;R#V>=0~EX8LGwDDnHC$ZkqU;*>LhJA -zme_wQqFINBG_hif*EPRBZu^I;o{tv26@ts>aYP5*yE`u=B+%J0=u;8Mo6E`8rKCBx -zwEw#Jb@2_eYY68-ag0^a@fC`mX#Hhh0UOBK(7kx;VMoVE^qy}AQnM^$B46_RWhAN(qSr@ -zCT{i}Sv7iS@+ETVV$xYov_lUFYCgkBdn7n9tQpI+=p>1G!p!gU3mtw&gRbA#c*r%d -zRvHIQfEm_^FRRrlB@S>HXy?^DL+|~Rj4`7=xs{JK@sKZ|HBZJe4I+LJg-`hVLPdur -zDg6RHbo{*Usz)ZUj4sk!R2FA!cw{C+$M<_Uv&qPm#5XL)QNIE3TBlV;;5p~^63N^@1d3JJh`dywQRH*d)R17X%Dl}$O$+V8^v -zir?6t_O`^s#ILPaTM1U~3$q4Vy1!Um`DLW68Gt~Y_iVu+TehS`0n?Vboh5s-A!vPi -z#;QUrdUIURW3mf-GMw;rFbtT7ovAO0y7|pCWkd-We1c15M?px&lKmn -z{FMBvvaLcao6udPZ4s!8ZY3uhq#HIQmGl}fg0$zK1eTf1MCiG58~~7E4N;Ymf3{cY -zCdhG)#A#dCpb+2W2ATIBkfBwXhYjlA><&6^|L2Bu`3-aRe%UcbMu*bQNg+gbgQNF- -zcCe5;V^xWcs_lY~)sv#d3Huto;gW-9Z$7Jj -z2AsmawW69W2fmxQcQv#sNU|bPC%Mt=4vx@h5{t<|6JHMl0zsRyoWSKEk10DLs=;?$ -zQM&O!QEOrzp5N`l@rT070b?j!^j+?Z3YQAY^+53}BRj~KZ=cy88@j8UhWbt}G{rr% -z=GA~!`v|?)P+MrH9q&B==oB+dz2!{zd0>`h`TK3&2Q`JB9tJQ&BD|!3U-Q;_TFH&c -zDu19*52Xi~O>|!ByuAxLQM38YnoTF6R^}yaX-`J$<$eved`4jN7Le1W;3}IocaE&+5#_O)|CoUnzWZt@^>>m7zadRRiz1oY<3IEE -zxS?`YM&Bwsqy1u|h)1If+8k?387Nf!+5iXMXJER)7Fn2sbNEXb#&lmR#6l`Jb9?}k!{d)RQ=nuk}Ige9-$X>oi -z=?m*^J@&FIh_OYid%k+#W4w{8&tt|7!dCd{_>q} -z%`!LVod1n3zGpVRM3Mm|f(SYz=N2nj{sK1s&S!!D+(DNuJ6^YK!apPA5K$A7_Td{p -z)f;<~H&#_n&@t4!UTNQ3+`N -zYXeLmnXoPbF93fUcG-kpe+hnvG49y#BZpQPaO1}HvLxhT()2;dxN -zC}nH~VLd#C!v(Bf)o3n@TWTceV6IChx8M)wmYFpe3VzTkE_@Uh7*4A~A4d%}xzxY=-PiqEmP8Ah8_8HIYi?gHU`4A&V{*H++I9`{9h#5W_`1z;WTQnZ-VYm9w0?O -zL(x4_OYae?!|cvjML7=Wo%}8KK@P0q5_(0*l3L1ahcFJZt!`QSQ??5(g{YrW>=iq4 -zm;l%+_T_!IzHn||M^{%=dg7Xn8&GCU7m0`|>Ovu7Pf>CH$Ad%2 -zwj8O*$jqUI&3zVanz>xwTfJ%h38cLPL*r!NLYgSF8eEX#+Zr}sPTYB;tsC=%nXK6^ -zR!}#TG?N%X*cTSmIA9v5s1OLYg;777VueZlO-WJcZsPc%$cPu(KTugQCPFHmew~@${+q{XB*DS5;@H;^?lI26tNGn)a -zQgjQRDss6?eKd8q-N-cD04Q>- -zfPALr9I*+}u*UMrJ%n0;M$#Nf-%2$WGVo;PD3IvwrerGdGk-0*wE7We!TawX5h_0d -z2B9&H%q%>CK29xr8agxhX$)yDpx9v&BIrHUHd=a%rk>Jek^b5>NVrY5pu8_k726;5&=1Fp -z1#Ch5CBVINX&$3HRV2;M)e9tJU94d8QtiZ2k?#O0i%J`gi$!Wj`!c+^?USN{+d*!{ -zL(AiBCpwo?sub3XTTv_p>xqkgBsPKVWHl#*opu@Oe3ZejpuM$kgP?N_#exUj+K1iP -zM4%gbfN!FtM*haX!i$-VS%sF=Qy)+S%&^KbKNuY>ibhM#n+h>n6+uWxbug`hPP-5& -zuI-}o*B7~{ccgrn!@;sx3prPQW!RO>2=7r++gQxcqTJcTU8rc2Jk7X^v@(UqQMp30 -z_*>+xgO3I4FdE{3*%DFb1vXEMpS-Yy&J>deO^7G|!vicW?%Wtqgu@E1ch-NGMQ#VC -zYYBA)WugQ-1@$7Wo#J<<(zDU^OD)Va+_3Q}Wvn9p(sE+{&MKE?qlGa!un3{J5YfV% -z3aPyxP#d+r%VZ?aLJ;Kc6O=)LQJ(8Q3oo2QUl22sa|PTRq6yru`}(F{Wx4FM$46lf -zNHmbs;fzzX@5pA3=MZ*dknsz)^Fa(Te`#MKx|8jPU|rdy6~Z(L^uZPA;m?X7U~z!v -zi)|dI1+Z)*FmEZAgP~&3Pt=N`;P3+}kAwvaoWFdW3DBWxEM|TBZp760G{e>DJfR6b -z#Z;2G^_lz-n#P$6wlogPk+vgHK8!lulxvY3Y%VEDTA55+)8M8MlPD&OX3-@3ph2fM -z5LfwQrqk}mjt3&h0DnU}_!-kWA{K6zSd1u9SO8t&5-hcUpw=?#S{VHRw7j)8b&toH -zU+fP?6D5@I34p1>Fg?0#*-k(Q;L76t@(u!D@&U8wzCg*1_MAkSJu*XDLR69gOxjPa -z2aU&yVNFYk{E>Sk07a1kt!PPE_fGEb1kY4&4z1-Ct0Ux#e{y%)jpvxB=sm4uB)QXl -z!^;KAL*c+(t}~@d2Krbn9t-poRhm)^Bu;vARY6vYC|yyM!NB+#)+eScIy4b4wD16& -zQ6M25%MWPQ;iunOI@~7To!{X6NP{<4=txAj1Y>j$K5n;0Cpy_=o -znb!%_q~@t{JCdL9pEL_-@8vlP02J+4+I;?r9$eZw;rn-if -zZo*!*9#LbJw*L>S3Uej}PBp>?Hc(>geZsV|NOv;qvJ0T(WBv|Ta`6TI#(YjGF08t` -zwk8)}iSw&hfjA7zwJ5pBEM+1JF(;uHkOSU5C7kK&vf_aF$;~+9sZr}lk|J`ox17@) -zzXD7M>MbbAN6s^}w49)_(gwb+$#_-C3N#EFy)dwn)oaM{ChIqz#?KEYlL^`JwW_;2 -zOHq+W1op1RMY_R#fi4Wn7?hg&^oqJ-oGnKmiLA%)6>ZZox -z9_%2);MhE)`LXZO$aTCyJ>8w?ELOTHCMxD9I|LgF*W#@!{*YZ^-rp -z_dmaJ?byV(K$VvC -zYGrHl9EW#U=vu52FDzx(z--JIm}i}|8HrKmdrSPbz&XO@4Yu@g#dKpd+hKTWzeEL% -zDU1`Em5@CUOEWDiYlam@91K7y+>KuT?%zBbLjV!{fLA{uy8k5^L7=Jh~f}D!gcACbFn8XI`b*CrS!?T3gtv!qd~`t=?>E#&>rvz^Sk -zXAao?DL&P$BiDUfZ=+iT$_%P4zH%LDl&&kt0jR>7&U&|vfvKPsVn>6A8Bh*xF&{%7 -z@(r0+y}3I@gV*X04m_SQFhH51gKpIUo-n(Dp>7kx5D>*J=dfVSI^=XC>T{n!J_r_q -zF42-hZ3qf@R{S_BZIExk@`tL!!(tJNLE=JP?rOj%69p#wN`pd2CigaWW{p1<6Sv!7 -zfVfC(Ck6uQ%pDZg8mF}xcVF?vxK&K+Qow!PXo4DAstwx>P0P3ZIP6-$rDB;rz4@7a -zR!zSnDMFhHH3rf3h3J@;S%Vi;yN7nWo}Q=)JP@1(4M*|I)<+qf=VT}Wuu2^IjkYS|L~2;xoD)#2tPZ#^Zt1O>;~Md2{YFna$)l -zIcTkc3SvtEB(s4~AeuG>tV2$aWx^4tx$w<07vVLId7Q37onkTu1djKM*v!6#O_JwP -z&KcV}86YLW(Wy1lCbhJ?8OWI%SW7qD8pGo<`?pE=h)SO>(6dV97vxx;12(HQLS|ri -zqpteIS+Mp-<9e%oY@WtewP92jgSJ=b0D)y}t$~sJL_RDuN=nH^tK|l325p8i*7@*Y -z%cGbUhY5B52M$V+m>pv|Pyn%*?3RlO^!4rgUq5>~k%d^0s2onX=^fi6U+=oGBQ-qR -zpAptAQMsNr8E8}~QUk?xmEA!ahf97ab#bQ~TX{Jp -zJz`PZ(N)xV>o`@pu|>3VEwyih#p01;Ob8}ncd}_)q;4`_mV7;{eIY>ay!mW#zQ{Sp -zDEEa^aAZXbC7S-3v9`4DZ{XfPEC^E>%L3c7=QUuD@%Op2|)+V -zt-sN*v)#mi4sq+vs7|Ehb$)Uxr+0|EW8BA~wT+$x*)qz^l9;WwQI+^ko;oW3C?mBo -z9?@grB|%uWB^=ykyeu4_U>4;T6*nZ7IvFrHh-Y$-xFXoqyF?|xQ>3;9rX!Vx0(nsA -zs&)Hd2nMinu?GN;JDQ-AV?h9Gw4%zP&a{g;J5%Z$&!S_ZSQ)QnFgy!?2+u4^XjFSc -z-hvpccmz9Cna#g7yg -zR^8>lI)Z2lxah=rW+E&za5f~8l2M{~nEw9oe+Uu}%yxRD95Vmjy8#v`PIvePa7Y4R -zT~MXed*MHJrW!R0fi9a(bE}H+h;+Z7wC1P&%(pyRTbOmBE>i-7|A2UrEN2a6Y`ZsXxkaJEez&WZnRyQ+#_T1M03i%uGXA_kaQnH%?953ZlD`RhES~@oMl}_ -zm-J%@Ga1#G+QnSo09^_dn1wCfCVMb1XN>7VHg|o;2GuHJ=7U0OZhg=)H2nY=%#~GP -zWnh_{)NeP(Y9Y6@5+jeKLSBdcW2c>y1*&3Hb1dGd^#LRHOYO^T2qK{X>3|aHTiUmJ -z2O2-KSTp8ES}a~zjDP@@L&3{}$UHjMQCW+a@|E?0DKN^)2h7N_u>a?4Tld^1oppjq -zpEHJrBRuk1%@V)66&cB-8C^2FjiBx2DRtw>=BHs`i-{5<67y)C$h<4)g>ff~QCP6~ -z?-E*x?(B>V+pIt)(>8i6f&>SB6i;1ZphNfc+gNmTeC^FUe*hq -z=4e!^%UuO(b;l>u#mvfbmH`wPwtGlYD-W2t7jtk1yrkPeoKTwa1$cQ`v&xHM$xUB4{p2o=*kSvy<(QF -zvaZCTwXG>G(_qeA>J+pH5fMdX4xx)>c}66zg|TlK7+Gov3$%!G1^S`BHBYIQJO##j -z*^-f4$kN%VexUp`ya%#XlTk+Hwknq>7YG@9%o!&gggWIl?l#g0H`I7^6~*td;tT}p -z$izM=p0Z>r&+ueVS9n}B8J@CW?;-8o(a$=y1~-ts+m%9$wh|A|vo!&F+MnFRfiXF5 -z0BpAQ)Cz>05tdC0jA!b7D!K-?Jf+L|(Om;(TI~BrYiUvL(yNf=fch{x5RJ;v(|1@C -z96V48|KR00q5Cu>jvt}TH)$hXP5abGPX-1R9!cira{B+JXD)~4_D-(2LF@K$=G|5O -zu95pu$mg0d9dyc}slr)p9*s&g&Y_M59ZqEKIRUqTx-@+dYXKcFFGE}!g42L;O0fwF -ziJ`V9R(G2iQb4_8+DoAhDaMhhCDiw7rRmvX@bk6lS`b@z>zESET7$v$2|8unQqGHJ -znID*Xz{)2%=1QNW`sW?C -zyMnVGViRTZql4ZyN(+W*z0w}7okOR -z8jBS7g6#zFNI93T!I@+z4%!4LJgB0GA&!;+#){wdHvmAJ^H%S%U4@BB_J!9-?swr? -zKaq6S?k*A46&f^j^caU?k5$EJ^P)*7D* -zLCZ!C7C6hXxI8%}PHu!6uvp#NpHjPLyA6}^c$`KMF%Lek9Q=5F9V6aPJOOb9%nE@L -zok3IkoXYf57xnHqP45@ZA<8Q5P%W_qz4*}RXz|2mQBSfRmqaDZJ2X^<{#{2_zd`%! -z9C0To#9;^GLEZs&S?WbHu^%4Pu3Wz-I&0L+CY0NpSa2)9Vb*6 -z5!er%=yx&e+E>i7$R|GqT~ngC!!bHqyW{zeNhf1Zehi%Q1mEYM!&K%2AkR-U5zssz -zHxqL7$khc&(P9oRix96UKe;u>mY}QoOr-!#B*TAwcNYR=UGCT)bea`|Ez^Ql0{vTdlVMdf -z$C0@6AbJ+=H&h<5TH=HFxEg|~;s -zxtJhTK++NeZ{YWF7KMz`js-^ah}LtTuW#QuHsJEs4}-1JHucfP_P@_*hq%SWS%V0zCY}Rb61$l1nHzJ9-NinA)*M2i2yGDM!AI@2TZRB7cipx3 -z8C1Z&y29^XvOY~NU&&em8)kCn5rO%Pp$DE2vdYLx2}ezQym+uo|JyBDY`{fP;2t98 -zf}YNTdA3!?BSmBK!OUXmyxmp>zfK#kC{VBFfhb)m>$FJIz24CWEvcc`ERBHHC{FrO -zgwqlO3>5Ds&ZhC3Hb&WODIHWB*i?(@@iz{J;(}w~W1e0Y3;}Zt%if9wB8xUTg&gw$ -z@+Tx*hTR3jFK2@?9`CWM$kR{Tv -zfou$F-x+FKmdds8K<*R*%1~F`B2WJH+pFF?%Ke9NC@<#k#g)e$sYXe`cqQF$qsKb4 -zWmqEVw$$<}F5y{O6ToP}6Ibz^W*H4)^r-6Rba -zkwzVf+(j6pbH7kr9NAB^;_*ZQN`;d6w%G;3Gs_e%7~#XtJ4f;|>tr8?nl}4Ua=jIK -z2L;5%oB{g%LFQ%%24)r;%=!dU=?DiGC%AJbHO@pZCwXxyI70q3M8PvbZJY*4LV76s -z<|oDl^HqRNN6{2C->WdE)Tmh#7$aGCaBd}+_BG+Sc*O$D)}}6N0d#0VcXc18p0Uor -zgWImjrV%W7GVlmJ5#5eimk8#8UvmC;TC(I2&x6jv39=${mpOBu4QgCR#R60jSHN`+ -z?EpJ}X>@4l3E%LK42gT3GyZ{Z`Y^)@qD9%|Q?m}Z*EKDs>nBmyVyDdq6t+9v6hKX#+H6G1~JUmq>{M -zi#=!NiFh=S*~m}|o-fpy!V4=nfzWh` -zDMPYJg3{FIj8Zzq9p%0}cMQcWiHp9u(O^Zg@fC#SPO8J))z462gXZ8w%=T-526lPj -z2VPERD3?rHVnpqzvlQJCgl}_Ydttl9!G1`^qD+<{Xds&rYSk2zlX@tjW=VF-q835R -za1@o&Vs_}=+4fQ6IKSOA`o9_K^k216I$-P?w4h2`LRu%-o5Z3n}~R^N)04* -zqX7UnYfNIq8ZOVy0Jm{q{K*BIK#TSkaocnSw6O_JR%SM`6y!LszK04Fu7hP0@8_!0|+!qK8Xns==uYY2(0zo?2vf_aoZNaYV -zxHBv1>JxCCLJ)RSj|{kjr#S6f0+xy2`P3sPHVQ_T~Oy!T{|AArA -zu%S#=C(0YoPm=TDFYE&ieyWAwuq?BqI1Urtuvq63CR}b!zP-)lYrV} -zE2L+`S)Wq;Cd)1>6z7fp^!)^YVu&rd2s~2zA$&gCp~!McGF&F8;-2b`g9gQNe0zl_ -z9b2R)|FMPo0G!+)M~)Wgx%b@pqUMrwnOo=$ZN_5m+Qk!__ipZHr}oueDxVqG1*EXe -zLC{WKFNL}5J`D8VtS7JP&bWS2RrB5|gfyptucj^FwqoYUYd#$JlSva*90)FmjBzXA -zc2@6-Saz#uQ9W?s8HkLr5ZpAQ*@rOHC3k>F|D|k1!bGEHa&C4Bu3TD=U)pI5a;r2r -z8EDhI$3_^m0iqocVXEv726WH6QdK{L>6CT)B1=e-UETx1d<6)zHplFvu>}=tiYE*H -zD5H-Kd|%lfAR!=o#%>D_-7WTUJ|)~PB3=rebg-%vymt{!NdtFS=W-C|RecsY66W8f -za#hgqkSD_FTT`p#$_bg!hfjT8n#^IPdV#O#0T(Ph2hte#u&TiWd_2jvubw`HO-90W@iF6AjKuz&W4W?!Z~$gdE_(X_caAVcmU;Yow}Iuz#1R4 -z(w*sqsmIlZRkDCv1}wEGllKP0bO}w&AL0hY>_*L)7acXFm%88(jsO;GUK7%?bhyPt -zr2B3x!Dq2_>J{>xX1zU-Be=}`x&|1!FlNz?;#S&ly`>p?FjB1<8L)=lX@l&+NP%lq -zQ$t}$2b;}H;ID5#%)}M&aG%h#@#=JUy}hsdqW%)-H75=Jggx$ -zdt_NMg+3ve4r5Ga(+<>?x9241gF+csMrJ>Ken&u;Gt-oGl?c8K8VYa0TCaBm`r0>M -zoDkefGnY%0;_`#XHl?X_UxUvRfoV3KZwdgnBhbS6y@S#*B^|MfvP>3$ultIMjb>OO -zF|*PJ5ND1Dtq*P3ZNh$05RYumNR -z1>Im+QZEy>zg{X&v*wUtr|-slID$lEwd_jE-Vppn1oP7OC~ekVNjnfH^Ia-1aGiVd -zM+6}*n_SZ+>kW$y!-USYMlGe4l*s#!Y{e&tW61FcNp9ikb3XCBL` -zDnXN_QBFXg{e`wdEE#!Y{z&*Mj{eB&cM;dUKGw?5U`@qPwcFVV3IOB{EsGyv!E_^ -zGKyT6A~H6jTM_qY7B&HtKZBr1wXhXKEeUkNJ7>dMx*A>7u#Absw{je!tO9)GkFYQp -zD*zmKa-I&WJ)*NNx=frlS1x~4zbJGc;kBHr3^|gGvpQG6*$D|A7xiO~mY&B^@`R`RbAdqDE-CNS8D0RWNuYJdP2GaiByHdradjVsNVj0yh5ZI1h -z>j!UTnh=YZR23&$I}E=Si>YQ6IGp1=&5{b6u$WBuqL;yGGf8f;G^hs|vaN_kf&+{i -zQ;PDFF5Nu>Lz%uRl@_>l8aO^!24x-5fZXspD6z@Dxh}i4^Kp)*iH%x(jrHofSd!+R -za^_IUT_N*EV*-dCB1b9(8ZRoXfv_tFvh5`*#&{N{qW{ZcxG{ugc=ot?_ykMx)V`@d -zg?x&Fx=QW@hi#oK4bL<;JkvlCvra7KT*rPzYls%IJ}bm%gX?f2jV3X=?pfs2M{0{$ -zRpGTEJ;SoXcPP6rbeJ*@R6-++Im5~Ay2*?ANIXrMDHxq>l?Ij$Q;PDoF#q_L$?syz -zbhI`zVV`wyGm?FFcJdTx#%Em>OK6Z=BiGPpaCXcC+L)(&(a~l@cDK2>#0qLyDBxSt -zL@dC6ALq{khX?iT1@acFxnXy7Z8Y|9A=_)~g5yZ+&5Wp*yYJW|$(mfWS*o<+<@djS -zDyskDZfJ|UH)42UjvU-VC@@Lrnsg4;CbNCR!wp$7NFTaIw0__nMrLhM#o42RT&%*n+d)& -zcd;XZHZ0>ju-)>6KAla{;Q9fmdvi(1|AB4mV`Zg_l}{_%uR8=%6JF6wk5B>`=^z9p -zfU(gH8B;zaCs370C?wSf03M3MA@14Q%6a!Fh>bW>=YIFn}x*)SIF=$*7)=Z3bG -z5-Lz3YmB1lulJL=VwAWV6Mayv3PCgT#R30+2c~k%f!DNgY(O8_0;1r%IWuWQ#Xx{b -zfH6k)$U)$N1mT2en-7s5w*l^%a7KfRck(NtR?T_1$!Id*>oPr|j#Lz9T+JX)e2sv| -zYOZp*XRYCCTMEChhR_mAjmYG2MIcV>!9At8(FE><{ZMAUu@XtAMf9IeaB-v6V@ib~ -z>nzH_!PWu#j4zH@~XtR>WtfxpuH*GXGN*r8Jl-7z|sjSRl2QW}mttVKH8#c_* -zQy3W!FW*in>Qo>^X_Fq>?FsW-l1J&;J+WlPy#9bQW%a(g+mhpz>O-jKQY1iE*cojO -zTEox`&lH={Yo$5YBnTQ@IzSxa${M=ioDrX;3L}sMnlHIBe1wUM{_HgrX34BI -z5Np|!@lOev6>%C9j4Z3N@a2m|G1}N;@)OTR-Laieo5=X#n%jDosQ)h1E3oa>4Ixux -z+wBQr+jFmYBy^w3q{0J_W)W=X3}E7bHG|dBNg! -za|QaI=f-&3;7&-}OGo8Uds^1aY}J|ysAR6JTlu6$|9J0S{C=H&kiA96wPEs0KvVr`&h)O -zrwLVbXM>`^Wh_6k=fD+0Ypv|CNt$x18Bb5BWmy)=r8Xu_tZP2C-{ -zAOd5IwB^XZ(5R}W?U05tOOD0}MZ`pSc@2#5N$Gw8CxkJ_6>873k(+mGxr0V$-R8uW -z)HUd>Pqkmh8pLcA({Ut58@ZhKB?7C|(PkvrP(8&_Xjx-^n^Vcv1edKZocUnSg?J48V5DF`$}_q#@)%|2uyaitmM!{L^R6^bMUkUrc2{1 -zrJu6b9VxgrTlPU5qKBY=HnOqr(o%+5>Kp-=NgBZq_>~*3m<*fV}=X -zw)HJYtgVuWmxqH4q1YvH<#lK^7?jL1`wJ2AqLk)_^XV2N8wGVX=}`xVep+q -zlJ)MO9k^2bMCJ@|QefeQq+=MYV=_x&(cPQ9);36>&Y9&Q?*W2Es3ijxJ5xh_ME_mu -zQRX*vb5_e?f)(^oov{z7P88OxYo)B%7Wl}08AX!O{E<5u+tr*jzuhtkAvsOLF^E29 -z4Fm~y3`^bsO&C#Il2Ke$RN<1mK}nBMSMk2Na;LegQA=pY^JbG!ei0xxVy|ZNIGsT&*ld4+LWy@0t|f3V3Ou5v2 -z+D>!`aXyr-QmErSVS}$Ss%qw$T@_dk&c;Y&uCYLkM21Ce6x(e<@+H>w0y(Ui@pznY -zwA@YifeJ$b$#BdO^(=qyv@PZni=GxM4Vm5zcU6-~-!{XMPyjptErENCk3f=uNy483!&au6NQic<-#r5m;H730|%cXRJkOZBJgVIMTE&FA9FfPJ{*W -z4!_q|AR*C>1R(5Dn~PXU8a-%}g$B`Infy*a5=q@!a-y`}X~QC?Cp~ZB#kjQIdV1a* -zC#DiEJ5|_AD8^c1%TbJqwVEt`0j-uKsKr#uv=u7Mn1XJpe2~c_)wf -zESd>4PoHdw6_or30%4p#Bfw{bSvAvkZmrubi&Jy@JADsQI+cc7sino8u1}1qOpi4) -zyn|*Ex!>0Yy%Y$)13#XMYII*H-jMSZTkFcO+}DV;s`shYWGW(ye14HfQ5{Jhl@?Z((*G}5Xi{xg{81n;(mgP4mX6d -zXT`eofur#>fy|XC(KM^B04h9E7PYPKjzR>WuJU!1G8W&+7JsfjVO7cL$a~#oe{7oA -z^|0(Ux&2i>a`WOEhLB_x4ZiBeNm7ixiHtk)Z>!UR -zxBgg}8&_Y8j40DsQWQK7slX}5nO3!nO@`tTK7_V6=C%q!T;vmJBjXWA8-@(JH!F8? -zYHp3)hFIYp$&L@F^(4m11taD}Z8BljP~@avZb#QktjFAq(q*G;f^x6(Y_Miq8OrF2 -z{&9u|Sapz1r!wotFtgpcM^D)uKEg+0XrUz=?+)A>ZLCWoDF-h&I&a*Qxqz+IWi1s( -zZp>hG-To=esn*ui$x({oMlc2c_bC2x!H8_1)2&jDxA#7gmbqmaT~^v(HhEg9X{reD -zQL3zEx0G7d9Fyj3&9%Qy5Az_a%NwdDqR7N{2#J#~NJdPU8xjW2x;hcQD@Tb8i(h#2 -zq2Sjhr8d4dKwN=uZ?9j2+&SghB=8JU!D&(c&1A9|{60*$m8 -zp%q$P3eh8V`YP?Z8cAi%_;8$=DacGqKv+VakYCMekLYEHvCcc!*g;PVqVH&ht})zip`ycs*RBjBr(f-;ozQb69m51ln!t -zLHJX~ox6dVByD-@CedkADjrzSmOA8ild{3n-Y{W_`U7WcMIkeXa0FQSyQ$kas; -zkQy#8(9$ky-+(MivnVvXw -zH}FmK@W|usw5PFYq#s@S8kGf{qev9HIii^wRjL&Zg4lo?NpTybnjY+0ciXDGRcjzerOtE+r#QL9ZXh6~-2W+$_^U(zmyas%J(1I@(U8 -zwh)mKV)-V~sdUj~`T4AGBuE=marF-|)*u4=SH)7bS#A`yZP -zs0`(mP0gSO?}iW~%iT*idZeOY8CEoJMM6DRki~ -zid-1zp`%^{z!8{$_*W3Myp|Zkqk7(-!gM#BG;57whwH$@iMhmnncrlugN_cjkHihK -zqDwtBb!)zj<`&I)yRc#X-oY+M^L&DOsihadkp&l%L#51~4a{T^5`P1u`x0asPj^9z -z%EuI30V~d?JdYZzK|2E~?7$X+D4gF;UEggpVuMHnOK`*b*1gZoK=6D9mfp{3$|FP-u}FkVQCwp&K-`(Saiie_rZJ+^f7)r!5oxmY^N9 -zS{B(5xKT*<&;@CJrtnG>zjaQqGuF!U9v8)VyLt!kmXPS%w#dz{6O(*NY;=O^B~QGBB~`f8&Zn{0dXO~qN1I=su_W_mqrPAOD -z?S?Bb(uO%erH(clbj!qofl#d7owOn*hk@qT~ -zPdx#5=pMz!c)0G?v(aWIJk}4o>D1U2bD!JF)|dqz8G}lzJozAI6B3ApX(Fn;SUIuK -znA_640)B#`O`Ugu#GL|R9I*N=`+$fFe$55xg+){fQX#>rKqhYaCE*Yl&dj?(a?qul -zHIKh -z-Bv`Ht?fOM&~fIjM%9Jp^q|0b-280>R@a&V0zI;Z)#q#?(O84GppEs?kta6nb+;Kh -zuL(?eqE6h0wX+GjU0Z*3;jZ8-0$oYWiF~E@7SCjBcSv`e+Fjf~jJS93QM)2f_Dfrd -zO%`@>B^i3n#<3b`7%vrTa0HDx$-&0q!erqQpf*+~WmyW^8)_v4;OehB^I4ZQx~JJ1 -zCG~R<@6$$HM$nDmVKdG?Enr`DBPjYOTO5v5xaZ9()U#cn^}=_U^s3zxI#W|>xy-Xb -z0dTZUb?u>5Byb^}I>&UIZaT!b3`Z2240 -zj8*oT``67SWv;q$rX{ghOObEp9T;HPlpP%E)fIh)SjFYW -zrvV>3NJTp2ighHRjMSUHhB*w!067^G-hdP4Rv0GLGEEGRXnpEl;_XLiICoiv`SJQF4Brq-ElRy -z90Q@^12{tMKGca1Z5L{U7ij92Z1YKT(r4{8CE%~*2`msx(gngKmJ*tW{Et(c}V5T}`hY|jkHRRE_;+rLIhSyH#Y{7= -zYxj|e#_n3Ar)R`et#Qw9C*&BFY({RMX1Y;rr*>^!b7V9xtqrh=%V|y<0`xVqp8`jP -z+JTnU!vc;S79B^;4(B2VzH3*ldp -z<{&;}LsiAwR$wX3(kSbtf0JB6*-gJ~Iw+Hw<+3^u!R!6x!ZO^e>W9SrxVBw{^agAo -zNkCN+Vl3Hsg=FuWYuD&VWZ}!f0oRz*QjRC;j%?|3DK8);pX@6qO4O^C#R9jt*_ZwE -zog&0D_1}nWh4mq`j4pb^Cko!U|5CmLAq20$68XhR76KRxokfV?Q^K4*C(e+>xojN# -zGkMx*oib`GP)7$IRW>aEsMo{(k%3TvRVzG@vMnmrS^bD8-XZGVLg(RE4)9Us?l^mUENkYD;(VF%~vFI7I6itwnGSiX7 -z%fYH`*N8J8Y_XjrY6tsB)pwI@sdFBC(CT{NTpVtD$nVQ&!g;qIhgvvYkcJ`G#|9(bhmybRD(4W3 -z;&3fOh!P!zPEnoCXNj~_3Bp#*9mD&W!d%qT0@6;?VoEy)mMur$CTOgP2vbA?)$JWQ -zA*?I)t$1#r76-vCTEnSrm5d`C4)P(8KD`X76$9<^axkotqS{}RfMnuv5ar>#Ym8kX -z5LGgFFT~tZBL4J4uT(*@$tZ`IOy?R!Lev8qLp?+ZEMC-COHufHn)e%10m>M27SRisZK(1b_G_E_ZMT2X#S8+yWk9Ud#h;&if=8$CdJ9!dNLkDU9U -z&9P;=Eh&{f0cEg=4tHrc7kHZNur@zkQC1LG$p|8Pw*WV|7;_6pSX>J4qzKxuGiD{h -zWrI$!>^Mw!`bu&AM6=9A=JyQ(Cn%)d9a6M+=KRt9qii4Onv-{du}=x-X>GVC3&nBc -zfQ|WhD&YT0L8D$z$r^*vnrfRd+Y|O%V3))mAv-V_In)r2Td3>R8^sXrfp!OUv+3mF -z6jrWN6&c6|t~Ai)t8HT{pZG&eCfUN7Rxa*X(EekoT|mQ=Q29tZgu6;Lj&w06YMZP% -zbIqBfm`*l&GPjdP{x~26x1i7}jegjUzzb+C$w(PN%Gj5-V;rbsIn7B(OH>Xp5r7Ol -zq*LgI2f)LU%9|poqS6~GGqm6_isnM!xn9e7QFNY5Ha2&DXrfg61PV1~DzDOh8TX9M -z&#inxEG*cuSrJMt!pV)c`<%GD=%z#Xk*&0d9779GT<;V2zp)8PTx8mxlYD&c|8oNi -z4%iylT8_p?L(hes_Bj+Q4{Jb`vw{ugR_@(uS+8m@x6L7I0>%5z9(3gypkXIO0~Jku02Z8wmX8q81=O* -z@|OtN^hK0X?oH$Y9eSCq2qcNfl}^UhRNQm?L`(nwr|eI+ -z9M`!lLGXXSML&Qn-OSzZ{rqQjWMvIqm6fY9UjQUQ3MP`^JBk7) -z#yhZRfyvSmb0U*-s`Mxthtoxxy41cSj%8ec2TML9nPp3{u_Q-Q_U7G?LUoB`Q)k;L -zQp_Cy>zmp;;4GlDl(^#B_z>J*S&WlB(3UpS -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 -zN@qhjOSmMkg(OZ1@;78F6l64_KVtEg~ -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 -z;$j`rO?iEIk@&7LG-Eq-nj$EGx3 -zXH67fv>;ar(m|QE-`&8t_cF7`MUD=-57y-2XtO{AbkUtoTlW|9r}QK8K#ZGv7gDX% -z3c&^jA@@_~*W5EefZV{V9r@+K(_J!W#d)_{`{bQ7s|{}|YT6XK#6C{qrq)Sw_JQHT -zvt!m9teuNAl5ZT1vc!B3Y_xJl1Xk-*(`zu60wBdqd{^%AWx5-Aj0(@=Vj?&;pw(uu -z*3g{EXIKCnCP3m%HA-Z)R)im^tATS>`0>-{PR#2%^gnAi-f7Bg40uX)Etom>Xq(;? -zPdC7gb6e`yexl*vCRYV^rkcaa{}SDj{@i)a`3F=J;B4AdW}%d2Lg!)XQxQf9=pweQ -zqa7OwF67FKnIuUPF-_!KOx0FdJpJO?_WV?@Qrn#pq`2e5Jw -zRTpfZTpBrTr-mxjv?2u}tLYelOS?kqNilCI0@01!1~5F@g6ZCP^3#i$)RyIGH0VD< -zBRT-2Hm9sZ1A9e&MwUOT{LN{fT#d9w-~xY_O&8+CtE-f^^!?krWbVo;s;KMIxVL>w -z-q8ZKI)Jy@zVPER(*jcda?ePM(QaPN?ygcEblVh>B2lJ0vblrjkg$pmP_(2LJ}dEo -zZdBb&Z+e!A0t?7QF{Z`NhYa@au2$vygZpPvN%Wh-TjFXWOs`+tL_k2h^zz1*h!&qm -zQg=q0i(c~$|G)mnis|?VSgIwLD6rxe-Q?!o52$3 -zGM_!Xfuh(y9F56EGqqw!vVrNHqiKvpgk?gp5Hj!=lzjt~2RMtX&wzUcXJZTIJ;l6u -zXfLvs<6B+J+y?WCt+mb%>zx(|@*H# -zO*-ZGzrJa;&#%kJfEqu|R|ZE;g<#pp84Q7)^9S1qY7(o3EqUxHx~jG$mx}J#(rig3 -zgC>ks0KoAJi47f5e>)Tr4*&SD3@FgTg$}NsZ822s%)a0Ihs;&(HpqUyPV_7^5H6#I!K -zcrBcnYnFGNI^T;Sv?bm7&0>k&jDm4*zr}%0`wMg&XX# -zEY14-Ifq0XYg#IKLWN^s_z8wpB)r8xNX_rr)&Pyrb`-Nb$m -zw<9LvLvUgQ<9%Vd31&2)JrzDJz@qjP{&baQUYAP;QFs#_M}1_7DNT5d)(~hgdam|@ -zK;Dgo^D|Z|bPe*tD$+)hw8pD|5^D^-^&OAw9S(2n{QLcHc6(Dt2HaYP5nCTX4NXks -z%P{}}*sgJVFc?SpILS>C*}GW*8v`(}yce-zC!E-nZyA}%dOYphTnp;_dw5D#W%v~O -z?0`czXde;{R(u&;>ljrIqZ~PmM2lY{Bl`sPaP2O@M2{&#L{=Zwhu)%6EK%?|tRLT` -z?Z^K3_S}CjSFi^`ib^jL#Q?3-^@olv-xJH)lbxNcb8(IzNUYLuYO5+u6q?0hTLACG -z&d0Hk;7;oCw=O&`Cs{Kv7tZ>kgUyNscQSgLn;UYF^?m31O)UCbHOm@8&vLJ>9qV{9 -z&p_r8>;m7w+Z^dlPEOC{z9SDXTg46!q=_77(!cORV>*u}Hd4_WE-^Eo7@HzlhW?ms -zI|^7!kOn#Fs-*5~V9R=%guIOTEj?t6{XaZfy$}92^>EUAFYdpEmzWABSck*q)^V30k8e -z^+?k$N0un44{d?SQQ0c~Qo(*mB&D-gl05m7XVfv6p -zz!fHF0rR~5^oq_iXglSP00c#$?3!48=mU@%&7oxs7&=>Qj8ku%fxy#wd0#&rG<$7EaK$D26z>nCzV -zJ=&J;e$MfaUa7@?G>zoUU%rtdv&P>wQShgrL;$N~yAYD{xoA6SZT9V97(98ceUqb! -z8y$hBT)vHTNj942n1+?3FnjVPuaBs*X>#)e&R&5=;ZjB^3Pm7GJICE*vYD`^`~XEB -z*#C{U1$wbx;{~iCynJySoA}}j=o^sk_#_x``U++{xR_pkwj^FZ`wOH4u#whkMjG2l -zk#f=CBkd5Wn-ML1tjMRn$&3n@>AW|`>9n7;kxoZ>s82@$b#5l6QR6inY$MUG#~w)t -zYiB|EbiW=T=VUNH8*T~?XjwIdjt|D3_WP9B0q-f~oUX}{B2Vs_9fZo=!8vdBDzfhh -zK**V{b~EBK+B5q^w2ln?u`n;KEXQqT(Ndi)@88~kF&B;2ZQs9reCHY;J(0ma`FS&8 -zQF`O2 -zRg3GiEBSuA)#;G?XG}oT?>qRr%d7hFlXq!ncl6^IGi7ylg+JeM1$`cbpFg?5(GLIf -zZ?2W^_UFIeL4dz7+{!-sUdO$P$N9v6$zUpw{QcYC-(`4K|8PtCY(gKRu?^A(Kc6wC -z(f|7ws`0D6BY#B?_Wu1F?kX7g@%{bpZ#UzFdjI(TjZCiI!1uqtX)S-Xr||vPH@N@g -z8-op@*cIM?e0StlEG8x;I9uJ`CKsi_3;ZRD7|}nH){JEz0`SGyoKsS@wPbguMY|TDCGY2 -z{o8F&CBk1nzR9g}$G?8`9YLj?@dut*t`o@nhra#=mKAyZlb@``x4(We@<9Lg*L#}K -z#RuM*HTWgdqIc=+f_R?1R7lewXujQY9{rYuVwQrkVpC8Vzy&V*9QnPS_LqR{M=K7WF -z+u!;1_n-DUwVD9Pw<#zVmKR`jbphQB-B|c^@@SN=2pOI7?Z3o4zkmA%R74@0Ucp-0 -ztDmJ|sD6Ey{wd80fl+L9bge&aOVn@w`st}jn#b>li^rQKHj0Wr3Xsl!q>oISZH4~*e);=tV8EH=Ga6rrk#ZZhcuNQ1=`Zpxl -z5t*j4FIEk#r|u8@maJfU^Xso~=Sj*R{*ucD6D`g{OIA$F`_FgzDecJEjq+=2@u9u> -z*Drb0T?BQ2yDw}?IGun_9C!Tsmkbb@emcnC_L`PxJES*y3D*sJZ$k1`PP6j!gmejX -z9rCjvR;zrSDzD_kkavM*fX>uk`5Ea75*sZuhCjH$O^{a~d4}D7{m>78{iTa6+?!7F+wIWb_3j^gp`+9v`pIzB8yyA{ -z$GVw3+AVqmrNlm&S$XsKuk_}Z!awoa4uL}6;Gn}f+Od}7?_b~2-}mbM% -z|J-!~%&j>{cv+0&th_R}S^dVFn49;%)AwVY%m}?v8JES6cJ`%p|N2W$&V5aAv3=6A*OlB;&@zM!+kyu|#w)!pwp7k|vw8fb@9*AB -zcF!U^Zhrsx*SFILzdp`yf0@-7XnXke>w9th0ZQQu%|}pFlxuMa5123eA>RF!2ZP`L -z%U=Ha_*p(reDeK0|MJ(5_uKIJ%x{0Cmp}j3j3nOt{mXt6DHt7**}Pftn7p~->_^(n -z@$x76|Gfb_XtVvxULsvl{>rx1pY~fU6FSs;@z%a0+s=O+YBL;z`waE3@89)c|G<^! -z*Lh^kWMlg9g}r~*-GXaWs1Dh)%pd$ZfAFurzrDHqmVDaNpY7)C{jIyl^9LHfqDSqQ -zUEyc)K0ulV7_p!9?Tqfev9WLnEe>mhUW$Plis(fvWaPI;h3oMrHeuyWF^wkf#kVp0 -z2ced|`ios745EJYEA8O_n6H4cS}~U?VyZpI -zJHO#V$xQB&<{ZSP{CH1q=-b6*fH&KZc~BUEhgquckOX8`p%ji>;%7`-006ctP2IF5 -zV-*(%M5C(A4J{?6?c|r5E{;wzyM7fT#pI9lmf|QT5=pAx&{v2PmnbRxNc2_krT_kJ -zmRVzw*fL7G(1l{27c*c$=#n=qcar_W^_n2mRy7?wQa@H;uuqvX!1D9y!#S9zw_(Mm -zS7zCeUfrf$H|xDh!OLFVW_z)w&otjnFYFWLpx9wC?B)E_7l(=%G}S-$$HqG>!@ao% -zJ8IKAd)ca4+glSY?{sV0JI$Z$p(6XIrQl#$;?L?IeL?rF2m3S~j9a6BytR7xn<^FV -zx5v}YJq-G-QFruxtfY9c$4b8wZ~7hbq$5akDq~#QO}TiV8Wp#my0g2oPwGtWvyJUM -z-{r-kH5amP=?Sb=lU}Ms+`egEi=G%7>??RFl0xuVJ1zvl}%^7F?_ZuXFO -zzfJ+yGleV9UlKxT^!Dkk+mx-ssLd4uM6)7_PJNUl;${?GBRcz|dDU^EA-t*E4K}wa -z`YdOFK1J>A;KXZdq_)W64=Gg+uiIiZQ5r*${sN&qy{%8$r5(CgbS{y95-!}pE2H{T -zbilRW7=%r~E8ypS?}ES*X9w2!1^_v2i8?Z2J@|C!_2kpbkUt&!^zyo;m$lUO?5$t& -zU-I{dM|#=j?|x3{<&w`h=VMR#V8w6bsXVG(;ZL;$2SvfR0)?7A+50ks&8v -zebG`bTglN|yn~qpM9~E_zFJdlSMIJ&ykB?T#1`xj%){}j4CGcTh{PZ7AKpSe&` -zq2FOJ+Ly4-sp6`uZyJ~m{iS8TKaS0UU&d=Xsi*Nr*mG}KFDF$gw1f`U8pi#X<4j9PP2-Z((fk(&NHhBnws2h>91|>(P7^x -z%;O%0K~SI`g)0=_5=5dG_{bfNng!6g+UR*>QPz9so?fKI8F@&TQCsa3^g9mPhb{>( -z3@qf*o18}CCU42_pkTV6;6PH&T6cI*G#ScQjG8az -zFUFVO8l^2}MZaE8B*^%Z;HK~`vSa5DruF56!Gp#>W(D#4dhY->nZw(CQ#0AtZ{#~qn+ePq*% -zcWo%&&9Qtpp5E#0m%lx|qYa{YLV7pca5>zpix<2g90e5Q_TW8~Jn7leD_%mPRnIzF -zSqX{B*9#;@4Y_76MqqT4h!`_*j7yzM3XE-qI3IoER%Ag#PlD=j-HDGLms9 -zWQr&0ixiFw!2+VHLT6(@w)Ei8a^u#dcxZe&LvBPNsXZ*JY^{F#O`c8-1f7dr$6Gyv -z3*;UB8ThCRFe0#_^jLe^`N{ua9K7%4{5XX+cceyUT7>HqRxEIPDNCe>plTMNq-FjO -zywf=Wws;%oj(#msqPK_9uz(t8qy-(Pc3L&r;7T$m_5w%4rBziA$|4KzzaGXN|H?kR -z2}kO|uwz(VkQ -zPmj+YD2+(ZDi&x!!v{^EMJoqyHgunkw`H&%8+2qafv@TR%_0@zFYBEr)z6UBu9tTW -z01cWISy9a~=i~?t;wgH)?>+tb^Ub -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 -zhC|Loqq?s5=E8zL)@ -zkMG_6NTCm3d+0c5kjL`Blo<#ilODZ|-~Yz8|3JVQA!#kY=cSFW{(l3vwEr8L3;#dH -z9w6+VAKca&cN|zghNj{w|NYZ=;CSNrTle`Nz&M<2n8EP_qEU)~4=5zlTIJhqX2hjr -z;sAH-HLrk_cy^64RATuup+JMxFSmGfbJV?|V;N&sr#9(gdEVZ*@v)8lkHjW*I{lzJ -zwd?nP37qPawI2fH3T1KWaBq(*W4<(b!GfmH7SWLVfB(1tM#j;n$%S3mjB)5uj`UiU -z-9`@Kli87wjeYfio_AcB7hP5^E`UB~UAbrh=!+P96dgpH9B8Gn+tgmrp;1<29|Jhe -znvC&ejxMyB=D~Pb7H$PT>wGFv*pT!^@n`nBtk|2re?3f~6LE6#Jx2$>XEDD=6?6=d -zA#8Ao#8Kk`^YrKN1bBmal#IS{;H-B5YZ~in32bCgMAg6ZC7l)Vo{PWNp6rG|0Cqo5 -zhh%>yg**(?yEV59p&Mg*3anHr-dv&3G`E{i7!!CC_;0PQ=;3db?(U7hD}5p(v2F~5 -zQV_P^%N}wvTE$y35Bn_>vaNA9rKbAETmaL|>y~`T@Sw*JabUR|K)S%xs%^xZKbM|> -z2p)|+m_bn!0Pb9AD%nSw3KlvTTxy*|tJvWwK;w -z^lMy}wa(6@Oc%^T{fz>${7Y7$r -ziCI8gIe4okM$n8{0NX>x<3a<~ZA;3mV0Q=hRPk;zCM=Yl(sNbqfK!~Umq!i|x6GNv -z4mA_NH-$O@rT`04lwl>;cFMv$lH#v%bm%31tZqud7+J^(3dnLO+)cp-3z>0*@2Mq%zkr8sEh!s_ -z-^d`OC<|`aa#X(Sv;v1qKen5ZQeK-pWXv^9_ZbVS9(Wnc4Z4?ek^v&85Ue<9cNX^z -z*aXA9-@;5I4|S$kUoV;K3S~~nG>-;i#wT<^8l!8@5FakI@`NWCgy*vm8FFdW&$la? -z_Z6DylKbJ0$#bW@FZO4IE8S=4Ipu*$Ykw4Hz)P4$(K6N#=Ri}JB}+VKa($`zi#dA?42`nw6-MPdUr*0Oxu=AGPN%?*NsDVP -zt^}gd2Y*=3uF8!9&O9Ac6u0q2utLOJ;>4JZMQ$4JS(Y>UFN1-?(gDQKHrr6vZtiJq -zy^O?$aG>A{;}2suMtd_rgM0={ba~}Nn0b5(cZ0_b*U8D&VrpEs`bKVT-yn-BF%Ew> -zbSO+V&LqMaTA3d`t!^yG{J{_!+Q-?xvi;KQzgZJ;{$?X|g2(ykaT#Mik98Ayd3z?? -zEx)YK@$zM4=_<%Wzk-_K^-l<9R#&`ZO}#XdwCS!WAL|a^EI_3_%29=ow18pwIlnv> -zP=wMn+UD+hwpsyJ>xT7|9uKWAiZ#v?0B~5ceXqYINB0gQ5gpJ44tflXF+Z73l%dL>!>c?U4`MUmMKVxEgDgyml<6Tw`uZ%3 -z@_-rq-misCb~-U%tTOCHFCgUCDa+>ph6ywobCaBH{@Vs|f@0yYB2Rs5ae}419kk-i -z7>3hxrl@3>PSj$6df=VPyMPhx{rM9x*2(ib-7gFU?+v{3oSqsjjqAn_q?s6pos27a -zNptLg)O%feS6_kbl#OY5Hyybpi=O{wYr3Y1RSb)$tdTjH*4N1t`Wp*keK~ivt$s)k -zh(a&`naT+Q%3nBiC+p^BIuV?L;_S3L09apsuMZ2Y_|qs?T*)eTQ>OHMxjigc_9(v? -zun5%5*@Wy85S%7@&*^YpG4xz@s9t6xvLzHry5n`-)i<4_#lC%Y>`E`MyA9nQZB}Ll -z7;C~A+2iGlV7xp{E}G)6X6owLY8QhuZ~%KU`d#l9@(Eb99=oiL6xk+@Z3TUYD%f#( -zxnHCOc#f5$?;ju~O&7}`7dRNGiRlh*#tdhqNB6R8HXxoQJN@!;#|gUEvF!nOIBmtq -zw5`}1%JtoQhB&WC<&K6aj89z(N@BK3NjrVRaK)5qMf -zf~l9`XGdF!g<>&hbkh{omRAq@OzUapEl>d?B!`DT$pUgGpe$Cg((w;N`E -zW7);$ZRA1q0|qhDl2djX&(L)}DkaT%kdBq30{}ah^IRX_nkWJ#yq~*@6@^F~%`1Hjl2sT7e2_mXg?msLrQ!e_9!L!F`@~MGSZGA&^DoRY>J^ -zn$h^V9*H~jlV%K8g7F<_>1-p@M}|b)DQs)`O9D~{kMZQwW5Epqm;Wfv$TN!m)5iW* -zSO!E{FV{MvDm8$(e9rcW8LbzOnn5}@t+FBR6;wf#u~rtZlH)L -zPYZgxX{(A}X2t`vh#z=)tfN#`ZC&@=VOedo4<6?eglQo&do7&Zoh${%Q#9$@7VdcI -zQY^X|oGqDP@J4z9wawp5_z}xy`|od$+wjoCa#wYmt-Tag#t< -zJ6X&u4b{mNLX1mxJf9I)WV-}Adj92387Ye*10Krxg1KWgKVIZ#(mU)xVnM%{KoPOj -z+%tc-ner7&+wOt}B3jRlC8~UXysUgt4GTqx>sg44mRC9&l1Jm08zNgl7X3BQqfM_r -z`^DD{xJ!ca%FMj- -zthhMt#X7x7(vJdT|FXX?w0>r&IQ29(FQcwQ^fGYR%lJ+%uO^9~@A>d)zbd|4Ib_5r -zK4==(@f0YY<1O^;fSz`Pm3GR$DG%Z4uxu^JlPEq9yU2Q^@gk3gu|MnCq9lu&A3xnA -zFQc=gO75_)UtRgox6Ijmva0ku_NHI&7N0L^6X#+aO49xzc?ebjx^xbKM8Z))Spj7A -zVAWYuKA20if-TW3JS{}oZk^G>uY#M9*M{h@=|Hu9WQ{`u1 -ze~W!ka_YTd*rn`?GOniW<(uC3iUmveGQ>W -zBEOvqDS41YM0VkJ>ZEI~7^CC_0=+@=`5NrE_W(=rky -zFF&#FUt`^&&;H|ZQ^-rYAr0o*4#i=9yWw)`pYKvj74jU+ef@GVJFRFVRU9B;G-q2k -ziYVCNQjSYdRhOyXQYwsgZD)dq{4mi(;>Kl{0zQ8SZSCCk+ncudKd7GMI$C~c;x4lR -z_AF$YJP5azmK~3D8-~2Uxp_)JXQ-*3s$fGq+oZYq<9j(|{JLVxtqa;8LWd>$)i$G$ -zp0?lk8GqypN0HaPjHnbabp&4i#<`fXlry1I6+0g!z{Zp+#qRl`Hr-(!<}8FuE0#rL -z=Z(GRJlEAT-Nr^&1~<@tx#Lpe%+}5;)lHqce)+mZtG1nOY_U#Uj_|FU%PhElbC~%S1L9!QGvP -zT?_$dZ3Xvn8Z!GeCzLVB$rQ2W!Ud#xHlzQr9C$V~@>qvj_<+*1f``m0kIJrwe)L$4Fjy;t -zz!ozoJu@~jR?X%EGT0hD=AO;s>$J@k7=yAjwi9WieX>E$kgMPq>xvE91hEa -zxJdLAv&c27{3L7%zSBiwAe -zk*Ek_WOI?u<*O9@lqsTkq_GDF_8y~jT6qiSMjx59v@LR;#irNjubTlA>l>aO&v$a5 -z;M9A!Sm!_a1j{u+)0TR62*pf&m8aYj$hf76eV>9v9ytSGxhA7{1#QNXCa(5Lc1r}x -z5H$y{K*Qanm-jg}LWAE(qBrY&uwagb?6Za(3S(q)CbCY(hf6lob_pT$(CNwD4a}V* -z1xjR0mv*YA!j)cY0? -zo34I<_F_wu(H1t%g~q4>r7m_t256&a_=h)JpR=>i80p%PdhdNoq#y5})|4*apGPeF -zT%(|k)HB&qS>FyqZ&zekg&1&t$;9F}Ao;LM2;&8i8>0qV^2wWKr*+-aB;sYuOgBub -zi9U7R@OkQjgdi%X+Z>;_-Zhu$HZkp(Ky8b@E^^2HeoVpNtV7^4TaEIRXk}fGQA~&y -zD{gLiZq-6RrOzC>K{tp2j%_&5E~FAq6S=XUZ)^O0>-idJNdvC{`$1PW9zf8+3^5tn -zJTiqQuq5GefLINo{vrB?OR@?ar%;$*(`D>ns!^t^opm%$teT>I2Qdr18vjP_{-;C! -zg_fXUaBqp`w0Mm!AANgiwE*H#C}7hIk=UZ=m}3M;ILay@3vv&YA-2F32XCI974zJP -zxu#7<#uLwlX75W$Og0Bef9pqD`8;Egme4m}%E!>eln3gPlYDnTVZ31vlI@1OTX0c> -zQSCH=cN~of$q*qqmi0~89M1(3w!^I65@{$puZFlSg|S+8)|m!7qvL!#cWc}IY=f%c -zzCG!YplGM)L*%TtvAbh;qrDl1jmr -z+!fB>d~}RNli4|3&+3MfYS5sg1Vh+DHLFQ+=lo?BYp{kGC} -z;gL*3{f}xFgircEpoQNb34n4z^Vn2$ETomm3xLky10XJ;Qbt?udV(;@x_QYu<6|D~FGxF7xz^Lw -zGg5$m%)1P^Z~Dh)0mZ|gO9ZCC&aY^Mp^&^>$c)b7lzD+VplPLbE{!tOd7dW1LYb738zfbUXa*LHj6 -zdTG8~mx5~%JfL&<%N^_AUk$DxPQX3<^cL3A=2=T!wS^P>TFj~Y0QlnvEKo>yj3fsF -zwxWnrj~8_WB)%L`G{pq~Q2gckw7hfnG`<3aY7`^JQ+cMQ{nWqU80tCFCOy7>n!sP> -z$cgJx%rW|8jL7L{T4-Z<&U2hbQ47rMGDSd3P6aDK!)P9HCFpgk$!uY2T7UkmJOh7# -zPBou$>LBM?QOEo;fX&vN(ajCrmjlM(75KA_Ev+7AuucH~W}7kfUk~bC_T?xFec2e` -zg`!f2Y#Tk^Q3Px4FA7-A;24lTU1JH8^8ME{4#gQqP7{1ZO8W_2%Ho{9JYqjBad`a< -zbv|3D=ygieAN&`YWUojzsnwru_m0-%;iZPCj6d*4veVKc=S?;dJh90tq)Bix3%a<< -zVbPBmbYIMK{rFFxosSqDw|<1N^vbz@jam8vthcecoQ?tExCMd+#bwcF+;n#~2dNPJ -z%A(G=$^8s%;1WC!73Z&Es$Kz-3_oJL@gMM(xN{(y6Y;2ibh>o%VHo_COzPD?=qfLm -zi7pqg1N$h=dC`Xc*1s0VDLkep%ZZz!%`J>Jqj(b8cSmNVvgI1)dx3gGl>wc*r)3I~ -z6hEu2R~i-j)3~i{?Oy?bd5L6f((7}jxTIq*neMaL7!i2GeJadd@0&jW0U6kPp6h)W -zC~R!Bv{uLk!!qt(B`Me9iObhz+ol}n|%r570 -zI@uzbFekwina=@}?G?r+Rr?oMk1xVyzl&WdHZmOk92YYiE;rGrR&Dj=C8ai -zj{KL2hSINO-b26n+|ohT6^v}>@2yK|K=?C^ -zi>_eKAh3BZIcSiA0)NEI-GV=fnG#-~I{o1)T;Jd|1o=a*_089#KhHmMpRPz6AtemN -z?HAw>9KJvJ7Em50k6*a{ySlkV^iTXO9Dt{>!JYpice+Di3822z21& -zu`P+mT|N{8T+DTf2iemp3z#bnMD>bE=JXjCkj||S+?YyF>I>9#j$5N^>t$paaac2E -z(>?*z@AU}9qWBWAf0+dfCzAfqK;!qDFCLwK+QrwR($!yH)FP0l$m7p?7wC#PHC0hH3$NixUmC=9=giN_1>oLpr@Djw6zeB~~C!KA+a -zfk9(0rUD5TUnZXLfmE;l(1*yO;;R#|lgrim#(lxl!+h5?D)lSUjp9q%o?ovI;IW6}v(Ejr^G()ZQ53bH0=2=m2>67&fd~q*=1{!$Dd6ccHKGM`Z -zqt$^)Jip&&o`Nq|fX@{!te-TM15k*C&eto$Jo(H3%u!h0Xflv4c`j8lAYh~sKf9jb -zh=v6e^MwEks>escTuo1G0v&m5$(luY%qo3`iXFa-wvaGuR`VY2j=Pi5eP%Qo*l0$s -zC(=QJI?Z&URljBVj%{(7HSP{7O0Bz~$n{;J3-`DxF|TUv22kmc`}&lWxvac)TPuaw -zjgbrA)dttIpd9w~hzB7eM~I&X(Xp1K!gl-!R) -zK`eOd`p@gM0(JV4@{5bR-w!6Na?lIOL?s`;SgTP}tjs<&Py{2b0;+Bb4s~W=0V)&+6;;yF1*-zSbL)Y@{qDADvm5 -ztkSy%KTNR~<^o%bGP%LQzHlj?EO+jlC%1Eaq8c&8$usycjyL>^vs|#%Rf!cL@lap1 -zPKfj_tyQh)$&Gk7fYm+-i5yEN)O5eWE^_sZ?~Sui4*=5%8SR_Nw=CqCHnY|%rmgCr -z4CEj8uq{b3Vex;1f=25fvkOgS90L;u4u9!3)L-PvK&1r_WzM`=%Q4`}WE_K|HQZV~ -zrH}pSADVs#Y9lt_k11KWHxZh;xf#9&hU-ZVF!>sjMPmT&L8fxSA2+Z!&f}Y_jRwr9 -zU5?5>m9m7^5)3ond -zM2cN3ti?=eMV`vQ4}x~q9>hiT6519c%K@3<*6f*jwb8mf3z=a4$!4-MfI5kLO?`Oa -zF!YB;>f+DdO?+T7OU!%8C!9mOl69h&(zOP--;x%B2%FUZe-VyCtMuym -z=o1_lFG6uV_R^eqtOZ5{EscyF&@E-z#u#Nl3-W#Px~6MTFbD1$dTSn>n`5qq75gwcW#~_I>43u4HE9GC-{YglSRuGDF^M^?KgBUx-83IH@L5t_MO8WQ4Fr -zqzk-~9X1mRpyy0Sj6oU5W_MdbEDag*RQCxb472%!c-~daDS+*AW#p~K=8^+d8t*uA -z*y12X&|qK6aeX}-GPnv)GFH{>&^s?rnnDKbWFcbVbH$bHBT(FO>bJ!swAQ|bW1HTubB -zW@V&e<}v3O$6R1nqnV@d6b-Z{vbXCTCL6~3#>rZ}b2-h<)v6_3XC7?a_MN#QGg0Vp -zAjTl;3NG<5PA1GqcNe75P8=+FC{QLU;t8ZPbXwi3Vu;)cSyeHumM>*&4lo1kTxd<_ -zQ!mIYrzkAZ#3bwVv^5QYzaI`X5Xo$4H`-aBUYOS8FbLbj-3!XGypEQ}`dW?)1C3=^ -zS-dbQ=%G?e)8fcaWjJDg(B@I6%N>qoh<_TkMn%lGrS3iVEjZEOl%iTIgnLE}Rh`7CoT-C}Y -z9yz|h)Y>E0Elg#s-h(D9y0zLHbR$0Kw$el5W}Yt0earmqatsPe(FLeej)SZ|fX7jP -z4W%X|-5*RIwLv1@Y(eC%Pv1=Dz;m -zGH-u43a;+_$<)7m04s3*1QKt+!t@X;N~&>>e*Txts_5Hx+{ns2Jw4VDoKW!E;_Q&r -zKrshBxF0{5?r*qX6f$>Ntz8kyPI720;3ZAhbr_Wvdv?o!#_Z7)Gx*QbWA?kHLg<}| -z6WDu>RI`i6fQr6XHCO)V{Cil_^l=JlRw@;4=6%lq+{>9 -z2~8uW?cZj8Y;3S6$I9*ol4j6QYqXoP9rd&t8Vid#-T+Oz!^%@k_bwf1^--{y!0r -zAOAhEPySymY|no#8877{I&y7C{wuU*6p_kLnWgI2I$22fE4Q2osrp -zmp`tr>1E}~33E47iIDJ-XDscu+sf%Y4J7vOrS2K)IW1%!J%_b|V6T5W=Kqy5qXdh> -zf^`Yg&v!=w7$zHs!ZS3qW&eVIAeO&21z-&r3PES~JK+KpHzZkXZN2W{k-5a_?7*JeR3| -z^6EybJvsyB3h1cQnoANvvS7<}NG}Dd -zJy($I$#m}p*7JLZJB3>HCGlp59mZWa`d6dqECw|i4b^TL|KCobPRi^S6Q5)5Y -z!qHKPFotIamsbFJE*9dT0IFVb5Q1}=Vl)HN>-Ud2rE~e4GvMAJFSc(~P4RUUKL!>C -zM&&Lhw>?fvriULixt@N}4QYF=Hqn}4g~V}5xrAY^m99N!{J|=ZfNaWIdF0^*1PC|F -z-ZgF*;qZv45^uXSa+upLE2VCI5Un2W=SygIq?IQ$l@@kj2dy4@YI;0HYsurF9kW8+ -zi{c~pRk*qM_ulqaBTL3$znMIqiEFiyss2{aS*^*WO>Pg1yyrNId{131?;_H^ud1xd -z3Xs=_E_e8;{sF2E`IgN(o -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 -zA`?L?Z-I0+*y0pKXN{ -z`4fc9i3ti9rEE)4>LL&{okN1o1V*kQon&DtG8$_f<0!&{s?o*?`7mk_90q||!p@?N -z4=Ls5G%-R_D8+(7hq6vv`iwT8M;a-x4FgAMe$tbXsz5|`sJ=xr -z@%X|gm{}oHdox!9Q`izDAkn!oE-@kQbzD~LH^wmCkyE6>I=a(pMxV3X>X9-~CUxuCuuftD}H0IlU)RG3@xXb)8Uf$&+a`HgWq6+uIXK4?PU{ -zFR+Pmb1_dcbIcU|4Fy67nsZiPcOUe3>5~%cDNQ;ie!9-00OQ2vK~0<{E9Y`8SEXAG&Q;O2 -z0t0nWs3taJho`IemsQ(!SUEy~7kou)`$(I3v}_9<{3v<9u%jh)=Qz>AVPr^}l=rN$ -z$?4C&%-_=9!S+R0GnfRp!CyB(rbG+LLJjaGW{at~DHU2Zr)fe?QeBG7h@kOs;t>z8 -z!r$xtH|x9EmMo^Q$W6=BEi}rT$fC1!2vcL#e!klEc^51kq}2MO#OMk`wY?BIUfsk^ -zWpyx(Q)bv(U`rP(xmGhmA -zWs=)yZ@%F?4oKp42zp7H)9YzViLddEtK(aD&82BBB%fBw&i*YDrHPglTXPt#_}QXk -zQjrXZVwXStY)1D0+P+ho3msM?v(eaoNe@kEZ^=$~BO(g>P5~A5d6rZh%*+4?|+HqUT8u?q|n=SkRvDQRUSJ)EuO%!RCu~BVG!?9 -z`zi6My#FQ+FqR=q?Yx%uRX5`;G{3tLYxg#LZvE=%KNNVcpPu1B2uwaV3V&>LK&5nd -z!fFE3vuT3RTiFY=UNo4Md%BWDk(`vw4fegsD(L^XOHtNn52OJbmC<;soDi$HQUe#Q -zBy?*0aU_o){~`j$ztyh~Spa?IO%y)#%p)n#8p$I`8xET8?1k+n>4S#6fN}BZeP_)D -zSa=Y5-YRn~dLEAccx_&JtO%QC1B9ZFAqTtNMtg9Fwa>Q;ujd*j#U4W3oUDAR%ZPG3 -zLVw%4Zr3<|*x!UviszQPP|?(rZ-%7ZQJCDA89+@K*KM1-tYCONw12s!>^B;Y$&J_{ -z`{dHh6ele=HAu7>($OBL(miJ$wYzq*qIGVs-6;alWAo1`TGNFZ?y`~hZsAr*yHl80 -znsv285_+pCpj-U>;Uy97qVN-G>Qz0$f=gYUyvyG3B_q4Td -zQ#mg5a3t8>XWb%is|I+@5-I8Xwn2cN38qXn)Q -zSPlRyofW&8zP+}1t*Sp1B(dn=-xhV|ZoT#*-tOM8eUAts>C^r1N}ty3}+VMSa3PC&80u{##i)@QZf3>31?f=tPY(SEBcgNtn-P?IGyou9%!SG^AY*x13Yb4~^BcQSQy -z378S@-*ouzN1j>a)l64SGTszkwmV~Xpa0P#P0DLp?;nz@uB+vTTosMvKbu4Ax#iZ! -zs{Wx9O&aN!9?bECPn}Z&TFD=vD`#z=?+TlP&f$rF{CGqk8SDx=7?%LW$F3Lcm -zbgYmxTA1%9ol4D3ajnC_=wd9R;?w<8pJIrTU*TdB{AMWD1K~uLn3H-)7oq;5;ia)W -zdVFDGG~d)}8H{W=MJYy?N*kN2@nuY7ZSH)~)F|L#5Z;@nQnF`4h5c@gXRT+U81viQ -z13XbFf3-w6AysXWH2O*mO@UtW1|8}$WNuAJkn2|AL91U(w-`AsWfjty?W85wcP1ph -z1?%}knyg8|J6V6Ox*9zy25+V?#83~MDm<9&QSES#`d6iiOOd&qf|2<#w1PZL_43(v -z7Rhk#s*Y84^tO>*nR4K6H4kvoBDPS^$15qmo{P5S<)#fGWI7?&kxCVD@9Q!PO8#nU -zdf^;tEydv^uN3z>w~>;EQNUC7c=Ot8X7f)g{ka=Q6gdXVY~8SAX(%l_4&gB`fpMm9 -zrHH}JTagTu8f>>6DYNq2X}-Y2>6unZ{X)r-#sMxYbE~V5A&3xr&Q -zd76gmh9W_3siZl;x@OMyR*G)oWC35p@xEb7nfC`yu}mLTVw^(f6QPW|7x)Hobqi6O -z`UjoB-7Vu+^K&$dL6_Y4GkFlF9>;sImq_o>^>G`QaYu1K8aa7xVEKkj{>i^JUJPYh -zk`I+@WPE03mhnkTj@DQgzg_@KCl^BL{2?Ac0M^p#U^Ewekyi*U=Zgcxf#NgP^*r%i -zGHEg`&?I8ZU-#T9G1?zbKhYD<+&u0U;c}2$>TP~5Tg8?xt?O}bIc~^Z(4Kku$Ti8t -zkvIs(sMV|_oaxn1SGdXoU`Ss>USo#Bami7@7Xdm#e6^sZ)jug4A>Y(#7_Ypjiy#0W -zR^%qWQ1i;I<4Xm*>*qH5B)(gNE4X+D=ZWwc1_ZU0JDnYcYcGoTse^>WyR1?130!#S=a;vcKWR|=KG$x*gD%0M)FGv#S|V5n%q#(@&yaFOa*v9 -zNWU7XnM{MYv6y6O1yPww2{fAB-1lveF4_dhWY6o%BHdlMk<*jNtk7|F^#J8Ix`C#9 -znY}CDf5t12LF1Whnt8y>iSs&5c_C^`cb;_cnCa>7ESFQ>rxC-kML1h+`3Mao+3@ez -zgQ@zytahW6mB(ztoLQZ; -z@qi*unJMOtcb-968S}l;5R8r-*kV7!EFoX2bG+d1XG?KF5#VeFYJ`;mu0lD1C|q9B -zRWq;*>R81N%Z~{oSkBIWHjkBmaG&)Tn_^ZXV{w!f{`HGpAGgFJe=;mQFUFB9W1T5k -zWT|ZRmHe+4TZu}+4!xp+MNU>xdF0=qI@;NfNGz@T(CLwPU#<@<0u30D*YlQll?MED -zd!rkwt*%|k7sEpilM7q+a_5&I`^-ap21elB-#=`uKS@j>p;Kp%BK%X1|UG -zuMT*%*tA}DD4I*mg#0p2&~BWM<>XY-xj>yG0rN7mB`S@|P%MfOtLs`$)H?3-*Krd+ -z1mG2QxnaCcJ`}d=gMnMGi{}P{jx)!kT>Eg%);wJkLy=Fn-fexG{(SWl4E*b`f!Js% -zZ(~3wy??zAx&jKeuFR+RGGFO-XwLk}NMhOM6^Q~n`TmtV%1wsCrP-Zk3>U#aj<_Lk -z+Qrc=SmU!9XT`VD=ZpO|R7MO^!ByjueO+7p6}}IQ5aUS@WlBtu3@4tW!a-H;dgO=SwzE>3bqd9a`iROYTqy?iKa@@2K#kf -zYUJgC%qlmvgi67VRA>>1F#}%#IAl-r*3Bh(CAJg}Fk9d{bp<%kG$}tHL<(c($nxxh -zlDkM2$r7o+O3taQD1xNEp((u>Gy?LHV&1PGvcogKj=i*0>4rJ_Tl-5hEbD -zDSl!k9)9E|BAH-k)~WwESTAuBwRw$jx5tSZrsL8~YhpXVn{1L;y}$ek&dTlTo^G(m -z2}Mn?I?*Elsx_l!msxWEeFS{%bQIyR)KieJuCI1@6sPa)S2WE -z)2T4DE=2#vWKN(dL_0#Al&6?fFoE7doG#>P8RFxa=OXAp{(PftV&yz2cd)YZFvObcdNaTQpAKw4$3+@e(4G%qYNF+|DF|~h8q5HtM(#W7 -zQ^7b4owidi01yakrb^f}?F>;`WxK0I=!h#{_8F3QvCnco^g^(2=^G&S0XXU+d_!`- -zn45~624;6$?w&J>beGqqjrg~59rGow7g}ZjX3g;eUOCAif8O!m&b2Mm)7~K+*|o91 -zdHje!a&nxlgU;6?2Zt#}S0960<#crQQU|3s|J4ZX&iL^j0Emi}eEF%kVO{bu7kb*O -z9)4~rIgMV3Uwc2?L&wkZxZy{5*?(^2cVFp{4G0wa%F$-|>2BNIy|v+YQ_b?V3Rr=x -z36-yeu49arsXV7phw$*M&Vjxwn+M1?qGl?D)F(*Uq6V(sKsEzm-53*0l1x%rIR?Wn -zW?Fz!gB2AS?8!|wst5?KQhG|jKpYH3u!gmNHYh3^$-tZ!OyX!n7)Xuu6*{|r=PD;!QDMGZ-BcKH2ydDkXv)|xN=^5u}s -z?;g;Y(xM=)!*F%L9$E8^>jNks!drj;-P2sAy{2D(_xLFCOMYyIPVyW247N_c1)?n{ -zl)%wgp9T;72Adfy9a#wUpsFJ+&-96`MxMba+xf#U`P*KI!0bKwjMt6-9Ixv}k?Z>A -zJ##T5@G65M38ovf@*9Rv -z86id&&BD6NZ8F&6aG-?Y(*4gMbvH7f6uV|LEBGec7v4m2jw(0tMCO-TO2Pd1Xm?>T -z`f?}#k?7m7>yrtIR>Vrcu%1mWN|m2pOIW}qqA4d~OEHT)T5I|eIQI!eb*j${bcR-u -zvS{7*y*movWEIxcy3NxAg2Q63Kc~}!LpwQu@hBexkS5a`czoo%44PEAZ780NUzZP_ -zpV*EEA!g8Jbf+t?Yw|i}xLf~VIy>u3y?J-#g{$lx~Ph8gHUy+Ur?J44C1c -zm3C$3xg_b^%de7qWt#KO_^~j^IT8@mAi0eqOC|I`yr5`=F!juFLj-_W|3=1Ibz8lS -zNP$yc$?9S9vFxvOx9J#j(`wZl5hHozy4zs#f;b?!p4AXam-`@wNGNrYViqv$bsSg_)r{(7RDr|Uphnxoa_NR`5L_0ZeRpoPT -zM?}rVKGrsjHSkkQ*&?!W!}1jSV?&RlVJy}{{h;`zro451lR@g@AHF3M2c*%V=0sIN -z{hE%mSa;<#@5NuvQ{xSx;Vi!u%#{uMc3kM)KhJ*EgG*^LiNBsT$M@h~kmE(0Ts>uiPAkZ`Axv -z+Fur0>~ajih_f@QWKNegv3ITBqgSh>y61kOq7XfEth?(DiWrZ1TlJy!wA)(!6zi8s -zaYoY=xRJGAH|%*?PMv(7Rz!01>G-{2*13~l$b=p8Wex=NtkZSsoVii#SLu(e%UZUb -z0&@lrd`?dWo5c*SCU}cvtWe`;+9EmlL2;E*aBno?SF|n3yg=Z4S&qR(BqmyQ(k=a% -zY}LnMgqVkc9#Bo)n96qs?m~XXHuE9`BS{GTO1q&0JhdwHrO&dXwVyHoN~n;R9{0Ac#*Yh1 -z;;{~?`D9iRw_bXd>i}1|23&|A -zHL&3(_>xR@WeAn6KH54#FVtPY8Gk_=Q}V*Xdd_h`57W|H6!RX4jjiix3P=NR8%5m5 -zQwP7^+CKoHmBI&=NAFZ9+!Z>V>CA9zkXpdhHD|zL7$P{R>b|h1_v=!onFy?FLiGda -z{WR5H_C}V@#^bSGYT>PvAvbZ<5=5RfD&)lrLVCHoiY6-Z9!GM@ -z1_xd~4JvA+PtwLlfzs}UDbIEec~=zKrMGf*ec}FXzz92LT;NE#7)O^{GMj~alDV&k -zfoZKDjLwuIZy>yKUj#_0`l7|OO5Euqtr2eTN+#};Ag=`nLRdf6t@Ox$)dbL!*iwdd~fa(uW6vQ6yS;|BfRC -z5;_Mc=q|PsGKiZI?%1Z%Y{Mkl8~nVv+eDsB)A%%|3sNe{ls}7&khKS-Us@VC=~;Xv -z!h_r(2eKqN+V((=-AG&>E4NQ7lR%3R;YDMxw)(pCV1u(rBS3)qaD5jXwzO%DdNVD` -z1hfPW#KpNG1PRFAAco3CLgryD_=FgJ#p@U?MY{aQHScrl{c^fv3f8faSuSS30{Opy -zqPU}dfP<8+dYU;VlXFc(e~f=LmtpySbq}TFL^|P;`kOfYuskjqw>&LB?8{tns5Y%j -zuyDZ)Fq6_+#kQr$9X2ZQA;9#5unfFIYZ}Ytiu%q3Z0=-d2)9QHCFGr^OM%K!oRj#48B=USsZE{? -z@^xJDbNh_w5JbY!<_hieyKqJMm{4!k)?>ZYi+Hc#x{?dU&kBF7Z -zY}*O{AW@`&9r+X}=U@pq>nby1H%GfuOw?qe*#KY6_9C(M%Qm+LU4z5j%~qN-CWa0D -zFqN=tgvH@WNP!{gOVx9zC|Yf`D$kw7Tz<_PBo_)i=Mo$n@IJSg!vHOf1!vlahnk-r -zZJsPvnrJIhvW1r6=h}fJIvg~dU|^7`v^~6~B4mF8Z2%K);2F!2$qAzfBuU^W+{{|HOZeNJ`idB>Ok`rGUi`gT{=W?IZkXgtsOHNuzEKpI8SU#!z>b-VRv&_W`gu*~r-dt6yiB#F`uD{TzkXl{9u -zos&e`$aMjwazoqiC97w+p4{q^UJ$d7BmHgRMuElmWk5#zz|)4V;;!ZLMA&_{Cf;N( -zr^)kl6`Vg|ZDS_R)Sb$V8_S?Un_j{-<&GY!PfKgP(*mH;ycy-LcVv9kq)T~VZcs^6 -ztJ>415!+%%W_qP@GPc={Ts$eVh -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 -zT5iP#Gjj`af22UMi$KcFr8`m~n=8+%d6;CCrw -z7duy3{=8@23pZy6oPw)k`MF-Pev@P6ss$~)5(mttUB08(#;{;=Z;n30t~nfH3P8)_ -zul&E{x6iZaQ|7tMh5(tRTd>`p92TswgjjaZ1$6f&T#Oo`JfX>4tCicNW6pzVJ{wFQ -z(S+q`X>_t3F-TD67ntZ_nJr}N=q8^MF>pj7rhZ$CNqCJ+z=VF2jhrST#bxx_Y8a905M0OwAd!QFJZIhER>T?A=2 -zy*e5lz_Ry|wSdee(VK^3OC}nO=yl9#1Q0%@l>)Z$YbYn8CFN=0kkP!^s`pE|oH#MV -zJBM!Q6Kx>V*4wj0>WX|K@+2rmy2jl`ssaczxY5$7z?P*jo%gIXJczvDNogXxbDR*P -znK=3(WF(>kcTefQ)&tKU)k|<%#B2_kU6Tyvhbcx+bP{{k=*3!Q&Dtf -zWF%M+?bZX=6cY+y*w&;E>ptBB5P_Uv6k!-S5V%vW=F+%-igWC7FU!0U4IAn01dhb5NrPrq7E6W3xA=yx -zaPG>o-Izl1c}#PLVvU}rQQqp^e5C=;#)5roPAwL(DEpzf7)SO(b96B!ZMXqBwuk)^S}L^jTvK?spr>LVc_Y?C(@u|Q -zv-f_O3j72-n@^L>XC~Zi&0iwiO2YY|DU=X4+--;&f?pt>$VY*$%C` -z{Xw;)fi%yTr -z$c9Qkn71UX=9;X9rcTqf(-jq)Q}L~e3v*+YT1H6nB^sfcv(`r0oTA~S{2*rml9_E?Bkk3 -zY(CJ8-p!LL5i&}Z*{w&z0@ogt{5s?Mg%N(rtJXZ`zXYuz(;QLxX2618+AZwsyk{cI -zl@b)(UN=pd!i;~B -zgu{cUBWj{tL#9!P4Xwj;7M5{Z^eYpSNTk2**HEKv-`>mG6sJI{UeLF6I+bC5(Cv00 -zO{-jV(}wPIA;^cjJ^qeQ&cM4oP+Vp;e2kJ4A~(%J9(SOl{qxAtwvfykgbVLtulWt& -z5g-IY-UYz8;H=*=$@ql0K2z9P&E{j->e^h`>rFyjnSTx7;cA{CN1%}h{rW!+tecye -ztMrcM=$apH1IhUc+YYk6Qtm&V?(1`TI_M458-oVzIm_fk36Q);^-;sk`-f6f=uuwB -zUr@uRZ&qH?EGh633P!S<>^TncUd#x1k|9;umu*4|a#wQA?pz&E%f`UQO9At|h@6vL -z?{*^gmEJe${ApG2O$f3_Zzkvux3sZ(!yJuRidP1@QW8FeHZ|*s15`*tRu$(6T|Ju`lJpZ;cJDRlWtKSFFfx#uGZoRO~T{Phjwr<0po?buf0`7M&MR>+A(is|^$%gZEL$nJ2u*t~=FPLF%5ai*Z3f`^N4_eryjefsHtGm#C=g@2 -z%~5HBXc&%?51xGZpb#;%^<7F+`>qaJy|hh~Q{~&XuB5MES)5ZlrIyI9`D~2$+NBTG$F?4P@DDDOpCpRhZ?U2-g00f}c1vk29Bjm}za%V5diR -zKdoY5BJ0d_z?U!==H%sBU2lJQdRQ+1=nL_dO$n7RfGK;*$I7L4Ob;*wo7-?tS9r3> -zWB>afN8c~x?Z~AryGex`*HxiC-T;h!y+G%G-*wy -z<=vF*pIGvvIO|ac%kCKkoUVUqff5Bn -zTc}%4hHJW>@38T|KbwIWZO}|+c$s7;;04Q$U`cYMP+N<(pE0K7$$2+068L2)wld~Y -zz^!MDeDXQ51!@tg;EP5kY%&T?rE+F`pYP^PS6FBR>$Ml`b@C&v -z^x_Kfadh*1rJpZj0HLGbgQi$8NdGIO$NnqO>hdK1GtH_X?VGIVs$z|<5p7pyHeiYm -zaYW$TyI!F2Ig<%#_5gunfZk#Ee!qWPkOiT*>-}3x{vrbo*e{2*8l-1S`To$&4rDr4 -zjK%HLRFAdTx`oG&G}o>t-_2Z?}&hd091L_2X -zF8!I7C?u@;s~FO85tdDQ3!)v!^P;9jZv!HJ0cX;?CwZx&T|sY{@NbUNEJW{H^lGI) -zI^gN~fLv0CX{0y4rN|U7P*cA!Q-EwDbCi94o{M~-2m&UAU-V{yLxB=3-Z1X~ -zzltLxv-q?(-}}J7q6n6)quCtPAq2ba7;0aHsK(C=bW;0Z~O*Y!oY&oyX8&T^KWl^7#0YoF*O{NFXLNvP{ -zL7!#iszWG7@kbx0o|Q;zgKP68$d&CdR+y^o8tDh&7M38_>28n|*T-`UI$D!^JorO@ -zqmc|uhG&H6+%~`H#76-f+IbkCYxGNait4fD6e;xQ@AE-dI%@*~!Js5-F0`#&JWVD{ -z8`sIPJbfb!dSIqPNsERbLle8x!-t)!k5n#pvpOu>;`phyHl+};LQED{ADx`tkIXNh -z#u<}$vD49Y(GKGgL}$3ZY-tIIM9P(v*nN0k(=l6hSm!Zp31a7B<#n1GTbA@ -zk)DmZXizhsFxMAx8O@U}{}$y^R{r-2?hN`Dh+L-C#T)1tu0bwo-739bq?&D5wl1#Q -z=i3^~5ROLyY9?~6eSGkl4hg?zAYEpV5U*EjO -z3#5JRuKjEvymG0~#!~>0pd^FNNg$)-VYdwvAK7VILKA$#X+KwveFH5{IUMT}gn7~` -z`{Mug%{Igc1R3qH28H;QdAm#M -zUFd>X>Qud?@C`cMais9qaA*xh=Z&EKbw{6lZzMn9^@a19IxuNbZWyt*(DRC>t&aA= -zOBqwqr_%rX`sut4!}0o|-vC5@{WLWOmw%vzdf{WRZ}467itXbPdp`N$R=Cq -zGbrVwr1uet+2C;-G95JPHKGShS)TN%Zo`#U?4eQEiY?dyZo*w%kW&4_h2qFC58T&? -zH^0P}oW9DT-}B?>6Mi| -zy!epdn7w8)?`xPo76WS{y?c~oAT-!?12>>&q(>Ls4l>AcFa^5O(~ -zN-mFHb~pp}vnv%_c|0;k6kwSQ($oEp8`($zGT<3{TG}8ob+|qKsMSSx$8rIYq)#lG^^+Xq@gkCe;!Ek&M*9z#=V--@@lMaQKUjMk;Uy -z9+DhYr*P~R%EDS`_)UTB6Jp!gzWn0a5Se+-Sg9k(Lv=EfTP1vn+MdX?tC=q`Kocv; -zL$Dyid=y>2pPuY9MJ_{O>cAv?jx&KZCeLBSZBxJv`GU9l2^LbWvSBx?89ON_1^8C> -zSag`slLJ+P_6wap`Ox8qFhMgPyt|HMz-b9l*xW(#gd7_l?5kkNt`3stN7}GrL@63J -zY^m;6>HR?MKa*+`}@C`Zr#_@g_0WjGV(`G -zmF8XQIpMfXa^+@Z(siYdTI5LL4uz`&#)uV?ip3s3qaFtLsqdy0wfA(jI9NQa^_f*AM>pz_LPG}mVf^bb -zvshHdub(hpe2aVo{9skzMTkXpmjWO`YB^KpkK<7OuWz`|h8%`^Rq+RUPa*6bO%8XR -zP`Z0(8H$t4AD*x={?P3&Lseh$+!ISfdx#gC*Vwi~As%g<3;D^=^^wmG*L>&#c#iJ# -zZF9ew@eGc+q)s;Mk@WHPu$&~laW{Z_4|_XeIc<8S08ocDH^(?+(~?)lArHFtxMU9$ -zR3EiTg+26V1(^9WaV8x?`>y*Uk^?1^`~spy>yCk1eY9>tL80S_;spzX#$c$!>;_ob -zgZ!)JNOEr2-*jB0$dE8$d;?@rSLH{eGa&e)sM*iyd7%_7*q&6wcVmIF4$A^T;)6Tp -ztueyn2NKx>s*0?`vL+82yHQpf#VN>#&hCl&bGU3CfJ;$T{w@AMp#dacS=OzUVqn8b -z-GB^HQ!{cgbuq!Mp_OY*3wuIaOsM^*h&H3TZkzW{y-HeHmqlu?y4?;zw|!xzI(3y?AKb`ERtJEnQmeE`KlGV~&4%C)ch`{_Na#Hc@@A6Y}_e;l#1B0@tIi=6Lxb`lf83c?rkR@nJfyb)CU>g=#3 -z*B{D4W=GoCHnNI~lHTBU2a68K64!oW#XVht@Xqp7lY4{aT0p2lT74B>Gc}hf;vkK)eLDL -zqih=Jhb5uwzyu$Ky%Snb*3&AGhH3#F -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 -z&l92|14jvb5#bEdY=2b-1 -z7q~qwh4L~J;!{i|G$B~||v -zdOj;%zf{Id?G4+YlFKR@FfT4<`fN%OH(Dm61H%wX4GBriiILX(9+gt-$;>A6s03Z^ -zeuGXZG6HnjCSj0s=ow-TbFPPb!#9B?c3VEw$E@d#cKjsa0Wk-1L7cIV-U3@t4F=H820<}YmvQD0LjR($l1*2k>MSx+hVrp76wdxPcvLy&;wfHV@fQElV1oGp`n~vV{2op -z9B6X_9mJs1O<5Vq-R1(5B$>(3bscUB5sD(TXcmpKD;lhN1*w(aCpztBJbIvvjPO3R -zyPxr{10v&YPNj(&Wd;x%&e0P6J1Q@Ou7$z(K+;>=Q+Pg)@?w85wkRWj55P?olw?Sa|TGQN_`VOEK{dQf~U7}mU$$UC_ws!)_H -z(599ZdGF*5kML9V=FoQDu#Q5x_(ylAy?IJmi<_sFjFfl2Z}_~xd?-{nl!{cUd7zKg -zqO(X(QAI4pK;ona*BE4_h$a@r91NPDV0}^oBcQ=}riBL>jlv4)SiVOi4?q22$<5Gs -zH$_FRV+zZ{A@AxlH8bu(LPTaSxvB^$&DNy6l<+1?38>!2nmM09VrqUHw<`G&|KwRf -zJ2B5uz@cdO(#G`P=+9+79L*qXu8S||H>P9EQDPI?)*4`ZBd)Ms1)?%=+@b&@ -zvy@3H#GJ&NKpyb!CH+iamlX&6Pie*(U5&~|79WwTy_D?d_!U4y(0M_DKJlTU-Q@ty -zl{WW$o%%kO8L75r#;jS59zl| -zld;+Q)k?O!{?zy^MxZ=^`$UXODZEAV7l=+8%(f6W<}PwLT9~~ROLNN_j>yjJ@@!Z_ -zls=%lS?G?FOIP!QK>{_>B$+F_Mv+fI1Boo>Y4*&g-wO5gvQ;!mljp;FgEyY=_Sk2p -z#v%W^v1!x+65N$tY2dR=xO-eZtpwa3zyJA-E6FC)1sb)iY%5!v=cqhjp=;?%ys(^W -z0|zoAVqO*1CZtK33obL^0`&-&H`>z271NE;Y=_}#{hYKm#yE^0KhO?3F)j0q$n&lvO8aahYLwqqwEhe{ZFzn>Ctpf?T5%dv-nZ20p2_~T*&*MCOesR*6gtRV|uD6OpKwL7m69W%*lnx53lGEBu -zyRZ0S+(xEVDxknFG(inJb&cx<4b7MGIP6-$rD8!pz4?iKR!znuMM9ejx0vW)i8<|( -zK}TRiPct-QR@>m+qTF4jJX?kgobZ@J&!_}-?>Y)W8U!)C(sRhL00?(TxCE-Hv<`=D -zp00bcL?G3S^kLQ#Pnb>GbtdMX-}OME5p|e -z>7^RmvQbA|IjkYSfA^gUzi6b*ct1P5^=Ps@R@@;jQ1i>fbN=}nkgcK(g3uE -zC9MRkgnI5|Uy*`!vHqSf|#3 -z1o>{v5v&{xLj!dNH8dlNvR2psQMsnLCntEAGC@H4h`GC)d@qf=|5O=`Yw -zW*{eSZmnH^=?tCA%-|;SBYJ+iK#wL9V~}Hc^w_MH1fYT8O$zKIXTh!)8rMtfQ)4x@ -zsuiO;8_>N$KL{-2)!G@!PvpZw&7_vhv|4U3YS3mVV_gmpwmgbyahTYaf8d}LY1$zb -z2L&FB$!@urNMB#S|Ml}mC$bO=VwU{@H$AXD^6jPzJCVq<{mD_3no1<2y6iT?Jt!Tr -zk!e1lYzYW%oiy%glYyF*;xq*THEMJkS(Lk42s2S8&tFJ;HjfRkup*%qZ2(AUY3q!Tf)Iz!P&y` -z31(4gQE@|Jsj~rtgLq{3i0gx)-6Sdjx*|6*Fjc9v7s!J`kFDE!!!v-fi#-5%+{pwT -z918+wqxDq|b;eE1*^yJ{cou<4WM#bO-q0=lAw07rw$W@Ic?)8&(h=-L;+p6t3F}hG -z&e0ri!NE{#w*&tLzA>NPoG?(_qGN+wz|ENf4St7Zls;0BSaX+ubp+8Oa8i`>%u-kv -zP;H1QWurv#F#Y}M{}3eZnC- -zxzX#w#2*FACt6juWwBNjgrr*^TQ>04g#(2#GK6aN;4JGZI;9_DoXDuA)Gp@w3LsN# -zz&dQ{Hra!DIb%$BvboDAHmIxOXC4$7p-8x}GsK9O04AYL@uZEyze_ -zb?KU!Zv=ZUPbmxoo1czhE+$`yNX(;=qVTSuEXI8;MsLC9j|(?R7zrf|x0rBR%G3l{ -z73*{d&Ro)>xdYP!Dv)XfocZM5xgC0D@+mjTZmTaq6wJXzq4)a!?fqrfgEc>kZy@go -z5m>|u%;}7Mr3v7dX?owTxsAU*MtTerIT+e^S0e`pd1Q+8X@?#YD23+Fas`{P*j3Eq -zWx-U4#vs;`t?#`gDP&%uVeGhkT#%)c@t~oC3TKyXy{s2J&B16^=etVT>W)vQi&>ZD -zEIkM@Z1<3)Rv9pJXJ+pVhDo=9IH5M<3n=rv6qz}GfW4D&T>UX5ciGR+KK5-{C!HG$ -z6w7h<0tMKXV?_h1wV99?p{^H1em0OROMz}&uDN{e+e;WP3>CDQIDi_QwNz@0VBmI$ -zJ<&C(iHA8Z9Nbw33h~=qWJ+Y2z;UqqekaF?>`tpojZCyAd$7qTS>os#lZ1(*IcJX*nB=)yKDh1TgR2X0_kvlr$hs1T*0!d!Ortq-xo^-S -zL_`#cM}#hxg&dK%7B;`WXPl|wEzmH^73in>);y)Ixo>!Bqr~S!29oUr92Eb-(%Z)+E8DZI6f%wdw -zP*vz)%X7M%AKf`%rp3NJu9g<%p1lTH4(Jr4AJJ$IJ$;AO!@&`yU=UuOBYII|=Km2& -zeUm-X)wGSb-yL^%>Za}+jn0R+pziZ&`6!N(yOb4BEXt8is -zn@8IcjdN_1L5CArdQQMCpe{`xq*_1#0;W$(LvR`}PB}I~Au+c0#M-cmAqDU&rM(pD -zkYgN~T0)DjR+^qI2ESaJ?h4ZDunalDtTh;1pI}v%HRrr&mieBE2(0X*`Q7sp25l&9 -zfwYXZP-ln*-2xb57$?^2NY*&`OstE14aCJ;aDin|O)|A)7aWg^SQv;3KHG)n|<_4ptT9Tg)zNwZ?#Z -zNa-fIJj3lljY!H`XeFK6O%YM}WHaGet)jto|?kdiDh)tBqkA8aFC@mPK -z^-6oRdJ4BdLFw7{gW){SMyaw=)Z3Vq!o*eE!Wf3M${9@SsU@hd5e>8!MXEUjPT~j!V0x<`t$X*=AlNrQd~T{X*c`y1PVFXJ}9#=rQ)y -zma2-$<|UJIMWRn-%GNs`L(=Ljpd_*$9sJHR+a|+?Kp{DHJ1rYISmZ3n?8@YnIJpUG -zz(RJ*?U33%+ijSP=kqYSh^hBw<>1Hr`;gFo;t7Z=U{(lp=?t3Mrd*~UL(;;p-F!d1oeU>Kh;;{pg7#^F>bksJXQx)UX1SRaK*U}oVyZ0+n6=-vD= -z2gAEKWE>aiqtkYNZ1j~NpR7$%dozI;wSo3lK5>mhI!=f&63icp(w}11wab_Vln;Ii -zx~4>phhua!dZ+X4qfW*f`7v`L*X26qT^0BZaA#lb=saKySw@eFK3H0AOjD}Uw97kr-gCJgNj=OsXZ6sHO -z+g-GL$|^eSQyL@*;d6Cx`s?bIDM04uFoK}ZFDJJ`o$dnjIxzgGx2in2U|7BHbux3g -z8B{8gmoiw*9F3%`Y@}3yT5RoCR~g3`ZOy*+*t`SKl=2y)l*gR9)4XYNM7jAtC#TPK -zGlaCUHCYc`1UV+lkpTAbu>^O|zWI -z1KKuIXp#*Cj;J@;=sHdiTF`rBtIuvGe?UR8AU2T5znRMDht;zp1u`cCDgldCh!(V+Qe<{R!P%w$=$`A24o#buGiTKX -z7|UbG5$WRY_al#Z=c-dSODyLl`S+J%W%OJYu}y{NaXH;kg!sCRW4FAJQRLc4f)KBr -zOGH~OSi+$i?Z>Skt{M(B*wI!`Zhd(`0nv{BVg5ZfUU++Gqe}@=1tiTW@CKS6XHm!~ -z?O0$-PiQ^&`~BlP#|B*9`eCqD+NK^MH3R-0Hwa%`J}yNjS2@eV(~~&~mMGzIPS#Yc -z9!GkT(~+n7I6G?2dGWh&xY<4 -zuhg_8J&Mh%G6k@xE>!;-OUWTyT0#I`#)i>-SD!Jd9N!C|$|_zk{8$_S7L=zCbm&uT -zHp3;k23@q|R(;rp3n_;sV_k7X-VD~53_fbFVeTU|-*wmCCeQ@?<_y1kE4nthd?jlM -z+?d&&M+D{zz8-i&$SNZ%C5$!c@#4WUHE@`V*no?oz&#|)1wEY^^K5O5Rf@*s!8~L6 -zykTvkU&fVJ6o^>MK$NbOHC&_xU+?HaORB$VmPSBp6esyp)Z{5(@8_#KLdfeB$ -zGlmFOxQUj?{z6iq?%y@^v! -zjhZ!qF_Lu$=T>rQUlWeAS1iC}P3y82K#mr5SNCzeG1eJ)aN9N6G=dXP1|Fd&qT8Y9 -z62Uz1bIA=)OO_nssno#Z{=hury -z{})4@{>Pgt9T0aN+Eb-TA+H+jRAOI~+2GuvWe-sMslbc40LcvR^~Z!7UWmR7K-dH$GfR=rw;=n0hgXdWYcY8N^=uI3Ib0U -zYDu|gA~&U+L)+6cre#m_c7q0M2C-q*TS7*YA}hBt#8*FUk4f#9BOk@3I{wtSam*qE_&@fpTW0SP;;djaFY -zQyjN7!_34Bed(AJiv^Qm9;hU7oq5ci>r}9Vg2Eo2)NKq!T6O9h@yj6O`nP#)= -zkH{&EoR5fCife0nwurCIzH|QqtuvpS3&}E;!zSv$qd?qbW29%pIiOm+D9be~Fz18* -z^!)&wqE8LF2t#r+B0NCaugH!`YFs9$qM+KqA%r43zP-b*P7Twef2^_H0WLQHlA{HB -zY&Y(MQRB&(%{AT(d&aWw+S8L-`7Z8ar}oWOE7uuU38c);A<;%YFa^EK*7x*p(V^Fb -zBduT5*u1xTA#=E+Y1A&HdoXo2fgIH_;fHT%AoqEtl6Lm_trTQ>)Bnx1w(sOCnAbpOQ7E_2_~T -zkBu;qxYW{oPV3vr?~B(ZYM7_U{Tie<9{M-u>NjtZ+&B%s2HHaJsVxRgfoKjy&?>uw -z!QRUrRn^vDs%4$N$Qe?cS9U}&mjQyV)iE<^YDmSJ;>m(P%IKpX-#4}gNI=MbvRmU* -zcZ+S94hg=igq}iQ9jq#a@*#mMY2bG2V~*m=ss|%S!u&hcu__uK@=G|GYr2+PM{`GEx-&&F^}nuhk(}UKz)UUX -z020Ta9zwneMG*~qSFUb -z1*e(cwtz-g#yT1(ilq(LThieMwyLEd3f4e8Z;&_eQ{Woa)KE|oV6%A%{PpdJnYar6 -z?hBTde7rHPyw*e*?BqFvndS~^Y%)M-c1VMw8&TSd`z5BjKwz<7<;h`k}~*DmtvfHYU0xm>W60011fIccT) -z8hoAvQ?u!OQ8>6Affmj`8|WT$3KFZR$ZG)xyDg~SXucKlGYf41Y36uP{?LYf%}6kc -zgP;wMBHvKVavCn9R^WgXo4SyjnQxdZ;sEnrs#A4H0&LdZxVjPT6}siQ=FYTj7suk< -z2GinHMiIM;m5VJE{3&sEqbb988g9e<2XcF1O~|;VPPZpNh)SKqls`UFaG;~C90v?$u7lrB5h(`hwQwjdgE{)*_L=gc)zGTj*)0`pi+=J -zPSY%6sH@;V8F}jfU_13IDVH{CCEm<6#U4BqCN2Q3;wT9%CTUlY?lP=fW|pG)NZyCx -z@BsIw7Mm`d{>H!6iKcBQ@bgV9Y0h)1vW!CRT8$I>M=)qzG2Lvy9l -zs#ygN=QvL@=Q1ZOCX>JDWpENrQk^U!>OqujD`J-50Helqqx__6cTX@;CbP0MSF_NTos> -zMxzxGcI80CJts98&!ScIe?<&8#Mt$(9ybr4AWL4FIrXQIR#Avo&3)njKg#}W%WK2{{4sF#Wr_uph@1p|(@0xkl24j1Sgiw`%1F@OlOLG_d -z6KKOS1_awJPiWWKBn_?~fWbGHg!~`awm#Nbx>yIbBL2EVJT;*g&GZOCkWmmqYyyZI -z-HqH=RoD!0aPiQ01S0NM0 -z6-(C_OX^uzcARjjVwDT%uR_#HFQ`DYvMiUxH3KE -z$R0W9Jdhxq5N-1z(&IMxJ=4!uWU27Fy6E7XyS!i}pLAQ&j(+Qq#G=5B}Fob=9 -zc@5}$UW;((Ff5@tprulFkQ(?96YNJ;U_|>ak~`Yn)inXUzif)sgi?@#GWWiwX+_}( -zIYv{~t^qyR!5103yRWOkusH)IqZN5YO3`F19HQLIeH2s -zqvPe -zmoK*K!I7&j1g>}?$yl)|?FyDOZYt#M9w@P9$+Gnf}FUN_gH -z?|E*Fw+-%#w7qmxMzxn^%{;daxGP>5AC{H|;PPx@0WxYI_(uu$(&#rxM``Ts;;d!@ -z+p<4A-MfXJ6v&$wpY}OgzlYV6xZT2FbFn>E%ERzuCvnhaPk;~5U|RvG0}ud%#0jW8#J3 -zwi$paqafyWQTvZz3x&Ln!R1vIisg~nj=&Z{*weDON9}fq{Gw&rN(!QEGy(=+Z)9!Fs6vt=cRCgP)6a+rgsEiic+Un%{R -zz3xcJwJE!xuTa^TcEd=Ned}UO5hV=-UKt&BSk@kJi~I(qu646cO0kX}QU>Jp*RjcO -zL1Jx{M7%s4WC+DBi7Ur5f=T{->c$}Bc=yop)JM$R&K}#y7_;_fS3nVwI%5}Z|KhO^ -zi{S-0=IvT~d@<=m8v`r&n5Gz+fR@*{+cJR23XAUE?6o#U0)x(+4|zurEJ7_AsMx0(>LdE^T8}cn -zp_{W>4%4lmqw0)ZL3JXuX3Z<*$hN>o?#l?1jP#G($=JN+q!sR#$qUJ85{^N%GixA7 -zxPMsk258BMx|59Qs-i-dnLnwNA$8_Gp_IG7UnFP;^4b!x6^y$>)-Wj+ -zjSPHCzm7H>Rd{AH&G=TNjC1dzxL|=Gx0Uov(BGT^|}CBXkKy{7;@ -z+qPM;=;11r!q{9_fUyI7Ro*&6g-E0LU7-|G7!00^P4vuB){Q_VFww@0Bt1;BE7NwO -zUx@ReY?VSC?+F`xl@V7n>+Gs9b1*nYT62vBY9ul&YNOb03z9Ff9vDbv&5Xz6grntd -zx(6x@1?0prN7S?Yz09+cgc87-t-qt+?Jv&)}o8Do0?|Wu|+%0-muJrO`ckx#CFEw!A158aojd$Orsh -zUxAWDHxfXyM{PA?m1%UOO%@tNe`WGJ{Yd0?YsrbydZ!JGoSyW&g(c(Ci0kQjbDWq; -zxa?G6FQFJ~i490GD%NVU_yx3DlGqj#E7K;(3}N5D=+40s09$OyP%Z&*0_A-@;mAdVY#mnYgO-4tI1SE7Ww=lkD@w~bSfc3K!r!jqPF$jQHTK4Rlbf=#^M{<;?LD5tSUJjdFQ+Ak4+PM -zAeOx*x4+6qZeCo&5R$B-!B^clNs6&|@%EWWXAN#f+?HgS&{GF8r*32PwC)2eo{?zm7BRmpc3oY4rcVOaZV_gzSIe5X*dE*Yv1>B`BYp^h? -zV+Nz^_D^9>wYH{Qj#3P_g=s55kK!K}jL7ym-74jHd+!s4nOm08Wu^UPlc$whsEPm| -zrOFz3OQ}`OF=@`$T)XY`Fi*0&yrF6$icD;WkU05*WW=o#gtA~oP2HM} -z;Eo0cN+IfHJIKZpqbam6Fya>i}1#cABsz -zPX_Gv+hUX(`Y%hZ_xx{{%-(;_Yst&i0#0|2dOFcDp -zYrc)<7R`CPaAW=6!8J$oe1fv6r5C`M1s9V;rOciU%xe%5n**c!5@Z=qcR`BE#}r%v -zE6%1oj~c99I|C~0z!riwoZn7e-*;KvOz7$eC1bU0X_`$djxMOPzubn`Kk -zlrr)%brM*i*}Bh$^RZ2ryTw%gGVZ&|nm{2D*e|2o!!Ah9h$qlpXcmehrJV_RW9|)8 -zJ3Uq8p$N<<%xh8rDne0EXp!2HMMi<48#J`hfg=llUg}ERxx7@TEff8gpdGYY7P%3) -zQAqaC1!;aJ^h$)kbxyZ4*2?-G7sYwIdI#{9km%dC$keVAlYB{Rbb{*SX4HL_8D#=U -zSy5B?t(c%FYeb=?gM6R3L_ED}EgV5qlT6!!L5$BH>!WovhFq4&uV(VxAHn~X!P!<2 -z!>>TkWls|c+%_cQ1ZZ70YYu~DU}DYxjVliED@^s0%ZE9z_-rfI(_msr0J+8zCVYcT -z$$+bHIj!UY2B)*%!nWAp~Yz&bD;c=VIdsG)ou5>P_ji_lBuBS(S%{Pu;j -zf~iI9c?t|mWc%eAzZsVX+=y91I@3=$G+NBs;7l+^~DmLU1)iXYcZ0HL@UA~Q`};M -zHYk1aT#KTsvz`>Re@Zp91dP()3N%72_s58Kng!^G%h@x?pq`c)l;Z$XOP*_=dIIiH -zL5gkiaNVtEqs>fstRHmKsj(~OKDU*vF$+9029;KM@MT&LV{I+THNwW!YDADnRkQapi4JvnmH?n -zs-2AuvkM7ba3tstFRV7QWCwSk<&C9#ca(!yA#&1W68rLK9eV+5pqFxxrb64ht%xvN -z+k2#>aRNUS(i1sr`Z}MWpvQ+ -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 -zSiqSB-b=eeeYBb+Gdv;LsJlYgq9(J5PE@OFT; -z9sAIjZGy;3V6zy0K3_Z0!Px7uIY9_89&2`DFR57>WxFsdv -zDaYPQZkOhS=N!WWqfJOk6c6U|-t)$RBp}t15<~jG)*3DI#tZ+{d7#J@q|@ -z=Ltp}y%*(aNTT+#HS-2hcVITx6D%j^+NYTARzEJ)R4@)lrM+`BqmjAXjICl5?sTRn -zzNquwn^bUTgyfCo+u~(tb-p2|s58x?x2>zm(?cH(&n-zrI^=NCBd$F$Ws2(Bz_`55 -zxWA(UX~|@yiV`F1OL2M3P4LBwS_^X%afl;Nmz!qf64{lWu;Gr$Q$l-oNi!% -z)6TV3i(1POah3Z73Oc}fX^}V4^fJ_j0#Lx@Je0F7Z6kPo^Z6ejY!ehz=50>ULT9iW -z18Pd3A|&&O9hw~m3j`F(a)Dt2&gG_)oa=M}$QhN~qEa)}QI9y%k2I%zVcB$MF*VuadCC9;wu?S3V97{>4m3J)6wX%4;EE-n -zvfSV*Sb-xV#8k6_xqIk|hdEQB0r&9&A-JHMk%+J{*j%>^GLaiopDD;p>6oyKSbqn^ -zV?8cTezDUYTMH98JuNkKnv6-U2GVmr(L9ZLM^p$~2B42Ioedc+VV1xa5*a4Q-;k|P -zkkN?#j3bb|ucXEJkSKm?&q&sxUX9X8l;RxLlYZH!5nlxaZi#A{7!>oaoFUv?fqSyo{hr7M`qDhcb>NMq7o6%mJ8&pLL0k{JC{^(g^~2=ln=*BYd}h$ -zGr6xo0M@kZ3zO{93X1Rqm8p%9{jpb8bto{3Av6G<23Gd9$Z9~BC2Y;`679hfURs}rp_4*j0rjSIT3u8EK^07 -zo5Y5Af}E-Ewnm#zw@DU~Q{`C()^E3zG$+^hh#u170h#jAO2IT|lHCC04+DrE5dPUm -z%(ZdhnHQ?rEqHjID_Yz%2f*Snp)LZ7V>&|)uz`h&soeDW&M@cF|74Az*uh7H1p8dY -z{5|uzQCP;vIsJOIa&C?9IX?+Y$jPo}lc*DHi{5*XCflIH}&x971>g58zu& -znhYRKA~8>teb_A`Ou+;L0yBo{cIJ -ztla>7{gq3aiP*-Hd*;&OVp5|-*@HYMIuvb3!sF)rVsmQwD99AfOWGdPJu53bC$bSp -zevfcZ>!_;CZAWlRr6jq83*wzMbk-$x0QBJfSgvVyR-^-f*E2zfCGTSGc8}_laj#_= -zcTD4yZClD{LX;W2WuvJ5-^=cKwy%-l1Gy|#gv!}OvUcW|@Jmu($RgB(KafX^@`bcH -zh;M{!GxGX)uYL&4Kz4)1vY#Tt_vltub18CO&@4L|Tcb`)U`YP1akJymD8jG}(1M-K -z|LN0QqMeF)f?r#+Q<;M{!(NRh?q)X=`Z-s0VEMqrk!qcA5Y -zR9vrNJ-g;mgZNAy!mc6ONW_XtOu@gtiZaMNi8)9C61yT82a;d`(WsfZ1mvtkPdS-S -zLz0G(xVqCy!Hmn9OE)@>i?Gn*!7388M{Mei@@T3-D?6@J;21u%{Hx6`TA|4~b&-{+4LwpgKiLT@hyZiyqVtx<_vjb&b(zzmA)L6P9qaRkNa=vwUjV{HT}FKvN6riG2%PR~H1e`RQWVQ1 -zNtJzy;W(i548EJxVskv4gi<+@I?mq-EG25KUs -zbRnR-rt6H#TFgr$qo|DZyvVY~*@zY?0%|S3nyZIB-lx!wUKAACb6J!)hSsle+%xX& -ziiM7yN#uQ8Xy?gR(+t^1%bAn2vh&a4MkjMs%E||tX);+p3aTR%(Ns?j4B -zvG5ud2wC^Bvx*6~zuq~+X4_^Q&RGo$T^&O6qBD-?B!`&MouEUq48MMg|H9q2Pp^}4 -zZUms2pk{X4WTY$E>1LbVu}%?WRzeAa|FddIN?;dCgJ*RaFoGzo -z=>GxX5qPJ%Q31d3j)Yn?0t-33D?vXOWtjXXI6``4OB6w*=+;)d8a2RO@7WZsh_p@?%?6%np}Cy#QcVG&tv -z>4zC+hM>@11MY3hK+_68Wk(cWOZ4EbxEHLZE>6$9brMuiVzZPhfv0QIj+$$lAag4VVe?l`Kc+6Rd26oF2f1`M+aN^4y(MF?G>uTK!V)Yh -z`-L5&VrZIn+M^u{C1az%gwZZ&qt#6uC@O!lOJT#nnQ9)Z*pHPLMXb -z&Xn4b_8!X$kO47~0x&n$LlUV9?dXwB%R4!fZA{es3tdSqNhLWAYoQ=3U|Jc>&|Gw{ -zpsG#Pax^T>_#wx=qEIgD)?q>x^vi=#g}yu}*ao%F2^pqL(S>F*dLU$dvQr@mpKD6z -ziOLsK6&Umr7w5W5C&{lLq1 -zYA9kO$^5!-@v^@2By#q;Bq^@SN~z=yj5K&;^WH|U?1=>y*O(8?a&BZ%`m9VVVvgO(8hNKKm-1Te6g*c;>3G7si=H_m5usaCi%+j!q~zL@aczfP*_in+AYoI6EJ39u)w~6Z)G>xd3?Sl2$ndVC_W?0i6xn -z*LmsOEW$A$?H#p=Qw{J4A94vD4G*U{V&-R%a>I4MZfW5&@q|@HVt-b_VN9BH%)*!f -zQF=JZ6#m*5c=H8op9vJS5Ja=i2QS_Ew8&^?#C(lH$0(3{ng%2%%<1Z)?;vJ`jt{Tm -z6J=dDAzLpoC}#tMgs}sbpY7Kb*`~&4o<<)FY;tTc@pB -z;*SEPAK=f#Vvi;2X@9W+m#@+$x3n}>t~I04owP$DabY_+S>Vc8i8)rUw>HyZVt;pZ -zuupr)f~y%{*rp^QVmjTKOzSd?+M&0A4w~;|3gs0vT32-E1@B4uzvgJ -zN8AL@(GTeSzmkVpW0q^?&MQMmoGV~0TOxuNrV(nhQG=3Zf*)riYa@NB* -z8|V(wMs!GU$GRc1Ini^R$`GN6I+p~)CWGWQ4(?Ks5Vj`YAX70Dsi(-v&mV9ydQ8dOu{OU1W!MMb9{7D~~HVt-Ij@Z=t?{ -zy!r5nkdpI>;qDVpEGjdjF*0%=8rOVB%Vxd?rwTxTCPKcil3zfkyt~wMAV-RN^{lnA -zZFxJwp^Q?R#g5mJSiPfavv67Fo}A2rHKV!bK1o`Pso@s;*x~esU@oyh8rpY~nhP!P(j{pLnS -z!RL8CE_pQ2gs_$mN1FxOp|f6f+PXiPKP4lP2V%V4hfr+A#t1er01-WPek}vT1;`C- -z?Z__=p6-$vEUvrNHbn27Ic|7UQPZYCCiZb6Z?#UEs}Bqpo*lEnK<-?!k?iAS1SaNt -zV55~YBCy)#l3s(q6mTi#=O0j8fU{{+nMG9A8GVScYeo1apqW_Lj&^LMyO250W|AaH#59p_ -zF&BGb@$`?cpxBG^bwNjy54l=t>EIqn4FaG~nq&zgj7G?=aF}9hZFX(GOK@u6?6I7i -z0Eb)}u~oYu?c9$n=9M0e=%3J2S0@Ux8x!h3)>+t -zn`s<@S-U{$NfB@;3DJ%8BlsR|!8C6?`RPT7O3d;!Ds&^EEgf)Dn^V@WfxRL{0 -zzIWO+S0b&^ak;-qrVDXm>k4HtegE< -zA)kG?)@pu#asNz4iGGuLOI%xo>GfM3=?G|-UfP=dcMJ;5@7$d5kW=WXr?*$9e -zbB}WVEqmQGV6&;v0id&}*<9X{O%n+$Cx8NMy5DeD6S%+3i@JlWKNNbcjthrehlPI` -z+onL4u+IDQX%dzku6}gQ>JIr>8FIgUVWtu_?Q}I$6{f>lqGl-?svOm -zRNRt!uvSrgvJQp`$)!$}5FnZ9Zsae&Ay5B@`^7W1@xTQ9tokU2DiI89k@|-GWWE#m -zV+b0W8;cuVt7bJjy1c2ta5F4tLTpLHUBFZCY6IEIA0m_rVu7Zh)mbAGHMC?(?k!7e#702FgVQu&On#g?coh%rT_7)OiG%G7P}}Z7~eVa -z>5+)AOehvYf&qiTZ-goVXL0ozaOdD++`+u3m=_OSM%Hr_1QiOz5+o6tURkE2RocisBdPDaXsL|c<=!m!@x8Pj-{ -zK0jy^K>WtB_&k!EjbUg!I6wIfZ=Ynxkw`^U0y3O<%5VRC(b}Ki)~_Qf{xn}1DmiCj -zW)o*H1cc5X>=TGetTMKyv7_j!*rSvxdS!F7C6x@CFjfHo<1gelbVPlBDn1Ou`a;G>L>Kj4(;m9l;Lpzwc?!}NCL;^r`yVB{iTxz?n4?s>Q9{gP*-(1>$c?fWshvG_DP$s`x-M(o3prrk> -z1Zjkt=N%#mIa>tMvC0A<)YN(x4XaPeI1g_Iz@?i46&O8!!Vq?B#VqWX%vTt)OsPW6Kn*h5vIKaGC1JL~csJGH1Z9;QKvng`0mt%>2 -z!mczsFblLc2D5@e%V~n=hkF50Ctj0-xW=NHun7;tt+8GV3a1w}XL4Qe-H)ykcO?2e -zbem4V2K@d>ccgpF^#vDdDa2Sb( -zzer8?0V3kk-GGpuVuXmSKB^CcMWtAxV0YNQevu|1`{Ud5__Ma)5`r+5ULuMCTBjRM -z9b3L9mb@oBJ6j*)622m_O2es*t29w)7I*s!uqSptj)eqwQciz#;c+?1T7$W8He~&5 -zRxG%a(c9fpk%O%78#nA?(cg+i)(|?F2X*aOWQAs3aE*ozIM*+7$!moc9_ -z)H_||4ieHSm<|C=pq8x68bLQr_%P~cdFb>_M&`);G-RGN7xs*eQedDfV3@SX$D9*e -z^r%aP6~{=ofqLk=$4CCO`Iq}RGz-D~EEPzQ9F4JKnszz5^oQaX=n>skV>nqc=v^n) -zi^gOD;9ekzTfK4Vbrt*WX(bY2jT981#RRx4Gw$c44euc -zmf?YDR?qgZwypuTDW)3$cmuN*E-8ZFtZ~S=SBo&+DWYqv0czjEMI43~3U_5#1X9kv -zlF8Gqtbi!)%^dvg?)Jer0)-usp9C3F(7}LZq0&{^lIH_X+e*4l)!*&Na%lmAqR4X< -zDd0$~f>}O*s#SMddfLEO*ayS9^J_+dN@{&2i@eFj9_0Jf9P`H?C?zw^x3W)aPDR&1 -z?+)~MH4+8fu>x#jd)2mn%9_yb)+zR(j{+? -zpdxB=^CQk)fK=g@M=1(LAWOT1!z8qsz9#~sr{OrSGn9gtC_Eq^G>=XWOJ*EhW -zKKqGo9_!N6_p{`j`8}?n;68Lvf=y@sIr$Oxwkc{{r(ManzAxh;kB<<6rr!>*dFNO4 -z{Ri*T&hF^@FXqi^>e-a&`IGTh2O`c{Uc2BeIb*pH}LJBFIvmr>?wTv^#$%f`NrTz$aaPI?_a+hh1XI4{{73bsN4Sj -z{U1K&>H1C!@d#!6^Hc)zA7AB)qS)Eb_b{9~H$A7t)V%pR9(Vf-@nMMa{s@6^bJ9!o$))K -zSgI4q`-i^%1al#pYJlCpfp7zy5_YGXb`~|M_8RUi4Z{y#h|!SVHsHuXnEgTK?(R -zuV4M9UEK8g`fz?7^{9B0l4Tqm3i>HEH*93zex}#oe%R~Scmg2buAo?0UVzcn1#}Bk -zWZ~1vqfz!EWOVYk{}S{3{^bi$5t*cV0c&Zme&mLs`1MV?sWdADezD2Xwf?XzQNR7` -zpI`O~*}jG>m%I&6B$U_e*%=Tm5zxZy0RDq62}?tK>{FWgC0I<{@axAfeTzzoSTX%z -z)61Y6`St0epWo~wps2PTIYU}=7CuHi4$SN4&-BK!&uEqCN6Y=34A!&LSjixkQ`#&` -zrcHIMgqYDZ(wx%afV2(THZZ!pUa+z0-;iKOWE#u9ST(Soxi;h|5cuTTAB<798`TXkLfb`05%L3uU4 -z|M>PLzFleVU*6ce3S3`({@bpHTcU4zW2~PVyG~l^FIzZ1%AWv;kA~T;A-=6gvmbr; -z&OTYXEe{iv3=08*Ofd_ -z&@y%jwgnG_j8}Y}ZK<5`X7l(<-`~BN?13eB-17eQUtcaC{Q7!*`^&7xNZZ4&U*EFh -zkI)TYX+DCmB43MR_kj7bAL89VX)yTxzwG6&uRrqViBG=0r(gd1{@#y|kM#CeeEH+2 -zW+d_E=P&zBpkQ=DX0x~AF?n;@+0VF{P6IbGz>^o9#13%N_0a}b;I{XM>+Z)cYQ7HvPJL16?Q -zW~shI5|CYmTt;#YA0ci50N8Fcb>o(dRh%6VZL2ajw3HaPlV57OI66sO`$Y&8lRx5H -zildlTBx-;|Z6VBDqNMO6l3Br*{`t);v&JH!W|VZM62+`9X25{ZC2v^nB>9C~8zIzI -zH61-tKUQF{Pnkf#^7HY-r87@&$BK=w%(5Z9y3dDh)<+S8m!s$xd$GmOG~Z1x>=R|A -zIAAgCZT#)b-q4-IZfjXYyEVY?tLOFIKI&kbR3!U@NNlQU&9VUGrM>#Lyc=O4_g4l@m5uWmQE-R9tvxB>bUwYP&4ueDL!B8NZ5R5`qEi`7JT3`P1I -zWb^d4K4_PA=w8veME*&4;|5+C)gPh?uKmWKZ~9XJKko5NM{_MA@Mq@PvkyK_24 -z`Mg|`TmG0_GmWFL+gf2-o^X58Tv=l~u-ag5Xmg;&R#YeQrH4KfNK2r_nwd7Ew#KSh -zmk;&0tTIPrI+%5QJyrz?S -z8h?a6x5s+9XiT9cWbCTCi}akY(q)uZ`ve(}gA$^PG7KZjx(p_+5t+(eSw_t9z_4^d0n4`nP4e1$;>v|Z3{5z3 -z0)k^}Q81M9>k^okHWkO^St}4ql4)pxQHcJskMpTa;0q^i|1AHcA4j5JGzusi6yy|4 -z1r&@(%3$kG55gux`HE5V+5E-$@>?Ug#jF^%_Ckq_F9~i6-y%D9{b1f+J{Ubn{X^0d -zzi;;jV3VbLyH8veg?RTeTPwGRkaubA=c>`3R)TTx4|K-asy3cp`%Q8S0!r}6TG7bcBXYqb}bc`3n2Hy5_wJl -zRASl+7&f7V0r@7n(!YM!jSBjY+U5id2yL$ZCRi>SbuCxYD*&mO4U%5po3EP2VD6>m -zmWMHz_iun~l0&}At~gzoi~y~C(gxzLb^Xf5AI(elA2I*M8sRBhcc-{=1UzmtI#}9{ -zpRVBiCOvCeVn)x@06-I;^xSEv1>)gV*$8V)3PVOtDNlO%qTHh@i)$PM$r&tS>dLaz -zcnqX{ECE0GM8F1OMs%kHVtCKuW7+$10gf1bFx-vJi$Uh^)MTOvKsaf^S|3?KkBRPb9mm;C-YDeP -zu`7AQf|2^8G|idjhZn86SZT$EWaHEhHOW!ZGXD+lbcuj1-p0A3UrUte?O`-5pvDPlLB}bbR!w%ek_?Ky -z!O?JWRh6T1%EJ3E$LYYovJbDq`a!N#xhMPrIzEg_I)3oPq6)Dw)=wa>npmloLl&3_ -zx|)u;$XRr7x(a0xf+xQQKSzV -zUjy0e@`T2p(?ud*{P5)t9Tsm62g^&*-i2mVz7F??wi%{N9-;>w8cbzxPzJzPdro1} -z(;`U@y#);sID* -zI48qcUhZd1mpBHYH_L!z>1-Yru -zd{veTSLasruI|bx>j=%#O}ruNTO!LGNgH>Xg%7>Z0P-)a`CsPUoh`7q+t_tQH2Y-xZa6EJ78q?N)@!ReH^yy%n3|KMu -zPJjVa>kcb7v~3XfYbH2hLd9j)FVP&QncjGJ%a|mq$?|{2e_Xv-u>JOX-Vq&2q5uJ`@{3))z^ -z=!3>aDLN2~%gq7WDpPm?U@0o>&X83`hp?V@K*BGO%QBbL0{QiVQ -z=xuQx%nsT$UI{7ADnS8STe1w2gN6VIPHFm)>jZm+?0NRGe8!j3Cm7$7*J&@o!ZM_H -zWG&*G5l)o8o_#tlhBUspPk+jJzb10X6hY%gvz7ObW(iVVwsk5-70}HLXW?@B&vO$Xqyq+gSCM9IulZdcbyKHdY%p1c%l@~j;y1tym;!EHCMv7 -zy*imaM283+hOF05qve{K{^T7o9 -zd#a|b&TYLb`E*E!>#cLZ8gGs~ce{q|oUs)+LjlINxJbw|tY&azV8__h$*sStOQ`li -z^)}pLQNdI|J922F9^?Y-N6dYI@qE~uolB-GB2v3x)BnPN!`q_`e@(-IJS4f%O0i8l -z`Pel~465IOKe8-Vt -zLh`D+eEF6W%y9FwGQ!HB_zhyh@&hz3mkJmTcdfN$8;5>t(B{W;W!hG>bl;O -zRhy8pJa2E@_}Iq&M`V+_oPJc*+U?uF1WxtA+7BJX3uSTXaPNo|A*$vzp(ddOC*45H`3-;;8X}dHPHD1bBmal#IS{y~`T -z?m>?qQo(XLfOLVWRojSne=R)$5j+`t%6%zE)0dKNo9hBV&?4j<+ -zvF}a3g3ll>q&!(V;w%$DCqO@>9HyG88&?51;rjKAiE -z&Ou=fewWgoq!6oXiBYE4R00ee`lh2e{3fAU} -z!-vvWoL(i{vwbol04_7$uAc&wywF*$pZb9zQshUD4~Er=q)ydY%Otl{ju;@}ywR_5 -zS&~b=JmlGoY=E~*cmrkkFx|Fj46&7vE2|X+B-#&O`-mJKT&14QS12PF;S|3E;ExE3 -zCST6;@gv)gE0Mb!W5+9f8xE|_v9LP0s7lNN;>yumH8Fr@!~)m>G9EV?sAgYdW(B)D -zu&0W5TQFgv>=d7?Y6o26Y`r{kfVgGOEOu8i0eqFI6JQFkAVnTla&0Fs%p)mI%XxI# -zIUz)u%Ai?8a|_)VRa6)tk4LoD*=fUeRCf2ytal9zjS+y+9BY9y(2Wkg#E;F*F&HBY -zIYSRw4u!kP*kB<#j_^IUMDQ2z(5)q92k{#jgcxPP?OM;mH;q={aOvmX8!2U5r6FUk -zX}ZslQT4#fSbL~oE>Q-EoIc~5N)0e#Eehq -zf;2|goFP73Y2^t|FbK~VAu{CBs$cq+%=-ofb;XykVU< -zcSYgPeCXnx<+rpy=qb61(_?GAi-R>Yiu|aw+YAsT2rt-TX+;PVuQsSDR33EgVzBvG -zU`4?bzSiwg;cqX`M7gJge@>^sfk}&N&aMO!(kFkI&#uBv0?xb~Q}nm-M6g1{TjIo+ -zjYVo2A6TR__)mj@!qN%E(7xDEmTnnnZM}@dj&LC33gZt$GX;AyLXms{OLTtaW4G}5 -zWbOu!8?KX+t=ZIQ_p&FqcBqg=l^BP=+chXmR?Y;&8CsbhJ*{pm$MnJ2RkV+@eP#Ql -z*WX(car$N@bb{yg>2VojxsG)eczJs!+s(hM&++zYWa%o%LvKON@cJhNGn>oav8G-e -zN!oNbl#g|XuU4Sa9{H$3R$9O?{G4AN3n)Tq8tqHdUaeLKtJPyY#m7VIi(-xI1OObC -zY~Sl|${*EqqN-ws-F77WAXIa5?}NGEDGKm+hj`CY(>4*vQH80+Nu -zUG5i#g7*gAc`i?lmPWht1F2@lVMpUiUeXd8AoX6CUh4~xow6~_@1`NQWYzP(Y)x&P -zSlO_M${LxId3&8q-O#fj)~9n9`{u{^fG7k5kSU)ap!|hHcd>46p%cL=$j(l?1Az7U -z_l9nz6@MA!f-711ZpxINFSmyU%O2$?0~Uaqxtfqe0)op#A2=P(D~6t{4%N$SM7D$? -zNq4@kyRz3wn(f=IV^?~8-EHXhXtOdaz*rN`$eu4>1moppa?uojHB+r)tDOzb$N}ud -z=r@B~$tPe5d+f40Qe>MrwiWaps$l2s<$jSC;5n9$zJGv}G+r!&T;O1!CZ;>M88e)b -z9^K2XS%G+#?DWgW4JYVc$94eR;j$GY)3#x6$k+Ga8REPlm6NYo3P(ITFRp$FG=(n{ -zg7!{i``CGYc?{J)iPY<5nlki{O&@c^3Z`C$r+S^!YJ2jJmc1#?&nt`kBN~^NhcNP^ -zdATYIsk_=et~ZMe@*3v9I<~yRx!o}N8|xuHZzT_E7(vK$-JZx@iY_m{6rHlmcy>)Q -zpi)v@2kG26IsmY9y&e|x>C@V3L3p^n%nI7%HeUn%glrOrCN+0v<%h$3$EPngL9ii$ -zN)S<{eE(rtdOO0=<~M}A;z47fo1EM|NJh~MnLcA&D{Rr#@qp?^(yl5|ijqtPS0Rrs?-SL@+H|LX0%>CY6kJ#w93YC -z6i@|G##(WhmW6_~bUgpy;3K&kx`861ye#Ow*H#t1%!CJK5kK(qSVyU>+OizD!?M_E -zA3U!o=;oEoY@0c|2U!Y^r)bjGHQe#srC4<{xLPv7;7#-dN}mRu-q1Yk=`wK&8x6>w -zUgi`Jxy`|gd$+$loC<2!Tb7gIag#tVnIKdKoPOj+%tc-n$s0a+wO`6B3jRtC93>zzN~yv4ePQH -z*Rv28Ew6YqB#)*~H$=9AEc$DpN1NVo^^4mb>VcA-c -zCy{;L9U|)y$BR4~#{O(qixMqrdi->cyo|1nD!IeHe0Al!p=QqJi&drHu{ZsCxA=UG -zn>ZKaP?Gi!$wROL(5-O@BqELq$_gN>2dmB&^TAxA6>N!S>0wqfz&F5M#c6-lJ}0f8 -z)AAV4gyaXEWmQ@0KYBYd{Xh06m?}R3`)lljl2acH!!BiClyNm}FW>ZjP%MZ78f^k` -zM;(83pgqh%P+jLHNTkt_ms(Z8zK8TNFh*-A*OEKYx+JthpP(NSjmqz%dvv37tg(Yy -zId+CvWo7XpH>s4Yw4U%O{`}g)k0yjjD@t#TfucfKRei+Iw{RN5adgVZ{|8_aZqIv* -zMH2{C -zTbkbdcXS`bzjsT;7=YxEGyz1E>3s>INhIuO$kUNn0eZQF`|;q>N-24eL_~JscIv2W -zt{9`}1OmN5^SSNpxAzW~;%hwfS^0MzR+C2OK?edqyF_Sj&P%!xXkcYD5ID>?ewl`_ -z>LGr{jzeyG-0Nntx%1oWUE2rSojgo(C|-VI-M_}VL!bS};iiz6bYmRMtsb+({Bh&$ -z(m&tCmMY{qnEU$WVh&o-MyfbM!e~jhZW2+j(Zw8>psH^3u*Xyw?b^-+5BXuDiNsCo -zAq9N?4%*te>vu41@!zPPq&ix9XyPuj0ro6p8a)WN<(3_fbRWmGzqw_OKxe3_UaDYY -zz1XDb{rN2)GJajK<<#pUPe?3m^uP4f8$(CUdox# -zsfwKs5@1tIm16h&sy5wW9;PgWiz}8zW0#%1=QP*VGu@|3R|YrGe!Ama;>_00E7eUI -zyMFn)MXR=6Y-|SQw-QZAyVER3>dv(ZL!DATb$o@HiMHKDb1yc+jx7s4PV<`6R}8ee -z4yb(3e#Ii!*Dovy7A;H1zRN^57{S9`hFuH+XKe-daTzlEH7ArY$k7zB<-!HTdA6Yc -zFduj}H1b%-Quu)4w1S7sDUZUghJO0&oDq&>C!wkSInLsl_Q6@ZJF+Lx -zQ)DY6hzWfTi6KbCiMGo*$7Ri7VZ9Da8i^W-+ll)V_vv+-pxi9PAY`hlU^QMQq(M7t -z)GKA$gscup53bweSzkwLML6J`in?O -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 -zige -z|7XjOup^hhzSWZU_@5sX1sUtUeGgEx>_>0YGrp^r__CYgOTWgKvyU&^J$<^x6TAI- -zt}QZge{?KX>Wp -zOS;)MUHLrZclS)Ax^`(Cvk^!GU8Qk^iHyHXAD3->S$J~7TyH875brQLSlIGv|~ -z#PKcHJ!3tmmCU2(uvQT4yi=+<+)VcGSL?|lwGg0ynEsMwU -zNL&0+nX}Vv&!JPTJ8okFM8TAn=@v5g^N)$P^eC_B#T_hzfh?PfxHl9h`sIY6B^;dO -z|9`mW^DK>I6^)PU-P{*sp=W2Q;`v+M6-K&^Ox+%Vx$3GGpj<}v@i4C;iRnNi8-_N8 -zWy6lJ!?rBfG5&{5~vC%RNAXryO~%V2S& -z#TvJe7^X)l(YfQ)UI65|T8M)JsCvbn5S+^t -zqZtrizkgj~I+wq>0PYR)V*5r>WnV|}V`O1qRPI7_+rzvjdiYV3>+u)O7`NAA7p)mq -zNSxM~OBk0@>Dp7qAFT2S$mXP#M;=~>0HL?+UFF6J4v&Z`@wQ7Nhq>*NQtCc*qSeFw -zd=br#wDOFm(##GVpw&Z9&48z9EqNTYV^*kpk$uFz3O5)3IqJb`WYHKLy~*R5xKTmO$)tXJ(q<>iCy@W~Rd&**c7m@a3Q)N|FfNUSS+~KGC2dFyaTQ&nRswt2h_l5<8 -z(eBqUpxMOfId8SkhjOm|<;teVdP5V|;Ci%28oHe?@!$Cy?&I%&;<5O5{)D0Xcm5=U -z`S(A{5dAw>f)W3Bj*0R7`=4xt|Nd83AzAmvkKf+V+Se~JAB;9g*3iG$?j}USMn}$# -z)=hKJO%Yz(*RF5jePo~bHGfAtYxb_bd=u)|XaRdQw0HW>nTIQfafzxJoG1A -zgzSs=`V!{2Ej%UqoM^)UGDGP?$c$T`?Xs(WQ0wvBRuj -zt`-gwiK2nT-!HrA?p8Cx2ex*gs+OpCrz#uy>-R73dchPQDnWSXnbtywMuhkLgLWu6 -zEi!8UnFL4db+PPpIra`PQw`P+E&>U|h~uCe238u5iVk#1?li-?j)5auXTlRhr>+2O -z1}E!#@8_5_YK`NFyDN>=z42S`XD!|OWueK1RTM*<_b)Z=el<5grc&Qx;xj;H6_G^i -z?QuRKyY8Zv5PJl%77kU>C7&UPjI-XP?T#9bR&eM#)Y*9K%lVxdSNKMjJGpOkH6Rg^ -zPv`~a1Yb0lK)VHCgmvm93#^i$&4{u}AAc9kZ~6+<#-Rwx4RqhWd{K7-OiOkjfrVCs -z=1ZQB+xwSA-JP$(kpgX$hjJ{j5A*mDS(Lha4bv{7wA;~5>D-v4BHxvZG;`t8O%K2< -z$n?kD!MdWP?o4XxqnAOEOPo+L2*N}!vyvyX`(usuv5pNtnVj;S$%Sod$#*JFLW$f2 -zY9DlTsFBLV<|Ag;DXfW*D@!*NiM(!A7hw;yyd8Hi9#OMwB74_gI2CBNjl13om%qxFCm+Q&H{eGosDrLT6pTB<5i8g< -zQsBpuF$W?+$eG{B3t*{aY=Q1Jp}BgtF6*r@sZ!^?Gycq-k00PC6Z^=#7#z{4WgX|Kxne1c~D0Q7e7ElhfQ5jF$R=8Z( -zd#fR|V!7b@Tc@4iQXn7*J-~#z>$0j7ivPlYz#(<(bx(zyiq4efQ1_~DSHc7yv51M5$uW%bjx)qVg?_n1&vMAb=kVQ7tLHc?(YP9R1sVq0V-8NDo4YFYf<9`7)^$3u}9ApfG@Xdc%vYqZ%G -ztST3g95Aa58O?{mg@BJCJEZpxF+ew);Xqw-YODzqN#o711*k+LJiOe$BrR4CHi=E> -zNKE-XlLA#tk%L#Fws7C}0>l{eH@S*^3($9j04>FHmRYcQ|FyJyi;N~{mrR6U#>7!^ -zFdggZX<&h2rzJ|8|1Gk4$wcp}5;$oS+8L%Ezs2G1or`+&>Pa!vh%wQy4kemqO(v3S -zAgCi7&~j8L$-MXOs9Z4;&e+fCw5`lnYGG; -z;n*QPy=A%#ph3CzbCUsLFRilbH8(_nPQof2LpTyp=y2VpvUTrYzPzIk3%?xTV94r) -z;-w)5p`2q7v1W5WvfgXD+R7OX4ei`#oLG{$VqQX~DjYmqN}AR>L7~id_unLojU6ol -z54cr!g%o%`&CCyn@kpZ|YId8WW?3gxJToKiEdxc?eRP$-H8hIrjbD0$={b;rst*c0 -z%?nJ0c0iC1 -zk!n!97G@33M{c|j-#%4C?=OqCr8R$+w4;i=EVpY$TS%7zH4vjW={s^A(UKCC-^k=d -zI~#LR@nHfSTZJv1TxuV09IyQGH-4I1>ULzQO>Rt;1IB06h5tCfi=H|ND`yIQL)-zH -zumM-gcEQk}rNL8WESWPj%bqwBgXK$6497m1P~Ig_`TJ@Zz27uZc4t5Hdu{M0*%_eW -zxm&nA07)Y!6Wv*G{?JN?*jt1GoK09>@?^;7L0XL7qxK`y(nd;N -zO`%>!H$QdzUI$40D*D)$QP5goIR$ObWP{~U#&qU9jqJ3FK-@j$z)HQ8ROSg`?TQYDT7pR!cgY47F)T^6izi3N1 -zlWC#lwHsKNTSqafX~nWpEY)45drh_OhMbg5ohBf9#%|EGFDlltqFBH4V?u&NsvsZf -z;Mho6usCxdIC-D84Isbd+dzDP4qWwrExq0e@=Ra}6{LI6_l|KiV{uF06^nVJ|l -z$wIH1;#XJZ66D(*&Zt(+u!*lR{6yw(r@=y%iA)5oycN>fV2e}aQ31N4S-G}opGVm4 -zcCrKJV&h5R$@AA2_k6|-5R0Z32D2wWX<*c|=1&kZM*mawyE<3mchx=f5NDwJZuphH=wEqz9t&m)c$ -z*oTmqPom$MqB!D6j6usfC-PBsBvojNFdA0M%c;|_;p_cLmE)ywkcs26C%L#todpuF -z3bZA?*ITRme23gsX$Xrh!q7*K~>Wy&Z>+>Lj=xOOqOVRIA^ -zMyK~eDux}Owyp~bE_yPR#wPCQvAsQ!^w7hA{{ovBHy86HGsjHP-%ucgpgCvtb@xGk -zmp&=6p37W4_|n1tZ>I`X0fud=55Q2dWXvo^lY#Gk?Q*5 -za?xRXMc2;vnft#L9#n;SwsJ1la#gz3;9Lc5D=<(eg=%6m4tTnHe@V4nhm|7)c)=}N -z+b7z@gJoOj;AhVJg&i%bJBOJT4kJV2q`W7MO-_FfdH$C64z@44n!zN%4gR_TG9_9U -zEz}5KVzHQtn^K`wbD1XOB$c_yj0hT!7asBMRrq_m|6zSM+mgi;X1Qs3x|v3K6hgA`kTlo(xMsJ0g($E%yTsjQBsamoxktVH?9_OW{?f#63LMVzrPe)~r( -z_ev8QB8A?rgB&?YukzRdYVib)rNGm55rcS_+E0#8<^4BufUyi=Z0EJKueup;UG=Bw -zLh0TX&#hkr{f7eY?ZY!12!YARPT`M@4ycswPFPJ~dUj0^dMkT@){6$Sa8H+$D3X(s -zxWT?vNd^74yJcmK`a~MAQW=f6!U?g8%QbM(N7^{9F9`DhpsJyothh -z1M^4q` -zV@Sbnv(p~jVD0nm!s}_fS+R!@Hzz9}>oTGokI>)tuD%V^SNoeVO7YxM7b=)~a&Ji5 -z1BJ<*nE}*U?LUGdCt3jg8kdF4alX0hofePJC(+xPMeYwnF?v)zFxkCo^^P9eUDrFKIh{?4@ZLCW6>?L-!#Ch*3j^FCZ|EP -z_DFX>9qw{AItfzbz(ZRr#fcIyJ@{C)oh)$0z;Xas=&U%*^c|(eYeo50K@zJDe!r?S -z*ALo@*x$Wj`yK&8(wF-`ls>l#@Qu=(lGOe*>8VehUpys1dZ*7~(Hozx!-}}#a4e>+ -z&+6z66tXRXOi78+VJ`~f@}?pB{!PDn@0O;UI+w1B2AIsEp^v(-KaiTurdvB0Tx=j;iIAeBSe(RBD -zv%G{7|SU8^!U)H*agY2 -za4`vfGZgEAa3V|0Nj;>CP=C?z(pVlnzA!VIZ?3frMmC(H6r)R}jm?$#GN!RMcRpxp -zWbiNu@6B^A*)yZUez(T6+OtrM`EBk2o~W3=T7#RBsKD^322M*^g>+#%Y034235om8dj60mt77m@)}O1cMvscYTPO@M)B~pqPiA{m -zJ3OHNRcPW;WNzoq$ov>uK^~@h`D{D0WH@(KhoU$K+sIm`9JpJ}1Dv#oE!6YzN{X-N -zqHTHYwIPH|C*(R}sUjRhnP)-CUyV&KoFgrzI2`4b!cnF+Qt~h|c*+rauf1kA|FqJd -zx^YC2W3L;z&QLa*g%8mb;eg49w;bAWZtob9a?-Gtc!zKY|0!;~`b -z51e9|KB~kxca4vPGVY$?8^qPkL~Y9NbOLv`j94iE>5&sf*=KM9COG^VeIItLI?&oTK(9#yf>%2Td5xv>zI0O#S; -z_|PumU&k|Y=g{P&`MQEz^7HHzh9-x^YZU0U$0hF(WOjMly*~31GTzpU>yB5eLt(CGp~;sOLqiSV*ghv=6Aakpx6YXF2j*gH -zY)6>LFUb^Bcr<8oLqW@DEZ8y?;Qb)|YNTc|4Z_Z1lDQQ`Why4nXm)eow?VpS6Cjhl -zY%h!Sa9vMMPb9NK$5rbA%B^$*jrX#6m%slAEs#Oem28@M!1IaoI!$>YYD;&Tbnuwz -z=^reYli#Ni!?8uUT5b6V4I|0$AMMFheVoh3I7%HfL;SOUSN)C*00Z^LZY_`nPEUeE$_>&aC51*VeklW -zWxB^FJvyL|&dVr{VDBiqDS(_=owVtMB2Jzu=8bn*Kv@~mz0wd&jvUx*Kf^2`U#fAu -z;O|#UaY7N`Y6eP#l^tA#d;(FpyvD0$U>Vf0vK^Km6GkwfoxgXFm49-d^(UKRRw7|> -zlokH}5;-*Nd%0rQm>GQN|)Ct0+J6A5a|~>_t*z^Vb5b1m -zw1VVn)}%guU5(Ru^>`?RF|yguqrs~KUM)7QmmP}c5;Gycj1#mQmvg;1m2@sp=SaZ3 -zE^LW%qcUcTV#4Zb^NCu9WBEL8;)ejdqAoX#*Tsjzc6~B%>vi$;An3SqOv<&7ZL;R^ -zniz_Fx%Flr>iFl@&oJ<>!vM{XH`Cw<+E5ukjUU^=)d*G-o=HL9YVW?KoqzJ2*@GM&&6c6^x*F5T^@yT7vj^ -z=K1L?a|zca;b<)Pg>0ZNhlq`%*;a6TDu3>2o7gxH${nn%JPfhsvfK@Dz^4P-&v}!E -z6}0CAm>Ow0Z3@C%Oa?PRsge86hFCD}#zxzzR{#ivHB%*Qs(OJat+L&fB6P%+FZ&G1 -zyD%gcgBdXFFRM^28jH_-W7<=`;I=;~u|tDKImUh1Iq=D!-D -z-4#DR002?2k}p3MH*RY>=1Na{)59-SA*ay`@!R0Xd)M%@JbU~IFNcqv{O*(8;AFki;?yc_rRK+4+D}WV9no#LV=sKognaXPlb?hFV)j802W%B^pM$}A&kop2C -zTh+joJIH1rtQ$gvNs>v*E5~5i#Z2p<)L=zL277XojVc0ytCXG+Fc2q05v*bD_YOtH -zjPe&{@WkCila(1Uk+@0?n+t1cu{}$05jn6Ngv+hXnU$K*7MB{{RyPFeblw?~h8{&) -zkGD`W`Kv(@AwLF&6kZ?(k^yhYbQ+xy=T++=9~0z@koAoV4(&eh77e(8?4N;ZY=y%~ -zq^Ke4&5nOQZtvQJ&06!>Up^g@`Q1A-rqn2i>oBwq*duGcaYF~nhwg2-{~2g5(_S-d -ze+GOM_$5C!LnrwieFl4@-vZH=6H4GnmX0h0dQim~muLJ$RwK_~l9PNwI4}vx0B3 -ze&J0d=csTqPh@_nr4-D6k9HRpqtAEp?~%R@yFQtaU`4D53>(sPO=Q2Nviw~V!rIl&x?&7yG2T$vRxD55;fA4?}+>#!3%Y2JwHa^_lfv_UM -zZIJoPnVWb8ISwJ!wb`1x+qG=IuwAYa%_WzjcqubX3kLJBb_=Oe(l1iI3XO{(a04>T -zKnLm-a_im|QU=&dr~>+f@5YQnJKo?qt-(}@hP(#3eic!s9OD -zO)MdEAfvW5aqOe(#>R$LNnxq9mYL_Gr0*cVitd$Z&O77B!XT$eKv09^Hi|5j&;#*; -zq7lN>Gsg`P0Al@~jJ4{vdK-}pr@WEX!{lSxU+HesG3KV#VlW~`^2l|!!Q@HFjm}RF -z2WYw#J0c%!qP#W9ap9+AKXnh8GuW= -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 -zyU6W+DP)LrZe -zCbM3tCp@{1rXkJF4+qjA-Po7D`}{+Ok&sbn7n#eF=lRPCn9tF=XDy5M3<@Y&nFpT6 -z@Y_GquhpSc&coO{F6{1jE!Xq0Pf6WmD$1L*WcAn)C&;bN9n_d*>*(NtGUh0|8H!p~ -zg))sND+J~2oP&rlYf^Q}Q#`V%BNN7Eu%zbLRX4LSoa1NuC%SCrvXx@_-GT@( -z5rSf9uAEu89+S^5ik>Z5bb1Pl`@oW=!;Iadd*kdZb8l9QOa`gz;V7ft9tiVW4^T1w -zJk&5n9Fo$5Lj17UnD@+ji|*$_b39yQv=;nn{mFg$jIJ2~6$fWhl2j>yoFJ1QrhBk* -zA-c0#y~n?dJTF|6s5Ll$pHL=By{QS -zf$^zBB*Pt@8yp-+^&RjvK32jh>Dk`(hQQnz*9eU96g6P}vP=RTu}ILxM_Tr#FwTd; -zfeLT@%MzB0Ff%igv(lZc3r<%{CRQ(jd4WFv7^BSVcQqDV?A!7i|N9DK@xQ-bKRBBJ -z@QIPY2_Fo34VBU8R^$|OW>(W7?3D1EA3mjQi>~2nhuk^R)*{On>uUcOR7Jv|-G>}f -zjb}Hzs*3kPYwm}+KOK_e$;Q|ggVH;TMHb7>G$;rqpje7sQH}yCl646*(xTDo5Wff! -zUKdmym6_ln+&ynbWhvwqk$j8Xm0Bo^91^pO5ha1#?w0D~h&nxLyd>7RS=qq3wqf?E_2ZJ9aA29OCU5-QFVW(uZcShiI`N@o|_NO1d -zULixuKa6`Dn+8R&(>aSq28)O;PoEjn%EhT2WL8_AG{jSa)hPq9zQBS_N -z-WgL#niJAJX)Xrcn1(P@kZNB7aaq`ns%;QauE>AWdX$Z(=zhC<%=j{!tPu;cFl`%> -zIvp8Py{QlX^o3e*{u;CL8hi+H&oP{p!YvYYWF_7(H=v#PCINh$Gi%=&){-eoF#i=x -zS9akSO;kKpwRlTfxAH?xCx -zlSxs9bD#P!$Xa;D#9O`7_vFSKpf1bW3=osaTt2A+QeP(wm<-Ksl_|l<C?#-80~Ic?|9r()(#3&D -zO)X&?AouRdKRx+|lS#yV?Z-`f3*>^nF4*IEFBFOt(NvHpw>N%ZrWDrhj=LEJ|KMK6 -zYk*f)kUQ=s8Aw$PiCm_C#c#uQ%>$!>BtOzivzsV-lF+n -zHQ@0}U*nfTNshYXEX{+wU@n^`hvR5Mi(z4HHh#2+FJPEDVDnn^N0qILGhZYa6BhLb -zw_j!|B)i$IlOjKBI4No9c%A`BuPtfh8Z~9oi{gl120!7R;fj}6966WJl2s;KkhPtn -zIqRJK`Kd_>fM0U+@{aE5LvE&d@nVYtC_E%vYF2}UFKkQ;$dlc~84`oQI)bben!qj+ -zHmLQxegCGe5P3ixe3i7;m%jwS)r(RI6tUh`^yL;O|6`lYO%i+WUuf{?cx1wR(-bXL -zsNGTrF$}Pf$Kqx>dvf{<&<*l`l-7M=HId}Sp>`iCEvH1GIkyb<*Iwd|km0fPKHKpAL6tu*;eYhE^jCi; -z`_4dJCEHuJ*3^MnnA*lwq#1ZezVi5y(M*%Ce*f_$-)q19_@Y#+Y&zo;QIAD*&p9=sf0&sI|q-t%}6`76v -zdYf-QbzR+Gv|T^Azbtbt$SqCcSuAlDCpgkh+dcZvu9$GMgQcA0R4jjMfe5)hr(1ZR -zn3X~Q*?}=N-4$(8zkcb&U**Dtt92c$+lZD3R=VQdmXaI;g?>g+IS7Z7owAZ=QikXD -zFP4>!`g7A-43bH0J6RR=z;=bL3;a+(C*HW*9jynnYnfUHk4&_0g{uZ%Lz`2LTMLd( -z*feVkm22a$&Ql2dd$)@~B{|elz8-0P5abI=qqH5e;1$D0())pCWJE}eopjb_5O(?| -zBe52fvmA$lmv9WjSI%NA-5Lq2B)N`OM%PS1%P!LCirTbCcESdpc}UlK;bx>HU>=HT -zH~9My_Kr8YI7e8jh8)N>!ZuV5JqpDYd%0%7Ulg&p%IKES1RW&QV=}Dlo2<$%9JZDp -z2I-kw00-C=N^OEpF+0bacW5i7$Keur8y|;Oflq3^`01FPujb|;54T$By|BVZK(i+_ -z-pH3|tVQBQ4Iorp!WLO*=s}0-1h`Bwg|ts=UM%iiu^_vw4A$qP)ulaT3Wk}Z5&omV -z!Q}hJq>nS36K-RxYyFa410E6X<|{gF4Wrr3{=prj9=eL*F`&R8bfoqm5wXv0Ox*Kx -zDfgo2Jct_fcF^KkqGwjNM94r;1oMcGh$|^>p1t*p@9_3a^B~I&jw7erbw)al{`e`u -zm#`>K8hTYzUaw#S?|!n(Kp -z2ZOQF&X<71V^?uWXmnM~=_rtw3}wWRndQnJHIKr9f-;^Noi@sGfC4!z56xX36vVpH -za@^>S#!(@dPG5>3fU4I;%b31C!hmSw0LZ?~*9XYa6d!#ug&!h4DnIrnL`hUMkKu=kaJzS)NK2+>4pq002`JFf2C|cJ -zUH5slXU;i`UiOT^sd)i}7X8SyMqFk1?uDEXFjMnf+b&xs`E<1IcSB-8Q5_xDR!j!7 -z=VBRIMj?fo(;-?01^76-Y&9h%3^hZWbTNU`Jz9~m^urR)w;Exj2*>JF;b`>_ZG)ag_6)j_XVvmWZll#;X#ug&yzxx -zS|MqyFSK@#+!Clq0I7(9rABoy?<+SdN0Z7@3Nf9B^LxukKw86^nMFQ=j~16M0vg`u -zkvECFws4kM{G8Va_96;xn8wPc1YJ$2I{mDr(=UQAJP?7Hj;TSQYIz{hC4E2BhU{3#&Cu4|?x<8WrQ1tYxT-hHiqA7)=H -z!`ki@85a&hvMqn;SkK*I6Z2CMsr>>a(eQ)m&M>Of_r@Nv_PPb#7nF~Rhe5w2Rzpzwpk-J -z!zqqO%1qxKTHDu_JxHBuLrJc4pDpQW*U7Me>D=w8_a&|$fZfndZ9LEDj#~!uCidi# -z;IuU8z?Qh!M@Bya!NJ9a&Vz{%MK1S->1hq^PiS7sQpD34Q1J}|tXyYPqIE6y4wi1-t+p~4jOGL0Zwxio^$dF&wr(oVk9{()j=i2# -zj4PHMy+T>rVhPEh^JRjOKYAcAfbf%+Td~0`+=4uuF;Hv*kaA1zjugn|%CoE@O8^Z% -zPZcbB?lF -zZsxird~)Vh$;$)1;Y)M{7uXy8E@tdP;|j~456pYvmgIm_aCNRfwifF*I##Y&(ZVZn -zz+&3v2a0VB3nusG91`rB!y%>sv^@UC|BHV6vWPxqn#*hmkXh^wU<+BS9C@Yru>vZ1aX2^?xGL{@&dkdij8ox}ndsfz110&l0IC@`=ckpcttQhmBML5N78l -zOQ!-`7Q=Mjv*Pd|@`5L&iR{L4LX2kO@|Y;@cS{H^{GKtNy7(VTVadlK%q5ZKk_A;6ZL7E`Fh?G=wkt -zw0K11R$Gp41Pqe~&8#ez3XN~}4PD{fm1Vmzh2+Z==M2Rf15Kl})w`vo0Z+z)eQQoF -zX0a&yp|}`F_Cj-XAtr6O0XgPDnUKH_SWt9tko2)Cd%a)#?#ZZ5g^69v+NH^Wf!MZ( -z{SsO#wDYtvJY3OJaZJ1s>!E3b0|WMBgmvo>!eo-#Ayn87LEV*#6VfS5 -zHY;<6M4%ff!)(t*Xu!H4n$)7x<1&(=(hrtB3ahy)X`!jp)Hb@JLUk#=6=7v=tX#_o -zNxn!URC3nZD4Sz6yyhRIOatom%;cV`K22yklP9CO5JVu;NLTF|?BQ6)k~sW7|ss950IgOXoo+^{mjPkGg< -z$MTP$HDsD2D&GxQFi5+FeVzAAWVvF3g4^rnIZ>E#FJ3Hv0nENBen1HA=vnH}lViKO -zi8it&MCLMz+bzok-Iv7u~$0`&u4WUtrro)>q2?=hJ8!&fpTZi -zpgm`qoG1a3_ozN<*L(j^Y6?Bd>-Y<5`0~xdOPVDHUP8f0c9T8FG2F8m0Z+1vRrYnC -z(SqFMT(bvP2h_4Lu<@3`JZ~cBB-guNh<&B^O*(&S6?_wd?8%!6`pYfttlqE$BbMTo -zfv%K@PoYiCdg8zo;0?lq%E1~r?QlPF%!MxSbv(t1vA)^L4XfM_sXR8(P)hR>tcQDEDS%Yx+C&MD6O%e -zD9}}wQDn{oaWEm3^7L{4rwMW)VebyIis&*HWMo`T)=~ET&`y?@NwSjN;dHTi -z2iu(<{R&|@cA`EhT=65t=9e?zeb9u~&OLE)ufr)1icv32+`i9UmC>a5fBl1)FJmaf -zN#3;?faf3is=V?R{eau31FWGyjO{ijr3s>8ICDOD^5Hv$h@q|TmYdo?%hDaf6ft -zA#FE=_(K@oe!Z1@;cq%P>|Eetj=V9=VZe9Gtu6&TT -ziG1pkZ@cwfVj!s5PwO}#FHnt{*0V-T_iiS;W2tXg(^9luvu&165=6?E2}sZPFN);Z -zw{V#d({n7%`f8@d-oir-tpRyk23&D{P#0k0uFf3;<3Q!IV^esw`@wN -zd;v_^lRs82wPSjKA=uo8d%VJnMV^K~za4!)leZ(6I`1YGZd_M%_4x*1?CS+O|L1-{ -z%xeMG*vDN$QaZ7VLZ^RhaKccn_c`sRWdFpHpV?W@JQ)AW4v#x~j`JElOPa0-wPXSw -zlQsn<-H{=~(oxJ*M_rVBP&%k8HC;(Y^Du7P@Z>aF)=J(%J!D6ipq?r11j?;3enjWy -z;35;6undp2stI71A{M=6FX4$IU_u?0L<7xSZ`;K!;?IF;ip^MYPN{9gV#tP^HD)2v -zo}Sao-p{@MggZAURt0;!O#}!K9J#>+v^=x{?A7>GNTQe$qX+O?F77F*%2&B -zjudKb(e^Whm^``e21WwEuGv<`Tnf1LgprRvC$>N>B4vEh$b`*C!KqZvj4$+SZkOli -z-tpsT(pC&y>37<`S3{5S$yni&Hqve$vpL0oqEVm?wsgr#r!H*k@u``aHsAO9s8=Qo!|wfg|FR+rLUGso -zmzw-V1{|^UbEoSViu}I!zI+PLhR`2XKQJw -zCim7XWTfBvuiyC;bS;p>z5fB!2?$;KGc8d_So2pgq|+)aoAee$JCNr^O^e=ki1-DZ -zN$;NIrHXb1y99o@PPsdm=J!^n-vZPO0amtyaW6yOpMIp)AoMw9siQ^F*Iv|1q0_R>*)S@Ea!^) -z+q7}mh~IS9K!vMilK)oz!c{`%xT817eRONyn3Sb`Z0n&w6J -zNk!9)shlXr==sV45M@z3JTvYhXL4G3CODEl2AWj3gg~(_$g|?bk%7UThC8A>9M5-% -zD!SE1v0&MG3>`Lpni6T@!HXoTx!dH^j%v-{EMvn*V33dJb?=)*j)5@~60ZN3D#vIE8nQ?=d# -z{h;f+wUg^~JtW2T@${XJ*6bb+{?PX{k{y%b86i5i&96G~Q2>W_9>%8)e(j#3dTcpG -z3jO)}e9(=~T0uatQ<62;)wNtaO(skm*T}IveWM%oz)Xb_7Y#p#Dm0ge4?9(!v0UsH -zby)V*@l&mBN+Du}m@KY7I61qYm|s4QGbZn9r=#nl9mZi!!T;R$nJ)&%YVNhr7{(1ae+J;Wx+Vo^pynbyaM{kYGDd!#thvr!ifYUUH>`XVl)deY_hK`v$Ee_L>8(7!E2cPMb@M{6mWdRBC)><1+ -zi@XgjD%w7N_&4sN{u9Vyc#_4T0irFC_O-kAvw`r+#X=iT0YHMH3_2%)jFN}lHcWhE -zr)dez@CoPRS~>O=v^eE(tV_@>vsT$x|F18$AqF7GXooc@#0O?Q-Hiv!G33RuJ4*xC -zR|Cn-GkT_?{4(6fu0WnU|M542Ek -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 -zKl0wlUZSd8?orMhd+ -zIXzo?IwQJ^q~ceB3(x7LBEyDFaDI$TEE{A(? -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 -zCt(N_<#tgc?31w62NFQc?_fEtgq-H560X@;u{ -zdO}Nliist0@-v|#G?X)IY-wzjBW+HggBW$XDJvtn+gxChBr_Shrol}iLQ#Yk&7w(m -zMT1puAhq(xOsCzAM-P;d0p5pp_cPvgL}c77u{2Sl%m8A;C0L^WK;>oBwJ`btNP25~ -z>YmRtzu51LElLRB6L3=nWqNervYmipz?JX&?E_T57c_;Ts6^fDt+SHOF@130C34W^H9NNw+)=|h8|K#qpH_tI^(R*6S -zNO`CGhR+MkheCzBT#-sO5A?BGbQb6-s)(f+NSyTK8iTA9(Zr&dgF*8%tWQi}bZ9VM -zXyE}yqp(6cmLJf_!%x4nza&#m8?L+5Yh`*D_OmU+;Fmf<7rI(a5Qbvl@Z&2<{UxF1hd)&0iooX)xv@7A(yzYd9b~bI7w{2~qlh?q;PsjxJrv4+aU;K$B!C>>5Qr0SzRwoaekali;q9?6OpQbScV*M40VKG|yVAgC8FBZxdRhs%KYst?3s;g&rVBJ` -zN!eDmHqTLchlQ@CEAhfot_>W>jEH$vRGX0|WiGhHgbUOoT;5@$lWr5a%G!Qn#Q|2*5t -zth45T-Jjx9-8ypJxAiuXTkwziAf^dLpvFWUL+ZdQMS^;-7c$fj@;1=^S -zwNs83O|p9Xcpn9pDhND;VlF;SB*;+;V;kR<}cjH)25d3B-h8 -zDCiP_IdqAjm1m`pqtfR21`L3xK|C!Mp%^4C)a9-Qd@}i9vad8KbYyaGW7pRBeK8rl -z4F-ry#&%-hq0ZbvVO4Tkn{oFQUyR$xv`PgO*o`KrVW--#-O$i{%a6mZ1zai?^wXQ4 -z*=N;cJW?dIsc?&l4wjhHCK_}EHuN;RYD#Jwyj$eEtCVN+kbx5(b2l(5LEXECLXZkU -z46pPQGOPf?of0mAYAUY7abM>46!qPNEtD&)(M=MOD(s<8#ff^bDFM2h;p#@=^CbH~ -zL18vP(g29bETs(nAyN&iau1*tc3BVYhy~w)9zc{C0Z)obOH4e#1_xs!6YCBk+#$&y -zahw<*EM_JJBn$1Si(+N?njyVZVp}%qh?c_|^7{|pnDC26+Kl(J!&{Fg%VR~m@&*OD -zbx(LN@&xFv>8Y6_GAIo|YnanYz)Gm+PWBZkST|jMzmlWBYeo^b)PeWDGb13pY^<#r -zlW^i~@hZ#n3h<~7I7Dn{_ffZ=ehH0Vdbr|p!+3rO1pR=7-EN%%fSIDb*6a$x$7+a6 -zIrPkjl|Oj$nZTEXz{EPWP9(?=V~$|uU>F*xGpM1N;594Pq;3=WP0%#Ql#n;)K9ku@ -zj+28b8)zc76hJal$p4SBKWma)X|lw?_x=|{zPg8G|QjM2ta(<=xhlHZW(*rlafI< -zE5&Uf)vgVC5XRvIAQE3(_r_9QZb?%ty?JyOHQwq^wK3T&U3M+dZ-d2cCWjahOfBF^ -zrmd0I$!uA&^(+$x2fg!Vv&Hoy_Z(tlFx-MYE7~Yg^iPbuCB46brGGakOdDPnP|Ftk -zAT1O~)9dk0SBms8(gF`tt2fsV|ee7D> -z=!ugpqs$D7*=`%OXWzj~M;k@TNUe-c^w@Z*bu7ygcJ4CH7WPlDigJmH7ZORG1Q-m& -zBbi5>AMEN)yb_=*QV|1Fl}dSmOcZKt-PRkP0gM1aK)%0SYyrUHjw0w_Ul1@G&9Abn -zGj1Zzjubk_Ty#t#E8{iyhHl}5u*_n!jcRMiS`dL1uV6P4(?pddq)XOzj@Eb$4u(>z -z9r!P>jrsOwgn{A~6&qXvZpI8~@EdHSct}BF)m{FpBZv}#Q%5<^EQMtT)kZU=B$UV> -zroTV^ADqM;tDUBlUFP3g*Fyruwa -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 -z5?*cpPJww?vlm2 -zj&tP=dohB)u-ND9b{C^)XTS}ziUKuaHW*r^2(y8fSjZ;3{*EXLcR(FSzmc96QAcyr69D@&K#JrJ -zTM^U}P8alZHms$qQBw`cm7u!wPO}Nzvw=nrGjlRv3lQaMoJoREMa(-F -z%!*pczee+cc5qh##YRK`NY*DqpT`m?@Gi>M8;1kIw#W;@`l9f-Mx@C>mx5Sv8dniR -zT?PNi$Xf>h+o@hjxwMfh@g}ax_u!$h<^td<4ieB}l6D2@F2lMdW+_^aWPKP84{&d~ -zPCglX*T>j_n4-5X>q9}Z1SwxqdWAeuz>R0@<~RGJZC -zQw~JjbL=MLxoH*sU*^LNAvFD~#m&Pf$dZ?0PW>rbt0=^)}#79@1MMixjx`;Uz-WyUuEIWKd5BQlbQ^tWx*n}bH -zJGq{fyois)+LVcc!HKFg=yVv9m$!!L`gyzF5o*yQ7Aq -zvB^b)U)vY#M?yC -zmQ?W#w~Q5Vk}nM{p|J{vQ&tfIC}eH}v}01&;HbC`{u<2IU{v~i6Uh4sy$OC&0|!Ex;H0UG^$Db~i~+&4<$>OHwn&4!^}yhp -zNkaAyWZNy~S-O}9wIu$sp?PXTFPi8Pf*_+HM6(GXZd4&-$%h1tfYpSw9wLnb@ZwPP -zioj2mT7c1|LE~jK!>*?hvZ@n-)Nx2i6ra#Wpsqp|k}Kx!R?MkpVcu}Vxr$jXpuY;~ -zR(e7OqLgJm1+E#$DWpyu$uqoc7z(%FoD^c`g0_`}Dlj5T^rGpn_k)>Zl++pvz1Kb# -zf^Fu9Lp8u12+K8xVUyxmfkm(lM9z0}WNi}_5dmHSMjY9cgU$m1!V%s!Um{Jn!S9)V -zMxBcfvMbTon&WVzk!HZwWwJsYso1!2F@ZetGXgBDvC8?L6^g5DDg4a+h31%eL?n+h -z0&!vY?j^*Hl5i(nh_dpHqe$v5qWyG$ryGSIV@eD`FEFnGo#!#>48C6nertbk9(KLunK_-RZxGB3)>mv0tD -zY(vN7H=c^RV>zKRk -zlE#Ils^`&3G54=%GY1ra3ZONv=??ZUD1Cafg2n3QeDpn!jj`I`x=7QdgEFeUY-{GZ -zZNOde!uT+^Gytc$i3!Nq`@la+u$M-=K`KgPZ5Ky16WEsR;ql(hG*cjNo_*4Dw10QY -zCvmxj!RBIltfYrw$Bts4i%x(I&_JyKRDsfd>pq~1t3RZ|UrHuP5;{xfb6ZA0W%?$X -z)IR{*EAq9%_hRnNXsTJvo)m3rzv3Wscea50u*AR%!)-GFQ$|6|`=a(A!8Qt69lgu5 -zD&)%}vK@gfg0QD;agV**(c~9NGuaWqbFb|-6mjWkKozyxAS`eh=a1+dm|_tFW{qR7 -zD@~2ot|?bpX=!<`@M?lz1beBEMt%`3*i^!)+A(t?FvbX54*U!Cs%lb)G?ZCzG;_j7BjzN8-1U$N88e -z%t{Sy#)b9OiywsoHfFntIktL+bcZ!Z)*DktN2SBDauEdpBxL3gIY8fIID6uJ<9Ia= -z0TanDN%K$2jnj*8?4yCNQN!FT1Yi`^VPq?~dB`|AXboBNG^%3Hz=~Xa(=%{0_vK|A -zRN!t4t?3DGC({v_`fOgvpo#csZaK`((;ApOjh~c$%2szIuLvgj -z^QjtxgyY?#kEc#Cb31#eks(IyO|F0iylA7;Y~u+Q7IG<`AXLyCbr_*hRd -z5&4;nUk@2%}FWTHES;77{vLBjRJ5;s6eM(jJun64^z=#scW -zNzMIz)O -z65FR~1GUu>8_RX%HnJgl+OQedcQgz1ZVnA}xlQ`wv?~uUP=p?|5v<8P4rkB~HrZbw -zQR1DrYY8fh1dsILO$7(uOy#(LvPUATEdg7>xZ7t1lOoYbz_;}4D8rG3XC~8(Z$;8L -z_bxUUEZ{_!s1~Z+oa#zron5L+hBhDp4oqDF{BKfw3edBu&5D~IE|MvX#dQT3JHS`v -zts+#2G>YF9QXz%G;5peubB?rb1S)}vHbx|AGD)tC>w$V9j)$^T3Uz!ZDEKNPu4dNR -zMPcS(aE!F(>I>8eWSG}RzTFxmUSc&cXq7cF9*+Z#7Q5*l$S@RWCyq6umgVn_)MCD{ -zXtuZuk@dpi8fy~i>uNX>a)5iFCGd`M3M2@qL_~5!KgabULMd?(Gp -zM`u}%z+IP_?&S=4#$J>{_hjXYAx&y|Rwy(y5jMyN>|S4il0+2=AlZYK8gZ9tRHTjO -z8bo_#^c($1+U?d76Q%u53X6=MG~dFKaVo_1G~eterW7t4RnR5mW6iMuDSE}4O%}U= -zc1vou#l*^_1eqc1`xn(5+yY>YB^k;k08XI1u19PZjRcydPqM@kO8x;y828WU@EKuN -zO{C7Pkh|r^)g1m#=b_C`rS4WLaB+vbCH_<<%bFP8K`V*O?{m3ca)dvCCQnHL+Mn_)xF8Z-)VhzN+)nxWp`N&PPYZyY3Wi3u^tGeL05_9ibWw!_Q+>QrBNNADQsY( -zML5&0cCqA8EW)Rd_{P{)A&857A+01l;%GyVp$pE!b)6bpW3wS{b3b~F>}F) -zIq5{1Fl$J1(l6J&yNR#IOpa1>quhe>uG3_&X4@Ic?}}=2h6Y%6kVU8R>_#`U-MC^; -zxgH+jk@#9@%f`0@6Gt2Kk_gJd3XaAbS7^@QE_GRfg;5)2Dc9R>K2eytc^+Jr+MidMtyDr)1lTB5R=`_Iu4;-wbC%{>ZKs!c -zlGJ5|s(~mHu^n9EWDAlI6CQ_zfwLMr+Ii}dONLfY#OOfmnui)1ZOW2 -z$!_*&#zwo?3L`-*$Bh)Z4Z=;M87$ETlYI+IDne*8Zf9Ejdm9h{QYV(#f`l!DF`A3n -zJStMcZC0Be5mO`)UrF|avzCKzB;u2D=t*`SSU%ic=Tk@uDXmk~0j5mtG+<4Z4A|}0*(f)3GPACOZ065W -zVvI-0XjD-7M}CEI#~?P#S>^W{n+QyHz6U$NmJvg2D>zk-EB{lLg*1HLwV*_Gw8vGA;d^>-=sD@5>s%C -zRupeVdOf%{H#ZN~< -zMbC}hIG~|h4i10iCj*qw!@v)%Ag@w(@wfu0-bH|*G!Fw=bnM;$a0C`0{uM+m?o2=85g(5f}U9nJ&y2i6kXWquW1hpswYJ`xpVMUQ%D=+xpoFr*nlkr -zZ8(1&yW6c>(hRdC1vjo@h1CROTj`n$*Z$(7GaDa^V8wr{@gF^xE543f=4$WLkTG(E>oulE3{g-$#6cV -zbh%ng+h0b#tE>s+5`q0PnmufS6%t^k5{gbxom`B%O|qh_0aBLK6n-lvD9Q>^XzL)} -zCngauuUZpFXsSt~ZN?zRxySx!9gQKUCGw{kJ=aI@zcM)M0%G_D=(%h*5x{LjB2GZB -z%Vx=8unbJB`QNzX;J-pt&w2YW2Ns`o!G7wkSrS05F@*`+AnRnnSvXzUWHXXvCZ%wK -zz`CUmMadYw-Y~EZOa~tIBs6MBABO~#Q1c?(B=eD@z<+-G!coDLBbH5hA_&38x2{=g -zN9zu5W^QOSg~aO*urY6usG%ZFjt838^!JVq_H(7q6Uq%2V5ALmfJ_}J8dS@~gnbJ^A#V4_h;~{9sE5nhGf1Ew78#W508>kr>n+s;+|dOomdV3(x0;PM6X7v` -z(2a-su2}nAR<^__@W2>U+U3axF`1A+EKC|v<;lvC+m5+4tt;Rs$lKI)2T0r@5XK(6 -z-=Yujs9@KekY3nCr63g&tP0fP7GDxZf&R#>8w3YkdRgn4v#_h$+1N0`pL+3St=}**%dssP}pxd?dS2ykg -z_9Bp%#F)ruqHnQG)^#Vmra*mklxv2Qpugn(pni-pyY-j+PkGGzs^a_PY=aV>X4y4lS) -ztKil8bu&qsxo((fOUzbMK_7*&|$$GGMjP6*h -z<18($zRr^{h&{}uw$iM7W&Ja%B7`?0$&#dpi?rjk3%QD0_JNS`0UV)r4>jUL+l3nL -z1&aD5+I-NO^jUdL3HU2n0yA1C=?3AbqU4-1C$LEm)>95Qm9`OlJnfssn^*9?Fk)`;axl)KzjWM{fPWiN6F5 -z!f?_v&`IX`e1w)fix0iF`kjffI3a_y6?iU-IhJsE#Y{8HYxhXBV|Pu`(;P8zYt;Ge -zh!~?%&&cc3N;l%|RIaUij)dl^v;i`4KFnx?gT6#ARN$x(dvBeR26zzq`3x%+iyaVr -zX}Y-fC9cSXx>$2oh(QmQ_l4y(UU;8j2?qq6$P&EkM)4-2kr9ctj{D`8#S8YUdb~(V$7lm5@2R>lK42-<4lHZ*ksZw2MKkl -z2#8|VD%-k2tyP;@vWC%3RG3FIN_B4}h}a&BH}zRk6#kyp{mL|fa!X%jC<>0Gj0toOK%{m2lp&2B -zrVrrJgjL8iE~0X+bcIJzdP0Ql9y`Rmc9NAVO(4xjYK(&^=c;HkbD4Zg5@#>48Em56 -zor=!|tS0)_)~74V3e8tCx`>;bfg+rZ$A$eZPKEhvlR^G!Z@{#qNcc8~t -z*~Y{^@rPJUqQaSEE@~|F1>`oo0E(w3<^yR6cW&c2(8C}vYUKoxuwc&SZc!=` -z4lcXhro`k$FCD`7Y^OyW847~pejm9SjzvgfCev!2Wbtz~pzFCAf$f2{W#4=-EM3@0 -z&mncWTRE!S72Gh_a_bh0fmK_%t`0Gj3eiTJ=*lx(!)^$Rw^i<9^g#5mUSi|n-L)^_ -zDKvZh{f0;Gri_IRoUy@ZQb^2@CfkQ&RlXS*`bbQhb_BOEvTa!$K>TIvJ)#72U!`@R -zLuIq2gd{9EpFz%2h!HzMNzh##NK`>u-jh)_6;~j?P}cV~t!XzNiJpa44!pZMp}zOP -zcub}-21+7N`61pdYdZv1Xtb_K7`%23 -z8~6bphZ`TvMHFRP8Oqxn$ZW1-_TRYWV%2^Fnvd3mBwY>Bum#}s==)X@AW8~V=^ -z#Vo4*LGq$Rcd$YH+6W9+hMLrEaIWUBEG6Kc^<1NB9KM5CgxTaS%gVIwngbpa&2$y$ -z|Jbcc*e&U~lz}J*2C8HDc1^@1MR4N31E&^vEiFtZEp$$KAI0Wy@JIuh>Kd{y<2qQd -zWHXXjwtySA>xf;ySsRk$E`DvSb31v8$-`!FDYl;(!-y87c2$-pNZFErkK%pqiSvSnyTY2B#2C@3H{`UfiM=zW*S1{&k1C~iUY5GY7UVnD2r|=v^4h^DxkF!>c8|{@?XqbvRhj7-Bk6d -zZG_E~hS9L(me;MTI1Z2C@l%QL;A2Y`LA=2l9Ykc&kU0Z_U3zsAM#kwe&quMvp5p^o -zqS9(KGb)mASS(+a5c?2Js4v4|Py{A?<3phpmeW*eX4QO=Gev+p9a&|^q6lyeLILJ{ -z(w#Kao(=qEfiRC@3_&1FJr*NZBb<^la=K^?Q?2W2E?IWpNur*wbWD1QVH -zB3nU@LbjQzK1w+nGnk#RCT^AXFT6xz1Ro8;%X4m;!{)X^fipn7IO%xpr;(DaC>JFO -zkjghppk%jIs^Ox^%Y06503J;PvLMyvN>3wR+NC!*dZKFVg`etcEXol@D?|2De!jY+ -z5A!uE=44a=9yKW5SnMCJ09tyt^I}q+%`I-FdN1lNPDaqN4Sc$a>yv&R%#j*vhZheg -z617T651xrjPF3R)FX6CUgiOlXEk&d0*hu}-+O9(LA8E0|P$0(97m+$j3&rp@mis!;Syl8D%Y -zIgPLM42j5>)VrQ;uFPtY)tb@G3rY6ud1PkLELDas{AwO5b(V=@}bfb~{BMbjCy;x7~nLqWGxVhfnf;2hhorU%y=%kLwwpk#|0|#)6 -zIh^Pg0$rhzTN_2e`a`k`-d3eZc>_%MREIv0Pq+e2Xg?jmv~iQDC?9)=K9YYtjZwe6 -zE9V1fdpTCkRxT$CILI(;;}W4+9Sn1HXossB(?r;q*iA`t79KV~NDyLe6LSTU{7SVv -zLS%+6oms68W2AEg9M=mnWK?+UMKZ?@O&UdZTGgxjOu$~-2>wj~Yqaz^RVBx+d%PqO -z+1j~_ibkkOP;BCV*ih4jrJKY$howMejlF0i)XT@5Tw?wrD88s1JKG38sZy5rEn-!TzEJOHpd&H$c3Tw -zxs`#SJ9^qg@(KB)b-P@p%iU>pZBovkTW&N?Mcr9@;giMso1huOR8MbNN=H{)Do+6Ls>fc2{4jx5w0WFF$Jt8 -zD{1kZ)K4s+Kp7;&y;K7k!DeRpA)v!_04W2k$${PjTH7ietx)HjWDFB40iRD&Ztsm_ -zDRezElv?9vV}s002#{9}!0cIZA*X7C%Nt&#wp(44o#@a-E6vA7BxE_kZb}?X{MM+i -z^~*Kuc0&eQ3aq0dY~}<^Om=o$d9?%M4`xTLo|DN$POk_2Imc&_F-!K!IHtTJR`fQ% -zq4*0ffFKz@mAH{TlQQcl=tZ#6D&e68K|S8Ujx(P|DKT&BsPv_8^{~AS_0(nqy?LKEr`#dS?X*_p1UhIvP9Cx -zfqLZHemXHN#EwB4Mo0mv`|Ul|bj2T-SlE^vNFQ;S0EVY)9y!2*=@AdVdpQs`kMduUryu3{OD&IR`Y!)AXy=aC2Q -z>9N> -zpnc|WSOd_4C{8!^oUu5d3GL{vP=qc4tECFLuqq&|;O^Ao(8EXUN0mZ^_#m>RC#tUKIR^por@Ie^3<6TUa*W7F<*tv|>fjBt2i0L+M?dWY9m-8J!NS<~5 -zRSK{~s-cd5q_ysh2?^we{Sc)i*uB70o2czpbp1dVumG`RQD;9FUB81LN+TqogZD^~ -zE?Mtdwur`RyM5}Wb9=)4iF6f$rHoe17*;NWNoakcV&PnDY)hj9ED2gaF=R$BC~+o? -zJ85(p1NB-JZH5hh&$dg>C4^b??b-Z3+ueZ0DJ^R){GOfKdLToB>Nq~sp9y^ -zk}le1BSX|{2sG(B)Ka4Du&NU5u1xVbDJGS?p}Hho(Qd`$sYx341zABW=~p!-7Er8% -z*fc@Okc#}5PC1jN*2rk9mt}22+9b`A-2BJ`pRTfbd0B)EM4bMd~B9gFAwU&hrWN%2W -z;Q)5^s3qwDli((vU}hX?ii~A^4AOTB03qdu!AaN&QPUR;MmtdTkA_1Qa9U9CFoQD( -zyqETbI<*=kGdv;<(j&_bB$kE_ggBM!gCh?S+!(8&kWzE0K)vZwohv|<5j_`| -zil?3}hbAJrqNLCID}rj4*2`Q5ki`}Wx*}QmYa3kw5cGHcD*vg1dZ#Rj!P^1WcIcrY -zQ-X*}V6;q)kc#~KwU$A=P&GewzjJ|@p{KUzLDn^znu+O0Yh5BMRgA4TE=dWP{Hnv*~5;0RYg~n5%j8`BH~8DeGE$4Qr&ZS9$>`L -zcTt{()YM*7Gb@O?1GBl_U_Ln3KE`mj+HonTf^pa@t(~J4jmYI{Y!$0;r!zhAsXOnz -zNeOpGNM5;pTYL=7&NpNfb=I@!ZS88Z^iW5`YfA!=4l!KRh-*zunY_9-FfOk%?(f)v -zv}7_;MTwF0CBHnzCivl{TMKg&v5O~lu(|X!jJUsSF2*mdgt1% -zMXqI!xXNt=1s&kLw8@(&dKqd%4k%!99-Xr-Y$JGnv-uw&Y!ehzW^In>h0b6%2Go>5 -zMM&fk8k!9Ta|9I1a)Mz3&gI5~<{@KsNK0z$Ux5sqhU0F$EFsA@Q5oKNxXQDbX&mjJ -zn~WHhb_U=DX`!d6S(Ml$a=N1HQ+W{pET}clI9y$32I%tTa;fzX<)++fla>IRkMi{Q -z2`rwmixF}wm9&){Nc)vsVH_tQqM%9AoC@xSgJ&vI03db=4m7%QY@Dr>!4r(U3_u@ZI2&!WgjoVABr;5py&Bs_1c3 -zvmss}N2oo<<$@JZ$g*1CWrhJrA5Y1W3ZUFN89z+jt|LhQR -z082o$zipg&=7nl@4IY-~f)Y240dVt}P!|EoF9p7$JY3r<3t@G16KQv6nu;BB8kEQT8WQl8IX>v;*vzUs7YhP*P%%`xq@7_1lqS)idIlXbSfM$#H0VZfDN -zU^p7>NU(H0@bzadX(nPDO0Jnpn~O<}5@iqKoTyMVjfCmu_+oQt`Y6Z}&QsbR)IAG# -zcur&^X!$+BJgs9_WiC5{St=>XIh+vh+(T!XQw6{cydU#9%+4L@0O0jZ&|$&5n7iF# -z_sOVhxs5xPaf-IhWfURG4BoO()cWsv^Ss)Z$nb$!7I%co*+jB(<`?%%LSKj?)V<#k -zM~v+YNjZpZglIG3`uMJP2(3UigNE`pMuhL)E!@qe$az7t=x8jBI}2-OEv+TeRLm3nTAH2G9Hb0ml4N*oSQdE2j{`I*jgRGMngA^dKD}r$#2^J8Anwd#J -z#ya{bC-G@WlM)KhSrjLBC}ZNXM1s<~^#gTg -zd9pgUk!jE(42wbZ-Wr&oGeu65I$ur*%dudLS*Q#rOFWkkq*!Ps**C9%4URxx9Xmw8r)XV&dvs~;s`RW-XN -zC$;B3v3Lb*>zUg(__i3y_K>YfuB1;ilyjH!W}|;Ny5fLS{!dJ -ze3oEVJnbjodMWz`WE!@M9#l4~jL4?rRMH?6@G-21v54S9Ww`ARZ&ZbAE@{A+`v_L|1Z!T|U8+h#z>uY(SZn -zbS#J#H5T#*GtU83Z6Z+wE*kdkVbOJ-JeSy^V}9NcDIJjeGeDTg%cu?G$aujUfzy47 -zLS7Ukd9h5ARN1+li5M%DW*uxrfr_R^&}7L1qd(qI^Xe^4dLR;!#RxmS(kh>_Sl2=F -z5+NW{pw?uR9t3pP^qjG?7W2}`C@Ld8Z?dd#Hljs}fLx2Ors`qS`xLs-QwN3im}e!9 -zq5Ufy_l$cxW1(YZ5?LQ7+If=Iv_iJQV&-J5Z2YsR=wz)*T6sq?P1cr=oazWgw63Ry -z@;1XBp%jPq1*1SLBReYRna-#V#L>x_S5;11@tSHlmx(*3o`}CAdjN2_y^GbC6EL)C -zr*cykH2Hh`#KLP-ASB&~&N3!k{(9#Ko2kt>oRbO`dOEn~MQ0q(sU2cQcY+GZGW_}} -z_6t|rKD{o+sqJYC(`r2Y!ws?X%)Ns)26U5Ad@C%kmb)yaB*ig+i&J{dq8e;5M7FF* -zILTQbVSrI~zZ-_0%)j!6jyf7sezvcXmPZ}?fe0KQ)eWI8W9BLed4u?)QmG(icJGow -zfY6uv)g$;5*m;L1ok9Hg`IJ*8qON};jK~e;bu)I$a;j#V+`fzvWLBaR1pl*WN=jfC -zN`q&488CtXK7uzuTRd9qfWpiwTNZX&x7oZ&z -z%Zmnq$rFHum-;S3=&_H`cz;u~24u$o`4~UGw)C=6e}NQdeGlNunqb8>#IP0jaX% -z;u0+wLsplzbJnOsl|b(ph~f>+>p&P@uk^-Vh=zHWKq>VuXZHYSIg-pj4^7nZ$==IxA-DYSUI>1A&6|y?-REXw7SyL@pE)scT!ogm=pwZ -z*%8A~Dy4{0HuPm90ZYDFij~09wbqUrYZ}q!RyM-w&zyctU1ICjOrZ}l>1?&35e?Ut -z48g)QLa_=-Fl*Z{XpD-XXU!jyG%p_Pmp -z2-%-(R7k+*9MX9r^TkvJ2K~gtx$aa+^6N(^*I4`n#eXn?qOR^^ac!_4uTqVauXA6b -zvthrH+RspR=vR5Aw!8a$GDZ-ZC%!~&aZNLHKh -zKA#HF8AQpMso|Kq)RBQpbcU=Nu;ISnpg>Z>G#x-%LNJPbb}Ecpl9bZ%%vE74j5CSe -zAHn)O{SAK627AJS7OH*S(sDh*o;d>?_|V6VtZ$m+ztZl#%BWv0U!n>~l286Fyl*0D -z{vpu;Wu_V4b~5>6QfHUO)ZI95DGoCM^UvVp7}R?I@#RZp>wtk3p#rp5zHclQP$@Hq -zI(EBaLKoZ76`E_!1u}+}VQkU4@U`=)0C-^{q?#&@6`uD!ey6F6-?{pNotFrJM({?t -zF$I~Jg)suCxee7P#1`He9NxmIqYDZK5jVP4z`-4^O#{F(jGYe{j|zb01^rEyTmZau -zPP?2Ou=dmr0hJ9}*LkYkEW+L+>>Ya(rySrOKI9QP8XgXD#K=!C>4vkuZfWB)@q}eX -zVtrP@ZcJKp%)*!fQEo7j$^EqxSowmr&l(i8XozN&4_>PCX_L{)i18YQj*%nxv>uQg -zFsG-Bwu6Wfx<0ImPn31th%on>B^8a_5sE0q^tf7Pj1ZtiK#8Uu+@1FXNF@OqZvDY* -z)tt!WqaHrR)H*HI5_=RN{Q!F=CVMPUPx{3MTuvn=H@CD@&N-vO9i$-k+B|z$v}5#ZA6y@cdY9pn-k6BScV8q)U_lSHW?(hvU8V`gpf74f=tOw -zgq|WNKOf+Ft{k!UkN2M-H(cYItAL;@A{d$+g%Wh9dWMSZyq$azKv!f+=}y|?V9vl3 -zfE)b_5lJv5F}O+cnp!2Gebw?+CPfV-a(53Poi#~hdk=0kNsrVA?B@H7w2S2Mrsx@m -zXytw;r*&66;5F1&kT>r>5mItIG2DIPiA82+Fh)kML*tz9VA0H1=Trd*=!uZ)Rk906 -zly|3m4%(3-Up;AVY@Ofsuq&gKMzP~_Bv$X(wOP0ZH0qi9aPHkqI&0?p-LhVqpXe -z7=VbLy1wR~;R0j^wsz&0iKn+@28*+{TKj07Gsg`p6%}m?WMUg9@>c7jIorT6;n^_j -z4dl)#8;L%SMqpyL2NbQ`5suY5mGl|>rGQH@FJH?Qzf683)2LuQPA!6Q1AW{K6;l -zry|wQ)kVX>C9ewej2VcN{Utq3`g0vR#~+YefU#*ynVYCA6Y3CS)r#;-pl4!TJJQ$) -zcOi0~tt1JOh-f0)Vk)-6{OKQGL9rLt>x_yfAM$RcrGt4OIS7D0X^|y}FbW~N!eNQ2 -zwAr-yF2SjNv&D370vvK`#CGkBu=8!;W?pG(r2h%cx*AbvyD=jFW2NP(tOLk7G+Y;? -zpFA2FZKv`oWVix3BCGW{0<(63(32wIkP@O7xeefZv<=g|@#3csA$DSx*{D#BgtBzN -zNo`G8y#{nenj?#*75?V5YOX|BqvLdclSCK%#MTwcV*38&UE+9oPE|VZ(zw@sh}O{p -z?m9rZ>OQmM67K>M0P@ZVi;*@jW_Q;%AN1Pfks?s08rjUjvrAZn2MAkYL7yf3Kt8Hw -zrng>~kq`?wMG>Z%=0iMtcdh08{$T!D8zuTpW-W1U5u(?xb)+L8Exo+4B%;md5#pT@ -z=AzI1!vEp_^&cbys^Ovwb7o|emlu8`Xe_L}%M1!UsW`rH^m9!_5SMDB$q%Fbz2H9c -zTzZ_JWuKeof{-kL{jxYN&FZYs`T`9$FnI|w{Hv&u3l}Sa(u=3!0wP*)gB1F#j`M+> -zUWM6c)le63AS~1Nd`fogB3|f6*DP+A!|cvn-oJfe0uuhwaM06?RTy`ze7fA+azAd+ -zoc(&KnZcabzjOe%ZevzJ~jJ>{a2PE_y-1J2BCVZQh3&2QFJ0ndL{f3JaAxD~-ZuD@GwEhAm -zFF)ms{%};{O3F~}TI`j7a~D@3zTkC`u)ZU@_X1wN0nG+DIIDBO1%b0t0$*5FsBwNl -zyG3r__*Ry(wn49=TjwM|A;XuLnTSu#*Uhi>K -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 -zZioJ^cfaj}j#7W7 -ztMRt@(eA#~?(e_!=FHk0FTMo*Ku%P;#^a`I<}vH~I2s+9BZ_Ch(>`e1>rU>;X&JhR -z#=5`)A>kE2XDXE=-Ygz}>G!)gk==7A9XG#!{rk)5z^||8ufI%c45S`@{rZ+&e?U9% -zh1Mf@DDu5HbPtFx`ysyll?H>q|7{ICUmLy?5mw4 -zYUjWG@BZ74OXdF0uKNG|zyF&i1X3pdm#dcli;w;{|KI;G9E1Dl%3t5U=|z6Sgy+v` -zL`_s<+3*9se^V{NxhZ6YY!1_bU*`jV|NQdi(pR!&Pk*+TvhTM>Ku+m^x~(WV`(;n~ -z5v>j|q5&1`C;d93SZ}P%4MN4j8qf^Izzmt!qM0$W*Mp$%e{QF8%3P7nDr -zec=SjOlFeC8bp?Se~(}2?Cdc>itWcVC=95>>eO!t{;`RWb%nev;Uh%R54`M3OE#)v -z?B48xs6v&sp((_uMt-TtVy{Gu1b0@qSLY$x7j|d@tDTB>4P0v^aCV?eVm{A;gI#TSH*ApW91#T;a;_! -zUA5|+eXLcS?X{Y)d!s68Z!~VQcLm8kO#ycn9sVeO>j!#oz1WAU`u$evA8)l@{w8e* -z>BHk`_Z|j4YgA3XkA);H_E6|K;il)11s%YMQz)Gh9oZ~xShf10Ih!f_q(}IbncXHQ9e(P^#d2MsA(&$IO=9jGmns02%a&O$zOW$xt9MWTymh%L+ -zjzeQZ%RY0h3wM_o6%S#=MKA7IBhGv4(U-f_YVwP=Tu(beKtpSYB9)yM*z87$EN@FACh0mXp{^PrQ5jzD -zte{;IUmK`HQfv#P*ED|*oxQ~~GzV;1qY5o$7zZJ{%=h@X8e@hCkNyFPI|ukV2#D$i -z7*he=g$pd@`ADW`-|8;^Hi!J%c>1QVpa1ssjTA)nL|@(RhR5OBTYTUR;mDyNvj^YN -zrjzEDKJgZkM)ceyE4De}(aaGTC3-P)5(1+;MG!KGHO3`tFv@!r*p}RbHl*ImdEtR{ -zBa0;xY4MLSJnV|M-odSMJuPElmrQb3JJ8J9zYeg)Bkg07YbmK*0I?rtEqVlg8H7{~ -zEh-Xh%uNuB!Dy8|F -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 -zfet)IkMR8 -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 -zRz`k4VK2)%W_l4*7Gkzs#A_ -z^-dNh85A!+v8rEV+o5CsKFk!|A>9xMajl2!=NC6zPxbOmETKYtgE_8W9%84RY~+ap -zS{2Pn#*NbaYj82PC1|Sa)Ne5aM%vn0V?&-q6pgrX*(Gt$=b((8t9*NH4SxBJtVznB -zrO6UAnFX)sKBUodaBD8nF_qgeB)#V5DFU0(4E2=#8tT~=%grC(@*(5T1xsw*$o>%e -zE74Qij0AdAyWt~zPY;gdu6r3#NnGj(y!?%0FnJ1RLS-s69$I~kF+>Wj`Bi1P!}?3n -z2N!oL_k5i -z>}lwy&(0aaNOlui>aXjHRz(~u8Aw|shc=ny-=BqrAJ7OmlNUl|x~Z1s(Xz|zNUI)8 -zK2VXih9n*HN7O^M_`a%0jZZ9WA#oo?;co|y+T9T~LEl7{GJ=%Qc}R>v>PEC(&Mhu` -z4jb!rVA4p`2-uEXkGPGm%LHj=Ap#*$RRzoKG64^u}@7)V11n+I!~2}2*Z%($$` -zq06~f_`2`|TtQObeh6w{i0Bc~TRX`2L0fK76drt&#vl^Ks<;Yr0+9K!CtX$ViL*-d -zKvw{=%nz^6+b>2qNgn~xTovMtR8Za1c9Q!ES@9ZA?FB_UEI2Qx+N!0E%^Zq{zCC+m -zb;4s~n{?w~5P69T=#mFM8!cPYaNR!0^W&bY^OKOqhE4I8w-);s- -zEN_@QUhiZ;!I<}Mu}Xik36?fO(w1^|aKWt0DlfSw5OGTt`aU{`JaPuSa#cd_3d)RI -zm$=f$_FB@24Bm3*6=1kqi{*Weh0owK60glF9?Xg3KJ=+q91>zAawd{a#(zsP)3k&T -zcJEm)q5!3U+gC_0x;Gxa08c=$ziD(i0ul?tsmbg50=ogS -za6!vNA&TN37A!`tp;}s?4OQz+Fz;<-E1IZ|cN1-&%3sP24FzW|01)VO#`lvBqLfJL -z%@l$bkA6OP3btDnQAHoe%+9*xCJNW$RN^_89^_J3{Wg -zj{)@K{lkjT<@|ZXwokbUQly^AmGZoHCvoJN5(ImyqEzhl3=%;kdkr{MD)4#Fq4wMOLE2oLf*pIh0Ty8x-18r&G -z6d*t7$;Jc7Ifx-9KbuFU%mjv{dmJEAgNuJiAHyX|1@=?Oy)Wr8b}-W@v(?W1GEOX- -z(&G+IEA(mn8=3nb4sjRSf`+}lMOxGBGpc*^>$TRzhev{dMK7AcW;Mp_BcN5I>;jS? -z_pUIc7P#SH&C^^luZ@UnQZh20m={{TFR3t54ifg(Lz?kCV~>`uuRf)X(fd*+)I}rt -z?ts2{gANjP!&NPKsKKaps*W{|dW0m15EM&&OjsPx83MM!s@@_=C@QXouq~OeT6XRy -z4K_x{adxiGw)fcv?RNY2q$xqNPEm)5Rc~W+hjt^~3_{-1S@mP+D-Jm8-YEm5qncRZF&ni^8{3z^ -zggw@KDjjXCa1=3bH^*0i@#Z6;r`CreHf{BuO0BA*j$WYCKFYJNNrEbn816?fz62p^ -zP0e>X)Isvx!tw56DecT6nTGPW_9*B+=>LEcet$&Z$rVLoQ&y=EcP4KDy1P4NL6|`U -zr5c}dBeZJK3Ek!0OS$Z@8(hqnxMO~~oMx3v7hOi0s2M9LjwKENX^C!Rq;l62bW!%r -zOSBn>dAL6z?2z4BPfyPX0sb*-88YAWkIxK(hd<}YOM#oWD1afCJm1KS%HmLYhBlyO -zrTH!OGX<8w8Hc{l-v?*_Y$oPCU0?D)1uSFSQ7IJUSXVVW?D2C-1;?QvP8TPw(#+tB -z{fwF^Z_6jt9leTVZjg8rIL{|=EGF-aUQot`T;hS|*pX2n#i{Wi0}rz0q9qCp$I1Y* -zw6Y+?`k~{(iE~c3XKt73({m}P7S01IhCjWr{{2`|FeuV_;;u|B#0f#M1-jw524FT~lM(L1M%12I2mu!vEkue~apJA_ -zb+QX%J2hwBpEF=V%{VZ -z!3!IuLR)}5gJ6|z4F8S!j+$!h1HCE{hpx(yndb$Q0#4TuG -zkUbV1<6^tBIEV@0SJrgKOYUb#1E=13s5pKNQS}OpWY`hojQ@bM#G3=j9EnEt(CN|1 -zhGEcG6sfI$&{JNq5?xAMcWk3n=S|!7xBfLLPVO7a -z-!rruvJ9x$J#ABvqWD>5z0#)GpT=!vY5xiYOj{&jl3wSP{E~*PWO~m`F~aeN`IL#f -z-dBGB05YKWyw>|}Ah)s7N<+iH*dKu-;!J#-k_>Y2XhO;m^dzUk{uvkwg4L0e_^gFr -zmIeL!&Y{N>R+nQrji^W_$ceB-=5fGcdxh^ww*Cdq<1=^J?;=++MTX0t{bFXn<>DFb -ziEIav$x49Gbjs`INPn4VDE-SXK0o)kXOFo13~L!4=`TWwefnd*6L4hm9(|h6r5q$( -z!N7JtZ(VW$!pAT!x`R1_z~VXQo~NO+xf`a>(+-rz9==|jr(&F#^j -z*B_ZrErLb}2?J^S2`~hM?+>;GIt-J=FWmZI9n$14{+uyz$%lFMI3Vah9eo9J -z@*j|S$YVgD|0auViM;J{Py}$c*2y1aOD9iYt~3zED;AlHL2A4>q~bC#3|DF -zbAJm|!<>sqVljn=EP(X$XNx=1hSLZ@z3~By^Et$svlBI*cLsOUf_m8tT)qOl(9)i! -zom(}ls^CR+dVv-7|JYWajV>-JVlv_EQdm`hM1QKIkVf4GLOmT!I_rEGx+=>R(E^CFo;G8BeOw(xkvor9~4M8!0{ -ztXHnC7cA=Q9~dn5A}SDI@p<402PAv-hx$Wy6<>{jolLIUSMC#z9^$*CQ7K;$ZscE* -zdVYOAjAzq_*81E`anzfj8X>{@%(+8c?rHe0gfw7SdUbN13-uyny)RxJNeE4%8^@MX)ur;dCt3H -zpka}E{A_xH6B-gw#1|YWbT>XSrfQn83H0NkCTSL6F>9+cWbAM*%0aqWqnh{b?zk!$ -zRcA(@0Yx)%K9MfcsnJXiTJ&3L*Rd@wvBlj%J*jyYB)PsRbm1OWCF0edx*aHV$b5ZD -z$Xs?_y{&~p>&C!|?_z`LnNf}XYP39_qrB~;^crpZ^=)E+A%eN|e0`_vu!tWo$j;kk -z5vL|=aj@PUh?_5OowsWLv`-6Ar5`cAxVZcMV4^CA{ve5<zk2z5Xli1M|%DI4-kw?s{y4^0#;YPN# -z-k4k?Mk)E~%*JGy-nH|?6nbGSu)QdY8=UJ4r{YO+r;2$pJI5!o5kr_fgAT)Z!+&v? -zD^y((*$^V{^i}hO2=CHf)r_9Jh<5{6>^mWk;}!`ey>Dj^xq8O+hFK^FfaOHH?3=Y~ -zS;#Q0X3bYjThX8skbm5}ZHXNc7XK5}Gn)UHT~`&xEihr=@Rw#o{zaY)6k4!Q=ERq^ -z90Q(A#<6p>hil8H^r0X9L&NVtZG;NEF*)n@CXJk&XE&@ -zKW<=coX0m;8vU11x*UanDpd*XC7y^1znYF&Q<$M&(DO?8oSxe(R(3_G&NstMxCoQ_{dTgCJu~ai`2uc_kGoY$u*~SoLATyGEvbLtSQxFH< -z8hzC~I5x+W1jC@`n^3 -zX!X#`-e#!*_}1tqtC>3>Wh;+4#@N>an;NYgg{7#2HIbZM=WeoLEN>j7)i;;h?3|@q -z;&Z0K#%tf13o;Rd4hMV-lB(bg@5ad*Fw)y~QdlR36)Y2UAjn4yql}L`9Lo^?G;EbNDc_c|_gse` -zQIYb8@~&uA^hP27!XBqW+X{g-)F?sb+GJfw3U+45<>2CEGCcB34puM|!nn~QiFO*j -z1t#qijTHYp)e;y+stkJ(OlG3@SGKueBm&Es53GRVO_q`Q&+0UeG9b%fNk6qdq0J@M -zZ8S|AXulCMl5BIYoRS==v{7)pRhaZ!ExSkFUmK6bHS+1$M>s-#3yVPu&?RkT!cN}q -zRw2qEbP7)XIG~L|S%+oH{ -zAZHX+f4bz@x#~OcHtKKOk*sh)JV@-t0d4)(vma(222WC&M=(9-V=Y+xB|n7CJ#fe= -zQmrkHEEAWzA9O=R|I0L!WqazQTK4>N?jaXl2J}zW#ycW78h~-F(-*dcXQK7E?AeZu -zePy^2M6Z0YpFxb}HUWIFNC7tr6SW=?I|G5(*ynF~t*2l?l5&Q_v8}G1*xD7X3hXgU -zQ?*4&`gHjMV_WED)M(A3!-u{LTm%wNl1#MSS0n2nLLp2O^TnoqB+I?bZUO2o7E^J9 -zYqc5e*acjXgFQPppQpWggd}>dwsRb;>>)EhsN$TUG>(UzN5^MOZg -z>LR8f{(L^7dxBr?^AE1`_J^zB>CQ){{^bCq!1)MTxd8*yqbX7B4)^HizhzYgU)SSC -zQs(JtT1Rj|!DiRj=Ym&OKO;&NSwQE9Mew+tx6 -z9<4J5|9N`Mezy<^eX}M6_MJV{Wa2T9qVKh9D<3-l9?~>U4*&i2ij&(H1GCfDKU^`p -z=ky45T^OL1|EgxlYA2k(^Bq@9UhvmXR}co+HqyjT`7fpi<9yG*csVqEx`bRddoefO -z*hh@^c!Rz_0gXf&w!W*bszkK?)6CPx0()}Y!QH^o3>K=5W>eHrPrIQqcbMb6ky=#z -z&xOl3&wY}mBc%C(C{NYaLFTj4Q`P7s2Hu-{8rELV>iZ+eu*C^A3wHRI=aRiyX}0hHNO+5O5|IWJ`Rug -zYcu}hPvXZWJ(=*S>gPUv46mbs21)kyV~RIfUxqEc=(?YN?$Xca^s;Sw@~O|??wLk) -z>C!l6BajBVO5+F-8Gn}!mu>u5crwD=&ALK}`^YPnwC%QX7*8FE{afDOjQch%BpyAx -zwSrtPFOK}I&FRjzBIt*FkX0|(F0xCI5 -z`~xC~QvV&Jj@7WZO-*ts5T6w*IBf;liJz`9&4^I@Psb6wVvSLBh4$6s?1|Y!p<>+h -zy=yw87E|gB))4tID9ci|R_KNn!5(&~bK^5Lov2{X#MXW&Rov%CQt^Fd#!k0B`%Zh> -zarqLU3D!}WULi9-FV>{xhO~-4+|F$;5M9$|?G5>fem>B+5(ZAP|3BRGd6Y(~ih{@G -zZsrT3&y%wd@${|k3M1J@gl>y~Ts2h-P%IQ%lZv&hp8;rH2QuZ -zt?rl27?9`X-mm6)E>r*H-Hpb=<&**^ -zB%n!}OAtY#{L6Gm4F$41ElBlbx%UF+x$H2fkfXjvp6qUia2HPg)hN01gVNfGXBs@N -ze=5lb28^D{y7>j?9;PMH!4Dc#kH2V!s9uXrddqMp#BqtSgkdg~o;^kS -z!6FZbY)U=x$inO3Alxi^SGi$?!6VI+SnbltVQstA5q0Z3>CMA+d=bTtaPov=(o7EQ -zpwUAuO^;c$QapCru`1NO$PTfs!bQcGz3weH7KOonvo?6vM5_)=?YDZ4YE9P4nV%nU7E4)t9DT3PLJ(Fw>#`q{{S_IoMkHzqnaGaVQaWiFv|QI1~OX{dX8Id -z)2(YA`R8fkN9u=4e#;iKk-=n8-K#k{TqLh!Tj?dWr+TbC&7sS -z8`s2m{`pTf!him&s}QVvAIdXSpmw5XEARTs^iHF+(6CpeCUZ30?w}z*9 -zpCc&@ATpF5gv7Yj*Up>vYpSwqa}MIui#k4)AAu(fQQ!1iaz>RaJqwx3So+w5 -zt}Bl#P^W6XY>&=mot>5v-LzLw%o<`0@9Qcl@Kxok6;+XFMC34cDpv`IR*2H`h|e#( -z@$MEA!aGzu&{T8mYo}c`^3U&I-t~dWKU6~S&NH2b4vjR}^AFNca$7{y{4+HevCqZ4 -z(c{=Rz)RIx-#Pgsj3SPmZU|T@G%7mKBe}x_>oNrPXq`2h=sPt9ATu~vfAfBdL8I0< -zjkv1PSlk=G-u$E~TR+dVxUh?&i}U`aChb>q(PK*S&DLxNXsjZVX1zU*C)%sK*gJ?V -zf|vtG_s}_CA@Gc|nxyrP9FAsi=sDEbcx?0Wof%g6Mdmx1Z}c=E4U!}D0c(OEnp2+>NIpOKX2jCSX`eW>1S&&M1 -z)>`W0CW9i6I3i^bgn3?8B`;=ov4Z-TzlNPmM)}5M!nU;JoQi``(q00&54t+Kj>^L3 -zD`w9rEQx4OmR=|lcU`M4!X0RPJFZ;ZV~?_t_5L1wJepb086f -zjQNeM5XSBxr2JKP;1HHBb-Q5IO*drYT3!p?C|5JP*8AX|#=Zj#=Am*F;%>1b&2m|! -zF-sg~Zdn2@%ux6D0-h_dF0D0ocw&Y@Jjc=fL-d=t4>Ax6kRFvu59h4t83CTUOFh6m*>Z64)+vT -zCeaK4FG=Bvwmc$wR>eR2CrTS+;GU%D&~02_$CVI)drV@YRB{M|eB;RSm0qH*zssV& -zdj@u9ik^*9Br9kSTO@0urOcJ(T$As|aD~;ZXfEJrT~BIHRm~2tG%(b0_9yqz6?$@q -zTIG;6o5Q)GR?CMxPps^Yc~p@2(MbNp3@gj^B(g~#gFnfy2C|5yF)XU1K$;v)0Tzr^ -z$8u0%@k2K$7Z4*Ap%%Gwj6N23W|{rnrnev5&UnHBz<(cae(-4v5u; -zgyzFwLcqn49MX43^FKG4;6Pq-Y^?YbLF3i11;|9hJv_a?1T7X17Kv48NUXzq*7{Si -zL=IMo%EE2k3J_vU-{dK_HK3m(8qJbFXORV4_g_nkx5#LMZpoSsOjtPD3{1y*d>UAw -z-)M`H^1ntFFInhaRRSMvjdl9*hTr0H_s+$>@@h#j!-z4^aNkK3%UWAV&XxChJS205 -z)pcYWPO%($52Y}zx=CD7ZBOsj_{7**(Hx@9E8sZ=x*?9&6JGen}Y0EY`=k#Fcv#4u;X0e`WZcQ)xIQTVSVA25WP-C4_ZvK&SP`no= -zbGTA}7k(7>kON -z2~cbm)^u~peY~;1a`9K5%{5gya%)X4NRaFv@8z{ -z?O7TeRmPCHL9?idv!<{72#Vdhoh-mga8~(m|x;!h~lAz7=1_1M?h&@+WP)W#2pa0=vqk%l&qOTt&47Y -zs@h(9wDMK7u`greYJuYvq?Aea%B9Mws#W!k?9~<6Fe{2@qei|RhS5Oe72yQ3p1O=B -zip+;v0}9{woL~_w6zH<Ss0dTrqa8n9Ct&;$*RT@kUT@zYq%Gg>X=Ea-+7u47?JG9N4hu^C^sg~ -z3wBfSGCm0I|F*;xoj5CwIRp!c!XR_n3z#e$GCiy7 -zhc|CZgdHMMW_5lbuOLEhJXu#QO)&bf-E9{aV6G5g)cfCj?CF|}VV)_7fsZWosmX73 -zW!`Fhy~7CAY#EgI65UQj3^y7qWS2-p(9T=XA{*>*ia07jFElB)7U_4m>uw`CV5T)@ -z0yEF2&+hq*ksof3S{SUJ?4zDh&Kfs?s~nl1@KDOG6eJ&l#-(!?Au}B#)(}QAcNCF~ -zHH=}D27=m)jRW!BsLpRU2)q*V6=iz}C0D0~(Zx=r*f6L_)@4h_Na;M{NP%q#0r}M2 -zJL?<{{}E%*az7I}RPCwzGkF#bcf`x7(xB+|{Up2bk}$}c;IaidyGWG<(yj_LC93Xe -zi%Gvh&TD`H#)~JY3%)Cvu=x)C3(}z0*D-GK6;06852F=2aJP(AX<6xfxwuF6n<|29WIS2W8>j&xa-5UvzZI4BS$bAyC)Jc -zXnImzC-hsiU@G-V+FFK9L-nlgL*EVDUqI1 -zlw(a!*I7EfI5Bm3yvfI5OfXNr@Z4C!j`z%L>0*u7mKoI!ryXc+&vuda@5SSyqV|lc -zo$eFYdn+uc3e#k1T+ZQYi&lei6{J=mpbm1;L}u);aP|FCcXl0C_6%VCwkTyENr?xG -zve3nkoaYM~Ep~AZ6Kxzugv3R8PrWob?AhmWThbjYUvxKvIe-iLRRJ;uS{EhM09#@< -zUy6%R(Ua!1Ovp$o^JX&AxOh16g?FzFzSsMO`?#4(7EzeRq-A!qUgTBa=CX7N>$7R(H!Sn8t$=n6kIU5MDODsk(kI#@4LX4K)1laEY~#Vd>5MO$atP3AvAr;_@( -zyL+)2R+S~S^edFn3CqSl!jk%oBYi1QVVPmtb>%E25vURdlQfBgMZg2G7^rNE4OIxn -z39tL^>zDVR=%9%rL$yWdxan+d+dCVpB$v(Je8uq_kiqK^^b#zm&(jtIUgH~Q#kZzS -zDQQk1pLWX5_ALUWk%knixf?C%S))Qy5e)ENmp}b%M%4hyykmF^6;&g%&zQcXNfVk| -zlGDuyPeM*amuj6$bR!12P1+Ca@hu`SWVRx*S&c<~$aw*BAJG#r#=`LJFOl2}Eod|& -z^!6NN$Vph0#|{vSC-5r;X4ggR;aze*IWCp;Z{+;qc7w5e*TTJOX1sOPrRhTH-e%9G -zUOoLo4)^-u83qK$TH@ -z{I|Pi>5Te7_^;A-8E=IXA{CeSxPU<;rZgf#jmfj0s6vQ^Y^Z2-bjJe -zNc>33Z%|}sA55FX0~J{TEH%?pI;YNPuoq3IYbk4lJYShBOT)5@|*6uwPE~fe-j2NUR!EH1?!T0GX(99gyhCd -z04l;bUt8T}2gBka{pFUt&S*F$H$p@9(WIHlPg-s&kVqNQ)gGsmJx3h1ns%~ebtpbE8L -zN;{>)mgGpHLQ1yJk8iGL9UfobqiWx#d|YU9#M#|vRgt$<9lUA@4XZP`4ZO8Sdi!yA -zr@PTj5E=&#+Da%6q<(4QW43lQ#}xz14q&0HVmHyZm*%e(HT-5%dG-zqqL?Zq(6>&>qFNUFA0#`>0HeE;^TQ(;aBXAn`Y}=?KcC1 -ztg|3eQb4rdio&?NX^6gm(^K!=+;n5-(o@j@lUOv=Q5UucLbBO%YkPxe(7PF=@S-nde3#{wk!VhUWK*59bXPNDv?iz -zVK;wA-GC0o4*XLqTST7kiGqSm%2cbq=0{QMhqjNa0_+WXDSos>Yw!CIOJ;`ynFM-c -ziNPLBpNU)pH -znI6a{lEfU;L%0Ze7j-X<)zRaGiBWu0t?4h4;pC+lJt`?SSK?$WV=d}@(9+0YVQ8>7 -zO?hjc37Pe~6`a+c8^V~~<{sdMit(!@xCtR@^Q2KvVkipKj#sEimmza&M1Ztgfr(bT -zm|ih(SjsY^Gs{T}s_#rdeCw>%4`H$@I`1U?IooP-MaH#NLc1M-NJ@Q_K -z1}>$Y?bI20A44k0!c;4tWoH%y=PK$@6i080tYwOUyX88-K?~nPEg!EW_Jx5GYguO5GC@9&hvDk%Uq@^TqT*;U=EX5ibgkquxOvNhfs%V|wj)MXo;$4&u -zwJ`(vAO=8d^SN=>E#G%LW-q}Zlcj)=Je9O3^ -zxDJhsJU4K=hD7$szcn5VWml4e$}KWJ6BEn$q%B8#tO=hVfLkPI4bk}^rXRp+DRD4b -z3x3EJ4VBZw0op+R8Taoz@mn%UGHuYvrTp}^rA5TBg8_!%c?iS&0kXPz$eJ)$U -zk}mG+aj)5LNY&4tdHBdQNkoyj2*#+^s3eT()lV%LyMEv>jEyx&#O}ynH&PIu@SFLr!WUW;owBE8a^#3JWWoK3npowKQ)gq--3ir -zXXrNk127;oBODORr%pEa%Yy4et7Z=JfL4~Aw`!L`gNDu@sQ*YPN1Y@Z7c$n; -zkNhzsB2#SH7;g*8xp-1O?pZw^9Wf-(~hL|NaqLAcDp-xis^B=L_d`nes-|Qtq_qU@_C|@7x|I -ze@`QVV~KE<+HwemB1!P??ZMQ1pLV-Z$jUSuRp95PMoz6Ow^*xyT(!dh* -zjC3#B#p7xAVd**HyFwh$tHZ_{%rUL{c`hmhdYh051_adddh7}>mueb%4+mG4dz|UP -z0d;hoMsWaZN7;=5WXx)$jR!j5l-%8=fbhG2ALz-IaktAuQ+#_@)~pC!eC -z4ghB{P{OV3U@GJbh}`8RJ~ac%&_eNRd3+{@AfH~n -z+4?&Ex%CqS{OhoR&}hkDV?YJHe|-;n0&=!m=FfXsuk<>!X8t53v2D|iM1q}c|H2)) -zk|B3#cBd7?N${^n*x)$rV(4Zp@kxwxhqv733;i|}MhH^CRP4|CoJ^|)oHRo9OY6wZ -z18}6Tx)=`1rv;{in_}Jch-0JOlGAD{!OyqNpQU{3j576Q1Y54r7O~6gU9CNG!wPOR -zaej=po9M)3r{+A>@|=#jEKb{r+p+Onzg} -z9O#*pj}J`=L*mBrY=V-xND|2cslZ6iF|8;KNPR_1dNF7Qhy~Vw%6?N00E}~k%E=0G -zM}GiVXbjrxHJiZm4{2hsK*J58ZFp$VS&sJ1mLQc{^Dv -z`bQGgwbbo$X@FW5-Sg?R@w09~|HkA^pd&>2K^Z$tF?nDFxq~2G$kGzD$1|@_XAw)7 -zED1kjF)u^`ec4A$9Idi~{Zje!jnu=+@lUQ;6kQ1xPV+omn3f#of?o`Sb$dfUsj~tD35w(R^0f?Mi8A#2GI;hM-;OQ`;W; -zAegs!28etBinP9n!2 -zcl_J9x@H>MJ6c3Gb?9#%KjK49uCq1h=e5YiA%aoG$6!{u9X-9|Kk3VVHUhgdUc3kJ -zq2P|aJS%QkmvqgAW_#7k&s8C}(FgHs?}vNW@LV1@{0JZWkB#i@mM&R=FrhCTDaj9a -z+wShI?k-g^%V`BL0;%^?dJ=k$F<6B196BAkhvzOFsI#(lfG8t!r9wP?f|4yN*vbv$ -zGH9S1LWD<>D9SU&VA91(>(G(Gl8FrR#X1+wgDivtX+%t>iSb~Yjh2)(FbunweIsVL7WKD-nijV-UBPq02_$<8JNa)IE+K`7Ghu7 -z;qq~P*P?6gC7=D}(*8*crj3R(FKyAK&5MitG%uFGXHP;t0W#BQnnGbr7S#3%Wz3B?M2$@+ySk&L3k -zO}vo#qoz=>{yoZDxaoYZ!M{hkHfVbiA;FSY5fIk1$VH0s!)xjactjN8L`*4Gkw+;_ -zp9AJTfTWIjnSt(5D?%2f+P-&32AC|mb+zj9I6*K}?DNNTnmCk?0}zk2A%JMIyn(|< -ztji!th1-T~Zv47@<@E`5JO~kkZlgOrd0CRRDZ^d+2h-PCCF;$)mN%}lb&vs2ar@L* -z4A;2MW%d&%9Xhv2>C)QW#a?61oz@328S2^p-T)c6roPiH^DCOz_;7azf{FyQLBua- -zYT_N_*mYFXW^L|n({%aFa=A*hmYjm(t<3N&2+ZBeDltN -zrFv&58Q?CV3aAIZ8xsy`yxwy-gQ*b>aSamvDxyn0OpDS=rVOriWym@|Cv?tLBq4Jh -zBd0a8&!hXs#)fuDVIj1ZndV~a-d=tc%`59I?~D%%gPc47K?{=EDD9_&4v04tjS!Ze -z8E&xr;p5*(SZjY)ZzGc7lUI^@SbW^xSE|``jJZg)=#6-hEOFH~SUf4H(fQHg0!_C- -zBl5)tj=fd2`M&5je7vJ= -z2HEtdN`go;Id4VbQ%pyimy3KXZ5T`7rk1=kWa9$mDfGvNnnuG`tXY?X?3Wtq*8NQa -zsR@5LOBN2up}Ud;R2kK4yv}0Pl+(Ote>tZm1&D`joydN(>&kNFi@WhE18@qHPB|Z= -zO(48689%TXe$d!dAM^P;f4lpw>{9_7=pRffjOY5sNtap+c+bo&S>#73b)FYVV(LCX -zP4+b*5D_@l4y6K3C%4Ec5qi8h{TcV^qnTu3Rgsg2$sqE2p&QI-x89J+qIys|JOS -z$2_e%X+3FM%bQ~VG6~LTy#sC}?bi)DFSSi4o2Qm$xaoHM-LUFhK`kyTZT+R3nHu)yayGf);YxS3!rlCVNc-T)Gw>GjGnScGAry%X&s)-lvcOT)NKUHS -zEF>m!^SW~bnn@tSWKs~1Ota4D_igO5Mal&dy}`wb7F5OtUj(4FY*}E->YzcdoRQSC -z{VJ|P+In2ex*8uYD2T_RGxo{bm29ETIz-UJ4UtX|EqI2`%zI{(AS>WxU_)(9EdnU= -zN{FsmSt2r@p4;bkGG6=cBb)!Cg^p5s71!0&c4U_a8X6$*O53IMT-Kj@=j!s*uAPSF -z#=vpIq*et7@NmPAaP!OeEowwg3?Pb1L)|^COrg% -zv52_!+H+eDaFeUU1^-bU8!md!$x~N`PTB4w)d@PG<_eDZE6SIm71pii7zg@ZT3CyG -z-UGg|RXa@`!T?-85%%#^v9GW88{o6N!9n3sGu3703f<27$#6-KO2AkxXMkb|A{eM@ -zzHsmE*R4z|5g6Bq<_Ez0Y2A6*8d(|}kH>l~g{M-6>>xFSH5EqV$0 -zu&11jql=}O)xtH%T+hRRwAv3wUrL@gkX@-B0wh#@R$5v_uJn=i2$yw55% -zGgE}zYe4FxrErtx;%g*0NQH4AN0O^;59HR3wB@mK*`zWD)EE)oGzMoY+ocEln|T@? -z8ciRrZ#oB+HmyNlrbc>zw!i_uI2D2*0NER~P`O7)Jggai5TmYmAET5=xBs{%J-6Pk -zr#B{N9g56iF?$Qd{{l+lhV%eCDO>S0aZDnojl_P8do+__`PRCJQg9-iaE*0M9DZ0H -z*MwJ|mhW~lXBvu4^AX&rUO=QRUL^;O%>%ccR*4zG@qaA{Ki=Sl8S&T?32cv4NP;g3`?~ -zDjfmfx^U$sh$9z-rJHervsEkXX-d(vmwt*-jS)Rjq8mH6$B-%Ij=30M70ddvJ{sON -zHh83O>%acefkbVHrN~U}biWZOQpb*L3Z!wc1)Nor8IhYK?Gz#vne=FYEoQn%Wc{+u -zwL#Wka5uB1vl<||F4ij-ubX4tt_9!cK~8cr}T$Wq!K-a-+gpFkJD1RI!R -zxiT4Hd-Vsszf(sO-N8Ef5f@?SqqKA~QBLJjLZw|b`@iE1<2IqkFV-I`xCmMBPk>{>+nn{prm1q=mf?$K&eN2_T491vB%d*F7OBn7Q>tJ$0eh4i+e5jk1>^uVqmP({OM{pq!1f -zm!``aR2{SSO)90yA6eCq2}9FcP;=<2tH~IS@iW~MJvMXKO0xWJP6U_-K`k^@&LrFo -zi_ad4=9VNn&BE+Hux05oL-*+3I6BK*o7F6fLGpUI%Al_Yg8bG4OpHJGHAE4+q%=|R -zA7&f#8?)S^>bcMu59b)I^nP4^a(zCdYI;D#!IhL+sFXlXkjM|?Jy^OBRavdR;~z$z -zH?Fm$I_N2_9Sm<1O~}xMlXM${p&DfHPo%m$fP1tq!!1oo5B!4!bm{GZ?Wsc~za5XA468`eTr;u&YHJt5`H%Hi7+VI7^+W(F&BB9r+Lw2c#qnlh+#rL2+ -z_ruJe4#DvxV@$;$_0CNpi+N-E6SxxSObV?iR{;gdG6x!I>BZ{czXei(Lok6tIiYtp??P!H<&d7kT4O*P(OR7+LI_5%!#ZG9jA%>4&dR$Pn@m -zAkTF?2D1T6-Xa-s5eRgHY@eD#LL{0cwTv$aQPO(f)X2k7x5*^Bkdx3b#gogV4&AIkGK0 -zi;AMyLk>*evDGn2amU5F5(utNHIwrl;h8Knb^K0WGT~tU8>!e^B(6=&V?w1QIS5A0 -zazooyd3CuH1h<6N)jftWrvoA -z>pbI&6cTpr6+YcF?0$Dw8ggBa1Kxv!xJ;hRiKGNdY0zy8Y(HOdN_sdDr>P`t1KPQ} -z@^T}aaI{u%UvI;zwFL4&UuWnx)`3EaBE1u2=C;Q7%#6alxuX^%rym^4_zcj>0y4+V -zT0@c_)o0B=xh1v+ILCsGSne?sZeBF424$*KQ*9~b(?(0nU{Mx@Hw{hZGS|S7(-lWI -zla(Mkd{`Sm25U1(Xrx%ny~%??tsTrfPH%E0i=akK+G0GyyM5|B-S~0-+d>Bt7^h2S -z{kmDLxkY4xY>g1;fBG;BhznBRc@jf~KS0gK5ppuaN=IVwTO8nxbc@D;Re;BnzQ&V6 -zNd~&(=*)wxUrv`MLt}43i(%m&Y&^BQFCdsYVDehjLzS&IVLr85Oc>NF%zas@Xvxjy -zoFw=&RH$icIe3A;-W&R^8>8z^J -zxw%v4l06HHge1@#d3SPe8SJk&@i*qj&y+fb#d7nR!ut!^{XBL5al59!`a8*Y2Iwle -z-n_Qf1(+L9+qg;#2G+=D-aZnVY4O$XKfdI;_S=syO07!vLUF`KzNsU!>Uh?#^yBO~ -z=~eDCSwm~y#sOZpuKl5q)GDK9miKtP`Syby^+@zN1BfEPHpfD$*5X`gr;$Hz^X;eZ -ztNTk2*AK2I%S;P0OH-39ZezXlU-5wELT{%zzzju;*G1@QF1_9%er##$VB;8xT^OxdT^?6Yr)A0nPz36 -z@@(wRd2)S!Z}t$#Acs1(sYf^;MEHWvC{05aykl5Mdf(HEjL3+glS@0&BLm -zl|x_f7LM-s!qJPlTOvV~1l3Wx=$bKTx%Wa1HHx9vi|HTe)O_UnH+MyXfY@8aIfm$K+SpncRI{IBP8~43aZ9 -z0|u}ugxVT6#i$(jwnG^)O@~WlZG0Wt1wM7<#ZQOqel-^bd6?Bo=Y<_U0FphT;6_fO -zv6faYDge=~C9IKkh9){x2S8ob~S+{l4F4BNK0)1_#;lbn`V`vycU@1}7ZAf^SNLa7;@L*Pm -zlsg~x@}s?v=sUGp0{Q|$R@qiSlQUj(i8)KkCXrD0 -zrhhOP3u(RtARfAkQ$d5PVoXN?yd)?iZpXk>S@d2TnP^9tWbI#izaCdAgKC>p~L71?(0K#7(_%@nF`8xlaEBL%XN -za9y@(u{r0M#Z7cZ?^L`1I*a;a+9R$qT=z^y2$-mOt*s}ONj4qr`^^v-=$wv|e(McXOlJA5^Q%d9v0fdcj}#C>=W0wX6q^M_%mUq}n5&bI(SjBnEI9MLE=VD! -zh79$Oeo+~l112y_v-HcVS(OM;#z)KNKcYD*x*a@Q7>R^;`DRl8Tv%0^0VsiTsc -zmtHCNWcz!j4nZ;)C48pzmJOXx55?BgUr_FKSCL`5i+gIA5zwI7U#NWK$enZ32K`!L -zMQP!|EE(AT7Oj|~WZ!k(5~hfjJ^+tVdRIn)z_?RDiCx!>bH>@sC<{h*McsYQd+#P+ -zEW+Au6$ux1LNb-#cigw#L5caXh*bUnJkaT=HO8F=2K-pv_zvK0LSkyq0EZMvG>JPp -zG{Yf|M~Y0}9ZK1kmMutKYJEwj^DW!bJ^;C)irRRcQ584$WKC?z -zB*ATI(19s&v3`tx1VV$837tC=AvUwz8m6N)ltb-VR -zrbS~vVm)98MJW|xN-o4HMqV5NfY}ew=3w&kb3ROLvoL!bge>=pBby5 -zE4!MUs@Um8?w)r{C%2;78p~dg(Cr}UrpUZmRE0DnH>@@6*y%Gv%tDJX8v3GSaR%%^Hh -z2Iyv{Tf!x0R+W6*Q4>B#Q*eg7!S7{s*nqrgYEl*&s} -z$R*T?a=QSq2l#eU26yYf&7sr=Wg-Z>>C@5Z0FJ$n-22B&5`B3Xwj`p#fL?|aMgYN6 -z+$mreZ@YXUT2P(_4iU|p?RvlD+ld1+tT|MnPozMmt+%;E=!$G2vLwhyYQt_LRRDb1 -zxzWO@z?4Ndopn|m9(Z1`q%@G-I1Y%>N*w*rB?O`aS5I!fmIJRJ?T_FziCG;ed)IO< -z9N-u{m}FaIkwD(F!mBi*_@3O@!9~lPtmGxn!PB+J8ro>Jen8B07ZI`2Qvw6T3o}t? -zfjt*#kU6Nuvan7kbxNpt8A5P=k6ltwUe -zA#kR&X41Id***5K=V{)6LXG%!0;vt+E7`7pDlyn@ts}{PL1%5Ix7uMrt|4xIp`~rEZDZ@ -z&|>C`vK@+taU?G^Mi*kxh6|5l9F&O&e2)!9?}ipWmSwNEbGVV7L!(IGGHK< -z>p@?lcM55qHoAukYAN=S6|r8LG(Eh{-uq!P6a=l-+9ug#BeEy~rn^glGLkyY5_Vf{ -zD+KgemH`{hG|Otm>DJ_2O=}}r54D>8Ll;R#e8Fj|-dtps{-MsRjo~C9q!Op#CZ#4& -z>*f;P5q4lmi&bipKRmI+)c3VPSJ}2hiy7L4Qp+S{p@k^oE!GK#DXVU(d|#DeKdOrn7crv{oW`irnYa=jH?Sb^f<1Q2G}v -zkto~Hf}v$=Ks%Kk$r`&aIlTJWhc&v`e4!aNo2M>Bh$s~%w;mNYvi6|h*A>?elphn@`E -z#f_xM<`9|6$d7jqE23n6Z&>xIWh-HQ5Fh6DcnMFAz`Hb1oMttAjFJ%| -zHqA~RSDvHn^GM#dkjff_3*SPo@eSY+(D;L_3xIIJQNJZp@dwh0mH&-)f=N+xhHBD-TmhuJE4Whl0=0Be9^L#uV`U;dA -zg9L4UWlZSrrpi^hf-1KRbIzkP{OA(3oqf7=x_97rRst-@E@s!4 -zZ9>U$lXJ@MoE1=s#z4kv2J5^^+a`J5?L^=!wQf@BQ)^>4A;KQLiJm{a(#BmH=3qop -zydzMB5^*V{%&Z0u%mCh?JIEL;k-HA>6USU=0bj?n3~c{T46`Gt6Dxj%mlg6&szZ6a -zFyC`nt)vmX2ai8r+QF~{Y!}^wMME%CEeQhHPV}x!P9KHE;J?mRr_PPv2kqjBI1y56 -z+&C1dDvKmC#{ptK=k@k7l%0IJXMhY#6ql+pB&Fg>;8))t-{Z0fXk+hc`>vdk -z3FD#n$o9?U!&)Bcx)Q?@Em596>U~-uC$jZ!CuxYPVnIa4-DDMH-*>HCd08Y2$r}z6 -zn^myhY3dg=kYnTNQzt8)QYgKg@$Q2bv{vegX?q?{nJ7lPFhTn^byY@-;{W~&zFx*i -zhMT-A_@CDw*{HnpW<9`V(*aUYAjS5YqtXJ=FdRAWJK64?Lc>tTcg;oYh50;^gAkqt -zIFb|TGu-k7wdNW{}8_Sw -zc(yg17R2}*N|U}CVX?2UOhan`-j;z@oEOv$m^i9)gTS~>Io(*vTMNPS3Ld@_M>JiJ -zOl$L2$EUg#JmctXoH*;dnf4Y9cAT>NX%_6?d{8=cPinf7gywD>w&BU)v#fNyLzj>Z?txmQqzRNuWB7>1 -z&Cbas6kQn(Yf%xvCPhqki!R}XA|OH?l|=W<+-~d1EaKz9GR5MnxTaJ#Vl!kz&b?&O -ziapKKi|%Ke7*$M5nbcy(@!Bzo1v7dx*NHdgm)rL!q2fa^?KrkJs&DN;W6zj{Z8t8G1M5}j5~RfBJHLjTT}ce8U<3YrAtyeRb5+6Pt8oUx!$|QzC`F` -z&_>f7gs7VTy6=qnRKG|tU|RI+2accp-&kl1TPhWA-}8wu4ED)Ff#CKX=Hj7BWLY|Y -z|2vM7JB+j?^-)+zf%RJZ^}6^GPI@tg_&TaQUuouZA3$j5_fA7A7^MFREyn&cQ0g)h -z|B+TzC*_*lxmBAox=MPuGLr#QdWazc+urp8iBAzsv|#Vh$QWRE$i2(^mj%%e^1I%@ -z)MPI*(17i7NUK3=w3Ocu)$2f{bEatQKq`r4%mvl-nHxLJCZS3cSfcAyh?P9I$x0cj -z(Y-Y@3F)`n*YA7_dKR?3y9`21CVd654%+Y{mqlMYc=`g$ -zq;F5MQl&=)ePM#XIY^NZeXmiY760gfqvs29DjlMczW91MMtndn{mRS$qD1B(dVb^6 -zmJ?v@XMjJ2kr7#Z+neuw$G_w_46RyVz`*g!{cdQ_;Am~ijEzWj|N -z6)iKSZXzG!#!n7lC^x^uoN?7SlhMkY;7U3Tw5ae1fqY$%WyOah0fRRUcX)ZYp6}pQ -zbc>B*!R_TSbWr@XBrs9I^f&)@=Fx%~3G2ju`1SkGt1v*~2tag)z3H&1yyzaZSl6&U -zX0i}Aekk+$oD3ie;BK-!fD)qB{pfTq3s)RMDT+V(F!kJVv^1DDKY~2j4q=6*TCahA -z(A~PFljn3dv<}zlxpg{PlY2b)puf>bc1(U}1n68Qzv#k8;u}5kFg|VYOZSxS#uiH? -z*PqYli>`Fn3XK9gB~^1>UCYDMV#2a1 -zuxyLtS*>kJ!DB_!SUi1ja(6#6pL`r=EZ)U#N6$qX#$ipt{#>_-9|_3%N^LNG5THKsJ?K1_d?DX(+`E-zJ@pI9U -zn@JYst@EKEU-7_S*Kn%`d|*@N7_YajY=O_DL$@$&5ZEi93GqYAnm*CRNXvJ=l+*B) -z?DA^tN>0R+?6I0h^b!Voi+*^!i(R@<{jiiVYf0`K`f-Pm++V|=Rpgylg7R05KKtHC -zeZb=j<1A`F6Q_)eW`+Yq+Z^LlB9`qXk$gf9ZL2&*D+Nf8) -z2HOTt*Sb4qky&^Uv5Cnb2!|zBQu%&#WvtD5t3m{CvL%0+*iY#xx1!*TvAnq;)3OClG24p3_(e$Wtd; -zRrX#0X*8={;%}8x7 -zsvKmHtU5jj}a?&#?*VIvs{AOiKE+zl*$nCA*-OE9aQC4FG_dC|iy^K;(MSMaq*bWx+Pqb^V%V7LEp}LV_LR;i*xm|9+VUfX1A8Rn-!>*;zD41>(8j=`QqcH3m9fUQ}a3RO`iKg06Uw(0Q7no_zSf~TY -zLUl2dStb04T9(K(tBD`6L+`8D4uTsX%tuz;`{7AGljkyIq7KZ#XFn4dW3n7Zyf!)9 -zXjkx7KEXQ5*)?dhk};EVQ-E$o$D*=?W)2hyS|@Zm@>Pc)jR>mwVC_1R0H-ZPZgYbc -zCuG?0V7G!DYaLpfA5me2fD|-j%9EDw_;!0<>c^xDbx~6Ff_u@SG_u3j_xHbzBX3-Wmguf5%JBhZtI2pKkm?qT4u^5Pzbt -z>*@Q3ThV_W{NK$t3RIJim1nAV1<4)c>)(PA8wy7Ugb{Z{$~JrW2znX3r+%AOjl4tH7Il57Y6g^`QAI5(jRu(sr@#_bK7r!FE08gy;a}gp@)lvW=NG@ked~xi` -z|Mdm$S&_j|uG;K@zLN`kM{&bl7nEx6)OO<3&JQze3_tYx%TScpwDv^OkPh)8^D0v- -zRyT*yvFA0Ih(xazBJfamBw-Zpn(hBFxE5<1zSBk6E^SWJ?>xEnydhkYHfoi=?^ -z0H?b(6~#D2)1p^R9Xk!GWAPehG+~snLb5 -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 -zf=lB^L1i`3{*fkW-I{(LqSJKNfNOh`J?W -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 -zYtcYacvnymV?T@2Sp(0PSMvE%aN -zf-IemhYS_eHoI)=b-mzej!vt(JWR6Ic6>2iWLeg;3?Rbr-9wXFWx&ji%po}ZQf>or -zLhZ&E5awkqGIM-@L(p*C{4peV>E~x3`@U|o&5aex#X*9&4k -zJIIu^KsT+oT()knmwvhsBIq-51Qj^7Q)-W3;C84zu{CLlhb68I?mPp9_-!dNCAv)D -zIQV^k7spBL&efKhm}pD(V3SYs!!a}{)h&sE6WdaQhl6T|2jH@gi0cTnM;ZPzXO9(_ -zWVo(8xbNa)s0&c{idnYmx>ASMx2CjAqdRlCU(h2&L==fXL@t(sjYwQ8d*3h+U+Opu -zG>WnU{b9Z}r_@b61tPwD$>=Q<>FiuTFs>TzfwXEm%Bb8n^^ybxA#9I16SR-ero6@7 -zP8|`3D;`}V@q4N`1BW`2gV?*>=)`0z -zY2kU^T#{b)r|=QLo}4xSnyo!I1R-aHWpe}4Gj~8$eFs~f)8%}0=YUxj`~H6Ov?zP^ -z8e}=3M~ps1r!{QlJ5&h=CzOFexI8EHpvKJiqZIlsb7ZS&pYF+%fkA~wQnv{s@L{W^HzvX)yvKG|G3%i=Q71q8=zXK~U|80x?9t{a+ymL%6$w73_2CwN23xegu9q(kwPO+dnfCdnG&Xc=Z~DBku07-)A~ -zu6t@)Aw9{yaE+9H7oPPCVdphGG@?2~gN9xn<52CXs+eqEGATDC`b?H=d*Cr7P0j*J -zqU$lh?<})zI&26Ol4JLjWupg+%yKNDOirnjo1g|1u3PVi*6wMyVKP2G4yTEjhqkO7 -z{QCZVOsGHg1k@F9D+GFUf~NL4m+7ZIY2PtT-!9A{>MHJ0E%61tw6U|%;>4!Rr`V2D -zq7vpEs;Wu_ZzF5pko|Q|>>LA68f< -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 -zFzIe!o#yc9AHm{ -zl_0bQr?X7{=Pe=uWI-%hf|MnL7|qpv9y2NNzL-ysj46tUujG2lRmbJ`7ScQ%$ld-R7q -z@EQHr?x%%;>HwY7Gh~!}?__u3f8^v`$$E -zxH8vZ32X6Wz-qrOPPJhVvrrkNo4;slF)pQ`PeI3@#1+mNgWN1hA?4d!LD;h*f1PY6 -zQd@{f6JMMAe=Sg^MnuF80Y^@k(a608f^2eig*fg&EG1$d%f?j}UpUJQG?s<8`GGbhIYFyRmhnBIsKQomO -zG(mMJ&zx!wJ$Q43m{{(+_M|653QDq~c`MQCA+))NWpq_b2Q<$K&^^n_Bym|Pp2E8X -zZCofjdR6nMU6L>yU6?q{yDWg!KaxpLK{qBeY{?!&j#`t#LVJAbYF%n#r13^k>Uyv#KVtH^BKXUF;Yrps&O-%76vC%22lg+66 -ztTW1mkBXwE@>-FYsAxoyrGtE*xXE`XER%TMzPGYDV!j%VI5*s6Qegc1~!1=2%4d81_Sj&ks-1WuMrqA!ouu@|rgdMO8OD)hbE -ziwLu~y(cOz%Hiiq6hev?gc%78u6tXv5jSzsheJqAvBXmm=|)@W}AqT+EX( -z_Rivn5_=>G7gXZJA1DG=*c#NK3S(fX;;p3PB75K~wq1NqtQ)3=kdVw_v9cM;-AW`{ -z=c*uPu3VTGuJvpvH;3i!9lX}R?k*`A>&97@#NsVQZ8z`00K=y2U{Y_+=rhDBp)@`n -zSlK}>(j!-FBME)XyUHk?96;_52Pu@cC8nYfeXA@MyA^_iAz?0AXlY_nWf4!L0ZA|1 -z!Lw9v#V4D+2bWW^Ne+ -zq2dEL!Zo~`6CZDVydu0nQ@>`L51Er~(Oy#n{wkip0?8y>Aj~Ri&1q2CBXH!{e1o`j -z(S#lzQJl#LQYPVO?4m+Hwnd_8Ih}wFrsBDKl$xr -zA%JPKHScy?vSKPPm=hwQbFb(LA*_z$Pw-J8cNi*TjJe92Ii! -zw_v0JEr|Tu0xOl89guwK`ZV`7uSgX#sj&>Fl%e{qPN0Mf$d65{xrHmCo@JV~0-&c{EC -zzl{ber?~=+bmXYgzyPLx9rpJEiULF@Nfhj1%FRwOjo+5JV+x_c&QXr1V8tJkURxvL$lJ2MCh5_10$}wLXO7K){vU8zq@N6L@sVf{o@sPp>f~L|3MY*SQOVaQC`j -zt(s+J$ih0v?A2^->Hjn9UrB{%BZu-_9hYOk#ZGX)WkALNz&zD -zZIk@iG0C!<9AeD16Cjya?`Z2s^HTlEiWdy^P-Pk|C;-Vvah7$_WOd2Q0rIMNW;_H1 -zbCU(t7MU@92gGT+XsBi -z$HQR%XCfN&eQN3rCTnWV#gg)tqm`u8blUy$CSkM8a>@EP}S+snV9U`1%8%MdA0~Jo{&zv*o -zD5;B$p4|DAk$*lR3b&x#s_lN*j=&D+jmbzHLDsmfeaCpBniVWFp^Z@`%tT=_@Q@Cr -z9v%P^%ZhJ?r%I}CsL#lP$0)iZ{b1FWs8RHvYfiRweq^FF`vf92vX(b_zf60^*3LKm -zf?8NGWm6r>EW*Kd+kMUqUUJhh{wh{l!jGX5D6RL2U2rrZnUT!8bh4+LiuhmS -zWY-!oV!0nG6&TRb?4=-0M=ob@vo>HP{A62)!4rmDYl%B61o4)h*3H^HF&HPpaHjb{@e+?Z*yy5Q0*KWHTomJRGpbO -zTK5rSnb5<76`xVevM1Uo&yiHVxf@EruJLT@Z#zYbIkG0G6wA+@VPpxid=;`Ikdy-& -z&|3+}3aiaC0LmrUe(4OQ-Ut9BpJhhD8nzTcVeSoinK&1VjTt%{&CO@8Z*^21K}O0f -z_Yj7d8jHn5Ch8ttj;Wd@8-FjW3UWbGSvRmin=2veHYB@& -z-1ZB>l0ECY**l;upt_V8Yo94}?db?6zy5)_#~E`@Y&qzQ*gnM9Z_AmFXIUzZB?oKj(d1Pq -zP`5w-B$(1&J#m%l4Gmp&BS9hJ)73SKBL&m{5j;_~6Z^%BH6s@*0o7!VIJz;3FJGPX -zwI&gKP4q%3k8b2vhQs1l0ZL4vta#TiCJAUF5c+7@T&;mj&1Xs#$lQt7Kkd5`zj(Cd -zr*yI1-0f+y!R|`KX;@3o>)toazawewgTJmY<|&P#$b)&nWMmh@sTiYQ*Bt}3H(k{yzcEU5TlLe;D4BHH -z2eROo;Y6h(DY-Y3vkM&^MSCoY+yL@saa1GtX#gFu?^NSY``p)4KvNXpzp5WGIuq?s=F847#>^2B+MH~oxU -zWJQ~(Sb*HNSpyxrZ`uWyTwd}xg%LP3OT>aqmmQu?xb##laA=@f?uA$NBQ@jbMyo^i -z(ssUuV~ES8XyPOq0GApKXRQ7YJAc+8JUN+c&!(iUcI~Boi$w_eYzL37;rUdbgWRa8 -zXLxN9M50G2?}KN;l2f<1=1Z8COHfIjyS46UHa6O~wB0tP^-pwIajcNz7^*}WWqI68 -z{Vc2J4mV4iS8D{)-m2RJeKbIMwX{Rp8v><|G<@v$LR0ZMH(M6zaa0|;^y5yMb5LgVeVJ+F=xkSb -zzUzd7cAismQE+E!%QD4}qd;HiL25h$c!-7M7^drqni9BzNj8MFb>{@|aFsfIGd>SG -zMH4G68T~48z&;g}t1u$r=D<-4P*F8T_^xAI(yp)Zuvw$Mh-U6A=XTQS<$Aqvl3Q9& -zHZf2hiOZdK3H`YdjgI|$K{J|2KZ^7}X~hN!&)Sog#61k{J*ucFR~F<%pq!4(wtFDt -ze*>t+15T)eV6U*ut&gH&{9#!YXKPlZz5||n>OUVPCftA`^q-Dk*tly}l%IXaex(1j -zGDgGt-MAh=*UMZry<8Rxm}D6DX-$x<9*#K_*%7Ly@(>m#R#Uc|RSTaVv8EP>UyT%_r)N)`Ikn;^{-HK{zwZQSA6=+<@OBTX)-PuhkC(QjkXhJiN -z|Jf;%Q=${<8AS>ktrEszoObaeH&~&|KvUQ5M4k7vmY_^H-ptaRWiy)oI8E6ul9*gf -zcVY_Ym~W=_%U-TwZt22LMm;Z!6jXg{54?Wsh -z)hG!!-{fF+lWeBdc6A3E~2ST>BOKq47+W}2)3G`arDz=$llv -zhFC3eBt?~FM7RK^JdZ#i%UM$(tM*AsMV*8(@wJXjY@!@=L1Sd&lSdui>5GZKv$~u) -z@t<1}0#LCCZVE6w*QA5GLPvIBLfgZXH?g(%H+^y&J=Latycz=JPWtbN@hHA%KDg%*IAoR)tALwvdtxr^e#)VM>677 -z&iI-1+T;=*ZI_Ax8Zn?@Gd-(fw*jd(;5=qpLcQ(lsp6rHd*s|ts)UXjVgIm=Dc~$c -zD@)6werEp!${-`{wF}6JH4D!V2_4b^}`8kNAE?(q$gnAcGBrhCn -zkL>A}FXoBZ6Qtop6tKEKzvo`A^aD2w`&xqgEUa1_P}B4!iUJKVjDEdi3`RhF_r%qI -z%d9G+ctwzCRXNPR750H{$T&IqwHBKi6DiQo`sH#>EMnTwve^u^z0k5r9(2kA2cLIc -zaFb}3XmC+KomNAZB*Yq)^I{Y{K`9p!7?8+@9w+gK_BGck*2!sHa2_yg4wrKsd8C3* -z+UiDZ>rQ5Bt%69NiZcXHr7flw`2!bENm*LDM_-H2XfUtzFzQ*x8eVh1%4J~Hn9qUT -zXNiX^2lT-FB|3AslCqWm_`?ht(Zh1H8hPo}Fj|>UnvU>BNfRvIu!h!pm0-=1$ILYi -zcp)hiE!w}%YY`h%q0$CeSR@-#73*UIv`d()Y$S7)=%n<@AC8OsM45-KwHw&WK)R?< -zn~aw-8EZcA`XdZLi0#|8xq`JlPnQP4Nzx2X$Xb!7?8y|*K&|B@_rHSI9dCgf!1L^ -zrlMHTT{q*YH5CG^vxGRDc_ni-n$mrHF4!9&Iy;36Ho}kr)!KbrdH0ZN@zUS2<=}G3ryiUgEx8OzbaXC0KAH2=2Fm1PXIS&#rjWgR>`ZVm;u|`-62VGO -z9yrZr9a+Nx3!7KA$K?pSj+_vq#(^VTZU58EVSwCE~@k*^4 -z`u8W9>%ke2Kx#OQ$vT473;eX1(r$y=2h_hJ%#LTB+okGKX-- -z-cq1>uR{+dWQJ`k!RjhDo}f*nS~s+igq`f(M4rXbur9<4+GKw9+M~53 -znd1>ioU<|oQSVwsU$_1$o*w#VIJYzr8IZ$8Z@Bfs)H$lVMdI>$=lo8}qcurL4J9Vl -zSK{)No8ZN(N((uO7~<&DWwVT4B3nC)M>f)G_!2H*vG -zqUWqxve;sB`l=stTM+;(=rJ$2TSMUn*z{$a)b`%8OY^n -znW3{}Ol~#MUh_%jY05jILUsa! -z_FJ_@Uh2_9rmGK0@ld?TsR-Phw>fv8I$-9afth|Y%>DK(h#t21t`e0o(;}|2L@j?} -zf-z0vsvuMFBT1ryH5MyRcB$GL>eY=ZG#bs6EE|9YZZR|I8E}7B_k@V=0kIz-sfR;XIabJM|yvnk#T&l|| -zD9R61=k`VVW3O!LP+pK5dsYGNlq>VNLa>B{iKke>HfpuOgb)%o&{s|ccm@(cdL33L -zWF0BRY3y+xLPC`ys=D>_N$M&CTWMpaJ~#}FM4bDai9Kt|Q_1CKks(fyBlp{0(dN@{ -znuTPlyvV?|+a)K>#r1tA4{2!unQD`jf@va2X%l1*!(-$;BQbB$!wMsJT5^lYudxiATGxQ5ym!Wek86z_sL4m86-Wt6KCI8 -zL|oxz7W&H+UxVM4iBItabsx^L_**zP10^?qgu-M3!=-y&HufHaxBID_X=dp_3G -zf|iw}VbhTMA4=a|ya$wbWsDkLwwh<8I-e*EIYJZ%>6Gr!<%hfh1QO8BGB97ZcDkss -zxum6{c3Ecn?kY)Lge<2rWgF)864_h<=~ZOis{Z4P@(v&Y)=w$F_lC)Eg-*)HNA&r; -zMq^zK);A+jnb+n>cdZU9hCnB1?8IeVT+c`)Au9zGbMtxAAqkvb4ZhbZLHZd -zmlqewj51XZ@|@^U^c@M0oB74=u<}vVDO{GcTTu3_RCdlJBar$Y;htWTnljst;FfAh -za)~FzJGFDxC3gVa!S}J8)9h5D1AwA=Z|lzY$iyNrRmhkzP?`4-EK}?R;r?qixcXt=dhlxIaDA%lZMbW -zL>q}(QH?41>$4bx&XbgbR3LGvqH`Z977&e^g-amLI&_q?`E;a7jSVn(7AGl_k+3Y2 -zpWMRshCZ`t3Z4+^CocN-gkByG1QN*`dxGtxZC)w!baw6&>CX}jiy->eg-f7FQPLx| -z!(BrsL_(Hyv~^V$e{iK%Nk?22x=e6vI(m}>cTKpeZ~}R?VtWgl+oOWl?K2w=&HoEc -zV~m<>>sk}nA-tawPZDC0fOC!J{t?fQaO3aYCk_Vrr8CW3Jta+B;=01Xtv;g`wxe86 -z9HgqAj8*7s1bzHN;|?Ho -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 -zYnnLZhOOyBpCb=l2 -z>8_6b_J$nMfTpEKyX5%CuGC{cnMQi%Pv1z9S<^l&QSeVeiNaOIb|EC?xnw)J`s{o5 -z|hPgNf>yO( -z0mgZ+Q;B^~z(HoZuDjEg$(}hRnssE}kCm*nx*Yd~!lgD_zJL4vn@luTul@e*$4}Pw -zawUfR4Y-a>Pt -zcw3zL_YV#KB;@}6^V@wi9m3zgzUi&9-`_s^iJ;QY_zO=g*9r9fyS@Gmjun0V2cN9R -zx4-`&;=um)=l3+Bix1l1*5J2Jiy@@H|8alZdw-3oXXSZ)msaQRKmSSx!an%>ukSja -z^sj&YOpjb%-|tK9ud$HAv$MB<+`IdbUY7^>!z0$;fBlBjoBqJ0X+|3V{>!fKua9{8 -z{9oV8mGb*vI5P>a?fqYGuHGfD_0%h1q@5=;fB*i@s;}pte*gY`->hp}UY{S%@8@+i -zoJmdDhJZqTPR$LQ*tfs(>z{x4>(poh0N-w4SXf?w(9H!53shs_)9IrzwjyM7%D4Yg -z^ZfnWH=rR3>GTTL(qH{i8iwlkPwk$vtPuFbrXbh)hi{4Y?caa?_D{t2bz-^nZTvt& -zc`cru1JE+zEX)pIKj@0^G{oCJ<(XfDwImF`|M+chQ7KU?W*=;J8FC}PKYjGqPyYz$ -zsclEjP}ZD>j|qnZ^ZNNSyRqUkSta(-@;D}k^XxKKI*9d@H_Mtdse#Ie1udh@DH{$* -z+3avyuD}+^dcnqKe?x*Dk!dRTV%5NU+Wx?|Vg=Ki-+z8PPf~vPTQ3(pv^a|_Sv4)+ -z|M;#yl^q$oQGV?WKC(Ce{;iL?iy#gNkCmo`=>+uQgyZ+Wbb!S4%R&C~*Rn*fV|rtk -zaND8wrW9}GG%G((2$x>2Lx0w*)hb`7%Bwgr;$5H#pmXh4J|kN}YNK_=@Pj+t1by`* -z&#?RNU-seeKkc&bnDTrPpl>ZZU3tZK36}kfm4P(w^Z~Hsk5_@xZhWe@V>y(xLvW4TL@(Feyo!jkvAsd -zvbK|-eZ7W%{b?sBopU<)>I{<-MCD_=-)+vk8(j5%bT%?aGS9%Ty~(n-l{`q$GWHp+ -z1rJ1wS9)D+smyrOJpQ)#kJe50K#85OeE;#UZ>JA_|2V(>?N(!y?cw+DpT+S<=!CB_ -zA3;!2uEnu`hxzg!;@zKlF!=so{_^*aKg#EcPkw&Szx@5{`+a$m?VN-#Phvw8R8v3PUE*^jiD<_FLG{ikgQEJC6D;}0u; -z@caD1zyA96HRQMAw4VO#SMTrd-6Nhqu=o_sXTSXl-;#R)PBh?y+u7bOXxp0_k9W|! -zutmtBIBKB?Ppkwcj(Id39zXFJsc(vTGPBj*$Lw#!QvT{s`aT#$`{;MtqW^Yh0Clrs -zvPwu?-^)qL6ET`fYiZFG797vpNf144QNWSQMgEoFuoAL}KV(S-H5$LZr#JHL;xa&s -z-A;K>2(803w0Fqz(HAInA=mg8lZ^**c9Xf8_FOE};(+Kw)wyA{!n9xfHrvGTBa`P> -zF-p+=p598JM4pf&>J9mXII{*R@kL^%g0uYBPdB|5Y{VSduh1|Ct?9F8^?v4HNezn8jO^EP$fB*1vkE4BSvMu{LRa%{R#>&1E -z@Ae&Wl_NNDDkoHWx-ju`ZcMv+?#}+mb2e}Bx%k*F%R^tRR#XxDmY%>?HR+`(z&&?M -zT*(td-@Eusd8 -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 -zgchH~)Em>x(OVk|u9#JK57mDv#*L -zm`>Zna=+hy{C^4x8F_x8AhgsC7o5r)aUObHaTqWEjnz*(O{+NoFq(FW5!4_{!@>DnbN8g9Aj44|LT1!Bc8i>q>I{Yx21=Zmq47*U;4RQjdWsobRp{u$@_*P60Yy@%tndA0W-W3md>?xB_Wi}gJG!*Rl0pW&r*`wFkX!LAy%J9PRyA03) -z@$2Y9%Ar=pH}l=z2QT(jy*8lZ$*-Wdn|EPYz<+%hnlBDzT0k{5ox+Pan1c2wqu5^502wYjctiiXIS0f=)jJt -zEtAc=rX*M0j~04?{?NiSA?8?!LHba0f##$JNlZ3 -z1BpiQlZ_l(w(7C(Na<gI8iX)SLsK)#19dG~jfBEnK -z*BKXD^seK`Fd=1GUB7%ODPq{ZY+SB7DD4LMU;P1Ek86Yc#)lQtijBj*HCTJ;_#BxX -z8w#RPh-$T&*DjL?_jT<`3~%6tN1I!REU#@S;3j0M8Rc`kr@+QSVMy@MZ(5}A=y%94P47p&vs)*fiWvyVe>N2hL3 -zzkUH5+YAx0=&N@Os7?2oSXw3!7`p%7A^V{#kH>Gr<4Ca$uf6XW73gF6FJ+2BX`rXp -z$M1io?LQDvMo3cY@42+`)&FnLru2V9d*J`u`~Q`f^9LJK;}ZwgkD-aU>A(Lp9yp$Q -z_TE4K4`>@^6Be-afFe{v+ye^7vQ~M!&4R#FOdRlxgC!1-^Ul6c#zL&0CKQOQhV>qg -zZi%)xbd({cy0l9V>+^1%)gIf}e@}c+r_+z7GrRr#m*S<~sM^p&ZcrDO4fp@yt=vv2xwW_Pi>H!FF -zwvAN@U|ZDSqpG0V;(#Mf-EQ_m4vo4QeGC9GYca;Nd$Q10T1ID9S=r2c*6B2=uQBO^ -z;?MNDyqcT7e>+@Y6M=B@J*NP_XLY~F6mT4Jp?q$Me$gC$cjcG<1LzDgAvy8l$h3A3 -z-ZScADK2C*$kc!EC7TuTk*mA6LF|Us_@C`EADZ5o4bw2r-@QFuDcK0xDZo&vI&*`< -z(sJF~1R{Yqfq!drMUVDg+3w!742s-kTQF=vuXpSy6dd+1a=<9EP3@Fd2bU$&ug@8#@8kU-rDN)9$bvHsRFKyQbwa(}R64J`2Z@cqHZXKVu?fom_RNOS4 -zJ@gnE++Or6_zbc@#&l&PPJ(|q0XiD>FwN9lnC53j^~bkW{0`c;l)j>TRNJ8%in6g@ -z`vBz4Q^Fbu_(HMKEDT!M;|R{mOi>KbH(&=ic&5Tq -zP)#olA8K1^deyXN`{Wee43M(c -z*wBoL|TFG0J -zhm0)Ia-Xpv+kuy{-l1E$Bmp0B3c+iWc4u|p06uVF`@LUe)R!>RiTavndQk* -z%J@Vs$YOL$3gW|6R-Q8bf~tH`Dniyy+vR=}^S(jzTysDCSUh*x`{Hnhu*!Y*15+L- -zr4C1N2E2r6R4roraOq|0Qf#D!lTm#A5KoyTTjCr}l-om#1T@Vm6)#R)~5_ -zOpN(hEOMDYMnIFBZZY;tgg?Q*UkSo0Y3Bk-3ig#4Q -zOCu?p?uPoX?eNVC*x7qIst|%!v27DM)x&Dtv7XZ7k@Y39#(4q& -z?<%(M^|#{aJ|L%8eA=`v3ITIJr;}r22HbW!e-lpb^fIR)QBWN(pMmB}@3(kP`pNkz -z^~I{efKvX2+C}9bqHMcxQ;N^TJi=)&&&psDlw{=~%h1ZiT}#MA2lzmMk^({GC)0^K -zQ~7gvm8auDCI-w#j=E@&g(;yh1EfS>pJh=VaDzXzTVa!fP0Sao40|ys%J_B4@;m@3 -zf#_mslC#af?T{5H77n#^>iZQZSj*c%ug!vCI6Y^HN}k$kS`5$tKvQ`aFrq_y{sf$J -z`utA!3q!%ZfjiIXsmao~?R+53OrUi#uHq#vu>%zEb?M#O3UsA3rsdsq;+Cv-{+F%k -zmL^s)EUJ$t=49SpCsRM%DP{HP+||CdV|qXmf&r;iP7sjx!l64^x3I{G;1m>Rm)!x# -z`SN>1zsia~jdI0GR=Jy!l=J2Guwdy?ellPYu$Z$6d1^p#n&<=5;aoBDTy3acW+SpC -z5=n;Rb=}o>o213QeG7D@*Vo-fZcjEVw*mx{Fe7`sd=Z?Lr^zK#{MAg|0JW(Ru8$Hd11n7~3km4pp$@@^ZgO3viB=qu;)RRy18KQ7mvUP!qEq+>M#Z -z+`sIa4X9(qPQQHIF+uk_wgd1Cr>z*7whenjxxR;%80HPBoN~=dIMSlE;_Qb&1^6@} -zWbZ__kIwVUV`%nCMOshOl-NF+KC-(iXkLe>d7aZ{d&-ZNy{nGTD@*(%8JCxbF!Is7 -zT$O~>{WZLwZx$KkHO~L&*m8xlpD_Cy>r;K+MjzBLf>P(aJ&C)NTwZ)BIc2Bu?7MD2 -zrKC9z(y=i*0CICZ9~SfJ)7rX$vT%Kw6|%`~?G^AQWRn=0T-kb69uD&zpT5`x1%D{) -zK;@9i{f9#GeuU?(ydmTjpE4G<$?4sLCKSz%`7;7nVT;a=2Xr&C>Qs$Vl$Iiy(AWDb -zL30xMrg&Z@(-EE25c^m(}Ldb){A17nE}6)-vhIbw~Xqlt?Pj;l+`Z# -z;Bh`dKd)kDZ-uk_6idN)N+$jF3U|D8DOTGI&X!C;c9T4Ty3Ka#wT+$$D-)QPmE|%gR^1uf7Oz -zTS{oj@=8ZT@@V>WLt-n$qQ3@uvgr+HzxcL;UN-OcOMgxDvM+;gBl&VcP_Q~p%phAW -zT704Kn3{BLl-p^~7e4nAkpUJES}?G(-~WaNkcRu0dwHkFkpuE#s?-634Kbul18Uqa -z7Y`NSEkC*?9x!;9dSOCc-6e%_Wo})4RxFOUYMs7n(oX{8_GN!xW&JGBVH#v?UPj%9 -z=w;xrm+?+6uO^Al_k8%YUlrf20y1I}A2dzqI0cI5c<%=~pr_qnlbv#C%0skrSXvA5 -zB#O`brwVhV@e+@Q*q`leQIbW?k6-SQ%joQ=iaXraudaMQT*xF8@D`#OOj+b|4Bgsq=WW;@$(m+b$v~hUgVUOYVD`n0=!ZF^{8(EGx_05WbcP9 -zPjCJm?FH%Y{n8KvkR6gPf=V*KuOShMgq;j|J`%N?ms7Z(4xX%(u>)yDJ$JZ@vHa(Zf>wNM}Bp_PY(Mi<)!L0kJPG5vrNQ^AI+7 -z$d}P^C{0gz-AuM{{CvG@|6qHFhba!l%TK($*J*X+vjR^F<;O6l(b}$K@x3o$yqr4V -zyVMkgL -z=XcPU&c5BjWxxMMc_bIg@>5ZNm=?CB#%OX8!d9AYJhOcq^9B}{IYE^nbb2atjn~Cz -z#l1a#mP5wZ6-~3P*!ECDE8URx1(ou&zs9%tD_=OOxZ!0)wL)nl@bWh%TgqC^j9yc0 -zZBXf&QZ5wR;}0|10TV5!8A4i;)N@^Sy2p7ko9nqxjZJ;Fz<#>pQiaSH$17P)o%(ip -z-6|t{U3_c?W2jQuM!(Y{2^x;Ii^DbNcCP6aW+obMGZVcU0YA2`^KdX|C$+N405tHG)=gGG|v`v5S9Z^ -zOQMf;td-FxO)I#-%xP49HS*JsJ~(AaaT1y8uk%V~MH(v|NS`E!=|l4OXJgTh5cw_a -zg|d+Dww-dc{4h_{Pmi@6s6<2~CXI{`*RhyiZAD>I)M+Ax-Na@;s2-){UYCgQRnUB(th9 -zfqnrH{3IvWT%VbRO80@j0ydc!Z`V7lP9Z5TfyLYm%Z-}Pb&%zx=Tn~HEq!%Rxa_#% -zdnI|+RTXHKSiRfbGwix%;5C*>KaGxs*YMw_Jb>6xTg}6Df0Gc8a;ewDk>axBZ77mx -zOBS1lX6NrvbmdHC2MAq46s0DsT)TcuQKB>u46PsaM+-0)zeJvhxDv{~x(@e~PMT}O -zD7n`JP^bLhBYuE9c-5%Redh^&wBJZHh%nN%$k*~J6(HrJB`xyQV*vk-lQM1G!r95A -zlUBAxCQ^KQP3>)Wb#7oT9gCG6Q+F9ETZ3#4+&eE|BlHgOnI -z6v&ZtgjHxVOjqG#R2>O*o0PFsLkwYY-x`we>FUVOCABhxp-96sZ*A~sjT-Y=<_(oE -zF*&nXCug)3o9VlRQgYbzWcvcyZ?po5lnA+uPQqTOASxmX0DZ&mLU{3LyUwN~u&M+;4476En4FzOi}v7ipj`ksr3d}q3wDz{CFSPMjlkp)g;TOX}{Dvv;Y?({S_l! -zF!5|F)T@NyexNON)Lt0F9n%joYsS6r`Xsm2Y{J0OHxy<*O#9@l1EgHAP -z9dDn<+_!gc0eH(+qdX;=QMY4K6JphfdssjAYL%bLXF=ScJM{XdYk#00$W)kSabw@U -zZt=@~;5EpS1|R|UL#}K(0Fi?kBAwYXkpvT9k^cPvH5y|1LnR2;WEB{vNE~0wWjw(( -zV_a2FN?n|IF;$)pdJ}dv?N@R4-vSaWvIHGudrw5A#cQy4|pS1s63sSx(b)$FYb|3=y(lS%QS-cqyQ+9cJ~OXg|?f -zHO74{jMe(26g2o10~6}(xAyzlM-!_3`XP@5RXKwfA}PI3-2=Ou?9DJFuOEdiO@{1T -zvOB4c#`~mC6jX&`wbgGeB({@>1eGj(zUy-6T1?NuzO -zA%+otL}x%y>eZ~9%T$NhbI-enFJ8MYJd$~=|2BDn{!RV|IPmxPgfO|FJ8Ujm64J`# -z0+6$ZQ@Mkj80g9PR0NS(3lZ~B3XihCupdJzjD%x(Ih>V`>ySc5c~A>xP#Q~o07xZ- -z#AM6eP8da9H!o>re9Yng1f@e6Ydc*%p#c0bcNuZt?2jJ>)((FzA(o0OzoFAbLh^DU -z6Mn^rc9m`c`|D?TOnqNJ!RzE!v_yjno8opppL?b1=@w0J|x1R -zm@d|fK-^VY>4{K%f -zthI1@g%kW*t*M6|_{JZwKz+JnBsmbU6;+ygx|k!N@#Tc7C@uhq;ZN6R^_#P&@fiVB -zquMZ?>MynIr|k<+p9FtF`h@^ccc6N^DJjZ1et%6LKDFQok -zsz?F*CG&`-p4X|SvxVfc?fJ9v4EzACXl+WGgI;Gtq4LuJHhXi1FE?^u0U(A~WY0cb -zW%ZDQIwAO*eZka!J!l)UFDFsx%fYwR2<=C5I@UJ;PQ7ZFhW4}ePC -zIUvi4I@CToUAp)%M0X{VdTZb1DleFcAy=q-`Y6qL(e}fAc&&a*cq~triJPL2t)F~G -zaT57=Cvr;pa_yH#0c%5*0j;^GWeS>;b}?ITL@55JY2Rq=UlD(KiDdB6>vNU3q@$NC -z_gQR=2)yAw73OYen}0z15xIMw>q9?E*w|Q0p#xp~j{pp@k5C;~IU)l1(BV<)x{B8Y?GR0TT -zTM!RruNP`n>zkm6=a)3dT1=buwisYGG^olEN;m-G^AaB?TvYzV){$;QFTfi**3&Cy -zk{@&S1VH6Kefo;pfPp2$kZZZ(nE9jW%GZv7} -zy$$RAWxCUpNbV|dpUQDq^=1|Spd@4o;~hF1TG_h?TsIJo-ZKJTzt{;d1n;2 -zOsJQ&z&;fKgVx*Wu~TK)whB(F(+zBB^vAOL>~yhri1fh4p)jj}eg4!ip&HwcHa&fq -z_pI~B*eeuqc=}vz*yr!t*@eXmQkr+p==Ug%J%$veHhPfh_9WLX`I~^IstytU(0Fv>_^#uK8I$gmHvaP^X!+! -zU~cJ??GrxnSp*F-@S5`|dr{jcQ}+x<2k7wpeqT5RU#Z -z@1pOcUo5Nn=pTXY$7nBeo(ya>6YGg`klvhTxzK9ZvjE4whD;0h0GXuKT~OruY0!m7 -z+>Bb+o?%WzLZs+uY -zYQz}lmgvGb-SJa>EoQi0(-$Y%A@Lmny6|=71jgdOs4w%sTv9Z#cP%gT*WN4l^BK -zLg5sWLHKb`Cy*I^sS))19ELDNL$xhSU?M+Q{fm=or_L!Uen6;tQTAlBEtGj1{5`gF -zGy_kVrTJ6_Db^cb@1yMF&g27s^C{DQpbQjUEUd-MStXvz$Oj=i>i}jVc?orjiGn_^ -znYFYePi?F&Pbm`2Kiy28L`Wxju6gL+aTxhSqjm9*AkGu6(n`m~A;^ERZa@ -z7qp+W-hC)Z=)_(!|B${Tb77co`F$0f03onC(HF;~8y3_hEkGb>N+dYI_KbC(V$=~U -z`0>T9ns2?KHE`FEL~FsCIpuO!u_5D$y!Uc&l-5RsWsm;NI=AvEH?bpn86ZaigtVw^ -zxutIQdOL5$G#@;x@mT=#|{R}DaRM_cD -zoMrO{eY>05OF+~0%ETRw%_T>oGTw1wToRxb&|u@qfqT6;^tb9i#2QsgK=->oX^9E2 -zRh1mCvXd%E#;owB{7)#!=Tq96OFDB~WWuUE6X0o;bq$E2N}?C*q^)W8&OdMe-uLy4 -z%_T>X)ANX-ksS_1dC;5pr_=#u>jaX`Lh+(v=8-jwK^6GXWab$D#3HF#4C=P@vkzl^ -zXExUETu<|4IciPUnFkxU{UEzzrurNY1QB9BLHFHHvuh{H-Syfkrydks5QqmA0R!?C -zHmx32F+|}6ovKKT)s{*#2YUOTtfZ#%nVaLLQALnsVv70s@HGvHemfp$0n*uU-DT_i -zXq78X4}-Y8f3yl?EU)7#V|^>fg-Bu@R_Y5Tkvo)PWm+8hsf*bh+cPj`5#{ -ztuZ0-eXWOoyney_CkrWwGl$fA$uSc)iEf -zF$54en@GXQ`FfrP1!jau=U^&F>r2)OQ`@n$9LkT{l{2amET#mJZ -z?$`1oEbfuHr9_^#25~_`8E41|k>;=SldNwi3DkPv&nf?wVgpE@nr4m~jt;0>7wN*1 -zXvvYDrac|jBnd+ehrt+NKcf}veFn;4)s}3u8d`@RRt7SzNuqCkZJeMX$;H9(*tc+- -z>DKD53Xn0asX3iuefn~O(dl^^HJP&z=dgQ0EFk7dtA@V%t|%|4QHb+Q2G}emvOenK -z6d=>0nMw=X`p0C&u3�{o1J;FKhLP+4MjZEYh?32b3q$c<*USGG;576+tpukvb%J -zi^%xpzu(&b1dXWSzik#4{e)R?)=F-ynFyFaQ*};Yyi6q&=X3+ZtuhL -zFP&Afymd4{Mqp4*&jo#5p`y -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 -zu2DPG_;8*B@J*)Yhq -zXIsq^sAzzt)6<{BTVL6ido(4-LOu@PjaT!0B=W?}?n#(}!jEP0XHu!Gmy^ks{TM_^ -z?dE8T)B{6Poea_(+691ZGSellQW*o<1BbFzm8KW%Iuzx-OmQeNzJn?NT|zbjNRTxJMt7B)oZ2q!Mwe -z87fJlE7pY`St}pPd`J-tTj)q1&afP%DpH&`TO^@s_K&tT=M!V+-Eqh^Z@}SH&^Mee -zIp)MJEIYGRc`zJ1)Sf?l=se8_1)k;wrXo8a*r^UWgo+osAJkT^ecGnrTrLdCi8cr1DP9+Ow!Sa6Y4ESW -zd#R+?Va_^BZtZ)nL2)h27MzdltWe)RS3@5!i}ogK{-|X~Re@OcV9>pC+pRrl>`){>t -zz|=x;Qg%vlTPkxS`uW55=XHPzui=N=I%!TT?xvF6SB$J4s-Byx?Qs*sw+bs`LpyBR -zdhdsWF_2zTkZlKjCVbgI~{*G7-EIP(lxP$LoN`3w`s6FviyBS*cZKoH&$f -z>G?CxYAq-~iczp{a^g- -zBXk8hJlTT*gskkUB|r^zsS>_D;B8u247>E2;!C6kcNr{{k;FvE%3Gms4Zb&n7F8e& -znvE?>Hgd$}VHZ2#J~W;Lo;<(4gpZGu;-Ri-i@t|ULhj&Ap-WsH}~K%rkt -zS8)l6{0cN&4Twi2Yps3NWXhVkCU}HBP3rIRJqtn?X!hDk_qiO$$^iO?{ZsPHUH*l*$N%ro(1g5ZO -zKtO|YC-5*~=51Uy>^DvV-HF#@(K!0cYU0PKhZ~t -zxZC1>!4@RqOJ41X77SauY+WaqTXIzz3qHd0j_vIOSq(c37%Z@fu|1fR%snr|Z$l&y -zn&V8{+wOx7EqhXGJ+;lo^+~ryMOuRTv>a~b|c!j-lA%fjk5 -ztPBC*=HAepKFKB?J)I&4KT75<>}W}VInJ_h2>nQt@{wgQncp1B1g-2Hv@f=r!3Dq; -zecJ#@YSt$UHNuxzJZNHDDdc2M(?p!4y3~PD&EfGx_1(W}b8n9?lwk8MSxsS)eAcI1 -z$cQ(Qy0CHx7fiK|ygCed7c3m4)VyQd<%To$y%0%U+r(W6b#xh0a^z4f^1ax{(vj8g -zg2MgNZT<%cQnCblcvQQCQfaAGYEVZft~-N)HA{q}PN|q+eZsQp>P4Fz(Dw^&XfX$? -zq6AWVPkpO)v>P~`yREw)-@g9^@k_J~nlB=s`<`uzyNmNgvJv*)HcZrj$K8ft(5$$; -zp7)g5n!d99y?3`n!s?Uctt -zkJLmy8Q(AEp($~#*y(OU$e>?@z_dL}2nmC(Ca(vEcB>i;eOd{^Y|f%x+Rk13;AuPd6lx;X{i%B>N~MAq9|OS}&Pleb;MA0Hi%Aw7cflEC!rmH}+Nt_5N)8O$nt -zgpvkPoRrM&^|Q%B<$s4uQMb4r$n!O(bn&$cN{tdqnOgLU$f@ziNj!f17a=bGTmAl_ -z3t*^P*KO|yGC?YKMiWKaXM?smf8o1H`k)anU|QSszVq$@EIjBi@0Gh21BYWcUb|D? -zH-t@#BR$&x_feWEOE>=DjUR2y2vAyqI_gkEP_}`QhigU|c -zsOSR6cZbS8QF+|i+ixa}h1uqzD;OS+>|bFm8;Ztb4ik3BA-Ob*#7XPj43cbyayMqiDxDi-pArGsvH5d})@-5n58cRzu(H|F?-V9hW?gNVgTc#{)n=dED{m>< -z9=|9yp|dV55#*o#OI1QTd`eDYDzpjveEA-FUgP_Z?`dn_=W<-+;b^e?Tx^THZx-M+ -zYwWn4>1hzHz3021p5b&hISF#$06crI#DN;GJor?Wojh>Gz%l@=Y*swo^gU~j*Q)x5 -zp&(Wp{QGLo+aw;CQed6ll6+=JQi{F4bUzKQ(@^+mdsA&xe>gy#&mN@84|rA4i^9;?>MI%Oc(l -zKlTjH&A$9?N1Bb9w0{23WOQAvzx1kPB>&z6n#VnPK2`NEn`qh!zYcKC>)5l@SA_3LBNLM382$Wmxx~92Ra7|E7NRtn{UE5OHK -zhvKDWqWX4-sR?#GP%@A^_H0Rf|Ndv5?|pn)@0z$MqlD72Legj@V@*1hnVaHT$Aj=; -zETiJn=bJsnK5Bl2)gt)K5S0gnNh~pwdPo24*l>wbobXgO -zwov2Cn8wz<`7TqVz<)s-Z=Oq4of#$chj*4;TWYzu-xl7%^px^fYYa1T(H=>oam3*g -z=mu}lW3EFMwgmOK?G+xh`NeXJk!dL}fiAR@o;`n(Quy9`Qy+XPx^*#ltA@ -zC(n3qt(nZ{pOx}+yNzmUjGo!LW68=;diopMV66tmnSfOyhOq2KGEj@G-F~FZ%EwdY -z3p|{G#7O2BYL+yPaAC=gZa#)WKKwaXb&#lDBLFdD@ox2J8LB&~0J&#U<^ZL~g72*o -z-Ne}gzJ~F>gGR~R1E*N0kBKGDeb**RnD8h74C?9@vNZKCIYD@M#;@jcbc-RE+_Y!< -zAEq9sNAE9@-jVBLpO&*fvEfXdyf9LLA=7vAx6W)~d`bGDv4u<@nOkN0kR>N;tc#y7 -zfa=DDmN`Gf;|GFTdl{Ulf){y%7IMBgU>GDmqx9y9v68gMvOts0EWh5e7h>{1o_=B{ -zUf3NTR%K(*TN-?Ru6spGm)7<4yfSXcZO$#3^~5#F)Q>m_#^`EUNjTG6JKx|cD?%ZC -z4S9_PBE%)j051ZBg7|7dENg!Q6+>k4+r&$ClGmI4y5Nki8kr*Z*d!@(ETYxp#w -za5W|AEx4iE@~Sz)JcSsY-eGL`3*;SoQb -ztqv3L66eV^?()f@UP{5s#J^p|>~h+@KJyVu+um#&p08F%!rYcxkS{Anh8oDQea_M( -z7_ifCgLBspWK-*WN0`JfDKt+w8Zx<|fz=i~);bm7{UH77v}8IB;!eHC(h8z7l@e$& -zyV=<7m@U}^#AGkq%OZV-{w_{WqN74f)vX2Uwy_N~-OJL3^8H)90s1qY>7vQxT~3_W -zY08CYJ==NG!DE)E|D@ned7n=0MvHK^+WHYXLbBn1-VT!OeOm2K3agLV$^Sl2H3@1% -zy{D!G)M7t>3GhZ#D;*Uf*C^+bRXm-ZK0Ljk3|7bkwid8)fdvw!pPxm8L~j=h!+?ZZ -z*?8UH=5q7G&?3Oq>7JhS7yvIiPNO)2o}=!k2zq66(xwBNHf5%m8}G7!bTa09l_8jd -zIIzWjhFK!MR2R75A7@K(fYbkM25N+rJzRxy0!g^MrmH4$4Ek2Z4$H@c5iDot-+POd -zf3T7IlTC3ek-;{`>;C%1Zisv0fj=1*&WmXh%UEa56%LTL(q6-E;o$V$%n#reGr-Tx_Itj -z;5f5H>a~xzY|Ya(5o>(9^===o>Cd-zhJk+_HZT{hJ0O;p$tS)onx45lfY%4fgZ6)X2*NnN@CT36+8!sZbM8V+KM3 -zu)v*hY$+Yw-n?s9qawM=}vvDNsLz -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 -zAaStvLWWf1(a)i2(tXI9`@`Lz9?9`+V|

79Cx)v}Z41fc{(MX@XDQNT5_E>T8W -zWmE&=7p1c6qY0Rj%N^R<^X6of%3hJ!wZvVyDko7uVs>#RB+%1ca(!IflDVZuf>qQW -zZHmegFe1ZfXa?zfi3Or_;&fp$N$pD{M`N0O2$^vRjvmsc9#0gwDpZ&2ecKAeJXjaj -z8#Wky#(US#sjkz6XE!6($!u7J`iaR+PYb&dI9PJ+1$ATRzQTyR@y^L==FD|63~kG- -zNwkc#Y?6#FT3f$Ae*JZ(?Mm;GV1RrDd|`5`(HLFuqwM4*%D2;TW+T-%+I?a{rA{zE2Pw4G;&vqYi(B~XvW-O1Jl)y+x_Hn$dap(**-;gM3hBz$%5 -zKZ?WNViu4SYiT$2)_$~=nP`5E#JP?Sg5+|FSG6*WOq`g3ub3Nw_WFkd>JSkiN%ZLF0oJ#&9gc> -z?&x%4x`K@VB~6pNrB1|{gOm0QI|c*~>hs?=EVFcFQa*dopO`7bVG -z>_u!6c=wa5Ma5&E?s3qy@R2fW*ImA+H{JnOSzp}%kq+kcNfVLVI$*$bXm&3>DG07C -z;!YCB!v|_pDRv*wvLW-lV1QKqbkp;m9|an}e;9+f&BqbW&a -zfv@C?0~MNC!dryodZ@qL#rd0D#qGy^+^jo5FX+dDO^lnJlANgQfj+stYX@?jP(M3u -zR}$TW9vQEJPFX?ExVx&O1WZGr+ez7K%VbU!y;aJ?#Cxk-s%2lAlkl}R=b1**I(jm8LHX?WNS=?i@#L|F@rzT -z0PnK5Si;u~c>2gUsX8kU|ewr&J9uT9eTGsmV4-szjA|?XSs;?_LYpa9*@y+I -z%4e&9Ro1>0O`1(Jg|PG%MKXl<)IlNf@W+*1`U9*T7yw(LS!Kp1>XX%)}=~Gf%$j_dmXsd+pCZz8P7n_zTsM -zGCwaxvp(i$q^G3)pAdH3@VM&yaQa{=N+5p01* -z>T2z_s)SKqZ};;rTUU=4`PDaeh!w7dxTRU&iYjDjf+MfAJ(B+%stGqccuq-AMTJ_A -zG{o&W!oq!GHj?{~9-OE7u4I$?{o5w~su!kgtLxzXLb61#(hbnI)Z!QzwlnFzLEBsG -zl-D$~csm=osQj8F;-whUK``KR$|=0cfSafisLmY%p-3P4ts@R)V@PjTro6~Z9B+}Oc02% -z*WTCyqb}bh)M|0X$#JN-gj1ZoGEK4cYoeUe>^YhdLpMdMt7xw(iq9?54?gf@5?!wg -z+ljKqc&w(~@$Ez0dv0`Tj!;cT9LP1{GEA^MX}MKEei|k{kvhMU2`d=-zZCm#$b6IA=9t%II;@bEU1g0j>Y+|?EY!tRvSSV -zR`>|)^@PqE{gRBes<4;=gwRUd5|4~L=-3=Uj~QrC_GwFerM)XvT$hz-d>-vu`$Lvs -zm@JF%9~JMV->)WnoW-078?CN)JoX)!K-iC0_14@avzz|G1GF5ris3P!f}n(={vZ*t -z&$pDB=X0s|s_I)%E!gd#NwY@Rt8R%Je5Mx(Yv -z-r*u)zCPkRc^-0+e0-!G|W0jpRBZbGlVa;d!zxn#JEyr~wTM&J(zo_?6jPPjI+VNO7Pi6Jz=BPYB -z0Fn?z7fCSKh)#X|wP_td`N}(XW-LiAu>k>tHPhw{jpuX}sY`~^0b*vkibu_(u%lv( -zXGW)W#SD-br};yZlRE{mp|&J8`kQf7XqwZPyvpC)bQqMRyo}s1UYC -z2a>aFYNph5+mMj}9c>^R8P{c-7JKHLv$)Hi(FZjzz{sMbnAS*W48T2;69R5&o@?uA -z%OszU*8OHs3y7YhN7|~z;O3ky<;pOlbmer2);WPLE-qV5Nex5I*d<*|U}bkJGSso3 -z)A99+FyKHAXFL#l_uzrq;sh=6fQk5GAZSom>c7u5H#k~wPnqyA^ -zL(wOTeziRnRs-1VJM3;7kiIkjPu5#+=wWip?_FHYs*Cp;7-po%5Bjd=)KaxsQp7ya -zZSta=ymSv*0Iy)di#j2NYQhVkK>Z$y@*%HE@=f6WEKtQop8$hHu~Q5b>igaj*r`w& -z8FydM>q6G;@D>i5^mv{Ws$3Ow#u7kF_fc8`^#~yL(6bt-4(4OwR%17*EQa9eJe)sT -zMgrm(){ZO!5PURWx(H}^pGV%rnQ7rHu|7Gk5$r`2+AtB7O$oZ1boI@NYgmF6mb2c_ -zQbkd3T2+sNW;SYX%hflzdFhozPnLgVG7waK(W_^h-m*co^iU8z{RMqp4>cLKcd<%_ -zIRPzn`ce~}^>!{@8%V9fi_#8*SxT+_-MyHq=Gb-KGI)rlK9G%Wy&EGnV1Oww!=Y=( -zxnN;tI0ZwveD6LNxOcNJmSMeZ4H*{>LW(WF?^tp@U=xdD<>dT8Hqh76RE#qXjO?*a -z@Er)-47pSlfPh+uyTrAot4APjN<#yzB-Y82C1)8p3!_5^I-Q<;?s+zRivSy6JS|Y* -zBk|&8rlxSK=zzykc^@@WGo0f1$eHO!Ky&(XV-HfNT3?gvd@q*txank=!BrkM6!bD% -z572CAmo}zmw7<KH;U1ZKv8gVq03+*xen#lGQq6D8Lp9ceB7-V -zfAmp7U1~*>>p&r0V4fgIt*2I3v0t9`X -zvP_;_B+C=!V^sq2EO-J#-CZfDa_ts5dntBKVMVjGR=psj+riRJo7Gl&!^ynE`}I&` -zS&p>jVe7{Fc;80z>e%ba)wXKh&6p37_q -zkXgESw%e1#f)(bFBSD+cYru>vypi;;D{?R=Gn)T); -zS%R=%E#h~B5B-xSik{<=u9-x;0)huXcG?UcCY{Zx)E509NW1CP(dYnoy^pNsV=jr_ -zJRDmx(cm<%Q%)m*vdLEp_`+{pIT0->PXmXH=G|6(T*~Fdi5cEGbVHwL1DUqoo+VOO -z6!H4FlMBO82!M -zc>bv3LC_**bD+On`?l}_=itE&dqWiobUZ7fN~3=7DU2P0d*0+FFJ%p$jy+zn8?C1B -z!`yWaeHE1m3=mJuOojzMT$DlPq#nz{dpd2Wbh|}zldDff(UqZ(;4!pY@3^MuD1c#G -zUBWfIhYvsma)ME$UF1L@N4c3x6aEzE*wbE?c@sJ^{Otsq8st}sRsU3~uiaE1$$x<; -zHWOCu@F3UZi(g144Z=%4EgliM)s~|hfU~4QGb@XwLgQO}LsvMrUD<9-A^AM|oS|5w -zr)iY8`Y_*Uz_YPn-D)oGWs+iY85pwG4pAZR8|RxeJMCf90iHj>xjs&4<#Ih#nVxJ=bsh|JbM -zUCXv&1PMr~_#?PWPYJel3ke@cJ20fhS~4jfo;YCY`>SD8*|&pe46Wov2L}Ab2kR;3ydl6=k+RCCtaNS8etUdj)0rUCVO=3>uPpEk9f35?NPag-E= -z&sn+V9fWl8k8Ys!FL)o(pP`*W%hrNOs`#YPWM4`g^|Mc_huD0e8O@m|T_I$YDzjT3 -z4Qo(Gkm~D<>lcRbDKlF0G5;lK4VmVM$~OZR^wLjZU*|m&SuRgdaR1yiWfC%Ow)65A -z(CVw=2ZWN2o}~^wIkrm}X(OAHbB|FRA3m&Gk{P?<)n~O;E(v!ZJRMOJ$+izWszI=NxYg3#8sd_=7GU!x>`9V9|fi$hM$xR#D%Z1_|?)La4 -zJvjp(@<4H!)$lP&FNoYU2YK9Lj{eRgN83UZYY;BHOTFedfJcCo2YDAj+k$m|%QWE= -z;`&TNXEmGe%U0Ls!rtx@;>!GMfd5wW3_$^nJm}X2a&B&BF2e_!glm3!4P@Ud>?=s? -zNV$Up7(bL;LXYw~z=HcdeY1*^NAbu?SQ5!F -zvTHb`NAbwvDt2B*U$zNN#BE6jyL0+qO&3EGF9lHZB8p3Lz1xXKMp?K<}ufzc;v};*c8+!etVRTR$Se$ka_v2$OjDD}>CZH?Q;4f12QiesPnqk -z{%LfXAFDWtJZ{ixAZG3QG$F?4P@DDDREoWY3z}|*)V(pHiVJ|c05iRGx$_%MDc2Pn -zxohEOUcsz)qIag_kq>QQ>G;(6fuA^Ji8I}NH`Cgp!S+Y?IIUuU9_!3iz?U!==H%sB -z-R}SJ^srq1=nHX&O{|nJfJt}C$I7*IOb?LwnqTnnD?C}`vH$WX(Dw@kI`Wyzeo&#W -z4OMqNz5@CBdVwK+dF;^JngJ$`zDr2X#`_?2`g@BKhH80Cc{e5dCzkvu&U%#5_CM_K -zxU=UlE$%wfbVV#B6L253ttU%^^aWUsf}*QSmz0CjLHMZcYBHL;(a)wQ=gEp@@D2hW -z8{z1FR{=NElROP#mHjuW$EHVfw67BLbp%y0LfZlV05m@ynn -z8~wEQLE%2}DQn+g7TsY&K~fA@Ez5Np@ -zWF(r(w#)#+xRiEza`%oON1L}|07rk)_PrQ9j8DcQoV1a4(@@MQ{u7M?ZLoF7Ryy}l -zTbIt2xn;|J@9vU95Fxm^YYvK2Ep$D026t)zBw#OX3vg`rn}r_TK?VmnZSxXjXO7fXSk(s;3wlkzZwQ0w(DYM+Clo=mqV(i{|by?wiqzsQIJ_RC?d2I;y|#y<3;1A5LSp|Jx^B&IR9NYiW9WSY%F -z)o7W7U{&&#o%>`x3(Xk5wlf*&ulMgi`4n_5P^^7?0hS36T>3LDQK(GwS23jHB0QP& -z7F0P<&_&UT-gXG-1${~Hp5 yac^r%Dy>CHxRwQq8ZEo7yy{(19HtArjg#n>vD{E -zfui|^d;Mh-nUn1E8-IVuz@rTWl07R))vWVdJMMfd`dr|K{J$JX&xg;hoqIzyJLEBAkx+ -z1ZcU#?sQnxUUVNcS=Y3E%;X_#d{Gwl1sOney4_`Z01ia6`=irmS%vBll2H6Hrm1JK -z(Ax0WdUB-@gYMofom^+QL-ku9&%M*pn!?8ie;DsHk{#388KpTlzArlQ -zQQ?NX9meOD;?g}unAnnr6#Db``JgMEwSmT8r!;AyyI$quX)ac7};HP@EDTRm?dat~ -z7twRRx|Y_NqEdFc__=-t*ff7#brfcjM|tmJswh@G@YglnuLEAND|3vO`&Qoo#H5ez -zY1m+}SN}~Aaq$LHgKH<3v~HE&FLKE?EL)q_?fvVT$`Fo6 -z0fHlPt$q67GaV9s&49AZpb=hg)~9nr-i8(xZ6CklSMG!UlE`6rlEt9`qAig2wTCvW -zfwC%iC5@*5Fh8zT&PgC6)nT^{6CdekT0#?i!f8L3hGPS{OgS7Y3v~0OW%MQf>zi$e -z2@o;bVGZl>j#*E46Twpq1#s-n(xLU;P;k?PrYKiPhWpr6$kVJhNZIYd1-8)Uu+(0j -zr0@+=+G(Wl*MMdXMdyvc`E^I1V{bG)VCIGM=`EJDC^wAQ*RJOkO4n?^`x8%z8Op|1+w7FIQS$eQ -z#BA`m&zKIH^cvCRr94ggRJY+qEB4SRY{eEFfG6R$EvTLT!-e9=Fb~|gh&R8*ji*=Z -z14;pmsgb0eT@9DL`OazX4v;pT&~OmG-o`IWeM7zl)t%@9y|Bh-)feMO$9RrK;xaOU -zm{xn@x)>~&cAY8o8Etw6bE$Xy@uQPnRn}et4K&*DdTS$$Ph8!GKIoOTIimQGV2QnD -zI__IHeP0ZXiS+JK(s|He(+%7KkC7%^v@^&c%fS@MN|(dBiEd2EBNOxDJy-*8+xA7yG%5gWa{bA-Rd|Q%Pw^_;u=ATzR!m>D* -zQoI7BJ=&%1Ei`<6#HcDi?TQNrU+) -z+IZh1*=LGehQic=3-}yo0!&Pv!-(6afExk?U+X7$M7fNH-K=JCq?{D!TG?aKLPAdt -zTnO3_bo%7G4nL#?n)%?}btD5$ONhee7NRBO*zjQA1SEC~P$fTn!%7LYX4sS`P2chB -z{rTnkG3i8IlqS7m89DSoc6j^t_Ae$(kM;8qSENnAD=#&uDr9P*q=v?e{83Ob_~1B_F6&U1)@!x=%#j-GQ -zeTVVlTjU$y2dfG#LJg|B6c7he%b79*9Eb9MeZze=&^%L!#Kc#B7=DRL{=NR6|n>XUY% -zu!sJvfFpl8>(L>^?Yb`_IZ$%JF9|s_b-ExZpR65FVCFcYc)>!EF&L~cy8%}AApfd4 -zTyYKin~sYV865P*H$WD3RfaP<1A;G#n&a%x3#DiQ?|2PAj0KFkTNY>rAKVgeoew4; -z;A{@4DzcKw>K-(9qbvxDQ;-jx-4pfaaM?Tnm!hitMf`z6#YeuftlL$Jfej~hJ7kEO -znxTo_rUbW!R<3m=><*`xQ2Y0YHp8~=TZ~V=N?KW$MQX3Q-42~@{a{-G0!Rgiawo$M -zJ-a3u{5n;OMM->KJoiESj3EiK(KSEK%F}Iz;M(8PkVtKo095##qxcVs!NtBzGeo{_dVa?LuJeR~dRnqgCeD>A5ev_Hiw$k9q3xcQ -z1daCt#PEu616X$P%Lvti&i4px9Crlj)Kz+Xup7HD4iHbJoM@4L=ug4O_aFInZU?V0 -zbC;^O=*;}{hdUu@Xt|#ji7I30Ue}|-KXOK|1+{ZBk7HU6nD+rCds7M%X7Wm2PLYE61lN`fdG|&%A -z&eee_Itqg(%$qEERbUDE!qB~KfXuWtC&C}5xLpJ8+cW@~Kh_6=OT2#l%idjAP#AW# -z<2ij$4YRlc@HVI2QEFz#Io+JB!DfYg39Y93zFJlSX@zu^D^QEaz1l*YqPNsTTF_XH -zIZIL-hYiv|Hzr-@-BkX1G2JQPbLZZnS1Rhk^$=knzl85keN1Xh{1Y8}f6o}9OD-L9 -zu9^AnnoBWysLC;{e6dKFHK-wHsVYcZXfYzPmIpGW5(i*G -zav;PhzvW5s9yx)WP$Vac72VWTM#>RE5fIQvEpdc>_N1wV1Zw$NpPHv7J`qo%ywqzd -zR8pGvnLLzzk^HHAw9l!g5hBH -z59Ja$#Vsf6!R{hwni6=z^sIOJeLLxY7x^!%rXTv+hDeMFC!%@!AYo1WTVFrpGVztt<^tzAFXU^1_ -z1Lt3i`I}3`95@0z{O=HAjYWjZViLJaj~sP~R%~OA{C?1l0q53@1$3)(ruv`1p??@F -z=YGVW!M^7QghnY||J7~)TjX!e%|pA!>DkiL8PFdjCA|hTg&S>D%*&U5fk4u{@5xBY -zCy1uQ)6*uD7F{Q75zhBXAqV7cIi7=mi_K(eFYfJ63riW~(~)z(`x_C#GL{3RG61(b -zpJDHKAj#Ox8y37Vq<{v2qa^N07)0{TVe2aE)zL+WKTVHm9ru;Q?nIcXmPca?)c$u4hmj-BC`voLo-;0-~tZ1Lnv*Mf&u_bHLcW346> -zmYL*}zl+{G<_G6;IsXVHg&qR&G#z_uRt9L{mCWf63Pn$}{)(@F -zYi_*2wPUEa9DGLe2(-cSLPlMG?xy?+c}ASV0-w&hFsIE|6VpIBrsy5tmI5Wse?1x? -ztt#u#sty{iXx+7-4M9D}Xt5wXG9G&tRjQc;Zi*dQHF{|BC35LJ$1Eq>AnpTcp8lXc -z5{wttYGuN5lCwNu=C|o99ezUlZQK?==V6|_DH$W>%Htgvwc3IOahU`%QlZ5i -z?5Wix7E^s@HXg?RffQvv0K-8ZQ+7fWe;>G_eB+6t*32tBz1xN350z#Ahg1dkT^n419puxukK&Il-Bn34{U8^b;vQP_YCxN9fOu=VT4<;J?04YJDP|b&mNVU^ -zo;j4|@0V%o)f7g07=Q?gijw|)DI4c$CAX%L{DHbWWE)^M(P*jj_90+IP2RUlF`a}s -znU}DoJsF%=`Zd_{8FZDcVjP&ohN~zx-|#zo=#Oq*H>4*)FJ)4x<(HT507`u5msjL@ -zXJ;t^l$}l|wiCKpOxupA?J>o|?--8p)(a>tGr2z|cM!l!vOa8DKpU5Wt76(bII^Ng -zRK{-cV*)(*5u3i&-$@?)f;0&&ifn54|H|9r{>er8dYj^m_KTGw9*r(&bG%y0K#}R^ -zemAf>1Huh1$jTg?J)XiaCi7aL{6R5rG0sRhD$rYxHDCK}Y>O=&23?wtAx&hiB)fZ; -zF;UoFeD?|gL)w9gUyna4{XrTE=W$F>%q!O@eSv*(D|1lvVU1e!?bGboyM{sZClCUD -zfedh*Wgd^)9fFEH5A|0RlyRf!`8T5Q%kRPJzj9Eq_)jp^KW#b?1Cdq8B>P=|c0TsB -z_IF+7Lbz*x6uBWcIe3G7bla-PMZs8`b~h%wwtIru9;I~}Yu+DK7Ks)uDY(j6p1+K%8c5L|0 -zkd=Dex=Lo%EV{FXHjO6eiO*E~DYD=J7{wVm>75@eZpY}igw?Bp%XM|heFGiLb5@3e}m=+XiGVMXVCzd{-=_pWnB%~TV*+rI{_O44Ea4f%69L>rzq2EwGy -zg*mTf&yg|xUnSXQZL+n&GOpm(1eu>aK#G3)s(a=R-aR$D*`1+ru??u1{4MrD4y@7< -zdPT^RTFPvL>Hr2>I5bPcJ -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 -z-!iwi>F|i;o-WX%$48#H{t -zGTy9Tk^DqHECfetNjhBDUW@Llp+s1c=b>4ubAwXi%InL -z^~Ybo?sOsxv7k5EA8^w0>B4rNceXz{ic(XFWK^5oX1E8XLpCx|2gE0Vv8`Q( -zo;Dc>PAM=0wRF|cK^liEe5h=3V;fs}IVC+}kmjjciki^0em8NDKOcn^bg2`LKAJ+dIKzgbBjFyc-(G+4vqzZqtOB?hdSdX -z=IqF+b3BWVX<%i%=HB2d{2@Fu*TZPGmb?WqSbhXMk+>$hNy54m%5XHtuV7KAwVi?g -z0^gWVZ%!CUYSEIxJ>KTbfXKeZGV+fU1=c*|zdC~G0XT`iMdlf-3oJJDj?WNVRtg$FSO>z -z`%!Lrw6-wo(zVVB4E_V+MY5b%$Xwg)VNJprB0F>B1x4G=pj}`vuX3Zeg{eCVo=)_l -zY|CQ3CZx7K^%Y2^)POhG(rvN_^K!mESTXBKP1+{lY13P%wDpK>U8Sx}5egE|Un -z4k2Gy?3V(gqI|%7D>M6l@oMXyyP}K6FKKJW&~SuDKC4;c_pl%%nFXM0=B^QNy*#CE -z7})%@jAJo{K}2E^of3t21@SL#Trq+QHh)~WaqS|MFv4QmW}d0(U{$P@9YAtPi{=)~ -z2rPit2srb}&2c*<$K+G)g5B0wpd^?@i$d@9?c3YSt_N#=md`-m5jw4i6_}M7`%2S+ -zA*Si$b{On`jmvz#)u|QNDcQ3X6Z8=tS -zm|7nRc@gS*L5F7pJ+c(&#^sjl)A4%g#tUNsZ6*#N_hvPe+9DXZ9b!*(O={v{P74Qj -zmVrY2HW!%^Stf8C?7rW~aU#2O)ul!zT9ZB4u>xH|>&geWU3>_2f!=t=X7<04kxno -zoPb+EU79}dT0jSgOYciVa2ha9IW|EdF1dOt*Ip;;QEcVPaU}Yc8@1B=1h(Boyq-CsyIzuez7Qh(7 -zG_m4_TjMTfYFy-Np#OaZn^#87xTz((5O`d~!ax=PVihd5z>N?bx~a9kln)n6-w`Qss}KI?1=u&SWXVt!bwHFmfMPp|4AUpLvmjvq_P -zP~kek25~7iHegV(>{kusa-&aD{qqjnUBy`sv57MI(J*ftr3J&ZUTKe3PvPECPltJ!gyKF*v&lvUiJT4D=&j;Ynr -z;)%@)on$*siAtDv2%-wPyN;}WgZ9_SX*hZ$%^FGJ(1Co6DAeMtpj)~=p!QhSPO+eD -zl=z{snvGewQBoqwXpF+;dC?rXT~Fi|jAgJzi22OE)Gc0mV6jRpkV9_T?Kr_ckOU}P -zRZI`Y=?S+jkdECroC+n9BfvrrA~p=`qYw$qEZm2!ot*-`dpzdO@Gb!v$3+_Dv|k?^ -zeI>{z>x0zhOF%+xpre&fLKBdV6XpxY@k8|aUCg?+5wphe!B0Wgl<4VjjE+ujKi@v; -zWW19f1E)Nr_4(&8mE{1)^Ap7b^ve5YLXIA}y5J<5&B0|w;RWTVu$0&mG%+8!6rhP@ -z_^v>7IV#Kycv8$R -z)-A5p&G;zw>V0y{w4jwh|JL1TSQX82WU4$!+IjceBQj{iT@mhQ(ef$l;IL0=kR*i9 -z)xqhnTU06lnV-W52EMqQ+zNHN3sCF8@T1mjC=xRdJ -z8CZeIu*hkaiD=TVL+a{X3v25v0&F{IkN*?ubBjsY#?w%y(v4_ -zX@XRO-XmLmb~E_{3W^1>fkgh@TqXfIjbUPGa9+W7K2LBkY>q6G9Cuy~{behLN#kWb -zD1IMS&x#btoD8T0ELI^}&{s;4*&PMv;0@3{*Bt}8GA(D$x(hIt$B-k^B|IKS9`QC* -zr)-v3&Wro^mttk~To$oSh39cO-B5)1yp3bGypU1k+K5Al*ETql))hS85O$8^Rxncy -z2Ri6zt0%X1M8srd>=4N1pcA?b!aZMuarNz}8UJH;zCEy;*t^Qu$;EQ<@> -zzQ$5=$d;B6fS0jhbl)vzOe)9s0;sZz7YsiZ2Y?0T={q{~DK?wolH597wB%NOw+$C! -z3`@qk;)uK%tjP^NYOmegC&;qvuDwkl`i;#Qe)qL#%jEKvtR;|NW_KPDSS$#6;0YnC -zjI5MU()i=WgJp8xZZ2X2E{X#8;Ft?~Iy2_k+8AvVjmZZSiRJTlYm?$KuDqhav|0wD -zbfv7qB0ctcM<2AL`nzUn1hhtR($6X#mKb25csFu3jo;in%4SO$pvl0dT1-#8a4_Tx -zj)9M5dR;IC%pfd#D;9_>+Uyi^%mc`uaBdlP7yP}P4Juf=hpr({KW~p~H-YWbZV+HU -z+D&F#Jz;I^sn%9Fkg8 -z2Q6(HdxJu+yYoSFhJ#E$0tpY5=d`9OxJtKf=v^72M+ankS1ncVc2lwutEm;R- -z9!+?^dD%9^BW{XM%IuYo1qTnaEed2~Q2Q=W+p<*7g$Ht{5KyLT)6Mea-@d)+y`$W} -z8)for{+_QqZa_5#3dSqxe(N6V#Fk-pN^Pm-HC)28vL=Ahf+x1PSxe8oj^Y-Sb{BK+j8dphAw8kK_ALICH%88Ia4ax69E*qyol8_$Cw#Jch!F&}U&rvi5&G#lvIW=n51jb0#9h_UqrF~8~ -z&QY-dlXa!bS^)c5(p^2K@y=Lh;K6OzWYY-JI~jO{o``OTqDutxAkHPbJ1tpqh^JoX -z;0V!>sVkhh$OhHdQ8fcq#1(LzLmR-(pBf!ndcqg{BSR9N$Ao|2n?B8Of>%*?`P{4n -zW_3-A>H2Yt2Fkt?($FR;`#cTk%~P$4G5@48u_?5Ipz%n3#(SUz{LroKngp^DjXEce -zAv_@r{qO}5ue1T0ZW!%(&r_sCfyGu5@i-n0+%+ -znJ=7g=@G}XOKewLLE?Khyg+KZOpGDfBtdEFb4Dqh;*NToUpt08OA_2SH`XiX7GJutI!n>*N$52fwimWr?Cgg$EV*PE -zf)=6}>8grha?%K$(;~@kS=1_N8IGb-TFe2xJL@)R92eJ%M*kN>ofch_0g$>D4W`nC -zke3CvA~B$D7dSa+=>ZgXDli)^fNDePVpCRhs0lcqS-_^;Q5V;{ -z@q&pN-3F`BR}_{XaQn<1kh7H21o4!@#?1Rb=DKNwh1RbHqG%UuE<<()v%l2gxAY)Tr3zNTmLbxjj< -zgG_2hsbN}M#znIpD>ozKxTlU|v@kb-OqaHUu`N=sbR;?-oyqg7&gI>Pqt&YR3Go6F -z-yE~+pIC}OfK9fFc;E(GpUX0A%sINmj8mtGgT2zd!0F&Aj@z1XWa4JNw8V)?f=w`& -zR9z%>X_3!R2L=gJ`6Ib|;7>FtC{xjijE1?^s*Vv%Ryp)X;v7XzIHVf|t~EVd1kh%{ -zxj})}SPS=iO1ch#VdxPWb9noX_SkrX}dfX63ffneo-MP_4ts|!{*K{{<87s4E -z(~kG*UBbmq9h#G^YWlCX0Vr -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 -zRV4sPK(@c9qik)L{jqJm$zk5ECK82;%b6b@l -zF3O3tlJW4-h9QH@&BBeFnpv)oL39HkiU`%d^YwtLJR -zWnrF&P?YxPRi0Mvk*X4Wl&0v=1=lSCRZp6;HP?1JJ?s -zYRDKkYvM%su9PG)EOF+|hk{>|ye1>1DG+y)l!_@SNe7sJAkX5kAmO49qg~{CT)CZJ -zxBDxw{B+V2F|PXm@JeiLp=A2qIL=HAWTqt{EFn)QE@rg{^fGv?^NzSX -zHDzxlVmRhr5>A2zHFfJIf;*ZRD23FogdW@SMMLbM_#AfU`KiI*wp0kb9@@AU+`z;{>q(Lmx0SO%jV>B1@dDNt&`>Z}aGNvdZzOv{EDJ>`8 -z$i(N(p(opU6e`_U?rW=Qj|?WQA^PpZu}bB -z*Q|7a`sfdO;1e3H%})zG%Lo|z5SvM-#biT7J38~BwiHq;%9O8()(U)>QkFpgWmv!5 -zbF0@XC9PA|0j|t7Xu_I28PM0SvvF$Z!z^?I+0CD&hZvVq@T8!%kKzg=he2+Z*&pfK -zYr)L3Ab;()6R9mkq)yCc{$B*jR2hf3L%@*JWi)b+K#+|lqmYITh$Uy>(QI6$@rBXJ -zKx_$Fip>QWwzfYS@(lV;#bd;q0k;556f4LmVCK65bjr&h6ImeovCc&pAtT0Vr^Zzc -zc4!*A`<^+2pz~rrTN^MCsWR -zxw?2<095ZBASmi!V1ssf27n_l0r9UOYI!X&gh$o7zX-8if6%NoMjfsL_Xp+@`(<&J -zy$-TD+&u6ro4Px5;omw&`-WnCe^lzN@qd6cT~n(%l|*K}yOy -zf$l<-P$VbqOvoE^Z+q2Ec|h*D{*V` -z+#I${^jm^<&}x~JA8@0P?4dK#{LI*u8GWxMpU!YqT6bR*$K~uDz*|D1Z(W^=T_+~_ -zlGx}3)yd7M+axo}6po6brVv;$15we4LQ4nvK5>b7dR?_}1l3G3Z8HYZpFP&cEzlTp -zS)#m}F>-$d|0{#DE?|CNfSxO!CK9-}l$jAAX4x(!43>e3SN_*m9O74)>bcYh3!v#) -z7p$k=)Q|vj^%5q0gF>o+t8hBA$!8?XOq;?90vnb-RW)Pudc(j5P#Hw@lhCN4e4H{+ -zLfwmWm&!+p0{{ERH_i&?8nG -z9(^r3i-=nhR*~Ws8?-^`ljm9#U7hu$p#4*-p*3KX23MdFVm&`bw9_m=KU_(VK?e1( -z%%B_xm|F5&@3|-70huH3gNN&GJsY>egnRv<8xM_LG55KxZ1F7cz!+3o<=F=@n~*^) -z%nH$z#mbR&#lo8B74Q=jZR)%OB<>IhV~^Eu*#|^a@M}&;FD#;3kO~=A1@3UmF9~Hp -ze-z#gl7k`Ntcl_*9IAFUHcTHRe8A4YpI&HdWXbknN6Q;)^KK{yFT&KM$t3pW(K_}5 -z)<7?1FHMEEcUuu*vbJ~Uoa4;h6;&6S)4c-car2h}SY2xdNc6~B7Mrt)L}Lw_f}7V% -z2cFol*WGI9yf!hvi8^r~*3KsAc5VIDg}Z>B2<#-D6Zy>KEuP7G+aSzs;&7*B5> -zU8B^i3o#LBVGD{rEnuHzA}IPNTb%Y>xaZ9(T_?Lh>xJ(y=~b#H -zbtay4<1)_-!N0*a)#aW5IN|L?r_MfJ#)}T|rN9w6{FI5$3y=7UCjC`8UpnU~wXc`5 -z@0jq&@ZL0JPX#)lrHe~~4 -zdUHmfAyx^c@o7Q74i1qHxndnj2w~nuFX`j}^8RozSJFBsFAA}5l~rNaLRm04=8_97 -zO>+4a@ -z!&P2!Dl@L;mSZ4Pd;mwdh7Wb()2&NagcoS)mu&Mvb21j~H8tR`DqJ8rSY4^NKyRNKem*nOS|$zm3Q-Dz}W>KFxGv*3RwPy5`7eo?07V6X(O6 -zHU#L4lbr%bh1~lsC}}_hV_z(=Qr_%<StABrSSkF`pQ#gsjCh&?|S*AYz()i#y&GU -zF1OARyb1e7mPeKR7Yj0;5!l-rZj1X3MYOVWd^MD$lf!{BBOCTos0+Zz7jw#a5p|+v -zZNSTIw|V>WP66SO+igUY!rG2mBp0pVBgJamZYf`a%t2HfiTvUqg8)c{P8tO4IX}*h -z5+_7_>KeoTM2vq+$mDU>zGeEOf(z2za&*}Yw^pQ;XMvFNn)oBc-6bW&nR!i6`g`S5e -zCE6qzWM&`n%fTXMI%5ML)3$Mt)fULV+fi#>>jrg4?a7k63q4Tb4lPLin0VqW)FN5w -zl7Is&Rq4!O2vX%HOQg*-W4adHSd)=b3{@GJVZ)^f^5-;~@YSuQ;VKj^$hwfHV}s%M -zq15iW$~mHmqBBR4l55Y!B5#%pKiHYML3kT-REzRiLY8TqO-EIPnDM}e8)A@>;AkzP>fgD`miWl|SQdIGg=l#k= -ze{#y$6fg-+m5dox4#cBrcFK^tM)U!|na~E=mWs67O?2JSb)F$#d&CN{u$*k=N)M2p -zN0zq1Bj>hf^JAG^ODbb8xEL&=J)FAB1&t;fs?E<()eYoR3OB#fQ;;eDSmYSsBcd+$;rFKP^S#* -zw65EOW#G6^z{Y$y6yJYloKYvIW(7gFrrK4^_JrLO*d?(?NCx!A1=XkhlCIY!8lw>I -zfp!Npuj%CBj8&;Z<%DBB7Z&L9)wVHnkN*&pNw#oik@Fo3%6=@Q3nX}!As=Xm2xlS2 -zAwcdP_$y|oI_>+Yos*3o&C8^b-*?Eo&8VwNUmvz3&;VKoGBQLEDvq`77(2>VK~oUY -z0afBj1P=ob=@2sE9%!(v;ikYT*KtE3h88?V(LCk{muDFsibiuuzLw4pO_XLE!I;K8 -zpiJOIJmENn=(}w-E>MniCu&@5QBq_i%g3KS8eX&sSV>Hx)E%V0}%-gFt0j4kH^i7 -zBpnUut_A3G4{jUD0ObvTk?tyFy)140PWGaPzSkgut0TXaf+p()&dvOttpwt)o|{mO -zg?A8-uz0x3vNAEd7J0`^6x}5HABR;LoF%GB1xj*YBszv~*GfBT04IVwkY<6n((-U3 -zf^#bDDENl6Lz=17HY1K@LI)3)d`2?MmQiED4cG1F-H;-430%FA?G!2I5Sr1WSbpXV -zBOQ;ut79Dzq@L7r_n}YTK};snIeKI{dfAFL{*G41BMXyq%MB96vK4umoX*NC$RtK- -z-M|8^rfn$O5bXwZ+b>K?`mFD2?*OZSj*?TuUDJoa{L0#!qYH1FnFQOQ!PLCYG+YyaQ*s{(+*$sBuoTIB0-apXBSua^~Y% -zmfB(NV2vHRxe86`_~S1|O`5Amu2Q|CbE|GBC`5d^nCft13G{zNNmOy<#_(dz(8W?f -zHL4?ywo3+*FUIa#GqrooFoja^Tv@CXaK&E*`p`pJ@~&S@5@17M?veVqSOc1xyQd0h -z?xgEq`dx}&ELyTtntX0<>r^3NbEV-lET!jl?;1|DBRl+5raQ#gQYMgS@CpqOnKb0i -zfI*jTos5x@cFglpZLS(VaH}cJMsuT_UBi;~x(RU%!Ibzi9ELSuMmPQ_-Gs(8w~|@A -zo|B>o5~m}t>{t}ytw|{0m`{5r4RvG(e_3G6J&hp{gQ>@4c*RLFUhnI%xhnU6P3uGU1;4X`e0Gb24XkMopPruDru{5={R45@Jm<6 -z&u{$HnhpgJu8UBlRT@aS_#ja)#N}y1=Zs4jDTKn7mFtufw!u1u72u?@a|TmEq0G8k -zID>;e5%V0GO{7ykzhac%6Bv)J<3=&rOg8UUj>Zgbr#HQ=BH+SP#8dQ;_^!{zXU>b; -z3>&fi^GwPwGTG}CL0)cji4<9#np?mn8oANRv -z`nY)o+iw2o&}O3FB#VeOSn~9W>W4#HvidxoT&dHXwwmF~3t9H!dgRGK?o@`(f7}X1 -z4(f@vFLT;B8Lbtb?=qrto#zx?6x^9wvrOrE6fg@pNR4Lz53vvt!*o4yPy#?O(uS}^ -zb54K*7xBV(CGKFSXylSghPhH4u#E+`DvU_D8A4P8RFsDizRMVw{OU_Obk<1Ip_)6* -zxt-K^dA(kEl51LzHZgD;k<0D7g#26?MThRA;1hLrk0Slg{9!$XXYr&C0df0#5}8t7 -zSr7<;7CJK9=7BKL8_+8ja6<0`dxd6hZ4?E}56dcmTD2ne9XQ-mqxnEF;R?8*{d548 -z#$B?a{Mj4!Bl#!N81>7Wk~)BwmvhzZ<#MrrlMKT)E{?tG;Fv>W9igh%fv_;KnzH4r -zB7AwJ4ibGaMhb0*y&?(L%T` -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 -zg=b0XG -z?0^lR2vq*5QYKPTYfKdEWn=Ud3HZe%Mqs7_aWiut994>_>efvsO{)xSWg9bg!C+v_xVcT4!Lw!^D!SaP -zCd3ou$c?pEwE1+aWFa|KUSwe7ddW$1a(#FAkmd-;RCFr^(_CnB1CZbMU~)kCXCE<{ -z#)(K?xMbH9;dw4-anl?CtHY#gl~5eh8M1@!D>cm3rq6eRIhXz?>-5A9J|HC6rpEL4 -zOxQ+Y86)TP>&?QsHNIzmPzTt4)xV<+{s#GwOk2sy#wEyQ@jXlp;(UxyTZ}pLLvand -zPZlPZLDIuIakiCTLTH&)*5J2ghEqI2*@ts1{vOWVzjSd@y`MOQ?&24~x0n?f -zK$^@_oWb*`Js*p=pk>Ku*fga6`_i{3?*Zjq8l#3UTg)?3ojVFch7iR;TH!S`ogr%g -zf!4Fp2~3wYju$aD7hfu3muaSNCWq7}=x+)owqjl{iJL2+v5Kr))jhum!2l9q-RSwf -zcT9#W1W}&PWb=7RO0OEUZ-$~WtIaX5wK%L80-2zxC6{$J;Udv~$QW=X5EzbDB?p$S -z2fqGH7R^j+L(M&Nd2umoQRd`9o)aC4wj<$jbAGWsw0x9g3YR7A2yUK*C7d&x2sFJ1 -zxTjZ_P3E>ExTR8(oYM*M<O>oI3#SAoiHgX?B*J1AsR&1BWH=ymq^}yrl27tkaHZ -zoU?6n?IuL2zi(_5wZVJdBG2~4DLjzNV#%kHE~IE@ehI%M^@S|LwU0aUh^|jan}hg9 -z$TlOdkN4__&pV2quv^IU;;zack#`RN25yp+C%JhGXLkE -z=MwEyOa%Penw`rWv>AGq>g^jdHOreH-@h%inIJ{x)2XF>eYyDEuEtPS%AYXlCS+RA -zVLiL%kbC&d4#KV>+DOETN=(7OKC3RsJnoq7v6We4G+b6k;*c=91L?V>~~?jX#@B91QYHXPUZt!j3kl -zWr2ZPY(~x8j&ePbjfzY%R-vsC^zrvjURmNFx}45 -zzrp*97ObyysY^K%^1VW068cq2V*~>33@MhTH%WI0uO%59OKEYwwTeZ7S@E==fa|ra -z8?a^A{0`j`8z<8lAam6B%cozm7^$jl33zg)Tcs6_6*#`Yu?qvn^C>T7ncw;0ajMPm -zS7=nzegQH9O3KgGBlaGKqlDOqUkxX`Xx*mB96MYt%$CoBY;Thdkn~ly=pGbr6!K~e -z|LnLS)&@wbtrre-JrR$Q;Aj3o)FHkI%tTjnhh6!ACow;WgxP^IFX>p2Eov?059*x* -zsM^eu2wXJ$-NUl${P04ifA;#kAyPUZ_h*1GQI}C4CXn-jI|6C@;znLJNQz>a1*x&` -zawTGH)S7kh6$L7qm7d9y1xA0oqvthRne;#=qR0_;dZble6}hg1>?Kk_wtGY>uXF8)gkVmIrUbk{uikIBOxlAmHdSdo=_5k2;`{3P|6EL)SrLyV@RQ$evqS-Yn -z5VGz=XB87}e|>O<&9+S+&PfdmT^&O6sxuPjtan(@ouEUqPQU*a|Ao74pHU~{bn9se -z(`-EAM;KgM=Fwp{26U5Ad@DS!8_Ou=BE>O)Y*WN!(G9j3B3ou8g5*Ld7+{n=?uMZ! -z_piP~GDmaD&)aLJ<>Tst9|FfmcSE|?Ub)If-XQ+yRH|q*dvw_$KJj`29K0iv -zE+Bq1$s+^Z;;_3{g5xKJ)YtZuFvNKg#ol(q&8h^Re4TWJ{$yv#R7 -zfgY;&vgu^>z8ysxb*p{jO_U-4np&Pa95gDhtR -zj5LV`*A1ZjzOHn~QK*7>8DQ7xLrLEO)^Svkx9lk>q+F)G$@>TlpMF^WK>$(i`Ew#K!nUo%a(o>fHlSw0lYGom;@yyD{+$1({&DVJ+pUq|)q-3~xWJs2W5t39a^;w0xuq8B% -zJ=0ct^jo1OYy_6D$`$RTx=RBl6%Y0qY#2Bd4Jgb>MeY%X>3E3VyBs+Plt$N?k~7lg -zVqrg72$LBA_u{qBGE?a`M5N2gR?TeuGP(XtS8|oCk(`FrOc3^)+68kgSKTXWYE``( -zjXMj5$6;$IRx8?Zm~jOS@nB4$FZYV3L2+|L3aQX!p_z;(2U(x&HAqJ1oU?hNw8dNm -zhV8_~h3?cU^7~h+SMP4Z&VDcjqR#GP3AbcFUZvfroaeEIHetWfzFxrQpgom4hS*3l -zLoR%{qOm;7l)WxV3Y>~sDedf8!Z-XJU#hS3Jgl?~4 -zxpBk6UU>VQ+0e^%S~soYUugASWYjNK5YY`ts!Q=9#BO3~zDW45)HB1^oqT$)+Uz1N -z-Hr2>6D<=!{fsX5tkv7EZ{Hf52aKFZ4Y0fNeq*bER+u?mU9XB6TWm!)kjI)Ulmr_C -z(L#IhRl8IWy6^#V(-bEI&+8t))7r$Ja{GcKml=LW5JQDAXOWmk(Gk)tB=rfBg?k1I -zw~*%Ogo4MzQq_tmcp!FZfk=io^A7J&5w1L;f5?m&(l~aUuI|&+~bwL|9Ppz3% -z+I!@+U0paA`S$cKm(bDha1O&$JH6Bs&inO^7CtjeSlPoHuquvI@|ADel -z?6s&G8hax)qMWqjc9_vIKAB+>vKy?gdqSL&flc@RV7_UtRPv`0LBn(l+KVL)Cs6na -z{)|_1EE7-riw(GZl{UHgMpNZn6dJ-oJ0vm_wu6%eZj4u$gYoNnE0mPjp&bHjl)8tV -zlF`7Iq)tp7SUy%f`TCwbyMfqUVdl|mal1okVN77Dr&`>~4ZkH3ETCU^|7 -zM{EC?9n3nfLOXR)DL{O#fR=1_h%QVc^kQ8_l4j*eO`e>2=73oX=`(WH(=ZvT4&p>~ -zNU*<#-szg?IgWL5?4iyj0jbF#g_WbXTm^)!DL2Smtwe6gS@rn?ZrCazXGo)FqlAVjLbHi;ojQn=JM098gS -zXPI;@kjdR6ka8w-$o?MUX0jex$?G2bf|ZNx@TTyXfOO=3rk4#DT;L^LFQ8xEV`iM> -zgkgHbOazP4%V3m?+-Sx{-NDk8uhFL>44`UI?yKY%kSXs@1se#8q98qK@oSyG?rB%b -zC{0uQb!1*{*IgE}%F>gQS+EpD_1p+ai!pc9VjtUs-Vn?s7D!9`Zr|mKgChSWV_w=+ -z_F`N_3sfL1c4m87>1iT)!fmoA!B-2HuTH5c{nlCW1duFtwaB-4&#HS%*Oa8FJr;Xu}9nVrf0eVU7Wj6KerDJ2luopj?+sFC;v-S -zN&0i6Ip-fxJb<%lQ<-H@mI;l9-j*T+5>P$7UIXpe$Y&unUd$v(l89*{-(sq^%Hru? -z-@&2h^L0kcQcR`ZXdU1lNRa`kPMTyH1B_0`t_ql9YHc>{uFH7o*lu30&4@y-eb}m< -zkypMCEXS1}jVPGVQ&%Sn!Wkn9Jk~p&`!)cLgJilu`Q*~bX*=~#p@fwv5Lr#72-MjX -zQcntTL(PY7)IE7TqagPhF|U(X))T( -zt2sPWsDo~sB2pyEbVoLK@Ej6W=>v=`-mzyDJ+O(%)NXqR5TvL&L$7m>rAk>;Y;e8WW|@_+uHq}XYRBc{hF -z*)93ruy5nU^a3H<$33La`v^}4uGRg7id)F>umyea> -z_QyBo8d2L#S2H$g+^xy!9+t;(#~#|RU#?8pyFM@~Va{Dti-L!9Q$;fiA+6FND_ioeHA70T$R>HIgnf+?_8X{Tz6%X&W>)q7milIpFu29H|@l4Sg$ -zUW>EKFG9_n^>M-buh&^Ww(H?3)+Lx&{e&Kxd?5EdcL^Vr=dg>%V2IO4!D?c;jNZb) -z;)$KVQr})asNxqSDWhGv_%X}|=xhQ^SSZg8vnT)AE@Nu0dvchcbaNwDZ3O{}Kq#zw -zrCp8}CMFd7i6wX|ysc4%lO=MX-=`Y}LNX0kMFp}Kt91(g9$H?_v=&gF32vly>`hUK -zg)Do@sR?wEl;zb5;c0z4tDC-)okR08((=~)4{e09H5eN70>U{E^oZ)S7b=)=f=^yGyqj{B~y{LJQOK$dl -z52mR`mKl{9?6It@`u6Qt2(X^Dh52A~60Yur8b$@& -zD7C`6-lI+#K7~Fz;K~iEhfIQ1SB7v6j1q@YP8=tqWzWgQ-a#c?hYK*yqlbV<+oQbD -zTiA&u3Vw$5`!{Lhu|Ix&?q8N0*nl7{rI(0ozZT;9L&uiyiB;*z&Q8{eIH&K(oYHV= -z>nTkXn#J9=0IrFhk7FSLmek`HU3gqCvgTf{jP*rFnpFcHWc0Q$H{>Ae`!@8OSoE*e -zENcio$i2FDEW^pX0ht%D?f3@1&WYaS?DI_SI|BXLN^*E0P2xC{{tGWO`FS*R;Z<$8 -z#LQ%3?1*F;`eU~3sKZ)<)W=CD#k;A273*md@-pU=r|U)+xq(J>Or|726X-@(W^q(a -zo8FDQSsprllc6^wh;JSHh<(#n}4N` -zL$eU<%~E0nP0`>z&$P?YrGF?ufgaIiF^-Z2gWh#wy=Y8kK;{KRxL#MTtuA8UBh3rT -zEgOX!jE!;?4r7-al(t>@;h?QOvm}i?r#@hhoB%|@!!p1R&FaY>*4niIFL}BFkTq~) -z;gTG_X01QQo?4~xK@nYRElk^*PVz3iP`IzcB9MBDjZB`~!Xky@-b^W89%1W^`uPVm1BPYfs!iIe5>zSkE!ZfC^q@~?S{5Z|B=d>(v96C8`|QV -z_tQ54P0>_jE(<}5w*0Z0mH1rLtfL!>2bZI+*+ -z3mf9qCl0f{*6c!`BM(^!;__#IUIzcwIG8yd;DRd(X8L}#;E>grF8;$Y -z*;d5yE{^^BjvP^sHl#Wq1uP)Ed~qC`_~Hxb8<6Nk7XUbY1+yL8N-sZKoTtzJ -z0x1A&q_vun#x_!}^|Jah-N0KkoP154pc5N0R>7!N*-*)z4qNO9#87pTC*;sF?_c_|Mdn!`-SmT_R)_z?NvI?C;m$YQ-R@c-~Rp~!?VVZu=r;a -z`U;IbkUseJOvy+8@82l5ulA1o6+PJ7k8ilE&d`l-Z-0Ng8^_bz_aEQLsNaUKYo9M`%k_x*bRzZ;qB-5Z+jJW)PMf`w$JLezy17+k9mZ9rYPUSsNM9bVq~>iqrJ-+mzMgTMcNlldfn -z{riVMa(aEg&$YeALJE7UZ-3p}d+)Ey1N^dx_4nVu;q>|+IBA+8#lQd7>-+nePM`nl -ztz0R;|AjL%g|)u_``z@o=(U`B0baDVgy!$xZ(QEB{L}B>zwfK|VbkmL!}+~m2L+VW -zEW{8{vCpZwekJ?%cYgijm%aAZ5g_$8MZLoE0&T7?V3?r;3!hFNjq(p6qf@^9mzd|b -zZ{GlWC{)iYSWA2Lt27MN?;p|+rCA{`gpGl&^_Ojl`t9F;{kBiY_O)cWy#Ox>z-^p1MEqTe5=w=J#LU&Xbfs{4JLYW?7ttmaLeTw_k7a -zQ`(WS8|By5vO|0G@89yM+XO0r@L1TCa5@2*{dADO?KLgY>)>zn5^fvx -z+k~{OoMz?c4rS@+I^<`aSgrE4S6<19A@2fc|JKx8`5Ea75*sZuhCjH&O^{dL^9;NH -z{;41S{!1_Wjw#PC0u-xhrz@}cPQkK$u~Ia~y`J?PjeXMG`r;%pjODv~Wk-m|yS>=; -z#Zy1I+IOy9d8q5~p)b;hKB4>d&_A|8_SXANU6=c9NX3sqS~a}=`ti-*E;RQ~Z|q$I -zwyt~m+wKmxMBm(vbAD{?I%%c9Y~lE*d;*{@>Zh1^U-lB|it<;st^Ts#VwupP-io*O9ocq(rU}hb -z9c@aqjr>o;F@*Q7{{7>J{^SoFc7C15&kQpr37`J$hwceni9!v?o>>0i_xXc={r&B0 -z$ZyGWJ^k5k!QS87M>>C?K`L6!e%lqkyN>~?GoXRvq;F?5>5YvAJ?KaRPR0x-!_gP;+8-7Bf=-+LF&Jcapuo_2x)utBnp3 -z2_7pW*r(j+Z&`T%aPG{X+psSEmDw*OQMYN=EqSjzMA@tRY%f;-Otaeb!ah;vh#hvp -zUd~T_aj5h_Q~j|&HZfos?#->Uqc(l8msd4j`_-hzTit;6Ri} -zzM%WogT0%2#l6u#-miN2yXp(>_m8KYdl>Xvqwd@LSV@UuPnCWr-Ss=vdaC-G>RJ6#{51tT*Z*38o=!2mYe}TN6 -z-qt(q#Q{wyI+w@`=`P%dE2H{L)VsB97&J>?D!|}l05?F$zaKgQAI?+svZ+Sznu -znt8C`(CaDs%PxO9_Wts=`O8|WclI_e`7inV!-v1T=I_2w{&LA@ob$1#eDXH`tjXV< -z@+s=)>5{_y#blLf9EF9}%FptIZwJkl#k+dd26JCp0DZM$H<1X&dkf`(o>vmNoFobRA^fmjI5YD~8F@NcN?~h}%5SLMz -zL8@l_5%%0W*2_r?3Y{H8*IYYCS$%x;md3HYrARdt`=w^`)7I=pP@#HmrDd@~IL#_r -zN?)FkCC^+S=uHZ{CAqe_N27eBV2(#O41)EHC{Llp=0J#EKq3$HTNZHUYNO|kMOp7{ -zct#NfXM7=DMr{>Nkmdv^76z9~7+8L#HxUeH6c2Un$l{*S<%0E#Qd?j1TN27;ZBk=Lnn(O?dNTn4rT0~IX(Mj{wx3333-9{SJo!T -z9++Aun2VHYHXISeN`~bXqZW(#i}B^RMnsEQ(XY1?buqpq=qP-P?AZB(X?^)%h#=oj -zS@-*~K3YIZ=I-lbn(=z-KqEW4T)zF)7Yr -z3U$o@i^^c~;En9URR_wDoXG;4H9bGo&I2I>fH -z;?4ZcgR9@$^n_zx?g#9c>WJ6N0(j9hbvBw|Kz| -zB2YjrOaxYcM| -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 -zgoO-~KUXFCKgHR4dE@|b`YJAH5VSu+NH3KQ -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 -zR(U!hIogG`s636M4#B>M77T-A2=(${ -z0+?{?ams?Hio&;&SA~xYuRl~|_3eis`Gtudk*l>2`8<%?mW?8UOVZdu+^kAqAYT9u -z-__-s>z?_jWFP1%0F?RS^?Lio$Rz0{0GX=-x>5MK_OzVjd_p_C`d53w%nl2_SJG%* -zMUZAr)ra0a$6nWrzQ!`?#=!vbk^|5w4>UH!SMzY)-zm;x_0;QOaBmW5751YMoP{6a&dW%i9$6{4K2_58G-2HFEL|8S{Tp1nEv+8o|;L;2+h|B -zWGDULnV#ShUL>?L2YQ4vZ8wq>CybmelD2%6f|4=~lZa&X5WvJ^^h_&n;oQz6la{tc -z&ZgM(8slv<_+fp=v*YMTHaYCYHR<-qZ}PB8kzgzrjK_)|StzZzz9}$(hJH -z8MiIjOxq=doI|H4_b@OIj+7yh7hzVTlg<~)hysfON?!rI&|y4c+v;=#02X9YQ`Gqd -z<^t5*lD2@t6!{+(Oh)dQT5iA=>aI7znYWQ`=s|V7nrQhn@k_ly8gOQ~zW}8RE}#4% -z8i%BpOaW*9>F4i`EUo*sLj=0U0cwd?nvAxvX)ZKI^C#7>Q~h6?HoHH(*~XlMeWpa$ -zjs$xjJzajhy<3C1e19IX>~kf8Hqyw%No5tg6RNr*k18a8^Gm)JzX4%~T|zfr0IV^Z -zpCzBXX?9xIJxwBBw#-_?1exeL*A1ViE(isZ^0Uq9dGAAWneG!)hzX#!=-wiCJnqNT -z#k=(Zyl1OXo)T@T>oJN6(UQbHEYGc4=%@5qAUEg^`M&Ym9cT(tQKpI9*!Qn%`f~62 -z8fZxal>qxeS2iBN$-xXUvDrK_9VQSX-NylvGz9dAC=xDi6*x|zV7{iy*ugrZtW`TJ -zUz`{+MXe6<6M8lAE4lmc0a+GWf`+ucJ7sC{8ofOF_HxxSM?^V*O)q3!i~eDb5g@uK -ztAH%XqpJ*;1>QG!^YpBkvqsD{Z89>RcrG-1UkYEcIY^RQKhpZ<8ELe1ee8ax -zpuwHwM*!C1EA}ASZn%d97d04dPSf#@qY)t)BBa2wA_<%0xxl-&nAMvTfTF)@NZV2v -zt7T_pXfQ1X&Z=|gwcXD)sBZ1oCp{9B<`iRy%=9+45A1HVH^Y#;eiT-p4B5Hl7Nt5V -z1C%^bkQS2F7QeMn+(rhB+=s$l;VjMfmhomX+vW((JnMB#eZ%QxT|0GxbyOECeauE1 -zb8{i`mn6sf$c>_{wTU9b9cI4;IB(I(I<*@VnP}_oRN7QEb#w!rDk9JEN)}XM!w5f; -zaUlo^YnIXFR0r8}OTLFMR=_Sil4+>_sM#kc?0RNbG8FJtBkIw>dhd-A%O97YP(C$JZdAX1ogT;yQ -z0$V`SN~>8KX9@^`>kEBf-VbX3SWL`my1rCimw8|an7E`XBbe8lEZi^ -z!ql{%#uv0gJtx|v$Jb9C;#H2ExGu#Uqff?!%zdVKHn!$G$7vL`jLa@m0)XUHmI45b -z<`LI>UZR~o& -zhw(StjH&;6&=|5WM^Wg@#sDuA^*ChP=<$vsF>8NOSZapAfWYaNN-$LHKc8_Z&NyaNPUuAz=k(u0Fu*+NA}lhb(cUu2TK;?<-gf4bcV8jOdRN};m%z#qv@ -z%N03qvWeh)b*tc$;A9qbah1cOA2GDPnCJTOKYeySVhY^g(T$~7&Q)s6(iix=jn(CJ -z3`o5#5GN=ui$3Gly0ba(a_=i6I-?`^Gk}2$?L1VRzlN!Lg+VgNh*8D=fU3lu1GnrX -zqWaP4(#eNmh?kqxTl}D_ykI7VT&C{WM`_NBw(IZxYYCjfV|ucjxG9?1y3uA7Pa^y7 -z$m~+KT)X*EVB1h-K!5IOnS$^n&T8wG62<;BZYx{+SJ+=(A{l}7`dle4Y1vDr`z$s_ -z1m19;3Uk-T<{#jG4BtJ^^}ZV@Y;3fz(9kaSN1%qd?taTf2Kn%4Q?3y7WT(>p83qdS -z)R9Z}ybHff3;OeeQ;#QPF6VMu*&>wx|8DD}u!ltxIV@_%n=)u3*j}uz4<-W{`pcOT^3Ff(wcH5MG};{oy9O-QXw$ -z#Y3+3&9|dJ&p&dXZb%v-B@A5cCwLGXzJKs7pcPCWzwqXRQAkU@_}lV^GR0TPTQDd} -zU(YOEEpLLro?p@+OEGPh+pMVB(4Z>Ec)}hypO^U9!BP1WT}QGFy`XQ{u^wN6ll(Ey -zo&dc3r%zv@oBRh<9?BdLsJ+Q!Tbz?!J`@97%yo(f+0!Wtm@5rL^@=>^^cfeB&J7OS -zeo9a36QFcXTcd01Wn>vwSTi!yJ^`Tb^$5kH_!O~!ngt6dlK!DhChqrGJUacfO|M0z -zTfDp|KOj$$$Dg$;(ED<38S&N$O<4ff7tbEIQ-ae7V0+^aEYBB^XD+^|`Mfifn9MouvThYTsZKYrqT3(K>a)|u4Ma>7TpS9s3IOO&T@xa?ZIIK`hk4IB -ze~i6CV27vA#fE+UzMlQHM#xIvUB8}xKocsVr~h<`7_GD0LvGUnEYjymGNP -zPu5Q$#k~j`Xy7I1Q8uK;L{s;SNeA-q{C=Bx3cg$cK37n%e$rF{a3Gc@UvCWNn -zM`3xR$w0c~xm3J>7?DQ&?0SOl85U5?7Xm2g6dwf(H9fHj)Z*z%)-1teRv9x??C@PQ -ze{{2EH6Pt0a1Szi%#17p8_me|L^?>PPBUF-)o)pfV_QPzhI@ckQtK`#a{W-~!XvFp -zva9O29SC#CeSJ#GTvpz7TPp?9jfo52)dttIAQt=GYBM}%d2f@FY20q#zfKG%L^7AI -zukV!k75U=@)p!l4yMb2y!rCAi`Ltp*J%YB^uzOuOL#mErlktd{>XGB-+#02 -zqNZ4xV@x=-gQB0DLzo-C!7gVw{yKAoq4vy}rmX!k42fKN4QJ(#B`pV2*3l!B?*dFl -z5i!r|+xDeB!pOeXSEkbNEF~YExtFZcyLNGyQZM`jwiab_gHL_oQaoAi+#gSF=lDc5 -zVn|bDh+!J<_%F_K!B$r}_knXtU$jn$^e(Mct?0>(#4v!Nz7wiAmOrTJemlF!H8P4f -z%|b8$~<)pdbi;+`!Q|k6%M=WM4+$a#ZoD#3Zzq_(3%I)pX2S!c6@FJu6{vdTz6L -z$uf2weBdrwdzH9l-0Jd;9GC+v7MtM -zc*HEtr&3(8-1u@IXdgE^ANZR)P5Yh&q1eU3TFk^%zT8?DQ;C<*4DY$iLyq+O_M>bnmdhW^kiP@dkcUED^cMLPA65Ej9%>puY*uw)0l`(~u}?QAykg65LO4rG*`Pz!0vVHg -zK>*4oybC2A9T`ndLil%RLiE!uzpsK(Ap|Z_bj9)57YpK-7Dy1ZCo)1nH;!c+Q<7mT -z=<><8nr@v!HgMNaNQ>al9COX9*p=~EJ~}!$>T3gHvq$%?JzV*eD;X2H4A7(iM_QD( -z%v?8Hy`FdI7ZT7lO{!v)tA3F17$Jp`=mKwKZOu>u&NScVbGWadf`&Y}S9iJ+ -zY}vd+?(QZ=6CicDGV)1NbIIW-jdvP3I0+CBXt4X_=)Il||66rWGD+1O&<8J1ngRpt -zS0&pkZKr~iQB%AM6BO$5`INfwTy}0voV6;?1dLjx{R3pJTmxenrAbZS+2`@kwk>CX -zF0&OGQ4d)g+U7u+2Mv0AN-dzaMkU$ItYuWpJmwGM$O=qpG;b2-+6 -zykE+Xu($_KFgcCd637n;Ww1dfM6SQiPqMz96jAG*f6i)f9w0yoRV8%9aI}Elnr0W4 -zL}bczpZ4svx$9uriQ#b;Z8rwR?gMNv;qM$F_#s -z#J;WUsz4gEHC4}(tWQ@?F!p?2Mvdkyv^w-&5D<`glG35AzAI`BVieLeF&AuB7Fiy3 -zaSG6Cv6=D(uAOAGVi)j04tDJ}y6*o~?A*p|D;v@0xCGTSM+@#<=k%iA@vS -z6)m}GwTO3Ac@}X6@#pg=x+eJMKL6k{Z~t%zMA?9N=^-!VI&UBS -z{4beRDPFJRMpot->9LOBcY@cJ=77`%N;c@H{r;1w`-aCwfpM4BS`VScB!|WVUVOT) -z!>AP3b65s6S&yc1!GE4U=D1tJgWj2(fW7BnGh -z#h~l-_8*Q|oOAj}*K1|)RsO5GA*+4i{GQLaTB(BHema7%yWX4veky-4eK4x`{EL^5 -zrcZ~E!xlFd#ydxZ?vJ-n@JWyaY1#X3x~37+_HQ#kHa6H(U@dloLNhezY80BX9rd&t -z8Vi0otLwC(5^XNrnt4_{7Hvn1`p|l+B0v_Q(p6od2?kCa2ekhOsJH$jEdO@%54w;4 -zH#W2}$Pxbyllwm)S1GssZxpc4{}00M<3F8A^8b59tN3QM2|CUfaj{k01 -z5O(Cs*O#j#H~!ZTih_(m-@XSxS@EN<HTmW6;lDQL&wt`C+k9ohm8!4%{4%|c2BePc?fc{>Szm@N-{`uZejf7A=X|rb -zeC1PL-rX~g>eA(LEJh#?bd$#sCenYGKdx{7vWnz{g}W&}NchMzmUi21<)obk68n!* -zsf-nv7BY{K!&M0#Q%Uiq4aipjR!xfj${E#@)PzEPn%4YZ%%bmh~IL -z4%@Oq+v@#+kh)(sV>h0cN55L+xlH|&S2x<`(f=n`Ku4XXn5j>tY>}TSE`#NaW^2zv -z`j;N1OsAYUAp=d;T#^Wq(_f}TIwnxlxq&cGrh6~ooi97wDO98{&Vk+SFz&*)zZ%_k -z`Jsq3@skEe>p!*I1Mx*yWx9L`6;Q1k94&Cg#@a?tQL^p;t4adcE -z3Bz0~^?J_hgCQOP*_74o$iwRpAlxl`*Mwn&!y__CyzSD+VQz=4ZMyZH=G2e;@s5Lb%nEfcijUY=;TGaA`?a@9m>YxrZi03uhjmR%+qXu} -zYE33na{sW%drqTB@zmAwCbH`Ls#>V5*?9ZVpEzGX8IqnZQBVQX3P7fpRF -z!p7U1Qv@3t=KU~@Pv0Tt<)rUKpAPvLLm-t`&4fpZSf8w$DFaCs~`!D_^gZa;Y -zlp*>rt^_0gUmO$T`Okl{5&q}Dh6c&Hul)G!4Xu6s5_7v~8{`#Q7VE=AMcC-bxzV6$ -z4!UW$Ym?gfExeE7lem=cXlE_nT~FVHUNsuMUJdPozH^k}$}ai#1+Y1+G&2wP11>`G -z#mDs&=7cppCHfp`!vOw5sXxe!TQ}{zsTNaH9Gfc+r+{e$s$I6@Q?n5`z>xLLzolSQ -zdC-fLxr}9WHMy=nF2Ip-^pFYUpCGppP|t816ST($1@!v-VFpiHO)?)*M$0 -z2T?=OGve>p-S`NL8Q~pUJFru;E7YlCM)~^f+nZi6#fM7v-9;v^(4i5jy!b&ol$;hB -zwfM~9A@;hOH@X~q2QaAy>pPcvge@d+&Z5R&VO@sA5p6ILiM~@;05*e@ -z_4gPjPa55fuZVjnjiJ4b>pf0dppElPlMAcJL!7s7SK9rq+~SxEdb0`10DDzAA=cNA -z;|Zbk;JQHU5qQNLI-qkoLl7Ak9Z2f~H5{$r&~>P@@v+UvPi9Zy8<`*EzR}fy5J*0u -z7nl=#(Ol^4Wv6C#Yig>mI$|`sNotxkM73hOQ!;{^>4pqbALl -zJU=dP-)41pz6%oybWT2$FNuAak6+G+)IF{+?II()?%kNrjY%p}T&1ismp8-s0Wbxb -ze$O2&3kv7KWTW2iGAMG1BT5EISmk9_@?;KQtbN|A)$o(aDc_hV*rt|zr{N@&NJpUd -zK}Uyvs7!1=VsV|qfC%Zad_zvkb!j>WH_-A9+^4v^{@6(N?tWrUpxHKTdMjM;MzC^O -zt^R^8X*gA$#MT}y-ZN71r!S%O(IzgX63=rCW8C%yCRVS4Ah2?-l>RZ%371Ag=Q|4Wn*z0h;(moSK9nqq^ -zI8JkVT=`;d(ovh6&ugh>6C?Ar115Gs_pc -ziR<;JOzKBu7-zB3vr~#<1+8JrWKA@cxsRMX@Z*>+@R}971=MWlY1`ASW(PDHh-rWN -zQ+V$x{c?xSDx~0bYsP!fo9u&|geHD3?HYa+9oBTUO)#<<+PM#(SdzG6jzOj!>?2%Cn$|i&p|bagKO~Ed9nFCU -z+z`7!yt|xc=7+<0XxwdKR!8u(RG!%6X&{Mq5^lWWkj6V2RfWAcB>riK%OK$Na -z*PwVUOd6aI++HEReXfQ+UKZ_**8EY^jw({I+?46IkS+zv9!6qv@5psT$xa@n1H}GY0W2>+Q(OpSH8pxKg~7wG_q_ax1Y)Z{TX%X6~;x+78H{c1-QxWe4AEa -zWO?-)lCw6bsf-x2d=@#9VDhbeLPct9qef3KIZa~*Uf0DLK@?9$R -zCA#UUoAlB{lvk0&v33b+0pC=#1(T(fL)BAr)s1fC7_P$dSkV~k`|tfQLN@Nt2Pzud_RElifWT8@hh|B(#{ -zEuzhUzuX3jQO)a;O<%1}Dcx(XXt(5wtm+y8w=;CTCU;Sn_PXKqjUN-zAX4ji&j-hL -z$r8hbo4_ghyg2~hCEo_F1Jnk?O(VT=>wBfJGOh>1jEE1t=OfrhN~ -zswqkhbtxLYKHzd{Z46uW;z1_zgBuMNYDr`wXyq*sy9V={;)^O!2TjVGMY}nI^RST} -zFh?3s0#Ba5K8NSi^E@nbS{Y=XyrG^E%$g-ZVC<|;xF}^#N>crR1nJy4K&E4S8j?m9 -zd?IhLrZJ5o1*ocOoObU<4RyOgz?872Xvst3xH(OX&NW4`V9;%>)0RG?E#|{V3QR&s -zzh{~5LIWJpBF5mx$|Ukpvu7P=iX&Rqwkv7Su&wL;NiE~0JW$BlvcEV7r@;atR|5(X -z-P~!3iE*oGSqY+5h@7Ug+NNwn0z-56=j2ne{l9~IZNN#8bLV}!g_qzL_S4*Fi -zSWjuVF}c!p7R{C*jxCQjMKp{6=7%pFHddbFH8WdrShKTrL8HS(270zE4C`OYM`x(wiOttg90+K89V%0y}zupuEWZ40DRpW+SEtd -z#FOPz=-@}m;e{Q|^_bH{3y1L^J}Dnr6_b;keVL`Dy@TzGu4b?TaI?N{fJ|@JxrG|w -zOUxEIaf2z;WlqzCoTR#xg%Jtj;l%viy-Ibjk1wpqW?QnD!Xg7LPq$DNZxYMI(jiPg -zReSU5(C1ySaFD!>N2$yeY-)QUGP$~mn=a~Ls-(=8!`hJ_#Xjao7QYLE_q*BrC#X`g -zB71mLn;}!#Qj7ASj80lMjtG{l7>;740E6WT)2gdyX?H*eFj%6=94rDA@J65dR&D4x -zFm`ucci+Fg{S7TlG!UvULZ927tpdEWF-CGr>^(M|tpTmO4nZ%eae6&%p57Y2at(ZI -zZ@B=?<>J#y+1bBEI@Bpfu{C$2l{l~HepI{yV%6oJem0{=04>~}%tE)+$jmafU(!Pp -z3R|+%?TENRz6iZ(eU{J_260VZ4;%KNYLd9iSyx8_=MSKW-SUGt^wQXRg| -zk=wX>`iH{n^*u7^2Z71^M&XZ*4rq}cK^RJ4dNxf1Mk{WCqKgKz3eQjyB9fDmdA@!$ -zS-1R8xD>^U>w#onqrw+os~{vPp;WC!!w8)ke;mo<$A1y$;=k4J@3H{;Dw>RY*E1)i -z0B9szB+WKxptBdYoA?I}c>&`R{e5dK1Xy^GW!@@tEqWe~{&;Os`B)J)075{$zs&~w -zM7Kf?Y1@tV;1+A2Zx>$At(z2K2sv`H@?L!rt#<_Yws+lcY5Z<~6Lu(`Tk1k3(>uN! -zUUo{dO!oj0 -ztP67j4XFK6gpm%Lk|UW4X~#ZazJ;FG^zr@8xAtu+$Aun_1iSmJTjYJ!0Iyk6%iEcp -z2GQC_zWZ?xr?b&XkO&9r*%~Ge6ng2wdu?{Kz!d|_0br%GVmH&b*A}l;^>>9rEIRo2 -zMV+~OuYHC0M>GWAM}qY8>Hc@6!fg_Kqdcc1fj^FV>O9d&i#>expBCgm2 -z%U|oW+V2MaSZBeX)?-#9qcyegx~%kQzw^z8S(Z_hyQWpnMGdBbkkJgT|s1fFqZcD -zj~;1Kj?#MnE*a^%T7Jq^(MbN;0@}zegFaUEPn~Ge6uT_Ok{~UsfTnCsw^5_8e?O`7beE+O;;^;kqxIP#i&ndV+%FDjA^Vb -zoF6nb3J@5i@}{X2*_lvBe^`6jHL|pe`EB6?oKK#=T2h#hkhVw~-6MvXKwo%+ZgUy3 -zusYu3wpDo0>KD^3CQeIP9du?pX({xb$%XHob@m}m)_Cwv)}L#uMsmK^~@h`D{Cjls9)sr>Z)7+sJNAAMmis2KZ$WTd3y~ -zmEc~_MceXn*R~Hbosiz}f<)T;y3B%-zv`_moFlEJ1nh!HX|Hp$D0vtK2xU+As2ycC -z|FoW;du~KsW3bHD9ZQym(sJOC3X2jLXDU{T7{a_2$v~;Jw%g&EmFG_L1s+b%6iMnA -zN|rPYaABDzU40C}eb{rZ>OfJwL;z&Q(p`(tG*ow#0&?Rd%>h;-3%0jXbdx3v_!^G) -z4LQmjK5&X<`lxo|)V0ycVZx(8F^H>M2-MU+=>*|n8NZsJqgf2PYH}QpLS8g3&DwtZ|w=ue0ZVlew;u)ML -z!h1I$sI9{3>?lu1(Woych;BQ&H+z);e-fyUs6w9)b@U*Uo;>+T9#u8d%2VDqxv`Yy -z1n1$?_|PsAU&qsVaAou(;1cxe}T|OCpxv~Il>9C^3loSewlE6x~ZFks-HC>m!j)3XxO343+mr9 -zrcoafjSD$z`A6}Xk&&skVvM&1&0G9XKCh}cj=k3t5;I=WJsh9MJ3P{-v(;e)XyQD% -zhK)Ws#7ij{n)q*5GP^wOUZ42@;ce@<4g0Irp)fbHG~~;Qp`ivmY@4!32?p%++h8pA -zJ@cxywj+$>mlWzJJQ_5)p@tO;Mr)Z0@P3efHG(pk25DpY$I=R-GUW+0n%&&pZNM$s -z1juC1>&qhDLw6^q$BC)XS9Obk-Zr{{`n}9Cl<(iu4fvn&OdQRe-sQx3ou<4HwQ)O7 -zI(W?V^mmrNDeu!r-q<3Xt+srGwvcT2_uIj=d!JUj(ZkAPHX6XsQ;mY!P;cIufLiS5 -zF9G9-YNbIV=o;xE~zBAko{V!Z0AAR(4-ExVhZH -z&_@KgGTr@24*?jX<1~r`I6CTXOdwiTCv7~SZc}E8dE=dD&`+j(uQUW>AP2VC&oE2K -zmudqq_{Z5&9ANi9n}Hf(Wd~QGoIn&VFMibwAA{0WvBUCX!U&eL^UoHs@(=E&{$x|k -zN@T>1GQ7WjvF+35jPNJJ!t-Jr$uicNctw`VR^Q0~da;$L6ztF*Dj4Bp6_rQ+0@|XT -z{Rn4V)rU@xy!~{2;0kEKX1t!ayqmPy`|XWksJ6NeB`XXMIZQ5W*~`_gRj#qv+Bz?| -zAjN@CD@d+p$$H`E)i@q!kB34SBaZz%8oWB-)ne0n*`a7IF{|;*I6;STK9-YHN#_DV -zjs(oh%$BG$Dnqd-My#$|IZ^Ah&!5Ll{19|ssml%Hb@HLGT^|h3dR;ts&~TjjBIVkL -zTejwYO$<0b-FmzASO4=ZPB8GV!v^}IrM!&+{qphkKIjT4*t#({-phQY+o3u0Peu~U -zHm^t&*va>=!clHA6fVu-G-J33{{2WB0;gRZ-GTu=n{ifeD}BDyZ$oAD9~E51{=A=) -zYqfxZMreF#9))=TYV>t4Mu75Zg6ZJqTsK|f*sAVvo^3U__qO@7mA?g}Lwy;+8+T-j -z+2#4J-X4Wv6^lrmFXPrt^u_F_mK@Y_oq?GvPRog<*7#Y!9&hDlxongW6MTM@Jw5z3 -z?JtXHn7m*cKonQs@~n;xGmmJh#5dT_<5D9p4`f!ksW~bIJ5r%5AjS-=1mJ@`&D$`S -zM3mT4IKaFDy{Ri8fQ(7G_8>TzG80y07nIyZvPhOl1tN0xvZ9EK#)hW!V$clG2&@Tx -z{I)p&9?s&EleOKB@c^(U8sQ4vQ|gDWBWxpUo=fos=Xgrq_7H3iPm -z*$l9crEn_C(Hso(iI^r#i1#TlYmNQ@!Abd}{ -z)~{!{M?_{8dQ+60@AL++fVyO5M#ja%9j*2NnIy@swMq3i=cL@f(V<76s-8}+UaOt*=07_*-5Co$0On9pdzViojN6)zxysYt?C?ud>1pgj -z+HGjZM}OtBJnr}rUJh@&c-J>MWCJpUp$f7kzJ>e#2%o$DQ&TPawF-!Utm2ffM6P3s -zo{u~yO2_`arJe?QsC*tEr-;g^Qb?bGW2>35dIxa~q;O+QU`R1MWqlZ&xR_}@v=zK` -zNJu9eW=z8m?4t6NfOI$rIPm7P-#auA3zA+GyE6}uOjdGOB0ZIxFBhs`(Q0K-h#puE -z!lLT+C<;nwam&qXYZ#(;E$;-Lq2Ex}<0W>aYjwaO1jE2~!Uf_`7;unGhf@PFd)f`< -zm>?^J+-_QMXx)KN=5*-?h=(}0g6U-Gdz2C3cAGq7LnTOiE}O5z)x!D(!P -z(x92a($R$=52`xS@=TxTYUB(?ajreuHGjKRQZIimp5blhpW|)YB|hCgw=LO|5#G3U -zJdtD1;*Pqmg3KFj`Lp+|KpW~PF2+Fy>K9k3si-f6PYiqV1oJIqIHGx@#TK~BT=zo -zZx<61y;POpUjt1p3X*TF6{>(fM1xI2kYX0KXpGNF&@Jun9RPt#R*=4tJJHR?TX+PJPh?OH@_Qu<6IW1RplGhmc7251isK9Ia+4`5 -zS#aV~CKw9_^XaVJ -z+C#@zgATt*Ske}*MeXfS4$is|pw8>Wo^w%4NY-LhuqH-0wr+fEWR+B&FuRdOE{X6C -z`m5w#xk`L+t}6_3_V*PVC~l()Nh#G27nF<;rk*=)@beMT-^Ey)(rW7?QlODHv3i(% -z6zbJZH5+3#pjLyEDvIB2yA38!PGR)z6mWoRzhXz^!A54H)!isQob1n+ -zasKWg`^RXsq_Q?rDO%1n5B*N#wBFmH>UX?+KmbEL_*36NqL5tns%movM`g&>KGr^r -zHBeG(*$A?;`FM`Qv7=wnkrZ2@S5W-Y65F=E#UNedKYU9k4rreHn(3&5#x)&h^-jro -zc@}>;7aM<9kP@vtMA$_^@)t=mq4EQ1HWq$h*T -zVgc_GyhSlqsN|D^NDqEUTxE3HyNvh^%}F{h5cpo!V|3YvSyr8PKEKbt>f<;;e#4;+ -zsG07hShD^>v%n%ZQ|u$t%*?^ -zt}f}282~v` -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 -z@j7b)vSAlhFH(a*GsL;p8 -z3aGt=e!*iAx~=U#a>{3`fK}GM744c$Glj797D_UX@VrNcxJfLh=hnggcGu`)dH*{X -zis7-`+hW7}3$^^RQ2%znXu8xK6p1$0FX)Rthp8#iWawny@x -zLp9-M2Tv^NsVG?M;fA<9M_9N|%*J{D(S!Xo-<51qzkb=oU-iP2cXb`Sb4Zp5R=T0u -zmRcMG19&DGI7oeqo$|tF)^cYn7lmMxV%)S=gXT+by{?LGpk1MLfgcKh#AkM{qrpIS -zE!WrJ$Rzt#g=T0wsA-yUyMb>LHqBc+_1YM`wG!z5-u)s_FOFRjoJaB=l=h0nsC|d5 -zxMFA|+jfu{nQ#zeuU)bQP+h)Byw&0Yl;cow38!FtWv*iB*F-+0DRi_YhU*lqxT0OF -zs6e;KLHNLvQ*`YXHWp>c@mNi}gWQL>_uS~x9HF?3IFM@sXPAC@l6I^1dM)6+C{?kR -z7?#l`7&O!)u~qR+>ZmIpt!IHjU=|h>{dWUQy986p!BM3SEyD6RLMCG4aby*=Szi}F -z9gFjIYyoQFRvT3pR`>`2_JsBt{gRBein5pigzie*5~GYf=-3>9kQs7N_G!z0rM)Ya -zU6+-Rd>*Z<{UJ**Ouj|9V`1lzM{o`bxuv -z={=@IFpR)jqh;H1?{JYYUmx+Ej1Rd|K0fOgvpz%DJyKHu5(i%9R=*ko1Ve8=ON7D? -zY?Uts$dz%?P(CGy4Yg;o(dmq%LgHM$luG^0-4-p8d-nwPk&OdT`np^nAUZP` -zyt#TZpXFwk+z$>&LgtH__6fQ0D=_&}deErl7SH*%qj*=fL!vt6W532EVu}_q{LpZ0 -zj~;Yq+0@Lj>Gv_i0eaa$b}_E&KCk}FnX|a-o-qV7F96D-w^-IlXdK18h!X;qY0kCn -zv}KA)? -z-RD%9)0fGER@5u_@LHRYN;;9Mpn(1!2K5oIO7l%%0WF}#MY8}AqSz@$3H8(766jPI -zp-ggL(C{MG?MQtbGU@R=B~S$*>s#tDrFH;IuGY> -zJtF~`3~x+UDF_}dEnNgO+~<)uNgTCsmMB-wHG;iJLK{+2`IL~WiCx;9SjbYqu%7jX -zzAA}&<7UbfGP6;DTf4N$E$d)(db<2u(t@D$i-tYl^wu33riUTvIHgU=r(O%?h+c&%)@)flj9vpL%tx_{JQZr0(yywjHBcM%vz0rfTsW#N&I^T;WJ?%Cb7O<9w9aX)| -z+XF}&dZwMT89i{zAl}5DT@svD1|0~Jkh;a>M<6RWxzJ@W5tA(CekIkcV;Z`aJ3j7K -zjXxSKHm+9hf`XF-3hQ(QYTtb;nU~~#aQ{S6tQfePOoLlm1fd?mP7NOKDAvS(NhyM% -zj#)KNFOq6S`B;_WJPXFaQ1_h#RY}D~&t7VuOIXqDSFc`((d}XB=G|*6gM($>;Qgjh -zV_lE9=V9xo`gq$X_v+~NFH4a!@ZTyL18^OQg-W)>)S2G+UouB9NH~ugA?aQKyl6fxE -z5FoR3?|ruyhXpGv;gZA03hH{78b%FKpU~{C)y8J%nDbzk&jxEpbSZdQ8du$p2nE#n -z1y*@jW)In}a+4n#F)*S~Q@?M;B)mnEDWPk&NgfG$g+AQTVGB@Ps+={A)|TsRo|}Va$;hJJBMxPvuq&qKKQdl -z>Pmbf@gyWhy2YoDR0XJIA0|(y0zsC-bnaPcco2EPld?qiH83G2GjVFiKI07ocz8

;0Fm~$B;a4@siiF1~12+I_yT9 -zYyFVLF5zEQF9HL^iJ57!z>JGB$P&$CS-Gdnb}F}9BsW=oDvGYeKZ4QFZ@p(tF`)p) -zeM^e2;VrxaB9Ie|D)OQS0z=BpU7GN_IL9+S%QA07TSj_2gRlnqm15O@80pv3MIgn0 -zfkrl|tDf*6x0n{c(oH&!SA1GLB5|udM>hg&DTC%#7E49OxA=ywaQ0sLZY&}BGNm~q -zvBn_NC~x&)xygWMV?p1Vsl_4|r5}om31TlSM;BAlhHb_v4@%mBcEEy?dxJcWSJ}J$ -z++8n5b*fyrVzypP0tQlZ9`;M4<6Q4lg)JAcS- -z8&O4xaNR>rl!?{3uJP%!ZG(Y6+cF@bNug|BoGne(YHmJ~-PoDiKlX`Iq^(${8aza% -z^^aZITZ|w9DV6jH?%G&_ZQVn{2ht9Nw0K{p#KSWKreWwDs7l`s@-ecKR~r~G86&J) -zhZrXp!H%)Pb_g1-T%6E;Sg~1!Go+H*NEsG;EoA>#l1!_8WhPZb`rGr?*J#f7_qsOKDbT7Hv?_y5WtboIv>iy(8n4{EqsLsy?%{4v -zpW+8I@F5Qr%dC!%F`_}_rWxe1&m2vjM~=3YFxDYlcozrDZvc+~Q4jGh0J#PK{GJKJ -zXT;@JdM& -z#X8bI9OI*S?(i4;R7+p?8STW^k{$NR8i3g^f)pi|OnSZhiHcYI*tCnMGl@2( -zw4PcwH2-i*JM|Wp=p<2`|L8DDC=}VcyuS@y|E&XcP#;(m3mxt!jkyy1y^d!c>Fv)1 -z)rpNs-8{;$3TvjFpByhd?Dt_T&u+ -zZ;SV!Q?PwBJw{}OP(Y&uC@@r>Hza=nGCb$`_A-=xo4EMdf0UkpxRGcawXILKkXFol -z^W*(TnidiA^P%(i#{QTQ9d?dlm3(@0@gkd7>PAA`I{+lP)}#XqLi -zXQadmc`GP{g*7 -zYJH#krl34&|MeFlyMk>DC;4i?e$GGfNV)PB`+zOc5jIcZ!hV~RQU1s<93_Lhc`eyRh&d0HwZQmxb{O#KU{WMKI^64tM+1pLl*+41FMKCSg2*c$pG&EG$T~l -z%%{6M_#B4zylef8>{~odi0Naj-TGQS#oxjYjW>tu-UzE=70?!7W}7aze`hUa -zak0_6R;uO=9D66WXE~lY(jJ>m9~MOLi9@A0v(NX7tSuSr^vE8kRSe`~ommTb2}@y4 -zUY^zM{tr(N%jLJdP@mYfOL+mL-zgs}3+k92;PiFp;E}HIWRa)g)9)bPF9hktaV|SU -zmCZI(eRq5Y{Ppz$L;LCRg#6Y5L~)yT2~FIjjtHCnsaXj_wLa#&n~MEYOMVn*J<5># -zA9i@$*~d7q$$ymTihxQd;B&GDpR5!z6o@&AjJl*`QVvQF9i(eti_v^K8*ThxvaDze -z@1ggxBN#CMQ+5L5$r#^~bMs^=2@O?_x?0Ty(4|PFZQV;aQ4}(0qmqf6$=kM_+#-Gs -z0?xW@o2t7Tm=x0wpfYFZUnGLZyo$ -zfjE{nI&1xd!hPZ?>$JhFw!?&ivl!S~D*E6{W=|4X3Kr=o)m_lNpMT9Imk|}+Vyx6;b~EjBEGDlw;h=+`~Tsgt@KnHF5mMP -z;TSw;PyB(mcU-D>+eFs2Zy*0kqZAG&WXXyMt88F{^>w{Yek6}xTp=FEHqTeW_%a4i -z0{Lfei4+Xd{{XSD{|rpJK8gPzv#QrtOlq*2ykclnjg>3~r0Y;e1ipP36ab&|l@L?! -zAxR8qJM7-4uU}T=IwbD;`lS4KWANN>OmNZY0PG6c} -zm?>{Tngc;yRIcQ0kGNhTnDXvJyi`@2kT)dnTcWlE$@>l+S?P}fsCgccg>#rjdDC|5 -zG2sO&=NESU>n5^9-RF0HjU;y=@<0(}N(jH?%?gJCg;u;FhX7y2iTEp?_TCO{&tEd@ -zBC{5VFYvcg`S#QMa;&JbO&h~T{HFIdDO@dS`EU9c)&j{_CvTA9=-0CSs7UVk)+Yn6 -znMGXHfbLT<6XENxFaN?PjZ8DrGD(ba=amBnN*OymGj@cNXjY#Ij%1HPCKWCrN~{Ya -ztaNc=U~s4LfhZ5hYkNc${pzDwQ79fmhmBvR1RhlM{hPmCI9hNc;hp#ozy0|8qU?_N -z1dzGI?{r+vUi9xWS+}^qFXAEWyeN{odQNtU`4tT`2z8#(AK2 -zXzieEUV>iP6UGWtwcDcnpuhKPuh$vw5CONxbMI}m=J5W`58JzpWKUu{CpTvc{Av>) -zWp1e5VSH|}UHcE!DfY~vg#P?K54y=&8%X~3Mwk}*uG5Q`$%JVWu6nFizR{0%VA7hT -zMZ?F?#Ovwd!%o#lDhh|i9F~0ze5##KDMYN0f5p|upl5Fb`{#^hc7baGv?!vxGJ -z_@CQ8^OAt0Z_Ed?3n6Vg-Y9(&{TWi{>X|9HcOksThDL60RI9LRk?m5oY0Fm)bY9(6 -z)|o+5o^tU^{Sjc(((9_1FjG9rd*8-NV#Nc0-Qv9)@q(_*FSUT5pfyK -zhg|+W>ZNS_?+rW{@?YR?Ns)^;P#)ZRy`*ig?0%6@_F>ttaogWMZ?O#FI111o(Q6&z -zJI{1z__YAfvVc%{yLq$D4S5?`RI+{iY(KLj`co8#;X^Er43KPrvada?YYpU8A(hiO -z1pxd>!sSc?IlT_uHcWivpk)co@CoPVxjx)BP|wuEQDdNAW~-&I?Z3YGh8TeplO5Ip -z4{wm6ZU|k7tUwuvy?@-W5ho916Q{~qbmE6oM=Cr*h4LdRa2yZdLHK-|KCSf)`4*IT+N9SDYkU@gai(;P=TsyvTT+Qx$*0{` -z#|F!;GlwBVPCIazrnWymI^9)u?L`nmqZe=RUc&YRSGS`XdZS85t3D+7VsDw4`_|9j -zR)=IFy?d0z9x~W+19xC#v=bLS4LZnrFoUzoM{k8m+TAL`ZW~R|8#l&;qtX -z!zT%BKOm2d?WLvgMCw^*eyV${74&Cj3_w6rhLfsoj%_`K6UT2 -zP1My0(<`dVp%Jpj+pk~$Me6jn{y5YXxkiAN*BX2kI<-(zL-$4gD3~^UNS!5&+ca0c -zXyVGV)9Lko*Vj3te(fX3Hv5gQqP|#$^%_qHc=-s&Ie#?%@c}Akr_aC$R=)3E{{DJu -z3`F@JH?;tU~51UZ7duK_BlQ18i -zu(S8b?XP21U-H~jOCx(ot2VFkZAC&n**I76lcCY0pB5Qw<`rqy5DjOOh7g*d1VZF(3{7?Jg`nfv{n>)=pPlp -zC|Tjxh@6=@UC@`0-V>-;a~x53DzMc3xF= -zgB`2Yqa>ae&waFJV~B(7a?KxZ<>fX*aoKB=5T-HWm)|Pnq%8#k5OkgmI#36c>o9Hg -zkVtKoC{*~Illl(^#KpcWGep1c@_x<)Z}UWgdRekfrqIk6_>Li4nwU15MDu+E#Ve|`4d21diaPRPzQ -zsE%IT0DW8HGvU?Tm^0@bz13!enu#o_`o4K;0=b3Q=@ppSW7oD)sMswHP#ScSW2Q=K -zXR|>r=td59ZmIg$i_1^}sk;mbe`OjUEQ%-@`6Yb&u*YN;C4FLJpWYKFbjkHYCY(us -zr;i7S>AuZf4p3USFw}!rJoeXOB5&G0tbw|F$zT}*uSVy)BPpO}klpuIX0PDRZ9_nN -zQo8KQwlp60u-{hu$A>2%ZvCe23yA%Ykhy?Eap(=85m?vZ)iFTNPRVauxMM(rgspBQ`v2q4t2c2-`=_n!_mrhF~?1Mm$VL -zpZ4NmFWUB#(kO5tP;pDq=2%T%e~vQk<-@S-u~7j<2srbE+mi7g@_J}LK61Lwy}0zn -zHh*(%F$azSH~$-SS=%DarM5)w*As6Y8W#JM!@uuxV*tDLQ-R;=6LI~IUyws=tHc6{ -zKZA!a9T1YGc>ULP2jU`sYiSe_p9Z-LhlBJ68$_5g015J7IJY7+xr%BP8vM4m>AC`dr0*q_U76W@ATC*ZYHz=v~DQ -zifqm@ID@wA$ueU<$EE?anoXpOC!kTkIM`U+CN&5u>o&RJL&j!xDn6>LW6ByWcRK$H -zeTbDU;5T>mSD7ndO)dV;VAmn>e}EKg3PsEt<~dWZU1LaE5=fTGE@NPW-+P#~ -zWA~iJA5iiwe4lKXOv{DNN@vUzpCxb`5%0fOcy>N;62>mY7LzBq_!7H{D^BMaAg -zx6D=U4z%y`4GV-xu7J)_{Q=>ia!9+3CXAC812!D?vPA1hV1LOWhIl+Bj`6BFz9P|+tiR$bV4a&T -zaP5fq)`Kr-BY{*{UdSl!Fa4Z95zmNuEHLYAE7@&6yS4^uGDR2pz7|kv{`F`8x2n8X -zt2$)3TJN(3fe4B^PLKs1lIeJ6jis7&aC6&>Rg;INUlNxtC7Sg_JG6eF)H58iM}qsp -zo331EP7{|0%=|uomc!3z#BKLA9deD-L1WMaXkmx=vRQ*s-vE1owq46D+}n1_#+XP? -zw(L>w4mko@^I|OXAmRr})P&zx$~iPc*%#!Ys+N{=@3(FB3J* -z0MzNc7Yha%vLz=9NKY1a%JCLMaBK53Hico;l4B8%q!#{UnB)yG448+#D=VpT`Nj2O -zROJ`EflK2@K^-+w`jG-@-I{(LqEm3z0Bqlm)Cz5M*|4X#w$Bn@ZRk$aB0Ib3^X&{s -zJKYlL8-4;pHn1QNHmgQEO%xp5Oe!@rTMw0As8|@?9Q8 -zf@@Xfe4zA|kq+|d+eh)otK3ydH~kP7TH+pA^JYMseT0^4>^!uy&h|S%=Mpnach8yb -z^FTIb{rhF!2Q!7OJPhE3R8-0SzLqWYvXZYZnf#98JX9QDHqmWq^Y)>LM9bh`*J3&; -zg)*10r#*?#EBzX5`9xl2tJsd@vtcR4=No?K5B4QPpX`|^f7 -z?~?dRfM=J}sqKV}775%DwLRvx@H@t1x($j<%bf0yIXMVmDA^u9Eg+RE!BsJB9*nHy -z5tXr9`#u9B{Ain@w%=(U{DL%zEQ)MupZ`bR9-AmvWA1H=Gx{$!iFho!kj=64l!3w1 -z&rNUOcLt6dtdNyEIM4PJhLP55g%F6uz{NNt;b>@YJJ!+-`*ba~bQpAPKZa6~yOMPG -zE>o1Sz4&eiJww@nieFDZD*Hhk3+Hi)5YQ{vsC6kHa?Rvd0NjWDDF{TmqBjIZAD!A0`K5B==}G0 -z&iOTk(M;!nq~cN@V+ka?41=lD4g=!-p*?-4UyIDmF_(Xni@%d~FOy+FaUcQB#JR;v -z*1v#tzi*4cf9|2VRvfS2HszU75{RVtDEsh*PxV4i@QO9ya1O0_un^G5HP(E -z&3V{zf#YNSl=v9o3LZ5Z8_k -zKXGNn0k>`nS~WFzws4J;>wDrelY(j~eE@E8!Y5Pv2es}9fs0tZroUWQm)tzi!(7)S -zvEYaEjSL!ue?MgvS8Wmz7!I#IKc5|x;&KB!Git7%(BJ+wT4_=aGwjHp>mjb;!^c25 -z)mfNJ1?{CJu>Z3r+q_q{c5FrmmQB$5=>wGLXQ=v*+{XKi&C~79*d*Bv=$ibk_CXJ9 -zA`*5*$dY=>Y=;02vaMlR?}u&|EQOe#Qtb_$I7|R+75nnGdoMU!*3rooUB!ttoiL!x -zm@g6$Q__4w#$KWfm&p{%W+=4ruo<)|N)IX9k01_TrPqV|teJD++Y0t@4&KyVylq#w -zpZ(xDD%As|kx2?los2;jJz)o4mxWy|uKF8xNRw(c#A?ETue1i%*w@mm9-k5gu)u0lmGtBZga%&Rh$fT0V5EG-} -zx@%6u&P-J{v71Ca>KQ{;jbaEbA83aZ9}fxtbq)~+#6n8}vyqB^=Gqe)f-(Oy_k=X$vYLxMnzEsmx( -zl*Bk>s=`Pa0fkNL!_&+OGFOE~31h|&I4e3+uoPAeV0>FZo7L?oT`u|76&yjX@2M$V -zST*1uljRfdVp7qsD)Y`DJ`B?bAZi0rBobxabT^b|F|U`8eY`9!XHnB48sD+#Xt+pe -z9gfiSSGJDml-pVt9`7id8}K_tF^c6w&?qZd*-&f?o*HqvYkM?Zzg@&MTmT{p)a=pk -zPI5LL1z1blmMxRGh}T)@B}`obKM2Z)OJFzfVf*3Y8*;1j0{pl4AW+XSn$eMo -zGCOMu7}73SNR@X8@JW9r)2X#-`53CLu7^I!{P9fJW5gyT!FdF&-`oE=hcrm3*LYKk>K$oU=SA5=*+?sxTmS*Ps3&gpT>~q0*W0j -z6@q?KYn_$1XymCw5$Uh}6$!V=7gXC;uHPG;MiPb8SjZ2^d3D-ZmI<&GeNFc5meBIN -z{PW)qiQd&jr*FR>9|m)a3t9YKt7w0uS`ix7rUJZ;Obe}7uN}eWQTp4hkM<7 -zx#)Me3FCWyXPdA7g@2j{1!d7skPUUun&z-d3$xccD&j%*m?M;D&~HHF!nv|5u_iLX -zUBULbb=^L74wWCn3QrQDcTL0@R_y&L5B(XqSilg(F9G6RO7J+XsUc~0Rxgl@4XJ|3 -zrP`~d65j!m6^%6+SBut;_GS1SwoeijT%O`qd{}w>)~kl)lq-eZ5>^yT!E_RmABjz1 -zJE+=(u+uNYoR2!TE9hA%B5`os1D^=37CIOG0&6D&AHq~O3Shi29UVlhIy&=s*t_IIsE#gqME1_08 -z3)&WCw2eZ29@)+}&w2;?s+)59+z=!uA8pwZyK0>QIK4f>u%1OZB@@;MwH*wf^P$ -zY}o9K4%U!;c?pr5vngfQWHC$uY(Xd}BvdfdA6?rHsE2xgWj2gQrAYDc3DiK5XwG$? -zmGdp2|A(yOta`VOVgj%0zJ4=LvR-!C*OTZ5Y;e#4q -zeraDJs8j5LU{~3+<-zp^?7>y&)h`MkU~7P$i*FW(2d%UVn70zY!8j4xi3&@lYJ)BVUJ`&%P2}QdRf=$)`G5M#jxh3BtFO^k$a*rftItZl=~2u -zcY-%+H-{GThRO%!;-A7pcHlYXCho1QWF)rpeZ#W_vcq7%eW@X3Dh2jfJqC;N6is$g -z4J1x_u#%uFMOCaMvLFC{hV@BliXP3vi!3~VWehwh$7%;O*>5>V0eX@> -z%9_kSq1Tq&HkK#Y#VcGGTyC3{1@FJeRcdQ!=_l+@>oe)6%9j7`m0)I1;7B7>pn+0b -z-)0;uMYpqI*IfW*9`|ury~P*o8}l*cSg`54&YM}vm8vAPHW!lI -zlf+SxZ4Pp&-rn23*J72?sbGDR`0(qOFUasjs^9^dL3BCKOG^g)PRXLzy^=|qJRd3q-Z|m@u`i^#5ih&(X>v8q65^#Tf|MLs$#V)J`O0=v+t6N*k*t^F(z~z#s>7dR%=Qll@!>p -z3a)Huv>i -zfgM1#6ahj?+DIf3puxe|=)`(Jx^~EdMT`^EgT>60fMk(9bumN?uNh)VHMV7^fw(cO -z5x@W0UR|oiB5k7j{P5myNkOY*S3X1YZQV1fOFRL&Yk6v}VGMc#P!yIF5wH^Gxr=>8 -zqBTsX->>56@0K^jE%jik@7)L}#~RfzQ>sn9Ev~XMuK!X}R6|0RSdNtE}4xTrQc~ihTWKygUg+QH! -zH%rdJa~$(=ga);V$(arq?^mg5eT$nW%#&0zwskQ;Ms{OUYnDxFx$SNsXEv(VVYpl! -zgG-igm*r6fK3kwilSwYbu{;KBR%?RE!0;x`^od!p+eOCp(zU5c8e7$dQC%F)-k|FP -zmht9Ii{dBpu+Sf=HUDgu8|)ae8R}Sww5^jW -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 -z;A5FyR}2BUgmrJl0?|dAokGSufcz=(mScCpq -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 -zhYp?7u#B0kw+ReURs}oqBPe^SscUOgj*A -z286X^qAGfT9rm`md9DK-%r1 -z(AQM=2Vwf`81vNV1P(=Adee9yrIy$~xL;H)j*-Z4pg55FO4BSNpjAAtxx -zySMN$M{`ZhS-i$>4Sgy@vyYs-DWxmq-e^hy$wOqMQlZ(RvAPFcIgn~ENg1Z40G0e- -z5yOp0>b-j096rU5ytHiEPa%_HK(3nI->|Kdr`}0z!cq`gw)RUt@i?U)G5 -zRS-1UB%q&CwvE^w^L7m;ip$tuqWc=eo-cO=wx2MX;EDyrH01_f$>kQ?=7e -z_3I8H)QnMd)1x#%PBaMN2;gdLL&lVk8U6sT3B@~P8WqOHRP=_#Pm|@m(bEPv}_6_$eN;P`Rn5#Ka3GnW1LqEU@qI8h1@F6DHkD`o-CS4?VtcR<= -zMsWDj6qyN?AO*$jea+KK!Vz(drlKdOx86j~;nnmTeOAht-6fK-O&bl38V6SrrQKAP -zR9EJ(0}N=X)&p$DR~qKzDU8Ix>$h`?Iu`{|&Xk9CdBHi?;!(DAPdr&MuRq{SdA+ae -zx9oW3`VeZk5(&r^_D+?9b}%%+lU6f%tup7X8FmJj4zPx_vW9**X2fT?!U(j0w0J?(_qL}G?J -zw(=}V+g<5aVB5U|LZ`^M{rK|5cRe_A&55QJFEkmeHs!X03ytlgw$DQqv5c=|F-Np{ -zDr_~)=^p+sh;`_cE((RkBdmNnUIuVAQn;dNMUG61J%lM0YY -z$Dn<$!BLw02JIV79bC+6W=Jjl;px#Y@}xk-ytH|rllA-bdJ>x|92}RLV6{99KXy_F -zUH1g|09R})fKH%+-<1Sxat(*}@oQtGSi;~XdrB+<5HnnpOZ^kzysDflJQo=@ldI-A -zd)a8SluCfjebNIS;+hgK1l1NWrGjXf>!NGlqAwKjI)+eIRV0>2W;?-G6h|-1;*oUN -zA=rzenXU++wzu0pR%z;4LKPj^pd|n>-rpP%}od+RO6n8s_JArl%Xt=qbWjB(GV`Lfw-QW?pJU^97`;r -z^*K9sB_kB&J0QY75((N_Difm%0`ibBeU4(<-9EkOl6KX(O*OJ5=Ws;jhr^A -z#?~#c?(pWsdm}+~+H{yJS5p8$Lg5Zc0Q4iJvuD;Dr;9TMxJiB~n*Xu6vAl@DJ~{Z7 -zH7uh-z(UajCcZ*g#)64M=8zXp(^lLPSW%j9xdsZeuP@_Z26ta&PS3bIeH@VlXUi%M -zO+rCaKA6GN7DrS*=n{f!X4JsSc?ih*sehVq4Nb&>Mf>eHO?zs@-_-LWYX^)r;&Mmf) -zF=g%Du7C(4_rES|^5WRX#qk1+dHb6@zLfNlje%-Bt`8`R*!POp`VLd4oOweH+7`mpDxo@Q@_fXus!h6`*K<&r}h(fGPS4$ -zZFsvBQbBr}jAKw8%nk?=b_r|V0F4((Lz2j?CaG;{-k_GpXsdYNLcPn}wWuZD#^d6X -zP=662I8kaMllW|qDB>vd1BqTm0<>XsZRtroUwR};5u&+$d2ArCT9ZgzFJU7c(bIx0 -z7`>BQU}p;u!=>c;8cbn_6BMZj6Loc)$8?6QV7L7h3MFmOa4iFZQQ%Qc-P~5tx~rVl -zPjN}&wPpA!cy))OEmAF-82Fp~I@xek;mKE8u&QVo=g}vjzzRWhjh>(;EV+9$b<^eU -zW9$ZEz=530u>M^;OaX27ZL^_(;i{Fw)IwK*mjkR+t@nK@T}Ji0K`Eqiuse%Q^2|}z -zO+Y2^&8Cc`JWR1G({`XMi1|=jrP!r=!Uo?I^wi{*T@6eQp2kF8Zm~dzM21Ig65DN2 -z^CjNt0@s^Y>VZ@lBY#QA=kBGC$*ULZF3xn1i%B( -z61d0o2s8<3bVGVV)Wr~EpHOY*G*IT13E;0{y;GjSTklnlNCjn*x}0InSc}@up1oXk -zq-9%P4DgJd2n*y5es9}=c*Hgm0Ix@DD57FC`pzZ~4U)eywY&UCrE@#YiOPDH4NIJ! -z{JfP55rS=_xFwS3)-VlpX|KA)A8VVj -zs^WB%{q4FxUazUsVc9!z`vyy|Pvq!_)6&wtY8tTD`p+p@$GI_E&y -z)NjN{+Yai0LlUngP^e;`w@Aqe)S*gUj@vF#;^BK=Vg`puQ=hti&;WGNY_56~DwroR -zLvDcT0ZpN|)!V>(Ppr<3v#%val+=|H1~a)QVg5F4Df$P@s9-~v3Fc#A+aCCzEgt*6co^C4E38>%Iu#KiUpiL);#MoifnG6v2& -zIT5}aFNqFIyKwW7;Mc{k#YkBSB)Lh(#}tjJ1N1-8Xi2ajC8Q6NU*uc6v8Ug*`wm!s -zIq8WV*ZhBYCBC-My7;I10vc+W)2D9m8*!eX{!MZcHTl9Um70q6RyY%r5+6mH%HTsU -zl}(_LHYc${drPIdqrqO~UDqP1q5&U{GueUMv_ym@;t92@TkR3O3@O%mL);ykvcVED -z90{0|m|#Us-CK&_jz$8dkowioV_!d6h#d@{LwBA}4gR*LLg4kVMw#HM3cnLCcxG62 -z8U)#Gx;^wXN&!86C@?q#D%Ek -zEHQNn1Z0M*RcL9S^lm^9rTPO_a05~r>DL_7lA93?=o8}iyP4A`fq2?{S<)BEYG0xD -za-Cjyb2o5Ib9nUe_SVOEy=o7-_A(mtH={@tyBX0;S5u@_-htF~n}~3)NHgw=l-DF{1wKrv&7goXtY0?X+O=v) -z>y&kXE7Ju_Sc@kE4*P9!Vhwwkg@Pd6{6!myaVZ5^3i|sbu5gAJe -z>ts8T+CoH{*xB6wYk@K~+97rbIC8p-M(!;TWRq(t#Bm2=Dbes)HmUn2>u@yU84SHC$f!31f&rK)%E%aC=9>X@%F7TFSs?nc&Q%>DBgSQ?##N1eXc@cv -zGZP0v?^B2J%%JAbgEvQriRHd)2YRBPpxi2&w-SjSLYsS7MpvwKK=Ygc-LtGr(v+p* -zDZERN#D%hdR~3HRCCR|ig^AO=%K}*aBboG+Z(~BkmK*~9rkx#7A{T==w1K_K)y3li -zpn9JGf+`UPO6a7~0B{5*ApTWEE!PquJf_?IN!jg&LuReh>aY$x9GFY=%i2x%I%wyx -zeI#v=ja=$ssayALEVt;++lc||_YOumndcK!Nhs -zWRi2$N@Oj>{ipADyU7fL6f-!=!&xRvHYx_lX -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 -zGi>3#BoX0fxVgNLW0iqBkMgtcj^HUqO|6Lb -zH7a%;5u=g&rZRv5{mWkX(d6TDhB9lrMN)Or)VhU<=ymk!Cb2XP`;1@c=Z8+_beN7z -z!Xh&VF^6NA(Dchr6yD -zDcY^lJ7vn~Cd&UYtjY*2)lVt_O+d20ppqlu=or4ImD^DWII-M;IScHSo{UpDoKtnj -z5I9T`S-R4CjTp;>9v-atjAE8Otw!mMq~OinP{MPKUQ;*QDN@XFG$Eu|e(nq-Cy=G7 -zkPCra9I$`hI6%f%ZIuBmE`jt*XDD?-01o*q^9R(9mdZK6`zu -zqoN4%PiDD?FvQeGEG9A$_2_a;wJX{9ds!WiEK$n78)S=hD@wI;IV)F?i;c>Mgx0b2n@rNj@{#dpQ}l?6D>{p@KojkCn5nezM%{c>`@YvTM& -zSyHsHAV&zSBP=n1;D#!>WInHbriisCADHU;2c911$2oE1pbKLA5MRG7XFi@~sUnsf -ztf@y!SD`N5e*cTmNq6T&x6ClR4t( -zy(F4^b&A)TB=0q`3Z?Y9QCS)4ieCi;F@>_?UB8$lV2428qeXJH1~N6DDODhICw70? -zcO`!DXvt6MLb|!P(mY&zWZZtw5u}4r(AeX~dlYjjr6f -z7$axySeB#OlYaQfep8u^?nWhw4bRxyCd3$mh?1C=&i)hE9(N_1QG -z)6EE&blL|p+?U}*r2;6q6O*$G{ToFyEK1sd?PlRqw!5O7wke@bB5hET>FW6Lg-@;N -zQ3YXfL?W%yKa*g+@x6p3%hUH^Ojs*vNnYgs548uf;yM|oKCOwRGn|=n_BLLSM@Em -z-sncFL-x{SzJ+6m%cW@9WbGf98Vyyf{tx?n)*(DOnQYIdT&?!#rG1Mf2l;FVYp$X9 -zRC|L=sHsDEZ4pGGBPs8LXL^!TZ@A`5n3hYxNS(X2?r1hP+NHGJHl^%O^-<_h-R -z{L!P=#J(vO5o@p{>s9@agm1|@^m20JPfOg@#4xX7*^BGZCj;SA9lG@6tMcTasObAL -z)5g)ct?+!;3FYfNr{tpG&eWD=iXTUTwa|mqcn0tg3pp`N*Ao#XPy~}~2y5%k3Bceg -zWB6w59dwE&)>SgrRpNksDhO6#M8eHsq86Z{MvU-X$G9X}U*lo3MmrD9+*!`;q{GYg -zdf_Cuw4Q8YAUG12JM9wsbE6d<`}cxWG*NsM>3@=l4HBNUC!Gk$+~1=LmU3l5Dg>(N -z$ZWd@Lbf+RSUli_@(1<`%iQ`XDxx2jRZ+EOMd~}ixTkLOQDVXkm_h&P2tJLwW<~kg -zSL{dnPb*_ItY3}U0pz^QRnyC5v4Ba2ai7)%!0O?cLv0?mCs6gP{G93r7hoEy6W2@F-XdbP|+ZOO98!FqRXohhVipTM#S_>46; -z=icL_pvNhR%+`~ND3+lXL$Pc8;X^G4R&hArpw_LZomLARA6kLNMY?1mbnDLENjYKe -z-a*TmG5XI=kem{oP{t@y*l3I}#^SV#AGw_hJq4P&b|>n*r?rG&!trL7<}8WP^v7w+ -zUL$G9#dIfLfGhLOw0_ykHH0l)_{oUoWs!oIZ%x9+?40C$PVHztDv)*oDYo*=JJMJ5 -zk=!teb6n#-6EP=!-U%sHD8nR?3D+P&*3JoKs0?2^^(IlkGDV*2qZUaieJ?}NvW2T5GB6Wk%>(NgDzH#Y<%*l!#jO3 -z@po32Dks`=D?$LO5y4FXVy8x6xB=+Q+LQK<>n!?t9l? -zkv~-C$mEtOrH{G@A4ShS1mEx*9ofH6k`(F?=&5AJBd4s7*;t&l#Z-M+%q81g@<{Kp -z1bZYSUZskkNsCP`;n7}GF+d{*v}dMgRqQsP&<1$NOiQS@eLYn?v`vo;`$=)oF(T|1 -zwlM{GrD$AfS=7&5pFkO8T)p=EIE`lE`5~dhrvF?4w&K9h0zi8+(pe?QIoTM}Cjo^o -zR_-}ClTz#l@{qa+vvWQcE(9nlM0#8fL^ZtTewE9> -zsxhAfyU!92*9qu>@Jr<7a3y6c|Mt@i8L`50vl@Bn)i7F_PkN2;Mo9`R-mr$&dX?bF -zlE=(74KN`I6D`{B=Cz0os!(aWD=d-?sS5G2-Pz^IRT7f9O7u;7})XN5cq9I~8hL>zJte1>SWH})1 -zN!BUh*(wpub_V#0&d&(-l@}eOjlhKd)5yZ -zZL?CVhHm{y=6Z0xBTyI)W3rCm@B$lcCa~L}?E$T?2(#l^=XR<3;RzNf%aDNdy+wg^ -zEp%w<5lzj0|3fq9{sH$Vky0p@GI=#q+}P}rG5Jck!dh$+pRobf0&P1JGGhnSJQK!U -zc61p7i&_nBh6R72ps7D~@|iStbNA)PSg!WU^_2*-M^a=fm>-9u=}S@AA4pDB$6HZ! -zF)fV(H*YD>yw{;)5)#6;m0)!h8&A-dQLP(VNW#8#ZyC>0Xjm8G1#PmwnlrJ2NFDU0 -z88D7&UQnUe#8*xgH<{s;t(Fm@uxI#zBYeddBZB*Bo+1)+T8=)W*-2v^yYXQ3Yi3|Y -z5(0N}OWg-WKM9gcNvG9J5D0?&WE2C%_Sh5|RR!S2<*@Wzq8t(n`(gg_iJMRxuigHV -zY6Vc=&CyqbINsvERc1O+*K@+omkvc}4+8kp>~Ky~%7D}(smVn19j@S{2Py7QLcS>ph4@h;J*?`F_a;*w3@hPgh6aYfT0D~`KC8V9cA{gyJZ$D&(JmIvWtziK(4%jXI -z3hmKalFadlGPv!#^YO_%sw^nFMz1+JK0^#RWII-M{z82WqMYhi*bcNz~ -zE2nAog`t$zShdTE$r$C4^$8@Fr4E!Hm0iGzZ3tnEcS>kOx%QdfZK^H}pvuUeYe>aM -zPtW0+5M9aA7b=P%l$H6i)De`hRfeu;RsM2Ip#W(3`}U&$X`)4^w8UWN05?1Kp|RKm -zk(Iz``8Fb3wSOGqT|>G|T|b%YnptU5ZY8ksB;qNj4oWsf -zGvPU>@W2^7vTIshJRy@-4GP$&=05R)v -zYz$eTUbkj$5M2-cay!9tFxNh%bhr6&xu$|~csAA{Co>wE%gs3{Hf2aB3GqpT_i@by -zcOoP&6lqJBVb%GoI7PiH6Mf$LPCPwy%W!UKA~GO{i%xLse5rF(cZ -zCS2t{foKkJURmVVWO@m;kpL7hxfUwep0-guzx({}pk-4ORN-w-&^0I6jewdOs0htG -zVuz-~;DLZaSxzuaz`4S7$a5&T8}gKzhF2g1%W%}(rG*sV#BBJrMX0=}o5pPaaxLgj -zWn}68ANA@VGq^gF -zRuO6|jfzK(visHSBTf$>p`gXmoZ9NfgHI|o`XhGYHn%N9Oyov_GXt3!=@NDk@9%&_Y>SK2U+l8S -zcFH#{Ps@*Ncx82MNUQF<}A&**VF+s7Y)qxn_=#^XF=<*#dj5?jF|*+ -zl_hHV6O)H&5;FyPfgec#6&$fxd9q8@);_OpRH4Xdz8;i6{oX$-s0xh|VA=sCKoO|? -zQ>9Gxq_#Fnu$PU|hl;_kt~&|^qYm}V#Yq;-XG$#^a|>nRqjPCRf=~Kd8&r}tR4y+t -zu~US=eary1Pfw!m(5^z1S!X{M#49LN#5HZNI(yLn_hL7UxJcYBC;p-f(<1N1s!JL` -zV4{N4r^4LCjw-QkaaouUH!3N$gpaXLMJgn&nCL7av>7JtOJd(9nDpW?Y)K+3HJCD& -z_VuedJ)4Au?}bHM!*Te|i%LX9^DU6G25sy&b}pH&3X$~ahmX%y)_|5iXK`PF0PJMh -zS1!zD6%=Iys&lg<{jpc>bm%O|jXkRXcgl5mTn|`6!o*6fU>mjC;5`Tl8|W*i0z3l= -zAiWN&6S9t!;xu+N4<*eGHRUIw<{+fR$8~hC#BAL6A^2Q~|WlejS8N}t7Ai3D)%#Xx1=ssD=FoUFr -zcjD|Di-;?{%tCFMQfu(rGR-NTpzgyt7Jm!p7GSwJt=`WJq5Jj|;9I0d29PFG6=(1~ -zYR|`-TF|m?G;A7D|3m59i}!%?u8dK`%U1J@ROb_gAxDVfAXgtW@is8hHsX}2KgS*hckDMcXcJ;FWhl6ErN -zj^LJRNpguN#5 -z#{YezQM4}aWp6p#*Tmz2To!eoO3sj?o%tpF($p8S2;I;=kw;7-g|a!QZ-i_!^7?ph -zeu&IKx?GB0HK|qYg}92>Y&Sv*Tz~ao7eZzRvFd-1A(Lor-M0 -zudUg+%psd$%2Iv(Lb_&s^ZnbGRW=i($kKGW%D%o{(%o)OQ&wuAka-hYt>>_wt~oRx -z{-g+@Ylt=ywW1nR@YiSQ1)V1;2dO~fP(^1tQY;`EH4B$OoOP%sXY=VulNuXf@GMT! -zAtOCmraHNW?G1fq(-b@*)K6UW?Fqd+9tb3oH}(X#N!z><`^ -zf1)HqYKOaqPKbmo>1gY!EdJn1t&)zoDqJ(2v8m=w4%{`Fs=^86)r##cY;KPV-gTeZ -zaA^KtXd2_sTw7O`=!WoqN<2x3MY_#3n)^pQKf;aQyH6Yp@=Ir$xq3>Gw#0RXfm?k> -zEo?{WPK=|fm5f#BYXp7#Lt?Nj$>S$>^W4blnF+o|Xo$RpMW;)$>D>R|YrN!NxvwLq -za_nQSh)DQ?v8QH|dRMC -z*S1NFIwQ1>hGG5VmsBJ*$t?v>ZgQ)#!m$FU7dUodz&M}sQr7vMA0AU}j=w^qn)M5a -z5in+cR*&dCj7JHvQNJ2ac+t8okvVp_T$nANh1lLE8zAkgyrO$hy-{ea5&qe;A=U>- -ztF0FXx+xKlk>E3bAnH(G1ZJYI*7vPD-<`GbGw0ID`qB?1=> -zfA{e0Iv-xh9MGvg?}(Hh$o&N%Ow?t}hY8}m;EurDz9u8D8>B?Bq(W-^yR1Y^jajoE -zzM?`!v)r?IvcTw1cl5lrUM4+|i70Y}y&Y-OS4FPt5POLfkZ+(aB`OyJQfs-+q@P9h -z868FAo#!Ge8fOz)q>8Auw9VYS`{VskQqhx6!tGcVqlc08t4#L9y`8bpsWVBuj}y7P -z*lL*}`{+4yaaMNzENyf;SGBDCL^Dkxz9&I-f+D)MsiVBzu}3N;K%`(&h-KnHWu57a -z>OdY{f_dA@Whq{A59c~l7xhH%o!A3_!yQ8EzMO%f%`27CE0FU0{0G;rQ-O$eAA7Hu -zu>JMH44ZG8X*g#yEOK=S&8yy-oU`a*L3e@<$vXb}Tm2Vy+kUh*8Ry#|OIT*((Y}W< -z>B~HN?8bm@62-T{^SV(>DHkb@5saIvD2r~e)e+e`BM~GQYQX@bJlm&Z=*9i3@6gS$ -zobt!*HPiCmCDjjwl><}RJWpVWc{sac^h@=aMAFt0i -zWfJQ8Z=?|^8*huTU)NJN+Z>+jlt5-R^d9)nY9%R!T^QM&*JZ#6Vz8n=XpO)j)sF`2 -zg%6}Op$R_7Ag%_LT#{63H$@A|gISWGp)7K7Qh;g9TrQUC6@MRoT-H#8X=5aCZQHv! -zFCZ=kl*hU5O`gje`V}}_Xc!=1cYh5`D2{WAdxOqZvWhw^>KUN2v`&s-=8Z|ThZ4T- -z{FqP)LlUz3f>`n$UN+UXb-sW7^5fjqjRN+Bv{T))g~ZyzP`i~yTZnF$sUHI2Caq(3 -z1IWL-P42i=(qOIyY&}CLIXu8Wj#BcT-37yy>)cPE^oRJ3y9|p;WNX*UFcWAZI|_KT -zJCq&!sx)hJ559> -z*Cp|;F>N^x5H+9QCk7+z-9|CT>*(2C(s)alw*9fWh+vb(h@gzweBH&2N(7cOBJgKj -zrqMD=6C`VOA#ClLpN|A3K5yOOc@xLYXB$Li*g-NzPsS)+D%SgA5?^a*q -z1KCfAaY|i%{rTlfd6i3;bvsELpnt)-H&6YUReTOeZYQ1L -zTjhKGral;0V&sBqq|Z?f=7FX6S1)P+?sSjlsaT#E(V -z>@Pmx`c>KFmYYnKb7g1@hwP9@PxuZl7PxVSVMgTLb}KZM=+%w^Hp<+?-WX}%OG>0rHAqeE8)mXgY4|FFl*l)whwL5)nE_8QZD7-p?rS}%ZUq?NNwTNlLS -zK3l-$T=0*79He7Ilm)KoE#QbbC?Ig2?@zG{B -zSkzxe=UrsC87sS^=PX}CP=gsj-=N%A#V-(3-k+*AkQPN%dbSGKwtRlZr}0Kvt~y;u -zX6Q}|%*t36i@;WoKbVbBvSIl(_GKjaJWyz-pUoc@36Q -zfTGC0cVk~KDQ@&J8YGVeMDS`rlg**5eRC$9q0l!>fX161o57V$cR-ADE9##;MB~B6Rs(aUI>X8TQhk!)+-=VM -z11bn`Hhn5n5M`awZJ2sfltlvihg}zB$3{{M`SD^VX_7=ullT^MwO1Zb|NI6by)<7J -z^ewfqR35DZ+ykvN0NN>&ECYej?$}oWQ_QT*ZY_2hG~HhJRJ6^oLKZ-L)hV0H8bbN$T8FE3(JRo17`pyvq9=KziRobs*=>=pSLdCshA@4$ -zbRkZ>h03@}zkd0u*}AfFsw%oN?%fcRceH|`4uGw0DEzq0u7EVZ-ZRo-vYS^+c$j2| -z+_prdNR-)*?C#(>B&^~)XjxL*o|pANF=}pR>$;VR_6lf3HKxVRhphE8+`O{)5AL5! -zBFS$GZ;2H|nBI2l66t{K((7khB3XPb61fY~T=JSX{F;sYzx+2^_Vnx#i84x_OWq(h -zFib>LyqeG2W~}-iTfzR&>@pYP~A;dId9012n(QmFpJD?rNDXU@Spd -zf3sbM9ZKNwa$o5IcKuk{wFVXeSyP1$~ -z%z(?)Oii4g-tKe{>*Kg%BOSI+9jSY_2Sz0h&~>K_s;3i5^SQ*pV9PyKm&m>g*|KnXw|63y&Mu1E~jvJ!!WU1*XACBI>3BFxHl -z0smjfO!e6Fi!%OrG%o&3(!@TA0H$|AJa?oUJl~1wo*}&;;~SwPz+A0819kx}&I8Py -z!+muqDN>p7b6xA)2B(UzsB1fJkF{m{q1*->N%JOHW@AIoFc)=JT&H1+4|I7$i$tvb -zBaNzjJ@o76+vEfrNT*%%${*H?JYyNpx-AcSjUaJj#66GVOk)_XE%-b6hMS~VYotpN -zdw|#`o$~u%U#yPTZtJ%Z)q9z*ggwrM{Mf`ig#ya?!9Ia>#H(Cu9y^Jlsy&IHqVKgd -zPFk;!3FCQwu=heR!$!2dABOdY7kqf06FA^P)z;3oI$n06hxhfH&Q4td& -zm?ZUF0Z-h;gpjk6ZxftK)e)Ao5C||YYaHNF%2U%Cn@bSacZt4a8GW=pG(909iCqIR -z=I5pb^hlgInaUG8?fM~js7^QMi}Tf4){mZBTTG)A`eYJ(EDEch>yy1_{C!|)bo>wHBvZZ@K~^TV&|{a -zx0es9_7gIdtzWr1GvozKyaJ>y)aQoTlmG0OF*n^aCcvNebt7TzRRIY@B({1bU~Vs@ -zC{+82C3q`buE}(iHGGiY#~TJh(+!>B1L?|Iv4Y=2^Q)WI0@O3Zm-ODfxmAiGPoXkD -zfqs&*&{`ozt#4JkmXoE&>-e~}!l2A4YLy}(n_f#^Kcx*)t{*ao -zZEApk%j$$uOIZ7NK6~9IvtH(wnB`N3hTGtl5ZKtKzneFWHdcasQT?9Q-1hwzTw+Zu -zGs-jAV=1)y^~=vHH7mnHw;*x>7rzrW}v -zDN&4$QyVmDhh&y}D4~W0C6Uz{_Qk3Mwd|KQ2q4Tn?+`pFnIDjJwT^zJnYO#QQZG`+ -zdHC#LTDd9EddcHQCR&`g!!eNLd<){E?C4Tp{u965^qxZ_!)* -z93an{E~w$dR5(9VWwOQP9I{oozN6TQRn^R|5Y`ZwL))N28^mH=T# -z_}5UlL{=OF&;zwK?eB!yDAT66Nh)Hu7!+d!nw5JI^*7OZ?ocaZI??w -z0YdLZ|9Nc&AoKq+Z{?2Uh|C$wndre@j-~bqyV4xM5^(b|m<`xjPZK;p+zUuI@md_j -zHI>Gc8F&~jSMRHkpm{NKrq>1E{nD*X3VU`ym^)|>=>#vajG+s}i^C{K28(FkOEhC|AQi5|1!(6f#evA(qsB0J?1?1` -zriSg?7j5YAKYsprep+wf1%k+wT_RHcR*f4D8(ZEJMe4=Q&fb%_#BWHS%5Yi}s!SA_ -z#r?hlxQU&Qv5=xm>gkg$JQj_-&6nk|q3BKXlE6cZ-X4}l9AtZc4a2S${d2YG8bUYn -zV6GiiImsZ983M08Z{YJ1L`#+mY8c%dkb -zD3)P37T=C~tR;wkoD@@1Uo}u;gG@p$W1c*AyIkZBLeVL@rhrVKn^>7OL2It@&1szV -zq02XkztQ>WC_8Tyyc6eSAiq$-Fj*;&{1IF7sB41=r%3k-z0Y+|kNm^uU+Lq>ECi3U -z))_%qG^Xxn+2!QY-wmZ8kLa>GTgi$+?|ZdgGA0Ya^9m>2x{U?aRqcB#^THF%PUZ$< -zW2}Ya)aO>E{b@{bklJ1-PNUCh2-qWMpi%I!9Q7l!diIC4^;aO6Qn~@)HLzsik`j>3 -zn}D20wTjb2BD$+LGwoYE3B7Qku*1S5ka}(#ojkXdnuY4#%(1;Z!ag|PpE4ctNr)i@ -zwF?*%8e5e&@qEBf+h_-=`MbSXE-N!g6nU&F-kV5LFv|zfuG&s3Pa7x-|6o{mz9ynm -z6X>g0LOc4Go;>N2YEnH+FAnXp3*&Pu~Po -zIq3(>hcW`8FhMIg<^88O^pruhDSrfrC(2>B#MdJqfUZDR@R$&Mh_tl9&68AeVPo5+ -zi9_DknlAJ?^3a8#E`Rptb?{G)JJRbZ&S5%%!OZCZ7hF+r)A#)fHd%}5+J87EZAClX -z)v@2+kRuwiSKd^FE74K<-Kd-5f3@6iO&^yWvLy#hhPrHoPxa3Gd;iBA{3 -zCKXNj0ZKWr|2ww@dGWl(3-~~|d~qC~`05MT8_?;rNebZf70h<9EWP|}O^kj17l;C2 -zBdyJhG`^7{XC+Ub -z$mpN^yt_=Oy!rbc7e{V>|Guxr<=~(2yWN;0B>C)bbmn-+oxPtm=gjxGf{H!mp!b@N -z@^kSc{Oz^saGic7-|zQ29rF1W6P)z>6U^M@RsHzMT{`$3{rE)=tgBz)&#$Mib$GV+J*?@o86Aes -zBPbvI{D?7){@=e)bKm@(_$zj>uiwAmu6l0H~?FeP>$6;jRKfmb} -zCE>Eazka#5mfipLjX#$8{w4;`0D`~1apZGZ=-0Pjz&hF8%e%=M+vKIq%i=BcB#O7i -znSXuL@J~YSU*EsnN7ESm_2Y})Dtr0uqwfeR{fs~G#B!ZL-@n`IU*J#C*FX7WJ-+?* -zllTJr+h1SPgf2d4gIj}NIxU8f{{Hj+xcB}VQ_qU=`Yx@`Uw{3b4upO1*WX`tKIvco -z{+=GWyuRO;+FxTKh3D1Y{=8rBLwa2v;HO8dzyAIOr#Jn9Nz;rg{`I$A-`^kc^!dNO -zmMi7gzi?)fS=;-+-&~nXUhAn>fJU#L(ERo5D{H)-fBN<7*L|~&Yt00=V98&{tSqK+eqt3=0%t;nV4(F(x8pbjr8?QuF-v -z%NJlD3K8@Q*3w`7EDb~T>$`SFSyl*KVN;N6{pnkxef!s6zx)%ieOIwu`Zj(bp}ZE) -z&f#X6OcrJbARlx*cpBnupYqJF!AKH@Uq64@TU1KairEL7U54DquRlKe`@4Sxtkkw6 -zXDDmV!^ecWfqDJ&GrO_kGg&3}(egMZ2k-1MRyv6FlsC(o6sUo!h6UxK%qbfV$kgm` -zS~?&JWW8Wxv%ew1j>t3>cd=?VmaLkVuRp)) -zPi05OZj@hp^N#GzzkcbXzDAG&gvUx#!gK<9Y{K#DUphcy`sE;h`)gUE-I(6kCERu> -zxhZ{HInBz?6P~4)>(HO|YPHJOsq!jLjCdD-{9j$ymCwjlklJXSG5p{TH$h*0%QNi$ -z>xX^#>o2?PJElBe1ZY>wPFG&>U4mu*Vr7twd%f5>8vmrZ4aG^?FqQA_l^>x!-u%VW -zUVPXmoqwn6%R_bJyS<3-_Jr=;VSl^^-COTBb6xJYF%~}tebxB&=l3t^?J9Hs^v2&c -z;O)AXzwPgEOYF_v+2^OLU#G0}mn|G0l}`X9M#CJ|nBI1y+mCzyZV~R?Ci(q-*zbn$ -z+h5oy4TpU)-t0!l(PgjhE_`;6twT@Zkj$*U`TJLT^UFY5sCXZbww$@j1Mm%n~|y^rs2`R%Xt^5@@{k;I$7fBA2s -z1fvr&n|CiBi#J!C{YaZRUj7vSe{f)jY_@;-OQb8xU-`EB(|?O)B8U1~y!G$sw(|n1 -z`EUPk|Ly;)Z~j03*Z(f8&%WFKzyIC;`@b2FF}(HlukYXOAiv?l^K~9kH`SOnyr8e& -zZI@te3RNM0hWUeE=MVn%_m|HhzZGBh^k=^*e}BI|;`sv$ThW2`%dhY)c^#lZ14y`? -z?d^izy{Yjq2n`HdgaV3#8H%XIDr4fWM+4*W6Q8L1rkFl6yX$?-ej~*4SAWqZ!XVm5 -zztYbA+kFI-(~3DPk#c=6=PpmgAS*4gMKfFQM{g$$^t5vUOfDDscYebH$s%r&tM -z{P>#Q$hV8j026jQEAbPlL6VL)6cggi(xikPiI56D^xxmzB3ld+J7S;Q3~|CA&Eo|jJ_F1>qrJ639XXsX}-$EFQfhR^2K`%#-A_{+}B*|T#Q -z@~dr0&#UE4o_!^D&q~0(XNTXa-}XZ8+Ya{T$`<#={&?@~@ORT5eBR$b{M_Sc-MaEuOKm@5H-(M?B~V8l1{Gl%B3d{G1z;tDdiCH|05-6Zu?xY?tMsFIKCyh -zV5^$+(nQ~$yXCXwiJ{fqestJscz#5`o%f+!(PHJl<_kIU^T$iJa_GBXr$Fl?g()Au -zG<344?XC4*Qd)({S|=2M=EW16`Y1)j-AT75^y)|VrsFI_csF+&{A_b{^I9#n+t@psn7kg`#8&JOEwIrpYNUg`LUphbP1FS%9mBQSeiuqS3zyMlkjUH9&MZ(==w=w5$fe(w -zRB5%rc6@Isk`Kjx -zX}SHlH%}+8Fs--JvUq7+W|b_ZPalvh&paV$Sqe{2d+p1B{`tn>9glt-75&+wV1=Sv -zf<_Dq8+o7&vj8|(yF70!%KCW?AFYao6LBb)QG3l3ggOCgh9OBQjFe^>Tp%N{jfc8U -zSmS}9b4CB^x1vn)&O6@fg+hcbemDWSvE5K8)UxXm$t|0U;`*!&0HsMZG`JW5f7!?R -zFgEXn3ENN0U-`$0tQTzn#^?k|1XuC|tC6wLhNA`PlB0XosI|rX#rX2Alhk5X4BPEQ -zYm6@`UJBn5J9hqH-d;W!TM+ZdtO@?u9#?=&mj3f&VmTB7+{^5Z+AYMmYi}+$o%OsD -z6g0HOWKtQlz-Mo -zFMoS_CmTfb0WsbFj>};yE?#g!1PLg_?ZJC!bIP-oS6o7>K2K$=tZhU(^#XxWLx7n@ -z2#ju$1tZVKv=*wOT%*9Ylo7Ne^WF!qH+bqeq0iZ2>?nYrGQ~m!WR%|qUZeE58J4q;b=`vz<$W)+FlgH -zC8KU-N_hnU6&W4n_2c@@(ih}US}tW6gL(fMP)%{jSKSq-6B`jAl^?Q!gmXQ=@$pA% -zlK-RTzgiP4W$PajSB`+iZBFSb+wn)JnAenNtxL=)maYKKq$fT17HWY!cr`}B4wJ$W -zkyFl(KHI9^ld?*<1_H1sU9RIehpBZM_;u`SZdfobYh}*%$MbNkN}a_H-$%Kk%ByHHrvlLzKz)}YwV^c<)Danv+dcL*_>hG^CU}{ -z3AzczQR^p^V547)1%xP8_AVdhXa51JmDi`NjVr{=FUa{5XX*b)+_BS%ll%Z&={|QkTd8iPS79Da-sfywfECwYZJ5U*AfT -z=;v4MGzq${v%IP7lRJ~{10y;gM -z4my4CfkhQl+iN?4nrfojDnk~S2)UY`eBu-i9J$E#0B|E@r&!H7`tg+-bMjzOAQ?E4 -zcF-n5vRz{!D7o@)XpxoK4EKC--)U~+OuiPgnDVt=OxWH44uape^7#CL%7_fqr9k5u -zK4^Mbw0iJnM{ntLUq|n)K_><&d0o+OQSp!VvOPGde)dVfdi`nvphL1EHPQlEBqyi} -zXNeBkWV91Ce0qbZP3_4r*@%|bJp^5^kKd*PKL9_{?CdZyIUuP<#)^=S|qB%wX%bPZy!>jOG{!4`>r@vW_QXsNXBa8M#j_Aa!V@;bsN -z*=9(2JR}b~UNMzhhcE!PdS?n#o|d@MxSoLgBPPa${{^9|x^gI<%ADzCxvz5~OudUM -zuc>|UcUswN8x{Qtx%spj5bBiY9mpx%v?dA{2tQ^|)ClF+0K0?B-?tTL)f+-4D@WFp -zc*Kp?NznH42J}zzI2JjRrE9)__qc`w!GE}N%{PEnpzE8z$u5HbFKEzY*8p`hZh3k0 -z6c7-!kYt+!uTqW>ZoOyy;#7sD^0(ss6nDMNnJ7=5mc$mwr-Ky7rAQ>O+EfAUhW%z6 -zChOgkkMq)EYy)-z!vFEEeK>TsN3(&wwzkCL1G%(aV*_A%y59HWw#6#z1EKV)>K`XIjFCMfz&6BwED -zh1a~!Nsly}kE4L}1SRj{HADxHRpT@BqYnWzT9}TRWS={GKfP<8C;LNTp2a$J_;7ePpu5(cZIR_S<(fM2-#+bw?v4RK9o&GMg(`^mvKg^onKMy-xIA928ZA4XR3> -zICG!{MOKHv4g*=z;lrz)sl8lw&6P?H$Ysd~Vt}nH?goJtT|#sJJF{dgl#px^WiT3v -z;9j#E(XYJe_94gCP6JzsoBC0%%GzM+Y&7q?zE0AN&>h{>8}fc7vCN5*ahF;6ZWkIs -zKy1?i4(c6o2s=M|m>=<&YBS3JcQB-0eq8=1hq8bBy08Di)xH28ZVJh&ioD@qhw%(f -zOWs@O(fUvAcKKi0d@v>hR?NM_;Rnnz0-T*N_BdnG!l`8mRNxsaRVvB%TL@ZIJswaI -zA%XCqNf;Z5^dh|ZT)4NzocNFb{-0x!5upPw5tdOezNEUCAHV@}1C*bE97DE!fd>atFOKyntQaxpV83B>!)zd|9GB!rQfmmE`4v(NhNoNG%`Aa?X&|D7M4@f -z<@|dobOS7lior^vNcW}PKOpmYSwaim2J04Yl=5cPpa3l`MFuHA2LSY?GX2DLg1tia -zym(oEq?g(snBI!l=`X>tGURt+Ez+A2PL#c#+k9LMX?pXRKGpMnPUMIwf=-QPD<8eg -z5~RAs0T35{y@%dAr$8@&*Y|yu|Ajk!d<4@iTB7h5s<0$EKD644iRY@2*AlDmgln&S -z$Dj?Q@OmyW?E32B?3NE~A>3l*H0_}IZoJ;6s!kiyj-z6gmm1nj77f`?Y+EvZ^eKS&A>CJPDhN|N5t%wmpU -z{m&YcAiB2Amc+3y90QlEaZG**@^BwyWO4h!oE2uSHvN}o7_2Hz)zC4MmlVeT$JgJP -zv#_Jn&>MfWr{>-_uGE6!gG|(?i8ezW>3NHglyOl}(3Uz!hs3WET5SmEovE}N7;`*X -zB5$0jIZXFhIN$qym(a77U^#78`_x~a00Hpb|IE&U|G99{IJusd82dj*r)WC-wpU4q -z4e9J?QhWRQC-Vg&(926SF0SBWlsY}MU&O#O55wNR8)Ankh1okCawXL796#`Ic2)E1 -zu`;qIL%qn9ELF?zV%yDyTG!FxzW?RfFGK2TKxYaHX;z2s;r*>nd$}-id-bZVI9vyL -zcffAql!aLA655Xv#+_Qi18zhAaewQJD}0hd -zZ)~r!)sNI5(T_39wuhyJzkd543c?wAexV?{)O{Fy%NyYzdR*}%FaL!_Q9DhmsR6K^ -zUK3lWJuo(_PVwP9eF)`|an#ebOIl0ZiPc9y_n}M0ioF&O=Fqa3vX#yk;~p^*JEgDm -zORG~AOb`5HN4C*dTsn2imK%-R-W+5Lu^|Guq|jU6`^(G{~Wqf07>TD9NIrF$Q|23Ymlu8t?ag8FXur6*hF28v6otNXP9JdaA& -zWbU8xfEjzUmLY&4n?v(?evE^^^_iNaW8CyVb)L&|Y -zO9VW_>IO##c1%s2Z1puwL9-90l@XpE4NMhuABS7ga$JD<4KR}~$Z2;l;uo_#j -zaoD#8YepTPBa>!BK|%_7tu}MsWrE?pu3eMi4V>|4in}8DYa0r93z>mNRo(6>unkdJ -z85I3-oH(@5$a~DWMd-T6&*TSi1Hl=PxM%BLVwtvI!3*q8!?#9h&qzUKxxxJ!tUu(| -z9%$LKk3(-qr-D$wegae53^}prt9J}2S@)TAS|$+KyMONx0MV7lzW#-d`Ck -z=wta$W#&OCqNmo!?|-E2KM-g}h*RtDxwP@s|7Xt@_J2b&;s3+g0+h4!8{1gp69?9h -zp^muezyCBIIG#HE-fjL5ARHzc7I6B2K2###16s$jR(ZS4f_PL+9AJ)vpdRVCEDI_r64hNrd@wr~c4OQRC_}bZjol}P?#b+E -zs74>XM~^!$tW||o78O93vu!L^0P>;+AH@b$83#&fy6$E#Kjvle4KyMqgr -zrDb#;mX)o)XT?q<1{;%7DE>^Z%Zt3}`?tfTHW42u-*XD^dsg>*Obf@67|Q;Zs2ME| -za1Vd!KLFYwZ<3QTj?8xVU`eAwmcm6wLsI=8e92}-eB`3^c(Qyt%f86q*LCQWqC^z}iP&da)W>!{mpJNy^6)Z2C;v-y;Ec5+SU -zOeT`2FQ|?W@dGTQy9Res{@ld}5ppOKG7GJLA@e{jFsFAZ9Q-`a38xE|^vA71fs7AyBqRO%L -zDq;k!hzGC(#5pc9P}hA;85QjAz?>S+ZNY?vUQ>FmrU-C~v+eT40b+}sTkO6jt$R~w -z4qysUW}*x$S<@*C@<@iuavpi*HY_3nV3 -zal$W|V>jRnY@uUD(Q;nI)&?j)4ACJz}Iq~$(iLCpg%W4%Mca!KMo;uL}fC+*Jaz5$cqc=vn1 -z$jC!;Db}}3=C(q46N1Z=gO~A%T#&`+mMg@EtE@cb1qO}zqQr$PskY1gCgy#E`nl$Q -z__28IviHT|jBJ(r><6YiP+=X8;tY5R)2OP%_TkdY)TIzf3n!!a`XQb&DY?WsoG84P -zioTe$$4E$&Z?90DO+7C7jvN)RA<}1Q(9UZhX*fXPFL%iaCbxMSI(ZIPq`grAX*8T; -z&3PXybfWJ=b15!Zo{F6Ge8bq~Lshj$IdtjH%3Ips9IB4#gj@HRe4m|Z3ajU -z#1~Alwjjibs|^|nO$!osHP}2BSWxhU&-Hp#_HU#z*6wq8bJM>tS$ -zgYm<7oua=Pp(eh76}r6gv0peog}cFV!*w#*T1<`GUf;#79U5d&HOAq0`zs2PO>nVq -zLMrp4m(`8sm_Hc%M)q;qSK2ST{<}8~=WjMjA9$Rf9?KWYd90hr<=v88xBRj_$IBlh -zD_0>N`VCYJuYW=?vxVXvmGaU^%BH)aY-~GxvjUCwUXCgxp%nzf=lt?mKnW_-XkV_k -zv(@ThweDC?>G8<=l33$B0RV#)+xPlgadaP$+ABV7+7|VJxu4U?u`vUMJDtA?CwF?8 -zQ;;vHj+f6s3a0m4JSY9+{FM4))nGs=4MSa{@()qAUAQU5XJQ`Vw3laPFbM*)a*$pn7pn|=F(~->b;|NQz%GFnV`-AJ&A;uC94HnJb$04|hZC&j?Vtr`!7!YjvqU9N -z?LaLCXaLTsybBo7p*?>BhB|$Ir~8GW;NHNU=k(NMY20=`kY*W_0*`__)>0Z9l308=?Z -zK=BKQ?quD@H%dXjgXjbg>%g0wH=w8Qm0LuH)2@<-E0E?C9V>+m$MbJ}cA -z`O&gptK-j=CH|3&%gaL;`Dk9QNKsuRG+ue2Q`c! -z;5lzk;w~kZ7hg(F*=aoc>vce-q&W}Lu`xOTpmRMR7W3(kwRHo*;rcQwWRu(44yY$& -zlNg$G?8qt)hxv|AUu=S6LKKalQc30hLrHl*!t++%5b}yo84KIw^zK0_iXO=P8S$*J -zMQ6tYDjQjmszxbFOOZ_I>;08jI*I(#%6KT=^Rz2sxQh>gC@QZ)E3fl{hR^LtT%m6= -zV^|5scc757Po#_N6H%wKtK}~#I32vjbDJIuZV-6<_u`D4QSwh0hkIce5M{kw>x8P* -z2%_>O+aoequPtf@>D;o)#`vtD0%8oc>M$*f1Z(+t?K^{y>~7cwiiq;Gp!d7AsMuv@ -z95AK%z{BI6q`GSBdSGW|waY$uoKMittC-na;p{%eQZSy9N#AvF$4i%Dwawsc$rO7x -z$rGsCJm~U9=HXo~6Q}UefSBoNPI1V64xZe*{pH~_(6HW$oD9cJ17+)AakDg5CsznD -zuGsN>MqH8a5_I(1mpdgw7DWa;l=B6%Q#C(c_BQk|1g0nO=-Djez%$P6>Gch -zipC*X&y6Rl+TnOv`Kkrh7a?v-c`aF9>1aqEO@G{w*b1@euYsOydc)Z-zU?5R&Aa{5 -zcZrPlW$WUEEzFVr7X@2-t~N4LZS2JccYOsK27r0A~9#H-JW#qn0H(`QZk -zNnqT*?C-0rp9QK-gN)6~sM`>|3>@|{-pS?FB=Py451;m{;=5HqMoi*^rU_S0f#Nyd -z`+*MVX*bwpryQE{5Um`R)OI`c$>u&Q}W -zpKtMSWaAi&fBzG}By7w3oQft8s4BU;(JwQ&wWO -z?`{k5M%mhsZ$asq+gkokP;{kM-Emf~AF^U<_lZCG9KoP!SJeQ}9U -z)SQ=mBhb7m=pS&H?|hkuu(?C*jE+NTdcx~wvW4UO>s|W?+e17|aVTDX;$6Sawj-bY -zpTkTc78%Agh+8)nKmQcQ%c)=fnp&uk-yp~J%SAk8B|CZI2&tka+qg-^zs8VqTZ*Q- -z%)_2iV6s~W7dGTWMAJx^)~6Qk`5m;ev&(mIrSRXVn&kRfepu=z)9|*GB~6|~*h-6z -zN4bw<-q*r1Ctx$QQBT#cv0Hqy+}q=OIb?iY(PG;|ZV#ou(tT=QP(V-HZhVVB@`a>qbrN}2hZd8M|gQFm`u__1|?r)l0XZAF09c|i4h{wqpWpTDqVIJ7Pu|1ODZFoMr;8g?}R%+@O2<1}Rc -zYbKI0$jJoJV&MYPJX_FjSPnc5j6T+}R{ozft>76m)lvD?$WK4|-~=PZNo1Z0eUcm|GRfbcjYT^`7r3w&N@cp+F3ZvK!#q(|J=Sud5^arGI`T(!V=?)@nMqAo -ztZX4^9VO%M9~@nHAZr5ML|Pd|O4xJAj6fDf-1?GRT-O{H*6YCJk?4@Ho!F1KPp{Ji -zWo9J;5mVJfukDh62JNdw+bE0~_Cv%IK0j=cIlmDlDKAS-gTY!k^tG5l>6y{Qcomxm -zB*+>)$JJf1yaKPvfXV@b951!$BHK*gU#yCLDd7vf#3kfUe|T;c*cMgi5Tw{}9x`FwqmT -zxBel|1C?&wC|dAMI)g|us~Rfk7l6!9nsiO~%$!xa5A+ov%e;8I-eGmZNqGr~=4KFY -zl!CfJmXn@O$%?o1)j?6TgPwngSwe0ojoZFfLoeaExod>01_&U_nI@AMa+V7({)G5w|vR7*cS^k#pcxXfk?NQD&4b33Z#~wN!`<(Q@A!!0_o3%g-e> -zK7-Flqc-n&@F0$|^jRwo1u-!>vsfqRzZIM5yMz*W*z{yq1G#dvFo{eFnU7BDU??mq -zPztzxgY-hZ@o2ACn~s3Qf^ceXZGM5>09CkXZK5zm=?^O=BYUXU8_&5-81p4vy&708m`^$u7pKBAck+vjPD(l+4 -z(%BW6RV4ykUNW%w4M;uw68h-^sEtzrt@-3l^OSWx$Ry&jC9@4lG|`uC8$PElNC%>E -zxGnMHK7{5n-)GW{Da5wu=Ms0keI9e)-n}#6EnAK9lxSVuj!8|36)Emv{n)Ejekz{@ -zaf9v<{hPY}K%0nIo2Qx(Svt=S>CNL!Z`vD>~ -zg!qT*7_P}GFiw&1zLv{)f|}uN2;_kl%+;H&byvuYU}Fr-v$H$f?`I!P?e_DBJQ5V^40VWH -z^*&u6*xh7rh9PaCGEl^naBFKX%zHt -z@_#@He|=BDlM9;0=Au&}txPTeIeR!&LCBziR*gSuBQk5DgdR%uQnnrTV@UOqa4au} -zv#N3(QphL|YQYRjV~G!dw1gU&Y`NPBx~S{sCEJXTIoy9B>`>j>PFGKa0DsI~M%*|1 -z<3|C(!=Fp!rNYf`Xn>KByj;jcWieG=pbcbNS$)gmOob(|;xG*5{QwPs#YEoI?WO)x -z!867gjY2^`>znHn{`k41g3qx*oDMF#%5?!(?4PKa`o8{wx|3Vc$_)x{3g`I)9E*o{ -zMlTrSLTT|pa~#Ae(B{o%!m$c~tjsJJv0?1lIB~A&4&-)e{xQa9Z*YHQ{VXbVQwboNRIKi()oO{sacqC_+r9vP>=eY5Rg-sFx_4^z`~^0)3Sur>;ve$K;bK -zBA1_Opqq9?E*w|R7q2pit -zkH8VJ5`W7@2L153##|v7#7@QMpTJNMtWGTAa~FP@7V_r@Q;#RCE^|3o-6BbllVFMD -zalmAIh3{##{sqp{7U6RHRJ&4aWH|geE++den`cZD**`=jD+5CFS6&xK{>v;w*}nYZ -z&+DF^#U(!50&5xH^Iwz_`}D_hCE$~}ZK2bAZsic`3I?|G_qMe(Ap8vDVk?*#1e)iP -zdj=^e@J77cE%=hiknsA{oZ@C@AdH#v}bVJezDPbUO{{RfZ;rj>Q -z0t&<8@hi7JSck0mi@&X3QKtB;c?-g%?DayyYkdp@AD_O0Ir#@v9?BdL=)c8dTN7`)ey9ex -znClV`($gsmn41hl^@>Gi`iupnbISu8Qsqhg0Wn?T-q_lD8CfC?YhpG16F~f4k5DX% -zKO*)&X2Hrt(myoLw9k86JUaXI8efY_xAyX)4uL#H9)Idvpd04gM3R~*EM)QASO -zEkz^~E)IoR1xWNCeH1Fx?I6_Chk4IBe~i6CfrzKi)rS4~eLMSWjgb1_{ji;XAQLL0 -z%l~wV7_GD0BW}|Hbkd)bWQo~P7(W#gj|=XcTqP0}kLhK;vb$cfsIPw@SnS1AAi>g> -zi6?xZ)vJH#KV+!*>I6K+Q{uD#Fw%?zg{24^E$-W2Fo_2~oW~i0^gRArGm&MR;>67gb*y6JY8f4%#=TWw(wo#_;8Kn*^;`#l) -za0X`EEy=5yp*aK5G=BYpROl3p -zy75skRm&5bK|dZlv1Sn-vq_zyVu$ad9i(3@tNG|3fnCYyI&=CAY%~+=iE@zMoMySu -zYS^<}$G(Ql7WV-4q}5$ebxHod1~<%N7wE^-hBPsx8Cia -z*J%Z+^dsdL*YJ28B&rI~2gw8_-+ob>(Ne5r9aEm|VCbjBGt5?S@Xa~0zs~Gos67+Y -zl=Wf8F^WrX;jI3#B)UaT -zgEAKQTGYu6&h?e0c(L5MV_w|O=>ye>G0rVPhjF^&zc|YUTV0jd5EAe7#p;Ae@5)-W -zik{v`8%D6$_evf|iG*72xA%+OTH<=+qLc%`azZZq?s6@wIHt{F^@@3~u22GM-yi+H -zCWVBx{TtLXR{vN+-&D>mFk|5Gm+OxDi(VNhwBVsEnJ;TSMqHVWV;^Jq8u1@ik_T##Y2|L4qLsaR+PTGJOuU(|2?G7=57xh#Q+{9yGj -zPO6=%sAT>D{pv-zmd&Q?nihfznbiM(5sX5U^w#pE?^S$n9%d{+epdBi -z1qoJWzmK;>ip9Oa<#W~;vx$cm268C(f+Uniy$>a2otROkCDM0fiVX8DzpsMRB?J~N -z`r>%>&VqWX1vUgNjKmDsRj5?47$-a17^Q|`!2ksiWYArZ6r(6Xq_Gvt*_g)T; -zira{2?a{wkpI1KRCgw#i15_$NmKFssH{i`)Z|6Pxg(!53vuPjYIv|8UCJ1Omxxky) -zUpJiqcrJ3p*c;>667Cxaq#-k&>OFl4zii$hl6O-x3Lv{)nRuzOx#R#<#yd_7R{|sl -z8tg|op05{21Xuls7^!Lr=#|$eEujK-u#yp0Hdw{Zm~q~eEee(Td`er2Nvv**%wv^j -z0&1_kyoo=#OsDM<= -zJaUXN)&iTF%p8NISb#N)o!ypx_F=5=Ow!t&>uH{>QmyGa^I+q)ALN3}#GvDW*g~u- -zIK%sCb^%7YyIvdX)UkqR0tKQXjzAj2rq!b=hA5m6RTXKp+ET9O029EI1=e&v^M2f7 -zs*;jSOtDHIzNP`_Z^r`-LpmF}U3S!uR+-iGFbLQCN2}<@@;W*h>svW41Q_eEQlu~` -z<)K0=)8fcaWjx|=$fi-J%N>t(jQ=!jjfs@+Ydy5=!%wJ4{X_jQv?{bwB);&=X&_sn -zu!asT$m~tFiDY1BLN3RU9wyqCWPY`3h&j25++Q5y* -zMC%8{%0MDE>HMv){S-7Lxn?*X`xb69y!U7C0qQN9skFeY+e}vM3a-e}ubtxavR03nO%IgC -zB0Z~r0DmI8_nxLCL%D*75tO7AiAI8Vj*OrF>#h9{5SkkP%VyEyf7xX(+5aQG&sOzn -zD_eFbwb$fkvyE+U#DUGIH(rw3G(}>`lAAY=fhQAnQCARuK7V3sf;ac)4=&684@be( -zoj;j}mk(eC&YwWa4H%dKqC`m@?tNJPrL!uwT{rDwWjgR01Z9A|C7SrT{KfoEobUM;FCWc+96}FU+*p|Ij1iMReueH&gpkOU-gnbCjheQ9 -zTlm;$u;)MpcLzrkEYvy8rfx@rtcJ$JVdi-gwW!9QE892EI?1XC>2V<1Q%yR^V^+DU -z4oYI+%}EgVe+NC+zlZhTZs~*m{eNp4*%X3Z*w}y_A+ewMz`nb=OO=m$v1n;S3VEr-F@UyUHd$a#R%kqZt^(7M5f>6kLz1{ -zS+(MXg}bXlX!yt(E4%H!F^y+|#PfTpZ${mwRm@|{uvU@l^`}6-Up+HQuP7*ZSFrs2 -z86*J1WMe42Kr37KFZc&)`D<7DwSb`zZl>P}7tqL2(jSmH)c)_3b!^5p?BeBhlq7x1LnI!FpR>kM?p11g+ac8IBK8D^j?byBqXo4#$%Pkb{=O-6wxudLN -z7x$#>1+r@<)_#>Zv0V-bSHi)`{{LI}_&91ORYk+&`f&FJ+2=WUig^Cs^_7!sBSW_* -zK(4u}6)2Wbb$q(lkVSK#g$+ZS!?IyV*x_4NxL)o4Kw3SlyE7m!>tonF@?7WPgR2{@ -z_2>xHE0CkkbDQZ=wUCjYDK3K|NQ*aYAt5Y}Qm0c+oQQ!IYpzKI&GN7Fp*<9+^4vhG -zr_+5lrLq}N}+Eh&x5Z!Um&gRI!UQ8mTaQS=xo0E~)V -zOm2Ie*GvaLT2ejz;yR}7wc1r%hDwOjnsN!_QX4&c&h&#t9s${$HSxs5>k%N_J$u)L -zae~96;z`_gW#lloLsmrHhhDXL*vI$3Gxldojw{X9Aa>tR(XzfRrd8Ik_pTe6q;B=3 -z)~`18{{n%5Ad&zAg@H`u)3>kX?h%2keRO2!JGDtBi6Ic-;luK^5{ez^L{;xTB)tT6YY_=vs=n~J|YuY=ddk}-JRT?WrZw62lVep}0|*6dOy_jixH -zmpG|hPhG9AD#rfYOhJ`OkGFSQ?(kFFcTjWaw|oX-RC6FX?j41K(dO3?$m}BY%vPZD<;te_^@8TBA>7dx>8N&I;(zcr+{eHFiDU5}{0T$%AN)xN^WXodL-Ze92}b-s -zI3~vP-~Z$z{O^Aa4U%;)eEj}K*1mm-{4drRd4=A^_Hf}58XY}1S~lH5cjb3$TRXpn -z_fdS(uH`$~S&Mhq(>I}Vjn=QvhV~)fIm&S5srmL5Ksu~6HxKs%E<*9e$MqEEge`t( -z^f}3f0Yrw;gNPaT{@P_Xy{4u(Hfs>4fN28GUAN;?`w@7;koC>Km0;Ak(u1mNsYd^BUh`+9u -zT`tGp0bXjs`jf>UWfTbvx?y0o(WvS{j}#6!tm_yV(FPZq7QA!!HE -zBSgXqGNN{&(x2UkvdTUEE}7r_6{w0s`IC)v-@kq}cLK~xejky7s?qW#AMcmfuZy`m -z-;^5#S}5K|8_b`_u9p8b^1jY+C{Cm>(=Z98@)D?h$kCxXsuP<> -zEUr^o5+P5PZzvIWU79|@9b|b2b}l}XM%g6x?tbD@kl8lwb}KA_BUrg?UVlN~G@PoG -z#I~+2?wPUzePsc=y|x#mnsiQi51dUtiES>xjYv=j9fc$i_l(a}xt5UvAC`_ekO)e~ -z{32cmu{%g9f3p=h#q#gmkX;wxCA2x!bip#_-|nJHTKbW=CP}R&Ua**HwjC -z(lAr91YDT4IRUZx`OUw3*_I?gfT{i4EK>l)%X+G>=|<&AvF0^7c<3XHAJ$IXjbXmb -zPz!0@7_{#|p0wgyvYFaBsHXT7y96#KKbZtdeQ!_&lmmTK#>2N2mh0}V*AQ-Mx#0SH -zhn?b4AQ%Y!zl^r)i>ecf{>pp6kowlzo(lOCn<>lF*xKuGy~;k*s)C|NdF?bW@sShD -zVwwTq6)QZ;l1E0*yZD#(1Fa1@a38YKL2cY_C)6;3&s4-jtK=9*eaFo5MQ-AH{h^ck -z(Gu8MZ1i+WQLKyj=hUF+Vl;XVEA_-Nqf3&SRpBOuDnnSjE13agK8sc=xF(-Cm*_o}%gW=dAF})Q! -z44^+b_i>8>qLxfpAr1T~xC)wGQi%Jg@ -zpx7pE`Q%#rcwxNqrM>WJZn?{m(wb~Y)dQwy)W`oE*dyg-(N|uAVK?^41@TS+%D=CIv28a?kUi*M{m*#QaGXjuWwE__sCsU$w)IVn>MAUl4b8J@N4_79(Lm-E=>+kf`hq1& -z+=r_r6n;EQf<>@UKxIAL9mWIFFLc=_dKp``XSr9Ih~j7J2Ed3r9}wP -zm?ywgk)27Ny+rxCdVYK_M5wQ_DJ}gv+Ac|;J}%HOnoqGyD=Aht&w9yLaAcDr%W8LU -zFk3}2s(Gc-7}n;d%Dv_qcPGxtX3i3jJYzptx)+t|R7t$P@-ZPXqScSLd~j@_6ecbl -z2PWxI9i~Xj37>wr1`5>tOwx$`KIV+AOMo);sAq%DjES``iz|diP_$sczT%o|I*MIogN9YQMc~TGqA6eN|OWYdj -zQfhpAzzMZ#88+`Vg`LP4?lM@YE{TbdmA6778|-j~II2J|G#j^;?C%KI!!CBfU28lE -zJb8Y72_GLR^Fwje%3<~59}Pq~Tiyhra$J7540S1^>BSD++eNDpV2lii(2Ho0g%3FMc2%5!VGDAnIWo$;{f?7wvqG=gsgKgk= -zETHtjj812l!1GO>j8+38vO@Jex{1dZ-oV5PIoi9s7?{GI7y)U{op{8Au(xs9u-`b7 -zbSKV`1?lKUtBE$Jtm=_6PbdR{F%u>H!2vpKjj5CHa6dlm;%TQYQbg^R}%UwHpn;Cp*~p^lqx$!ZFVoU}gOLW{hK6ql7lxaz9)@6}<* -zyI|oUrB)v!KsWfQ?}flkdeomX54`mn@z2={ElZbShcLJv^%2 -zv8uGxs#mC^6W5(F!kTr)QNC2Dus&f~b@iex5$F;IleCzFRlx(P8K}NhJGu~@6W-R{ -zx38~%LqQWwhUSaN=e}o~Z13W%l5Cs3w+-_*AcMCd7&KWfujf4_yrvgc#rN)(OVTVL -zpH|9~{w)%uiG~zgb3b{}^NJ2hLogtEUH|Q83%Ul-=AF`8=%|{=KI8kPJT#@b6+7Kc -zh$QrjP^q?O2{mGn+vN4Yh;LPcp-(Fzo6T9Yi(FP9_mMqOXDp82|5D4n%7lg(Ve8i+ -zj+~}dId*_pd;q^v;pv8iJ$z`*r^Kal|4p17r;=pF8Y^g$zDz_hmMedkRDSa=X~-Ya)41`fw?d~RBK-w-w}4g^L2LJo4fUH0G( -zYoE6Zujkg!hB<_YxmfvBk5Pqqg#5mD-EVRF=6_QLDb6i(p`xoK-yK2wL_u;V6M&g8 -z)@z%Gu3&gPvVVoO>@ymVIZW6ghvd>M5+|*9Gf1)-%F*6WC3|KZt($iCVs&n(eM$si -z$L7x^TC;`PKXfA>!phc2zf+i4nRT^65eBbfR-1itue{S}d;Fkch0eOLL{NqLFI7(I -z@F_WosnC|~^W}T!d5!PiUengT&*iwt!_i>(x!4wY-z>mu*4S}7)6*bYd(U@2J;Uj2 -zauTG*frIuIiUXxzdGM)PJ9*%Wfn@+#*{pcF>3h~5uT}Lo14pbj`1jSEx%*(fhxbS8 -zn7;Q2!RXWdKaDQ8iSUi`oYIv3G});Sn_rv~Ai1+=vDl4I=V3)$@eCBrwrBOcI~ZhJ -z6p@k>qQhQQ&fP6T^y9mI_0ca~KlLGBl?MIOD^6GR`v|eUU1?AERk;N2^y%ZyEb{4N -z_{~4iH(*2Y1peu!OGK~l0}Ta*m1#D+&9~}mFK$Dc6<}|$L-Eowt$jPh)G|9Bs3gc8 -zd$uILzy6iydmo?H(k3p-D4}$$kThD!Z<9`C=BBvT@gS-g%c%JD`DRbCkD6a$5ea@X -zl<9$N5=+da9@0gqyI6SXtd1?dFcZZ$U#xVR1lY)1#{;ak-9V!NIkub#34onpuWOp<>JfQAX -zS>jUVZ0Fv|`v|EJ57WGS+Rh>g&MxX$Rmb2P*^Lwf53hBAgBG!cc|NU?;M=)mTVC(h -z2qLBv@*Jr|5uZa{WoN2BXBGb3g`)}_ -zqi446Sh6ydo)w3{SgV0?rfZdmAuM~54Ak0dw;w69^6`}U0uN^(jgt9=nk9`RTv&3c -zn~$ML5P!~99VDvP2tdqOyjxjXhU$*uKyIa!IY9lg;Crh?H*xlWuVK9JSW@!*z$w=0 -zV~UG&-?fQACOisUgSxtfh)w-NP7ofR@vHe9-D1ckH|?1$h^fcv(fdoJcjWrmzU5p| -z>_ZbLFN~CH$Yh`Vt@B_QyOMrr+#=IQW@4E>WXZ`I>*AjmK#Al+5S<_5@dH?`Ee=j= -z!Hc{>P&r>5pbZkAQNQ!VZ%LA5S)fU*mS1n#A~E?NPd~8}FKikQt8zE!Ee$?D*S(^p -zOY3@iUKuy!?&p>~eBzp9qDUMBV|2BwB%JB3oo{fJ6}XVThP=iCCF7ElfENM!L438K -zp|w95`yg-XG>kVc>LLihhn2XApQw2C*72o+&Gl`c+9a}DgB!Sb2IqwjJA>QIF&gF8xFpxUc(;~3RhE7C!oUINMU=-)cHSY4sp5pQ#q4t0eSYR6k!K-0Y}Z7AQr#TyVo)0teFyx---`8-Xz5UrIvPda$a^7NmS -z$0_gAiQs4v&Q@DLLZe7F{LkA#YQ8^KyHm*OV|J>*Kc|`mwV~cquL5eZe|`z5M^q~v -zEFsq@=aN-Cot{2Cy`X$o$OE<(uyKI}(yE`IMT10d7YoCHgj(5;-QebOPs7k6z}4xV -zp7a=iIyz3HID)mK?xzScW^>Y}0}420rkES=vVfv8=6jVPn1VR4#eRlaBED1?xZodW -zOL0H};A{qJgq1y9g>nK(xV)yTCZG&zSj7&@$Al3qXXo#|#mYa}U;T$oaVwEAIK~41 -z`HS5U_rw~1GAx`I( -z2=eLHyM4H(Ki}FJ2LAJ~fzW6zZ(~FUef#-7A=S=~0|BC%9S+F<`2ml}C_AhXI%Eum7dBNf^MYRte>0M6LcybVi9R*5Zz -z0p=BWPFn#1^i0Ob2T{V9xv^ThpyDoyMe;-{Fp^6uE2;o#+sKq&9hw1Rfi0r5-!}&U -z#wk!adn4}D9st&~PQfDg6o>I;f^DQyx)xtRpz5{Jb|gWOl>+rc$Q~45Gbo*$%_00) -z3a7H1%)zjnsA|HDcwYju&Iu6^+!Q}?@{V?5^N>!kGuzaE4$?~;MAy7F*xhlWg6UY2 -zxw@zha3;GZR3D%I1SjQw3m;+h#|Y(2usF%k1I3!rvFoBa{~-dlb~=i3RoW@UN4Hl` -zcoL`YJ;htGKZ>coYTqtf1I)ANKR$v9KidLqUr62rIzqG`)Jb8Amgy{WR_KoOZCrp*&a6LKiRQLg<*&>*Y)l|1D+1-KF38H -zRM3tOAZnuD^r;6kF*&>dB}Vp{4XIGvkDawouK*4xJElq1G}i^$tDq4pUj7-9 -zc5%qEJ@P^^Z|NH#@&PF7qWnU7znGJTlm^&0WtCUoRQ+%B@b0LWV6 -z1w3+^IevTK-!5FQq@jI4BC@;2;ojm${3z&g_6~Yps~#LC7+rh>v+C*O>b3qUZ~luD -z*q!m>1Aq?|6?^$q!nm#Zn5#VP%?`gbm7c~fq}_&geDock<#ET4@N#(D#oxZkAsY}T -z3{{X#@-5u=M|ipRUz%#suT{VZWbLPXC2}28^bF-WbvpL%Emb(sXXWz%Sw_@Km3aCD -zC0os~)jP;#AfOv#f=7xeDl5id(#1^cp~&FHM1nloRAb72;3So&1nk2>2!c1L{obLR -zSWx?-{GGXaWU`X^5(%r^pt(>pi*_u-MD)OV5SCfHqbM<<4K6phtzn4X*}M~qhMq)O -zkC%8Q$*V&UAu|R>6fO`4$AG6~I-EX;`PA!BjtTNa$o8fMhxQ(Li4NF6*3ZE-zQW-g -zO0Lde%N{dq -zUj}>>`I3*#QAzENzJk58Z-H1VDD`i2mZz}=Zi8k9OGg)iJgDkO%QJnVtC2Gp<+}E0 -z*Zl2PiNE~4_=>lke~!0pmxy(HX4hKruE!+PbN_Q9YDKTqCv4UUn -z`iUn|oT4hsoXC7>B^1p67VRw*oiBIrABnCFySJg?%iZO}nk%I6tu+k4nT~%jh9jUf1Gn>TqA%chc8+C+fWoH!fUb -z>ktQ^p?qp;hU-Ef3jc{khd!*@y0rBV_1DO`b8Dlz4A-Uoy#q3E$-2`w@+-R8cngmJ -zf{F~YLB_9SYT^nC3?0q2*}6yAtz5p)E;pIhk|iiEWx}&yFrVIDq18$GMXpn!Q4xe~ -zK!iEiz`Q}W>YbrvfV;#dq96F-OgOUR4K33dq(*eaHAwWEgf4C2TGZY$<#4SFA?v(O -z>^T>;gycF#O>1JzW9!DpMpjAXDYP4z=8|;ppubA)m21lf=flDv=LkU2g5ox+{FKrG -zaY4xlVd}Z#2G1Wc{#}f<>9e*zA_YEq6RU^GM|ofEX0tJ7lWH|M@uGO*w%cIxmIQhE)_&8JJJc>F`GJ;becljPrMg-9JX7E|s;BiqmqYdFXcRlX)pIu~@TY)WMa}TE=+P=E?b#<(6rdNz -zxKGEiQTRSY+uj_)0-&JKbx6Ljd8 -z83@=}=iA%`ccbW6*^j)dTDP47YX%Q|Nlyj9Z*HxN!_~uZ=pY<&Acd~ND@51 -z$!@3<98HZ9q?*qnW}O{ZqQ(sI{Hb@K(7prcdGIsbP0Il_n -z23u!`40;osq@Mn(h6;JillP1GLcJ?Q$i+SM#kGzdXv&0D)KgDwXSU -zed;H>%d=d&49%UuamS=K6%%+k;aj}7>yJI{h%5{siz-9if4EFuf3M<^!io!SjACLF#QY%lT4%s2w5av{zoR32; -zNA4)Gk0A1tQ4ud*k~y7p9V -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 -zz5+)sN1VbUUV`r7(_K3) -z|9I*^6XSBoLa&?KT3FR4=+cN${%04ng18{-&WjnU+5^;V%#e#4RtGVI-_ro^vbR_s -z*bI33(zo=bSc`)mn4NhS@0aD$>}Wi@c*C$zgN={&*;X)2JurDU^h4D*6Jb6{EoKbr -z1@6AiR7i5uozvnzwVI41bUcm-gx8j}aGi=W>q0To*TK(tXSm??88^<-S+>ez3yL;V -zG-Dl8d;HOq1fZ|DcV!3n^rkn{eezzb3g|l|S*}!lgb(b@3doOLRP#s;0`&r^2%14I -z8ZMaiyZrcWu8?>@47zGr>&w3czRf2^5-4B2tmwn74*thCn~Ns&UcbuV$??R5-(5Sj -zHX(LT86@}LLmiKo;!v}Xjg?e;2?m2lCv;@nedLtSRspN5 -zeJffzn`R1O=`FZqWZ{{R40@C3PS34_{q3&t#`6AmE*-;TxwplJ_ZO=BW$FIye#w7r -zA7bAL&^2f2_2$O4Q8ynm+Ho|74(^h&~qpQ54t~Xr!*zoU3vg -z<@I*o|F(7Y_@v?b#(uKGwGg*7i)2yCEKP8vo3=;tpF=g_W(Q9->8U7l>j8+kJx5r$ -zPt3-Y|IvdXHQ$wNQonxL#9#Hol$&)Oyt_!22v)k`+?HA#1A}}f@i+*Ci=FaPXI6k` -zyBFnSlg`|p;6g>jFO%kck&|x1;4ib}d)s;K(HVR)uD0uh8H$<8}il -zCv2Lxf$Fs}oNFcY{k{7|pn@E)Nv0m@d=TL)I-~X-vf_%Nk!;&RW@JJ}jJS9<%7jDo{kK|XyH>tj^oVA`8 -z2FY1i00Y2Q8g7dSrD=gxrHfFz@LRv4Rrjx%K|=9p0X68x%Rgab%j^W@KRW$EO5e -z!lO8C;5F@dyMhfomn_F7`+er2vsL&biE-rEQZasJFiV -zU@%tM`7(fb>>HMX#?YjkjsbYZP$t}%Tdv|!a}=H^B;%RMX_M>*D39avZaK@R1hJv^ -z+%~$Qaa0JS%a>B|zq#9@C6@1=;6Ji)09;>}>jPwH28=gXPv*1S?2>!N0aD1EQqw*m -zJKh1MKcxqa>TdCzZ#&9)RXZd)R6h1DCh1c&jp2ueY$g^|uA_XRC5V%?6^*&&l2&r?E` -zt3lDIBeeGKr6n+r0MZZxB}Hv8A1fP^lS!p?LQ3c1{Hk${w=9PPz**3pKp5W4&~Fsu=Vm6w0k|wWcc1iO$~PfI*9$nrcE5VOX=D`uN7XD -zH6AQlfgSG2i>YeHuFIY=MKbjPcudy2aS8ax_$8s -z>uqnuxG)GQw)~-|ZhOEc)=pKT@(18SzK&jFoM|NB$NR>g0N!RKrfCKQlt7Y8TwA(& -z0wAX}G=NZIovc~6mUvni9XZhH^x|_bi^EpO}y@n2G|V5no(+S7}q#!)_2rO3~MRWQ{3 -zRf4Ld^rB}k71JfGX!g#l7h-gKSh{)l+REVYnKyX9Db!fkBkp8WKUrrwJzh=o5hf1fHzSiVbFA>+x`;K(UKJ$StKiQX!kG&$3DE05bTT -zDp+uHinXCwB)@iK-W0@l0f=hobL1sk+btrVPq@4#%z$#R5knH>}^}ScPgu>#oKD -zi))lWQEVd|SlpXq$Z%_hL!|ukJpRW2CBJ=HREILpWf}rxmhQdp_TsQ$g(akN_*g-2 -z?*hfBA?g#F-L=}-9vyQY%<|b__J}SZFH57-?TFw&onK&{hh_GVt&^Ml(1?K%g_`<( -zD<tqL6F6 -zX3Fgfz#ib+WixoV{x(yo9oj^YcC)LK(E%L$IZ^w^T@t%_IJRP-3=cVG4GS}rFhX1H_MhCa&%GVg;wOQf#EClXIWVx(Jq`bbp(U-n`0 -zbSf}qDNN^{m4*kA7d$CTWOsoHF`0=|JN6lY7{Jw2y07)f`D6MB!HSs8fwp&R=fVff -z!GlTmhAI-sdp1OsP82^#7(0gKd5f34mNj@e_H@N=w7DJ-neGxIRy8FsK%AJFIt%Q% -zD1$7~JeHMvx@@O%yG3%7)u*E9N<<`B5B=7A))W&8VBEK)0~_ALJ0Jo%!KgwodLVG7 -z+}x!Jzl(D`kY6cQ{f7~QJzY9d{1+%|liunH4|0oX@hc^zBYVZC -z#Um28+H-Ux;FmIJZe_7lWPFQn*a~MimhZ+Ak}p%5GZJeIGL7<9AC{X8cs3UFt(jUZ -zVo~~`xR@aJ!g6#mC2iPvobsR~B4`IJD7iOC_;{85x}W>)#i&k|i(Aarok_qzYS+Vl -z3GEcwd2T5@T+vJMoVXF&p=GB>v^lixI6DeLX6w}-vfD;fQ6gOTkP~HMb-Fb^eYR~d -z&}Ul)Y&2<>&5N_8$y&|LNAfye&FvriL^9G=EK?00BGdZEYuRm#AOR_r^a$?SYJzRu -zL&68r4urILr>4ZiGXth!xH@!|z8xfHWF@aQFkm}ISho%_PA;7tV}tDwR9(3^p&hbf -zvkGTOg}9M2EcRT42Gjwuq?Vi>myr#XeX#6FNG&v3`^=oCTW2dOHmBlS6<2a$mD)u} -z@+JD9nptb7Xim}aT7Hl-4XD?Xxjk2Xy4dwDM<#P6fu|&V&N?@5ps#Cx+XgECf+Z4d -z8`dzi?j2~Sicbn*_qBvqe++R;AvO=Rpl9=>LWGP`<#y}6p^$Y83Vxe$!%AeI@u)TL -z%U_Dt&}ojSe0N~MplufZb?%wSa-{?X+v?^yQ$^@5&du&E65gD$rNX*R{K_x4VY8 -zI{zBL!p%HGe!wCR`SpJes9Tza)%hTEbIT94fuwwe?FQLiE%P5A;m_ys5uhtj?*s|@ -z^VLa-(w}&Z=9~8SwtY7$3OmZ@aaWY^>6=xn>6H|4Db=FbOL~lBd=xVQ9%P@Y>+3$F -z<+v+3WuL4Hm_;Ly@lwD#FDl!l*Sntxe6`n2JAJMu?50H6Q|qSZUv6oqO2ZPJNQx^0 -zT__2cBAc1_z=0W{b?6Q%25aK3!~LW&S6aZ&<5@@g|1)8BVs%o-kMgp@zG-(T#|zJU -ziJP}HLVNJ|_d^FbmVoU-Jy>@LGS!M9fbS&tN^<&SEXMZR;(h8AejiQ65qTn%)F>PZ -zRF!8E$#H<3&w0Lm8p^&+4F2p4x>OEj0-W+NVh;|`C`#$$gL5tG<^A}>hf{_d- -zc{T7q=b!kfTzQLqz_#fKE2xlSzs<>Lfn*qtlJ{MF_uimkXydz-CiV;YJaT{#KPqq} -zXVPbc!seS_F{uWrvj$~^N8wRsI9-r0Pg=bBUBE}r@OoS9ESG2UzhgXuYAxp -ziE`?SPrKdw%s6nRf7UY*uMmw{*0V)QkA4=r<0)@g(^@rLi|tiT5>>L7M5D*+S3~gZ -zTRcsO>0_+j`dWs?-@-GEHwW=Q?G%vC+F$g69o9d?$`*Ii9%I -z9<5Fv7FO_yL)$oW*7u97Eg9_e$R4Lv3@l`wnGJXeOJPnvJ*(UOU!ES8%Wr$3Ua~8m -z@&ZWFQ$ALf*fBl81nlm@BVFOiB2UAY-$A}#$k>T1U3QNu2X3hP>+u3W?B@#%?U%D)vt;`B9wpD1-2S+2L_#ALG0xk5Z;9LM)wt -z&&isAvcAYrVCW=Px+eXTa!`7xCv|--M)T<$w(*1Mv!Zpphf2tf@W4D$*$IqGV|+`_ -z&6C9?G+j9kYc&%W<*a -zaimVK9%X;Tn35*v-N4D-*R|Nn$en;&&)E3nb7Bj$;!(j1jSSfAl$%D`Ok82RmUekg -z?j0XTm$zczNq@-py*g@)C!><5Y^41>7ITV!l2MQiwhq}!=dNq->A8}Lw%qsbNtXyp -z2DjvzgAmo~Uymm-pB5J>2F#j%+mZRR{~sRON>8QX@;!eMj=^*GR3Ny0$EA9=O=MmB -z_VG^|rEoZDOV&|XWdj?m_v`cIM>^?~E5zg2=J}aszKj8scK+F0Y6XMzKSN^dzW}AK -zPvU=&S=DR1CY4)Flrc1_;Yub0QhKN(0^dFi3W?7dOh~Zz5HbeX9d_@_>(>?84~e^8 -zzh1>(B+!6rv3E`K#S>aHi^olp+8Q`lp5s}5y-rJ$=`AgL5AoNn(sUuN=Toir?Xxv1^=UwE9eNBzp`psc;EVVqK7BrHc~-gFB56M0q$~+as#z -zS0BZS^70ruZ2U4M@Svja-~8>u(SjQZ@5F!j?Z@92Wq`yd0MQ+Or{ik&qJNjky2br{ -z5f5SKMS0X0bO6x+ch~6wl#tBs_uigm6{2P~I_ufWp4)5>$u)WJj_9VY^0(7>?uQu^f_=ZLv#^)B>wf|6cW6vc@ -z=+E!-pqrevfly#?q-vqRUiIQ-GGW?;PLI{fH~P^IOzM-gX!sbK*qt6e>{NZEGI3bU -zVcFNfr+W1%g@_fRvAFse^z7|KKKV4xn7pf>POeLKn1DG2|8v`CUJ{V?jrm}9A*6Q4 -z8>M)nKSO$5Ju_wcE(HA8(8%qLY86&3yIra_ZTYI4&a3NWof%l=DHp%g9|1Nky{>u* -zGsUC4_id~sRy^?6E#9vqUeJ{}rptY=Z@_2DNB21HFxVTv3G*Y{=hdWBoBm$dDb-7iwiJ}i3|xBcy9i)9GMQGjZRUh5Fwd8R|duLTH~1*F5<&D(cw -z$lJ)GlI`PX`@*j2FHszZ53x8hK(YnOzV@&_HV|BeRAA#202C<6oihpK6g+g>F!7O< -zmL)X9C!C+>igDXOb5jpT9fE$Dt-8Lp|9tfgF#-Z1OsZd$M!Lq;6Cvo>yh -zb8y@|qgN`)EW>^5E97am8}#s=A*pns`(dq9)l$MY=yAtM!e7UqH4>dSit@J|eQ5_L -z^#PABoX^yGDT{K)h`sa!SF~((vJYO$m`Xm?zTeNEF8eqhpFeDO0FXa_ni_)3KgdG8 -z@EG(BKEf?L@D$0ygN#io2EjP2sgtT5rckHetd}Mx@J87zG4)tDNlCn4m(UKka71rB -z*{AM?G-M$fKGLOEDh%vToDvJWn^w -z@N%2Jto04~78HHjr1A@Ee3p)JHg$~WR3t82(v4XWsNGga3(KxEharPdui!aNjevY~ -zx~uBiiy)0gci!OLh3yBfZby6cMkS9{eMoT1-ZFXjt)IWG4$?$=_bACfWU%E1?m*3G -zZ!WqVbddF625^K@tlgZ}9PiPPGhp9{y@ujWNsAkTnHGO^z-cGD+_H?BCD@iiU -zg5YiY9$YH9A8CKcbA@kfGV8Wz`M~}2YCu@lE~TEY;%kqtwGO?|3LyUmZ>p)# -zaDtkun5!>XB3Pr7eRmP(NmlJ;9i3k%Hg|DMWQn}2_b+$gu*6}Omsc?1!>^UsXqfIg -zl4vP#NJnZUpvVg1_x^1k8UA9U(aM{HhBQaj84UXh1z{^Re38KR1ESj4zS=ch`$(oa -zXQ7TD3$@8CZk6&QT3aG%Rx>|h5ACZY2SEXZk~SC^38@HLIllnaCe==fXfn+ -zu(^Z8i8wYK?3-f8ZUNHfN7}GrLzq;V`UpbK -ze&egCFP35L;^_dNKEiR%AB}%}fQs4aGq8r0@2{W!{`u4xi1IydYB|)=>W6&dH!

OK7J -zgypo`l>#{3Z@DQZAe)xFGKM_p)?=w2=%*oCa|%85j|%YekHnF5D9yX=i%1TX%<*eP -z&di)HsM1I85>)g#j;LO+GG~mAHq35-mp#P4YK|n^hW*XPMT-mx3&tA|i@F&fnw$Z_ -zmqg9&lAaez(TeFwHT*CY=<0r5Av}DrQ{EdQTy7wdJfNyb-IXnQ(AbT#swhq&K6G|Z -z%%8($a{w+yRr!nh1BK>~er4VEs}=(rCUtvch?<&+#nin7w?Htbe;`5PzUtxFm3gaNNtw5RQQ~e`VR)p#l9>v -zM8EE$fX)_g^F)GrS+Y&0+0`l$)oWAdjcl!<>pwgR+TIV)$Q$qt7}_;mMyOUa#J7OV -zu~E>bu94}33pvT?00>oTk{0QQ;S`K~`<`FtF7XO8cdZ7G&fGtLBqt<}9ouY?sB%8< -zZ96Lbqi0ODpl*roam?!h^FE?v@48~jV_um)_!UOEZmZ#OdQVjt^9SrBZv_3%kvbb9 -zGgPm{>5gaTFcGRCY(X!DpV!10L8)&}4lTI-P!}*AXlK{RYAr@`gWDWEDi8}?w=gJ^I8P6WJKO-Qu;N%2EThK*Gl5gN@0Ep-#+XynT<)G*x0A{gbrPDMUg3JlIH2-0jj!hb0-A!87>U|;3toL -zS4`whTZ}bycfT1-MBv`I`hH28s2LRby%pXoIC$F-(8821yRuD=hdu1K)&B9}DT!OZ -zsY3%gK%{6cU|t-0gKPv=dU$nASpe^e5c0V~UiwrVz3yA(EHCKd5#NScBzze-0j1uR -z&^=V;7*=VqX!JFjeW%_PbTX_)(NYiu2~-Uaupk*9F%!6cNEj%-A@hvlTTvFyJZNMh -z5i0>NebgFW_-7w7m5^60KO186;rUR6nW#DqmLb(l=Y0{!<+*BFRX=(zv6kiSpNR>6 -ziuZbtycYh{e93;;nTG}Rqd2L4&(fe`RppxQxOefFdJWVpR>L3X@{0)qA!*R -zy~6PG>sKOqkrfB*`Wocb)UJCm8uIidYS00a%Z#%0{A%D)9=6bkz*_|JBWKOwv;sr0Do7(fC*x6j@vs+d`$ef1xDcq*rHFK_ -zrq`dNOndn-EPHHJb`e6*JmI!vM2Nf|+K-Q%z;nMYeX-5oTwBb6Bf#MdHuk>PrWN&?#R3)$PDw`dn~1li#LTFXj@9u-=I^L`E){ZG_WZvogD^w*`wu#@|`CnzOfLUot9kO$~ -zMZjNR7GtSJ;xaG2*z&(_6|6ey5BlU>H(2fz0)Ygg|%uR|s}_8t>8y(IUgi~NFL -z8S;B|zqn!{#sR|UCweaQvCq| -zqH;*Pj3$hemj^Z+_Oe9lT3`>#A>+j!cKy0Uxl7T1MrBGWPVb~2)i2#p%-Rb{#hX~v -zIk$v_XSjXBreRdoIcm4*T0^D-R= -zZ*2zE?Gn~gF49s*=$~-?@w%4RM+yMA>g8z3TP3^vJdWt5dke>jkOay*4uGnncylHF -zx)wI)o9w?KeO-OS;u_-dlsLxg==h36PqO}suYj3uy1=y~0$dNipw$EdV|gK?+`sg5 -z{zN<@X12h-v#n&nd2vM!RB4J%^L;JA)BNkv0Dx6_KUa0gaJAlx3z89(d7MNG>Lt_h -z%*sqPDdXn07po=@O}`{AT}nOciFPOiLEmRMWRCC3-M==>mPkg~*9PJx`u=Q4J1gb+X -z5&A?jrRn$U7XgHYIX<#qB^3R_3aH6{3LU_Mj=f}W -zhTzubXKcE}szArG9*Hmf$uR93U>GnDd)H%9z4ME!%&0anxCNKSkAli-qWvRH(z-SM -zJVdAItO4P^9jRT~D79fvZ*8B2!P;;=(U0uxxX-sUAQ5#-#BlftNZ(M<_LKrTDF$&z -zk&iNj0)tXJh)1j?!4^K#+eiR=lf}Z*S!)uvF%$q@J+q{ -z`Al)H(@({(s&7q9#S^)Uye$HI(XZlUgMh<_q|v_PMe+9hNu=;(AxqCLa=<`_H71=# -z{%mjZO^D;1NYu8zLpi=H4Knv05TiAPhYcFw;tqOJ0kAn;e?#8hKX#0f7*W|dC4?w$ -zaBSOqaj;lAV@+Qe^pWC0OWt_t{Tdg9OS!`0qfUzqjrAG0j=N%H?WAaQ!oDVNSa`7P -z&6nmr161MPT2a&113z5uyBTgKQL-XYry0`X4xX{IBo>K5Gj|VRfuK-X4xn?8$JCt= -zHQ@)YDBpOLs5P??&u@O=_(SDIfiYGg`7RG)!?n(GK2Z9~NC)}!?W6c(CwEm+Qa{9n -zmbgdOycy7DAE5vnuO8Z2_xl|%bcq?JyXQ>zc_8Dm{{1rVgPFos9tMy@D#c`fU&}Uo -zS;?IXEx)5&5A6q-P4r*dynQG}(Q^9TT1+RUS>_VU*3@CT@t4W5bkn1wVe>(BFQ_Vw#VESe#dxB -zw?VOLnfLuMCkFv6CfmcO1q5~_xGJX2gOQayqB3@C-)EqPA8j+#_B+jkUyvq|MUhSI -z^FQ+T*jBk3yKhsR(SNZ?#ADHgY>rn?85m&w+y(~@Xdt`699g-8^K4IH7^%Nj$cIP_ -zT#Pdkj)woXV=dQVpSog8he6jCW#}8ZD@k|nGDQj7i|<~cf+#ys@$2bFWj}~x;XF6js0DWTx0n-%GoQEwJI6l^4iI0KkPK2Y-@5C$Q_0gcy -znJ6^>+5s6TCah2J3xJ@8T{ofEUy9-((j6Oq;?s%)ZryaZYAW|^p^KBNg5on1kZLK9 -z0RC|TDpNxU74is*i&(v;+FVzc+)mKLT-PMJ;D_^#EE@!bKV=nHZ4w$74zEQ&pI7M1 -z<(774)Ldhszx^{>u~H5*?8u+%A-eG4W1zh2EX<`6_tFyT|Dwq@@1Ct4t#JhtC#e7Q -z0ZQ~URQ*S8?0v@O>2_yqk~9ajPySZ>pa(Xg3A-X>Nj+t@LnH^;*08MiL$?c-Ld;L8 -z_J&RzCIGgIeRwvT-tcp4B8a8 -zhm`F{5QneQ>%o22%(?Jw1$#ILZ}TqRwkzDve()TXstD4^B;BQ}jKMW}!VcUo3;RlV -zml8D~A%$Kx$lDDWlu=JGv!g9{-H6YJr+Yfi(?Of5IDo5Vrt8AH~ZVhAlCXwMWM -z4-TQ*a-t;@GlxdD@TI!tnalFt+PeCm0^57AHBJsOl!+p%Aw(^{t#NDXiTyX$z%fsl -z$(HS+rn+OLNoWMAUszD*gXw}{Lm=T6M^hw9f*mqdVWfUNYamwc-OkC3Z^Y6=%t4T#8O`NX@JR4S~>+%$*}!}I~r+JF>^ -zL|Hf84dq$P>*Zq~FH6f=)U=4kcPu&@F4A6yBQ$--W)hupTkCS=SBmWh{7!L=V)+m> -z$_iG-6x)KQMqKXN9?iAiE@B!kfE5Mm`sjBjIUA1x^rh|c66l0z&AW1c$O<39J9H{X -z5ZjI$8~>X`L6}Hnt=CrfUH| -z2+EmDs5cN}`{4o|a;x(KM7Vb)Pz5rY(UFNVJC6!j)Gk;^mG=zrNxzT{)f%^a4AoZG -zL!ZO}d8Y0du?fkrrt-=o#;d`Nv_(?Bm1`_w;Kj^IAaVDb(y7E}{#x~U^&`%L_uqdc -z!2AdpgvB&Ev+xA&X=?e?u$jT9G32>`Vu#C#paa#KY2__id+Ja``fJ}I;Wqh#YTL?H -zf5X#=q>vg5`2jiiPCLso0k)#A$K%X1Ag`3pTE*x)pNwN<`wIc}4f=&#tC6Co9x#4DAY)wTfu -zD#kUy(GOq_@eB%(_AKm+>x4qG13}Hh?e<aUKJ7}ZiA-?Uy?t)i>poo_JU@mNo+Lu=niw>!*!xo+ -z`ZI8`fHR0+0_eMx>2c~)L(=T5ULYA8QU#MswO30ez5`?}8f!bQ7Ofra%kUDmFA^18 -zp5j(~Sb6-`tMcWPD}~o3tSFX(`y?bk5}UwwP}vD#r(cFSA9ZY3P~iHvLDsp(YQclP -z`G@`3CAb?pfiJ46CjQ2Mjv8}evj**{hdrhQo1ywLACC>0#H6)lPn9aINl>I`^CZQB -zO}-c;1p8`4T%T;;V^5vJDUWm`1G>tgSzm# -z)cwG6E%Dkwt0+TILB=R6sQO*#_H1(fS`l+qH*9}KB5UZsyr{_N*_2{!vOJ~$Mj@0K -z5^|Uck!#xysE~ROW;T^arD*c-1@u9Yh|hJOl_@TuM~GbItb@0XYXTeWzJ4>`vR-!C -z>626kL>t8Q2+lHk@5OSC#}IdClW7-h>VukNeraDJ!&B^vU|`v_Ey7g_?7>y&=Pybj -zV03^AjBg)@hq1I2n70zq!CVpglhk7*M0`i$BO}5hvzQ-8hIN=ei`$@kKVs^)GQ-XF -zJfIamrG%0?_k|!48pz2GTRSV|D4P=KA4Z#Q#=aOVe?@?w7wQ*0?`<_Y*Bd8SxQn0H7D_|PzSvGly;V{>xu*Jr!?b4RiomOMMm^$ -zFD1)4eg&`)^juJwPyAsNKP5dYawFH -zu5mb8n7tJxxOELjWM!WEY$z2fAIROTa>vP~tNCD%IE^w%mddYDWfIUZqRV++TJq*! -zm126`E19Ip^P#TbofF<4`$8%l@w*$JMjfEQUD<^O{>p^6$JNV9!2R+4&#$Z?yBrs2 -z)3SoCZfz~2@g57^N>=KHD2t0f^45hq%+oCCnDut4X?Ia{C5DCpY=h -z*xScGvpFNwX{f)`b#BBoHlWwFTH_k&rofn0Fl@`C>4Mo0m3OAdQLg>nTX43B_dm~m -zGVi2$!tPJ$scyZv?%R49!=iv@&~EX{ZKP4aZXgg~nrk-e!!|~eLmSXe1`ji!9>U^2 -zhCbvA@~?Jt4~YrSH6R>#JW^nQVnYult0y?a{0fHaE#nLURNP8F3#!;5vzxG=`vf9F -zFcS2cs2uu3(8Ti+$g{C#`3{VKs6BjmEFv*TTBysz4EW?S!D3%!P~^zs-li_C@yFtF -zcN+{4OT~U-;GmAuL81D%tj)ChsxQX2F{@4i{dJKE>X@lp+%9NfzLdwIYXO&v!hLr0 -zGksP|!Xq^zn+jV?Y_QavcFCY4u#uxqKhOUROq2k)qy&&EB=LxZs?T}@T -z7$>F&i_EFrFU*!FE8RZubrWz)R6i>vjd6_s -z9Pi}6Dj&S~OyEaCVB#HG2NL5?XNsUgFboY;7|hU2@S2TV(zc26CS;mpO6Z$opT%ru -z$0QP2LA7FXHU!4|RcdVC;-)F| -zB=C%FT?~*B;@H%hWs_QNyBo-v&8&48E}f%t$pr3VKC0Vi3-o9*5r#OH$AHahO~4r# -z-lViXF$;FP$hcmvZEB>(R<&VN7YDdE=mUXeym=d=_=!9$R7+~jNSoybgNAH|I@aaz -zV9S%37Ke$~@(&D3k)9n>QBYyAnCza5iSqUB`(Horav~40AOKZBs=rz}9B|Wn+N1Wm -z+rmy{@w7iViZWA)WK@^kX1E8XLpG7t0}7Ua-quOWUN#x1RvBIcC3X|yK^ljJKNP&! -z??x-Hr<6ym8a%d&y4L$nO@M4sHC<2e`(RN{a!d)qEcGrnZA&yx?#qg==M^vn=zZ%x -zTbeI=&M^sq;S`LlWT7O}KNE2)`~C(t{-+0FCTv+@TlU_Sm?`e*1}xRfI(0f{(1 -zAy@pc;Ufsbbe5njz;|YVojp^T%8Xi8N^|`DdM~^S_*khD+P=%6phf9v_<(%^ziQ)& -zPdg!~q1gbO3_I;626RYUZ$W#ag|FiaQ#tp5xI4vt46S|iG|1LbCSzi;+D6mnJ2-Vr -z5K>2KBPy}Q!pjn|v?UDg3XT@WCzwU0Ma2!NrOpNn4&ssBBi04`>#k7=P!+j(fz+hh -zR-g|Gy|rN<9LE5LE_wj)xRVJw7z+YkV|7)AI@7M^?8vEeJd2*Bu{vJM;HVaU2+u5u -zYBYN%-hvvebOb+Aq`~%`ev7A?E -zW&7=6O~M%xJ9Fd(CELzu&0#RFdZV|ML>~pKCt6hYb@dh%grxfruQc%9eFG&iF@$FI -z;4IrJI;9_DoW-c7)Gp@w1^`oRz%uOVHr<1{oH3?PvAOFTHmIB7X5J;VW&?y3qvZ!c -zVy@JQ)qy2ZX}etl^+PUsB_>Wu1HKOX`z|{tC96_Y^ITe|*$0@oU9N4t4N>J3AR|yC -zeJlIcJ%G~BE!K>=krzv=j7GqL>Y?CeL3SQ}>!`0KWcf|n -zrHg(r?RLh{Fv1g`)h+Q`Sdo#;D$+HXZWME`PpKbAnxBsF7MCeRB-WyVqVTSuAjWW8o$VAfbd2Ru@Q1nVKF}#XH=AFW0na?!0UP5lA%xW=m&BIh?VtG(GranxVaJxqZJrCV33AI2hJ%S0e`p -z8Dxp{Wrv;;7)9pKdINi~+EvWsb;VSO&KPzTTR*g#q|kYVMzQ1a?Sd?wj)x2t)Hb_p -z>vg^0X^u{-x;#v>)^>a`U1V9-vkV}@@ZCd`T4lh@j?5uA{8DZMaYF6J7ZB!UEi!X_ -zfJ4x5-25>lcj@P6AN#&;v(1ea%H+6vg#hg9v7zzQ+e^fYFxLxWK0C;iwLmwmw_LVv -zua|zh5F+R^aRe1OwNq-3VBmJBJ+U=uiH9Yw4DLJwh4^hLG9|i9;5hhwzl!4|cIRqK -zO-!^Ud$7qT`QaEEl_C!NWnd!vk>HN5pjm+M^8rnX|_VOfpswP=rqP|b+%M=6A|i^!A0ih^!A2ymmA!8mh%a@V1sX+Jf&MVxnp5f~ -zo&phHzGU -zz@D5o0Gh2mHv}PPgk^IB(ld8JRec9rp3~)gbmxFs7W@8w^Ry^?^%`V3pht{8M5i@u -z!$>`8s-ozDmfZaaM -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 -zwrV0?9}Y5vYM0cN1i^KLA5fkK#;I+ -zSn~#G#Yj4n#Bw!BkxTOiwLC^!#rqcOUFNPuE%7!U7oUXsiwIGQQa71YXoEx%N0}c; -zgewxD4V&vvPvZH~BT>>2&F#x$1EtlPgyeb&8|jFi7Hq-so!kODTYz9LWzpAQDm9r2{mEK{iLbCF83p2HxL63EL{fr@7i+;u(NNQ -z4Mh%DtrVuFx(ZAk;Hhf86I2N_s^1MtA(g}5S!|MLjj8?37$}@QDy~+`(vP_znGte1pQ5)Q|m#dDnY|D#5ps^ESfxN-*Z5vRL -z*hT^<_Gm3eRFy_2+T@`@@>iyImmjIT?p1T5vfgFG5~n9WZ)L|gHQ=`Lycs9v5-y!8 -z>?IOoEvfM+Ma5Q4R=+@2OBUB6p|Wg(WCr{3)pib2|8J=k!#D)M1yuI)sLx`VK=<^; -zmUuy_eMcaS^A|MuM3^vMA@5cofYuOQp&Jk#i{hL_z%p -zDj^9U`Z2R(AY%SAThyV|Oc4*K`u(gbAg8qaj79`8vU}wzY?Hg6ps2&PPsE>@s -z^8|8NqDJeixdN#0Xj#;^z6S~sfV%3}QOa1_PPh1DZ8KI?oQ|^NUH8YXOT7=veigUB -zDMxNzLPrQmQPJR4cR`b4^e$fhB+yx7m=U*S87B17fyAlbh?=$?)B%U2VoRVq*g=q2tSm(H|4e}MO>5NhL;hl-8azVtLDoF&V5aZ7bcB<0`*C+CfwnF}~eL(y2_6vqUk+x9PE -zPP5)zsT`#kwu4yBH0)Ma5=#!!^@mrb8mZk?(ke3YhW+ywr!}`OJ3GvWSY2+YmWUD)+an~-zMvQ}U -zV#}O9wT0h^^8^`i5}2sTAZDr5RIIncnV6LLDAH60ANo|;1R7~`S}QcXRH{uH>{Z@% -zEs`o)^5Hm>FUU^^1kr!SFeB=lRs&Z+j{PUJq-O39hQ}JMn^NhE=CQklp4wD2vLtOZc3Mf+JvI -zl|eFK4}q-c&7>#nqwfLCf3h^&u9GQmvBPbG?Btr*5w)BprY?bi%y6{|E$x#64k)8k -zk-!RWKuRP1nqykBHKHYbLi~O=bNVC@Punp|LPJ^YEA(Hw=@XOg2G(f~k3QbsIvcxA -zyVAA0(YU}FMWWcvh-T_cwN{x3QX6if#_f=9n%rSYKA5gscv1;MTW~td5i}2g8Z2Qgo(x#+x5cS8 -z>|quvgLLy3Z7s&76!a;K8Ib)EUB`KtQdn*WgR^+df?L=w|5ozLUbN{ae%G8L6 -z*dgG^=`tF*w?L3huC5Tr9f+kw%wyTO%Hj)WnSllqvJ`vLW!SsnXv8xZdef9qZw8bD -zFi{kiF~H0>1L%~OAttgw^kbc?UP4BU%TA4}8vW2RcK2td5`reE4&|9s&7lWxjt~>e -zeb=7!L`XqNRy1!VT0Mj|_ppqvYUzOHIRUz7S(zj*OT|-om!ORcWk;`S{;i+xv_1-3^D#S|{3J9e6k}m*|(Zo9=Z`(_#Ba+8`Ub)WcG@?%P;y(Ve#w -zC)V#B9CI?yCn%YEdI3yXa4{Jw74~c(pFzwl4n+55$TFVpf)rJoQg9WlI8AvOHF%qL -z0aVz5Ed*US-%kDg-mm!y(~^P{*RaCog3-C6X-^%>toX?!=e$2}kc5XIoZg3!hDGtF -zn3etS-OD>8GDzWN-mpnZq$2VPei<#_Y+INjDK|&(1UM9DPE=b9Qr_fz!6{-@Yp9y(m_J*0Ao*MB`6lN6X -zH7oyAv8p7r$Zg0fpFrq_3~h4Y#KIq^x)M8(j#6(3S -ziYy)E`_v`k^txK%2x6LI+7=9AdiGc!w;*H4vP5|`Q_KDc{;PwttssP7fu1X#CK9-} -zm -z6Q1e^{d8FDin-6WvNdIaM`BQAm1iHsZ9)dIkSwApiiRS -zkDu6Vbjc3kiIz7?_Uwa@|UKdGwVouz78%IshIG!rj -zUO7~* -zbg?166gZ*;KP4Y};Spcaq`w&zOrNMr{p+PjJSIFcyf+u~WQ@JDIHJTJNx}t{IPnLH -zfEBg|b*RD^7^-+H>A1)q_!-+SJ}1@tA=5l#F%bEK6eXmZG+scVK{FQ+6<^H)r%2VwF%DpAM|-pcd(oE4Gn@KIUCz -zluiyH_lJWNO4|}sQHZ`(7K_~q!NHI)mn^h2F{!eMC(?kV7w+I$s<+~k&EA8{Fot7w -zrCFI;!?i5JAosA;CZTy9jP1`Uijdw&H(|jDb+`0UY5P-pz@Rw?1AG -zUZAO8v(1Oh$+l>(sR4f#Phf#$k}VKs6}9FxsO%9qa%{dqT)JpN505C$WCSUb_plP- -zh!JAkV}=iqVEM{8+hOK8teB=c5Qm$DV$Y1oRYw@nGL@hF_OTGav{`a)N4~WO3x63J -zgyEEHkS}@U^A>LsS-jb?E$+-r#Tgl765ypRW-j4q4Kq!4*Zw`zjXkVLFVBdCt!dA{ -zO~^4C<&56G%ycK*&h6T^=EP{8S{q;!m&2Vl1n6txKn0Epx%XQz(ts93er`KsIAG*?Z!d4reATul;R -z_BYKK)cy3^Cxx+^c}A-TDZJfPDKf*3)pp1{kn62az}|>$B#WtPT8#3IXJGceh1;6k -zi6V%3GVB^lipudo^^x|zl=T8$@{^Tiy2N~IT{3WfyM5Weyh)sRRfy!yFKqDPFsx&Zw -zsb7cvy?~+s(Mb{odzf;wQ%vKxW$u_lXs~mX<0<)Ti@e0CcA&bS6e}c8!P(HPbR!XZ -zX7|8|tFDlvakTXj?zFZ-T4JYHN~4r$yn*el2#2q1t@qd{hd48Fb2-sM{}=RkH#Ge$ -zM0a@O7l6_gui8dQX3qp3U9w=K`Onj93<=Sdsp56+f*{tUqRmb4El8`d$tg^jHM0%uLMHe-(Oj43`Iau2yKXy#A>?Vg8bL|93 -z=G8me`q8{pf3o5QLp@ZPMhgl+@==^+T{Kx;@^XN@DxMh+LBZT)LA6C@Oy7YrYj&=R -zu`1&=?87oaexF7YF1&X-T$R}c$ry2fd@#~|7!ka!at2xwjaw-~Rp}&vN=kKYkxt9? -zAZ*y|8{Wqp?4qg`k$jpKSKWDH*)j%qabv?pxH=MOZy(4EVO^Pr#kqls9K^R|4d>=n -zF^+IM#FIc0^)#ej67VM5*l9|mxRfx;pF*-ybtt5{xgxzvF{%D805eDg2 -zV@zT?ov$brqAJii_94k(aZ#TwMb$p?yx&L*sHbe30zJVD%9O$807AOLrw(aSlsIPyf1x>^~EIyc%(9SJ -z;5Ue!pq%yyNYp;a{A2q^efvP~oW6@hKxMS2H{%`@jbr<;K@v&q9mR;gK)c*q9U8|3oMwvo^$ -z{ScE$w{Vinr5y`8fRx<@Ks<|m(q13|zKw??(&G1x7^$qnI -zS@0M|ccdSz+7dO2{&UUAmd=k%lxCkmq(;{AChwPN&)C}ere9DC3#M$ULzzW5*lxSe -znZZkLI>sNxN=x`LGygNLXHBNS|5hIrSrc!|c9nD?} -z(sbl<1~+R1MpAy#WV;29=zjEiC($(xJC8q6)DKsg(_uO?EsM+?M0MAU_I^g-#>lXEcS#oD|Q5SW>QP5?VGzt$~8Q;yW!4dO*Yx -zrgw4>C7V{q`o2VQo3E+r@0@a}TfYOn$IXqT91U5p6`=GK^ER3o${YTwO;<>Uc{ck^ -z>_rVVuudsCgWcT|tCc)07jk;dI>zf-1_Zle4j!>Wwg -zQjMhoJUJ4ej^TS+0Uo7+6Ym|kw7_TS={c3mIn{d%lf$HuB`~e~h_OuQ;lYZ}C}!Cc -zZItIoD&O1fDk1oel -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 -zHv%trh7@blo2EOI?oy16r?i-Ft=gi%YeC7{C -z9qNm~O!PH7?8*l`tNB4BOb5!nq+><4sPmLR7zKBqN|-c%G(`#q*4N83nqnFCRS9|na-#Vw#zp&f(qqWI6-v(L2G8>QfJ&Z|l=Fwv}26U4sz73w& -zjp|CdNO6qd;8cxSbc3yq$krK&Ai2;F1{mepJ{?0Z?q7X}l8)t+KW?8hE$`Q)1EO$z -zbT`Cnohnz^$UDRzol2E#W{*BQ1W0{ZTs?t5fx$Z>=>p=%>oZQ7gu4D4X+#Ri+hXk3 -z_0-KahvzyakXa1{2>!ELNlIZCMt|pZ88Ctvtmyv_q9gE3^`ilO;T0*BXaW>6tgAsc -zmt>dPP4R>BsFoypD9c{l7N8t6yNe}%B?5qFmvt6l>=+w#ZF@I&2IR&7_c$NENqBjS -zze0%%odbmM?!kc@#gR{OZ_vw1=1~VqJp+`O*2yu=yfKOYP}Emn08=cXN5Zk`P -z@1`QRu7KCCKhAyLC}~efMAbc;N~}=~)m&M|g)oO1{~-{7(mIMafFS(3$sM;!EX>t` -z&1eWEs|PsBQC!}$17S#WT@4AQ{t!=cmtj#EZS8{@W|WNAqJkf_?+(uJWKY7<4J7(Ll{Cypp3y(9uQ?kz_Kq6+l; -z#A$@x+-T@{9X7BgsnYu -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 -zat9{v0n!`lbHnV(fA-6mo9i}@K!islc_Ij -zKq0@6Hw=U(Ag+cXq;qTK3w{p`vTj-n;Li;2();`7R%wVlsmhE6dQQq>Y=x+`zMUmf -z-^9+LRT|lPrwV|QLfJ?RA$#%YQ&k-#bYXTR;1Z#e&?ge65#oq#YLb8x>!edlSo?QA -zd)+0o%I22X=Tpvx+u)W^+SsSRn}3Z~R|0`iA)nUV8vYhsm`yA*3O3kdDbM=)^=FkD -znq{KPVGBSKTBfuF-L7gU0a?+Hwyi -z)Uco=yIRA(SlytO{jvs0gqi0Zq6j5B1k$k9^{-Uab{8F0CUu;L7YE$RO@aDL9zSx^ -z;=CP>lO!)(5ch7+Jw;$`;@04#63lqBji7{As$(yIKb$rNm5-^jP3+5fKVqUi1S3Z8 -ztS=OsAfJKksUXD#RMelszg?x9*Y(mt7~X})Q5P9wN)O(mw*xweo>gAZ$A_tKex}OA -zu0dT`McGJ_-gwocv>N-tyN)M%hvUn(e0lwwZg1+xfLlutv3CK~(8WZa90Sk;*){F& -zgyJY0r?^QfeYY4~V+7)rdl6MT;l!pq%S0aQ>9lXN2Gq67rJn$^cNoCDHUrT6f0?&( -zN4iAjjAc>uV4seq_6fVv9Ka-S^D&qW{8>*EJU`qEh&l0E9K=Ul2FhQ|i3HFQ~x6y53uxGCYMnJD|`V*oOpz -z7hT414aAhgC`X2mXz)u^WN#oIuEPb0=qW{p$mXN!FnBbIB?>l&?b}yv`td)$d_2Fb -zH*g0*h{`SzMF6YM4Tp^_?}^g(VrOUXTU_EdBvfTMtx;7bip=7EUjgpK&c|3t@h0{3 -z#TFjRNZty}g4s~?uX&N+Ax3WxOCt`lz3;-Xt3`jQ7F|Q=SRTx^qn0OG1~Q9a*YgHm -zmMCv>QhE{h9r6F-l{!3-CNj>H|H2E6={%OuNX2fr#N<73E=92n!?E~w)MG6{804g? -zl6tR!EE{AJavAgF@w&@J?jRkVqU#RG1iFcpSrgc%i*HW#tPfqjNkop$PeWn5U2EFgqddZk90N5+!aJz0Sxvpy8TbUQ0a(2Qu7#m|Y9H&0FGwn}flY>C_ -zLIE3nPD8*RIRl@9hvhgRnbosDtgY{WX-eq^0NlW&g-c3cH*XYjuGK0|4~ghHZ+P0b -zcoKu*LSYw%M4n?tD$ur>4|bvB;ZV>{EQ7D`Woj -z1EXM;`BvYvdQ;VR(05Aj_Zyl#(~nFORc`Fw($E&)yq~@aICD}RmJekFLSced@Xq^B -zZ|FONvQz#DFi;f8Zi&-JJ^-bGtl%-B{19nr6P%~5>yO(0mgZ+Q;B^~z(HoZuDjEg -z$(}hRnssE}kCm*nx*Yd~!lgD_UcbKnA`^|(YhS;9`_9^)Jdx2q`FVG7QF-(CJuZ&r -z{QiAkjqkxf;difNj*#TDztO$pU3vC?)|@ln;|ePFor3~wI?B(*kMOr$b;Wi1m3+V7 -z>vYKHTTB4c?@zFImsj=UCwJ-Kcl6^Id9pgc!k@3Wf*}vW&!22>^uz!Bn>F&M|M{<1 -z(BH3wS@}ob>-enVaX#^1I+z9{fBpLRcO9OseGhB;Y(^KNa}CM|KR;qjqyP6WRN*&& -zC;o~Z?DhLs+*R+O$Jf`tzuuh@>h;_AuVQlT2EPCG)oS>gKZWnVzQX+%-xyp7#jf!B -z0F!@Caq^$6Z}QUSW$_l86UE!&%)h>A_$MLvukT;)qv;U- -z`ten7mHqzq(RT!ue#ReoV!2MB@89k9FL12r>z{nG9^d}@NyLHu?XTA~p^FdN;MU-m -zPKzO=zyG{H?!CXp)U)!uzDuj~*I$3917RQh_4ljJC;jW+-_s+P*Z2EU`)e$u@a*jE -z&wF#0}3NIOqx{`&RGs;}pte*OA&->hp}UY{S%ujh3%oJmdDhJZqTPR$LQ*tfs)>+e7P -zb!s#LfNwW2EG#cT=;i{31*);|>GaVUTM;rk<=cPMJimVZ3N%C^onFCO`m3L%VW@t6 -z*X}9H3V}~-3UaMKeM_`&|N85feQ^W -z&-@y!C1LpW^OwCvr9`cmeX!YO$c_B^DD?GJn_RxrK!_1D+)B;|*{^m4&Ni?hg*RnzkN^HqN;J2G~o{Ms9QWN-fUOCNO? -zK^zbsD@_U03FyNK$FF~MfW-96LH_pFvP7?AdSjPx+oATR6mR7;D?d*NmtL+zf7Ywj -zDqp9{t2i;@U7!h|bM03?BU?dgqjkpcgFD;=ef2HRu=}qc_TjI;?6U8e@_Z4XZ!J4r -zdBt}Lmi>#Bfi&**V&`c5ljb%QCuze}zPnd`g!Xvz7f*ZfVV_+6JJ-HE)OCEf7xCSm -z(EWPYAG@G?>-}b~%l$US;>V!48ee~Y|C-*eGWSn!{9OZXuY391{tmaq-rSv`e(L-> -zWu<@G!tqi01VD5&%wdh`?R9kfaqr(P!oAxhzuyo0-4K5J3mc{3uusOD-RL;FG}hh4 -z(eANzFiISfnbkLc|4MIu8SE3U{Sfl^5F%g%wo&4ENp~OiB=y -zkMVxDIrDCC)%(%e$Q;Q$1Hbkr%idPeUwJV2{vUt& -z>)X%rdE%4rulbk1e!Skt_qY7^S9<^Eul95&3KIA -zt*?K5|87704Y!@I^C-G`##G@&yneTxf%Pah_b_sw0B7O(Jd$?BG>p9 -zleq_oc9UtEwqLB+;(%yL)wyA1!?bn$GBd?UB=hK3F-rXXp598#M9Pq)?+qn|II|on -zp++LAg5Ui2celb8cf>1^(1ijN8C~310fj4`uii=a0k>O%NqdEKY?0>iVuF84asbc8 -zrw^Cjy}BK%Gre*vhE(c4KW$@vRw+<hk2BZ9~t_awX5c5?g0w-`+FAZ`E&mA@^+udvnE$ -zdt-mRU+wUB()gt_eN- -z(LLxm%Mjkp#RhNN9NR2hfL=uF-(ZsU>h!h9*N-VJ4iDSoGSw7ALH+_sJiDzo*^vV} -zRBSGZFVbJwq^qO)Qx(6hrx?^sUn*ea+adG{L0kg(;TwSAtnKN@)bwD^k=JvZUiSIZ -zX-F?`dwN-G4bR`UYyM0A{`j6=Uh{X~=JaySXI%2J=X~-m|E$U1o%1Q`kJBZE<%>%( -z%Qz}?trwy73EvKxD{E@`H5<&PwE)U%LvSKD`m|>P*$A{zlSMP>W~_#L=|B&nk7;c~ -zPW6CzTG5tDe{X@_~zRnljq=0bnq%k92+m28fq;#>OmriwQcq^9J0?E!|z1v+litNVFRom}E -zp=aSTx(pI+d#ag5i3&XpqZ7RJ+mfoQw)*Cg#OI&d;)mndJDC1Wk45wV~~zVKaPs{Y*C~_p)J8728D_|(2QAtnyX!&Hx_06?7~N@BH~0D%4O7E -z=LFGCfXZP=5(^_GTLu@-NG#-`t`oj^AoN@jzxu5xlleSle1h%B*lEMj -zf{e)#y=v6jV*X-$`PRv6F)N1ccA`7RmlPv~Z;2f{e=u*KJ{VgN_Q$Lh{@5NJfF(=+ -z@|aixg)sLrd%JcEk?z`C%uRniuLK1OZ84ct1}gB`ogZ26Rz^%qbeKYYGs2=0QXW#5 -zyYkzCPbBBFz<@2!&-C`d)&MvTsIw+BT1Gbxc6NQ<)BD9~G}L$u@36Q_M4W>ps4al0 -z=&EDarCy)d^y1yMFW)V(d^erm+3lCVJ-w3+qWOTxZhyz+upt*OxFCWA6yo;aJv2Mz -z*~%*}AyuWPVpi5XBF%b%x~L({%)$dkH_3&OZDU#swNb87;91J3+0l8Qz8Bw7Vx(CT -zla~INQo^Bn83MwpFvv7ks>y73O^#-9F*|u+M_$Kb*K#4b0!lwFiOU3_BvMnruqo{e -zh&9o9{_TftRM2*`Rwm#*WOHpVirbP=x6-7%0%(d%kMjD_eY2DWd6kw+8OC7VzW|;o -z4*9CP;&fsu0*vxQHjr?x;Ws}1Xi)Nh)cjX#f}(8wL*mL2P`J&hUS&J}2o-ag@~m}< -zIrUNpuuOW=b8n#*NQGBp8oXjsI0|ygInifZ)q7H030)v)oWKxQPS&NyG0+yV4D#TK -zfCI#g=noCV@SehA#rt{!W%u3oJu|QT185{WP=2nZ!I;rl;pl~XZ>e>VI9qjo>A~9G -zp72N%cmobK$nmjY*m2Fpp!0X?3c&-QnXEW%kF1i%BzL)v;~b{e>EYM0ueo8tNPRI1 -z=0Z;-yi4de$@wH+5jtl4ru&-gZG -zx2&<7o|J$oVqnv`Y!8{X-Xz**eJ*|l%wNc8a#`3hKZMpejh>R=U;9j+t+uopNQA+4%0CX5uq;^^$yW|A5;Vj)Dn~e6OhA(dryQw`HCL7Vxx`&|a_3_*E;Rj$w -znw?!mM(Q=dlI{!mvL!%S8#hTbl9;XPf!^#8^7W;ysY(r6gCxKQ{jNdmb$vj;FW4f{ -zFTS<)4vm%89S%xI$=-#AQ(i~-BHIk9kcZ?!#|~4ub=U%+s&}R^KVo8B -z_+Jpcsw;1ItfskYN -zL5)z94X``7{C!)2P`x2!vJzxX=||jXorG>LZ$SJck7JQDS-R%?caLj05d4QL*L(wL -z2)ge1o9rU^|AGunb`4NE96G3RT%tq*t4)>BZrE?OVX}Tb`8Y2v#x~$6AmktK+K0nsdo&o>YimU;K9Eb> -zH74L&#Buqr6>!U|#iaF78_7Dq8L2GhP((RM(2i*a*bA9ZT7Z)m=46Q5W$$9X#4##` -zSpgao_d`Z!st;oNZGxiLGy#w)YuM#=PLibAd>jR#C;0d^b|E@wtQw!0H+={o)53Jj -z?)8Y9X`CmnVQUH*IcRafLxY*AO_ev -z;cgIa(IqtZzcW|HLTSk+Q3<1Y2<|mI5dF%V>ptYz+Ua2{aZ^9aRaqM}o$coRwXc(8 -zBlJi&^@hAhNi1_BX53{KzT1UH5EI*UfP;ER9Kvpo9_B|prrM11{~gS!mmin^)#2;k -zUibBXa1}5BhMPjlsv@5_IAT15(~=L@*|h$rcDww)+k7x416Itv!yyOEG6ImDaP>H2 -z(#WZ02~=PkE7dE>16&AQR6QP05g~#0ph>tIi1#AAc`4l6Vov;z|NDQ5MMi`UyhK<= -z!1yWE#ryyckei#s%Qn;t8o9+A7| -zmFESl^UkSTrzF``EdMwB6RwLFJK#Ra9y{2E0&!a`MhoPCsx~fVG}GA)F@++Q5!5l> -zTQJn`$%Ox -z#gL{qkLgQ2@8?90m?G%cShn)f%Pc{vOB?`k;n#cUy;};D0(gDjSNUJK)5k|J-J%T& -zf1x@{lIcTxy_k5e3VAKD`c8=U%6AOfKo+m(62q>qF3xfJz!t(SMo!ZXn(xNzZK~>2 -zB84mb6Q4HiT~-KQX%O=_UOr-9>oz5)#0o0V&!F&i7vqzS`Br<$hE#YUwnX5aP!%~Z-M#k&?^$N@dIZ@?v4@{|D%kyGV{_gimzYo -zr^>jAA1%jydm`AC-(AU#>?5F3=a*G{KsgW>dd{c -zhwp}XVM?L(4kuj6^{Rvzx -z3W{e|d+y=!txkBkFj?DqrB$g&Ebs~~?w0F2$)NUR;zRbd+ir>WZ|s*P -zqJ?lh9Z0P&f>w3o(IWQfw-k5L8m@`3qKfDsj77o)BE2B-oSoznYB@Te(xB`rjcphN -zq+hN@d1K@5EFl56p8s)w>x(OVl00v0JK5ex>XGQjm|5Gy(!j6Z{^x>NMxI|NXfAc{ -z1=I3I$cG+Re8-6KW5PO{r6SI71)8cVrp$bnTMX4|iYn3(#fg -zvaw>L#cMgV6sA0-^TjwujJ{5ZEB(^yRQb{a|JadX^i`HloigM`;I=mhSwU=w04OQ6 -z*Z2N1vn)9kZV;V&`~G5*9$ngPNh||4RJ)V^+K%%k+m}J9up2A6k>wAEI6STJIPbDE -zv{ZMoAs2I&6h2i|Af}E<_N;l=G&(ssWq9HEUB>Ew4t8{T%8rLulG$bo0i@cm;>c7Ws{FosAKZWWfBx71?-?yxbhP8hFd=1yUB7%OiDTH* -zYz(hDDD4JOVEq9al4}D3$A{I`ijBj*HCWT>_#Bxi8w&bSNNu&5?JiRb_jT?13~ykI -zNAp{Ugs*KVU@T5M_>CH$rW%Mw5r!w21i?@} -ztNMSBrosP*vjQkv=Qp;i#wQM}A44f|(|`YMJa9a9^1ZA4Uw}7EEG*#e0dc5Ay9acS -zWv%jdn*}kbm^eTi2g@NK{hi&Q42xL*m{6d%8rFL}x+U7)&{3S2n$s>wtk1i3u6t}_ -z|245holZZR`t0`oAB9f6QOlu+2%#=68}9x6MtqkgDkxJ5#Sjax|JVQie;4D}rpbj} -z*o|>Np!C>U1$Lhpt|zmj;Tiq%9=+_iuvXPpSx5ja&bF~Y0ho&#d=wZ|aU95`soTw7 -z$e~d}qmKbhW-Z2ecBdAKOUvkdD=S-k&+45<05&GoQ2d!*mlt-^_iu;GZXza5zULI+ -z_pI*sm@bZ^FO=mikusX^?_T}Ve*maKek7-39GT(n!G=b)EQN@ShMxKlzGSl^K60V= -zHi+HOa{sek=0h_*v%wq2`PG}&m8gyQodOq?3N<(AE-lx+O?VP`6Zp3_SM+G_mF@0L -z`!HHWqOR_QJQ?7+eU`o9Vzi34VjiCNOtiMer|U1(clP+t3)ijqko~(nen|f6Rm}J~fXJ$gRy~(^Fy2zvEKBc29+GkZQ`BXX -zw8{1jvMIACKC3oRz`M@cPvGoP_>vd$kped}9fYDhDt;k1>_t{X6EcEhriG9}88 -zweChp=%wx2P}doVK$=?l^lf)m$*tq_w!MEv$cmfBvxiC}{Jp)^sfpgSRkT!4cY?NAj{IK?m#r2hUVk3To`7;X|1#O|P2vY@eLipC!f1 -z`BMOp7dgxM({>;nO8m(2oe(;e$Z2|Sg=DMbhyhYA8~YkdkSyzR$cq`-0b7@`1;*Op -z`fJG;Vk;3>)~W|csz2Lnn^3|-Xw1|328H7)9_n`h=#c=>;>)!>eqzxHHS%<0>SUE~ -z!-2Iq7S{k5)d*KWNIAA%IgFqW@c?#!EXPF#s@vC;MZxY4oT*{k7ED+uHKpfjS^%dw -z+b&NWAhyD}#qMhox;KT|0Hy#1Cd#mqb)2#Yj|8|Z=P_89gc4vHGv*ZQ_^%PYjg5x%GP -z2Yvw$-P=!g5W0y$NKqEtuJx$euCrW -zP9fNC((bJ88*m7YaliMAj6BqqVtu=04l9&2A-+60U>Tpt1zC)4`9XZR%F0vzUl5ot -zN>Io$YP;NTV%|3>p=<7kAB*QMdtV&RXjZw;eqhQ2Rn_4r&VZLNjjB*=A1=L2T}qI& -za59RoAL1#KdP|(ci6VTd(2F^HjD$h?_6h~s)YpRV$WZ|mB2AVC?Ysukg#!rw=`K0J -zFL- -z9$V90JgI?El}DA`W`M{*{DdRcwu3lvwLu-BX+giP2AjtM+X?nB__svEOImWK(Wo({xKLRA{{^n -z?TZg(9hO1X)~Au!5e^g_VEiz4Q}j0@l*JdYKbKcN_6x_Sa5p$^xK1Wpi>Yzj>$|wM -zLxU`;#yI?L-=PTE1Q-4$j50rZS>0HU`Gc`pFQifxB)Rv^&c%Ta|q -zv;trFoIgDlP=Cra+L!Kjwpu-`)*b69Jsw$K5^J0%0HCj8`#%3x9Nh;*_KHuNwna@~ -z?&oxJY|KF3PUmmJ$(=sUDF_!-$EVLg{-yU@JSY9+{FM4))nGs=3PVMs@()qAUAQU5 -zXJQ`Vw3laPFbSfva*$pnPgWWBVo<>G=PAqc0Ivl4i=|1;RM@HS -zSDauiZwGBR3x?tJoFyuGYS(EoKm)K%W4c8 -zuKqZ8wQud19*~4!04?xv*b -z{B(O*u=FVZFkle~nX?IbYCv$B=mXQ?Tru)oZKyuYMr2DQk_^Y^byweQk{0{+Ezp%- -zKkqhjd$L)%6(FvJ8QJ607r|tCnp`r)Kbxsrpw%u0XJi0-GWy*RR`CfaMUP$9MoMfG -zV_QYqp$c|fKHV?U0-R&z=(q168%-BWKnolU)WmEDcVmV#%A@DpPUG2k-GE9-a~`B)V{`xz=XyRY -z=F=Z*>jomj_0z17O>S$iKsq6t#L(o*F0Ar!nD6-XlTA<@h$0YFB&pngC@=3vc;3nz -zLSFGHV_}<|-aW`e(f61?BZd{W=a2+#kU=#vw62)`fDPc{WSPClAkUJx>l!&8Dy(Pw=Z-bQ@^f_ay#w$ -z!slKhGQa{t3tm>X{@>6G(s2KBFYoj?azI{8l{!GiA%>J`K#lv;#X}o-%a3k}2Mpe& -zUYJlR26^rAoTBjFH`bl8ie%jwxSw9QZnFbk~Por)_^l9L*m+?+6pG^{< -z@A>d)zbd|41!Tk|K4_ZIaS9aA@!k(~Ku^2DCOhTOl!s{Lu(TH9Nfe*=PnGLP<0T#q -zu|M0{q9lu&AHUoqm(kf#6?eF;KfCh%a3vS>$*Ril=uLmVTYSEzO`OFzl%(5t%|lSx -z=h6iP5(!5I#RQPhgF$CY`Cyi46C>LGm$jL{nFwPx2@p9NIp6ZAf!Dfx8_@BJ78wR2D_$Ig(dtP~XrlS#vB -zn+Z?x<<}N}Dy)xx!dqvXXb@I4Z|UP*l0M{>|N_)u;9bB}K4-U;CVOpPBtmk*ouFh`W!F9oZ -zqf(Ml3t=m*I3C|Vj(IN&%bWnrP(nRbyvFO|6Xf0=-^(H6>xx$T -z|K#gmdL37`Zb7VH|H4(>)IzR&?0vFfz`(sOyW^@0mwSc{1j!)9C6dA9Lt50Y_Z;&T -zL1li%IoK&_Nqht&X3WQ!W9Z_IhtOQf-n1_$n)_CpKGKhT;V9^aml2g>rH;VM-#G75 -zmThKqpkkMUjMwC8QS6l8)P4udxtwtbzB*a(b=lcd&huKm(0yuj6>wwhA9q~Jl-W9Y -zrLd{Jo0qR!bY|Pd#%567D$#YcJ1z2|;aIygv^mYw`YX&#wBu%~da(y~Y+2Mk&09`Y -zF{tW1pz=NY6$@0Kzp!Kov@9L_E)Rvov?6T-NLn|1M(~#M(IeCmhcC*7)3K!t> -zY(ZaPIq+;$n*`;s?Y)*Ker>%ioZXpy9yxbJYEUZ)94%R=};rm9I+&t;++ -zw5b;Dp)h9H0}(^m{Ln>aJVq=xd0BGm3)afuuEh-UXT~PRD%X5K23DhYJhEAQop$-w -zx4dZbXm>r+ANd0#oA&KA+Jf}ft@ULrSle;@@Y{q^_kO4aE1Gp`gH=L*YT -zL=GaTcQn;pvy-@6g{&_W^`n+`ah1CYq;FUr9CLZWYObne5V$)iPtED%m=|iJ@-&V* -z1p6KuF$|a?WXz*UV#2w{DGSaj3gSwR6+SL}|4@m61jmZX<}Wo`=VM){{5XgSIGgot?a -zuMUEo9ans>q||CfqGn0er`|nBU~R@=W0~~RXs~$61n86pCL40BdAM#L6z#E|YI_)H -zoOZko^%7~+;+CS>SUm)2IkWTwlrW*1QZv_FT%S{-fDN=m>$84F;JWxr%pQ?eMzyad -z)cs(8&BSAb@@oRVlYa0_Pp}KG65yE|J;9~68%c^5M&=f&TfR!cN|~xjM9O*$VC6BY -zrj567ZU8_)zrX5{NlV)z=TvNZP4T)L2(iB5+3|cQ2MP{+46AkYlTWZ-9fr2nOF-CV -z3aUKio~`69pUvtiHl{ -zq0D&1uG8rV7%YgT=BV=vEC#5&C2a?VDe^z8n2g*vwO)ZR)Ln0eOK&6F(1YrEHPP~E -z;+J}dSm45-e}PLEygvCuv=2#NnZnNe(?7pEvDofgk2rLTBlHtnnvAxvX)ZKI`6o57 -z6AC~ZIQ!qc*~XlSeWpa$jx_raJ!yWte^|4*e1Dm+>~lSWHqyu>N@Xp(7uvcan<|8V -z%S+Z3zX5rNT|z%y0IxC1pEaMnX&$t$2bx5@Y?;A^$uiM@t{Xm2U62bThob6#Y5~Qs~vhH*)ts0&*?11PyO{bNbTaH9C6q?WNUX -zM?_J8O)rFAi(X=m5g@}TtAH%Xy{`RcrG-1U&>#yIY_Eo -zKhi4a8E>@qL-R+e7`m47K!ZEU_W;Dj8}=aCZn%>L7d0A%PSf*_qY)t)A|%4HMhTna -zr9i!QnAN+JfuhT5O#50GtM$QJ(O_K+oLlEEY`dR*R3+QDCp{7r=oD#){PaF`ckFJo -zH^Y#;eiSyJ4B5HlMx{C_8r! -zb#w#0Y9ueQB@3$HVT2#acoBqJS3+rww%qLmSCn=0l3~WjJlubv>QK?zPFK&U0RA!WGUUGLAD;#64u3Au -zmI5)qqUnV~@^T?F5{uL01;T))mDaR0&J-vDR~d$(ydNL{u$Y+NbbG1!RPc;(Mx{!S -z&-$i&z#l)CQSdo7h||GoSLqgT!v2Yrsc-8aNISX}sn(#_CJ>%K0I_&@XT*XsE0h)w -zbjE?40%=I~4;gGwOc!lSUhN8K|cG`(&}MmY6tT-`+}+ede9iMFGo@6%fsJ1s48-eeQO|LRu3C&9@q=;A7eML%MIeKF7Vo -z=Fv~3SI)I+%+ePSy^Yo7bPR~Utq>|GE{i_n2D`I4@S^W4J33<|A7>Z?m)m)$IDZXO -z^$Lb$s1aj}|AMW=oddn>grfS<>C(xEVW5|r)NA~ttGr+)hFq-f*+*&4i?$zb!)qa& -z!ee@}oVY1k+WN_66i*`i?!-(}wp{z=ULf31Wk8qiX_K(`&aN^ -zULqNX^!i*WF6r1yru!^5Mg-n)p9*s~#O5!cKL+uh=lal(6gD>6U1*pW`y;SJTz$Xh -zB7=N*bSYN|2C`G>@h2D*M5+@P?s*q}nHKctJEtB`_*~BAbh1S<5spI^o -z75WzlPb|Xa_z=5NY-Bk6IWA_FTW*+9y<__jm8=W`&0l$49QiLZ4P|`!#h=$bJ&H?w -z!~$QLKJ#CM`ug<8awXuCIYwwOpW8Rcx`Ju#{Jm{04G4dRanTjb83Z=ZCEpBEP~eJq -zxm)leF)PCBQ>Q;%g~JSFe -zeXt8@!54p9-%+M`le`5(qxAK{V%G8|2>AIW4YC%~X1y+ooed4Da*Qe*fcANbj~ybF -zKhbq0+t3RJhaKzb6+X!y^Xv&g&HwS~D}a;#fXYLe0|L!Ad2Flmv&)BKfQz|K@gRFT -zWdU=efv8^b$DBUn0@At7ftyh2N&NvUUDDp@+IksTMiw7&yu_*qC*#DRX -zD<_iv(kv4nw^%$n{j^K3MWt)Jyr@7RPm#x;bu7>Ub8Z~*1`17C0NoeQ9=Fqj(+FUD -z;}0y)7m#NzzNq=UGoYI$)XQ4nmK9)x*6Zo9vkbFt6+EdiU;LgcaMxWv_z06ncs2BX{>mL{(_F^iKV2Neo2_H!H -z>MuQq94fv#0S|Jy+Sr6Yu=6nAHH}LBifW_ylD6m9>%(|&<=!E_8zn0VT -z(T}wM{27{|R{9rL=g}{VBHsLy?GLEpqX-&k;3el#wxz~IQ}>Ka2mbK2I7EsI=0w^dK9|a>d -zJ+T=yKZ6B(UmMwx+)X5xAx9i&&MnJ%;%_AJY> -zuOTzU-9a&_br%%5zAJR$o;D@iRlVFEv^nIyJ|$%?E3e(RO5t=<;=*^e!}Toa#eQ|# -z63#UR-*Xy^pnL&j}=F;^Iy|Ta}f4rhPZ-+&mn!Lr)G&+zsU*Gy@9sYTpR-i;b -zJioYx`~6^YssJ63OiJ?Y7i%zTij|qhgikvt`pNl(x&0d)bB5-xGh-NP&x~oxIxypy -z$fehCR{mI$b1-ooJwo{|AY~L0^Q^w^U%Deq>}$O-p@wHE`RL5RWR>2nkK>#MVJWb+ -zD3cr9>MNJx$#Ul|d2&0aC#n%+nj-@Z({#hXILifFUF8f2&M$q@Iw8`#v{tpECpQwq -z2)6oO2;*1^p{D!o?IO3xSl+Y<%>eM5kix#1EXzucX|rg(V&1C`ia+u5-tVg`A*}IV -z(9LN5V+nmz8K1z6fx}FM)_RP%G8xA{&>C*7o-(9iil3T(2WlfV -z;EE~PwRaJax`hS428QcN4lwx|vqfVoVz@v-5dOG>sd1U!LT!{^M&oi+@u~DAw3hfm -zH2BqgELy@$!wPLH;c$BHi+IU0c0GLHEdU!TG%-a9qI)nwwwCtCOBL1}b3m|sy&XEEX}78r?7 -z8Tmob&N_gkh+aaoVq%#eQ_@-@Q>r#vmuGi?2R6ndlA$S3-&(r0s50|An=st+s3t}?TI -zx;pt4+kcbBSyRep9Xc1to7@UAP&VX!D5>elbaE=fzeCevn6LSL6^s@kaG|0vj>jHZ -z5bw0WgP>KBaRR!1toxLb3|>K?Paf8M?G?CzyM|_31efNND__OljED2t)4@??8xf)1 -z`w#8s%BS4Oq{wA}G6iVTqR3@NyV>jQyidOnf^KP6U87w4gQ&*@ag0P4cqN-_<`SUJ -zg^rkdWfoh)Z38(pWW&A2)0dFT<^uwFS23Lctjm>=XPTNz4oYdf)5IZ4fSf>sJt)WU -z^SUkH7bQJ;QXFxyVR+$mY;y2l_l{)7w+(0Jt?;$!1}7qhjVUml(%a -zU`?Z$qfitLs%EmS+tSZAjP;EZvwG)png>^=R=>_X*tqRGb3SGQ(D6V#L6#JJ;Qch4 -zxFX$MFAa3!Ou-w0x=;~2Aa$YB>RuH?6iz6ris`aqDMfRj`QNJ#lZeOH7kbWbRzu*+#6Ng+^%7OlqI -zgRB!t0nQAw9D_ehhD4r8z$#`un0A^Z?wiqF;Gz9N7sWr%Jp+b|s?(!NW;3DdRV*$z -zhQM!@11msyvt{J+^A_r(445()&`+`^w7A5hb$7JGjyJ(Zl0P1mJCd`LHVT243KM#( -zH}_d;XXCQC7e0UXk&e{f(rR!5D4w>zAQr4t6;P1)%8e(<#RR)zE{VQGXMT?0Ey$L1xbf -z^cwepV=s#;_#x%z2u9~}tOb9+mLFkpkDO+5O0_kRHxkN_gHDKyf1RIXeLZQU)&u{X -z_2E2BfHta%>WJa!0KhdBFD!}3B`o#7#4XLlo$3-;9|Yc0358+sEr0h?fb*Z -zK=Rc!{MOeV3N|FUPB7OpdUxU#DPZ_L(I{ZFz!eL2C{|9KfTnzK;v(0f5xK;}sb -zh_?D#R2sx6q49okV$bR? -zfKO!fK7C4Z_*U>Of_k)KLXlwIBIB3;*ERlkh)50p$EFeD|FP3vvj4B_aYoUit#sL; -zyk0X0n{I4-Lr!Z(y7486O%wDLExCEKxOY;)7I6jf=kq7JCiv$5{J~|}|8f*u-T9Mw -zc=-TU;QR?>+JJi*AUNd8Z=b{RADLAtw(Yc&m3c;btP{AN;I*YCAc29x4SH+8{a_lu -z@qSTw+-0*iM5r^#p|OBhpRU_DDc$uF))5WYlc`?tpXbjdJ}m7)?@VC8-g8u%T|5R) -z41+4N@<-?2!{I!)P*23ie`g}|KKbqZ05IahAeJZm6}+M~sOXhT(5Ad6G!s#>Uo -zfgi_V?f(NbT>m4i|Ly7@^q>FF*wDrxNBnP?-2VdtmU7$wjl%Zj|AFB9_&=Og@_%n( -zd;WXLWGNrfk!w5he@mz#$N$xGA?(PNuP?2nIR3An6a^WZzI_j{vf@W?)6?Izi@)qA -ze;HSQIY)na-SelLpE&I2b8Y3BxI7~7n*4J7^k19v=Rfh6UA{8mP1V;!ewkiJ1L8;a -z_G9*wY%jx>Z*+T{ejf7AmwdC=eC6{{-rX~g>e}aVEJh#?bd$#sCenYGKd!I-vWnz{ -zg`25ANchMzmUi2H%s5G=eXR51jXk -z{KP+wF)zqU$3H$t!isl{s;^Wtk1HnT52c2&()YgWQBKU|GI&E2$DkEUSy{0+T#?}6 -zfVy-(v$#Y9f5v6|(4P2MKJykoH0JE|+jHnuuZ~-m07o#jWV(gI{rqBLEH{)=^x_^Y -zZ-I=O3bA(-C&uM~C?y=6?Eim+=kutIJQYoj>)qTJWSr+M+gC=WjjY`6AY64- -zD^Mw;()cj1Aq(O_=Ng7Khh@W#u*0^j&~hRxrA}4m4-cM_rVsAfNaiscjV#q2oP?Ty=%fa!Ql~M -zB;Iyu2tlH;c5ssv_cw^oiFjf -z_#5uy?|}iru04Gd3f5@%dNs6n -z`p!{?D-X%HuK>?srI~rS9dHqfFW%czm=m`2l<0G!4Ff0)r2!!`ZauZjuDVQ3acr(T -zoC2l^*ml{DPc28_14Gs~|CWMLzF&e}!ggd$>xS%q9J9Apkf+laqk_tQPBW`rNu+JT^2T(eHqGs@TRU*GkD -zDLz!;hxg$|8~=fzLjq2#p4sKsX%60z6SveV_*J3vY`SbuQAN0>tb2i-8R(p*&a -zpg{_U8P;`79MJ|7lo)z-1zn$cK0|Zv(zH6Oalr{hm8mSCr3#Nl1O%WKiT1CzK45FwD!W(cZNaiHZLxLfhz -zT4WR1yW5FBfo9vd>#cCv8^OwDv-%5qrQuY05?ed9c+aF2Xe$eN?KNJIYLYo+eQ!GX -zD7Lu(D?&jX^b%YM?vWl|t)`Iz@0E->&<8@g{6<~~<8_cy{-!H%OlzN2EqLpu6S8wH -zw*{ri&D^f-K8B|;?f`drs2zp5Tdgs(URM!d@nL3Z5^!GD>I9_b=QsQAWm{Zm08{(7 -zTBZP4m-bP&exvlHxaKt(VCWgfr?wDxW0)^9R6(K{gZK%wNhIHr8>o$IYDy2XOW<6x -zlTo15_Xa#!hq2E%Lu!^s5+t0FI)#4QeUI) -zsgOz0nX){TmAwvaOZ!X|r9_MJ;xsSmo)gPtngQA+D?HPZM@G*&_m}uYJA(||lQudi -ziRw{w;HLfQ&*7u5^vgZ^lT#rohwr9VJs*lZF|&K-PC?;EGx;;K -zs;rlj$)^1noJnyrV1>8Cu&H)~GzWSFm@w86%SnYbj{U6sKa5Vqw#W)GdReT%vc$VR -z-eC-%pNg^osTci5^SFjjqs_KrwKzv@z^ry;G(Qa*1S|~MA-#8q{Ds*J2kMejXAPf7 -z8gGUzKqVUC;pzS*X|YByM{GhpV(RUM#HZqi0=yEnh5NQwAiOk(5)M} -zkI-)_NB92q>pOa`@XG-XhOAyFSsFSJiZ})b>$dQ-=(DD)ZGutG(9V7M#FE4n^9?cu -z;Sk|c(zMnI3dOy9{4QB+>}U==;I`Nma^B@MGd~>0BaeP+*==?$vR-I+W=7Xr28yiv -z7@BzLXcX5Azl;XS3n2Ma9~5|+7nlm|fFPriK%OK$Nq*PwVU%o?1J++-oXeXfSyUl#3^*8EY^jw-UT+?wgO -zkS+x(A4X+z>&bOQ`-v;Mk;!p8>$xa@m;k~yY0D><+Q%EmD_`P;pXQc38(Bh=n^5I| -z{*3zccQ6+{VUSMF6y_$k_FdY5mt`AZsLtA8r!sEL`&nd4f(g3vX%(-rPbPME3QGPy -z^T!xBO^V&wr~J_xlu330=y2{98V^9t$jL-I7F<5Gsv+3sWq-QKPQx{-XehVl5Ydu0h)vHs`1{m4};QK8SevY -zyRAN>GdIPtq-04@IAK9`e#x65ceA;CM2n!rz#$7|p5_N?31Zl$lSg%>2Mmq1yRG61 -z3>5-~djAi9_6%LY9?$f`z(iJh)fB6Sx|9*$?r=P{LWT`{^-vR8!kq>S6(uqewDMNS -zUxNisQAQPLgl6T?qCFiUdf3Shm^+OpfhW&jU&8b0*&Y@?tqeX-KGDEvX3do#Ja&dB -zT$HjXC8>cxlyvDGCet%Y4XGmwL6N=K(v&6<2UMLkPQLe(2E6?!kV@E8wC5px+?*yx -z?<%8MFz7tiX-l8cM)T<-1y&&>;j?gep$d+e5o2&=trGdDd1Pg0iY7W%yDKTtu(|8~ -zNk!wONKgpeve&o-r^Es|R|7f{-QsD9iIyPOGQji_CHm6|-`7mWe8-*(a-eH$Jy-D! -z0%sa~(F`3~31d^b7SuQT70t;o8{F=V#{%jO%xFJ51)CrAWTXO+kO``9$xJ-H@BzkE -zNX_2Nt-utvWC+M{Zj3>6B)yKyhW*A^qC0YcG%!ckS{@lSmk%eJ*r>*ORcyq6%(KsYLZrI+QNO0(3z-xg`jGKme -zl9>~xsBWkTLX?~{_`3U`Z%dz)SWjubF#*$U5fzsp?k$fu#Wjor=7%qQHddtLHM3ZW -zSaY;>L8-%~270z$WPtYS68UwiOttgTgYg -z84q~1dVg7YU5AyU0eHMuw5(6Gi6_gf(7}(A&kH-6D>SE>77n98d{W-CP9~>1hcZ`7 -zdk5PWUCm$!;KqI30GaBncMCPbmsl)*;$~Cm&77tQIZ1UX6eFU<;K3kbV`{y -zht(uMi+#+GEPfX)o%LZh{|VZZtkE9s)o%Dyw$!3UD5I0so#TQvYlx#{Dez!mWx?QmH(4fK@z!S*h@JgX0bFQs*hLsJ#C= -zw--wZdYi7Lc-75#>zglKpX%_oL~iLC=sy%>Zy%ANKL|`db_#!NbU=}G55iUg)3a+b -zFj|QVbX_!RY3?-LaAemwh=lt{y34x -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 -z$*SKr>mv6D1n0zFf6S)`hcXTa -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 -zx? -zHUrwVOmTxp#_d}bnjyB(*Hq(n1@|Uwnzeh%wQ&d+Dct?N+eM&ioLZNlM+zS#_kzf% -zZHKIQ#juf#aiAILXo#_wj@bgPPTyqI)nbyA<52Mu_KL#rTW -z#a;Y#EY8<*BT$4}t+ZWO;Ui$!6Pj$~OElIZ)1n3tN-Sw}b{TrmsW|{7Q~V(9)0zYG -zy~~TQ%gVrfK3ZGbL#AMuxfkI-3iM09UrqWri#ZWCwz}2_*>~Uv;V!+Z*Oo7u-RvLS -zLDr$G7#;(P2|_b!4-ygkeDx$fKbLy1sy+ZUK+3;@fI)8ut(!G^VP#8%lmkUDpZ?WZ>wJpAviti{hkFS9Rg_3O4XratYS$2a@;+C6uHv -zm1==ZmIfPbY~UZj!}LsGwIu9t!{NNk`@^#uGS~L2Q{5mgI-m}f>#`UUR=X&a)M<_tKK0fLfvpz%VJ+aCFL=UXkEq*m5 -z35H&MmITco*eY8J5HRC8ml?98JrYIqX!{QaW2K!hgNDbx;quQI8qet{XqOD7W5vvJ -z6_1)n;ep~Yo*A9iB{e{8oR&|`Q$8q&4YlR7(e;d@LiC)zMokWWx7Ln|385L$Qk5GAZSon1c7?k0 -z#k~x)pJPt}Z_ytXy|q0RRs%5Y8|-cukiIkjPuAODKw@&sZ++a%s*Cp;7;&T^5c;m> -z)KaxuQp7yaefIjCymSv*u&?08i#j2NfWm8`0018f_#v-K@=ag_Eda(v%K+migaj*r`x*8FydM_CnU}@NN#8^mv{Wsk@7?EG_rvUqWmvC!L&k-JkYdXpde&qQ*u>&gIb}aU4)k^O -z7voGLgM6$%`~k3SMqjEnKtS2UUE*5P)e}HCrJ(_A66<8mnzW3eh0&n{olZ|a_p%t& -zMKF#po)(Dlk$CZnQ&YHAbiiY+yrmkc8BTG0=FIdxpk;l%vInVCZK%n0z7yh?6Z2eRpANyop9eX{w@K!B5`htoU#TrsT$IApGfAoRC0OCzrTEzyl -zaJ%tvc%axNpyHO&9jTDbm1o&FBLEFPPZcb<*<)=e6Va~?jW-4IT>zXK`W$)D)^<&Z -z=N*f;gc+jPB#loB5`03Mf>cC`BZsEFREOOyh$;$`&z!!G~7uXy8&NFtY3zg;1 -z2j;T~OLo91xH{IK+ZF5A9jj2SXxEiEU@`si2a0VB0Ven67&63~!y%^jvpoLB|98KA -zSwv$p&t*0Q$SmD@+wI9=!3uM9a(J$wu{ZHy)DYzf&E{Hd+!CE~9!&GuVDLyL4o^#? -zlkJEBfil0qFb~UYAzMc``ILx(BMLF~`&LZCYhq$0^v*W!k)UJfHDJaSUd!eh^?w{y -zfA8-BeS1rjEI~MI7V*2mhbl@FMeuP=ZKl?)0OkRvoi>BJX=`&TwL@zN(r$WnG&+D_ -zKPJ}rF_%Pd9*!-UXfU1EDW?%Y8ox}nds -zfz110&l0IC@`=ckpcv_z9yU@H0GEB3ES(A*nTP4TXZi3T@`5L&iR>x4f*-T^gfCsrHU;IKnX=q;ZY4M22t+pK92*@Q3nps&a6&l~-8@j@|1Iu<} -z3dxtr=M2Rf15Km6)raLu1D=fq`_`OVEMigiLvb;I?1kp&k|%Ar+1T@-Og<0?EGW7+ -zNcC8iz1`0}_GDD2%0w(??Z{-nfVb#jzl25#?L1cx4_EY0JSN_V_0Y7_BibBd9A`s8 -z&}?n(A)9SP6(zxS4>?grR;OFj!)DtC1AVq-z(X^gvU+j4G`UuDwUKPcR^9%wcVdxP -zahYnc5SguiYRe8|1PMr~_#?PUdkMC63kmN?J20fhx-%&ro;hF|hSuP!?At*~hF0>b -z0|QoLgmvqX(qyvODK*#*LCKYi6Veq+Hmh)kL}VK&!(z`xXux_On$)7x<1(_L(hrv1 -z1=B*4HO|y&x^}vvQgbT4RcU3;t5Tx~Nj|3xsyS)wH0s`#W3ZC^`B^>av@huD0e1$~+) -zwIO7bDzjUk4U1GqQ0?oC8&*d1DPLOix%?w&4VmVM%69`64ANR*U*|m&SuRgda4X$B -zXKFI;yYuoFfa{y$2ZX4Oo}~^wIkszY1OaHOc>#RdtCb(E&BFe)}}ZGQuTsvWzeY%^MlT|18G|2n45QW -znhWtg-0kU0dU6In!#Pyk)&T2N_*1fLHg}vS+#FhEi01B?=88QPJdC;%_4x(F{g)8!b=Hr$h -zWCMx#3R?^^yi(dfp5f1D@C?ulsCNbf+B21jh;ko!it3N{w-`T_azc;tI@W>)K7F%_ -zl2Y*?OK23yMzWVUrhD=9;WhSNQD65Nt;Jo*7yIB!fLbvIEM5xu=0zl#nsqHRKQJw-D&f4QZd6&RLegi*W-&~4&a6xzV7*9{B+(cn6$60FWkhx_p{7s|ia -z@vIa3{4+!A$kKRck8rNSrb!nlj~AZzk~V8ygs$N6_d^FblYr+!4On&sW}&6U4}Xd7 -zm5JxwK#cL*V*ThWI`kW`jEWG(~bdCv3gWhndT?EKt|n_ -z21px8BqQJa`26A1B0-iuwDw;4ATzE*&rz(EFCQjnr1MIgNywc%qwn=JK~6;K{evtZ -zx`zb?>8r^)#eO`rL*-?XtYl+2HEf>1cBep3xE1B&+XhLg8p18B; -z;gko(2p1+_-{-z5=uhH*{y}_KFpuFR?+Wtg`A2>!ue?P+;P&VQ%O}ubyUj`Ie`pwv -zlGC01^@ww@7fs4V4B7E98BBw -z^hd^KUNUCqb*=qvbeT1)IEg%NkZmA*?T6$)Ty|PM>!seSc+tUOM*^nsh0tdq0!i -zu{1ZVX)XG!#g3HN$TZB42HI(2d4&CC+N8c~BwrH^Zk=;+L82HCJ -zGZ^qCEQL9Fc~;lkU!ES8%Wr)lp0TN!@&zyzPx)B6td8jcmS1xb?tXF?hsT{g$9Z)xlBO%dDw%+fNt=DLcF0iR<|saDUE8D_lpe}RU0;*Yd>B7% -zdUDFFXc6zB0J0+_P%o5r0_DsYKis)_a6t*pRffG<)da9h;RSBlOL(FPa8O4jQ#mt- -z+jeq`_;cWwyvfSvl-fothGNKBCl)g6`8mDp{p<&$TWPKHw%BuycFJbK9Ni*Z;)VJ3 -z_QNfdUldb{V`-zy);=iQCq8BE8_cRZOek24fv`p9zRT_z1(#uXX>Ae}LR+Z&K!$6+ -zp6{@UUp|_VnQG7^X4n|F6YzLtN3euA(xt6M*3XnYQF7i5jL3ami>-_~5^(Do5AQxF -zwm>Zy6`aq=dd)_ysdUVYC5&rnmuGkH_;GZ3D+Y%22W{W0A;tJ)tkOvvX+Mv}oZ>&x -zD9{F5his*DceVBIw9GhL?t3@a9D+*0)m?KCpK8tP{$QM^#zKPo(&pYca?b4kkB7Fh -zr_%89J%167!DF`cA2@u+rTWxOWL^7s|BsJSIE^QVf7Q?B196uPZVh6nDLUZOLC`Z~^<}uvVk=VkwUwy3~O}=jzbZgFF(` -zm>Z|*HH$VaW}#{{QbN%xdH2q3w)TZ)3UA#)M*8jc?FXNNt_6~|_b-4o0gX$4rX>m) -zYW^yQbXtWyliq?r2NJueU(wqh(Y*jM>D`mORMDTHH%#QWBxwwy_bvLe{Eq?Hc|IVQ -z&tV$rO>Ea=!VA>TFU$ZSo5+%6pWpdwOn4U(A1HxX3E>yLS>aHi+=@5MC%~`L#3(F2 -z?JW+m=U;N}g=Q^qU*K|OE!;1k%dw)?Hf;y1lDOW|snsQ)T|;ff%0*U=l~Ir_D1 -zLMl=`w)N4#OMVeoHJ}rf%tUzq_4Pmaq@iiX6ipOk-1y1?24!J8JTvYNXVO`DCODEl -z2AWj3gha6}NU{9l$iU!E(;ZPBju(4G75!?XSg~|Gh7KD)O$j`xWcxS&cHz;28wu~k -ze)#RjzZYS8#3umG9d@VVs`jG)q{+Ia{c|A?Vdsmos4vI>qUr4>(*wvLn%$qhKFcap -zhfs&&k1@>ytBKYI&E`vxD|^6LVXC%Uq963Pe(mKt!ws_F`gm@=j@BGLKl#IWqmk^H -z~7gcn=x{lVF0#qJ!@k{*-uxb9f>M6`5kMh>XR8g#W;ICV{wIg1zD|1Yj+g@LR -z$)t~NY20D3H~uEf4^3-&MF*o@zK^wh4R6UWZ>GNHFQS|^(cf-6zoP+SE#(#O;&9{N -zjOim>=s^M{FQ4$6#~7Y+jvLEiGy$|<*lhWuZQ@2byrK01G^aACkB;-W&xUcNI5M(P -z7aeKl3FcZNE~9zU<=>KA%Etd*!HGft0)5MLxp)ID!mXD}+V)EC7inc1mc2{c{_(b@ -zGKAw%fFg-p>ySSAOoxPD3s5Z!$c4A7wd`Dxx1mKv+sDuN#@*3h5;+V{vN$wAv<1?> -zcGuoD5LpE;s__&6{KuutISFJ`JM6Y$;v*AHOK65qI6ux+;@Ch>Qx3;^1N|~>E78HQezOnQaFd8!rICIIP}16^AL* -z-jDUxBnNDi4H8q2h2tvW{knuWT*Hy9*<_!(E7FjKAo$2Gy-;3Yf8r^zK>FCqoV`*x -zN-7_bm<=Ac9MeIQUL*Rwl)Xux>ONj+#U2`kZP&#)uz|$6drr!L=k4|<~S$hfO(CEk;tfMeKadkUdqBmCTh~h(n -zJNBAMy088GZ8cyf(z{1V@$K%pRsN -zPNcV3qd85TQEl{m4%R{}to7_j_broQs0G2>_!&$FxgXj7FrO8^Ey=9wBIN_~&#M7p -zSzJo3UcuBJUDU3;(BzUD*$SZj25Y3L&}4!-Dw(Su5YWskxD3 -zLQCXry?wa>dqoa2y==jF55JaPqe;5!m@G@cLNZb#gNU>Ue(OK>k;7kXG*WFdppfLK -zI)z@hPzTmR!xsu{pAgK(_7&IA_K6wgjBPrB6jUcOxmCi0sI7=hrXd+1uZ>;nrO -zEJxAN`w_`LQ{*xhrVb3j=QtC%V)7g&+%^T=kR^DlpI{f|iW+vansJhHQUGmbk3}~L -zJvq=KXm8NzlW#iw5FBWhgLl`73^*+z3Y$AfnUG_{gMAge*fl`5{O}DcC6t|EQ=T+^ -zr?=blOZz$NL|v6Uy<(j?v_tlI`~LnPrcsae^AK00OMot~HCQWTYN4ct9*q1^P__8r -z{Usc?Nv?d6#Fb^I{q=s6*Eyr!^$EnA{l>47yjX^{OQ!?8e1zkiKN|n|02Q;-XJ7{_ -z-?uM+e?2t@qI{2=S`Klv`XQhAgG{$^D<`ClBw?zm;b(aG8Kx#R2=7r->{-3Y7&xRa^dQ(vcdQTzj9Sse4olv@a -zXL*T}R3DzOG5OH#uVYnT^4t?kLwiURo7dR3LLnY)oGbas(Cd-Uj?jG51@N50$J-vh -zFq0V^b4i`-*dyuV>tQ)bdJ}E{@*ehf!gAX6N&%Mcx7-L5kWF*1j6)uD=y7=-h^HZG -zLkfH7&kB(8r*k14Lg%jgB9a3oL;RYMGgGGviu1`j0|jx8BZ?O+Y#E~=46_?xWe@VN -zn!_d8u)pcJNRh$uUwi{(Q8(p1qcb4*qNq78{=86%795Y)@WWIfs{3_?sPMtv@zw-k -zvI0)*fT|+vt8DH;V>il*p*RKk(Ahmve-4+;18^y-%3s7ED71a#E9$b=E)T^YGby=nMs@v_@>(&qA6@YQ4Hli5e|~o-B#j-n)*?}5yxrS&RQQja(Q857lFZ|n*8}E#M9JRt!-TKAQtj^+ -zM!AmFa6i3g^%wOA^doEj{5v{lLo|kp6*=1J><~I}3PKh1OxU?pY!P(%>e#T=)*s5E -zWvAI#G_n$llG)(aMvDZ<>eg{))jVBo@Wk@8lKX&eT0`bCEx=^j?oD$bwcQX5O9+@! -zM=QYMbiJnH=slQxF)rn2qR>5>G??rMe!oae_S?O8hM2?+(Azb&1tpdkr3LalM#VJJ -z4@*+kk%>DB+a}bUtcg`14Ee&)(`_)#v^OUjAm+f`0`A*H0-0de2ZF1;e*NpCZ#Qrp -z_O+uteNYX_xB&*Yq=#eI%%pSXIa%Ay27MD+SoLkQ1O+k-sg)~G~9lknFQvlbAu<@}% -zF8WjuZTGD*HWzg3kUztjBYYXy0HM{Ta6MGz7*@VmB;p#?rn8n6G%&O-5n1d5NmB_4 -zupl`m;_To0q|lH2LC!6bKgE)7>NO+#i1-M&=%bd9!ajS_R6;Jb{A@_g({i8)Em3J2 -zG%G6E&D%oG%43yOs(kcVQccU-J|naHAdmHy_*(d<>Oc0w&be2>J&Kdc_cZlMHk7XE -zhI_{k{>!zkX%JE;8YOSGR#)O>y0e(V(YKk%9~m -zU1p-CXICRnQG9Nki^g*casmt>Jm9LA^fVW(SW(1hBY7aH;lmdC4|t2k)}O;7?wRXBB=;rXFlP!WE2R!9^&(v -zlXm9I`4?mU<{B{vjsR!>8#g?{s5;y!BIo;_98s{>Lu} -zB*w}aA@OH$^7#QFVv5)QbUSbt`CChK*IsgZw)AvHbPY*$uK{`CP8$`o_2pk6rZh)< -zHWu?40_$-4v^AweFA7_P^L}W;I$qR$s@I -zRibV`{|d#3mD|Cu=J2mHSHPgOcqi-}w*<)R;9MXe$eKbC`G$GUG;Cc8t}cO;8SOF( -zIrzPYS-N-6xg2Jk;~ry1N-yrdbcw%USB9Kk-7ls_h;e|>`H9AkmdiSjTahmg@|wk4 -zxX{SOwbnV)(cOUvp1z^sFcU4Hi&TEVpinxbUPcqf$w~qn4trUWb|-MJ$wA}Az3TFH -zifosn&x}K!Tf~m!sTV&ukU(tgug_zEjHF(Kr$a341&vu+!>3B^r7x -z=7btEQ-AVz(UHdl;#@iBAECN1Kun&d<6te!ptN1Wddfd)x(Iy|rfnP^Q|Np=2To3v -zTplx-F%;C)x5WT?$2+K9r=w6_qczgNuvvxVnjVYy+=@ijBSMH+QN`<8ULUvm!&NUw -zi{1*UKN#$O61Lz)ap{qoUgS12LHPFhQ&3c<3VwZ)z0x1ik@iw -z6<+}Z-E@I#$Ea^P_=1)ah==8cj1vFS&-oMbj5wPGmYr>7rkgiY+dyTe=qTUU0x->g -zJsNd9gnQKR5LZ)9DA~A^w8u>m8k7bH2n@9FYKGw! -zjEjIy{L -zXuZ;0m9IkZuiPFat;!8sGQhx=-Lj^p9A~}l!vI=eZ%O;M_+k8O>)BR%`wI@irLm)+n(Fj^Ooy~?O+OFG=s0V@wy%e`MJshS?CCZ3S@bK0_CzzX -zb7y_NodLpPU-yV4-@-U9-(rtq*q -z_gmaS&n^Glgf72fe%?QJjFEAnv~yAjQQY7daMA^&`!JDZ-Aat%rM<7 -zXS&Y=Gb_vAFY`XADU9?mfEE&&CH?zaw$sx}?o34a6D4}+I>2nA=ThhGU2ut-$M4o+ -zItiUJFJVi2GET4bYp~@r{wiC=I5M{l7gTJ%;dl1X@BOmvNKb-v%CuC=FR$N#nfTN% -zZ^-j5&RqgjJDpB!Cxo?_%pFnNeU63SF&@)(5PVwZcfZf>Ab_o8yW6yYcrFE3#k9F| -zWJQmtjNRhr45aWqHbbqylRWqZX%bo#+0;J%D{qfmDOY9jZHhD6FE)yJG`gV8v9*+e -zg4EBgZ{T_cni~v}l{q+%cnZUq;%kL82*tp~I3wYxm~TDS(hmF763O>aQp$opJ1y0vFSh}L{=eF@At#m -z`FNylxalev8eaRO=n=We!5ieGyH2Gq3Le|^aAWe&&QH+YqsmT$+?3l2x%36eXF!5y=RIhdz5bqE1^qqb!GB?Lu{*5mF#teL!7z6494mTs` -z7Asl)0tWs*7J>iVLxrt4UcYU^IU|G+t^i5<@P(i1g+0j&Yba;X7%Jlh#0=>FzR`k! -zYKKV9LzfF2AML8d$3SsAu_&}T@d|l;H05+E_{@LpfCeNJ);r_^z^7rCP3ZlXAa@wu -zjt$>=v(kWDS52*&Re841rO6aO@tKN4MV3JT&p3l9y$OWX?-&S|uzFRIxvnm`g`kJI -zu9?t+Kb)`3rokZa2d&~Nx}d;tSpE6&XrUdK+t@jyW?BmU^*^H)DCsc6j{LbCq6<$O -z1L0Ta!km}2m&ow`H%Ycx$82o~jTVfXp!kyqNYT$w_0QbQ`$)~h?9SM@1P3%u{uTQm -z2UbA|y&_~uEoHVt3vo9KK4f2lrWX&V}Dru!nQ7*6!kM -zT;YE9gXO41A&`xXYbv!g25qv09XMVV?j_;7q^JQ2dCpHQXxKTjyfv-Tdk>`flqd%7 -zke~4Yjg}h1w=DcQ9v`VffzPFx%lGgND(u`e;WLC|+R%hx(-T0o0VxuSvaYfl(zBS?%X1$uOXOM9L`35|79ATd -zrne49X!?#DNMy=w(WJ;*7Sav)onRTs@*!xX6)emsx&==Sx!kornzr9AWEw7j5(U=p -zk?&4)Ha-dvm%7VSpc9fd?9%-qD|`g&%Bc)BtUGRM>~9nWVIuLf49LTdJ^hEacU>J} -zA*&cFOMJtKf+kc5`vkqLnZ$*>&O$q3Y76*55N=$CcLOE1A11^>w>mFCfmf+{PK_TWrlvJOwAQWtC>JZ2*0eaSd?v1K2_=g93Ct7xu|@LLu3}pX%Xu -zdruer2{&Q<%?hEMx@VPhSfz!t*D@;PLH3v;iQ -zXo8!j?PF`(eQFIbKZX^aBtq|+ac5Yuw+B7+N8rT*o*@1bfZnAXk5QZ|l4j@X1(LDB -zE10}gd$CmHJ3zjo(N^PXk=oI|3~yokLQ%oxL2kuU%j4HxR4u1mDQuUpqF4&Pli+?N -zHi7M61t)}^b{Xn?)G4l@y0veElygnhf(L!I5Bsrmh#R_pFQT4C{>I;tVkTPFpbhoV -zN8?Z#R#WCjqQgXSXssDjp+RdLe)MP_Or@X`E+vX+d)N8;LmcV@$sXoyu>93RZdF_v -za3ymgMikRFmhQ9oc8+iq8rmKYGwULuOo6fMR7n1QbA~#2SFj7CVGWoY5fxtG@wDv8 -zOG?N~F>TOzc<_ICXr-;4n*plyuu|)tb>3xp+kxp?Qrkd>C__y_v`DL_`dw)9Y;^rn -z1vAAqY6> -z{6w-NqrehpE}ut+a;Wx-*_~TIV(Lel;p%Q4(Egr0i6jnvAvT0Yab|w4jd60MjR-Uk -zqfR$vRwUP&i%F7DCZpDMxG6*=A!?KqKu)+MOX@#RWf^rXjBx-$-rAY^=kq8p_6OsLGP3sov{V6@5uLScC&2oD -z=Inm^09`M6f5mfOpxZ{fO(w`5nH4Q#DarI@rKf8Ib;pWf%}a?qk-O7Gzh%?3);76|Ltf -zEDMJ`sSj^beDo3yGAqedg+yt#x_XjhOV$!7y-ziBIf01Od^B!BiWC0Hvw(J8o}++1 -z(N3ie=U>ow%RD!lE!fF7TsXwsHZ2a`eldHguA!x$uuH8ES5&2q|I_NhoI`;-jevm- -zl-T;1(X1@SoejI}0x0&Fr^7W|d_li4A5)G9o4#$Wu_ZR*_Uct20s~JiiY+ornS4Ub -zNxBKV0q%jeHb@Gpo~y4NSK^G^`0=(h>*? -zqS7_y#*~iY=6+$0GzkmIJ}d{A=4_`z7`QU?gU%Bv&M3+ra~bK&bRcdW!UHr*l}oS9 -zg;e)M(NyA=2f9>i^^Ko3S!HxBXb&YmeE<3td7gwU?_g|`Us~|eL!t1HK1!dA%|2{a -zp5^tY#%DDWMS9Y6$r_wR@xO!R%xIcdX^D9@4O==7DXjz?BwzkL-c#nmyWh(K)a$XHQ#*BV> -zRYjYT5@n9J%w`LOBV68OOCMKEH%7A^hNq2->t#%7oY1&5#NqR -zBipNU0D>~>LGCp22eXFrVv<@+Zrfnk$#q{Ed;8dDre=gU4QuOkof$ES4cO~iwLy(( -zrNE3;uxHbw>4Mr1k#1%Iqg?O1MR2o__dm~eGV7Rm!0u1}RJWd7_ieq5VG$5B=(YID -zb)-?WZb1I8dTKiB!!{-+epYZD4IXAdJ%q)440*^GpnQ}cz9rd0z(g# -zst35i>Fr6!MjDdyGkjx3>i4NG4}%_5Y)ZvClEywvW+_|f50O?_l~VvMuFLw+ -zPFL_4=mA7s5l|#oOJYI+HaHj?nOJv-*$!F4h~q?mu$Y+?kSw&PE{cocYleJMjcwT| -zA+8+Okl+7^or$+-q|MkqJG}K?vc#3!l{cust$W6HktaZRO;62KjX_lay26q!0#-sj -zce1ZYw}$ET`;{F1U9*R{r5@b%y%_=FTVs7pPq>M<#jC8$E5M_Az#(EoyN|l{+?LeE -zrKthgB$W=aU_y~e9ohc{_@SQop&YmevWsX`_mfiUI -z^;UQn@Ugu589!-I(3bR2Ou#;YN42rUr=AcL(A@OvhMnyu26XVPx1cwXV%PD7Q#rSQ -zxZC4C4y|qUB*>OgW@f}$hNy54m(s4A$TW~AX -z+S$N=fp5&GHzy3#wdl^^c5icLKyTk+8Tm&F2y5>0uZ|$v0ZyuLk=Y090+tOyq->NZ -z9;UxP<6nZr2WC4xQVyAa@BIJ^M9^^LYm8F)7+|Rd^pAL -z7h3bv?I^cAT3eWPsjYJYga3edkt}Bm9c;TjtVuXSWM_`NplI6}wIK}VRc`dUGNDJo -z-ifx9eO;|B1tIA^q?Qf5b=*KDj0~Y#Jvhs{icaarlx8xjp4!D+-vC-l4cLS&-6nf5 -zFK3MDgKX~lfeq@aSeZ`>t-0wz3()ifpf6X}fR%w|LejWh0&9a@@=A2>NCmqN`{zzO -zC(BWJRP$J((dh#~9G5oM+mJ*y0dfH~(zmp4-2$ll%wo-$8+oxrVJ-spQw{|$3zG8a -zRYy(D(c~+u0aIX9lnwzlrMLAvMxlMZJL4M%w7vzjIT2rDv@Ss}V+MjOG| -z%Twydkiv7fhm`? -zXzsR*fCYGsfHR-mC-;CRnS9C(vHKPazyxz^QRuzBe|>-1^nH&u5v8$1TgTygK`m{q&4nU##vtGdxEOr(1cwI3Sk}-p| -zWb210NeY=)Xbw9r-!90~$#~FEK}oaAwqDi?p5|!usmopEXm!UY)5UDca+U$)7q)vy -zQmYJ@xeId$2Dzl$K%7vU@da#oS&PgZKfobKIIjK}lDq8ZXCM2vZnMsf6{_R7dnx#?EP)LKf&i%{1KLOnZ3lchj6t=C+tj_swNE({B_nK**-n>A8ui(ue(h&|CYsfmXr -ztsLB01`6@pQe;YGnZR+d`+g_KiR@0RON~slCVQ~SyR>i$4N7&3Gi_p9YVdGS?XUox -z_7QR&f$%89f6m!s1-ism%Llhzd<=B~hcTlIi#@$925r!6zuA%tdE6%{4j!fp0<0(s~@(j=RbcM%7li?)`_L1`5 -z?S9swHMoK7-LAA@w3S47o>!Bbr~N5B16Y!M17NeY=O!TJjIeC3KzHV@r>gH@%X7M% -zAKf`%rp3O0UM(%k{doqQJtyE6P?x3;ycW;{?K1e%5S#{#Q;tngNKCCgv9{mDkOJi8X)lF3a!-70ILd8EoP0iT4RrU@bszqNiWxr~Gm>YeP>Yw-6?kdiDh)tBqkKTFPC@mPK^-6oRdJ4Cm -zg3`0?2XlFzjZ$T$sJAgIg^8=Sg)t1i${99K -zOH7@P7Ef%J@Fd%DN>swULorn--*sg58??X9&d4z!Y1T*zhYsXpM4=XE1>MpO0ky}n -zc8UdMqr?x5HEztpO_CBx#%L5S&x_{B?Rp}2W2~bsLd<9OrLOTZ0E<;(fgEzv?Z*lB -zfh0iTs$zODWKS4x0ebAG@l+_0903-35H(_0AB9L@X5l_;?K~*ZyTxPa4et_=aa^Tm -zPFwe}(N}_evX)5g!vs3i20B{#Bs2l(I3dAsNIz7eKg6tSM=^^aAN&+_O^M15$LMJ4 -z_VYa^os2i~W8jo$;6DExrm`FWd48gUfVO$xOvuqAR~Pg|i#fO~IlQ9$6xI@3f_~;B -zmjX1A4FB~boJfy#xnqCSH4g{0g?XGbwn`(+*jkwrWhcuq3&pzeO|>4sNH*_s%28ov -zz>{L4v3_+iZ^lQdSMQTsrUk78`fuG&hE>rVM`q1~(49BJ-6MlG+!f*07A>E$Iu84k -z21!ErTpgVLx<+LMkoh@IAmfYc$*oYQyTG@O3_lvIDi7WlR^@x0%v^2;ZHnZj3|6xw -zBP1)ECRJn>Tl+Os#wSKwbF3pa?;dDM`HT_CQ%>D!-qamYZuHN|>2uu-AuTst$<~PM -ziLNFjoq-jY4VIi1nTVzhOaAZCf|jpw)1#RjR6l7uF?$BYj|ICv%b6&kZ8J3{*+Afk -z29tiS(+mLxy+^kC>}K)@6ch_$1Bv{bxl96bn!?Q5;k<(Fe4gN7*c@3VIqtF<`pZ@f -zQ_0JEP$)mFo)syOIT=w2Sgk^|qQ#UVvl|M|!F!Z%!R!?qyc|ZZtPVv+Hdu+V$_Ruot2~q_lEgpCSxsS6bWR!L+u%J6yFMN6b -z_MKw`E^qxX*eY#PpS?H!eVKL$T3o(eicGHZll9L?=A^eo36HZ|Q?Ys+=}AsUp5~Kd -z2*3%gzx<71M8srd>=4N3D|A@qhlZN7#wNi?vbJH;zCEy;*t^QNo- -zES3v3zs6E>$d;B6fS0jhbl){*Oe)9s0;sZz7YsiZ2Y?0T>3cf#DK=Z+l3aUTwB%NO -zvkey#4Qs}_;)uK%Y{?BiYOnn=B%Xma^V))IIyvpbInEEe26 -z@Pv?6MpjDLY5eix!7}AD9=k#>8%qfc5=!%ed^0$QUu=|`0gOAIhjyq`Fm#&513WwWIWP-!DwOx`i`wny` -zholxQLQ9**!JyFF!&#y^!$GDWfrN+3OWINuT)SI0boRz`+L|8s^&X53g4OnhgWGt| -zmaGRdk0!j|ylfld5jVvrW%kO)f`f;}76q~~sC^fxZCNVk!UMTe2q;tA^ou==;zjcpwX3MZR(YDm`8ZO~kSrfo$!4q5Da-)@afYVkj -z!`zRIc-&Qu4>B1@ORt$qzT%=dHZzL}5q@$5KArF?JxjrBp`%rVp%gE|@dC8e%Vvx_-@B*ppGe?GGlLV!y&l#n3iaY9kdF>eTEJ<+R+z7Co -zW_$%zd64Qb_wzGU*q}K$5%c^Spn+Xp_<^U>8Oo)QlNeDu>Mce0NW!$avc0g~;=z7M -z!$M4!A?P5Lky_OelaofMpB71W%c53E%WxEx(qazi-P!h0h$jolmY0v -z4sEB>kdRjhb|tZ;ZX!5OXqf`kc`EQ7u0U-=3u9NVbfgHN&4(6dO%~7`rT_|%pG9z| -z+*}v8o3Vw7Mcqd$)>jmvAMgOpGmx{CGX|lRBFM}UK@z)ZgqzkI2a%N!#45XPHcQbL -zjb@w-=w=7q5?L+71OnLrs^RkN3~(3+MxLBd3A9`gosZ6x`c?1x -zZzIh~DR7^_FQE3#;k*8c1quY?WDAN1ZnUMkuH(*3q-)HObqYS%L46dE9X!Qp-!i03 -zJkFQyII&JJ59Xb!x1`=JQXA^aAXh4XB+n15iiQehf;!RJFfUu>GlJfgbyfdtTH~ -zau#z-H^Z5+bi4NNc-!73TCbtSvC(s5hTtP4Q&GA7%8>dmkIy10?ukpEzvksk_BK&W8lr -zl_RClLkFu$VSDdDN*cI_^(-fGTh&{UBVqoXYE~5u5BVURxHWA`u9=Vtea773rD+`2 -zr5E6e9&o|J3m}RKPpcO^!NHSl`x?pD#A6`$NLiiKj}cfFZ(fkHP}9sPY<44H19C*d -zjcoWRW1DjyRzxO4e&13Ega=UX)}xCV50vqPR(dd1F!i;rX_frnRzONEzT~~Z&|E?d -z^OuML(YnzwmgPoG=H>o31R?;$n!kjEEFEq!$>>`@*5I&Mdi4kSPK&M{ND!Q6e%k^D -zT^XBbPZ29^xX}^}H?UBx1p%-I-Fbt&fr|pysHTPjkRCRhm%u+?f0&7@;M>07X33wM -z(#C5|#Jx^lG8kv>pu8pngvJIR6y1n?D<0P5Z5~B_OhHcwqtobVY}$eP`tq9Id{Ph- -zYG?D)=l4kHZ)R$ez7cu1L4)8eS=0575MMjSs{`^{dFFC)Qk;Eo*X9J3?rZRQ9Fk_! -z`J&KoI|417-#cg=bGi|$sK{Xf^1836)o5-NvN9`e06udfsC;O{zGl=H#XQh=M?r5a -zW;qR)(I{~6iA`Nd%gi@)i#Wo(m#R}80{-1P8MiQ@l|r|?(A=4h?GjjE+aOt-wkYCM -zvGS=I!))Ur(~Ra3A`}&+x3zl>Ns%64uC`r^T+j`MC3i7l`@2caY1Zs9?DXBZ4oA?3 -ztd>`~vNr^O5n;S^JW7LgU(*i6Y5b5&3tZuz;=|#G%O=-!%6G$J!!V&|ty4>B#U%3n -zouT*uxom1jRv%FN2PJ#*P92mLo9?iHQvm!JpMgF$SG&HJzyr{jO@aA)Q{f_L@e>Wf -zo2}nDF~4fj4+98L!G=OBX`qz}q=TFB59Y3%ni|wt8s#K(*q;b1#FCLW79SaTg)Gl; -z?y})1Mz9u^=Ul=gc*g7uu0aJ+U`5RQLbDVpHP8(UiDWEhyT%KK^9cR4#tn`Qbevsv?_d$W-$|h_zUof)CsR* -zs3mnSNatc$>(HWq8kR8=_cnn;lvN;){1FxgqXdB9&d$@rs*dQXbC-z|=E~oXx)%lQ -zBfOSll_5u(aaQLF2snT1r?ZAGtkM%u3KTDBq@hL8y4tzyT+g7D1J+`o(ZiEDIj|K7a5bkS38%_y%oVep -zHu7Ji^nlFUMF6l~{ResaY)Er&cLJZHEWK$wkXUmL5Z*7Uh+{Y<4%7#{yVPe9!&(LF -z$tc?Zu-d6NNjb7n7l~%BDfZx@Fwp>T5GP4qG5NXza@TR&Gm8|>NAf-la|dWQ9jAO4 -zkACpnfw-c#zR;H-TY~Z~ZRDKTBje&gJ6Z)vaD)6_fpEgJZc$+!s1b?E{r@2xG}@ayf7E -zVm>lMQ(+3mAX}xuq|=n6ye-W?z7}G;*fImH%|gs)9m0%cpPijN1)A|iKgE(dW)Xvb{jkVl_AHj(&~K9xg?ZjVL=FPt%!+?sn3{Kl%X0!r*y -z_EmsLu{LCc<|-IE**M%!h}%Z&j(NKVAH`*imt?*MBhZ(dz}rtqP4LD7=o?DDI8&o7 -z1d}BtU8dKNIr{cqv-q4n=ZL+wvxYrq3DcdIHgxXoU5i;@dI_v|!)g?l+!;I%9NMZ$ -z&Se6$*}DS*@0vN(24it_@~6gtfY?m%rMdTB1lq8S?Z9@+1DbR;NmIBDz}uTkLjDhI -z+s$h#z1KXgV88AVMa@V>Gd)5EWORcNkpQ|zH)KrtltB>inoz<+rcuCLoQmF%_-V4V -z7abauT}B@q1{xvjFcJ71r-WqV6N(7*P{>3I)zaUpCHE&RJ5IPXUeN;5s}dE`69N!z -zE6XWy&7e&oaNn*Mq}m?cKZsxi?A)u#{~GhZB# -z|97A%w-Rzq8^;FRfh`~kzPqE4LsawwI0P77WRD!w9Y_#Ph_?9<`EeW6o~dRuxcDHy -z657<9hntKb1HLX36Y5C0AmeHVdE#pXFjjMw%e`m{SKCs>g>{1#FES#N#}xse*h6?p -zaije^2=AfHeB&dM9t-!M4)AZI$z#feA?ypxVL;!DT5v-*VGS(-EsL^))WL_CU_Xjt -zB3gBk+|f?1zDwZqWmBXkl!6qLwD&bnD+))*F`A0boL)N=c@D3t-haHeWO|>3iHtyIkyQeTR5?;QYQ`EUMh@vJvw95!jAbM3f -zSNL4av+1sypX(kk>JUvZ_L{JTlu3 -zVi7bwEsMKrvO~NVMKf6uz;18XeXM-yX+jl!*&rtf1;3B%IdH`s?`49pmyI5c_Ngf^ -zS#4!`?&j)JTm@&Tmqu|BP1xM7sk>tlL|}}OwjB8v8dbHl9nw%1$x)9`L_ma>*TCqW -zobDHJLK;g%p>{hPp?Sa7I|y{vZO%MNeTT04T>E9LfoG$bh$C~^$mM)24yjT{n=xQR -z^Abm)S&f-(yvEipun9X?&&hQ}()@d}~uC!Pua(G3|ztsBhQcF@;MN2$a$t -zc39RM;1=Z#N?q$>U6W!RBP0sQ>uk<9LtI -z=hR2cJkAl@$mm&nvn!y3$X&1tw|eo|r^WCB9P{>9dVHSrp^br+c}y#eOu&`bci0Mm -z$P^!9aDxM1W!!rTZ&FKJW624F?__$cj{v>EmEtEdX8@7{1uyg*!(hFVMGA}V-t4tD -zKmu>h{0?RJ4=h3}87S{bP3^<|cdbX6-_XxREr+R9&^>i{2T+^It69rR`LHeUk^3@o -zBqR7EchVcxg0#I|3fUkzO~x^ZCT0r+3HJ(1-T>_vt|!U(t;UtNByUjDW7Ji=Z=v34 -z?rPMMuH$jBNhrTa5T7XZk(vH%peW)f^8-$@LIK*ana=b?o-cbOLKGsoeR^!5v07a) -zuBWh(9nsT*EqJ}%Ezq+C2;;K+`5IJhhbJgf4=V6#HjmR8w1Um{S16RkAmLhu1*5!-LR^4cQJ0uycT$Dq8oakY-fB8OGiJm#ix(-wV>#S!a>0y#xnYIJHL7Wd|tCU*5Cv5OdK~l{Ov#UbN!Pe*$<{AsM -zNMu;lMzP(NBwu3vE|9>Q8IQ*aN6X#xpQtcYkO{{eQP1-CPTOKRvFK^Bx{ztya6dJf -z^ldX72?f9d&=R;ue*}^QRMH_iA?jj?u}`SBa~deK%LK4kalMnC!AEaZj>KxpOzm<8 -zH)AbIQ+xJu#gV3Mc~RIib|Ng05BR;Y0sV+>B!FL!+E&Es(da&#EHrR`Wr{ofNMv+d -z$%)c>rwxmop8ULp5#!W!8|is-oR~|v>{MYdp%`oNW+RV^wVEt`0j-uSqQxZ2vci=Is~C8vy>FvWG`}7R>~jr%$%T3QF-4fiTWrP~S7cteI&$x2EkY3sQ6X -zJAV)IIgN%}xtS##;g-2lnHXzkcn8fSa=*{5c{vdN0CGGR)#$!Zydmeyo9gPc+*ik1 -zwfl6{WGW(ya(niy2{s4 -z%2;A2Tl}%cj8!G4qwI2*{jux3-(lHXa{HTd80EbM!=AckPKyQhKCs2nf)j6&^MTv*)ea;UK!KU7Of6xYW -zk!-Gb6e6BSF+*;H>H$q*Z>!gVx6W9Z8)sjOj3^UWQWQK7xxgvLnO1f1_CoOppF-H{ -zxvfeN7v)6S$awf@!;nGoX5}7E&8@N9;1%AH?D%k4H=$=P9qlXZpvtCV+9Hkg;0aMuj4aGk$7?JG@x>d^Y -z_FK$!Wno#yP?YwUO`cY6m#Pwcl%{Cb1??>YRZp6;HP_BMJ^?Y{(cm>*qxHuIwZ-EOFt@hk{=d!X_i7DG+y)l$9wdUk6Blpw!~9AfcrXlU?LT -z+_JX)1*ey;L@VM%s+Z3QaDRXpjbdm3Li@q>46tIL^!wWTqt{EFn)Qu4c7I^fGv? -z^MSZKHD#M6VmPK@5_*CaHFaw&f;*ZRD23FogdY3)MMLbM_#AfU`KiI*wp0kb9yO_Zn*Xu%CgX{29sOv?<7XhWY6zu(lHJ{X86 -zEtn;VA+7cmnlIh-!k)W#ft_ -zc1Sl(=CHUAChHcSltX9>9%q{Tk845#NP}2r1`=ir#%QkQ^QcKlw?%z=WK2;+d?nNq -zep*hxk%`Zn!$7w4D73pG89+Sy -zVN@I1;;hVo`sfdO;4^xz%})yhD+(A95t~V8$YeuAJ33RNb`(-8%9O8()(U)>QlUWr -zWmv!5eyi6iC9PA|0j^9NG+|Ai44CY<#ppHkVHRqF?B*}hPK-+_C{xhoM{$Mm#2`1z -zM3D6Dtsv=Hk-v7^iPRP%Qs-zh|1Sb%s^ml5Az;YqG8(x>Ajl?DR7m3v#FCToXg03W -z_`;ZFpu2=D#qL@Rdp8^nc?LtTIx^zTfMx(Dip69UF!N0TI^|`Mi7XKPSm&aVkP+jw -zQ{$>eJ2Z{m?UCt&p#3RBdFD|w=)s2}#K>~rqz~OmC|G(G&09{ThtTF0meJHJ4bVJ0 -zpnIm3$z)|-JcV}&s<=>g@ruq*TwDx}U6?e@J1v0KKB7s_B5s_}&?Sd}zlpN}O6Xz` -zhc>WRxw?2<095ZCASgm%Acl6O27n_l0r6i!)bd(l2#;!be-Vzm;hjWjx&lDXQoxxC&OBO?eqLSZj6xRM>$n1VuQ%o%-9YU-J`YO9~!b#R{tn -z#?BR+cJE5&iXTmKp7-YslHnl;r}rWFun681v$FraTX|mU>243Z -zASL^qKzE@}DC(1TCghE|H%#sH)R2cFFrzfDS?#AvRYjpiZao&s1cq+V(7FRh7XCQZ -zmAFfJX%1T^`Yk~_Xtm6F5V%oD_Rs}sekSkAQ -z>%=5q5*wYMI=LBjpJhgw*ili`6fP?!BPtqEXz3u|CoU0BuT~335YQykwqOwb*<*cN -z1C1eMi{R)dIs5*js> -zk5dLpsC$uaQu!!R;QxOA%2~l&BbG&ZA_Kv~H-#+qqjd#$3yT-cDRcM(Y|KlCpi)O04Z3B#U?Ajb_aLo^* -z!Ow-3M_-FhDB@Ox1*N#f25nIK2xGbqOarj|U{TkZ+CL-EL4;^Dem&&IVd;a)%Jr$b{`%zbVvTRjUrG6t1adGn>z0Ri8}YTid(S&vE9iMb(Ao^q|0b-27z(R@a&V5gF(?y5)Qs9Uje##u^g-6_?NqQIF-P*m|&QgAV2;48MBd`_$z -zP7NU;nZsgXFr>SsNVLvXLCjpbFe_Zk*-&l{%gs7?wSV1QQf8?eXIc`AwG_o}-hlyz -zP1(Vo-ki~Ah*d&qd^#|(gHEJJu2@GBnwU3{PC7Y&ygwXFo3t&-i$d&MWr5hO5E%@P -zx#U7ilU#{~Jdp;(yl@B4^1Ky4+3Y=-^kO(xQ_` -z36-QgT;&y~isNc-IR-+-2XKToe5wX%(;XkDrTA)UHi{WF?QD?Jv}2PY4tt-Iw8lXG&6GhG}Db_JGX1=nj@omYHff` -zTn=;E5TLKldkP#Ca_`rmqyZ7+eX+nwd9wqOFJ13*U-F7fo{KqWjTm%cr3Ng|@hZjw -zOE@CoM4sSX7sB7^auAuZiE8|Y6;ev`)1|!hZ;~ab`{}n$1Z6L?ELIQlcfFHROoqEu -z68{jAa_nVC;Ph*VSE!B5-+ds5O>Ul;eSlBir~=z6%)17t6{i -z67{ELnZV)g_GSO_L9yYHJ8wj)!a9&yIu~8x6NPQuc`09l_(4=iiTvUq+W>Th&L70? -zIaSU+6X!;J78~#WOg=W6ri{)CbkT`Nm5mCZ>Fuz87Vs0GIGH#>A12-GlzjZQ%okG# -z3U-EUJSBW}VVBs{4wUwj;DhKX80(pqYbYwuj2;+q(GM~NjoLtFa%oary9Ajz8Vw60@P^~PZOk&rCvw3@w9 -z6nc1mqDzuYW+D>59IR(1IW`C4ARa&cPK$;97nV^*IWfT#+soDYRSz!Y0kV!uyy5TvXB$5>C@%>N*cBTaLR; -z#8|Nqrh)`|+dHyBSXb&*@!UWa4kBB$hI7Lz8ArGpQZom-R#Q3>b_@8Ggmyr|EXqKfxC -z?>DCZlT*f~KumDfWXb?@fFDiCQ-;))qYq%ugh9x5S7hL>qV|pk^o;&`M63{t(8*SA -z^Z@C3WWgIea_)dOmzIgPq)7Gxk-;K*gj1ur0Mle|wfPyUx`C)lK@D*W3lM{gakg-5 -z#YOO5%AXy(VO9)WHfR&ej>8nE?-bEbG|Pgsy>AdTK?&_1ket0U+mG%a_4SEy#n@%21UX|KZ&OJ78je#y-Z5xyL_zy9eWD93PIp49M_s80%C4HCboooGnKgoow`E4kwNL;{oxv1tnH#@xyimMnG#uMzRR<#j&;>LzU1HfyTf?I)q|)05B{oyD5gs)!k5&p#_goH0Sxwm0CuMqUT)lu%+`u6Q$WF -zkf$*_d6V}`-!ry2U*!v8VZn&aDo|<>4sNmC=gitgH=WXtVx>7|49!2j-Y4#SV-u2D -z$h0#jd-vS=7X}s?ur;tz_Zu#`p9{t{aKR>{L?JUnJK1AAHszLq -zQ;#CF?T+9qMrEyt`6V_sO%WxN`zDfr0bR^i{*e^qat1U@(}gQMNrGL2MRYt`jgt{I -z4R;&AP|*)9&FL^5nTmyG4kEcWBfKApv6oCw3`9g(-a~F%=5|WFq0zh|WAuUx>+9P- -zbDyY(#XKngDcgSs8o$A|?$Zc-D(r-L+-l5-t -z(&K7Il8%PV*9suI$GMFpgYt&IN~0ALV3xuDAbU|m^=p(E)%CK^k8TqEkHe~r(-JME0x&r;C>_K1(4sra0Vl3I@MnR; -z(o%9FjdQB;C=Q1cMVhqKjw6m`LJtp?d`2?MmRw^Q4p;N$-H?KGiDA8`?G!2IXqthf -zSbpXVBQua?s*n+ZbQ}$fh$U>>*9>S2knV3wZ)Ah)5^a>Vj{5`FXdzLHZ?i=KcWh?TEIh~bP -zkO_~{x`74SOz}{*A=(Y-wqHn<^jY83-T`3&btPwsYtyG7{>n0(WPoOGPnvu%;f3U4_zg{QeIED9zO)SE=66#8o#G6e2!dO^Z0OF#2Bs6IGnJN4!`w -zbg>jrP3nlF1Cuf3s}a4{O!!_iVxg2lS3)brUh!7}MD$RWyz3W}1OyRCe56z^)_|tw -z!&3z`cT)S0ewX4Gij%7Kj-L=F=?mDH}Xl|4fZCKu3HzAH8m?&R{!(azY?#3Ubt1z18 -zt}^S~bAA*7<@Ds09jl_fH3gn#3tb#VODqc80PkiIRBn1jQEd}i9j9&( -zs_E+Z@s*!i)1wx`B@&9XN&_huA0+C9;VWHdv>y0jE?p(O@bl -zs##YHXK>ImVxA)ti}XtESB&yU0{O8u-zYqrDd^qG(U`&Q^!~R^WLD2Rm -ziwh6**$(bp#qfy^2lJtNpYR$HM4~S#?}KNOl2eDcgFw;4hmU)_&`5mF -zO?kx;E#16=Z8yL7=s3}Dl10QCEGc_M3&c?_S(Bblt}JTKV9iM8l`MO4J@RBAf+|Dj -zKkkGr2c<>ZmpN^mjNuB;cb!ng&U1<`3hqp;S*G+n3dDsRq{cIVhge99VY;5^D1jxI -zXhT?|IVXUGi=^R)a(J*)G;wt$BVH*E*r$SK6-Fdn4J@hwDk{YY-(`$Ts`WJ;I%}l= -zP|cm@+)kRjyk0Ln$u+GVXzN0I(#DzSmWvv|^sfaLux -ziFhfmEXamHAsv}*^FWyM4L}wPIH3Z9y+Sj$Hj0Alhh-IPty+=#21xFy=X|7?a07DC -zema6x<0e^A{_Gw5k^Cpp7!B*Y@;iW{mvhzZ<#MrrlMLfNtq#NL;g~~t9igh1gs?EN -znzH4rB7A-j9(W%U^8%9n%6&URS_bvaqA!Q>&?VZ9djlCBDxCFVnO%8Fv&ca^cy*l# -zuxp>dwFwZ7wmIhxWLMMUDT&P1gVj+qLrsQam-xemnhq>NakfFNTTwx+7C1g^1sW6V -zqJ_||J9kjh33Cq*8qbv1e>R$APjo^hqex++JwkbleHTA+Qx!T3Bz0|0)Ok;f48(-v -z%~_hWJVw(WrzzVdCL<@)?d$*@=bPF3WiMB8w(P=BN;gl76!d(niyU+RB+qAWO6yUF -z)C=&~$};arU$Kv5hKZcx8u#h+ob2;XNU1_4#-%1qj|5peqm^Nm_|mCYp#n~mM-C;U -z|^O -zHqEENd{~Qfmm=p=4?S8~R;S`z!=oXa{!Mn>G6WZ@3CBmnfuL>eQY+3vcL19CNmG1d -zY83jU8y7CllFfcXG_){mzVtGXbca@r6HUk;O~rB(^}5sS+NE{B^xSBis7nz)iz04ImdA&w$_n}b(%pF -zE=D%qJ?ikuz8LvCtI3u#=5s4T09Gb~n*!WU>w2dv^kN52Xj_=_LALhxAx~~&Pqm5n -zS3`i@i9OxVw(pQX6#hte%Y@iRT!d%Qc@Ob7{6^FI+}NpY_zU-?1G>f@8Cxo|5CWG#aSNA -z&9oejxm~yYY51yl}8Ravwi^F;B#vK^jIr0jvA{J@;?<56mp=YYFJnuxc?tP1Bbs -z3N*cN^lM#WFaqSeJ3s$5GpUT^6+wzsWG{aU>;oN;X)?lVDK<4KOdy~2%cXVZFll1h -zbcX6)sM#b7I%$D}!@Dl{NF+-%n0TK|t07AdVhz)IF$$KTqzefgkkE#nCh~{&HPPBqqMqsM#fk>W`GXzg17E_Bk0~bq4XRGNDUUR?FWnk5)&w<@%Nr$Ng^uYN!g*jYF+RDHER71vyVY*p~yyR*)TA5GUjqpa9 -z8koFc39aQS!IVXhnb$NRg-n~M(SAFxMQl)oN}66_k#tB!l#iR9O{!evAvsrx?n$fs -z;kd|8lzHe{I)JSVB#R2Q$#f}`v8p)PkIY?IYewDZoxL0jHdmk>*hS*9=^|Wgj6FS+ -zSsn=03^w7Yk(Z}o7^<)cfn7rM=MrsD91hMdA$cUb4GL~smm&g@0qU$L-JmcY1F|^h -zS`HFM)+53@PS!Z*KB^3gEGle)j^GddAG@{$~Trf63Ty_cv1=Ni4I@Uz2&4TJ#)WFHtWc`4InHijPH%P*Hnq_8V~XZ9r`Y8e+3ED5OCYN -z_fD-eWt#RH*|UDQNVAn#HT3LHG}nW%9)ZYk7~ML8$qSscnZ|B|!Uq(;63mWeo#RsV -z!vkDUnjr!8dqjbBEi`G_Bbu81_J?xL?FskCsVM|Y>0Zs0Hg0*z$b6w);aaRq(C7e5 -zfi}(znb8AEo(bblJ35VlMy-lA!-BuCxT!sLW;JQ_=5EW6v0UwysVp(r9!Zg{;C~#B -zrY{9ze;_$k9Un!}MHMv)^t`4(^InI(NyrK7R)W=4Y&=04N2PA4AqjV{TjO{ZM8mou -zFKDCvRh@|ybm|~6&9HG)^MZ)JI%_#=xzP--bhV5Sh&{s(4ChO}7~{Af>M0^IC*|lf -zrk%;GQ#&3U{i+#Qk%YjVT)hXO=qf>S$u(Qm1c4^VPR7EZ*dCiAqbdO0v>ckAbK)Vg -zuut`uPYi|9er@)b30DC1-3)y-kmF76TcxH0bv>i)eCbn!0wI7u%?{_(QwB^x;;kl< -z?=T%FIY@Db6dI0TQukewK48Mz%n8iwB3)H5icd*2rT`F99vFNHE5UdAios|HI{YCn -zWC^Dg%?%6qalmnDSE!FxlVpZRq`{4!#>z+YsM4UQOIC9-d2<* -zx?5mx7ur5u?h3{4NT-SNLQzUoM_XV0N?M3-CoLQ4^}vNT_oI)NCr%Fq?5%3rP?3V@8ij~Dr;NgAE9 -zB?d3M+tM(;&A8M0WtY|Xquv^`kN^#seox%SD^-Rj5XnhM6@(P*C>&1hsUH)E#Q -zgeRS;h)+tq_bwOQ86kOLsW!h1tFrk9~M6o3LI7omu4X&b@wo6r9VayCIh72f6q -zjdKROF`%XfDnc@k*rC~Bus}eeEGHNy;9Oxk=s6S&4tYvV!z+-1%W$l`%NCM+6Sd)8 -zM5w%oo5tDxr7K8KX=MOjkSBW1nz_X$lharIkXwlWU_oDb!PgoJH$bN^w?=J$X)R@0 -zO_~DiKFZbKXE1iUVi9U9jYvq2wENZEP3#ZAQP5;*PR(`W!B5KD{gJx_-x(d*1+kSL -zxM8`cA~(1SR^Z_XG1aGFo*sJQX)Y9Jz;nDn^eyRTB!X)UHrFkKOytHiX9_Y?>Lu(V -z*53i4*ocdhU+lEUw!%72PfHD*CS!7|f%KP8G*3P6hzjAA0qCQrvmu!!EE3p4oK1rK -z4cQ6>8I9=A_yEcK$|~z}D(SI`MPBOOLz=4(u5w6TiJ -zDl|%fZwJHxMWFJxN|~riZ81@>myOX=gyC0HABB!li+bi_R14}ed5gvzp)Y*2Ca}oh -zlfIS)6}N`M=mkD@mLf18Gl28clBhcrtPo|^*^dSN3JMiz_3c$=54r$f?1s`8k-KH| -zU+ls}5eY50K+Y<(vER6JN!3*tNsq4h^jK*P -zNa=GX_Z0}hmX>{G@?2U$5l)~ww=A+h_R63RwFSDdM-|{snHrC&0#iun+{6O55vvXM -zgW%XeTR9cr8At%hb!eTC>qs7_abNQg994>_>e|mId8-U;Wg9c~!C+uazPZnt%(G@m -zD!SY(EW{J!$UU|#+I;#=vXGoAFEX%kyX2%fxxNqgkd_F@RCFr^(_F}N1CT!qAay|a -zXCE=I#)(s2Xl1t);d!oTanl?C3&o_iN+^!$40(Y0D>Y2prq6eVIhXz?Yx=|vJ|ZO8 -z=f?B*%-u#|86)TP>&?o!HNIzmPzQ*A)xV<+{t6|L%wWkP$0f*R^*u}t;&Mz7UW_^O -zLvandPgdrcLDIuIarTXih%3CzLUWk~*WkBhvQs=k*@ts1{t?cNz;tm^y`MRR?&BB0 -zx0oOqK$=WgoWb*`Js+#Lpk?)F*fga6htjtv?*Zjq8l#3UTg)?3oeva-3?YhxbV6}x -zl0()20@-I{7ML$voGxN)F1}R6F4IikO&O_6km3|}Y{k4@5;s>sZWUR#s(*eFt^p*# -z`pNTqAD9d+v{9bVWb=7V%Cs7^Z-$~WtIaXRwK%L80-2zxBbRkC4I`0($QW?t5*Uw8 -z)d$vo0KWdr8_lF^W6eEtd2um;QKsiXo)aC4wj<$jbAGWqw0x9g3YR7A2%4Ui)toc2 -z2;{v-xTmcvD0ABp+)^n?F6o4LXT6+t$sGVUaC|K1G&`%$0l*uXjKh+5Uc230Y0~#v -zmTbo~&e^u5b`zp3;8!+^+UvdSk!SnrY#zvEvHDZV98$D1zl2|s`a%|=9pVFdM3*Y0 -z%|U!4WSf!K$9wfdXa=$yG}gDt5x$RpW#yKtAGq>isK|Hp`pu-@dN2nIJ{x)2X9^LpwQ} -zPeYp2*Z_lNaa@gzNy;+e$u(>r=rfz9U>#8jN;7YZUj<_mxnbcUd^CkoCs#sOw1oG9A -z?JaC>j|yJ5&)jgR{$FSsWzk%t=}WXj_&g<^D8ypY%{8g}$9R5(8^3p(I2h!Y&NOxP -zgeYxE>k0$6+KgJb9i=_-j*4P3R-vsC^zjeQV_8zjPu$IOWp2+*^EEmR>lT~Za^67b|kw@ND(Yj5MId-^Qm@S_L+1@4_AnB{@&^;*L -zD3sP1{@HUwtPPMyb5x8jhyN6}h`Qe4k1nu>CL!|UT?k@mgqAsI8Od#h4cLe_S)s4JtkQBu- -zAyQ-C#;0K5<}}(`0N?? -zcE&<`XA*fICyIHp)igu)(Q@YGtnBWSpr*#m&X9fEgX&cM*-mC6Dv5cGTd -zgK^iWK*+j}y;V%O{q@cnHrqCRIA=91bae>LtKRsWv-Dv>cY+SdI{o@r{1@)FeMX&( -z^L3ylOtbNbpJ8;BnR}1j7|=~d@on(DuB@n(ixkHQ-c8Y!MK{=Lh-{gW2$BoUV1Q8` -z@nINxa{uZZ)N?ea{Jg$qT0UFX{t!4mx*Jkkd*vz{d4u?)Q>miO?A~XG0I4sHt0(X$ -zaPW>ux`6oc^(m)}qptr&8j;20busqqdg^AI!(*KsWL8788Ct< -ztmwZWHv*qjKPtEvo{&(6I*5=%xf--`F0T|f!3@&lSzO$ZmO8mAKsIJZ7ftw**AH(l -z>nXy(aXiq)cvBY!B*p;r81KDGby-`#z=sPx1BC77wSf=C&`xP@(7(zIqXv$81Sl@8 -zli`^8#wg}PAz$`?Oe;r{gsj9s_I!u0&C1&{>)*frIQMp=j6EUwRQKFSqRnBb;L_49 -z1US^-4}n1^(U7|VMBwd4cN~R4m{$Zgpdpk@9^fKJL3z(kgQCl21voVQPTu2A!yD1)SQJZKlkF)mm+y-&rmP0$oKGw&Hl(U9z6LTYtI7Y@%* -zk0`3c=)=AlSwtz_MNzNvZ5bL6m7m`y9wY4FN;k*X(Q}VUV~t_b{KqXu3^{3(4oX?h -z*PVV;%ELx$2?Jfxrm7n@5L5AB_rZpNv(iAtoV4ZcVVsY}3 -zohfA_?K74EAY)ztnAv%b}&=!FLWiXB#`7ZtZ{-2fN5Yb^K#X{ -z0;o1s!O;-3;C&qThQhX@Gl$7n&>Ii(6#DX@z#7y!CuEZfr52jW=y#Cy$qs}hch2dX -zC#qabOJFchTwLf+T_eAKrh4;6Cv5Tu6C>*EKGtwe_Tx=DkIH!-YbX{DJ8kg=f)0vQ -zxp|0K4eOPA4<3c%&q)rwTxWRGg8qe8??p!aVzm+7fTYkA@51pWmgb9O0+fYje0z|4 -z?**KP2u}CYvge%3417NWjXi<&{`2eC#^wQoC{hC$ue{&cDxfQ7Nv*3`F?oxv=mw%$ -zONHuSV|ZF9622;$3RoBJK<=O7yx@7=<9Ax7_+4&a@aZzy&jgOBFy(|2vnx7Sn&qYb -zKxg5e!OboFIXa=>{IGzvf(z~lV>*D7;n;k@QB<%iPw4M52k2tZ -z9?nyjW|bZTQrxaNoa=p$^dXnf)9`RQ!?QetlornW^_3PrlT26z#Cx$S4q5V?W5&e- -zbaI13OrfrQfj3_;^qKI$6+&m$ -zOMFiN@)P_SFYH)Sp7s|TaQP~2a?6#b%DFx?hJ$uUBq?kMCkxyd+c3xF?RG8nmDsl( -z18kJKhrROBz?Y<`N3}$X7Qd_tyEKE;)gR9H#Crm_#XCWT_Id~cST-%xb|nmCZPoAp -z{Pa!m7~_C0|1(jTHDQHr?xV7S_*?-)+2Uwjm`13`y0#?E%9F-C`SnZ(vlW79)@i|CNxgbjl;H_>yP>f|s)olAmOlR*j_2XeU}2wPKbkhyS)G?R1f^9S6!Rie|r -zy#EU#!_DVh1GHS_z-I~+YEYZ%H`HX8GVxUcHIZ#fciKG;<_A21wV_LhtbuJ3W0<9e -zsT~2TmsZX)X<#6e`-lL|nfM|5dkCS)dSrdCTO104F0#YBB4q+HlaDj$Y`EY8FR8tN -zl=%@e`6TBK(>-QRSX5y~V_)Q+Gp_HBmbrWlL=|iRt%Gu3CBJ}7d4H1f{_`doa_ -zCICsEmo}BX7?;)pD+o)V*=}uE-XQ-1`v|#4gqiqILIo$y?&JC%5b`p&Tx3?;! -z)2j_9|4Xz=hI7w3=O0i4TgZ|ZGf9#pVw%Xe -zn5(_Ac>3oz(CPVnUC_N0Q>j8)2e=1PZveoPCRv69qv^4)0;ZT+n_V02GITn2yO(Y= -zxRA>rwrUrom~SJCbmd1Qx+e70)ro?f#)MjrwUOr*4xr>9q%NpFxioUxPOVg^W+e(l -zHq$Nwi*|+7lcL>F{-GPWjo@~)1=GFpHF7r$=Q|lQ&H5Vac_s@-q8x4I>5Htq447}#{!c5 -za?ePM(QaNX;jZ!>blVh>B2lJ0vblrjkg!UhAZPLBJuB{kXjI+IXd0GIeg#aT7}H|s -zL+<(!u2$dsi~DEtNc5Y+TjDw*OmEy;ryihPdVOO{M2jyXox32-MX&jW|DKclKmAWq -z0<|0xlV+5hmwcPp#xNaG{c7H%&!@>ya%lR| -zcWZda$I5*B{VOw&s2QiLnVK{`to7*@*86e8b~DL!=;RXr2`>TJo&lwz~?HCIy!O@If)n?gB<+ -zrk0h_NZ5-edQkKm?oxzt=@xJShRj-zoxdpQk4Iy2&`hA%yDXr;3*^5e>0nt;O!^G( -z1u@?UWdY9E>NDVuz{NO$dH*nv9omYl)%aG|GPl96V(Y4l<91&ow<6MQz@1c|f=h1P -z+%wEY%@xFK+9%5tV$JuMB~l3qi7pvlRj^=MVM? -z1SD4RTJzXZBvtJ$hl(E9(nLwsf+mb*`@!T32@M_5csmsL4PW@MY$q_mh0d*>Z8hxd -z!hYWSH<_#4Q;>Pbt-c%P4ZsrbzXGO*N -z-|#jKU+^!E_*n50qEh@JPIKeP#SxMT{T*b*KjN+uX7tl^{+nLG99Yb>SGmRYBY;|L -z9>9WJU%%TqCwy@Ips6T-)0d($k-J9aI%vbxOa9m+c_SdV13yV0M~#={^CqV1BW`I; -z^*&hJ$F&D_GX79+#o6T-p=KugxZ?d=yXePuJv_zw1QV;D&_k0C&pjK{DORCv?~{vhB*SAV}NN4<+)+@g}8kC3Ywd<%zK`Ox53TP*x0APt51!V -zRtEf{5vh?cv*PoR)F4IJ($+<;ttpYCH!kSeBhhN{mzqR9+ -z-@pFz6aOMYc>nS5SJ@;fmXUFaL1K4^Xqkr+YFJPvwOYfzXsw{8{jvrbgqr6a;s+%Q -z1X8cs-7l2WdKVolNXj@5Zw9QTn*zlbJ$~e)$$2{r56S#*f!w=2_YQ%biMIwLkKimf -zw+oaoN^$1t?}yQ&pxQBYx`}-mZ%1-^Loi?T#_qzR63kmbdn(9p0SUFI@VBcp^SWL- -zh`yVsIBFqd@|55;S=*n1<+-v8n)omk&d*e-kToa@t3(@#Yl&Aq%BiUzth;z(?{IwE -zmM`!BvfJx@7jSDCENp218k(2Ljbi|MAh@RelOZ?4x=C)5$l5Im%NT)d<-Ld%IpM^5 -zZe?P=>glv^bKR$l%cY+Hr?=Aoyfy<+`v0i6azl!Q=8R@eH!*#d- -z`8;_vhzvd|4TD9XSfXHU*uH(0<{taw+w<{dy@DeMf>U~lNc?L}Za8#o`JPy|p6u*w -z{fSHZh9oKtr#7V0M4?&S?<+u@*!egX5{yYbebI%-r6X(kB;;kxCr|B87rBF6bV{Z# -zKojUnR%Ug8O_x55(perleUni*GCvJ*XHA1Q#ylzDFH|s0TF_%IiOoIgTH(ST>2^>6 -zU3Y)vPn&qtSy|7S?Jf|UGkDP%?!NW4_56$Y?9@f@( -zz%hBc0YEk|X5o??)MgDq#;IDR=}r+{XN^t!mQJECyimB?!Xl7*j*U#7>&hyI;@-?D -zUhZKZjQdYm5BW)uAqC9~*b^FEl~?k7z*XBwH>vu&Jy|X-Hc%9KtRm;@gejQi11MN^ -zr=_P2EQNhAtUJGEbf=`zSF*^PTu?CRV-^Z}>~Xa$ds -z=0l_<&2E;eq6-^i>l24LU~6`v&yj~L1abMZKQDuSa@>(*_c({s2^`Fv4sgL01v7o$ -zJ21;?Oc(!hOtuwqx`|`IeIQ3PpgHLtmmL4-m0Ija(@4(z$2UAOYvNrK1%C@l1eQv+ -z3n3|=i?);2X5XV9$4Fl5(Bx?1Mn|A2mv6%_$wu=W)381iW>3E4?K7!3n%w+|vsWNX -zxRg3o!j -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 -z1OWv9h)i)2SDziy8vV -zTzJ6fx-1woY)osRD#~jVc$PA1Hgw+0_tGayjBJ+3r1>8`B^;`^At0;@15IP0l+1Ql -zWoH%>t)mBa+fKfha0}1CEeq-a0 -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 -zj>4}->CH$rW%DVp=8;xVrz| -zA^M>!kH>Gr<49o+uf4xAK+wnXzn0ksC4`<@AHV;dw*NqI86ilmzvt4%SN}gfTh;#q -zO@se$X9ZA(&R=X-jZYj{--aUMrvLtKJa9a9^1ZA4H^3Vv78Y>#fGkv^-2?i@vQ~M! -z&4L(IOdOz%gXIvA{?2YthDEGjCKTwchV>qg>k@5mxKf0e+R`pOtk1i3etT?V|1+^f -zolZZR%Ix;XzZ5$4LH&jvVuQN4Y`FK&8}VJ1sGuAvltC=K{y+ZXzl(8f)8xV~?8dks -zP* -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 -zZ2iBX7o_3-i}9-@%ezV9^F1Fv?N`NjtALD{ -z#0O0iuABnJbG-Kh9njNmu*pt2H02>$IV`P(coN0?{Zr*S(s+qSL+sCXwkXM>=EpDh -z$YpePRK*=`>vvbaA3Aa|pRB6T4m`n~<+e~}4O(P@xA@0W%cfb5W5BM2t*>l$K_ -zNZ84c=OaEOvq8Bvf%M1J9Z>ZDC>7^CC_0=*&g`PTbyA3ZF^uXN_4X@AFW$T^4{;ErI3RRV;Z=v8;hTO3*+U~7k^EyQpjnLzxwUOPg%WAj5tDuXvubM -zQem$#q}R?dt629b60iZ&XTh%`874b&Y9k -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 -zUEfp#T+DTe2kGgQ1 -z_ahXG;!DK-WfrVVB>kpYrhVSq;?dc=*Z5vky0w=#6$s=h^7vE70v#~t#*x%OVJQos -z``WX|o#?@31hBpF4bSrhk{ji;X -zAQLL0v;TC77_GD0BW}|HMAFwuvc&8tjNgih#|3vzt`dEU$MiN|*-@|f)AtVu5PLHf -zNU*eJ;t6kP_3Af0hYS_poq(sfTwU9QFW7mQ?^;Hsen+)Qd@0-W`}JWwuS0xqs!ZeT -zuFwhllRhn{<+C4U|M?o4p;r1ESLfL;iy_|9JKGni;2J`oo|LkGL7(uIc6Wpv@8Y^`$9uU3uNURR*VIUZ^2aNx^L|+5sl{6yU84he^Ywe* -zdWU~rrxhsCkCb0r!{c#~oGL&EB$JZ-`ZqNgEyYTvG3C<^hJH$X!fgKr$DE`2>&zI2 -z+A}dtSqEkuqqy`I&gzFHIR}aBPJ$)l5j$t%5E -z-;Q$}l%>GeqE2pbtFJ7@i{;K;^5S+*FH|GOIJX2E#_5j#;w%?zbyZ?ONc_?ls}mx< -zD{Iv%dU_*m7{ONGD`6a^5Nf&K-Y;@%iRF!p(hLB<2`TKm%d)KEm^O>mE9SkrLh+~l -zeDwR8ln~bTpP-wu`o|LbrgA=k83Tt;t~=^4dS#%^f`_tXj;!?i^*nlghWY^wRK)7@1fwur`sM5p~C5Y>j1ld;FA1_r{ -zbIbw3^7VcsvYB=GbG_l@Dj60#?j2@2K#IaCB!lqlo=zY$`cfn4_c;u?h=v+mmcT@Q -zu=*D#)lT(Ovi*Q&^`e~0W?Lx!Hu!67=jaQbFiZ2P3|*`@zTQXK$DPy%{^nDr{XlUj -zx>#6?nZ8Oqm5~oZcGdwTMe-*!D<;bPxRTb=l2Wy?x;zC+F#mKjc@iw0M7!pp|HNVB -zgGTG(uOZAlu$U!sT=IlV-)&-@i?8T6ndk#mM8kG;%DYWyN5VR^1Ct%yhx=%6c;1vY=;$h9V-hdmpYiOpm;L@CO<*V46@o+wS -zIXJ3pBOw0D4na1XlgHjpqI59*C -zkP~RI2jv*PUK|Bn^)E3@)e_JXuTNUS1MFHQ^Q&yCikC5iyeTUbs`L4jw)~P1-4>a< -zD$fL@T4lWiVzZJe#yV-kn!WP(+rRgHJ;QX#T;!xZVsm7(1AQK}>HR5P0l0Nq$!4Lt -zQ8Dw#CC2y)tZ6cH42ohw)hxDkTl(3DvA#1gYj>`vd9pIKrt8dujoW^Z^Dz^EjtAli -zv83Pw@2A6Rg^Jh#sSBG{kE$4=a6(a4q|0hcDVhTv|4$ZG)A`Kf -zaVx1RNis3T61{v)1GwLg2O5KPHgvn}qOVpN)bub2(fdcMh{p0dIvML*IW7bh>#$OQ -zFsb07Dl60C$WLWF;&8}DQK!otk9CZ{8@9$o$M>}!TK3x~B&2>&KMbJ?-4lr^{Bjyd -zQYe(6L#r`+kZmFvz?m@1F{Fn{NaUFWtRmyVw96z(zM0$w9@-bWDE>V63^*>Tj?XH( -z&4jL3vAEzE0>4=ftODWPmWj*HEi{cXV9H=XKgpWN;!=+`xuaL?coS@-_~Wf{M>0F< -zqY$`MNa$_e+-Iqsjmu&$e17jE9r{ypyY)0#vry0iCbEQ#1F^& -zOD#Kk-O4~l1s*g{$*t9`!!+Wj+*W!>Y|^>*%g~X7U5_CFD7yP>$}ylCdhj#aZ^Ds1 -zZ@@al?4<#{wfn%>%cBZDr2HJg=vSqnfCW8jdRfxUS-bCDD>ZJxzQ1u1Pb7A`gS{!hQuV*82>=!K#hg -zXh5{SKdcNSUz3L4`rbo9Lz3%+wH;s8NXXOkUWmHL^bH;uN6RqM1qy+`7tS#jfCl9R1oUEH7*Ih}rZ& -zH7wGz`VHU{8NJUmB^kaIe2btStw<;myjx`a_CIg!e}Rb9@IN+-5dX(6d&&M^>2bEI -zMO)djLwUU>2b*nddm~P3M!NBm)TSx=N|xNbdE5X!K*GN}nP7{$g82CSj;#sa+}9sm -zmi;$J!PTALnTNMGUc^e|sne@n+j2&*d-XPhxw|zj%9V{&EOCY;j{@x-%|J{`eJ|J`o}zS9;$~ -z-!y94{$t@|qrsj7)!7{oO@L76beg&y4YC><4}qE6O%$RUbFOUDJZm7U+M~yQXhStw -zAdge!sye8IfgdNq+W$Lfxc+-s|Kpb4=s*AOwvmlNkN6*$-2WW{mU`R&Az}OSeh?>Cbjef6i_C^S0-Aw{+sLpU<_GXJUCoUp4v9@iYC}oxk*x^yf8SnewLE -z-$VX0zK;gPkNoAwoKCX64O_m^?Roln$Uk55&EE2r&qH~4uRN-2pU1HnfjrPn9!HqS -z^t=3aeM^5<{G-$^qbAcT=CNg1t7!H5TOhBmo*Cs< -z6cN1pSAPBs5`bZ{F%({)gRT1)`~$W8wX67Az)*-X)9-`}Xe21<17r)e&pTxrn{f@h -zx#Zdiz8F4m-YfAFzZ_#;kd<*c)z0@Gzh*ozE;T(ZHWcvVCYzd@i4PiysRLH -zxfshGr4+lkC*>`WQ8OX-tHg=zazK<44o>#}Kf>#E)J~p?Cdc*R?h7)`bMUnA{72VU -zPNt2l+@3(V=BiepQbwim>0Uz?#DUH=3~dg}h8FbiAyOVe`my -zorf1!H(Kb?1*lgbN1f+3)1YecB0p1H1_h25Z_+{%SRSQLr<^zu11;8ElL(sGU*|*n -zCQ#YAfjm#A`=Ah>Z%?>Ws7qfGA9nwQaaZpB&8fG`H&wQYPa1r!ziYh*?n|!9mHHy; -zpjJINt`Z_l{VM~>D*!rI4{=cJG_SZ<;&Pp0G6T}zKYuMLb<1xqfOdnF*uPOV#n(~j -z7%A?HDqT!&dz{xy`#xGCJ^kW3rtP)bRYQg?p1N9ps?hp# -zGj&v|INm;Oxx-IwKS9Bv-|`uVQO$wmxL+v(jMly@!OJc%&%D(>KaETEH&-@&t`{_1 -z4dISfNJp~s691FWa38<_h-2}ee1xI`L< -zl6Bwt`2B^feftu5UaT3igRaH)aDfpT9X&VNG~GdWRd;JuJHLeYQM}Wxfe#E>-~3w%MvW7_NSW(cwn<;Eua66mrslrvpM5A4 -zoYopj*&C>29VLeQ4UIPS+U9IsREbbT?J!ly&B8(EP_>Qt{koqXVRa+?#MTZ3)si&p -zOg*Fg`{$3JcEJ)K8u54ElET7rdATloc -zkhTYEI99=t>o8~Ib6<`>$)v&?SsvoP$<=@yNZ*k^FeiA?EO+(`fCuZ;YZlmKJ+C9m -zD);oeWPbBkpcoESPd3Z_@#BZN6JSvC`-l`vjg~KYeO`Y4Sj^q|rFFI) -ze`A*VcpIZ8zhDj)ukwEQ3jt)gpo!C5Lah=MB2pO_`Ly4g4 -z()0=9Aj>GqQ!L3_PNatE_3rdrlyItF33@>Ng0q*iJI|_5RdShn2t}4KihMCeN;JmEO35d;K -zzx=zGZAn4{nA(4vWeR|GSs!(mZd9HWYhIHBhF)QOSqt%X4D)4%DoE?bp#22eq!r(i -z4b;vxHN~gcC2%hJ$s|zfdxIyS9O$Dm9=@%xTz7B1hHz8M1=ruZ>J)*Oj(}B%3g=AlYORDr9_YN+G$?mBPW){Gy}9NR(O^rkBpvo -z?l0{N?F>3_FWKmzByP78YM8)hDq^BNa*U(CVrKawH_>%}>ZE?O1alS}J)Ke%D`X9O -zCTo_d%x-e_;kQ$~z-u-H7qGKokZsSlnkN9#z)h#8KZlRLvM=}OPmYDC9KIVn^L!-o -z#LVu=or1!TW%6gTs;rlj$(H>XoJsBGz>3rkLsOj$(j4RwV8VDuERzarJNC2j{}7#s -zZIKEwc3D(lS=xs`-eC-%pN6sksh9l5^0f#AgNtJwv~l9No_!KYpU;3cnoSVCd?FlBJ^qp@`#fu{F?G;=>3#v_k@?C3Tp -zEwWx|cV?pNJp(1yeGE-|xymT67yj8gBrkyE(|l0iY2IKevIBys>YziYc%l12@#Wg5 -zZ3@oi!l0*Ub3mSAx5%^geX&i0-vRoiLSKhD>nypopScFbwJ=+7KC;O|efwMueY`E& -zo2>bxmK{}PW7(RSY@u8VR6d-_lrX;wa -zD^F{9jeT;lyHil|`O2ZWV+-rgf2)ZD(iV!8vT2G3Q<+E6&oA4m*8wuUhAM9BBucFi -zoJuxgvA24tdTu(~?j}ZZ6&A^cCfT$L-w(%SAlr%*f_O}Q!3HHRLuW~ZKc6L$BG@LN -znjY>B-2u55y6F>*j4jo(l&efW@h#Qp^JkpkT3db;RsVTu;r2JS`!hXcXOd?xk-e^% -zKmRBMraRe)mVO;=XCxpW7id__r`V#E^r@R?y2Sh+*^J0i+8qSUmQajpUY#_6wYjEp -zueq*$6^CRq2MOq%u^%kOi|TZ$9(F(Zn2-$7ipNJjI5tg+4j0Y>6ZLtE0Ln|h4Ri-+ -z4#u0sd(%D)MrY-`57c&B(~QpC6vq;yCqdza1=INzZ${kB=JL^c1f>QJSt$23KTu0h -z!#15fs+&AuXskVa6<1)WP%zZbfAPInxEAd3q!$Jzva+j|ST)q8jQI9|<7pK#Y}jiG -zHIXIUWw20D5)&aSZ-x9dSl|q0RDnilHV!S>(-ESFUF?9n(|8hi^8ES|Uayqxq3~(t -z@Oklx2BMiQSAy_3F+Aa-j72GG4Fsa3OP^peJyB{%9eD_f?8O$RIH@?G>8vsN-cJ_r -z_M<{7VN=nbhxBoCnizdj8O4G@=dn#&c~3T)&ookC6+#j|3wIZ);D{M91~+Pz=v&P* -zD?3Xxai!W_Nr{Hd-R@5-8gE5{Lg1EO;}Q}j7Rb38(2>{{FH20d1X;@f(@U$-pH29_ -zCK>YsdoIXGX0eyd(2+_Qo6)tPzR|B}PKMcFyEh&Ss5>yD)7d51{E#Q3 -z6@Z9LP<@YX;_-zKFs?#s_U>*4rm!bNK#p@K1~DP&ZCp0&H_j4$6$i)yb99~6M3qxA -z^+?$!lzzaBiL(9Rpd7Zq)JashA0Kvcx5ZtAElBW}9NZIG7$tE5>vmysSNKw{kt?V7NFSeS&5WvQL+W<**)+Y-!!k1V)eqysJ^kz=eM4Y6$6pB$% -z;_<`<-oJ}?Z;x-(X!9*uO<|FT)~8$Oj5m?Ov2qAkRJA_6It+OiEF7fN(qrW2208V; -z5cyo b+Mbe&Q%=TJ@Zv)ISdk=5^#rL#WW=D$Fjk~P}HquL#xN=vO;ggQEL-5D3G -zSwkEpON9sP6P8t1FWUNmZeTD*i#b>oFp!#l>RYv=^T7GuZQcF)@$;Wh$3!!s`6BYZ -z@7X5FyEuC!+hgx-!<-F>-faj5O_0mq^PZAi(|1sj-6*!^ -ze)2+RhfYXCEg)iDfA_NmodRg*PAM&PPEBN)@%>UBn$p>doxV|+O9r-H;sRZl3}zKxp(IBXCna-!{n2D4^S{HTC}DI5Qhtp|VSKNG -z5~hSw#};iPa%y}yiN}xsBHG1&tAGE}1u#^t3%mCN`5_fXqd6mOxj{3X|KYnydZQ69 -zU|QSs`s$4YSa=X>-Ya)41`fw?yf>@6CPIZW6ghvd>M5+|*9Gf1)-%F#YgWqM{At!sAn0(EYieM$si$L7x^TC;`PKXfA> -z!pas%zf+i4nRT_n4+gJXR-3(Zue`fxd;Cc?3Y~RfiJ%1aU#e8n;Zt%FQ=zTd=gard -zvx}d_7~UVPs7;^z+={>PDLmUuPu%@T@tgOWXiGqx{(+mUADE3KcuG%sCO>z{g6GLnDq -z0WIa8N1v+tPn&4kAioZ9&Fl)RCEw?^P*SBm-B;!Ew$t0&SF^~cx8XPciCzI4iYG8n -zH(erneJ?Z-6jr9$>^48D&i=R!X;y%x!4Abs%k=f_5L0XHc%XV9ckJ1c`1$i6dA|4Y -zX>DxcqKpzs#|lZKl{_}-RAz39YaI_FiLs1|cb^~j6#J<86&8-*H$!zEXeP15OzI(B -zgj$P*m(JeU;tMm8dvj+cFR|egr8o_$Y;2*%mobg4k@HigMgawbc-}mhvO6=X=?`x* -z>spGvxZf5&!T*%a?dAyhXwgM>sH5c#y@>?C^kES7nJym8zY4C+Q=M -zLOe|K@@YGZ#5cR8V^tl4Z)7)82|T>M0j^oZ7Uuc1Ms{!Kl5KgtTl0sQPRMYivP66i -zb(sYfe>F9@Fh^QzAvj4S#b=#cM#aM@peWCHZ>_J)=bu&ebLWjJZH%7Tx?{=8PVfaEyQZ-Kjj4B;TgZ0&(ST0TyoQ%Nr9MpoF2XZiS&+KA6vGZ6Nmp6OSKYYHe$9`U+m;4Pwdp;s9rm -z_>9_|Cmu_ZADe)E$Q{ou -z`S!#$$%K$N2*#+htR$T2t(|Xhl@+XzzJ|QU0+r&Ddw>@Knn8TEpqsUijAf8FbsEMS -z7j+Q?;LS?h#5c-ay>)!4U~T=_r#1=b*5Cjxp22w{eDouN+A5sRjv{rds`cdrv2Dlp -z=2RuXM+(?co#^wSjse8db4osnM^!Dd@{9vcZ!E?o!g=^IKC+9n@8g*`ab$AJd|kmA -z`E_tOKpFnh@SLNFC -z9AQGNd~~|F-zMA;Z|3Hp_UEn0r3||c8g}UNf`*TbY_x|Y<08&l{!x1@$jDTCF~<9f -z7A`)NudAw^rXkf6BH6Fx9*(c$9Uk$^+3GL>I&q#{<1X(U>ZKHHP5i7Av&(7s{>(>6 -zaeLowc)nX533FSDMZT>V8ESyU_BjidV8Bkl4bEskkYnxYJHjM>Nuh+o(U8dvWvsSf -zx7Miu?+58uCo9uw5O)efmR1mzsgyvI+07nrhi}OyASQd+-WKUI^mlQ35=j-ht8Og- -zxQ%U~>0XvLl&?SH4Je@LOd?Hw?{eb2Pg5>LYv0b34j!{S{U>E`%KLP}H(G?V)z-Jr -z9Fh(H^LCJe@5^d;s#tx@P6_yRs!32A>OJ)*pceb}OF%lJTIm1@xkfpctm5hP^x^3R -z<+VZ{u(g1V3oMX6{roH%Bzmv0Fbqhjl|9%EZZ7vR3@rj&o$l#Lj{!)d<1~sRm^$iy -ziXdG!Cv7^QbW>)Ex$!Ows3>E;R~dpShyz>fXP718OI-sO{NrpX4lw*PaWyFLigdS5(uka3*3BlX(HTejxung}~S-THMOy7cj_onheL -zhYch~Yk3M2fzwkR-GU81n{g_+l|Ek__OWsjkP5EiaNf_wwOYYLqm;ffkHRtnJNmvCBS85w -z!EA7Iu3Ii~x|$Mlo^3UF`1a+imA?h2MtvK>8~d`=>~g-Fwg -zl8;)iGmyXHw45lr#%KM0yp1h$*(f0<`1&XZdHC1(d|O20oC>x9q;d5v&+4`z|A?hZ -z(gyo=Tx#Uyfy^p5wS-E+j#Ow2s4)XK0k~mL^ENCcDJ8ZP2ACZ%oVEf2D4C3R58{I{ -z^I^4gLB(AZi{yz^;3Ah)R#c(Uwvj2lIy3`h0$W5kzi$oziBpJj_U7BEJpim}opwd; -zDGuZJ3AT|c=vsUMQL5KQ+mWP1RtnTNA#YH8&ERu#HizwFDV)l3G6%zQqNfQn;(ZCs -zu10B@e*pgk7sE@ag;F#QR -z;T1-IbWp_vTayeo(5e{)yDpmNA0nV?r=utjrJX|ja{KEE@8R^lr+6s#p_u1R`*Ya> -zVBSRkdIb}5wnf)|CrJ~i2GM3vC-o>2112y#$j_A&EyH)pWxJRMkkj*B*;pzR)j(?qT5(+#F!a!3Kn -zitHyFQgOH+uhu5L0xY1+mnK8gbPI%Kjm553u_9Kv{5>S<;*ceIpF5#udT^Lsbn6kcs;85y*P5ri_-{^BcgBSe06SDvy2k2`*ZKZlQ9eC(SXvH>x|PzBi-Kf--~gzsJdt*I9M -zS_ND{)^*BPBG)lR&q|)trDOluQegxAR6Y-oSwwwQNu^KlvDJ)Oy@Nys;@TV3~yR+Xybur=pYSb`W!&xD;y4?LF7d`2UQ(ud8T)CHF5@{MAshen!nvD!I!@l|M0f+<9OS4 -ziBh-kZA(671UYUUPjuO{IHj(%AoE7s|LisE(1txqELXDY%jC>Ssr4RM>yxpete0)V -z##`8b=m-%>v?y~f+h4H7;XnzmW&5AQ=k8)YB~H!ARq#l5Z+wX22vuR`MCPAXHo^RF -z(Z)hS`Eu9(GtshPhZhqPysmZa9qz9EBu$-noZj1TM;i9=V -z+w~E4E0Hg>%T1=QWZ8*JnUE|P%%`_eXhl+fk!w?ENCYt(P+$%)Fb|L|d1v?-ATF_q -z==*&*dFXcS*tXjCVb%5UMOGX_cS!(K| -z3P+c)C>Y6k)pIu~q&d0tl+jJs-q3@+8i|7AUq5_mF5BTGre;tppob@RmvjFCU)&Ov -zN7VgI*7tlAa7Uiv=7^@D{~bp`K4VB0cyaag|YP?=s>yv?%GkK;U~>kI{u7W?6OG -z1^qeus*mFYK@JBvpmMsCqIUttLVre^c~Rn!BxZh--B2euninNVHJ?SyMCo4lVT4cw -zvPy0Ramn)3iFn_qzL=zJiWnRsR^32Z?2tu(SnC@Nw$2V2^u|@~)qmAcAum1ltZvSG -z3##F%>YZisei2`&cl8IkxG~WNLSAR=-MuGsgm?ib2OHbgd_&SiZwVPSZ$Ct}v!yg{ -zujBQ6wuz~KwT4D*w@UMBzV+glM;RKR?rLA9a$T-H{bUz;mSUHoxf3kzIMk+M(hev5 -zi1&8=b5A=Wivh@-%24+&m%!`qRXkEyabW`$+O$2e2q!>wJ6!?k$!sBEy9|`v00+4R -zT!zA6Zb)Q^Tgz6pV?JDz8b$~#se(>RU=Gl^Jc5^p=@ -z-Gs$J>EtPQ!RVKY?FpI_2Z_islIq_-)<1v#%%jgdcfCzi|s@V;_gH`zNs|(IIDgJpEo;8^vN_$o5plSN+p@{SFsUNQ$Ty8wOLc1 -z#jiwUkelH^f}}^=KT%J2a+c4Ht&+wN&|ySO+n(b9Qt|;TZyss%5RpE@aP0%Ow0Vnm -zGaX6-vIGvq#ku(d3CO|WgvK!<=3y&%f{3)@I!61DE&plD``q@pobFhHb!=pwi+SFF -z@?Swce3gBGLCRje+#HL^xg`QWVjbOOSpT?%PovsII^mLfnV5c9KQ9@hJg^$L*Gc3K8?X~3n9bE`J^FQEPg9-x+wtXp{L}3ddUQAHE3NJ&G%aWRcbD@N7i4kX -zEov?B(sM=!`cpB?E}N#dIxcBD(56uI65I6J!qa;(WFd)9SmyZFXWS?hl7!{PO*V$s -z>1#R3&PgI`+PZ)$xsmPnl2tLnAZ~R@8;IG*NPl116tK2K8IZ|7@baOn*r8mW2)obT -z#Jle0GI?I1g7c?rY-HF>ov38jSVs%m>=JG%cl5cnX=!Z_SpYJccc;>AgBV{k=~^CG -z8dTEEst&Sg#ID$pNfg(G_^QLCMGbjI`$pBM&eANDFZ=Q1pE`*9)TX>}_wxdm&^-~| -zWi+h7L%t*#v_QewB6E1%C!n>j)=E7y6~B-ATIHQTWN6a&d&ZEB_wfJv=Z_8bPcu); -zX22@+tv*VxcOFojcBh?XpY7Rin377Vh{egJ*b&-fUK*1T0p6bQ_P3*FN!hpnnI2=w%|ayk-i^i!+*| -z-(2<_?$6-&^iA%2q*SI@L2uV;o-Uu#i=&*lQMx|$|B6{}%oCnMFVj$F=SKjUkZtVC -zz5n_{LPo?W+!me7n&G5q5n+MCs*RL)_%2NrgB{H@pX -zu}@jGWUA_mwqM<`BTkS^oqH%M>( -znOH$a9=KSyDLSe_2meH#%K>~Q?=s%=BN>2y(1fnsJ@7nTOeD8s2t$AaX}$x##$#nn -zlAZ0R-4GZ#(;9&>o|3l9Z6qSf?RFs`2RO&@|~jWX=8M?oW^8c(yUV -z#h~;~!N+RZNqK@$0;;3f74;~f9a)zsBdt2C0r86x-1X5EPRZ~N@$GqYib^H2NJLxW -zu5?OI6p)x*oD>P9b(dTp7q?_?shnUHwMUzxvILCCFdCXc`d(sz=$trnm`qap5-HP| -zW*9JhWeJ>pu70lc4wr6bcdsV$-IlU2@P?UfYiSP -zLbA9!1>2y)T8Y=@)}ll-C09Erf%c -zGpEp1i?m3}iADI1xdHvd?;5P9IkVn-$54`b1asYRb9F1;#+vwj>!5SBMUjAu)aDwA -zv2HosS%HVlsrLJ4s(4nlVq%`%r&s+=Ta275MJeHawcj9}av}e?6 -z#c~HW-*WoxMl1j -zT4G(=RcwSeLfQsP5f+aa(Y}h^()^(R)g_O;o=t}DesVdfcdlgFYaAiGrl8_$mP@Af<`+!Ccndb#Bq!O%~_V@fK -zF#7$&D8_9*j<^pdZb^*H;!y^oT%n`|R-a$^O1?M{q?skWMaZ*<`rBRnz{zFae%;5- -zdIt1@el6I~xbG?TiRvQgliRQDKn4_QZKs_}0)6l&<8J^}R**LCF8e64(@+R|QsUZ@ -zno~u`mHIL9-sCo>?(S(|9eyf-a31 -z<$rcDD+mg*j=Y$msy#r##;mxwUUd*N_(vMxUG^5s{h9$!U;3546l-zH12Zz8;_84Si4b%>Ub-p?O0cyc^3;dj>stxZ_n(*()o_wdGJWI20w@GH;= -z@*ksSU#JL@y*SkAV`F91UIM`25ec2wb{{$AvsJ((BK5^^d<8oF_uh1>h3}vjrNd&YEylDxmUELb@h1DXZ>K`Sm9cT -zTbc#1C{vauI8sd8Bl*vvnsBp&r>4t4vYHhevZt`?W19EXZaIECCRGZss~ -zCL$_Lq@zVKT&HLy7VTg~9lAv(!UvxGqHDLX$ta7E$7ORE1=SG+22<2wPfm{Bi2bxVYl -zgG4Z&=@GGN66U$}KJXphp6eDAdBAaGYTagJVD!hQ1Yg3VIBnE5U3j~K4Sbd?!6y5G -zBz{B*B^penS|F2U!A93M@DJc&rc7Y9MC@?Gk$9K)XUb~mT-$Gn>IQMq0d=Tcm&K4! -z?V?apm)%9h)f2eaR~jx%?=hu=VFcD1?c0uihl_;y`iP%of5`Rn@mar_^%+XIS)Gh}IdB#P**?>`ufRd&7%8Xo(G<)1M$DW_wg -zT``miE9RD~c+?z)CyK{-W^&pjsR3%^xO`fk@+m=Vs6C&Ju4fz-qUZ9ZRPb-^wrGjp -zyC=wxY#ad8*X8;E>6wAy&DE3nEH}I4-f#dDGI!LpPsoU0fy|%MgGNQSc+R&SCA_K~ -z674A;`!yz6Q#6X?;vRv12;KN}d237ng0O -zq=um;jL8-gxZ0By8S8df;_Y5=Bvhuysfr0?AS)AcqukXYREd*5zu)zy0q -zL>w6iM80b|wOH+*6mbu9pHqEK|4bgVVqd|H*V=?s0*X`%1pxRkz>j!Unr{LlXaO)T -zS_X&{#ZECwsGs(hK&QgUWs>`XwimH(N9yK~Nss3#p-N})Gin5_{by+j%p-sV#6Y=F -z8_dVb2IOQ?DUp!Uc{qRT83{;cc$2cqLhxv5=^~)vK99Uf;;V(TL;-WI5$r`0+K`^g -zr-WQh?9%4Ma+bn|^{h8^S4q?xH&dyQnT;~s+NDiySqG!m)8*fiA_N6swC(w(x9(6i -zJq%ATpPhY -zN|gNoImp-1UyL)21o?P>_!D5;jJ`B&fPk_`a*1n8S5E-pl!gYdNvxAKYtj-!3!@_k -zI-Op8?qzYPi((w#JS`C8Bk__dPEFxf$pMeGN-fn$%`nCBnKRRmfR^?3Mi0`a+E9z@ -zd@q*twA*A@z+fJB)b=um4}fjxoOb?ZbiyrzcoTbeNpM;jbl^xr>KT(CfwtZ0K6<__$j&{%E(@xLUmz3QiK}tkV^!efO -zgn9&1H8{PaSQGyxWeJ8lW*t4fNa`2mV^xawEZ74>-FFgHB}ErKd#Q#lVMViFy?P-= -zw}+*hcdxAs4w?CY_nShEbv@#qhpnIL<71!PtE1PG3vbo3qc5mvQLG^abi7S4@kgHs -z3?SZQrB!S&3)_u{BL#}r2vposx+4{`x%w=d#0VgRh1H>X$|%0%*ON8?RFd=~(x -zhCWALvbEhJ;`xNdTfz+Z=I!s(21VgbaQyUfIdxzXlv}uN8H-$aRr==>ec(%S1sB*G -z{4Qne;x$yBKOe|v5ti(LOK^3pe{DCc-{e?@YDK%Q#sQ1#k3UgtBLrC7n`6ijYlcIl -z_VYac#{VV1eOXjvGS6ii0%Vr%z3=wouwaEHbaHsDps{!HVbl=y3C-?WZET5-IS*#} -zY%q947l)Unanzx_K@u=H~G?tff0q8`h6=V;VqI_3B9vT@<`Az^d2zd -z3U6g|jrl(bRsZN80eyQ*6FosVY##9^gAY}drd7emHFlX=y8@U8n0DC=9vyG0|W;uVYRlfXFGW6tIZj`f?(AQeFlQ8O^(|`gSds -z6B9GsIc!6pWdoV_!Jj2kSKlqIsS -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 -zAC~T9(iZpKyMjtHf;sJxx6v -z^#=N7wu<`N{_BTth!JQp*`rDwPtxL2Els68<{otdZ!vQDndE=u0~|c@Ow{;e4iUOIegVM(le( -za7D{jC;Q-~jH%>Z?e%?sciG4Bcz?6q0XlwvH#Gs5AIL(z@EG(BUf~uVc#34(LB=K( -zfM6Wf)IHS>Q>arv*7qhRz((01G4)tDNhQ2rm(UKka71r5*{ACbX~;qle56aSlo!~a -zI3*THAA6azH!4R>9tq@7<4E8x6ynY$yjPiOQVgzvZM+gjg{Z$Y7_O$xrS -z#%Ea=XHCa=PDSFfC9Rkhe%ftygs|*7a~Lx4v;&`MYX0M+(_K~9UIaNbI`RhZC~RN2 -zx*aXi8x=cR^&!C>d&?xM=kinK4xC1Gp{kZ6C&_ULN8K_k*hfq=F -z)77@Pi1RzyxITK_;T*(IS1NY;cyx>;z;Y?0SNIlpv5^2@z%y)RX@j6N+~cwUb2Zsh -zlgZ`;PiP7AhpCJc@q1gNInA6=YxH~#-a@Rb^>n2Bj${~SLGZHu3@(G*kF-DJv%pf;Jstx_IDYegiT -zYUV-gp=*_7A1HLN97RX(M=SPOBA2l+bzlfS$CT2Za6?Nv&4%y@7&!7Jyje1+Z4s}JY5zyte25W^* -zEtJ&IgOT3~rWPMke+lC@&6O{jxbp0D`g_0Y-#Mdx?IVac`;C7^{bL!{Ydjs`?JXSV -z{MPv84OGld?|~hxeBHf${(fo2AQdLt_1VbOJ-=<$y7w@=>wa<43f^;6CluyrIsXt`-N2hqpOX8FC7f -z4Jou?kRQf>17;S*V%qHk#*4Se8{mUA-4-PbwOtC}1FhxEnHP?s{6Bu+J{xfu>dizQ -zUA9Y(m-Yo#iD?Qhj*B&g3Jvzm8RX$#YLFjqD+<+PucM6$$ZV<6Om0hF*`p -zcZBAbEr8b)KECha8=1`Dm}}}}#~vwf-ww}7%8PIZkoWMH6PD9%R|>FnzvV`lfNWaw -z${6yXLyzToAfAS34Jq`{Ulkzbuf&CPD4o0Qi%1TX4DoA3&di)HD9%Uk3{=E9j;LO+ -zvSo~pFwAa%mp#P4YK|nyhW*XPMT-mx|HT^+i@F)_nVbQ^mqg9&lAaez(Td|qHT*CY -zi0Xb_Au4>ZJKmchTvi|vJD{paeU&YF(AbT#Vkk}_K6G|Z%%8($a{w+yRr#Cx1BJGa -zer4VEPK$vJle#@JL`_YUV(M6eTO%vi8x)=iSuvybpCa0f;JWW^`?9N)m33LQ_G;Vh -z*xS|*;uU~_Ook{oH9R4B*F;BR$7=N`iRZ<0AFbsWLLs|c^UJNg+-4{)duVTFVrmY?lsm&6L3ZHXQ|H0t6*q3F7=+|BF&spJZo=8wHOSZ{$ -zx>_ZoGHvR%k*zgc`Gf8@V&XLyB~yHtt?+!+}ZmZ#OdQJ5g^9SrLZ~pu}I%h*PhKiLq+VSiVCgK!?D(IQ; -zbD7v8=Y}C7>?|5tiN(llaBHJS0%CRRcBX2ctu}aKd0OdxKsT)sa~T(4 -zGJW@!IS{++5FASgn9@~NfXC@}O~uiBF!^F!%J)>Edvs|q-4D|JA~D%-k3KQPL^eQg -zx7ZbwSZb6O$n!WA(2Dij#!mhbVXXZJ2+sy`j6IodGee(nbG7PcP -zD=_274sNAWv0ECTJ?ON@OqkTpY=ex@jjZh4SoPD33sV8Ly9^11WvU-6jVL|&CH#8X -zV=}vv-m$SyuL&2raNT`nFb;uZ -zqw_tIbWk(s?|Un@S8(dKA)r+$U3O&~8xMQfZ>#jB -zt2?|prYV5yMA-OTAs2lrh<5u{IhzZ*b;O@x<_KQ~Hb7~0C0q|xIfhkQEE;i*X49!< -z1q}?VOSBaGK+;r00xU?zM9luJFA4p`A7pM({3%Mlnb(Z$BjO|AqK{fb3V-hq!ZdzSh~9|;H73kS -zbNV26EnD4CzuI-;;o3WLNyVUJn2ig%&l%qMv_s1?(La_5EyD2Ej~_(rA`=dHbrvvfm5)aJOva%0$HV?;+iyy#z=c2!E=8VWHU0c+lxZ(-hGmb9N-9Fw -znJ3(qi~^CrhxYZ#NjvxD(ihwO&9%iGI0BsgUr=goi(r>(6S;R!e0Hc>>{AW`|BxF4 -zFaPp-CLc|n*|Kqv?cagufG!N?~muD+aXGGVKR`(i^ -z7w)oAk*zQP0x_jK;+$mUABJ_NOP -zo80^%W3xIfAJx|}WsRsioqvU5#L9N?n>+lg%oQ*wEvXZBZnp@?>yWrWK#(fq|9WOG04H+dziI*_ngZi;~aa8iIiTF`*Mx^f?pYOdUe0J8X?93LgyzM -zJ6SI4AZ|szILK=jFX2KX7uR{`%vJ6VMDX$r3x`RxfG$$~0YRa1NV|+CjFXoHHXQb{ -zMC(pqugM|f#a?y&x%q*zP?U$tl#b01%Jn`NlHabMyWiI=BN?DD?kFdBY2mAeauZzz^! -zi>F`e3U*rCr&L3aVos?%QU4%Xf -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 -z$_`_6GepeA-OJ(Gyn}^hAq0xRe}TQGN<* -zi7i1t^N~vdmPm&G`Vmf~$F|(DKiZmy1KPnnP8M6m5oT$D)94CjR-bMr-;khK5gSP4-`!Cw4%jSBC|UR&LQD8vnjcI|MB*zb-{4*Z9f$S1abE_e2TDIayP+dW`fm -zr=w5v#TWu`LhmpCPU>Znboh1+9$!|_lTpKcV2^??o*tZR%iuw2Y1VwJ1z~RKHzJ9- -zX)&h}*M4&&yC#o{2v6uNGDO@mD}x5#GBYh-kx)b0d{+p)VNaWHp-d7DG<2tUrIsbx -zqS(9{D*(lEq2||kN)Fl55(4lxHbnQ`+KfqMe6N5iuXw@mV{rgjP@cY*L!V-^1un_0 -zw?!*%)i2+0A$cjB{keFOQWDQiIe`U;^Bz_0>%4@*)+bmr6`-0GC-+; -zrdmx;dtoq?794?(WqMsP1mqRgy%h^Y7j1S58S?=0r}SHn-36;Jvq1%S_t-b$>F4cn -z>t_&u`V9i?C%ehwt0!#NWv`NXL_uy#1?3aG*9M^D>d<@3**poEn|MuCK_J*q>(qBi -zV)hfzT^y2HwFo_J+71qd-kymini&o;{RkvdsJz52Rv~G3+lEeWJg2SYao--n*&wL4 -zHymu^JzKIK$UK?w>E?CYP>;AN-YK(JX)G8#EWRj^jX~|ZKyB+%ITs$pokBnvyQW|C -z$^ZQE)9xMR{-?7iFYfQ9mB(IGC!-)<$@bgivCgy%OCs9VT3*8vo|iQNj8;6c$1QhR -zi3d1s%`(jWNW|lAYJ8B%Kw5guRPq&z;@HeQCPetj27Ec;O?#F?s)deT5r$H{3dbwZ -z(k`1IOPyOe7$6f-1yuNwX3iSM7?M&VXleUN8!8fYIuf~yaz&SZp}IJ_pBBaANdlAx -zCGlW#8I~xL{rdcytU+A@jY7b54!AHGwhG -zbqD8Gb7@}_j!SD;fY}?=buEAhE!wW$#_3M1Gw|TPYtl4=|4s)Up(mo-vFH-PJZP7a -z^Iev#IK=Z{b8v!`$lMpsTuXzR)={+pRm2Lo&7mD&=P!*8S9!u0{G&q>UdN1o;G4eO -zaDrk{clq3`1HN@ji`n`~77gruC8XgRwe0h9pf{&l)wcO3l}k{e6$Fh(<}==dEZ~Q2 -zZCzBzM(Zp(?G(Zba?y{pAlgngKvxr!J@0jjlq9g&OHQ7IM+1$G4yEGxVppgtVH=9# -z6SwFjkx|z1jB}Fg5w)m9MxUK}qFuYKmo&}@>TH0?Q~lrC{cy)W+_Ln%uV -zl5g$=ScztQ1yy;_>M;BH2^Dr|4o*a#Uk5bM<%J)3I-R3j3OR`pwWHosbkC?vn=9>w -z?-oz`Aq|C?JVS7WR7UJfM@&!JLjANzvU?V_idKe`s8kknK=01Bj~2(Z+r^^)i=$3| -z-#{6FuDhb`R2vfV3c;?VwltXt<_SGhfI3eFzQYx$ZD?Wa#+8l~0krwh!feR`nZpu5 -z0rImb?v%}S?RIyzFtw=r=*9X-mU6}*v@!&lJ0eJ8H;r=Brp7^JB^0qr -z*Ue`s`l8W{lL6gy&^?jW5hf7CrX*{KNU_PSBXXk=&^B*LB32ET=VyS!I1qVqLM6y@ -zy(Gl8T!Cz9ijdVgjr@f85V~C=lgrpPRq5ofOWdo1i=!=6h=Om^`m+Ae>+F(H{q(6GLjo -zMaYpG58>^}-Xu0l)8INm4e`|V3>OT=@#80a=+qoNwVzw;o&b_N*eJ*XJ@z|$Ud&K3 -zi@C+S{U&lT6#E(m=2jGNw&{jjU~`Qo*f}MfJjk7w|EnAlNQrd51W3 -zHG994=Tcu)w#4FPacg!Bt3qCnU<5g#O1%n~U5KGuJz+RYEGpJm)??_MP;7#U#HE(z -zbKbt6e7tyDqlI*a(yu{g(?Y}MTxI{N6nZyVnOH29-W9Jctf-C`f-Lj&z9 -zA*Ikm2dgS!d!K-mGH_4tS&r(qnzy1y!u&hctST8E@j;llb!|%4OvHq~+T7t~X&ma( -zD{#dQxM1N05XFR-*9%_Y;K{aqZN=BbV-WYqSe?v|QCJo?FGyLKX(kGrZUk&Vj!4+Z -zhPN`dIrm|;$Ykj6I|+gC0P5X)bTQ+BGJeWR53UMkzSb?Sn*ZAhNU6t{+#4LtrPMIL -zi5L*AI~`+LZnR`x?teod0zj<$OGwDd;TD&SzV~Ad4vVEXe~@=tboD@j;575Q4lwA- -z*+hGZSY^X)J;87X3)NZ>09(+VH^@7*OVaapnQaYcW7*Y)FG*8&TSdhc%`)k0L*2peKaUaZG7!*@61{@}Ay&Ne~n2 -z#O7zu?-|kGOlp$8QF*t)g5WKB)Af!J-#W&t1M*sV=CU}c&OW$nbArnDHTXOUlIGL- -zV$g3tf-IcBchETIbR$+#k;4Mybzf1dvD_+TWmee$(#&Z=4$S2j-U@& -zJ+E@3Hw1qXVZ3%cYJ+uO%MQdee#oT-R=B73nc#=Zrq^`Jcf(@CFrjDdYL?QAN#gw{ -zhT;R{vauVfK4A6_O7`NNCQw$}Tn`U86~K@28RTtuwd-36JOGW^6v*Ej3m3tPpJ)i) -zeErUm{HjGi3?M)S8;Y!?K~^S^4#|vvkh^kfYEWZYloQcmeN#)QfS4r=NLh{4O&dVm(V -zcUW|_S5h#$A5h+K_oRir(dVkQ9b7vK}E6W-KN -zYwBE)&c(3Sp+o;PEMq3_Z307-RUwaj3k!oN0U)@u^YrwpBYNtR%fy7a@%N+dB|-ZL -zujN>E$dP88&A9@?PKobW&QIA{c^A>v@+oS10m8>xJ%43Pf!cd7Mq}>JXUzYJ|(5i=Ev- -zEfZ2YYq*A0djd*<;suQ~vM9QwcCI_uD_G@#S`0FJcrqskwgLgJ<&-qxRHYhoMYhvM -z|8+_a$h=(?0Gq1+AWxqiX`b4hz^AB7ZyFCI))EH@_lv5`X_`fZwJO$= -zDBA$A+Nn3mII>X}Y292)?7^XM(ExA|M@?RleBA)K>$vTiMM~zQcpr|r1GHO?Q$CDm -zKcw7&x}x{K(3cQfg7U6xOfP6Bezl+)vW@kszTYuF6FPHcbP;2g_i5BNmW5 -zQU}E~-8a`|_eMVEXs)S6i`Uq#p-;tVc9WAmrF4bd8%+ryd5DZuDzscQR{fwW2ZHS- -zsl>DtqmutCVz@EJ>+tSzbNCcR^47R%KZRt9!MSSofWx*w!bBn$9>J58|CCqkS+0fbByB4#+^%AIeLp6#^?hKv>hPGys -zbD02b_Q?T(cTEnp!C4#=`BURSKx`)X(%h$B1lh2h?Z9`-1DbR`Nn^MVz}ve^BK{9- -z+db7(`c(7ug8jNf6g49i-Sj9Kkkbu9L;~m<+mJEkV+KLMYeESRnMMV3F%`Wb@zZ2! -zFF7SEVYXCj=nc -zR+dxZnxIW3aAGFUv9WQi!t)-q>AEzuH!Yq553;5xT0VUoWQj4dYE1OO^eGg_%!>o^ -z{{b}RRzj|2Z@C78n_w^{`5DonR4gsQz{E>sY0|~+j(KZi}AGbs8Ni}1^#fSKn -z(57Y{ZgPSQ__`z}w2?}JjH?^uiPs2VtmP_~N6{2+wxwzp>IN;T$cRiHD*|a^58*Av -zjrQ-LyoWmTosUR+ERz3pfPWiJ9#bw1VP7DJfqbvEf*ZOCYiJ2rS(Faa6+XlS`%x4V -z(W;B&j&*YN*9bmenj$ly5~QG{y{~y%NjM^o(NuKi^wy!sIlP*dqt8kiv%5qxwrQiS -zQRCoBqO_YzlQ)xQRmViikkA!E^lb(T0F{@?ujQW -z=JiiFQ(o`u`Yk(NxjuwSu0#TIg}oEzpeYP(@FdqvUaQQxYX+aer31Jjt*oIRjv4V; -zt}p^KVEK|Ww?~{|cw={1 -zZZZI;XOjw$Nz8{08kFO?_Og?q{^0v0n|lS};dvxF-8vO!J|3Vt8mbKr_4yq62YUN(6&)~9B? -zWVM&&+0Av0?W#CSyEKW5WWwflP1_xdAOd5IwB^WOSX9-?b|^zxBu7((q5>jZUIWoR -zIo+?|ggBOnLhE*RLi2vDcM#~T+njll`YXEXbM2Q{gOrUT5l7~-(aZT*5~Ru;ZDPQN -z<}Hpwvl^LgQjM)!VBO)(iT6gD=(OoDSFWZ2fP}&wk^tz>l+K=6Z=5d97vLuOt!Vyb -zb7OfCfqioDEo)dtg#d@56HI)Cu#5#Chs+@_o~Et1C9tA2-*OEUXD!EY#UTIrrj|T_5Bu7Op&At6iS&K -zc39Rs;1=Z#YF+E%U6X1ZTSyd$*Waavz6FW3RTJ_0aF8KXyQHohX9NlT+T3{|#_`cY -zpVJ;Od7N8pBV)?iyIlbtMDBuJ*y_cxkBj3481wcwd3-79BO3#id0Z<@Ou&unJ8T6& -zWNM#ka6bUn3-o#F}#*z~T-^uh?9|3xStHe)Y&Hy9@3SQ|shQWI!ixigJz1wSR -zfCS#0{0?RJ4=h5b8K~5g8oOum->n|yenUSOwH#8bpnK{_9Y9?sucnrj@nL)5qxa?H -zNKWu4?qq6I3)=Q}DP)86G#SUBnwT9BBD -z`ntKfpmkR{t)JqO#B0kSRM%#DD`om%;tJ_L&0U?AvBTF~e0Wg{hIQ0y_t|sao&;RML#FruOXRsv|Ai@?x-O>_k`~AMktI2J|DgkpO-@T3Zp-qtSgfd1#RQm8sq3M=GP+ -zX--tuyKGqE^yKHQj2Ne;+g6@86 -zP*?prN*POg)h+&5+l*Ber=#q0*ZuK&P5lnb-ih1alp{AU;YtWeQPJR4UxOya=v{pO -zN}99AFe7fua!cr+194No5h-mur~?j3zm`Cuih$lCg(pylD%Ck|yF`hH?|q3M9D+@K -z>it0*&_%Pk>QSh8p2Q5f4XOt;h2B5;oXR-azVtLDokd~8j76q -z%kA0UHP$0*qxRPrkD%V`JUgt}SB7!9qH~F&U~aZ7bcB<0`*C+Cgbmw@+cfoe*c)0$gnogL;SR+k&9C8ET{ -z_6UiyFDOP#IU6zt&igqLz8gD<4okam^O4}!g|Nj)Sqdb%Nyf?)jjsbFKu~H)upp(S -z50hWyN4v4J-?sY>SbjO_i6htie|ROnw$Q-%Rf7R-wan>LL->O@PY?hnQHh$YVU|iw -z#d<58iAjl%B28uRp|{E=&`6t8S)s|LQVr5zf8|}*BB`PcAC5CQg50!3geBq$wX0k0 -z5xop4*7-o(9hei -z^{_^n;HnD06EApXSali%*=@Q(nN!AH!sk>J903cf43YtR2xLWXCOu&veGg#%lcm{q -zolI?uU2PNOCD+7=sO2m%bqNGyhO1R*X`fVYKog}Z1XgeZQX1*k9Mh7a5pC!b;`h6m -z(?DFimrK^zruA&3L_PC%Set8vi$=NEEvn(M(rUr&acW -z)OwrfaIZ)=P42KHA57ORJgEesEqI(|@;`482_Oq%$qb~-7{q9*QiTA~PdSpyd -zM0_XIQ+`?|-^9e{&0!GRc@)~+9b4RL*&~Ci>?D@H^k|SdL#k%>cvgmWAFF+xWTdW% -zd}RRf?1xirSc|hU1KOiM{$+lg^01!W4l{3Nb$ -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 -zrmOnoH%5tWtA4r}4U6xBAR)k)M1 -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 -zD^z4OqCe*Y6z?mmtm~$0W%j3%=DXK?zd+_ -z?y$vAm8FcC3UQSsYWWiriD?o)1=)cgNd^^6u~>PsOV!pyuWnSK%V@qH^gsRHzbmK; -zjS}G70Wm-ksQj){rm9j~8ztDw#^|NO@T;qjLdU2>J#%rY1@oCwi^kkSU-;-;V3FXH -zzSahnWDS+k3w-R9B5)rwfb-Lns5=y_5M|ccj|Ke-3Kelp+pEqVbOFBE4Wlm-cgyL& -z=)$zfd$H=01`wF2;3TRrH?gButXo_bCd7?OdM)8K_NhpP#1#{rC4@G^qjd*)B)k2 -zzeQe+6Q{h=%5JfR=eeTA&2j(~iiuqnQ5>@w@&xl&Y)IQ?&v%A7*ZwDO`os=CA|%-7 -zCgtzR-6mlfk#qL-W@T=T_naQo0peft?_`6&K}jStSW@J;1i7qf4>Nmy~ep@Cx#S_$hILG22;oJx;7pK+xnIUxFegk}q -z1jzu>WWwSMo=5HZSW^pHR*!~FL+XDheS7g9P~Md>YIxado{{Q&qA=tLQ5@u|6o)Q3 -zu -zO8LDHOok5HD6d!a`MgGBS`F4WBT<>x=16g^4l9O0CuqEi%euIRk;*`147hO#jK|f~ -z2iAT7zW&S`P13coX3tz+TqH2c^gPIOqC?SlBs^~B7q5qvkD^ZDvZURDre~#^b0!vn -zy!QzAv`Y%gY&(KmswK%Ko)GWU%UPG)0dNP$$8t`yQ+*Bq-j-w>p1e!7+dU~wroEPu -z?U=?n+qTrngcu9>jYiRWy_db^Y+n{!p!+(z -z|8viCNp>o70>8Ir=Q4+EhAB(+^9Modl{P2}1gsvglNYsjIOu=8D1sHUmq#UFIi9;2g??|zLXw)oR0&&)%ot(|5 -zBTZ^-fWfmkNsWvoWts5g7Pb%cnN3shgit?m(YGh`@^~PSNZ!~J3@2^#PLrpzbDv0g -zmS9)}(YG#E0u_pq5~&^T8ag2ovZSM}tFrimE44~G;;L}Xq{gP5H#ukXI|V -zx3IZADtOm@X2YTRf1zoNMRRRkU!ohr=PB_dAr?tD*J$n^@%#uk{@#7!V36NB)6CUV -zqO>KhD-7J~GiqTwN_XNNRmEhiLSG~3;~x@_Wl14Fv76^cZqH2fH9|?`BP=>yl1=CS -z2VdhY|H^$GIhA7{b45hL7mPiXlho^S3dMpMUZ1lCJc}(CpZ#b7YnmloO9Fdp!r~TO -z!n5>m@cLo}>rO6pEoVZ$SEx-w%E}mxz{Q;*#oF|y=?6FJQ{}e%P*-*YQkFzp4{YCWrbq}PH%AR!hmr;<)y6iJ3l<8 -z+8lp{Mm6gf5F=px{Hz|)dl-)rVxxXFobaM`TOxDpaJevBJ`1tEO*TN9wWhL{y@~Bz6i`jU$eume897sA4I}*pxjG3R%DB=p7I9^ -z&jD0zCQJk_8vgF#*>yg=keQ%Uecll%J&^kgK$xh@m=6=gdBGilzkN+cUN=aIVo8Y9 -z_;*=}m>RQYJ$yxlie}Mg@nnI~pYG^+ZM{r-AQMsK2zxuyrhgT=u0!l4Qb4|ex}d0B -z2&k>)I+KbPIcRhgjeVYrtZ1A~Xpt(S*3vd}^XZTGrPQJ)wS?QTEJhL|>sR^giF-R^ -zp;Kp)cpoQI6k}g;Pg)yJL@3N`O?s -zq!7!*gvvV88P$P2x&-sKmCI7R*kn`t;_Gc0m-2+gbB`JA)#VL^9-4#_(H`=9E+u-o?4+GLz> -zgDhd0jYs<##-uXy=&>6Ex=9q@2G8q8MWtM%I7aYps;(@$!B$6P>x@K@TxbRZjPh)s -zj-eO#uf9V)$8yTA+k2+vvrF0^3dcuxL+t8QxynY~A^zx8s$?^J^w}Xm>dWHl3H%8R -z-VsR`5I!ZY~T+i~;Cz-g}ek^0t134;Oj{2;1Fj10RZ`o#Ni0f0YcQ4vu;TC@!s& -zoZ6mkmeqXd?x%j0>b#vXE?7Bznu=wcpet@>-ZPM*A=yJhYI8*whG(cp -z6xCt$Vc(rBqLl8EsMq+m91V!d&)+8=BkbTtH^=Mf*<;dpW0*GovBijxlg8+vjOBdY -z#h6MQmh&R;YF)C?@=6orYjq)P?U}2OG$lT7-R=1h_swS;1ZLPrGDc6yD0M1U{bF)n -z*c}?e(5$N-tyd@yJFO)QbS0arZP-9ewFlh?9|mTnfr>e4%RRz49}iW5*CPi-)z~^S -z%0}5|JOd!c!o>%`$k+{8d@A0?7MZiMYct!yOu4_vm2{dw($i4m1Q`I=z##K-)xQI% -zHdDc|5VYWZ9QQ`TwxTnKYNj@Nrh62%w+UC==!7sp~;F6sdCa -z5RD{xbK%YvJ?2@w?0rc}3{{j(W$Pbh@WkeQA6sKZtgyJo?4c>2^Qq~afJs)N#$)cY -z(gNFY#-j7@NA4WLXRIKXZ3RXDO@DOJfVG;yz-A4%>XiTSeB4c^cz)`TZ0 -zY^M$DjlBoY!trO4!!9>5yjem2BCGeJqki$)h;2YxXlftI@ursMn`Q!xg=YNz6!$(A -zaGokS-A~J&b1pOR{RA4P1lG^Le*9>B9uPzk8^Cz=^-imRu9ziuNyUofExw`~h-NJn -zs)LQ=X`x8?u4t-YUAP0ee~Nj*^Sa0HtW5EDxqZQ>%Va+jIHJOo6G~)POkiosOMO9S -z;hw?Gt^7GQq2T;bz}mnC4}>vSfRo|ae85pOuq!9@A3EhCprlJ)Y`=0SbFQJ#=VLBsac?K;locHUSEPRqocm*W&VpR-T@|+{%VgWk2 -z!y%SX*T2Bc7YuzaJaB{1nRhv~+KDfVOlC&P%@|Bfg0`1yJ2E*gSC@PTH6wC-cokph -z>G}yN?X4&vI*}tbqMW~DXUvq~KACJ1VjNW6J%LZfz{dMOTOD8ewc5;+OpL5 -z1Ry`cpGk!sPs+>w;sdTp|-1GAhlKh_{U#q -z6FkOtK$riSD9oF%!gcOjV*^QZ1q@|NLhHgbLPa)dOUkS~Y0QgXPdb>b5JVGaJ&v;j -z>>ybrhXf~V7!q@nJjbby35IBMN%3krNMU0jmkWZhHRT4G3ztYUC9ZwG!QQPBo%ZeL -zKS5-;r8(CCEmtMrvjhq?s7>t~X0l6}_$q>$$Ty{j>>daC0Z(9U=n^7p;G4u4X02gb -zM}X<2m9tD67{ug0TY%Nm44h2D%*x}ufG69*%=b3aiTyTMx*j+%% -z{A@G%By)%H(PmCqRAEMEUu4f2>${_8F5d%D0~rQIS%3E1_aykpvg1(+Tk+K+bb1n9WHMR9R>!1Lg1&K<~4eG4@BaB46 -zmpMI_H?Gin@b-=%n*~~*i@tQ(y1$q|BOcKQ;(XjsrPE4H5Hv6V483fAEd!we;s)OQ -z$Zro`?viX3=iO=>l6Ou%8*VCQ+6=TrA1Coq+oU=Bz;NN|m<#_nDc-RNU9U>?heVAp^?n*&<==1e<7(QlXljW^9GiPhQ= -zex!Z|W~uPwSDSkIiT)eJWENWu4J;m^xIHO9EPmT^D4>MrsRL@?s`wl0;3D_!e`u -zR~}FQ^$T=*X}&J#UTR~hLRts72U>3cz*8n!h6AJNv9AKAm|2_M8tpQ4y1nkHbeqA2 -zEQ9!}U65kFj}+<3k4AM(H*oM*YC7MviMr0a~Gt!&;N&( -zKs|><(u|VxlDCO%4AT+Sujae99IN8TRxm*{yUd6<`R5fy<=J~&e#`&9Ucpk+0NHOd -z=DLNl(^@7C*h^62-)wJTw-PwL++%uxZ$DOct$_tW)>q+6rgkWhAguHLdbtcGL(`A` -zx`wB|ZOpfS{2&8~nQ^(Asfp9mTc7S>eH?der^EKGBaQF&z^H^J_g1Z{+T@)H6B0?i -zsTn}_GF-$r{*L_nH}-)SEaH(Q`c!VzL)CEnw?t_pJ~8h^KaA1BaA#+eYqbn!FPAq} -z7;eICCd834+!eg?zH{)bevlwi5Hxhpii=h}>+jpc1WKcUO91$gm}XA`Mq;Lxm1rdF -zMUy-z`3<`iVO*{YxBx?Dt;fz^l=R1=aXDxbDE3JfFue-mza#13Sx-#*4DSUo-w0&^ -zW^C;lup@ABPGIgI?y*B#ky?%4|9_1ANt5JCvn2-Z`)3rl=_whJnfKmYP^7zGv5I7q -z#S&KSC|no-!w?t@iNWFUUr#+cm>E3swS4lvm)G6H9fQG4O^2iBl%>pV@T=ImYW%p} -zSI@18bQ^Fd)u-T+8#nh1b5?W3bt=yIM8`MONyz5k>-&gGKFwE# -zK+c&U*~Hlj0hjX!`vd|Kt9Y$x>?o2d_9%yn9@yMON!5ZTjAi@5N69Z}z(iu;By -zd|I{>nBYw3R?oH?c6MPu@9kaYD)$s5-f^q%x_JYzB=%ncTU>{TmecZY<&0L<(3Wf= -z5N6)iFu<>*rzZ6_6D2Ntios|ZJ$(n2Pl!rl??9yaweo-=kt;`2S!DOu`a;G>L>Kj -z4(;m9l;LpzvRiuk?21;?gijVB{EJ8bf(* -zm_6ywb{TV3A0dMOq{ka+YpV@VFhUX5D;cxDFk58G54x -zfMP=4Fbt7;^5SFl9AtBDHpJf&poh>!vZWEihdwq#z;QKlsl~0`gP*f5)UMQmKAiB6Mq^W0hm -zT)Krds|F6g-oJmX$1lHs{qqz5MTGG7Nm48$Cg8jL)Gv)tS+ki#g&nWw*>MvsDO$JFR1_GRqP5a|uUe9;-Z3yVrHZvpM8 -zAio79)SkkhuF}lwdTSv1ZldC-g^VGl1lwS3e+HK4$}VW)-IO^$Q=vlEpeQT?Z6r}k -zyy#F)4c%bf#S?pnq)2GaXy!x? -z_Hrz-PuP`a2gZQb#$Z;EXE{yq{BSQI;KXZk5Z72B6PDm%xHZ;eL80@a=1i^&zWdQt -z;*Lb0hi=meuz=q`>5i1AAZ)a!lxczAP<4fM?Y&MJK7~Fzpv?`yhopiPT1Hnp#*V`% -z2M!t0$QLQcK0q*Bx*L$sQ;Y_Y!AGTGum}`O6s!%~`!{Lsu|Ix&9$(fL96=DA(o00* -zUu$y1sbkCc#Ip5dXJ_kAT*5n&s5G3~kV+GUW^uQ#0C8gH<5);ACgt=+7ao_6tmT)B -zWJA`cW`%(}8NJ;t6*vS@kKw=AQI=+FgOQ1I?5xtQ6 -zj+lS3>KqCH7bYK{n7N -z4W?jX;dzu%PW;S9s7#n3U9H%a|E$xT0#zB00VWAp%PJ_c9 -zIRle|hh^9wn$@#CtgUN+V~Xhp0NKEpg-eQ{HfsnnPSqkzcZ%p5Yi!!La1njsg~Hty -z7J-zruVnJHE2|iadou@rySsfb?muBYkA_&~b|I_ZH2Z@kgq6N;lSfHniC{`^z^0TaJpt^dXIa%S_M;etG+8i~cewIHivO -z_e4>wjodx-0jLXT1&Mjo;d#N|)^ybS)uaYvFp -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 -z-15Z)m}wk^uhvS^@`T%y=E@qIe$@tZ+nNK>wc -zLsM+OGhLpAm(gvY*xM4%T%st@)i4^ZOSdht)~c&-9+~d^r7?au&)vdaMrt~#r13}C -zb9=0pi)s`aKgO=AyNJAcJO)ec*xr(*AF};Yv-@GM4x_SA<+t3jSaF5a(j2=Z!^K9*ui?kq&3f -zAzemkRZr0CIA|NXD6BBDP|IL)8IgP3m1RU54-7sR{I7f~&?K*|^Q~N1me8aSr;1%+ -zlnSNrx&&sLO=WR;)(U}=G#VOR6o|j<<9sT&_rfXLFUw!)$C0`h?EuQ}1c3z8^#sR} -za?-lfgM!KMy<*gSHh(d`{MIOIF)N0xy^tK^OM;lfx5$oNKbW_d4@M7~{*V;H@7uir -z%w*}l-X|`ILXLZxtzp|kn!B_nb5&hWD?wmGTZkr=!xs4L#)>R=OCu%)J4~Uj8evfx -zVD4g{yRh1UQ6y!zzhl6X^iq31-d1Vp$)6|^1bjt -z!I8}pnY8%Fm>_n=*TEsIasy3cA(%{dS4C(Rldz))cBXYqb}f~a3t;xc64^`uQDSlm -z7&ak(0i7m#&)JjZDs=cgEm)x6BHMXx)v(w6(Cg1??|uj&ATQrm`!Q9;FY%Hrz<$K -zNzYoAm=P{DfX>7xJ$D*vfl7E)e!&`(!Z49j%8(wuDEFwd;u^;ga)ybRUa~AT9s_9- -zOOOvf5m14c5#1?)7~Zp-SoXf0K-AsqzNhAu{{ZsH21K80ZZKxFSs0d~?=;a4>SnFg -zFCDnr{RN%GvTi`7IyycU4EJ2~VvzYeHJQu-uuWR3)<;&*W1_oU$8mO(H&Xa@>`LCS -zV5Gh%@p7gj;vN+GO>{nrS9zPEL9{`8dxvNi|IyWCqIS%e<+q~%k*{xZ_d+8Dde+=@ -zKhO9!W;d;|R!+);Lf*}`Cue3erirf;En!a4O(>6QUm*n>-I^^RM6tAY*)Sj76U51p -zm!d%EFK>Ci&Q2vE8G%Bkc$V%*VZsm;AnGY}HilwL_YEyKZb}NL#-|J9L==oVz@p05 -z>h~|?>6F0ExzIGc)ibO>-qD|djJg3G0vk$?b)cP}{0~OJ`$5i+Q)pX9Y*(g5xXs;$ -z1#T~8i3|`-O#+j&%zwi>T_RMAw{h;<*Wx6)dKd=_ka5CT&~Zwq^^zT~B*S5Ea5P+8 -zRpqEGvGD%OaXRo{*@su*_8?cP+!JyEy&gsm9Y1(tQH9w4>L*ZCO{~4jAqz|dT}{XA -z;w&RL@*T1tVpZqp#~Ulo(St>aWZ;q1gH{0o?h*q**OmWon{|q -z=50}nNnh*8gzXgoA^5$g$7c_eMr2@>3bdZ#gQ}xND+jN3^q5ZlI$C!PdNG)w*Yy1s -zkpl6z?aq_xXBXA1*EbCS4U`pFG0icjBFCUP&DJ>aB8`0v;Ly+}) -z|E;R<0}v$D&OJs->ovfV?h9D5DL`2(Gf8YDFv70GVq)C*zo2&&R}SS -zWOu#Ii8ha(7R46GsDm8Ggh?o{+C&en#eTC5lXmaX$7yMCYy*}8ZUDeLe>d=Khjs&f -zt&NG<2Xtw>#02~naa{Uq0TlD9F==_0O0CY{46G++z(hKTlb&e~uovb+@qj8XoReV` -zFLyGgOB{ocm}L+$azAKvrt)NjzfMqeo<=w_iy1a)oik0+tUiuF(j%C>4vh;2AuGls -zv84|VbXu5>iE^KJ_HKGerzdxa!aS38sPX^!7~!J^+49I}i(`AwEwk_6(GoctMARG& -z7jgOIG0-c -z>wsJqeLx0S`{G*2wa5~hyWfc|V_`wbDiR2zl?d)N_aoYsSM@%m*xE>83vyGR`Kl}x -zsLl=NUEP&Ys1Yipn|MRku|$?RQZw!}3mg~tve>E`s``f<$N7McSe7MR4tO{lk2TP1)a6Gf%8lTpG_S@}$_vv7q3|KMuP6Hrt -zmJ#smh_c5SqcToOOP~PXSgu*g?7x}3MbY5_Wf2mH52}c=fn+bjo3ELBo6U*;^k4r= -z$TA}Az*B^!6pSyaF3u0&0I3Da&cIwlx_yBTQH`X8e!v>za3Jd2hx~VTVeIj{NxN;) -z1}Db~s7It8dSQA2*Ss<5mN7|IljVQMKdxS^*a7#6_Siu;6iC`)F=`+OjI}Z-qqR6`KYen94gze5?UBudUAY3zV9sxab%o?X;*L(kf1#K){^g&~z -zL>!34<>mltl_|UcsuVSIX9y*uH&{$I2PS{c$ivKH~p -z2q#Kk&psU&LmJ=Qr!VEaUlTcGilADf*~)uIvjnLwasbGMUwhYC?-U3I@Vehu`k(9B -z$44;j(G-QhuqI0s=R>nSnRs3m^qOMzodMe`zvG|{6!CH{GVJo|W-OO?Y$3eG&}sZ2 -z`EI=4rlO1`Qn -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 -z!CE?=e{k@T+zs785m8FXNqc7&^x+R=2 -zc(-!lgu1v(g6~Rfyz;ELIPS$deU+pi1;+kme_v_+EKqJ5Xl!0aU5Dsp;INnRo!nkc -z5;@a{ltYyt!qZ{dT97A^ecl}+^2Zd!- -zS<^qdIx>Af_9vJgKSBCy?1Pe19}K-NWnYwWHEl27^nOq*h(Z}{0&y=Le{`TR%t0_+ -z=O&1w(TbOvRKU20^f53-Ybe)}d(gThu0o%n6A~@TZ=-v3qjRjQgIYOuhFE1~!67%P -zRID_e@F~9h+QQE!gh(YyZ;gARLReLO#Lu^I8n$tC%EA8yU=nW3`x=WT5UI-fyXh(1 -zqKL!wPXY>H0%>a`zkcB;%Q{wiky93Ow(n*O@J1NhgS-LE}bf-kyzn*xrF=i;L%DcZIDDncHwsFs9UZWqv!+zy+QN2 -z?d-Sr4wm9Qp82f&n+~f;PZfc)Rq>H?fTh84hN; -zez}Z;*0ND3ju0$bl9ii80&H|KyCrz4+dS+s2}b+1GkHUPjA$Hj(|Snhp1*@ucJA~Y -zOf~#B>L#gzmL8Wl%4~W)OO!_6!EL!s$HUymG3{(_nIpIvI;ofX*H|w$U3!0h&xed( -z7i_b2Df?3>uw~x){BkJ -zpqy5s0BLucWk=n)Hesk!(x;BEFf-Arn@H`&I@qygiN|SPbK;62R@VWQ@7b?dzWVxw -zB>|#k>DYIfyapq9xXZAM3E+IKAU-ZbX20fCG6p#sA+}k#fH=<<^c>~`&n8A5>sSg0 -zP@GoqjXBv-*wxTapPe(3k?bTi)nDfo&5AfyGLSY&PL-PE-(QV|AE6PP*$W{w-F2Vk -z(XzuFD6F1qK2VXmhHM>kNYrCC`QFv2#w!-akhqSb`L_?w+TD>ifqEia8No{Eb4aW} -z8c4KV&M+=(4h!pbVA4p`NZC%@lekZ>(*%WPAp;>(RRyc=G6@Y@ShLnq7&GjMh$w7+ -z=pr+YBNnE-Eh!NOYh~cqYzD<=#wNz<*nB{SS);GqvsrwdcIno)v}n?3Hyu+W#Ro<< -z?fo*^g8SBu_GK(s1#EZ*W*2f@*fE54W0ZPg-X -zvxMTIchB)yoeX5AiDDo;lSM9BjLhpx9yLagoU7s}$sv>7RHcutx{R9;0#EcnjwiADOhYEpmp% -zrq|@#-5`l&k7vj8og65*^WLr2?N2_z+D1^?S}qPjm}#x@lzRdbw^m^oVtB|SXV5EG -zCH$`7%viw0l|G7Wi5wZ?<<2X_@Gzm}V~Ner;53rB&3YazjAM!Vq!@>i7@3@ztdnuz -zlFhVTLP$JxdU9U_^W{is61fs)Ke}jyp|mJaDIoV1)C&#A(>IMyM}T5MIyHNpUtl;u -z9WH3AC`?iO!-~nsT~uoeyrJ%TGaP&y*@_-i$E%5!PvyUqJ7fhHZUGSRbjJCUK14H- -z^qeUOEq?m>yA#Xue(eyIZhnN)Voj6L7BSmZ^0Lnm=-QEV -zAAC%qpKl-5h%Vn>CM^3@ouG}>Gr>|`+3tkWF3YV78Q}7ggT-$^>|vMCO*epTj1Fi` -zC$Fl5*7ZP>h?gz1+c1$Pdee2o=cxxB~&YkbA -zH{c^#jr^2oU)|10Oo)~#dbd9JVx^zbXO7&U9@2kP-JNI@QbDJg+}Mw=Tlmrsd=0du -zfmDF~pevhBVCP_lm;h~=m^KqAlJ0SWObtQ)DQbpmv -z^4$S{@fCZJY&YE3f{PlBUZ?7K$I*z83=z^|NzH`K@seR+8_eoG5{07YY7G0D8LRbR -zRcSCXI?l9nhqm3%KC0&J*C#y^l_^>$0V1vqa$l6q=~D6-Sm@u~ExYU=0)I#p9%d`%Wqp~MJ3f^jAY -zS!&YeayYFkmoA2k^q>~Zpg5NJ09Z?ClF^pCUBHX7 -zZeH@u_?U9D6B%^A;^I6q4r)nQ>X1EYI); -zG_AD4rE#VJ6S(Fu4Eg;44}itQ+^5@11*m{$j58{Yf_&Ch%>jS>T2#U3*dQ(kr(LC4 -zz!&=&H&gcOC)^#~iqvjUdJ{m;CwMF#-W9)~tP8ot1J$u3r$E|M3d6rU9t>FZ} -zmT}6V1Mu-37O0DNj3fsFwybY#Tk^N#tqmFA7ynuow_MwIK&c`Qh^!$Lx#~rwKk| -zr2UNkWN}Vk9mp_)d$!V#P -z^Cp`JZrErQ;v~431zlYEu;@n&x6kIee*CA;u15@xn?AZJ_sY3)jam8vskgDZU5){n -zxD_G>*=5mZ+-`R@2eAbF%AC%K$>R!Y;Nm+E73Z&Es$QXy3_N0_@gI;Pt(4!wSR>IrX`Y4Nw3e9;*y5FWV+96V?^K$ -z_bD@XgRlMo0c1$;b*>NHNMU28y@rN>u|EPy#I^V~6&d8ivk9p}Fp!-J$7g6LNLD8< -z -zxZFOY%Ehys#7$xXwRvpIRi1kP-&g_7h|X4&NVq3+N1!$1nW)U>?%)FaEZ^p-k~r@)it~($@>i -zUdtONQ0SL5$eK-?wOtfR>nc>`7-Kj9`|}bXN5EA2MAwmQLobLNcC4pYFeQJ?v&R8L -z|LN0LI4A!Bm4`eB1PXBS*w)D1E+2{k&gMGBgY4<#1y*p(zVs{ruJAj@02a0@&X81IzO{q -zldFtH#bbJzuiRfRXw=s~FkI}#R3O3P^TZQAkm}VRIuJQje02g2a=B_>xlc%XnD3HC -zrF_M>QG7|;^Xv6tJewiBwphk-Hdp9^1d4ynr{&R&wEuh#%}^`-gR66N%cA(V_{sJO -zxOiki0}Z_7Jn|-0A86`caq2)LUf=HvPr;Wfz~>4S)=#R!0V2e*=3C1EPd+oCauk+V -znhc~%UUFp&h!$zY&#otUp#_^f4RnrrjK|vmBvStAuv&x;JVu$adA*5S0 -zt9kG4j{B0)cV+|{*k~rMC(=PWb(-lyi(yZa9sBAMU)&w^lUjE{k?Xrc7w%zGGG0~I -z?LeYK?(0)h=CbnYeJd1PHw7+y7du?fjBM;zqYd($0q(JT-ZXqv>}bZ@zx*y!HF1by|Qf{fzm=)!pwWQ&l-=gd~cR_g}2fs3}(F -z9TTo?r|751HO$T6V4O2-f0_8hPX|3Eb9$m0F^1VQ -z>@Z9{{)@BRu+(csGK{z7zU5mPsh-emlF!%`>t$EJ8W} -zG$%x}dy{Ng$uX@Ktyj!@(LfEzKknVWMwNus{|)jPt$!@8s|sTmm@#npOS7Z?B3A|y -zEqEwPV$5345mzST*g0CmwbfIGFiifT>35(uLIviSoOyc}ajD)d@HH@8PjZ0C*O)CD -zTM@%K3WD&*9lVXp^wpI{0A{2vXW^epRzhouA4G*;&F7*e%rLCby%I*J=e~%SEMwQf -z2i_czqCy&zl^~jf$+NYzKi&$rrkDfL=4*dO>X~);v9>t5$ccrT_YO53ph)2rMEU)wZxO++gpqouf;5!Yoav -zQmnDu_}Y)Oj~m4g{LO=={lLOe>|$XpCNeAXR7QRfw6hMNETWgtvzS-{$W*o#&vdJm -z*5z5e1oKZelY^ntQP681x(5zJf2gD`{v6!Q2PU(`jF)`ErK>lxPV`dx)d2Tf<3bQI -zlk#6A8HF-w>-n^gB0Q?QnhOx16`fl_gq1k(LmP>)csDQ+oi&7H{HZc0BgaocO94Is|Quj2h6*WZkC_WGFMLee$>F -zwo@1f?i%W99z2^fTcOTm8l}@>lfsxAqoeHp}S;@;xc(s?? -zb=Q6&3*Ex33P`CE2>Fi*G8%y{uq6v@#uE_Fg^n0HWgS~wzkx;?a^tb$)8zon>H|`F -ztr${(+2zW}PYu;Ag{U;%Vd8+rL3p6Tj+7$$axqMB(LKpb6^lc^ygX?N7O;oqtgy7j -z3VKG(^CpZ@sMV)a>SBzNbz9&}R(>Yn)(Y)2APW}tGuBC(+4P-#?tkz5dIjw=tC11< -zkOiWx57c_lw6~|!0DfzflhwjHNZHI|o-vNLz^FzuM}a9CV$Eb}x22nH7|Wj1w0h@q -znuF_9YrM`h*tqRG^FbzZ(D6icL3S0);oUTw3?toLC(U)@TERDg4pA0KAd#Wd>Rx0+ -z5*8HSU#jWS;Dc&=mk)38-4R=%(0 -z;JFt+;v(e_WbDk=VX>L)OiR2hyUn9YO&Shl#}CIZcw53IoA&6ZIBz#D2DWq_8!m3|RG -zp~WTsZFEi>?0*w%Bzfmvc_lelX`|qHsWA1o`gV_8WgC~pee&tEk8p;%537L-pp`Z; -zX(umt>k?(YSZf;MmLhUe3m3WL`2J!$k6gE~ld)D08ms8mN^hWz@Sxj@4~ZLinr<0t -zW^0#YP&kUtKb>+MUJV_%8}&EtOnx{(9%T07fVO@gI1;lMgCA0Qj$nJv$6C<%YyJ@y -z_sB`7NVm2+@=aVGfY1q%|1Z;%EZd8kYB})FSxGJi4Ny^4`5iGF4dA$@_k|_lnQlE! -zd-i0bx(v%f49Xe%8OB)dGvEiSG;yOjQF{WhGLVXmYJcl%M+F;_R5cvWeRJ*1{;uq* -zKp(R;Rd1B6PnSw4PB$~-+i)(JdN@Y=%Skj_9E2Yt8iKbYcgyx$ZociXH*5jswCXe{70PSxgFT$@DS!&+}vPhb2Miok{^wjG64Ul?3qLkC*t26DcY{YWT&OmxP1%kHS`C#2#GL7k -z^r8}huH3?TRZA9KNQ(r~qN)Ny7PZn<)zA|IcTNPk|5s3S{a3gCTN^*<9{;DWXk(Bg -z{u?Iue}&Yg-1fgw5WoEI2*uC;78xi1j~ce;Kjti#@(~@mv?KppKtERyY0SlB2NQ}<9n`h#_CNg -znMcoItzg&7FOE5X<;*C)qNHG*!SwUPQ2>U?#-Z>6#cbKX;2((PFHP@P1BOh#nf*?< -zfJ%@O|A5?~^nk~_V>PaBSC?Fx#1};i&U-Y`9Z;0X;G-fGdEB1yK=^hTKbLTS&PgL+{qQD=T6_4eSw)mkkXQ$hq -zL#N7i+`t5Ig6S&LEoAQJ7ZYmfQCQK7J6QSx`8AbnZzxXm%L(~PI5^4w|8UReSsJk_ -zS{~QCxi82+&(4y>^Y^+djA$DO2ATR5E*evo~=i$k#8}0Sz36v|Kqt3HW6sc0mNY50P!BR+zwQM0JOpj8g -zQ%anWfhKD%Nd(FBuk$Hg6sYsGAl8%VJ_w-a%K>)^Rq9*h%I*#rcj4vVjFvn9Pz0X% -zNrTJvPi^@?fzef&re8o+RBH)mLm|S{Jrk_F0K9Xx5C^4C^@=+oHJ2$yGa$ZxdtYKA -zm%q6H=ncYR`$kb^Uq{(vWEo)8>_T+g!@MR+_)*j9@fXb)x7T79eHqq6oYt627?)Bh -z+EcC{O!5fG=A?{A9$tq4p||W^<;DpPk4Px-wo4<2x$TlJ>OOR$&%>R35yy^%@{D%U -z%nlr&(nB}RfTw89cpS82R;YWCeZ;;Bw-tXm>cOgG(HI=PiQ$=)Rvnn$Z}XhhnoZ86 -ze^}(bgh?cO%3^&JN%mt?9aYwQY#+MZ;ivis=sDzDHUlxLDUclZhUJ3M=+`im*`(+> -zZ?(^d@~r;h%BIJ9L;Ka>dNf8FuAMLO-}xKv=Re92{X18J -z5&w6NiShjNpKOHx{8v{YS@)G6zrCTguU}#g7;TNLp?R_0O?-rnj+`4!o93XK{<}7= -zUEjj{$UgCF{*HFm>|K5NCbX{6{Pk*R@AREB4_6M!x37TGVWpXQ=ufx^*%$BiCCqVK -zcuMp+(S`v`hEjx(8MhAGWmnCnDmyk;Aua*a1f;uc$Cm~qaD^f3n|@2dsPd&}DRUW1 -zAC>63^1K0es_x7F=v=1mw3g7+-as>Jm@(Y1tE9zOH)rjsiew{Vhgq*&EgS?9MfZrm -zUv|^ot!9J|Z0*2PEm7T0l{NC$Z{ObZf+;>!Qt-|*p@j~O$n5zC?ND-BWYqjKiHz9m -zV%h0(>>U868mu2&{t;FY$3Zs?th5>x9Vn9AX@+$j14p#Z#3qJLT>;n(PS*F{&oOD# -z8m|%eRT`6fMZU!ZXMo2lB5~H&$N7ZFx{LZj -z>=DE&I5b3;e1;%0&bpGeJ8C#u!J+F=XXCLi=MQFC;Tu`*fH+7#p%<7Fe9>I| -z>=wWf)~S;$unK@SBg!g${9QD^=_}9{hyEwG&VB#(P2CBwE7^SnmQ@X!FL^$0Z{HSm -zcix2^1$rnC5sXCbwx4V -znY`3TFM}eNIH6<^gneFSB~NDe#ailP1si@cIpsSO3ft6@?^K+G5{U`aKIrJs9+ipB -zN6fBMm=YmTmToALcipNk0v>32JMLXPqE6XF_O8FMDbQ>icfA!Zf+JYDZB~Cl=QNzE -zn8en;E#5O}1=`92dVBRZq?%+-Sr?p6K8kH_K#ovQ2Q7st5_g0n)~;!!z=4fZD%WXlEax=GUyN~W^{5wElo@z&7?pABlEZ0@U -zS>iCWYzg=3V$Vv*H|q`2la8GPvJ#-}zEH=~=O8x>|_)ub)AA0P!6$K-->fH3#6*KvBo1Kf8~v&@XrB -zRt}lq9KIWB^?WGu#LVuPNd<);&E(I_v9jJSCY$zSFev%WU>31ChD~)eNVB6yfC*#$ -zv7A&`{n*XQ2ETWOqnE|%EQ`O};~hr#cqrxqgkSU<&EpzcjW*kYmEi9jkSLwX}lS>0F`KjhnM@8q{ZsNBe4k)iRrv&@}G(( -za_~yj7Vg_#fD&W=E?2Q{0h*4Go27WpG7C2E-%HE4$Y_Fa$%F@HOdJ&i)3KhO1{N50 -zTB5Z1-y)BfO!TfQfsi(Fonh+nTO97*xu`C$o)mM87zYh&PoiDcq#?OhKIHk3EEv|% -zk$pJDa^yNnVcv9+xT4yh-mCM8v9q>0WSchtbP6aUPPY_uVi%^JS*tu4jvYeNTc*VT -z0+eefHyI%I(kiQ7b1MXhB&@fD -zYc}^Y>$;|^t(+0i(9V6vi6x0E<|1Tz!okC(q-m`a6l#2T|6Q`!*wG^JfSY7j2!H3( -z%=~Z|k2LzBX16)&lyySFGc(rSGEijQM_2h`k=tmyuegw2Lx@^ -z$qu35h5D0anoFCuF*v6SgVv(X0eXt{LeJLrMIQ&h1`td{z)p46x#Z>_sRqSsVb)%U05M{dz9ZKW%_vdrjZ99ovoRMHA0}Y2 -zRoK$WrS|ca1@UK9-=y`*la;Bg+MBCql4Om*X2!{A9 -z4U#IO$PA%b-o%;oD_?}7H}=V7@h&0CpVz_Y{iZ3hJA0TvY6CXOo&d$p-2&wS7#ca5 -zsLX=rht@cx-69C!Y{K%AAwwPyLSpnDRUd(+aeM3AFEMyP;X=ETwovkC3iU6#`KcTC -zIzZ4@5y!ra^3?*!DQH_J>nn#U=c?AtZ{oPFz>?X}KpXeu{xp;Za<51zkpI+WOi|=O -z)S6QGapWY6V4{H9y6X+d1L7}q+DD2RUAR}#SDK3CY04JBKjY~xmF9bf0hkw$AfQrT -zfRjafCVKW1=ga!}@ja8Gu4!9Zx^>ijlEM18K*ebuWSLebTHP$~MVrByj0!ER-2lSe -zE{ai2Yn9Dmsg5e$YpQZL-+#F^{B -zY5TNc0P`i^2G#=<2xF_!-?R^dQe7D*1gpTUaYiTJigO9UQlfCloGJp7Z$r*!b^GuZ -zPl>rhPRjhw4^$S!%uN^ns-*`EHMYC0;sWdy0*!k6hd+C|CgYiBB4QvU3%zQJTwR$9 -zj&FCkp;|A)_Pxfy6FI}31`G8iG7+@$RtRN-Ax<$z1t^AQ<=3Je9s#@C$qtxvjVFO8 -z&tG5M^BHqLERk9mw4OYqfsxLdIYF=-*`IJx%CHoqA_Do+rHi1MjxlRUBw0X;T*elr -zFo}$yDzb4ZzMC}s?M4Au!os3;56R@}GBLWSM~Vf5u4J9I^cihCk2q3b970MyNqlGe -z;fNqH1}&?a$Vb(YG@vQAXjm67r%S_DulFbQjhB)^CWXsBxnt -zXgx5a@T8}E8??P3nY<|q`5?(T(140}Co -zT^IaY^kFKEO5D+7dwU|?p@#wI1vW8mDCS9KE}0^}p*INma?a=L?t`8#eNtjQr7_2( -zPPaw$UYt0)Jl+)LFe;cIzHr@G$&S~|Vg+N(*p?aH4i_Hi*g -zqC%PGGEK-yDsxF0kuM%Etl{0O%=dQx!fI}|C5tJ{veNQ&Gez<$u*57K!n9Ylhp%)) -z+66NQDYpA44Y~qQZ7)Q2S2uCfR2@yxlv#CHck+?#WAVu1chS;W53~7CP^u&~cXuy# -zL#wi-7S%!-ov`j4C9Fwp90g1P3(FIxRaY+37J*J-ut}3SSOq>18-mKV*wKez%<#JI -z-oL&54INE18mccspWB|T;=PM8OLFUM?<>yWfD&GZV32e-wjkE$ACSt9MLrp{r_Q1{&Kh>7fbLE!pX2 -zLM$O)gjTgaOK1{<;3fc9K&Zd12afqxF&Of+BDPtbMZL&n1$H0#6LH4E`28=j+$&9J -zND_Lx4szrqvC3lyki`=SmI6=LMfBlasy;a~mG|Gs`^BPzv4z(XzUpRt?W!+L7fSba -z@!ak;&_5J%Zy%n4KnP4eb_#!NbU>eUcfw=>)3a-8&|AR^R9-Zgg?qZ3IFX!`#0U1h -zN}A`t-7PC<)F%>vm5OG3Eu4_4xLolTO(b+`{Ba_WAOA({i~knC-emy{g*OTKZeZ?6 -z0o6zbNg8m_XlE~MH;ErqTe&*5 -z)E*Q8=&||d6s_q(?e4OX4{qi5NV`**SekXEf)NI*V-}l!(ihfiwB3KOZiUP`w*=6I -z+Al>^>9i?1k*Scj?d#=R=vjxy`&-=F_cm79*b^~{iXq4wT6bbGdT^SwMV-9 -z>2Q~`(MgaT2NK$vC{7fA>A}Z(?PP%~29^WBLTANcrtc^%UMtFXg-5J9`2DKRTt8_4 -zVSo3A>U#vpMqlp#P|DmYz&A>BN|O51q^CZ0e({t5(VaevMQ?n%4lCk{!?AR>KC7cQ -zILNjLCMBgrhrK9_zng~W$9Mhey<3`Y>Rh@i8elSuhCAxQ{yr*(EV$i{#Dmz%aq$J>RCsQYvfEn@jO^5$}rkO=v&D?5wu~%T(;f&3F`K?EqmCLj| -z-X%+27V8hWDjLb(yF1}=#wZ3SFI4i*5poij1OVsv$2(fK;JW)%a -zJGN{|c)b0U=6e?oZE7PIWu#C#6i6Da%yAP>rRFBP*70OqF_uyG>G7dYu?v!4;W85Z -zX6Vxc+eDU_lX^%Oq4J{Pr7=5td|_rB-&|_}jBGeXDMpb>8=EWfWlUpj>wM7E$beyx -z*_-EFpl3#H{cbI1wP#rv^V{45+)y!pwFWmMNo|odI!X*jf&TFdUFkApZi^U@b}#Ut -z)i0)744js-+UUY|($eY&lMwfvb^9SrR>k0*tUuRVjS>}uw@?^jcn3}up3Ly5c6dPL -ztI))yh}zDb5%@8vf;>$1^4WG~X>jhO4n=Vewvn|=GjO+R2Y6@^Td3#bl?Y$YMceY) -zYbywuPDpgbB1JfcGS7mNzZ%Yv8S@etC(2fe7~HaF$v~;THv1VfE6;=G3p|{Gsg%?&lq_i&;leVX -zy80M`1+nK`l#Zf$i2%rqgQ29lsXJTWSp0wm>jWyx(1+Y+ZCX3D=;_(AoElmza -zZNV4WLRL9l9Ka0}pRtPPh2xTml4*fP$y)xp=O&5C{&@L`o_OK5akmP8gWS?!^K;z` -zwsdh_Pe;vhL+XF_%*98pNg|8HK`=(OW+mZFZ+>p!DhqTWehqnz1$xFgF9BZ!CreezLiw*)_M_6)8Q;iDT7)E4e? -zc9g8W=-cNLM7JH?n`4y#e-ikPC`w-sbq*k%o@4TnJgQ=$m8bl0a$_MZ0nWpx@u6MB -zzm8|*%c03h^K}KEEJQb(?3`u -zC%;c4gJX+uwc7F#T1ArKKiZS&`97_7qmh-zY;=L2ry2#duH0j{0&20JzXaSPs+9(p -zplhUa(JG!UPamG16V5B-0lfxnyuch&t6!f*g+y-?GQ)s`THcXe;pS3T!{8C%%5;xU -zdUU`YotIG@!P`-GQve~eI%(4h6`VX%%p32rfTl8}d!-?m967Mreuh~>zEtCQ!QZcz -z;)Dvo)eMvfD?7Lf`2?bHd5u@ikTNJ@WjicCCX8S{JAdyUEC1vU>rXbttVBZLC=>ka -z7n>pMkvaZiSa@Dc6IsSGk+H~9*~^yvuNPa1O2Gk*qKr9CR#ATBFQ7L%*pGhVwrV+6CGM}t=fyjpBpFFO>?C1yW<87Js9F6Vl2D(PGx&5?k4UDy)k -zMrF(v#e~(><`cCH$MSjH#1BD7mb%<9UKbw<+x5wit=GlVgPP;YD=F7Lw#k~uYhn=c -z<<^^hsNN&31MBS85y!E|s_uA44#YE&~h&9)L8ef#p+%D2vFQ(s1~6p#pvYc3wji2@F@iuOtOGXJX!RJRg(8F)S@v?}bLeN;&3wc0a4iObc^Q_>=RQ}x42C;Dll)F}0XBeW)Ww{&FfKLa8pYtY7Drm_E -z7&Ve`+T??wm<(WmA|v;j4Y5?*jg7WYuYe8+N2UtaRP_Q0T4lH^Mb?OGUiKN%c40{3 -zJ@i6QZ}A%-^8qaCCLBX@znGPZmIh9DTJN57iFB9kS_k~Mat*U1ZZ}$BfMhM<1}-_t -z9e>>MZ{zBk$!PBoifrmI^d3LrkDMH5Z=mY6%E4iT(aFbvRyiGAy;MNy&3`cxyDMgV -z0Q8|?-ClkwZrs*%%$1(@riWjuLQbO>;vI1$sP&nEq -zKU}}x-PgMNQWcAQtpG|ODL|zwq3f7}8Br}2`soXpY*o`% -z?jV?fjBW@KAW6n3uNi|+7c;GcE`ya58Rp52HLCvyW>R`eKtG%eLa-*a-#hdZGlE|f -zz!P5&O;+Z=M9L~PX)dgs#g;4qMdZM85H7SfXI5lFD_m-FTip<>yLo3Y8u}7xJ>Eji -zRIdg?gxDBZQFwtEJO*4P(`gh!oKdZZd`yrjLcTXHIJEe{Pc+B|@_q)Vu@w&Ykm7}? -zE<1ktxV>rPHEYUefBAGsW^?b*j8dZ%uEWqeppLBJ#tj{49=fl?{mVdenRc0B`!e98 -zz%Ti+87|51=q=bA{T9fzoDcv9V|p4rkQ;1fuykZ0(1R+@xIE)0vKn~?qhRMxzou_{ -zA^)=Xldy> -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 -zqkGaU47w!^VW#lZz67$eup2$wAQD`W^M^yGW2 -zkqNkTGFLrH2E1f-t}$s=n}VMeSjm)l?;o-LS(Jj1IqHXD091vH`B<{TLf`0bkX*Sj -zQ??~&(Nz?c+Z@gJ$Z$b3BtYiv#L{ -zU0osafH>?bX{|4R2z{#;T@vVDeO=LuTb%qK+iY%<(tG&1P -zb4#b;CC3()3rVmyitpsyGT86EL>$ZG?^Ha7$I|<3!}|;M{k(Yp(cjWv{hjPPLv)p3 -zZ`oSY0%jR%8&?rx;2rtO-A6_Zt(yNlcP@GZDH|Zkl9?$zL{W!Z$ -zx|RDv-q4ndIUw%Vxjzi(kS`oTSAnQK9AX_CrfL9;l)k#O4X(SLTugqs~K*(9f8v0Dp4$n81Z!u!OmeEH7~ -zEUD?PXp{Q&ODFy+7bg6y>tG#5v_!Dd73sE=;(%MEh2_YVb9bIMukd;N^r(vsO^K -zHV)`K1;4*{y9m^fLmkEHkEBgA81BKY{b|}H*E%9r*AR_YccW4 -zaVU5R#{hig{Ke9(k)%q}>S$kd%@nlYBHgX1N_*rbY~Y!DbgdU|KuU7up_q09z7JvV -zc%zGRgoSCyfm|bCL$%MNEL^ddYXwN((|kY7Y_-``pHqJwKOnFN)5C -zoI!5~ZJj0hWMxZ)=mSMCkNAkVhT`VgTaWk-Z_gACvaH}Za-v;lq~qw1pAviti{hk- -zR~6*-3N~5G(Fq-?RHem`ur5ZXxlX%_$goGKudOs(nA~Gb4#NnnC0e@;3lA3w^YtDc%nXsL -z=i^bnnDrT&@PYLRAdg_BZ}F=kUNCg(vjnIE!B*K)fYce!xx}6&t&=FJd)t377%T03 -z2|_$}6&Hg>SH+x;LU_qgM&y`TuIy3sC>$sy -z74qoxrC9#2dR?@P=IbK>h&B$u>&tw7fDlcg@#^Z)e5RXSQr|dW3W-;0+9%}48{qV( -z_@GhW&7O0+qo7y#AyT69V{bwfKtB}L2w-RD@Xlb6wh79=cq^Sn+-A*YCyQNV#u -zh5wLOCHW?>g=TQ$tbu@0qu41%3iadO;@GKB;+g2apb3Vo+ZlU1Xwu_(Qm9fZ7>(70 -z*6xv80`&+W4>7Q?s1D|R<>usQQdvGBrt@%qZy5>5X;=fZNJj9{;?hMx!}~n)CXve) -z&Js(V^BTckM4=5+SJ{-Hs|j`7oVd6pAYwUdi(V^=dc&p)7BsU_lw0e#$t~-kw0pAr -zJ=2Gv9E>JD+w|5Q`lqL&>*+6O_`0jfu)T|QHOvWUAo&+6A9-?@+_iyfE4(OeJy@g$ -zJM__uDN2rAmp!41XzBy<7_E0@Gzg451(?`%&9r2^&5W~PY**a7ua)n^?2Bbs+r1*= -z!a+#3xZNekvlJKOhhEb#xo!Od~^ntatnX^fqBJRX4z)2ohc5Qq$EFAUV0A -z0f-XoWKHU|jHrdtp#xn`Pd@ju81O|9k1w7UNb`|+iS?%{bF1ip=UT)DYoum4#qmg) -z>AOQa``WSxsZ(tz$#w3tB|Ysr85XdcyB(Fj#P0)`8~Uh?+Zlav%Rt`5o?H@~mIfWD -z5*Itj=tm$mxVX@HFcG4p<=!wQt>GMM&pSTuR*XNIFE(DS))@sS2~^kd3dFwKRx&Tq -z{owr*g|ckmTABuJTm-Hh!D0=*??BeXe#w#rLm86do?Ij=9i?Lxg8j^x1zp+I6jVjE -z7dd;bn@(XxwKrD1AfwyC(#^ZoRt5vme8BsSp~kwNVNb)>P38HqPv+IJ*OSU{#j>MI -zC~H_OAro}IOfd3C4+I8~dD22FHkgH*kB2h`icJ7UZpqz|0@+-7mQ~~jpuy*M*&h_WkV*N(P$`vb`cO?#3OsV`p -zv5f)2Ws|TC -zOuB?l+A4Y^=pT9wm~n+|-fE-%PsG^YySqad-%WXCDEIQV@oC)Ea+uOX#|iw#gzhv@wUq+ -zq9x^N;E>VmZPoiVUrwBu;hjS_^qDr0c^~XqB6USR5qT06BemhMktzVc?A&DORG`XY -zn9h4v93Dho@T4@6-8fE&(M+8D*d+|217A<>zLq1;AJs^3TEwhQG`?#?7e3$|JlJGg -zRFOd7vmvT9viO0**wIDLo4n*Tuffx?ry9G_W|~0Eb{8?RqAP&`;)$8)v%sK>GRP9t -zV_A7mr|pz(H%o4E^(ia5GA0tthj!~7*AycPVBEK;2J1fD0}z3fU=%SJIS^P=T61aK -z@9Z2$IPx-YK&wW4JA>E;`IT(dKb0KpFab&OU!bqe6juj4$SuUhFSL|~?IoWUkBHoA -z%h8PhVA7zOmBmt_@y))WE1dhWY&WKme3{~$p;%*}X_U5lx3o0i$yl&&&8fvK7G*ya -z7vsoYXpSz#qz$(o$2=%g5%>WMitY_EK2~L~_iM*J8P%yUfs0xDGZ`=t8}_hYLO+Fe -zo;HSuE4nF;i8o?BH0|_=HV5y=*-#KPTWfpBW*bpO32@zAN|ce+Y1VMqY};U6 -zXr@|LFHV;x*J@fD$$G5S?H{{HGvW&_QwrQ -zhO}6(CdI=u2Ta3I8+es{JIKt?N?vtfz<7+XZXH6HOh7w?3fm#*x>9jMdSuCFWzLYu -zaU*4z?YRgISPMjxT6B6`Mlw|T!Lmm&HCHA5Gj*EUMpsm*F2%PZtjvd%>lY!(7YT$) -z&RQEybBu=9{DYKfK)s&X+f&u22~B5`WHeVIe2T*7q;>NF3OoN>H&FT)Op$2Z(3YWf -zZ$LejeUiz$uQ|Z_IfN~S*nFS`U7HsrB4m^bvs;gf<*Yqu_;tn&D`WeVORah=e+gPc -zra7YW-GBvyG+Nl#dCx?aD<&wov2LCdZ5emr#qt+m?3>~Tgv5@Xr4BtgwyT?HBU?gb -zE2B8xJ*dE9%B -z#?LcF+d?dB5H7q6gXTAYM}YVTc^81;f~S5@#NspJ`b1l2HJkT!FH3V_+g?IknST|4 -z;cA{CL7l)GgJ*^?66Lb4!o4g0y^r4F~yNDfFLD_xXuD9n=NNoq>Y(gk@Ty -z_(y)DdZ%6Q{X^*}^eC?*FG%6bHw!NbmKbsg;UZZ~_8G@;&*lPr$S&5`*L_CYag#I4 -z9$Xhto5oQ6e&h -zwlnL413Q2>@D6GQYhMiVP}PflMYcHFFfxhY}VEY -z1;X>shjwr+0o{d)ujKQdDDmJmFzYwb^?%ZystN#t>Zhy%fFH-z}Z -zWvAt{-pal3Hys>yD{wlnkBIt(So@X+aR1Yc5K%On?&kFKF!)EeF8*OxK1i!XK6S~f -z-TE%E4%FjgUh<$gfAYXQpG -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 -z?pXBJGA@OAOtPFj~7lwXsgK&nux=;i$ -zTkhs?-zF!>RJ3s*xb_>be?7W-0~=yjMg(XaR6{v#fXFT3h`2U0@SKMZ){?V935Awf -z*>9GvK)xZ=as_G%xw~7aR`iwzs1zDOGN(^UW4%FssAc|k-e%>mH0=$2}VoP=iTJb64oR(C#iLqMhB#^E14<*{qBiM&ah -zu>|ktIfIP|{2R6Hm`oKlgDAh#(t80HZyOxinBrv@y3O%nPyKDNKcAMAXuC~Z8ju1a -zNpl1L;?OB*!*Q*Lua1)zz}ukXg+?8$$K8j3@$4)SU*+kxH(!U&wViR!OYNN5>LMTHf{<8R3Kc*FNyI -z@K4p7?1r5)u>gN$CzbDMBJ^xhSM9+{et!GL -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 -z)>bz)7X4rcLH=5DONg())Xprnefci>!BfUY -z8;Hr!$Iif!kAmQ4jZ|X;6LSw0s|T0}1wsU`RF0`>rJ*RgTbMshf<&?p%Lx`b+o=!~ -zuFMLd^F&HDin+&JMlv&;h++qKfP$%rB5iXf@jX#&6}TOOF4fwA{i7tSjE)BFuf&IM -z-@YO16Oi*AjEV9~4F-E?8J^N(87E`451SQhdHt#JS&c4v1mB4mmt1Cx<}a|EG?;ZJ -zWz3!9aI`Rc3l`#*H5`zaIpo=}U?_b+ceBzRN0+YT2ZPjUph>b6c8wyIfTj^y&hz4# -zJ--&B>2)t?l19&m)dhQ=@b=gjro$o6yRvE201VvZooL{&jEH+&J*@=XAHVq-WNX+-YPJW)1GeB-NPQw!yHI -z8+~c)?PHfXoe}I*tisbYX2c{mV6SV{<~63A0&7;rvrUhtacVzAU8_}Qp -z1TsRf5_E~K94bUm#GQE9_`1J*xOAD$MAPz(|m>T*{DKABiB*;g7AIx@Mpu~TdO -zv6$%H1_Q*!VmmRAP-pI-um(A;&A9uDFUGB7TAu>`>qZmQP*ZK#ZfIh@<;P*y0xlKH -z_vy{g?6Ybb9?22fRJgfB2TROp6Ad~78+w{uH6?8g-YxRoRSL6t$iS(Nxf>Xdpzd8m -zAxMQFhF5wD8CF2xP6?MlFBR9}xG!^iiq>vI70MOX=p%_37531l;zT9bbpPDV5Ot$) -zc#?gfpfDRCY5K!tmLi7!5J`qr`3BJbx~zwG!GhyJ4047CUB_8Y9iF=z}xWtdY*z)Gm+PWBbaS2taLzmlWBYc3JD)Pd!`Gb12e -zY^UV~b#&U>F)`F{q)L;5941q;3=WP0%#Ql#n;) -zK9ku@j+2818>k_+6hJaN2nC{PQ@}dpL|G;%f!Yh-EOQfHut~F0+A~q>rfg=>k2gM210*piP=YQa!6baffmIVbEi^*=em_T3OzW?>JrxRI-1?kG+gqz;6J@WOg -z3p-NAv;9d?l$uH;qnhM4!#&6yvWclZpkoQ}Z5b8qX_J9=l_EA!WLG&Jq;a_Phmsd} -zys?#+Q_>?AB_3TxjknHIl_6V1Q`b`bHdrhwImU!w5_~6{wnZu@^JU4`vlQ;5&1Gojg;T${e+gM)Y`_lPTlUA;?G0$fFEUtoGt -zX)KTjh3;Cn4~Ap_OBZ_p@VKK1Iyn{uz(y;p9O_KFn6opb&hacdCXSWyS_Z?l@Q3is -zqO?Y}H{>md!HP$)6Nzi0n0}dUL`+Yl~hDZvHlB2GsWr -zmQnmj;bGNX{;MO1=75WSoM&djG6QKtIw=_?iihd%PydG?@xW}SN6I1d@4Xvff#P(B -zUjT`K*`-Rs0)Svm5M{5hSF4Sd8VDKLhFOub~ -zp_pyAhcyXji0sUn78Gqeqqc{^yvmKXE0cX>%${gc+1J&YR1lKxL#WxnTmKF8#K;h; -z)q}IFtLTz`3}Ggt8dJNN>l+|Up#syerQ2i==H-krJ;>&+AK0K;Mb11ZwB{BFEl1N2 -zfW=%{Emj7W$x8ipbF3nAODi$*N-Feq*dIIXoGe@wqncy!Mzs$(v0rLmZbJ}B1xN{$ -zNZ-=F)jQDonZ=qhH_~G9!fFI0s2mDj7R2Y#xsD23#FnqD8%%*wRz6^cmWBO4U)#Fp -zcIm7mO!}QMG#ufP&uW(V!>!0jCN1fb*=_`NFHfl(M>anV16)k35RsTi3q|H#K}U=` -zT8z?y%^w$Tq6`vB7;ZJ0w3w;sU{$Qg9SCzti>BU750F5t5pd>{yXFq4m&vEx9=mTo -zgHJH;7KPs1+qbuuT@Tj$D!75XBP3rDD=?2U_LZswr%W~YdP@!b{m -z?dw}N-54ZjGjRkRIP0gB7Qw*n5PPC)QWFnLSUI?}3>4zGCCik^GJ)e@_x(nW6WN_w -zml~O9P4-}uk0QjuRVdXhk%bf6QiX?uYKH~jw2zSM2)sug{&UVAD=><2)qHT<#Yb0W -zuWQI+hfi+=_J%CuW`4LN4TNJqpK)> -zj}>PiQAZ~FN%52=Q+b9bd%D8oqRH@*1^WnT?~Z=fsWrHP?A@-EVziZbc%H2Z)6@Rs -zo(>GkaRXqpwWpRK4^+`Lu;nRT&X4XIFwpft#I%{DGY>{=Y%fQkT`#YM&G24bT#c$A3YfuRCpwro6G6{uRU`*G`A0O#SLP& -zk2CMC>UWLYmqI?*jOn0L4$T$LYV&AVqHzv&H0W?5bI%F51=OYKgIEjbfPER_(h!^m -zj8lqDP)H25J+Zpm#E=5=71Le{bx1LeOf8|pS1V1=7K5L!P1l0xx?9JTVAdK8u1`=Z -z>y~m}G|T+J6a-fG(fsap34wm@3OTBtL`f^Go}E(|kkbVO_1`9!9Rd<~?;Yw&+1 -zI88LQWEUKdi&z*42|(V0<(HsaYB4DRFWm)PTk7*8Y^*J=<-VjOX(-qKJ9$dF9~8+uIm%f8q&< -zD_~X#6zL3_+UHcJpSq}j$7y=Ma1K#caffP&E$GFEMn{V$Hj90d?YJZ=VcwywDs=EV -zvic3$U+2irF(7GHNeYJ!6vv1{EzSx?OE);w9`o8M7L<(=KQz|AF$*_IN+cM+k-I%_ -znj^RC@!XrSjA@&FVZ#LkvYW?fhP@vcQbLkB4;*fD%rGriz`LWR#f_$xa7#BI|O;{-|pn4rmSY -zIB9GZMwqd+Fel1RmSPr)b^TY>f&3!byxS#5g_!|QifPBXHOhW7K1#j%IJsq7&`O|x -z%Wg8Pism>HhaN=mVq4tZGiW2aBHZYr-9Kit -zKvT+Rj8C3Y>Q3{f(Glgg|CF4**3A&oa{HBRjmVzpYC_T(Sb^C<%3+a-XezSg|DH8S -z`l@JpG?RnsCv7KY&w%)`U^mWkrVXg;M4L%A5ICa2M54}≫bjt=dbmNRFi1{lk8OcCko?)Ni|c;kvoHcKq$E&BJjY-J2w7O_o* -z=W#yWP=xrrjbpdGkx}H@NQ4k?jf)gpHJHJn5$&fvqpTWFwARs9Pi}pFKmpNC{$c(- -zHePspXrPM;QUxR}G4KYCA7@d>DD7BaNRMbe_vP*VJI4lG-uhv%RobQ=U2FsVGVKt% -zxV_)9Os=w(bx%*`q_ac`k8`x9V)Z!Elbnt`%_qkYfD>A``B$c8X37rRuEFuk74&G- -za39#C;ETrxN82)3Q9PS9+iF3koBNGOVs28*smQh8%*d|Mqhf?7G#EKV+!9BF1m83> -zHD3`?L(+<3xS6NC9+0q;W@G>@x?rVL* -zq;h;OfGVqa!SG{o09cTpzN155VzUJ*#w!XGta%_xSIW9A(tNLX^q?g*^qQp+ -z&>F=_KZw+O*&SBYGu|Qao^RjJ-M_gr}bns$1mAzkPetdq=tdFfQfA{JpsHxHHwLDHyM$ -z`)%}CXSNJWB;l4?Ud1ImD{BH6EqG#!TY6fFCm3$kGR)n`h{s)(`XHf!wDg*2<_j*0 -zV>7du5aB1c0olP7CKr*7@G1TF)u(%y=(?q%G^r90P_+RK!q=H=B#cEE~+Sk -zq_&%+p(4_%BayoZb9C+(ii;!rX;wU*C_t%D65lqvKzL@E;sqmo*m>tjUS^%_<51UT -zKT58*BJZGp*qAdwzdy*_48g$6VuM+)Kq?*K;Nk>#?xe<<2<9X&P6bHFpN2?yCa{gu -zAW29MW#9b7xM02tu<9t9g64Y_=9C&WYXV~=>kiJX!?_O -zD&h*b&Y>M(=TD6e4L#u-{*fVZ&vV8<@J*j)I6=55yL@Wa0T;Wb#dQ5div}*g9MaGP -zDf>JP=*?5D@IL*dFnKDpf}rt8ea7C=0>10kRtJG>c;nRZlXFi3_TH#22vXtO2PAmI#XQ2HWbJw_UI&`QI_!xb0QMwTe|z{>Jr=477ztr -z3@;FxE-_|EHc3#L`kYZpr?{ism)DM=m?d%1H#a)0NIJfPxZFu~n7jKKDs0dkoQPR} -z4bZ?YFZ{sE=?vwPNllEX9d(wXJA&|Tu52%Cw>a1jsaT}RG6W4|G(xQ!V{%dtWz;Om -zZdueKXc>;8Qd-Ooy*t}JY8>acn@0aPL!JIB?UW8!y9O<((w>mk3-&0ntkGa_*3j|> -zsQMJ(LR^92hHA#HJnBdoK*bO3&6+x(8BO6706>eNP`TC4Z@n>ziGAHiE8Q0qub=P- -z%}))yf|r#Uj%)>a6ta0Dugj5c -ztl8pJetQo8yCV5d-o-PI!l@Zc#<`<4J^;(xyM%89Llu`pj%eJAyGk?2s*2ANa& -zBl&?~Tr`X*lh=tNhxyzpwBbyl*$rplLu!6#vPx%nHeQr$2o^0i+mWYc2wi)P@M(k9I1uV3HJ<399&~y5rzM -zF&*FD;8Dj`>B&E~P#=Jm8}!K00zLPhJ7Cmoa!zv#y`j!n -zg^@9C3EbA|T@lM~6)mbKE<6L1F(!hWXEX~DhPvcV@aV^sjYyhk^h{39Ek(`r -z7mTUZ_+;!mZ6Q8)#yzci@B}|kvhAxU -z&l8V&d>8%yw8ES-9Xe5YBD59A3hGrz6@iY|<4w4?ZyHe7G%h8_%6Yeo*NA$Zy# -zdoWYr8r9TLIMTsp^Ah;$+Yd8w1w7ps6fJpoQ`mT|i454qX9gS19dy`afY9a;2Sqoc -zxD^j;h)o|^woD;V2&%&vliIWcb>;0f+4-c9#+8xjPoLir(Cy5$C0!*#aD#@#Td)@F -z9Ra`gj~6F|xYEq!Ql+^5;I&QZD&5!M^F)A}P3M~e!R-jNaDMNgcudJhtfDNV1pw^6 -zqH?2|R!GjQv;oAK<3aO78+My8U=#sC2_EIWF`MNyTt=$Ep(r+WAv81JFj~YB<~>)W -zY7qYK*4MbX35^xH<+E*WZ3Du@gR;M6Im_G(y})Me-S~w^gl|wbyw03#7TXZ -z3JqNEp8OHPh|4C|bjg0hV#6?@gRN0ZX{9Cd{v&(w3F6sMkE~3f_79r(5WeqJWH; -z2Zm-T5^SI%7J|ucxFdhUss{#f>ITTh)7E-|GPpC4bg>tOGdKjSD0CG&>n50_+z$Vv -zNn$OikDZJr*QJQejp$g!J(`710O`-5C{i_S#ZXHkU2xCYu$HbyH#IC{BK55thbXH6 -zAo(LK48{xq&z+p7!)lP|u!}Aer_Yt!A5}04;YWBa=PE;vq~om474UXKipRzMn5(7d -zF_V*#99qU_TP^`kqbAOo;KQXt@W?%c3612(B7j@ZiqFxs12w1MSUn~xr6;&R^;q3{ -z-DTC)3H+etLU*GGV%-&boKo36m`@^ -zm!0eBw2r_!4K#XqG8YH706DH^m?ZsF#ENslOsJLoYXl#VfV&ACHevxltUep=JT^ap -zYf+ZoG@eMaMMeh_ -z3V@$DNGgko*%h9b%_?v>$9bA16*yrrnf665gVSe{7ar5vA -zrsSoKQ-2CM6$N*d+z}4jI$1iN>27$YfhuO5SmL>keT&u@Em=h?$Y`VMa3YN+F}m(q -z2HZ!50b#OD1eRg*86llh0-4#n{kXs|y&}XoA%mdn(r+m@TWe -z?wGb~uv6Sde+%YoFdlvB1?+yoZGux4uwR$6$C++zCao+f={&uL%+dQ>$-;E@oIUp1 -z#@hEHXPEB1w4rmS@0!g5(^6n999F8hr9R<#;Lui0aw;02={`Cj@UEFrZ7_z%NCj0H -zED)OszBG5SGl4cN<36z6@`PTUP14}{0qA>kNyz_!ZR=x&rHd6%E8nj>1XB}k(M*p} -z0~z@s1SWvB(G3|>J|sv4ye1U%kZBZX7pI~(Bz~$S`$dNaftOJWyMac?`b`8($0;G% -z_=GS59ThT>T(NY0v7~N=WycAZD%Q7v`zl1C^nwRO6U%Z*Tr-4I=$tr{XGqyF7VhYs -zv|#6kwv|#U&>?G#qUo>qlR0CQ$Ql!UQ0)pqHS@)x58w`L<(31mY2(;{La+ry!FO|J -zQi+O%0HXk7jqH(w$O8$&3DGtmB0X*c-ZSxx1{WXXS3<>_^Kg^VWx&^EnnE3^DAu@| -zL7w;;0h85S<#Nwj#MQPGeql|aC6*kK$>WMZoY;eVNpYhY+zAV!%zR@fl8%e$Kb_#_ -zM$5;P3Paczn9+c~=e7KX-og?(16m|y2dRM%F~NRhrA0LEBDte|U0oBv^~56k&JHIXmXS|xS%Ml75P$GnZpi%pr%?+ -zupT#Tn4_mKGA>@eol?}PP>2#IJ+#{k_PHdF(zAPF$%=XX0cXnUeRa1b$1Bx`P}ikM -zfUdAJ`W&=~p(&oJHlx={bFN8HG`MttI>ePVbi+9#K1&rwAP6*Ha%K7m6BqyGzlNkW -z1_aEKS!*EHx+mkG5;7~|G$tBZR%PSM7mH%GvB%^mo{PF;JE1m_al|#Z_bgEtUMN^# -z+pQ}?rpUPc`1Z|qJvegJg}N0lBpE99;EI>xR1OF(&TN?ca -z=_QR_U7XcSFkAMAr+c^1lLBG$;?q7y>-VsF5;s~HU@kVsN_iN5>?97l>OS2?dLT6=smSO}*W@w^I{S$z_BA+XKE@s_~uA1fSX`@Y&D-JgI -zU=Mf*YfQW_&^CiEW#q%WE^7Y~Y@v|XF}S>{La{tD+Y!E% -zrshrE9kU<;V~n)r$iL92s;2FbhB8Zz#t22kMR<7)jP*(BegP+hF~=8b@3WDecWb$W -zPG{Zb#G2GK=&?_=U&b25Y!uUSBxW1AoR1{}tkltFMA%Th#8GHnW1gE>W2+ZfcX)H; -zy)kKY+;lisE~Ws0gv=eH0O&_dXU|-3oNmS*U?%ycX#Qz)|n)-aC>0To4G -z82Jir88dbcnnPARja#v2U`1}e=^9wTeSH}RHMsjqb9%Ru2dbX_O&_rZ3%M5ey -zv<0S3<13|~vezA{xHjb#^c5-_({31vvTt3CDWZ&l04t-z4$ImDZjs-h)U|HbLn+qL -zL%x8#{yMhzEl8}bl8BdwgAAeAC2{3=MlijfPkk6<9Pb|5o%)EG)!Abk8DrMo>q$0~I?| -zLw!X5UF%WiH*|AW%VDAw^irL%AE-`L)~s`-?AR9g$bA`AlF|Kt^KvBe*=LaI?3I%AxW*XEJdA{tC2yKYu_UW;K)M|}lavg<@?1)|#Y{v2(-2y$E -zgJ>>GqpwbtczA*$^`PRfX7f0mK`Yp7e}O`YcM`58kT427qP?414ZOL^as6bML|$8h -zw1R7Q$XX@EqLG1b>DSSQqYBR)rWwPW_JKn5IW -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 -zvo%U;=pf*yjkt`U8^Ob7+6s -zXMqynXq)QV2LMiZJJG3gOtUQ!lSV*bEaY&-d!ST~#+LP9cy#lmMu -zcT16InW}=AxpZMxxR$e_-0YU#I(W5z-CR=UtQ%)q5{tDI`DWgM0ftT4!KGeZ(PxNN -zTyA_C@Unwkq(iP)M-mE|y$C5?96;V5P9{;>mJo|V>{}(d*e#PBbP;pOg_bHrT^900 -zD$w-89lVP57W`zB_h3Sd?p#f4mZsKF=S3Lg9+px?H0we6{*0su>5WLQB<0~EtvJ;m -zS98lT5Gp=^Bh>DpPJC#)P$RrRQ@>=JPnwfHYp*E*e~foPI05Y8$}&1n$fBe3M? -ze1p7n)`afvft<+zS|;mZWrQO}h~pkLe1HVgSH@WnGtX|tG?jrk%_L-dWrXEHC1?0gwrc# -zn)zM3MVOlh`8nJ@jD|Z`8Qan>1j>uS8KQhbeqDOq9AddSmqdE$Bh;$qq+i>bl_2C69b@nJ?xJRi~>w2(0e#u -zIa0L&-TfqJA$khNh^ECGiqR9l2S!}9g$$1)&5v-Xr5RFFJDrdk#Z+Sp#nPFenZTvXOxS4uvjiIlh3Lx^0XuU- -z5b)M}t@SJ|L}vDZX0POH^9X?R{uxaq+4h}Qxeu!B=uBG@az>5Twl|7N&zP-ff~1z2 -zmLy&dRyPwM8!DOhlatK3^a4Z!Ydvk=J>vlDT{#?v@hrryqKy43f=8xx{2T*C-aEF3=eIAxdKLqP|*+!r#-p-OWV1?)MTf%`RR(Xg5XL<6w$i{_`$^(TsYF=l6WV@(1x8d -zD-A9ibcS(PB=!hdg270lhH%_MU9aA#hHwwGJD{sg -zCl9Bxa^0%PL^g26fi7Qd8&mqkA7V1e7S8l?amRudAWQE8BA$fHN7^CWRl0Gci#bu_ -zWDS~Y?i@vRveA>dpEUBv0b#fW1y^bK!*&FIKx<7#>Il-tzO)_VKt0Q8ZbDk4a-fL- -zW#A#5LO(nJCYDs+6j2qG-%z2U1&>iQSNhI%TgHu|16{JRx${F4rP?P@sWEeTmG;ZH -zXKa3MO-SM-(>|T#>vJEV -z8(4tA*1*UhPse>hF}OrK>>y$6-}MZHdlO2A>=mqK@G^v;>dhz=in^Y+7Knv;>{V -z=3FX1ipt@%k)|-U|A=E5*TI7&pOMV6rP^4cBPxCKZb%`!M6|KP?Gh=b*qULbSbpXV -zBTtYdtdJjptQ_!w)=a?6u+lyQs9Xf@=gv^#UC$VsW?9^4ROYcZL~NZupMG1jwa?|k_u?RfEL%~mpVL`+1(_%* -zts7XN&D0QO8=~ESZu^B|NuPDE_6~RpC@)3MxH>!p|Cbl#Bp0Ea8mGIAfnr5qz)mmLGuH(Ave -zzcEmBTXa*aq)amH9W&wQ;Y1-qDXBY?XBT=pvIbd{xdG)(0;${rixS%=Bs-DFL5Qb| -z^T#)SYE_5I2p3E!(#j2_T)dO07jpD8p;N}iO%y_5%Sr{z8QWkP+y>NA-cp09pcrRe -zEu6tY1BrQ#Of%9c(O)*o9|2Uz){3KGZKkJ>R*uFDZfER<+eGq(r%24*LlnHcR;4*% -zZZi}J17wQR90H{{O{o1N -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 -zxB79prh;+U8||8-8I8>4YCILIu%MZwgHUf0l) -zr-u$2o?DWLbjabNJ6yYA>KxTwBjfUdv3@7*(VA&U6(vU2m*Vo2o8XHVofc*#;t)rk -zF1O3bC9*3$V#6J>r-a7roPMNxzgYiLp_*%}7PXc=;VQQg1C)51)zY* -zd8lPu+D7pF=JS7os!dQ(g||6E|D3^Y45+Drijd4Bc4&4OED%sA%L#@FIF}m_dJYAj -zL!MG&{|sc{G92shvV|nyL~VHI5h~B(rg64^?g~m&S{Z;B^GLb8jo+-#oiI}j9Sbqm(V?8cTezDOW+X@FcJuNkKnvBV<2GVUl(mYLh -zM^p%}3_u@JIvWC7!YP3*BymfSzad+pAfple89N|(Us-`&P9+^zzQ{}61BAMQOPYt| -zMUF+_X3WjG|I`387YWSdn{Ep0UQj)(@l!-9V&Q^S`u}Go)x0ZI{UF8 -zV?m)JE@^v}*@K?IC%d6!M&xc885p}T9(gaWx}*UFCdwJ5D$Gr6Svl4$E*B=qjY{e* -z?lFW^q(b6~6P+c5Hp8TCNo?x~lU_WAHOXeBrc=(Py}hZ^vr<_2Sy;5i9f$3_s6<3G -zjogd??Lf^@XtPCmW>m`ypYVU(Zlmx(Bh^!0G5r3Z52@*(;2dZ -z2P`&B;-=4cf;pG|Cu;%44n80x*rq1s@0rPs!ZJqA>DQZub8CFh=|LT!0apKxHux)a -zMKYfyOCFaXmnH3CY7pmRgbbt4nIDR4(0#Hn>kN_})`_#NTtr;pWfls|EWZZ7EmNQ3 -z3Ccd4WAP7nZVRT1lj{A%A$0IBfNwEfGJrIhzBq&DQF}g?)Pk0^q+!#L`tM8Mp1cQ? -zcWI0ozHBkiNOkTg3>iWc2kC_H&;*FA0R$q@#xpQoRzF_E*j&<55xYz?eKVb;E<%`7 -zxUv=VdWqaz0r6F2-Ky|-5#|9Tz`~gFdmoq#EtFCok7)CGiORd`v~Px@GONuo;k7ud -z7y_A~u_KptHbo;5g~%9iWfmBYPPGV@&;wt8W|3wJwxQ;pxxBcT&M1@hAkT>oMca|^ -zxH-Sr9a=t$GKI^Mwg+j?!rIQ6W&~p21KiU#=_zyD5!_NKNzUOHyCRBDB5Vkw;9zg|s<{Z-i_!^7?qMehAG#c7ulcHYSAc9v0SdsY*uB -zB0HK|qYg}9i2W{Uv*XdIV!!rKft}3%x#hV;I~6koKeuM*G6!vjDNFVCjVYYv&G+|j -z3vDJyk)`R>(Z0T1(%r5`T~_L%FdHZIThC!VyXMe=_(~hXt|8h;#EMEx!M{GsF~~eg -zIY*7HW^cvW%`q=TR+feHjd5`LSf`Z -z?@#FE;Xojfys;g8C%$GwX7(*^d^mrkPz=(%G{@EN;OBJxl)v?=M=gZs}5&awg<^h4v(bt(4yg%-k7L -zEKP5c?hwLDGB%dd;(Tl6ivqLaX}tL)G{DBdV^*BJg8xFOaCNUE(D4s=r@9wWie{EnzYd=Z$5 -zP;-Y}`G6-eKZu0cfif@YSdcC1EaeYQo&%`bOrHo`H2mGevg`ctT;_#N^?5_21R(ck -zfG|;)Q6I*U^MX49oBNWCyljvZ#WFooW8dXU#Mr1c3-A>MDw-vr$&&>}f4rgR)mxeL -zKqjKd5e7ZdDzA!M*Fp9YDInWGO%R8EIq`m5ZJiS~ett;IJ} -z^J$OwAw;7m?S$(w&q^6X>sQ$A8TWR^LZ{9o@;*+4^JJ@OhHQi7%*k2V_-AROlesEo -zR6bIpgQ6QFy7nSQwXH*CB=oHNBR!&Rtl6yFpiM3Ks -zl;4Rx065&tvj+JuP9HjfekqL(-hN2kgdxZZe8*h39o;eWhHa -zI0mqAipngy!4^Yg%Zx;jTqpVnskR1Y~zBH~L!JojvJ0j@<;>XvgoH7Y@{WsExEG4gtF)Yien{9IY -zGA58&4GjqX&!QzMfn6v8p4DZ*2%@l}e~Ib{TvK6Cs4x5?p%YDzLJsU|P|hXkCBF)S -zkRH~Ygb!)qlj8!MW9E0!^e@E#@a?kJBFr5}2c7pfb!b3v40w-m;;W38HTesexX?O4 -z5N|#l*ij7o6t@Q5tjs=YP^sNPjcFMT)yy|W5g^L?;tgPuC0vQiDh*`aH+bHx$}MZ) -z?c0xYr#Fh)BT`Xy;IejZ&$iwFXY0!KCm72uH^Lq -zPdUoVTXrE7YcA^{0oCv1OKvnQBBd>zF#W{f6WV3Kw{5v+THA;0h2mw22HY9(f^`(q -z#4MWzO^q{iqJc0CsUIe*R>ySaU=7uYqE?Kq?3+x#Bm-M)dJ@&`K; -zHVmAj21e$jJ9l@(blgQDUXJVpW25U#=^Sa-v3vlT4ihE-TVva2VXAl?Jo0E|4`;TD -znT~&^D`_R2B&T8h6XXL-AA?z$tMCk`T2&!O1JZ&Ma@ZOQ;)*^UreZ;-Jg8LY%e}&E -zQ1u*=s3^9X3tBKBC4W@N{+xlgGV;+ -zb@0lVSYdGu*c^&U*X#?OS8>fFTvJ -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 -zrr>~}^-IxK6v0@3&i>4!M8C -z1Tp=-gTcGJsvkdjmv(kXKYlS+R%ciE^9@(f=Rx@SlUp3^@IU|ND*0}I{_71C_zMHA -z?4$2>+^cw;PyCk*rb5ZzzWx1OhG+GkZb_d_=tMNWLHgk5BgQoPfB!-qezkYxujs+v -zzJJ4A1%o}lz5V^|W~@+e@87?X$<-V9{?|9H;;;4;zW@3L_n&-Y@F5ht!rPDcZ+qo+ -z)PMZ=w$JLezy0`&k9oLT&=NdC+1qg_>G;ogxuPU+_V?Sjo7e3AuXp}2&G!#7cnTW) -z_0A)oOGUrle*yobcTev|ZGfYfIxma2(48pW7H9tTF5w@A+`qnmyA7&E`0K|vxmE7@ -z*N?s$`MNX;uiF -zVxyyL{b^gGe*4#7zw8sTeH~dYc^e-{C@;mcGYDEHorT!}@CTg{mWKG)#ys&r)ff47f-pISHM3~9|-_?VD5Ft1-f(;F*3qgA3G&G%z8 -zK+i^FC4*Rxd9$pUD%G+2VL{DEb4rH;ayA>BmKNv&S})kx^lwP8BQi||U#uEfPu(B* -zEm^_z=GR}}&Xbfs{3VwQE?S(0maLeTx1VqFQ`(WS8|By5o*emcnC_L`PxJES*y3D*sZZ$k4{PP6j!gmDRU9rCjvR;zrSDzD_k -zkavMLfX?(^`5Ea75*sZuhCjH$O^{dbd4}D7{m>78{iT<4h8x@xeRDIG`mwX?q?P`(h2x|0 -z34rXVpWG7D+jcPfaSNXs;ofwT-)@Kgu6Mufg^p5x=qJNfZ*&+;9_wZTX}9PNjuQK1 -zX64P_ztWpu3jD-tI|RLK2L~n2(T=qofB*WH{=Qdl@4s{yDbPvB_g6)Hry{_b*f|emjO4{nb4u$insP1*>=9bY`%Z{R={lDe*$MS9E1A^^{?;W^*F!b#q;Yt -zsAjD(bNHIxzUxN8@nsKew{z~=kIT?F25yr_Vj1FFMEIM?(zJAMy_Z~`(;=7 -zksJ>&rU5(bCw)7krEhF35<*|Y8X=Zqc!nZy(c&1n>`^g#{E5v~c~i`wi5u~4%zh)v -zvR8kxSA;>-kA9`i`?t9XsHhdwn1bc{R!(0&5yx3+mCcgef=hZm$)%^w3m9{{$iMR& -zu93{-DQUVv%*l_p^oG7&Tn0$9{g?-ZVRx9I`VRR&_7Y0f$R&QnWc`7vU1`>)-53kF -zI3T)IWo~E{G3_M3)M{~HlBxBp7%3e8Om8WKViu7k`3-S}IB|87B9Fvf1vmQd?`D)W -z42dm6qYF_eCV4U21z0XQ!g43sC0wrwH*E#e!6WNqwFUc>`2s98pFW&}Ie8lvYkFly -z4Vl$#+I64as}#5F)or#HYx+!6-SomfQ38q`#=>6C4}Ec{f#(%xz6WDgaYKCJ==OAvolzx4&(w;t@nL@;iR{_)o8;cqHaxZge> -zcJ5)&Z;iT{?_(u(i#=BQop{slkP{ujm{S?u(r&WF`_!ni_0*j`m3>k_a-VH%=lL!# -z7A?1seM?VZt(x>w_2KqSQ(E-I&=s#gI&?Mck7&2^*_SJt4EsKScyw -zn~cHM^ilyd?|T;nkvKb0#y7ymX&=;)+3G>2L$4>FUWWYX*r%7*ExoLzq-SsalK+yw -zKYXT_ZT{}ZlwL0RjB`HrluzE}pEdcrQ$9ugI9-yPUre2u#!<*@ttKr`_SyB(M -z+FrNuaNqi8Ygy#-cEo4vZo4m=^DH<_BEVLa=Blz={kxx#^2m -zaoI|a-a;MBB!G!7;PBOQYP)hvZ6f`;^Cq@nhhPfUS4q1!;do~5@14~3WxmKJ1;B&l -zkU0R>?FfZJRx=hb)2U1iZ$7%Y1EfkGA?o5gzw23<3c4 -zs9B-zme3KsAV==#&MYv_)ke=7i?ZH3_wb@C&Y(lOjM~bc;NEc%K6FWSVPF-P-n29l -zF}bVj1UK#(i!K0Q`BtP!-dZDEJ+o$^=_HN~`@*OdO67HqOhcRN;_|E&10{Jh^t~u9 -zf8K`aP~z{IbG9$@U-`$0*B9LZO8x}(1QY!P0g@8dy2FE?$pF4$)O<02F~0oP_-rvN -z`t^EZK*pB@GKFuE9Xo$8txq2e9vuEL%ZK0Bdk37!9A57uS45%JJx|uZ?V;OUThF;l -zvgef`xS=&Blge=me0HNumb;}9lZqXtP-q5NR7RM))b=ivcOV$a=`E0A)ALgaKF~J+ -zodY(lQH_=|kb|&Yp7;29F;4ASbE|U@Y3~xD8XTk8FDJt_|h8IhOCn -z(>uNW^0%jVv_Uiv=RCi9%OElHdI7?y -zq1DWF2#ju05M%m{aVZ2yd5r?zQU=im)_eM1{6xi(%@Uck^v9GTcGYX|5LUUKrm?V3 -zX1l8jHM8m4(E~g3Iwrf8>&g{C`*BX>Ccr2$R|O24@W6m;6Rqg)KXjvl+@tn30scXo -ztG@`0i$+~5mGlZ2DkguV*Z1ySGZ;*@G+)Xv2J`+EXiaj+7uglZ6LAqxl@HoL+_|LR -z*!ZJk$^IkezgiM9WesoD5ff9ErN(0*J!2X3!6yPN5Hlhi5{ThFYmF7}>k%y8 -zH{JKtyz(EwEZKntbSVwSggy%cGu(n^+QI9r#ripb$lagdNv!z>SgNDrW5I9>HZKO5 -zzhhTuAOPH?wQ7B26+I@p%ViiQH+o}?UxrZgh6N+_qO8n?#EAQ(&~K#kQM}6A3=N_U -z+S@x6wfK*&B@?w_zRbTJ1&Dloqq|ocDbTa#9{g#-w=uhEja}uWJSgPdtXpxP`L01!)dYm-|2VUfI0JssfQ!MHn{di+JI(o3E -zk@P&0deA09-CbfJh`#dQ&^b%98SeRPzSHF6#568yG3jf8OxV@{5rW@)dVKakX+(OK -zut4t_K4=0hS~+;Lq2+YEErYe!pc#YNdrkar7M&1(S?@fleugAjRR0P8W%M@x#{}WLLa79IPfqdlx!T -z`8wPSZ8OY{+$Rq@c9_cEPz*q>-Z+IxPm5e>T#rNk5fkIW|APBfTshQFY0d;%?#q<8 -zRd3|VOLm|99Z!30BlJ=fA -zRwQdygT#&2N&EKl0RT|)IA%JNrfa@`x44D}g8#!SSA7G>3Yrx92kj#G|AHNjb`7vR -zs_d_b4BNld_R5y$1fR)8@t8k5#X -zt-R~}&B$V7hD@Y`IBB8g0DER?6c4QO%sCl`@p3C;zQiF4r&)m^Blm+wXRHr~`0E5k -z>uJIxv(jOg*EzE$P3q$aCOx6a+t|5i7_w^EGnIPpz^;YqnECj5XAk42w0d%jD9kfi -zhZg^jj}bmwCdDCuvj;)O`wjww6QLf5bk?P!k9@QQ=>P}yhB$i;M_6@DyPwBjZ!5i}M3GK<q9C-V-zWkkC7<>F~)OK6+!O5{A>Jhn#UWi{nL~k^^bxM-8WclCm -zAJ@)S?11}3du*>83iNKV7&VXs$Xe-@(OaiC#3>ZAjNp>7R)fC&9Qr&!OGDmt!tG8V -zVZ_>Y;9oOu9sxZQ&>F>LxOx8x3))$_=!3>ac{vb^%gq7RDpPm{Rw)VUPEb)sbFiMa -zN5VpLYOGO%Nk8c}`|SZm(97&R=p3|Ryb&gxMS=o!wGM&})j- -zH%4qP{EmY*@W;!!$gs<+i;-U5v4!v!L#Oe*qBop!yR-v$Gr_t^n8D{Z2@^?B(HF$x<-5dQPJahw -zm<}1ayY%^Er+K+xcW~*rZXSx3DYp0Y?$eV2V?YC+F*Q44)E*JDn_kMqlwlo_FThKF -zUV3IXx$sF&EWM00(J44X=b5|cdUBx?=;#%)ys}ieEX(96$(!LXg+T1j$oI5*D_tQ -zjew}1Ul#HK@$|u^Fz*XL-iO6#coHz}X^z~3OD@Ub)<<&wCYu5?T2W@$L!CSm)Jm;g -z41GXK%l|4d38HJ=Y?)8?iDuxE<&c?Tf+@QXCTcPJ!8t3;TF3awTI^hRLX -z_8fEUTq19bz}bzrSUBI?ZKKfBQ?Q&it8EOI9UuUH_kVJ8!T(vfXgs-gO^p3Z02RrI -zU$-i$wjrY(RhVyEzVcrn2)#T7s_}@u$$@`tNI2S}OQ%i=b0v7&nu9q*bcld2Db(4waGAJDITl_K`}+F*Sw%m( -zwD~ga4A@fjPX4DKrj>RxMOI;R7V0BSC-$-5wGKILv{880f6*Z)>y|V?MRy>keoF3W -zvz}`7dGeIu3&-y=bO&^?g9$LZT9o3{tNZM&3|IweTE~-LK#Din(xY8-1^K0x*6rE= -zp+_-mR1Z)X!j#upDiMH@O|E&Jb|%E%av^PTZoRphPlrsn-a5ys>E_63w`*9B3A=zZ -z>|bhzOEf(FVg^SBc1W$9-0-UkglZpDS;OrX5R4U6BKvDnew+dONNEo+ocCL|akX?o -zFlrZUN?#aoIC`|#FL^kSf+P=GDYa=6A411Op!yw1!S-6p!DEN^<6(tmZbF4bQf*gp -zWTFt!hF`2p?tlER|MUMjV@ZpCcN`feq%640moFu)47WTh1FQ^+Um+VTKR~;3tuWzu -z*D_nNap<>tZAl&Wf%9g4K~D-XE}z-(GWBq%Yg2Ie0Gm8o<2vMjbwdH8At#|xSl4@U -z+>9vP3<3Z-PE1;8=RKy}DAaB7m01GJK=2Gmth9BYaK?uPjKStNyf;FA#za(_9^5*o -zT_ONEK*qmUf1q(sKXyTn&U!;(c>#yp1o5$Gt9NjyT8B(WO%n*b-oH1pA}e4u|s$GnjoqEK0%e0cB)bt9-l7jF6N}9FUH^ -zrWBA3&t6eRNi1I`6v(gomfjZxR>TFSjZHbA{uS~AOH3rWE_2(T-b%p7>6E}NUsIiZRF@Z -znH`DN*i8@UbjO8x(PQPh0!VY#mFpEiy@b&Xu*TaN45h5qwb9C@~7V~>lImf^l!U2~^ -z8#NR#Cw~qP;5L{&$>&6Hu#b5iq -z>>MYfRlFthu-`Hb+ZuOMXsU0_05HwGZpnuXpY-@43M`icG#8jzwRw2+=c*IHz@u@d -z+~;~QB{{lZDJ_fK@!o^xs*74or|>XdQ%@~d;)}E-%LR;4mQ7MG+g8Y`OqK_&ykm*) -zI;%s0(MQlsR@X;HT*X!m;)5ANVW{LyWX^>8V3*D+yR|pq?YbWJ3tj5o&&+u~rk$Nx -zsB%ZW_-XI*uInUgRtI3}Qmcj-?~cvH)}fbV15tnz6ZX0f2L@ -z@81^kJJ`OZ#1_j=`3`kb6qM!Kdth>Q3Tq(z3#CW3Flc*^19&bou`%F~=TF3%E(L(_ -z>iQN8qW(ORmo*7KUgl{g1G$Qa_#MD~Bs?_va-NT$ICfl(wB3;UTsxX?g#+mezh*xdm;RjAvH2@55s^juXd;1p-;<&gu#jdEtOL(PQm -zO`%4BDZm00Wmw5&ow6p6d^j!V!D-Wk&|@lZW($oiG-5PKQGh%iQB`NB4ck#2?!l~g -z3;2xDe$gDe0%D*W9Xg0VS2v|#j4b2?Xc+54BIj^q -znZ8u_#hg6`Mn&273XR&-=7R6gQGpy{5-kbZ`5Kr`9JuhOyW|N*w|N>mdJY{j-zb7K -z63%hic^fM9qi=n4DK40v3Z3+P!`S6rRr#YFx^!pdEp4Cllw8B4JZMQ#=ES&lRMFN1-a(gCp0Hrr6vZtiJqJ&nYM -zaG+oa;}2suMtd_rdwd2rba~}Nn0b5(cZ0_b*U8D&VrpEs`bKVT-yn-BF%Ew>bf`%- -z&ZNN^Rhb_>t!^yG{J{_!+Q-?xvi;KQzgg>W{$?X2g2(ykaRp;Ok98Ayd3&bVEx)YK -z@$zM4=_<%Wzk-nA`A-ODR#&`Z4ZSpywCS#>9P19>EC8f^mZJ&*X~DtpbAEa(AO@vr -zw9Vc1Y_$Tc)(z_^Jsw(L6lX4w -z-0^8nLD--=o<0LLnA~sioaB@9QwqhZ!GN-83@aX$e~7g0!c8eYBl8HSy*w)ilb|sx -z2bqSJChk&#AvypH9P}3$UVbv2s6drJhgW$z9>it9hGck*23eRAB-5i@@%$`{@_-rq -z-misCb~-VitTOCHFZkopd3hx -zrl@3>Ce&hpdO)4ZyMPhx{rMB{)XDQZ-7gFU?+v{3oSqsjjqAn_q?s6kos27aNptJ~ -z(tBQdS6_kRl#OY5Hyybpi=O{!Yr3Y1RSb)$s*yRF*5}C-`Wp*ieK~ivt$s)kh(a)6 -zn92zPqF*?4C+p^BIuV?L;_S3L08?LnuMZ2Y_|qs?T*)eTQzr6!x;-pd_9(v?un54+ -z*@Wy85S%7@&*^YpG4xz@sGepcvLzHry5o7>)i<4_#lC%Y>`E`syA9nQZB}Ll7-qs5 -z+2iSp;JG|aE}G)cX6owLY8QhuZ~%KU`d#l9@(Eb19=oiL6xk+@Z3TFTD%f#(x?iLP -zc#f5$?>|9Bnl6^{EpRYU6Vn~sj2X^IkM3#LY(O_lcKYe#juUjxW7`AiaN3HIXcOW8L3<~%ee66xJ%(l*McVZ=O&RsarjHq61x_!+ -z(>%{9a~=E+-aEojb#^~ -zw~+_c51`>WZ%^bdC6^apN>15nJVV#@sFXD4K{{5B4uI)g&WFW(`m(mJpgCNgW(93> -zt8W2(LNLy&Yk{mN$gF;!b0so1EM|s728R -znLlGlD{Rr(@qpGw)~c#eijq5@JhkF5%`*jS`FQ@5gOBWP=mv_2^0c70 -zn|7(_Wo9Tai}rzy$C^oH)z)>-&6U+g``~dtL6{aYv)97e-N{mLJVlefZQ+iWF2$mo -z!P$}t{BEQtQ2RXS^oHi)jV=?Xu+f0b>1j^!klP$Qxp&*s!)c&yy%sqc9ybY;wTZ>d -z(omgTA;h?3$MYF+MYc<@qvxOQltHp6GT@<{FPNKE^W#N+CcVQBBo_3G2^7&v%{}vX -zn<-zhbnGtZ9isKzSfa}J$J5Fem9S8RxSoZ#XnCchA$c@@xgoL@WYM1kJ=*m8vtNAO -zKuMc-`#H3UlJ;rvbtIoI2)b9NiRoyoMe{FoAyfOVj_OaNE3 -zhBUl?nU{BZ962B_rb_J~@(^9hG@!=)bn(y*Uh|`y;{k(rsb@~8i@PKMugu3Q&x(uV -zUaZrrB>gBb_D}o!LhEOSc2iGd^EB!@L{9^Uy^QbV@@$g$`JNA-_N(H%l|x31;)AAf -z9Z!McIo?9g4(Mq&SZSy1oAMBz4$IbpJc;7-u#1>S8ZYu_82huHElRSe`SH^|@-jL* -zs^kv)`q`BaealSEC#y=oV{iKTZt?k&HgPV-p(O1;B@e;6KbOuSkVrTx=qZ4r9)vn; -z$_I0aR2I+Q -zN>05u__~yRQO4D@y?oRAUa=sGWwZ&z&2;?Hj?OR#0d<|5ppHf_UhYx>=N{6>z!)vD -zUTSVa3t3);K0zxadX(P=_ZbG~SXl?Pa_kJL%F2>MZdB=5={n(4y!=|@&o0J9CQ5IO -ze4;^E)qJGS*LWDXad67Q{{k=xcjmpOq6uWGN(OIw3YR3~aQ>5k0+>SDI?2yp*z3AY -zm0skOg`VxZ*#f)~&h{v805f^FC9;Kn&C{Fzj>d!Z_b@k%0mu$X7ePOn-`5b9M8b}S -zJRgY_pXXD!pAMd^l=22iL}V9kr%pQNiZMz~AkZ5$pRd7wdk?S_@9E4(shlj -zIS+0vjXIv@HVk=dbMuto%@9sK6~Kmew)t}N$MIgjjjngn?6=yu2nnJt@Vf}1+^`to&)ENwg6*!0S3B_fb^r$u_y9ZMJcHfMd> -z^a?W*&AOS_Ud)3XTh@4*<}GKg7-MxFQ2CzyiuJ6|Uzjr@T9%G|m+5OTg1b8nyVw9u -z*b3z1G-UQ`&Lv}zlNDm4g$qdYY)02%Iq+;_(To%) -zp{f2nuV_}Jv66wbNph&#B>(#9Fjy-?zZNqn -zJu@~jR>Rw;M$Xw%>B#Bpn5)R9QL$Fl8 -znyM-qBJK`;RP#YO1co%JJdLAv&c27f48v&%bMs*Oneg>-%7W2~V!D!ng^!C+z*S`R -z?T6q9hKU}Lz_kzgJdp5~jlzR<(s)FYS(Ru(z5sB35~pk0Ju_FyJ`gIPmiglKdi%v_ -zC+Q_nnyaF`Q4MN)T2694VJ%+MS9<}{4hz0l5^lAkXEVp@Q}3PwvNl7qu}s1^7)o9e -z13Kja(S~+w9ryXxa`9#{dxZ!9r&JV#|POK9F*-S{R)XYTZm&X_> -zegi4d@~9skFfaZRb4$d9LGFv`dhhJMnbM39f{lQC(hnZ-0V?7};yv@KM|jwFBT>P_ -zNaP}u%U3DTDU(3)$Y2i+oIOV5wDK0tJw7sNXWAz%(( -zF^0QoE$?$`e+H|O1a8*!U~wF4)@RW;)Wpc-Ok|ym1($55?Gi%cq0^Ha8<;UiYLiHo -zF#pj>CJePj!Ab$Tuc%(gI3B+1bUFeR3)-p4>-+-80Sa+Zn?+%Y(jOK~MsA~8t^geB -zt~bHMw~=k=K?Pn-w0s)>Qg2WeoVf=;(9;F$PyP_yMACJpD75tH*YA$3%=;P;macw) -z*kVhQ(H1t%g~kX0r6hI&1!#L`_|2QG&xzSbjCAeDy7xZi(2utdYekpu&m)$7E>F-# -z>X~AxENurNwJVaVLI*fMC1LR!P`;gL;KtjejL~|HC2mLQBx# -zx3@%YTD(SskG{RMTKn**5wPinDs0hd%rOEq8)X%c1-XaHz*=C4gEvplirH<%T+=2a -zT{DTY&TC -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 -zj++?b8|Vj -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 -zqYo@=#>g(Sr2YE{v= -z?zr4NCll!|uS*;8Z{s>9NL(+p!hp$|;{|MTl05#nQ*pz(dyCWIteqq1lWN?pvf0BHuR -zCo;~HTWeGT5aguvlmLG?7=>VMYQHx~C>9*QsDNk29-6F7fr*?|ZquAuJc~_PMvBOR -zox1j7k~M3NG5a-Xh&&L -z3)f+|I>3&s<;L{^L=WM$zrXY}muZ{n*Owk2MSjVT&45XMLwCW}>9;_y<%9z`8rRd{ -z0o`CTgQX)2fgV(Kq~)1Dk=4jE7!^Bz_$7ba3;mb9CwK9>@t@;$-6&{XU%hAYWyCyY -z9Z%fa6Zxnn%Ruu+ngjJcm!%bolsK@+382ZDb5zUCap{l7hBd%+PgYjL@F63_z@k}b -zcDXqQTO1CQ;9I)?8Jg}!=99wK3}gk%Wc$RHNPbb}CZ5RrQmZJK{~k>)tUh0E;y)5; -z8#a70A<^nr2@}?{$wig&!)x^lkVLfNBv>hCkw-&KUt;Dy0H#i*nSsvGDo7R$+rD>4 -zftjqrx>}EUdO+}1?DfZVdT?kW2PPhsLtxQldIO4&beEx$Dz^>Av+?Wl&hr!7@gQ^z -zx{U60<#kOCrwn)NKbgeN`cZG*U3uXuX9qa|4eO|;mblIZSGZ7IcL;8g2BtOK#bsmW -zovV-HGPJY*y#Y0F$pX|@W?3||@!{?cG!+?XgQQ={*TgHxarCIJ&D!1FrWNynQty> -z`1bOvQ#6`MwGpUf!XfL2mu2nIMr(&RbRaoYoN)bFq)L -z4Py=H)KYebY}}?i#s1jP*=X>JwU9d~eyQ1RUEgGoy7-50$;1Imbf`H;RS>?W<1E%w -zIn8_Vmvd!Ouy|P3new+du1r@xxEn7r0H;jpRI)PK14KY3;|DIo4;q{1V?Mvl07F2$zc~K+W>a%s52H9$gIWPhJaX?j?>}IZo1?Idn!ic= -z%R-A?jsXO5c1D%L>B1eOYIr=_v`TJ!ZWStO&@+d*yY8Tf@tCbuA6ielt(8u(ewhkq -zG!cOtS^IUvo|pC0$>(WB6*r%b-y2+=n+S$X(;;8xKtRtrU8l~O8^wN={>XZ(W!ov> -zX7Ir0^klGE%wTAOw@Ahc<$WeAl7k-1K_tY6qA&DBzi-PRaX!i8-fv-*80i@TV@9hdgF|(p8Zz|74p*Kj@H#!aX~~p -zR>3$ZZx`}~f=NZt#SMv65L!G#F!!E$CCCdnIoQ~?rYmwNa!W|CS#u(apPqGegN)a{ -z`$X%%XuG3yU!{39T?6^$k%k5!yxLYNU6%<}@7!aab=zrZZj2o_SZY&o4i6{%h&R9d -z*wT*3wE-kjX{f`)^zy>3ibo17F5FLrCTo1xyWdhAD<2f`h8=3yXL^FJ+pEfVn0>KQP`8 -zlj&t|Wa(@?KG#bvY?U%(2W>-`Q*ks_4!Rt=qr^di$dg8eym$deFLzhbL`B}?NKV<{ -zz{aORMUC`H+Sn*i+P(1O+0G&Fiu$^=Rj#ft+`kR*V8=WQ94Qy$=u$Ukvv4OexAZV3 -zt@VSEm{Q~oa93`L02NhVbeC3%F@2;p!kt~o#CL@msG-**jD&lRORuZwXmursXz5yb+6m -zb(Y866eC|MwkHTw986P|fmOf0EkEAg^5}C~Jh#x$sG@V8)Bd6K;Q?M0O%~q2<4A#o -z&H)O#i|vFA;$}2Ewy8ARFp1a(KW}a{ktfqMK8@*ulu9z?k76Ta#Q|xRmflTz7VnAX -zAos?BB1w+6eWJW>)GePYcTOsQK#LLKMPrDz`nvSsfU`&=KymtTeHR?Iv}uicGc76v -zv;+>s#km&*3CP~ig~~ue=3y;Zgcx|m>loccy8OpA?{n+@a=K#**0GUUE@r<1^uK_Z -zxTAf5gOsg$m^mhsb4~Pq41F}0VflV_pGw4ubiyUIHgWo4`MhMv^0fT0FLSY>+O#CW -zas@MROiE@I+m<4C*r>#U0MieeGO!J;X)Kp3N;?x^xtEb_X_qB@DC9z;PllN8&1ZcW -zBc{^;j%PV}Ql>gJ#c3ix&S&B=W?=`!xighVxII!MA@4L@3S^DqoFp&Im|`1B9r9$5 -zuj7)R+ebumAQFx?S7@K#g(+gO8-#bw^68pbq=*gljFyz{j!{VofY?PSFG(CZAUxfI -z8JxXZ;ZReep1t-{%4&>IMoD4pd_9I@Qx43?0Iyi)m#JxZ*V*9Fe%t=_mkuP_L##?> -z+fMk6M3Dw|yGip3v$+`QM_77pajH|hJHGta-)5iCvb(Yv(_&si<9Wuvn)WBTAhWS@u@VDc -zdd}!TtSY+6G}gpc$2n~W(j$u2Vx3;A+pRT&783b{WsYyz2C}72rRxY12WnN9yW9pH!PPY!tS#*@g{pY -zO`eCV;QR?!8}o0b##AQTSOyK+^b)Qqcl5dXw6xYcEdUzLn-T4LN5)r8x|9dz29-3m -zsy%HQu`PCFrjcu1eAI4~q6R&qZDmcVR?{r3b@uJs-!h2X=u=*}eY?OVG*3i!83`-! -zkS|Fy&9S;{kvZ(P5#a4kJF6#7#czYW7cJ-y8k+R|z%gWFE&cC*e_K)iRP!{iinBr+ -z>%H`PryjLxbK1G=v+iLn51P6ZBtLd(5|tI2i;l8LVy`tJz~Us@3jjiCdkjtFb``B8 -z$gyh3#hg&sV0a&Mb1#LFWIA>FfD9|VG7hlBD4#hbDGs;nlT04^pbHNp=INMn{CItP -z|6cTPJNL1=8@|fHGrUCWJ*!ayCaXV~jYk7)NVFbk=RqNQ9+`JuGKJ;EDGAaaE_-sf -z-Pt|8(0vcAt4UVSy0@C$#8m=0%84qa4XGWN%zC4q@aO_fLznDwbqn_IDb??|(_FRzRtohw4T+hcgW=)f^ -zsxQ)wb;FK0LSJ8lNl8@o4ATcgf87Z;5}_j6u5(Py@La(z5~9-$I1{TJ=>e! -z5coRN8i6q$lk&?SmPv#omT0;7Nb}ZJM)%M=5a11eSi*7HwT;B>WQV)YW3 -z66ouXG0MDt7vsLgzAeA;zt1oh|NH&?!O=y4PmKCas9?xzXpB6!A*VRTK2>wrDd9Ii -zeNNd{q2p?Y+&R+LBF2~MYX3L1L}IUvha6H3N0?mGr2C*X_tV^;faG|#F}B5^^v>## -z)x0qS3PK4;lwwzuqkx5EnIny~h_X7wFG7D8qROE%|2verr_~57h1VkSZjrmv3R{sw -zVszY-K1F2-7?EK#YzEo)A`8UMi4lp>B-Jl5p&F;zdzZP0 -z;OHT3YVpLsgt$W8x!%^bK-q(-VYy=Kk*B|PVM-OB#_ipNC@3>%F+7lrae9u}r@-5i -zt1_r48($Wlg_-r7#^!9gOq1Sw&Zk7pRnzv#afjEH{r=O{jziyJe`K+DM%#1x$%KUVmmfY~Ap^-jjBFeG1qH9;F_;@z^C~Imi@>BC -zWd*gI6(Z{_)n&XvmXfCYrhXoV`kK9>8@b(jXUrXG{zrJwG>p0@^>L#3)V>6|vbY&R -zTQ4eHiS>r&$OuUW^Ss?XC3~4Z)|doYg!US<939zFy{QlX@Rb^G{uzbpV -z1!&2fdB1(80%%nWL}qV44FsSBxMN3&a$%Yssy_%3BmHvI=ja> -z77TZ5J2lL)fr1j*!pM9l8U&)@Rz}BMppJ~1qw&9_X>!w~3YmG3+=t18ylLzr8fHxg -zmTZKzN$P&fiY*pEqPZ2Dr@BS|-Q<$3yv=mrVKnWjcx>Y>_OccpDd*O1^gX%p4uH$L -zH3P&HGN(_Ph^*HE113YWSy4*habx(a -zK60Ip1MY+KxXhx=wWN$o=^(oW&YyRDC0`uq)6^1PBc$D3{ca5PQ0_uH^)M}b_> -z`;6_4w?QFB5fKG>a$Dzn=0{DBgNa_ -zt6UhiwSy_h=}s=>6tqZ7Tbf4*xKAq7oge3aEPEiiaXMt7-ObyYTf`>F(uk4%rx&w; -zz94JRlNqY~0fIJ8l9MM^J2Hdc(*SR@w`eL@4S4#}d-_tW$wzmbp!p;Rm@B5)*Vwyw -z#jvm#8$a6JS1?Qgu)Hg}qUx)vF`qOSGYs_tk6&gg{^f*_~vQ;KqP&AvOCF>ad@uf8hSYPt+%0BM#LvE&fa$u_p -z06gSbT9$u=8*KavNReGc{74J}3kR|^XvVon#Guyi^5eU@LgWE)+*Q+BpZ^g1Hc!$d -zkidFf(2ZLi{Euxm7s=_peWSsnXqde|2 -z%ZFqy4rTk;XjL^(Jm@SyVPDp715f#E6|lix&GSUUPma|S-RBG}ieTFu8>v=XbVXOAyx#8n-@2~uPhzeg+*MY%7UY&@wJg>& -zOA{O!r}duvXIG85+1|2Eaw^ulwHSolp2N+&PfSXg{|Mko&38qc)URJU@fW!;VQ5`? -z>oKAwf|agNx495Fw_li=LARJ|louR&Ht+p}F^>jFO% -zsEJqZaYxqy?OGmpokpXq*srO -zJ{a)@pi$cnS@DWtBk6rlGctiAh9Ld41$v#n$snxR^eczH;w79S@P!i?b665hmE_gY -z!05U$YQ;tRTTzzwNKDwkGyCY$&fJ2O70Y8aZiamC;}&?MOLK&^X~=qVNjj98AyOlQPig3loE3+a))MOdK@lO -zw()Uj75FUAi=Pg~`C9G^@^Gt_)C((o04jS#&y9SE##%I8)Br-ZC9a8kh8}cm4&cfZ -zPDuN-ro__Tm1?o`!Z>|CT3g#greK(v8R0()5=_2djrur?IpJ2ey4EEbI`v-SWdFU#J$AH>`kdWGgM8rN_Q_h~BOTAT9@StbV+d*SzjZRtF5~2G*5zJ?L -zL|jC1)8ws7e1o@VA_qlUa2Pn#t~1hc^v6#LzJx__(#ESI@_Gd;*eDXCnh#gMQxMj^XS -zyNf8XC#) -zS3|#`59+f-2n4}a*;0Vo8PB=QpC!$csHuC~e=rye?R*(SJcNd;L4#{jPDe4kWGEAK -z%q&;&sCg82)ROVc=(I_H1H{L1{?xSPPC=}zExnDNXdD#^>GY*k|8H)(Xc^9TO9&v^ -zIDoIO%k=?DG{wfNt4H&hZg$R{MuE3@&eshUy~_8A6qO%) -z7n24m`o{1>1-IP;h|#jCnPL;RA!7srZ6F&N*JYa)d*+<8xXGT;J2fvr&!P*N)`)8i -z+C7sK0zPV>#a9jF}dZp;8(Ni;=MWsASot< -zzNrz78F{-XK4x4BY;3e&)T9onD>R- -zlaonh0fm&#!}+~sBp|3^EzBYs!ADC=7Xc0L^T?YdHd{DLtai?81bY#MHcVb+Q-ZE0 -zwrO+X>Xx90<*ZjUTT#>-SJkkfnT@L4(xy#rUV0_oljZN3Km_$*bn)4yw``C=JrrI~ -ze?iCBT}_7VU97BOPCy6Mzu5T1lslKM4TM|aMQQKBEJfJ);8Zs^%gcMtTA6UTMVH5LXl?eTT -zd7!VO-56&Y81rM@<2$go8H}mQ0S;A=6&zzaQJ2bQ}SN0%vs`WLw&bMMo -zkDE@08T{sML#Zz_`~c^MMrvbsMq}LElQ*$tmjtJ!K?khFr4};!5oirgE_4}8#H4Du -zbxcZYK!?`zj*q()$=CvG2B(OmlKSc>hGDtQfc}O@nJ%1g;*y -zV-3ddNY=!D$)W{)9kb}3TqKJf{w%l!T^(8qs*>J|oV}Dzr?8^gI;&og(G9S4 -z(`L1m-Vih&@P1RMu`Ea2^00-mK0db5ygK%JaviRkH?#>A9g8)Df{v#NM*irIzyL~5 -zT4}`wGjsQGf22UMivY>Zr8`m~n=8+2ZQ#7ok?#T=RUdNX -zMO)i7BA!psyxC1ab6$U+HYir<1Orfr^Qj?|F}j88mZ8aoS0yiZw1v;f6`Wyj@Vk_; -zi=C@1f8I0Og`2YjPQlf&{9LbCzsa$3)q?I_i34U6E8kIUV?;2yH%Ffl*BlNp@t@`K -zSN>n}+viyXDf3)rLx9ZEE!b{P4hvRT0xP@60+M@EDn<=ap3r2j)yf^xG3UWFpACMG -zXiD<5G&7&xL3Q@^dnB)mqZT|z5ulROeM5IqOXxWa4M -zYoq>80@>fg-Jy+dZlWa!`_&@;WbmPx(s)saTw+M-0bwxfAc@h*OUE^*eRRMn)+-T`kz{*mX&U;oG9zOuv8Qxj>w)Kwsw6lqVm1dl-?gI)A8-yHe6m+mkwD?IBC0gH_@2Vp!6na| -zyyT^PrxuG?l>Ja#j3axYIl7pVHr#uh@}SH` -z;Cn16x;F^fR&`z6e -z{vjlu5npkcs<#lCt$%FGhGPT?NU5YpaFcEmZ0i;h-jQ}-NQ*UVQan6yz|{Axp;y_r -zgU}4EW?L>57WYsrXjKg&DC*1tTQ+5`$39S!*L|PSNmEevmT_sMj-p -zd#?I)u?r?jMsp?Mrzm{RYBwJsvGc!m1Ev3hD-xX>+B39l9muDOPYQ+ir9@ai`naYL -zn-4UjZS$l>gp5*UcI&fYMQaZtew}gs!r(q-Q)@owzXYuz(;QLxX2618IxXz$yk{cI -zl@b)(SvO6YxQyHIQuzxw_Eqr%LSskIQiq-#+r^Evk*PDd6GXEMN!__=Pgg_$?`t`qrshgXb -z3-per=bE2u19|xhI}Q@QQt3Y)?&~9YI0y{X8$$){5zD+p^^Y7!bx*_1`%fjL(4#yL -zykf3SW?U-oQq^K*=Zc&y_gJeB10;$FWZF11o?$#9Z4Z2{olWrtNb2BSSSW8N&0t*8ViQ%&AqJL>@P&I1tT-KBgbe8!eyZQg4;N=-{wlfzyG1 -zL_6?wduf&^r!Kj*>n&v7ftFpgz`1xqX-u@9 -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 -zI -z$sH8y-=fhQ3QY%$5$hrqi#>isJq+$s-%TsZ?&)fAuy|P4Gs{ShZqy-#at!jr_}5`( -zv6PHoKVZE07WoGF!K$i@(243U1uTNpa;D50$D#aR-*BG|ISloxk`MHrLfAX{8}2%x -zbob8U6DM6iJYnPcq1#`Es=nm8Czgix5HB{bv2BGyJlZ%H@{^(FBcC0vdDjK-7~RL~ -z=3bcR434>^PB!e3^zrquoFu(*H{f~?dplw|ZF;4^PKP!3#W-Zsl2^td4;uEkS`PqJ -zAGJS)J@iKfg!v;eB^^TcuKOaA10{d_5|J}grwj7*(HaE>fQ}=I7cAr%g8>e+8(?J* -z@~@gB>9=8j({Yg^LxO|x4Uk1$l@*Q7fZ&UwW?;;j(!EE=5)OMf`z6`A5F8tXnI^z=o5$ -z0U4sEX3%14V1ipiE7$rJ_5`$;Q2S32Z3cARHt!#Lm9(-hi_~6qyB&gV{or8%Hb_N^ -za*x9fb-X4TFgsR@MM->KJoiC6kRcVU=>uk(b0dRnqgCfk)N5zE-7<{R2t -zT^Amf1ogKAWb%rA1B`Y_m*J`fJ@Fo>IqntIsjHOwU_?%0I>17e;-p3Tp+5y9@89$5 -z+$dgQ<}Oul(V6+@_vD1cq2o?lB&v+ndtHwT|B*AMT2MDf^EjsEfO#KKvNv@xVKc8( -zD7=MHu6@FV7_H^;VG0U?|ZVMu74O!1P1F>nFIo(}syWSbn -z5Fnpdj?n8@wX>ov9oVV2ma8CpI@ -z)HKi!O9t10X*~*4Cp?}kpjF@x`NGigZ6MCLH7AlFCd^$O?%NavnT<9L1Q&nP^)Gv9 -zR}dnGI$=Q5pc>9`1xRj=dqTFEh37f37h3M3q2D_5Ylko&uZY(;OW -zhftw$By;|xHr^W~h^|cG&ikzV^jU{?F*BN|7VBlzN%Ve^s30(O> -zYws0&ytQ{|WJ;G^=|0DYJ@mKL_IOxU;u==*X}}AJEX@TJjD1klhT~!nUma&Hfciuf -zxi65KKGjFtZLN&!1-(4v-f$ubUj|e_ICv>~cU3utRaz_(fDLNmS@;Tq8Cs_BtPFx2 -zszeA_kQ^d$GH`iNBuMTdry9wnjpFLeQzH!$>(=(A5bA)iA`}yq~<9U%72l%>m^lJ3WR*VKceF_|8 -zfao$KEj_y$d5YqK<6JbJtCJI80O1fzqL$^t$(t -zN6z7yYnQ(0^EVfdIdC}m{_l`=^+oK<(iFL~k6d_2U~FTK3BS{g0Rb1r0@M`}@BNQo -zP*e0(;)}$e!Pu7$2*p#p{;S&n!^q#7o4aigssic+j-R-XVK5CDzEFfr$mAEjdPbl0TE%T(VIn!q%DqEv -zum?dQy=WyADW17E0&d!qX~w?BrU3|>+f8T7N~5T8a0{|eViGLO+vL^|8k@yP`&hXh -zQ&w5M)A<+3ODxD*|CRO_`*vi!Mn~AcID` -zj3N+zZ*G#_-g9b)`RKR^yF6Li-Q(t -z@fIF6Qgf~K)pT@sV2!75Xmrdp4CpbHA23Fg4yl*XxM8#k!HUCP=BT|3+=+6~cyTAY -ze4PT_x#&V;iAt89-k5|`zH~)BYb&%BuVhiD+!*3^cOzdU&)2wKh0f3TBk;P=q2_Kf -z&)SAOD*OAF6|?l-PiWgM*x9P)JZ%w5lBZt$;6OgHvA;f!9-5PS5h*)jQ7~AZ$haqE -zb|zp<17CSGlbMfCyUpBJ*49tq4292QOLlpib5sq#oMpZXI&jFFWs4_YY76dK-KRuw -zkCmTLa%N&s{x16Um~EU3>HH%U8+r)Q({${u!5M_Nvs+H-NX;Ihi^7DE-9EZ5jc3of -zs*>qrA~S~in)i7AwejS<35UA^^DR -zVypU1xpTm?tAF^U;cKx=bLoShJ)HrAY-mpb{*(^>;asbFcgRdqW -zZr+dC7&H8noBLQU4~YX>^JFaZAmRr}6NSGo(QyWe -zC$2K|fPciJn2bzPe8FNI^cz621uZuM*ddn)p(2{n?DxwTfrYG!-Da(7O)ot^R7LS -zkZjy{pKqr}F6x@-;qVhszoDjWDFrlB^yH2rC8Zz*4ob=W?GIF>^&yZ`cJ|YN9}?Yj -zXL4b(^Kzdy&YTcH-%kU)Y!%swbz94UZ|d#qGsU@1KPA7azBVz{Pv|c4wg~t|Sjfo+ -z4TlX$Bi+ZdK<@b`krgNleR}RC2NI-TViIiRpKVRP338khmD(CQROGwTAoJb>dbFnS -zut5e~+(BSM0B%v2-!OacmmOnZm?-U>6hag?ICy_64i-yitOJt=yfu&>b@u03e>=B2q!z*X3{7L>K+z<1OAZu+Zgl`Kfq -zNs_dOly5vz)S9`7rw_Yu{GqbCzz{2! -ze3v`J!===6K2Z9~zz*{1+eh)oj_#@?roNL4O>qycc{QNTHb4qCwieoH5Bv>Cbcz|q -zo8?Tmsb}70`TJ$sdNqZf9tOZeqRFIxU&>~CTFIR$E`Oq84-p8MO|)R@yuAxdQPcX} -zQcNcyTjnKfX-|gjm3|Gje1>CXtLO)2zTx_c%{Tnc9{N4Z>xT3sD5*?%wfyq(4hY4k -zetAWncTUVE0J+oY#CAf3i>clbwcRIQ_#MMBUVDM7W%l>`lpF+bnXGr47Es!y;HsE5 -zcaE&+5tXr<|C|6EzWb)H^>>m7zaULQiz1ua{lD_|xU+Imj^Cy@qy1u~h)1If+8kR; -z87OA`+zAIJXn?!HA6c1$v-?vR#spvsbVMiyF2)%NM}>gvvF5hl#;(}XVbG;f8A3XmU%pGH^?*cJk(!NP{u8&=ii84Fu#Wqz{)|zl751z{$Ya=Mg@KJQ9L2k-zgs8#g?-B3!{`8%&6q%c2D*r|oe`9{WOq&61f`mRJ -z=N2nj{sMmf;ETY23Xp6oju+Nd7-@tqBFRP4K78S)dSOrU!h*{gLxw_mfjC1mKxnie -zpvoeW^U&o2$48qi@i9Q%iFOo1o_K}4K6-RIRfp!kb^r&G2@45<0UT7n$tLvnOMpBK -zcE^UFShZr0TUPxE@Jhnd~;o0az{ac -zxvrV+foZ^)m^Av*W4 -zF%b53F3hDW_v{(%|0>BgYoM(Su+f5#69j+~+( -z`UUQ1=q*Pja)NARk^oanW6(xR*nt6N=GGFvONtthkmvl=jQ*V?YhlwWy$1l#$4D`7 -zhx|+m&}gY4e9J1K!|@R-6!?;kbNL>=L4}>0CVWP8j2oJ5P>GWnruiGXHHva*Qqg3H -ziTiNbB&VTgW>Gh?n+%1NGrBA~#UV6(AZ=6pcyI{WmJ>M{nK|^bxtHpiXD*lb7H=|u -zf^84rY#a?`NE3xtgNsspTjJ{Lky~)IhhrKslQrAL;_3#MW?Ca?{=$M9D@^AU9s(`5 -zIH)dBlI@_W3L~Yg6gsUBOEV`NUFBw>mKh#!R%E7NDJ&Ae*tUS)tLss^T=cCDY(gdv -zDk)r8HGm?M!skVTHw -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 -zSHud;OBgSV6115(fDoJ&RBDT0;C6^T -z(KV@whdC}B+*t++@!MQvN@SV9aj^S-BgcvCPOD3eOtdC@u*oMK;^-Qb>gL45iEXLD -z!$Gyf0&v<#$aMtZqYVE!XO9(_^tf6+xb5PDs|#HBf?2l6x)O)hwx+a9qd9ZAWzZr- -zL==fagf5nq8&@0Ln=!g2&Jf*JWDKO~EmW)M -zj4~>>O+6(_RLLC -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 -z`vD|HpL%lhQSO4gXxqYFki -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 -z_E#vBcqidnMhT<9BkH@k*T9>roYqfqN#wO~j -zX2RJ;5#}IoOpN9l3$#dNSky+b-5ModV(l*w$eI|B#|cNv-Gon67%GT}V~(h2`Fo>n -zv7A`+v{-w{6mYn`noRn-8jgel;2vlR++%tKk_1!^A~_-IVu-O%sJ3$&D3i@NkXmuQ -zlb*pxuqsDntz~9$I -zKoETT-fIu;4n`hX+4;|xB!k4@aNoX%wbz>bPCpWn-CA;@wBBjMBBv)kZz0II^x%4W -z-W(^U5-vMc*h?tJT4L`}jEc3IEPes4mL##ooXWHbGCA0fuex(E`~McZF_cCCbU=Aa -zkN7N_2{cciY>5?=`~!h7&Yv;iGs3KzX*;(b?v~}MIsKi!2XUQB!>!cY;!f8m>Qv^* -zni<|fGl|^qYo}fcgg*czPenDlFBEUc`HDSuWmxWO#9Gz+)M_#nkwreg$fKx^B$!GI -zgw7!h6dC&$*n}v2=*C2lfr$BYwx~h3nIIl6_4`?bKrU(d8NCQ(WcR{S*eZHIL05-6 -zL)o)prTW0pc$z@wN|flHRaXEN9x033)^|rC0#H}^I!YOfZ)A%BQy_L|)ODj&IdaScOAvWf;@b>k!{#@@x-XAYe;xEXO<5@SL;9eA9&je*m;gBswF -z+1Mf|Q~=RiU>yq7p>nZ~cBd%uw7oCVg+tD%i>*ND3c5))S3C-l)}xpqbwzc6rm(lw -z>A+i~tjvw8uSG_b`79|4o`+Q66yr>*+Qn`|@d%&7-y3sVg&;2SiL{aNh@%Zd1_7Lv -zTRJtj#%@Eb@Q!51htrx9W95PobD}?)Fl#7s(l588>m}A>5=UvbQCdN{*LgNrv#kuJ -zc10sOLj$Zj$fi>%c4L^??%b@WG!KvPNK`GfWaHg|grkjhNhIaq1xM$Nn==>Cmb$FB -z!dQ+OjIP^1g*nyQnqE0dG29WRT>w3be_Svk+vjwvl;iEaPwZuGSw@$Y_LohbR_dNA -z0(_Jz>)izlE&|ni@$l -zv9*PM#?O)r=(6RUJ}V4=FwPTvz)@qOWD+q=rN&~t7S70|gnO2zQuxqIWfN$m&6usw -z^HPXHsnb_!*VRZW>&l1Y%#=Z9S^~ln@`U_qR(nJ*LyUDk5O;?v@47?`$E-}kR3W3+dHOdHA75E)_!83yR&;98Blgku0M37MY1Xfkif?g~+XV5+H4-FBIg3nP1Ochx -z@&YaGq6iLHqePTI3vNJ4BmJ6US|)5nSNeqby;pO3Fc42VGILHtTJ0+&V4CTLOm_qE -zG!KtF-cFkvn?@SbrNL3@z&VOUv6~~BsZs4(AtQ*LxRD*VLAq%&hb8)8vTor?MF?$1 -z>r9jXXaf>J8pJYDkPu}sMsqcvM@>rT7xn3pF+~yam0wTjYB~8vCO&Nr1KG|qQ}(X8 -zDGuaT)j?PS}4TaQ-GUaQcwE`a|7iifyZMWB7voYg1{E~@QCwlPG04p_FC=|?%Q$;hUVCI_wbn?p}6PY3UvCc&@AtAPzIHu -zywa)}^x(q~Vr02{X-kis6fDe&=B>!AhtQ^X%V^q`256ompnIm3$=qeJcna?l%yBMn -z>J`}^zeH^~c45La@3a6``-mnzYr1hlLzf%^{>sk=D4~l%99qF%rRw5&15mw-0720W -z15b1mZU8s}6A=FuL@lo+hVZDu_ZOkO8%~lvW%y@AVuY4 -z3a)?^XH%X>4c4ih0Tp&&3&9x9Z>O&ByEQ#wwxpoNRjjbOVC-D6X^&0HT=Anx&h!4d -zK{7l9;q*SZI4puU#jNc9>{i|xkwJ2A^OmG7HZOH`j?E&B5j=i69097_FG^f1x*9>D -zn~$NSl#!RIleP-Y)_pddk8Qf#EvCwsao<(K1PX~jd>P#yc0qD7Jb~^)u294%?M%oU -zb8nd1>8TJqVD9+o}JAk)@MBlbWl6IY#kAFZP?!1O -z&bERReg%3idzwh#wjpsQK<2Vpa~LcG6Kno&TycnBVXBv0In05;XIrtJ2GdCb$TgNQ -z;TvQk23&>HnN2<;S!UW4E)ZC^4xuO+qc<1^)`8@}qo0IE4dvsIfD-CngkCBiISTyO -z_ph84Of_OzloxIgEPNBpQa@T(aI>(M(Hs(`KfuPkMB)w=8FD<(ytaQI(5+u84W7_$ -zxB??>m;+SmXrn>5Oe`1(*V^4lD`IjOXnsvT_SL3RJuP&rFP5O|Ld#=Zi;-U>S`pTl -z;uagULFtp{S`=NK^`xNvQ>vjQV3Y<|pb=uFKSs3EEI>b8PMkpo^|Z{O90!ux<8ZDzt_{h*spja@PKxvgxCS>TZ|sI-w8qa3^nhm$6g*q2A^*b7(#y_ADA724iy -zMTFVf-Xj|wXYOiLU1&}Z3Y^Ey-$r0{tr;NDBWqZO&L$F#H3$saST7xUV#8i{o1ycX -zz|1G=#67H?P0;Py`l}0f1#uC0OJYvsGsm}hCR@8h%-dw|;{IU_zJre<7J0H?+DdG) -zu!}3n&}%l1WkJJusaS(7Xv|3tHVzji3y%P`u{tU1Q_$W}DeZQ=(@cag8SZP1#_&$X;q+&!yrq;gR8OP0y2K -z?464v!tD`NTu_N4e;^B3VQWx_%8Y@cinpARiwOi@vF+q@V%>0R2nop)77L*v-7Q6; -zWvU8d=F){(;abjya)_S?b#qCXv~HYfNi5b<K50(+ti7fL{FOX`1*%E9Ksc)?HK#$8k3f^7^9}ma -zSrfXu2XZC@c$ut+l@X2@A&z_0@BtD`Um0gT%sjgl(^LlHG?S3+nE|=#03({G@}u8A -zW*V3}ORnw6tv|W&m!LryPPzvAl0`lrp{2;;LyxU-XCf<3$RJe#&uua15>Bs}X(o8> -z9*J@6u0?u!M$Fk7_xyH3j!{`> -zw@yg|Jh=RPhLwuV4oJQl-tabS{R!vLf&bg=%l_qq -zLd7#R;)sxiH6*jJE}FzAisHBtQ@#Xg1g{7a`Nc`50$>ZBP6*{w=A2z9PL;$-ZLIt= -zx!mZXGO{a>Ne3QPwlP4e*TeqE&?o?PGLM2jOuE@A#PQn_eM}}d*cj09lK<6po9Tp&&gGd|<>yUC01A()|dJTDl=Mx6=u$QOq^A;C#y>;+nhbEj&t5 -z&dkuclxtxZ7$kTt`hFG$cv$Zju+jxzwT=?ao(XKa%!Q5qKg+OjREWk*k+3r_1QBn& -z*ILlhN@QjrX!c6NHV*+f@t+Yzl5yW@nfsvHj?UC2A!yWSaeJen^o;3>CP;3Xc}e2s -zV0kkIvcZyRLpjNwOEW;Uu-4Spjq0e{lO;zO8lu8Cnh^mqCB;?TMe@}-H3#^s!j<#apvOE#xl9$B++XgAwmT>ELyhbF4)H -zxmF`Yn~q|rs8{E+j9MxQVbA8);eAZ;E(&V_`KM_y?VSV5mcww9I96zcX(WOC_KxHb -z)|EP0JU393g9I0?;ncrM#u1(eITOgEUWU}Ff_8a1DpqMy?XO8vG7&n67IEG_#y%0K -zE1As~@@^?3fBKA8JK4&O9w0rBB!`1X&JEG# -z;WF=*)XZKGGgw52yY!t4PEEF2o1d;ID@d+nOcA|X03ck9!i7UEu8DV24Q<#fv)bUY -zLAh9V940`0rvQJVS>_@a{07MrRMhScx!OCE|LFcvwokOr$-BTHs08@5e%zC##`G4i2QTL~0)xl^@wcnWS2|F;bOJa|ZCK!w*Y6!`U7*4ivPUCMTpfDo2_KQU)H< -zDFnm=aAHaKO(9iL`wb-;TJRV}^QG@xxMkodTF@men>#-=QL23cml|`IS82bDd&cJH -zR=yw>7JS*P5v3O49IBRwb)w2yK?`#$_inZHSGAYh=8!(AkZ80AU3o@o*a?wIY?ZMX -z%7-4_OOzWvT>Fxlg2dyWH(YWzX9R3uiVen)LS}|`vSU0qrJ8|{kD9dYj$kxKp)E@R -zNT_UzBg!rJO#}lSnwqT|BpJ!&if@)4jHv%4`F4#R(Ew>BPX^dj+cW -zW)_+`2<++v_&x$dF`2v=0ExWXhg7%B?GSiFqj^Qf=mjR$mHj?*+h~lEc~Tq^v?Pqx -z%xPI=HLOZLVYC-)QAx!+ryXkJgMN9Sw=F6}a>m -z_EwS`N*n$veOJhbSwj1R>_rJpuu($VhzVD6nxrwfRLeKE5{S$OZcjDl-cdZl?BTBK -z#$@hV{+$xJbQS3TIIK#rEm2y^@RK8B)G>UA*5FYcxKQ7LP79QlmZ1~joJ+|^VL6;P -z(j2BXAaN|?I(V?;Gm=@hTpNpYM6GY$4Jl@qkT$lsT_VL4Tr;i|%g>x)Bnpy<6%r&6 -zmIENrx(S#YR{Cdvm5a#z+!>1P5x__uc~U`pwgg0>?hR8j@m$O{W~gmct<7HB>R5XO -zNh!75gBwEZEhZBg*?VL;#)1}Y{2i^1dlEC{W*nrDWh;sWbUG`qAd@Afbps2unI58S -zL$n*vZNG3V>9g+D-T`m{?WIT>SBHlH0Q0JxB!u?3nTDC-)I^T{fhIb--!&3}#?&eL -zT97yd01}oM=x~La+!D#xKC|4lWh6NN^%wFUBh9%G=AboVdy=p3^O=ulnd^;32W#rk -z=auPD`|tlSp3+=Ba+S&rJzZr*K_TMP)s%_@%clPoKT-IJTgJ0BLl;W{)ufI%8ZsGT -zz8ddq$#n1~0~m6Vbmg~FC>DPexWpLBl6U=Lk^m?Ir;k+5#TwAmJYuSV=1!>p(eG0H -zV$qVF(j<3N!>5V|n=1{cVa+|SzN_SsV)**{JH?X`(B9(h!QDfVLWhXK@2=jDt{`ksIt?E!3 -z;fe`GTDgIgi+2+BLXe&&bjrB6i9#rBS*e0KV;d}k+W=e2dulKh6y&U{g)=zlATiI8 -zc}6;A`pZW7BY+FpdT|u3%>?z)%F&p??Tqbkn~1*f6p6`u$by&GvNUJRZH5A3fK+kX -z<5fi?)mhOgN){k>Zk7PZ?wd5iMVFVUoZJW~n&x7`r^`*A#<_HeA~=*#HTS|-^)2?} -z$VMwe_R@L2xpN51E$icCKmaZ^DAZW|A8!6x2Y2vf(mk7nZKZK9?ps`kpwD(t=_;g8 -zR63X*HMR|}9zi79l+r$UwV6LSB^h!w^HIgX)- -ztWlcBP3+IKdV087(!W|FkhX5!4gjP9`m4DelJ*ejeZ=A8mM`=bUvpEj0ErH7Uct7T -z-#av*=r_qCVh!dDzM>QoK`%+Mo=&c$YLU>Ifz2yf_UwA($v`4ihA#fN5%L^V8f{YOM%A5{ -zDcc0*CMVM!$pRYAH?#FiUarD!*@d5!eV!I6*!tEefz0icJfCBaT8FZvUOw}8{+oJOmf!i3pd513}x`tyI{B?f^9NgQob#P$?2hH!fV9 -zC7a_3(ci)-`rOMv(j7`Rk#|D=Xd0KBXxm+8*Djs>x#vdXRMeemTG8E)sXfie^qK~Y -zec;x=cU3H0L$a2kBw3YZM7RL5Jc~de&RMcdR%w%zb#)@l#MU}8v5|GqWQ~!Hj~=yq -zurEgb&T69O3<2G;5P)@y;HCh^Q%5z_6>72rC$ue0`5;@{f5?;D*i)_i{nZd4cVbWX -zQFjgUhe9VA-7?|%5f|Z^HR3}W4!@C+{dLi)5QjicMKc~bWqHg>?JRw#;>%(#>E@C~ -zdZ#7WAsO*1YJ5c1HoAnnZ(=b(A_nwq#%Go7HsI9;qDM`OE4O{UR6L}2k7@U#HlYDW -zxP@596o{6ro5gccKM{ZeWst!3(g2F2KZMXU9!f2jKl6b=1Z=d6=l_4ZwBe&@6Ih$zPeK -zR9D1|-j_G@eIW!8B*UlfHu7guWgWe|NH$s%Ja$2_jyLcljgHCP*X%3@Q#CDTgy1e* -z61=jUqS(q0dy_zDy-XntyasUPUXYi6&-e%u5l6F+6pdON0qS=myk=1g@^g?#U98A+ -zcjZo=NLo199=WZbzL+Lr#~=;kqJY)?{+`;o;t$L$>}!ti)39nWKuy)4B -z7Ie}A2c>tJ(UVA)XfSC%nN~v*Cd3-1^I{Y%K}i?lI3S@7Jxt^e?Q5!4tdlXh;5;DL -z9B$V-^2j1SajP4#ts9@Ib_*hTO3n~G6`xHlrVv~#C8cTU4y`RVqd~sX!Kf!OYk1Aw -zN|%9Eqdo_ApCz0o9?${y7a7grO43&T?WY#!+d3)}f!6?a){Bgg8_xk*oNFxy2_tJ6 -z;TW^7e%*n2sAk~rz0o<8F9G-bOc{TddZF|lL93VYAxf?b@moU}RfLvGu -zktp)AzopB+!2mG%vF)))wP0v5OKp(+fW|Y_Ve`A><&EuGx~EUm!^AquExNjN=PbQy%}=vsU{IOiull+njd$mYRJA-C^w -zbAm|{w`k^y94j4D!AUmjOfnAOFUX8<&s1zGOxOC8{K1HX7xKT16KZg{ZQXmPT6#21 -zijC}9H{7K6N~{`M_$Qj{&Pb5JYdDP2I)c~>6t#)fZiCmhVKAJ~`21QMx($be(!gPLYFmys7ImRr{B0(-mA -z_8HZ$Q2h3E8ZR#trL=~^FBf`altu#x2+12Ox5dlQ>U={^QD<^RZ(CQBr-v3Ao?DWLbjabNJzU#i$`sYLfpK}A -z(SAqq(UN&c6(vU2m*Vo6o8XHVp%$hk;t)rkF89mGC9*3$VZ$Ahr-aVzlzyapzgYuQ -zCYx)k7PXcm;wtwE>~nzg(jsr7>1C)51)zY*dFW+Z+D7pF=JP+m)g~yY%-fuxfX-ky -z2Go>5MM&lmJ2X2C76>SmU9|G#MuLvuLr& -zk8<_*83dkDzzDUKN)#nW+WksyE{+c%qM*srTzc)slb=-V{zvW-^k;PBD3`5l!4<1N -zWx2ssumVR!h^br!)ArC44|66!1KQ&S8gM~3Bhg=Du(@s-WFj|aJyVdGGBIHnvHlL| -z#(G?w{9>m)06##$zqS?%lOT0$y;EhLgl -zkiQ{Yp&+9X{TV$Vd0$C`T}~w}S3b*2-8(3CbuNk?k{3B;ftyh`rv_95%-kd}lW)4Y -z+m4LuVG9pYsSJr3ait}y`4iQQsUlqklLg06K5Nrk -zWbjE>N`p$YhC=WKdUjSOFdx%_0@RYII|Qu|WtPd01se+r6=99rtIQrW1-{q~Wiujo -z%h`+JXf^1X%2vOV?td76vuRi93TP<6|=bM^POSNrT@u#K(T|5 -z2nqJNiurq{a-*<}k#qX>YUSJ--*bFWCwPF>zoQMlg|J8>v}DcW9OSabJxmSaa!$}; -z^eOX0aSggpR;Han(!)A&_Kk~(E4<81f|>Q#;I}32Q#?W0hf^&6;jVqbba7I>pE-o? -z{1?Etm@gSXn#5n6!1Jg*pKEMEOJdTnX-NGKxo=P21IoKJMipPSm}jIq4-|$BA&P@E -z!gy#3MAiTT6=)+Gm~We(Zenb1ajA%1rkTE*P*M}1%qe8qig~>SZmxj(Dza`x_xvK% -z14w{%Q_SyuU^3K@N_jqm&F3{J@v76l8H&oRHph(D;;>=}WP*lHz3L`LSHn>?}qH0Iz3m4olv}+U*{N -zC*xkr3htQ3DciP`(S#@|c*{mnTfdjx^K4%uxd(DtEC!VmiDd1}FX5M@zK}(z2Y(=s -z7?lfYa}eJM*=FSR@m~E9nt|*Fjb%SYgzwRan7~l`UE^lQqfvxm -z8z2KaoBz|NxkNh^Qv|=ZW~VX-ZH6&R_5PJPoaN2;Z(mp1Opqdr)2X3-eZ9rI-Hf{| -z7e-+^P6)VO!+LhjAq4T6H-ue7w2_Dvm6(Emebr--c@lGw0wi`tF#03G0-{kfa|y^< -zhm>+MpN2Fku>m^E;zV&W<}6G6C#~B)&}TMH&Jsf1#Eafv(97eAKq7i$2MAAm^~#zj -zvvZ%A0WHF?7)0+)y9A;XIYW{kdI_Bn32D+%*HvEp!If$y9dVUw634Mh=}iXQRqd+G -z3FNCK+nd?k4i&s+pSj^s{XbV#N~*bflbfgq_qZgUD8yn8&NZm}$9R5(8-I42I2h!Y -z&NOxPgg0#o>k0$6+KgJb9i_g|kcxmZR-vsC^zjdo)-q?5pSYW+Wvb7_`ZYpWvjeeM}V*3SThxETkk}moX}4MDg;RHQ-rvx!CMS3s_YxuF3iA -zSt1s*1AoRId-^In9ZLB+1@G{AnB`Y -z&^;*LD1_G-{@HOutPPM|L^O08K3Us0fI>t)>~WkCrnhXJzM~#f?tps+5%vG}B~?d=ykiD543T8p_)o -zd!$kvlnW+-SVm%0t}|Ux9mu0oFt1xVEyY{v;aq1HOTBP@NA>{Va0eH=FK1wA(@JGM -z7U=uEeInpBDiE^nV`mi;ZhyUVhRwFkIGnQ@7P>lw=0#`p&PfR|qdP%|WEp<{690v} -zZJ%Bz!PP@&@ror&2+i*}Y2+0a9NY -zS5M$i;NTsRbO!O`>r+mdh`RoTG$L!s>tgKI_0r8YyJMXq$gG421pjB%l9a$MlmXA` -zGGGKzSkZqQ*AdvJx>2#daEyddG-3)lvMWJ47sZ$SCJ;h;T1%8Zq?J#e3xJM^;6?Ml -z6a>JzOKOX-cN`ux-uLR!fZ`bV9%IE<82Bmd71~*uf7Gy2 -zhl3u|IvK2)Z;V1f)b+(3z$}Zv5|?xu$h_}xy;+xA7Qy@1AJnpUcz1%w8!fH4FHut*_*Io;3PFbG8g5!yBp{8E*kN2 -zWG5gSU1v(@NZXDj1ju%nGy(V;>mf-~g?98vq~%SV$t)&9{)MijmVA<&h80kd5HN)d -z=4CFrS3K3G8aWz~W~`9oUQra6HR>=I3tHvDr9xjG6la67=Y-@^rsG008SM|UKG~m; -zT+cO|^F+~$SqcpGiHmdHrHSPC&roi$?+JVU$+U?&yU*3N!G63+BT_!keF;6oVW%BG -z1JpsUD)kbvkz`g~cz0RLd6G7JU6K@1WmQ!21V$P>vUzW#SI)!&i)%~{o3K4!de9j^ -z$wjI0oV%pMz}-1x)(F_J+Bevblq*dKkfsp)VV`{!el1x_(K&Nf*bAdeqWedlKCgU( -zRkXpHuzZDXyl!o|72(L@0M2>ns -z6GEv=rd$BBbV;k6Vz2fh -zf`Fz5ZRxx;Z5H7eknxU+#Hsvugb%rdj)sS`8!_oKNTuPrU$?aInRCJlBC$2A;0Pwo -zIVNDtFep9zV~Tw33%vP)u+L-(TF9VT(}S1Bd|G5QGh(VnQDYRtJx%$MbLDh((RUCt -zLdSq&vU;NNI$|SA={#sOB0bf9erV -z%&pTdEpbJG&kyitVx7lw^t8X&fXi2DlUrJvD%Wz+=uX-pk+ZNJoGfrXoRF -zl~=$2^D}OO=jaDC{a<;*tS8GgbLW*DB+eBOmMsyy3)2XV*{D28v+|-qPi{W5!)%#c -z8aeA>oDFXWK_faO7-QWKiJa&;PGyLwM4d|lUz0&{8^?92J_uWrZ;+{uiL6s(;^z;z -zl`99UeR=-{Uc)WUxeDO9BI2MaP$q%5|zi5lGfdD -zfwxfKK-qlw#6`)e#BleCA{IrN(a0FN1&zzSqa`w5<5I;QKnWq=SII9RQ{G)lIS?U5 -zse0D3*tWbK;ZQOuO<>3CNL=1gt669)b5BlY!J3iVbBiP`#?)(zee7_0LokN+(3H~iM2qwj%1tCiJeqZ0M>$lCD;dL -z)_!**1K{%%A6GjXC_z}ahoj8`ozPjEI&Iyb%%Ad*$OAF9?nBtMVowAc7~qGVI=_~I -zkpkofwsz!~2Tym&x>q}*svnh5>QI4YezdaGF?cTXERBX -zBx0J#x0s8)uz33CH?Zr)`MRK)$%kB{v~+L}r2GK9Crz@14n_}TS2#>DwKlu<-6bTo -zZ}wQpO;|&&irA`Mka6xumheiCMpRGesjCwOv5g6(AL}Yl9UTD8L1tY*esXE#v|T!@ -zP}~X>h-{{81XAq+sV4=$p&CRt(vP5ev<1_=@#Lo$A?h#7)2PshgpPC|No`J9s|NOp -z^o%T#R`}j&!(559M#q)@CYdh8iLEP?!1Vp=yQJ{)a;oU<(zw?{h~Ci(+B%@P>LK&v -z66FGN|8mbri_vagEbgx29(3Cjks?v1JF>Zh*O0IX4{)`_UOub!fp=8hOm7O8kqZkD -zMKPw?&WBX?;aV&A{l)z=@g(|9<}Gnq5vJE~bz~x-U3z_EOGJy$BfGmG%|);IhX0#V -zl>fK?P70)!QesMtoDq}n8oL^1Cu(EWn=~YgJjj;uL{vLXkTBWb3s#`#&gA@C_PS}n -zVN(J3uM?=*T;7LGa|qlf003;d)o?Ep7{APcx`UiQ6nd?W%Y|Hhg=-m`r9hFe&inIe -znw1=>ess<14*6Jlale0MeiF6nbTv~Iro$Sedbi%s9=q$XeW{t`ce`U$+>$!4R*`tJ -zzJ&>SrB0;}ppofrNDW^C*WZ5eICM@P=Guz7zRl2pW|ecN<-+ -zCNw*`ys5x&GZ<$=SV_ZOz)A0FgVxF)B7h3&hvsPU8YV~kZM&{0EA -ztk$wJRta0vL=TF7!##|!HO&I1K$ke};Rs{}|M9F$JDTYgyQm=;-#K#Uk%O=#DAqs% -z|AMw}gbV>EaP=8*zu;nw!MvTA0}mla7Iu6qOPSkXU$JG@_;I_ho*NbEHsD>Vi@^ms -zZv7eNtRjo+R21@wesD;c&=zoyqe@?Q-TKx}M#X^~Ta(Peu-@ny(|DFXKWGy`_r_uP -zJd%fvVQ4&V#@Be(&il5)sZzJmbG+!AYIcMr+6DKbOdd?s0 -z6X;2-9=4{jqrj@zqjoAfWOIupMGTrSmi!0LFZ4EaM16lMDjcryX~|C@hBHxIJ=9#2{^9le -zGxTpJ -z*gSwExop4NIVXJ3e$Z5uzv)ZSph!KXavijP>Lq{do}3d<-+{fP^P`4O@_FS$@!_|y -zhH@XQDWvT{tc*XDTXuH&g)5oo-miH7RxkRoT@O#OF2Ka|3-~BMhh01d -zL)<|MV*^WU3>F|}Pwe`YvVHlW@L!O=^mgUq;V^?>WFTOYLwRnPJ?YPO8FN)1AwmPC -z0~}dwD-}>|LIKw+RkOb_nW5NEEWtMO!zPtsmY9NmA6g8ASJvk -zRCI1OJm3nHw2!0`U#*H_sjDYTJs@=ii|C~ldD;!0Rhro39+zG&&7r2Vo4RfL-79nuIn -zM+7pl+WRkr)Or^U%T3BS4{rv$rJDi)7(ITZr^$Ic4K2y+aE{!&J#`j=yNS03qn6;L -zH#ZaHAWQM>>F=kJr=a*THM)s?8T&It@E$|zPu&}PZ*D1rN&}RoMy21O9W3al*=xWEvav0^n5hU9DA|cra=!Z*p -z11@@s!66d*C_D@nkYb5~(_#DeRa$@Sk8jW8%i4lL2y#?mm -zywDKOqdARO?}kgv>?g*kNS0wZ7u$|HtR={UT(nhU2R86!15H9+#(eTn?{twns7I$@ -z>H{=^TCy^0#M?CC!w8?{q0=`Rlq2)g@Oaiz*fSzZ;ef7yVbb~@GfiyKqb?Op93$NZ -za-r)UANkYfU+&}3ECl1T6dyrtG{!z@+U4ld9|~QdM|4|_*JQ<@cb!--8j}SudjTG9 -z^~P1#RqVT`d0|;+qkV(1QGUa5>QYnFeki9Ll)4v|v61IAIP8%#AS!rR1_h#7J=??D -zx(2YOm~H^f4SZU-qzHMlb|GV2Ey8rCh_11=r+o_-Nf=%z+>2omNICmTCQrMv^n|o)4I8E9o^=f43vcrL_l&BF|N{e_Z=b*nn2> -z7_okcw4@czGFNnAqp#z{VTRa}UFd7%AqzoV{^ZZg;9nefo=G3P1JY*l!=m5e;Zvy89)?KYFDW`_VL#Gk^Lx4EbS5w)68bln*0OQcVPc_-WKS^(S{qCLwNb(I5zRc7tl8#-tkd1;PMsB -zcJML1{A`Wfe)bp02Vf&D)r?fOks{@y!AIO7Vn-v|_*j)seUk;nEfamO&dX^(Xd|7^ -z{7@f`0_xOIOryqYxU-E!J0AxmA*`hZmD8g=LD0#7em2|`9MH0=GA$pBJ?-}~u>0s}GC8Ilq73S7m*$Px!m_m?9+l>=$}?tT#{J -z&ysWI_qc+ByU#%cHl6wBfB2ZE>pQK% -zBb4pWQ)$P4ev>PT5@)~OzxH0U`@g^Ok7>Stkik>b;O}od@~Kwz``d2-p!DwP-J~sW -z^it<#_7=($+1u>QzrRWNM4*3_Kfq6mSbzWe4W~E$fs>{QZ2bF| -zUf-{0xP1Pv_k5-N{uj>7wAcFn*N16%(Q7&N3M6S`3C-WX-?{K>`KRB%fA^dAZqw`Q -z!})#Gqe4we7H@E<<)_r#u#tWHm0o}UX|H3u2{3%S;$dNVfkRgp&@Ir8g-<7sMmdX+ -z(aGQbOU(28*RKFXWE$!PtfjsBnHz@U_jl=`(yS0z#U@AB`qQ>V{r2yFe%mKx`x>%b -z@-{q?P+qfVXBf0ZI}5V|s8 -zmaLeT_n+_bQ`(WS8>QFQ=0kh)@89yMn*jO%cVF3*a5@3qIPU!YFBu>*{dACD_L`Px -zJ;pbB3GEKeHz9hGCV?DOk2I7K+p8%SF#o*(X&yWGC@%%HQ>c -z9l@U;_TtbNPyM8}@6=s>sCsm={{ -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 -z$`z5>_<=JccgG?Z|B*&ph1CP8$q -zn=P})zHkcMlKL_8NiakA$+RqHKR9QFnJZ2HxfuqvicvGvoXLyY?lp!h%&^-wuy=q4R)fY^-5je@(>I5{YOrO;|aKyP%V^}sR5!6ov_=$hTs -zhs^oj`<+5hPr-8BtoEt99RLCFyZ?} -zXJ!jToVSq=bybJg4wTKm_7*_9az=c}BHoU;yC{@*u$4W@*4CO*o -zFxM~d$(F0jw63GUdH>7NEko>DK<5bxXIgje;O(u(b-8e&wy`QLIanu??SQ?+cnYz& -z3$(Utp6?=p+A#?qGN;YfM#jIfTb6*)jYJhiK<8k{ -zk}Z(v1%Kyk{Fczlk+~EHWfx&=#UCK`QfH-&jdx}W2YB20kNZcLUE#sJd82P=YadyS -zL_Wr>+U}YHe*gAAXM{5J{9MLxDf=!+mN$lb$Z^SUy!{t0g6e6!qyj*3+C+*_ePG;- -zI)%HD^C5IchEY!Em$-I#=M|p--GwF^OZJ&OmQ%`LLQy*3lv_lZ>x8q?F0G7JFFEj! -z9oa=&Ve!;4JFeVqdv!7!hz=3JB$@L1-rZ&{Nluvy#E!jwe^Eh?ChoLMC<7u?y_5gy -z$9bczOJP*liG|cibB9A14lO#)JM9XdwOw?`$&^KXPtgnK -zgwp{N>}cZ3t`rqGb>SX^)%=Q1+R^dkSMc4^68NF)?4SmG~OI}=yna;Im6^TL-oZrw@9!vtY&az -zV8_^`$*sJqE~xfFRWsaS-v3lU0di=gs^bETN6c}6ynNW3olB!DB2T+uQ}M!p!>gl> -zeNDrGd?UHb%9c$#_SiMd@u}Z|%F_zjZ4@&hy?mkIz5cde;q8;5>t&}P%| -z7&%EcWXz)w+VY9$F0l%CWohaRA0UcH(_4dNuWl$HE98tbs_1%8j@t}{bwSV`=Y=B+ -zjk@QYT7a58ym9}(83>*Mk#M%`D0cDP3Nm1G624VJYsM5)nhV?;r~MzTKhct>AG=PE -z&RRm<`UUiCGla#0t=`e0MBOE(X_`Qw?EbSu3Pe^OAK$zC8ABYt_O9XJKpxBglxG@* -z7kctGe*X*G{u6;^fK0Xgo|iVh`v2~@Mg8Bq6AH9e -z!`g?lS%U5j4NDWV;0Kh4)^|O -z8QY~v3Kl7aUWkU)|Lec~XEKgHPA=@iW{kT5Wk;{o*L~tpJ(?W}&DbaJ(8G=k^P;uN -zMFh~{Y#SFR0C5q6kK%&pjRTc5HM`miIyA~>>|+3rS&}iH&7pOG~}`h$VqHf&Z53ik`kNba$`(UFi@Ran&>2Nx|0s$a})cXk~B7JRE%@Slhy3 -z>PuzMz5VmT>y~`T?m>?qg1>S(fNp_wRojAhe=RWq`8ydK%6%zEQ;DPdl{&IW86N`( -zteT*ebBYB+8@pw>?4IQySqWeYvTUL<*}g$BWwxYe;T_9&mr3~vTs;C^vLZgx-zubP -zcpl6Uia8}oB6FrIPj>07j9Yp`*>2luztE-b{lawSQ{35^U^-NJq0z`O?oGae&!7{eyjMEn%=k|yK!2kgrkbi7XZty^`t9pVeh1sPn8jjADc_(d -zit4dk`v3sWL17I^Xh4JR+a -zBl%6sd34$#A;g!;h*?8E3tbmg6bm4aM-F3@X -z$z)rlA!FKTy3deN@4(AgduUlMQPGE-La^M#-C5i>U=R%7-ggU)JcO1)+1?U&70Q{A -zUY-oBj8Eu-G)C9lAU<4aTqUfz)P4$(I?gqmyV_`tB-g%8QIrQ@|2l!i=4xWCHP{I7jyO;83JY7EA(e$ -zPYb?7M+HoX>9Hhe=WAf5aDc#H?vf`M-R5QJ=s7eNjS$f=6x*CX}%BDExTZP -zDs4JZMQQ>cSZXu)PlJI1(g|eHzSvNfZW(B8y^O?;a3JIU;txYJ1$#3>S9}5M -zbAIJxxA6F6?goz=u9K6k+0B>xH7Gz<&SbwCLYW>tt!^yG^ugFw -zw2!lWW&5Sq-&<2~`er5cfamq;ak*l-j&&7yd3z?$&A+VA@%CwC=_<%WZ$Y*2`X>Z4 -zo6Fv@JYF10+H^ORiFJpsR-n%w`KUr1T0k%SoL?RbC_iZ$?Mu^MtyTxC)nh%y$3yFj -zVvXwr0PK})-|KJ5(Y-@oFZ;Ce9`%5^o8!r`F#~lwUB3w@cY2vq&@3p> -zC;8<1l)7xyU_e<9hQ*BXKLpx#;ihDtk$HsEo}ZP2Nf4CfgG@t96L-y#4-HTR4$=yY -zCBK+Xl$-LO!>ha;54thnIWq7?g)B^th#A00|N1Pm@_-rq!Ec#Ob~-U%tTODyAYkLy -zDa+>pRtdBhOBJ1M{@V_nfo$QhxK7#EIKi6V4q9#&48!F)Q&e(D$7wb|18`0GUBHMA -z{`v_R=;Zlb?iYrF_Xgg1E>De?M!WL^sbkE*VvN6r?rXjav -z)$_k>O>LZ5*|3OU8kv)Md!0<((6hGHr*jwk=EwMeCRg3Cl7I33O_hMubq -z)yr%|wuB-{cfPK>ve!wP?c1$mS9*QjZRqxBvob5dm=ey&o-bbngXLv%(G-6*Q>|mG -zoej>&0qn)-H-lTrCtx9Z?6NviWScm)6_g#SVCU`Sevua7IhK#Ue}H5(UMz!I;9#I8 -zraQP9Gn|ng-OH|7fk>9@^vlN$C+J?sb^xs5vK1rKwqb9`*Z1HV%Df?!ldo9{M?5+# -zu6_uVfiDw+_D*E`*m-_=4Ank~YU^d1GQ^KfA9KA5c3y_3dY#j1d-9K#y(!MmD~tRi -z8kd)cF!G~$xhe{&yV^ajH;WAN8s@(`w!Ff*tuXl;>mfdGB@b#CL9lb(p2%H_E-$_m -zowCb#c1<&&Qc_(9>D)Lv0DyD79v1WI)7ol5V7R`_3fkm0UjyZYY!ZhiHFsd;hr@iw -zr!O`^Fd%|H5PhV4|6y@?JHpZCH-x<6L1UqtoZLM~L(%h?K4bhUY|+*6fQm+vp(;^| -zl2Rlm^yU6?>>Ne@ab?^E-+9>;G2GdQKoI3uA(hv8L4)UZMlR3~nlW4n#&;l#vrkM1 -z*+n8wVNXk65->V=iDw@l3vLkj`$u+0o>BClIt+bg84zW?TT5*_`g@UzoJpbU}Be@&8fg+;3Ea<)0mK43rg!^SZKJe^V=cugO -zvK+XRve;=KJg+C{=9SEBn>o7&SqhG)Xwug;-0|F{SambFS~9`fP4omxp9Y=Y&^+wv -zGI0tU4Jepi<`fUP&B2R%x4%4`3c}S}mXqOelR#NJR?IAo#l;muj7xSroe@`Ly97IW -z{^d>?5sM-N9?JECxid9AUgT%uJM2JWK|h&5(WBJdGk>?5(-lj5?utesTF;dws{C-i -ztb7pw>#`8nv!)g;uXr>hkETyIM7Dw~`fH#^o8EBsi`yM!vuU?qx;m20z6`#Ob$XMe9|gw#Wq)63{VY&r -z8fa`@MqP*KW#F)v@txdWO%gxf>*3>mm3_Bx$cRyVP*twsDUdzKz8ly9z3c`X?UX~6 -zAHvgN*;DEb>+LEW)9|yRi)pt -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 -z*}O-bk{r5aJd2}`6{pDlFRp|oBy -z_nK~OdqoawLb>rJiA@va6)m}WvzT{Mkrr_U@#pI&x+eJMKL6mh?0-25uI~EDJiL4W -zD{%b;(rm!I3=kQLYHyEW`IpS9;OlzY$;v!EJ=O^vPw?8p;*h*R(FQ%W-+nNC-*~?% -zH14)p`ymvWppAI31&2G$1J;#L6A8(-J6Ce!Iu=ibcRVAkF-xhvsY_Mm? -zitGl4W^hn#G@7y<4YV363x7GU8>vGj-dwpo^QwC+3Xc}|q5V{)fGkF(tE!<4240*9 -zY5&il-}=vP{kJxL&^`W7U(v=ONBlQT?*9zYO1bTSqmX_1-w}A9|0S|X{vS1L&wt1n -zEaf9Qa%o5Yw}ASw|BsdjVMi{1eXAwC@jpH&3NjXb`yL==*^l0)XM9&L@ntu~mwt^e -zXCGg-d-`;XCwBYwTw8u7E{({$D!m*Z@z>`3#h=8NO}aASOV!sydKq3v1A<5P_G6AG -z*@(=BA~=NA)U=}|_}i#u4>0@*Yb -zUvDT*^vek$N;o*l|Nn5$=UEzQDjFQuySXpOHqXvd!t?jKD~v=N8M!?IaMe{UK%tB( -z<6&My62XDCH4JSE%Z43chizG|Y4rX;NaX)DJrk(vv>?rs={^X2=gR?i -z3N`6lw$H;=dsL+MzwugC5bnl}k -z(c>?gF>bHLF4{4yY&fkkmoP4+(yyn?K3L)rkj+Wsjy${$0YY!tyUL9d93Bxv;%%2k -z4s+Wjh0}fLM0>EjvAqnRBzK$C~wnE_AHTJJb$$E;BIBKwGa6>cK_a@2#> -z!lE%adXu#?QLH*Jb>HSWt2LWcN&m3OdkK@s@s!2-F5>FPri!Sn+}J*Jxx-KO4^VH& -zw`>MtR8t^1?hOn7qOGrC;IfIzbKYv759Lt(%au)!^@e7v!S!f^G!#2u;=l7Z+{fSl -z#AEUA{0T$%@BB#y^Y4F@A^LZ&1S9_M924XD_dnSP|NXD7LbC3SAHTh!wXa`deivsa@Z~`^Y}=YyOUQ*6dw<`6g7W(dzYTXz%o$GY?k| -z$+xcn&S9mQdFW5L2-z3!^(D-4TX;(JInjmz1cuUokQujr+GSTgrYbu&*BmYZ(*#_* -zY{!>&Bk+JB>zjT{!KiYfXDM?TOCL4my7IgMWvcGW{^(q$+_aWZ$KF68YX~viudAe? -zS2t(vpo&ByVux9ITrC`=4Mo$4zh8FK-K}PX4{Yr~Pc2cWPE|AV*Y987^@1rrRKoAh -zGkt{)jR@xX2klUDT4dDxGYN>;>tfmIa_k-8q#CRrTi0+-Zh& -z9Ro+S&V(d}PF(@m3{KYf-p?^<)EZ|IcTpNkd*ip>&sw7O%R-Y2t0;yz?_X=${c3J< -zOeMX=#AJZJDk3S?+v9vfF5N|KAod7i%^PZDmgsI&3dm-7cR -zsPK&}cXHq8YCsAkpU?};3BG79b#@Ct2kX>H7FeY`n-OJ|KK?G6-}DuzghR=b8|A)# -z{i^N+n3L>20t=)D&6hkMxA(7$x;x*53k6yy59Lf^ALj8hvLbc&8m3*uWVfT6(z!87 -zMUE>MSLOnzn;w8ukm--PgLOse+?jOLM=ygSmpGwh5QJG?W+hK%_r)6MW4#)FGCAct -zlLgz8?mPFc^JPCkllZor99 -zPzRlaC;)eaBUY+uq`-G2V-DnjkS)KF7s6N_q?Etu3LL}QB{d7)y6J@MT+3}iU2-$G -zYrBu`X>2>dT%Kx2VeVFI$}HDagjeD)vm^<)E=zR+LiO{TefPF4QD6X5`;S^C2S}Ip -zP}lKB=}B?TYcjCV(~VDUA8tlB-)5+Rcryn60i=m1-;$fBjbmyG2iYZXE!oK^Q0h8` -zCZHT>qcWbht#G-n_f|t_#d5**w~ji&pFj{0`hE#r*JV{F6#0ecfJ5rm>z)dE6rCx{ -zp=|7>t83b4yeK4El;@{;3HOv(CesYSE?ME3mOL_g*0sO*Ct4X~;GVS6K|Ne=$CWUF -zM=WBZHF6B2yyMLBjc%f@f5@c1dj@i58$COvC|1xKwoKMcQ<*!-xd-1*;Rdf+(ObaH -zx`DPm-D(biqk)-@Pk(kFU7=s@(3>1GF*$rU)aveYAKbpy(nNelET}(FZ -z$KXryn}I4~D-4_JXpm+{j{p`TXbdKy?@*lCH<=6{QeU^sS2MsJzU0_aYzecNP!*h{Oddd-awppCE!#}JML2s&K1sSMrw -z*RSvBx56(6I2f{epTCR -zi=HlsCT9w9L$vfw*npGe^>1j-(%_~tX3X`OWl5Zgxbi6#tFcceaCZqv{yytR?>9|| -z-Pxb~Q5%d&b^vH^?iLmgK+MR=L@yQ`KD44C(iThpXA_o}d>FEJkOZUmsPPC0jaygW -ze~Wno!WJr&v|*C>Qm8l4%}?E?*8$SJiYE4D6rvXRO+lM5*;+YNIajrAbrVN%1s2GL -z=GeFc_orbpkZDEwfV`zHV}T-fq1FV#k0U2g1j__e(p_(`9gupVi$2oF=rX;^x6;HT -zzfuf7|BNTM)Rpg9#eZHrT>eUTeohVPndsS5R4=RL$M;NBx~5HN>DEzqMF!&I0u_UK -zkR4i?GIg^o7n%MunGjk=yMceX6%?bIRwf(2Qr%Lz*HqJP$QjwxIRbKL>;_HmqB0#T -zhxI!@CL}_n+VPPNjt!HAhBHTjlk{nO0K!YY4P*!C4aQbuy=fl?rLi);2i9|2h|F+dJ^M?43v49AE+aUQJXH_R7(#Sx@vb@#RZrt1PJy1 -zFaGT5nv5}?DTRTDEcB`=PIYB29lqV+bZT`BoAnyQOk@am8Z1$q&#Z;TnbA?HVfa&()Oj3#H9)H7z9Q1$^MCQ9~$0dlzYrHn$t -z-FVlFYZr45Hb;S9bZ##sVc6Me>$;%bqQ_Ec4C0O++uIY#4LuC_EU<}jvoKFGbHEhM -z4dp-xk#qK5cOUd?>5~%cDNQ#fTDmQw+~UNwH4{duJu(k_@eNU@bi3C$I5YI`Aaxw?s)I_hZJq|BJZ3X+d( -zAB#s8zYDVWhuQom=u(m{ySo>=VN=;si~gXDPFQ!23D%?=j&h|ygXIa+sw)?1c|aF1 -zn4-xXtO6E@%|2yY?C3f$j(1&m-@d;8f+8lG2-O#%&u!0E8Q#TMBe^ZM_Z8=BK<=(X -zFi3KoUe9|>a7}Mq1>c)Cm7uv`d|4?6`?pAlMw(G<&D~^0&Kez%idaCjy8i8F3%Uf* -z#vRjH=$M+AUB>oHdT2spOLn@M5IM*fp*pS466(SruSx5HBfM1%hCHo^WL9TUFLGId -z)JL{NoUt%||3@tMN)sC5g5Iu!963p&^4I}V@dRF_z|(aRYj~F$PmV+7{Wo%Yv3y`` -z&$aZfx*2a>^`+@T>E0I4ty}~BhXU;F!!zs$fyu{C;g5|DsFChYSV~}ec1;9&D{q0O -ziw3iBPnVM-l9Q6SzP?vUz5I{6W#x4BNI`A0(;nPl?ep!z>uI}LF@_K&Co3Q8FQWL45a0H$z75ki`TM}pmB(Jivy -zG{CFY(C~I9r$My#NOwOS?s7Id2~y#}JzLAfiBc~;_*k8tEO5oZasXK9tT@c{9i_!< -zMfpv^5UUP;zp69W587MU-@Re@9svT-m-|1I4z~*MjnbTw6#g{nsZX6>JS9M4r_W;1 -z8=tPjin!u%EP}1i>gWypu`Pl?NeR$lFAC%4rXl+AUB7zomZqCJm#&Hin9QP~jJmKt -zkb=#oTRRvmYzHBlESdTG6pp1BbnvIj4%RLy<#*i4)X61aM!bL3;lH10W|3Djx0+1s -z6-IVAV`^Xi=#ggSDJ_q0l9Mir^@m&)jpU!*p_SZn=u=Vt(1|9E@#_HBOs}w5(tU0V -z%c%IveHA8YJH33|s71bf48QpY`UG?+4&a?ySt4?MPc#r@R;JqYHb075U$jG<6<}x3 -zL-D00+Il~P*b+OQs2tE8Tec)T-v3GSy$gr7u#t;0QYak?B#l<)uZgEpbCX@`cruC@ -z%P9Nw_|T`=1<9{)(FlGsl;(kCB1_CkJ*10JXVLJ|SQ|aQFf(dzuC?4nHk_gqqd%pM -z&6W5vrm;40K4@xWFfa(_&2uibGozAzw+6G?v%rh_ZSDcyr7t<{UPD@!ObYVMbN%VsWhWpNX`;aE9V(?DZpR21zcZ$JV -zC=4-l1E&g4W^YtGJfO~1XyQ`jY3I(!`4~b$9;SNvY&)~0H+M;gqBsZJ$XcclxLa)l -z9J7cm)bsI5aa4>TkFR@`6!xO -zg8Mgn2G@!3(Txad3wJp?3e;Yd>hlSr+m7zdu}XkH30Oz8p|6KJ2M|inG5JUyRk6^@ -zQ|>ppu@II3=i$@%&@SR%$1`%_(B!1~x`He6^XwGHC5Oao6xOxJDa=6FaPUR(8a_=Z -zTun}a3#MqFUp0>~pMs1|XJ|J31!5bWsMTKQ2q(nyM<Wx@@iRW}E9KWjtIrPpQ9 -zutVn;G<+mfqdp`W7jo9pkNmkHBU9|z81F0ExA>uaUR8dYhFDJs%z8!laDEvo!S@R;f8A1r^9-=`71u|>FAZTSd|A<6I`?a9=8pH{n3#L8nfD!|WEje=TN -z?y)xkwb;*J0?HB9N&`pGHPX3g6;GF^4^PhtpB3_eUIR8>V2)|iug{`FqPGc|VL(DH -z@4v2abE$`6@Ca~ay2mFyI-rcs%P5Xu=_tD?fNWWvwCRMxO`a*{jdxi!z>|Rs&TyF?^jE4g5m#a21*YZ;DG*6#tJ8^ -zC_nNSP!}ESM?}_DedzSan@`sVwtxzZ#@ltvYo*aX-rnTKVlPXV^TP0u!{ox2yGaJ8*6SNqY -zbG9HCGG>cn!s=@CiCTtZ`8;mohoJvTU2Yh!iw}kE`ecCC>*DD_ -z#Bt?}lxrW`WXG35Ai>&-sY@z1TFVc=hf4FpDOej6h?=Kbq^&=pXy)iOWc%Y3EV -zp*iz6BZ+03RwN4S0MmbZ}Fyn=Wx`RQ)*3wi5h%`|{b!x6UY0 -zUq-Oyo@_C@Jm1yZqcE&sA&Ki{wB1Z!Onz$4LoL_on7iV#oLFv+pY`kUHg1tG7YF{z;h^9*72K#wjO628%%*r>lh)ThZlxYiyF#|6F -zIAJgI)-5?1CAJg}Fl*p9bp<%kF)803L1!TcB#*xyvQ+B -zr?tS{8yBjVhD$KDiR1uRvP%N>{_-a{C4K9jZnVb+B}}k1(NF`Wn$WN7B02sc0H$_1 -zif~WrDaa?+R|hKVJ?J14px};5bzN+|zcjalVr~Qduz=V#;N? -z8?b;+2lk%xCJiWPw+GNP(rMaMgISmiPJogk_mK^;Fx-uewnwi33JBY!O3zgF0x?-- -zuPa5Mh$~$78Ip8iNHRS1LNIRe8zAZd2DZm+e{y{9Cz( -zc@DQ5Ehhl5mT&`4oMehW?)Y!x>Y8a~?~r_K>M-;kKjM#^9A|H!&$Y_IVRF%>$6!@C -z9bLWDJL%1TGJ?7*9((}MpNwMZQ)56Ogo=(v{G4Ou;ge*Hr1)Jv^&wppVMt -z0kVpyjS7+U1v<8>AuD%~$3PG_gb0Tu)00<-!HkQU)^=F0?aqG=?Y2{dy1jYN9LflA%sO5uvS)HgOOdcNhPRIdxhe#AT=#|7Qn8;Fffx -zTjozRv+?2X4g?elR)Y**&cwtk$Z@EsuFclm-LB>Fh3#^cXe+to#7mjsSTLA}wNFSj -zl75luQfNd3AsY~21};$Vk6ZDs&@sSULKV>OdpD*V+VKX@=?kVlG=w!s@vDd?^>8gp -zYl$*=){PG(} -zG@WT4x}A;F+WVpCcD%ep27`R~OXonOkzDqo@F|BQV&q~UOB==#IH@&n1=+a)c@D$5 -zqi4~u6kDcRko{6q+q%BVAT{AH-;#*~vgfYkgj7c58jrJDx8%GW*{{a^`Q;4+ghCz>z7GxCes4w$=Yu__Piv6PCid9;a&oU$ldGCjSz=GM#-!oE}5P>quuwZ%O)u|L<|NGD_T$$ -z8(a|p*0N=TEwh6Ly)q?x@n0oWNK21gN)bHZn@9Rh(CI+mT-$XlQ`A -zD{Yn1b(!Au!QJCYew~J7U*k2@k40+2POq3)h0d)M_vIAd6G -z@q-_Xu -zDon<=L6<{!6xl@(dD5tm7cWTY_3jFqsK|Sq(J31pc=j}?D3Lyi8yf{mhZp8M+d1T2 -zR!o;3%FPX#`?muN?3h7;Bjs!yU2MIqR_-z8{v8IO)qXU3Qi{BR8Ou`r%eoc8kUCmPs*`vv1vL0@P0EJCI|i4c#({ -z`ygvqHmL{W`LGY&#)?xEq0vZ7S71&Z3#Y -z&zrkS1pDa&KyHc4d$ -zs4*g{XV2pRGV%fJZWd{D5RN|G&~y%4+Pnq5nHuE)S^_8H;?($o1ms{)Lgf}A^RQ+7 -zK#a2Db&S>_UH;RS_POnTyWBAa>)6OF7jv{g_^+TGZfGCiAZ0I}W{%0^w2`=vagOFP -ztlwMrP>M~Y6K=7OiPI13=*ZKns5i9^LDNR+VYl_@qqawcnOg{+7 -zz$3K9v0Pi!ab{p}Zxh+lCMoey$c3(+geN_!M|m38rPBb8XE}LNCLT41c_u&3CrUBq -zR|lTCF|kItJyH-M?=)Tt)QQ3p#VpL2VjGI>@MMtNX-&`VBcKxy2}heNw9g;H0kPT* -z!n_|fUeFtSJ>7j@^Nd+w7hcU -zj@BKryIe-T8912f;OPzUxe>`vBhrmxT;L|HN>oqQ5_xy*Ce<6v=4x~v-8yhTQyF{P -z@#TMhnSDZk?#7x*t9c2P=NbQI5}xFOEXKFR8Vh{sDWe0;so-XlN)uZhmbe{ALn!)) -zb$V^?us#f0NaPddIllD>8w-R)F}ZQ0jlmmjEl;v*l1Ll2ZlFl6X#2e-H4Hb9TbvU+Rzo;ot&QtyU$*QUiNaDJWp4^`4bj4X4Z^dsLZUfjvBP- -zCA2Yj^w@k{THBo#0F7pE6uRD#@l}&9<$HI-M6Tjba3|U$K{<+*P0Mu*%1Z)gDTn{Llw9;MJow%tP(;n7sxfZ+o#mYOJO9LPMtoW -zx$52+^p^vYuk4T%hge0%@)J!{x@?qhR3zRJNfyhLj>D^UU_ -zt3R5JN4IMiIXuw2gF^H&F{8X>3iFFodZWKw_U!t@**$%s`yN>yldPb%YE_5HrgY>e -zM_!b=i@m>O)+_adC)d$5q}lo5Kq90Y`_gxxf5>nVG79Y?b6N5{e>nm3Gg_CdWwD+? -zfg>yPy3-hb|3~_=I+V(J7<QOl~3rSW9NpPX%T5D{ffs!o|alUiwtM>ch2!q^O!)Ev9&W;TX%{7mOWm(AR? -zQY^n)5CLXEPzlYIGYi*a^4Uevvn7j8PhoK%Sh94Ov3qoHoSkJZ&1#X!Aay+)Wz^dP -z0e$-C8m5RtQhHE`9~K+)o>^?sfvhii=1YCo;NxF4TUGy@>v;6_RkDJ75- -zWb(sw4^}Qj7gnqH_?MCAg=>;iCtanQnm^kAafia$1xTu>LoD$&*vXwlzIKG#%hawTYlsJTwyH! -z&$sIbXA=NEF;X|-eIc)*GFse!94Octl&XKkjnY~z7`#+!( -z5(e!uW(MTqUXpsJ?K><+>0c{6HCA+d-gTjZ|PLQUk5m|ctz31oG*R39g|WcI9>pcS>d -zk5O3!MkE*wn?d%y$O5r*Vys~_N%c!imBwlI!6o7$IC@B%T0HR?UWFoaxo=yBp9crS -z+G3xPN4+=Q9LqbEJDM3GPvXX6;2&Au_|UK^fsrMZU{F3bCM*oR+3=LJ=G3{&iNSkL -zo&-%y(_YCzhSz2M?Z>YxiC26VRRriOU=O2HjmqzWA0=Ne^1xk=L*HTNW3_ii$aDG0 -zjO_KNAHH58L&QIfGaH)&MXJ*|n$K7AlE{dOK!_V;xzwBjB2z4-WV}I2lIHiWP9282 -zO)gMRKDOQ&Q$U)t(LHI-1>Jy#FjFvUUjh+X*o}H^5HYRDXVZF=ho-Y_?ydH5!QdYm(B-x+q2 -zDMv8R6*E_Q@-)`S>03IPs~!acUZ6VHm=LQ?q0R~%WJb&3VD64m#bmV|H{(j;x4QI1E_bA3vQ*UhC%wsxfyHaI -zrS_4CHZh9{Rg%;k7!}I`wVU$fva$n9I_vD7!jy5>ZS`C+dj_gUWcUIznP|j^R$3Vy -z^LHAuV2;NB7N<$C85FYV;HvLt6W^w>3uuKkIajg~)&QxSD+{k!w1~DAP8cv5n%yc;f`!X# -zxf6x+aD{xV$nFCgIB1?{e2_w_u3F#oJ;UaAccm5A`8eV}IBCmd$Xqx|Ae08`Szz<| -zhOeZH12LLf!ZtvT-IZT@@&PB4cKg@{J_j7tgRh) -zEei6%nT*!}sjMJt+)e6{;-(=J^JGbDO=wO9JFTo46M8Q@t0rNpizv3V>Zx$jI$Bmm -z;Y?$bg~&B<;&jBxE#wu*o;_|2AcD2IAT&}nimz{SVc6DAW)i16xseA@BL{6c9pTZw -zC`UJbTK;9J0!f6^Av3*g-qzeIHbIs~2=qU_m=(kXNjIL%P~lHduW?44+^*7*8T=jx -zc&EKZ^S)}pv=22YI_(9!-wL(S#Pm!kTLQXb)e&Fm=G-wdi*$TNPEl -zNGB%D=?(6^%v4Bfv->8+eAZr4643EH0}x$X(zZ3K$)xkdk-ZFl!Z*X^F0Z(7E|n## -zOtv6vBSo{-Ir;Nb(-DBZyNQO87zEb; -zV};KIYLW0jt>5j(cXfrx1L7d7q_w{MCD5&26h@$A^|qqVwmA78+iY%JwWHwASv10qtKUbS -z^2sV-mHCgXWwWX#=ax=`Nsc5e^N~Pq6wS%GWw5{X5??HjU#V0KkEQq7hW8Ju`FW}S -zqrauU`a9Wo2IMMv-mdS)CHm)M6z&rAlmye8Qntb*9&#(Dj`~BxvrA{S(p*W*3 -zZ&EncJ)ZYh`f+xhbSw9TyrC_ZWk8gzbAK$Pl*%ZX^*w&xeE-RTc_i{&06Y;On`0wY -zYxAwhW8~M{eE+5E>i(k1`oaBTnQK9AX%f9+X|g!MkzU&F(SLTugqs~KwIruv*;)%Y -z$n81Z!u!Om%=ga@45;a@Xp{Q=TPOZ17be`R>tNkOv_!Dd71y?uRT?8t|p^mciNZ*6lUeFk&?T`hp7&emL4>Thq5@PJ6 -zQ#OOD(>ED$wU`X$I262uW4OI?wqohlNI)e?bhIYAW(rzfkHt@_Vy4DLf -z7bW5GP)xhQ+=sAtywSxu!V)v&K&}yy5 -zHFe>n06{>$zqLFtNX*=Vvj47-X%k|KSvc0JLz^%?4wuN-_&Br*d{WuPPsi+hH8%ly -zxYbJ6g%v&mf<2+ZM!rO2Ez&G%0HMATw#X_&4?0vQKxB#?qh1X?eP(B~6 -zF6|*xFwC5b@E-;CCEqV5eVo~xa2s1)>woMT@Pcr6UeRf*7tL<=5AGo8&{YhN0fhvi -z7qth8h<$Ejf}WpCxfey}LA;>1gO<$_J+QJRLcW0_m`8j>TrqL;?5+QMhqq^11z8So -z967D7GtzPN$4?2qghg@EpsQN&dIcMJEV=v|?FSP00p*jR5S3zqG?oS%wXfhGz{8AL -zz+ws5;f6EvE$>InYRFvM+emSPxafo;RI15hNLb+_Q%|SeMFiC&u-8@^E==w*rh;Jv -z))H;ohJ1&Mg!y_84`zKxwes;OU(EUpb@#x^0uVZ|Lbv$UkRcd4^;rUReqgI?DL}N0 -z=UigOlD0?`(7o+H7>t#6z62N^yNXLcqpM<0M*+KJC?ihHELZlZc@z#5j`7Usv{6O_ -zl*VCsXpZurAl8+Z%SN{|jtZf3`cf?RSG_J;#_shI?n4^~!1QIlK0tP+KzMcaXg<@; -zE~zIRpoGL3HSH6!;SEsvQ+&{<=4Q{i-BG?P{1E9*`LQ=4N|~Zb3_nyP+r0zjSu!w)d&Ml -zWkxlvF0VFKBro -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 -zq<&$(jua4tX93RRMByGWai}MS+)IN -zo*tIVAAKQSu_>7H1uz9q{#d!Bj_CnrUvm%c@d_^%c^ba_arFI6mX2KKygO7lZC%mT -z=Nka9uNUb2m-_(`t_7H4A9o2!-Ndd4o&K?52}8Bs=d_!W{S!-mW@kO~p!+X7Jnrl{ -z&TI4_X}Th$k_mWB+T@e;LWT@8N3l^I^-S_X>7a(xbR`+h!#HWflhb8cYj_9Mj~(HF -zdZ4ruC|Ab#5uKZZi%DpzGThawCV*XvSlpJqgeQuC26a>teKT{nZ5OwQKL>UxHdnuXkAaFCW#&3^iyD -zGh9rx6YzFrN3di#Ql+&;)z1)OlH|G@7b -zr)H+veBbM%&JdId+US~t@Kozv_k%H>8V3pHOPhNA$oaDWKOWl3o=U~b_xeRR2FGlv -zKXCVsOYzW6WL-Od|5qF(cN!^6(nVNl0~@rr>vi%Yee~iA@o{wXe5H-gV*sI%KRQjN -zV37W2NQV6xyg##a-`TYw{NvSipWctkozzSjyjr?sOo~xiU0$AdSQ{=7wo{%|cC!S*Q{X -zlu)q>v2&-Nt#zTA+*`Adk$&sH{oqs3wLr%9{soXGAaUu>v_v62&0ockPOGqH(pwPc -zKvoyED|*`@vKJ60y?c_EDw-4Yh6((ZAWcE^zD7@0{G$VIo)5^SbC^bYgF#?NE+xx+H{7cTe(5waK -z3mmSjfBWUJoGa>V)5c*Ve$!c_6t0%Z`CIu5R|A=|j@}^0(XDv{QkLGat&av?a*MdC -z0UfAhCfxh)um8d)6-_gyW}+CQ=PL&gl*R1u%(yF@$!6u5;7IxyXj0)40>!!@!-^M2 -z1_pN;?uhbmJl`Rz=vEuWg5}~dblCW5O5i~S+rRm@3y&7uNO&jq!*4%+-Gt#0p8zy> -z+MSN8+KcW%lXVOGV<8V==Zmta&&dFy;jNeH0aOsp?nkH3vT(&Il%e>e5A(nZqNTyI -z`4Z&H4j3y;)p`r`gRbw^POj7SkOJ4o(|0;rvwJ-FL*LU#c1&((1n1lazv{$Cp&Oca -z7@s!ywR?(MvE>da^ylyMK{q;U1>wI=Nz+_c*K+YRnJ{f!BggXejc(KfGqp)vH2fH< -z&|Drq>{NNivanm!VcA#5Pqnrwg@_d*u(79p|8v`C -zz9b;&EA_$jLYTT8Z-l~${TZgul{2&K-i-l1Iy7{9qgaJi%51m7$1Pu!(D~{bT4xGQ -zIq2e-^66mH;_ITLFq1sWzVo4=SnW_tMqRX{nID+zh`5aENtfRT -zxs;9nZNY^>{{nf-G`V;K{lTr1OWO8A?-wa$8_F!7OvrX@7PC!CLKh1gfn(3Hcm&Oo=!T1{X5zrNar7=RR`9o8TZADH!Y -zHy*6TkOjx?ER9;<3=B8V=#7f9$#5UL0(qLPg}&Y4qUsj99o8~dDJgt|zIK=>{58B; -zMbUXBsD9ni7e5$j4|save8x^oT9i9R?5!JkMblPC``|5)spwPb^L_nv*~jsG{m}0K -z9KU`V8-Vja&_ccOG1xbFy4KzC6q#iQ8Jk%AfpJ)4=ae5NSH@nfw<<)iM&2ATbyzr2 -z8N6E;=ZDsv!5U5WscDgh%tXLPcIk!c0{atBi3M`UR^sfG!co%rh{SC0xZRiz8uS{` -z>!qws`c(I^r4@T>6t-atc7T;|_ZB2j|8k)?GRy<_FXGK_apURLc86{NLu({yXII13 -zZ@zPyyCd{YXY?Jow|4rnmM!uvDDwEI+6!xZm4Y$0bd2YeB`!VFiD}WtZ>yn$Y1f(E -zkU*z3cuZsCA3r+TRb}l3kV2yyZ?JAc|HRepXoucdsl$s83C`Fyk#o1*{B1Q*CepiS -zPVPa2O*ha3B_qAK=xUHbmV+svl`e;2qQavqEpY+oHVlfS+BdP|M?yF`@v= -z(9_ZeF{$grvH)*2=~JW0X2ect2eXGMOcUYFmuO5=XH=U!pM$jz -z3tK%q(p}9Y7-~WA)<2v{A9o|$ALg;bwb=)|GXFwmiZ;u=M_Bd*?8^9b5$y* -zk*xsIZ?Gns0u3gpp^~}!f+d1AI_Yw3rGCshQCB5RFIZa+ -zt&knwzQ6yA>C=7rJjE4h0$|H)3C0SUS}3WZ{~~?lR3YBQ-V%=6Bv-yj;>xnq@%7%z -z>y%M%x&Xq>ZsS)$UM$1fgv$Y5KEiRXAB~?rK*j9x8Cb#c_w~!)Ur&vJ$lv3pmQx(9 -zZb&EoAk%G}O2|La+wJmx$EoO_2mibKMuBPavhqyjuAsP+V*NfCaiMT>z!twFptD -z?ot3ANG)ehd~h7f|MM01S&_p~ZYt(L?8fwK0G^Zkc-!3J?Xxw#Q -zL~_Prjbw(LB>~A_QQe=qOFTMe? -zsGIVg(HRhYQPk|0_`Fbx77S0U;kzkAQ+MkMA>ord%hC<%d#3!vT@IDi{ho6stu^d|o{F -zQQM6n5VF%XKh4V1ZMy8T*D7L6L%=V;705|z3Is6dG#g}~PUzQR+R7o3+RSmN@Hr>( -z9~6p>4k_ -z6)PIxJs@)27^qWM$@0N<9A$CdL`^UDy|5Me06HrV(SlO!Lq|_>={XYMM-RMTcbq* -zWN}MBvr?X}G}H -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 -z4V_VgX%p0b@&GCN8H(}&KF9MT6e#dT -zIp+L5e1ifzH%<5i-SMdF@8 -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 -zOMz}$+f=6Z^{tz33<LWlCh3z;Uqq -zekaF?>`tvqjZCyAd$7qzIpN?cl);y(J@)Q{1WlKhGAxmec`hjxM@E*ukO-31&+p1imARvV5F=w3g4eFHFxZ9{A -z+)(4uRTRI+iZgJhBa`@~c*>HgJj0VcUEy)jWO&JfeT1}kM?dS-8r(qkZdbZ6+Dbe; -z&(LeFVPd_F>vZ!$)@n)a!Wo(v2sJd(`K<@Ens&kPRD -z?Sou#1Jv!~%)6`lT_bm)kk2(^I_Q)`D}}S#Jld0JoI@QAI-JPda{_Jwb!qw_)&e>p -zU52Vke0C)>I|`aEO5 -zVdAQ7VGKiD<%}gsH5MuE1=|Teka8|vgEPrc9JC2gcu+-|LL4o@iWRl%Z-9L^=dIpj -zlM2(3>P{6=rIn(9;=Gc=0%gzBGIR^W7{2%A!=-9P!d^> -z4t{5zZIfX`pb#CqgO-gPEO3@%ad~n|oZJXCU}3toKc#lhb{i(+`8?-96paC0+G8(&AW1;t+r%u#gA*^<%1L=I-FRnIrjS -zT#|>x;&3;&MNM_;+p==-^X+X&C_nWC)D>_m1p0G=rnV`U>BlZ<+c8bw&ded|D(+A% -z@dZ7%@nWOJiA~u~u^op*CCociQkCl6M%KO|`|Fh0IC><_8cpHIfzlXBsKu;cvUGhw -z?Xj$#VnO*R@u5-M#x2~aDUs-GM&a~4S&rPVr)4L`GWa6Ie5NmTZBIS0SS1!HL2fSF -zet>--2~fDIm>z`dDbpv4<4yb+IOQ3%&!59omII*APxTMbGM_dRarDI11vSy^4lZSe7nGmEQesQc -z%e?1OfF+XQzrKe9*|9Bm?2oqQ;eeiD9!HC<;s7(YRPIFi$#Tphv2Od-G#mk9x1lgY$)Ie6N$42b&Jir1DaAlBN}#o7|@*QIdiHoz*z1>j!2hq -zzwdd(FQGbQv($2)l7D|HRz}aVh;J&K$K`ZG5#sYUj@|MkMv=9V1R-88ArWew!TJrg -z=XTr*f~sLhBb{vZ;?|c3R1odhez<>+jThb?+T~J$)Bs6y3cP{Z$5{+ADmxa~&l6fN -ze0lr+gRue2TR$DPD%;dYmzw^*j2nb3PTx;OCfB&hx@Rlqr1L}x$2nP3wR(*7G^e9a -z^T`+ja6<1b|4Pbb5_I@>4gOwM(34TaePEA*FP6h}Gb4ir-!d~TUy)El+IUw8ykSq9uAxj4^)z&cc%_yl*`nCI -z8Y2Kja-rhacuEf0(h>sjGB!l_UE7RFWqhxIDzA9K@MCcRSWuq6lS3b3vl%YQwX;Pl -zZq;|+a3RgGWUMQW$jxAl$>5{*+Rc50R=e%m+XUL*wmHJ@z82k?EMMtb0taSx=MjOm -z1uqXgA!L=2l~QJ!^my@LN%h;!MQp&LC~yx6b0JS>#yndaXOEIG`5>QIK5w@+v0cWM -zD++|GWgse7N=+7RwYNL^kR{dMEK8%HHHnjcR&n>l0D)wh5qKh^=g^YOs`BUmG$L@m7m)W3#vwP?o@$~cdxONjr -zKm7&)_LJRY_SF;C%e+;|Jfa}Crh@VT-fIJJ=IYRU%h@~$nVWb?RY4%w59`!-Nn-XB -z&|MsoS~UngZQAw@gMcH4$dZ#<{1<#Au{!I>bave)ly -z;XPWi4#+&2@ag7t+fa|VDLyH)S7|I5Jj}i*kc~m@yFhL0QaKhL#GOJw8P82O>yv-` -z_Gb5va{t4blV|t$(#m5WsuNKVuVnje@>nNYhB*;zYb~!~3D3)#07fgG*yEO)ti&CB -zwq_ZoZXn`uGZj9_V<0WPWD5C;MR9Cq9up$`Wb?h8@T&bvA=N?$uLwgOUd7@SXla*C -zkfqM891M_!r~)c{PBUi-LkvkF5tOvus0|f~G98KBS$U#MzffHq-A{|+@hAaGgOd2V -z`US!>E7UBA@S*e0NM2{1?&DC-rXQu(+lY5iK}ak(puc^Hx#^>WnbihUi$E(K@xkH* -zJ9l#9OagO?7iZ!k;!i^Wyb#aEX^AHh+ -ztGTq#3CFoLEWqT=>ADs`f);I8Z{v6))){zk-!*9(!F{I#kI)m*?ND@yU>>w{$@MNv -zRvhA~w>daMLS*U+XRf6|P3x$dfhuAJ+~&{*u=A%zhl@Pn6aLX53D14PKk!YTZa6`& -zsJnb_)&bADrNwOhB#Q>-z7o=KiCXq~I?$U_t!mr+lgg#1&@8EY=EvJCVSrV5GhGuv6Xy036BN}8y!l;^Tl(ari5)Micj34 -zlSD>Y$1_fuHk`L~Z^xrc>{nYs@OyT=K)iIBA49WAiqf>_j8eM99rZT9b_}H~Nl3oA -zlV2r@@dY&HL94^;B -z09kiIyQwxKAx#^sH66;KeKoEP9EFq%ACbx~qjYh!Qyd8-+HC&#b0nTDi)X4#n -zAWQX>(AshZvYjb9R_8Nv6XHMUR*5Vw=!F;AAm2Q^v$8W{fWW^if{78#DN=pnJ&w)k%4q+GhAH)4?3rh0&^I -zr$$_a8@cHao}TPWVy`p>t`pSIPUnuHf+0A*y}^G@jnQNKvBvWQAaVy91zDi`c4NPb -z8A)a^*LZV`8RgoocPF*%ox;ga-8Nfo+-0l=XgQmq&nCXE1h>o9_wwJO6R+v^w0==b -zYg?}i%A5wOS`7bb!OYRuJRG~ov~?;C1j`^p+5p(Z+J-6>+ZtI^Ph5Bb9U}sQtumH# -zi2b={-*@s_>Wj*iSgb5A&88t$$mt;hZ7#YmnHq(5*RExw#dxK^puEvQ^$w`wN=?&;*F!RCfo5x0k)B -zrj(*oJA> -zAiGK^DfG|5s!GV-B@m?y+{62oqq?l-spyd~{|@!4N`^=L4<>D0kCOEgF`>^kcXwF| -zhg$RsTCoGpSa<;hG2!X8f+x6lvTa{l@iXxl#5FQDC-Y$xlEuvn5*B8fiNK}{0UMB` -z5jL^mql|0LJylzo${jCL@)MHET4UXhe -zN|=9$77(dB4P#kqv_xL+eM1leFs%DZNXE+HW|xV+bwdsAin%jikat>i^gw#xF!Rr6 -zK%gsU5$z;el?}J`I0)&E^vL>)TH^aTWa97tE~q -za${V%)>P2z;30!)<_@ZBF+gZ)NP}V8YT}xch6^12uFk$<uU)*0DajQ$lDtW7r_dj -zXa-(={Z5g*szomh;6DWuimaqwRwhsm$&9~~vvO=|P-0n>6VY9NAgfSICf->4$fzr1 -zc=lt54Wk&vS$K|f4v&zsWk+BQs)q_GBI}FHQl!&BGpyv1U4KWmgo*|ZXzF?hz{}RU -zgATZJNOZMTRdDbFtSA%`JMSGBwYU!d3JdJ8pq&=DERVe^wTAmiOF)~?MKZ^ -z0`>u3%f9H4BgHtGa|Lvr65g?tpE9%ZJSK56vO`NWwr39DG+LURbRHp>eFt_7X6#Wr -zR1v&+UTRLJ9T+)-!rC!W7u~`0X~*i8<1TBiPUM5u3*DR$h?*+$IGfH@Au#>b2$w$> -zJG+8bCZtqWe+i5B1C*k~Gn!~*QJj;)x$a!gU{wQZFv#fP$s8Qm3dFaTPts&lmFmkC -zSxy`M*XcYU?{-q~YpVQ%G<|ZEd1`e6kD@NUaoCYmOZ*?)FRB*DNOU+*9Y~#}X%-RE -zsyI&~Yy*I5hrT4^#zsw~b#pDT2ZzGN0>C{SHE~7Kbpzur!@6Y#DVdMreK_6@ux>d{ -z`7j<`pK=H4ir%_HS3+zFO1rX=GpQ%WC4uZ@6-31h^1XrJlw&DThyzy^Ai%9dBvx&K -z)pgu~_+4U{!?1bLROUZ!R0~*irCaa&lABPlj$P{qw=zqErAun69St3h+DauBrkRuOqOX%lj5H(h>v|m%o-eE)JPx7CtZhof`gK@Di;*kFb(t`EQ4{4 -zSU~P59Te7d-(2R+oA{Wcxuo_iUgLQQT`EMglbp;cr7Ps#Xi5OdLu8~0(6m!?hoDWp;i%2l)f8@6@ym=~X7vssTsROZZTUA~> -zX)ly|RS;5JJ1W9*6@*PT3F@b$Z3A}4yj_Ef;xx3U=)MNg=kraW?FW=5_+kO_4JB8c -zE6^4q$(oWb(`(2aeSfPdI_J;1#a?^yX1&A^W;?HJ=HWPel>QWzqY*@~8;Jf7xEjpj1G2D7!?cF62 -z{|C11mg*^8s&{&^e%T;~no){wdXxyrsRkh)0c4GB$e8jm10divp?rr-qXM~@ie8cU -zX|kl392#_8P8%G086od3QRo~~Lb~xOJp}qEbRvan?rznbdlTjjC!Cv9%>v4+QuWaT -z`VTED^C59fz^0NnF_Y)G*f><-aSPgTT^ib}7EXZ$SyB`&f4%Qyh%u6CO!VG#DHOxZ -ziv#Na4kYDT!mVZFSb;h41th`uWiMn94fz2603wV0k%P7a3BnQ4HV=^>x5Mm7Gh@NU -zyZDvRqh=m%baD*%x+EpEkxD|0iyP#T*9cIoCR -z;U&e5*6*O4hdT3}i%9z`lK-@WcN+~JV=fF~Um$;he6O`)8#)PVXb4zIln&AbKEw$7 -zQ4|uXyqJcg&q^7yn?y3U -zX``i4dNdlzyU4Qx`Wa9Lc^Rqg@Gt|{dP`K=dvIQn)1+2FG%NFJj#~t -zi6<+jB-Tt`tIWAe2A;vC1F#{jtiJ2_ -z3GrF3Faj@N`H~~AM;uw|*Z(?h*7*)FOD3yj -zPdruUj&{OqB2mL;|Izo-!I;xtmNofoFW{(n -zVRo3WG608XlM0YY%b@+J!BU$12JIY8JzUIcW>78t;ql(h@}xkV64PIjOZ^M* -zysDflJQq1OldI-Ad)a8SoJxSreb58$*CzLM_(x7b@ZXEsz@x4 -z%yt5>D3V^5#XV`UL$nt~GhGqDZLimDsM6H4gerQnK}-+|ZXexq;EE-zmkYt3R(Ukm -zqh_3BwU_1D$#seCq8LlNG>MC3!sb>@+Z~G_0%MG{<-lK9RCSi^P=>Ndj;07jg+sW! -zdLnyrx?jNwaVXJ**6Hj-=G{_nAkSIWDRU%s7j)F;+ApyNDH}x+j?81Dm-9X+IF&it -z#DDe8OB{tpHL}{I8ryk>b%!@6-Ww^R)272*xtan15(;-n0-&EMojtMMIG&s8mndQ{^8<-sMFO;bb$#hkJYRYwN)n>EeR*u4 -zuv(H(Tqj{89nr&rEjYcCTVQ7k5X7bI`4UWJhZ7X32NQO6o5ys9tYEkO6$&M7&~Pn7 -zf>Gd6UESPR(7LOf)=zOs;bJzw-&x#uKkRme4x~(xz@DO4@c%2ON@mErCK6{k%qsPM{7|Dsx;ni4u3;`w}-egqph4 -z_k$LolV)?(qfpU2i5YSWR0n7Zy{*m$-n(LTZXA6rF`^`|lqh)WbAeNhv#jcnS_{=9 -zd@5OQ%57DOxF{#mD#jy?HVhfmZWi`$T5gSQL#pr&V#oX4I}uamf`~a)mduzn6glOW -z>!Z7AtVhO1?X58mLA}>$a#*vk4C8S{*Epd8ULBV+pW!1WnrF&P?YxPRi9RFm8v3ql%{CZ1?4RQ)s!@+HMg!hJIqt8E;m$5M2U&* -z5E5r!P>h)JHDnB&_i`e9H)awYmUiamBf+l=V2hEm6i9NDjFBlCR|g1ypwg0HK}ty< -zM!(4Sc4b$;ZTDwj`Q@Yseq8ha;g$H>Li6Hh{ROntGN(`N;CJFYLH?TrC2BH;St>OZ -z>#cAmCMDjBG?l@JUMibFBdtzjg$9>OwMT=!%Db*bQbh|s9B1+axoL?AOT-gu7q{92 -zdKprz^NzSXHf4(?VmMMTDK)`@nz}a?!5xhRN+I>Dp~tp-u@E~LK8Nl+pBnsaPldqi -zVU04uRTX|GUhu@Q>M#hh+njr4O&K-`pHoqA04%IBNCxa7kQJSo^n`u%J%IU7mS)>! -zG^H(ew2hFJToN0imb1jvB@mDqu2!L?T~fROMU*NKSiucQX{29sOiOk~w4jfO-*0A4 -z9|YoQ`(;UBD64&e-pgftVa{E_GR@)9$J<#asCR4}3zuwfkwIr<#D15YbE~c1#)~+0jXhdXbRYP^P>lSu5~i -zN_7SWlwtj{_13OcOInAl16-MNu!OaEGGMV^XQ$S%hgqly(#@Z>l^B;&(50ZmPvQ#a -zh(T_aB#`p$wIJwOkiSm06R9mkq=}!+{l69{QzIT?hkzre%V^}*0zo#qnnD~lAeIsl -zk7eU3i!Yp22AWIAQfx_wVY~EuBc4IunTCvdGoToNiK38<0cO4%K&QM6F_8tLAM0H8 -z5i(+2c4}PJ;D?s6yFD^>5Hvq^D32U!4n25xgqT?FoA#h50t!m5qIoOP=pnSZg?Vt* -zN(VGg3D7;s$|O-)DxSi-1WjBhJ9t&&r=61!99@_=PMa)%#XpisPXRY3G;GNs;BVT= -z0VQ%Vh(jCLt6W{&PXMZS2_UENe|l#_WrLaEf#3t+~Ai^))_ -zuxCB_3u0z%Ai6I@mhp6Fq^R1If~#P~Y0Ar}!P~M6puz@hA?U&RcIJ+^wx(oEQ&Y9tnB`5UfvmyK?+}|HS1Wct=82U -znSQzOHtCFVp`)UxsXSIBA}ShDWa%K^r!Env*Vzh35YH6THe(Re -zv&Z_l1{p(^CCaNATlPorUmcuv0Rj91^jz^Yk-)viOppLg%ga*2U*%S^C*s%1ms)^C-9RnM{Xwagc -zL`DtelqJ&MB -zOrkH3*0C3`26`!bZ7TG=+lvU3x4kFoIcDz8sJh6U?hQDPn?DV}>UuLklt*@<=A2I? -z8Edc=TvNSt;KYW#?p8XkY1$94Km%X -zahLWFr|a$8q*zfV`?amaCktI%O@iFt!W}$H^HzMa*?Vx=#jr1~EGtv1KbJ)qwt1I1*%s|JHQ=w}3Cxg4 -zvIWAdqSl;xl{o?@j?FiSNf%A%;U2}Aj38n19#$e8F+z-c%IfrRrt*{DJ`{qNHcO7}$k%pf;V(mjFr0D?@+FUa-s4pwi+4M=#hsa% -zI3t5h^1HOf%q8rtVW!FE+I?htvAY%NJpcF0hRrz*dTcd&UR*{8i~j=n+HZ*b%Pvzqpgl`pSAVT5;>hx -z7^TGG6>M%r_YM~jNr|p4(r3B;gAJN}!rPF8TU5~^l1=06syYuW -zTgKcjUTioBS3d%+?H!pQtSj@VI5$v%gSeKg;oPh$#u09Ycn(OK9){FQfPQ%;1l9;p -z{jXUpGP5_R%5d2$Mh6I_l;r7!a9d8l?`?lGf*{>mj5$oF^BJWjs_>GMJt%nO0@3Qc0&aY$|YCei#Tvn(W*_Z4C$D4*Q}60>(Q{n-9dU!Ule -z(|3`Gr;P6O=G&d3aBLUwF&}n=`5%dA%-5-@Cz!0MH5b#K&|86BQhS7)K<|`LeSDna -z`Mk7FEQEWI-2pvpHhGx1DmAGR?^w_Jf?U4YHWK)xA7V1;7EUs`v|~Z%kFvS|glAFm -zL3W66lw};`Vs=zCsV{TPl%s?$HhOetQ%3&rfau$d@~XD?VLJjFpf@5TQ3ToIw)P$4 -zf$CMTOoTQ~Am()p2z -z(rhD$)5uERM$M~~YX$dce#-Fs_M|Qo@ -zgk%OX>&nTVJ-hxwPjLZX1M8JB_~4kixXC_;66M3&PW7zdfH~D$w|K6r+3Ix-$dy3d -zzVip&w1j2&36VCu8W%A%4O@6GNl5q+t}kgQh&TTEic9XMf^7{Pu+iyI#LUP}_89in -zcxB+wqX6x@Be;rDRV(6sjf-7N#E9g+s}x{B2eX%cH2pXq!OYrlk(8Y@xo&|Xx*ff~ -zNi9L68^~?H5GvWTzL~uPx&o?7i6QPBKNRg(mf$q|v!%^6P77V~3`$LSef7@fX39?&^uFRIg~@sv8Lk5uYxuK^!TF{*PdZsvX%M -zUaT3pSP7^`bHveoNj&-DB(F7z-fN;2O8IjmvohQjzX}jy3T4H+elbZv4}ri(%j9Ye -zWNJQAszByWJpX0imH5S@B|oK$>E`ZElLdBH8cxGfdS17#VZI$n;-?YbA;#8ffkuO8 -zD1zvu5qAbex^nAcjGVh;p7&}?8sY;xPGvT_82Z!Q|eqDDA -z)Y^1aANV?$2Oz50(38REi*s^lDa>6!P$FKsUR5s9H -zDj1^KRtqyYXcuwMk)$G>(fSpm{2oDk?2R`D%_jAHvT`zJa641)+p2OdoFXYx55e#H -zSc7JI+-E581jq~LJ>K*&a#0m+p<)4Yn`R9(?6zvxTXK2H+Y|=i&Mff?@?3UwI>FLI -zwZ5ToYPlC))%VnVqZ_Rb*-M-G8umWUr=n?-)qh-SG+eRzKkW2b`taanvOSxUwc4eZ -z_AM42quJPKpVE3= -zm9{_8U&Wz9j-#&@nGu5-Ko*UdOZC0%jNPBB;2eeTSW!2ISX)g$rJks#7zY9&o -z$J|t^Hlm%IE7*7Qdxvfl`=(e#tih75S2aKq!X<0b%gK#FEwNV<#k`1RFRn+Q48%`$ -z=+cib%9Mk$qVLO08%Jli!t-556tMH0l8b^nQ(KlPKKBA`p$Dn)4B#Oal46*y2P#V7 -z2u9fume!pUz`<3@@ZI=3=oF2ttYoyS!~xq_P^`j;gsTHZEkH$;7~#8)aY?hj#NB3% -z_8ywKvz*&Oi(?vd~X1;c)$tu59}3|x%E+0Og}8E;%d!`)HlF!5B=tY#DptQ -zgZ|S2j2bu1it@8J>__@fD`V6zZ^rEadS2$L>E*Imz$C-4jZ1=Hb#Tm~xQp@i%%TSA<*fjp|p_T)yK%8$-%UV=Vs~L_Dtw7^K -zU9u3)%f{|WIbrVKLDQLW`cF=goD!W-$0$)|!bh1hW81ujlsSoT?#bj8SLaVhVpX2QNn4x}RF>Rs -z!Ke8c$b~g0-csaz>b^t!%93a}m+)xBrhnI6w+z9RW+Gvu;Xuf?cB&0yVLO1#{Aek@ -zAvOkkvW*KD=gH=DLNv1wGGBTbNV-F#CXr0&A6>n2Rn@w~?Ao+#zx3Q>oT_u@YE^Rg -zL+(X$=Df=V^n4)FzjsZlQbUZExRIjDG9X+4GoD8vklm~)fK~e>rD9IPl=xalCN@zF -zx?nM~@yVkOAN0k<-&tI)oOsW*2mz=_1UChkopaJTU7!=&GokHa%DdRw+q*uwm7Z$T -z-d_y?awq$U60i8Kq(4+$N%{pSj>6$knj5ZbHJ -z&MHOD!N!n42{?SQa*y7*lw#MDiPVLdo%OMBAwW_&0GsDcge=v@PzqaQ8LckaPAG24 -zOlyGgm) -zmpCkOX2o9_$6Qy$jNaz2X!1e`ph$*Kt!(1YXgN$F47>$!^;U_Oe=o=fGV8`=8zdU_o&nVFR8q~O -z7Ubt3emZ-R=N{@!JdwO`usyPeU%r?pVn>jM6HmbE{&>s1Tj>XG7Ph4X^I2FmJD{fN -zN)!beUKss)hZu~2`0k0D|C(7;2Jwm@!K!kXe-!qC?#DPf*|ip%8WSbZ&${_^POM?t -zz_Qv5wY|`?Ngi~{0tbJ0U2u_TmZ*2pKAl#5mK?+ymh)m1JV7ZJ5*U!kh8{=phqfix -zDwfe{TW}sQY4)dM9eJQ)Pul7RZ0k;5YOR4to{BRBPo*uU7Wo2aPf1x?x{-{Jw9!hf8v6A|nd`wBk3eGB56L=$#S472nZj;`x(C$0BFv6wo!hzU -z`UiNREJFg?_Z9`xrO=|KM>ICu?UQQG?FsiM(NZXuGI=#)T-olDQTa-_!dh&SpRobf -z0&P1HGGhnSJQK!Uc61p7i&_nBh6R73sHs17GMY4YbGP~DP_FjM6_yCJM^a=hxF7qy -z=}KYPpGZzs`+HGzF*S_>Id3V@yw{;;5;DTJm0)!h8&A-tQLP(VNW#u_ZyL{HXjm8G -z1+B8bnlrJ0N*x5I88VJ)UQn^u#8^%pH<{s;t(F18ut)fTV|>LIBZm87o+1)+T8=*A -z*-2y_&%@5>*UZ3zBn0l{n)(lljuIr7l2)skAW#JP$tVbl?Xf8`stUl3^KR+6L^>oE -z_G$j|ft^rWuigHVYz0u?)zMeIINsvERc1O+*K^9wmmWo^4+8kpY;aCf%7Ek}sm(<5 -z9j@V|2Py7QLc;+p>S>ph4@h>K`GCnRa;XY7@iD5t6aYfT0fR4LC8V9cA{cE)cRz%M -zJmIvUv0(-`4)`to3hmKalFadlGPv!BGxEtisw^nFM6WqHK0^#RWt4b%o-0E2nAog`t#|She$k%NXU6xptb~ -zY^u%;pvuUeYe>aMPtW0!5M9aA7dncdl$H51*Ab+!Rfeu;RsM8Mp#X^ZyY{62X`)4^ -zw8Y@&06RPOp`q9Wk(Iz``8Fb3BwXb-f@%(MURmUqWO@m;kpL7hxfV*;p0-guzx(_jAZAk(RN-xo -z&^9O7jewdOs0htGVuz-~;DLZaSq?Bvz`4S>%X28$8}gJI`&S?X%WzcPrG*sV#BBJb -zMW{Tho5pPad?^S}Wn}68ANA_*6WBVFS`lh1jmk$3visHSBu)H<5Z~4fa7?E;9IoKNX6C&Hn%N9Oyo+6GXt3!?Gkno -z@9%&}Y>SK2Uu?3+o|SQ2o|YLpOUC3@1MMvzWuB(IBPxVf0?>z)&W2o;GDu(xNlX&r -zZ|GL2$Y?}=&IKsmS5{ZoQ)z!yTjZtg9b~z>kQ5HZiyVu<&3T%0x2XeWP8yi$H^bDe -zkAm1?jUOsW88Z#yB1_crCngZnByI{a1K*PbDp+E%@?@8)t$|+Ms6vy`d_8D?`n`Wu -zP!$>_z_kNXfFe-&r%IVBO08{_U@se^rwYO^t~?42qciH6v(qe?&y-p;rWV@5``N`6 -z2|np+ZBR+pP}#h|#ZDOl_b~(bK0S%LLA?r5W}W?5P_Lj+5tp>R>g+)W;EUZb>LPKs -zocfC{OpCl1t1f8(fr$!EpbB#n&(w)^i_5}wp& -z)_|5iCvjha06fdGuUwkTDk#baROfa@`eU!`=}=mb8+%j%?vyL>xFWEGgo&3}!8U5O -z!F&)BHqcj21$YJ$KzbckCuAKd#cAwm?n6SABC5J}(?QxQ16yfh#x6JvjKrJUl!-iR -z%2CPXW>FzdkUjU;p3&yht(t{os=Ua+w(BV;&BgV7BoAqB0hwx(m4az5q`3je?|TqB -zApG->$flN;o4BMXD%-;k{4xa9^^UEq3Amj9yjxgm)*)oQKxWO(r!V~vrx%7 -zlZrsvdw_d-PU^{QJAzxPCCND+5bxB=S?1gUa09=`d`z=bc@6;HmP8z$yi2v)EvZbV -zy_RzAn8rEVHrL677z6l~M$!7b=dI;zUlNlCa#>Vk=Mt2^Fw3?(hVBw+n5l(k8YuAOI7lJ7TM9%8nt5rL)v#qn;l1^iv8L{ -z^L29n=a%P^>{R3fer?UpWe(X4Qi -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 -zy=SDwWH+zoa5vcwxowF^ktnkr+1} -zX&NBcW~^-%C0rA5XibJ{K(V>1@ePs+MZ9B -zo@7}1-d&dP(2tGr_Qy9ekC+LUs~MX(KD_1W7MA;d!&cg_U(TfOUGEr`Fz24CMU|So -zBVj}msWSxwNL_}L_{Cq5cmKlv?}9x%k~p7gje4jWPXC&yY{Vbto#-E9v=H1`+2mR+ -zd)dk5jTMHQFq;uEqzrcjkGwlOXjcD_pivMpbgzmFR=n!3>)k|2qk&2Q^pJRFOQJ<$ -zqUMDtBbl6OOW}-y{;Rk6@Ze|cLhxGIVO~xm3^DwbgGWBq=i6;d0Ju*pHiNh*4bQ$ -zxV}mJCClj9c2M?&kRC4{8-Ax?8+)RK^q5q%wE#oyb_WXt5I@%T5pf+ -zZ0f;&Twj0qIY)eOeV3`If3ugWE|I%M^*Us;v`c>9TJc0cY6o7Dt{p5^($AYVR`2Z^ -zmsoGTw|iVWP$uIK^;(==e-Uaj*tZMbe?8Ckv0o3TSQlYp?Gt%u`hni}+(mp;p2II5 -zgQ32k#H^9x8NEk?#S=SzrM|v=P_t8D$s)twT`D)?OEoKt!UeR}$v-M4CdipICy|!s!}KO<4m7`F*@%AT;4{HjE&hSu0oYduV`l -z(^>#~CU}$Hzc;l?GvrBBW+>28QWje)M5*=lD0%uWb`Gu3$j&o -z<{+61lOz2k{O`uJLCW<*?66Hu5O7+ZRB8@O_rYhcyJS|)Tob!|%F%EeToVc#`}7a< -zr_stvpf4)m7ldcI>-=HI`A63-OoYttm=XuK8%I)Ggc;E4Qj$F%0`m(!>bOZ)Y$djRXox= -z9KNpem$$#^_NIOdxU~ccJIcR?&L#5V7=RAQt#SJx)JEAh#Z6KvyV>9v0}!p;i>Sg0 -zCpP6(M)FjThkcthpG!NRx)CsXFZ)kR(*vFVmw78Uq(@}VSk^=j_Hrz>PuP{F0H%Pe -zkHKW%&Uzf-`QctbyouN1ATFsmrtH9df4X>Yg@nzsnKQjE`0kIcQFkQyJaU^sK?QvO -zlshthg1E|_Qs)JJLd6x<_14;y;VJCd0cGyMJtP#o$TEa;AZ8p!IWk;C17D&Vdk3*_ -z9Zo7kN@%O^YLZ5f*S}zQ+A0+`ddA&-)(GpPn4<` -zJ3Dz_;vBytfhxmkji@qFWEOYZ0`MkwKE^_dFR8~bw(wXs@>X9K$oir`&5HteF?w5= -z8*z~B{U!99TJ*2gtZN7z$-TLD)aE3MKxPTNbi9GDbCfqZ2|bJZj(C6e${Zd@6B%d9 -zf8mA3bRJ7!q~bPQV)B|eSE5*kexH3i>adm|{BclCNxjuTj`cDLxr}-8c;4h9H;{^s -z(RBr60$s(*ED2n5iSJJ3tPfqjNd%70Pe -za6PXqu`X)gTbUQ0Vs=6|7#m|Q9L6rUD{T*Bi-X|yOo1AGPJO^0IRTG?hvm2*nbng& -zthKuU!<5nu0I-263zw9@Y~BduT&h(Z?-J2nyrF4Z<3a3&3x!=49)Z+T+vw!EE>td5 -z_hyRi=^nP;IscUHkWWGkDd=6mn$Xy)yo%=oj@m}MNX_5v#By1oL88cgQ3>Bfl!95_ -zgL>6=T6x;QQTPY_vhg)hoti>l#3HYHu@CWm&W!of4~$}2=39Ns>P%I4fqqkZzg^M9 -znSNv%r*dPrmWHg2 -z3U2y-T)-%6FpOBpJ(`m4?VRHuyHbz+WE$z2KYb%bW=(syM8Q7= -zB??Cs+l7#n=aTK@?6dFD4MQtlYv1H(;wDFsDVJ{}U6POHF{Ys|6lPDpQzL89`*LjHk;ms;2lRmCHs5c4Kr{R|1K$cZgsPtg$Wxr2} -z9k7~0tm&E@De>f<*+Hnn9gOl`mlFG)fP&0)oj0c?lRdLfH0sE-?+aOHbvbS`g-C6- -zynTE7O{N*E&%S;8{)4qVc_M><^6Tbeq4MVMTbv!c`Qyj77@vcG!tb7k93jbPf1^9c -zyYB4$q&a84#}!oUD+k5bxR;-cAK`B=)fw06SMuX_tJ5JL?=b;Ne>}j>U0&7CU)-gG -z-_g(Civ0{Lg>Af!=;0tja(7QO8FW_v4BG(!n&C -z_}jO?f9UY6?MGPBXA`;%ol8(Y`1Oo2jsD-iQFUMao%kzuu(u!Ia95p!9N*sl{&sW5 -zr?>AvzKO}T8~E|pH>=sN{uF-v{s#A7d}DAO6uZLP&+p$JRcoXE^XIq6Y;OD8&%b!g -zJ={7gxFeLk?Yj|*|N5?1l*G&ae*1Q7ExZ5wJAW+m{ap;6K?Hw)=g8;6(C_cRfp)UH -zmv^Hzx5-PJm&IFXN)&I4Gynds;h%)uzkhtY4W={r`{y^kRrd4SM?Vl$`Wb)XiRC(h -zzW=b-zrmrRuYd8$dVKr)7ZC>bx4+)fgf2d4gIj~&IxYH;{{HKBzjgi^Q_srr`Yx@` -z-+%p`4upO1_up?ipY*SP|45HqUf*tW?XR(r!sB9Zf88#(KD{mv@XI6C-+%vx)0_Ul -zq-jPL|Nh&q@9$?keEzSua;5zK7tTyVYkU9qyQ_1_Yd!S>*yzO*n!kU)vC8ZDr{BMS -z-&X6&me0QtO7Cp{zL%9~15d=JoSuc4Nh7vP$fu`M!@1-`QlWbP($?Z|>3))4QQ#Krss@dSQoPi~f^@5Gf{)PlQBGXjf#j1hzwEcl^#R{f3zyJDnoTU8l -zw_YxIW^oo-vT9o1e!b~WWk<$tlwW%TkL=CAf9s>ZL=Xdn`$AK~bOQQp!v6bTIzVFj -zk{z-G~ -zi<7irEZ^NKKSH~|`-_LYc-kjt|IWE94|N_s>_z;rCv-dS_Qy-mz4dlA*X4E{V)0{8 -zSPgH#etb)B7n%EqH~y{xch{}_ZFhrPVsCEFKtEpmI%TE5Y~lE*d;%ac>Zh>8^!7Zs -z{kU}>7UAA(lHYE-{jLvx{DqBDzuPCn)oyecT>9$f;%B$mI`|~^$;|4TzkjDUzYXSz -z*M10jc^(2(Hb+0!vj6@2Tl)K>di(y{hEW2Ybc{cDn*j6K9VEOg#&I^*nA>cA<4w)Y -z+u!N?u})@0-k3Oh5^w(g?Z1f)+9BCxL1%G0Habe}`uIzdJV5{XhS||I@G!;k~PW|M+3Q{{!!xuk&EK -zmBx(WwY>eX4T5DU6omZoOKcbT6zC0w|7SC;}EMiixWp4T;B3e2(gyV&+V2uJW9PMh{0cMniWE2ggm$@Q(AwmcEztF*diO=`gvy&fdc)20O^xm@Jm`3-9$ -zvv^3BW>7Qo^DVuRZx@#VBJ6g|gFl?{$fp^S&Ca;_$Njx@qm%=m-EwJ?50Z4RDb-BO&hQbAI-J%qc(l; -zmuItNkF%?gUu-veTr6es=qfRJR{iZfG5lWru@`dRcCdFBwzxI+$J^Nse>3U9$L-_k -z=N<<8)@YmfW304Z@raduC*JHk;yg#N;8aeb^l&NS$JCfw^>jIUD38hf$H(krJI{B0 -zu~?Z!>|1&QYt^Kerup{RER`is44v-wquo}+;~D*SKKgP+i-CX37qaK)kC*J@(09KN -zG1fChD9_&-HCe#+-g+Y`t-@%16N)|ax`|DFR3YN#oLeJW^`kq|agrgtnWqhUwkft* -zp8ze0*0#Z1>)Baqk+vUFb{vkjhi57shPwO-%6E2K@3JumG^W^G5|^Yqu{T#o^_L2J -zTPrabn7&ki#U9UbpnJ)>59oZI}F) -z{Qco0y*%gdzEA1plFvBjV^8_ym;AFPe|O5KsGo;R3iB6NT$XWEf?BUd>l422GFO(= -z>1#Hay=no>)&}H6iu7U61nLmzo+epllE+vK{&E2eh(4yJ4LRcjerY95^weJ^hFsk9 -z#j3Zol4I*34rUTSL?`g_S{e1cvT-&MdEL2*E!ZJQtNK;b?M=78vhnvp>-jogbdv(m -z!E?t9d~G{IfshKt3Sv5xr{S$wehXYWv$bqr!d@gf`b)L`DTH`tE~8T~LAPg|S(~WP -z$}l*OOSjIc$ZD%^8pv<{(hcA5`{wa3A(}x;X#5C!?hWhZAQOddkD+VMU4mSFeDt2v -z@x7(UI~4n+rS;?1Je<42q~1!);#F~(RkD=6JfT>gX+qGi6ds=O+U6e3^Nk@p?%gmb -z@Uum&3iY;xis%(Faz_tlfo-lfdEQu*_2Uwrt!jl6Y$%sed$|*QIssyaAt@;gRA%X2 -zA0v^Chq_KM=dkfAb2llE_Ym51d@#S0R -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 -z+a*|6$hF{j%BU#cAFWYsF*k)9D7S8 -zAPb(op^T1LK20c)UG>W??w2{*-f*E5F%_m=epsJ(>rD69#{Ng*j5?ftFs<43$G;Ro -z^-d*+4w8eqxNNw$k1Jtbmam{FDfB@s%KqQ}?Z1g}Y}4ezF6_p*>rsJhtq{A7jM|gg -z(I}1Xd56w+Tv)5xs;nn~BxhY&rvTbT4L<4&sxJ?;c!evew6Mh7+|jZplVUYFN*)Az5ti)`L247*7F@O7)s6RF>xR)+Sg9yb1hUn=87vx5{?+ro9_UBEeTTBA*O*-9E}r -zaWPuOTQLuhTc%xGKi-$rTpX0`ICd3vcbQ+5`~r=o~5c -zxgJ~5<$Q52Kc^N|TR;Z%qAV1`KesreF}GhMyYrSpnz-8$fQU3dS5E%mmY$!I>Not+%h -zIf;q9=?kFaDSm(@bC*C|hZ@ohZ8&UYldA@dn&hx#rA&!3a;+}|1oP5%ZQ$#SM<7Y9 -zeEPmQ$K-n9^R~TzLF9^?#QHi}R4M1|q&tZ8QsmHupGy*D})<0|t5gM6Kyk00*z3 -zKZ7x}J&xpQO>z#{0d}6LuoP6(OT&k1SDIcm?b$Xutv@S^r{kxM`S5pEw#MyRv;sCKR&MkIVlg_;< -zv<5H*C@)cll`Q9!wRq&gWjPPQnkAGD(|9t^P|!jHMw9dc#N$zgbUJO=j_U5-x%EB+ -zHsds3GRLlf7T89Ij^U3rOeq)>3pqi>SPzA}DL7vt6^`&dbwTh8c5pmr_5-D$|j_iN5?JW6S*LZ(Jf7g4;NW^$_5Pj@>%H$Sxs%{+f~f_3f*(f -z{qSS)+-2{J{SnkE_u2JKd7!x3@5LGL5~fl0i0#9G6iK%ZI9J_j2gcot3w=eaKS^4bx*wx{C)DFskyXvfK2K -z7>F-$V(mVNBUc-=5tuRuhEO4LT2_H-KDC%Di&%_v}lx5DQzyp&O*IZl)gr9eQ -zSkA60jEcuR98*=Z@kFpf)LUX=%*P_PhWC`#jP0kvKrLwpNNAgVDC;oyvbJ7EVnaAk -zFoN;Jcp0O=8K5IRgA2O6@}ZkKK83r%al>^o*;-7E>sH^yt?e6RQ8mWlce@K}kxg)! -zZ=xylqnFi<<(NMhx<>YK+E>~yyZ)QE3g>S&N*cHypB^h0^Kq=3$mQLVQn&oFJ;&3h -zk(H|u5B&-PhSxtKm{~*djtY5cBxTcGQ8Bh1zF7c7`zS{hV$h0z;d6d@EFc1vX|&Ck -z>(Od;uv#~)r}TJaeMziwoB%+;itT&-tvI@ONbD7#Hf@X2z|>9YA7BhA}tE+2-FiNDUMVhx$78?TiyFWNBPCK9FW2^g0<=@sj3v0XXk< -z>0R3jl%_PM<=tGwEm`dRFI&?!O{`*AR5MM?$+W&srmnwH-s;o2t8HzE^nfG;19qvL -zARzXILwB%lVU`oYDJae^y92QF<@fq-krjU!<%*T8ayKP$=gaM3!P2ArWWXYTGDj2g -z(174D(R-%DxnktG+EBgBMr2DQk_`Lnx~p$CNsE2^8t6(due*)ho@`cb1qd%;Ms|Ps -zB6uwilS`)ftC_k6TJ2(R1_rPPqkrkcB0d3y=dsJ$NQrG?Y^#7fRKfPs%l#rPz&Tcq -ze)|FH(R8uIwZOqZP0V(1H)bYv|FUZ~pqCXp{qpgJ3A)#@?SXJOY{kg5t=JpN_1(8b -zHLpnJlxtSPkrvGsM?VBgz=sJTdndAebe>-xL$i%4+zp>* -zQ+_mWmummKvcx}Emt@@470znJk;lH^g;Cl -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 -z9f1qRvrt+*kQ)ba3bZdZeMrnfFJeeb) -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 -zt+LJnF${lK&A)XdVfk6;BK8{vY9D)RLndw -zi!sashnmbBL!?-2HHnE`=Wg<0tZ&TE+MVlZ9xPBT={oaZGMY+39+v(J&f>Q#?p(2Dp2E(S+y()$%9Kci+$+Oy0pJqq@|AV#FbUt%@+*qn~ -zl1xl7NKaqWfbqA(jy55k4d+cZ(`T!EYI+z%>fOCnU}Je5XBq2jIWEK&>#$OlFiGQ~ -zI4jd)&rfC8W53IOQK!ot_GO6wG;ECtl5b1hx9q-8fJpsAeK(*g#84!(@XKkSQ=y24 -zGa8TCk!%ymaLzuQABDiB -zLY8lH>OM+AZCn;R|PKZh{%KM?e2dXH{&^=W!D&^K9j@j$nR**B0l1JO=7F -z=(PR*lcavb{bVS))9Ou$kZjUJV*xK|x~{`$c*Icjy~(ulqvP*kP1D2S-(Qb7g~#GJc6s{`M=Z`ceZ=#*ax5$VYHrBtUpT(! -z8CS1c@a?A~DDUevk;6~rFQyMde2>3)`Dprd2t90ZV`028JWT%h1wua&${`ne-%Zyv -zYTEv7=3}G5o&qJ?9T!cU(Ami~bvx>1H8dUxGsT+-MK$zX*tB^RMpg+(4*}7XYFa@a -zuF6%NAsq&`oP=)wZy@FRZ(;ejYxT7zhQF!H>g_bZU37@@ALnG7<~Wl -ziDUBrJj3?6 -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 -z*0oLCY2FC~u-B_=Y@v^8Bw8NC5CW6;O~M}^ -z9S|nngL0R^^lX+BY`xM2@-7+7Dm+6;l_*Y1W&r!qWO?&H;Z#&I&O0)Hjp<{2t%B00 -zgi_oV-6L{p{BabIAOA(ri~m-?zv}|%tJc-tyPj;3il))jk#^powa#DoZjwG|#0wag -zHod=iKLHjV)SI`;U5lQ>(eJPQDjzGtrr9x|XkEzh?PZfa_=2_1+lAM2?Iwd8LbY71 -zd@9ALBs`*h-@9(tIDYrPDQ^_#mbp;TWsz?Vo_(Mexv~G>Oc+bG&0SY8JRaG;XLj9MjpS1gw9K}>@QXEH?PJ#hkfYZykrXd+Tt%j|he6!~H*uB)5t1 -zjq;q*Z2mafsdt-SoD!h6vu82ejgQA+MO^U+RLQny^|(0>WStd^l5?T`R#nc}EkpG4 -zhkf5`d_PvJ3Fy$$}@_`$Ao&i*~_ -zV(Rn~FeBc++3?@@JhQ~BnXZ;sycweG5uCq${$od)jJ>peeAo1JT`fQLs$?YpYyl1C -zo=zXD`ln4aZI@qqxMp^R)tv8hovE|Z9`37h&D-(iTEBreVP^EY_LP|(lVKS+sD)>JM1VT$Q^sOB!0a8mFIgGAJ)w# -zF3KRGbgYmxTF7dXPG#n%xYl7Opcu=j`1J8^PqB-dUt#?Selw)#0csLU%%mRDMJTyg -zccp6)F=>PP}G~IQj2FoQT^_{X6Kd) -zFz&a753oU{{M8b}gzU6O(r6`d00lb68}y;;kcBmYKdxJa2W@__++t)}%8Q~i?WE_^ -zAEX_=b>8NOG+C2^cd`B~v^ohY25*)y#DNY>74GD8G&|g*8rQ)cD)kof`+rzd%m`GuM#jRRa*GN_x6p&$@{&Q%>Gs@DiW -z%viixMOudHhPpuRqLev6!Ls0ct3)?(@_?^lyzeklvira(*6Cvsi&J-L6Kzbm7mx;Z -zbqnd5`lp;A+&$x0^EtZ3kV|gbBSjEXkK?`bmq_o(^|5oy8KT&NCQe=$DAJHAKKWZ` -zzc5ZE{m>Xi#%JbV8K1J`WQ|?o=L?`Fa-o3E5Apbcsn+fWC$r#1UZJ3zFAk^%iO(q5 -zd0@39HL@(wq)yAPx9pA>{f~#A*okNMi-$!S8}ycXpP$QC(bA=LJwDEi8*<}wOZGi+ -zO)@egTcE}p@0BD{A4g4!w^&W>7jt5Wvm1hH+$_U2S2 -zz@HSiqvFxWL+w3irl*vA6pyN!W#t(ooZeWBbA#x$+|bEt3$AOO -z3h;iAes$_Hod$8EN@QsTQJG2!G@0FO^>!4OYyx7k=k;ZgK0pn0*Bk! -z2Ab|=ZbSM0JzfC@8jqCHWcw~B&g(SgLbNXKJn7&u%hP{Q6sNpTr+=eGI9hG}2t6X% -z@IS6Q3Hd&)b|;S2$Ls`wpQoAxwV~cpn*wUFpT7jaBdV2-laOnabIB?m4^JPSUQm`R -zZU9lAGVrkES=JcF1r=6jVP7=t*l#eRlaBEHlmaKYb?mSP9*|IrN82rE0d3grZn -zaCu2rO)MESu!dM3tRSbwQH4YEWWmm3odAJ;L{4yt68$F_;EFk`_bc(5XLEG -zKaU1i2fSKrS}!}4%q8+2zl;+U8s~jEIF)iPu;pmLyv(#jrBNA*MKNM^UCW7D$H)A6 -z+|&<2E0($3FkS~A3fuKgtk&z|xq*}8$Rw%PK3uakPuE2B@!{4lTYpY}zP1w#{OhoR -z%V;TYV?gtK`+6U81rlss$(r{vU*&dW&is>+#InsR5(Reg{j0E-n~a1@b2!Wx7Qw&o -zaYNwrP)E1mhRU?Zjvu%Kec41 -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 -zl=4HwB?W6TngzisZ3Lvcpp0OTToG^((;t1T3 -z?GYR3FPMZ`sIY5uE>ym?slMEDC0VZ?xs!E=>@F+HC&vksBwpSCs+&OlG9ule#szND -zV)XT5Es=M}Zqj^(*<76Dqg#5mHr1)k9bf+IZ?{iq)mjdKDMz-Hm*2oCGxYZ?zAZ8yU{cT}yz|!_*KqmXZ(}%8NqjGs7>^@r) -zZ@QPu^M~87yeCOSq=o(Z|}RrM2E=0mx|HoLILFVtmb{Yk6R9 -zP)ReZ+RLU9&&7^R+PHIw&pM1+)R1Sit<;b@TbhNMX5YU3t%JCYZORLu-%fA|-4oGW -zM#Bm`h9-T#V+`4NEC2Vuzpbc$nt7U6 -z!&jkw^Oj&h<%Id`cISj>83p70ntnT9eu-vg+HY-68q -z-RBYXEY4SLbi7q!ykWXi&lqHIfwBUSlHe0TCeAQ -z8?%PVSk))(!n$Ec9HFB+b&y%st)qhnN|;e`GZM8dhF%(W>Hw7-oV}_nTT*o_M4QY? -zOFXigBNK;9?@7&}Yff%snBynOlUz0#YqeN@_aFj%gJ2b!n&1}hhRNp_CC^qYx;%wB -zykp7AVTSIb`^xMr88(|)Cxh1YaFoGr548B#7C2)3xj(}cF(j1-h4^9iF~5=977fpp -z<#<~!hPJXVG# -z+1cLghQQC6)(DL8n3P`rVVOiYVu^-}N1C@wvL+>1EYZc#1b+!K!+99#GhC_x_!`@AyY0`bjn)~JMPlx1qwlTiN -zp!7}^$ZFome1cE{Ql!`w^(bH;S>`Ast>UWz@r%;kb~hs*Xhx>E%PYRa@4YIGTvxyMSuVK_mSEwy-P9!@)dB3 -z$*BfoeZh~i+n0#q4#$!2&<|PsozwIjelj7E{pp9VS4iOayOU~TpOBz++y{66YOaog -zt_X~|QCH5H*&wmXT2;myWG7{+Z|2`&sIS=@x{14OcSep#_dB|$OuuM*Q6DFXOZ`ir -zCySdCvh}LAl~``BEho2C3#5`>x_XEnZ3p=J16$jZtA^#wv`!eevNdyju?V; -zbBbWKR*T%67>2Ky8xTeOsxf<-Gs~@WL?wwxFy#$CSGVGHEQ$2D4mwv`)C#y(ZLX0f -z>zbpU1?b3}ald_}!e>=0H0E*s@Z!G-j*)?-s3_bn_8VkXP9(+l%q;qdl4u;Ly_2l5 -z81TRrUCjYEhfc})j?7GvmD>O0H-%mB&`oyNTVkrsd}B(Wq~!-)}yUM=6S&qsjTa!3qIWo -z#C~@--f^3c1MY+QTe2myhLrIr7szXYI=0`%3oV< -zbFApUQdB11THRzVAJZHJw6%fHl$Dmj6D)>o8ZJe&d`~FV7liPFxOIXmfL03yazWT^cdU -z|LkHG&=q8jc`-v(yMvI8$#L<(>L6zDM;hQw_7+P4n*mQ>`kuZNYw^tk6Eh#;__9)( -zeT>H?UNI~bUE`yDv=t0f2RPmpT~PJaRF@ChiWz=-f~T)D74qBkLvR&j0vkbJASi+cz0JIi8sCn~R0kCc5s~g5>#ol;feYoIU&b6-Wj7 -zkMXt7lnKdR9Ln{vv1)23abWPkgg$J$4V?1XDqxkh??oeL(~Kd^oyC<5Dm)32@oo~> -z>A7{Vzuz>}m_Po`RbzN8x3<{u{z75DtlGcdPWi9xUFQRmESZ_N3gKC6H~8=l&``F0NB<l(&v{SzZjz@de0dc6vea!8mY6ji2J(_={ec -zGO{kc_Y}zz!AduX+gyudU}(>z76(Oeu~S~<%#!bH@}gdB5|$g6s@LS{wbNB`?rB$O -zUEqfTE%B8-?dUd;UCU)SI5Nq;RiWwIGekGdxLv`-37h84pL%VKZ1SN6M?>o0MBurdm%4gW4?2Kmcrpo_3|Cl#rvC9h!&b -zafD3K#^cB;XtNA2emWHAJF_3CgEH#?B9Rv>-3G?+HKgb1<%jUzQelhD482(p%quFc^#Md>K1DbPcOOLugV?$FRF% -zC=+DNEm!fVISLQdknzmqv`J?JM8|Rduyo}^g4j@dS{pskI4YFT|^#KYr!^E4bC-YfucFvvRz$auTsc{>T7{36ZKc)wb!fx@LuNx|PRof>L -zR6h1gOj@Vt7sC$?)OPPcgqBUs6q{}vGB%)-4P+DJx@^XIi<#1AHVzmyJ^0-_JSx&d6WCIf8;5N2 -z8IE>^?Cbz`Nmo#H-SL6Zk<3oN>`P -zK)5J&ia|pCw6_F06-G6a+!u7eh;`djQ-@4?JWmN#&W1vxaM03yl$O9e0tiC%)DX47 -zyf17=P9~Lt2`Qb2^S7RnfPjX#EUQQakCv7$0vhh~$eSegS~yEoHRl?^UL>In$*O!x -z$koJi+MHO`QuMH%^@=7diF)H|niVp$QH@*9X_K3m-iY>e`L`qtK^+*~d%o!{8>CKm -zgVoDl(CKwIli_<8l{DN5xIo=6Hf>_YolDmS0cXM__SELj&|A*2$8EY6+!<(UAik -zPA@+9JUik=p^h(}7HIO3cu9q)rf{p|fcsLV&T6D)nBw@zndy5#1N(BN2WeBSuf=t~ -z6-#>DY%(TeV{mYx%U~iV -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 -zpj`R0EKz7v^Q#!raZxT!c?&un=t4 -zu~(cFwE9eNBzp`psc;EVVqH*VrHc~-gFB6PM0q$~+aapx79Yimdh!@LZ2U4M@Svja -z-~8>&(SjQZ@5F!j{pa5&<$c5_z|ZY|r^90QqWh4^y2kBe77t+H*F?FE;T}^M)uM#^)N_rF*KJv8NFw^yl|^&{fXbKpC(zDz(s^ -z&wBAPnJ{g_MUU0WH@d+NOv012X!sbKcsV?L*r|F?72+_P!?G=bPxb6m3K1(*VsZ5` -z=-JzmEb?ibF?kn1om`jfFadK4{^z<)yd;3?8}q^JLP+S2H%jb8e}<&GdS>eKorv|Z -zp^@7g)G91maXVFQ+VWK@omY2}b!Iq~hg|$zKLc!9dR=uAW{O97>)KdJthnQ^YrLHY -zyr3(ykEh#KUjfaOk8W|;V6azy6Xr*zwY-vp$u8fuwSEn6#V>EhuI3j})f(k*w~g;) -zfGDuM;9c9__?scVhm$-=faUcQzIhDcspq&+Bcll*0mEj?kJgd>a(E-_1)xsjQy&uC -z<32gmQR2v!MqS0F$r{X(A}*tO%H`jpUdqbxifMg4leeG^7Y@oFYskX)`02ENtH)j&aiFfF>Vd5hpElX&EPdGh}#p1Ss$fh2S -z>I2<8Sz&!?|Mkr`#0b!s?68i0c*m@lyJ^8?4Bc?-&f2r}-Enc#gf^+9s|@$CtB|Kz -zuMog{ge1#_#)qX&1xpFvAiy0*34a}W)<|^TD8S!#^ttVw$_MPda6VJhr7X$~BlflH -zxuRvOlYQ`1##HjDw*0<+I&Z_Uzkb+mz#hMTntFlDKgdEo@fh?Cp5Yqqc#7oSLB=N4 -zfnXe#)I`0=pz#I!DHvK95mWBqV3DLob0J?!&O%7Zc*5ZEjR#S!bUD=r2fN& -z;>a)$Y-Plo-|EK8tMv{w0itX)Y3EnNLOAbS=I#JN)CnyJ;p=t$veZ}PTTt(5ldLbS -z@lh+rIn*(pW0AOQNit^jpLSgwC@j0q6#9%mJ%ime^#JnG>8`44FM=u>jd{H{7Pe1Z -z-GuPsg#QB|iTpzveaE|4tD;3ZBcyx>;z;b<~XZR8~v5~-Fz%y)RX@jmb+~Pa~dNtZp -zlgZ|EPv{KuhpGG%@oQV7N6nm3>-T*2-bt(+_H?AXGpRAmg5YiY5nLO&8)$#XZiR1a -zGV3~P`M~}2sz+GX&ZU5_LTmR+Yt4C~$(1#+6#)J9-cM7Z*97HMF;`!(M6gCj`|d2x -zldRg)GB~SFY;NM1$P)Rw+`ilZ!4ijAUY@~!55HDkqgVQJA$68whIFI`Vu`F4e(T=1 -zf#EMU8ZEjxUPyCP7eip5AsK9ihA$G>KB1zG?WJ`Q3&=uL??c3YGNUGk}&s|-SO9X;>sX<<$ -zQwt?Ev|{9sf=S4S)MmoCO>^b5Cayd?onCJ@eVsGvmo9>avs?Kp>WjHwF7a@Hmyd9q -z<441%4^S~XdlVEFXT0YW3H)_4SS?~eBC`KDR06Jc;4OLj#y5cT`4fr-J1Jh0IF7cDX*7#MFrEb3}3XmSPwUlKL9b9!DVMJt>q)$qeu -z0IR!Yfzt5KCVB6LaFKz;?|`Zz)mGNzL1Q<{GNL$z_|VxsF@Fx1%>g(SRpl@04-`s2 -z`jutf&RPs?nAGi%A!=%Z6;tC9+!|TA-lyHZbe;`5P&)+fFm3gaNNtvoRQQ~u`VWT6#l9>vM8EDTfX)$b^F)GrS+Y$g -z*VQT!$+F?N6(mQL6_ny{m~SdwFGo;Aa@+x~=;A;XSor%pb6iya)6@1nH~@%22oxe>)!i!bGEjhy@)K -zeo7N!1c$!)H#FY%LtVS{ot;x7%d;4@4eoI8fIy6I-A4PH+0b07qLhx|iuBkYB2YO!&Px+aucMq-?rrScgU*spd_1-1En8BT! -zw8v!TC4FLJpWYKSbjrmaNZG4-jNHG46wlJam_0BCpz5tWmqW%-|ma -z&YVEC*ms83 -z2rTmO>X@wn$`jG!V}X?Pp)Pvf*2=kE(7PjU4HHQCG9UuVwJTA3sLC;{(qhrTYcSJJ -zfh!1OSb3tQ0tj-a8W~_gGBjcmaCu4uC~hHBjN(>N2hN;lBq0$d0VTcH8d>;fPnk+c -zsg|Ghv3Ytb6cHv0PQ4{ZHOYCK#bo=xg -zf%+&;s^7B==zhU9-Ei;tpeg3^018DS}JP&U(||UncwSqW`7(`fjg%h}4)c -zHO=XR6t?Vmef?~gk%wzG{>@Q&iU*=aTVUgPs5b2uHZ;G)v9e6=g=!Y!pW%Hau)0 -z3W2wX;Rnu|-N^*{U-BAOs@0jPT&`Vl$a8r{w=n3k4AJ -z>BQZCq&F&^=in9{vafjS51T>wKMllv@LtG%-FB7X#l!rd+F@iXcRMcwj8%fG=c)W -zO>PB|v00p?kIL+rvc}$>&c8rLVqtUm)&2fO<_h?f=F}HEwQB_OwNK0-pvxLV5dep2 -z%A{OB4 -zPL|8ki(8Q|4w{?ATX@n)$(_BA<|20oc6j-QMa86DKu@XufY?wuq+Lc6hS4hnD-L^_ -zqxCAV^JJItV&}SkT>{*>=sKemB_*ael8)+^uBc;eg@)o)Eb5dSLBb>4#23l)HLh2s -z?{mHgye{;n**(@$!;qu$`2K0dEPdNfXwxm&*sA6@Z4p9>r(XPEM;@{9zdrXK+LCq= -zDJ$a9FIb(#xF_Xx5-z5JuUa&ZxsNZq&D>Ys#xG%vgw5kw?D96}Xc~Sw<-7~pZ^)Qs -zi>F^Y7hJWrPpPmT6`oLPCJ`vVi~c;ainD;uAEC(5Lug*6WA6>kAh?~wa!5m3)(Bk_ -zE_fUsW4NU8?3tq~nLQ>kW2mc{Z;Js+{qG=p9rr?xP1Z;Q!{&vOYkbV916Osk9xc>~ -z4P3k|<@K@gAFg^iTJlyYE?>tHJ#_D3KhTgsYR9opRTOWo9ttZ&+MI -z+#eFhcnKX}k?2X*U-1?2(Tyj#b_9Rx!Dlp>Kv66&WK{a+ZpxpCXT+oyICs{Cyf
37*9!HVJSST0AWS3OK-LlZ89%s32eGih~)S&i#PKQZf -zTaLC8yxa$F4K#Isvby@qL|W4Wf;w%*fYE3b1=F3Eec3p3LjL?X4Dhm5Vkg#ZEeF1-x6jWM=Q{jU{Hpre#8fwt -zyU5!jU>DsYPBv&ad`KGYHl7t~&!0ppO%^)z>>URJq+enZX5`PdCf|fO&WSp0?JlUq -zUrK|_y$5t?P2pjK{I|G+jsyT~N!QMmc9AX-2Q)r{n?h|Jd-7e -z-k-PV`;f2j7{2)9vQJi5ot~;|b=3=iBuLRk5)2NK)1Us>wh5p-vU260@kw%t0|*#w -z*tYi!JcWI0MLAmzd^dgXX1J;*$%;gsBu9%oc%)8~SWE|+8G9HJ2;!9G05Au6OxX!h -z4!+}x@{K2oS~K_X{AL%9KU7u^7*iG8ceyhxTuLnG1Nm1*c92isK8infbXO%2^_^U3 -zihF3ys{w8H5t6T|wa`v`-fuvlQ_L{kEN8mU1M@7)-!Jn%s40x}FaR17?Ir#DS~l0y -zO72Wq`5l#dh&{k;qV-be?OouBn$GXmVmb-AGB06EdooWV_q6fTAu1SH-lsb7V!2sEpm>`wYPFJvKwFzmq)p1!)pm6xq~1 -z{ylGxJ1SS@^lgeW+AlVWcr?18&9SwVfnwFq9dKZN2B;f+k(D_(k9Z2hnDA?bUI@j& -z#W*A3sL*dc*3u69)D>Gg47xNXL(s@vNp|-xQ=+iF_-+f?L)w9gUr#?O{XrTF=W$BV -z*(=v5eSv*(D|}G&VXa&A?bGad^bN!6Pp}010vX`A$UL6*8)O)H9_p_sDC5@C^KV2K -znBRl>f8(HH^`Bs>f7)~)7$U2XiTL~B?0h`ZHr#ZT3n{PtQACQ|Mnx7y -z0P8qoDZLkjCGi*!m#}(Orn#;zxs#xWxvrVsfo -zdq~-S1akN)xgOkS%{do-TfrXA!8*K)w{eC0*$xI=!%12kG{2;Z_A=y<%P3I#sbYcAizH>j|4 -z(}d4Rj%i1e4JvUm!!&{!a|_gmPXYfa+waAsxVT@MxoRCur#yd=c=#>mCX17 -zXGLZTmcl9ljBN|(xw;;u%SGSnz#e2WppwFcRRb8(EgyLolW2ognUMzZVVFLER~wKb -zp(yJryCFS`dA)q><7J6Fi<*dNe8-|=!^LFR;RsFNaUY3HxhGaHn0ckSc2z;3xgU9H`o}Wn(C| -zx*mF01LQMx$B0dchSkd}_mo;i8cBB~eJj^k$iS1Cqd?+jHziYvpZROm=hcrm3*LYK -z;aK?*FbIulWM<(B+-fBXITP|RCenBU)2jP|?N -ziqO3_6|hzq$iB{G8|25({IXob%&di$5NvQ7yV@#WI32ff{`nSLv(r$)No-lVS!^4y -zpJZGE9Q^>&5X+zdWY2|ta-C2}HVmkGxZU2!_ALjg(r#7yJq+qR_yIT -z5B(8%v4Ad!zXZH@Db8brr;4Q6xq5+QZ14&uFV$Ww75NSjvuL#AxLTxkv@gR;*uGFy -zaCwkh@uB7MYcEolQ?3-YOIT4X1?@?2KN6e3b})zwVW(Y&Iv;h4D~NCH+o0%NQ?=kh -zU+u$w>>TNaCg6)`sgb|&KLw1Ll39bM)I*<;BW74>nV*b~7KNj=CQgMLt#K66qj@l~ -zg3h~?D6s8a{Oglq)Eja>%;I2atcAR*xH9farbLXWsco$1XJPIf;V(3_OCDz3MP8ZW -zV;8TGH2&tab#Ss^9!7&4FkvDJy+G$_^^;eYFq&fapbhche|UtY$(>sRs`Rjm>zy^= -zWtH23=~`0TK%6K8Pr<%Oi>LZi2=#1q{Zb4w88_^F${MSfzr3E9!m}yW*=S`<0X#ye -zE;wG8b0KYv1B#>8d6})`Q3-}Td;w`tVw~r?&q56s&>6(!%M+dx3XS# -z+T>lE11b&Vbp)doz4c@?$74vlamd64`}rW2n7_2I(A_CEMDVU`(hOm;1p44AbnzEe -z5b!ua_QiIN!y;HV5}3CX%)wGI>c{0`C^~#c&Le}t5+^V}j*RF~K^8MVw|>Obk2J&8 -z>pY+fK6x%l{Q5$H2yNp`2U{BrZc4XE9yZsMB(F@it?O`82uc)`MYCv< -zjnKf;8>p+|W2V#YMvwRK4%0KB|4 -zH}xMMM|rV77*3RNz6TJdio=ZPvt>I0DS$JP_sbhNe8~wcp8EnZH`;VEYxc+-X&F*U -zRw>IrT_cD*Rt#%iO5~8-odXnA3N)i-b=^DpzY|B`eS|YV<_HN>;BU&zr2@co;=LyiDd~ -z$Jd(v9xO*iE)n>Gl${A{$+<&f{4f|d@7c_VjZM2w+h%Z^pv47V`|@3Mfag?= -zwhWV@_g=t}kAkRXb#k$RIk<<0g#t`(0c -zSLT7xc_K9$1>0jTBa4|1gs($*fOM&HJ+`@!@t!ECO56ZJmuii_@x3Oij2;H65Y9hs~DzG8cs;aJmlH1HYj~SceBzRyGvK|gF((T(IiImF -zZ-Fc=OV-NP7C8{_vCy?zC0(0o)K(hdvy*#WoA9dokkjA)~H@gQj5uL8w@+S -z?n`5DANx$-j3}pJ!JV!%BPOu{dtIxxt1-zGc(MvgZF)3aQ2QZz&a7&b%YL^ArWW%4 -z=h;qX{WA~P{mGx|)|2bLt(P$@f@KET7GJrJG-}rk6aiFZO=o@B#>8yUim{`?!wjg0 -zu$Ye_5BY-BtKQt5!ohR-2L~Px4-8Oe=pkM808^MV&q!W4jC7n-03m%66yg0|&Lc^q~v;8L+t -zpWgh;KC9;6krkm$g}X|0u*95pZqO0f(9`UjDa&Z^Zc*;8Qjsk~2F`KJ{lGv3b?-U~ -zK^g=xywY>XumbybNVo(-DPM=Fuq2Owl~B)}>?^XaVLJVOB}aePBqDC92cdm$MnKrt -zSTxh~ZsKk6Dl78}@TeYeh}h8Xqi#L7C3SJR!4;Pq#`8lU7zgC&c54m*vJ_3UW>*kC -zHiIwabYs@5^1+kO1Xd&jCf1yFASeDXeh8KXhM|G%f*P6$Ub8Yv>NZi{1Wj{H33+qu -zGnvioI0eY9fed2H0VMN*P#~H&1*}8PkQLeyD7x^?G8^GJj`=u3gF?k*90(lmSKiLP -zrA@NuuIP+yoeYrD;ONwvX_H#6yBWxtTUhHbTsi~fGXJ-!_lQuRF3_XN^cUn<9s@S3 -z)iEe&m(c7o7Rc#p6#jx!ST0meKuhzjxej*ayDm_n>shCMNTMWF=6ywTsu&CIgu&g=(O>uF5+|<8aLnwJvUT -zV=FJGq(>~GJGzRxXf3CzIJSs-fT{oLfNL?QtK6);4+)WXmWsPhzp!Mit{bcR+YfW(M}mo;J8mT+)aFtc!cf>~5rRNRnQ>TJN^ARgI0;*wzB?h=&%P?7r5T2Q< -zXf%6A-hvn`KZ2b|Toc_SVOdK)yYH}! -z{3FGMHFx>1jv%@MPEv7^xd`h5oehN}&K!9`(Y7;cUl`1*+~{>>dXIw36WuBMx>|P%LehOmEgN`iyn%EW8A7#s -zaF%ryozjmf&16(PwTrpF0lSnMa0^?yP4-}3&KT1N+1&LF8`M=HGw&2ybMJ%Jq3H(z -zVXiC;D+9~)q;b0h77V%MmFP^8ig_LO_nmf5)~NER=CMR0*9VR`E^Vy0A&H0r!~<%i -zZ)xAU1rYg}#hNiU@?wd?V+07O9130*bmq~rj?$Wg%2$>MrogBuA227&!v0@uZQXO9 -zbkPbXjm{Vvj_}B5HB0;!R%9fzY;?{1HUhVor__%lo1c!6Ev8F|NGzgvqVTRD8OE(F -zMq?-E*x?(CM;|XiY)(=sV6f&>SBX(TAU67@d@t~oCyk?he -zy{s2J&C$qIm%D1z>W)vQi@BBMECV<&Z1<3)Rv9pJGv*Ksc}cf{IH5M<3-t1`7MVGI -zfJ2aQT>UX5ciGR+KK5Y76ymp~$dt%3f#YEJ{Ys7#*_~FG -z8kuNK_F$8Dz2OuZl)=uw9MoU_LYblt6%4{p2o80rGg -zy<(QFvaZCTwXMmQX)h={_eL+D~zp%IB|;p`g*hL#${0zIN!f&Nh6ny1v2 -zJOu`O*^-f4DAL)vexM9Bya%#XlTk+Hwy76a41|(B=1h -zz?tkD0Gq8n_W~hjgk^ID$TK%TRec9rp3~+0=*|H%E%yEWYH3k!(`%6BfB-RC5RJ?* -z(sx)E986G(|KR00q5U*vmLDO`H*q6fP5X3nPX-1R9!cTma{B+}#$*oN<&9i%!`AKN -z%)6`lT_ZQ7kk2(^I_Q)`S4FVeJUW$VoKx!t9ZqEFIRUqTx-@;@wSXR=m%*2Y;51;I -za%_S^VruP)wf!cB6j(1$dnwc*$2c;zg#2EuG(B4kez`Wo71Y-KI_3nk)?jdb0#8}D -zob#et76;}Yu(FTlch5^0aP{T -z{OOQXpY^%~SXEGLF^8r&o25+g)uY@$qlw9wl|X~8h9SK6c1Q@HgMl%8!rc+B%`lqxGly^UEZOkA}sjA8Iq -z&RCLMW0B%svYp@!Dd#$LIFk&;gEj#Q4;t4o#L+UsSOL880t9GxT-x3HRhXG%UwDm_ -zeixqg6HR9u?h;X*p+Q4Wk8!AWuPVCDbCYsKqEE%hwmTk!i*OcD5?PM{erK6&lVL-k -z;EvscmW>=Nah78VWpYZKT!$L4T-|y*q;}7C8z$r9<1mJZd5C4@;K%Fh=zu@*1jH3E -zD+E$>22JgAF4IrFE8cOMJ}#U?lvUiLT4D=&iK)}k;)%_=o@6^tiAtDv$fybdypF7X -zgZ9_ii8%%&%^FGJ(1Co6DAeMtpj)~jp!QhSPO+eDl=z{s;*D9jNm3%oh>gPKos+b;(rW5{KU?2NwJQYeLM}UPM -zM4}khMoAFWV)%)a@X+bN2{;m7T -zuqvA4$mDsDz4Ly!dt}gtyCU4-qUBT8%3+_D*Qn$GGC#)&oP2RTxfSYk -z7cke6;YWj2L+a{X3v25v0&F{Ir9ayZ6?Yj8wecHV0zGXnjxp4_sCYC-Aw*~f?`2zAd!DF -zmq|cQQ>Ly2tGY^w!*Zs|87iMdHJry_dB-dUSExA?SY{P|M!jwJRxM2k(CmX8h^ZauuK5lFGXy?MN!}$ -z9CJZWXTdz%8Y7aTF?nZdv3%ZsYf@aNjaL-7SIa<@u9THpr0ZVq=$)3-aMLV}fYvBZ -z`cb9B5(5kr?wtn7B0i?g5#I7K?Rfd*f-?q=k0OpXYha84Fc>(yUAj!Cv4raS8g6rklVbVe1iAt -z0JOY1)&wwG@Wd9k+-M~ppte=ZF!v)P9(UE|gJ=fQ(rYG`ued0V&CFs# -zgrD4pPba)e>r(Jq=x7yT$j6JCyZ|lrvKeG4b1Me}Oh{A#6~6e)S;Lru>n4Jowx6V- -z!im(8$X$doy7UXh#gYBAC>~D~pfo6nZ<}2pJhMXMf)PIKymKTkvrhJL=xMVbCD+@K -zcThoIEEu3aKFHh*$-vBFgIS?KDjn&;#R=}*$&E7(<|HppB}d4ghAem?sg2VhNk|W6 -z-{Qo$V7>~_=_s0l=6jRooEkN20%IiW4$iIQ(mp2~m#A2P+4|IFEr1U#>8>8rbYrYD -z@Zh#d)fks%2m$BcjAn|_$#1ki0OU}(7-M) -z{J_)c4CPXYON^);^_HT0Bq7{f*UqHWl^i7 -zWjKmTX)y=%?ri(0aa`Ok8vS1kb^1T;qYMDqb!bABzJ$C`usMlIbxXnNLQ5E++*5)5 -za0Pf90vWq9rz2AU!9FxJYtDeCGR09q{wxANRXMo>0FaYHQPM}qLao{#x0qtx8l$EKCGzGa5vTGut%OS28>-1qj -z3g9xZI;`I&W-<2-c-(h_O-q(N)3qtF96FsolCN}{syoD0Gj0tN-EuIR2idq`8OJ?! -zC8N!`0f@S^CX9BG3Z`Sz`RGirU-d2uHy)kVxlb4v5dG#TUjM{$1p;-lb;ScW+KOG* -zac5rAHD=^G#USjbJ__Uxp5nA`8CfQd=TnoM7%5l@b5hl5QYRM~4s~geGL=7)0|<^q -z1BWtQorrIkv#pvM!Ni!ua3s!JM0{_ypSvRaH*BBVJDfHmy_mlZQdUi0C&p-j4{d?2_YGWuS? -z{j4!mUUzF~QGMXT3ltfHA-HQs(+_EAYi(`*Ri4e9q7rc2_3G?q% -zx~gb+$Q9xItqE3g>4Z$^N6d|0n$2Ocdcm*g0T(R10NR-FVP%64F!E&EzD9C6@fgTU -zQjRBeX9S(an-_#F)HE{~o4pCxfE<``KN~*E5a-;E6_L=8-?tPA;Q`dUwd!KV18n@D -zl^#qgOkJ*PS|ts*706NxGkI??P?r$J{3UQe&~D_6Wz|u0dbte_@d$9S<~AWOONU!b -zNBY)}H5e_HUfn{z)1tWtf&{0T-?l(QSH>;cQ{YM)ZnQkZ4V+YKK?kg{citdxprpVx -zs;Qwkq=(JsCGgMJA7bfiib6M -zw?~mCQ|uF>=`?yan|7eSzC33+KPZ+7wR8LF^Lr$;IWtj7--zbhpt10ltoM3Hq_2(R -z)d9_|Jaf55DLy}#Y;&GU_ci!Dj!d)Zd{G3r9f20kpBZ{oSPWG;0zWcKUA2ha*@-R!gs3*&Bkth-h9KAEnQ_uW1M3Y<|cU1}=0@ -z@!=@MWs_? -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 -zkhnu2j00A`Wgiex!LK0C+ft#TRWSe -z+qLyq7w!teBJh=XPUJJUw|FMob%%Jj$=&(>Va&Zlbn%KZ*)MG+Hd)xkm1O8S8^>~> -zX*^Y|K@v2UBnKOZ3zLOMfZAA{lyxa+Z)lYefUCdi%oknO=$>Y4l=aWSyiXf(?VuaM -z!xp4{TEIRFM^N-nwm3a<;hs0E)XsK+)(hWb(yMq+>P=4R%4MDf5`d#^s_QKQaKhV( -zPMybenJzlSmjXxR@KdHjFFfKFP5PU%!1T^qYF{s<;W6Qn;k}xUC&$=37e|EC!_`|* -zi6eiY2v}ijP=_jvfuf4Hl8K9n1D~<&zAtNrWdk}_G{IMb3?tfeS+^9~F!Y|0K2_2!H|L#z@?Y85 -zkjA`;g3`$WAD(l20XR_U$y$!71t -z6d1#?n#e3ot)VT8FvvYDwW?>fgA)B2I}y?w&Z{Kl;VQ2<6&_b}%P|ltK7b>%;a#2h -zbnR1%@B&T!l5IX{PR63WrUv|#Jb?vjNxDEdt0*<6K@^WbkE8Pqy3$1xdblTYCKLFW -ztcR5mju;`1d(`j&5=>tiXFbe3hZWOQ2I4T2Q0$orx#|QXTBh>dZyyWoOPwX>cI0b3 -zxbT;uK^RWD2KtgkK5ywtk;R)HTjS15Qk;=Ns{UQtV$LNTQ8Cj@?ApI)rm?#g>FF6U -zSF7*&*9kdBWt)-Prfk;&PbNh5&ta`cvSjkbA!dB@Kw+@QVdj -z%9|aKeCc|h`;u2=4qePSYs8=nE2Ut0j#n`jSi%trC-MaEx)A=StT_nK*itoq--;}y -zY3jmW`Zq}y)cy3w=7VyXSu(2!6};Y1DJ{dzs&UBdkL$H}OmD&tk|k6nBgUeQXH53K -zh3o2`L=nF{IN};hV#@JA;gL;!Ddq*J` -zqsq1g2=#W@-wPB9z?{sVpbwL7c1k{eTc(XE&bVKed^;}sllMI_vESG|QrIl7q{GM95K?D~TA -z?uve&g@GN`^977_#aFGPM6+iCdoFWdqwmi$Ya9)tAyXvl%=T9FP0=OEDKj65Uk;WvQyv=}nKqJx -z?6@=mxMj6wwtiFx)t)Rlz|ag8e$j&XkEtlmVlI-WE-5*{Tb0f{hag^VvW(h7Gp6sr -zmNgqq#aNZ08n$4XAb(Dy3GdyS99kiDK^}&D9~%t652b(CRn9RM1>#zT5G^{2om`(T -z7MZkM3c_B^EyMem<6IQf67o*dVp=;7EL#r0P10B)5vGX*vfDe7LReSoT=CpMF%FVj -zw1#uvDj7$39OOhGe|j2Hs|MQTm1tO{MYX?X3CT?4Alk!a+Zg*opsHl{UdXxSO#Bgt -zn{oxoE~6x3GM!sg2~iN}4EEq6SiGpumZFOHJnuIq1C&$7rT|WG@?^?5b6_A%*Hebn -zb)*kK(1b|HHd!R%uA=>pKJ*L%dqk`d3)IP0Zu9`@d1Uz;JaTS?HqVy%wxm|}gp|P| -zdW2KIx!}`ei?#U~s=9&1O2H6u3k!gQi&3|5h{d(=UaFuSdt+7;Ts9~b%Z|f@r>_*) -zPc+MdbH8tpI6)=t9+0EGGwF}+ANBPEZFBN2G59G1J*^M-V5vCn9I!DT4@LZ+IcU`F -zsaa*vt*Q1Ivpr$Q1$Ig75z+&Lu|o~%aY=2vM&lU5J<#reb~c?noWm-Ws+@vs;8Fu! -zzS=hC^6?*HGRYRsymG!{LH&=#c7YAgQspD<5aBG=IMT%&C~mUq%sFX}YC75I$^1?l -z`NsoNa0@D}(&>lo2*iNalZ>1Z#EfHYJH`Wrte{B=>4_>4CW4TGhja+x@Bn;R)_GGX -zm217BG(!s>qi8<#oeQ=M7)9&3q+?6xhbBt1PvB5vuJR`Dm%e9galXnI#KM9fn>C@- -zA{^XlyU&@ti*7olAH_;@=oor{e7#TH0LLaIlaXnIPImIS0Wb_KIbdsGyK*=_8hkG8 -zw9lbh`LGUDIV=#*9K{hIX>Ycx*~B1K%FCXxkmZV2lD=5&BDrYziaFDfdkT -z0t1?vtqLTW$mNV{mfj23dy+i6#*Aouv{EMnYZ`7kej=tHTAI^gIx-^*%^U=DZ3cQj -z5<@VVtQf$EvdV`Px6JL7ctfLkMaJj}9@f{ledcyikB)g#JRGbf4AsnK*%W04mgyzm -zX)(M5B91VS>$)*{yOw>YOeWnV -z`ace1xWviDlCNikqn7#I54RnxTuOfND}l9F3R^EnkiAwPyPFnt=()1%dPlzaL%Ht|V@u&cqQMqAAu?&modKsV-8vZ~qw!dlquO0reB|a+ -znvLd0Ip2n*?{yR67=mf@WjG9dz#MPKmF20o`r5o}IRUfHoK=v$LeKsKND -zP8#aS4*t5rn0p#SKnL@H$;b@|r#g&$U3LtV-DFjt{KiDlZPia#Wn+?QADH{T3@0j) -zM#*iNJiE}$QFO+lz6}g-mPF;=SJc)vVb^g62VtD9jvrt7sWm-HB3vn5Y%h8-Ew;2j(0aC|Mk&RY{?5X2?3&)U_ -zOVPi{Kmc57Qi!qmKiu@Q4&lL*N%w3PvXzEC-?zB_K%ecP&{Zg(sB$nZs<#WT5kVx{ -zlkz@z<|;Wgic7wP({hfIl(}2Wj;3QHElb;V6Ec5i!b)R>9LG>OTa@N;GwU<0o*UdO -z>07N4NL!a~58%-Nz17kVNm~f?J$(4M)eHT^=iHPR9?{v&E7*4PdymEw{U%vNtih7G -zSCl~EueL=0w&EXkN*(7uO?C29l^UbpGQ`NOMqOw0)V=#>t4T@O;+^wd_2n -z=%V1x)S6{VA4dVakb~5C2JjFIp)pL?6DuVk1ru!uYc%Hs$Z!!jd{Zh9c8Vr0vSi>Z -z#R2~dw)12E$p_kX|g(tbD^=K0V+Y!0k -zzDvl@m1A`5-wTFO=ldwq|I8>hPO(KDiB+>BJ~Z(+*9lMNHO6C0HOVK1i8jdvZDOiEA}J#C(;-V>#Nc{ -zfT@>r)$HYRv4E2d<36p9#_HjiLx&xqs#k`vFtM7l<*Xune()Z6I}_6blKsloe92cpFp_@ERA+M=SF1L*5fIO%+`ao -zQZz$NhGLia!-kp;EV6O7L9JU+NUat)K5PXVlkcL1(5^c-Qql=?D-Zh5l-_?fwq#Fq -zLNlXCVWUez>5F|AKXPvs8Vn?LZBEpAPm7GlgyYRwnzL9&(;ufP+a=~CC)4dD0UhU? -z+4^NKSK+qo!cWRNPm2^ReXC0za~mbkXYWnxQI6CL@Yu>S??_* -z^G-;qLNmq{Crq6LSvzBwVa@o`saL%MPLoFtC8Oo?EZn|2n$rmW(u5{-0G5o@O9~%l -z%8WbcC8W$rgmz$3ue2GJIufh&94^xB9HHw`Pg`!Tnr8HrxkfvFFi`uD!^f;A*+8A4K2 -zSw@5lAjz``1Y(>u%VO0wNm)n7;U%`#k%@J-L6b2?Hr_qz@Xo#%`8%tLm^1WqD?$L) -zDT12<_)hEUrz_NB2To{PnDR!p_Vy-EZevfiiT7tifZT~a-S@WdkUta}Nq5VH-$z`8 -zkD>t|QgHZ(#^AV;POHk5<1P(}OLr)X=L;IR*73*XSE;tWJHHXW&jy$q>k8gD&wsqq% -z)hc-+rngW8g5|tVCXNH5{$XCnZOCqs$OY-mrw$a+M&=qQ}f@8puLsPt<6? -zo!25Zs6r*Zudqluq$1JBz0W3GE@F|Kt3(r}RsL{XYJ&<^Y(aoKbcN;Za|9!f9|plSx2aMZ}l(=ZHGScJzeA^LNr -zHs}urCz+5ulHCRcx2-D@fzJSS){}ft7>@y2oO3M)2_tJ2;TFVavPZ<&EuGx~85s_!B1)w`N$$He-C5eu*g$m;)t?mhjmty1`_7 -zEL>!^Aqu2tDL6fvy9~l{bS^$VIOiw5lkQ_@MDt*#klXgSDZwO&uV~_OZk3)X;3S)M -zWcdd078J(!#uRKSNOz3~`Gbyt7t+6i3u*|sZQXmPR(dl{f{pB1KU}2eN~{`M_a~a` -z!N`xmXE=;*9YN>?YTC?Zw?XIw!e0qy$Fk0GsrumoN+`{cfB`@^z>MAy#ApN6KH`I`Xo7k;?JnN!iU62>F(f+E=#0pk*aG7TGII4L;Bw(Gq -zoF(08hF7{;M##mU;RgoyC0~r;+z<5>k(iTm^cmXDoYtuw4~~A-46H~(;7+dIicmC{ -zAi3lUu4;n77Gx)5nNVzxO_5O*0B%|iP0u<15Lws{^_NdXh0=v>_Lq5A0QKDreKnBd -zP3~KzrUP|7WAA)wSA-BDfIrO+=hRaM%tPWGCz9_lIVU+tafcKdjv!R`U6MXv-rGzK -z%p@aSRS=6$Nu;I#5K=lAdsr+Tlzv$ -z5$v)wUzR$7AGXTS6{*T!t{w`2lfRD_`A?HHI%P`?stypfV;>reO%PcLjFxR9v_<~w -zxqU&RP<20by>m~Pp{MqbgS>0#n2GC0b6qkkjptSZccCOaWpAhC4rxw!&K@2Zokw;} -ztBWOMeAS?Ued_che>l*u8V^MoL9hFhBW@Jj$DpJ=w>qbf10*C8xc66C#ix!}$S$qOsC`DJKz -zz9XloH<_ZBt#8TGL+cFBElETM`G7AaL4Q^p(8t|AL-sN*0@y2<=U!6t>xjk%6$Us9N@gP -z$U8T^47H&E6fn66eQZnH2%g`3{&#S+2@0z4HYX^aGuVv*H8oHXl6k}q%?^VF0t#h0 -z!7u^m3e!Q)p&)X|Q)(KXfec)RV*y^akmQ@F4eugCt)=;3T%7!3r#-e6@^N}vYUnf> -zlUog>&3vMH>Ul?02(Ju4A3dE7od^fWSlr<5GpWNi9pp -zn#JY91i4Wz+Y&y;-iuU7TydhagwSS~v@MB!n_$w5$FR9xmUo+SF75SIot}-t!uP_W -zt>HLq=S3wVp%WL#S%o(C8+R_L$OTI` -zZyti9N)c6E`}w4Dm4U5nW2QbB42(HA_c?QV)~rlLmz(v4c!C_c)wV^OPrpePl2heH -z1~zV&oHQrb_u(GW5&@ZtZlz$F3zcpF@`nN34haA3Bc|6lQOgUv?3N-t&lN3hngd|H -znABDY#W9^B4-kN*hS}Tn`OYxs(*I<=pV+}igarHCc>bO#+$bz#5cVGl$T9`~vtE^CSaElX;6XcpkOqWAzraEFuk? -zhSdL1`u5~Kpu9_C)bM4Cc}A-9fx?g>L~)Q#m<~;O$QnSP{%iyT^JRu^8DT#CPNE}l#h>O^Lb55xEi!? -zhN3d7%`wxpIII`~nV_j7mvu2IBT<9M7;vQ&7>`ax2-bc8zWz)f&D?8a%{_B@aWRik -zX6Zqm6CH}SBjIs#ez7~We3WDgmnH28ww{$moio1(RK7>Jr>zSqbK4QzQYlF;>4bP^ -z*_?IB9RN2_eJtlRJB!c(z#Ey9!;*JiyWL%I()U_cZpSpv*|w#26QX3`S2l{;^1bYl -zXZz};9>`^}2vkWRQnWKagL3|@*n~~SYd-X$T2C^G8*0;$K -zzK?!o0hg+z0xhzm-Wqja0z>6@_05h)qe{azK>l?$|L2zH675t>4gB1ioy#1w8G4rL -z^(%8X%bV}tzOJ;HAVucWsiS>;z4+a3##vShqA(37gj>&HJ-g-*fcVT8!mc6ONW_Xt -zOu@fC>oCYX@f@T8i9?l)_DHaRXw)oR0&>v*pR`+$Ux}a~Kwb=%ZCv#M|c`D)4b7B;s>1+Uv@Za7r`FEovkX|B;^ -zCfXsqpAt_LVlnsTn$-PcJU_yXKf6sF4DwTFn!0+zm$syJg@IdbMlIZq(w^u?MK~F& -z(AEh0_y?!6EScmd?&i5N#b;*w8X+k178aQ6)-+4#N*;TbhQ%$Il4t4P;Qd7l)-7G?TF!)guMnMt -zqLmUGfs#8zilymI(jCHdNyf%fTAXjKVo_jLJnbjodM)b){24aCL%+tx>2*d39}UC$ -z>6a`|s`^_3p4{kGX@z42PET;`!hrF7%1c@1cYb)BYBT&58r8I4fQ*3B^mFxyy@&BA -zAvWSy!wD~1w<$8m4wnnF<+C8$+hhYIeU%-$2gMtO;2Og}dv1ue0g`I#g#%qr#A77* -zncoq0h%W*&(bwEzS3clb%nu@AcA(5lI#y(hI!pP3jOPHVHuEL|7Y%>+ufW4+pr$KI7XpTBx=t60N`+k;N6!qFtmB4vJMM${a!v1?-~^dS@*HGiV3&B-Z{f&+olia -ztcHcI4xxF~8?AFzKrHA^&>>l;-@n9v;cnZHsFQKN4zz@6HXiXkj4n2F@39*Ly2&WM -z4W8GPg_UxV;ut}{De|)D23rl0Ei)29av>cIFv=r73`0-uUwwm!j^>mPzG53H%8hyd#n>Abxy($|>Wh>t9GCvWC1a -z#(rH--E4DstdoPxYKTAZKdY9c1a_g!cUG4HBZ$I^{^uM=V3+Dg#rVP@5&}`j5^_XW -zgJjOdmf|MRL3&DyOC8dRCyxaH$4u;^d0%q=;nZbyMc6qG3%VF@>dAo87`Pr|!B^of -z>+Tm6aiMO2=-r$*(4rXVDeVo~Seb9sFj9{I{iSs>I5XcEg?^~#iyMI1<$#iqbs5O4 -z?{K+Uhg&B9>(?LW7H?FuC*+{&p8H9(M+}8rTET@JhuZxiF!m%GfH!~^yxr)IqtFTS -z!oWT>gp$w$%;cym@7Z@ykhv@bN2uS)iQH*eL_AwsV1}7dC$znQVcU|?ET>1{+?s%+rk5s&*~&uL -z;+eUR*-C8Qn)mZYUYyM~$jxv&$(SrNBSflL{ELcvVUuVWji$}@=)gji*hns6rz_f9 -zb>9YXDjw`b*f4N%8sM0d(%e0a^KlnVcsX(qaE-1rC2*we#u5Q!GfavA{EY38rKr+% -zj7XrB&70XAW&-|&uB4SblAMMWPml;OMGWR)uKH&j)ux&_8i^JxkmKG^^j0+JFb4}- -zRz -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 -zWM#Bx4oepOYV9Z@a3+b=sAD -zzujs-#y%JJX?GZtA945_s|#y>4TpiDf#IC`i%no -zX79*f(SyBy|BAcn4e$8+`s?e>c%WXteg8@(S8w3^KVP+czu8mx{`)K3fAWpNfKcoT -zuRp$heN<6L{l|~5k44?~*B}4zF^_QTwf2rs_I4afGye0NT#-wf{d)a+i<;g4{f&Q2 -z^Zktso}vYRf8&wQHKO0&egpWVcTevoZF!@YIxma2P?{*-7H9tbO~OA4xqpBEdK*=J -z@b{0ea;x0suOEF!P-$oUfhU&h1oHk}U;hTPioE{GPuAkw-#-~_pnv=4)hBfEK@4UM -ze#^8Ng8%*J?SAX+HKv|c=H;EQ&fow1@&jQX{Qc`y=9B#O*LQ#9^!j#NYI}`^6ds+v -z{dwzdgTF2h@Y5pJ-@kst>GeNw(lmpNfB(|!`}L7dpa1K%Tq(c*g)=kFwZ8xLW}02} -zT28$JLE2eD^Y`ypF8Esh>G$v7w@rJs>Gk>H{C>2fLQHBFYY3>}=hWP=k$wA>Uw{8; -zuf4ql*u7nGu&}(qpQ{TP7HGx7r;|sc97V|JlyCnf=K1yOR{$Xjt@H}k(q8>64MX+& -zyYx(HRtPL&Q=n`8X5 -zdFI#PDhb2ypTG4jDkWmY^n*<=gKp&ar;mPpw~qjv+IHj&Y0X*q=nx#3*Uz8njTN8K -zD$$RY`!N}kXQ#1}L9C~|S=LOB8d&eJAY-ICrNaRMn;lL|3s?cI7i?_$Hze2*nR=xc -zs|MCn_XmDUR?y%4{^#p?lJbYY<#NG3i?h&@71Q$i^HqLIJ2G~o{My=jXm9@gTOM_n -zKo=11E1MEdC!qT#9KZi114O2u4)V)h(-Lh*f1{Uh-J$U&#BSv@D?fK|OHbD!KkLP6 -zm9M?>N=^)U7r_5_rufRwNLP^9Xqhqm!3}PLy!w`B*zNZZ{qXlcdf7Kjd43U~YE3&` -zdBryhmhFp`;xlgbqUUJrljb@UCy8My-`y%ZLOkB=#Y10w=qIgxr|ru_wd1?KNbmZD -zZtbCe?1JpAx2w7?x9gaSAA{IxeEs?TtG``o?w{V+y9SJ2xAM3B4Q`3Pxfw70)Y)~? -zN`KnI@lp8%KyNh6VNL$F9nF5+`ge_RZ#v0uw?lt7gg^E|M`<|plkuuII*ulYbu&q{ -zTZ)E5NrRhNdGqVHzxl0*PrSB6(93oV(B7QvSnKiY_gDY>qk8@JTZfSX9Y4mOyH0?m -zH3tbVi*a0(OXjwy-*^*q^ZLubpK3QF^hTvy);QVO*Eam?A3ZsfIQzj@E+23+sgC -z_1nL`o<8{f?fmw)S&fmlhu^=y7snr=4!+WS1T96m7RUY_=F5JFcmL$U;P?Nsm%qRL -zET1Pn`Tm-J`TNJ~ZG3;rZ-4vCpT9ICi8sG~+iwyDqZ2ZlH!B{KH&>kf@XZ`Af0F+{ -z7_fsj+kfmO(iP>eY+L+b3NfyS)pMf+`6 -z_~tGL*wFwNjPNqQ+x}w?0%~c+1g0>#zLgV~Ps9N{lq*gq&0BG>em-0lNNyU~30eHcps -zIY7q0w>Tg=Qe|#v{m}Q2-)gToB*`@TRZ0|yzx!JXo|rMj<-H-KkY=t+Qq18zRdAqx -zeK&Kg0Z3{Y4P6L8F`&fs=+sI-+z$B2B7RTb=0<_55&ynnd#=HBgC -zrvA#z8FH%o{LmfxQF+AjsBVkB*!(k1a?=a@M9C%|FcbE2`Op`KsueWVANyky1D4^V -zx%PI{W(fAORa^FGO`W{c{pitY(&W)sWc0ND+gob*t@@)c=)Uz}ZzgzgYxIw|Ru6wu -zNy5kN{lm^Zj{2=hxADhRNyXxkD*aBn>37I|PGHBWj9Teo62*_XQ5EaCJNqb)Sv|}_20U-I|IcYoRD@4n6ca?NL4^0DW9@-F|Z$={vxDe8~YC57dSDKXPH3URGfqvZ)- -z51K2hxBaRO=Ek)E#%qOgB1!ttX9Cp-v{EyPrpsom3V`Xr4kC|fjUnfJz&kBuikAGV -z$dHqRzH0rJt>hFf$iYkkjOYTsUM-}y8+XwPWI#~9YLtovFP$FdIVu3N83e@mcG{Xgsokjb%yKod~j-jizKZQWg!prC~P}prb -zXRc0E=xZ2_-=*IcFSF|En@8q7e`<{%j$^lomqD6AifH^1_S_rR%Sk>8tsi6Gw7r9_ -z-rony>e${=WFCtBQWN`WZyv^Jp%QSVWwE+A%_>?-Up}B@p6Nr-yc8am^V*jIo%D@j -zJMR5B3iLCgT7`<6<01yZjNH+XS)iM%ot`%qW&P;FM-&Zlh8xml)K>5W&rX2IVQ__o -zkri78)6H-a@=(_fG#(g!F3?~3R-#GXTJKxEus)$_B2Iv9Y*$nXrRKUMrku?cae3B? -zev%9tT3r;1zwG0DD9QK2+1fA5Kl#Vb;fsa`2LJ!x6#7WYAtQYO$EV -z7+-#C+_jh$!*)Hf9pg&^mcqBlj-5Z4x2F%r2)_Q5rNZyqy#vBz>0j;>*FvGoz0B6K -z9ih=(TbsGcujiE@h@maHN#%$IKD*H)%iYq5Nv#f3sBcDCRK}JE?{pV>J8+8R#1;s! -z>G`SL9vB;d%K>xNq()2G#zD?5&wF~m7?p+?kKr8_cS(qIkPX!ZFcqD3+<7V2M>f59 -z*Y@SRC6(`{(>uNW^0%jVv_Ui<(Ae#7xEyZE#S2~#fdUG0d+;8To%C$!6)zzXrDwsc -zEP2E%>jnIxhAuN#ATYYF7RHPl(^`m)@)`xOr3{}9ruX!{^p091nwEW2a~Djjv|P$C2J`*}I8AcMSJ@S(6G;*9 -zlpnN#gmW>!vGGTflKms*zgiuWvh{b0D@S1BHe-6F?f4^9oYbUeElbRpmpY(k{7KKf -zhFahhUX^ID#iTGeEz>VONZaEHn8f;S0Hg*w -zJ{AmjUGrj)`8#!m-T`1uTBX)UR?%akyIjX{4pTIC_;u`S-mqY#z9<88Atw^vDfFA@ -zd=#(pHbaAGgZBCj>RJ59(2|MTF<+KHfdWLnzA4-*jTGovbKCtqP6+(Y`%ky;(stw8D -z6EelK^gjw0h5!IjN};nc3R@a)Xt{AeQaUs~U7#zXIMe|aRkqf+e<4q&25c^*uH&tq -z5e4#&{tQsm1;7y4P46mT$)Im!nJ6uUd!d~EL1YcG4sC2RL{_Ami;J>mD -zufpy@u2j8e&;r^#j3wGX_`sq{-T)gXkW@`9!pb2FOaxs`&otw#CphvVmjl3!pq*k> -z=jg{POV81RMRjE0k<^1W2}&b-e4X_~i -zeWb@{50pk^V7Ur(o#BI~r$s9VZ+3K@9@=&~t5SsOD+Y$P#T#RI+SA?WK%tXY&A)CR7<2l=jn>~(!WzAxw^kuSc*dWXbH -zG>3zgqiF9!(7>c@UfYNkP{?hl)qqf^Jnz6%!%bAJxWL$BZipHoC>vmR -zaQXYT0;+mN$fUK%nw1}MqqXbYUfuxxagSr6Gikc!`*(|Lcp&&6Ub*TUKtj-D&);Yl -z!T%S8XtZm9(HXbAyjcne@L4Fe&4I6yju5WBW&P4rg{88$)|)D6rZ@810JvW*a7L+@p{4(&E?#JOzyX$Gdnp+-#3d1AVPMiNyzWX}iP({1$Os -z{%ZvQ^Qtjvebmaa&fiQdEM}NQI!KVNX%4U#Wt97ctAyj1nPsv0XER?MR@a4xVOce_|O0CzosH1!VWw|SW3e9lvX(6WH~bUY#flwppJAyWkT8qHSTdzvLkb&&%=F8q26y|qn&TL7%nOh@!X;V&%C;wpXU -zvnLbJtAburtiCf=d*yc=w1F#L&P9e@UR{jm@{TQpw-`E293Vu>Jk6z%iQX|16juVDGnz|Id -zpOG3sIMm?04W9ki^L>|u646z3fU)uflHP?W^xIp=RTO5#q0;?tT1z>Xrew;%Ne3ck86U`jA@O6z|;sj -zD1N2TYC}M8oTcr+F~@^T-5lrA?wab81Cx3B5;^I -z#@^wL3(0V@WGsbqd5!><0*x{e0){qK){8N8nXJt?T7X%V`I -z>$e*F<-%Fp&PulAZ5>R%16~tjF2qW&(DbfJzmptl&$N6rbJ9?KVBDrUrMuDfA&y77QBD^ZUr4+Si-Ul^Lz9msV@>YM -zAvG}}EuAmQI-*>5!eVKcR(lCd4*X+Bs?nC4pW0L9%I3B=2lIsJ5CK_IXt3}7W#;l~%} -z&5^rq*RUNk?0+!4pEtlc_0F)G!I6O-y?v9Ld{t*q?StxPgolL!Qw1%^;p+O13jiOU -z@Bp3puy;GxNmqoScEP6Sg#m|)N4xx*hXct+@|~4Go3`(<@0j&dzXQS7L5nze>`-_- -ztfb71rw~G_?JAB;4k8Nht98cx*Z=K*{J&@XXwl=2Bg2H0rFQx9rKFPKHfN=Kl|hLc -z#DV1p*mP=z2B*6g*ouuqzcpwZ>i8HrV>T3Aq>$W-nffmC4EJ?yIt_22jz>FOhs>{T -zD4;Lo^fOB8dQX8H5QUFHpdZJHJqsZ)IK!}j%?B)^6!sp_Kc=6Z>FAcEdqc+}#jHJT!o>2tqY>X@8~Y#58+AJU -zs4BGE_kRh7>WzgRdWaFq;?m*X->(ex(u@Vml|ng0G!PSsgz)&tB2yx>~&d%*S~)~Onwu=vHPA=fZwy4-=q3C -z2E!2EH)m+nAi&)FrT+k8gBg>In{nh+cMpCvR?QNu$fz)?f9Fd&E7Cnze6Iu94XOJ- -z;xZqS@|hLqFwU>m#xB%t4CE;QQeLsSLVsy#_vpY9coX=yR#)_hw@P>SCf=1Ok>OW2 -z#y%Kk|c&kL_x@*(?odi;?7mCFH+3pA|SFucce -zy$LYj$#_!kOFf!i9Nn)Jl||I}F@V~tOIk*!z%X6CkCtojMM9Fb0j4C&#x=_J4H_!5 -zWk9PKSjfB18c<;I5ge0M^pOi!NmT>)V1`ftDj5@*GktxqOJ_CRIvV75+YbAMF7+4} -zCODsbXJ^XkoW?}v^a;}OL4JUybJxJg4l$$|+;G~;W)l&ZB+a4eN}3X7>{@ptr1X5d -zR`_*BBrs4>ui0G$Axk8+r1 -zYA&4m=Pc{DuPgZ-Y~MVk#o|)2LxmKjWV!YMXq*RyHIVm(o}*eAw7RDe+?JWe7(mGL -zCt^+40y=mNLkrf>cpk~i=IRdE0S-P>VJTQ^&xa57E}vdC+p~Q#mVd4-Ue2EaiM-HR -z&Y#ACaZ%()j_-`66TO_Kx8_K0o*Xei!fvBq<60!wcX`N*8QB43mq7-~<6$~%ZVa)N -zkSnWY1Z3AAv5gKF9zvs@&NnC>SLqPH1BeetLX$5S`S{MO6KW*vM(=H^)h5cYk_$RzH6EF8TFzt8b_t=xRIbbxf?8<7Xk0#kJRZ?bXQvI@ -zQQhBrv)(O$Ge-4AbL^d#G;nI)&X7rQSCJz}CNz;9%f|Lhd#(IOQ<>DGY6N -z-vCH3u=}lFXyhTil<3PHpu9R9#ToDtrcsoN^~0s7smppK5l%+&^@BWR -zCgURKaAGk&ulQol9wXzSYM{P`A}8yD2LAPth}ZDot{!?I6b!dT|8J2 -zqbiR|yUhT_f%F6@mi~h@@oIxqLKDHoE(V*A1^yE};d8MbW&P{vnJCMYFwN-{cwo}v -znu{xeB=o@_mb0r0lOQrr#}qwnJQ1uA@s>C-W@C}t!v_}KO!3oTpqg|5CbTa$lyz7J -zT3b&eu_GKPSi$(i)J@6Wj8GU~zz1Dk`PeT!K83r%@+3Ylm@!0>Z^ -zdMqFVrD?P;-Sup>dRVO+){{RTT3-}voF@PqX-+}KpgNvD109&$Z}FVulk-#Ri&cXGWrY})H!A;-XxoLGQhY|{5l(w~ -zRt_dXT~-b<4J}RFwS+-*fD{CXEikbBWI9oMDt`{I@^m~X$$$aLkQfcJFeN-@fY9jk -zvnKuor_MkDsS3p9jDt5MnHiJKOxX9m)g6!eP0c`qttEYk529 -zzgaL0r{_#j$wS&tivbz{aw_ivMs$ehPrywl&+l}QLea>Rqm!t-uZNUSg`C- -zellPQP?@s{c}PHTn&<^_?8)eNLs-ctU`cxHvN}>^n>e-=$Q`O+ -z$K~mMkrv=NR*rsr2mPpDEF)XsV4xg)2`WoVwUXm)5jer=$^-R0LJ08 -z6(iHOVQ(nc_YfJ^ydjlSu2~94BHAs^eh4&zPZNUnPGtMod475f%|3~a>uH)Y-j7Wm -zv%m_FUWTW6p3`c3%8!=4tB%hri~J)Rm#2p?@}qgWDhjFlHoTv278&F<&3|=ld4+S2 -zVfHuHhxojWJg8v=_0D;FB6rDMUVO=&veS6>T{oao(wqnB*f=@>nsYrL7W3)T+PZ?; -zaDAE;w8?F;1>_0YBo0klZpSJQhxv|ApKO8vLIjE+ib>`E!!q-BgvYhKA>1#9_u@tuQ@>~81= -ziiq;Gp!b{hr|4y75HKtBfq}=`NM+U5^}ubF)lU21aXvvmuViMgg|qu0OTqCJP5QQl -zJ6^gJt8NBoOD4d(iJm|m^Ptlknuj;KOq{|-1Dd9%ImJV6bMWNe?N1M -z3YD6B=I=IhzGCUsUC}i}>$$N+RUD3|l`oQDeG%eDR@tKE+RWGl#`KL>iW -z=?!PU__~9JHt+UJ-#QKL)8Ok!K3xz*u1*s(&{m7KUx+|@gjl@ANowKweChIzZSV1N-SE1Bbng@8t4qlKA?MsIy^9!2XST7Sie6SItp<=_9vJW -zKco3u?1Pe19}KuIWnYwWHEl27jB!vbh@u#60&yE1fAm04Sb$o(&P~uoqYE$hr+{Y< -z>0@Aw)>N-Gx1aS{QiVQ26C}EmU&rv?k0G#{4r=At8NABMGDBffomlBN;ZuD1y``Um -z@#84x*41Qfuu(bhwL -z{=%cKTd(vYr!16g-^~`_jqtQ5c>|cqH(MfmKWuq=^WV{O;D7IzhA{xyA?Xq*C-eIn -zDw0Up(U9jOvApwg3itisZl#nlNFpM;a67e&mMg}{oj{;BXg*(i`|Z7lrTFG&KAQNd -z!)m(cJm`Sk7ncZO&3VZ;0=27x`vHgf&M)&2HaEzevExvhp76YxY~lF+eAo8Db|(*$ -z9Ezu(Sj(?b?a*ic0mc-9kzw=^+}g4D?UyiKPMz|dH%}qC!PM4ISMZ=^Y@CTB6pEH? -z;3m=h8iOac1WI+8hu!mEv{eVwGvp_Tc9Afx52@PochJDj{k?;!h5tdxBp1)}lM)}9 -zt!`v#Qg<7|R+@7>$9)|0rWTgjABNIvVJq8Cl%Wr6uu_Uk7CRGriMIV^5xV+@MX#} -zu*=RabDrSpj_y;V%Yj>EKizSuU}g*EnbfBC{$9RrQJ-xW8=FCytVHtB?zBjZhGXs0 -z(B^zk>#r~~(V&}I?8PwHv1N7pG;cX)#ptT@fXesmS1en7{=$;6(6V&wyG&Vw5qyNx -zu*>S_RIPwLPD5tD<}5M>+3gRTD_nrjvjv@o<-oIbk;gjL!u;dY3T`pyIV!sv`sqg> -zj9R2P2~G9qc}26r$4Um$Cdr}NlKlI#v4|tIfeU*f45qtou{>IKmV(X%FB{-V6aw( -zdo5;=KQlHlR>I~3GQt|&(A-lfpDR9p5v7QrZqih9@lFD8mAAf7_>ZF2#Rc#x(7<7N -zaPZ}otGTL@Vd3szLpAS{gI@@d%F{UN5bS&C$S{P4@HCI6mI*H(rz}{kD4Hu-SNOOH -z0zySr-+l;2V3_C$sayMy&jY1y*(f5ICXGA9&8ox+@&&;1U5c)0ADOL6_JO_vUYRdm -zuXk9DYLZ?8pSdZ%8+D*|pyedz6OQ7|zd8tnc3knjl4PqD^_nGB?|SzfinSSxjb+kL -zqv7KvC7@Ft;A|+h=Ha@%QP{^)tLT0iQK2!I!ViTNbb%JBBp)(7xh%A=-GvuG8rVJS?cD=BV=vyap)2C2bIeDe^z8n2g*& -zwO#==)Ln0eZ*L>p(1YrEHPP~E;+J}dj^M)Rf5A-`Oh5TU^btv?nc~m<)6d_XScmte -zM?kv85z>k+O-5VTG#45p0hD6c2@aqwo&6u)Y-3KzexyX#j(qzNJ$rt~mp)HqywnN@Y>I7b3eNttu3N%TxLlzX6?xT|z%yfU_|Ypf#VoX&$t$2bx5@Y?;%B -z=`+!ht{Xm2UC<3AWp7*3$88ABWxmZ!FedogqM3`_@%T9AKHjV?;4NE?@|0*=-Hu62 -zh*l_WVg1;vm3~T}1#*LK(E6L&{y>kADmcyL#=gC5>C0{4YoH|!kOJ%nUD5*nRiRfCU&!5m -z3rM=q5;WlL%?VA5*J$n0x0hC{9ud_6Hoee*ExL<2Mu0-2tOBwi_r5Zi7Fgln&C|1D -zMjJ8Lw8_YL;*qs -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 -za~B(Z4%!=fcOZx#Sgs^ucCApU&* -zMAro0+~*%$mi;eB!PT8VnTMwjUOm15gYJ6V~JNRM>_ -z`xCsjv;<@_P{BdB?YAFH>^I&oij%u+)|d$4COI?~@aofb8z&{eUcx$}1$#0<4F2={ -zzQl*+Kj@ul57>JSPqT~1D2icFu~z=*{Cikae>nX2=OfPHu^N({-u~r?#X0Bq)V7tO -zS^2N(hHUnQ^LswyW|a$m`{@Y6{d#qR___SW{LUcX^Dmx0nm-*v4qMz(x9>6=DO+rKUR*w|ptfrZ-*8O=zc)(AFbI~r&;G!_eUlGjN^CHP#qaq}#X -zEJBbL1fnrj6@x5brK@ToAO^-9$G87C5Oe*vu>RZCKj`28-`LQ`AV>T+Oz!^%ZA-cB -zf1~()`M(i`AOGEXCjXxnw&y>U+?MhY9l5q6|64*aIsRu$im)SBzP_}Q>-gW^DGD-v -zefu8pWyOzPrVoGDF8;Eg{AFDIVd{BeEtmsKPuEZj^FLc&L$v9#On8|Uyeka&DAWzATwX(jU*Ijj}fdi^CZ -z)32NvbyrjqtRI+u{s3yg(vb_AmGcV)<(m_|<@+&}(MD6E2|AqWB+>Hk8h9 -zPdPT@8g_Nbr8Rs}py0e$c72wF0>^N{$cn8nRXnB(Py=c3SFo72fFHE-HrQr -zS?|MUk>@%OAH2HJRF8H*xdJ-sJjYCoDpid9OmP{keY9A&7P7(gC}le3#0eQ_vgVRR -zkQDzqAJRa963-QMdNSPy!SZ~0z@0*Y`r-`P{R75b*!VXi<1RlGMJImJU~v6gGd=)d -zbX6wemrxMZGQ!bOh%ogZ8BtyV*|}PXgQ}-`#l29O%M_y-;ICi5EuO>WZ!W-igQnQN -zQ8mTaQSlgA_ZQ{5nR=cRmumIw;dM;sHY9(gRX@2m>BOsfz -z6drkaJpzQAW$&6WPH=ccGl{od8ad4EkcCk9p%+yiZsKzYJ95c0I!OyV@Bo1x8fgYR -zMeD=kpdGV9-HYNQ_Eor}_{*amtT5)r;BhncJJZf;6O;OFk+WK}iJ08pE%IK{BtkuP -zwZ4i5`(sn#R2F!=zUy*_pBmpm$|2vf8HiEMf#kS%tPhMHzm8GNrajMjt9^bbyXs%A -zYPx*^-IkBqFs?KlrFZrNsh45k#nP8(;RdYeAk|}^ILcy#V2ts -z-_g!mylYS2gt#^OzMc*3oxXFF;mSku?JH1pSZQV+ZUEEI9Y#-arUIq)!2-PiJllw+j1G*sjgkE4y@I`aovtNKfSf^gH -zz^eG!jVPX>tfQJVU-I#OdHuSmyYo$mQJ{kI -zu53!|!@U1=zNG%%!nBL#?DpuVd~Qrq5$Y;6n7P^+rgvZ~$n<;eU|ms14<;)0c9TJo -zOPo+LNWwWUvyvxs_+s7kUc82%OiuaEG{QEuD^=||#m(A)gXqtvo -zO8J|vz%i|T*16!Vn@-5iwcHj&C^vJvw)+@9jCuzE%tP%c%-w1on)SMhB#RF-i1iOiK3loQC^(pCEasknM^a#yJUrD -zTJp%~SquLXKhW181NT829Yn_Uc0vsk`0yeo`Xt9R$~(?1U+5;<_J>UBdt_8+vC*?r -zied$=VasIAG?lrnoE!4vlrHd^70Lw=Z5U|V)2-$Kq%;83{`BYY)>r!F9*xSWkeS1G -zQ>&g2MV^@1J(H-Q@S~ahndw#5%gJQZehl)YxEaF2`(oHsyFr=*JpxP^YmMck!WzeZ -zRw5vVDPmh>%^1Bb)?``Y-5&2ShWB@cTY%<^exrF@1FF$xTd{te!#7}7J2IN@h7kfN -zhU}2uJ7oXDY=#4M$*Hr>Pb7^u!xo?tjqvbv|B|#=BPb*`;UF<#_d@hjfkXjbiQ2+_ -z+bghP%-`iI_ANol5&E(e&sk={=KZ(Y@+~r&;94@dff*A=Wx#Z-rw;=Q3_C4R+Waq0 -z;UyEjZ)$*}O;Tr=Zul(@ckhGC$*U*D^dd$-!-|vWlr=#}u9XjEKBNeSHFRVjPO%)N -zdQzG@KA3>VgI;b+ls -zO;_6l8%C@H9^_71{y8Saq;ND0rdU -z!Me<~OB69}sB?gxV!P0@wS6)A;J3hliS*Z@&N`Re;(M+^@miQQI3Ky&LVWvN -z4ZS}t+AFR3qoy5Igk-r#(`_ML3Uoh=)8y8Z>xe!S*LWk7<960_QT{N2h;7oAPcF5O -z7mioH#0x*oEw?zbs3v!#$^rcu_31xAbbYrk-g@?!vAm74d6VHo{644 -zh4`{`eta*qr(4>QmVO;|i)4sCE>O{#4>C$CGplZv@}hm<$o7QR)NZg~ZW6_)=4Hy3 -zuvQRcxvTP{4v7i#bv2fGLwYt&+hWy&yR&fQ+3PDA^{)<2R2wg!e&&VEggBMQWMiq#KW@Xi)%^k6N*vSr=tms$>uOvysF0c0|rH!X*L7{!i?&A`iBnxz14G2nfucsv@GJ{;y0QXCj -zFidv?xa(rR!WJkBbWit0ABJt7wyqQO&E1zq -z1CsE#VSD>Prb7<{rVDIh+(yik%)Bwhc|%|jdgYwT*WCx5T>7NMdP+NvX`60~2)qRG -zb9uZez+pfzKYU@hv1%Q!nZ;_wnyjr0k{zx&(6c=|MJn5i%SA8k8B#mnXYTY?Oi+{N -z*=o34z*S{d!*Er!t-wGX6rYLBc)-2Y`^%#2I;8ua4`5z!s$@1;tUhM`{ -zWlJqGg)%y6-8n#5v%ENJmx2?PCrqoZUZfcU{lVanCUdX~a=_bw>T9*51;MD`b=`gY -z`uYpPnP@LmUxYrlJzLd!7vq!UhS^(eIC%pOcpZX4GUfDo-aXqjy>Ll<@225+8 -zAzy?zwLVLT5QEkxuLlnIRxudzv>eu~&Z1uAvI4e`)QLD_Y5e|=Snic3G&BgKT?aXG -zl2hfe1HR$|;FStbH#qR{E(MBWtineq=@Q9F$t+;sn=EqvCtQkJ -zMtdOl*QiRyOBIAdC6p4k=pUg|Znx7O++pqW -z?ZWH1_Ok*Gpb6H&puF%+?fMFO&Awz -zo4c%Fcs#U!g|%!l8jm?l*dYgZX%>o;)|(n6+6?Jv@27e_ryI48cD71&Zlrxs1fa*} -zpHsA^3$?$?Mm~gDoTe< -z$%#ybG;5zP-$Ktey?=Z4t$m-%aiNDJ!R}+xE%LT$fY+?4?$H2! -z?+H55r~7{>QErpq8|67A`TS|pQy)6NcuIiYPM^i1H$I(*6>-HQuvWG{tH;fdAlo8v -zl$;G6_Np@0ZW^K=-}S5ae(CzD5BaKSfXOTxkJMyu`bh{3Q5!*qPCQD{MKZVCq -z4LbN!V+Xq~Isf;#lc|$Sz>IkPs>6Rj^2{QyX1;1>@urxvM=%ce<&Pd|RtD4h@l6uc -zb+!JGtD=$ovj;SpTS9%R>K{7Mq-A~`;F{?bR!hFmZDF;Qc)G93ly9e}k2|%iUxxxNo{6BJga+4MHws#afI2cH$-ZO}vUrDa0An3H-)7oq5);id68Mtosr2;bal?Tc(UMJYy%N*i0K@nuY7?dW``sZn6UpsP2} -zr6SLavijY+&DzL1Fy^;~cQ8VE{%TEOMt<5NX*81#flbX|l$Hce4ImYBeHM4BkRvh(R4VRd_J3quSvCMXyQ| -zm!e`j_eR^tcnb0`)yrqwS!BSue>zpwG1x|SWpaVL6*|B^i`YUvpQ!ZrdM?_Q*PC{M -zkm-alhu0_4W2nn4DEX`2>B2eES}MY>o|GPS?j0o$qrjv*(k*I(naw{f@8=dA(cTy> -zvvtFgrJ=NxICRCL1jd=Dl_G|)>_swA3a{OMcxL6}LGuM3&cFmp>K96uG>vd!nMGZF -z41s~zbFS(@QN2U}WX94>Ytl4SH&h04A0^EJmMsgmw^DSIW()Wlj`s~n$_zhnie>t! -z(Bj;8(Wzs?y#O_ct6Rv|)IaD1;cgkfnxCUt47%hdo@s(O^*G&odx`W8T_5*u8A}v5 -zp^=jpMiy$wG@txiW57^eCHYWUMW&C;!7_c&lA|@&rOy|@%E*NdI)8}A4^*}EHyEJ> -zU*r`!%K74eYoPdyWjjyImQ0UK3)D4g`RkGUBPRRf=_h*Pg*(Q>Dy$81OM}hNb+6dc -z`MRDSEyoSH^*J&FAGs!(A`%C|7`2*}gfqRx`3hHAPz(Mw93~T_iq_ -zr?ceH=Z7hfW)io@7m)O&LC_!_@a0XpC%NprXq#yZ+GWtNLzfpcyk&@^J|r3!a@O*X -z;;|qjQ|-kV?<;z__@R7WRdJdIuO}qt!=igQK96^}r%z|A!vqY)d2)?AeR7DGQt&tN -z-&!)eJnf#J`3RM6YrqYUXRAYDZe$(Frxim(4Yb%kX9*Jw*y*>yIPM2#UF&Q|n8+_F -zv{868XmUdG1Jq3urN+} -zpGE=47U68Q7WW)cs9!$#jX|)@9tUP8T3H&_OD5wqf?u`nl#eV)0Adje48d8F; -zkvxI!9F7SfCpDo1! -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 -z+x>F7V+z)>ky$S0aRuCe1sQQi`v3 -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 -zddqe-@n6=Rws95Z1>TX*jD2J@^WBq%& -z(yiPV@`kojy#XP&&i%2Hx++6v)>r?$`~H)obf@@SfI<;eTVNyAYFni#6%`o^7Pg=;}>Y1YPK1v8)E$Te+u_n$*G;bsTRGs&q~-PWQHa(j-j@IEmsLHb+Eo7S|V8K3UXU&atsvj>6&rS1t&XYbXzP -zL&ZzjWABwy7fZi7HI-!4(X<%4DQT@mdRkGCjz~$^z%%3M+AiF7l=aC|HSLCZAJX3Q -zM(1;cm1xL;Tpg>SV&|>{SMBv$pnXxf;?iPRM$>DMP>*S^if^*$y0Fz+QW*4RVF3nU -zSNyc;HF-*oCGF5aOphaEnl?TTt%8`vc=6M*IA6;hK@o1X5_w^TkHBM3=(dqB(O8Ru -ziyARM-H-+?iN`}V3{o4{yxvwv_0eTS}Mcnqj22=S;rNJQ-O)wA{dTcQ9p!5)4HqW&=y_onfwe|Mx541yB4NJX(>wD)pa|bXr&20NHU`-Zf$QpddEXme@ugG>!^A -zbo!E4{+pXFS_bmn9Q#8X2axr3xjsOHrl@#z^=LlR%`UlH90-NXCN=F7QsW&U`jbCs -zly-~feBDvYtK#59sQlQw07{d=0)^_hfhL%muoSJ?gGdiHB4P+ -zH`z0Wpyma*S#%!L8VQYox)*Xnz(LJ(Z98q5$o{Obn8G4jj -zPKRji6NuyDvelH-Fw~4^(!~V!cDEv99fu_yFD=4=138@OK*=NYNnlUCpVbYPY0_d7%63g*tiZ9<+d9!Il?wLJB2?7e#>tJ{0*w -zUX|pVz!6#?jf>s^28?2-7%9~Ey(O?yp>#9uzM%hwtlQyj9W?3jJSkLZ6^F+1L2LhB -zS_1V5APOmedU&9H>oU|;ORV^KUzitA{y4VEJ6`{G+(+1Xn3DT-ozPf;ViMX -zIj<4yMHJdFVUuV}NPs5fn@TR}4$^|-b5O>S8SCEJtbADJ`+ -zm0>tK=c>u_@~ -zrm8u1UG@wpqNxwGqg(IB$PXBF3LJ6hyJ;!dni*ojurA-b&qeQt*%!;OUiXHK3kM;^ -zmOu0?*B-Em#i?=u5B_nMOwYSjYGSsM`#~RJDMB`iHy3wWg~lpm9n=1N;-#miaI5Hm$69%BHBvL2;&{)Q>3cvE -z`+8*$Qm5Kblk0pdmh`miWLUsy9(EM@GOG^|ZfK!4MrX9dEdzNIdv-~1S{if!N`g0! -z(T_l7aB`u`U?RDO<=!z7tw9{x$U8pnR*XOTE;e4R))WON2?W=E1!CWAE14H}KY0H{ -zjjR~BD@}u|FM?2y;I0PCcOq+Izht3;p-x$1PcD+BjqT6Q!D6}^fz -z#DR{d2}b_t1Azf_owUY^4QAoK`j|b<3dS!mE;( -z4>W`??g}ojH~5`r>{1sh%byR-a1oa5fKzaFtUtFa)~`EOp<2 -z?#(e|tTl&2O!jAa{Eh$Te*3bB{A8ZXYzUB9y7ji(lf!})<}l^(v4Ys%bcse-CKjTbg7E!eO(B-wi%=Qkp1QkZWo)*>(j~55VoT -z8Qe{Fn^UPBdPI=@khCNFs{Yw&dJsl{%znGz6l+&LUp)Fd!KJTWtA7I#8wY@kX!P_FJzPk>m{ESkBHoA%h8R% -zUechMmBmt_@h!fgE1X-gY&WKme3^XCP^>Y~G|F3jSgthS*;ue|&8fvA7G*ya7Zb={ -zXpSy<(uTW^JrBw(1aZKEqI-jQk5$>*{oHI%Ms=!8)?(JyOa=^iuO9YGsHV`)bM^3W -zMI*&y;*D4jO*=iJ%^}8dHWUQS*47@f*+x`R5?uF?6J=y|x-~s)wrw!bXIlnfG!rbV -z7pF^;Yc*FJ$#!hj?H_w*7>N~^sRj#?+4`rpY&AxZfRu_qf}8Z2U|YA4@Q$cu8V(k1Eqh#4~d=)?G{@14un(1 -zCxxE-T4Jj|hO~Kz%?Dc0uzAuSLPn`FyY=3%esu)-zRtK|Wmumws5S4)KZ4efX^yCT -zH(d=#8yM~E2vL!i38O8D8 -z-8v|l*&AMcR%+#vaR1KJ5j9b+A=4*R{E@*PDd6GXEN2!qq%O -zct9f$`t^T+rdyhYOY?yy=9Zsm0~z@Wdks>(QsX~9!smza5g;c}?+g#LhbuD@bw6?$ -z)iLdFF}^Dag&yU3&;=iS`eqd+x8l*3Ff5X>WOs2)_hK5reeAuozV0)cjk}Uc_Q53q -zHD?TAycB@Wi>Nip_3kI$Ug>g^9-mhA+=Tynie`8Ia!WglGc3s{q#C_v2$OY=F<>StoY>XU5o($?;wvp<{({lfFF%MBb>I!QCS=vzXP=Y=V@o40p%HU{F(2)lcw2|upDk77klzU1HJkN -zedE}2I%{CXuM|68$aVKf0&Q#b#I7Arr@SambzxriuFBGY5JlhL!qE%3$Z(T|P5Wp0 -zBLkIJUTweNf@uR4D9Oa`F-uDbMAOiRbnj%iXErYk1$?tmzeddDF?a{&IR-WI!1WBD -zd`Pn9>O_F|HeVej@U~QzvubL;`9N%&(T|*@IUAC9PS@I{*<~KB;3o3ALB9b%Hp`7a -zvF>R3G_$0O^~_EVTNJn*I7g)2g(&(RO<;FPBBTqN6L)9t^EBwEtf}>r8+k4T5~1jl -zLEG-LfoovH##zQuc*)PGXgymu>5x^VcU-(1+BA{Yt-;<(H!;$wm-$8e#oVUvbgdZ) -zMEP7KPW#&Miu(w&)a+dL?vAsp7!`?P0lmXa5ir*)=-l -z0WdjF_*xlXhj@Sh*x3pPKf;klF7xO+MaKu->&T7{>qdq8R>j$-zd|V0E4oCFr -zs*zx<{VpMK9A7VC#ow1QVXB%#HSDIO|3s7b!Cm{%1HZ7t3Qw>=3bB}3DsZI+PIJUZ%H^USfcplCcpbC3?cfi*{IC$KCU#iKWF -zj*Kj!+{z_kHC6?%N#T)h*-KbZB!ke-%E0o>tZwbdEaLBx$mGkeyi8f$h{X_0Ik%8S -z2lnATo$UQ=5TkynNrr7P<6vz$s0C;727VJS%=v!pHIyF|vyEeEqwdyy5tvVW%fxRm -zjoo2XKyZvyTZHhpgLy_?rpix>ouombTc}-5imTdX57G&Hqxvr0-55UXclOLP1K;Jhk9#Q&9h+++Hl|7 -z`*uWVV6gM1IjB%A_;omP!l!kLBmvBp`|5&&XKz?&4O=QHFW>QjFbs~Bivxnyx2WSM -zyNNVSrVsaimQ?TPT88!s4Q*h#t@=6@e#DYaOd-CG-8@g(Wp~doik1TDLNX0h4)%Ap+Z8<&qCSgfG!~JwyLuWV%D|MT>cZ -z&x41 -zF@u{g8JYCynXFW4O+g=++OIZJAw-`yDA4jhDkRbK1sO+&YNQW()AS|&0FXXoP5{|N -zY9sr6$A>Wmo-%wP1F9vsU-Y4YK>^$qADCf)|1u?~WASbGI@cMW$w3&BS|osh-Id$q -zMo)F$0CX!`b{la{=BlPJTITTI$uA5IGMgQJK)@qw!fK=-*5kH5ns^B`VpKV5Q%Oyz -z#l!p_-=rjFOxi>~#-2xxtWfTGhj+&H;!Hy;?*vz}uYrULLonp)f+oukjuZ@@)EwaD -z;d(lQSCKVt7Gv%zkEz4PPa=UAW!(PF=hi%1Fe71|xD%J_yP0r5;u~bp_3lZF#_Egg -ziG;N^-BV2#LdS!0UZ0W)MD^QV!~-cpB;8M$eV4I{dm$6WkJ?l@HyTY`jy4ZLMs|d< -zf~am&#}V9BJ@% -z@~oiK{NHg#ZYEij`%Igde8nEWwr0O6@CTbReL35A$qvbx^wr)J9TaxUM?(FOSkqs0 -zG1}!boycMMNOpNzW(gk%T&twt_8ots3F0=(4L<37&*v28QO)Q@B3)j-;Sa|`Jq-LcqEvA_{m_bDhBYmdf?~M$l -z<$rfz$)JCchRX!H_<%NrZ6-r%yVyQ2;>&JYx~*xu$E((aE*#GSnw7{{bMwS^>c#!4 -zk={~+Zn)jK+MONZHngZ{`?%3pTrV9NG8mpo<4x4Qde1xQF301HOtK%3h)+t(T%H_BNK~`55T5t6I+--;kX=Aj*y8MSnNIgA` -z2A?syhhuk^s;#BVjH@aXO8M@}FdwrRahi6AHh4$nn{%P`p-DVsN$wlkaGR3cUzdEA -zl6Rg;ioe~_Yn?kfA29gB`1EC$v?x2w*j1MEil(iO_Q6@`Q_;6l^n3bk-4#WD`larW -zeSG?@uLcf(poKc)Yp`wbtaj>vx5)fEh}d`}2+E=HWmGyZRpJY?u2SPOH^NGZGQ-00 -z4aBpiRyyCQ-ngohuH5brh75Xz7i`iC2?q8j7Ks{NksaQdS#n2->BAFqlgG8kbWvl+ -zh{7++=Vae%SL|rT_SOq)u>~vSm~bf4%iy$3Z(tzuA(MJwFv-KQdbd{2-aw6kFCjgqE$O<3dgKt(mfd_v_!6&eY8gs -z78%U+=LQ`3uxsgWR7-ESOrIrLLo!nZXA@a8e4jmb1-rl4Xash18AB4I+S(lK4H^eq -zpdlj1_8Gmjv3==AZ8F0gbB=%7fF{%mGnrMwjA&~TnP7EbM$FLi$~S`G)(3STl=ePq -z($D0%6oIM(XYkn1M1nC{4kaF&9Bwo!xJsVEH_Ff&cC&;NCgrBcxRpH?WhM0Hz>i>y -zght;i?ewDsL0b2`yOyNDX$g_ryhU>pGHiIVcak`^Q|M^k`whz&;Lp%0&m_L()&4o! -zJXKau8%w7ia|=4uMP~T8SllzQx=x;ZF-5ipIm}H0`U(*(Kx!z)7`{@rk-YMSChWIK -zth|=Mm5WaMzq`HsJw(*EnE@4N*79FQ{;2b2YepA1`3lz=e^s1)0mN+d9r(h+&zqCq -zPj8Kh2tVVY>Rt@3EFW(CNUGbhEg}9yAKTIA4!5Fzp7`HRZ*7*E{F!PddAAvIJ^A{3 -z<0uVq589b-`RJ8!y{b+G9)4O_SZW>vt(oQM5#UMV6e-$K)+sEkk -z5z31nksp9xtnK6?6ry&QLKcExIn}@v$FBVC9M74O!H~4J%>#WV7xsY4hJzI-yL%4} -zCq`ZT@P-|?4?TWU#K~-sJ<&9@hiK7xsoPe_#iNb0Av+lzeB`@crAxa2o=f$3)v1WN -z&0v^I=%m9QNnh`J7n7t9YLATG-hC{woH{#FWKC!7P!XdLP4iY6yF4h>W1JqTPr0#` -zDQuxX$H*;z_UuT#5WL%c5y63wGrlp1nOUO?&FGCQ5tP((Tv4oGq0J~i -ztF-ss+OWUbc@dDoCxY<LMNd|$lx!qy(6bx22Jes)@(9#aLwZc?9cY7EX?#)wJV5D0Rj -z2WgOr>e1#7Vk?(KXfsSoh0R%t{b2KQu`iQ^$l! -z^sR-%>f4?utCy{3$Ez_kX|eP+c*erH1f+fwU2#J_yX;_+4e})qgqCV4=}l83OVe%R -z^blsV&6Ue8MB>txmV$HG?U;hAXCV2-1cl#87w^J#4U>(*KQAJbS$oJlXN=*J=yqo| -z0ZEo$m6YZpN?f4f-puR%;ht+ -ze73L2Dj5HboqPY8^M+;voXGKK=E{@TgM8{t4>b^I%P?cl4@Pp4Z397WrMOu9c4st$ -zg9xk}8@E|9K~x21{LG^6F|4~bS14Zc!;b9^$CvHxxpDXW?BWr-tQBhpEP#m5%s{x9 -zXEt9$G0elG<9G!!J>fqd8?=-jA)}kFjUB%W>UYSn;SdrIMv{Oq?vmfG;&2XQzgWce -zDy(wnHdknmVF3!weLxUB72g00lAR+C12)g(1Cn9LK}IsHxEq``pAm+Hql8T9J`vx- -zefLbFgrI8pU2f867Yv1u3CJn8;ZX^5?rXAIj*Y}r<*Q?D5?bEwJJP>LGF|tE$HJ#t -zLo&-d4#FbuBeR!_k;C3{vm7iia;M6GPt4wRFXwM7`)?!vau@dA -z{_UnnlnDo?S$q)0radoDo^@05<@6pwrC`!A&6XxQ8$!M2XfI9gME%ODd(!!)$?+-T%2it&wm(R{W_Zh#4dDI8}Kr)Knun~ivB -zBvZtseA%Ei1U|xxFIZ}NM<|dh3xT9$aI!OM|2Wt`w2p*iffoX|=aO7>tfs|HL1Ir| -zs=70&bX!F8XTD)u59uKEcdnnGhv=O%>imIvII_`@fnLGtU!sYt4!mA&L@`wJk@1d( -z7hO4cgDZM4T?e!5iPf5)BuK@0{h|kgR}HsrI$8m2M4k -zUvtk60?MpX1un3vs)3koYm{$1f!G=CGB)?%yG~V7&pQt4Fb5r19dpWb?ai01;RD>r -z5Zp_$+BGV~JfIo+h}e#nOOumXF$@l!H-nF`r4f|dxLTSmJsmjW=?Lo=GxY-MO63I3 -z4y8-lVWg@k9X8P7va{OQdIhdN>1n>WdR-1D7q<>7&$uBaH=6F4cvKGB0m&c>(Rrp{wm%1@3AInL#V -z^m11Z{xs}zZt5M7f1{b%pz-9OO~6-c_bF+w$9R76+pU<45R3W=ZMQRMlnzd~)LB0kaWUpl(G-abT -zl0vaLsAOl3wXedJ?pa5T9>q4jxM{-iaq&M)^>DW6qtINQ&LisR9#uc0B0<9)m;DqQ -zvgSh8bwM?&9qqr$A1=0GFb2~f$&Ya$Iu0T4iPm3m2sr7=8B9A)|CWo_C^A7`v0)(t -z>#wtF_=YSa4r_sTr)`+~=E^nV07Mhin0HN(InBTJDYCC(SIHIkG+o+N;euWS7>}dR -zLerA6KMoC<5+;iPPC&80t8_+Mjb54@L?)e&JIjqaGzLOjpS-6%63iH`B+E6WlQ?D% -zHQ!ZNbomNpy1HxpB^$#{)7WW3rr`$uW!fl9jDu7R6!qFr!(QuhP{y42$pwAf91kG_ -zTJxkVhe^ZuV8V&WMV -zV_}a#{#s^%Mx=De5Yd*1M4Ih>IS^Tpaj@I8abo#SIpv%CR0fZOHn1eCawvKMhTDV0 -zSGj~sCKyR(`=Q;YT&LN0c@CmqU!=CI{bl@N%~)50n|s8sfx_-Htt)4G;+h;us8ts% -z7zE7fAyB~NWvb)ey}=ah^ze>tJ7Q@($Cw^dUbr{IF<%A606END8zyOUK6A}wq$My| -z1?$vZ1+c0o{9}TorcJXdH;$k)LH_ox_l44yOdI-ir?a6Sm{yw+@kqzD_QT`kh(hf= -zB^*ux-5bzs7g9hOMNZ}@f>Aa-ft^w^fAbz#w0#L=l#T5)WDZG}bLE9Ug)VXHTEjW?NwK+fX6%-UCXsG_bHi0319)#v}k- -zmM-ToWAE9HQE-AN?VRL71P@qfy$>#CLSrn=0)<|1&!BqPc-i{3ED)}PD>ObpT104U -zk%4R9E(x;srl@klzD6Gyb+FN!DBV}csBlL$0JP=82iN60&3CplNrOP0ghzuXIGU{u -zVlgG?z}mw(fgn$*d!*(djww4K0O12hG(5N=uXW%bt{&aM@k8tofx^Vf+b#!A3>T1P -zd?9~G!3Of^=sx&yOHUP&Q6I>JCclT)yj7rSSD^8$**MqE*1hkMgHAp}xpy(suF9Ef -zS$>~YU2avOrk8=VA?d(me{aG9ds@j`*I)SwSUp-kKy9M<(#q{Y5)^Gff7=A&Bm~R6 -zgk9K^6ZS&823tNSVhvhR7tD6U$cmFUoabKpA*-W^`sq0)ifQS{|5mqfLJ@%>PF0|ERc?ZJr!;^^dD1!8kx&x&4A -z=)38s3Ms<}o#u%>PvYP+gh^;o4663{nzhF@m5t@~O@lkSGg|U^tam}1#nU_6!v-S)yYN(Znl?w}9yK3wq@9X*ncW0rDa{U|X3 -zXCMNsYmwu!+oKsH%b`7soH8yx9iJoJf%!Ao|66t{8h;8z{cO`g(-2vOOvaz(W8>p! -z+I(+Uxe)WZAEi~1S2_5Ac=UE_n_&dZw&v)S$l_j5fuCToJoO<#q-(ct&Y$v04CpdW$HJ0s&3 -zD_MR4Cx4~`$G^(Zpe?vw*0#bzBNP$7IVA1FGk&Wxwj^iVUU|qK14JI=nxPCJOD!N^ -zyNO85!!8#XKDN9PUn8B{Q;ni+C;mcQAJsWq+Y6e1-6AcJR9NP7FOUJ1cd`jB9wdc_ -z)7-J)dnPTDuoUwu5>nWsTvz_aDwztULbitd7M2DRlP@(9-ZDPQs0yV -zT~F>rKgfk`iwQd-L`hx9tV4SoL|awe?0eZR7z(j=O5CMv#6bYCRdn@Z=Ssu5f*plj -z#2zL0_`em%H^Y|EaIjMN;e*i;nn -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 -zStukB$ -zK|^)LzxpX5t&BPbTUCiK7xOs+J_h05-0@FF8&KAxd0{V=m0lRrE^i%9%j?f7pT_Yc -z7hpLN|GP+YIMqA_oZ^QaC -zFjx9ydyJk|0-ldQ-^>|4c3rqYm^L)7m90&)E1qGYTf9oFupz((iepZLIc=C$AvVga -zZv)XSQXOIP8n^T@VtO!=b|{{Wu6-+w(iA01nR0FX65(d?Sa>1tC&x81&S4|nYh?hv -zW}2SNX#^4~>(`4)+CaG72E#_Kx23VS7ui7K3_mC3wmaLcQ)1#9u+`Prk~Jop0#{Z* -ztWB?GtE~QzuFl-sXaN598f-0O{a2N{nX92WLhqOUt+pAN?rk$GR4v)eAl%}S+nEM> -zouV&*ZM9~lUbTf`PH3BDN0SE$NODy>8$(|548d3Xa0hY-#{dv6T=d>C0Md}5fz=Ug -zVQvKZW;Y}mB1^FinJl<@9m2Xk@v|#IK?p8_Y~UwH+aa{VbNI(GwPo^KaQy*zcy_)B -z`5=Cw)(5M=OV=Hk^easYU75^VU!PU1YuDwjg#u!n*xeXOPVkb+~>DDWBI5zY) -zv$PzVY4C0l?yiE#hAsm~IjSt@R0M0@ZOH{m;l%JtA6$k8*>AnLOCXi<>#*qRYS&A1 -z-65e+Mz}!vipyE>-xG_Pn(nc+~r+0CU?K`dgTfY;+k$q@*+!so|@j8Yj_Ou0uUI6 -z1QO5^)^aEPinyyPN9Q+W=yx`Zh)2pmYo9qKAPj8WI@3qq#M=@qz-Y3`S@*)#K1_~OZC0y7dE6IY(q -zBPxD$91+|Y7>WkX7p$TwVKrM;NxMyi4?$uMk&q94SCQHr3@3%AYaoPZ2M3ZlLC6su -zHU+Fhj*$f&Bmlec!!je`*pGScRSKx0bUX;`@5jERy)~`G&wXEKZ0n?eEESFwt%^3O -zde=DxS#cR_qVn0+rQ|XPxa;8~?fUEj?bCq*gAB_)$7a>|tQja?-(bDuDA;aB^E%sT -zUqX$os>Q6tg1vXYCD+C -zFb_h5tYktDG_FM6ZQ@(l(&0gwBE6+Xscb( -zsqH&fOA}oe-FK74T_g)15F9$ZlTK?rfs?ak$<}l57aa6VJDbhRi`=vDeZO!E_N-{3 -zc-3EVx-ISdElBu}&Iz;qEMsiTF7`pYkfELas4~~DlxL6}5;A<$0QX_ThZ6*GCZ|ln -zc4h~AuuMsm*=uRIBgf5rA6OT#u{;c_pJ-B0pLDdz0bL1Z)zk$(?F~T+&DFnNv9sR9 -zgyw$h4G2#J_39%I_U4= -z`z-up=GsRULZi!S)0tIqarC6W5v}=h--lZstu08M*(5^%gMWa(NSbql7TNCcuqI&) -zk)G*?1x4FVVJpL+Ugbe|4O4sse4eOJ>6*sXr@$rcay1v@+(;t@G!RG-zNLL@ -zuR!MKG*$)K7#52bE+Zs?%B5gsq1!x))&Z{hwDN`<1(RbGzz59BQnUT1H*Vc?rF2jX -zCZ*1p8uswWW_6nQQ8kE24$Y$z=D3lBdwEM)QLy^ia&C+3P6$s-qk1B+uFyD)i&-3z -z1*<;>ZhYS(Kp3iVebIcRCWBUSQ -zeoUS|?a-yqL?QWUcHj*by$U&Q8i;~%Twxp1^|_WHg~%1E#QNEChA5rP2Tc{4Y;Ff# -zFY5(wvv7o}^}%+kwL3nkF6LL3yX0WOaJz>DwL*uP%Q181axdvI;3p(b`67S0Zi2`h -zzrb9HJ8tbU1b5laA8hP>(^ghC8Z;!w(+mFJHGPY!Q&(F;R)jUZ(8H$#jj{lAWwRSF -zYrUCe<&5(Kog@|@0q3qMiSuA!c8ET)YtjZDYSXZD=OR$>-|8SzBFhAZgM01;8BU~k -zHg>6zinhTXZ1TSAuu&W8%S9r>q-n-w>9}?YMe1Q6bm{J5gvsn523+wpGE|(g|{!yIl0s&S)fXk5$I=Y -zTeC>*$Wq{RFSlgm5rS~`fFD?v8r}n0tH~?_xlNPW_YFipd&rEEB0?+j*6((_5h~x{ -z)urUWd&C(@s0Gve4E~f0rm}<&`m}+?MZ$0r1$#8Z-tFzI-ePb$>ATJniP2V~VR`Oc -zCwkhS)UyI_vflt$ZFNI65MoAHHanzw4&_gAwuLSq!sYzx#tt(r_U>ut!lGQLmm9&ph-e7`zSYw7ZZY}c+EhExTW3u% -z1eh%bgYij%O4AN8FOo8yGy8ypeQbPpyo5mzN?RZ;V++)|j0L*|a9*LQxHE^>#+e={ -zbP=yX@9+&+zlKa2uWCszD4rM5FlZlurWV|kfr}&9b+g*0BS|B%-8s_GUPDy5lDc*j -zyzSB0)DuSL9R3=^%`bZi^|@*n1+5C2E#{GRSYw7~@ZnWE$(v60uYT2-A$>S8&_N8v -z>J+RhF8Y-qn>n>_(%R=4w!4_49-Mk^y58aL>4%;1MC`L~U^=nTjKA0^}Z~zMCPgHsl!F6ka_; -z4(PU@Z8~4E!rUZX&1)pIyYQ}0s5&?5ARg5?H7L*MHRf^WQAMxwyh_<2&}SQxwFkTg -z--0V0VVmHkmd!3f{0g(z20@8IE$)Dhy7Ek?T_pxMf|l?*+SOy$zM|{MPmVlT7P78q;os*`zYJlm>%y+%xFukrhhA68z16tx1bgj+S&K3(c -zclRXSF$z>dy`!0`kigrSwMWqYT6t=Y96_^GLO66GKS$(haa7Q2x?BN!46#!zC^t*| -z(zxr5({QDPM2w?0QnTlojghv=k}vv^rNVCTUyNhk$Zj%c1=m&9rn>t-RJ%YE_Wkt06(cF%q>A-b3Z@< -zHjoVa^-+yzknM8E{%F@c4A2eKV`+UWQ$US1u`{CF%?6)^d|iEIyFW$}&6|y4RFDi< -zQp`A(HNMX`=SNwq-V3*g1+4`7Z<3WRSH;FS2Kqd-zVj7v2hB+v-W1^)7YmcRwHC;Iui?Omf}2 -zb=hBT#W1Ev0KhaDKa+VQ;6HG^6Xk0 -z@PVT#v@W}Vt*YozRYzMrnf2iXC5g7wPtLx_#tUl?wR1i|Y7>%b?|37HA9t}SqqJjz -z7u{#;sc5lWv2Vce*4m}5(l+&!`3k_O?9k$3wwwi#TuW4zJ!?`YnG2NgJbP^_T8}+F -ziRsAOd}bd4>4dJ({EEq#nXSWZ*I@Q#1l=n&JO}nD*y8@h(Y6di6wPYQZMC4#4edq* -zFo!p!FN}v}&iqAW_bWZse~d -zv?Mja=GM{!aQj^J_e)(!4$;yu1>j_EIJ<6RA9mi$ -zW=*NkyMa};s2)9IXUH!&PJ9f*>yksjOvAFbVu8q_9gITud64oaJX|h!7d*cl4GP%2 -zi!3Eef7l+|tO5h5dq5=n(QZ<^)uY;N-Njx#0+4GxpgcpY^rmY3f&$(Z!||ZNcF>!@UC)gS`#bZ&D(D1Y>f|L -zYkJ+ggL1SG+OX$}} -zQa8DA$;_gIxl4f{9p=d31Xu11g)=^xldL$~c7*I{v<45_YU4Ht64FcQT3vEpFpmO+ -zIyRevnN^~Rm2Fmm7xyF&S!-V -zTYAGY{70rlJ@*y<1Kaf3DNb-L$}T??>wtmXhQ;jq@fr;@eql<()(GtL>=M0M)MBlN -zQ)1VY3Z)<@JhC?9UeN+R*sX12BxOT8Ivrgq^^6A62frZnhBiRgUySy==aHvGjzt%e -z^Z0x;@Y%>zNeDH7ZGHmSsLoHE@XYBOP=(Hi_M6W3&RVUA}G< -zM3W>-)4pdw>Ew4LU42?HfXY>Ny4^eeFj1{t;ZXaST=gENpfeHV -zE}`ha$Fiwp<lHJ57bH)>jZBJRzy8Y{NNmMWr;Va)!)qw$xojYs2{hij<32i*Om! -zp@xJW)F8*r)h2P$8iwcY0LwAw6qHeV0w(B3AgvLf6FRFE+t`zAuV?Bsg5 -z&b|z^1DNI9Bi27AFY||7SbCWiD$XzEdge}!$kh_DoSa$7@TPCLGNtv9eDd-7jrdqSfnz@K^Sfd6( -zQ~8lhK=3TO^iZa(lNKD#+_s%HlxxYX^4@UVVhBQ*9XYcJy<0fdPN{Rz0jo@1Y;tF-wn8;Rjb$|Zz(ORXAC^ZBja=kuA8v|2$OFTE&}%^OtO_mCf0E#`=%5B -zN)77~93i9hQU}KkwnV;ZT;#AKrnox_$zB -z8;$lhW5}ELMXr_xGXw3L2VV<=N{gT -zX|;+uNPQJ5))Wg1ew5iq5x!2{9w1&I8^@|O&vv)yimDfnJN7A4D5ir}CI3D18I?3~ -zM_0UT#D2AAi(CovHv+F>njSJnID+fiRx)@(D)d9^S@}XnLFPf3-N*k_r -zk%m2ZshWTi*m~c?2Dt|*1;%Jq4S6CNbT%)6+xgn5xEMz6NdheycBN@~tx4ank+}>G -zngd9%Ndck4!B2|ai2PQZH^$d{1c5S}{RDs76h59!J5ZL)PUD=<pPS~yd1iCK-4$rz -zeAj{4afmx&6$Qa8OJg3wT0*3xst|Km8hw(Tb@b}Owcw{+Cw)`w>|EhbH%Ao%-x7oo;*Qc}gZf<|n7GovEGd!VCluo0WOq%Q8(smSw#hgHrnubA@O!vc~jrNWnt5ryrNw -zuoojq7cSsgtE2LvvvHOUphU?pVhR|NQpDCkKrFP9S$;t1gnJ#h?4~S7pLp6@dk_U@ -zEQp{W-K`BT(?2qlxq6N@c&xz!ADI#bi-7EYa&FxK)%^zf;2w=Dq -zMJ+LONqG*YHBlQBQbRKiRKBTV7p0NhNB#;6gVP0&$~_oQM+ZNmxXznQ967g){s6$p -zdoN(M^o>k8;*FIxu8?XcRCtW*`!FrNkBW?p!Jy^TY!^m=(P(4l%^;FwW9u9a_9BgFw>@8TL2HMA%;z7e|YT+hlv2;7~4W)E*>WWdIt#I?aCi9E#~ -zY>t`#G?o84ZVxnmn@J|DPXhp*dgW5ieccln7G>#`MUM!ZCj;UABG$Nu=f*)l0$*n8 -zrHJ!eCFzsXZ56WCMny`NH5&klcIujZ51tCwMgXkDMxt0u$8Ixoo1*OoIw_JzvOZk$ -z9df+sI^oMWX1R|Yh$*_yf{qiUOMvszM$QpFQZ7E@j#hz@1Va97Gvb7B$&-sC$xNY7 -zw@eXfwFX+(B_WXAMT%J!okLJb{_&uKX0a))T@e^Pgk!lKhU#@O%Y-0b&+^|*d+R?)c -zd5jBgRT(IMbsRe+MQ^zytYjqV#HC2sSOw=$ratda7~Bf%j>C2hVv1RzXU5qYoQhuW -zCC`17vI!hB8`&O#i8gHfuD3}_C=Qlcb6j+Ryoa(D>ackIt~fR#wT16D5elWQgNN_ -z<9aAms5{)SPCc}Rl&@I&l8#aVQNL1;0@s|qDNIfr$#Y4vrij&XucZ1qRJ1!mQIQzZ -zcrTiMJ@iZ$W9h3Q=(+7!AqmYqIFtY!kXG4-x!1IDv`9d33y7TWZ67p9v}q6^6W}x> -z_sYTHfdF9%Z<{YMyl$6s&zv*Xxp*YI5^bwF4p%y+4A{ENP-th$w`gpfLN0lX$dI+M -z%K8vghg;ne>zX?W)gEm`B##jRFW9*{32~ziTnPc9NWLQ`l41*QKlNbbMzu#d07KXp -zn9P8V(-wI{Sz&_i0u~=-18EBzqJ;hkP({@2BDiBqy0WbS!!N5Mt3t_10k+*WgIJL} -zLWWTpl;~u(RFP%4vE3b=RMMR7$&<00HtHM2501%8+ey<>S($l<+&~*@?ZI`tWyS0* -zg@RM!<>( -zKwQNLOY2c?Z$4K2+BEE33*feeIG2xA?c$2Z7usV@bh&No>Q~O5n!oC9C?g}DA -zM2dDjpSxWThFm&gZN(oFj1`@-Ye0?0)ueWxN6*C2zoNx#Q1vNUtX`%w*uUWM$(00Z8BFKtCm*EcJGSl#%*^ -zE{mxrvTHwBvJS`Ygit>2@=leosh<;wY*Sb>LO$ChHC%boxmV2f=9nG~q! -zcYOw|aOJ&}^-G;3X+q@?d~U#q{Fr>}P3jxu>cyd~@V%ID)0=88W=|XK&}c^U&SeBzgD5j$(?)!2eHOHh_LSf0zewnjISaA}7|eh~@m -zP`7D!$H0le93yO5@EO*t+R%1LQyBzDy@w(#MR4_hOsx_v#@fh2thIWTF -zN7ftjMf**MW96a>kdP3VL*xLheK@;fys?});sB?TPeAjt&5hwjIQHJaw^75;D@2wk -zO2WuiP<0UybC3)<@YHX`niDHR^-W{ow(ZTyJXnR>H6+s&o=#qeVZO7vA%n&zMRRju -zcAi?pjA=YlI+d+%&%)JONogt$X>F~nSk>{>xG6-SO(>r}_DV+CbYy)OmY3@p~%-O3VUJI6%ndR~xM*172B^dE9VR)EEA_p&ByNz{_qI?23No -zgiy{fXh#utOlBUmoV`w>)^(mP$?|23L>NOPwok7Od{&KbA(xTc$cE@> -z!3G51-Yl?pQ)rdT4bdBA`|q%TBJ^NezB--9;S5^APWQ(EO0*JpZO9J>z#|=ZhbjZ@ -zOl7}*f+3OBHe|DcW;YM2Bt@fwUXKRXTk=b25i+#HQU(Sa?mz+(p*0nU*vfoJruK!SjleMoKyTns+;D64H81{!E)6zHrN@1%F|m^qZgaDQdyco}Co -zV=YQ``(WjYAx+zIZS$Y86Jdco!tT{6cu4FQN7v^q^Zo1RdIR;NfMdg;~Kre5q?Ap`2ecXa{;^|sGGH>01zI5McvkS01$yx -zS2-L|MyUl?27uy0|)L -z&uNUR;I|D8m{3Ru2B)m$lxe$zx`adKVe?6$k_z1#?mz(?Ds0oS>&Q#&-QMSk!qLJh -z^F=_Y2bxJVS1bx?r$;`+P!E+MHHEFM%uc*3krmk(+ghYVnaPs8;3^*gPEpRZs+F%Z -z6pQd#n0tL}E0&ClP>@EHDyXV({KlM&ZnuAObJAw#dXxi-;aV`8|Gx+L -z$AA&(K4rH`xn8%|18p}(4e%;F38tSHE0~;j`s&>JD3rE!l%~_k<5<7dDXVSX7 -zq1r$csn`rI@n8#*5)<-snGg2w$5QM30`p^loiEO0Saay6;C6=zF%KkO%y4I5l>hWPXGg**R -zEe380SwgyTTDw3kgZFhF;dh%ftha;@$9zn}Q_uiYcNIo3M-3-RA@nP*N7qEw#a1>y -zhs}9@Yp}OnCUomvTk8X`4rlK(3yn)xHAX5{wz&vSHxXY(oAhV3rh|L+DFH^VQZZ&MWB84J-zS>#n;YGQ#rR5aEwH(COuUq -zDFU`>_`DDB(Y@odaJ`4x^Z2C-RYgruX}fUT!N{MzeIgtp+3da^cW|7m2IS{5R% -z5OA5(p*OPE$RI0SYXwtu$XN2MJT@8^TmQmQ%%A}iq7^V;C5seai+U -zM?e7aU&*NDwZthrwySp}WOsQ_QtMcD7zfUK$P(LSx|O{St#r72#BY!(4YjwSTW8zY -z*rGGuMub@3bs(4{IWN(})P)y7lLZr#U8O*udxZa9Y$ -zQbt^6GjvrUY3(YP=i@eAt`@UBFa5r2sS?N~0_CMQd)NdCY49X<7mW&~4W+vi;>KJX -zX7zNLl7%8^My6_pwm-3nV{$Eq8f596z^NNFwcdau4d0J&B`#O4)7~u;dz555ShUO& -zB55X9j-6s-sowpf=x1Z=0M-%$eQoRM*{xubEs2dzvO2jKwW~y; -zT-T!j)D%)HW+e&=QE2HP-X|szi`T{iN9d$Us;$N(`gf1@u~RgM3`>NgDK*ze@PB1; -z+6HX!4YKEgw}}Am&J1h`XmGi0!ZcV;Ox*B){fdMC3RPW)J;M~Jd)fx;DR&)`kmTwi -zOxOlN`vOMctYnkTNSc{8g;5HuYH|}NoTHb!99RW<1C4qTnl-@3W=NE<=7re{@)2f% -z->v2x6&x^PS(GDI5G;JxD$Cl@b_H*1?qXD#fy^Jt#=J!Q4&}LVG_rZ!{(VHR`Z~4F -z6Uq%6@Od -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 -z({aC^^IJ;5!j?5)mld|b#HbbtOJOw)M8T#v -z+ttDm9Mq0D%aIvIGRyH7%<`iF3$m-iv3c4|O7FEC%^A#2UkKMqqZbwtAGSv;@MH`~ -zbFAD+D3S{hBp&v7+c{%ESWzQN8epi|OpqGewNe7-O1Ieh%F%N*)I(Ajf*v1!`ncE& -z6~*J&l!qQs+s!N3?dFFJr6=}C(ui1tA$PBI2l44HLzjBGxusL{RMwo*+>mAu#v^YA -zZBb?F{K;FP%>l;f_GJzm8%K48_uG^}vj>@?LBX6!Y?R47_d)7~TqMCefQ1+|8-uux -zcqx%oP|}9bXlI-tH(Z(=K3XylHi}AyS%%bC@&mdu;9G?fQ9GA4Y8_NS#&F+djziA% -z#`IQdq!7`nI~#Kwb?N2xI%6TXVLjT!z;{F@x8Eh?bjvbYWKRLdsAv2L!vD-EmXmv? -zM_nZLD%X1>?M!)Pp^*rBrX#ZLED$DtLq>~pIMEjbdxeeMx>=M2e`r=ovb94j}2jAVl@q#GuE*A!F=EgnwTJv^w&_pBkX19#~BppaAI_r_QpkmoF^*e^`e=5 -zFD4sBR<@Mat~1H->PnDqBAdq6I}fGEzP}!eBqCc!?w4XC)TAgn@ju*D(}ksVoZFz9 -zHh@y&8io&Rfz-9|qJ^+&IxeN88xF-hs6ev>|CQrQ_JL0H%?Lu+sFSb+#(o#?hw3Vn -z7)a>a8ByasO>;&j3~!Foj2mX8Sw9lltzlMjQr(^=V9W7l)_#MPYZGqSgfA`cJS|f2 -z^fkWiF&9#@Jp1aj41lB^fcLFjgMB1Xk%i%%tAQ=gl(Fn{r}aDkjFNJ&7q|K1rUTmZkBWoQ*oBq|=wO>xM44a8CF{ -zX&4Z+t<4gfaA9`xtniCgQ4#CpC#*UA{tcyCdwC$`1N-f3JTb58zj0~dgM6~RnF0?)>G -zKyA=LHs^r0b5kBk*X|$X&9!W)ruuNI2oO7QZ}(}FZ4o~dB1vzS3B!+=2+u(YKH9QHKgK2;^2I@rWtQYqq4$QgJG_EM&=UF2hWBv;;E*BTgF`AAP4b8p1(uJs2P! -z1FALsy9#z2Flr;0$Ep^Uv|TeoJfv!m3HNXiw(`qv#Sv;oB7}*z -z4qVd3WaS?MCW3*2W7`$vjk*E?;CIq&&3P?|&!H`9?LeM`N;#ZbuQPjG6XYr@Pv>sHk+p(f43EDBV=u=nfA#h?VpcK1a6yMa=rAgc(? -zS)~!?carvjQbQi4x_m -zou7zRJ~Si58m9YV7F>Xm2BO#@p$*-XWDj-CfK@c5<8Z-!K&zS0#yE1p?R)%IS72Lr -zOs2L@5W!P2hG41aK(v@Vuy!FS8v@02u`q01{R&&b -zkRjpEbD6`Gq^*2;V-*>v4%5Sm=Ov?IZ>1V_bA&a@9KmD_i)$^T1Z5VzW?s|CEoA;g -z>+Nrqg}CCVrr@`vjpJ`u*D6Db9DFpw-NV3TGR -z24igx%B)}#!^B3^9nZ6eV?pbRYzH=x7&fhil#P>6drL8oRMjEbguO;yo-T(WR<$tM -z8F+ubR~vc|D^D{aaU}N`yLxN329#oZ%qbAVT$bS45bsdN -z<=Is-CV`V^RzEaw0CPd0eD_SkW?RzjbWir6&w&@(zkm%YS9ol@_m&%}&U8)KNS|f- -zOscL#tD$(mBw1IE{s@eQdEvDqD7`>VJMh`HX!U{CUj}N&MV)mWXZaDNP&PsW4tNcK -zv? -z=ACwQngi>#+H5l{_!+l5b#I;NO;Y=C`+8l3t37t@mN@GkL6J5fg3S9g3tPsn5uA$q -z#{hJ(tu=x)dK&^A_Bs?$qQS7;O0c?ujYmlZso;jzCE+r5S3y2>M#H)wE2yRY)fy8G -zc-6sXI^>T7%~R3_*3*}BQ#X?E*shiWEn~;&2QJ~4Y%xygK3Yo=fjNPr$I0!?YHc<} -z&)%<90}X-@c#@qjMhMDF5M1(IT&)TMUy!>Qw+hAfmZKIvV<@=2rI$w^f4!+^(gg6mmwE$ -zYEb1+gD3}Nmu`gi)!HDL%SWWi)lZI|kK`z}PSMsl%*o|vkOGI~gOsLmCL=FSEVrP{ -z1^Tw8?bG+Y0{E@zHd_9$SxSwGbv+_B20YRnk%?tP2f~)hMZunY2yTokoRIo*DLdU; -zQLR&?DkFL>E)~Cewj8!Tqswdhps6DGWl3J@#DF0-9#U5Xm7ndrD*#shOwZ(>)L8G7 -zH8IFKK-G?Ys0cPeL?tj=ZX2O3^8U1dLA+3Fe%kfURbeiBs(bFqx<)56G5tu^C9;zG -z*oxvh6oa?y3o5xrnggDdcMlw)$6%VqGZ&EYs|En}sMe3{VMS-9-WBBxdb>aQj2oNW -z$4N=uQ0#1;d(hz6XR+iAL;HH!nt6lRWS}#*H>i7#wU<8JZSA-LQ^7nOQ(G`c5{<}Z -z>nJK(AxvjZ;!#W9!*&4NIYV;BJ=^>+EIPj>qbPHYimuvhLzW(jXIQo*5UCKuMPaxt -zgh>XkZf7_zFLQ+7zU^qj45T(ojI=NLk)D0#N|%C$xo*`0YdQM7%B}?O9MXAdk#D`~2` -z#g}WO+6y(N++UMKfXzo4{hl&||o -z>=MLhbY_ -zsmPZ3&TNvI_+Iv>1|m>XM-_Aseu%lmn5e??g)f%#|h|# -z4`-uyme5IH3-PoPWN*k;D4Egl{v0tNSzklnb-9%kTj?M!b;!`8D^tGRAz6`S;J7)` -z=Arb|CCtpkF_R-zm9@u!<)JlC(x1`{oQMrAQ5!$8-C|NtRKYaC2j34Bl(ATOv`Zzn -znqJJPph2Ux_0R~^J^Pg;RiRJ<#5-UJ2ppA5NSU;kYPBI}Z%{_h(ki}jZAj73XahX6 -zcAN{=X7VK(l}4lCe&aeVa`H)*NP&vihC=NHVs`FH;A~6<@=q5;?a;~!US=}bvEX3= -zP+=Osy^8dp9PmVMSRNxXw;T@`n=l%2FGgMb1R^I&IW|?O8?)i2u}X~qFDjM$4VTc8!ABt@^DD%l$i9&LyJcz*Rb~Xgf -z$@D#X3#ryfnbKZMK{W?`x{;8d=U{h$`{%x5f{hWmyztAmM#J)KP~v7|0NgRgY+?g& -z%u2`+6ksN0{xrf?n`uF)I;Ql{2ElBG)y>ypogo(=~@O68(5h^^JVV5 -z2D@!wJ;fW8eR%N2AJw=bmL%eih*j@>T)K^X6BcQ=w*`h -z&b3I|8ua88nrxf%Ix}2cfxfGVy2aUZB%}iffMunR?>#~oHfWOa{A`>&H^x$~DqA;0 -zUYWz@nCn^$R!o5isM(UqTDxXO(hp+D0k@cp!MO9#GVrD%)3 -z>rS(@H=fo5u`F%_6;g-<<;*AUmxR6$McCx}h&ZC}SxB3M*hYvpBd(9n)(#;FWHYEp -z_NCA8J!TEJaEU`Q&>%YMOQU)SF#7y9ezW7*h)v$+XaHL|`)5DM675t>4t!dgJ-{5a -z8Tu&IV$ST%@?o`{H?)}`MCQe5OZ$2=^H1A4*0QiA3KManb?exzXVV-lAkG;>*fc~L -ziD*&rDfsMhCkBxdAA^)cVig-ld?dMmDAWv00y5UoM0rr3F4H8z2B=&V$G0V8wz7fw -zWT)Ck)R~o~asi>N)_N5WfUM^K&U^pr18q_ZoT`^=|daT2|DT}#l8BIHKW -z`CeQnctSSlXxCK;{$QjQNrzvhwgbDdZK7AY#9iC9Dlh_hw4{3jotpu{+jbQf99sKN -zrKzRUY_w}MvB}lbDDXrs7PD_Q#+rYe&kuLwyUqy?Ci$c?&6;|`m{yynfr4wCMAcl5 -zvKbMOO6z2-Lbpax$Deyb%aBXH+sZexj5-Z30RueY8x`yb8}ccg6riO+Bf(-vw-!6 -zhT4RZFgz>TPNJukr8WX7_mEO7MQ;-B5Uxv7HZG*a@zz)e0JF`fJxg3qWZi&4!^yYG -z8l8HAodT_o^1L}alN*%U4qTEv+0vuZ3dag8Ptvgi1;+9;EM<}J;pK6t&E;RAP|em0 -zkP@&&{fr*5^-%O-ijCOSFv5er82gMpi%Qa5_%(x)d -zO^~3iGj?=+ARaTp@B9F-Lu?VKi7ep?yYK~9qJH2BvjOF-q`pD4XzN1$pyTP0RXZ>z -zA}<>DZttS&{PNU53GMNDmywbobH7FsCU6;R!zeOd@I)YTZ@iM14U)WAW=2Zgv5Z8N -zsnuo~Y(+^G9lAf0C5s&Wa*vudY+>PcTB1mreQ*IASX0*-4M -zr*EglWHd61mWG}eSx`9ZvqfS9tVO3)`s7~kvv7=#+9vG!y0&aFw0?!yp7Y+uxzN5c -ziL8$i*F5QJl8~-&F>^9jIzG*BbRw$)D<4rz6ZGOEr`o3?x>lzy%i9_D2&E|WEGQ+# -z(o>=`&NR;IKpdT%dApUWq5V -zQGt+lFEWRiaQW+jBW!Nl^wU{c#X_TlYaVBg*m>xI7|@-dLNYNAcVfSAwe7RE!dUHc -zTEZlay?#=KZ#Q$uup1+Fle73*SYA7Btu%lXeE|YaX)udwu*PL%i$uan4w?re8Re*t -zE{C4XzhsX#IyR>KygQAwJZ*dv5J|^Jb%WU?9=RHnyi4&%rBY0r*&!PY0))P-UtNMf -zft`1F(m{$JkI!<-_^j(Ygb}%myj_f0(~PRwDs^m1pJbMx{R97}v5=IcU0Cirhs%Hw -z#HJN}jO7RnQ(0lNd|?s^iKx#eWS=ep(VTC%q+3ZIr1w<&c89d)$!0-{<3R0VBfn(+ -z!>k)REJD+8iNUFCR6g=>W0KZaJYl!*nJUprci*U;aVNJ@f)vWR -zPSC?J?`W?NQt8m6YN#S&CCN;>u5?R8D!@<41}JFqNatM@+VUjESX{+m -zstLpMsQR2UCmD_^`YIcGFK}H>5tIOKxx+Vjk1R`?oj?*HSi(9u6c#OMO6hH;Qq#qb -zD2bjQ5&97G29xL(Yr;h;?3SyV9Ty=S0}p_s9d@{$>dhkiGg`efne~|iN$dtBh?71D -z*_&vZNJ0XZj;6RelAZ67oTId$&dRzQf-e;k{W;^Ll=UKesyKwu0aW}C3 -zlpu>zvuHnNyxnKh6 -zl7cn+yk}l&MlbnW4M(EdDO;Z>K%#77$_=KPdg-{ -z6>bM74V*guVRq0r?JnrJ#71tRprfpLm|21v*plS_*zO`ht>4fmwoY>a*pHt0iT4Dq -zkM~R!w&+7rfo0PI$SeLJcUxWE-uO+hFLaJ_|1o2jtHx5>D$|x0#LEh(%4(ms3)P6e -zvcB6SN#&^PJQ?`R3)2QI(#TjhMddQ>(8P!?36@xudkQCdk7Z(fKBAQ+NnDdjQZ0LQ -z12PC*6K;?Lf{A#OXW!>9xQHuEQ;QaNU^HyK%%w=1i+u((ISL6lPVEs^WrvO9V*`#N -zw<#TH_vo1@aFn%;PK5{`xJ{x^m4KPHG{AOH3#Cjd8A#G#~ZALdiiybI=1hEZ~^J(J*rH83VnA3t^sm -zq&DjS-4DWjmFxmi<=F_tLE}+?)RhIq+WP8fj+REshOYfM2L5i}pIHbjLrYGipa}@= -zxj2#*<4|Rbee9_013_J4foy5t&9ec8u+;z(MGti(Dme8$4DK<`u|@X>SLdN$ -z3?%YG97Fd}c(r^r1S=S14n14>s&mc}ATx01u6*+1=_#4EV!T_mxwp=l*oHS1tJ-Y# -z65BYQq1p<~*an6P&xTpA>$!#)z*kL?+b3*HM|<>bV6_4 -z8c}GlQ3CXF_2fe>2h!!xT3yonWN2ixjcTd@YZ-DxTG!18blNdOPd4ohI1oL^z5vOi -zTQJ)z7JmA}_@2x1Hd2%zp%xuEq)w(>kp}jP;T^dUTCDfVmdYgvYh;Y^ZwJ){KXIpG -zOI^B{FC=&u0;$qtm*#zw8*d#oAgn|F)+P_^xPfc|QGa=6gvDq#k85?X4L#_w$s -zVn7k9SGOC_K|s57bH$p77N163w?>$Y{^ke%NO1CB{UHnsGBiH4X0OYye+ELJ;M*+y -z`sQ}77fW?}f4|W4n}-Gcifos!?IHA$_2JjMwyl~!yuMcOJ(4|YKJcop`PXX%9+_?b -zs@hdQ-F&@R{$Bg_&FXG__wHZ4=exeAfxY{;|Mq&DS3j-4{z;S6S%r{NOHfUj`X^Ex+2T+r^)W?#qZVS*S{^o5R7a2+cd6IW%x^Y$r4T( -ztHi}}ez(x+dL1wC7W4J$ORB`>?ec+CVsLL(jBF~@UDWMS)}rtyR|nTy{?i=z6aL

DdEFu1k -z1GxG@Oom4=rV9T>7YRR}LOo@L#U=3Dp*4r+ZQhenjuT)f@)+*c -z?%w=qiT`qYcXuJM*Y_w{BGboxZuww1?EB1itUw7P|9)7=?cp^uO&31yvKc3-yNmM3 -z$*Qyuv*bbCuJ~h9UTrvNNS2>)sNeD>_gzkoH_rm!=;nb(d~2_9bHnd%qxj&8MhWJ9 -zejj_}?7Ca?%WxlTZXREPXYye7^{0|7|4^r;rP8$)537Tk;^*d~ecFWMWhd -zL)$sEgmEyK=o_;$ZHdA9BcJ9+b0+?sh*C6@F|FW%Z$#!*|GmLtO% -zlSpQW`iC8vXJ38&BeyEZbx_q+X0Gd>k|i<;_$1)J3j+S_1p)ujubk}TAq<(|AJCGW -zq#ovkJM7z^JQX?4ttGuM5_9NlyE0yemGLsHjF(_#y!e&z60VGwU}e1U%6RcBljjjF<7scsW@aFTu)qaVz76SH_F1jF(|$yvWLUIawJm -zyfR*RWxTkR@nToTOSm##!jj5;^KS5@? -z{wkBrF<7>=?AW)eEN1$eBzOgsva5N(q9ACG_!gq3FURBxkSJ&K#;j#Itz{jti731A-TH8jJ6YCEJI6OYVD -z=P{4VKkZ^@9!=8y(TjK``Qv~4<1{<`1Lq8X_4SWpPRst$uimkWv_EF)w_pD#Ar1MX -zU;P7Teg5j*SpU&+S4?w& -zBY6LB=*vGOCGz|9QfD%2N8}W?GbuEx|A2p`mqfGrOMdBpV@&&_U;V+mK#605!7UW4 -z`u)FoFV_P%?H|1JZ|4eqK?|Dr^uq^wYsE}t;oXT^rz3yN)IfBd-SQ7-+$q=_Q_&C~KD4G9MDVf%ii!w-;T)|$W%E-G -z`WuY!=TIA`d13_@H!`V9!)z(zY%#S;mPx$UHxKdsU3wpX$!xLp90|Ga&qiRAX)h&R -zTKfQLi(h@)Tv?R}u-$ZhwZ_>?jmCn^F -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 -zJFV7@>FPwg6F -zfaCFa6&yk@a-(b1ZjH|)F92b?TAddzqRHJxUv0B?*Tq+vIT7k*dcR7OWR={`*YVw# -z%__f}3(Pzo06+HWmy%Tb$LKx$c^L>di`)D8{O)xW`sC?958S_5K9J^KT+W|(V`gRQ -z|3bG-g_dq70Q5rLEE1JGr0M2Xt-feap!Iydw56h^e2@NEI(=^&eW7@C7}6JR3ig-z -z-~RD;rT)A9-~CNC|DWgm@%C{1dHFZ%O!dn@ZT@QUmw)#BN9kX09{>1H|NPG$kH_c# -zaNK?K%RlXx>nu6^&E22W=nN7jIUvI77z{t4j^Y#wM&xuO4?$M@>XrXJldQJ8vif8l-@e;3*r*Vj#bxQe^J(Rr?<5AC&0^*K51 -z+n;PT4Khoxy6gcpHwd4doR8kDt?R)Wq<@}F4PWBy?%%$4_~}gVTQke*eb+J(>4_n? -zxJ|T9JStfX^`cPp07enf)KR -z$Qy?Lg)=|J^ndlmS&po1PquBDT@@#G(`LQ6Tc_*zM#T?gu6|kT{C*9nH@LU=zk=_s -zZQ!x1y2_aGQ(YdmbvVpsqcwL^ZcN@`U7WPeO>ZCKWlA!8cb~3r)R#^7yuV@3X#MY=9iGPG`b$`XzFE`6CymW719iI;1GhOYo -z@qfQ{_tDF|vGOjS`zdShjk&i)$Xay=l{IIpZ*`kI#H)3(xWy7&-+bBk@_u>_GUF-J-m|e9X#@9 -zy}JiQ1|A-6F6*lAdDZ*Xda+vGu3jOCyZCx+1v=@*IwMu^{!c)JbW+~CxWA2Qce`E8 -z)oT8QH-HBY#0>ZU#x5>NO}k?1nn$$-x6ySC3T2}MXrf0pPb -zgbY=Z@6llSqgVd1RH?l3a>LY%Z<}W@)IZ%a{xwFT&aV6t-uNUh;FVid{J#&)=0p0S -z)+ho5CBw;`g3G>~-!+KPd>WMcy)PG}e@LpvMbUoi;$y15PgP&@`C@&0d$)Rpv+;r? -zo|}c;GxMLF66)T>DcLdPjIH$jmsR68_dp}wyBmKmWpa1BAnOeUkfcfGH?OeLoIjc~ -zg=qp&IF*&jPG2ary}7+rcY3jWpsPQuzbtVRJ^qqS;S4I&WD<>FHhe2ZO*=d#y(c(o3<)@RprW-A)JtjF7B5%w|8p3zE?MD -z{zZ+!+lMs-Ykd39cen1AtDA?#%`0q7ClB}OzV*jW{3Or%BNutYufA~Rr+C$`zDs%4 -z^de?lDZ;IXKs<0l?X@DWTF3F7TF-B99@Lk8-AtW#K7`LF_ma%OyT#>N?+Xw4S@d4Z -zo8|rb;om^LuhQKK1HnF#1lDq!f*8m7f1}fnD^KV=krp{!B(|Bsr5e>${t~`?cOAakBoBGkH%I0XFUN{ryCqB4{U@+R3OtFE97g&%Tga -zd-3E?&y)T1(}z}OUtNnGcTLv8b@Abtm8m&?*pSRLA4*ex*!5{0lG1#?d#HH(A&1NeKpWJ*UjETHKmU(2+r})Y)3QI1U@*<)?9cz|Z)c09wO=R9 -zT|NA=wBP6E7=FF7U#r+0^oCQdF5E+k#N@1jNt=G$seFSe_`SEq>(dVSgCB=eof77>K -zKg^fQ)x&zd_>JG19{T3~VLg9^TIh$o_1%0$Z~AUNf5o}^0dIYKyIkGf&gT!GCgCTa -z!!!cq8IaDSwG3*R<)wSGd!lm15>bqVuGSE~(DA@A-ti1vO_ -zzvq6zSsLF+&y2s%be_gpom%ytr`l1oUB_LS<^c8EEN@Pk0>TF9qto7f&SjRbU*_Wm -z?n#;a`PrYopMJ`%U$X-~_1p_q!1&bBr$BH{zyE}e2yCuxXq!8?#^&>zn{=5bi-*NB -z-Q0c2G=keXS)wFcqq~1TrnI_W-#;wL>b|(r$B*_|e)|0W?qR-IefbM7){FV=;`Zk9 -zX7K$lyjqauOpfj=XwN_4!gu61tZ&w@(D{G=3$Jf!dwQVRxU8nX|AlWB^VKanu3a`W -zzW;^qZtw4CHrA`l+v)ee@cr_BiTah*W#{bsU-)*hzFpqZl|T8ypP>jxCyzd{MoLV{ -zWFNl`M1{BW`&)#-KbxoUETVnCSS;tHaOP{YKDfNtRGx2g{lpN|MHjf6J*txs!tMOw -zW;tJ_x69@F?(R!=t)we+=E*m>>yV~}Psmje>W@>Ty>(a}O`ASQLV(~2K>`GK5AN>4 -zg1ZHRySoN=cXto&5P~}gw}ZR8%Qnfo-^@3^+1;6I|9QH*svf(ayZSokboHqM(31>}AeS4GC+VB}a9qVpF=|Phw&mz&&owDa`i1yPQ>oLHuCorAo?UT&Y -zmgVyvwnuV8LUC0T90LKLNQMbRshWIe|70tRx36mPmMTUPp`etL`6*jpt?3E9d%mNl -z!M)0+dB#EYNwZ`%;J -zmh9=aEvfD;iJs&A-5!^o4)Y61VOQU)T*;1IM`NatjW$u-+PKI-DoXY*C%Dl{RnLP= -z7>%k!#`)hpC+D;>B~hG-N_|L-+cV%Xu(?xBvqz+ID^4OO3HMeqer7uP;)j@EfY|4B%T<5MVPn2nMa^u>;r5(Fh1L>u_UPF5is -zJ{u)Wm;_FUgaa*({9RmM@E3hylB#SJsBDxti{R8kAuWaM%0i(6KsERa6G~j)Ujs#j -zLfd~doA4=R@hL$;g+hRzoyoINkernsh$f1wYU6p7Tx_$Ee@;{+hZJf6z5r;*dssz6s;?lft0J -z$wZJ7KDVFQx$sT<4Sa=deBAe?MN7-@xPxp5?;59+FzK`35zaJkvF%bw9bdQELAbPI -z52=ojW$^}%agJY%FI3lOpqBmOHiNLOz{ -z&uPt-+Jh!|$DJNy%B_VByINBpZw*_XS&uibg6*#IA5V%L^OExAMXz~GGkn5Y>7C>E -z;N3hNQ>FwFey?xvbC*sfOm$pek98D4-e~E+0d8L@mo%Cu9`>G&ob8g1)-DC~kC&=8 -z9mX-SGh_pohFp6$`gidrZEmw&to`6`wN5wDn$i}Q=*WpYZB(O}PGnb_OKS75%QSFu -z&Cd`~B$e#!JHfF}0djaLa~9Ae;|G~^xa0A5vj_*tp_E}J)D=>~(^;kl#2B|;W`~0s -z$*Y^2+%Vc26N9-kX|;DT(!4|krNihlf>e4Bgz@_UQ-_qA1=r`@!^0Sx{yv`=={Bv7 -zk4b*7h -z8xyzU9!K<}uA*-|wgPy(U=8Uycb>0kU$!5n{5Hd{7v>$T8-|aa%bzIT|P7oBo&k$=hS+qaySeJVAh2Gvop|!?Y%3Kcg -zN>`OJ^Lku%vJ}YZFL=0pbiiHWIvdZW85#L`Bg`lmBUD>!26weUDA*|k655#dgFze_ -zDlM@c>s$#*a*OeXs8P6`0@i6|XiTz824ic{=`^}t@5x9stK}}ZI)y&ceypT0er9&& -zk*JW&lh~5H=Aaj*fS*Y2w>mYhJxXQk{P9lc%f?H8Ad+sd?EYSB)w -z+f+Nc -zkI%#qgeS;qCguEGIUp>VrqsB%IiWXG+~hV??r#9pLVDC-|L`)DiAa#hZC(mVmZ+W;pGjWhziEqYD=&la`tn$ZF6~VTWtVu^+Vb -z?afVGg9NfjgaotmkehPl53Cxv-;3e&7ufdVqOo_@2`X6qxJa>G-hm8f>x)Hgm7GK? -z4^EOwrg{*oC@|kO;IwfQr`1m^4m4#dNrn#%0@ySzZGFNKamo~V9{*0 -zJ@#o|jMj`lL5LBWT-7vkx>vytq(Y`_0Hc3e+m;cR&q!?HYW-Ty*eIA~s)pE_!X=o2 -zjT0WZA;EiU=s{E?QQJut-cq~%KKg5o{bwY#gbShKxnw=7PZU-8IXIQq>ovazs-@eb -z-{uoW+{_(3E}DA8&+X{i&HvCg;$S@5JEXlqn(U!(oui7Xz(_ugpOhL<#vT<|WX7Dg -z|B*nPwRF?jiHD-Nn~0uA(W=2hX&GUcI7N$NXC-{c4=;s{zFH@5pImfSJg%a15tjB@ -zR{XHi{`c3esw;6T2Rp>VhM^KMIq4Ky8IxM$!`fjUiCs@+HJ6k~EmERi#VfK$-MKDg -zQ=COh;+N9J*D!Les&0AXXU2Euxwe?I$E-NZoZUtyV~h(AH!9~7 -z1mQHMi`*x!LA)nC(GL`f6#aGWJ!++3Bk#|>|M7=3mUpWL<(v0Q%VXU$~KlBTMNNu|0m -zQ%rM)_Ix+mew)GT=I1sTQ;xY>w|2$ZZ(I~TXs<*z#pV&y(n8kO6!a$hWS$-rv=t#@ -z`wq(X9U>v7YEUZ=gr{V@LWq<@{Ft!OXpWdXnf=2G*OPlpzU5Bd$oJ8 -zYVlOlk~E4=9~Mi;*`_5zci0)l(ihCQ+`D`J{FIXMIDD`DuofYW6})Uz>oHq8VVARZ -zyEUkEytv5Ka<6>++!}0JoAbPK)P|C!d;u)-v;iGb=atbI%M84>ik^w9shG3fJ8Bv$ -zJ3}k3z?+T)7lxR6%*mL4jbZ26Otpz?8yGj;2+W~O9GdK{u3O8IAU0-SXD=F#F*b}t -z;jCGP11+zA*Ns>38E32v`nqR*%76!J -zjidxT+OqTHE8t`9E*A02dpw6s;Lmz=bJA!kGFZ8OIPqSb6FMGCYD?FhYE@34y}45S -zO{cva&2yj0TDKx^ZtR$+YK&CFsGlp@(%iw%IFmux|O8MyxTC#Yl0f7>l{g5{D)a_|y^RY$H5p8PSpUO0Tw9 -zO2RgCA|f!T$RK6?eC@C!qqsQuU_Ynm+^)3p=u(3O`MQ2TmzSltLKwUwho7?Bbm$@`-GG65v|72#PwLf)ZUhbN3(~@GPQC@_v5kq -zI8M191T3==A)MlP_Z*}$MNvA7=});OkB!q_dH)nvPv9wyt-}Mu=ZVOhe# -z0!QQ2e#x1k=CefF_VU%@ZcO -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 -zb{i;lj`i)gDGnTXWwHP?$n>y98YGS9P -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 -zB_ohPe*S>+zK-fQ -z!t9;lFCCN5nBJq&kAv7r?Qfe5d8$Vg)3`n*t1s{*>fawA;WRdxVMjxi4ycEiP)#`a -zqx#gmdPj!b^2nLC?GOHL3XY6q$1hXB#1c>&f^9bPm&mV~+ZkYm?Y=J7{rTk;cP)!r -zBNS;rchN04@;7%Zrlr;cF?Yu71r)d4G^)}<)}wuK*AoIQXx3C+em-|2onrgT6?BSD -zRBauR)vHnW{h#+esQGvfRzU?Zi*pnw7J0Jzda4K_5X^?fgT|CHV=yh*pgN@5Dh)$r -zili>gGHfS;4ZWzE;V$2e96qL*-()6Ia^Em}x~p+$2QLao(!?AdLbM=o&1*8`9(HQ&|>%+(Q!xR+jm@sW^w-RqC;Hx -zEN}5$lF@_9YS^%)?JxS}^Y$dFyP~SePM)*RO@?wluu>&6L4GJtH*iq#FcCB6~zDfoC8lPE+~n_b?&IF&4!_hs+zQ1l4aa35iGw -zZLwYIn%O$>^&Q3xl&{UW$u#K^I|V%BBc2k>oB>?&^Jn3(l;Zw6Kc? -z;BiLJSoek}{a2z}oEln8_mK_O!XCbkl{Tm(Fa513g|Tk&wWQ3bjBqU~XKNU@e7^y6 -z(05=*u1vXT?Gs@2A(!gZ#zK@im9xTDao?kah<;+~@A6^l-_M%62uGFJiC2DX8V#SZ -z_41GO*aNOU(T{GdcWgXn${^o|qf3NgTiae&Avy~38TF+?+?)u=EHaruSFa5GY~??W -zi#Y#Kw^nBxAXAI#Tts}S}`W_+1YevTf`BU2{27Y -zM?V;YpBG{4I&=OWv1-t{eLsUwq9QQOkTqW*%?>=g_l~*i+l_qq2Owh5=6Q -zDDHA!aUkkzb9*OMo;q|->tga@MAO7#I4+(M_egY1q`^X5?y-%jvPJdq+E(!UP5-C5 -z1*osSNuy`Z(1({``a -zn5`2cYlSTR#!*~2fqnM>48-pBJoKpbrbnr0;LGD`aW?F{Lb(!wRa;l_1fM@EN3FG

qK{~% -z;ip$<$ocO!*FW8&V)`8j1W6{k#2d6oa1G-dOZ$ouTbfe#alw8_%Al=yn~ie^o|eo~ -z->V-O>Y -z1|8LspNLW0PPW5Y_*UQN(1mBikv{#wxMf^krheE3=}6Tky^l51GK{i@HHZgya1@Cw -zO+KH!4z5_u=fz4Oyut%1=*RaBMqKoPm-G2hP8Or!a2aA9!3LcXVLEdDrLW&R%vW4} -z33(P!N85$KR<3t|f<;qpx#wRr7(eRA)KN@}gAD_3_2FiYM9M?A2Nt}pgx#U@uqrjJ -z`t8zf5KZk6&fJBgnrxReE4@TIN~x4OJ5(1~#j31+$RwGl4g&)3IusBWMMBC-%9u5D -zCjD45LBwrmz1)Z7pK3Z__~7#M -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 -z(1$Ro+SQ -zCLEc<&x~{Bz1*xO9IGB4bgTgH%<89OKfW-9NH=_po=Gcf!Fd!;99iyMGpDdcjoZcA -z_;ps_;-DK$h>OT<+TjnqoCEpwM#OxQX#Pl$U(cYtbWn9ONvC1X;i-q#3J+|S6h&b5ZVb{&7Q?Pu -zcdQZL8TTh@Sd2dp%&qK!EeV>QB-|lk$4@t2&F%{D91jMJ(|EcBvwiM26C6G~={FSX -z!(jaG3KwUVA#O!E9XhypyDaaw4B4d2cLDD{>GzLzNINx_!@3-e< -zg`&3%H-}lBggY@2?%68sgak`^ndA=58b;iw@1m)ef_X-BS$+{>@HM -zFcC%zhT8yjdIRR74bJ!gkzDcAGG$g*(*E_&{9clUT+8*bkX?iOEE!#{(5mbJ0UH7@ -zEUm`Pj*4P$X6Jf2u`JjY$S-PM$zCv(plB^?n5)fYXfN|k@3%6GY96igH8WA2f|l7v -z4H-tR525Of-h;XsZ*+@np%7(`<8-Rg+P4j1xW*{`7T_XHY)mWt#2{P>FTr1{uZE+_qA-aw$e;7ITdq$ -z2-nDU3wXV*5`IE%Ztm;gOVy_d!$!;!R{rYUSq#gjj(}TTCa&UXWun&nIBTK|J4u$= -zTIb%0pdf2De{)}u87>i{IZLXp1>5U|JY}-j?Gq~Pav#Dq5RVb-fLrBis`9vSqJEM~<)@Wyu`-+~U8TS~5{87W)UK7g(A;DsyMo|u3LLs-n!GbhiY%^W1YI&Q#C#J7j -zzb30q118>_F{+RJBw^yCm~0euNqmj`1NP0 -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 -z%F5X%(zM=?{$3lljbioL$+JMxgfTs`- -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 -z7XY(5Es7{Jm&dQwp%#ni> -z({c0(Rv>XbIjnh3b|(oH{DfVwrC3G#35@+Ka>9;PLmm?84;VZ>LPd{v$*~^K~s|2W1o2&53*NnW_gRM6f`i!ig;Cu(*jq$XD{Jiew -z@U@xO1*TsG(CjS+2p!#oZ|ts2rusWj>5C2)7;}vV_*<)naUT|Nj^hr>Np%9};Lsm% -zzk$`1FZr$N@R736=XV&WXLHHNZQ7ae^U=cCnZ!eaYPg__VGD>V2!Oc9smP5-WzzcT -zt{Q^*Fd`Nb4XXov?-g}YXnfMumw@r^Tv$YZ2^O)96Tl%Jmv`oACJ^+0i6dMnP&}+ -z#{w4L89ZjqUmUNmAbUqa?#3);XBNM&;CEj^@{WS)P3ey*(*Lx;Vl@24-@*P*SM27| -zrrRP}{iKh)67momvyIFC#qNQ#gfonoKXn-tol%D9LxTQkgVQa6UdZF=Kqiklr*_I~ -zCuLR`o2Ax>5V2fNZSz|1AA{FfTe~pp;`5_I%5m*@;EIcF>3cJci@T;bwC0GQGs@7u -z3m%0|FgOF6TTV#^xGe7zbH1zVLWF^Q2~BKz1|@#Z9Oet^c0*1i5cC*Jv*-Ek=pdcu -zIDvli0gImPimUKMb(J0>CJDj8W8YScbS|}4vgx*Bwi;h{ug!qlgQC~8`Hjp#XE*M7 -zCwyX68C|O`q_;2cIAex20N#r6IN6;^VX3ZOa -zTwm-P4jy-KJ6_`G3iSFS7zRx=QE!-Jd8fc3fN{|~CF`M(r@G*QrxxI+R<4X(7&sRv -z-n1pJVYk-AvF({6JOH>IdqB8Ev_QD67XM%z1$QcqL^Fkn@8XH6J7Mxk>D+fi9`Y_^ -zTPY=xlJHzliPxo(4vL(BVSy1=sfejP(f$6MxD_Q0F!b#hK4qyw8AzH8fVvWEaj;(6N9b^%zC}n -zkHI?Rm}H*t0rJwYcI|^%hJ)!0tvd1XdRzABO3ol3!^R&hS`*QORPD643=6c%!ZxCq -zQ-r<>5dR8z`|yZXtchUQ(Lw~J@1{Q#8p~kM^#cmVrIB2fz*dYe@wJf`)-l@JDLW#d -zpd8k2+mqGP{J}d-U6!!~&gS=-br&)P#t*(r6}AT4x^|I=2rj%WiPL)9fAA(A<$N@& -z`A1iXRI*mmrMii;F;jj8SRXPF@8#uEz?&S{m*`McmCwrB|K=6s9OV2sz?q2F5X*_w -zpoL*zdS)Xj*2SVC}t%a@4 -z;a_0|cKX3X1MnMu>N&{Ke=r5Tci7aP!|R0g{SV*m^SA4x4++PIF)%BpK0sEbh$t92 -zTi{>dU(;yc+~R^zkn})wKt6oi>oHs{1pv;x-tHfKiN|~f3}5RGXqsKZ_bDp2#_OvU -z=cNU6&9ZuymxaU}W1tJELFxbY!Gpc+tMf5bAFBHmZJ04+RK9+*yzmfK`>S6F3fBG# -zeQ(6^JDVNd0AC>$TAwU1&CO)t_e3BAO24#Mx=FsP%d6!rtx&FR?)SdHx6cH>V@~DE -z3t=x^?-!2mC%f-kQ#`tYh?09;jS!CJd1yOkQ9a;h8;h7t1JCDa)7g+o!^b4n42>m{`=U_%oKkM^a$(^ -za<~u1fjgjf!PmgorV%bDyEyt&V4Yx{a**1ew|t2a7E$#u^!OcXO?Nhu4g?MOvW-Bl -z|3ePUR*>iabui#rpIA41GZnMoJ}kQuc{H}I-VYcOO#H9?pB@+w8er}YmzJb=v5N2mAz~rXDzZGYO%^>icUAorjyGnbt%^5Rd&3P&jsMYFjRhud0SGXZO@MyJ;Pih$X*b(SN{4{YUrf -z{g5B@`g4*xvkH_yr|V6^SL+8K1(0nR8=%cW&*;7Ay?oSqEt^d@OCSp%3#OoF2ZG3< -z=s);c{G}a`A{c9)7RX!HX>nL`#0k6qQ4)dOW^6`F-}mc};-6JN8yh%GYg6CS_j4jR -zdX0r$W$qTR&CZhysASsbLh$J!3!M^8?Qxk@pP;@*T|9r9gx(O=Z}76u?dJsPv{n -z7L$=CkflpmAfG%T9bWqa4uTogCEvcZDm{?*Xgb`%UqQ`_%tOlQGTMva+*=s-WX9XP -zY5CV&<}I`~=2=q4y!d%@K(+DnDNEvU_#aAd*ox=4GFHyErhNH9Jr$f`zfn4)0p9oJ -zBdW~JgB@z0voGb9H!(H2@G`-MB8@pt=oplF0$heBJ27vK!rZ`kuS*@ABY>&j^}A<6 -zdr)5bU!9$b=5cx>OE7%F(xKuia5K{fRQ!_xiJ1F{$JQQ8U)hM4YP&!)YbzTS6&0~> -z?xR;}F0;4Xs+wrvLY3o~1_-qdXxTh4^!=**+G8X{6NHl{=Y+aovx7@HD$yNJi%r5d -zuUkVQDs*-F&YYk`*5~j%ztV7x8ffT8?hG=%Va{^eC||M&)2E?c&T;2VCQz9j6}gWs -zupjwrr3PSMV&oC?+rUNCaoQ{}D>|EJdu4WY=vJ))j;F9m$uxB68LWUCqyZ&gN}zHzzvq8=q24hkUu``=V|y-7)(a4!Ne;9UwYAk&4mB -zUf^u{K9Cxq*&>u(qp<&!vrGFUiJ#2lhd2-N@C#g>dOAM}_rBf=_ugP0o=A92aTX8U -zcY3bY2SMN0&MGg#rK316)e&NXcbMj6QYJt`_?Tswy8!G9dKI2qn$RkaMUkrqMsZHI -zWe^}0qB{yKC3@^2{RKnm9x*e6^GdnNDxO&W8HyXJ>Uu%-Ug>3gz5HcU-O3ewXj7C` -zc=o=#)1!N4Wky;3>iGL9sbf|Wly(@X;&jPl7E{w;_eyX!4P2;|1~SiV__E%nBbs-f -zbTvo7s)KkQV@>`AJU}I5nA8NFdnM|mOW1sfPOUv#$eH{>{2QJoV;S@|N!lj3f-j~~EZ#j23d!k#-yfvg25N@4W8sk`K+HN*l`fk|jeT -zuEovQ98`6e3Q490OozKoOp9iy$H#Az@6#5{E8e;qE$~t96dxrl?UaTK8tF1a5#B)$ -z!a;9d>X0m;;7)x_qdJJ%!Q6Gci%lgf3)14l1xzF93=qy0wyljc^c3gCR8rs&^^%v> -zsNG}lbQK>`!=h~*LBSJwSuF7rMnJ^x75%kIiMoZu1mV`3$b-)!OGTPZ -zFn!m?^VoPWW>gC3{sii)K66=3reZ2tm#+p}pXR1pMVmfh*e8!y0M}Iz;>r_KcNQmzn%-RQsjGmqjnqiwQV-|go4 -zzS!}2`L=nv{o~2p@Q`Brr60J;zWw>J)b_(R2l!Z3+y1GZF?zng0@vkCSjkWsD}hp^t7*P4XhbDQJ5`^=hWJ$YJeR)-;i0*Nd{N^vA9gIIx@a%UM65sRfJ$ayf?I9D*;?F4Dy>_ASH4eNBrnOz@p??#%!l3SP&uI( -zZZqO-Gg(*m$!p^@WuQcfmSnBza*()h;>Ah}wnkf&CZAz87np|x_}aASGFhCs$J6Ca -zDWR#G>iyRH%bD2BKcu$r1g||6u3g75PkF1nTtDKpCnxRtw=Olkj|_LMiQV9|la`!4 -zNt186$Z2!0dniR)%Hbjz-5WzaT8b86p|o9ZePQT$(Cz2hb)gLS$B=)v*u2xAfBJsD -zrMK#WJDjPJZZ5P_EQ4@vQjvc-eT+&5eS4&jGBn`zSh7MGeQcprDd#mwkWzyla3>3@ -z)4QrNi*c_Klow8DrnXY2FrcXrX72h(lV$eW1-r)D4EUeHCr6^}$ -zu3tt270B;iJmoRL3E#EmO#@sy-~UgDr6K`lpi@74&JjxX!q>Dp;_b=K8S22qmG -z%KcLSb0t=i5GqG*&o!|zuYY7C`=2y&%0NuKg6q)EO+IMPq41xU$I{d@|>IV4YcwFjo=2ajHQK!@@X+Z2DwZi{=Q?U -zHXx-m;f$qV#HnhzOfb6sNRhDeScBbQ1!}<^^8?Caq*wuC4vEb);(~^59<306RSH%% -z7b!S2q6}PBiA4Z)xKTo+Sm5HP6!BByp*g-kuCG(#yEcsBS6}?r%S-!g(UsfJszzje -zJYXmtm)(dnBNIl?7gNIMphgJjkdWklbd8nG6qH1VF3&amg$K>Xt28Pte88YiCF(SB -z&NT*cO2VBQ@VE1MI(1}6!Ch%drn!ITxnT#RHO -ziDt|QXUs(Q<;oBZU_1pWPy#_JA00Jt3){$-_$3%77*IC|J%lc7fdv6i#K~&L;E=yR>7Fl@jfg5a+m#F=xgv>jLF`qgzPfZ_g5GKK+lHrODmeGts -zhk3xvt$8T7FO@cIHSu3*@xK+EKWTCXXI>DK5CISaH@FHX3}y^mNro1voI~ixn8fLZ -z{e`&u1F(@6$(U`FjJwWZ`fg$N-K0aI$*B}w|3+lOD4i2A6LbtJw_PJqRWTt87%CJ} -z86@J@qH=Vn_f{Wnl${Nw2t9>R`4jYf&Sg<3Qoqr1a@}gBMKXB%65bU$Vn_nsjEt(Fk_2aw4 -zK)#NDIeB1`2QGtfZRii|$bmTel7R5A@FPGG0FI$@6CsuwbSy+~4Q4>gDnR1HzJ~i= -zt#d~MpfwxK3JA+wyqsKUUaG<=K3|D>#Z{OqZ-U9S8PsS;z0C;9Ov3MgG}X&?Yp;ChUBXRtS!_-5fz3KCI~gC*|iZb;CX>iwEHs4dRR{oUNI1nvfuVvh#P{kUmSIp -zIDQ?8^zOej*but6`lQb>OgK0bIu{aZU?#%o^xc^5nMq|c&1>BKG_A}zteX8wjR;^G -ztGvhwa)|Lfq369Lmw0dR^cm&U@i@_Se=3p4sPjA;;k{DVz0A|SoQ+v405l!HTgG@* -z^1gi^sDCGj^JklVNpXdq^27)O&1kOhn*U@%G^aO(_q}ky0^?~9SPl{)2w5RoP(TED -zBbWvEl`z0N#EHYYSNNR2fxITdy&@vLb3(m4ei=D60DuC4Zf=EUf=!=sLvRT5lmX9y -z5WqVL5;4zPyk>$xFDJ1tCp%%kToA>70r912y`i@~&^oNk97D90T%KGhfV20GkvmWm -zbg1&V)OZbf9V%sB27rS3$~7<%u(wok|44d;*C=ztG^YuWaw{a>_VZVB+`v2QCbAt* -zn`llTy~iDnInqabapT?)B+sWNyM`*K1;VGyg+;a*MRJdlIU`AYQkrik@^6`*rzmT4 -z_7CBOLd@i2IDVxsn?7rmAtJ=FH -zKwejRmxjsY-f`U@qI}DFn?Q*8UAbZsf`sraqG_pXPST?)(rIz2YcN=M@w?TzD%2Ev -zFk{#>6hm~SRWuZfe<*(bOQ4B{D?u4UiDzYC3Y0DNj;~|I`tesjOSomhl1i{=!4gim -zWmeylqO6V`?D#asTjpT>Bf4)?n-jmi;MA8|Nfuuu!sNZ8O>GaSQGic3dk17pIVk}-FJSTpyq);Sb -zqJTs~a||MWRQYN)G&A43WN;l`0KIFpFhaW3AzYBtn2_so8UZLgfOD`=mbo5OZ`QAvB8tFP3sZe1J>3x6r++U_m -zr3H&o9(e^CrNmaM@EjwHG73N`g$Z@|O?W(*D5ItVRUYMY0p*%SxKMijuQav<%7$W! -zLP|^7qgf*anWO20Hi9(v1kU?(A*teiOG)ri+}GPsA^y(S$7Pi7;jQQ4C?&|;l5fC3 -ziHUPJzR2{v>0yX=!qUSlU~0>HZtZi9$cfc*&@2!n%Fa(LH5bXmED$+LJ`c%)r5}=| -zpPZqeL4a7qQZjTY@mCe4K8!e&={+y@Z;iA8+^E{0nv9HJ);9g(4E<2nctovXQ8RVI -zfzfzGjldBz5HuS3Ncpq|fe2zmji2E&PZicYL;Hc$dh@w(!&p^fz3RL6WOl|@*u}dX -zDXjRWFziV(%XGqJq1rlehqJ{D -zPkdM)3icSA31a%Zfomw5Q%1!ExPsGRy!=YrPJ+eLcZ5fdgf^l64BL@I^EKFB-9`C2 -z!Np6aQ4p@H)8Pb{F%kvm5h2227-qJj>7#DWM-J -zAMs1kiD9nWH*g4A4C=Zmgus!Fp36@m-+K|}@>=zz)iH>T>m~x`26PV&Z^Xo`*vJf! -zlQ$_G{8W77X!jzD8YZhsvi481u_^Avkv2-tUZ+mDk5D -zatBmB`3iOWCt9~~NVjNwm$&&wECJWr)xpWF(|h_?B&zjt>5!=@46jTV@MD)xQ`Uxmh<1d0p1|K -z+rMUX1DYwQYlKvdO3G%iu-6NUCu^xf8CF4T2tV^WW#gdANvuS{IhRH*xI#fyfY^C< -zuq{@V=S{Y7)Dmx$3R+b4KySzI-K#IAtn+Cj&??kG2jBGe*Z5)+GcU+bKrEC_A+3) -z+{lK*7VG^;1WcHK8@n)2G6M$Iy+7*zW)?#8%8-P)h=QGPJK@j$_5aBKn>h;ojf*7A -z@g`S-tcM%@fY0F^fY+%m>8ngr8#s`)WteAE8}P)yt~Q2LwMCr;h8dFA)xxr=_Y7CC -z0=S)nZ{E|_yiHAFw37LL`~woHZ~bn|)80q5wZ9EdgTwqx%~7ZFeM<)uJ<8q}&gD^Kf@B9h -zp8dGhoWGOmkW3^PKyb?%QFS_O>&M2!X$Dl{r%&oMr)23bd?y(NyNSoc%8}gXTzK%|hhxrpokMBf=`@dQ=EqLG -zyDFo(8l$zIc!`wwGF#I5?!-!~vS$Qn@L`w}&zc~4J8Ac?sRQxBhxhO>ImXLagF98m -z*SypxN#@T+ld&$7A^mhp`t(x_H%`rKN(c~}$wtdgFKPU2u-08n0o);`Orr@kw~1fT -zsrr8mhPpX`naDYgz=r(mT>BXQ`s>r6!-+TP&6xJdrv~PMK@-m&fE_{)V&iv?bMH&SkR65BFl59ZG -zaFA7wNk}_}gC4 -ztDb9A`nKBzf$=L~FVh3K1VWy1A-ut4s*ki}NuJRv#-NZVypCQLUWgIw4Ax -zxqPIX2qTyRqgy%Vk{IKGJR?nj$;ud{N;gev(OC2{hb$SNvgZ;RSF?J!G3=f7>fIij9! -zy-azpN66;p=c$oOl0qNYv8NGjzjPM#$@q-T8`Hl`(37ZdP56(a`f#h}c--$@u1Lpy -z)(&)hLI$@6tCVhY -zQCvA#9W9R%-5{R3SHIqo`gX+ugv(&+YH!HO5*(3Je#e|lSye*`MTEu -ze%VT5V~o?l+j9>(GTW|4GO%cX2KYT9jKw^y9+1A4BB-Spoi3O?lTksB=ji-n^fkp< -zue-9jZ6@L6cB_-Ot3-(cBvPVpHvSGb;4rzV_rBXCl33%0w#ngV-NpG$E9Un%8{&qd -zC1cX=Wueo{jUVPGiD5cyyevti(spDQl=;dIA;ik9sxu5rYFb36I^@?)fJiEsc{LZP -zxfi?c#)SVm;ji6AXI$N^G=)#K@DAG0*W>(B3wP7yN}sg!=^%Bas{tMl{Ow{MnzG6jg{G$OW$yT&X% -zXf5}v%D6hZS~^5ewXGSGfH~KO`}6a()sf4|$qlPQtECy5KDzj=nAhP#_T6*J=MK{< -zmwt@huG?_&jFY27WSv({j#$8=jr5AJ;E>}g8evP -z33j6QmGa$|jaa*o9ZOS{)FDx`&8oUWcvS?0)a0R~YyI?ymn4zw$!eRa>h0u9IboCi -ziE=`^%>1+#;H5&AFdyOUyNUt555u}YlhKv8+^8uHqQ9~yZRl*KYYHM(WkQis&d(zn -z?puuS2QGv!dahKPBoI9;!fXtd%0Ax<_1A}4*mTsAH5L{(JACBFdglU*1L`o#hn)){ -z_v`#N?!$G0a+6L3Dbh#lq2{GK(Synp{Ht=fJZluFy_OQp$`2Og!yMdRXWC>COwT5gFf>)ozo?xCaq<26Sml9 -zAf#YH8-lF7#wiw8j^n{9B>DhxAE$y%@Wo16?B-~`gdWiSS_1d&e4=Wyo5Yc!oi$lw -z1H#x7&ER9q*3;SD%7kD4YR)5N%2}@-J>Dc@&$pVWJ`47HNV&N#)uWqp-6WgpzF&>! -zNU2@2M>Cd?E+)8xV!{F4oQXHAo4dJ8%9&whh~u+o$PeL(ILp}yVqq86Q(~of`F(b( -zaiH(z*6vmv>0f^O)esj-$Bz@JW_qJvYG$CIjgs7F-Uu@a)~Y_r??HkXW)KCespS!y9l#bXxw8PZP!n{M{p -zFFbuh<_W(p?{AJ*WmeC%`El%I*|9ARPU}aKcx}04VZUBJ+6Z>D=+Pa8o5wS5-e}Z( -zpPcftfmAp2Y -z`e|V@`?K3}=R8g6SVl7LmjzYc-VN|5uCEstnrdvMZ#iGqKHs0ywl4Ip4LQ;14{LH1 -zUGM!VJz{SH*khX*aP+%5GqW~`0B>wV#3RrS-c)DIE|VPw1OhSYKP++Q{(+ShAbJ%gMpTOhhlv -zj$KgQNmrZ;NThF+gSwT6y->o?yHmTZ4?m05K$ -z`qW`a9wZDy^gp?Zh-RIeFLSzxQ{&A6F;SeexFFb)w=6Cf%w9J0i-^+j1v=y7{H)r7 -zzdf)7bEB_QP5xH4r9W<1e>qc0bvk_$@*Qhx7=K;8*pP2}H7{M$7N|KwFAuwlYzBXK -zA#sf4`73yeskopPx5zf`u9KKD@*&p#0wJfA=4q7NI9!}2~m<}Oxd18y&L9E}aN>ddFa{GB{O -zUW&AP@9Do^?uJR^4~ObP#$dGKQk3q_mIt9dJ`s}<+C2uIP^F&`(uC8P32e(X5ZULkSt-ZVF9g{!kBUxwNz9SKxz35vQifI#jX&YP*0$`v -zFeglb4On4#M;1)u!~agQR~pYZW7m=$n*b(|3|Oh8*Dic-VmX9c#=z~un)hU;W(Lfx -zyN5vT55p$)Da8S5J5@Cr%Ttz)NpPY>n?LEA&#lItAd&XOGA_$2Ay(JIWHM9$*a;Qd -z3F*I{sn8{wc%8D)l^s`(i2|!yWF|5@V`(qZmE$bqhG~(Gqs^ziP9J`_(kka_4L^|c -zWF{Q8uX%T*xn|EDqz{Y2j3Q+?vOTeVn4#y@cni5Snzfl?+z*Z>WJ8HhK`f#sb->|W -z0vxE=s-brs3@i-|3J642uzQQ3KNIbkJ5IOLny{}xEV$wmp{N=dmC-#=XajiMyG7Uj -znN*i4=s6TL<8Jz{6IH;$1*J2yT~&^}Xwq3hCjQN%f)B7#s5n*vCvLY{qB8e^-}{Vv -zPSpDTM0Zj|A2JG;1}iU0Ci++Mdt8JzK+=kPX^k=vl{FHYs^PnEMREiK#LJXrW1$g~ -z-;5K7y;_4yWxh4L{Wr0tX@bSPq-oMn7&94THPa7`@#3^g -zQS`w>55G5CS$p%EVNtZft$Q+^24WYZ5xJnI3^T6UTIx>P#k`Y3npSqEd8a@l%wDcl -z&tLPFmXm&Czi}k+r2%KKD)n@!?Tj0f`f|40ZcoGb!Uzlz`Z}5tnd#jemzi+HHeFD@ -z(^fR@bug_678JUK&9O%X1@?H@WjG9Wqq|vJW%Bghbg=IeqZu?#PU5f^sD>!(XZU2e -zq}=_PR@k$(yw6s&2>ka_s6q5sa($JEMYjBACGB3wJbm?$`8k;Qh#dmi%CzvOE!F|0x@kUcJv#4~gk5dx>Y!UT~}P|IWAIjyFvak%1F -z-MR`lG+t(f^#t=Bd{viyKu@E+nO=-M;F9?y#T1H@;wDseH!a*me~e9>i^{oMuO5pC -zCE@t?@cL*Vb`F&9PHZ@9+NVRU3`OLRGr+D*8xCK3m_!AE9c`+Pwr2C==7UYU!0r5U -z*@qu^UqEdY9%p46P`z_*c{^F(Xy7bL5`Y%7QZeKK^){7}*6go}jYfet$YBuVo|@)7 -zp}>8B_V>kg%L_xrv){NrEBT{T@18SkBwumWqbW=&XJy9}O2+XXy1)70lY08b~38D6mI+W*JeTL8xqBx}NA -zW+n?QW|l0rm?evuaRe4KSK_GMWujDKcSi9oce*W<77MK1iWpvz)PfC0=Gk -zKM+!hMab30ZQ}~NHyLb*DAlK)kE|n10Q4{L0{yT(wHqTgP(WO>$}fOF2}5%fLO?vs9R; -z&#K1cf|Ue47GZp0y+&rm4&H{Gplm;qQ6hd?oZ1z@1_gzMQ4*ocCYmwK9MqaB4q=e- -zCodPv!ap!kj^6wrRa6myS}VB0qf~;1E11Ox?dYuN!g$hEP4l73gwKk}-E8Q>*3(oo -zKrl@It+`tIKu{(pqC|IhUBxI4qlEmzHlk(*r?Q5zH+LVlqI6jbUKO2W6rxSWOd28Q -z1%h6TQWoTYCn5dxU0ewy{awJFDgWA=w@XW@B<^WK(>tgXgnVBJb)vLgpcIe-QBo@f -z86}>;h9f7fqUI9h$Dh6eW2RVTN>t7O#VyD2#2i -ziPg`gx>^iXMx($g?%9WB1*T$pFBhNHB)-mvI|E?4`Ef`-J|#}z#WV}%6mQS|4_$=a -zA-OF(?#N9F`Q}gYv| -zA@F|14=Jvyuj#d4*MeMZM2?r2&zDE*E$HjBGJ%KG6`sJgNg?wi>QYZGfhSr<-*4p> -zgsi>B*{OA4&F#PClO` -z;f%qU>1))kY+>05S<9V${mHT6j3k&kuU9JLnAz3KAMir>wlY|yM(h;oHG69tx{oo4 -z1FiwjT7W)tlRmD97I$LYh>5q5iP4sEV%*Vt=q}&U!WV>`r?=#>cWmKnKWXlI)}E<_ -z+uOT0B7skf^tUKMq4cS#eLkRqlTG;H5Z#-1mkA-V@8D*=!@$&~7gv)PP~yhsc{`iO -z-Boyd1>;~PwQEJk7#l#h(4$so_TlbnI{enm24kkL^Pk~&qRXmA%3!OcW4~fqq|%|l -zF~h~<*MTir&(gJK`9hxR{_aa4as$PifkOOd -zkEL~EP8?+_bv{)laEttV9Z*w^MTBy4pG!eQpOLJJfe3Y`ax;S5fdk(XrY=Xf*`K_K -zpV}-a6q{Y!zX$V`_Cy%7oxgdBh;IPabPm~WgGv>HArt+xHMCiGPO=bL*D!Gc%T5Yg -zLm=Nt>Nz@F*-xU4bY{Yi_)9cYm>0(q+@J$D=;R(0#v%1pJgz9qJ(bJqF182`uHm+X -z9_sn0gq*#jF7&tvQpxIjJ${b#D^kw3uzG%w#^`k-TOnoSj11L^?X@>b&@y{bjUJUR0To*Ey$Yw_H%*rR}R5O0q5q43; -zrux(_s5RC*uvUyNsc|uA-AiY=#8a|r%PIB37q%)+@K!b9g()8}HgW%$QoIyMp76@z -zJcE*Y&tT?$Prq~6$%y`3EYQLB`-A~JMw8ipAbH|$ncZ}9lGmWd++SQM@E`i;&Fpox -zze>(X6n{EuByG=#N4FfVed{Y4=WjlWXJYP3;&=B(-*v`;} -z2Q@t!_3Zir@GF3fep+zVCp%k6-{@ofysH*^hl&TU=Hpo%hez8z&dyF%IX}iR!OZ$& -zm{%#t_UdQ+@cC!ulfC{kJM|r~UB07&i~d~Qtls&Zb#Wxjb7o0Zk&_)(dYNM -z6OGJoUfR#!Riq{er|IW}0SO3Rx+`Q+10cHA7n9SXb${HDbP4Q`|M1|gSf?oR=m48) -z{cyX2E5?5?$R%q_qI>qtGq~ORJ+B(_W~G#h;*Li*H&CHCv-fE5aju~|N}}Kc9T_%( -z_E5Ple_|-XT22b3-_*(%9;{Sbj*ei$1DWg7>h8q6TcwdQQnbcbTdGD4oAX%NXBmjM -zx0+C&dfn+bhoV4)LkLrr+~{O@6qpvy!AIXVDK_^S8FZiaZT29IZwpD;Z8m`9*VD>E -z-X@?{rIAGwk;59DLB0(!kRJgyJ-BB8g`bUKCqQ(35jyv-(<#B)2QG(-EyQ=lvY}A6 -z`!%IHFtdZD1u0Bjaz%@AvO@azhM#*ebRbA&fh_D|mGw-%8*FJBW{GbF3|AJO)4(2Ww -zMx;9y)l|ReApLb!eu>q*<2H=6{d3-^Tp7YuOju(4f_y`I=Xg=!&twcxoh?i;`+C3> -zyz9BI(53r`&8Hi;KA1b@Eic?(M8`v!ns@zv7oxA>u9|UPFLIH=&6Yxu*f4%q7~Mfj -zjuS!>kFsV6X~zfAtCK-qTPKXuM{4h)&*4Z>21?hcK1v%s4(9uIa0B0pexi+p*BU>6 -z|7M6gm}7NdciSps8gV~5SI(?COH*9d_t;0ni{q?ZJ&rHRGv|d{jlJ15u1G9C&4BI2 -zq%708WHdR&ZCvon4S_jvjHU+$1K;$Nlymp3&cO6Ze8uo*v9yPem2RAUj-!-2F*VhF -zX@n;)?DEENS(Fn5aKZex`}HC8I|<7W#ciXi?h-^DE5*_s$?rv&m37n(d4pCED=6`B -zBpc!lxU7s~c;pPdJhG2)mkMKF*9X!Dei>O^Pt0WT{mRG_6^O$RgX1YfxI2Nm6H2}F -zf-@#cT`ys+r|+zLk)t5$=Lx5+=TeBYk!mQ8^wpUrl?DW~-UniRL%PFWKSFpOS1W5} -zn;YpoJ0MTiyk8jkwoz3Vn9;JR8?14@JMo`iW -zJ?w37Q+z&N!6kR7Rj>fX%zGpz<*(_U814hYpQ`(MDApmJaJT!gNP^#k1ce+tlH~fA -z!X`S%Yq*I88zOUB3%_vEG+0Bnm%_x|i4eH#eMG}A=f5DOL!ni4T8e}gk0RytbY%RT -z0y7p1Lx~!z5bkM<+yCMX!#C!^IA~e|f$E+oYOM`afwa-nmW=EYF!5w;$<}F8p -z=nH*tstiw#%K|S0Ze;5{jh9i0>W@S1ZalmUgv%yzrJ*N|W*$TcE3 -zf8ER%42wcB6{YUDDP7@E`SJJI@s&5FZnOX#dQsQaqMPc8ZJ#Y*7rbptmX|6beh3ms -zwy5p}y$RnT=+6wcUfK)hU|2}@H_}kaG6<#vpMsfP>UGAGWDIAj+ -z7LHa#eQsi;0P!Y^h0#7!ksA)yd04n(%coq5GHyfMWg2V}dEn(cwO5FvIDZI?dv-sA -zJOU1-QdXx^8MgFyA#b8xs4;mJe|bs(PmX;)6CX!Z&bwJ55piAtJUN^=yFYw;29y-d -z1K>-tQh`&lm~vi!Vsb+)1eWM4S&KBgx1%zpN!7Gf`RN@6Lx!GuKkqU@SS+}#;nsY~ -zPswevhwp<3MG1{^d(osCn!AOda}vMr$xuYdq-#qrNF;>W-8Z%` -zzuOlqB>jk1_(9vpwt-lh8JiPqG$vw9X+15X74H8dy+9v%pA?7GG=-pB2D?ad0sRUE -zj|jRUR$ac#(E;nY^I5NcK0MY47Tncv*vQ&dpR`SlRPR^nsVo*L{%uZ!3?B|p`S~~g -z-S2Z%a{L;lVc>>Z;Kyb<)MkLSx36{Tkk!*}-{rMdm9ytvr4_z-X1Z5DG8|+yapuQ< -zjro(UWDtc|$~D_-nQhoZIy(m?=oTpG)f*D6?;Aru1@3#^jK&i|QIeW&OgPV978j&m -zj!&H>PG7d~@V(}zY6^HmG-?k21I16Ck|g4wij?vuJ^HZ6(uaN~wUcA>40-~FL<^m( -zR>EMe0$3juCc>H$19>4$1A7~OnRrbF35(y1J -zzdkJcy}T*9Db~E*`4dYZ;R$4FZ27sS>h#jq`Q+!R;^ddyed#5St!U-i_`)EE!Vn`a -zNRaL0!!qToU-v{?DqRnj#yLB#%E5#dKacy1I>{}SpMioFMdr+N*Y~P6LG#xnIPRH>d?Z2BjT`}7SoO{W40f6@>%;VAXd!DeWaY7C#U)w_c0Z)!BW2<42wuV>r}PEDp3$_;^%w!gZZWy;>gzg3GL@zQ`^HWnpg7|5ggmfZQd2A+7) -z?_m@+bc>Lfu7&^_;qSkJfF4LFKm0z%sI#Ocu0sO98f34fZ!1dBvLB;Cq4GTHi2kDm -zC4`&Y+v=-xv&J|%=l~+$8cyG!xSZ06j-zg?6~V?2Rq{^{ -zY)wnup=;czqA^%*i#599{)L_`Uu!@P(r=EzPM_oT1M@)3?^s@Y`@2%D2^(>$KSBs= -z8Ci>G=G{|hjm^X+1dh8;t!d?3W`Eg#FKv*0c5YR@+6MEpyAmA9$rcTDy=m8{-1piR -zhgqAsGZ?pW&*jg#3lpiRFNC>fc9l|}%jOOOct)+DUc6)K617h-*!mH*lX!4To^fZD -zS*LGi^&zND$hK)%dV -zmhn44v%!sAENSn7?7_Wx8g6NAAI|UXYDOoj%*2G5)}nfF=2vLK3a3)#Wff+UmI{-A -zc^7j|Wm*A{3`r>sMWK$i8#9*kEr`Z2z`ZjQ>&$xm3k&=n>-eNcD6WNcG+3xdv|a`l -zH5fZ>hm;oL=e0@}^!^3=7kB?~e{S}i9wWy%20Zh{juTL|JC`|q$s#ot7Z6F~pNde9DHSbR8*^+_`d@Vw-JM+La4N-2&C3i|s*G!cZ?MB^%O -zf(V#D7H7Y2a~H<5%Dq3KcQG4RFrkPRnh8zu^qG!yI4307i&-wY0w5qEL|87nWq8f8 -z$0#YTPU{D}ub}MEwCz;%cERq*@=P?Bm{lmJ&~)gsn||o56sm>v9<&0Bb7n$r_AjbZT4OUXE;h$hMD&?31RvOBo2sG -z04oOXJ3}t+V#eeM*!I(AxuAuWIOF^Z0{<$EWGe92eJ?9x{UaPQ-8^dLD1NB){Q`W( -zOAtKP_6)G>+mcHCw~0NlUjO3`wL|5Aqc>{W)hT~7k*HM1j-+{F9N|&|R`3ywMJ7@@ -zGRj!8gfQGIeehT|!;)XjJwBZUQvjwRmA;GqniNsv+=Lg~v -zVKhYC71!;=b!Nb@Q4ANOq@m=pV*v@p3oJLDs!{mLFNLaRpD7)Fr}1A$W}#{ypRnWc -zc{%4;?aVKTabrtFoYhUu)LmSbZ0X9qT8pXr$ja!(%h=XcFH$Iu -z_{fijK0WLf` -zUE@TvS6Rjv0k)8UJ!<9t7HG}7%?FzB)n*&y8CKR=uuQul#Hlyl&A%ZDcIIyt!j&a1 -z;_m%z?=RLPrILDU-WFF~#$b&Y^(Qayx|c8{qsm9<4(h8*s-_>Uff2vf4*UFsv}P7W -ztUiQVWZ`c!=&^z_O5^Um+!wq?2KceHyxFkI^im1CMQceQ;l(|kZnrvP^neJ?h0a?L -zBfZBP60%l!LL99mJn;r6JM0)Asxqjkb974Yp?ZQI*i|+M2CR*`Ve<57o-!@mHw0lZ -z%}6&+>Iix0!5n`GBGNQGAdaoOPJ};XJjA2AyZLg_cIK!^bP^}bgzC0a`l&>h8YT2? -zE;FeU2md$orQChP?{5C8n8Erc3t$z^tZO}c_J*T1o8=OKc{H-|&_|@yfzfPZDc8YX -z%=R3WUj@uukxITAZ@0nS$Z==`MKe=<IWmO!Pl~+TnJdyn9ubM>`6m -z&+3%Hzli5`N)*ysRW2Zt*FaQZo5{*YGpR(RNp~y1s(IWbiiT<9b3lu<#u?7cpGvSq$ZD@ZQ=(27{)1 -z{#v+er}(#dH1B|27HuIehiV3*3|B)8UWxhk~PH1WHeZ0ss;zxbw|Sq+>_cuhU;AsD+(loVQtM_|1MTGQEUj6V=N@-^T{dV -zOU5|q??_LBw-_KN2P54FBi)orhO9Zcv*^+qKEowefvu9{3DJ%>H7RV$5q%b<01s{A -zyP@fiNUl7Q=`WbqfZ#8}K~$OQ7$~f8O4NJR+1ggkXEGry;m*fasaXknksxTuCBr*B=pz!gNwoim{z!5 -z#Is+NQtC9l$=?Tuz|oNqr;_~@;w^@D5vWm=Devf5XawgmW$V^|c18dbjzZm2hgPs; -zEkh8w>1o1u@|T@FPH6NKCCYJ^6-H5P_go_6VMD@0P0_Mcy)(JCSA4`rVIPxX%ajED -zTe>F?v6i)F{7c%c;aSqUmk}Yv`|K?lqWHS2<**cfanORF8mSEMH$cVXvO#_729v7% -z^w>>TNO^__v&5CSOS+I^^OJ_r_M1-i)-Hk!Q7h1?H9{8LAiN8Zk9!*y(3$YTf2EdV#=0Z@e -z!#>nMrV=@Jg4o!{73c_40k|cieZuTPl@mtY8=tHrP*Puh3% -znzJi3ie!x~TeN{mA%d&6)Fjt1rVUflJ`5*+{v|Ff9a$pqA53!VKm)?{j+LG*EasXKef?dXm -z)&wp=fm?nik|ROLUud(N>2~0_w7DfV1QWw@8+Y8XFe;=88OMrUcv_BQ(ME^jX0#Mb -zT0A&izX4;YLrzAgPR#Ng3$-|r3bzG6fkF$6{%nf!R`sH$9eOn-xm*E}8&;o!npPJ~ -z5=J3Bmkd_cY+J#D>rTE7Ay)!ydS!=zI4S>Y4O#Rz@RDZMQK;7F`C| -zdh^@HWkfyYe`RhUgK4?!|B;*%mq6iQd(t} -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 -zx@`2FSmlBg2n+{rOKa -zZgJqNU2o1@wp&*q`cKOE&%HCZ9d!g@6Xsm>TKMkZd4a>8>uj?FpB2cR2IP|98m0~M -z$OL(8fIN-|&-p$8(UWdvmv4c?j*7U18 -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 -z@&eJIkjTYDyXG%sQa`}7Qs&@< -zzQ(rodZY%{%<$x%<;o*(aKD2s{E@1~q&mxxt!`lL7Vz_}4LEO~(PVU<+6O+>KxAna -z)QCraZxB~WZpZ1ge+f|Q&*PBoP3q)G?0)}&I?T8up8->vEDLJBvh5exqk~pSH8Llt -zO-OpHXlja=Uw?nOD)NHC7&qiltorP&o2K6l0@l_PEng~|i1Vj^}~&fCVPolG-a -zS-rk;ntkwyJtpaA)fx5ycUg@p9n{BjpVtHb=Ef?ke*G(24SShwB0SvxzT18+zK$4b -z{kQY@J|e;S3sr7y?e72;`&!WivYlql-M&0e_J8znEh%V@$TSP1V9sOe;PAPDZ`MBl -zdY?IRU@kxIuIhQCV?$VlOcDOo8&QVH!EJ<(lxXbtF&(^Y2Ne5%ybbA)pG+FJ9kOZQ -z_%#0?0D?e$zbs)Rxz>f6K5U<~PQVV6_f=Sgr7qNJp?fADApR7D{WG1IyP(}u4oW(? -zFw}v~;Z<7Y3DZT{f%s#TF+h7umPaAS6{447MjV!FK(I{n5~$OW--n{8K124`Ai2QqH7@ee%j -zw>16ygKfItQBj0vaIItccc1x1_C^xGq{#ipe;-XD{{G{qkG&}Me)u?GCHrAJ{YGB7 -zYB%KsZ8{+cWtdKS5l6q9@)EUTErH!4Ck+<0evYLz+Ru5om=)rP?dZj#re4@PTopT( -z-A;-l9vX?K*CVwUb&QmyZfhou-fc3+E2c2hQ=zxeyEat!UIVvJr@o^Z@d4Tv-$}_u -z#>ML{lYp0K`}7^qD4WlZU+f&v9;s)7#x_SUy^)8HUM}qL3aJp?v1qir+mwq*qwSml -zDtTeh{JAs=>2|2{wG-U>FPx>|w^T;;ht6$=THgv=4X8Xcx8(WkDNZeH<#X8cw1HFE -z&s_@_=iFjE!hD)UGdYN}pDDp#fNT+Q9L8Xt8RZ(;0g}?qIp9$-P3QB_=g(fg5N%F3 -z49#kw#SjO=z0Zr8w3(eT?+o#(EitW1w3(UWHTP}~4k+~e)7JAs)LHmOAd -zTx=4zj~%t60bQ3dXvziSZcO?-O-m0J!JH*NYuo~~VG(DGinpgb^3@g@gAcb9bG&H+ -z+ur_+5G8k^lb05X@1D*!OV}ZxB@GXLHqTkir>O7L>`&aAwz8VzJ5ST(rWgPFuzk|H -zE5PeQjfq*8NeSC0t+DSxaz?2EofOQPWRr&WZQ>rP6C?!aLx4}uq~fY848N+lup;l4 -z+dW8C1ndNUO%@>kEzwb -z{ZbF=RE1X+*adNbV}^X6seHqZy=(qqLkXBA*u2GB7mV;j@(eHMi7P;965+)Y#Y)Qv -zKP1n<0>_6(tutdSbl>zl^vqwnTj?(k$+JU+taN8)2j%H2{N%Bk9p6F{cW1(=%c_L! -zms;YM8$eC5pA@YVkr%uAoTt3=*<9~Y2F1X7b@GMHV -z%wTq2xL9z$3Yr^wPWiGPkQMPT!P_<$7Odkrhge?6Rl%X5ij09<`fL%mC$_MIhg~Pb -zsht?**__qL>qjid-I0-RnMToelcs?@;8o1+a4bp|tsp&mi(5B4r*^N~pDu)DFXf>H -zE&5ea#@Zn?-cq#G?ZI}vxzDEW;vD5kVQ!k`X$Bn#(^x;BW^#Pf~oh0pEOG7+>>T`G8jaqE~RIaT3m}e38obLM56GRMqDjS_bIxRhlE?Xr^mG -zWBn_rLA=EE^{D>h^?isBS}P6dzb(n7o1OgWaT^PK3^Qq*$m%s-uMd+vB(E6qI`{AzNuW9{0nJQA#BU+WT -zDrr@IV5{=+A3m1w%8E@mFE0UAX`RwKrFHrNtkWP|!}8QH6t}q2S-|;J1{K>RfOS_k -zx3OAR0>;6>fTUb^)z$i{uhmswYpcF)R()-(`dYU%(^q}1ulic;bFE)~)>uH@vw+&g -z0&0~7SeJO~_5!ue0(xVJ+NH!dSwO9^fZE9dYMTYrCJU&YETA5`381lnT4MpV#sX@U -z1=K1FsCyPr>nxx)SU|0?0MkUT)>%M3zyfN81=LO!;4dPx1>xddqz_Vg*9IflVZ -zTnNb-%%pmbMGKl1G%e^4c|i|)7J_B{?x`;vs=e{qB&)p1tCufcoSvRtoS$Btoj!YZ -z{?2LWMQBcopBDe`-Qs`!;`NL3S1*AFygEI7b$&L!_zibSFhM@2XaI@M+JnXcgLcKP -z!z;F3F_2bDwrb=$hRKU%nJei+7B8wREJoHCf>6S?W@#~t*cSeary^RKyVfO(!$=R| -zQMIVlp!P}$(C2)jxaSP`EC`FTxi6#;l2-v7wYY^DuL=-7!*wq3V6kj38u?X@FAi-d -zIAuRNo1x8Cfxwa`&Z3xTM37u-*OmO)>x+xmmp8m*v&=JZ1_3YJ?;6#(qX~poSO>GG -z{TW44NFU0L;N5*{t|4n2fMTis)Z(G&ci4tto4}0tZ{@<&h|M_cWWKz51H3-#e*)*( -z@El+10QM4uixAxjgJjqm@(Dac*#Kmau;>u3E3LgOA{xWyAUOOiUfkZAftsY02(!8Y -zdhFRt%Z0>1!my)%`?9!1DGyB_-VHD$7%cQdmsUY*cD3|OPSEcTHG?@=_tzEVEOdI# -zGMMuMpC3hsIfg*QiWM)bqQAEw1o4gV?><|W?>=*I0>d7(HjEl;mnA0ND^-J^&f*}S -zWiS%rT@M%`yri{EH_bE{cl*Ap8aE*I7Jnozkv&YUU(T~j+@l_)@}2Yvk`JgBke$h) -zk4FL3%}q}~Ksf04kOhkzm|vLAVdq7 -z*O4qUYwP>~Xc{wjKF>imdM^P7*Vsgw`OTp6+33;7Rk{Uf7D{UUP^{U4MU{NsK)eSX -zE)o_MzC8KL@xc>e3*3u({xiN{dOlX6Mh#HNGtf -z0#zJVu_&miJZ5v2rwW>bz6rntg?ES>GRNOz_-D;Cjv{`VIp+A|4?10r~OH -zcH=;7_cF6QEMhj1lHUZ-eW4jzJIV*v?-dhiEG^hBObYNEh?>R4`%78Uz`>DH%qNe^ -zH1*RoI`=s2vczPd-}vAB_D?Qf{Pt`$68-kK-XD!b|H)VWPe-Ev{7?Sm&mNiQyTW6A -zFnM-*dVT)l^ih8atchTFpgK8IA}q_1CZ(5_B@nQ7g55;P3*?VB>1Nry_tQqe_Vgwd -zuR4rHe(~F%JQ}D~n6pnn0<@bx6gVlOv~<)bNW_Px^unTyxjeIj&h4OQcF=P>=!G5h -z(hj;9n5fH(^HfXE-gu -zLbaVP79!1?PA~a2Y7WNIob8b2e1|m8c1ZJlhcqwRG{#9jcG_bJK8>L2O+>J8(1Mii -z!QMAGdjw)6u#Fg`K0k-8OP4*pzJ!(HmGei6r%=Olwd$c%b&0AuU{&23D^8*fH_n!e -zWy@u?=2=*EWvn~y#>NNp40tFm<&U-L=a0NAfc9=V2jO}WCIv29C{=duwiIR=N-Q3I -z1Fr`9uy|PH;lV=mNY!kJaE^>m5|y1va6O=?N19uw6T>?cP_BH`YywNZ5nut9QoKhz -z5w2sJJ?^Akung%}P7*#?B>s_~Ftk|&GgRJ`Fp)fxres$YU!t;+&;;ou=p2A)(2{z69UMB!>$Qz^fD$@z?<2bfBpHU@{xFN^jLxiCO9-qQzFBXt4?znjbr``VDDA@8<6rDj0=Ao{2F=` -z858r%pZ@CSDFED0V5K?c?N?q{ejz~op8zMcqJJ$#I!yI8_=1_lz}V$)k#HUjXh=mG -z4>r0L09LbPU>{WG^2NTBMLI!^B+P+G>Bq2}zXbT_#Un@rD|EJ$oAEiI8Ftg^#AM>;<> -z!i;7GMw_^Ad>8unJT$(IIv2+G(kOpv#vA -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 -zo#|&4Pp4PKXRiEhQl -zXLi!=moTHi;Z%Z}y&z22c^jcBW__#LCouk`VZvIj4=2N7G&cq=?~O0o`~#U -z{^ko;W@p0lTT-GqFdj@6*eJDx?x;;h-`ZZ-VHen3HOSQmt-^E1m`xC^ap@?H(PM7! -zQrr8($L<%u`sJ?ab{OJrHV&F2V1XgupaE^5qyRj4dTY(joR2>FA;4^jmqW^Q#gjL0 -zV|J4!kKguNJ0(dNyy5=E`3pXOe(@rhzc_#P5@J!TeA6U>Pw`mon`K#M#Sdq&_=Er| -zd}XHjVkTl|*c1>QLcygz&)%FpKYw*``XrNofxXFQV9OsP;}t7f1R=R>#V%GXZI;Xe -z{`s!}QN)?(o1gOXOFUFVYwusp=djlY9_Z&`)-kH0h$ey&05Elxj8?#l@3?|_{vB5k -zCVN$|XW`{{-1@8RJFcKweb*Iy*A(Ql@4ABhC}_V5_$*4pSr~)7A|d)Zj*x%kT)56} -z3++pS-EFOWu}b}luiLL;(f&%J_7~$_EbDS5eg5fHrhHT@rR4T!&=nE(8N0&fUDJ5c -zr7H*femz_8k_DeXeTP=<(8mIV>JqI$gh7ZguHy}c=2(MXJEx*=_O1;>cb*g2Ec&ZS -zmZxz#z%zI?bywJgB+MP(G^1#@|7hh=rmzcXuZ9(qr_*=VlxF(b;hrM6G_5 -zR)IKn!NaWMLW-m8qoIkT?4tpRqwGB~WWTbH1tE^IkA@zOvX2HFuCl*FIyo9#xXS*H -z=;W7gCj-kJS)j;al{1qeu#=UK&4chON+@Pu4wg2=T15@c*4|Go@1DZ8+`pa`^O>;` -zHwI$>vvw-Em`}zF@7vm=TaS1>9)_ijjQ)7jk2&9O6s&pwy%~jO#Xofmr!9m3DX{p)Jos%; -zz+$;K$~S);*AE7={tF7R5xUIe0X#|xFNv-3C^PHo9F8) -zT)lXf`BP(O@^mI%0lZyD_Wc-#$r2r7#bM%F6d!BPjjoD!ywDlM3~wfEe~ZSv`Rp_K -z6qerSzA|?+cVH7^XPo=Py`RJeF44!VIfR^L5F}&=(W5 -zD8z4ZMDSS)rFM*ptz9v1gU4T^Ls*|n6EFEbBwluqfv!TGNlfHkOoO!YA}*do6+5;? -zR?f1@6HiaZS#;SlaW|5Gy9#eYK~3NKVacKR0*^O^5xvrkk}b4$;8AI53s2t$Y02fw -z$+Aqv>$1DKR!IZRyshBPW;2yd6$=M?KZ|q!b4}_I>*&!Z?aa#A#;X>eyggU?DhjBe -zfVN3vCmoVzrfeJ?PzMJmRsq0w9iR2V*~Z`$DAfc#%3X=Dfs5 -znjJ9*bib`bEp?>RgUP+{236;dMrC<;9j9SZphsm#d;x1A;OH_T3V`7mv3@Z7~?)W<+a1d -z)`>;g2lUBVqgKaAr*_Ev$=jDw*eX_zNnl>{a<|EYaBsw&F?dkw;-y&Y^RqKYjGrb2 -z^f_<%x1FHMJ(d90Nm0s(jJF%*Ig@Wa7qg$q;9o+pMD1B?cO-KqcvmmYc;k`V><4pK2H>Zt7Df-yL3pOH=@6Vdi6ZemFLW&}O4J0T>ZdQO~)udgP -zX7g5fbN2l}>()HqwvHE@>Kue79B831WkhY`tW0BcRW9-id3a{dBZtK^P&;}_PvtWp -ze58aW_s|JPlg8P~D4g?6%Fm(5+zVlYY1y5_qv#fDk+>`7%v3JX%1j)Tn@jHPEK -zCiCdng~lKpEJ0@i`m#6Hvb9LnW$9Xk)`Bw@m9lQMRiZ5ja|!g+Zqc?u#u~-y#HrJv -zMsf;~4Um=4iqJTuteZ(gUTOcv%0czrryZF -zTFXM|#==}pN?hp57pEmIHH(bYWjr#ZSLV@=F&*V*IG&A8^)xi;r{x&SBOJ79=%nD0 -zi9kB$*eGM*ih(2=b|`3J3!3Rg7vpvL($UT1JOo1fVn%)zsCE~W7$jT70t$L2OVf3Y}<%|i^XVeko^ -zGqk)wU;X-e*H^f{ru9{TA2Z>n;oHsa#o|FHkn$bpuI@ -zj}{*-zB?^Gbu!JZh7wnqadTFb)5Mh8MNdUp=GH?gD=;^HURA)zPM7BH4Err9c_0VI -zEzG^u0n)KH2zs~Mj;dYLJJUB`ZLr?N5dq>M>(&;Pwdz*D?3OHSD>q4Pov0ysA->kz -zWyAuuW=Y7W#p=)rxu1qv`G)srxp|o6D0A%W;Fg1jm37jl^v{*GwRy2l7PMGvC#%I; -z`)WO}>#Ryo;XEyAW3A&iE!H|L(Mxs?SKqR+SnHrni?#OeT5LAjD(h53i?t5h5_VOF -z(;{>*wII!hPC|0#GG;LPKX8yWY;I=FtaVIjrLYb<4_LJp>FM -zej8_9UVxQ4s?vl)|xg}vAS;6m8z~ybu}96&scHh8Z%dwxsJ@0 -zqplTob*Sq>T>&c1t5mMjwL-}X?ON12A^;E>5*a=e8Sb^`?e}%&PR`uBxpr&j{>9(VY??Lao6?lY;UVT|318XGmSC%DwQ;nijT8%hDAIG?WoaYdAGwRNnMT8mrWlp)Fdm1N+OsTEPCks1+QP<3 -zNlO*55=g7$MOlO#UwyQ8tOqp3QRqmMT&X{Kdv+!d(eiX1miC^s4L8N?CfwTAHR0Bh -zZNsgLD^0j5KeyqIjj$4B?uq&+OTzD?tnFqWW$mN-DC-cQi?XhNbrJT-fD&izyOcP~ -zf=r3Cc4SJNbt<65S?4Ee+(?<$VSo}>4)o6=?k3#Y`!(S%>q!i^)@vI+K#uXiBw5EH -zO}KTA(1ct2+BSSB{Xl!HQwJH&@&!KJoG|zHTqg2zR)mq8j1J%x-2(5IbiauEW!o>* -zeralpQCoi6g433mwy3maq|lGPRP@E6F9&@A=p?TbxlYzPA?u{u6KhYNJwf&)*b`k( -zW<6o`q|_5nPcA)y^dvDr1g>cx;pQ}-ALD!i-b#NOQomnLy0=P?u)_Po#^^>#1+94| -zlFA2tgS1tbnvKbsw@LGIxpm@awrCvC*s!lejc0URALo9EZ`C_5E@SLSWax8jv*&D* -z7VEwapeC?x6C^CdXJ(HhFqFjQ9A_xeud2LE)5vqLoBip*XwpCRjhd2XKnrXIKZKK*IwGAVqd*`BIprzN1l0_^0&&iPv -z0RyePF+9){LWAU0$(Bf<%)E+ieU6N0WrX)I#}iH0X_Rd3Shm8K&+&Td&AX@X-d8-| -zzA^HbY*}3mm!Gh!u)xc@LkVs;;_*=I;ZCjkA_oS-?7G@nyIYQqm`xv}!Ut;;P|Is| -zqCFRjJbaX8akuxpN%zUyb9uiIol!gdM)9JYw3e=BBSmCmr`CbX;b -zSsVsw;fO#3+j+D-e{RQN3n1LZ1cD;6)ALAzrQ-&lcv`*?g<1EHx;SftJ%|1*9P%iH -zFCe{j4%CD@(=Qp?7(1feVx$}rC;xLgFk7Z2k8&=Y@A14!7Iuj -zBcL?HMRe^t>|tvjxu~m)ahw~rG0p?MF48`nYoZ)SKQd+_=&EoQT;&m~JYb4d?pWB} -zG&$x`9e>w|u6bGI4$@giKo_N}y)uR;&bSo2Xbm(3hptJ3aOY$~c;PIk;v$2^bVNkq -ziV-Z?HKa>uQ^2-JrB1Q|k|~fY7Pd7|A7!1h^--gEw6mKb2`C1H=%As)gbEA_6zI%f -zWA_b%S6RBw#5K0vGwPl-_sm#hzdgfMS!~NxoorNPoIR^FnWM!Hdj{CDJd?ZG{7m6s -zxA3ffB8BAWFuYP;I_bXgo)A}mz)@{F1`?cAx -zMrHk}D^6Ks_Nvm>k+yR5wQ{J$Mk|C?$oF%FsE(y*5zr#|ek=mmYd3}iyzr0YF}o{j -z?6|5+11&gj4~c|pBvifF`@E1BD_-T{!j4N}^lxDF9eUuTg0R_5%7MO&{n{o?6Ljwu -zmfV%EUtcoMcq;C@s1)es -zS+lDNT`rl^98Fs>{OP;Z#yE(C-|~v-P`2FMft;Pax;Q(x)AMAq4kH-nzCKrhKFe9? -zxlXE*G!M`T;4yqkcWvkfMeS+dx4t)a^OOdSkkPSgg4ulDZMu0BUO61`^-r7Av -zTb5Wd*t(`8gRS!+8Eh@(rs?hm4xC%!gXn_?jUv)v1=ht`O;F;j&M0wK8yD$1-3~Z{ -z#JI>Y!m>Qbl=$1J{4fu^L)c6>y559ate^?EYHGsm19cg0-I8p=UDVP -z+;$rM0kjTAS02)#EmBg3zUPUT7@d|79=l>*p0dDWN#NMcd6mE7TkbP2;>}B-b|SP+ -zs`9PmxkEMiOX+^hkv&Y{{|PHY4_-sNj+!W}`B4^vN1REBHF#LR^L(9-#rTJDKoLLQ#4HsKSOT_cckgrSw`PzoN0H`5PTV61bBnuhcRniukzv`sur^S3!Tr%`5rT-is>}mnemxP(wp^Pr8!@HB -zV}oboz_?*e`^ywHl6Lo+BrpRx(AP+cGLVztRRxZwX}E2q8f(sazG?2L*pubTouC9q` -zN8Zux4f@o-72%T__EE34W_H{*8z@NH*iv` -z+*4(gF4kx;!vVghu($zk)-x`ZM|JFIi1Qe{rspmP??Q>05HlfWLd;~0nW*PN#4m_n -z5WgUPq4A4P-aeD&acCZjW~t6oAn9D|D)pYdJatDG3utTQ+Jgq^A`2szNgKcRL#IOp -zbm|W)VNFX4ZivQ#@ljj;Yo>s;*s?D3QQ@EK5WsTCg?qkVrfe>^dp|*3@~5v<^7R -zGED>LY?ka=43?|14L&+t4wA@*d&6UJ!;`J+{OiW~vgHB0a&012a#aY_o>6n=lmXR; -z&`r(yP#Po9_U+KE!N=1h^*!JZx6!~PrPXQkc+n<1isxrh%*cqyc&J>OXs*M25k?{E -z{%3fPB=_0prU{dWxD4^ok%2UaXqnq$)h3K7l%46JA1_;GFu-088N@ -z0Z39=nxMH1IDQDsMa;5Gg|ZY -z2KNn78#^-A-$iXOXVMGq#7K>-z<>~CqTm`rVNkE{HZOeJ{#+Q-qDy<+@6!2os -zp;WY%x;1Uph{b~m&C1Qj`F`wd^pb5EY$2R)Q6J)v)gC9aX?FkBz_z1pgY^cEO#gRX -zGmwHbL1Ejp2*NV8EtG-#Bq3Y4)~^??mSJw2TzhGp@I{Ij>l~RX4x)C&^PvZx+|8k8^_}wt7^{jsb@-m5%Ps7AvP|W=@baL9b3fR*2;F-gwoiAA8 -zoZW&g!wg2psWLD40(R&?mWjiFS&g)8|6!pao!NHOX^=8sI{vd>e*=j;beees)r*a# -z$YwncS5{>i+D6F0B4N{O8R>7rC|WX)C$>5BmSw5!U-yu6=6;=NE302i#_Dmb7i)zm -zYocETD&4D;Zql|&%^LkG6x-8iN0k~Ks+8B!nn7I#JsA{a&`eJy23@q2;F$Yvw!8V& -zX0)Bdu|qwYoQIyAPu@O1ZP=yPzcy;I(l*X!vxhk&@2k=aA0d{6eFab*&C+&)6Wrb1 -zHMkQXK?4MWySuwP93(gdw*bN2AqRI4?gV#t@*mz?b?-^uuj;Q3**&w}Jx}-a?)2`? -z&QxiQBbZmwlo$2sqjOd85sKngMG(dlm(`9}n_9z|eP^O08P6>*icPvS&xRgLQwj@$N! -z5R~comQk0l0?|0l?;1Cu%WJg*Wgb+hc}MHB$@f{L?l;`RWTOiYtf~e!-KwR3orUaJ -zqen(wEm19TJM(5@#ydCtA~cR9WT^;mR*Sz|y4>|}Ei36e6UsWAI!#eP=cd6l -z*0A-bcjndEjJp&R5qBfC=_sfE@RLZ0E~IdP1kb*2(?Gj~XzaE0o01SIS^~T_13|*i -z$jV3EdvWzq1U7&Jf4=$WSd}dwWjW@c^?|G)<~uDs={|-~a@{&2ebr-VA)VMwG|+YV -zS|&`J_(1Yl^mh5x2NWVfwcXQk$N=Qmf>X2et)p|Esw*6}paBbr&87o<7{~MFqh_8n -z-#Ml-z4sB7O=J0#59hN-Z=F;NIT|uEt`KES)%oHl=at67oMxst2%_395hYB?@TYd? -zgGOl!@eDk<$D6zbC7Z{Q{hhwq2) -z`wABmU&BQmI2CIK_zoFcs_GGOeb8oAs0lMIe?SV=t(e+({>fP_`faP6Pr;3nRz(-_v4f`5rND~f;d9u9%T7DDiEA-GqOMMBwyB=pQ>4kSC?#-m -zPHFK!3Q-~ey(@lvB2H9i11PgZ@y*H8yVvqDk03ko{K@QRjlu-;Of0<^pCXP4N1d&0Qz(F`UqA>Rjm#kem(LK -z3ACMrzjohpn==^k(nsZP{W{y^N-0&o{{~l2|IL&`6&-+0y|iCXh`NOhFLF@n6SYA# -zQler}DNqk)|C}4AwYfV=qKw(ldHuVLigx#uhZ!8SnWa=_~Rcf_cIm~d* -z@I~(`;+mxA=;;W$Ex(iiMEK(ffuC~U=GJXaF3{NOrho6_*y>F_SrrsDTxbC_%h?-F -zTBSjKC2zATj6Dd;hp#Ir;p(he(l-d&;;Z>!4KK&uS#M~`p*HrZ0WEkhJeSVg_-@^b -zUCls=AXbf;ZxQYSsvxRg7FY>jt-I0=YEhY*#O(ZfYEfh{bX^j~6Y{+%%gWdz4PND2 -zWfrIL*M#uBLNPoq{`MJf?5E_Ph( -z&K+0vFTY->wM$y!blG$welgw(yO<((ackDTAZWcb4K9q;&Cl$U=9hK~G;YePRq^Pe -zsFiU{dGBWbHOTnuqJ5}`VuJWQk`9N~!mB;;NhGmV>#{tJ+3C^U5t6hESZkb*8k>p4 -zCoPm4Tvd<_C}+48I6UkSCemigd0*mOlax41gnP@V+FGl4CqR#2@+aSG!T6~X=dppF -z@*ydri&Fer-`ShD=H_j6FTIm%;Xl~lKO7=9uVZ-2sherE@<~P&tIu7eoy9W$tu(n= -z&=mZxvhbT6HLsZLbR)FIf@50@A8qzx+TSy#ZjQ3Vt*&UL&n_4%{mRR>>PZr09{GpF -z7ihpqvxGaDRw!n%+(BJyj@H(UZMiS4ID}PP;cjI4yB$MLnv4t;9}o#rpobtc*EVMH -zDY>wZaIEMTvML|Ud^@SXJ;6UDUDH@;w##i&Vxpkn5n&s55_8cF+5sIE%iR#+vm_(b -z$y%tz>)InCHByw^Ygkmi`XrinF&Zq|Mk3@u&Cv~Q_n7~9IBWVIXG3}a@O!ma(`!h& -zRglUs@w28t^qGXG`^BPhuq|r1l{Fr@S4N?VYbc4Nc`Rfyw!#lDO)BH@gc1S1E9)95 -z!vhlzTgBt_-Pql;t{kafG4JEa(8$o%#n~muMaX}IQi!YtM6t;2N?_Teo!2@?PiDoS -z5}_0MG&qIPI505@sbrE;#!uL_M{w%Y>nX{nn;mGyj%Lx>rhSUX9p`bw -zKMv)-3tAZCh_J8BWWe0wv#c52#55ozmMbac>J(Zz==Jq5L^l#Is;{d@Y&dE+ZhU*n -z1Wa4D>9lS!!LyN5NocP~XTh)ZQZYd@Ea)owutYYdP19i=Y3v#dITlBM)-`?ANnOtE -zjeOM8E16(fXFHC~bMCF%V$|Q%}BKDKOnoQEG&>FbS^gcppX#Q_&K3}2OC%MQL -z?N*ZZbUNCvG7Hs;M?bDQujT-%nDIatQtm|N-sTV{-hg<|Z1QnD{ktl~kU0yRA*9k7 -zdaF+M(8D*iN3Jd5^`Eow-`159)v67ViUR87>{`?uhq&6u@eR}o -zFHiT~nz6S{sv~&Xx174f@75ldf5I>w)y73qx0p>vh{3kK%N-*9I=vppfjJNw2@<@% -zGMnAhj4=}o!7D1*NC=Rn#@^e_TbB!DrT?}|o4YO$X*PcTJ9G0!pnYebo@AD{ -zVX#Ey*y_|U5VAp_VXK;6SB1BDkYB}S{#+`UqF&(Rj>ns)NE2plr{~(Jg-hQaqhC`Rn79(+*Rcyr8RJXvEnk3}z98d&wEt -z3-j&ptk(B+#xgt57r(aaL1Um5K5rbwPtv@F%zWG(z>vMWMInJ*zqiMKl0Pl8C6-!0 -z>0Bd#%Y+fdxI-ZkPV7i8_~n+%xarG-a*>;UJH-0N2d?L>Fd6y~VOWoTqH2H-Dz=XX -zuWmkn_iTm6Qoq{#-edMDq2llQXC*9IHZ9L=e_eu8F{uE^=aUu-) -zMEWP#TgQfT$!{m2sL(jY7SOgCugA5$bcn23@5%dAt+U`3$fF>jzi8l4BI6;ckI#MN -zq{}{@9RU_~IO|ZYbXc^6VC+HYfos^3q8jrn3wbUNziz3C0lmZw9D+KJsIYXwMh|`DCGO?uS;@e -zH@{U%0&b^24H$N-C=SgG-%%R6r=EIEHXJ4iuoGRl%3vQRMV=%vE-=kUYty>Os2(RB -zniLulFEY*BKyHk<%GA#>sW)m?mn_E}akZ}4bRAf`N^hTVwLVA3@1IDvKif>Lop2#l -zD$LW(+th5G)SEmm&qQW{-fm`8JIyAnn9L?TTkIsiq`Jg(?wGT(%w$gEO*>q^NO%r&GwAS)rh!Ft)*SayguJ#T#m4xsbGd -zMR4!fTFwQUc0I~yC%*+lzq+IrOTl#s=ApBx>-d9fu=o4s2RNgaDa-nYg+Z6T04rB~ -zw~hzBtro{4gBvBla|(>(!X>)BXpXuxH;luXcD)8(6c^2Ypp6ydTp5B_1M}%}ed5J3?hR;n*fnpz$Hu66 -zuB;HS%+qbaeO&p^?nkStO~1o>TvyD&q?WSMEgNgiW9lkKSI7vv23{oBwBXYxn*kS1 -zgmoK1q#^CGpP;2A4x^RMqWeCTEGKnYGz51nMA1pKlgj1Y3w3Ky!2pHLS#(!RT4nqpSL?uNiAi6ZeDxw64M>X- -zH*)$RSLeKq^^i;2lU2j~n2ToMoegB%iRxZ-TAUZR2E7Z0EnxY5`J6S0+F>s|U>Vz| -zia-myMb5iw(Fm(W(YA^pIHBe2r$d9Y#&JFN;Bv2ZpSO0?Vq;fHiv1tL#0${av%uao6;=26LgDu%>?MQTDj&7P4voLQ(^P-> -zQrw-{(_h-@u~C^01oGYidGi7tiG{>^fV@M2jw^&;mDQXHlP=cO(dtP;x3mb;IRtoi -zegb(>zCoSnNuv&y1v=crDhK%Ttlz_OK>yYwKS!Y^*I#u|8x0&76HW=fgRNoB84_SL -zH576*GtpOk`OnDFZu=2AwX18Ov1*i;=R*6NwABUjNGo5;?}j9yP?Kon?UFLVabPM+ -z@BEC#?)dQ5dTC)56CbCeGf#^Z;}_&nuVj;o6S2&Lu6bv}5huItu2dJp3n#s8{^>xuBDQaQJPod}(`K^e$Yb8HOJ;~Qplu;rM_|yRh7(cx19O0);f=G~ -zG5^F@-$F%%<7o$<(^OGYRTsD8t_JF|vw2_>j;lrvfd8znC*!`Y71D~k-a2%r9iy!5 -zm~*=X^zgSfo?qZ5L)FZykS*rq9aHD_@#&K5zN-VQehJ&me-1f>j(j%Ua`IAZks6M?SW+W7UR*bzEK3 -zt3^O2Ci6LkI}046*@2b8ya<#s^I@$}BW#_-fsHxZ&=XK2jD!XR_PN+sMmF$xsUmM@ -zho0Og!Ctg)0iU#pTTRu88Igivr>xyrk>DMdyBvszLpuZe>gz59X)k^PyF71mfa`pf -zKY^uY&a7#=M2Mynz+pbV#<~e0A{AfCtGqxQSEou`Y!a_8BqXwDXTWJ35&?!YASyly -zBI+4XmQg4LeWQzReXUH{ft8BVRo@^q%Z~~cL)?M2Mjkl{J1#JsjK48!9{4VcNcM6b -z7|9{*rg|Qz>3Q4q$>&sz0a=KG7Fj2^2UwWY1658voqTi(o -zU3u?v;oWlgJc(TG`D^iFeer^<%#kQ(r59_zB0Z;xfz#nlcaAkxXw8Ny@Iiu(^qr??Nj?A)1pdYCn_9Imc -z1*|)cFfI4gh^Ohma$a<5$8x6U;FuxRUD0%yF|Yuw;0? -zvixJI4gZbney3nha0`Dhf$bdN^Z88%Wj_4b -zV8_{+DFVBxxxi6dJEXCYZfedFJ$`Ix)*$3%3p;N}vhY@#C<@QR`1AhS95S7?G0N}3 -z%+o|Ufmp$oSkO!peSFmqnDcqK^9Ypn1(9>dE>^Cz^#o{(l-P@$sEZuvi*iv!a&@V) -z2HbD$N5dck(Oc@m1zW=9s=}8ShM5^^JTvD7#}3_xjwFA%NW%L4y1vEal3_X|W3YN; -zu=>t$2+wjz1$w>Be29#7U4(u8K7q?R=~^J^dM??eh0slP;fVf7^3(NP#gSy`(cTh+Zr^$H0duCI|^>CVJ-W2|V6j+yGFWY`Dd -zyhsVp?ZtVITHAIn>vw4=f(H}pbEpv<$rEN55;lSh9`7_`bfU)V1d{Op(UP=^nbVPy -zF{Ki-Lu($jS3*r_f|)J&6vFoH9QcAdw;o;}XALPCNBt!8`rz+O5|pGaA{=wiZYLBm -zXrwmJ@_tc{#z}6rO(c@bC--hj%|`Ip;>UCpJmnFp5=%t&J~Y&hdCaXub{IcCYA)a` -zDYajXx8eCBc&nkr;GbQfO_tO&e-i2#gOmf^1&c$82&s4zZu( -zm)W0BZ1;415Ps9z4CpS2W%V#^Dn~}}ZJ^q5wzmfRCN!MRo+q6#*{Wy#1RYss7e3Iu -zJ!sS;lgA3(?CZ6GN)CwS3yeKOmNetVRSyNe*SrP&3uELXStq!Ntsj=!)n{X$1;n~A -zOV0c-2zth$IMRwdZR=4Zk=(UML`bG^swXVANXI_7ZZA9~cms+4h -z(S*&bko?L=O&obNrAk3rgHLw!vtKDfvY#8Djsu?zU}iLz8@m@JsirJIe%?o6NE8#P -zE-)GDW(40$VMG%1MOk3-#;x>(!Y)4YQV@@(kd2N3Z_kHatbL&WyMknMR@8KI6rw8^ -z`_eod-Zq7IztkXMeB^noIlUxm8*XZ+!8;{J$s|)Yu?0|G$tc;|jEh%eV6*~=b*Gg| -za^@Aw+Jb9Kpm-vPe;kZ`PNeWIlH4^GoD98!W3nD*pI0P=JuqHb4y;tnWHc21+<8oX -zUESr3QCj&k@G0PH583H#Kfgtt@Po`t?WBK)m -zruQx&iRYFqTM<{Z2M+~edShYkLGgma9R>Hwgtp@y#Kh{X&@G@+vpB>^{&Sn%w62ARZ*K`SHw0=Q}I_G!5^S9^1oR88P!V -zkCmmc!c1V#;m)K-Wy+J6CPfz3J(DBWFp9kI(Vn!2TmX#L(T;?DEj~*`olG?KhPe4Z5cQ;g=oV*}`5CYW@^z^h8 -z@N!&HPgrUlq{`I%c!$pmr0R6zDLuRezzYGr>Rr;Dm1XaW=Bg|H;7au#b5Ay;@q>bW%*ZM^-{_0p%3#cN59}m1Ppn@CY`m7RH5bmt$r}T~& -zIqKsb0@>oGT$emsXFB}icV~g!2Vf>BDCxC}v -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 -zu`%6NAFAgs+?;m^iraZFs`U!gh -z;?nIrzRph`zXPU%K(qXJLhKHih$0r$tXZmw5bpkV{9G*FgTg(_^5~ic|1jgP^|Zt2 -zD;z&{=2XwPX_llwdV}d3&6QX3arDT}yyx+{b1lp4dvaLRson+a)uRv$wO(35aCTzO -zadA+RwgS%jqoeQL_9KUD3(<$Mr4Llen@xP4S-vhrQjM|>&+QQJ=A7+1=LJqjE5%&3 -z9Sg>;E%0`wHD%(4bH~$qT8F3RA!^2K27q%9^Crl@v%*IU! -z=cIo<=MDnUA$*8TT8*XerWu5UYmqU=14%RYjF;_0Vic%G45^hZ&n&gVppzxsx?bBT -zRAhCy%|;m5m{^)T7dDubTrF_u@#%bHC$?3!>lnN%9cB~m82DN%Zl_x5wF?|`=0ckypCD<3kr)XqZ({&>t)1;NQjFa -z_%Ig*-;da*3TVtLgrCw$%49u=N8Mo7_)Og+eY>tlA|&x|TT#o@!$H%RpHMRxKS%;^ -zk_?_|85EMVFWY+GNDg7!OSI3t5o(#K?6p9Kb2|HU`><-QWmA}az{WGalSeBY`jayM -zqENWsPdBIsJ;)7}w~brjVDi09`dBIk(CxqN(UiTuSoONv+`)*!(gGlLUV%P=+DlXLP4CsY -z=eoTlXlsRz>7opRpmrREjJacAXd$V}^+RvYm&B`%aMgx*)$3+36F6LeCnhLH@|nUy -zNwP8d4gt~o5n;wH$XS|_bx}kL-OribzQ2%b*o{^E%^d&vt|)WtR6l3jmRCNpXt)Dy -zVrv!br~9UMR@V_LI~XZ0Xv8@Wn7P_*VgR{-X^QdP;fzI8Gz`alkW5lAhaRf1B-zEt -zJj$!NM7T{!<9ixZ_=jco9Y@l3mkxd&FF(R8 -zp9}uGPorrH{t{J2(4Q<4Z(IBlt(3$Fr~|%ptVQWl4y;H=)>eG;y`V#7vMI+aU9Vh{ -zA0$k|93ulwp#GZ{5h8PKz0;6nRT15GC)F5Y=akuzSUU-zRJvy}&`=_>0{ZwmT&>c; -zw|v~OK6Ah_lvI^bWU{~dU|=eG-{%Vr(yP4^JC_a(Q`M4 -z1c`H|PP~=3no-hy$l+~w#Aq`}yBWvT;g#!ro4hXJi6eNr$@Z08ygnoDX+Ji}RTX{H -zpmN5fw~m+f7OY|T)o^|_NR6p!K}dm)@A&~-oU!696G<5M|jG{ -zf(l7d01b>Wd*@P9$$0g(=6a-5T|OFW=;y~@5vy^YJ!3lU7T@L)Nn!2HVuz$ILCa#@ -zs-}%~Z(7z=EY9v%Tjtf=s_G7xciI$59C#2a8l8#~JgVNrQ^ -zekYi1sVC$D@pdR851W?-p@35JBD-CRR@XIX&qmx1(k$|otjaJcRaRJ@n|*IMr?$wn2E5@~im3ALGz{$wBN -z-i!)flZ3Vkzl0jHt9sW1Wm|iC{E1hOnq_C$7G@IvgjTB@dk~l4&K|3$wC(G03bWc^ -zN$iHc{vD}t#Ct8HV-3(U^C`)yTOomrL!i~*q&H`OWJud%Y9lt_(K5ZNp+vL?X7RhBy(3j{HuoU??ruLGrWRbn -z`uckU27k>Q_V~vn>Pp{@E((3>G*t%IPM#jkW&A93we|O$aUvmInBThOA{toHje|=U -zT{*%I=&d}Na#_w4e_FQGGqL3V4ryoRM+;Li?&k11vCD2ImBZdL@oU!PC0FGsiOoum -z!x4A)XYas6FX3(j#d*2khD?^qA=THv*qWR8*6paOlRp7XpR~g;VsV$87_4= -z{jkn}I(@#5rN-E$qVYX_kxFDeJj2UqA^7U^d#fr#_ilk<|EqigQ7jiP2v0;KYgR>_ -z1m+N4%53KT&Utj`S3z)T#)Xbw!ufiKpUR~v -zUgGz;0{a~6XnsbHmNbne&9(JtX^+15bGB4|5S$6QQFx7`y$(C-^WkC!<5K0XLxZA` -z$|eQF>=8SWeq(psH9s}B9~TtS72j!qsL+k`p(uXPn(%!9Ju9|7Duo?52*j;Xu?n}i -zAJU^)EsNw(Q@r;iR@e?5BdCMSp#s2O)}OlMd;FRZ`GV#-lc_%ta2$D6Mu&f>HC)eC -z5>)YV%VKC;ahl?6&G(>&beVMPHmff4Y1JU1WQ=@pG^5Re+WS!sp?e}f*AvW-?Lugu -zf_(ZDF6d(mTN=IIz$?1WcCvT;#YOn2;$kG$Q_Gx%$J`Fs^aQBbh*m#ZIR$l_^014m -z0_$C+^$#EBMfl_2irj-%fV2^6)gp_DP@g0$DZQN`Q|PqOCu05@h!DC2g|P7*jgl|` -zZh=tn0!znYpbPX|j(i*K0%nj_bu)#-bWy*`5>k_s?2Gus?L*Auh^?|A)LEtfPNQAd -zP2$uvi>Z*Wz0dO-0ydHCN}ACjW3=-Ee$mnTO5F@7FF_HfN}5HO#X%(6l|(r19-aZm -zq1wTonrr4N%)2io{eD}#3i4SQAU8r9{D=r%|IsZZMf^I_{nsZ0_24lWc}jL+g(;PO -z*yxMX0I_a-0Cw8z&-U0Hu)cIk?OOyZa2}&kdfma)OT47qehWvBd>EK?{hUi90EF9f -znH&AUdBHXQ;L-sm{%%IcF*UFIjYlWF0@KPb*fzL`{+yTj9X7-9?5x!NVo#SUV7NYt^aj^-BLPHcGZ8;RjtdWBLK+ReD!HTAMhc@m -zKkZegQ-IL=^0Vl@E_KD&sE#>JS8u{=0UF3OdtXgvahLo3%izFGzcr2f&AQR{7w~K)! -zIj?B`9Qb~^iA`ZI#>8jTN1yXO?$fjRGzA)}4rWoiyGsI7yeZOWIgQ5+04T}WyDFnQ -z_uCnLmjU#D|HySqQ|Ub%6s>aJCcrd`$b<=%8fcQp=*TZCmHC{vu{|<>H7`7=l70-~ -zK$daytnEu`ty@0kQz>(N!SnuIn^-8}aHhP*MV2Oe-krzU+@dto8BL5Y)0I6gy*YU$ -z;$@Yk*j6~UnS$^APZpo+p)9%QjU$q${m&g<4~toN`&za5S~Waf54=U9X1vlP@z4m^ -z=jjOj-a=!OVm?+}X>>Aq%n-O@;id-U_$=2c{=@Rr%+s|65Vo{prtTvgwGA#xmp0@r -z_nz}W;fH;0;fF%d>LD!c_vfbHVy~noM3+&GhpOiT)=4A^c$cnEnwypzmlj+&%Z56y -zcvsqsI^l5D4beD8;)1IZgr|$Yn7Bo(@3$11X>At5>p0KVVW0@ml*@}u`7uPu2$qu2-;Y=`1rV--8WI$Fto**HqKcHzyB(B4}b}NH<05MoKa!s@(NNZAbb?4 -z`b(x;$3l0&Ae;4*Nnf#23ZIloW?35^TbgCnW8n#A3ID-)xEOcLbhZ4nO}biwUN9+e -z&i_5JiCIc|k+wip@yL4+j5mdK-VBm&Ur>GB`2}KY9+Eh@9Fic>W$89I5`Ryk4f{

Ore -zLy}wGMx!HYh-VXmn8cy&aJIb?eFhhCGK(|e`16gKfyPkk7qXuH4k1%qn~@wVZO%k< -zXRFI)()UxwsVmmSxv8W%=exy|P|Pw5eb|FasH-t-lG?m9?DyP&AuM0GoPuj&+*ZQ9 -z>vAA8ig*)lwVN+{J{+R~&a~sO%OSX-=X?MzU&+5@dPU37_oIhmqXsp7J%wfH^ -z38vEO`3W(AH~8i;V98a9p6}uq1?7&)2ajO1xl;uM$Uc~u7VFu@At#AC7&X+n+&bJwt2RR_3NL_Z^dk;93s6_D}V~C!nUIk^4hbV -zRNYS~p&_HE+dE@NE5q&9YX1U~SjJfgu|AU9Z5h~(qY9A_PcUWr3vC4eGR7M=5(V&f}@=?Nc>Kb9s*7dqdeAvM<{=_4e4ho*PVu(v -z`!^gt(U^wyKv$? -zR4+lI_=C1#ip7~9Y4GYx2u*5(r<#XSFo*2Gk08{Wp=Vf4IM4IDMmJ8hlPBEk?DfzybE!FCipeygMZK&3^$6yoV8uG`sS)rkya{-7)T&yJq -zPW%4&HvJm7C#N#e&Co>kYhGOJih&L-h-%JJ)8skqpuxydMbt2?W0db!!-SsNQk7mFNeuFuGD -z1H-2WhMW&o43VzZl@q|;~$6eD?{KtN;!KsgMk2j(?Z+EHZZ^|?f}NwguM@Q5jJjZ2HiOW%YdN*IOtfR?aQL0h@Y)o}ga@sHo0c-L5AA=D+E)@vi=kW|c9Qfh4I@6YWEBrz?v-QIgN5fIN -zack(JQ5vH(h9nD6D{v$MY|F#x-KfcVg$KU((F;YnP#7D{-62x9_05K&@ZQk^MZB^p~ -z-8v)gW8h2WZ~h#h86xyQonj$QdyP#c2sVRzO~0CTOxkb5VF9+BepdITe0b*Y>7fR% -z0febqEGaPGXE}#c2wR=z^Z8MY6QH|y -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 -ze)mB -z3a$Olb9n-vF>mNbXfsK2`N)T6T_*IPE|xNTDXMVfhbX4Br&m$q($=P3F0JRA?#!C` -z&IlsbhC1%e3<>T@{p$EfT>;>Pz5o4%nRvv{{824T9))cp`?5X5UeSA$=iS?EU5jpe -zc*2;YHD@BP;z3$C-N%19x*ok_^N>(y@x_YHNcbT5z&8{QV&< -zzzCV`dO^;ZvZF1|)hxp84B4y+Fc=$@>W-?qtJSn2XPwYV?|*-WT}#!^z)++xm%6>{ -z{!`T0m6J?#DO{p%Mh*FOlYQd(P#Hfl9Gm*GhJx!=46d0kbW#Z0MWVeJr9q@n=72}U -zN^vB;u_(^HyQ*5VZXm`~9vnnf{@ShQ&L{0cE|oQ>{-6SIz2D#!sQ^1b#J~0BKjTET -z7y`fnO1Z7~v+qV4T)r{q;1q}!AT&ZtQJ80*#dWT(xzlbqLB`*+f$?8(v+b&)RW^rx -z&{Li%|KamS0zo8`8jY=2;U+!ZLnV7SJgd1CVe&6VN}}*4i#I3?(JBr -z>c@mXvrYRP(ew34mLDh4FTv$H$FCSN;M5+4RP{Y&NB)xL(Injd{Nk;!X5$0g -z=@FVxQ{XsPHV8yMKBTNha^%}S9uX1T`|RXuORcOP7jlh@*^ijVPPL3yJr+eWJH3q# -zgrGr7f(*_Hpr)b*LUhCLd-&gN6cNCau<|E!wFve(%59&Pq3?Uu!RZjqkZ5{@+!gQ> -zH^R3rS=DAul9h^~mgxlta0-yOdZHKq9M38CN}J-(M}oZyw@*8)oh_05`CGs+W^@94 -zzPI{mA=WkRi*!t~uWriQCx;gBC4JcbcPW4-n{~{`?8)0$rSOG6q#rnpzBhAHiR&dd -zW!6f`q-A+p{#J}7cIueuir6f)6f1!Mdk>bh^>M_HYQp?jSy?0YwGg}2wSg02&rb)esmbJ4W?0_r&!y$SUz>1*Fcr`SjT)|6Nrz_se;m#p%^NV~-g=TT6i(9; -z)mYjn;@h(k0Z2kj=$VA{i>aL;_k5wP{Z?25j7{`G1j{D!aW7lf)VuJ`Z`A2r-y5fk -z44=7+YD92+k%}%3Em4Xh^n7-fP%P?A23$^0dx0%$lfn58+Qr=}%5wvyYJB+JypX$k -zv6CI^fr*EL>AkqP*EsQ87bqRayhUgA(zY+*qOO35i&UY&IXE -zH69${Sl_oYG)||}a!>Jz=X3q|-cPzx$UK1bGwJ-U#5^$RcF-*RR)CQLakEd`S09*E -zan6m?3Oez#*TTn0y_afuXjemSy#3pD;7kEtG4_27x)92LIWTbIq+=4ADHe1bsJ*(*D{jcX -zZmBoq7==3Ec3yNBzv()@jjI9nTABjCA;yaB-p%MTjtRDB$6I4pu?sI@KxO=rVV{pW -zg?*e&v+~p{L`QaWndlzGCi<35nOhqUeVQM9>H^xw!X|tnS0K8{7bFO}k4gl5~HP+bd==5z#*N9637kch%dfjbf(PscVo -zrocZ{vtos_8_0XvY{c*N5du%LhRD>qQ%>M~2MK%ZoYls`&!fj~1%9~x$7OxgX3R9I -zaZ3WZZu>VwEgphzQSq>I(V|fzCP4oLoW+2|I^*EpuD~mqT!RX3kfruYKX_e?< -zxt~NKk0<6{*MPf9xLRzMzNbQ+DVYq(B@=1E;)7u*;9@xf7QdNsEfAV!@{8i$><%oU -zRQLgMzNY0U=Sxbcp422FB!(D8DWX%0a})+_0;>(_@()pXcAu*EmM1Q=btD|SjBA~e -z0?NZiOz~WA&27OQ8tECh@s1DzOf;P+H-jGQq6v~f`Et%o1~J&e43uScP+2i2ETdb> -zXTJOCGVL|3J;pc5DZErDo@RxJs8@|73*Hg_=49Riru)s%0u1tz=@tE|5LS-0+--p$ -zl6AroHUs+9dEtvnlRVG>zP*IAF&AMD3`1AeYE`xh1WfcL!NuS+XV;5$aUgHY4`Hfp -z2iIizfN{rQ1GgY*8WbKcyZ_K%iO9RIL~L(A*-Qq`am+o3qP}eLKDY!_`J7l}T>EY~ -z^>bAX$Zmsx!29xbg%C@TM_gbMHpm~J8bud}|*Jbt< -z83b?<5U`;mBp4b(4liFa?^ZFiotW+i-M#EU5vKN?`!Pex+K^%HykSTz7iP__!XTtD -z0Okxi)2`V7&#L><#~wSYe1MID_)XA6{h#BUMy7fb(6{l=G=y%@yC=+ijg(coh9}h< -z&egg}5Z&Q}DXnI_>|{N0&IA!6g4Rxe@WrjMype{@93Wu4uG>si*E$-{w|#I3bubwc%mb0@w-O4hL}A -zxE;CD{nt~*$flWkpLw4mlN|c|KaZy~n>LjVzV(P#m^~{|TxxCLLylJru^WqqA{jls -z#XCuBB%Mb*dE<*m -zam4xiHu$6{pc=F$Jo0w5XZqxB;Fw>KUe`WBx~Eti9w146qx+s<@&@HpwzwhdJy*J$ -zO0Jluo}!j8@7L0Qb>chD6_3f+mKT!L&u^)Dk0(uHuCC{$>fevr5dRKNB4>!yL& -zdq{CAC{dsW87nu})!M8ykp62O_Rk8Y6FrFeNxtPhTP6$pbxuI;g;HXqvyMhw-A^qv -z5C9%<89&{ipE;bZ;+8x_Iw8g17QN0^31hY^6m(Cr?-Yaqh20t1~RimKbPKC46aAQ+(E2g0${yD(D0j&t}OpBs>mrGr$vS -z*c_gISqN;w=>Zz3_(`2AFSq1&-*fg9C8`{kc#K(1@1sHem%GKH98=)HP~9#xCqMzn -zCg`pXA~wAi-$@+xyFlbCE4kCjjkDur!OV+fP^++W?9itZao5cgs8zt6!1SdBMuF}L -z=tn)-rgJKs{&>!d#>Wpnd;U5tSZtPPBa(uf51v~dDZVi<-TPi0PXqL=5qbaMOfi|t -zV_D&xhnY+)CSi3inLjf}&)ugV0^tX$0MIiRkA+4K>+YSD+9WRVF~MIt)tvE;8x(~v -zQ*T>WNTehh#1~2K6=WuIoF0?eM?TC#>&^xXy63LR`oXrkz$25X{U(e*CDAwHcpYdk -z(=QSl(Npi>_8?iN`J*0_t%rM~$Aqqy%l~g=nNCao*qv@0%g}e3sE{m3<6#V=l(bpI -zJ+3dr{SL8rxJNA3Z{P&o<-UPFG{v0lWO;U?T -z_qyPhY!f5_J`dL!QIUI_;Z~o3W|+*f;AH4%A&>Uu2ec>vmb4MQvS%=-gur&j(APS# -ze#T$zsfCN4)i62FSpwPJ{v~;Tfkk=vumRjNyb-X8mX&tu9qZ$z3RK~9~=#Gfl`WT34&oBKc%7&Y#HXOru6@54Y2^+O4b6?Z0yGiS#9Jh8j(_Y&XqibOl@I&@9=0`d?{ -zwG*!|K2R)x94JH{cEbYStQBPLrbBld<~A6f=J4@jP?Py;n04og*Fq9;2P;|;V(t@S -zpx(x!F5x=IkL4!lgW}5<->x8$tIW<0%DhNjAD?D=x#(*u6Su+fJk2NZlA;s3j>Vx> -zE==xe6Pjc|LqKnslLe~TQuWw3^t~hW+sWF|6@s%UWB!vxxMRsp;WdfdiR~9j-EZl& -zmQBI6z7Je+EiXNQEX9ywjk4CTr@A|ekx7BT!DP0Lggrcoa2VQ2qCUTQvGZ0oJ!`E2 -zP!#O+t3*jHHR^9sy=$l$n*KDfS|GceI`Nn9q;pep;60%-mSx=%Iz*_lp8Zbqoe3w` -zQjxX(!sGC{?l(cc0d90uo99S%%yKTiLiQkZDMJpf -z>z8FmxwP}6&yC7zPsHgug8iCT@US5vTWtLkuFB%#r2P%617tAH|R -z(4Ow{WM6Y}*!iK%8-_nt9`j-BS>Xm(%4%Mhubxa!7~Ny{r((7~6C=Fg`*r1+H*G#a -zgc8yZ*q5!da28y3OZ`&XZ_%f>lhQN$*qgS|{lpH~POo^$>ZvvWlp5zd -zP5S2;P<$$xi4blt=6%DlUD)JX;t)-1_iq<;5jZ0znv!TNZu$no^h-R**$t;V*bh0{E*( -z3Ufz}se?Ed8Kdf{F7AkLHgYUQuQQ0;M=Z?Cd>yi1U4c+rsBsp8eQN+27VqxM!9fZ) -zrl4GKn5UXqN^VY+j+>l9$dS9=Jp`-U?5)aS|3Yl9RkQF -zY8qad^_jp$*hW9<<+aU*E=cqR#h_)W`ZtHiVJ{`o@y0esYK*UzSPsfvA8@pN{k%(y -zQn|K-e45o?QfX#b$c|86QcR{U|Kj%qaIDc~ -z+_Rf%L}v`tGTyf%Dc$p9`hjAtSs55#zMpnN7G(s^e03QSuITRylf@nPfRl1I(loPd -z?EVk1Vz)7?d;LXVj4JaMAr?r0C^Uz7Eq?4*r|NssfkgarzK|u=l?Q@3jj_+zLn*Xg -zd^*tr#3<#I`S62U5K^pZx~jSB(Gl8vA=P>gNc8%}gr)J%deTog2gP(p5Wlo6-ZI;K -zmj)Ny%N*G=rJ`0N?0d5F*;Gd*0lW6^z^k;zGw(G5DqLhE-rnTgxmQDaAfNGr3S7FA -zAuDh^nIW>8K{LU2n>bLGAhTkvX-OrQ(AuG%0Jhplrri>!USP1bwWAt*} -z&yMZt|KA(Pw_v@A>?Wmh;qcc8zaJg5^7jbh^XqX)n15)=Iwk%HB^j$Na_BL^G3zSR -zU{Ch6Ie-qxG}@R8k%>Bh;8WMprYI&HiEU>z#aH|ahwY;e(J$^-I}Gfi6*;#_2`pw_ -zyN#{~uMBZrjQYR=;yH-}vpVyg-{F%y7_daXzC?ts$^tq+c}}N3y_+wv@tpspp4J{9 -zY*BrdhU;~0(P-~q6j&_zvp~t~ru^1Zc*PoTzzN`&C<*j-efNq57!@#ebZcbNUr4&+ -z`c8;)7b-It16}vFo%}Qg^}u_uieV3;?X*nY5+V(+C>FJPn3DVijLH@Pz|X#m6wrex -zk05_OA}bW=Pdv9a$TLu|oY5FW*u^&!NRa{WpW@W%z!`8CvfkFmFjg>+wTq0peo(B& -z<}X(5yZ3_OT>CO_%BwQ9Yv~GR%1wdrl|HxIR_rxqZ`H$19Kqd(uD;Il+x3MlUClKN -z2}QCdPrVyE>TwX*w>0-uctPp^#^ZAGT{tjI(7vBEGWVBYD=m7-s<+#3I-V=oDf;P3 -z4=6NO&F>f=#dQWXZ;EJCykK)VHGXt`gd7I!E<2}&S7<}+z}|nI_4CiBN3x*Mq;+$* -zFVN2g^#6|n-xU5pW-SuLqi$3nxQG+j@h4aYe!tf6Qw6#ABEIMRdgA3+A%*9v*S*Lf -z4Y!&pApj~E<36yyJG@6wY!?y5;t1`nFc{k@I*q3%3w{0J8D~w2spxlDh?K9cbl}!{lHjjRxg}J!928hF2$v?rb-d5k2YvfBSN&k@DxK_#8W2&?#n(L*kR- -z->ZeM0T76$*K1TUHQ9x&;C6+#-2)>vL~-(@@2Rg1oK8115>kXGKA=&0*-d-^+vK$SX6u~$7W7YH -z+RSViGcij=R~WrBi)8BzU9z2IQWgm7QU8aCgL7sDxpo0x==j}~pUMW*vk&{j(LavI -zTodn*l?mMx>#*>dM$F*_3u$b~S41@(%2ZrX?G8e_d`533cjH;aj4+ws{znXFpK%hk -zPQYpW_mV;-DeQ*V!rMDm*uK{FwN*hfIGteiR~!o0aA!>z1aEV%o(r<*=L^$UC&SJ-#{6YLSplhk}SEehx7$ -zO^i{2EuhS$tq0z?2wgWfs@sxgNvLA3h25vOu(s0ne3wbt`H7XQK38@h>=5wiKXjmd -zZ$XpaORoUKb>fk#*TJ-v$M(o)m=}c#6tIYLqziZC>!4|!8~%*V4g}aE6c|XRfLk7D -zMz$!oZo0~H{yg;gimE~1ZHr|s-I&EYU)j|8pScIv8Q;NGr9s(!YzV_;7)MGxTa!#N -zwetP*XJtdGs%MonK4_Npq8G>cxH=fR^1=`=uEr)^Ob?(qMx-5K#);da79=!{f?$5W -z{_BsS?z=;2pWGYqw_MOh`(NI9|OSZ?qi||Cdynn@;ax>5M -zo9n -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 -zsqIdmk+;QlwAeJXkz&9vu -zj$sv*4A&o|0Ow958T~oAs?NK|xXT|eRYG&W$RAI!#TIHxNHfz$R;F*7Y>pt5M75G@ -z+`~`#Su_UsY}tgqKvmNYOVT$#TXQPf`Xdh~GsOhcqdSsl9@#;v^ILW#T@{iwRNK1{ -zSbYAU+K4amBZd8%#g`Z3B9=(X*GA(0=IZpwyq8Ns@w2hCMS=lg@L#rjM8z@4;;3>0 -zAKq+}fFqj-)9l6!9R)V*0*W?%E^C8m|4R-fj8o~O*!Fm%9Fut8@b -zz)Lf5I~|t;#?MG{?iIAVrWZ;8*Qe1!tIF{4oghdew-+feM?Al1ii7AASr2kggG9}H -z_x@L9m?+H^<`7)ja0_ac*z?$Yi`mdg`T_jujN=dSAD}i -zTKH3;D)>NlaO*_@4kVma$f9rgz-i2@X~N#$YVpH=ZTO)nNdN9J`N|^Eqb)eU`p=fH -z=FrVq6^mD@3*pz`(qqTgkWlMJl&$vbSF!alR$h$w(a9w=yn -zX3d>N^bfn&CQ4sAVZHs1_Y4^-=p$z$XIE&&9q-wa5~)Yl5_bzCK(5l8zqti)pG+c+ -ztHa*7XhgHe2T^X|HU@M>tXSP$;w8FL+_fgU5drj(WK8h8s;S^}GELIn_+zCq{HyMQV`swNSBHxI -zBIQPu3NdwjM;Is+^#{NWh1%%pF`~y%j^e&Z4L!FMS0gb$+>5d1x?wCvJ92fOg4KcA -zwpx*+N=3XK(9ah1lTryi#QL?$1K0fCiJ2T9;F|~XDyNPp5>&hga$(-;#6Lc+^@a9n -zT#p^lBDIY)0dDA0tU}Y>6!*$$69U(ezs49(TaA=CXzE~?YaA5VBEXf# -zE&AM&f=AurPYC2j5ZWIs6p~KV?MZA7cFeurGs<1lp -zufOh(z<{pNF>YxQjK_uT7lOew9Q(CWWxM -zR6MiHZ!tEi2!%lRXelI(uG?w(XDq4CB-u!f>rykp>qxNL2I)ymbS{CGzjq() -z?wNyZxsU+pAI+O*?Y<%jH({imrcT*M6i-t;>^yVOZ@u~^eP&IBxlzfE^8{P6gI)n@ -z>YU~Whn=+VM{vyOv%3Pru&4`HpH8hU$k@LC~s2iT^&K -z7$S|Ra>+LXZs%_8g>YQ>!;jjS1Tw5f_6Y@v_e~r+(txG&%n-Ej^mg(lR%+!7rPbvS -zI@LyZRyPB>9uMS#tMP;0BlMHXV9#iwl=5#(gWrX~PrNE(DC;(K8Vu!hqWIm`Nn>C7 -zOSZCdw} -zmgU+};oMozjbHU%MhNGA;zB6otQN4k=fVa?jg_Xpk!QW$0@GrQC4!x9rAf|L-~E~% -z+fodUVkaA9J2HXef{Cir{~v8y)69BPcGCkw-5`h?I_xViix0I1wMUe8oLux21YmrW -z9vsB(UV)Tb8_?AV!`r0NcWbkvrwlQ=)JQ(8Z7SRI${)>+FEz8|YLwQMlrq((hb8@v4{B^*JMDWJ{*IVc;UT}SBQ@u1Q4jrZ -zIqYi7?-i{XmWRnvvM`7~M{Ja@{(60dEFVJ`0nlcK$|!?PE?>!XfiQ#~(rf4sE~E@4 -z4kmVi<(y21I?f7tAivKki%ul=Als(C^kYX1d%#nNt{rN@eylom@+iSjM@#{|z>sImuYUoVOVf`Gg({4_jkr@fKfsZN*!q_^l0y9|OIfKO&OW2Q?$PRC!)8#;=>|GK -zIu0#nu;g~NcNw~#)!?B5PAL2?*{=6^WlKWbA3}wV>xvuIKkU)_ys72FSwT1umEBr7fruPdkO%3t8l)?v8|mQ?+e57 -zOFOz1B0QIC9{K54KEqW|5(EYW?Mi0_feO`I`lis7piTJY$Y&z068TR+d(Lc7GEYxE -z9y>`(6J|Qg*`sccm^~lH-)hga-?{{}0#Yq3I)nBsRGYNC0&4Zh*|aKd<4pZX`f@{y -zFej#XH?eEuL_Q;r&!5KnbY7RbTPUGUZUj15C|AB)^=*)lQ;am@Jk}I41~xyad-FSS -z&3B~pdAPW`%otG33hwHU=~s`Gy+x|KBx?W)p_wcqvb%Z(d%ftjpsGUINZxzy(tc5H -z;TT?|VOlPY{8|l*3&7moNg)yRNSmbG3V?x<)7mwA -zW;P(fn~DghHtjv-SnG0~DO&09Z}G?zKG6sUUQ(oPPwpwsQtK{CIoCFQ)BoS?&{Jg$ -zkd?-M;Wo#T!6WvJ-VtN}&c_SjV*0lBeH0Z3!Awq_blz$R`z{~9aAozw_>K6QanAUX -zmDaq9GdI5_Zx4L>pSlR>zJT+_{YvZdT*ps0XK%)D6o5x_RI -z(WiB*_A<8TP%~}QT2aNf+W$!S)%LZ|$JEafGx|2oREx@Y9IJMm0j)nitRc@M-4Y4|3S -zHIoVaP5@CruD{vTsP-eN0rG5DuL~PPto0~7^n&!%Vp+X#>u_dmUKPNTgF<+RI&n*FrJP471hAHnhV45pXb^a4n>yyD&wcb-UJSRw)2b>cEs}z -zmS)ptG46c3Ac10n&z1;a&6*Zy0YYz<2(`Y2r~nK_5g~Q6R%}AB=SQnE!sCv#O;8i& -zfZU7_Hyg85TB8+VCXw+{1K98837G&RF%lRIQG5wv*!K;X^+1lZ6Pjn(Ab;M&In{Ik -zYTQ^#_6DokgydHnSHGo2qDf<-cFy{g0&q*SsNJkv#O}I7ZPO@rDe_~WugU4xY{e9p -ziI6k-2bQjMzJGjJ(PuRE&H7Xd%Z{?{v!hEU#S&EE>GHTnuOAnDroBQ|N}?O;F) -z@JwM?a4wD`zJ4AjWr(~u<+fUZRjGb=Pr?=&dhpA5LbYBB$Xg(^(OXuX8NT8{XpGB@ -zP#vubpQ1#APlmy_$IIW75=tkbApDW}eWE$VQAQjXjkX4`CNWP7i>ELdW8V^q;o@!I -zod=gX;GYGt_E%?z*b{fx>V9(X1p8CEBp&(Rx+1G;e7U&KEDB)~P7%I$FAlz+!WE}K -zK4SJF#OovYPV@5rP^zBkyBDRA7jOWb;J*iIbeiX5j#(`K_bkfVsnF2z9gz%6NxxaB -z%Cw4tObPDy19INzUw>M{kkwN~pw -zfim0(Dp^yqj<;NiVvRf(S^-q*-)}9sX%<_+1qR(7TBBUw;cL)TlD^eMwpZv?lu!q* -z_~DQoXGBE@9+OfzQFY*sCU7gnl)b(|W73DIvk70m|G2L*#ODhs@e9 -ziHV`8jWJ(IwDi+`%(ot(4(k(WHZ0VfmzSa-ykQ}||5Ogwceo!11ZPj2M6WCL9kxnLNz7IT -z;|6TCSf_e47%lza+!s�cNz0l|2k=TLZOJiJa-g44tGwGn{W^2;B}4ifExQnq!Ex -z-s?__VfF|F0r%#;@p=VuiLTYpE*)&!-$Ck@DF -zT0+R`5E9Upyq?uQ$%gng#)SV*SsCoIS|p^v>GPhxsjCh-nniU` -z!Dok~22fifKF)M4!x5|(CGdaKFg$}2*6oA28|cbS(cRE`S=(Vb+nU%p`Qwsn1eka! -zFYS?P!BYB}Ss529puCa}-6-+3av=Gfhzt-eX7}^m+|(pVbSCpQv2r1eeW%*`$?}66 -z?5$dGX>XuNkZ~Z7aw+f@0y)cFs$j!n$#C#%`T4eQw(4*Lrb4J`{qI6Nds2Qw56y`a -z9VXv+3Fajn3~d>9x9*2k2?A)4n*3!{@<~>vq$JfDCo!DA -zUlW0iw0#ex1p`LBO&s|fjeJC5_UdB{vtTkqPDa3`W}O99!eFTk+9Ed0@w|E2v_RXy -z_K>e|bJ}K@_7+Y*Gj_-5(l^Z9BoExMz>+E8ZaLHTsR{JDS_E&fmI`R^Bv6Fpd-+J_ -zg~emvHy`*y@$ETFL-;=8FRb$|HgF?**In*Cl?F8Qn>p1sHa`wvqBU|wG1o$1djbfQ -zRO`n05SW_X6=-v(z;AwUZHbzDM}?t2yU9uXp6rgrVDB0CQrQmB!jw=COhCrpT=A*b -zqOCL$+{Ma=v>APC67OufvmKn)uP{t8&ROrr+#8wWo^5R4@MYm|vg@qTTN7Ur%GV8@ -zsX96pi?De?(5o2o99N&~aC1ABnyu+fitWVKAh1k(g`h$o(;(t56$k(k`QLS*SZye3 -zXg2;7+Bts*&TQ9@V)nI;kaOV88F6kg=6z-$nN2v*1|`WL&?zFN`!+_|FV2ui^(fkUR<_B2`^RRdf6Dm+!wbK+!c7{WJFI2Ltz -z{Vvol2ZtPk&1tS^u{CWhem*nAL=eLFwc;p{oJ!M8xgK>ie3BX+GH=pB7TD3n*3%-OxA9#R%!!?kD%|O% -z`BSN~{hmnpl5uc{SEPNc+ -zv+ZJ3_{nCe+0~lk@%ux_6n}KPx*{0MiEUTSb0U$`E+CV_!BhCCT&`S`%q!Z&NnGj6 -z{(0`-q*!m$lMH5-Yb7{T>s8qnODjV{{89>WhmP_eIRN&GCa4HkL*0Mn$s4~tsMZgg -zm@VRQZ|magrq|6WsQ}iIgvpXAkt4qz`Md>#k)YgidVsP??+h8>T~$F(8Bt82=44Yk -z!;j>k^}^^+nkabEZw1q-1Ct2aq5qg{lIgZHf>edyzNwCQ6*cHLctMMu`y%xm(0Byx -z_1u4Vk=%!Hs4K9c{c?qzTD_CkfS?!y%NV{>QaD;as#$fO9?kyljmF^2j#w-H -z3ld?(6QMv{i!fG457JtSuD}E-4&s1IhJXFv@##HxAJUzFPoY@BI^CQo<%)(Jas^RS -z1q@Sgyl-nbOIgJrG4K_R?01ja;{*>z2I+^4`T5#|y!rf?t^92@thLMjB(geRltR}jt{P?|+r2OuQs>5!cD=;S&bB`CAlmGsQ10{?8$07 -zi#{TABox-Z&IYhfiPQ$se+GB`Z6$}D -zEsxikFlnLT$FqP6?`UWtLchW#^dVK^ECj~>nooYAB4EF2{Im{X6U*t0O^FYsbF~@< -z&w%E~8m05T6a5E$1#stpts<=|3>3tnSP~f1he#UHL9S;oTc)kCnk4seiX?tGP|+YFLmva -z?K9woUOosg&@G;9-q@-=A?zJ(I`D;olOhkFAOT5B_W+j%OR{zw-`UL4>CztJa4sWS)1oQ~+&ix4vcjCks>gHU4|%Om*Y50(ldvpR^4cs~zp%R??~?G8 -z7s*}*NGSvA^Ux(7`#p~;R9#QUnbyfW2gixPOMD5QSOfCV@5M9s&eXx6`cMwM!ybz0 -zl?G7ugD-s7$OCeIFj@OdBxWsQWi0lmk3)y^JNRK_5>vlDa8qeYl-Lzc<3OBHhQrh& -zff=(b!15*J+Pt6`_LfZ2YL{UAQ?hqdI0ZcAour&cvLyPC`)LGcQzI09-icgYGGxSZ -z$N0io0w_$hpPi_-%C12jOa@pNO;$Lcjt|ao8&rIof%$b{w+>@>cxff_?A|*DNOGeJ -zPoO%5bGS@+w_yc~!DE$0!mNogu(+9#Z^1aEJEbCNr{sQR9RkYsF^Nb$Mf152%^bMe -z2sin1tZ(jpKIL#zPr0yfi5Q>UM(y>CzEl_-c#L9ItX=i)d^HRx;1ZW7Q}E*pZd(x%Bp3P=S-90!-AY@oz16&)p+;?y3g}}Eti3rI6?j>)VfpYH -zWe41(&1f`{GUr^AD9!{JauGAhHuIjk%{!ATHne_XKKm9Sah&5?<&)>KWdzlQ@txKV -znnCsZyg2a+27;Y5a|m7;Og~+xzswjBG35}S$+R+@ltG!2j(H0=mh_aoVC{m>w`F%w -z4&**m6x~-wE{X?XyAKb`uWq$D8PYrJzeH7gViQqU?&-qWLgUqr|I5#B -zFt(6TXM-@J?@po+AG=*OHK`}%Bb?^HEmzd8i}MI^6ofS}sZmT$seOAHbLyVrekrU_ -z9`&5B=FV_0FV?Hq5@#(5{U|IqgA488UZ{S%?TIVU -zGp(Xabhd(}-8608y9ee$e#8A6=i(A&xpfLJSV^Y+4nQjQIgTaT$HNG=qJ0YKa?po -zK_BSYMq|q+oZyMw0cDd`__^QgnG4RwrZbY}Hv8RNIc)o!XLfxR8N=cWanDI8rWS>FvH}~4d?RF=Kzm%L- -zu-Or$>l~Z&y0_@UOGL$>DmKE+BKUXTiCTJ1{nzB7v{V -zAl4n@0;P`s?RNXQKru<^6nwJ2mrxa^;wop>V~-Hrk?8Xx`&&T#D?DP1i=vKEwmBpKj+&-6 -z!<3_cS&snB=rDt?L4sEb?e#+H0w%t)9Ky>bZc6m*;%@9Q9KFP=XQe!k2Al0qb^Q|0 -zOn=}{n~JpTriIT3YaH(1Apdztk1lrz9c;~*dQa#1T*ph+KuJ~sBj^_3Rf<}LL?!!{Fkydv^^KDRn -z+%M9&+O2by0EH4l#*uPEdAbc=J+ho;2|&BOUA;#ffcR_xqYeKx(H07Ulvb4+OS#P% -zoMhiJekQkk_>&ntXzkyubhwfoTEpFG# -zy-i7Ua@{tcv%Ly&Y83a@tLZt!vT2GW`by1sBQklS-sMx2@hvYm)PwkhwDf$H;z^7B -zbaJ1K3w1GV=o*J#@k6-&?1kt>3L)@E=R9%LRfSgD+GN=?9S4{78dbbZwQteymjFge -zhoqv?NAPW6M3FuaY+>y=rk%x3co+~!R_rj$wXy2Mr>#pG0N4exWQ}e5s_RP{AARri -z@H66fpM3QHT-e$T`<)*Z&u?OI^dPj-hL1d1=f}hxjKo8_F8z+5EvsO?#)uI?Fba1Z -z7#77COI6fepLmeRKr2<+aQfh5&@^18wK}%)&i%ejxz|M0iaqT7-bj!U%C#%YLOH7_ -z)8`p*ScScMeSJOkGH1Y0XsHh7X0-;zqc08hPhCw0HVt=H6T}M8f*;(6Ljf8`d!WsSWB&+fcbR=YoA+ -zkb|R?JipJFF%6MQvl*L52PMW)k%Ne59a+cbOMo%kJwJJQCoo``!lE{D -zsL~0T0**3ds_lzuMHpCG)ww)~{~nKxHTy -zmTow&t$(R~alF@%Lp${>9Q5Wvvyi{xKfZp5&f_=94)GF%7$Vxd`3JBV>nkbHW -z&g^rlfne-Fq8zg&oJYP9*%}C?;+Wo7aa5F==B{eQLh)dW-9L~UP20=BuNxXX?DJ3z -zu<$qNl#R_k;s&o)qMR&xKdFkP>|J$rk(`b)4~Mz;8i)nJn%*~v1RqX(D?gYf)%}QC -z^kUe7f>J)W!L2}8GMs^QE2YiO;wZd_PLfa|Y@bhNeFo9uiDF<`ww%wU<7`nHA9Ns3 -zyl$QfzpIB+66Xl66CddHC|8sHj_xu3{}`R8g#EH5;0<9dmwMRkL^#jrSD!CVfWSTh -zZwKWLLY479aZhKS0VDwT9covS?U28d8Hhjd4YY)`F+(jRqI!MQ_*CBzJS>6yVf6xz -z%$ZKG4+*b%ZhM4Ry6b%o-lz~zkn=gNLDlXx*Z{!bqcv$f9<*tg1BBJo9?CU#LxNvI -zCX9SNMo{O@eD;t`E!>IK((b$!-)yy*nc@qm{|Tpt-&w=UO&-BBdxV5^>Ud%+CPkU? -zlw8}n?l}g6RE)3~pD*HA#T59_at|Q7@JV0P$@rQm1ofr=oXh;Drj}F?xGBaFkUERx -z^#m|OA|P)_l-gohIvpPQiF$8#sbF1Is&xG>7~Mkgy$>=PoyR53i)4W#yT!j>vDS2^ -z(5tmACB(*3#JeKlH-9-@oJt{KF9B*_9R+h=Al3qkrT5&52!d)irp@NBMZ>Ap#fs)# -z_~;Ui!xlx3x)0uDi(MN0?0ZQ@-S+Y`2Jj{dWx&q?ggOFApoowqUjeC>Yiv -z&R(Ku3i(k9w}MEk6#K-!lLGL%{BBiie?5i2#;Y&=@>YML;wzLvD(ZneU*4uhF>pbpBb -z#vAa428WD37hE|>YNE#a6++;o=(8QFPAlcBc3Yt(I!5L!EGe{f-#)Wpf7juh%q*(M -z)eQaEPU0`*rt9U0LLVH84>&SLU(@^wZMc5mX}FmwN-f>k-cnY-*Yqq6hFHQFdIpuh -zM_}bY9{daUZ1P(^>368@z0<^V8!4sUqqZq$7LSwSQ`QiG3lEI8B5bimH`Io%dRql_ -zRZx1p6Ia<4csgDxT-N#aie2F3#`-(ir0WVkpFxGzANLh(Hydh39(W76@+_Es%CoQ< -zvZE7bn7?pn<1u~o=y(#LX3Awbi9@o|=R8@7Ux+dZ5M049dWH-JO->U^iD?o^$5dfw -z&I1=&_S0Gz>|V3^ay-&4)WS)l7WIvjcBLuiRbNU`N=oGb12j&%tAgu%iJ* -zhPBOrupf-5qm^l6NZDvMULD -znm6z}-HS?AbUTlFN6MEZ1_pe;oTjn~%=A;45TON})|kVgeatzDi%uB>XJf8Fmd}r_ -zKw|~0lCkdn*ZwUTDbtNoyWjH=R1v2}q%J$!t;#OCW``%}r-#D%`60wlH{t-AMj(O( -zEfU@5o?QR~NliOcqfyhN(_(F4;j^l)OFRbD+f_gPd8sIotLl&*mr^S88fa;82rBY`>0 -zI>5V3!eksmfdTMo=~eKcWiv7Py<-eC-`W!Jp>w{clibXNhFOhmvL$G?`bfJf#9YlD -zS_Lp`Ekmc!t~+Z9Y3r1+S5EK3gcts@z!u(E!Fh_(=B1c{zW^U`Ard` -zMrUk&5(jyzp{w2Zb%R~`6@LpG3>?#Z4bjmFms6_-Kf7f?4DQ1$gYZzqdJWZEea5%0 -zgeWd9pxVgbp7ce$=R`sB&o5qF{1>!LtsJ{4|K{b-PI*=FgjUfW`!eLz8PY -zKC#Kj@)$}N`h)lb#d7yM6o}G%4(U}blJDE-^4pubJp*v=3^H&{t%|9N*VDy7W&=D` -z9)o@mdGJDXRYD;7S5D#8AO0=uqN}6dtKD$9(lsOXkc2Hn>syOIV*x{ka&k!~!qSSm -zuXkN_XQe+=c$rDCewRu*-Dy%ZW^g3ljXm90kMDvIk*1eSZ)%+x=;5@TC1f*!<;af= -ziH|C8)w0YEZ68a;L@+T8SLY2jYm5XDZ1{k6h -zJ^KcfcKnP3Q(k0s$!#QM*y+KAQO+awU6frE?-G(VHki-&346L*UmqxOA0@%bHKa@l -zQ6TS-tyN6s$?Z>RN_xlCUnr>PM)%g-xFrm=%Un#v-)mqlZfML6#r&Ov9H0;whf;m_ -zG&cB6>+n<+oTZ4k^yswte*B_UNX*mr&B1d4jH`ocvn~PR5T@h9jgm>p(64Jh3CQ-6 -z;y^|wk34EEpB##w;Ys(k8YX?%KF&zylf6}0LLKLCH9(#F(dbGqKL`-KeZ_?Ht+S$) -zYykss5TdYS-E-JDMDpw0q|TMp#c&`1UcCDV^w-oNVRD_KQ~4?IyL}6=y8M)Y!~DGL -z2Ml7Rqvp2cC70pL*}E`&hSl2y!xdnkAqookV}uO8>B7?`F(4jg`P?H%?G4PWP5Wrw -z=?W9@+x^pfGZ<`_z4!2jpm1ko#&^CKw&8-Sbj=OSB4^j-&XF9@7I@xD-%?MipA1!v -zmfa__fu-hDeBpUZONoujFC+4U4IG!V-zH)oB89e$TvaNXrcJq(X$pN!h$(X%;0D~2?3rV>R9>@2(~ -z#X-nj)qPyPtE0P^$GFj9)pW$>g=e)4tb>nRekP*fvq~$C2+jmEL!j4acp5o2-3qMP -z@q_8xd~a7>lC;D#e+}A?dw~?CV$-B^Vw*lfLEO*~-ryA89Z8JR;H_OL5RHztTeG)e -zaB@WNZ-#k`**i?#=wXu^Sg0}OS+uwxcQ50|8F; -zZW~nVje$V1mJ~SjlAK=L!sbneBR$rSsD=H)g0F&XgmR6t*54cQDzc-}!UjHt(sg`6 -z{w)F)=ez_E6pB{VxX1%H{OrT}L7Vq6i@f%Sho0CzqQ7ZA)D!uIdrm3Sm3Jg%F{Cd$ -ze}=jL;AG5#dd0prRZc!0>tAPQnd|)w+|xGZ4uq!|jPT`kPKD$^?OrC_Z8!j?&UH2i -z0b`gX9}1{cM)UC`w%P8bx1t{`S1(Qj@_yy1M&$20LIhgo&qb4GYWV|BH^yg!9NR>< -z$)@fe(rhyC#IZp@AJ46|J+nxLrB6f?HiX3Chmbp$xg$oTLej%US(W#$fagA!;i%CPk -z?nZOS+V_ZK8!ksg(iZ)w_M-ImFi>kcue>fBajJSxjx%wIY5(_S1iZ3UYcf(TMGLvN -z;ZlI%?PH?Ir=UDW8HAs-(ItqW$3ax9OBmQvdy_7{pX#B@kDA^()$tDhb|0C|xr0dz -zMIDpqAp=gH1;w($-r$A=FCq~%9y0m@5~K8B -zPa<9!QHIRcj9Udr_0h%pn`2QINWwlV^Do*i8mtns!4;IE*SK$16or7eHFxuV&Xm%> -zysvJdj?4mhiWXPzKxcV8xJ<0{gW~E*cDCLnZ7Q755nBB82)tIBc5bfb55bK&g10#~e3}AZc19T;yz&lGoMku`o5BIgV%lqgs)quMn -z!h;o6P)V?1g5Ak#_vM6OFHYFHJReiJcnIL^>qCAu<79q>WL0ZBdF&BchEvzFP+M>>c2Yjg{w&s$$-4Q{#6yQ~F*# -z?V*xBwrkjCojiR;7s*Hw0Lxxs|#xn2{?43umSPC<~ -z#JWW>wVjUhzL|W`ppU*k`T)s)~ma4U<=j=o>QsMWNhK1QNQpyq{UJJSM;kKp1bccha26$nkm4S8X -z%N>O!J8?&_H4FoHl$vq`ER^7jnD$g8dMWCZvV?JR!ttOv)LEWhau -z$Rd3-z=>-+qn&6}{j9TAh#Vw1=mOT5O+9s*oeY`jXR2FXH?u9Ze#~nyTe=zYfeWxG -z219>=nm6Gu!BT1WR?RO;(pO7LAX(mHgF3}mbF9z -zCBmlS4gXM}@&8*(&+93EwF-<;locdO_$~;iIDMcel`N~(TO&)Ki7%n;howqh4Yr7#WmspE6wSAUU -zrB7RaD0;Hn?@S9IV$(g_$i9Wl2KkG*Ug3PkZ|*?E=T{$rz9%om(Z6OE5Z$t{3jR6YyzGA))nI(H -z{NPXXiDO$>A0Q_jY_@vkPO{JVxXoRmI^c-AodOl~EtIc|oymljACevDbJ@?d1%pV` -z;Mt1fS19DgueiYbfu=^`-O0mm`%QkV&<+-lY(!GNL+cy6@0QQ)&afnY>1lW42L&|} -zrCf3>B}~3^_Ij6wBH}UWB>oCXqk;=tf0X}&)X@l{Yc&@-h3pH+TQ6zgoq!h5?dwz&xYBf9HFOMlX=mTNomZNXoaN=j -z%rm2qPMgBp&P=JaPbjF)Cq=+~oLNsHsj&=w_bG6**eG|^J=CN^w6q{*VH_wcd{#fW -z$o|_ppx;d1B@Lf1hWYo9B}4Z!jq27V2|JYdewsAfD*Pb(!cd#^@`yLU8bwBazfw&E -zsd*Vo*x}KmMQ$Qb@MY8m8IZCCrftghaP~I(yx~TQcb;kzR&zkJEe_xT^JU>r!Ji!t -zG9O1t>4pD&DN%0NM^2v6o_q^K^9o!U%cZbiiiEoi-}(d<7H@JtIWq+tQb`)>RvOQ^ -zIGX$KV(*oB*3lK%R?j9jD${_`9KH1!FxK&&3&Se5tv~fET(IC85g>cuEoueIqU0`> -z2haM`fTIL@^=ea5c6a#9t$73;Gh>m+2BB$_XQu5(L{tq#>O}KxRyC3Mp>oGTzG-+r -zAo`;!M+p^j&Jk2B5;&@*cm -zRA5(4pstY4Ry=M)*kLn_Jp~N!HIS0Qn?I{*h97^T@`}8YPKGFbjqChu74Uc@`qY&3 -zru8o-o!;U+Ws#il1QukDWPIbKlhdI}{eP=T`|6{r#*GjoOZOHhnVE;&%Wr!_cie+? -zoz9HESgAGf&V{yTNC|o#dXELmN&K@Vn4oL&?kWL -z5@6A%Sl+zaq(}8eCLrcWEbqyR4@is8MUf`$jPsrls}X!ML{M4~dJ6qz(ZNjcUlObi -zoA*#_bQIz{!UD#Q3Qc2Wq8UY$XUO^~g&Thn9@+Rj)xV@{kFH`{a6}~@+Xo|+x|8uWp*-oA4I9$$ -z(lIprrCF)P@8Hj)=3vPE1NpWxl%x9^{EYh>A*90&9;d>iEM;Im!!?kP-@?Kj9EqhU -zBGR|LF-EDiT5a-HV*^uxEo?ezOAe!r+s-T6=na=2pBW+4u@3h0AfI*87u;86Sb -z{QYi^DqPn>a`gH+l;IBkhp4^++o(4zw!WHBZM?0b?Sep>!U>?Hk>`n`*(xliZObl7 -z22}H+;e9?5`NJ-W_oTS){3jlPne+@hI>)OPBa`+C+?Y^QQ4$aT)BM -zlT*!vu3Hz;9KsuN#gpYgeH~HYRe%q7ECE3c2xHO%k56*|k%V -z3xPwFfOLuOfwNX0B -z>o$m4(wb-(?diU2_PH`g%H=E2rdyN1V)~gjjj50645yd}&Dx8`=5haQyTZHA80kYRgq`bRoQ{hA{vD5zEh~RyvAu0ESDTYS&#Qy7pJt}5cHJ` -z$&xj!5ooJ&WEw86BSF3?nb-5g@Et8%`kqI$mvkrVMkes05AU5QijGZTb?7JFb$GgS@D -zb}nGbe0dZZdQV(GiW>=m*P_=Lcd2)i{U+|Da|M|^b`(~b -zeVWk{yZR0kS)U>XaR|ICEWsu+<~#2!{eIL|VNC-JRSiIcr_c3G4b(F99t+^MBWydL -zTCr!d#pM{+`SD++h_?LKa8+FJJ+J%sIH=0FOJ?H0BaRe{x7R-+gb;2OxV=a3Pb(!| -zIO94Kxfvi_u^QtvhcT0AVrTQIM)|Q2;KbF+rfUf_%;3unG}VAp)BK>%KzdOjrWTNp -zjl{3?=bulol%NgWvG%+R)&9r_UR>2S$wbB>EkcaNlA(2pI0N3Rb -z19NU=SxJr~zPs)iifYPCzL09V1x7j;(9|s=+*Gte4${$me7Bu@)0U?fOd}oZg+9q- -zJ2MWe`i8+g^Q*p<5UZ^~0^5RrsPM|kQTHU1)9qam_$r;A-l&ZC;^i^BEUvdXB%uuy -z@P1Fdv~x#i0glS|qik}TPMkfnG_vvBHg1^RS<2G~7KwL8w-TX)!8352a>^ -ze0*%ibwcE+nTEw!?MoJ@yvk_E6|3UmUfLa=$`bKsU1#Yuclgy}FcK4Y54{%d0TJ;= -zJHPP1U22DLt5cB%1j@04DQ?qVD6SPhN!T2ffU=~tTn*aBLSGSDfwEC4N~q^6<-IMZ -zaVimU=E14t^H7}JM4;c+oh>u(E9u$n#kY-{eJ)Xm*%c3i9PsxSS5i}=3y;kC9#q{JShr}qv -zQA^MqeiQXOic}+#&{+`O9^uqQYXBFM -z*)MZ36PSvLzO480E=|hh&cU6%fv9RBC+kTK4=IBuO44)|4GJwmA&7b|&5wHLLEDG? -z%P}zq`TP`vX>ZbzEO-FKH~j{=YiyniR(Z9$rNc)eHW$$YmJF;f1BR4D=&3zpcD;3q -zbBVe7dfVsG-uOKqX94SvP=EsJ_o(?%?BY8N(FAgO-MSxIjrLr0P5NG -z@WdoGWNCM4U-%oUlu{VX@QbzfyRh@=I7mZ$(X5J%rxADOyQgQtbfuLZo#r*g8GlJ| -z%?ef`Y3a9Ixan=D>G?wUC;Yfe%i}W=jQ*`)iV*uyIV>08!!Sm1sOUlP9w-bF#Xc7B -zg*){JPrxoG7bNu*6zz>{t?D35j<^`p$`6n&Qm+i|rwbcg&Iy3=er1WRcep{I*I!0N -z7ws~-hXQA0hOQN4)9< -zDxv+Av+NAR6HCV4f%!$C7FSJ}R=U<7seoF?$fF`YN06VAX;{23T|Vs`eCql)6d-b! -z*xkavTnm3nAACCTdTST}bbP%Q5~}|8UO$ei>{HGp(Fomt>Q*9RfL1}RcC(S%IAF^JTv^^gzzzFltjpwhmV-^^G# -zg7kUZ5g49uqCoQ8VZeqtM&NrZPXm8q1gR67(yy1#bJ5!Q67DfJz!(!Rv&6y#f0eJ? -zP!Qb)1b7y4IH)nr6E*k6vZy7dTbwLNyec&cJ%ed}Xfd76rfw^IKKjau%{67to>)-) -z?$EurhA!PtI(Dcv@lrjxklL*f#+9+&UvcVIrMYk&jrt!{r4Ax>^6tp5k0a3EQjNV$ -z+Q7p5Al7&?wk`dvW9zPrA5KK=7DRjsNn1?C^TO_8hTI7VyD1%y2gZo0>U?ZCewOpe -zSJ)TE5{<>~2q6qf#=4silkc~|r&yV)nL$J(n?fC)buu?cUFi>WhqrEL -z^EL&f!)joFGElIHB%f*qll3V4m_&qN#lbp6hc|oHd@o-Y4mMxw<6zUqEWV}g_P)K9 -zeDZlw)lS_Z|M8)1An6YeX|(wX^uS~@n;eB!9!);pyeS{A?hPg-DiR@x$wtWiJbZVp -z$0)J?afkXUmj<0>>!Db{k0?6AbvqKrs -z^9-=JN`G}UFzcOiqyErgoHl?ML@xN`BK1Pkx#IcM%#aCUE^)l=BCP?8bz9owY(s@L -zM0yWp3&G~P1kiHPwJvDh*_)fF2AE_N3w2DSbaL(o<;TQGVSRXVe59-IQPFl`U#LkCb$kzQO95y1T@suo-CW=wo2m1K^*UqyhpW -zg?tL7GCqBuix|;{b=y5oI0qAr(sK2IUOALNkTWr+m`|iCPBF~)TP49j$rP2+`_bBG -zUU`BwOU{wZt5=ik;?G@BM9WC9T67r9%ti>zq4=un@@qbisGei-5OekcuYJMew=;b2 -zIR2gxMyxk%0Cg{+{dqT;oxf -zf4oE;%!z_X0rfe1W&85u5On#yt?7Er^r3y#BwZ}Gg<%u5CHAseuF4r;NCel(iLXc#Gi*NM38ZA0q4r(#xX0WswqK*@dr2V4nT(y7+iL8d%JN(m_ -z`ip(BBYpLzOrakC#0>NDs#;xoQ%9qf;ULEN&oxG9RSISG33lVP?zJl;=K)Het~W@Y -zn=LGP4fGOk*;_7=`qUYuFPtl=$+HiGeL;{ufR?bKx4{q6ZPHFB6_IBfSxj)K+-E<9 -zc({`97Q;-|*jLGwkgvl69<*>m;|7I#ruW*0yGwYQomJ@bE#J$5!Y$*cbMj0dyoO}? -z;5UytoN4@OTq43mTC+{O#<4Ro&8}%o*%(88DCjpWltM4A(CAu4zdyV2YA4aw=4pOD -zV7ISq`Fpno;WEG4ZDtjrzys3o<8ei^GMcaxV@VsCzbw9O-OXbiPUc4Owm}f%$q@k^(@1+$}pK1W$Rk -zo_2mQr7}MPh+**7rh}O8Q~k_e*YI -zZC!DQSaj-+tBO)p%43f*`-LfjROJAI07}9IR&{#Lhnwa57J#a5ar@+Bb#QUh-TAph -z-(aF7>3P?oyG=GqsdjDlnqJAYkGyOa5&#pv+9v=Ej^-?KDi`l_=kE<(Ntg-93P=uBOXx36pT<&nJt7j$6sex=jEb39 -zp6MLe#3pqm07k2lH?#@`TEjdIwfuzmrd#5<|HNKDPd`XnL*Vbr -z*ey}eCa8C;Al-!6$42p8qX(tivqUL@cH>9YEjdwhpe3M8%D9Q|UCH)|#-k&XB$A*P -zkYpVn?TL8Oph-cdQYUL-7KRm9^%7J}YvG|gX4A$6W<6Zy2ECyqVIS6YtkrWXD5Eh` -zm41YeO3WiPyu0XrZM_O#t)fiCObzL|eRpgGiXC$yGT+nYjIjQ(d^P84VaYd5%QN>4 -z`e4vvqp4WvBacrcTpca7A(aj_U%c{fU2<1R8`wuouY2BGB@Kn1A$|%qXT}M_YL|>p -z(Z4NLN&X{y%48cshW<mhqCsyUeR=` -z=6(&h$h$HP-5iHFr~t#$Vw3fNs>Z5F`2H4~4@11;KN4@J4V)X=qO+C1M+57EZq8PX -zGZswx4qzHo7h1b(3dA`l`iLi9GEJG8YF<}$%*yXw*Qu1oXb_gO2?rnR5J_67X$id8 -zB$4YesQ{`_$lpTU?XpslQ;p{&4ZGBGtd;)R5HO+@mQY{&cO;40vNvV>QNwJeGRl4E -zv}{bC33}*I|%@xT-4=0ElDV@kbl1pu2g?t{AhR3i3>e6bN|-! -z^&FHYE>(KUe9HhDR{NS%DE#sJv7eQ$39!r@tt31i?@~Y6ypWh8lHT~z_7(^*_Vbu8 -zul8?*kV{WLj}f`6t|+Z%OzH>FEe$Pn<+5~| -z@9eYkaS9}*UTyrK_o8>iTJ_Or^5dMeWt_i7goXNQ_`O}(fra#Dl2Qz;ux$^BJT+$K -zLj+2(dZJY_z4^VutA7)z)7$m~mYPXWF{V*yr*!kJekpx^Z2wC*;m-tr{u1Ah-lh3q -zJ`WJ%&WKagty0rXvYbR;=gf -zVYTOQVh>f`lDh`*Q~bWr -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 -z+oV}I&PySGNLpB$ -z*(z@na5kHP7aQz`6x^~C?<95AS_ZRPo>N4)ed^#tu|&RD_ooD0oKSvI?hl7rM<6F4 -zpK@h>jjd%K4UDS&1Ml$bA*eA)!HtRg4Up9Ev8(WGH+wdBtP -zN6YZ}{IEz!T8k!v7CxCO1!(f`YH?F_me7bwohF@#R_)c{3_|L+}peg=j -z?NdZ|v*w74LpE;_hj~=y3nFW8M8X%n@aG4hR?Dl{D5kdhWxTgu^g|L7tYn -z6I)h=HtesGTQY%jm-^WmAfz%U1a`yeQDmSiSaE8my43Y;^dKA8lMAVXy5tJjgXTlD -zAJwIW0aLyWot*QhOn9Lof6@6}oyPAh0_3(D>q8y*u}){tl7N4=o8}GgtJ9Y4p&?ZA -znpFRYOfmF>5p|u;D+vl4L|93($PMc-X|MZWX8}{S5rYp=QqGVJ^jHd4q^M>Bguna? -zLt+HPnK!~dyeFP7S#3n!RaNlLELy7b4DZGyvkkl|Lp~b%!M8pXiP58n^U0kY;?EC~jO1+Ar`yGUh1^wb(rPeEX}?QM=qeRp>8EI&;& -zvgW<#KceokYr{b~&V+c-tB@2S1xqLXoZ)22y#m?)kScyx&GOR<-6r4a?px9q$|Id8 -ze$3~qXt=Qi><0mM>*o>K3>ARa+_{8l<`>VgEASnx!n$tMOk}nr;|u{Qe(A|0-0Vt* -zh%g}|`4nY``mx<0(vW-aQf*}mL?05UoOVWbP|<+k!D7J=Zx3ekU?;rT*LQkiP8&!Z+p7)n&j -zNRK_XvC6DF@83&o&4M~LM8ZMbXZ!eW1A0HdoJ{JHGGYdGie$E)U$dR52MfK^< -zOJkOX9?f6^zUTrG(ACl0ufXIv3?Tt5N4b`_qVc8`;6R+VX+JP$5JgS2d(x*=X)nHe -z2X*0$^ax(%q)c=sA3-VaCdRv<;%TbKH~u;$D)F8O%>}43DzNL?(SB(HYtgz-Pi#v^ -zRWPn5QLCt3SQ1E^eu#J;DbpyI6rahUFBY}uA|&xE+G^VhuBSR~GWBq-H=F&5L>q=< -zYWrx;_x-r0Mkysl+lHs15BHh#Zp!v4**k*Ekq~1UN;+(6Kk;xAW(ceF4~AitX>yW! -zzQBpNx4MVFkwOC`CqJ{1zX&K*LX8a8m8KwvnLP!56KuH>Ic&{2!s<%EO9?4jXBQ3* -z;?57s-tR5PXn6I;BhX$A3Hu^Vy1ha4-_C)Q<*ksGc#Kl8V9b979Gx^Kyu>E{P_Aof -zDgThkb|Lp&vVRW|Hh35#5O3f%*aA-axupFkuZcuZloZlSu*-45iFoZ%vA1! -z=o|-Zoo8pD%)^%C{=xuMSheP=s9)?du$I7%?R0i= -zp&vl=;L6t^wUf=);zh=Jp8xQG%%8;u>VegJTMTDu5=PgQdk4EF}Wws-TZ_6Y7S2+E@XXk5nd -zqZdWH(f>%D@B`1k-__YbJVvK#mX!Oe{?GxI05b`rOX^7RQn3eNpo-wLN7LGFipvr%qNh3O^HPqq}WRt;1*kMKdr5# -z+e^NX+uDs;woVrYUv&E6j#o~<&rMW6ml;Zv>?OEWf6S#Uh)@w#UZA36kzW{gKgZ5s -zo01p+m(#7iEb;d?4`yMxB)LoA3N_LuJki{WT@6ynR20piwfZ(Fn0m`V3u7HbGp;@G -z1GwJeCoY?P)+JD}Md@*RH?QbtA0TS#;u&XoOQhWN>qb1u&%n~7^XHta&lF9Nldpvj -z70tNt^)`v$H0SxN@vp -z;s?xu9!UG8LEFioXP92bp#|E{Nk=2^f**f!Z7262E-QLe(SDdGy`lcY@L0I@UrU?e -zmzBCSI~}U~VT)JH-QxQK%P_w)?2y>XeSREmBQ91S+*i8$eN0bpV57WZ)Zy>yb!{YZ -zK2OI^u%+SFMuYM>pMG&v@emb8+F^%=<`(!~{u#c*xq_5I>Vi%So+f;R!M-A%K; -zhQgYnw-=WD#Nv~BeHVW@Iv}K666$$!F=Y=Zk!zm?YJ!S-@_l`mf*fl$22$WfQ7G -ziE!3vg}tR9Unt^r7A9!xnxo3wwL+2P@zZ%iGQ^ZfAxP$WL8-n@62p3Z6KcH8`v$q2 -zo2X8~%pL5(1xFy_9&qG@LLO4yV%2UXC$O$mz^kF20>W%I3PQWl2dTTTQW?`FI8AjI{vv84N5t; -zLe}&GkxHp&U}HktO%YuCs1|eZym}xn?~dn&x-^>3H>Pm2KgIayb1-P;zXvp7cpTG} -zJxG|Joh9$NVn=U%(GtIA>iZ@`f6C=%tKl3@dUdO9kKC^ -z6Ha9WCa^E8!Hm_6P$64=Smzar(_SVh@hx~V@)8H8IcjD+EI$`wr^-kFf#&C}Pa8oS -zZJ~K;&WB0A9k0sUm)A|z5@dqMglJWOC*<%7Y!l0t;W!I>9dXj;RE|KieH@4}qwYM4 -z)q~_GzFAdrs&3=M!=2j63$1S@^e=o@s*ILMr|d^K*|FkT36tf8AhgeSdfjX$-Ao>R -zvJ8ZY`i=XiuPo#;@>z%L_oIOHUDd8s-`d<+67SD^pv*EE@IIuhpdBWkgqa -zv!=ah5*wZMGbhH`4@lADhJyE$UHsO6JmGyuWIf%Z__NF|^oAZy?y@ -zE+E3Q!juivI)7D#3NKj4-=Lho9_NWHe@FDXo -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 -zg6YeyY?QZ>c*ud;EA%4+gI&) -z44p4XT&D$xGF$Pe)EghW@9PZ*J}fx-Us%uxst`n7X6DU0D`$l!zs5qi@BK|S?Jq^H -zQWhGk20^O8IAV_2b>^5w+Hhs1J*p{#*7{@ilh{P^0A}B!Ha@MunW0zSH -zUZi|gHT}9N8FtKRh)nHS+KgY|d4xXr&;%!2j*+blMyP~-Au>(-QEL%N&(grx&iHb^ -zqz#sP!P0_=F{UgmWpyQ5Ra*{v*@_XZ1-dpC&3 -za`k)qd^WHDyM`;8JYS;b)7{yQNWuh>tH+{`vLJzk`Oss4vIN4Q5l^l}~yt=|b -zE7rRc@*(T>gZTWAN?$K79m%R`ERG(71dLzSv-7o@%0^*f7)Sf0blpy!thrWmRrfpr -z6MJnH4Irqg7wmC^$fyjNW5FzeGYgd%H2vO|{bKbi0O%)GkByVaIeAHA(e%M;b|G(B -z0&Dt6-NxNO?`G8wyrg1IrllhSQLi=Idj|y>h@a2M0q8sfC6(tZ{&6cU`uXa0!mc4H -zHJoQN_)Hp}a`AvbWuL?Z9Q?rd8v4D8>V#0z{?_WgAE$mB&Q -zp!lW|>^WbykI3?LXwLGHxX7>#2P|^fk4xb^Z`2^k)H78h+u^%N#rE-Qw~6($jl`^r -zRxHgt7%6&d*(nb3*guua4x!K5g{qNGxw~t$jxKdk8&IS1iHUd@)?7X5wOgpaBN!{h -z*V{iXVW$14%&_T}L~#j&PHJDo6c$cZzJ?BXx#?F3*&~A~o4rQW2(m-J=$Q*(mA@Up -zaqj+%b72D^qRjFTG!Iy-=-8_|#W{kjE)+}1*{`~O%T@s$+(b4`r@trZP{fXXLKO{y -z{)mvWY{bXIBoEf8-}%S9)Oq%OX3@Z -z^Ifs+p3A)PzNy6=4QQ(lC`mP-b%ZxhDIQv1<9kqafyir|<+9TJG-n-%*tOv6H&EdV -z!&;Zn;qIHy=om`^HIf5$s%K&Ovy#`>`k+Sl_M%*U017!edx3#CIwP -z+=TQ6c7JYblV6om+tYZqw^vRD=^G#M3H+V}Ff`t0eXBM$N{ol#huF43GbkU(WxvH@ -zSBhu2mUW!r$G!Y4t*e2q!%=27;%P15+c$oA%LcATxWmy;7JIPfhRnt?`}OB^Fl#dR -zDdiBPt{UGbI3q68lcMd}&mO2`U%@RL01v_rdbwi9&!35RhsYBV!r)n4V26ZQZ4qwE -zL8~89>{QWPlNmDcH>7um6|q~X{Ec;fclEO`Z~w)X<++c75Mx3p#Ha>1Agzmq&oXbo -z0<+$tfxTy$m!pN?z)xpkR{zhA|qq_yL&G+;jtTE+z~#czsBAZ-3y?BAu|i=z*$AWTFL8V -z#8=%2KikGwD!a_8{Kmyh4?lP*{lqY&&~BQVFUYVAnq3=I>xnZ~NQ!8Q-~mXyCP3?X -zC(9f3Qx44vp_wO*x!sOBGKq*d2^t3VWzp>*&zn5# -zA=(oI%*^>?QrCI|6Tj}`A^dZK1oH3Ea4RT+t8Ge~yH^6v{<2^_krvZY?{`czNX_=p -z=H@+K?TnptGuE?Kcu8UPhcAiDYxCWF<-?U^2Fvg1;U{SnqA(<_Py!pW?yfJ)%CCDI -zcsVDhN0$wxLJY^#4xYMFK&Y_-s@!KS#PU}k{8G$gKiw}kSQJ~Y?2x-=_gkD-dLQ|_ -zDkHHxj$sR@Pa4FBA}ibEtzdM5`EDsBCBH0rHn?t)gaV1Y`vAY-aW6vvv^g`n&WU=9 -zTxfzqG@V$o-|=!E?pQ8T8&NjRKT&v8#G|jPoIdH?zQO@F`z}-9 -z{v__H2%oyn;a7Jbu!>WjFc6Z*Z -z^4;3NDJydoq6k@v8(XIWFvm(Z!HA2m(!IWEZX(LHgN~VnC2H2L2SBjP)@y|_?X-^V9tDeC2#LA;YlvRt -zcvc!@}vymc_XlBE6N7}-7M -zjNC*mTPsjS`T5M|Vo%^=bG`4Bbwa7GP>72btOSbTx+I`YJ?3}SP_wFbP7n$j5l{*u6gtJt- -zBA*e@+L+gxo7Lp`sDKpXx=++yNan-|J?;jWD2$`SrkmWR3qZ6n_gzWBACkTiL=-yxh5+vU1w9Ehv_)A#fRMgh -z7BtEnooWcoN|}?v`w`nqlxHK7S(h$)`w;+AO+pyL%&~_o2Z65$R4IQ#Fg%4?`MUtN -zc%?K%jSt8~7Zo;NrrNQ-p}eQhhU@b^!$M<~KK=o~o{U(ms>qoE_*fZ|?e@|ohhEmg -z9reWdjYOoF904}_x;jyQ>^;O=?RG(~)6J-E&1lv>*V!~hY;FLd9Cv(9R$leOpzzXW -zKze!FAK*%Y==FLvW9?}#pd>$AF*I-@h4a$EY8a6c -zV$J;Tq~9Np^KVIQGwLHv#l%~gW#pW$uXndxA^j>$mXr}DPb&C*+gQ<%cOV--b1*ZD -zQ0l|2t=#5jN`tFByD-@4Z+F|lM`)ZH1=zmfAZBEKjy&!{0(e{=)u5ddC?*nCq|PhpK1S -zr0gH1EyHIrl|hiiyQL6kaeFK#zk7+pN1ibFU~NC^UrXEA+7FU8U|2d45Xa-l33!vm -z;QRLzKi-J~puC#le4J}>k8-)cvDwg~tyk5Mpg5h|j$oy8{I^w&(4Y$sBEsBe+2!Sr -zZ~GoUTlJg0?1trez=?M})f)(T6l=)_BCx>a?m(sB3*)cNU@;24jOCfw@SJkAD=dVw -zm(ALd;ukdGX?`*snIgdh-;4w&W#N7mrfAcoa9n5^MC1h?#$1T9oq5?N(8-t%T@HZQ -zJ%7)LL;Ds?lI8xQPzL7o&2h!+xqJKIZkD5SrbNxA!tHH+pfa2ZvI$@&SA5#wsHX^% -z2nsnv>$Hveloe+AJqzlMQ{Ts#xMQ9JzksH>!UY`iNCG!2Go@MTzvs9maiM>ND+yqT -z75OOP&7SDu#5A#OGatc(S6R}oGYav`PSwt)7ctyFF{VuYLVf~P_8LMM&F)|nIB&V{ -zxA?Kn;a1zPi>dluVGIa{*k}#4H$4-McXDrx`WxM)M`&Zu&HvO*ap( -z9ge3W84jAgKEiSC<@)u_wL@#i7MfPstvU4PjC$*^a1W9za6xqJ_RRaRv91$uJ8&@fA%U9m+p?2 -zX|Q#TImy?ji!%F(ywHpLN(F)PBfg>J-@cxGljZcipXhVDBjqCm$5?6} -zxaIL;sfjPz%jzwrm8Giz{~Mzh{UX?wXlX>J$TbS){WcB1Fxw>nN90^FCqGvt0C)v_ -zf>jEPazBP20dK;@@J+cudNPCGm)JdMdDf*W_s!%ZbOf+>UV5ZTiH!k=|N4c*<=-pzXKDZ~0nlaLG~0t_Ko* -zOdjp1=JS4-wUqSnDm!n!V;B3e_C4s+ -z{Vsao7cmaus`-KPS$^91#62r7tnp -z2Sn%9`a9F?_vN^+{!_o=K#X}s<2AAID^3e!TDgM;*D^#gGzLhwK4;X%$}aVf&E -z3TiJJtMk;-@xrNxwfyX3P0tZBrT&TaPIft`!gRbvGW3=6Itt_B0uV&ue!D@QHhQ-3 -z@-uNLw7{R@sU;^q!J7PF!K&-{lPx2J8@7tsPj-`PwB!O(deWA4*LO7+`T&@rvdXqH -z!e5#`a@IHG)7JDmt7Nu4I%X+-4MTxMAzfg$(+AX7%aNtd2MJXh -zz4Ohj$js?XGB=GgIF^8!tSN3spmnjjXU?4;lmv=A4rGI~fmHf7pKQb#oKWn_A@UQ0m`vz=XJ -z8#lz;x)QP&a#eqCb6=MjGefntL^@aSYkgG5MbX&+Q{ImKjYLP%tO_u1mQKRkaoMs?)ZGOQ -z+T#&Fv8WD)BF|sZ=_t2!ePB`r5K`m-$D$9iqBjV3%*%a{%TES~^OH;iHiwxZo$j~4 -z1SB8FNZIoe{T+z`j#W1u{Zt`@Y<8|XLkoeT -zzUhI8jN4A5E$LKU$`ij`j&(lYZRbcnwHPW|#M|W_JWAG2PvGi0O_7RP2wD*1aL70f -z`m{E*yV7x{jdaT7oWCnMWtiqPB%81Oj2&UgWcu%{D3YI*K6y)MwN}_?C81GI&rQ5ibPDnY@lmqNV%_H9^< -zXZ1<#fi>8LqrXQEGAe&N}b=e&~ni -ztAo2T+a3c_a%|wdCK*M&?FaNtC0>nV;sSOBeM-k)d4~sM0>XPeye~D7+%&XSxPD5P -zT1TjkqxQtOPBu#;01I^p@F3~OML~FX**s;qJsOw|rD-%!otWeaihIp5UDZ5#I<4QL -zs`S`r189^JFUlV%Y-=~`W`73159!>5>TAWrGn57a^Xaxf&N2j#kP1_7Ffj*nQl=s@ -zR8r3a%a~oVklhAVw)fJxTa$sssf176+kNxLB=6oAeKRh#T7UWPp!c$ -zs%@3eT2N2%^}#-+FJxu3Pyz`qvUPN_ZmzIna$xBl8-1JyN2PeN8zoOBWtt=`D4@Ic -z8S*czb0UBvm?ml?6$z?0FfTCd{za|(@(3xQ0%rNWzIDU^FNkQ)PoYfnvs%DG03~qx -zrXkkhVK_2{^j~my*X%Hc(}rAE4@o@4F{*UKA<@4C)duHe9+mO)V2_T1153hc0PjP6 -z6$l#rA2^3XVCgPvv0ypcQnfKcQk4r*Wb(PI<9Js-by-2#w<8Rs_xt6#(j#py9s$;j -z8ALx#Bg${V#gPMf8^{eMdpaxa<^WP)E4T!m(;6T20);h<{a-t4#_^JJXh1FO69h>W -zD~OuUyRl|+B<${Y?Ot*MEudq+%||}AC(r#B3}hzl%OUBcR)5d$|K67!o$1D?cHPQN -zxpz))i|%DFG_6)|4~RIY}t8(Z8fod2NC7apthQ7O=)!q-4N_p5w{p9>){-;>OG -zxYMH)g+qOoNs~U5D1E9bbkPMGlMLJ}?-v7)Q_ziki@x7zKTT_+bBkLqkJW9XiRmLt -zcm<{XIyF0`#0_`E=h{sokC=BLg!$E_1#Zx7ELFv8s4cT$_zt~#lQrL_aTrY-7o=JS -zdAMc@%H$fnrUzaCK|sF0uj@`BbV+jgDyc`BvOTr6$=6&=77~e*W~52q6!&(m^FmGn -zl6&`cvbUm-4p#-})C&&Q2Tx*Xp-0!~+e?46IKjnUT#PzK-s%25??u}$+ZD3u&b)8* -zQ9l_OxI!~z2j=*y=S$+VZ*bHq*7`fdHu)Zt8hQwg?{O_3r$c5?`_iG5K7+7 -z2}mnIKVQ4Jp6r3Q=@n!QdKVFW@7~R=ER0*nVf*K>jYJ(#YW*S)sL*t=VHmWDNw{uT -z@49efLny}I+vAkHoTi@z(EaMj-siEr2C}??@DqZ2wZM-rT+70n6V*<%9M^I&lfKYp -z1H|})(I5ICXnWOHijPb?gnGv0IKr3@f1yU(U%?NKwgAPBY -z{-uWs=AEww?e_czcB$D+x$=i_s3S45E&sir-+3PYzJC|yeW(UEdFGTSfA9Bt5gV`U -zxO%Wef~1)OoBloKFZJDGKI?};+VU|LX$7dre3iqPBFb-w!w2{YA~vt0P_6v)3c$K9 -zE>~Gmvrds>@2p?qnZWmotVF0pvQM0srex0FI*$LcphU7ea*rIA&BkaF+m!tX&%3AI -z8~%1eG0GdXz<#RFX#>phvhZ2fPYK+?nOmZ#oV4fr$j`KV(VqUKQ$?|EJD$x6GlvK2 -zutzm5i}QGKqh5Ioem=`~G&RB%4xeoEFVH*+1S?PGu>2YXpJ~!WIaxi4$W<$dxnghiMkFz->zX3XnR+@nqW?b -zE)FhZ!gE^s^O1yO&n49qA(|?z0gvL!@HxF{A87?0Z*&N&ph}mISGly1h4^_J!GKL_ -z$C<%y%OA(7lCdSj}Hj@6L@jjqp}^IhE7uduJ&%@^7@~ -zfIOB_2jfPdjeF(&M;6bJ~H01Lo_@*bly+n`a4ua!PfhWfFE -zTEyJxbzs9Bs{D5^m-M&Mm#`(GNsF!Y@Dc#l>W&dJeriC3LwjyI_>%@>|CLGj{FY(I -z(V*mhPQeF_hGPa)*O`8?0)?eyx*p|O*MwY5bNIN`Pw7)aen -zU5dL)&Jk)(X3?Ms#0TfNnOa3PKdt*@`VN*9XyBHlJ97V_$R;0$(@Jzg -z`u^bo^_VNKuLqn@_yiP=Ek1_PDkUQ5k&vnM>xrJ#=Yeqsqi%MxEo`X)I?sM1V~WW( -znJ1%>u;y74nxgYbH(%6exjOyPzexdfQJ2AVk*JGfHaso1_MZ`JNd1%B0YZo -zdX?L!BD=4|G|SIY%Q40a61gD1q#Ld_pXRlZL*gt9zoC}ockO;>P0q(=a;CboC0%>M -zkW_%JuqnkPNV-tA_Qmff%immml!4!J&1+!)Ge-}YK_dE##;?8+a%tzHWuCxOE2J*3 -zwp}L;Ip4sy1qg9c-~zz^?_`sxND`*jhh@tmJTzRKld28EB9*@ry);|^2kEsR1?Y9X -z;26xVZd0z3rP@u&T1ToI(9d0n^$3h!jmXBT2uYF=!y&;qsGPJap`P-j>H9S`NOO+Z -z3TT|b)Dx}N;!P^Vv#5_|wJ9GGUnR&w)m-@?2?SE# -zwR)&D##H;*4!0uhg6kE8YDYcC1P6A_)SZ8<*fhh%TnFB8Qh8cPf)=u47uMrSfd|?= -z;eA0R{`+17Cb7~-3D0ZWF`BQZF=}A*5g}%G#c16((jYFD)qR3dtl{U&3fuLTUw#f5 -zSR?eCZOv5#%u7z1_*gH{gFb7E#q-r71B8JwQ87LRyD!BJX2g$bESMPLkCkAL-XTu< -zcVZF!1|Lr}>yne)H>3OBFI_{iAbQ0WqiZibROCfmF~p+LdO#O&b4P%mWy{i|Q^@k! -z5rzZY0|+@gLFdv2@37?O2m=-th%;9vUCFgv_~}Aw1KoWGza+ChMc<^c?H)*&XF;37 -zu5;_vUA6Ssipwa{6<6og0f*UZ7KI;SK8J349TvV;2;B1YHF@uW9Za=YRE)Yev+(Kp -znr)k63$pE9X1s_`48tBM8V+dvQ)J<+aKDc}NX#PtoN#d1z$O#ub-m!mUa++_Lk$2RzOFpvCx -z5HqOp0T~x|+QVXkqO)_;`z4I@z*}FWhKN!t;{kocoiSNW#H|nQ1=_a*+p_{&4a%Hm -z=px9ba5=!KFLobbfd4x9%FgJ+Xu_ExFLD&18QF9 -zhN;5#@!HTnrg_!R6CvMRF=gjhG-JvG#U$WyN@1&|?mJpRy=)3ZRd9}UF6&1iO9u{+ -zHvvn1uhkVTsuU=}pX8x#=rtlW-hL&cDa9p4wip^t;qpkS2FBOb& -z646%k=#a;0#Gn{clI7bxTjO>P8Hg{)L-Hr&A1K|&DReg-iDJgWx-~kJb?yd1q=( -z6d7^ztX{07@AJmao8tXMSZ26zM1;xp{YBEG-Xcod4~8nZ -z;I}YBZ7e94q>br_FNu&g>PR#%h!{#L*BdUm~RnQl?1@6M+bQs9}#PFjFMJ3E%Q$GZZ8M@EsT=C7)r%N;U -zPL=1WA8h%xX-B-FVXb4~cdQaXu=8eAR#;7r5FI`ne!J_icOyVcBE9Q+^nuT#1s(6| -z1B}?ODG@l#RCI_KNl=DV+aOiuK5jBpNdK-2(6j=PsQ_?d`&2R{cY|uhjWx&^2T5J -z7e)*p9mY>z1r*D$r#yCgLNv;+e{Sl4j-~9RzYW?rD(My$YNE)!upg62{oQTuO*U<$ -z4A!8kSi%aZBs#O>()4zDB2s)%%)@kAsTx6+@aD4O@8{{J{mFw%?M~Yjz%kxr(Az(F -zw@b^%P!B%=M7;vOUx7AJ@;l~rMR39cWJf@bgWmE?eTpA7#xU?R_vp)u^~Ik}+K%q> -zVss98?ayto3Ct$p+PVfuf8H-^M7q?!%);6*{;3E5%!qI!aPkW6;C5tQL=9@B@6M#)k97CI5^h^TzXd8n=x6gJ8rqNQBw)p)rfmM#9H -z+OnSs#?ekpT~a+~7ixi%Fnn?!?&uKAwVyL5y5mqW0ck2_siY!99|)5h -zSbaV6(aW2P_&~qMvB@TcVtJ26ZVoFaIj3W|K#p%?72hJ>57zD7>T-%aN_w@4W^)(J -z=O=Ef!MtN0y3_7-62ghAi!VCC+rf-rNsn@_5Bjb=fBR1kTe1>3jA(Az -z8Ts-_P!Rso`K4khp7OKV;NT4|@>d%0m=O4oS3t@0h0wH+LPg(gCSg_7ri|Q13w2zz -z2t;f>tNPQaP1E22-LU*9Ad5!{=dV^ihMt^TTP=0xt)2H!mG2~MxF<8S=oL- -zUKQ+MTfb%Fg~LeBp@?e<4t#kQuzWzZcX~y$jHhSfye`8)o!IBWJUsUjHVb~%eykD> -z(R)~#RoohT`e+|t7tE=dlYa51alg5`ft*pjS9pWH(5n~^2L?oEs_otEd1^~s{OIq# -zZj;JVFL-Eh5e3iP#k#~iwrRq;GQ-WOnl@*wPBilSbg=wDqGp4F+^{2Hq@oXBah9Z} -zusPfvn;uGrFB}@*to?jik+Y^x>dMe(Fc8E}`agk>koCVVDFMqT_ -zK+}3z5|%oM?`dv@bZo2JB9-u_Z59~mC#>;sLD%m~OUXoB-F}kal)8np!`M&EB~vBx -zk17@*fg+k@5>7~CIoP6_9!eG7he`x$9Bztt%xMS!7mK5J%_~hU{mH5u);#>IRQ(O| -zUmh2$E#O8W?Vo<>V5dQN#LQ~bG@`BC#l<7YYs<=r54g?rHM-|kvVJoBn-BXZ=`sEL -zz$+&{bLG80kNA-e@P=;TI-3DE!2^zImf00C3fpb9F2(VD=mo8XPfF@S*RoUj#>okC -zW{Chovr&UVq6XTpw2{Ws$V{SYd?a3Kr;&>kt-}0-E_|Y1mHvClk3sk?gPhp5c5g~g -zFE&rOrjELT1-n$&!A6qvedE5{3C=r@r;d>^FUxIzgT(@E0JKVC*ARjDIA_d!!qCAOj%S>RHX~2l9ybSJ#Kqs}92em0Wk6NXtPKlc^oUuJ -z@9T#7`@KzA_;RRp$KE}+w04vy9*aN#i)|2TL=eO)Vx#qRaZ@G;EvN8+5osvCCWKj? -zzy3{04{!}w`d$_oj^?7NKS&xh#9?|uBzaHO5f42^jdsbv&UbZDPVaGxw}XSi->Mjv -zbnLP)e-EEIsZt^`gM;*hMf(r0g -zPN9A3D@i-sWeE+!M-TUdX`3WR(0m$Cu~ -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 -zNJ5ku1#04!FmcSeVqL{9*JI9~pI -zv4L8Dtev%}pjDguo|3=#khecnSw#WI=8L0rbV1kV4%0pBbcLRyc#9s`wT%^|Wvl23 -z7Q1qHg6Tl^s_1ot4(8R3c+$_~6gHX;1kQz}%)rj1>GKQHc_n*UYGuL@sZ$!2il9*=pa?Un94l@^Q3)ivMXCK25C|3u2;Y -zKZQu^j#R)xbTv=~Ilds)b -zo{M_$K#86Ul_4^5TBtS8(Ds_pw!@A(J$=_)8YNEFzRvtbA_HqNBt2R8uoRTkSjcU> -zce`1_U%%!TN9ZetjU=57p0ST<`%TjF1-?z}Jyqkt6sqdYbK{T^IAs7qDFu4HRw_xm -zBOQ1bMKA1=f*v}nalZ7{^4wi^J7HF617zEfb2^t4Fu{~ -z4ARNTo)k?bLS5WqVt&Vat2>u-Wa)&8FQM#!QP*4ihy>sRf*=x!OcR@qGWZ;n7{<`bew!d8G8nI -zn>bzv%*FI~SfB0wF-j&)DN03{G!Jr{mRlq&EeL^2BXjmsPJxqbIln#JAvG|ooG -z(UUqfKJINGIGdOYw-Tv9VlB%s)Zv3@+h)3? -zBF<#neo=5yXlnpRu2Wn@X&CRtNfQ2lV=%i=x~ysluHmhfkS)`XKUyHQwdzM4SU*N} -ztVeJjD=ooSk9v0@#0j3*)Sa%pCn7(&ZiHO=Swuj|Q+_sD!`X+d3U -zxXuq(%L#tdcH4r=WQio`u4rfO=j3}b>qTWYRDK}1?@lgBFf=WH-Y>o4w#=$6&%Uk9 -zL}CWpuBj*%+!aJV6NwH|LdHkw4Aq2?H0t-OtIPi#IP|$~$j9LmSDb~t*3d#F0_-j0 -z9?b(qewXN$Q&3!3OlPdRZNJ)*)35Kq^Yt4kMAR_gVvqo;AiL2r>om*a!)S)fvmf-6 -z_^Z%8di6VI<^OpFrSWO$GQ9BNFzvQdLlIgE_6bnGxj{iW4z~UIzW)8*oB}c%4Q58i -zuIqQivCCU(Ywh(*+|hVU9c=l3I)AO#uFwR{krxs3b}jh2x@7<(FZfY#3Yz}wQBvQ}pwM;(3!f9{;Ft&yP`@_V -zh)XPjzd!9XRbzDcMYY|wWRPA)klW1Nq#vDSc6Nv00gEa`r^qxv|B1iOinDS+?-q-o -zV?SQ68X4^kEo*=2{h6jqz0Z5-^UQ7xCzD%;Zk=tXl(c#ZNZYssSYM$`{f$*M^8C#* -zD^X|0rWwq=B~!XqM>pk$6$5C1$+2Z!Pl%N!mS|7VKlre2+NwkoWlOzj$`K<%cxT(X -z4zRCq`*)mnWB<_q^KSQo+pf6;XS_gV3J2pXC%I)7 -z?APgOT{h=d(jKtqwl-s~er=JXh6D=82EhFtEv5BzlpAWiU4uDtwuK;efA>hhyS-C$ -z+?^uZ*<9;yFNu-ph?@iDyHb{EU`U*SySQ(i;9I&zQtV$Cq8yR@INW`|VC6Z-5=OsM -zGGGm_ykPO(GN2Ras*?Q8Dep`6@DZW<)2^gIJzrzz<~@z#Iz?CQ^2U2Gq^1{Z*33a@ -zgqDiRsrAiGN_vSOw`>2@4(n27$cO48mCPfFQ#aY}*fy?D=ErosKYG1QIRiqDO02uK -zyY~{&q6atAimyJV@R`A)*^0o6_7G>C5kHV=`7$ReD3r?en=kohQ*un9ud$Xn_-#J_ -z@1C8$0Ujo#b1-|}e#04;{g=w3Dv)*8CofDT%CTqGb7v*QR$L9Z#J^%^k=G!oe -z=2nW4@;&K*^;M>Rc^SA`1X5wV*}bbY*0z(b{hsl-c&wG3m^`WtAXG)A`3H*Z*$wZ> -zyLnG?g23DqGCuB(b-%p52HFBLXVyY7U7AkhYP#aK;#8w0N9wAv2J;V+cL4LH1Z`G# -zL2okng3(F!eV -zTF`e(_%wBQAEqsbv>vSa;+3C?9vJ<_Ru>(0LmM$Fs|_Xwywu*g=L_&v?YwyWgp=Kp -zWB)yZFH$EIf{9%nb9Zh$>}z^$g(Qt<;4V;19F-HYaz%GpSi^2o0}a9-p^&-lWR=D9 -z@FyW|Nht*Sd70xW^gv)Hz%c9I`Xyw{PV}{U)@Odwx}q!^4-vXj4=Oa6Nzan+&X%J- -zRr!zQmNwGQ$c#6&EVkiGxfBm9XE8AhF?oDeh2#Ulq|6o($8e`gSjEXr5K`ldDcQKG -z36yt*c#v5Yz7*BUwa~cu3k}a8j1t!8SD5bUtsJh$5qMywd*VCmd^onNWljwCu=kig -z!X5r(5xt~TbdfgwF(kqm%I55r+Y+@rC4*lkn^Dq`#rM0Hz%jYWn;PR&Q` -ziHnT(XOc@NW%d8MsBIe;rXoMfllzRplnB}-{hOoDjYcAOB%J9=(t4=4(|6W;r -zL2;dM}??qBY-qHTO_@L;JR0z$MTT*GyrFtf~Vn6(=s$YN9p)C_@t&fe%uvCzw-&3p4`lT< -zpud^l5OVg);%r1?jnGh^v5gN2?G7s~Bo$DHnO<~TjM!qL08g}lGgJoFFVz$z0XeRX -z%DRb3J*sSh61LjYB3v{Al`G$dij5>}n?9O(U`>NlnS6w}vm3%pN@oqI3EQW?FD~m` -zaem;O1tC*1?%=+g{8Mcd>x4%IBN;Z4iV#7~E)CE8nyY)XVqL+`*i&--Ajv+++w3A( -zC9xgb%)rWORyAC7clpl7l)>-z!?Wvdp#a@@o5Wk?#FG_E*_}vHkXz)P$lEUiRahad -zz9`yyt0860bN$-Xf-+BQX -ze@@OJ+-Ux7*COurnWD1$83%J3`t=Fxe1OF&Q)Yhrt#R{1|(m;QRtdu8cJ(_xov -zemWu8>>k49ZaJCL8s5}uk>jsQ#UB@UdQt`!x&89zxJ#pKNvYDzkfH-myrnVcMFd)_ -zo@?^C`J>kXLEtz4{Vt{Q;U_c3RV15ZtKDFcyEh#g2utVSSL6#zvxle`7u!w+KEF`D -zQgTB#SbIwAb#%=b1D&}5&AW`9@Lx`Zs7|8HN<7Va5+|*I;Nuz->_YL*B-Qc>a>kla -z54po3ChKTrbozD#5Y@j|@PMo1k4kx9mn{wteBtcS_U{zvCOQxs0LXu(%2EOh_&8b2 -z)~{?25idES|9y(G;NpOShfy73-X(3ZIp|(+;p&?MpgsE~e$la(s&yu-*41Td{tZYF -zl$P%ZTB;|-@6WARCMKN371ADdbj|x$@xAkzUlY{&@o95lBF^I{U>*`pH{>DSTJpoE -zz&>ALmjIZiz!7=B+iri~qErjua5lSD(VF}K?4;<)aMCN0V%L@vFviuUH^e{+HPrBJ -z$PHkEdc*S#?Y+w?h#%a{JcnkK)UynO?~~~Dpxu)Q>+L^t%yaX)xP_)d&)9_KU2qH$ -zV|h~rl{d_!HcYL|Z=ms<_H1>>Ge@%>QRSk4oo=4Zu0+38(FLRd+hs-TooN$iefAb} -zf=e$(Y&euSeUR_Gak_9K?e>>ZD|8%kD{ -zPK0rIYPQ6=149$IJlM?=Bz(U$fls$r-#@yBbsE!?`s*XA)1+Z^7Ud1Y9=Os0slDSN -zOb(qRp<=xA)rk;2_Oam}7`1KMmF-)6wiNYTKvF21b4KZkkSD={CwC7n7lmAc`AVX% -znZK!xzbgQg{*3|1$OQq4vzk8e>kYLL1a`c!{|-tI2w$GYjE>??zImokrGUrMW>#PY+YfJmLHof&n+oRgMB^m~A0d*! -z(Zd-~*|S?KVCF)RRtz)$a~_&y9@{;?>U1W9s((xklD;51SvAW -z8G5&ev2yMVV^wScI9Z?VPERg|uhsBwe82ku)Tilq_f>u~RHQT^Su%8H@R>VN)^(;# -zc+KeJZEX_#8|AJ!LphGJ9a6(dz}?^ZlGZe<3ZbhHA%5*_5NMV%$8&F#16R27{LxfD -zJNAUR(JZENw*dE7LoGblfAv@?ova>paIp^4k}~Li_ySm&xd&Sb-Ks{t@H?&4wd_Ui -z81Z>5^KVv+0L}FMURA%>@$V%d>(Q?<#K_H0q^ud!JwpP#w4bsL{>!WpQ}KL{%0a=m -znaTa^+l-Pbe112Sz$B8jqMrR!oQq}xd>X-Hl2nH+nD*kCT|cnUDP>L7tc#U6Mtd#m -z`ugi8sPB;6Pnewbbdmwa$PkO?geECPFaZU%xMBU|BXC5Yqi7a&xo;g~vZanrW+e;f -z^1+{JTGOIDXS+u8g)E0Kr3HO^AE$2z;kzPN1y%4R`VaPnr|)3I_;tRq)uLlmgy0Ns -z#n08VQ>3)d`L{OL&-|44SiT1#=Eldf@L?x^8Ci$}HXRe>fsE|t>Bjg=o?2aM+rVdVg6K1Ov= -zxQ2w!@OfT%e7ss9sq9H?2<0D4aMiCI=|6Z}KQr4S(*5PL1_9|jxJXUAq^p`qa3m*h -ztH$9OG2{bMH-Hp&OoFiC<-(oc`{F3RgrCN)Nh0C1V9!sPCB^74nUA=5&6@$^N@BbG -zN%&J@160kh3K0?iVRxRIQn?i-I@e1ks)A-#s^S8CVqn2+4yL2zc@a^D$~boPLrwwT -zH4Mv%3X{GaQ%?jzgPf^-@3H+q2%I+M-s%h+2MTxvy;aNw^OTWgMoOcQ(sWee5r9~f -z%*~_)FFGGS2I3X>7~yJp0>4+F5B|uF0au&K3)w3p3Dr9DzMto;J5U!N!Se$p-%M&N -zsI~N+q2*py_t;3U+<-2TPC{we*-&69vbD=D_t&rAjSED7%7u-nJd2VH6711YcvsnL`KiH)Oi6G?G3 -zLj`gT%<1*QH10OO5Mw&~e_QAC1wX?5upBRZ`>#{+BW1zaIYzrEfH)4MHncBK-YSUV -zPh>QS3%mC%jgYrt7pBz~d}R{3S>R<8knKbF;#ztI -zB8{5%1)vPe4}4Ykt+3}##syp`xkV;F+z{)2d+WU=56K_D!KpT;b|mft%ZmoMRPaWR -zM;gb6MiIM8MsrHlo>TpHkg;#a?;!%e%#Hn1jX8@DLn#hg>NmD`L<_Zfu -zb1jOx|^cUFj!0g%7Wx+wC-oK>o5JL)#C7nd``V@949@gIxiy!t#}*hMyYz -z-eieUI~1y~t;{sj1nq*&J$ej3XCgb~j9FW*dp_uN=8hrGww~2R@ODZm1c#{-(!s}! -zk~ErrDB|s`nGlSwsbq0KjLHv#b_cxnRS*d1eC$E-FCJ>ogrzTWT$KGP0#)p}12 -zrrIfS)W{8P7?iJij3dpFEQ+$EMc&m!qM&xk%r -zMkAj&8R=5o1^!4$_cis)XdA$&^B*W7XG%2|EKtEKRCEd?uW`HVk&*sF4x(0!BWSxN -zY*KVV;=`fmYKZSby3NwcL0b=WY5cK&Q&mdDp38D|bvjRm288j#a+`ZH_(*fxZ`nH$ -zG<4~1q1vFudv~RsCDQhKeDHYU1}K%Gvi$frGYT4jj)i{B>cS*L;9tI6>$%-$FES)t -zfVfBv-U$~y@Vb|}h*_tDwWHPb$Z`jmJ!J}ogJzvKxIbno++F!no7vX~2NkHIP8ls -zN{}|g4|0~(A7G;;*OYl$gAzsf(X^wsMGx;FK5wvse4>4)$;Cy+F5SSi9 -z^SG_?4`nRAtbi$@-^F}~_EZD;q0n|uH -zmJ`ImGR`IzG}nPBmFpC50XK+`s)B9AzEFj+86@N#V3dYIt|SxB#{I?BgAMhWK8H=M -zN$lvO{i_rg$JI?P*V$FBG^|esVhl9+?9-jbH}X9^MA{OM6?onj<2PxWDA4TDYDoUb -zQtIr5WKy$Z{?3xG@+=(SQrUlg|MR@*%3Nge6suD)5S%93hTE%B{Pry)W*kjN=!MSK -zY~%SP)&hNP!eZpK3AE3N6WZ18^feC1e$hoYCb<^hrpD({%Drk?3o)GDP`JdDh6a;G|=cKB`Uz?55*dt -zjO27_s(s^dh^OKDeX1qyhH4`Q^wp9dN>POIF+P_^Y0wXelYs)xR89{KXpHyeB_=j2 -zV!3PU$)h8;WT#4_Sw&oID+3=hbO7SCxuCMU3oKe$I#<}tFWrDoN^xw$=j_`V3=kGq -zAm7MiS(7?tBzdlDeXk+~dnjoOIgW$HRx)y7^^a>-*It1)_uJFrmh1(JWFZR6pTs5< -zD`0vzzY=~^t-KrAZJB4OP5cW=pv;+2+NLRJ8cx``Oyo#}_7no3e~+nC)?Kajt}6LP -zZA3}>v2yD9Sc1Dnm0d#R^HIw+T-p3CGJ>?WFqOV1g{%1)K6}Hxc7*0VV@yoDUd?!NrO3ov`Q9zgvR-6jtE!+(#L{G_L0o -zwfAC=01na6<)Jf!;!b_pU&udZ;M3EteczA~zX-tnlpjb-LiyZM{FF?OuM8KVUoMLUAlPA*VwQrC=yT0LxVg;O+g&{(={M>Lp3 -z8j`uy{{M+C2<*C)lPJ@4nfvoWzzS@%d`%Ih)#4%0gSqwR7s`~4M=;eINKNT?X|CkL -zOYEBJb`U6ayeDhfNu_W>Lb#ZXkxBgzvY#O^dxknby+HP|4cf$@`N)JA?)XZ^F}M^FzrrNIGzOT -zh@X0CEU)0Fs$tt2WO8 -z7|3o<8RU?x+>uDup&2H*pte|GNc}R4B0Ph_W{EJe%R -z7qeoYgzHnU(U@jcoRa1?C_d3EGw>j(Qm^oX7T*OEu2heY>6GVBE&FA(1zC$I)XT}O -zc4-%Y;#s!#?^j2SRpJ7`A$_-m7qh7|owfd}n+vFLt`C|`M?iXZudh5YVNKCr!Ewcc -zA;y~w&)L@xuw{wh;~xg%iU -zPi_})6=^D4$EX_p2)1ehnMzAk)+SF*@2|Q~&a&~o{G$wr!I}NB9$2~q(*#0j4Gj|v -zC@Lax@>2sZC~Gq5&)LItx6St-1w4Sb(ja$xP@z+_P0i&m^^2}fEghYyV<9K`lCh)vLQUKc0U%`eqj5dYSabHvrUN*Il?wj#IqAJ -zV>@;mwoiLR@yo?&z#Kome(pb~JxqSSJRNx!lLBP|GS(0!5**QN?epQ^)5lym_Eyuq$F@~L^x*Gziw!SEOWF0TBgSi9#d6di;BqLu -z)_kYB!nYMw;R~wG`;O}S^!P!4fq-r(Q$&Dn`ac2r&8@0ejEafQA1rTJmt#UYFWU*= -zIeVBWkpcF8k3s<)yy>aH`=se2Wg+(Ye{I>#F2juP}+z&zK7V`W3#(^l? -zPx9riz*(Jz;YwAjC0KN@U0^*R*DYq#Z2g6Qt`+wI8jOHRbRGbUy)_*^Sw(MLfyl|5 -zhHGC(Cc-leg4U0-L&IBw`?kMC30+s(Y-0DB>lYC6#i=}a+%{n7D1%`tm;EZ~_7@6O -zdpjQ8cdwwGt@A1agN{%ZdEc{sif!LqM6O!WU%LEW?EVQ8ia}BiC+)3B;+No=r2d^B -z?JF92$yFxItdW|pt{w#+cusNK|Om1f+nY_iTh(3 -zDRwEjxnXqoVK+Sm=UR*@_jOcJHtpSP#Yb~Mws1bassdK<({a#Db!PB@S;8Zz<9p0v -z9m)Y*1)Na&_o9T*g0yt|JwEj#e`eoV!l2Sx!>z9KwI1}RGRzX+sunH6O+;d73;rMr -z*U}z4N&ie)3?vfCr?x^y8HfA01&YMp4s!-w*55o^+5)but{LKV2z;7*QTP}I#_)J}6-yD=d#}xL- -zJEX_7xF+||_{*|&)SE){#uSrK903DRc|F&+Z6p&DM}^MeI&rA%k;PXP(N3U+2gPS~ -zyQ{B>Bi7s$wQz>=@Dp7m;1_k6^QwK)FlOk;4+dx-7|p#Ph~{~$AL45#E(ym+_O=7|25xBOwRybuN?X1xGaZB+&x6AdWM7pbHQ!{i+sWR<;+os*Y4 -zdmGt%PoCBWKV;uJ~%bs+9pd@w)mUh6Ww?ACri^O|JH&Y75iTT30Q -z%kCP#`bopy>W@Yc06q>OUfnv8Bg%#F3{MYJvukNUa(VUrf7~!0@(RF0oCK#E>c117 -z==?@1KG(6BOYs%U>esI`YT$yvQiK)n)%ERux!UFACYA%1$VAvioM~0C3VpiHPkR!= -z4yTUEK1SwI*0pW`Yl-lih-HFqK$^%^tR?X8Et3`e(_nvK?ztt(O?Ss%4Da5iPx5>eJ9=l90nO5 -zeL$^_KWe^VJR>tJ3mPaP@K@zvpU*oywYMOk0^yyb -zNhq;(IC~k9=lP1l*jUeJkQC#J`;Kg#2 -z(XZ?U!<60(+EwrwbY^Vy-rh=0-V5cjbupsb*(yI74kTv-h3<^(%qY(qe<(;%Aq)q& -zXyI;9Yq&@Ba04StSmcL^wC-0n$~7UUd^Ip$uxIv)v#;zBNm~>gK*(ifg?yo!?WAP| -z_Tm<^Op3D}a2Y9S)2@*=UTW8q)(}w5{SttiJ5ckBioJrrDJzLf4wWLN*LfNQV&ss_ -z^ToPAd~$#Vd%e>IMH<=h7{uc1u54L-#*6NLs5%gy$<|*j5rkjs#g3s~&6u3WBRqf| -zfEPmZCdpUHNtR$fS68IIJ7*Foh~yuVC|-0Fv7o*r4GFPMPO#^Y0yO|r!1;+B$IRep -zu`nPMYpu-bCw<04;Ef0Yv-lfpGuZM!@+hh}Zk946YaA&PC)CKN9=fd5y7>_8Y}+Vb -ztL`|A*Gz5o{_%D^paT4@V;7Qw4L1}i;%w;Gj+Lj9zp6$2&(L&iV1 -zo`vJ_SPg#<5DUR=V#}YZ4b#Ag+D=z))+0V?<1$%t1!W;jx81fLarDM-D3_}t8}Uf& -z#hgE-uu#kg@O1LVzO&m7tlhBSheb2+0iiIs%D={q#*(T1OH -z*MFQ&^|B9eu|L?9EdKY@#OH06#<)_?OlHbCt>_%8 -zw*ntdOaEETOpV6VFpzHI9I -z*W-)Vqlr2*RJqkiI!S2O9yBm6(=1?ZXZQ3NM+52Nv=9}cJt}dKnvOLbO!z4}ZZ*M*>E) -zdR-(!G$Ub^lxd&VcTjB~N99R5-;s8+E?Xdy^dqA5_y2SvZZy@9!VETXsRV@fyYL^( -zg`&k}V=q-?Y!~Ftjj;rY@vZ3f3cH3NEx9tyOmadD^h^)Oxa4#pWniI$MkX>3q -zyv#am4fF3BE(3c4{pNr~po|W#a841FCxMe}4>aGqwBDIZU%g*`fcrc4NF)O+T6CaZ -z7?p6fICa^5MI>bK`{w3{|Nnirb_<|b_sA-9gbE*@Tlv}f++4vyk+_YYfk{UkE&zSw -zL8T+r-{Xwe#ce@TVZyO0KKXgD21O#4U2qkErGiAe6lx4Uz7TRUwIZR%XUJv%9eLRT -zk6}pmw^2Irn3iNS{FIzlq3WRmZ2LGI$q!b<`82RD=rfZoFuSfF-QQfs-7NZLo0c}& -zIQ($Ht0$9O+>ZpkfqP8pnxEL5|H4LBJ@WxN=r;{gkedK7$+-u5d$gOrg6$c5#7$+2 -zHj3W2%}T%2!|3xO4$mD~z>dY?*Qb8h3WpKy=1tMZ_t&J4Kd&{4cIk@0^w*1g@hd+k -zUYq6N?#{G>ir!fCM`wSI3S6l;+XC*Ij6O|E3@{$6Uk;y1=G|p;C>1m+)s4CLSWhGhnHCb|eHwr(sS` -z-JuPPD>I>nuaBx|a|e?4{eHTn+a@?$n+Q3W;`s#)p{$jUS!R!?$fQ!IBa1J|Vcf78-@0B8zx;xz -z23+v!GB^GN=OrD#FIFx=nfxIhi@bee78}KOmGV((4!Q6<=PBpw4lJqe!}r^8=Y4>M;?Y9*VOp!! -zIqpjKPpJc=jxZ0pYW$mQ-qCRMOISoPEDvwedJ~ixaS*Cyy?hL}abi@sz%ygQe{B6n -z!2k|qqg`dT(aWvY`HsL>_pg@I3x8}4fMenMhNu%^Uq~Ds;G_Xk%7+)qSYFH>sj!2V -z+orA_y$toEQ{@(cL+@u^Oi31^0&~7~+w- -zY!m{Vf!$-9VLx2fYQwAN8Tqf1g&dK{_~{x!h7@J`Sq5Dq#`KIfvA%0bFd{@3n00DT -zTrS`wV)#eA4zJz8B5GWF!hms -z*ow6MY_M|Z!rf1Ex$p+NxLzg2b3w(pC6dRwJi0}_xHVr;&|QkKrFdejfs6wbzvtZE -zNWQ!bOa9+ptNPf!$+`TH(FZ6?2H&K#eJD_?axvJMT>pGwo@f(ydl?LiyHlab{|Ol2 -zZQt?loaKbx=uNKe#6}+cO<`(7JeWxkYdoTuSrI!1OKJ191auG#YkAIlW1@8B+;Pdl -zpjgFelSjwNWWj3Bb;jLmVpN!7`iu$c$m^w*+r>M99w_NQU~c0+UY7)*d^%puILmp+ -zaZ}y8&_1TL2jMr!sHiF(sx}Z^qT!K*N}PW?3k88QL5v{zR*zpRKUP3bm?~|xHM2!C -zJ^3#A#n2A+MgS77;2FcaPp=ir0&*uS`SO(au}li(CrEv+Y?yMGE7C#K+%{?ykK_~D -zUfmeW7O*xIH55l1HFwhnVw#omCni`bh8eOQrgo0V{cAx_bnh;1^^1m-rppKd$%lf9 -zX(OC25!CzeGM!37+~ey>(b{Sw%DGr7>B}_K`arhfLcAO^R7E*{#Aiq1MRAic6-G>| -ztBMZjqj2j%AEFpvW-z0fEgxE7BYeFJlP5vHm-BUlv-!tYFYH;CL`L_%TnCyF)5PwtWs` -zDRlpb!Y0~iXP?hD+Hjv#X!OY6fS7~unnw?^zY628|Bo|X^RV)afp_A2{u<25usAz1 -z;c04;PaR=im+*wtu8;;4J{c_^NLaGuGzXl8tkT8VA44pfF{WK#7#bAtusB^64GWA3 -z_<=-QR(OTEIHs|4WXtpse5LL)iJhuU(u+~5+6|n~mW)BvB<=3Ic*Z1q6ltWgxpRQK -zZcUcLi{(dfRa*u(v2|@f{IW@xBk0{Zc~To+wqvK_nb-WwHE?_?`}gd5yc*&gxHNg? -z)hf4t(zj#jo(dqnO0!e)ZmB4F!OyUfs5x-3OY+1~@)z?LsZl4AGEZ=QxGx{$`I;kN -z8xBiE5v8WTDvuNBTCiXz)l=2Ed^?^+g?YK)Qb2JN_Yl9(sfI+fFp*CJc3HHXYv*qxmBS8E`J!*tGs5ec~i4^l9dG1 -zc}0(w_^K)Xrg?| -zsFN?TTN(caC!b~Y@$O%!4bi~n46ij{*MbeX{Q1RpcO6lEmk$DUN#B?I^|)s42x&xm -zhbi$HLSd0et33gI1+N`l(}>feMk<8Bb-0JEQ9x4P({IHxGpwT)czHq-ZPBrE>*myp -zXqH%DEPz)z=ABijvTS-|zDn4w1k5AXK5x_S3!gFyIt?%~;HL7_IC9dg(}Kw~FHIlzdR-sn7BY%^nhz)y@?P@hH|^PO4lwf{46wRLYYST*>I&HXayM{`WZym~0`LlH+;Xw^$tg2=nVw`+G4CoNCU@!!E4<|>2~sMl_R -z?h84SasaF!d+zF8C4xCFDO}*xAAT!lhs-lMjogNHNf@2t41RyHd?&P&jrjLhMK_#{ -zQ+ysOC$nASXMwfdP>?B?RTSeOUssRj7%!QFLb8kg?Lhx)eHN(6a$(Qe-1B5MZcEQH -z+8>Do7;)+?k%<`QYu`oHK88Z*;2v*Xl{7WWCtH3F9L6A{4yBz4!Bpm-!H-zUAJYzJS=zYkX7wptI|9rAiu#w -zxyUK-!z-^&9tP@aRnrcKOQ<^F{J|wEr4+f1!@8szD|)oXIR0D|xdi{&uKABiD=in>UNVqTuPG$7y=T-q+k4h;PLlYjD%rmY@oi%U6@s -zg1Tp1T^w<_F67g%jJm-`n)CY60-6wSdAMIRbhfHz$ -zf@~A8Y%KjhiBW^ZyZJU)s;D{q`#*eZ)-Co!@UFja2+CHKl}Qy@{xW+jKc8hClkgNA -zDT#$oI|zNcAezA%1@9B40Ip`S+{e0)K`h$UcJrR{2wE@FqXr_s#cRpQZ7?Z(lBYmL -z5wjz1dYn3tW|pTu0QCL8t!~@(-OdEOR&!ku!oz!7{4r2O -z!yni9QFvlP#2{e|&v&0l@{H)$%S7kvu9yKH>L2TT -z{QBX?a2v7_cmtLUXVVxyFbWS?b(Ki{n{*`HQQJZ{-jB$B+ySs+X|cV;6r--PAggqB -z^--|)4ofx=3nVwHzWRNpW5zu*PP+o~NNXzLbcponwXjf=E5K0S3t6m2)ohP6|8F0KKkU(HIa2=83BJVS1M^c~WPpD=#|{mMx? -zAzD{cP{K`U+$Kkecu;R)DM8D1Y{mHe3M>}HUia!X;y-?E{kmPBQgtcMJQ4k(3hknh -znSHe303RR>+Q+rSI3$sTIfU^$5(83;6y-T7ML@uUjuM)`la$^kOT%#we}t%8wCpT| -zOPEKc;=JhVv8qQ$kS9cO^wBEtiV+@6UHrQ&UpE>FjjOk%m_HvH_c}{j<2Z@I7NyL- -zr&MtB!XOx8Lp7^UohQ^4KK8`BtTzY0N0FWKRcr41(2o2V5aTr+rb6FT-kVAn!Y(WM -zb#8`CZKEGqO!3r@@>e0zDNjd&Ks(brmo>mj9egD*N)I@9iLOV3-_Na687E@!{>Dr` -zw%$tFo+~c0tL@7(xBBNY1ogy$L75C=;`PglplhlCAj*dd6H;iDD*>o&7}0%~mfBI& -zR_S*{a8zT$Ffz?zxp&;-GTeP3`fCt3GHJT}Qt8X8);Mq5@=ysCZYZZAhO*7mr1T)Y -zpTBPtIr8BGPQ20)sr1q3WnW9zl8v7m?Enr7l}F -zii=jO$%M*^>4{Ie^>zaOM{xb`(C?E?Wq!XnQu=;Ya4dG7r~tp7K|-fBjSj@-&F -zY9Hp26cli^toCcaO-(cz`o%pcew=DskFYhQsg0e?%WGUc6DoQ)1{C(u4#YDEPrKso -zegQFAQTM$~s_6CDsyZS00DA0)taTYplMx1Iib=-a#sw3&UKEzJpjZ!dB3g)1b5ZyB -zl7%KGTyQ7)WcEM4M5QHazoX$bPGB5)H -z+Y?rdJ11>OsGRuG8;KTg2wnw3{P~fBpniQ4T9?9Ca@n>~vox4_%&9B?*bbv2vYY&ehz-lg*2WLYYzIoXZ_}D%1jJZ?wEJY_m>%f{i(}Z>tUJ-hv1bWeA)!358mKb -zk}}H(2mUs*phBEsyW9mu>_w0M5BO%1TiDk`&=$+!1@J1wh1k3W`fBYM{#YyPH=0

N( -zF=oAE3-MyLI;SSG*OV330&u<-M{V8PKdZ{{xaeK6<%c2fcAGcCTztv;b-hyAeSCT( -z3Sv{5pfy)1yr^BT$kU>G=ChRp^~7=BiqVYvZ*FUP&8CR*`M7XarpD>BT06(LelMb$ -zeP;d`Z3&+y=wE)%MVG)_H7rAN#pc@ZopJC*@mq-#7YLDk4eU4s*}|Py%WNb#rC+d^5Vf1Ony2NDKF0RxrvoN$zwZ>|( -zoz^z=X7=u -zP9_zf_@R>_3|-`8GC>Wr0p&IX<4=a$2RYP$R7Ya;Fa$}`F>5k1PuuHRLFsefp6N(^ -zR?75u=e4h2>k*hauc17=9hAOH6e7a)muDR^-0Ku>W?95aa{G9E`;BS7F2f|GyEZ-1 -zo&P>ZL!qBZ#r*}U6ifJO@TayeK*oM)q?c#l`|YPMIkI}c7_;}v^p~Gh0~^`7*^pPf -zfp1VE3{rtM^NRqB+eHzpBwvjnJ@gIUDS*+hgs&d~C?W6=pAcT7FwCOW$tvRG(%Z0% -zwGm|Zr^`}QgCV>welhA%Htrgi7?0|@YZjLAOOQkph6}R7`|1F1DJpON2kZLb)!dQV -zE!8}8t((6t2A%}@*eKx>5bOQO?RiScVkPE-qvWwOP!G#{^xUEN+^R3V9%N$afJNz} -z@ES-t>;da!00AK6?7%hfWbv63E+*^*3SCaEELazFtq+*PVUd@<%fPRN6|U|N1)klxl>hTx -z4vGVL!e%ll?jwy;YW*q6AA4uXTM1+XR~C;H*769RO&y3!;r)-1MasQ%BN~AZV{t1v -z5aw89kh$w0Z=I#z=XZe_QkI?uWpBYmbG%@ow?(qO>yE-BsIGi|It%i!Cj-;L<_!^g -zh2ALD2dzROx&5Y(Pjs*Dgo8KwF~z>-e4e!60M{bCr?f{I{Ft7ZiUywvl79ARv|b(@g^I1BhvGE? -z70iBjTUH^NkqMuTNI!t6`p2Rlir806<12I -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 -zvnE?$B#Nxk%#Sb%QpPom-LH3 -zB*Q`UkSIe?d(_q|5N)V+o|bZ=1SAmIjSM_^;tO;|QDNiFj>f{9)ha$MOgU4>OP~_w -zL8!_l+WmUrN0HCL8j$QLm`+x62!p4j{O3v;`~9?S<$d{2%P3H%cdD%QkIUBg?jf{v -z))^%h{p0_B6{Zq>Ge -zJojAKP7goYRS3I_AYR~XeU*fN3@?$?(tmC>U|pr3f11mpjcE|{&mfh%qjgRmcYM)l -zErV5w=`Ub;#g~jT1>@PJ<84j7mbVj#FxP)HFala&giS9v%<+Usx|lwP+NApS`%X8sfg~80(09 -z$T3E8O$wKiyG_J3RYK$!YAGfZ!$9!os}4Eh%dL`q+^W?@J-V0ZfbH?Q7u-K-F2v{liacHlQ4l5EWlO9t9 -z9Le*OrS>Be5QdlE;zF0NqJLshmq_PRQVO9S1D`ZAmpQ?cnh}`QdyGYv8JeURfPe?r -zhxqh<)SpQ&aAH`WVHQJ_NHig}>-pr#keUwsQxSvZaKA;72ab -zA38`!7i4H;RDR^?4O=6!aQBNfaI=RX!wV`N(#nhH&&>lLPyn**nuI#9apu{!g5uXO -zGPa0={2a1n3Erb<&%BDs`$JI;Lsf}t{eOow{Bs?zPFi6|BknX>?n`@kK=ut|e`&G; -zCNgE<)){lu9;X70umoU$*c5v|E)s~>=jy=h#s{XEEEF}8b7|MRS4Eq<99 -zaHyjo^L~~$wP4cTo#F3`B{S~ty8Xs@RJP(zqdjyOqfcR^PtKrX4iDT(h3$_7g>26E -zq^?QU(&_Zu)=ji?3}LfY{GSf)$uMnI_VbynhITHAg=C>-Py6B-Tg?moN -zC;VulI?GmaB9`$~9y2;yEAOH_03l(*C!W&!b<>fF%`JgX%9{j5heO9t~1 -zw@~XT)v+6`6ok;8p5MHKL?LtxYv58m1K&*xj=?V3pSLNZ9-HB>ApzKz=m)@2jkP90 -zotI{nipTYJ;B-{bTU{eq#nhJJd}Xm`gFo3EIyI;Mn5Kcw&Kv45D3X=Io-ZHVq6Jne -zhI&!a*tyKbzjk#&Xr!VZo_raDYq0J!h1Lw(rnbt-yTQ;AMAf?t0V;d?XeepcprEEN -z6%Rgf!|}FW5EsD0J>tU_@F^K?J;BM)APn;l-j~l;vRT%J#_uv%=xS8G0k}v+Z;_OWX@1Y-#c^K$VO7&MOdQ_NZUDfPQPpghsa?1E{-Oj**cm&MzR -zHISYNkjhK#PYE#4M`pjA9dWuk_R65yDcl@$eCM#* -z_D?H+3x0XAe6ccIM$ATN+;Kn-=o7fmYK;(y1GJuh`cWTVNuQ883RQR78V6y5cfwPv -ze?Rh2#XlMbZa6F?m(9oZdi#=xCI08`+ -zK2qu_U#kp(kNNgTWPpZ>jGS#s0C@hAtx3`kmDq(xGw@V#m}xKWElF1^5vEZd!(8fd -zKh=>M#Z`jDym*RHUX=v3cny~#172aB0O=5VPW;<*IWJKoj!S=9jHuDaiJ=XMS>BP0R{nbxWy=h@~a -zPG#ml4}Q8-C#;;r#fPIVQpOo?+$6tM$#QIjQ#V -z&*4-pDwaPPEck}qbDFxA<#b7sjyFw~Rs4-7>TBtpK5pAnd1Q#~$x_mV#J>)HKyJU{ -zsT@NjgzJmUOlX?}$H@pYX)r?qqQq8ctoW`TT&8s9z3MLm=}^jgS23Nicm+U#N3F;m4a1j}TUovw;u}4a7BmlSCRw(z|Pjkyk*G -z5^)P{upX0+pwc%Pt13-u<#3uHDr!S(J`+Z{O|Ly6nT`2wj^yAU5Ho+qIh0*ugaMJ3 -z1GH-nC|(Y8m}5r)GjjLX813**ZNmg5oJHq`Hu*mIu+}m9yF~$cKyFL3$U1I-2x2TQ -zW1%0j>eANEuR&Q7Qp~!37T~yXP|sbtEeX4-ko$R|-FvcF7muJ56;b$D -z^M;C`AVSMGufWA^6>v#1!fTUAF18Was;?V;Zm@fIH$z%dT*+Z?;M1Uy=|ke_san@N -z@~uwsKf*+#ND0U1)yH3zP&K23cDNK?HkF?K-7;vTusCka@O;wxwYmi#i;Vq -zruRuwyShIZc(zG_WuRg}ohLb;C7lqpoab{U5cYxrR*Bvc#l -z9F3Lt$W;#%Qj+eP%QBjArgq`u=H)LOFW0lC9xYnlbQp8w*@s?N&ye=b2K^s-J(SA3 -z>XvMT`^7!ktu`tvx`4(!VdA48p{oO>0<^@0)pXY?fWzwe^S^59l^lUD-7p5d7dAscHZ0~Snd+M9J -z{e|Mj!p|;-2Fkc@k;V}4avkwQC4p(jIDo#kI*6N^dV$C2m7Q -zNbSc{q1n~KF#K^i^#1f=L3E2liY)I~*4_!gQYA2%C*I0PCGruUL9Yr|NeU_6?b#+3 -z^_6zx)yrj_eE!??4vm0oBA97j2xIvhGfH@?zVwUucE(B03Tt#arf&R#gm!f;;cIP( -z#d3u-&NHwgiu}j0Wy=d%tfwQ&%BLKxj%$f&K%pq(B1XwUQ0Ch -z1xrr$Xhv{|n(;QI1C%n6xg$_<6!p!pYWKybX^C%6426d<$S2FXJ%+` -zV+}SBp=m2(#1!@M-EDgu|3Iezd~Dp9*5t>juL!>gDj>CLvEPr6X6C!FWcTd1S@U_r -zyL|@6n&R!b)BgMWt7OBtxCn>|_Ex${DsZbo>)cME>)bL&`H%RLpx#DVu(yh1Gu_v* -zL9SG$uU3KE`bD@lhChAxIvk~g(2e|V;-t>_^8k_IV>MGf#pqlfXl!8}IQJcyyyd@L -z3M%ydgOtf#uo)lbzO1G8xKI1_GnnWHCe{qEt -zvv7#ZpBS-BxDF0>r1g~=f=gsFC=yNS@McjjCajcP!u~uV!J5T6 -zaMGG?2H2k_Gj(V55}L#Djpe;$-4)AL*!FK4Ze>6{9DfW0+~i29Au|uS#Yo>t8QMXv -ziC4@CP(9ZESyNP1VBPY49L4Xtf|5+JM1$4!tB+$w?A&NDo>st>BhSy3$pma3{#9ZU -zL}K+Yy?Z}nl`xcG>9REN6fsrUN21DxH8CY(0=N2om!;AuD9`J(6hfl1rcoNOTD!uD2!EZ^fK*! -zWa2pDgO={Z*p1)9m^Jy)ieUV(&!l^;s+ZCnFiSEVRSxSeyQ+8pbYWLd95u`KInF(m -z+-zBy#wYgM-zuq*{=HR#7!{<4vG7s$^g0Luto<^I9ZGp_(IsIm!?&%4&!>g#NVG9{ -zoES0gvm@@)bW-K}dc@LzSbLL`8`T*L!@jjC0>*0K48oh;22rr**}$9GiY=o|38tQg -zjR~7q(jH5CC6`jVp!wYqBbuzYVm+sGfnO)MTC^u8>1PFa=zMxYErsqWmG`&VA_dEa -zXeIoFB)lLkSpM?Z80*0f1LJo|9OqE!&Srdk7G^FTS9jF-XJ_zx>|W6R*0JdYWd}Pq -zw_X`-54)M^#j2*gfd{cDSIjSD -zy40+nuNIW-eP=YK7X&!~fX!Dug#+LH!N2R$1+~@vZOXB>(wVX3=4C0aA-@X1AP_nl -zqv__LMRWyGtE&E>L|b4WR%~f_fTtpDV6;D%Eh6cK@VavdoyT;5i+jrV)UXO?ODM$` -z4%l50QF_(G4<>>qubvnZ2ibpSCy&cFNQ -z=t5gXW95uIJcI9$Lb~!V-_b-38(3Jgi%!mvxnj$F2PiYX19Zm3cY{w0pl!}+KARM5 -zImx_hEvm>i8oH^l39{rzkQhQdzV(YKz!l>qCZx2}0~jj~uy#riXE&P`R;FKRxabZZA+%?VQ*LkS7oD>y+&s-mi30xvS$mWp#)AH3=Uc0o?j -z>cMZa5=6j8xh?8D+%C32lK?~yyb0w2S<*mkR&=^rnT?-_0>D`m+S0c!Do8OH|8waG -z*hV#=o9SKDfHG25TjP?6kB$x%$n7`M2cP(~p*XSP0B-c>2qJElFY#}#7gFzrUmQ(; -zly&S#IRn=zQ3Xz0Aj`Z_Wy@0mocyolJvq@!I^*-|8vy+%@@$w&!@O_k7GlNGs}rTm -zO9tu7@Ki8}86U6Na;K`2;~fW7QCk|W^?I_PIOvz@$95~P&jtOS57y6!3d1c4`{2g( -zmS2SR#s6Z02Nqc;BbV{T2JgmGNuH7Nh2>X!-$6DN#5#8~h;qsB{+_B-{ssg#ag9K8 -zg@g08r}}Q_d`8K%xcyc9@`b#mh#d%xdAq_h@b*>2EeNmwk}m|dS9un-_uzT*Ap@(` -z+OQ4T?oj+e$18wY*Io77&mKz81>TL|xk}#yo_UfF?sH0(%M*P)>-xmt1g+@&mV%)$ -zw-GZA!N|-t5WroT_a`?7PAd)F;0EyFEY!*QO$_6oaDGJNb3Dt9Uq;N?%-UsGTb=X!t@qb6-lcG`Xu5->|jc) -z@a)2mc{TYg=zg&?)1g#uc``Kl@36NWk6ah?!!4flUUmU) -zMO>Gn(c}jd#?tvlvX9~bAa}nBdoBj(OphHF*eglE-xYuTskjXJEoqJ*mj2v3yR?h; -z)nCF^HQ}I@Yd7mpP-oI1GWGLQc=;#visyE|gXSyCw*)tZIk?e_u|Q(imTB76a?nKW#qV*^4vcrLmvr1KhN8I$`B3t@=3i+EMbT=iStu^}J7B%+1VZc|vKzUwElCy_u -z>0PdJ-aa#Gt9=YgT~Z~Bh_LH{;|%Xk!aIpX15D0CC<4|(>t5~00|LpI|b58NYyrg$1+0bTgJ!#U$zcx7GW9NS5 -zNeQxqgkb2ses`KCe8LNQ3S0jRXwLi-@esmJZa=NMQdN)menQv}K<)h0bFWF+E-6^c)WSI|+_aI-(#jlnrRPmsBT;aWbN2k^*XBWM&pl2{ -zP5YbrQ)8)onu-pI=gEoc?pSO$l>@F)+SuSnj@()U8+~Fz>_Crd7{N7KO@Ezfx#m|7 -z@lPmeJNM=%uha;cL`^*(g_JW44kXQo#E#A`Fhl-*YX -z%9hq2KaQlIiy)l%s?LS0PK8 -zl%<`%Dii7)d-6Zu198_#w|`^niPaO!JJzKSn7LtHNts@oTRD}3c(TryZ_Uw@%!F&! -z_8fl}eIE46JGxtc!t1CN)G;nIX)hG_*zj9@@i3y^>@+yG##9E}ldo-3Mdh#beHQ1e -zzvGoYsEIqL_ME^gj`K&O+cr`Y;Sa7UeyL${1HoP7vES|9jf~_K>mOzn!EBs=dK1YA -z)TDZFg16mKMTX!=)2#6|u_`2lYiSFJvk?3bGmH0)P2$$W@P`%}8bp}g+hZzv+e3N< -zOXZBD)f$r3#zGp1;b|k}-~;%#&4&v!EHFs+R8?Z=IpuHzui{FZ8rXH=@=O}}U(0!JD*tK|{Tn5;DIuVX3UGdpS9NI7#S|1Fx1x*$ -z6eG#kKS^AJQt=d<+vvChIhKlZlN&@d>>pq6!(or2Z7P$Bt+%M+uDWH>}0Q -z7-ihiuFq0bN<4r+a$%ftnnnIsg=_8tA}AKph4zlE7w8epI(=@PiaW&ql{)FT5ij_O -z(5{UIhG5DMt3`oa$qx~)V*IT5o$GM!^r}`%qanudFxL{M+og53&e|chB*jnw0 -zdVCJTXME|-y}Mr5-qA658R*hqJ;3c^Cl14OyCd*=uk0G+)L`Rq#;(!+@F2v$?H`#0;<5!7&`iMs_9*T3mFKX5`!vvT4+S -zw=)qW^drl^9stu7SR~lgP-maY4YkYZwCPcSUG -z=UfXn<5GXBJvDCpQLJqs+RC=3@W-(~xlYoJGq6lI#!d-wuPAs7kKZ3zB9X<%kA3Ad -zUV5vbr%PA$)CdPjGTdixBbj4-m_XM(SFU5-pqblg14XOG&zONP`b#k0$*#aP7*PSn -zlEA6GNGln5FNf9iC+h4t{1L%-Hp*{~dE|R^A0%;@QLH(Vdo0YxOf|y0Vd?8+eqhjT -z%R$MjQ#-DND0i2_E(aXuxH3PaRE!iGd2gS3`bG&?eO&r3vF2ETXI2HA;+75g#cGmr -z8{U`ZTk$UFj+dkF+1t#7;zOmhA!#yS^s>fw*i!Dbaob-C++(q*Jl`Kloln$x?JR`+ -zadigbETRfy$P(mJr26LRTVASXDD~0eD9{vXdm){S6=BMicw|0|ij8m!jaGZhL$Sc` -zv995R(<8GWFo&7W(0BFsM*EpiVg=H~s2?DJc{@RUS%0$$AEpV=jZ{peM -z?LdYjcu&F12Ga{$7(UNYRN1j=Z$@{O!#RtKdcv||1Fh@BLw={yK0;JYcN9h-Wpk<4 -z7tV|1K=Z&gpnEAhFS|1CM%lZ7U8|F`aWeC$3 -z*B_h7$C3x+nco*dpNEA{VVZkTMtmJKp(>bv?32H#dYj2KKtoVZJHfFtIdc&L;ZL38 -z>bs5C7Q!gxYRg7Ev&ckg!OIdaTUUi&3;>fI9p5T?v_(Q`@R}Ibqa<=5Sgx$E&s+aC -z`)iZ8P1M80MER!JYyo}H!|u)dK~>sb2vAXl$Q4_}#9r7$grkA4bMdrRTkaqM2<{at -zr4%(Fksp18a{5)3{_R$;`TGcD7If{lR||LcQiBQf0)J`^f%Qdv)*^>oqN2ci_e$sKwOW?g*WW&*SJ+NK5Ewz?s6sd& -z6WfwK9KtuJ?t?IPTd&qIcj;n751Bqcyo0t`@0hOUx!<^ncl8;E);inZ -zh^7HR@_7Q^5WAFxenn*{Z5g%E-S;)^mH1F7RYi-sgunN`L^aDCeo|o+&glUYfD~aG -z-C@qvi8Hf6_NzVB$6-1jlhT93UfBJr;q-L%QXmd%5ih68-N>u&!ef^_NlIy=tCWrvoej=H^?AI+S?^!{imRr)7twHU -zoW8Q35678dS_<>3i5(?&htSNhV@iH9Ac;#fTUyTE*EY!fdhT_?S9-ek#__`;ec^I=Bo_Q~Tkpj4c`5n=fT095t! -zb%vRD5?$Lq;v-w&jeYbivN)*U3_Kg#_Hv{&(gQLa)s3R6Ur(w|$BfI4Ys^Q$7J7WD -zBr|q4ZW-ahhlSj@TuZ?sLyhOS_PVJ6A8>m)J4)sVwwpn+OMiYX>7_)O)8weDl2?DX -zv(?}YdG)fpC@cSM>t@lw8I&k68Upr_XWwI82r{RoR34u>-XU8)k@+P8X*Px03MeY^ -z8Fp5%GQh-6f>V^!%Nv)Nd2Vp5TKa2Dr(+Dt$4|kI5t4WP8uic|ddeAj`7&4ePB&hO -zXKAK;#WXroB7hK#hwpi%{qbBKIqqqyl~IhqoR39uyTq@J=liR&y)tDly+9!Rmb)W0 -zzaH@$Z+ROdFZue7p7u6$^#hEuN -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 -z;Rb#Lcb|S~io~v>;EM4NW -zUpM9mH|yb*bJ?{A#W5~w$8{+!5U2BUH)azxv~55+>T8#+fdH|TY^+$=`9nZ0erkiD -z@%?zV>N||waddAcrVcvO+=tuJ;cg^Wv%jiy4ptOdSeYt9b9_aT3Tb>=Y@gFgTdZic -zU~wXY6Asx@Kj>u~ub@o?bN!yv4^b -z-O`snk-&iE4qKWv9VJ7Xo>I`#X|ra5R;=FqO(rtwFOO1U}-g<^h(aa_>S<3gFS{AKCx -z^r<(4B(^w}Xy!|{RNBIKGLq3oTXT~VU8Lci>YsK3aAJJ7+HRBiq`o}w2^wP_)VoGz -z)|$Gf?eQuNgEs`mb{w*MyOgA7`gu;EDGH=Ym{V(Fe=4>++rQr~H6iQAK -z1&=e=%k2{qJ2oplohA`W07mFLY{`^UV*6zww>3Uo{eB~cnmR;&IDO^3 -zZhRxKCRrQ$2xN&=LWHyf^Vb5Mppa1Rr?Pt|x|Ul!7B=^|zR9kNUg!ru$r_^H -zQQ`3~_UX91CNMPol^Lbmd?l`G@MZ<{HT|#l_m@LBGK&qN1G%4c7qBHgy<}=v^00Zy -z^5mqe0Gfz!8~_COwcu~Q;4V@@v4lRdooB`UG;v}|+mO)Q$szSA;DrD{EqY3Ky -zs+3=ZF6p5(eLyeT0zk|WNrsc6C9~TIYLI}{iN_1NQbU_R`03Y6QSQKJ@GK0odTgyv -ztU_(uH5d14%KOq|+r-bCY>_JbhV`*UMx8s2FsIxqTR@N0fWAtT2HAW);DSZ(?OQ^n -z;F@i@#fjF^lZT<$h5+DIOk!?hq+xl-jfI2n8$h{-ukpxrZGMau4AwRiN;_uLsFejW -zs2Gk&GrTBxrU=W?DVBvR8>5xfB4(uKq8WyA4455)763NMaxIR3v)KG4wn6J)M+kBOH72sRPw?e&QM?$B -zoEGa+O#NE3p5v(#DPT7^88L+uu{pTT^%1cJ&%Fe`4{nV^(bv(+>MsJCF-NbWl9m*j -zd=JZIQ-r0wa`GD@aB3@!yVq362QAnp> -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 -zgk#9m2r@$z{6J)r0Y0^eZp^=(`uX(H?7X&? -zjrpTXZc71ECGgbyjlz;Bgf?AKU6 -zC=9I)(aq=qRDnttaQ)4F?M1lHbiVF+syOas-ws08B?a5vXM_*oj!xgbS;HC3jN?pa -z-D&`F`m!3&-=`#XjSEG=`gGwZQlaMi<>+)hy7ZhzwaQ86TZ3?ua*pazp`H7>j(FWb -zvQV05i)N8@MM_^t(qllJ_#adkjg!ust#ej!^sJLnpd>fLd|tF7 -zUwtQ0gKAew9K{NwqR{n_Bs11u7dY*i*3r?iZM<=V1uMSmsO^of(JEc?Fmej%%zkJ* -zsEeC+Ma1ghr4Bf;{C!oBILP!C@R2MDZdIGUw(elJ<|WzcnC$Ps|Ab(4hOm?~Mm&F& -zAC*^RzJI00EEo+EwqvkS6k3nIrJ*{)%MDFV -zTq5hoC)W$MGLS9oe(VAN1nom_{#`7DwKNSW81sx}R#gBX(O1TBg~v(VODxQmL3K -z@>-M|uuxM{%jb;J0AvUF5nRT<%vuPp-+VSG>}O{X%|VrJQWw0+*YbP3-0|n}^eal5 -z^4c5Mbmr&7ZzbA$fPR{2Cb08>fM)#25^nC8cF1*_JT)7YlsJRiL*i%R9p)23E0e1Jkktq3WO+8etcFV8pA$fQ;ru-* -zdQ^5KaB@fp6)vwRmHDN1YJ6_;HszL#NLqjTTm1Gr6t-)4I_iM^@E}BY;IK}+&Wa^p -z*q2uqlovFH?qhiCl)bx)(tc=I`9ZF(SsUEk^iHhI09n8lKT<_8>310ys1?+UNPbuY -zZHiY|`s;x~#?!_npAlaQslb&t=krPKGugo29Fl}G&FEuXQUd(MF&((1x8KRR5LzFB -z@FZ-I%Rq#Jo3WSFY6fKOvrQ9vVIa}Q`M9l-b`&g+@@)ZJq$R~A3v?kexq+@cEI#^# -zZJzHTP11*(U!zNc^@ERzyVEtHBCr8(;i-R-N1Vedd~&1#3vHkDIvpRTRCNk8g*~|d -z2GpDUKr~Yem*S@jv)kKJ!$|A$kp|`Fyd#xE9*+B+?!@V!dI_ok9%7X`C3USd=v%3| -z_ZRwdlOb#rU)57ALrMtBH+bvm#$Jmb>HOp=2 -zP{bycr(5gg7}ua9jWgKb6-vZ2SwMx1asb)KYC&BFWxj$-QHSX7SI7iOv|9w&bD{Wc -zRQ?pyH6bXLd{{(8X(feR#j_?!-0mKl(d|*S=X>h$fd#_EiLII@Pko1c+Eg~s#I+Or -z!3#IJ!)UH5^c3Tju8l}jWWHG+3rOUSI0iP>UHMjk0}Ywb6|%B7sr`*~9?xA3gc*=6 -z1>_g5tqb1>#C}hCzjC+J@Pcq__E)vJ{ZN+7*-PMtoN#~DD{ieEaZ!pWb-fIomP}8) -z?BAEP8d-TsxPrtjqM||ZfE-oveg_NN;9ons#Z!wmgE!e>0d(amfX$c6;&)I;C4FDb -zCB9=ljzCG51E5i`RgLS%kbdwsn`ESipF9kZL3$BcmmuC4d1To+6)a7;0zq>s!7EQ| -zpR0fVN#>2(AoIC*SQTSdRRDDPn{ht*Yy*X!{X<~3cbpVJMcUUL=Lq)qn;*pk7spQt -zZmHWD5Wii6wt_S@U2#8<$6Y2&bXyDN;TY`z>jq)$v>Ozb&ChKmpUb=AVY2!6pIckS -z>}J}m6!k5?qB9?v1G&X%e-kec4*CbLBo%LyX`Lh15<(R)^pmTO>@n)+7-pI)jO6If1M4Up1T$ -zvs425gWyW1m>w+C*z;7Fb>d`J0cb*4fR|&uVv(UVEyyST4j~J-WZ1fW -z$S8DcoO6!o*}-FPOQYTet9-u?pw#`rGT~ZEILQ}C0Fz(DKQ_+(THQxj?=%4=xWque -z?$6<)f4kyX!=W~rXeNU>l+{dWLphXJAQ9t)x!LLI?GMu@B}Bn_1%4h>8jW*FV!X3P0oT -zV)FiWwK-2gGs_G`i##0RH|kVA$^>lvdsv`C{VpsXR&{Rr!v%?Q`|`VU*K?Y;;>gh- -zs-m?QJNqcsJ-IYnWE-(D??eg))xKLo^76vUmhQ#10W}K1yxQqH$&hz)MVm5 -z;{59pC)n1Xv%OQ*{EQVg$g;5_C-to<#BW#g&@UlhF`rS~=J_WhCdTKkl|z4)D!4AYvE#hhDkPN57(dL^@5K)d6=@ZPfo -zv#@8<8e{hL*)*Q!Okv^!%_&{#i9WoU0pvu&ZWP>?tD+*ojZbe#PX06?n?GXOg!fEujU -zpIMc5LWZn%%Lq>*KeMtx87r+o7+@>pKR;=R?;k(4wYW!XT=XVvx8mpem>->jbn{cM -zpdm$aW)?Jp3sD1n$@X(yRFPvMONg>1EtV#uvd;GqY5xFy>VAeX;_`vTxfpCCD$f9h -zpezVyoAJOO++G-~l*ymyunoT=etBU(s9%BcyQx@9%3u)F{cwH^g|F-ZeqX;)Ii0^y -zD#99h-LS;7i&-&4&sXwLsR(+%j3V$=Z;6O^tXv%UKSWES{5JL7@)Op0R`Pq5+PyqN -zIQZXxIMKh3YPSrD#|U7;bY>b -zN9QiR@q_Lbe{StH@xib{Mw&@{bJ~-TTySgwIbAVmB$3`Anzjo_PK5WhvP*6J#@08v -zF`jr-O$R~f>Y>a~vBd8O*nT2Q;HO7>?f${TCHn2vlMm4q`Ja?{DjkR$AB`Te+!w>r -zhc9mLN`##5^xdU2R)t*w9CT=N#&CRr60G48?h8!j25lEzwXmtAO53hU243Nl)3z;oqX -zCPRxK#an)J{SncA1g1JPaN=!xFQR?Gxtj}5Y*h}h;Ion`qBVf|@PMMw?9Ki5LZWQN -zEZkuAXk3Y`5ou_%S|@}`y-@- -zKgui4HevBNF{~rk;I87#*t2WRhdo1eDmJY&e+BfE$a?y}SqWE*D7^i1dW6cL$+OqI -z`)t;HWGc1C+OG%b^cX`qE{wdM_2qu$%Nqn07NbM>zSJ8*GgUvJ+As?DLI!;x6us!U -zKZ;ee(Pf44i=)VPDGq2Hesg}x$@9x#torfeEF7BL^D@NRm~i)W<5eMoMyBcX$?S75 -z&xKcJX%{U_;19Yb`Fexg`N==B{dY@`!5gJZ*tVYH!+h7F0MaP_geidi^xY -zC#LDo_s!#gz?Q~SEtS6a^F5!_skemdEkVJOaB)0k8lxc%(#Yy={oCLG+zit1Z~JP0 -z7pw@1++uj#5xlPoG!0*ut7W}52W#^1fnd^F*DLKwZ0>|xS3v&t9X@f+HHaWYa{QIf -zA<*9r+BZtw9akdA$)_Fzk>XN9NTy50+|Hl6SfE?}DJzZadDE3gWkHA6_?IFM>Ab*U -z^d9*JX+Nt&A!4Y?Mpv8xHRoJ}R;aqfAIK)mOB*l8PRfrQX4iJIt*AcoqK1stRX>Jw -z6gFG?E;yHNX+=TEK%|u~w<wMZiN3Ytbba8d=l9cPsXC|QONUGjpJrB}9(fi_nP@47i6+F~0Ws%sE$R)&qd#t$ -zdU-AnHFx!Ev}g<{XBqVrWZ_im`*|8#MM`oCNkI`DOdC(-^9o>6&;>d~5MR0YPFCtj -zDx;MZ$V63O#*0FHtj=Y;qXTvzaFy@iwvAhfgYc$X~0K*>qt@Y*FB=*%b!VE7m+A>e=s)sZqudQ++VhBwk=k -znD?Lkm$iltD$OOS-CAS6s7aG!9~zUE_7STDQAL`1zu12f -zq!Tug7CSGE@=C&tSuDaK;77ms3cOaMYzl&gg1s1m#W2lY%1@r@K*O9gd)IX3FTZzp)*L0M -zo8M#0DCFxBdyya_EPbCALRl@trC&6ZE?tcL@V=@MBk`g}QSVeBztJET$D3t|9tHw! -zEZs}!e&71I93%UuF|B!L8O}%(y@bS8q*9x)NI`4VF%u&4Zwq9WB|!r@??R8b_$Q~d -zl7YXvt+45+n@;K1*q)zYjTH5um=kxth0UR(3E=SD>>t-zeK}^1+hqag1?2>Cnnb;e -zGJz8bCfoG;6(2bxwT0o9t9fRvcnw{QJ+lBJ)9JX*`B-%TIXo6OAwDcsTeABpF_5^+ -zdH!R(;W9DEJHJ99(xomtX6z?6M-$6$c`7;2z9t)gfv4Ovjgi2{g8k@Kmn<*ru<{4$ -zN4dLylg;c8VoneQqun5l;tFJrh?! -z-gam9h6l23-Iz+~288>a&V(c3Aa){{kZ1Ex2$s%iI3krPOIsL+0>V5vkKeo_2eUv1 -zbOd~E)qn$w?EV6`N#YC?3u4&WufMJ0scV&2%nR}W_?)SHonn8qfYuFRB5qZ-3#VKS -z&+wIsiDecj{B$I@Y+khD;`aB+nzzffj>oG%)%PWzRU?G6Qo~CJ3@t^;pNOQj6*$m> -zZ*){P>)xMPhF{289hKyPNlV2F7?2m7a>EaQg~?bv6IE7%_Hj>qkWVNAiEYP`VNq1B -z*3SMD=&Ba^;=$=tTF~Pwfsn<3VFgd`f*JxfDGABSy{>h!yyCNq>si)}XAPD@$95Ud -zmNjr?SU*^%+O9>)fuQ-*frP)8&o&#j%K0Nu|KyD&mNVyx==6`V+WwxQKI5WWj%!+1 -zh)bjjkQdG|Nz&7oncpC@m)ael`#axt6O#-y@4h034Q&CWL6#UylG7jW)O0)I6mcG(gugo$by@VcR@WD#E$p&kPru2r{wyAk86qCO%Ga*0`A4 -zM5U}t{BJU>W_Z|=&48xAsoB5{7kvH1|9M%@{f=tDLD -zH$ce0@Ub)MM~~5;YSBRAAF5o;o5uE7L}*PoS~i=&P#kKEzRU2Y5uLhP&;4R2#`L)e -zRL2in%n#^Za(B8-tbf9-;API@Y+!L)b7JAmR_0fEZCYCh-4Z)OGDXez9dM_SedT+1 -z!}Mq_YT5sLH`o)Zh=yVnc(yDvC%p1t)n(t>sNV2QxQ6nYHv@%{f9dpiVSu*sKDAEbKNX~yn{ -zfm|$@PEj{i69A5+Jelw`N}B-7Va!M`UNq}vB*+JBYna2H(&snD8~175dHG8%{YDHp -zT$UHsg+_5U68_f6^y8geR_%3J?L>T0y|$sC`JHG5R15;27^z1T(Fnf`T*9O4to<%O -z-cLpisG|E+7V|j1M@kPVkdC${gZP9F46Cm5=xwnpo+}cVeV&wZt}7my15dEk_ua5P -zqz?3A9Zn;S78jr?L*7n%t-G002`x&45~U0qPr7#zxwu0RV-nFiRy9BHr$l@*h_;d; -z#FP!+>Mo{KCum^2?~gIV0y#B2H)PoYo7-X8@3H5B<;ys8IhXCIeKE?>JHxEOL1>}B -z`KVbu3qpW1qEy!vI{L!zE$1GT%b%=0#!}{6%pOM_CkqQL00iI?47M$9r*R5ac -zO4^Q8NLV>phxiRQJCuD~?BlvtP76`mew@PUrUv;|6qyQXeL`%rs(I2K4!yduy}IuA -zhxP1F4P2JnCp5r`lv4IC7nOjij&hhEeK;0rm9A@(@FP;eZpHp?b+zdaY({{6@oKj; -zHPPx7kt>(o7Xbi1061v<9Gm{Fh986QlSMZI5v+cNbJ5pbMu3}Lsd5hvv=_a|dq`bZ -zHr4(;9LJ=9bn4i5{i@j%j-m3K?9Z0QO4tyeT|Dd~LZ#!9zB(BBpI=+g^mcNVC;ggk -zDedMPap2aHys{Ws<7`QKsZ=QoER24n54h!KT%`Hs;Ub@yRjz(yzUx_qWDg;-el4pp -zfov9g21Jr{_ufoC6_=_IT&8i{!R?*3l8ndJVWE$)=1_0Yx=9k})@tqjyzcg3j{79j -z1|Wyy2$=+jrx+f?)rI02iE*78JA+)BQEIY`&|lq~GxJA)VYss&n}DJla(;FBl}|g{ -z5kXMWFO{8>DL0t==%sqL(Z`yRgH|_6?uBxun{#JQW$^bI2r_Q)5nnQyuTe8LCP)ou -zsz$r7A-Q{vZTF{aIX@mZ)DMt?kwYkQA}>r? -zGIHKW=V13FJ@#pzpI;4qzJS&9^hTDd`qlgjIX~y;)dK54MBCWLR%AS$rDwTjP+8kM -z%LdPEfuMCb9ke%#0|*?P0)ry|vBMI=P!Kv8YN4P0Y2&V%`hlic?$CH$vAwRuNX?PrY%L77SCI(DwNf#bQ(>ZNMnsXfI{D7kN5gzZsD^?fcL^Ia?4=rvo`sWo -z;i>3LxMWyYLCF-*n@hxk@e^~LUnNAHYA2Es7)6^0T8g~j7Ujxs@EZjDp|d3IZ;7N9{fHd0 -zBXgqzrAsequN=-oqN3mBHio5v8j?bYHf~9lzOa<@xD=3MS5&-pb$M>{s|x3Tk5-s0 -zMd$FmqpwB%&`UbR8A7hKwB7hM&;-Q4u(4%tPijzoL}>$2du{S*)akDKhrb>U1Ku8^ -zoltslFluBu*y2}xgPP+^MXS!&c0W5pt2N2z8}TC}6JHxLv*^wu*2*>_$4h`LVo!`W -z2mJ7ihMe#|&YhKSUvqDz0S2^V{FVrUshiTZo*;q_0H`iLU-06$!-(GM-@YX1+QUXw -zLKXBd{LiNM0~?KI=xtfZN{h2LG6+=})!xhqtu|9e_E&*V2`3*uRUBCpaj!33?U{aX -z*P`m8+U<&J#ga$FoV`3sHVHeNSX{}oa!c*~{amLC1hVUW_31oK|gDLu37rIybjqa5(3zgkv|psSym!;t_f19oK$|Ly-gq1Pt60Q<6~Y< -zwyBN^q<-Ap4T}bIQSeIeC^#Lb$DJ#N&xr#A0Z(5zD6l?ZC*Z*jr@V4_s>`K`*3UhJ{(W9+ -zk5*F_^DaLCEF^OczYe*OBPK^4$I#T%L-bWgb)3_1@;CVHjQh`>q(Js-Dc(e3$G(@|w98$L}E-Som4E -z4=6SaR~TU{$Ag4bbbQ|xotI; -zumv>N`iQOpQoz05c-b0J34eZfJ0 -z(oww}B44Mp0zHckZ3TtZ;H#3CxMA7Y#=D^!Y@^tP&l3Yum_Mv+^3!JC|5&Q^;pgTJ8nAOXdZt?3z2_W -zUa!Ot)o89od5{kcJSuqyAwQ2zOqCy0P5CPqpcltDkjAU*UksJm(}dd$tT@aZLUnb8 -zIkkMq|GOWh6^E1av1;jxhOccwv`4p}7xYeYf-kjCU@F*$W}_Q^XX6G@zkTb6=orVNAbY;a6=4GOi9l1CoVd&v&rDHG2{I{A -z?necEA0goxwMOcOLO)haweK`m9h*&8Kxm7_w5h=-!R3i{2WHV~Or!6Zk7tl1lh*Ua -z2I{2xAlG -z#9DNLOY&kTm5=@uxQ6JB5ODC@k&C8vqUcZY)u$N>wtocJNjB5acqQXx7LnaQIR_#7|6IR+ry#l@Z -z^_?9~2&1YGg$UeY>+d9`zj;cwj*@~ogN8M8tW2wlDh8hMir4lqYDzt~+dNI8D=2RF -z6cmDJ$_vt4Kf6Nz`sH?5Rp9$|Km#os -zq)WLZCSxPB2w3CGHWIx)rwxoli!Q-F98V(q$&F1iNgCSVefL2A -zlwyhkHVyI2YQ+@js7g@kAt(V92qO7bpT@b#(B4F_S{6*pr@xW -z5%SA`H>~B|r^pj2UGB_`+3C&iK=t;LIg=pZs%#bMV#EMbR8H}l1&SX(MJ1BjBL5c4 -zuDzfdj}nHHtx8<}P7XAAX&lakKl_BgiLq7%-k)U8()rd#Il7u3A{c9d93oztRSN@m -z@_gie*H2@|WbMnrb@I$bZt5`5HxIT73roP_?@ -z@+$%2X8ofR!?)g1`n%wnl5-ord4>+7k%$76jJ-(@DxE6Aaj$pzeOjC4LlHzmmmlP?bG -zY`-sYDsPiYU)(^0Rz`)EKPc1#N&$((1EK9i973=Z4 -zXFiL38G>sdyELTV?GKkFvPe9l$UB7|XoX*+blB16ttQG6Y#zthOM;^qBCHuDkB&1E -z4IpU#jfyk>9S$&25^8k+7(_m_%9i?6j{Rol72lC*@n$V%=|ICoVo@2Q5dmQ(|od*Q+1j -z!7@eL^|KIsi^&ei?_TQr@4^;3DS{PdflWEGh&JGzQ9)I8d9%Ah(-V;0KK%R+7kF4} -z_SkfY+q8-(e5Vx2C%q!7CnRU;TWm3;W4LZmdRznUoF84 -zFFN7$I3j2>8N`sSI5dN7iQlYlX$qgABln^fuUcieyI#;D?u7S#iR5*JWsmhbi1*X1 -zc1KPYcz)& -zC=+Zd=$>OM>sr1d<|l`v89)2m*mI));$hcmi51jEYNfshc_#36a)Sr#`07%pBscmq -zYPHpH@A$APlf2W5`lpW0zHLu%t_>d9)BytDzlwWi{Md=X^OH(odHP45tN5_wLD-e1 -zR{^hFMrqWn#Ibdl13y5TijQgMIsYy;wnE?zQw_x;nPyc|>QjS>&HTO%HM=V~OJpxZ -z_ga-e2?nm5WoQq`w?LaYss#8KOYOmT+;{9`o{(KlIjE#Q#t<;GTfr5TTO;c}i(f9!#cG^3=iu--hUmaz}uO{)A|NU7U -zsQ}4QE0~isVNyC15-f!#f~a-Z=61KV9)Q+(KTx)||52*{pg@KjSESrm6`H9>XsfM^ -z%FpcYU&k{Es=rqq@sVBx#ZUvqXZ~>C!tiB!&8TEE)Hs(`nhpJz@y1a@eN{Z6PYmv$uYxA|q> -z5VT4DOv-J!N4FW+Wk%6izA3xXH)R9OaV@GQu2)`@p)p^A4tPS3o_}xUzOm!+1|1kR -z83_yw*dKf1raSO!3@pG8WfFuK$g2L~87ZsJ$ov9!t`QDLdl=)JmhAon_n^LLi(w%h -zx@}kV@xFbSpB=_*lx8VbD0uvQ3cnf$6zfM~KqhKinV>b1<_)k!42E;z1R?L{ -zU3Zl?O! -zpOp;e7TB}&h~dy+zZkNF?EoFOg2Oel1jv?@((=8MFP>D2K6O=kcDMR<7zq-tM|ADR -zi&3Z9sdou+X1wwyinAu0j*Q-ljQg6&)I+A>qTb-wxE_6kVxA!+0P2KG_K0xI6{W+z -zfz^V(4VwP4b*t{} -z7g?8n#<*!wA*~lty?CQxSgw`29>0h}GSOSz(ccacG;rL;r;8O35c#G8h!zhXe4RM_ -zX9z|)0Dakiw`{@JqVtW@<-4PT)7`|(U&oEXoo~@?MXQ)RIZ!w*BEKSG1&G=r;xMDFyiW<(L{kFO8JH -zyu0kJ`L=O{{+cl3eUk9t8Oy?7VSg-5QcPFA0_F9;5Nov5EBXo~bH?BDbJskKRw(z{ -z!;;@ZN~pu*mSOYzIiq1Vd+Q0K5nlwIhTb&U@!adi4kSnm&ziwe%z{fwWP!FwGG2G$ -zNsemBGY-3SIbw>v-I|aDg9OF&;w@rk%($|#?uT8q&gb^$PNe*r&>i{qK_2|ljP)E$ -z%XQK$20USZqrExu9IA?TC{%}41~d!{_TsC4^kX3WWV<1@iu%P*Eq^?y$1TMES&fnG -z=E>0B7$-{qK`G#?^8qYqoW6bNwGrm?g~cPoB%0$&;c7oaHXIfvaZJUH5mEQB@N1t1 -z@$Av#>xYEg&rq1y2h~HFY3B9)ugMKGVhZ!}ITbq!k`J>Krh1&>-rqqi?~G=H3`%*A8glk;y2`~SePZpeKebm -z*uQr(eqXB~FIaA>q-@*4p}5V6 -zMv(G#gyuYPlVyJYnUSA^4KmQ!+u4V+-Bqs&`uoO3eOx$kqEd*m)yfK6O6L}V7zuV- -z72GEdD)fe$VX|=h>f=Gb2ml7CZ};AdD^F&_v$qPhrOz$dZ9YBeHo<<*tweqwk*vgP -zX~@XKl72@C+F%mzMBq6cm3-}iH^voh0GZX_1h(+|=bnFh&lV>kg -zopF1=`)zIp>7*f#+Kr^u;i_9ItU2b#I%>Ni12k@`EK;7HgNPXI#e8}X?dWSB -z=xV#?oRfEr$Z+5G}O -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 -zpP|}(<-bj1O4gEX;_ngCfeb -zzapnbbYMGD|3E&e*{x?eJ358v^2u>?(~qAPBRqb4@o#ve9YiM?Vm_+>eo6mjoAT)A -zNE$UxMglsU&g%*)C|4z#Rh!OsGiL}$B&a!EjMisTa>}gim}Dti6W&JYST{9uB{_og -z*ydPKBFEY<5zJy^WUyBqsGi^s2=da4BV}C%_uDy33n(lUFrf0_4K5RNZe(d -zao<(TOaF_wPzfX!SbnOdK}=W#Na}`vLL0tngKosdl$U((AQwKjdSmX~cA>+BhW`AJ -zZ7rHOV|r0Wqxn+`IKHwr!~1C(pY3k-6&}0_yLF$T<>qDRxf@fmL^Y0&&z>K7pgm*e -zb09m(is2B*L+)CpW*whd=;k7iZ2caQA(sh=sX+lmUp5XO^0egek*}Dv&Rg5$;FJY{ -zxllnjm7ay3V#=fnfz0+03S4iJL!n#h{n!_jxBu}^OLP#uM44$meAFsK^?Z_5iU|n4m$N@O4RQ)kU0+Z8@ -z;%|3tz9uscR(y&IsmBpO9G{)N23Fpx(!mWe725AirV|U|305Xx2cnS3(s8!k);$;% -zr4kP4?nL&L*tH_Md3UTnTEv7Dm`T^Zva=9toD;i?&J(!O;m!OAA5C~2jEUkSOxP9a -z#L08y6R(LI(=q*>jy?f+wDz^Od$~0~3V%*9kc=!DaD#98rB_4j)|cNty{eTIh?;8w -z$a4qOADJUcw|ZRuJEY)5e10n9MsKGx(_YL+j0OJo0>xP*o+J3PU$)+FSw4iwSU^u( -zauEl)cIz@?huA|3eZ -z;t8Br$*n~h*RDz)ZBDh~ma@Qj4vO^ZT_zHw5V#4!L&^N_u`HiPw&m^#)ti0rJ1L%i -zzS*@xo7t+?i@4X?VDe?)Q1aQ$FY#k^3Wr*&l>!uK=C4?Yw$YE&BZxD6%F=A+8xG{V -zT08K*HEBjxN9O4;2@MG}`iy1?`2!vg?Xy2g`Jm<=^4W^#f3T9pvMcXGGfTCeeDK90 -zlQ8Lwc!ZPz9s=&@Z<1bPi;36d{6a& -zU_ffdJhBpJP0|ruidJLiQ#lGY5{>8rnsZj(4Pw(6A7Yj)3SauoZVh(v6j~zAi%S!r -z7_KMi`VBeh<9W9h(XV#D@J;a1xZv(fN~uRWjsN8ah!T7uNCkytit2-%{i&L?EW-*V -zcvUb*ZpAuEYP$J4C@z6D;`OCZc$$p-#qVQ*Q7NBNwtlH`eOehJe3wGP8nS%^0MOG3 -zS5N3-WdNIgoBG|6^o(R>Fq|+3(dmZ<^a(9_MI2E>wJDvmgL3pxXTADLSZ}m+!vv77 -zr9U&|>zuB%;JN#bbrZA4hG?Tv*yAmTv;?YdeslALS%U$y -zBhux|9qdsPx4mW^P;#3iI`_RhBHLw#n*WXwwnj8ek^x`}oY+;s2z^ucJG@R&Dz8L$ -z2+OCE9ym8q3ctp$xf;Arn?r5a=Dv17PdG> -z3Z$oAdf4SAb-5_%ytFuyY`(n{knp5gQs8eDlO^BUBi82^!`7`4)~?@CD3iVD(>4n1 -z`c^Qt1_G<84DAB?b2-*wsjldL-*Zm`Z3B&-3q=;|puS>%q(e7(Pk0F= -zzNXh&5U$5~jxtzZ|KJpI5t(YO0fDiRE|Fd>{-9awd}RC_rLr`)fnS#aC43fL?e*7r -zoAi1l9tX-hwIUN)C$7c~8H$=_q0mpkksS>VsRqy4f^lQ8Eq3SFMOR+d4eGZ5Udr3) -z%9tW>;tMc}qha;|X_Czv8o~V*>|Pro$fnoeFRCXfG1*WUK|#9*sqY7zfErU?!GmoQ -zJZB{va|yXG<%`fM;zd;T<*RVDj0%uUvpVfz>ZmL=_lNzqdBLk~9EE4CI5(!2eNj_p -z$B);@1oV$Iq0?y4x4X*+^Gy-{i)av`YgJ&*@>G;5EI3SuK$Y2K4N!;t42&13!BuEJ -zKu&yjIc#J}eIZ`M0a+{cN`|S4m}H0EtI@r;wo=Ce{<7a-9BHsa1bM{qoM2SjP4&f5 -zb)wp6eZ9A@-hUlyS%gMqjpri<;0}atLVnAf5O9e~aB}`<0Ytog*(u=js`c}C@xN1W3J*3uF5%t;C_09mQ|tHIkysu+1 -zw$;^gT}$W+b&pt5t{-x7UOmI>`!zp>T@gp -z{LX;tt?_64963(`6Agsnt=dkOC%f*g_iLFE$_w1V@3?7BJo#}X##N_8>+i25aPP4_ -z=tjP{`sNKAe80u{3quq>ssPz21jpH&GaZsm64}lSnGdJzMD#4D@J9y|2S17t`MrcE -zZNuM{5o#zF`f3-~bE*o1?-KXl^OKe7{?>M4gIMJ=b=Z@mWq;DJe6h=ncNgOGM(h28U^A|$ -z&tpi-Pl9>kk|M5-q1)J#MC-==#qJ@3=-2@VBz|j}{y8dW6&n}HJ{m~~Q^ieZa+1p4 -zaiRu2bq{rAvSgmmKsugb2C_dhU^P5l-Ko>i6i6uqlW*83n;3PMPi7NIB!2L)D^brF -zv|@I)pHtx_qVP}uq>=gM;JZ?Z3pj#SnE4?9d56?ICpXPIhY@`ZUg$*&l$zD?`wI*L -zqlgjoWK%cXJ`Gt+wbVT(zn0<+6< -zbO908oJNM+!;F0VXqC&>DGuucf)%GPc{!O}4V0a{i+%E%krr~M%s^#q6IzwlA@VL>^VX>W?p`mGxGuTjnn~tE4Do~xcQv&jS#~Q8v@nNaVxx;;)zbi -z10n@Oq`jI5YK75(f3M*q6Hjon>Z0R4j@(eMGv+tIHOseuskNTIkc3=auSzdOXQKb? -zWiLP;hFXvJo~6Q0+CLl0zWtAxl^4jEJn{3fn6LGmj6CLb`4;*;DgTkGJwLfQe_Ell -zL9&!zm`1FkKR${w#uFDBl|Y0;QVcycOC4pkS;~Q8h9Nnbo`Z%g8X4%I$EhJhvz&b= -zMx2w&a~$p{hAH|{pw{2N5vSol(&?PE-?d!x`$7ZAcA9Be7we>aERl7I!cXo%f` -zCxIIdof~$tga2v}oFtGb09Ps_D?r -z+@@;Jh)77yplbDa_vFbI+*Pi#4Yo}CX;GRPBIw+Gd9MNy_5JxU{w0H~fe%o=Mj+t| -zOfDyh4x(SGkukLQ^;dnH-jSQ`8dlW)j_!{P?qo&eM~#Zo&H(YyKg|!Gvg?Fpi9ZSo -z2YIx}(G&jY=NB?s`sYX+9PjdEhvq#1m+79tLTmEs)j -zNgCO}sg}1*7JC6CEz8P$p!yTx&Hf3`^;aRfPdAJ&Zk21?ZIPe0_|1M*L2)?HW*7(4 -z!pJ6jiMh)V-9C?E&-MK^Fa>0-07{$K0NWz$9tdc~Yu~qofHd!5tPfRJK@hpG7{Fg+ -z)NIUNW$S3cOtbH~q^blBOJ0Vsu8FpCRD`d$D-CYW_fWk!wdt~Li4tlBcYrZ|Z;e2M -z_A=7grbR0`10LkQtfO~3qYb97s0<6!yOJt*;g^e$mmF=40(<|PISTVbfG;g@LB@+8 -zb1CZ9Eyv2pLqyGo(b3~bCx0!Iy68Tdj2vLCfG%T6Eqb93A@cH!>-J4Wb@|ZNOrS$r -zhH{q~JkyKEgd|B@Wt*8WK-9UY78=SC<$-|1dv|FDlk~PRj9t-8D8)==A(JU{hf)(o&9I -z1Qn0wTReN}4FcH(KeQkm*tvDA^&wOkbR&IwI4|R`xk;b0g7O`J+^1>?n`wc(i=CYd -zgx?PL;@tJ!&&?jmgxO*7CP$+3z9c7Z>Wh&TMd2==lN|$%`$<3PHNx>Ts|p#0nE3(j -z^>^>oC+HxI7QRBOz+DgMA{xOm7(`lTQ8Wrto!Tw-Qm=c~IO3{6VLAACvv3gxvG*W| -zy-c37Gf>e^<(e0^Y!FP~c0j1HTysmr%idqdh}q;@CBZI#AOjqof+}o``A$=sYHXNo -z#)Z^hQ9+k{75sXghq&V>r+zNtDOg*xXC`oE3k?ZtjgViTA%T|iHXso!EzgjT-;}wu -zW4B_Zd(+X%#@p -z@pU7C??Mb<9(SDD_l>BA$(PQj%X|NQ!|LxTTiG3=m{$DaRjv?FuGU_7zL_s~b$q(g -zmZWw88&!MoaT6`_a`=QE&(jl8jN!G+!&*07_33adENI1AA-*M>u*xxIg{Iogwm=L( -zVeetg`h0=4%G7l^`lSB%y-5 -zW)eIZ77hd!Xb^)Z=LmsA#M*iTg%pQTYQU}Os}9QAOKh-NrJ^vV09&0njG`d9e$50} -zT)OO}6;t7~`D}as5M3<7Ln%=Bp!N#fhRZL06ztkk(%8fl<702pL4CB{-I -zsM=H3culJpg>V_)e&~Df%L+8{61`7HU~HPtb&#l5d-S_f_W!!Ql2Qx$P$GW=l|z{&!_z2lR?Jjk_%gF3KvoGOi-p*qwp01WQ}*4TsT156$i -zX!WZzzJYOmMY|!!ADcrba>~xJ?JoOGd_2oCsqe0f^$V?B>36m*aBLgc;HJYDG>*Vx -z)O+ihhfeGEO4Kb7l1)eG6UNy{iR|q7O->Gc*E|;DG2z5meUe$e0liwcY6)W>hedae -zM&VGl-W6ux?DF`CKaC0`E9m`v=x{bkhfyaX){6MVvHZ8K2pckF(|ZW_l(s2r`n<6o -zY$*(cibG!2ZcG)N;o7!k{^Z|RbC52i-x=4#+92pz%}BIudbN>h=$GBJdc8-(LK`5v -z*<+W}fdw7Xv3!R9atIG;kK+*`b?)*P7nD{OUr?a?=qah!Orf4O)5Wb8*1fvL@FU^1 -zi}tMM1?F55*aF9b@{hcln#mcs^jKuWyI^Pl^y?%asYOWK2Ex5=s~!enX9_NSSV*T1 -zUxDGP=m^N_o;4QbQM(v}Rb{`(eSz{A!CSi`wcV$1K8X7_ojHlRb}=XS##}qxOD{%E -z^_#|p83~htIpaLNfKrCbGH;{Eph}f8JfKR -z%5l+0_A}?{C+&_i-e@8jKG+WJ%@ckwK%5OfyG5x{MNyx%2_>$&a`^4-mjf6OS@L*u -z@-y>XI1y|;+_GAJsFVfbcX&Y?&Kki{ -zg0bh7JW-?hMsb#H1uEk)cDtUyKEB@39*@^by-^{y%DNFh=JsOBEhHd;DE0S9Yw4q6VNtdZg!Oe8@Kmpi02(*@*2G5)LZJUgQH>s -z;)5u`t!(*u;Ic8(Lot5h^-GsbG%zx2hs@;H%Hr~9_YImPhOcVd-%6gLll@`OhnU<} -zIu-*oXe~VNn0J2VunS6^SLGJ;`r>FrP$ixl99#$gB>E7`5k^$9e5MwByb|EvCT7W^ -z&8y-G#c>MbI?_v*1z3cJ$W^>4uvAYi -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 -z&%5Bs39zP-F#`d6)vHPA7_Z21 -z?6Tai2$X$z@l9o-TE*uht#cui0HrE5zVTcj!t+^6=&7UaL;+s&8^3p2@Xc~8jkSl` -zfwJQm_e4&ZGVwW5s(WOPY1AT6&?s3W_e{S?0=!D&B^-|QC-J#w)wU>me3!5cvs6|4 -z^UgXmDJ@MPCkzZ(c(uPTj%Qej0tkmz-Z)aX27o;shw^M~v&ST;J~J!2-i~IrJ&V@8 -z0mTV&$jNwU+1GMr%jR2-6MeTefuRk~W7N~Pb)t{$7F>Slp>dErQpk#(k*SkN5nAcM -z3T0guCuH&t2E;7Xq@+2kMibs5)3)0$Y0*(r&Jnyu*{gkyrXyk<{1yJU(Wi|9K~D;r -Tv1|Y-|Np;#QIHXYJ9Y#Br+{aW - -literal 0 -HcmV?d00001 - -diff --git a/components/test/data/adblock/random_shuf_100.tsv.sqlite b/components/test/data/adblock/random_shuf_100.tsv.sqlite -new file mode 100644 -index 0000000000000000000000000000000000000000..6a2bd00f7a7469f32e2ed0c6cf36c45bc84698d9 -GIT binary patch -literal 40960 -zcmeIbTZ|)FnjV%_UEN(()0fq*#(VQ>YBXEi>7EY8os8&Qx;BEBOlBsT$$MtbuBf@G4GapIg4|2gMB|Ns4$Xf;m!#CtIaqp6j=koSIJ@6n^Z -z-+A$3Z*T8C{Ckdn+rP&+c(VP0???BJzwYq8z3l1le@ulx`H%MS|HIz{1s*8yK!FDe -zJW$|)0uK~;puhtK9w_iYfd>jaP~e}90$=_1qYr=i*MI%dk53cJ4!p>_T6l4?`FdPz -zmW_7#McXh>$}cu2Uwr@h3-;%`FRJx+`JmiZ8vTUc+*8c#xExcqjwjLXa0QdCA$~dV}ABNsQ%%n{~gi(`KSN)r~l`t|Mb&; -z^6CHb>Hn0T`ez%Ghr1pq@IZkF3OrEYfdUT{c%Z-o1s*8yK!FDeJW$|)0uL1U7fXR> -zKSX;^kMZ$g0UsZT_;{bg$CDTMc<&Rk&42Qqx%cT``{@7p$bbIjv)#$_CFbm&v1BrrG40kG;tEV!r4n -z>wY-vTm3^n2zbYelYJqpD1s#Gq9luXH80EhlQ-^u{qe`o_g*g^eRjWJRK^R2RuX2N -zaLUK<{fT+k8(51V;n6I9^_SMQ$H{0MNb1b-;=b#}lO&wqp5gL*4`t+j&$C}jf-&>q -zJLHEm91C(E|D;@YJRhkh4No%x8koa{Gxt -z^$Lonc_uYc3Yl0%E -z8Gkx2sKIC=sIffpW?^2^1h!2^ZUFae#n6{B$M -zWv13@_so;K0XzKGvpxS2cYjzhey%kRXMsQSvgi$u88XD&ioC#gI7yHMHbLGj_Eqco -z^Sz&Z>(O`a*F{ry7=|dzSu-nGC%%);6DJG^^nP`Xhwon(#+sb53OQL*^QxldGf9Ds -zd8QxZx*NPf;=mtGh8yxa7G_cytwCu~%PfL|H{%v@#`OxFc7@Y2Zc;d@9v&ZLVz(eE -zob4x>I4aO0UeO}XT+a)loXf59IW05xFgl)7nB#d*FaG!D4h}Uz)m2Hx1XlH&Agf|d$s{=6F*q%slN3o&I3?2`;*^}zbR8UE -zr|eBZRxp)CH7`85eZtqzo`DfqkLCMRO=zuWmm%i_;lgF>&b1Qj)!a%(g{7B(c|{gF -z&SOH{U}5p>27c&;fwjisoQJ`BYRzMQ9EUUhTHr5Fa=a=^yrlJ&ES-G1Mrh!Sz}nsvzQz(`D>Z? -z)<<)WVH3ikj1PE#r)=*$nGvmr=$E_`kDS?X-zyyuv@!J_CE8UvA%uuxh;sKVHg}YcGmv -zyOK*v?xiFDWOf%Z=(yz>$w2=iNlbQoVbe~u_ -zxH7h|!5b8La{%zf2b<1wZ_*U@M=S8a?fRV-c-y2f4!v~-*2!g`#&8Z6k&a0`#g5S* -zVZXd>8phVRK-(*^_!sYZ;E?|x?7hAJ^51!Oy|?#YKmEkr>!Txe(IQE#z5B-XVb -zd$a5;J_X3y4GQ+#bqkR<39y_qvjwDu -zs34_WXs3;z{MzH^dw=w29{tvR9^iOU;t$qY5M+h>lW4okSV=TtLdYP(c@V)Lj*feA^{ctddJrWaQ2NQPI -z$DFdJ*ao*d)(V@}*t)iEw{!vX4ZP30Jt2~4(uWDWkQqTBWk~*C6LM~sOO&YnbZJu1#y@SSOWFKFRrDg_< -z5zDZ@8B0--h!u!=L4?=>t9aVyg6?U$Fc>&uUe;Y*baN6)Y4Si#fbUS1^PP3fQ`36oA{9A6hCL6ijyLE3@9nhi>CJN1JB76xOgn`1uVMPAXc?>eI3LUI_$?!cCvTux9eSphE- -zEyYpoTz^LH{lTqJey=Xl|9^2$-}}~o@~z&tzW4kuJb&~odiMP3A3y!2533*i2k-x< -z@BjXj|Mtm`p8VQ-Qxv-Y_lM$(=X?M5tH(QAFth}2u)GnoaDE6#?b+x-uf~{t@;-?z -zLSEPN`u^gUZ}I#ngpRbm17fHbdziNgzX-;V`1t)eNoTq)=OKw}!v1D`m4ugi{v|%m -z68jWhmc*A@dPco>USr29ttBd){w!`z-rWv<%nBGXyJWK3Pz-fe*qLoB#Ol+ka2{9F -zPP@22^9w434_+Daq9E`BzwdepBmz_xT$6}FGPW+tvZQG$^zZbytOKez3(eC(%<Wl}%ANAB|J=U{a{v0SmT=9@NB(S(ou{%R(@set6>^f)msF9*G{8QY -zm$0ShwMYm@V*lu@e6V@WK8UHV)SS{Umo(^c<)WsWC49=7ST5mCtz0xsLn)i4q(Kpy -z4_}d=SOKD+-WPS1$zd7}IPHp<2?qrQGh#V_X1t)4uoWb9tcAQN -zVXmo~!T=8}7YSkn!ylLca4X!XFExV+H+fp%rreivkaY4S@_@VGz`!wfYIFlll)KTy -zs9_@vXY)d%dU$%;@At}Pzu&@vY1HfGX1{e(EtQ*heW9t|uD36R$F}89Ab2y->h+)f -zRgCJ#yC8uZ#iYQgf-qlY!)VCQN070w?lD@LqH79&1zBAa`XhWnmgcXeSFt}Vw{lG -zx8mJy(Hx7j!>k)FfYLYsKPGI#Mc5eczzfRN#{g8L(l-G -zqXrlXBa?yyx|YKT5psYHRnAE{z#j}40OL{6ZC$%xjzJ7qDY^>wrJ`htmjEvSmjhsu -zSD!c&P>bft>X)%7%e$&8VFOT2oRBo#6n@z#>Ode?VqW5{sdWQZ#W{pQaqz$dGof!h -z^3fhWrhtT1}eGg -zL%Cc`r(X0bE;LV?r{*v>(U1Jgt`ZA%u_c)Yt~xvBW3zK@mab==Zu3+x9}Ej@F*?>% -zp*jcOM&t6M-?+aT2U%+|p(cSRqzG0#$?0IJsv_$;uL#15CKJSOQTBA3gI*_cz#9e5 -zw#5PG<%OKAShnOy+LLWfuRr>;XeitT%#tX}fEbP~*X$sIY^UUOM}sQO$(G=9imFMR -ztylt=S3Gbg#}dW7{mODkBPxI{?!rk3zN7C#UerWU$Se!QaG^^AUcdmM-t>|0o%rD| -zp*P>!9c>8p-r5T>S;+;v8;7@t5NFb74<#2m(4$f-ic#taOni9YuQRyR!$jI*Dv -zRr43IC=MPO_lZg+=ERk<&LYCbiFHe?9{L2tK5LNlZ$|ywGMkM=&*w*^R -z5qx~158?2oq*W6SD5>5*DocH{EYe29%hG(s{lB>3$!+u8%_w`@JoQZaGtc&_yRdbf -zEZnKb7|j5>D+rv$$CJC$lV4zyX-CCOht_q#c;jporZbB6O`sh7l0=lqy1^dI4X`;! -zT^#0^q7pUtAym1GxgA!nANORtDfe -zXWZ2k*%aK~w5bHTa;il^b|Qu^f{EqiJhWKH{b30`IU$ts_X<#up%>H1nwMDkormNo -zG5H_g5YO;g+|~`5vbyP$B%p&NW1f(txtQbOJTeZX%5*DzAgUqHDnG^6dJtLj(Y6Js -zt+D~T2e{chHEnDfJMn-h<*BN~3MTlnYzSTSb3_XL&+3b9#hwiyC5v)ZR03k&l~3s+ -zv?Jf9dLnNgMhvhL&S0CtnZs~B1LvhalPoW>9{ztwh`UOm^;0X1w!0(w4JN}*_ZZLo -zn!4QUm2U&jzs}DsFaScK2N7mEu^h~@RH_7>D}+Db3({#~5r8K_Ppjm{-Q!?cr)^}H -zA|&F+)3&7RJ>#`4a6oupk!MpNLf8ANtvhsVFE$~85bbI -zL6Oe*sa{NLN0k7S5{R=w2EDjoEdVkRJeokDnbs{m*de;qQS04-|Nyzyk#yDDXgmf5|EE -z`j2ou9JaEn;4k2Fg(BR=egb#uwUAKYIz|l$Z0MKO-5c!mJ3L840y@0VF;LGDL&?{#b -zIiNCg-(jfB*4FOw0hD$gr(rwM6zIr=@Bo_Qn;!H@2NwTX!kHGye`_dW5qE}edd`S5 -zVM)93xN4VExHAdpFM}|)^|MZV`v*{VAMGmku0Hj03OuRu&J}Qz9Wi%{Dc}L7uxi?H -z=@|mTow?l5gH;@!GNfk3js@rhw2P9gEZT}}<*s85+x3G#G -z_%}BYURl5R&(W_>-#fjpgxgT3k`b(sfM`fa%)+Y-2E8fZgCIqqNe7PkA=%(!j2f(n -zQ8*+YE1;77X=uYb+#e;=fTx1|6b@tnexMP;d`s5avr5UIm3(HkJc~lE=?&p-G8pXr -z8+$*u?b>J0_7=NSEHy|w*(;xvPI@f<%4KG1URHEC!0|ba>}x>Cg(uAW;I8EB?|dHw -z`0lO>zX4jdPmlW4juadRVe>qg=arli$A@~boM^IaRSWQqOE`bV=Y&;G;9(DsfQzuF -zO&tSLyfG$iULuS-m&2$-v4uxWUhpj4vUOX^*=k-QTf#tR14V9rA;B}#*T4E(=;5>7 -zsWb9{!@%esp^qCoD?geJIl_3dv79BuEu2{Z6Nnlce9FcooXk^$eEQ@gs3Nd*I!O -z@Mkzfa2u~4Cs^1UbUY>$$A@!JjH=U8R`4q$+b6kLoV4{F48en2ApI1ap7gZtGXHbWr0iwm}Oh1J_Hovvh4D&`e4!-wn&$%N$ -z`Ig3Guv-5HixGgu)=dE@4LK&jb})nY)noQR0m8@Q5!^~hr+)qN&*Qm2-i6|bE#5jk -z0f^(Ap})bUt`=4Rzf(9!ev!I3=*kxx=LZ~NITRf7MEL?H^{l$Wzb^(%<-{-p8kap; -zwUwOYN}fBAZB@y6x;W5m$x?6aKy%BFT@U`Q;|1LB7}2v<^i}X(_yB(Ik-nX8?2&DF -z-Gm@GSQ;iP)`T-+gJi#QL>MR>3HCo(m9$)D7WexbdogTeN?w)NIcMX`=Uf-$EHq`U -z&^aS_3m9)Ty|sW#7ciEdbv3}388WqBAfGIT^h67SAcQ2uhrRFvLYAf>999Xc;qZ?^ -zVfZF!Z*%Gp=Wv@vUa@U(#yI2T-vNxl7L^tw?#XBXbc0pLrIl3xs>KPHgdA&`OWTDj -z2AKSDa<9 -zXFRzM#XM~EuzssbYKK!4QGqX`3itgfINuQNkO$Z6plOP$qr>Sn41(B>NpRA{Go@J` -zkHg|g6JDs;OTAZDg}PE5u7<(z$Tyv8<-&|j$utj)k}*6nPG^lqSqW;6E8a}X4Z|uM -zt~5NXnQf!8JQPEvDVTZVAT$n*)2bO6r3<5S>Ko>1WKd|e%yYQ-p4YDQ^1J?S1qi{;R?yR&k2vOY45X{Fc{x`%UdFzTwcimp^g&Et!c -z$-o^NCxg*QagD0hE=`th)hrpMq$N%Q&nVVkN~Sxz#OH~iOpi+!i*~W78D>`qTKbi+ -zIIbRF&wJ;+a<$o8H;lt>@7RF5baB#cHG0Ev);qm1&V{Bp5?teSV!D-^lhC|sA1nZh -zn_XAN`BV(Gv;j@QQ>ePoTA -zfzw>JOG2>}cSrSFsZx`dhgZhAy{sCESTzr?OOvF99dg1+7YFTObhMlnt42i|8W}it -zc~@|<10;-HdgvwnRYAlqxcRXzz>qIz{1}#D82g{xpS$M*B&+v#4SysyEaCT^TJNyK -zZbd9$%rN%l`?Efrh7Xu9xhTLBPg4{oFz(!B@u>N`y9)<0e|9t(L(d>t74}GcKyY+D -zIFR#p-1i2_vA3REE~J-N#ctsQ&OEuMIOrFf4QOfD#UJ0V;%`*4&-ebl;jSmSZB4VY -zh-0>DNIYI|aUD>uWNm!^YFUoeuy*OVTHF~4Y -zNy(Vks^yj4n{=w@fqQB+;z~srot;-!2jyWBm4?D;Z5Wo?qr~f)9hkl{kkUaAgoHQ~ -z492ZvF2w?ktYi_{ut2egPhD0cEbBEa0^Y=1^Kg1Dz=oVbn2VavWd`uU|NlkSXcAZY>T?&$7hbVXg}%r!g!Vo$%aP)rJH4;=1j}QLR+951L8YI8a^FY#f`*3$@)@ -z9d*mKlY?dFuxx1O#m?ls(yX<5Wubi52#rQ}S;ajaIN5s$-#9bc%WkV1G@5O-a&A_8 -zRusD@ -z7|C(Da(p0~-JWrI(OU|KXQtCG2BvvA>69B2p>@^}&OtZ3(w(=}){b*xj_RdKXH{u+m3FhcY&RyAYNJ^{?v#^7vC^@7;?Y@iR4%p3rqdX87oCRE -ztO%fWW$yOMolZlHjmq#6EIH^@R-JY^7}ZU1)1na`f-I%-@(3O7oR=FH#d5H;dx26b -zueznOanYscY4k1~v)pZ#hL`5~q&ylNll;jrv$WXbYD?MO->5XJe7(PPbF8IQFpXb+N^kI$u9Nm5MnvRtCnvD7B>dS=X!=JBCtg -zbXD_w7}~|Ajw*syqpTm48}*A`@A9JDtd$yKrPm57y%Kh3Gw2M8m2R)m8JT7|vD%nd -z4e6q4PAXobYn*ir?Z^}zqg}bQjA8er)NNiAJF9jnsG9A-DVkl)C=IKIxtyPy0_Iz* -z%M;EAx|BL))hsuv>Uq~Z>lsI#%b`;Ozdt)%#b*by((Tb4Mc+_w{k*Jq&L&4krAB;y -zx^habN#(dK#_fYv=g@3)dc}ztw9B=!6O@h0q~;sLk<~*#szS3~X$bY5b-HYH-@Q&R -zh*y!l)CL3!0F9gHrqe46K_Wn4Fw -z+EH6HPY#zyUbn2$J%%YZui9PXfbJ<77wtwTw436kS2|E@<)PDT20^(c&X2q1sMTpS -z4vR+FYGNI=131{4z3xS;Ley?_o87WlE{pYxO2e(2%jF4XsokKS8I5M;CT^S9X%Ci3 -z=`dKLe&$Rty5Kwk -zaox1Q)qDyqsLt8_Ut)d{Vz?v?jH~ih0@Xny04eHXD;z>tJ?N -zAU>9arrBuD?ap}BC^eU05f!uBXo%+UA}k4lRWgoxhnPLM=lb~ONbs7SCU%CF3F#QC -zuHGHto?%ex4wr}R%Bs;aCU&V|HjNS585_y__y6|$zw_izp8SnR -zH+z2<7k<{?xBx+qd%P223`hyyV~dDF>Btc?hE2em@&w7oP;vkn#k>Fr9&W)r!W01* -zy6I^qRKl?i4uvWr7*aIsuAQ{n#!e;hb((HHx-MN{EQn%RPAG82+_d-{jp-bVn%`@16S++TS?7PmnYq-S6f -zBRjc|h*J&T-|#HYYx{Ayh!C|qOs4w~0)>66Fy~b9=KM@8I(odiZtPR+&aU?k5ev~x -za8#pO@u(g>FJgo#Dw;`B6>ftmTEYGRZaJtJUxhP)6Ul8f4~JA7GPij+-seSC+MmTJ -zgr11|R}|y1e+7I^9prL(C&%J^g}f-k0bP-_eP>$OA0kW}H;{O|?-uTQvrloe`}d=2 -z5u>z^@bkiK--To?>?58jZ5jUfk|s;=^bc_walr^fL%3CzJ4o?R3zFl;&#QFr*#we_ -zg`Gk+g;Slb0P_)`SAtClR7gX#STOquBNj#Ul^MYV1lVYQvADbI1HD#z0^|U)2R8~9) -zx<`?{yA!kd<+Hsv?2A<38rD9t^=18FtCYeaE+LQ>FYZiy_ -z=DmR(ESao%dl4Y+9)=+v!P>BKs(kmPt%(+pw)aiP?i8z4t -zXSF-si|z>9NJn%!qgAn6QCpRueBSK}z48+J?X8L{X>dk+OUK=bVdEWebY}Qt5x+cU -z)Raefi4RxSka>fTBVLX=rG9mJaIC0T%2o47Xda&omCL0tKUR)ZrV$GoX~eoNF^yOh -z^c<D_6Hb*^ku4wveKJFR)ifh1vNdo -zJDDoQ;zkc -zp$)%RvNBuKHR>FxX!i%Z8zkcu7BeuCmprqbykO~rFdSGluxa4iATz>yYfD7M@7-wC8xRLc{7`?4*0GpCCLBNLVflpTwYdG{= -z4rFH=RD}gPb4b48aR|1}bAx&O>cu-M+S~gt>i>QHr$0TFpY3^%3p*yg)a`(R&JsUn -z4G~M_3BBVj+sP)YB$WZDc(9O~2FY3XvUc=G73ulj-|RmUzlqB`Kq^UryE_8ABoRKf -z@OW=}!Me4cId40>6GV#OQ!4_P8ZhS)JU>oi*Y;g-L3kS=ZXaWcV>klm$XojBvH-wG -z1u1mG*z$?1L$`%}lXgAW^svB~M>>80&m%W;giOphE8rq;2&Wi$Ou&7{a><@f!8C{n -zfW@6WYQh=90#KM`4;Y|r>O?ZVNslNcL3LXp+A7NUFlF#FxCoPIgfF;auol=4l8SN8 -z*lp?lrQ%(SD2OYx|KrGH&z9az56F&+{=&5&PT@KXqxd|4r-&EL*lsUu8Vjs9%NpcE -zf7@C3Ewcif;%_&Uo6=Bx{`pzR=qVs@0&(wY4>mW=Z|gJQ4CAEjgLt9iPs!bgok$-f -zPDuc16Hi2eORVvD5hE(V_1!S77x%LBut9IDHbe(3hn@9SNSHuFxS=u3+Uz_S(aq-Y -zZZK&gZ!1OiqZkS`B7-Zz9-?YbU;yAOR -zDOs|&r-Iut0FB{mL3gIzKyV3B`nF9S3w~1p96MMG2;>KW(!P8@Cw#_E-tXldJ#R-W -z?HdZ^rjvAa__S6rg>wNWLDENVt~pL*-l;0RYw1?rj9U>9lMbgA5{cX&BALg!ACr5( -zR8$cRNuM%(=IK)u5Sor3lC0n>C#&=eT%5k(x*#Avy$D%>eY11;o%u%L0Mbr40P7M0 -zwa}&8aDc7z|J%%s^#4yDpX`15#V7yplkCU;;Ny=z`n%8hXXOvS^}!F{*Pr~aPinaM -z@b^H0Z$N=R_|Y*kyq!M!?z4MR6l8xmNhRc7MZQ@OrS3AlS#HdwNmKYV!x#T5-RBX} -z2xlL-MS?9bD^E;u#8E8( -ztcMmiv!Ga#=YZ!kjTpI6=Vr^VM`lYmX4tZ$!0CHde#v=yg4qI4a1A&WVH@&@^W)_=gS;79hYk{mj^Oyr%GF`#1 -z)?-54X%)J}d%Mxu*wM-50y7e`lTTy)NO!^iS!9J$;I}6WZr%kDs5;2Huyw3s<-hvQ -zAykH6dfR?Zh{R}N6I3y~L2eT`$6|wrzbIuH-~|P`G2+}XgW=c3QH(yhnRyY1jD3O2 -zfvE7A<^a-8=Ohr?@JECvu*V^j-*n+)#`w6)3z#4E96q}Pe`3Kk41zgab0H!^utfR< -zWUF!!IZn~oaJA<9V<%$iw(z*n$s?Z0+bQUgMOGW~14Q_K_9~BuoDY$BN!5@=56@2t -zS11SE7>P4D6ED+gR*Pk>VsvVqYTe)@Xd;_rex#Z0Jo{_z0JGr-k9TBrEO~~_!UsHS -zx#U@mFU&0H08lNM1~6aP*r#|H=y^CDAlw~!7q9@s!E5l=Ous;P&H&LeKlPgHM{il1gz_PP`lDYw7tj6;n -z=PO8P_5)xpKP#cxHkVn-ouD?cd}e9VGFb$gBOyu`83&Lj?@_xsV -z>yo6p3M~#U4{eeYbDSb`0*4HH;|09Tq56>Ca|ORka%mncJdRR-Ml-sAg~ct9t#QTy -zG(g%?XF&;9sXV-=nF}(pEDjZRySyOIu4!43PHQJDuNfqLUd&4TYI2Y)?Xz}W%8le3 -zLu_;=%h=$!9~nGMvP-Mi(A`6KbTR8LF3;VYQ|WSk*1MeB2g|&BBdp=Pkhe<0s@AUM -zox{;J(){T#65%*t$F)+-@dRQ3!$_z1jW-*lPR%zX?hpz$cX*6w`elqD4d#E&cdJbf -z7V#1=d!#v-aG*Vsx&3j~(f*kci7 -z!eI*-!VidZ7omd_I199aCI^=!KyyccEoi>Es*3D5Lh2*?&b*%@q{A()moQlZ7FjD|EZje2mzRk7#hAa@KzBU_;+>z@wNWtWpHtlVtsir;3)Als)}pI(mYQdPc~R>qg@iEz<2mM7Es^0Ma?upm9y -zN{E9cYX^BWgSo+Q**DFvSvMdf4$AZ3I0)?67&j!Ik^&SByYmgW(L2I4L|KspE& -zX^e*eQTq;{ZhBO?}{GuRs1BH2FqOX_zOo7^-=M?=28aJ2e7f;DRUd$k@aK -zgXQ}qSy4hBB;6vB$esC)#l<&k1PmeRGIs-c*o_uQLkP1Af|q6?cM}H5np<)ZbYM;< -zjzs;rYb!{7bjPo5mV_uG&E$H)4kfAZ*h?>|R@e@=guA3oa~-i3N$%Yunb%po1% -z${&Pb!m(6Yw24MG7kK{s#z)A?#%Q=L1WUl{A6#N=XgtYj@+ -zUFGu#mRazx227>gHJv6qH(|%2J#ZtV2!LiP5+LBparLrxTDv_hA+ib9c|lUu=`vUm -zy^%KyP6q|XL7uREl=?y)NiHyN_1%fYR$7?mYUM_0O6D}Ml4mhyeP;BCc!ftQAkVYq -zygd-Wmyz`{KR{TSs_HhZ?jF*!ZRz9gR(E{P8+p$&l3Z -ztw5bas8HD304EE*I?}bgD~x72V+6x!+{U_WPF-|C>R;VW>qHh@2oyJ|u>s4D4F7$y -z{r2PQA-SiBVDUT*9Iyj36^zRX0*7l^{9^`Sy8Ww2vxd=ci7H6>qJW==Sg6b -zr%4Bwf9!)uLJzz0%q_rs0p_TjuJZHi!WwSS31JVX^Cmu3B+;Xk#55O(FA%&8wg5g! -z;u~%7WZoCrkePwg3N42FB58~@82HZHRbj6Fys9=;w4mOB2DdGM8%@D|fZdS%%|}TA -zI1Lkm-|p7l-XFjJr=y?#^e4a4Mqb@#JByhf{Iw$fn}9_d`6c= -znO&AXm$c7uEYg+q<1?zzi8q)7f+vAbvmV{g^^PK&9F6R1ea~8;Dy&_$-)-U;x&~*GcuDQ^vQ5e>B4@;CYlJX!EmXoL4KSr)|0)>7U^x -z4j*fsGQ-iCD6M#o2~=UslBMd3`#`N0o`?s?k!Z{A-KL5``dqjOu)8fRHRP4oK?(n6IbW2F;hpNaPbz8;#JF{Yz -zT8fchr}TXnh9f8W43aEsovc@HoMV=r?*kU|K11!)NtP`i--|-dq%`_>e~t98{39kN -z+?y&%3ryhEE-vLku2}(mK<05jRgOHK_D@CUV-Byd5MK=`=h^Zl@B}wp>CiN0NifaG -zGA-k9nj#8F0|$W@89YUaH9EFDU{+YRNOS2n(dws1sDWm#?v@<|Op@Re -z1p=ku&E*Hke+d73S3vSW9s7hlaD=>z1a6`PJ)d_-M1V%-^K6fTX%fLr5#5SfNMb`? -z&pZ#Q9Jn9et^wHsk-J$H6Co8UNI|^2$vA_lcXwBys6(HmM2MZ(VHoy=M`v$HK__;w4tyW#b^4sLzAo3J>R -zvcte8YSB=LQn{wAB`XTXhbQ*wXnAv#}7!KD}B*_sRO|i7RZo6=_%L|sL -z44@%f#L@}r2>Q%-f+A&7xw6Msd2@Yqa5ZQYea9$WTj$rM;>i-C0@4*i_ISDn(PtQh -zHdEVQzp7!g?(Yr@?fe8c0{cLGIU_(CHUtTia&2Lx1iew7TqMci2S&7GYr -z+AS-;Jh!iviF7t^X-B^&fnyw>!xwSMT%XyuFsE;+JjP5vyQuwR^tvF -zqpYc`soeYTvfzut91 -zp=cro;idvI+ikaa!mBwJFGS(YVo~rU$I1aF-Z=5FeDE&){~Iagnr(62QA7mKc7y`MFGgzG=gA -zqe2E=1Ml$8grmSLwinTw_z|30!PY5f2EI-(uV-DrBsi|({Wr)}534$S5@^EDir6r` -zs7f|*R?u7|32o*%YzppK6w-@*io`xVl%OPixa7wr#UAx5!vqSvuJE@XhMo90CdsDBT-Q -z7tuR<2}>zW8G&;$%Oc-`0!u$iWKcyI7(?nzGVRKxiqSpoG!gII>Q}1GR+|;r_L~Z9 -zdXC$G0^q$i5OMHCbcGcqUUL68JaQ}$baM*(qJqc9&1t}S8-f43_of4a+ESXLqz%`K -zS(Q=-u##z)kshGGNg$B+TghWfg>Z%&C=dLmJq31QoY|J#p3TchNXxDOxW~xfR@IL% -z#ArONEwiA!aDkO3mCrbEI*d2bVR#6Z!Vb9cXdD{zN=&N0Bt6llDot16R^7|;~oeA!HDIH{Fjmd*9GJaRI>sy2ddysvdH9< -zH&-d?|IeQN{k>1W|H%g*|E-T-eDqg8`pxJ6)$$D1+mCJ-CwDOwbf -zi*f{pB*f@8s>h@xk`;VX0u?=8`v+|}~>7ylyK`TboWQ_R})EWJh!2ICa> -z<1V!eLl3TkUc1AeuS~?e#f^h*mEYpPJx}2$?R@XZI$a`U+qfDiW2@u?(=+4Yi6|GZ -zr24XW;vjued~w*|U4DW&KEe}i?Pf^6IhY4GG@s%=`c&9Oj`0#Uq{>TU_2{*Qa30)% -zk(L1C9B&~PyDAM_;OYYM{rJM4yrM~oKs*3c{AQ-Vk94cn3p$p=sc`i7>Aq%w?O##Fyxku -zGiiliedqVEYQFOb$p-H%+jRL|Z;$|r4E$5b!;XjddP0dasxCY#G;5j~yLk?$2z -zK%4CO0&4`u@^`F+d!2vX`CXvL&vso6HVH6CWd5hvb8BqjEmaOC&8@dHc?aGy!!$J{ -z*@=NL!cLz@UjV90y2dg?BGD~eBNPCMX}o%Y{G#ykWq^g3#ocM2?AFB5xi7$Edo -rr+2V``xFJd_!n<5!jY+UFVEXLox^2#BHmgOP&?joq%j7(?eqTw^lR4+ - -literal 0 -HcmV?d00001 - diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc --- a/content/browser/loader/navigation_url_loader_impl.cc +++ b/content/browser/loader/navigation_url_loader_impl.cc @@ -154635,7 +52324,7 @@ diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/brow #include "content/browser/loader/navigation_url_loader_impl.h" #include -@@ -972,7 +976,7 @@ void NavigationURLLoaderImpl::OnReceiveRedirect( +@@ -999,7 +1003,7 @@ void NavigationURLLoaderImpl::OnReceiveRedirect( LogQueueTimeHistogram("Navigation.QueueTime.OnReceiveRedirect", resource_request_->is_outermost_main_frame); net::Error error = net::OK; @@ -154658,7 +52347,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b #include "content/browser/renderer_host/render_frame_host_impl.h" -@@ -2631,6 +2635,12 @@ void RenderFrameHostImpl::ExecuteJavaScriptMethod( +@@ -2646,6 +2650,12 @@ void RenderFrameHostImpl::ExecuteJavaScriptMethod( std::move(callback)); } @@ -154685,7 +52374,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/br #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_HOST_IMPL_H_ #define CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_HOST_IMPL_H_ -@@ -440,6 +444,10 @@ class CONTENT_EXPORT RenderFrameHostImpl +@@ -435,6 +439,10 @@ class CONTENT_EXPORT RenderFrameHostImpl const std::u16string& method_name, base::Value::List arguments, JavaScriptResultCallback callback) override; @@ -154710,7 +52399,7 @@ diff --git a/content/public/browser/render_frame_host.h b/content/public/browser #ifndef CONTENT_PUBLIC_BROWSER_RENDER_FRAME_HOST_H_ #define CONTENT_PUBLIC_BROWSER_RENDER_FRAME_HOST_H_ -@@ -527,6 +531,9 @@ class CONTENT_EXPORT RenderFrameHost : public IPC::Listener, +@@ -525,6 +529,9 @@ class CONTENT_EXPORT RenderFrameHost : public IPC::Listener, virtual void AddMessageToConsole(blink::mojom::ConsoleMessageLevel level, const std::string& message) = 0; @@ -154745,44 +52434,6 @@ diff --git a/content/public/common/isolated_world_ids.h b/content/public/common/ // Custom isolated world ids used by other embedders should start from here. ISOLATED_WORLD_ID_CONTENT_END, // If any embedder has more than 10 custom isolated worlds that will be run -diff --git a/content/public/test/fake_local_frame.cc b/content/public/test/fake_local_frame.cc ---- a/content/public/test/fake_local_frame.cc -+++ b/content/public/test/fake_local_frame.cc -@@ -1,6 +1,10 @@ - // Copyright 2019 The Chromium Authors - // Use of this source code is governed by a BSD-style license that can be - // found in the LICENSE file. -+// -+// This source code is a part of eyeo Chromium SDK. -+// Use of this source code is governed by the GPLv3 that can be found in the -+// components/adblock/LICENSE file. - - #include "content/public/test/fake_local_frame.h" - -@@ -95,6 +99,9 @@ void FakeLocalFrame::RequestVideoFrameAt(const gfx::Point& window_point, - void FakeLocalFrame::PluginActionAt(const gfx::Point& location, - blink::mojom::PluginActionType action) {} - -+void FakeLocalFrame::InsertAbpElemhideStylesheet( -+ const std::string& stylesheet) {} -+ - void FakeLocalFrame::AdvanceFocusInFrame( - blink::mojom::FocusType focus_type, - const absl::optional& source_frame_token) {} -diff --git a/content/public/test/fake_local_frame.h b/content/public/test/fake_local_frame.h ---- a/content/public/test/fake_local_frame.h -+++ b/content/public/test/fake_local_frame.h -@@ -1,6 +1,10 @@ - // Copyright 2019 The Chromium Authors - // Use of this source code is governed by a BSD-style license that can be - // found in the LICENSE file. -+// -+// This source code is a part of eyeo Chromium SDK. -+// Use of this source code is governed by the GPLv3 that can be found in the -+// components/adblock/LICENSE file. - - #ifndef CONTENT_PUBLIC_TEST_FAKE_LOCAL_FRAME_H_ - #define CONTENT_PUBLIC_TEST_FAKE_LOCAL_FRAME_H_ diff --git a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc --- a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc +++ b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc @@ -154797,7 +52448,7 @@ diff --git a/extensions/browser/api/web_request/web_request_proxying_url_loader_ #include "extensions/browser/api/web_request/web_request_proxying_url_loader_factory.h" #include -@@ -461,6 +465,7 @@ void WebRequestProxyingURLLoaderFactory::InProgressRequest::OnReceiveRedirect( +@@ -463,6 +467,7 @@ void WebRequestProxyingURLLoaderFactory::InProgressRequest::OnReceiveRedirect( TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT); if (redirect_url_ != redirect_info.new_url && @@ -154866,7 +52517,7 @@ diff --git a/third_party/blink/public/mojom/frame/frame.mojom b/third_party/blin module blink.mojom; -@@ -899,6 +903,10 @@ interface LocalFrame { +@@ -897,6 +901,10 @@ interface LocalFrame { // the given point in the view coordinate space. PluginActionAt(gfx.mojom.Point location, blink.mojom.PluginActionType action); @@ -154891,7 +52542,7 @@ diff --git a/third_party/blink/public/web/web_document.h b/third_party/blink/pub #ifndef THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_DOCUMENT_H_ #define THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_DOCUMENT_H_ -@@ -135,6 +139,14 @@ class BLINK_EXPORT WebDocument : public WebNode { +@@ -141,6 +145,14 @@ class BLINK_EXPORT WebDocument : public WebNode { WebCssOrigin = WebCssOrigin::kAuthor, BackForwardCacheAware = BackForwardCacheAware::kAllow); @@ -154920,7 +52571,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_document.cc b/third_pa #include "third_party/blink/public/web/web_document.h" #include "base/memory/scoped_refptr.h" -@@ -250,6 +254,54 @@ WebStyleSheetKey WebDocument::InsertStyleSheet( +@@ -263,6 +267,54 @@ WebStyleSheetKey WebDocument::InsertStyleSheet( return injection_key; } @@ -155023,9 +52674,9 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.h b/ const WTF::String& message, bool discard_duplicates) final; + void InsertAbpElemhideStylesheet(const WTF::String& stylesheet) final; - void AddInspectorIssue(mojom::blink::InspectorIssueInfoPtr) final; void SwapInImmediately() final; void CheckCompleted() final; + void StopLoading() final; diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc @@ -155498,7 +53149,7 @@ diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ # This file is used to assign starting resource ids for resources and strings # used by Chromium. This is done to ensure that resource ids are unique # across all the grd files. If you are adding a new grd file, please add -@@ -685,6 +689,10 @@ +@@ -705,6 +709,10 @@ "META": {"sizes": {"includes": [10]}}, "includes": [5240], }, diff --git a/build/cromite_patches/eyeo-beta-118.0.5993.48-chrome_integration.patch b/build/cromite_patches/eyeo-beta-118.0.5993.48-chrome_integration.patch index 4156732631451af196bc3a9263725750cef50e5d..cfccbfb60f4f45bde7437c68120b0273515254b0 100644 --- a/build/cromite_patches/eyeo-beta-118.0.5993.48-chrome_integration.patch +++ b/build/cromite_patches/eyeo-beta-118.0.5993.48-chrome_integration.patch @@ -9,127 +9,53 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module chrome/app/chrome_main_delegate.cc | 7 +- chrome/browser/BUILD.gn | 29 ++ chrome/browser/adblock/README.md | 3 + - .../adblock/adblock_content_browser_client.cc | 320 ++++++++++++ - .../adblock/adblock_content_browser_client.h | 100 ++++ - ...adblock_content_browser_client_unittest.cc | 203 ++++++++ - .../adblock/adblock_controller_factory.cc | 67 +++ - .../adblock/adblock_controller_factory.h | 49 ++ - .../adblock_telemetry_service_factory.cc | 63 +++ - .../adblock_telemetry_service_factory.h | 51 ++ - chrome/browser/adblock/android/BUILD.gn | 68 +++ - .../adblock/AdblockControllerTest.java | 43 ++ - .../adblock/FilteringConfigurationTest.java | 418 ++++++++++++++++ - .../ResourceClassificationNotifierTest.java | 135 +++++ - .../adblock/TestPagesCircumventionTest.java | 51 ++ - .../browser/adblock/TestPagesCspTest.java | 51 ++ - .../adblock/TestPagesElemhideEmuInvTest.java | 48 ++ - .../adblock/TestPagesElemhideEmuTest.java | 48 ++ - .../adblock/TestPagesElemhideTest.java | 48 ++ - .../adblock/TestPagesExceptionTest.java | 100 ++++ - .../browser/adblock/TestPagesFilterTest.java | 101 ++++ - .../adblock/TestPagesHeaderFilterTest.java | 51 ++ - .../browser/adblock/TestPagesHelper.java | 121 +++++ - .../browser/adblock/TestPagesRewriteTest.java | 51 ++ - .../browser/adblock/TestPagesSiteKeyTest.java | 51 ++ - .../adblock/TestPagesSnippetsTest.java | 51 ++ - .../adblock/TestPagesWebsocketTest.java | 51 ++ - ...ontent_security_policy_injector_factory.cc | 69 +++ - ...content_security_policy_injector_factory.h | 49 ++ - .../browser/adblock/element_hider_factory.cc | 63 +++ - .../browser/adblock/element_hider_factory.h | 47 ++ - .../resource_classification_runner_factory.cc | 71 +++ - .../resource_classification_runner_factory.h | 49 ++ - .../browser/adblock/session_stats_factory.cc | 64 +++ - .../browser/adblock/session_stats_factory.h | 47 ++ - .../adblock/sitekey_storage_factory.cc | 59 +++ - .../browser/adblock/sitekey_storage_factory.h | 47 ++ - ...ubscription_persistent_metadata_factory.cc | 63 +++ - ...subscription_persistent_metadata_factory.h | 49 ++ - .../adblock/subscription_service_factory.cc | 66 +++ - .../adblock/subscription_service_factory.h | 50 ++ - ...lock_content_browser_client_browsertest.cc | 125 +++++ - .../test/adblock_debug_url_browsertest.cc | 314 ++++++++++++ - .../test/adblock_filter_list_browsertest.cc | 260 ++++++++++ - ...ck_filtering_configurations_browsertest.cc | 459 +++++++++++++++++ - ...ock_frame_hierarchy_builder_browsertest.cc | 464 ++++++++++++++++++ - .../test/adblock_multiple_tabs_browsertest.cc | 160 ++++++ - .../test/adblock_non_ascii_browsertest.cc | 78 +++ - .../adblock/test/adblock_popup_browsertest.cc | 463 +++++++++++++++++ - .../test/adblock_snippets_browsertest.cc | 80 +++ - ...dblock_subscription_service_browsertest.cc | 201 ++++++++ - .../adblock_telemetry_service_browsertest.cc | 256 ++++++++++ - .../test/adblock_web_bundle_browsertest.cc | 427 ++++++++++++++++ + .../adblock/adblock_content_browser_client.cc | 320 ++++++++++++++++++ + .../adblock/adblock_content_browser_client.h | 100 ++++++ + ...adblock_content_browser_client_unittest.cc | 203 +++++++++++ + .../adblock/adblock_controller_factory.cc | 67 ++++ + .../adblock/adblock_controller_factory.h | 49 +++ + .../adblock_telemetry_service_factory.cc | 63 ++++ + .../adblock_telemetry_service_factory.h | 51 +++ + chrome/browser/adblock/android/BUILD.gn | 68 ++++ + ...ontent_security_policy_injector_factory.cc | 69 ++++ + ...content_security_policy_injector_factory.h | 49 +++ + .../browser/adblock/element_hider_factory.cc | 63 ++++ + .../browser/adblock/element_hider_factory.h | 47 +++ + .../resource_classification_runner_factory.cc | 71 ++++ + .../resource_classification_runner_factory.h | 49 +++ + .../browser/adblock/session_stats_factory.cc | 64 ++++ + .../browser/adblock/session_stats_factory.h | 47 +++ + .../adblock/sitekey_storage_factory.cc | 59 ++++ + .../browser/adblock/sitekey_storage_factory.h | 47 +++ + ...ubscription_persistent_metadata_factory.cc | 63 ++++ + ...subscription_persistent_metadata_factory.h | 49 +++ + .../adblock/subscription_service_factory.cc | 66 ++++ + .../adblock/subscription_service_factory.h | 50 +++ .../chrome_browser_interface_binders.cc | 9 + - .../client_hints/client_hints_browsertest.cc | 9 +- - chrome/browser/net/errorpage_browsertest.cc | 8 + - ..._page_load_metrics_observer_browsertest.cc | 7 +- chrome/browser/preferences/BUILD.gn | 5 + .../prefs/chrome_pref_service_factory.cc | 11 + - ...hrome_browser_main_extra_parts_profiles.cc | 26 + - .../profile_keyed_service_browsertest.cc | 42 +- + ...hrome_browser_main_extra_parts_profiles.cc | 26 ++ + .../profile_keyed_service_browsertest.cc | 42 ++- chrome/browser/resources/BUILD.gn | 5 + .../resources/adblock_internals/BUILD.gn | 29 ++ - .../adblock_internals/adblock_internals.html | 38 ++ - .../adblock_internals/adblock_internals.ts | 43 ++ + .../adblock_internals/adblock_internals.html | 38 +++ + .../adblock_internals/adblock_internals.ts | 43 +++ .../safe_browsing_blocking_page_test.cc | 7 + ...subresource_filter_browser_test_harness.cc | 8 +- chrome/browser/ui/BUILD.gn | 10 + chrome/browser/ui/prefs/pref_watcher.cc | 13 + chrome/browser/ui/tab_helpers.cc | 18 + - .../ui/webui/adblock_internals/BUILD.gn | 23 + - .../adblock_internals/adblock_internals.mojom | 20 + - .../adblock_internals_page_handler_impl.cc | 115 +++++ - .../adblock_internals_page_handler_impl.h | 51 ++ - .../adblock_internals/adblock_internals_ui.cc | 47 ++ - .../adblock_internals/adblock_internals_ui.h | 48 ++ - .../webui/chrome_web_ui_controller_factory.cc | 11 +- + .../ui/webui/adblock_internals/BUILD.gn | 23 ++ + .../adblock_internals/adblock_internals.mojom | 20 ++ + .../adblock_internals_page_handler_impl.cc | 115 +++++++ + .../adblock_internals_page_handler_impl.h | 51 +++ + .../adblock_internals/adblock_internals_ui.cc | 47 +++ + .../adblock_internals/adblock_internals_ui.h | 48 +++ + .../webui/chrome_web_ui_controller_factory.cc | 8 + chrome/common/BUILD.gn | 3 + chrome/common/webui_url_constants.cc | 5 + chrome/common/webui_url_constants.h | 5 + - chrome/test/BUILD.gn | 27 + - chrome/test/base/chrome_test_launcher.cc | 7 +- - chrome/test/base/in_process_browser_test.cc | 21 +- - .../filterlist_that_allows_resource.txt | 7 + - .../filterlist_that_blocks_resource.txt | 6 + - .../filterlist_that_hides_resource.txt | 6 + - chrome/test/data/adblock/innermost_frame.html | 39 ++ - chrome/test/data/adblock/middle_frame.html | 25 + - chrome/test/data/adblock/non-ascii.html | 26 + - chrome/test/data/adblock/outermost_frame.html | 37 ++ - .../outermost_frame_with_about_blank.html | 37 ++ - chrome/test/data/adblock/popup.html | 25 + - chrome/test/data/adblock/popup_opener.html | 26 + - chrome/test/data/adblock/popup_parent.html | 25 + - chrome/test/data/adblock/resource.png | Bin 0 -> 47293 bytes - chrome/test/data/adblock/tab-restore.html | 33 ++ - chrome/test/data/adblock/wbn/LICENSE | 14 + - .../data/adblock/wbn/blocked_bundle/LICENSE | 14 + - .../fetch_result_1_blocked_bundle.json | 1 + - .../fetch_result_2_blocked_bundle.json | 1 + - .../data/adblock/wbn/by_bundle_file/LICENSE | 14 + - .../fetch_result_2_subresource_loading.json | 1 + - .../green_subresource_loading.css | 1 + - .../green_subresource_loading.png | Bin 0 -> 772 bytes - .../purple_subresource_loading.css | 1 + - .../purple_subresource_loading.png | Bin 0 -> 773 bytes - .../xhr_result_2_subresource_loading.json | 1 + - .../test/data/adblock/wbn/by_resource/LICENSE | 14 + - .../by_resource/blue_subresource_loading.css | 1 + - .../by_resource/blue_subresource_loading.png | Bin 0 -> 773 bytes - .../fetch_result_1_subresource_loading.json | 1 + - .../by_resource/red_subresource_loading.css | 1 + - .../by_resource/red_subresource_loading.png | Bin 0 -> 772 bytes - .../xhr_result_1_subresource_loading.json | 1 + - chrome/test/data/adblock/wbn/by_scope/LICENSE | 14 + - .../fetch_result_3_subresource_loading.json | 1 + - .../by_scope/orange_subresource_loading.css | 1 + - .../by_scope/orange_subresource_loading.png | Bin 0 -> 774 bytes - .../wbn/by_scope/pink_subresource_loading.css | 1 + - .../wbn/by_scope/pink_subresource_loading.png | Bin 0 -> 775 bytes - .../xhr_result_3_subresource_loading.json | 1 + - .../test/data/adblock/wbn/index.html.mustache | 157 ++++++ - chrome/test/data/adblock/xpath3.html | 23 + - 123 files changed, 7676 insertions(+), 10 deletions(-) + 49 files changed, 2337 insertions(+), 5 deletions(-) create mode 100644 chrome/browser/adblock/README.md create mode 100644 chrome/browser/adblock/adblock_content_browser_client.cc create mode 100644 chrome/browser/adblock/adblock_content_browser_client.h @@ -139,22 +65,6 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module create mode 100644 chrome/browser/adblock/adblock_telemetry_service_factory.cc create mode 100644 chrome/browser/adblock/adblock_telemetry_service_factory.h create mode 100644 chrome/browser/adblock/android/BUILD.gn - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/AdblockControllerTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/FilteringConfigurationTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/ResourceClassificationNotifierTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesCircumventionTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesCspTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesElemhideEmuInvTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesElemhideEmuTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesElemhideTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesExceptionTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesFilterTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesHeaderFilterTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesHelper.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesRewriteTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesSiteKeyTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesSnippetsTest.java - create mode 100644 chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesWebsocketTest.java create mode 100644 chrome/browser/adblock/content_security_policy_injector_factory.cc create mode 100644 chrome/browser/adblock/content_security_policy_injector_factory.h create mode 100644 chrome/browser/adblock/element_hider_factory.cc @@ -169,18 +79,6 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module create mode 100644 chrome/browser/adblock/subscription_persistent_metadata_factory.h create mode 100644 chrome/browser/adblock/subscription_service_factory.cc create mode 100644 chrome/browser/adblock/subscription_service_factory.h - create mode 100644 chrome/browser/adblock/test/adblock_content_browser_client_browsertest.cc - create mode 100644 chrome/browser/adblock/test/adblock_debug_url_browsertest.cc - create mode 100644 chrome/browser/adblock/test/adblock_filter_list_browsertest.cc - create mode 100644 chrome/browser/adblock/test/adblock_filtering_configurations_browsertest.cc - create mode 100644 chrome/browser/adblock/test/adblock_frame_hierarchy_builder_browsertest.cc - create mode 100644 chrome/browser/adblock/test/adblock_multiple_tabs_browsertest.cc - create mode 100644 chrome/browser/adblock/test/adblock_non_ascii_browsertest.cc - create mode 100644 chrome/browser/adblock/test/adblock_popup_browsertest.cc - create mode 100644 chrome/browser/adblock/test/adblock_snippets_browsertest.cc - create mode 100644 chrome/browser/adblock/test/adblock_subscription_service_browsertest.cc - create mode 100644 chrome/browser/adblock/test/adblock_telemetry_service_browsertest.cc - create mode 100644 chrome/browser/adblock/test/adblock_web_bundle_browsertest.cc create mode 100644 chrome/browser/resources/adblock_internals/BUILD.gn create mode 100644 chrome/browser/resources/adblock_internals/adblock_internals.html create mode 100644 chrome/browser/resources/adblock_internals/adblock_internals.ts @@ -190,46 +88,6 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module create mode 100644 chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.h create mode 100644 chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.cc create mode 100644 chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.h - create mode 100644 chrome/test/data/adblock/filterlist_that_allows_resource.txt - create mode 100644 chrome/test/data/adblock/filterlist_that_blocks_resource.txt - create mode 100644 chrome/test/data/adblock/filterlist_that_hides_resource.txt - create mode 100644 chrome/test/data/adblock/innermost_frame.html - create mode 100644 chrome/test/data/adblock/middle_frame.html - create mode 100644 chrome/test/data/adblock/non-ascii.html - create mode 100644 chrome/test/data/adblock/outermost_frame.html - create mode 100644 chrome/test/data/adblock/outermost_frame_with_about_blank.html - create mode 100644 chrome/test/data/adblock/popup.html - create mode 100644 chrome/test/data/adblock/popup_opener.html - create mode 100644 chrome/test/data/adblock/popup_parent.html - create mode 100644 chrome/test/data/adblock/resource.png - create mode 100644 chrome/test/data/adblock/tab-restore.html - create mode 100644 chrome/test/data/adblock/wbn/LICENSE - create mode 100644 chrome/test/data/adblock/wbn/blocked_bundle/LICENSE - create mode 100644 chrome/test/data/adblock/wbn/blocked_bundle/fetch_result_1_blocked_bundle.json - create mode 100644 chrome/test/data/adblock/wbn/blocked_bundle/fetch_result_2_blocked_bundle.json - create mode 100644 chrome/test/data/adblock/wbn/by_bundle_file/LICENSE - create mode 100644 chrome/test/data/adblock/wbn/by_bundle_file/fetch_result_2_subresource_loading.json - create mode 100644 chrome/test/data/adblock/wbn/by_bundle_file/green_subresource_loading.css - create mode 100644 chrome/test/data/adblock/wbn/by_bundle_file/green_subresource_loading.png - create mode 100644 chrome/test/data/adblock/wbn/by_bundle_file/purple_subresource_loading.css - create mode 100644 chrome/test/data/adblock/wbn/by_bundle_file/purple_subresource_loading.png - create mode 100644 chrome/test/data/adblock/wbn/by_bundle_file/xhr_result_2_subresource_loading.json - create mode 100644 chrome/test/data/adblock/wbn/by_resource/LICENSE - create mode 100644 chrome/test/data/adblock/wbn/by_resource/blue_subresource_loading.css - create mode 100644 chrome/test/data/adblock/wbn/by_resource/blue_subresource_loading.png - create mode 100644 chrome/test/data/adblock/wbn/by_resource/fetch_result_1_subresource_loading.json - create mode 100644 chrome/test/data/adblock/wbn/by_resource/red_subresource_loading.css - create mode 100644 chrome/test/data/adblock/wbn/by_resource/red_subresource_loading.png - create mode 100644 chrome/test/data/adblock/wbn/by_resource/xhr_result_1_subresource_loading.json - create mode 100644 chrome/test/data/adblock/wbn/by_scope/LICENSE - create mode 100644 chrome/test/data/adblock/wbn/by_scope/fetch_result_3_subresource_loading.json - create mode 100644 chrome/test/data/adblock/wbn/by_scope/orange_subresource_loading.css - create mode 100644 chrome/test/data/adblock/wbn/by_scope/orange_subresource_loading.png - create mode 100644 chrome/test/data/adblock/wbn/by_scope/pink_subresource_loading.css - create mode 100644 chrome/test/data/adblock/wbn/by_scope/pink_subresource_loading.png - create mode 100644 chrome/test/data/adblock/wbn/by_scope/xhr_result_3_subresource_loading.json - create mode 100644 chrome/test/data/adblock/wbn/index.html.mustache - create mode 100644 chrome/test/data/adblock/xpath3.html diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc --- a/chrome/app/chrome_main_delegate.cc @@ -253,7 +111,7 @@ diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegat #include "chrome/browser/buildflags.h" #include "chrome/browser/chrome_content_browser_client.h" #include "chrome/browser/chrome_resource_bundle_helper.h" -@@ -1852,7 +1857,7 @@ content::ContentClient* ChromeMainDelegate::CreateContentClient() { +@@ -1896,7 +1901,7 @@ content::ContentClient* ChromeMainDelegate::CreateContentClient() { content::ContentBrowserClient* ChromeMainDelegate::CreateContentBrowserClient() { chrome_content_browser_client_ = @@ -275,10 +133,10 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn import("//base/allocator/allocator.gni") import("//build/buildflag_header.gni") -@@ -150,6 +153,26 @@ static_library("browser") { - "accessibility/page_colors.h", - "accessibility/page_colors_factory.cc", +@@ -153,6 +156,26 @@ static_library("browser") { "accessibility/page_colors_factory.h", + "accessibility/prefers_default_scrollbar_styles_prefs.cc", + "accessibility/prefers_default_scrollbar_styles_prefs.h", + "adblock/adblock_content_browser_client.cc", + "adblock/adblock_content_browser_client.h", + "adblock/adblock_controller_factory.cc", @@ -302,7 +160,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "after_startup_task_utils.cc", "after_startup_task_utils.h", "app_mode/app_mode_utils.cc", -@@ -2120,6 +2143,7 @@ static_library("browser") { +@@ -2123,6 +2146,7 @@ static_library("browser") { "//chrome/browser/ui/color:color_headers", "//chrome/browser/ui/color:mixers", "//chrome/browser/ui/webui:configs", @@ -310,7 +168,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//chrome/browser/ui/webui/app_service_internals:mojo_bindings", "//chrome/browser/ui/webui/feed:mojo_bindings", "//chrome/browser/ui/webui/internals/user_education:mojo_bindings", -@@ -2142,6 +2166,8 @@ static_library("browser") { +@@ -2145,6 +2169,8 @@ static_library("browser") { "//chrome/common/notifications", "//chrome/installer/util:with_no_strings", "//chrome/services/speech/buildflags", @@ -318,8 +176,8 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn + "//components/adblock/core/converter", "//components/assist_ranker", "//components/autofill/content/browser", - "//components/autofill/core/browser", -@@ -3433,6 +3459,8 @@ static_library("browser") { + "//components/autofill/content/common:features", +@@ -3425,6 +3451,8 @@ static_library("browser") { "webauthn/android/webauthn_request_delegate_android.cc", "webauthn/android/webauthn_request_delegate_android.h", ] @@ -328,7 +186,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn public_deps += [ "//chrome/android/features/dev_ui:buildflags", "//components/image_fetcher/core", -@@ -3625,6 +3653,7 @@ static_library("browser") { +@@ -3613,6 +3641,7 @@ static_library("browser") { "//url", ] @@ -1305,11 +1163,11 @@ new file mode 100644 + ] + +} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/AdblockControllerTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/AdblockControllerTest.java +diff --git a/chrome/browser/adblock/content_security_policy_injector_factory.cc b/chrome/browser/adblock/content_security_policy_injector_factory.cc new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/AdblockControllerTest.java -@@ -0,0 +1,43 @@ ++++ b/chrome/browser/adblock/content_security_policy_injector_factory.cc +@@ -0,0 +1,69 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -1327,37 +1185,63 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+package org.chromium.chrome.browser.adblock; -+ -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeBrowserTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.AdblockControllerTestBase; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class AdblockControllerTest extends AdblockControllerTestBase { -+ @Rule -+ public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ -+ @Before -+ public void setUp() { -+ mActivityTestRule.startMainActivityOnBlankPage(); -+ } ++#include "chrome/browser/adblock/content_security_policy_injector_factory.h" ++ ++#include ++ ++#include "chrome/browser/adblock/subscription_service_factory.h" ++#include "chrome/browser/profiles/incognito_helpers.h" ++#include "chrome/browser/profiles/profile.h" ++#include "components/adblock/content/browser/content_security_policy_injector_impl.h" ++#include "components/adblock/content/browser/frame_hierarchy_builder.h" ++#include "components/keyed_service/content/browser_context_dependency_manager.h" ++#include "content/public/browser/browser_context.h" ++ ++namespace adblock { ++ ++// static ++ContentSecurityPolicyInjector* ++ContentSecurityPolicyInjectorFactory::GetForBrowserContext( ++ content::BrowserContext* context) { ++ return static_cast( ++ GetInstance()->GetServiceForBrowserContext(context, true)); ++} ++// static ++ContentSecurityPolicyInjectorFactory* ++ContentSecurityPolicyInjectorFactory::GetInstance() { ++ static base::NoDestructor instance; ++ return instance.get(); +} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/FilteringConfigurationTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/FilteringConfigurationTest.java ++ ++ContentSecurityPolicyInjectorFactory::ContentSecurityPolicyInjectorFactory() ++ : BrowserContextKeyedServiceFactory( ++ "ContentSecurityPolicyInjector", ++ BrowserContextDependencyManager::GetInstance()) { ++ DependsOn(SubscriptionServiceFactory::GetInstance()); ++} ++ ++ContentSecurityPolicyInjectorFactory::~ContentSecurityPolicyInjectorFactory() = ++ default; ++ ++KeyedService* ContentSecurityPolicyInjectorFactory::BuildServiceInstanceFor( ++ content::BrowserContext* context) const { ++ return new ContentSecurityPolicyInjectorImpl( ++ SubscriptionServiceFactory::GetForBrowserContext(context), ++ std::make_unique()); ++} ++ ++content::BrowserContext* ++ContentSecurityPolicyInjectorFactory::GetBrowserContextToUse( ++ content::BrowserContext* context) const { ++ return chrome::GetBrowserContextRedirectedInIncognito(context); ++} ++ ++} // namespace adblock +diff --git a/chrome/browser/adblock/content_security_policy_injector_factory.h b/chrome/browser/adblock/content_security_policy_injector_factory.h new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/FilteringConfigurationTest.java -@@ -0,0 +1,418 @@ ++++ b/chrome/browser/adblock/content_security_policy_injector_factory.h +@@ -0,0 +1,49 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -1375,412 +1259,43 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+package org.chromium.chrome.browser.adblock; -+ -+import androidx.test.InstrumentationRegistry; -+import androidx.test.filters.LargeTest; -+ -+import org.junit.After; -+import org.junit.Assert; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.Test; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CallbackHelper; -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.base.test.util.Feature; -+import org.chromium.base.test.util.IntegrationTest; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeBrowserTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.FilteringConfiguration; -+import org.chromium.components.adblock.TestVerificationUtils; -+import org.chromium.content_public.browser.test.util.TestThreadUtils; -+import org.chromium.content_public.common.ContentSwitches; -+import org.chromium.net.test.EmbeddedTestServer; -+ -+import java.net.URL; -+import java.util.ArrayList; -+import java.util.Arrays; -+import java.util.List; -+import java.util.concurrent.TimeUnit; -+import java.util.concurrent.TimeoutException; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, -+ ContentSwitches.HOST_RESOLVER_RULES + "=MAP * 127.0.0.1"}) -+public class FilteringConfigurationTest { -+ @Rule -+ public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final CallbackHelper mCallbackHelper = new CallbackHelper(); -+ private final TestPagesHelper mHelper = new TestPagesHelper(); -+ public FilteringConfiguration mConfigurationA; -+ public FilteringConfiguration mConfigurationB; -+ private EmbeddedTestServer mTestServer; -+ private String mTestUrl; -+ -+ private static class TestConfigurationChangeObserver -+ implements FilteringConfiguration.ConfigurationChangeObserver { -+ public volatile boolean mOnEnabledStateChangedCalled; -+ public volatile boolean mOnFilterListsChanged; -+ public volatile boolean mOnAllowedDomainsChanged; -+ public volatile boolean mOnCustomFiltersChanged; -+ -+ public TestConfigurationChangeObserver() { -+ mOnEnabledStateChangedCalled = false; -+ mOnFilterListsChanged = false; -+ mOnAllowedDomainsChanged = false; -+ mOnCustomFiltersChanged = false; -+ } -+ -+ @Override -+ public void onEnabledStateChanged() { -+ mOnEnabledStateChangedCalled = true; -+ } -+ @Override -+ public void onFilterListsChanged() { -+ mOnFilterListsChanged = true; -+ } -+ -+ @Override -+ public void onAllowedDomainsChanged() { -+ mOnAllowedDomainsChanged = true; -+ } -+ -+ @Override -+ public void onCustomFiltersChanged() { -+ mOnCustomFiltersChanged = true; -+ } -+ } -+ -+ public void loadTestUrl() throws InterruptedException { -+ mActivityTestRule.loadUrl(mTestUrl, 5); -+ } -+ -+ @Before -+ public void setUp() throws TimeoutException { -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ mConfigurationA = FilteringConfiguration.createConfiguration("a"); -+ mConfigurationB = FilteringConfiguration.createConfiguration("b"); -+ mCallbackHelper.notifyCalled(); -+ }); -+ mCallbackHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ mHelper.setActivityTestRule(mActivityTestRule); -+ mActivityTestRule.startMainActivityOnBlankPage(); -+ mTestServer = EmbeddedTestServer.createAndStartServer(InstrumentationRegistry.getContext()); -+ mTestUrl = mTestServer.getURLWithHostName( -+ "test.org", "/chrome/test/data/adblock/innermost_frame.html"); -+ } -+ -+ @After -+ public void tearDown() { -+ mTestServer.stopAndDestroyServer(); -+ } -+ -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void addingAllowedDomains() throws Exception { -+ final List allowedDomainsA = new ArrayList<>(); -+ final List allowedDomainsB = new ArrayList<>(); -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ mConfigurationA.addAllowedDomain("foobar.com"); -+ mConfigurationA.addAllowedDomain("domain.com/path/to/page.html"); -+ mConfigurationA.addAllowedDomain("domain.com/duplicate.html"); -+ allowedDomainsA.addAll(mConfigurationA.getAllowedDomains()); -+ -+ mConfigurationB.addAllowedDomain("https://scheme.com/path.html"); -+ mConfigurationB.addAllowedDomain("https://second.com"); -+ mConfigurationB.removeAllowedDomain("https://second.com"); -+ mConfigurationB.addAllowedDomain("gibberish"); -+ allowedDomainsB.addAll(mConfigurationB.getAllowedDomains()); -+ -+ mCallbackHelper.notifyCalled(); -+ }); -+ mCallbackHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ // We expect to see a sorted collection of domains (not URLs) without duplicates. -+ ArrayList expectedAllowedDomainsA = new ArrayList(); -+ expectedAllowedDomainsA.add("domain.com"); -+ expectedAllowedDomainsA.add("foobar.com"); -+ Assert.assertEquals(expectedAllowedDomainsA, allowedDomainsA); -+ -+ // We expect not to see second.com because it was removed after being added. -+ ArrayList expectedAllowedDomainsB = new ArrayList(); -+ expectedAllowedDomainsB.add("scheme.com"); -+ expectedAllowedDomainsB.add("www.gibberish.com"); -+ Assert.assertEquals(expectedAllowedDomainsB, allowedDomainsB); -+ } -+ -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void addingCustomFilters() throws Exception { -+ final List customFiltersA = new ArrayList<>(); -+ final List customFiltersB = new ArrayList<>(); -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ mConfigurationA.addCustomFilter("foobar.com"); -+ mConfigurationA.addCustomFilter("foobar.com"); -+ mConfigurationA.addCustomFilter("abc"); -+ customFiltersA.addAll(mConfigurationA.getCustomFilters()); -+ -+ mConfigurationB.addCustomFilter("https://scheme.com/path.html"); -+ mConfigurationB.addCustomFilter("https://second.com"); -+ mConfigurationB.removeCustomFilter("https://second.com"); -+ customFiltersB.addAll(mConfigurationB.getCustomFilters()); -+ -+ mCallbackHelper.notifyCalled(); -+ }); -+ mCallbackHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ // We expect to see a collection of custom filters without duplicates. -+ // The order represents order of addition. -+ ArrayList expectedCustomFiltersA = new ArrayList(); -+ expectedCustomFiltersA.add("foobar.com"); -+ expectedCustomFiltersA.add("abc"); -+ Assert.assertEquals(expectedCustomFiltersA, customFiltersA); -+ -+ // We expect not to see https://second.com because it was removed after being added. -+ ArrayList expectedCustomFiltersB = new ArrayList(); -+ expectedCustomFiltersB.add("https://scheme.com/path.html"); -+ Assert.assertEquals(expectedCustomFiltersB, customFiltersB); -+ } -+ -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void addingFilterLists() throws Exception { -+ final URL filterList1 = new URL("http://filters.com/list1.txt"); -+ final URL filterList2 = new URL("http://filters.com/list2.txt"); -+ final List filterListsA = new ArrayList(); -+ final List filterListsB = new ArrayList(); -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ mConfigurationA.addFilterList(filterList1); -+ mConfigurationA.addFilterList(filterList2); -+ mConfigurationA.addFilterList(filterList1); -+ filterListsA.addAll(mConfigurationA.getFilterLists()); -+ -+ mConfigurationB.addFilterList(filterList1); -+ mConfigurationB.addFilterList(filterList2); -+ mConfigurationB.removeFilterList(filterList1); -+ filterListsB.addAll(mConfigurationB.getFilterLists()); -+ -+ mCallbackHelper.notifyCalled(); -+ }); -+ mCallbackHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ ArrayList expectedFilterListsA = new ArrayList(); -+ expectedFilterListsA.add(filterList1); -+ expectedFilterListsA.add(filterList2); -+ Assert.assertEquals(expectedFilterListsA, filterListsA); -+ -+ ArrayList expectedFilterListsB = new ArrayList(); -+ expectedFilterListsB.add(filterList2); -+ Assert.assertEquals(expectedFilterListsB, filterListsB); -+ } -+ -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void aliasedConfigurations() throws Exception { -+ final URL filterList1 = new URL("http://filters.com/list1.txt"); -+ final URL filterList2 = new URL("http://filters.com/list2.txt"); -+ final List filterListsA = new ArrayList(); -+ final List filterListsB = new ArrayList(); -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ // Create a new FilteringConfiguration with a name of one that -+ // already exist. -+ FilteringConfiguration aliasedConfiguration = -+ FilteringConfiguration.createConfiguration("a"); -+ -+ // We add filter lists only to the original configuration instance. -+ mConfigurationA.addFilterList(filterList1); -+ mConfigurationA.addFilterList(filterList2); -+ -+ // We check what filter lists are present in the original and in the aliased instance. -+ filterListsA.addAll(mConfigurationA.getFilterLists()); -+ filterListsB.addAll(aliasedConfiguration.getFilterLists()); -+ -+ mCallbackHelper.notifyCalled(); -+ }); -+ mCallbackHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ ArrayList expectedFilterLists = new ArrayList(); -+ expectedFilterLists.add(filterList1); -+ expectedFilterLists.add(filterList2); -+ Assert.assertEquals(expectedFilterLists, filterListsA); -+ Assert.assertEquals(expectedFilterLists, filterListsB); -+ } -+ -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void configurationChangeObserverNotified() throws Exception { -+ final URL filterList1 = new URL("http://filters.com/list1.txt"); -+ final TestConfigurationChangeObserver observer = new TestConfigurationChangeObserver(); -+ Assert.assertFalse(observer.mOnEnabledStateChangedCalled); -+ Assert.assertFalse(observer.mOnAllowedDomainsChanged); -+ Assert.assertFalse(observer.mOnCustomFiltersChanged); -+ Assert.assertFalse(observer.mOnFilterListsChanged); -+ -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ // We'll create an aliased instance which will receive notifications triggered by -+ // changes made to the original instance. -+ FilteringConfiguration aliasedConfiguration = -+ FilteringConfiguration.createConfiguration("a"); -+ aliasedConfiguration.addObserver(observer); -+ -+ mConfigurationA.addFilterList(filterList1); -+ mConfigurationA.addAllowedDomain("test.com"); -+ mConfigurationA.addCustomFilter("test.com"); -+ mConfigurationA.setEnabled(false); -+ -+ mCallbackHelper.notifyCalled(); -+ }); -+ mCallbackHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ Assert.assertTrue(observer.mOnEnabledStateChangedCalled); -+ Assert.assertTrue(observer.mOnAllowedDomainsChanged); -+ Assert.assertTrue(observer.mOnCustomFiltersChanged); -+ Assert.assertTrue(observer.mOnFilterListsChanged); -+ } ++#ifndef CHROME_BROWSER_ADBLOCK_CONTENT_SECURITY_POLICY_INJECTOR_FACTORY_H_ ++#define CHROME_BROWSER_ADBLOCK_CONTENT_SECURITY_POLICY_INJECTOR_FACTORY_H_ + -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void resourceBlockedByFilter() throws Exception { -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ mConfigurationA.addCustomFilter("resource.png"); -+ mCallbackHelper.notifyCalled(); -+ }); -+ mCallbackHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ loadTestUrl(); -+ TestVerificationUtils.expectResourceBlocked(mHelper, "subresource"); -+ } ++#include "base/no_destructor.h" ++#include "components/keyed_service/content/browser_context_keyed_service_factory.h" ++#include "content/public/browser/browser_context.h" + -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void resourceAllowedByFilter() throws Exception { -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ mConfigurationA.addCustomFilter("resource.png"); -+ // Allowing filter for the mocked test.org domain that mTestServer hosts. -+ mConfigurationA.addCustomFilter("@@test.org$document"); -+ mCallbackHelper.notifyCalled(); -+ }); -+ mCallbackHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ loadTestUrl(); -+ TestVerificationUtils.expectResourceShown(mHelper, "subresource"); -+ } ++namespace adblock { + -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void resourceAllowedByAllowedDomain() throws Exception { -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ mConfigurationA.addCustomFilter("resource.png"); -+ mConfigurationA.addAllowedDomain("test.org"); -+ mCallbackHelper.notifyCalled(); -+ }); -+ mCallbackHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ loadTestUrl(); -+ TestVerificationUtils.expectResourceShown(mHelper, "subresource"); -+ } ++class ContentSecurityPolicyInjector; ++class ContentSecurityPolicyInjectorFactory ++ : public BrowserContextKeyedServiceFactory { ++ public: ++ static ContentSecurityPolicyInjector* GetForBrowserContext( ++ content::BrowserContext* context); ++ static ContentSecurityPolicyInjectorFactory* GetInstance(); + -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void resourceBlockedBySecondConfiguration() throws Exception { -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ // ConfigurationA allows the resource. -+ // Allowing rules take precedence within a FilteringConfiguration. -+ mConfigurationA.addCustomFilter("resource.png"); -+ mConfigurationA.addAllowedDomain("test.org"); -+ // But ConfigurationB blocks the resource. -+ // Blocking takes precedence across FilteringConfigurations. -+ mConfigurationB.addCustomFilter("resource.png"); -+ mCallbackHelper.notifyCalled(); -+ }); -+ mCallbackHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ loadTestUrl(); -+ TestVerificationUtils.expectResourceBlocked(mHelper, "subresource"); -+ } ++ private: ++ friend class base::NoDestructor; ++ ContentSecurityPolicyInjectorFactory(); ++ ~ContentSecurityPolicyInjectorFactory() override; + -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void noBlockingWithoutFilters() throws Exception { -+ loadTestUrl(); -+ TestVerificationUtils.expectResourceShown(mHelper, "subresource"); -+ } ++ // BrowserContextKeyedServiceFactory: ++ KeyedService* BuildServiceInstanceFor( ++ content::BrowserContext* context) const override; ++ content::BrowserContext* GetBrowserContextToUse( ++ content::BrowserContext* context) const override; ++}; + -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void createAndRemoveConfiguration() throws Exception { -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ // Check initial state. -+ FilteringConfiguration.removeConfiguration("adblock"); -+ ArrayList expectedConfigurations = -+ new ArrayList(); -+ expectedConfigurations.add(mConfigurationA); -+ expectedConfigurations.add(mConfigurationB); -+ Assert.assertEquals(expectedConfigurations, FilteringConfiguration.getConfigurations()); -+ // Add new configuration (twice) and check. -+ FilteringConfiguration configurationC = FilteringConfiguration.createConfiguration("c"); -+ FilteringConfiguration configurationC2 = -+ FilteringConfiguration.createConfiguration("c"); -+ // Confirm this is the same reference. -+ Assert.assertEquals(configurationC, configurationC2); -+ expectedConfigurations.add(configurationC); -+ Assert.assertEquals(expectedConfigurations, FilteringConfiguration.getConfigurations()); -+ // Remove configuration "c" twice (2nd attempt has no effect) and check. -+ FilteringConfiguration.removeConfiguration("c"); -+ FilteringConfiguration.removeConfiguration("c"); -+ expectedConfigurations.remove(configurationC); -+ Assert.assertEquals(expectedConfigurations, FilteringConfiguration.getConfigurations()); -+ }); -+ } ++} // namespace adblock + -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void cannotUseRemovedConfiguration() throws Exception { -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ FilteringConfiguration configurationC = FilteringConfiguration.createConfiguration("c"); -+ configurationC.setEnabled(false); -+ Assert.assertFalse(configurationC.isEnabled()); -+ FilteringConfiguration.removeConfiguration("c"); -+ try { -+ configurationC.setEnabled(true); -+ Assert.fail(); -+ } catch (final IllegalStateException e) { -+ // Expected -+ } -+ // Recreate. -+ configurationC = FilteringConfiguration.createConfiguration("c"); -+ Assert.assertTrue(configurationC.isEnabled()); -+ configurationC.setEnabled(false); -+ Assert.assertFalse(configurationC.isEnabled()); -+ }); -+ } -+} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/ResourceClassificationNotifierTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/ResourceClassificationNotifierTest.java ++#endif // CHROME_BROWSER_ADBLOCK_CONTENT_SECURITY_POLICY_INJECTOR_FACTORY_H_ +diff --git a/chrome/browser/adblock/element_hider_factory.cc b/chrome/browser/adblock/element_hider_factory.cc new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/ResourceClassificationNotifierTest.java -@@ -0,0 +1,135 @@ ++++ b/chrome/browser/adblock/element_hider_factory.cc +@@ -0,0 +1,63 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -1798,129 +1313,57 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+package org.chromium.chrome.browser.adblock; -+ -+import androidx.test.InstrumentationRegistry; -+import androidx.test.filters.LargeTest; -+ -+import org.junit.After; -+import org.junit.Assert; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.Test; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CallbackHelper; -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.base.test.util.Feature; -+import org.chromium.base.test.util.IntegrationTest; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeBrowserTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.FilteringConfiguration; -+import org.chromium.components.adblock.ResourceClassificationNotifier; -+import org.chromium.components.adblock.TestAdBlockedObserver; -+import org.chromium.content_public.browser.test.util.TestThreadUtils; -+import org.chromium.content_public.common.ContentSwitches; -+import org.chromium.net.test.EmbeddedTestServer; -+ -+import java.util.concurrent.TimeUnit; -+import java.util.concurrent.TimeoutException; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, -+ ContentSwitches.HOST_RESOLVER_RULES + "=MAP * 127.0.0.1"}) -+public class ResourceClassificationNotifierTest { -+ @Rule -+ public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final CallbackHelper mHelper = new CallbackHelper(); -+ public FilteringConfiguration mConfiguration; -+ public TestAdBlockedObserver mAdBlockedObserver = new TestAdBlockedObserver(); -+ -+ private EmbeddedTestServer mTestServer; -+ private String mTestUrl; -+ -+ public void loadTestUrl() { -+ mActivityTestRule.loadUrl(mTestUrl, 5); -+ } ++#include "chrome/browser/adblock/element_hider_factory.h" + -+ @Before -+ public void setUp() throws TimeoutException { -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ mConfiguration = FilteringConfiguration.createConfiguration("a"); -+ ResourceClassificationNotifier.getInstance().addOnAdBlockedObserver(mAdBlockedObserver); -+ mHelper.notifyCalled(); -+ }); -+ mHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ mActivityTestRule.startMainActivityOnBlankPage(); -+ mTestServer = EmbeddedTestServer.createAndStartServer(InstrumentationRegistry.getContext()); -+ mTestUrl = mTestServer.getURLWithHostName( -+ "test.org", "/chrome/test/data/adblock/innermost_frame.html"); -+ } ++#include + -+ @After -+ public void tearDown() { -+ mTestServer.stopAndDestroyServer(); -+ } ++#include "chrome/browser/adblock/subscription_service_factory.h" ++#include "chrome/browser/profiles/incognito_helpers.h" ++#include "chrome/browser/profiles/profile.h" ++#include "components/adblock/content/browser/element_hider_impl.h" ++#include "components/keyed_service/content/browser_context_dependency_manager.h" ++#include "content/public/browser/browser_context.h" + -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void noNotificationWithoutBlocking() throws Exception { -+ loadTestUrl(); ++namespace adblock { + -+ Assert.assertTrue(mAdBlockedObserver.blockedInfos.isEmpty()); -+ Assert.assertTrue(mAdBlockedObserver.allowedInfos.isEmpty()); -+ Assert.assertTrue(mAdBlockedObserver.allowedPageInfos.isEmpty()); -+ } ++// static ++ElementHider* ElementHiderFactory::GetForBrowserContext( ++ content::BrowserContext* context) { ++ return static_cast( ++ GetInstance()->GetServiceForBrowserContext(context, true)); ++} ++// static ++ElementHiderFactory* ElementHiderFactory::GetInstance() { ++ static base::NoDestructor instance; ++ return instance.get(); ++} + -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void resourceBlockedByFilter() throws Exception { -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ mConfiguration.addCustomFilter("resource.png"); -+ mHelper.notifyCalled(); -+ }); -+ mHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ loadTestUrl(); -+ // Observer was notified about the blocking -+ Assert.assertTrue(mAdBlockedObserver.isBlocked("resource.png")); -+ Assert.assertTrue(mAdBlockedObserver.allowedInfos.isEmpty()); -+ Assert.assertTrue(mAdBlockedObserver.allowedPageInfos.isEmpty()); -+ } ++ElementHiderFactory::ElementHiderFactory() ++ : BrowserContextKeyedServiceFactory( ++ "ElementHider", ++ BrowserContextDependencyManager::GetInstance()) { ++ DependsOn(adblock::SubscriptionServiceFactory::GetInstance()); ++} + -+ @Test -+ @IntegrationTest -+ @LargeTest -+ @Feature({"adblock"}) -+ public void pageAllowed() throws Exception { -+ TestThreadUtils.runOnUiThreadBlocking(() -> { -+ mConfiguration.addCustomFilter("resource.png"); -+ mConfiguration.addAllowedDomain("test.org"); -+ mHelper.notifyCalled(); -+ }); -+ mHelper.waitForCallback(0, 1, 10, TimeUnit.SECONDS); -+ loadTestUrl(); -+ // Observer was notified about the allowed resource -+ Assert.assertTrue(mAdBlockedObserver.blockedInfos.isEmpty()); -+ Assert.assertTrue(mAdBlockedObserver.isAllowed("resource.png")); -+ -+ // TODO(mpawlowski): The observer could also be notified about the entire domain being -+ // allowed: Assert.assertTrue(mAdBlockedObserver.isPageAllowed("test.org")); However this is -+ // currently broken with multiple FilteringConfigurations (DPD-1729). -+ } ++ElementHiderFactory::~ElementHiderFactory() = default; ++ ++KeyedService* ElementHiderFactory::BuildServiceInstanceFor( ++ content::BrowserContext* context) const { ++ return new ElementHiderImpl( ++ adblock::SubscriptionServiceFactory::GetForBrowserContext(context)); ++} ++ ++content::BrowserContext* ElementHiderFactory::GetBrowserContextToUse( ++ content::BrowserContext* context) const { ++ return chrome::GetBrowserContextRedirectedInIncognito(context); +} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesCircumventionTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesCircumventionTest.java ++ ++} // namespace adblock +diff --git a/chrome/browser/adblock/element_hider_factory.h b/chrome/browser/adblock/element_hider_factory.h new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesCircumventionTest.java -@@ -0,0 +1,51 @@ ++++ b/chrome/browser/adblock/element_hider_factory.h +@@ -0,0 +1,47 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -1938,45 +1381,41 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+package org.chromium.chrome.browser.adblock; -+ -+import org.junit.After; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeBrowserTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesCircumventionTestBase; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class TestPagesCircumventionTest extends TestPagesCircumventionTestBase { -+ @Rule -+ public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final TestPagesHelper mHelper = new TestPagesHelper(); -+ -+ @Before -+ public void setUp() { -+ mHelper.setUp(mActivityTestRule); -+ super.setUp(mHelper); -+ } ++#ifndef CHROME_BROWSER_ADBLOCK_ELEMENT_HIDER_FACTORY_H_ ++#define CHROME_BROWSER_ADBLOCK_ELEMENT_HIDER_FACTORY_H_ + -+ @After -+ public void tearDown() { -+ mHelper.tearDown(); -+ } -+} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesCspTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesCspTest.java ++#include "base/no_destructor.h" ++#include "components/keyed_service/content/browser_context_keyed_service_factory.h" ++#include "content/public/browser/browser_context.h" ++ ++namespace adblock { ++ ++class ElementHider; ++class ElementHiderFactory : public BrowserContextKeyedServiceFactory { ++ public: ++ static ElementHider* GetForBrowserContext(content::BrowserContext* context); ++ static ElementHiderFactory* GetInstance(); ++ ++ private: ++ friend class base::NoDestructor; ++ ElementHiderFactory(); ++ ~ElementHiderFactory() override; ++ ++ // BrowserContextKeyedServiceFactory: ++ KeyedService* BuildServiceInstanceFor( ++ content::BrowserContext* context) const override; ++ content::BrowserContext* GetBrowserContextToUse( ++ content::BrowserContext* context) const override; ++}; ++ ++} // namespace adblock ++ ++#endif // CHROME_BROWSER_ADBLOCK_ELEMENT_HIDER_FACTORY_H_ +diff --git a/chrome/browser/adblock/resource_classification_runner_factory.cc b/chrome/browser/adblock/resource_classification_runner_factory.cc new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesCspTest.java -@@ -0,0 +1,51 @@ ++++ b/chrome/browser/adblock/resource_classification_runner_factory.cc +@@ -0,0 +1,71 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -1994,45 +1433,65 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+package org.chromium.chrome.browser.adblock; -+ -+import org.junit.After; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeBrowserTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesCspTestBase; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class TestPagesCspTest extends TestPagesCspTestBase { -+ @Rule -+ public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final TestPagesHelper mHelper = new TestPagesHelper(); -+ -+ @Before -+ public void setUp() { -+ mHelper.setUp(mActivityTestRule); -+ super.setUp(mHelper); -+ } ++#include "chrome/browser/adblock/resource_classification_runner_factory.h" + -+ @After -+ public void tearDown() { -+ mHelper.tearDown(); -+ } ++#include ++ ++#include "chrome/browser/adblock/sitekey_storage_factory.h" ++#include "chrome/browser/profiles/incognito_helpers.h" ++#include "chrome/browser/profiles/profile.h" ++#include "components/adblock/content/browser/frame_hierarchy_builder.h" ++#include "components/adblock/content/browser/resource_classification_runner_impl.h" ++#include "components/adblock/core/classifier/resource_classifier_impl.h" ++#include "components/keyed_service/content/browser_context_dependency_manager.h" ++#include "content/public/browser/browser_context.h" ++ ++namespace adblock { ++ ++// static ++ResourceClassificationRunner* ++ResourceClassificationRunnerFactory::GetForBrowserContext( ++ content::BrowserContext* context) { ++ return static_cast( ++ GetInstance()->GetServiceForBrowserContext(context, true)); ++} ++// static ++ResourceClassificationRunnerFactory* ++ResourceClassificationRunnerFactory::GetInstance() { ++ static base::NoDestructor instance; ++ return instance.get(); ++} ++ ++ResourceClassificationRunnerFactory::ResourceClassificationRunnerFactory() ++ : BrowserContextKeyedServiceFactory( ++ "ResourceClassificationRunner", ++ BrowserContextDependencyManager::GetInstance()) { ++ DependsOn(SitekeyStorageFactory::GetInstance()); ++} ++ ++ResourceClassificationRunnerFactory::~ResourceClassificationRunnerFactory() = ++ default; ++ ++KeyedService* ResourceClassificationRunnerFactory::BuildServiceInstanceFor( ++ content::BrowserContext* context) const { ++ return new ResourceClassificationRunnerImpl( ++ base::MakeRefCounted(), ++ std::make_unique(), ++ SitekeyStorageFactory::GetForBrowserContext(context)); ++} ++ ++content::BrowserContext* ++ResourceClassificationRunnerFactory::GetBrowserContextToUse( ++ content::BrowserContext* context) const { ++ return chrome::GetBrowserContextRedirectedInIncognito(context); +} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesElemhideEmuInvTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesElemhideEmuInvTest.java ++ ++} // namespace adblock +diff --git a/chrome/browser/adblock/resource_classification_runner_factory.h b/chrome/browser/adblock/resource_classification_runner_factory.h new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesElemhideEmuInvTest.java -@@ -0,0 +1,48 @@ ++++ b/chrome/browser/adblock/resource_classification_runner_factory.h +@@ -0,0 +1,49 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -2050,42 +1509,43 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+package org.chromium.chrome.browser.adblock; -+ -+import org.junit.After; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesElemhideEmuInvTestBase; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class TestPagesElemhideEmuInvTest extends TestPagesElemhideEmuInvTestBase { -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final TestPagesHelper mHelper = new TestPagesHelper(); -+ -+ @Before -+ public void setUp() { -+ mHelper.setUp(mActivityTestRule); -+ super.setUp(mHelper); -+ } ++#ifndef CHROME_BROWSER_ADBLOCK_RESOURCE_CLASSIFICATION_RUNNER_FACTORY_H_ ++#define CHROME_BROWSER_ADBLOCK_RESOURCE_CLASSIFICATION_RUNNER_FACTORY_H_ + -+ @After -+ public void tearDown() { -+ mHelper.tearDown(); -+ } -+} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesElemhideEmuTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesElemhideEmuTest.java ++#include "base/no_destructor.h" ++#include "components/keyed_service/content/browser_context_keyed_service_factory.h" ++#include "content/public/browser/browser_context.h" ++ ++namespace adblock { ++ ++class ResourceClassificationRunner; ++class ResourceClassificationRunnerFactory ++ : public BrowserContextKeyedServiceFactory { ++ public: ++ static ResourceClassificationRunner* GetForBrowserContext( ++ content::BrowserContext* context); ++ static ResourceClassificationRunnerFactory* GetInstance(); ++ ++ private: ++ friend class base::NoDestructor; ++ ResourceClassificationRunnerFactory(); ++ ~ResourceClassificationRunnerFactory() override; ++ ++ // BrowserContextKeyedServiceFactory: ++ KeyedService* BuildServiceInstanceFor( ++ content::BrowserContext* context) const override; ++ content::BrowserContext* GetBrowserContextToUse( ++ content::BrowserContext* context) const override; ++}; ++ ++} // namespace adblock ++ ++#endif // CHROME_BROWSER_ADBLOCK_RESOURCE_CLASSIFICATION_RUNNER_FACTORY_H_ +diff --git a/chrome/browser/adblock/session_stats_factory.cc b/chrome/browser/adblock/session_stats_factory.cc new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesElemhideEmuTest.java -@@ -0,0 +1,48 @@ ++++ b/chrome/browser/adblock/session_stats_factory.cc +@@ -0,0 +1,64 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -2103,42 +1563,58 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+package org.chromium.chrome.browser.adblock; -+ -+import org.junit.After; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesElemhideEmuTestBase; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class TestPagesElemhideEmuTest extends TestPagesElemhideEmuTestBase { -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final TestPagesHelper mHelper = new TestPagesHelper(); -+ -+ @Before -+ public void setUp() { -+ mHelper.setUp(mActivityTestRule); -+ super.setUp(mHelper); -+ } ++#include "chrome/browser/adblock/session_stats_factory.h" + -+ @After -+ public void tearDown() { -+ mHelper.tearDown(); -+ } ++#include ++ ++#include "chrome/browser/adblock/resource_classification_runner_factory.h" ++#include "chrome/browser/profiles/incognito_helpers.h" ++#include "chrome/browser/profiles/profile.h" ++#include "components/adblock/content/browser/session_stats_impl.h" ++#include "components/keyed_service/content/browser_context_dependency_manager.h" ++#include "content/public/browser/browser_context.h" ++ ++namespace adblock { ++ ++// static ++SessionStats* SessionStatsFactory::GetForBrowserContext( ++ content::BrowserContext* context) { ++ return static_cast( ++ GetInstance()->GetServiceForBrowserContext(context, true)); ++} ++ ++// static ++SessionStatsFactory* SessionStatsFactory::GetInstance() { ++ static base::NoDestructor instance; ++ return instance.get(); ++} ++ ++SessionStatsFactory::SessionStatsFactory() ++ : BrowserContextKeyedServiceFactory( ++ "SessionStats", ++ BrowserContextDependencyManager::GetInstance()) { ++ DependsOn(ResourceClassificationRunnerFactory::GetInstance()); ++} ++ ++SessionStatsFactory::~SessionStatsFactory() = default; ++ ++KeyedService* SessionStatsFactory::BuildServiceInstanceFor( ++ content::BrowserContext* context) const { ++ return new SessionStatsImpl( ++ ResourceClassificationRunnerFactory::GetForBrowserContext(context)); ++} ++ ++content::BrowserContext* SessionStatsFactory::GetBrowserContextToUse( ++ content::BrowserContext* context) const { ++ return chrome::GetBrowserContextRedirectedInIncognito(context); +} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesElemhideTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesElemhideTest.java ++ ++} // namespace adblock +diff --git a/chrome/browser/adblock/session_stats_factory.h b/chrome/browser/adblock/session_stats_factory.h new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesElemhideTest.java -@@ -0,0 +1,48 @@ ++++ b/chrome/browser/adblock/session_stats_factory.h +@@ -0,0 +1,47 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -2156,42 +1632,41 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+package org.chromium.chrome.browser.adblock; -+ -+import org.junit.After; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesElemhideTestBase; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class TestPagesElemhideTest extends TestPagesElemhideTestBase { -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final TestPagesHelper mHelper = new TestPagesHelper(); -+ -+ @Before -+ public void setUp() { -+ mHelper.setUp(mActivityTestRule); -+ super.setUp(mHelper); -+ } ++#ifndef CHROME_BROWSER_ADBLOCK_SESSION_STATS_FACTORY_H_ ++#define CHROME_BROWSER_ADBLOCK_SESSION_STATS_FACTORY_H_ + -+ @After -+ public void tearDown() { -+ mHelper.tearDown(); -+ } -+} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesExceptionTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesExceptionTest.java ++#include "base/no_destructor.h" ++#include "components/keyed_service/content/browser_context_keyed_service_factory.h" ++#include "content/public/browser/browser_context.h" ++ ++namespace adblock { ++ ++class SessionStats; ++class SessionStatsFactory : public BrowserContextKeyedServiceFactory { ++ public: ++ static SessionStats* GetForBrowserContext(content::BrowserContext* context); ++ static SessionStatsFactory* GetInstance(); ++ ++ private: ++ friend class base::NoDestructor; ++ SessionStatsFactory(); ++ ~SessionStatsFactory() override; ++ ++ // BrowserContextKeyedServiceFactory: ++ KeyedService* BuildServiceInstanceFor( ++ content::BrowserContext* context) const override; ++ content::BrowserContext* GetBrowserContextToUse( ++ content::BrowserContext* context) const override; ++}; ++ ++} // namespace adblock ++ ++#endif // CHROME_BROWSER_ADBLOCK_SESSION_STATS_FACTORY_H_ +diff --git a/chrome/browser/adblock/sitekey_storage_factory.cc b/chrome/browser/adblock/sitekey_storage_factory.cc new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesExceptionTest.java -@@ -0,0 +1,100 @@ ++++ b/chrome/browser/adblock/sitekey_storage_factory.cc +@@ -0,0 +1,59 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -2209,94 +1684,53 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+package org.chromium.chrome.browser.adblock; -+ -+import androidx.test.filters.LargeTest; -+ -+import org.junit.After; -+import org.junit.Assert; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.Test; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.task.PostTask; -+import org.chromium.base.task.TaskTraits; -+import org.chromium.base.test.util.CallbackHelper; -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.base.test.util.Feature; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeBrowserTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesExceptionTestBase; -+import org.chromium.content_public.browser.test.util.JavaScriptUtils; -+import org.chromium.content_public.common.ContentSwitches; -+ -+import java.util.concurrent.TimeUnit; -+import java.util.concurrent.TimeoutException; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class TestPagesExceptionTest extends TestPagesExceptionTestBase { -+ @Rule -+ public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final TestPagesHelper mHelper = new TestPagesHelper(); -+ -+ @Before -+ public void setUp() { -+ mHelper.setUp(mActivityTestRule); -+ super.setUp(mHelper); -+ } ++#include "chrome/browser/adblock/sitekey_storage_factory.h" + -+ @Test -+ @LargeTest -+ @Feature({"adblock"}) -+ @CommandLineFlags.Add(ContentSwitches.DISABLE_POPUP_BLOCKING) -+ public void testVerifyPopupException() throws Exception { -+ final String POPUP_TESTACE_URL = -+ TestPagesHelper.EXCEPTION_TESTPAGES_TESTCASES_ROOT + "popup"; -+ mHelper.loadUrl(POPUP_TESTACE_URL); -+ Assert.assertEquals(1, mHelper.getTabCount()); -+ final CallbackHelper tabsLoadedWaiter = mHelper.getTabsOpenedAndLoadedWaiter(); -+ PostTask.postTask(TaskTraits.BEST_EFFORT_MAY_BLOCK, () -> { -+ try { -+ String numElements = JavaScriptUtils.executeJavaScriptAndWaitForResult( -+ mHelper.getWebContents(), -+ "var elements = document.getElementsByClassName(\"testcase-trigger\");" -+ + "for (let i = 0; i < elements.length; ++i) {" -+ + " elements[i].click();" -+ + "}" -+ + "elements.length;"); -+ Assert.assertEquals("3", numElements); -+ } catch (TimeoutException e) { -+ Assert.assertEquals("Popups were triggered", "Popups were NOT triggered"); -+ } -+ }); -+ // Wait for three tab loaded events -+ tabsLoadedWaiter.waitForCallback(0, 3, TestPagesHelper.TEST_TIMEOUT_SEC, TimeUnit.SECONDS); -+ Assert.assertEquals(4, mHelper.getTabCount()); -+ Assert.assertEquals(3, mHelper.numAllowedPopups()); -+ Assert.assertTrue(mHelper.isPopupAllowed( -+ TestPagesHelper.TESTPAGES_RESOURCES_ROOT + "popup_exception/link.html")); -+ Assert.assertTrue(mHelper.isPopupAllowed( -+ TestPagesHelper.TESTPAGES_RESOURCES_ROOT + "popup_exception/script-window.html")); -+ Assert.assertTrue(mHelper.isPopupAllowed( -+ TestPagesHelper.TESTPAGES_RESOURCES_ROOT + "popup_exception/script-tab.html")); -+ } ++#include + -+ @After -+ public void tearDown() { -+ mHelper.tearDown(); -+ } ++#include "chrome/browser/profiles/incognito_helpers.h" ++#include "chrome/browser/profiles/profile.h" ++#include "components/adblock/core/sitekey_storage_impl.h" ++#include "components/keyed_service/content/browser_context_dependency_manager.h" ++#include "content/public/browser/browser_context.h" ++ ++namespace adblock { ++ ++// static ++SitekeyStorage* SitekeyStorageFactory::GetForBrowserContext( ++ content::BrowserContext* context) { ++ return static_cast( ++ GetInstance()->GetServiceForBrowserContext(context, true)); ++} ++// static ++SitekeyStorageFactory* SitekeyStorageFactory::GetInstance() { ++ static base::NoDestructor instance; ++ return instance.get(); ++} ++ ++SitekeyStorageFactory::SitekeyStorageFactory() ++ : BrowserContextKeyedServiceFactory( ++ "SitekeyStorage", ++ BrowserContextDependencyManager::GetInstance()) {} ++ ++SitekeyStorageFactory::~SitekeyStorageFactory() = default; ++ ++KeyedService* SitekeyStorageFactory::BuildServiceInstanceFor( ++ content::BrowserContext* context) const { ++ return new SitekeyStorageImpl(); +} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesFilterTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesFilterTest.java ++ ++content::BrowserContext* SitekeyStorageFactory::GetBrowserContextToUse( ++ content::BrowserContext* context) const { ++ return chrome::GetBrowserContextRedirectedInIncognito(context); ++} ++ ++} // namespace adblock +diff --git a/chrome/browser/adblock/sitekey_storage_factory.h b/chrome/browser/adblock/sitekey_storage_factory.h new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesFilterTest.java -@@ -0,0 +1,101 @@ ++++ b/chrome/browser/adblock/sitekey_storage_factory.h +@@ -0,0 +1,47 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -2314,95 +1748,41 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+package org.chromium.chrome.browser.adblock; -+ -+import androidx.test.filters.LargeTest; -+ -+import org.junit.After; -+import org.junit.Assert; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.Test; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.task.PostTask; -+import org.chromium.base.task.TaskTraits; -+import org.chromium.base.test.util.CallbackHelper; -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.base.test.util.Feature; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeBrowserTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesFilterTestBase; -+import org.chromium.content_public.browser.test.util.JavaScriptUtils; -+import org.chromium.content_public.common.ContentSwitches; -+ -+import java.util.concurrent.TimeUnit; -+import java.util.concurrent.TimeoutException; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class TestPagesFilterTest extends TestPagesFilterTestBase { -+ @Rule -+ public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final TestPagesHelper mHelper = new TestPagesHelper(); -+ -+ @Before -+ public void setUp() { -+ mHelper.setUp(mActivityTestRule); -+ super.setUp(mHelper); -+ } ++#ifndef CHROME_BROWSER_ADBLOCK_SITEKEY_STORAGE_FACTORY_H_ ++#define CHROME_BROWSER_ADBLOCK_SITEKEY_STORAGE_FACTORY_H_ + -+ @Test -+ @LargeTest -+ @Feature({"adblock"}) -+ @CommandLineFlags.Add(ContentSwitches.DISABLE_POPUP_BLOCKING) -+ public void testVerifyPopupFilters() throws Exception { -+ final String POPUP_TESTACE_URL = TestPagesHelper.FILTER_TESTPAGES_TESTCASES_ROOT + "popup"; -+ mHelper.loadUrl(POPUP_TESTACE_URL); -+ Assert.assertEquals(1, mHelper.getTabCount()); -+ final CallbackHelper tabsOpenedAndClosedWaiter = mHelper.getTabsOpenedAndClosedWaiter(); -+ // Trigger popups which open and close when blocked -+ PostTask.postTask(TaskTraits.BEST_EFFORT_MAY_BLOCK, () -> { -+ try { -+ String numElements = JavaScriptUtils.executeJavaScriptAndWaitForResult( -+ mHelper.getWebContents(), -+ "var elements = document.getElementsByClassName(\"testcase-trigger\");" -+ + "for (let i = 0; i < elements.length; ++i) {" -+ + " elements[i].click();" -+ + "}" -+ + "elements.length;"); -+ Assert.assertEquals("3", numElements); -+ } catch (TimeoutException e) { -+ Assert.assertEquals("Popups were triggered", "Popups were NOT triggered"); -+ } -+ }); -+ // Wait for three tab open events and three close tabs events -+ tabsOpenedAndClosedWaiter.waitForCallback( -+ 0, 6, TestPagesHelper.TEST_TIMEOUT_SEC, TimeUnit.SECONDS); -+ Assert.assertEquals(3, mHelper.numBlockedPopups()); -+ Assert.assertTrue(mHelper.isPopupBlocked( -+ TestPagesHelper.TESTPAGES_RESOURCES_ROOT + "popup/link.html")); -+ Assert.assertTrue(mHelper.isPopupBlocked( -+ TestPagesHelper.TESTPAGES_RESOURCES_ROOT + "popup/script-window.html")); -+ Assert.assertTrue(mHelper.isPopupBlocked( -+ TestPagesHelper.TESTPAGES_RESOURCES_ROOT + "popup/script-tab.html")); -+ Assert.assertEquals(1, mHelper.getTabCount()); -+ } ++#include "base/no_destructor.h" ++#include "components/keyed_service/content/browser_context_keyed_service_factory.h" ++#include "content/public/browser/browser_context.h" + -+ @After -+ public void tearDown() { -+ mHelper.tearDown(); -+ } -+} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesHeaderFilterTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesHeaderFilterTest.java ++namespace adblock { ++ ++class SitekeyStorage; ++class SitekeyStorageFactory : public BrowserContextKeyedServiceFactory { ++ public: ++ static SitekeyStorage* GetForBrowserContext(content::BrowserContext* context); ++ static SitekeyStorageFactory* GetInstance(); ++ ++ private: ++ friend class base::NoDestructor; ++ SitekeyStorageFactory(); ++ ~SitekeyStorageFactory() override; ++ ++ // BrowserContextKeyedServiceFactory: ++ KeyedService* BuildServiceInstanceFor( ++ content::BrowserContext* context) const override; ++ content::BrowserContext* GetBrowserContextToUse( ++ content::BrowserContext* context) const override; ++}; ++ ++} // namespace adblock ++ ++#endif // CHROME_BROWSER_ADBLOCK_SITEKEY_STORAGE_FACTORY_H_ +diff --git a/chrome/browser/adblock/subscription_persistent_metadata_factory.cc b/chrome/browser/adblock/subscription_persistent_metadata_factory.cc new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesHeaderFilterTest.java -@@ -0,0 +1,51 @@ ++++ b/chrome/browser/adblock/subscription_persistent_metadata_factory.cc +@@ -0,0 +1,63 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -2420,45 +1800,57 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+package org.chromium.chrome.browser.adblock; -+ -+import org.junit.After; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeBrowserTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesHeaderFilterTestBase; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class TestPagesHeaderFilterTest extends TestPagesHeaderFilterTestBase { -+ @Rule -+ public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private TestPagesHelper mHelper = new TestPagesHelper(); -+ -+ @Before -+ public void setUp() { -+ mHelper.setUp(mActivityTestRule); -+ super.setUp(mHelper); -+ } ++#include "chrome/browser/adblock/subscription_persistent_metadata_factory.h" + -+ @After -+ public void tearDown() { -+ mHelper.tearDown(); -+ } ++#include ++ ++#include "chrome/browser/profiles/incognito_helpers.h" ++#include "chrome/browser/profiles/profile.h" ++#include "components/adblock/core/subscription/subscription_persistent_metadata_impl.h" ++#include "components/keyed_service/content/browser_context_dependency_manager.h" ++#include "content/public/browser/browser_context.h" ++ ++namespace adblock { ++ ++// static ++SubscriptionPersistentMetadata* ++SubscriptionPersistentMetadataFactory::GetForBrowserContext( ++ content::BrowserContext* context) { ++ return static_cast( ++ GetInstance()->GetServiceForBrowserContext(context, true)); ++} ++// static ++SubscriptionPersistentMetadataFactory* ++SubscriptionPersistentMetadataFactory::GetInstance() { ++ static base::NoDestructor instance; ++ return instance.get(); ++} ++ ++SubscriptionPersistentMetadataFactory::SubscriptionPersistentMetadataFactory() ++ : BrowserContextKeyedServiceFactory( ++ "AdblockSubscriptionPersistentMetadata", ++ BrowserContextDependencyManager::GetInstance()) {} ++SubscriptionPersistentMetadataFactory:: ++ ~SubscriptionPersistentMetadataFactory() = default; ++ ++KeyedService* SubscriptionPersistentMetadataFactory::BuildServiceInstanceFor( ++ content::BrowserContext* context) const { ++ return new SubscriptionPersistentMetadataImpl( ++ Profile::FromBrowserContext(context)->GetOriginalProfile()->GetPrefs()); ++} ++ ++content::BrowserContext* ++SubscriptionPersistentMetadataFactory::GetBrowserContextToUse( ++ content::BrowserContext* context) const { ++ return chrome::GetBrowserContextRedirectedInIncognito(context); +} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesHelper.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesHelper.java ++ ++} // namespace adblock +diff --git a/chrome/browser/adblock/subscription_persistent_metadata_factory.h b/chrome/browser/adblock/subscription_persistent_metadata_factory.h new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesHelper.java -@@ -0,0 +1,121 @@ ++++ b/chrome/browser/adblock/subscription_persistent_metadata_factory.h +@@ -0,0 +1,49 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -2476,339 +1868,43 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+package org.chromium.chrome.browser.adblock; -+ -+import org.junit.Assert; -+ -+import org.chromium.base.test.util.CallbackHelper; -+import org.chromium.chrome.browser.tab.EmptyTabObserver; -+import org.chromium.chrome.browser.tab.Tab; -+import org.chromium.chrome.browser.tabmodel.TabModelObserver; -+import org.chromium.chrome.browser.tabmodel.TabModelSelector; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesHelperBase; -+import org.chromium.components.adblock.TestVerificationUtils; -+import org.chromium.content_public.browser.WebContents; -+import org.chromium.content_public.browser.test.util.TestThreadUtils; -+import org.chromium.url.GURL; -+ -+import java.util.concurrent.TimeoutException; -+ -+public class TestPagesHelper extends TestPagesHelperBase { -+ private ChromeTabbedActivityTestRule mActivityTestRule; -+ -+ public void setActivityTestRule(ChromeTabbedActivityTestRule activityTestRule) { -+ mActivityTestRule = activityTestRule; -+ } -+ -+ public void setUp(final ChromeTabbedActivityTestRule activityRule) { -+ mActivityTestRule = activityRule; -+ mActivityTestRule.startMainActivityOnBlankPage(); -+ super.setUp(); -+ } -+ -+ public CallbackHelper getTabsOpenedAndClosedWaiter() { -+ final CallbackHelper callbackHelper = new CallbackHelper(); -+ final TabModelSelector tabModelSelector = -+ mActivityTestRule.getActivity().getTabModelSelectorSupplier().get(); -+ Assert.assertNotNull(tabModelSelector); -+ TestThreadUtils.runOnUiThreadBlocking( -+ () -> tabModelSelector.getCurrentModel().addObserver(new TabModelObserver() { -+ @Override -+ public void onFinishingTabClosure(Tab tab) { -+ // For some reason TabModelObserver#tabRemoved() is not called. -+ // Let's wait a bit to make sure tab is indeed closed. -+ try { -+ Thread.sleep(100); -+ } catch (InterruptedException ignored) { -+ } -+ callbackHelper.notifyCalled(); -+ } -+ -+ @Override -+ public void didAddTab( -+ Tab tab, int type, int creationState, boolean markedForSelection) { -+ callbackHelper.notifyCalled(); -+ } -+ })); -+ return callbackHelper; -+ } -+ -+ public CallbackHelper getTabsOpenedAndLoadedWaiter() { -+ final CallbackHelper callbackHelper = new CallbackHelper(); -+ final TabModelSelector tabModelSelector = -+ mActivityTestRule.getActivity().getTabModelSelectorSupplier().get(); -+ Assert.assertNotNull(tabModelSelector); -+ TestThreadUtils.runOnUiThreadBlocking( -+ () -> tabModelSelector.getCurrentModel().addObserver(new TabModelObserver() { -+ @Override -+ public void didAddTab( -+ Tab tab, int type, int creationState, boolean markedForSelection) { -+ tab.addObserver(new EmptyTabObserver() { -+ @Override -+ public void onPageLoadFinished(Tab tab, GURL url) { -+ callbackHelper.notifyCalled(); -+ } -+ }); -+ } -+ })); -+ return callbackHelper; -+ } -+ -+ public int getTabCount() { -+ final TabModelSelector tabModelSelector = -+ mActivityTestRule.getActivity().getTabModelSelectorSupplier().get(); -+ Assert.assertNotNull(tabModelSelector); -+ return tabModelSelector.getTotalTabCount(); -+ } -+ -+ @Override -+ public WebContents getWebContents() { -+ return mActivityTestRule.getActivity().getCurrentWebContents(); -+ } -+ -+ @Override -+ public void loadUrl(final String url) throws InterruptedException, TimeoutException { -+ mActivityTestRule.loadUrl(url, TEST_TIMEOUT_SEC); -+ } -+ -+ @Override -+ public void loadUrlWaitForContent(final String url) -+ throws InterruptedException, TimeoutException { -+ loadUrl(url); -+ TestVerificationUtils.verifyCondition( -+ this, "document.getElementsByClassName('testcase-waiting-content').length == 0"); -+ } -+} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesRewriteTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesRewriteTest.java -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesRewriteTest.java -@@ -0,0 +1,51 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+package org.chromium.chrome.browser.adblock; -+ -+import org.junit.After; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeBrowserTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesRewriteTestBase; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class TestPagesRewriteTest extends TestPagesRewriteTestBase { -+ @Rule -+ public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final TestPagesHelper mHelper = new TestPagesHelper(); -+ -+ @Before -+ public void setUp() { -+ mHelper.setUp(mActivityTestRule); -+ super.setUp(mHelper); -+ } ++#ifndef CHROME_BROWSER_ADBLOCK_SUBSCRIPTION_PERSISTENT_METADATA_FACTORY_H_ ++#define CHROME_BROWSER_ADBLOCK_SUBSCRIPTION_PERSISTENT_METADATA_FACTORY_H_ + -+ @After -+ public void tearDown() { -+ mHelper.tearDown(); -+ } -+} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesSiteKeyTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesSiteKeyTest.java -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesSiteKeyTest.java -@@ -0,0 +1,51 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++#include "base/no_destructor.h" ++#include "components/keyed_service/content/browser_context_keyed_service_factory.h" ++#include "content/public/browser/browser_context.h" + -+package org.chromium.chrome.browser.adblock; -+ -+import org.junit.After; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeBrowserTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesSiteKeyTestBase; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class TestPagesSiteKeyTest extends TestPagesSiteKeyTestBase { -+ @Rule -+ public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final TestPagesHelper mHelper = new TestPagesHelper(); -+ -+ @Before -+ public void setUp() { -+ mHelper.setUp(mActivityTestRule); -+ super.setUp(mHelper); -+ } ++namespace adblock { + -+ @After -+ public void tearDown() { -+ mHelper.tearDown(); -+ } -+} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesSnippetsTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesSnippetsTest.java -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesSnippetsTest.java -@@ -0,0 +1,51 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++class SubscriptionPersistentMetadata; ++class SubscriptionPersistentMetadataFactory ++ : public BrowserContextKeyedServiceFactory { ++ public: ++ static SubscriptionPersistentMetadata* GetForBrowserContext( ++ content::BrowserContext* context); ++ static SubscriptionPersistentMetadataFactory* GetInstance(); + -+package org.chromium.chrome.browser.adblock; -+ -+import org.junit.After; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeBrowserTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesSnippetsTestBase; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class TestPagesSnippetsTest extends TestPagesSnippetsTestBase { -+ @Rule -+ public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final TestPagesHelper mHelper = new TestPagesHelper(); -+ -+ @Before -+ public void setUp() { -+ mHelper.setUp(mActivityTestRule); -+ super.setUp(mHelper); -+ } ++ private: ++ friend class base::NoDestructor; ++ SubscriptionPersistentMetadataFactory(); ++ ~SubscriptionPersistentMetadataFactory() override; + -+ @After -+ public void tearDown() { -+ mHelper.tearDown(); -+ } -+} -diff --git a/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesWebsocketTest.java b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesWebsocketTest.java -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/android/javatests/src/org/chromium/chrome/browser/adblock/TestPagesWebsocketTest.java -@@ -0,0 +1,51 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ ++ // BrowserContextKeyedServiceFactory: ++ KeyedService* BuildServiceInstanceFor( ++ content::BrowserContext* context) const override; ++ content::BrowserContext* GetBrowserContextToUse( ++ content::BrowserContext* context) const override; ++}; + -+package org.chromium.chrome.browser.adblock; -+ -+import org.junit.After; -+import org.junit.Before; -+import org.junit.Rule; -+import org.junit.runner.RunWith; -+ -+import org.chromium.base.test.util.CommandLineFlags; -+import org.chromium.chrome.browser.flags.ChromeSwitches; -+import org.chromium.chrome.test.ChromeBrowserTestRule; -+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -+import org.chromium.components.adblock.TestPagesWebsocketTestBase; -+ -+@RunWith(ChromeJUnit4ClassRunner.class) -+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) -+public class TestPagesWebsocketTest extends TestPagesWebsocketTestBase { -+ @Rule -+ public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); -+ @Rule -+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); -+ private final TestPagesHelper mHelper = new TestPagesHelper(); -+ -+ @Before -+ public void setUp() { -+ mHelper.setUp(mActivityTestRule); -+ super.setUp(mHelper); -+ } ++} // namespace adblock + -+ @After -+ public void tearDown() { -+ mHelper.tearDown(); -+ } -+} -diff --git a/chrome/browser/adblock/content_security_policy_injector_factory.cc b/chrome/browser/adblock/content_security_policy_injector_factory.cc ++#endif // CHROME_BROWSER_ADBLOCK_SUBSCRIPTION_PERSISTENT_METADATA_FACTORY_H_ +diff --git a/chrome/browser/adblock/subscription_service_factory.cc b/chrome/browser/adblock/subscription_service_factory.cc new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/content_security_policy_injector_factory.cc -@@ -0,0 +1,69 @@ ++++ b/chrome/browser/adblock/subscription_service_factory.cc +@@ -0,0 +1,66 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -2826,63 +1922,60 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#include "chrome/browser/adblock/content_security_policy_injector_factory.h" ++#include "chrome/browser/adblock/subscription_service_factory.h" + +#include + -+#include "chrome/browser/adblock/subscription_service_factory.h" ++#include "chrome/browser/adblock/subscription_persistent_metadata_factory.h" +#include "chrome/browser/profiles/incognito_helpers.h" +#include "chrome/browser/profiles/profile.h" -+#include "components/adblock/content/browser/content_security_policy_injector_impl.h" -+#include "components/adblock/content/browser/frame_hierarchy_builder.h" ++#include "components/adblock/core/subscription/subscription_service.h" +#include "components/keyed_service/content/browser_context_dependency_manager.h" +#include "content/public/browser/browser_context.h" + +namespace adblock { + +// static -+ContentSecurityPolicyInjector* -+ContentSecurityPolicyInjectorFactory::GetForBrowserContext( ++SubscriptionService* SubscriptionServiceFactory::GetForBrowserContext( + content::BrowserContext* context) { -+ return static_cast( ++ return static_cast( + GetInstance()->GetServiceForBrowserContext(context, true)); +} +// static -+ContentSecurityPolicyInjectorFactory* -+ContentSecurityPolicyInjectorFactory::GetInstance() { -+ static base::NoDestructor instance; ++SubscriptionServiceFactory* SubscriptionServiceFactory::GetInstance() { ++ static base::NoDestructor instance; + return instance.get(); +} + -+ContentSecurityPolicyInjectorFactory::ContentSecurityPolicyInjectorFactory() -+ : BrowserContextKeyedServiceFactory( -+ "ContentSecurityPolicyInjector", -+ BrowserContextDependencyManager::GetInstance()) { -+ DependsOn(SubscriptionServiceFactory::GetInstance()); ++SubscriptionServiceFactory::SubscriptionServiceFactory() ++ : SubscriptionServiceFactoryBase() { ++ DependsOn(SubscriptionPersistentMetadataFactory::GetInstance()); +} + -+ContentSecurityPolicyInjectorFactory::~ContentSecurityPolicyInjectorFactory() = -+ default; ++SubscriptionServiceFactory::~SubscriptionServiceFactory() = default; + -+KeyedService* ContentSecurityPolicyInjectorFactory::BuildServiceInstanceFor( ++SubscriptionPersistentMetadata* ++SubscriptionServiceFactory::GetSubscriptionPersistentMetadata( + content::BrowserContext* context) const { -+ return new ContentSecurityPolicyInjectorImpl( -+ SubscriptionServiceFactory::GetForBrowserContext(context), -+ std::make_unique()); ++ return SubscriptionPersistentMetadataFactory::GetForBrowserContext(context); +} + -+content::BrowserContext* -+ContentSecurityPolicyInjectorFactory::GetBrowserContextToUse( ++PrefService* SubscriptionServiceFactory::GetPrefs( ++ content::BrowserContext* context) const { ++ return Profile::FromBrowserContext(context)->GetOriginalProfile()->GetPrefs(); ++} ++ ++content::BrowserContext* SubscriptionServiceFactory::GetBrowserContextToUse( + content::BrowserContext* context) const { + return chrome::GetBrowserContextRedirectedInIncognito(context); +} + +} // namespace adblock -diff --git a/chrome/browser/adblock/content_security_policy_injector_factory.h b/chrome/browser/adblock/content_security_policy_injector_factory.h +diff --git a/chrome/browser/adblock/subscription_service_factory.h b/chrome/browser/adblock/subscription_service_factory.h new file mode 100644 --- /dev/null -+++ b/chrome/browser/adblock/content_security_policy_injector_factory.h -@@ -0,0 +1,49 @@ ++++ b/chrome/browser/adblock/subscription_service_factory.h +@@ -0,0 +1,50 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -2900,6566 +1993,340 @@ new file mode 100644 + * along with eyeo Chromium SDK. If not, see . + */ + -+#ifndef CHROME_BROWSER_ADBLOCK_CONTENT_SECURITY_POLICY_INJECTOR_FACTORY_H_ -+#define CHROME_BROWSER_ADBLOCK_CONTENT_SECURITY_POLICY_INJECTOR_FACTORY_H_ ++#ifndef CHROME_BROWSER_ADBLOCK_SUBSCRIPTION_SERVICE_FACTORY_H_ ++#define CHROME_BROWSER_ADBLOCK_SUBSCRIPTION_SERVICE_FACTORY_H_ + +#include "base/no_destructor.h" -+#include "components/keyed_service/content/browser_context_keyed_service_factory.h" ++#include "components/adblock/content/browser/subscription_service_factory_base.h" +#include "content/public/browser/browser_context.h" + +namespace adblock { + -+class ContentSecurityPolicyInjector; -+class ContentSecurityPolicyInjectorFactory -+ : public BrowserContextKeyedServiceFactory { ++class SubscriptionService; ++class SubscriptionServiceFactory : public SubscriptionServiceFactoryBase { + public: -+ static ContentSecurityPolicyInjector* GetForBrowserContext( ++ static SubscriptionService* GetForBrowserContext( + content::BrowserContext* context); -+ static ContentSecurityPolicyInjectorFactory* GetInstance(); ++ static SubscriptionServiceFactory* GetInstance(); ++ ++ protected: ++ PrefService* GetPrefs(content::BrowserContext* context) const override; ++ SubscriptionPersistentMetadata* GetSubscriptionPersistentMetadata( ++ content::BrowserContext* context) const override; + + private: -+ friend class base::NoDestructor; -+ ContentSecurityPolicyInjectorFactory(); -+ ~ContentSecurityPolicyInjectorFactory() override; ++ friend class base::NoDestructor; ++ SubscriptionServiceFactory(); ++ ~SubscriptionServiceFactory() override; + -+ // BrowserContextKeyedServiceFactory: -+ KeyedService* BuildServiceInstanceFor( -+ content::BrowserContext* context) const override; + content::BrowserContext* GetBrowserContextToUse( + content::BrowserContext* context) const override; +}; + +} // namespace adblock + -+#endif // CHROME_BROWSER_ADBLOCK_CONTENT_SECURITY_POLICY_INJECTOR_FACTORY_H_ -diff --git a/chrome/browser/adblock/element_hider_factory.cc b/chrome/browser/adblock/element_hider_factory.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/element_hider_factory.cc -@@ -0,0 +1,63 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "chrome/browser/adblock/element_hider_factory.h" -+ -+#include -+ -+#include "chrome/browser/adblock/subscription_service_factory.h" -+#include "chrome/browser/profiles/incognito_helpers.h" -+#include "chrome/browser/profiles/profile.h" -+#include "components/adblock/content/browser/element_hider_impl.h" -+#include "components/keyed_service/content/browser_context_dependency_manager.h" -+#include "content/public/browser/browser_context.h" -+ -+namespace adblock { -+ -+// static -+ElementHider* ElementHiderFactory::GetForBrowserContext( -+ content::BrowserContext* context) { -+ return static_cast( -+ GetInstance()->GetServiceForBrowserContext(context, true)); -+} -+// static -+ElementHiderFactory* ElementHiderFactory::GetInstance() { -+ static base::NoDestructor instance; -+ return instance.get(); -+} -+ -+ElementHiderFactory::ElementHiderFactory() -+ : BrowserContextKeyedServiceFactory( -+ "ElementHider", -+ BrowserContextDependencyManager::GetInstance()) { -+ DependsOn(adblock::SubscriptionServiceFactory::GetInstance()); -+} -+ -+ElementHiderFactory::~ElementHiderFactory() = default; -+ -+KeyedService* ElementHiderFactory::BuildServiceInstanceFor( -+ content::BrowserContext* context) const { -+ return new ElementHiderImpl( -+ adblock::SubscriptionServiceFactory::GetForBrowserContext(context)); -+} -+ -+content::BrowserContext* ElementHiderFactory::GetBrowserContextToUse( -+ content::BrowserContext* context) const { -+ return chrome::GetBrowserContextRedirectedInIncognito(context); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/element_hider_factory.h b/chrome/browser/adblock/element_hider_factory.h -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/element_hider_factory.h -@@ -0,0 +1,47 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef CHROME_BROWSER_ADBLOCK_ELEMENT_HIDER_FACTORY_H_ -+#define CHROME_BROWSER_ADBLOCK_ELEMENT_HIDER_FACTORY_H_ -+ -+#include "base/no_destructor.h" -+#include "components/keyed_service/content/browser_context_keyed_service_factory.h" -+#include "content/public/browser/browser_context.h" -+ -+namespace adblock { -+ -+class ElementHider; -+class ElementHiderFactory : public BrowserContextKeyedServiceFactory { -+ public: -+ static ElementHider* GetForBrowserContext(content::BrowserContext* context); -+ static ElementHiderFactory* GetInstance(); -+ -+ private: -+ friend class base::NoDestructor; -+ ElementHiderFactory(); -+ ~ElementHiderFactory() override; -+ -+ // BrowserContextKeyedServiceFactory: -+ KeyedService* BuildServiceInstanceFor( -+ content::BrowserContext* context) const override; -+ content::BrowserContext* GetBrowserContextToUse( -+ content::BrowserContext* context) const override; -+}; -+ -+} // namespace adblock -+ -+#endif // CHROME_BROWSER_ADBLOCK_ELEMENT_HIDER_FACTORY_H_ -diff --git a/chrome/browser/adblock/resource_classification_runner_factory.cc b/chrome/browser/adblock/resource_classification_runner_factory.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/resource_classification_runner_factory.cc -@@ -0,0 +1,71 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "chrome/browser/adblock/resource_classification_runner_factory.h" -+ -+#include -+ -+#include "chrome/browser/adblock/sitekey_storage_factory.h" -+#include "chrome/browser/profiles/incognito_helpers.h" -+#include "chrome/browser/profiles/profile.h" -+#include "components/adblock/content/browser/frame_hierarchy_builder.h" -+#include "components/adblock/content/browser/resource_classification_runner_impl.h" -+#include "components/adblock/core/classifier/resource_classifier_impl.h" -+#include "components/keyed_service/content/browser_context_dependency_manager.h" -+#include "content/public/browser/browser_context.h" -+ -+namespace adblock { -+ -+// static -+ResourceClassificationRunner* -+ResourceClassificationRunnerFactory::GetForBrowserContext( -+ content::BrowserContext* context) { -+ return static_cast( -+ GetInstance()->GetServiceForBrowserContext(context, true)); -+} -+// static -+ResourceClassificationRunnerFactory* -+ResourceClassificationRunnerFactory::GetInstance() { -+ static base::NoDestructor instance; -+ return instance.get(); -+} -+ -+ResourceClassificationRunnerFactory::ResourceClassificationRunnerFactory() -+ : BrowserContextKeyedServiceFactory( -+ "ResourceClassificationRunner", -+ BrowserContextDependencyManager::GetInstance()) { -+ DependsOn(SitekeyStorageFactory::GetInstance()); -+} -+ -+ResourceClassificationRunnerFactory::~ResourceClassificationRunnerFactory() = -+ default; -+ -+KeyedService* ResourceClassificationRunnerFactory::BuildServiceInstanceFor( -+ content::BrowserContext* context) const { -+ return new ResourceClassificationRunnerImpl( -+ base::MakeRefCounted(), -+ std::make_unique(), -+ SitekeyStorageFactory::GetForBrowserContext(context)); -+} -+ -+content::BrowserContext* -+ResourceClassificationRunnerFactory::GetBrowserContextToUse( -+ content::BrowserContext* context) const { -+ return chrome::GetBrowserContextRedirectedInIncognito(context); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/resource_classification_runner_factory.h b/chrome/browser/adblock/resource_classification_runner_factory.h -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/resource_classification_runner_factory.h -@@ -0,0 +1,49 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef CHROME_BROWSER_ADBLOCK_RESOURCE_CLASSIFICATION_RUNNER_FACTORY_H_ -+#define CHROME_BROWSER_ADBLOCK_RESOURCE_CLASSIFICATION_RUNNER_FACTORY_H_ -+ -+#include "base/no_destructor.h" -+#include "components/keyed_service/content/browser_context_keyed_service_factory.h" -+#include "content/public/browser/browser_context.h" -+ -+namespace adblock { -+ -+class ResourceClassificationRunner; -+class ResourceClassificationRunnerFactory -+ : public BrowserContextKeyedServiceFactory { -+ public: -+ static ResourceClassificationRunner* GetForBrowserContext( -+ content::BrowserContext* context); -+ static ResourceClassificationRunnerFactory* GetInstance(); -+ -+ private: -+ friend class base::NoDestructor; -+ ResourceClassificationRunnerFactory(); -+ ~ResourceClassificationRunnerFactory() override; -+ -+ // BrowserContextKeyedServiceFactory: -+ KeyedService* BuildServiceInstanceFor( -+ content::BrowserContext* context) const override; -+ content::BrowserContext* GetBrowserContextToUse( -+ content::BrowserContext* context) const override; -+}; -+ -+} // namespace adblock -+ -+#endif // CHROME_BROWSER_ADBLOCK_RESOURCE_CLASSIFICATION_RUNNER_FACTORY_H_ -diff --git a/chrome/browser/adblock/session_stats_factory.cc b/chrome/browser/adblock/session_stats_factory.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/session_stats_factory.cc -@@ -0,0 +1,64 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "chrome/browser/adblock/session_stats_factory.h" -+ -+#include -+ -+#include "chrome/browser/adblock/resource_classification_runner_factory.h" -+#include "chrome/browser/profiles/incognito_helpers.h" -+#include "chrome/browser/profiles/profile.h" -+#include "components/adblock/content/browser/session_stats_impl.h" -+#include "components/keyed_service/content/browser_context_dependency_manager.h" -+#include "content/public/browser/browser_context.h" -+ -+namespace adblock { -+ -+// static -+SessionStats* SessionStatsFactory::GetForBrowserContext( -+ content::BrowserContext* context) { -+ return static_cast( -+ GetInstance()->GetServiceForBrowserContext(context, true)); -+} -+ -+// static -+SessionStatsFactory* SessionStatsFactory::GetInstance() { -+ static base::NoDestructor instance; -+ return instance.get(); -+} -+ -+SessionStatsFactory::SessionStatsFactory() -+ : BrowserContextKeyedServiceFactory( -+ "SessionStats", -+ BrowserContextDependencyManager::GetInstance()) { -+ DependsOn(ResourceClassificationRunnerFactory::GetInstance()); -+} -+ -+SessionStatsFactory::~SessionStatsFactory() = default; -+ -+KeyedService* SessionStatsFactory::BuildServiceInstanceFor( -+ content::BrowserContext* context) const { -+ return new SessionStatsImpl( -+ ResourceClassificationRunnerFactory::GetForBrowserContext(context)); -+} -+ -+content::BrowserContext* SessionStatsFactory::GetBrowserContextToUse( -+ content::BrowserContext* context) const { -+ return chrome::GetBrowserContextRedirectedInIncognito(context); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/session_stats_factory.h b/chrome/browser/adblock/session_stats_factory.h -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/session_stats_factory.h -@@ -0,0 +1,47 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef CHROME_BROWSER_ADBLOCK_SESSION_STATS_FACTORY_H_ -+#define CHROME_BROWSER_ADBLOCK_SESSION_STATS_FACTORY_H_ -+ -+#include "base/no_destructor.h" -+#include "components/keyed_service/content/browser_context_keyed_service_factory.h" -+#include "content/public/browser/browser_context.h" -+ -+namespace adblock { -+ -+class SessionStats; -+class SessionStatsFactory : public BrowserContextKeyedServiceFactory { -+ public: -+ static SessionStats* GetForBrowserContext(content::BrowserContext* context); -+ static SessionStatsFactory* GetInstance(); -+ -+ private: -+ friend class base::NoDestructor; -+ SessionStatsFactory(); -+ ~SessionStatsFactory() override; -+ -+ // BrowserContextKeyedServiceFactory: -+ KeyedService* BuildServiceInstanceFor( -+ content::BrowserContext* context) const override; -+ content::BrowserContext* GetBrowserContextToUse( -+ content::BrowserContext* context) const override; -+}; -+ -+} // namespace adblock -+ -+#endif // CHROME_BROWSER_ADBLOCK_SESSION_STATS_FACTORY_H_ -diff --git a/chrome/browser/adblock/sitekey_storage_factory.cc b/chrome/browser/adblock/sitekey_storage_factory.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/sitekey_storage_factory.cc -@@ -0,0 +1,59 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "chrome/browser/adblock/sitekey_storage_factory.h" -+ -+#include -+ -+#include "chrome/browser/profiles/incognito_helpers.h" -+#include "chrome/browser/profiles/profile.h" -+#include "components/adblock/core/sitekey_storage_impl.h" -+#include "components/keyed_service/content/browser_context_dependency_manager.h" -+#include "content/public/browser/browser_context.h" -+ -+namespace adblock { -+ -+// static -+SitekeyStorage* SitekeyStorageFactory::GetForBrowserContext( -+ content::BrowserContext* context) { -+ return static_cast( -+ GetInstance()->GetServiceForBrowserContext(context, true)); -+} -+// static -+SitekeyStorageFactory* SitekeyStorageFactory::GetInstance() { -+ static base::NoDestructor instance; -+ return instance.get(); -+} -+ -+SitekeyStorageFactory::SitekeyStorageFactory() -+ : BrowserContextKeyedServiceFactory( -+ "SitekeyStorage", -+ BrowserContextDependencyManager::GetInstance()) {} -+ -+SitekeyStorageFactory::~SitekeyStorageFactory() = default; -+ -+KeyedService* SitekeyStorageFactory::BuildServiceInstanceFor( -+ content::BrowserContext* context) const { -+ return new SitekeyStorageImpl(); -+} -+ -+content::BrowserContext* SitekeyStorageFactory::GetBrowserContextToUse( -+ content::BrowserContext* context) const { -+ return chrome::GetBrowserContextRedirectedInIncognito(context); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/sitekey_storage_factory.h b/chrome/browser/adblock/sitekey_storage_factory.h -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/sitekey_storage_factory.h -@@ -0,0 +1,47 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef CHROME_BROWSER_ADBLOCK_SITEKEY_STORAGE_FACTORY_H_ -+#define CHROME_BROWSER_ADBLOCK_SITEKEY_STORAGE_FACTORY_H_ -+ -+#include "base/no_destructor.h" -+#include "components/keyed_service/content/browser_context_keyed_service_factory.h" -+#include "content/public/browser/browser_context.h" -+ -+namespace adblock { -+ -+class SitekeyStorage; -+class SitekeyStorageFactory : public BrowserContextKeyedServiceFactory { -+ public: -+ static SitekeyStorage* GetForBrowserContext(content::BrowserContext* context); -+ static SitekeyStorageFactory* GetInstance(); -+ -+ private: -+ friend class base::NoDestructor; -+ SitekeyStorageFactory(); -+ ~SitekeyStorageFactory() override; -+ -+ // BrowserContextKeyedServiceFactory: -+ KeyedService* BuildServiceInstanceFor( -+ content::BrowserContext* context) const override; -+ content::BrowserContext* GetBrowserContextToUse( -+ content::BrowserContext* context) const override; -+}; -+ -+} // namespace adblock -+ -+#endif // CHROME_BROWSER_ADBLOCK_SITEKEY_STORAGE_FACTORY_H_ -diff --git a/chrome/browser/adblock/subscription_persistent_metadata_factory.cc b/chrome/browser/adblock/subscription_persistent_metadata_factory.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/subscription_persistent_metadata_factory.cc -@@ -0,0 +1,63 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "chrome/browser/adblock/subscription_persistent_metadata_factory.h" -+ -+#include -+ -+#include "chrome/browser/profiles/incognito_helpers.h" -+#include "chrome/browser/profiles/profile.h" -+#include "components/adblock/core/subscription/subscription_persistent_metadata_impl.h" -+#include "components/keyed_service/content/browser_context_dependency_manager.h" -+#include "content/public/browser/browser_context.h" -+ -+namespace adblock { -+ -+// static -+SubscriptionPersistentMetadata* -+SubscriptionPersistentMetadataFactory::GetForBrowserContext( -+ content::BrowserContext* context) { -+ return static_cast( -+ GetInstance()->GetServiceForBrowserContext(context, true)); -+} -+// static -+SubscriptionPersistentMetadataFactory* -+SubscriptionPersistentMetadataFactory::GetInstance() { -+ static base::NoDestructor instance; -+ return instance.get(); -+} -+ -+SubscriptionPersistentMetadataFactory::SubscriptionPersistentMetadataFactory() -+ : BrowserContextKeyedServiceFactory( -+ "AdblockSubscriptionPersistentMetadata", -+ BrowserContextDependencyManager::GetInstance()) {} -+SubscriptionPersistentMetadataFactory:: -+ ~SubscriptionPersistentMetadataFactory() = default; -+ -+KeyedService* SubscriptionPersistentMetadataFactory::BuildServiceInstanceFor( -+ content::BrowserContext* context) const { -+ return new SubscriptionPersistentMetadataImpl( -+ Profile::FromBrowserContext(context)->GetOriginalProfile()->GetPrefs()); -+} -+ -+content::BrowserContext* -+SubscriptionPersistentMetadataFactory::GetBrowserContextToUse( -+ content::BrowserContext* context) const { -+ return chrome::GetBrowserContextRedirectedInIncognito(context); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/subscription_persistent_metadata_factory.h b/chrome/browser/adblock/subscription_persistent_metadata_factory.h -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/subscription_persistent_metadata_factory.h -@@ -0,0 +1,49 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef CHROME_BROWSER_ADBLOCK_SUBSCRIPTION_PERSISTENT_METADATA_FACTORY_H_ -+#define CHROME_BROWSER_ADBLOCK_SUBSCRIPTION_PERSISTENT_METADATA_FACTORY_H_ -+ -+#include "base/no_destructor.h" -+#include "components/keyed_service/content/browser_context_keyed_service_factory.h" -+#include "content/public/browser/browser_context.h" -+ -+namespace adblock { -+ -+class SubscriptionPersistentMetadata; -+class SubscriptionPersistentMetadataFactory -+ : public BrowserContextKeyedServiceFactory { -+ public: -+ static SubscriptionPersistentMetadata* GetForBrowserContext( -+ content::BrowserContext* context); -+ static SubscriptionPersistentMetadataFactory* GetInstance(); -+ -+ private: -+ friend class base::NoDestructor; -+ SubscriptionPersistentMetadataFactory(); -+ ~SubscriptionPersistentMetadataFactory() override; -+ -+ // BrowserContextKeyedServiceFactory: -+ KeyedService* BuildServiceInstanceFor( -+ content::BrowserContext* context) const override; -+ content::BrowserContext* GetBrowserContextToUse( -+ content::BrowserContext* context) const override; -+}; -+ -+} // namespace adblock -+ -+#endif // CHROME_BROWSER_ADBLOCK_SUBSCRIPTION_PERSISTENT_METADATA_FACTORY_H_ -diff --git a/chrome/browser/adblock/subscription_service_factory.cc b/chrome/browser/adblock/subscription_service_factory.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/subscription_service_factory.cc -@@ -0,0 +1,66 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "chrome/browser/adblock/subscription_service_factory.h" -+ -+#include -+ -+#include "chrome/browser/adblock/subscription_persistent_metadata_factory.h" -+#include "chrome/browser/profiles/incognito_helpers.h" -+#include "chrome/browser/profiles/profile.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/keyed_service/content/browser_context_dependency_manager.h" -+#include "content/public/browser/browser_context.h" -+ -+namespace adblock { -+ -+// static -+SubscriptionService* SubscriptionServiceFactory::GetForBrowserContext( -+ content::BrowserContext* context) { -+ return static_cast( -+ GetInstance()->GetServiceForBrowserContext(context, true)); -+} -+// static -+SubscriptionServiceFactory* SubscriptionServiceFactory::GetInstance() { -+ static base::NoDestructor instance; -+ return instance.get(); -+} -+ -+SubscriptionServiceFactory::SubscriptionServiceFactory() -+ : SubscriptionServiceFactoryBase() { -+ DependsOn(SubscriptionPersistentMetadataFactory::GetInstance()); -+} -+ -+SubscriptionServiceFactory::~SubscriptionServiceFactory() = default; -+ -+SubscriptionPersistentMetadata* -+SubscriptionServiceFactory::GetSubscriptionPersistentMetadata( -+ content::BrowserContext* context) const { -+ return SubscriptionPersistentMetadataFactory::GetForBrowserContext(context); -+} -+ -+PrefService* SubscriptionServiceFactory::GetPrefs( -+ content::BrowserContext* context) const { -+ return Profile::FromBrowserContext(context)->GetOriginalProfile()->GetPrefs(); -+} -+ -+content::BrowserContext* SubscriptionServiceFactory::GetBrowserContextToUse( -+ content::BrowserContext* context) const { -+ return chrome::GetBrowserContextRedirectedInIncognito(context); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/subscription_service_factory.h b/chrome/browser/adblock/subscription_service_factory.h -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/subscription_service_factory.h -@@ -0,0 +1,50 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#ifndef CHROME_BROWSER_ADBLOCK_SUBSCRIPTION_SERVICE_FACTORY_H_ -+#define CHROME_BROWSER_ADBLOCK_SUBSCRIPTION_SERVICE_FACTORY_H_ -+ -+#include "base/no_destructor.h" -+#include "components/adblock/content/browser/subscription_service_factory_base.h" -+#include "content/public/browser/browser_context.h" -+ -+namespace adblock { -+ -+class SubscriptionService; -+class SubscriptionServiceFactory : public SubscriptionServiceFactoryBase { -+ public: -+ static SubscriptionService* GetForBrowserContext( -+ content::BrowserContext* context); -+ static SubscriptionServiceFactory* GetInstance(); -+ -+ protected: -+ PrefService* GetPrefs(content::BrowserContext* context) const override; -+ SubscriptionPersistentMetadata* GetSubscriptionPersistentMetadata( -+ content::BrowserContext* context) const override; -+ -+ private: -+ friend class base::NoDestructor; -+ SubscriptionServiceFactory(); -+ ~SubscriptionServiceFactory() override; -+ -+ content::BrowserContext* GetBrowserContextToUse( -+ content::BrowserContext* context) const override; -+}; -+ -+} // namespace adblock -+ -+#endif // CHROME_BROWSER_ADBLOCK_SUBSCRIPTION_SERVICE_FACTORY_H_ -diff --git a/chrome/browser/adblock/test/adblock_content_browser_client_browsertest.cc b/chrome/browser/adblock/test/adblock_content_browser_client_browsertest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/test/adblock_content_browser_client_browsertest.cc -@@ -0,0 +1,125 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "chrome/browser/adblock/adblock_content_browser_client.h" -+ -+#include "chrome/browser/adblock/subscription_service_factory.h" -+#include "chrome/browser/profiles/profile.h" -+#include "chrome/browser/ui/browser.h" -+#include "chrome/browser/ui/browser_commands.h" -+#include "chrome/test/base/in_process_browser_test.h" -+#include "chrome/test/base/ui_test_utils.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/common/adblock_prefs.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/adblock/core/subscription/test/mock_subscription_service.h" -+#include "content/public/test/browser_test.h" -+#include "content/public/test/browser_test_utils.h" -+#include "net/dns/mock_host_resolver.h" -+#include "net/test/embedded_test_server/embedded_test_server.h" -+#include "net/test/spawned_test_server/spawned_test_server.h" -+#include "net/test/test_data_directory.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+class AdblockContentBrowserClientBrowserTest : public InProcessBrowserTest { -+ public: -+ void SetUpOnMainThread() override { -+ watcher_ = std::make_unique( -+ browser()->tab_strip_model()->GetActiveWebContents(), u"PASS"); -+ watcher_->AlsoWaitForTitle(u"FAIL"); -+ embedded_test_server()->ServeFilesFromSourceDirectory( -+ net::GetWebSocketTestDataDirectory()); -+ ASSERT_TRUE(embedded_test_server()->Start()); -+ } -+ -+ void TearDownOnMainThread() override { watcher_.reset(); } -+ -+ void NavigateToHTTP(const std::string& path) { -+ // Visit a HTTPS page for testing. -+ GURL::Replacements replacements; -+ replacements.SetSchemeStr("http"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL( -+ browser(), ws_server_.GetURL(path).ReplaceComponents(replacements))); -+ } -+ -+ std::string WaitAndGetTitle() { -+ return base::UTF16ToUTF8(watcher_->WaitAndGetTitle()); -+ } -+ -+ net::SpawnedTestServer ws_server_{net::SpawnedTestServer::TYPE_WS, -+ net::GetWebSocketTestDataDirectory()}; -+ -+ private: -+ std::unique_ptr watcher_; -+}; -+ -+IN_PROC_BROWSER_TEST_F(AdblockContentBrowserClientBrowserTest, -+ WebSocketConnectionNotInterrupted) { -+ // Launch a WebSocket server. -+ ASSERT_TRUE(ws_server_.Start()); -+ -+ // Disable ad-filtering. -+ auto* adblock_configuration = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetAdblockFilteringConfiguration(); -+ adblock_configuration->SetEnabled(false); -+ -+ NavigateToHTTP("split_packet_check.html"); -+ -+ // WebSocket connected. -+ EXPECT_EQ("PASS", WaitAndGetTitle()); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockContentBrowserClientBrowserTest, -+ WebSocketConnectionInterruptedButNotBlocked) { -+ // Launch a WebSocket server. -+ ASSERT_TRUE(ws_server_.Start()); -+ -+ // Enable ad-filtering. -+ auto* adblock_configuration = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetAdblockFilteringConfiguration(); -+ adblock_configuration->SetEnabled(true); -+ -+ NavigateToHTTP("split_packet_check.html"); -+ -+ // WebSocket connected, there were no blocking filters. -+ EXPECT_EQ("PASS", WaitAndGetTitle()); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockContentBrowserClientBrowserTest, -+ WebSocketConnectionInterruptedAndBlocked) { -+ // Launch a WebSocket server. -+ ASSERT_TRUE(ws_server_.Start()); -+ -+ // Intercept WebSocket and block connection via a filter. -+ auto* adblock_configuration = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetAdblockFilteringConfiguration(); -+ adblock_configuration->SetEnabled(true); -+ adblock_configuration->RemoveCustomFilter(kAllowlistEverythingFilter); -+ adblock_configuration->AddCustomFilter({"*$websocket"}); -+ -+ NavigateToHTTP("split_packet_check.html"); -+ -+ // WebSocket did not connect. -+ EXPECT_EQ("FAIL", WaitAndGetTitle()); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/test/adblock_debug_url_browsertest.cc b/chrome/browser/adblock/test/adblock_debug_url_browsertest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/test/adblock_debug_url_browsertest.cc -@@ -0,0 +1,314 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include -+ -+#include "chrome/browser/adblock/subscription_service_factory.h" -+#include "chrome/browser/profiles/profile.h" -+#include "chrome/browser/ui/browser.h" -+#include "chrome/test/base/in_process_browser_test.h" -+#include "chrome/test/base/ui_test_utils.h" -+#include "components/adblock/content/browser/adblock_url_loader_factory_for_test.h" -+#include "components/adblock/core/subscription/subscription_config.h" -+#include "content/public/test/browser_test.h" -+#include "testing/gmock/include/gmock/gmock.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+using testing::_; -+using testing::HasSubstr; -+using testing::Mock; -+using testing::Return; -+using testing::StartsWith; -+ -+namespace adblock { -+ -+class AdblockDebugUrlTest : public InProcessBrowserTest { -+ public: -+ AdblockDebugUrlTest() {} -+ ~AdblockDebugUrlTest() override = default; -+ AdblockDebugUrlTest(const AdblockDebugUrlTest&) = delete; -+ AdblockDebugUrlTest& operator=(const AdblockDebugUrlTest&) = delete; -+ -+ protected: -+ std::string ExecuteScriptAndExtractString(const std::string& js_code) const { -+ content::WebContents* web_contents = -+ browser()->tab_strip_model()->GetActiveWebContents(); -+ return content::EvalJs(web_contents->GetPrimaryMainFrame(), js_code) -+ .ExtractString(); -+ } -+ -+ bool IsAdblockEnabled() { -+ auto* adblock_configuration = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetAdblockFilteringConfiguration(); -+ DCHECK(adblock_configuration) << "Test expects \"adblock\" configuration"; -+ return adblock_configuration->IsEnabled(); -+ } -+ -+ bool IsAAEnabled() { -+ auto* adblock_configuration = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetAdblockFilteringConfiguration(); -+ DCHECK(adblock_configuration) << "Test expects \"adblock\" configuration"; -+ return base::ranges::any_of( -+ adblock_configuration->GetFilterLists(), -+ [&](const auto& url) { return url == AcceptableAdsUrl(); }); -+ } -+ -+ const std::string kReadPageBodyScript = -+ "document.getElementsByTagName('body')[0].firstChild.innerHTML"; -+ -+ const std::string kAdblockDebugUrl = -+ "http://" + -+ adblock::AdblockURLLoaderFactoryForTest::kAdblockDebugDataHostName; -+}; -+ -+IN_PROC_BROWSER_TEST_F(AdblockDebugUrlTest, TestInvalidUrls) { -+ GURL no_command1(kAdblockDebugUrl); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), no_command1)); -+ ASSERT_EQ("INVALID_COMMAND", -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ GURL no_command2(kAdblockDebugUrl + "/"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), no_command2)); -+ ASSERT_EQ("INVALID_COMMAND", -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ GURL invalid_command_url(kAdblockDebugUrl + "/some_invalid_command"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), invalid_command_url)); -+ ASSERT_EQ("INVALID_COMMAND", -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ GURL invalid_topic(kAdblockDebugUrl + "/filter/add/%2Fadsponsor."); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), invalid_topic)); -+ ASSERT_EQ("INVALID_COMMAND", -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ GURL invalid_command(kAdblockDebugUrl + "/filters/ad/%2Fadsponsor."); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), invalid_command)); -+ ASSERT_EQ("INVALID_COMMAND", -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockDebugUrlTest, TestFilterCommands) { -+ GURL clear_filters_url(kAdblockDebugUrl + "/filters/clear"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), clear_filters_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ GURL list_filters_url(kAdblockDebugUrl + "/filters/list"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_filters_url)); -+ std::string expected_no_filters = "OK"; -+ ASSERT_EQ(expected_no_filters, -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ GURL add_filters_url(kAdblockDebugUrl + -+ "/filters/add/%2FadsPlugin%2F%2A%0A%2Fadsponsor."); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), add_filters_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_filters_url)); -+ auto response = ExecuteScriptAndExtractString(kReadPageBodyScript); -+ ASSERT_THAT(response, StartsWith("OK\n\n")); -+ ASSERT_THAT(response, HasSubstr("adsPlugin/*")); -+ ASSERT_THAT(response, HasSubstr("adsponsor.")); -+ -+ GURL remove_filter_url(kAdblockDebugUrl + "/filters/remove/%2Fadsponsor."); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), remove_filter_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_filters_url)); -+ std::string expected_one_filter = "OK\n\n/adsPlugin/*\n"; -+ ASSERT_EQ(expected_one_filter, -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), clear_filters_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_filters_url)); -+ ASSERT_EQ(expected_no_filters, -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockDebugUrlTest, TestDomainCommands) { -+ GURL clear_domains_url(kAdblockDebugUrl + "/domains/clear"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), clear_domains_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ GURL list_domains_url(kAdblockDebugUrl + "/domains/list"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_domains_url)); -+ std::string expected_no_domains = "OK"; -+ ASSERT_EQ(expected_no_domains, -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ GURL add_domain_url(kAdblockDebugUrl + -+ "/domains/add/example.com%0Adomain.org"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), add_domain_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_domains_url)); -+ auto response = ExecuteScriptAndExtractString(kReadPageBodyScript); -+ ASSERT_THAT(response, StartsWith("OK\n\n")); -+ ASSERT_THAT(response, HasSubstr("example.com")); -+ ASSERT_THAT(response, HasSubstr("domain.org")); -+ -+ GURL remove_domain_url(kAdblockDebugUrl + "/domains/remove/example.com"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), remove_domain_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_domains_url)); -+ std::string expected_one_domain = "OK\n\ndomain.org\n"; -+ ASSERT_EQ(expected_one_domain, -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), clear_domains_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_domains_url)); -+ ASSERT_EQ(expected_no_domains, -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockDebugUrlTest, TestSubscriptionCommands) { -+ GURL clear_subscriptions_url(kAdblockDebugUrl + "/subscriptions/clear"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), clear_subscriptions_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ GURL list_subscriptions_url(kAdblockDebugUrl + "/subscriptions/list"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_subscriptions_url)); -+ std::string expected_no_subscriptions = "OK"; -+ ASSERT_EQ(expected_no_subscriptions, -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ GURL add_subscription_url(kAdblockDebugUrl + -+ "/subscriptions/add/" -+ "https%3A%2F%2Fexample.com%2Flist1.txt%0Ahttps%3A%" -+ "2F%2Fwww.domain.org%2Flist2.txt"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), add_subscription_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_subscriptions_url)); -+ auto response = ExecuteScriptAndExtractString(kReadPageBodyScript); -+ ASSERT_THAT(response, StartsWith("OK\n\n")); -+ ASSERT_THAT(response, HasSubstr("https://example.com/list1.txt")); -+ ASSERT_THAT(response, HasSubstr("https://www.domain.org/list2.txt")); -+ -+ GURL remove_subscription_url( -+ kAdblockDebugUrl + -+ "/subscriptions/remove/https%3A%2F%2Fwww.domain.org%2Flist2.txt"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), remove_subscription_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_subscriptions_url)); -+ std::string expected_one_subscription = -+ "OK\n\nhttps://example.com/list1.txt\n"; -+ ASSERT_EQ(expected_one_subscription, -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), clear_subscriptions_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_subscriptions_url)); -+ ASSERT_EQ(expected_no_subscriptions, -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockDebugUrlTest, TestEnableAdblockCommands) { -+ GURL enable_adblock__url(kAdblockDebugUrl + "/adblock/enable"); -+ GURL disable_adblock_url(kAdblockDebugUrl + "/adblock/disable"); -+ GURL adblock_state_url(kAdblockDebugUrl + "/adblock/state"); -+ -+ ASSERT_TRUE(IsAdblockEnabled()); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), adblock_state_url)); -+ ASSERT_EQ("OK\n\nenabled", -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), disable_adblock_url)); -+ ASSERT_FALSE(IsAdblockEnabled()); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), adblock_state_url)); -+ ASSERT_EQ("OK\n\ndisabled", -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), enable_adblock__url)); -+ ASSERT_TRUE(IsAdblockEnabled()); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), adblock_state_url)); -+ ASSERT_EQ("OK\n\nenabled", -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockDebugUrlTest, TestEnableAACommands) { -+ GURL enable_aa_url(kAdblockDebugUrl + "/aa/enable"); -+ GURL disable_aa_url(kAdblockDebugUrl + "/aa/disable"); -+ GURL aa_state_url(kAdblockDebugUrl + "/aa/state"); -+ -+ ASSERT_TRUE(IsAAEnabled()); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), aa_state_url)); -+ ASSERT_EQ("OK\n\nenabled", -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), disable_aa_url)); -+ ASSERT_FALSE(IsAAEnabled()); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), aa_state_url)); -+ ASSERT_EQ("OK\n\ndisabled", -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), enable_aa_url)); -+ ASSERT_TRUE(IsAAEnabled()); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), aa_state_url)); -+ ASSERT_EQ("OK\n\nenabled", -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockDebugUrlTest, TestFilterCommandsInOldFormat) { -+ GURL clear_filters_url(kAdblockDebugUrl + "/filters/clear"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), clear_filters_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ GURL list_filters_url(kAdblockDebugUrl + "/filters/list"); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_filters_url)); -+ std::string expected_no_filters = "OK"; -+ ASSERT_EQ(expected_no_filters, -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ GURL add_filters_url(kAdblockDebugUrl + -+ "/add?payload=%2FadsPlugin%2F%2A%0A%2Fadsponsor."); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), add_filters_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_filters_url)); -+ auto response = ExecuteScriptAndExtractString(kReadPageBodyScript); -+ ASSERT_THAT(response, StartsWith("OK\n\n")); -+ ASSERT_THAT(response, HasSubstr("adsPlugin/*")); -+ ASSERT_THAT(response, HasSubstr("adsponsor.")); -+ -+ GURL remove_filter_url(kAdblockDebugUrl + "/remove?payload=%2Fadsponsor."); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), remove_filter_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_filters_url)); -+ std::string expected_one_filter = "OK\n\n/adsPlugin/*\n"; -+ ASSERT_EQ(expected_one_filter, -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), clear_filters_url)); -+ ASSERT_EQ("OK", ExecuteScriptAndExtractString(kReadPageBodyScript)); -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), list_filters_url)); -+ ASSERT_EQ(expected_no_filters, -+ ExecuteScriptAndExtractString(kReadPageBodyScript)); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/test/adblock_filter_list_browsertest.cc b/chrome/browser/adblock/test/adblock_filter_list_browsertest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/test/adblock_filter_list_browsertest.cc -@@ -0,0 +1,260 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "base/check.h" -+#include "base/environment.h" -+#include "base/functional/callback_forward.h" -+#include "base/run_loop.h" -+#include "chrome/browser/adblock/subscription_service_factory.h" -+#include "chrome/browser/ui/browser.h" -+#include "chrome/test/base/in_process_browser_test.h" -+#include "components/adblock/core/adblock_switches.h" -+#include "components/adblock/core/subscription/subscription_config.h" -+#include "components/version_info/version_info.h" -+#include "content/public/test/browser_test.h" -+#include "content/public/test/browser_test_utils.h" -+#include "net/dns/mock_host_resolver.h" -+#include "net/test/embedded_test_server/embedded_test_server.h" -+ -+namespace adblock { -+ -+class AdblockFilterListDownloadTestBase : public InProcessBrowserTest { -+ public: -+ AdblockFilterListDownloadTestBase() -+ : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {} -+ // We need to set server and request handler asap -+ void SetUpInProcessBrowserTestFixture() override { -+ InProcessBrowserTest::SetUpInProcessBrowserTestFixture(); -+ host_resolver()->AddRule("easylist-downloads.adblockplus.org", "127.0.0.1"); -+ https_server_.RegisterRequestHandler( -+ base::BindRepeating(&AdblockFilterListDownloadTestBase::RequestHandler, -+ base::Unretained(this))); -+ net::EmbeddedTestServer::ServerCertificateConfig cert_config; -+ cert_config.dns_names = {"easylist-downloads.adblockplus.org"}; -+ https_server_.SetSSLConfig(cert_config); -+ ASSERT_TRUE(https_server_.Start()); -+ SetFilterListServerPortForTesting(https_server_.port()); -+ } -+ -+ void CheckRequestParams(const net::test_server::HttpRequest& request, -+ std::string expected_disabled_value) { -+ std::string os; -+ base::ReplaceChars(version_info::GetOSType(), base::kWhitespaceASCII, "", -+ &os); -+ EXPECT_TRUE(request.relative_url.find("addonName=eyeo-chromium-sdk") != -+ std::string::npos); -+ EXPECT_TRUE(request.relative_url.find("addonVersion=1.0") != -+ std::string::npos); -+ EXPECT_TRUE(request.relative_url.find("platformVersion=1.0") != -+ std::string::npos); -+ EXPECT_TRUE(request.relative_url.find("platform=" + os) != -+ std::string::npos); -+ if (RunsOnEyeoCI()) { -+ // Those two checks below require "eyeo_application_name" and -+ // "eyeo_application_version" to be set as gn gen args. -+ EXPECT_TRUE( -+ request.relative_url.find("application=app_name_from_ci_config") != -+ std::string::npos) -+ << "Did you set \"eyeo_application_name\" gn gen arg?"; -+ EXPECT_TRUE(request.relative_url.find( -+ "applicationVersion=app_version_from_ci_config") != -+ std::string::npos) -+ << "Did you set \"eyeo_application_version\" gn gen arg?"; -+ } -+ EXPECT_TRUE( -+ request.relative_url.find("disabled=" + expected_disabled_value) != -+ std::string::npos); -+ } -+ -+ virtual std::unique_ptr RequestHandler( -+ const net::test_server::HttpRequest& request) { -+ if (request.method == net::test_server::HttpMethod::METHOD_GET && -+ (base::StartsWith(request.relative_url, "/abp-filters-anti-cv.txt") || -+ base::StartsWith(request.relative_url, "/easylist.txt") || -+ base::StartsWith(request.relative_url, "/exceptionrules.txt"))) { -+ CheckRequestParams(request, "false"); -+ default_lists_.insert(request.relative_url.substr( -+ 1, request.relative_url.find_first_of("?") - 1)); -+ } -+ -+ // Unhandled requests result in the Embedded test server sending a 404. This -+ // is fine for the purpose of this test. -+ return nullptr; -+ } -+ -+ void NotifyTestFinished() { -+ finish_condition_met_ = true; -+ // If the test is currently waiting for the finish condition to be met, we -+ // need to quit the run loop. -+ if (quit_closure_) { -+ quit_closure_.Run(); -+ } -+ } -+ -+ void RunUntilTestFinished() { -+ // If the finish condition is already met, we don't need to run the run -+ // loop. -+ if (finish_condition_met_) { -+ return; -+ } -+ // Wait until NotifyTestFinished() gets called. -+ base::RunLoop run_loop; -+ quit_closure_ = run_loop.QuitClosure(); -+ std::move(run_loop).Run(); -+ } -+ -+ bool RunsOnEyeoCI() { -+ auto env = base::Environment::Create(); -+ std::string value; -+ env->GetVar("CI_PROJECT_NAME", &value); -+ return value == "chromium-sdk"; -+ } -+ -+ protected: -+ net::EmbeddedTestServer https_server_; -+ std::set default_lists_; -+ bool finish_condition_met_ = false; -+ base::RepeatingClosure quit_closure_; -+}; -+ -+class AdblockEnabledFilterListDownloadTest -+ : public AdblockFilterListDownloadTestBase { -+ public: -+ std::unique_ptr RequestHandler( -+ const net::test_server::HttpRequest& request) override { -+ auto result = AdblockFilterListDownloadTestBase::RequestHandler(request); -+ // If we get all expected requests we simply finish the test by closing -+ // the browser, otherwise test will fail with a timeout. -+ if (default_lists_.size() == 3) { -+ NotifyTestFinished(); -+ } -+ -+ // Unhandled requests result in the Embedded test server sending a 404. -+ return result; -+ } -+}; -+ -+IN_PROC_BROWSER_TEST_F(AdblockEnabledFilterListDownloadTest, -+ TestInitialDownloads) { -+ RunUntilTestFinished(); -+} -+ -+class AdblockEnabledAcceptableAdsDisabledFilterListDownloadTest -+ : public AdblockFilterListDownloadTestBase { -+ public: -+ AdblockEnabledAcceptableAdsDisabledFilterListDownloadTest() { -+ const auto testing_interval = base::Seconds(1); -+ SubscriptionServiceFactory::SetUpdateCheckAndDelayIntervalsForTesting( -+ testing_interval, testing_interval); -+ } -+ -+ std::unique_ptr RequestHandler( -+ const net::test_server::HttpRequest& request) override { -+ // If we get expected HEAD request we simply finish the test by closing -+ // the browser, otherwise test will fail with a timeout. -+ if (request.method == net::test_server::HttpMethod::METHOD_HEAD && -+ base::StartsWith(request.relative_url, "/exceptionrules.txt")) { -+ CheckRequestParams(request, "true"); -+ NotifyTestFinished(); -+ } -+ -+ return nullptr; -+ } -+ -+ void SetUpCommandLine(base::CommandLine* command_line) override { -+ command_line->AppendSwitch(adblock::switches::kDisableAcceptableAds); -+ } -+}; -+ -+IN_PROC_BROWSER_TEST_F( -+ AdblockEnabledAcceptableAdsDisabledFilterListDownloadTest, -+ TestInitialDownloads) { -+ RunUntilTestFinished(); -+} -+ -+enum class DisableSwitch { Adblock, Eyeo }; -+ -+class AdblockDisabledFilterListDownloadTest -+ : public AdblockFilterListDownloadTestBase, -+ public testing::WithParamInterface { -+ public: -+ void SetUpCommandLine(base::CommandLine* command_line) override { -+ command_line->AppendSwitch(GetParam() == DisableSwitch::Adblock -+ ? adblock::switches::kDisableAdblock -+ : adblock::switches::kDisableEyeoFiltering); -+ } -+ -+ void VerifyNoDownloads() { -+ ASSERT_EQ(0u, default_lists_.size()); -+ NotifyTestFinished(); -+ } -+}; -+ -+IN_PROC_BROWSER_TEST_P(AdblockDisabledFilterListDownloadTest, -+ TestInitialDownloads) { -+ // This test assumes that inital downloads (for adblock enabled) will happen -+ // within 10 seconds. When tested locally it always happens within 3 seconds. -+ base::OneShotTimer timer; -+ timer.Start( -+ FROM_HERE, base::Seconds(10), -+ base::BindOnce(&AdblockDisabledFilterListDownloadTest::VerifyNoDownloads, -+ base::Unretained(this))); -+ RunUntilTestFinished(); -+} -+ -+INSTANTIATE_TEST_SUITE_P(All, -+ AdblockDisabledFilterListDownloadTest, -+ testing::Values(DisableSwitch::Adblock, -+ DisableSwitch::Eyeo)); -+ -+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) -+class AdblockPtLocaleFilterListDownloadTest -+ : public AdblockFilterListDownloadTestBase { -+ public: -+ AdblockPtLocaleFilterListDownloadTest() { setenv("LANGUAGE", "pt_PT", 1); } -+ -+ std::unique_ptr RequestHandler( -+ const net::test_server::HttpRequest& request) override { -+ EXPECT_FALSE(base::StartsWith(request.relative_url, "/easylist.txt")); -+ if (request.method == net::test_server::HttpMethod::METHOD_GET && -+ (base::StartsWith(request.relative_url, "/abp-filters-anti-cv.txt") || -+ base::StartsWith(request.relative_url, -+ "/easylistportuguese+easylist.txt") || -+ base::StartsWith(request.relative_url, "/exceptionrules.txt"))) { -+ CheckRequestParams(request, "false"); -+ default_lists_.insert(request.relative_url.substr( -+ 1, request.relative_url.find_first_of("?") - 1)); -+ } -+ -+ // If we get all expected requests we simply finish the test by closing -+ // the browser, otherwise test will fail with a timeout. -+ if (default_lists_.size() == 3) { -+ NotifyTestFinished(); -+ } -+ -+ // Unhandled requests result in the Embedded test server sending a 404. -+ return nullptr; -+ } -+}; -+ -+IN_PROC_BROWSER_TEST_F(AdblockPtLocaleFilterListDownloadTest, -+ TestInitialDownloads) { -+ RunUntilTestFinished(); -+} -+#endif -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/test/adblock_filtering_configurations_browsertest.cc b/chrome/browser/adblock/test/adblock_filtering_configurations_browsertest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/test/adblock_filtering_configurations_browsertest.cc -@@ -0,0 +1,459 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include -+#include "base/memory/raw_ptr.h" -+#include "base/ranges/algorithm.h" -+#include "base/run_loop.h" -+#include "chrome/browser/adblock/subscription_service_factory.h" -+#include "chrome/browser/profiles/profile.h" -+#include "chrome/browser/ui/browser.h" -+#include "chrome/test/base/in_process_browser_test.h" -+#include "chrome/test/base/ui_test_utils.h" -+#include "components/adblock/core/adblock_switches.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/configuration/filtering_configuration.h" -+#include "components/adblock/core/configuration/persistent_filtering_configuration.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/version_info/version_info.h" -+#include "content/public/browser/browser_task_traits.h" -+#include "content/public/test/browser_test.h" -+#include "content/public/test/browser_test_utils.h" -+#include "gmock/gmock.h" -+#include "net/dns/mock_host_resolver.h" -+#include "net/test/embedded_test_server/embedded_test_server.h" -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+class SubscriptionInstalledWaiter -+ : public SubscriptionService::SubscriptionObserver { -+ public: -+ explicit SubscriptionInstalledWaiter( -+ SubscriptionService* subscription_service) -+ : subscription_service_(subscription_service) { -+ subscription_service_->AddObserver(this); -+ } -+ -+ ~SubscriptionInstalledWaiter() override { -+ subscription_service_->RemoveObserver(this); -+ } -+ -+ void WaitUntilSubscriptionsInstalled(std::vector subscriptions) { -+ awaited_subscriptions_ = std::move(subscriptions); -+ run_loop_.Run(); -+ } -+ -+ void OnSubscriptionInstalled(const GURL& subscription_url) override { -+ awaited_subscriptions_.erase( -+ base::ranges::remove(awaited_subscriptions_, subscription_url), -+ awaited_subscriptions_.end()); -+ if (awaited_subscriptions_.empty()) { -+ run_loop_.Quit(); -+ } -+ } -+ -+ protected: -+ raw_ptr subscription_service_; -+ base::RunLoop run_loop_; -+ std::vector awaited_subscriptions_; -+}; -+ -+class AdblockFilteringConfigurationBrowserTest : public InProcessBrowserTest { -+ public: -+ void SetUpInProcessBrowserTestFixture() override { -+ InProcessBrowserTest::SetUpInProcessBrowserTestFixture(); -+ host_resolver()->AddRule("*", "127.0.0.1"); -+ embedded_test_server()->ServeFilesFromSourceDirectory( -+ "chrome/test/data/adblock"); -+ ASSERT_TRUE(embedded_test_server()->Start()); -+ } -+ -+ void SetUpOnMainThread() override { -+ auto* adblock_configuration = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetAdblockFilteringConfiguration(); -+ adblock_configuration->RemoveCustomFilter(kAllowlistEverythingFilter); -+ } -+ -+ GURL BlockingFilterListUrl() { -+ return embedded_test_server()->GetURL( -+ "/filterlist_that_blocks_resource.txt"); -+ } -+ -+ GURL ElementHidingFilterListUrl() { -+ return embedded_test_server()->GetURL( -+ "/filterlist_that_hides_resource.txt"); -+ } -+ -+ GURL AllowingFilterListUrl() { -+ return embedded_test_server()->GetURL( -+ "/filterlist_that_allows_resource.txt"); -+ } -+ -+ GURL GetPageUrl() { -+ return embedded_test_server()->GetURL("test.org", "/innermost_frame.html"); -+ } -+ -+ void NavigateToPage() { -+ ASSERT_TRUE(NavigateToURL( -+ browser()->tab_strip_model()->GetActiveWebContents(), GetPageUrl())); -+ } -+ -+ std::unique_ptr MakeConfiguration( -+ std::string name) { -+ return std::make_unique( -+ browser()->profile()->GetOriginalProfile()->GetPrefs(), name); -+ } -+ -+ void InstallFilteringConfiguration( -+ std::unique_ptr configuration) { -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->InstallFilteringConfiguration(std::move(configuration)); -+ } -+ -+ void UninstallFilteringConfiguration(const std::string& configuration_name) { -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->UninstallFilteringConfiguration(configuration_name); -+ } -+ -+ void WaitUntilSubscriptionsInstalled(std::vector subscriptions) { -+ SubscriptionInstalledWaiter waiter( -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile())); -+ waiter.WaitUntilSubscriptionsInstalled(std::move(subscriptions)); -+ } -+ -+ std::string GetResourcesComputedStyle() { -+ const std::string javascript = -+ "window.getComputedStyle(document.getElementById('subresource'))." -+ "display"; -+ return content::EvalJs(browser() -+ ->tab_strip_model() -+ ->GetActiveWebContents() -+ ->GetPrimaryMainFrame(), -+ javascript) -+ .ExtractString(); -+ } -+ -+ void ExpectResourceBlocked() { -+ EXPECT_EQ("none", GetResourcesComputedStyle()); -+ } -+ -+ void ExpectResourceShown() { -+ EXPECT_EQ("inline", GetResourcesComputedStyle()); -+ } -+}; -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ NoBlockingByDefault) { -+ auto configuration = MakeConfiguration("config"); -+ InstallFilteringConfiguration(std::move(configuration)); -+ -+ NavigateToPage(); -+ ExpectResourceShown(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ ResourceBlockedByFilteringConfigurationsList) { -+ auto configuration = MakeConfiguration("config"); -+ configuration->AddFilterList(BlockingFilterListUrl()); -+ -+ InstallFilteringConfiguration(std::move(configuration)); -+ -+ WaitUntilSubscriptionsInstalled({BlockingFilterListUrl()}); -+ -+ NavigateToPage(); -+ ExpectResourceBlocked(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ ResourceHiddenByFilteringConfigurationsList) { -+ auto configuration = MakeConfiguration("config"); -+ configuration->AddFilterList(ElementHidingFilterListUrl()); -+ -+ InstallFilteringConfiguration(std::move(configuration)); -+ -+ WaitUntilSubscriptionsInstalled({ElementHidingFilterListUrl()}); -+ -+ NavigateToPage(); -+ ExpectResourceBlocked(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ ResourceAllowedByFilteringConfigurationsList) { -+ auto configuration = MakeConfiguration("config"); -+ configuration->AddFilterList(BlockingFilterListUrl()); -+ configuration->AddFilterList(ElementHidingFilterListUrl()); -+ configuration->AddFilterList(AllowingFilterListUrl()); -+ -+ InstallFilteringConfiguration(std::move(configuration)); -+ -+ WaitUntilSubscriptionsInstalled({BlockingFilterListUrl(), -+ AllowingFilterListUrl(), -+ ElementHidingFilterListUrl()}); -+ -+ NavigateToPage(); -+ ExpectResourceShown(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ BlockingTakesPrecedenceBetweenConfigurations) { -+ auto blocking_configuration = MakeConfiguration("blocking"); -+ blocking_configuration->AddFilterList(BlockingFilterListUrl()); -+ -+ auto allowing_configuration = MakeConfiguration("allowing"); -+ allowing_configuration->AddFilterList(AllowingFilterListUrl()); -+ -+ InstallFilteringConfiguration(std::move(blocking_configuration)); -+ InstallFilteringConfiguration(std::move(allowing_configuration)); -+ -+ WaitUntilSubscriptionsInstalled( -+ {BlockingFilterListUrl(), AllowingFilterListUrl()}); -+ -+ NavigateToPage(); -+ ExpectResourceBlocked(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ ElementBlockedByCustomFilter) { -+ auto configuration = MakeConfiguration("config"); -+ configuration->AddCustomFilter("*resource.png"); -+ -+ InstallFilteringConfiguration(std::move(configuration)); -+ -+ NavigateToPage(); -+ ExpectResourceBlocked(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ ElementAllowedByCustomFilter) { -+ auto configuration = MakeConfiguration("config"); -+ configuration->AddCustomFilter("*resource.png"); -+ configuration->AddCustomFilter("@@*resource.png"); -+ -+ InstallFilteringConfiguration(std::move(configuration)); -+ -+ NavigateToPage(); -+ ExpectResourceShown(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ ElementAllowedByAllowedDomain) { -+ auto configuration = MakeConfiguration("config"); -+ configuration->AddCustomFilter("*resource.png"); -+ configuration->AddAllowedDomain(GetPageUrl().host()); -+ -+ InstallFilteringConfiguration(std::move(configuration)); -+ -+ NavigateToPage(); -+ ExpectResourceShown(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ PRE_CustomFiltersPersist) { -+ auto configuration = MakeConfiguration("persistent"); -+ // This custom filter will survive browser restart. -+ configuration->AddCustomFilter("*resource.png"); -+ InstallFilteringConfiguration(std::move(configuration)); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ CustomFiltersPersist) { -+ auto configurations = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetInstalledFilteringConfigurations(); -+ auto configuration = base::ranges::find(configurations, "persistent", -+ &FilteringConfiguration::GetName); -+ ASSERT_TRUE(configuration != configurations.end()); -+ EXPECT_THAT((*configuration)->GetCustomFilters(), -+ testing::UnorderedElementsAre("*resource.png")); -+ -+ NavigateToPage(); -+ ExpectResourceBlocked(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ DisabledConfigurationDoesNotBlock) { -+ auto configuration = MakeConfiguration("config"); -+ configuration->AddCustomFilter("*resource.png"); -+ configuration->SetEnabled(false); -+ -+ InstallFilteringConfiguration(std::move(configuration)); -+ -+ NavigateToPage(); -+ ExpectResourceShown(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ ConfigurationCanBeUsedAfterInstalling) { -+ auto configuration = MakeConfiguration("config"); -+ auto* configuration_ptr = configuration.get(); -+ -+ InstallFilteringConfiguration(std::move(configuration)); -+ -+ configuration_ptr->AddCustomFilter("*resource.png"); -+ -+ NavigateToPage(); -+ ExpectResourceBlocked(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ ConfigurationCanBeDisabledAfterInstalling) { -+ auto configuration = MakeConfiguration("config"); -+ auto* configuration_ptr = configuration.get(); -+ -+ InstallFilteringConfiguration(std::move(configuration)); -+ -+ configuration_ptr->AddCustomFilter("*resource.png"); -+ configuration_ptr->SetEnabled(false); -+ -+ NavigateToPage(); -+ ExpectResourceShown(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ SubscriptionsDownloadedAfterConfigurationEnabled) { -+ auto configuration = MakeConfiguration("config"); -+ configuration->SetEnabled(false); -+ configuration->AddFilterList(BlockingFilterListUrl()); -+ configuration->AddFilterList(ElementHidingFilterListUrl()); -+ configuration->AddFilterList(AllowingFilterListUrl()); -+ auto* configuration_ptr = configuration.get(); -+ -+ InstallFilteringConfiguration(std::move(configuration)); -+ -+ configuration_ptr->SetEnabled(true); -+ -+ WaitUntilSubscriptionsInstalled({BlockingFilterListUrl(), -+ AllowingFilterListUrl(), -+ ElementHidingFilterListUrl()}); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ PRE_DownloadedSubscriptionsPersistOnDisk) { -+ auto configuration = MakeConfiguration("config"); -+ // This filter list setting will survive browser restart. -+ configuration->AddFilterList(BlockingFilterListUrl()); -+ -+ InstallFilteringConfiguration(std::move(configuration)); -+ -+ // This downloaded subscription won't need to be re-downloaded after restart. -+ WaitUntilSubscriptionsInstalled({BlockingFilterListUrl()}); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ DownloadedSubscriptionsPersistOnDisk) { -+ NavigateToPage(); -+ ExpectResourceBlocked(); -+} -+ -+// 1st run: create. -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ PRE_PRE_CreateThenRemoveConfiguration) { -+ auto configuration = MakeConfiguration("persistent"); -+ InstallFilteringConfiguration(std::move(configuration)); -+} -+ -+// 2nd run: remove. -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ PRE_CreateThenRemoveConfiguration) { -+ auto configurations = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetInstalledFilteringConfigurations(); -+ auto configuration = base::ranges::find(configurations, "persistent", -+ &FilteringConfiguration::GetName); -+ ASSERT_TRUE(configuration != configurations.end()); -+ UninstallFilteringConfiguration((*configuration)->GetName()); -+ configurations = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetInstalledFilteringConfigurations(); -+ configuration = base::ranges::find(configurations, "persistent", -+ &FilteringConfiguration::GetName); -+ ASSERT_TRUE(configuration == configurations.end()); -+} -+ -+// 3rd run: verify not present. -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationBrowserTest, -+ CreateThenRemoveConfiguration) { -+ auto configurations = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetInstalledFilteringConfigurations(); -+ auto configuration = base::ranges::find(configurations, "persistent", -+ &FilteringConfiguration::GetName); -+ ASSERT_TRUE(configuration == configurations.end()); -+} -+ -+class AdblockFilteringConfigurationDisableSwitchBrowserTest -+ : public AdblockFilteringConfigurationBrowserTest { -+ public: -+ void SetUpCommandLine(base::CommandLine* command_line) override { -+ if (base::StartsWith( -+ ::testing::UnitTest::GetInstance()->current_test_info()->name(), -+ "PRE_CreateConfigAndConfirmEnableStateAfterReset")) { -+ command_line->AppendSwitch(adblock::switches::kDisableEyeoFiltering); -+ } -+ } -+}; -+ -+// 1st run: create configuration and make sure it is enabled by default. -+IN_PROC_BROWSER_TEST_F( -+ AdblockFilteringConfigurationDisableSwitchBrowserTest, -+ PRE_PRE_PRE_CreateConfigAndConfirmEnableStateAfterReset) { -+ auto configuration = MakeConfiguration("persistent"); -+ ASSERT_TRUE(configuration->IsEnabled()); -+ InstallFilteringConfiguration(std::move(configuration)); -+} -+ -+// 2nd run: make sure configuration is enabled after restart. -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationDisableSwitchBrowserTest, -+ PRE_PRE_CreateConfigAndConfirmEnableStateAfterReset) { -+ auto configurations = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetInstalledFilteringConfigurations(); -+ auto configuration = base::ranges::find(configurations, "persistent", -+ &FilteringConfiguration::GetName); -+ ASSERT_TRUE(configuration != configurations.end()); -+ ASSERT_TRUE((*configuration)->IsEnabled()); -+} -+ -+// 3rd run: after adding "--disable-eyeo-filtering" make sure configuration is -+// disabled. -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationDisableSwitchBrowserTest, -+ PRE_CreateConfigAndConfirmEnableStateAfterReset) { -+ auto configurations = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetInstalledFilteringConfigurations(); -+ auto configuration = base::ranges::find(configurations, "persistent", -+ &FilteringConfiguration::GetName); -+ ASSERT_TRUE(configuration != configurations.end()); -+ ASSERT_FALSE((*configuration)->IsEnabled()); -+} -+ -+// 4th run: without "--disable-eyeo-filtering" make sure configuration is still -+// disabled. -+IN_PROC_BROWSER_TEST_F(AdblockFilteringConfigurationDisableSwitchBrowserTest, -+ CreateConfigAndConfirmEnableStateAfterReset) { -+ auto configurations = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetInstalledFilteringConfigurations(); -+ auto configuration = base::ranges::find(configurations, "persistent", -+ &FilteringConfiguration::GetName); -+ ASSERT_TRUE(configuration != configurations.end()); -+ ASSERT_FALSE((*configuration)->IsEnabled()); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/test/adblock_frame_hierarchy_builder_browsertest.cc b/chrome/browser/adblock/test/adblock_frame_hierarchy_builder_browsertest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/test/adblock_frame_hierarchy_builder_browsertest.cc -@@ -0,0 +1,464 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include -+ -+#include "base/ranges/algorithm.h" -+#include "chrome/browser/adblock/resource_classification_runner_factory.h" -+#include "chrome/browser/adblock/subscription_service_factory.h" -+#include "chrome/browser/profiles/profile.h" -+#include "chrome/browser/ssl/https_upgrades_util.h" -+#include "chrome/browser/ui/browser.h" -+#include "chrome/test/base/in_process_browser_test.h" -+#include "chrome/test/base/ui_test_utils.h" -+#include "components/adblock/content/browser/adblock_filter_match.h" -+#include "components/adblock/content/browser/frame_hierarchy_builder.h" -+#include "components/adblock/content/browser/resource_classification_runner.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/blocked_content/popup_blocker_tab_helper.h" -+#include "components/embedder_support/switches.h" -+#include "content/public/test/browser_test.h" -+#include "content/public/test/browser_test_utils.h" -+#include "net/dns/mock_host_resolver.h" -+#include "net/test/embedded_test_server/embedded_test_server.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+namespace { -+class TabAddedRemovedObserver : public TabStripModelObserver { -+ public: -+ explicit TabAddedRemovedObserver(TabStripModel* tab_strip_model) { -+ tab_strip_model->AddObserver(this); -+ } -+ -+ void OnTabStripModelChanged( -+ TabStripModel* tab_strip_model, -+ const TabStripModelChange& change, -+ const TabStripSelectionChange& selection) override { -+ if (change.type() == TabStripModelChange::kInserted) { -+ inserted_ = true; -+ return; -+ } -+ if (change.type() == TabStripModelChange::kRemoved) { -+ EXPECT_TRUE(inserted_); -+ removed_ = true; -+ loop_.Quit(); -+ return; -+ } -+ NOTREACHED(); -+ } -+ -+ void Wait() { -+ if (inserted_ && removed_) { -+ return; -+ } -+ loop_.Run(); -+ } -+ -+ private: -+ bool inserted_ = false; -+ bool removed_ = false; -+ base::RunLoop loop_; -+}; -+} // namespace -+ -+class ResourceClassificationRunnerObserver -+ : public ResourceClassificationRunner::Observer { -+ public: -+ ~ResourceClassificationRunnerObserver() override { -+ VerifyNoUnexpectedNotifications(); -+ } -+ // ResourceClassificationRunner::Observer: -+ void OnAdMatched(const GURL& url, -+ FilterMatchResult match_result, -+ const std::vector& parent_frame_urls, -+ ContentType content_type, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name) override { -+ if (match_result == FilterMatchResult::kAllowRule) { -+ allowed_ads_notifications.push_back(url); -+ } else { -+ blocked_ads_notifications.push_back(url); -+ } -+ } -+ -+ void OnPageAllowed(const GURL& url, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name) override { -+ allowed_pages_notifications.push_back(url); -+ } -+ -+ void OnPopupMatched(const GURL& url, -+ FilterMatchResult match_result, -+ const GURL& opener_url, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name) override { -+ auto& list = (match_result == FilterMatchResult::kBlockRule -+ ? blocked_popups_notifications -+ : allowed_popups_notifications); -+ auto it = std::find(list.begin(), list.end(), url.ExtractFileName()); -+ ASSERT_FALSE(it == list.end()) -+ << "Path " << url.ExtractFileName() << " not on list"; -+ list.erase(it); -+ if (popup_notifications_run_loop_ && allowed_popups_notifications.empty() && -+ blocked_popups_notifications.empty()) { -+ popup_notifications_run_loop_->Quit(); -+ } -+ } -+ -+ void VerifyNotificationSent(base::StringPiece path, std::vector& list) { -+ auto it = base::ranges::find(list, path, &GURL::ExtractFileName); -+ ASSERT_FALSE(it == list.end()) << "Path " << path << " not on list"; -+ // Remove expected notifications so that we can verify there are no -+ // unexpected notifications left by the end of each test. -+ list.erase(it); -+ } -+ -+ void VerifyNoUnexpectedNotifications() { -+ EXPECT_TRUE(blocked_ads_notifications.empty()); -+ EXPECT_TRUE(allowed_ads_notifications.empty()); -+ EXPECT_TRUE(blocked_popups_notifications.empty()); -+ EXPECT_TRUE(allowed_popups_notifications.empty()); -+ EXPECT_TRUE(allowed_pages_notifications.empty()); -+ } -+ -+ std::vector blocked_ads_notifications; -+ std::vector allowed_ads_notifications; -+ std::vector allowed_pages_notifications; -+ std::vector blocked_popups_notifications; -+ std::vector allowed_popups_notifications; -+ std::unique_ptr popup_notifications_run_loop_; -+}; -+ -+// Simulated setup: -+// http://outer.com/outermost_frame.html -+// has an iframe: http://middle.com/middle_frame.html -+// has an iframe: http://inner.com/innermost_frame.html -+// has a subresource http://inner.com/resource.png -+// -+// All of these files are in chrome/test/data/adblock. Cross-domain distribution -+// is simulated via SetupCrossSiteRedirector. -+// innermost_frame.html reports whether resource.png is visible via -+// window.top.postMessage to outermost_frame.html, which stores a global -+// subresource_visible JS variable. -+class AdblockFrameHierarchyBrowserTest : public InProcessBrowserTest { -+ public: -+ void SetUpOnMainThread() override { -+ InProcessBrowserTest::SetUpOnMainThread(); -+ host_resolver()->AddRule("*", "127.0.0.1"); -+ embedded_test_server()->ServeFilesFromSourceDirectory( -+ "chrome/test/data/adblock"); -+ content::SetupCrossSiteRedirector(embedded_test_server()); -+ AllowHttpForHostnamesForTesting({"outer.com", "inner.com", "middle.com"}, -+ browser()->profile()->GetPrefs()); -+ ASSERT_TRUE(embedded_test_server()->Start()); -+ auto* classification_runner = -+ ResourceClassificationRunnerFactory::GetForBrowserContext( -+ browser()->profile()); -+ classification_runner->AddObserver(&observer); -+ } -+ -+ void TearDownOnMainThread() override { -+ auto* classification_runner = -+ ResourceClassificationRunnerFactory::GetForBrowserContext( -+ browser()->profile()); -+ classification_runner->RemoveObserver(&observer); -+ InProcessBrowserTest::TearDownOnMainThread(); -+ } -+ -+ void SetUpCommandLine(base::CommandLine* command_line) override { -+ command_line->AppendSwitch(embedder_support::kDisablePopupBlocking); -+ } -+ -+ void SetFilters(std::vector filters) { -+ auto* adblock_configuration = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetAdblockFilteringConfiguration(); -+ adblock_configuration->RemoveCustomFilter(kAllowlistEverythingFilter); -+ for (auto& filter : filters) { -+ adblock_configuration->AddCustomFilter(filter); -+ } -+ } -+ -+ void NavigateToOutermostFrame() { -+ ASSERT_TRUE(ui_test_utils::NavigateToURL( -+ browser(), embedded_test_server()->GetURL( -+ "/cross-site/outer.com/outermost_frame.html"))); -+ } -+ -+ void NavigateToOutermostFrameWithAboutBlank() { -+ ASSERT_TRUE(ui_test_utils::NavigateToURL( -+ browser(), -+ embedded_test_server()->GetURL( -+ "/cross-site/outer.com/outermost_frame_with_about_blank.html"))); -+ } -+ -+ void NavigateToPopupParentFrameAndWaitForNotifications() { -+ observer.popup_notifications_run_loop_ = std::make_unique(); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL( -+ browser(), embedded_test_server()->GetURL( -+ "/cross-site/outer.com/popup_parent.html"))); -+ if (!(observer.allowed_popups_notifications.empty() && -+ observer.blocked_popups_notifications.empty())) { -+ observer.popup_notifications_run_loop_->Run(); -+ } -+ } -+ -+ void VerifyTargetResourceShown(bool expected_shown) { -+ // Since in one test we dynamically load (write) `about:blank` iframe after -+ // parent page is loaded, we need to have some wait & poll mechanism to wait -+ // until such a frame (and its resources) is completely loaded by JS. -+ std::string script = base::StringPrintf(R"( -+ (async () => { -+ let count = 10; -+ function waitFor(condition) { -+ const poll = resolve => { -+ if(condition() || !count--) resolve(); -+ else setTimeout(_ => poll(resolve), 200); -+ } -+ return new Promise(poll); -+ } -+ // Waits up to 2 seconds -+ await waitFor(_ => subresource_visible === %s); -+ return subresource_visible === true; -+ })() -+ )", -+ expected_shown ? "true" : "false"); -+ EXPECT_EQ( -+ expected_shown, -+ content::EvalJs(browser()->tab_strip_model()->GetActiveWebContents(), -+ script)); -+ } -+ -+ int NumberOfOpenTabs() { return browser()->tab_strip_model()->GetTabCount(); } -+ -+ ResourceClassificationRunnerObserver observer; -+}; -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, -+ SubresourceShownWithNoFilters) { -+ SetFilters({}); -+ NavigateToOutermostFrame(); -+ VerifyTargetResourceShown(true); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, SubresourceBlocked) { -+ SetFilters({"/resource.png"}); -+ NavigateToOutermostFrame(); -+ VerifyTargetResourceShown(false); -+ observer.VerifyNotificationSent("resource.png", -+ observer.blocked_ads_notifications); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, -+ SubresourceAllowedViaInnerFrame) { -+ SetFilters({"/resource.png", "@@||inner.com^$document"}); -+ NavigateToOutermostFrame(); -+ VerifyTargetResourceShown(true); -+ observer.VerifyNotificationSent("resource.png", -+ observer.allowed_ads_notifications); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, -+ SubresourceAllowedViaMiddleFrame) { -+ SetFilters({"/resource.png", "@@||middle.com^$document"}); -+ NavigateToOutermostFrame(); -+ VerifyTargetResourceShown(true); -+ observer.VerifyNotificationSent("resource.png", -+ observer.allowed_ads_notifications); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, -+ SubresourceAllowedViaOutermostFrame) { -+ SetFilters({"/resource.png", "@@||outer.com^$document"}); -+ NavigateToOutermostFrame(); -+ VerifyTargetResourceShown(true); -+ observer.VerifyNotificationSent("resource.png", -+ observer.allowed_ads_notifications); -+ observer.VerifyNotificationSent("outermost_frame.html", -+ observer.allowed_pages_notifications); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, -+ SubresourceBlockedWhenInvalidAllowRule) { -+ SetFilters({"/resource.png", "@@||bogus.com^$document"}); -+ NavigateToOutermostFrame(); -+ VerifyTargetResourceShown(false); -+ observer.VerifyNotificationSent("resource.png", -+ observer.blocked_ads_notifications); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, -+ DISABLED_PopupHandledByChromiumWithoutFilters) { -+ // Without any popup-specific filters, blocking popups is handed over to -+ // Chromium, which has it's own heuristics that are not based on filters. -+ SetFilters({}); -+ NavigateToPopupParentFrameAndWaitForNotifications(); -+ // The popup was not opened: -+ EXPECT_EQ(1, NumberOfOpenTabs()); -+ // Because Chromium's built-in popup blocker stopped it: -+ EXPECT_EQ(1u, blocked_content::PopupBlockerTabHelper::FromWebContents( -+ browser()->tab_strip_model()->GetActiveWebContents()) -+ ->GetBlockedPopupsCount()); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, PopupBlockedByFilter) { -+ SetFilters({"http://inner.com*/popup.html$popup"}); -+ observer.blocked_popups_notifications.emplace_back("popup.html"); -+ TabAddedRemovedObserver observer(browser()->tab_strip_model()); -+ NavigateToPopupParentFrameAndWaitForNotifications(); -+ observer.Wait(); -+ EXPECT_EQ(1, NumberOfOpenTabs()); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, PopupAllowedByFilter) { -+ SetFilters({"http://inner.com*/popup.html$popup", -+ "@@http://inner.com*/popup.html$popup"}); -+ observer.allowed_popups_notifications.emplace_back("popup.html"); -+ NavigateToPopupParentFrameAndWaitForNotifications(); -+ // Popup was allowed to open in a new tab -+ EXPECT_EQ(2, NumberOfOpenTabs()); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, -+ PopupAllowedByDomainSpecificFilter) { -+ // The frame that wants to open the popup is hosted on middle.com. -+ // The $popup allow rule applies to that frame. -+ SetFilters({"http://inner.com*/popup.html$popup", -+ "@@http://inner.com*/popup.html$popup,domain=middle.com"}); -+ observer.allowed_popups_notifications.emplace_back("popup.html"); -+ NavigateToPopupParentFrameAndWaitForNotifications(); -+ // Popup was allowed to open in a new tab -+ EXPECT_EQ(2, NumberOfOpenTabs()); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, -+ PopupNotAllowedByDomainSpecificFilter) { -+ // The frame that wants to open the popup is hosted on middle.com. -+ // The $popup allow rule does not apply because it is specific to outer.com. -+ // outer.com is not the frame that is opening the popup. -+ SetFilters({"http://inner.com*/popup.html$popup", -+ "@@http://inner.com*/popup.html$popup,domain=outer.com"}); -+ observer.blocked_popups_notifications.emplace_back("popup.html"); -+ TabAddedRemovedObserver observer(browser()->tab_strip_model()); -+ NavigateToPopupParentFrameAndWaitForNotifications(); -+ observer.Wait(); -+ EXPECT_EQ(1, NumberOfOpenTabs()); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, -+ PopupAllowedByParentDocument) { -+ // The outermost frame has a blanket allowing rule of $document type. -+ SetFilters({"http://inner.com*/popup.html$popup", -+ "@@||outer.com^$document,domain=outer.com"}); -+ observer.allowed_popups_notifications.emplace_back("popup.html"); -+ NavigateToPopupParentFrameAndWaitForNotifications(); -+ // Popup was allowed to open in a new tab -+ EXPECT_EQ(2, NumberOfOpenTabs()); -+ observer.VerifyNotificationSent("popup_parent.html", -+ observer.allowed_pages_notifications); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, -+ PopupAllowedByIntermediateParentDocument) { -+ // The middle frame has a blanket allowing rule of $document type. -+ SetFilters({"http://inner.com*/popup.html$popup", -+ "@@||middle.com^$document,domain=outer.com"}); -+ observer.allowed_popups_notifications.emplace_back("popup.html"); -+ NavigateToPopupParentFrameAndWaitForNotifications(); -+ // Popup was allowed to open in a new tab -+ EXPECT_EQ(2, NumberOfOpenTabs()); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, BlankFrameHiding) { -+ SetFilters({"##.about_blank_div"}); -+ NavigateToOutermostFrameWithAboutBlank(); -+ std::string script = R"( -+ function writeIframe() { -+ let frameDocument = document.getElementById("about_blank").contentWindow.document; -+ frameDocument.open("text/html"); -+ frameDocument.write(` -+ -+ -+

-+ -+ `); -+ frameDocument.close(); -+ } -+ if (document.readyState == "complete") { -+ writeIframe(); -+ } else { -+ document.getElementById("about_blank").addEventListener("load", writeIframe); -+ } -+ )"; -+ EXPECT_TRUE(content::ExecJs( -+ browser()->tab_strip_model()->GetActiveWebContents(), script)); -+ VerifyTargetResourceShown(false); -+ SetFilters({"@@^eyeo=true$document"}); -+ NavigateToOutermostFrameWithAboutBlank(); -+ EXPECT_TRUE(content::ExecJs( -+ browser()->tab_strip_model()->GetActiveWebContents(), script)); -+ VerifyTargetResourceShown(true); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockFrameHierarchyBrowserTest, BlankFrameBlocking) { -+ SetFilters({"/resource.png"}); -+ NavigateToOutermostFrameWithAboutBlank(); -+ std::string script = R"( -+ function writeIframe() { -+ let frameDocument = document.getElementById("about_blank").contentWindow.document; -+ frameDocument.open("text/html"); -+ frameDocument.write(` -+ -+ -+ -+ -+ `); -+ frameDocument.close(); -+ } -+ if (document.readyState == "complete") { -+ writeIframe(); -+ } else { -+ document.getElementById("about_blank").addEventListener("load", writeIframe); -+ } -+ )"; -+ EXPECT_TRUE(content::ExecJs( -+ browser()->tab_strip_model()->GetActiveWebContents(), script)); -+ VerifyTargetResourceShown(false); -+ observer.VerifyNotificationSent("resource.png", -+ observer.blocked_ads_notifications); -+ SetFilters({"@@^eyeo=true$document"}); -+ NavigateToOutermostFrameWithAboutBlank(); -+ EXPECT_TRUE(content::ExecJs( -+ browser()->tab_strip_model()->GetActiveWebContents(), script)); -+ VerifyTargetResourceShown(true); -+ observer.VerifyNotificationSent("resource.png", -+ observer.allowed_ads_notifications); -+} -+ -+// More tests can be added / parametrized, e.g.: -+// - elemhide blocking filters (in conjunction with $elemhide allow rules) -+// - $subdocument-based allow rules -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/test/adblock_multiple_tabs_browsertest.cc b/chrome/browser/adblock/test/adblock_multiple_tabs_browsertest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/test/adblock_multiple_tabs_browsertest.cc -@@ -0,0 +1,160 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "chrome/browser/adblock/resource_classification_runner_factory.h" -+#include "chrome/browser/adblock/subscription_service_factory.h" -+#include "chrome/browser/profiles/profile.h" -+#include "chrome/browser/ui/browser.h" -+#include "chrome/browser/ui/browser_list.h" -+#include "chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h" -+#include "chrome/test/base/in_process_browser_test.h" -+#include "chrome/test/base/ui_test_utils.h" -+#include "components/adblock/content/browser/resource_classification_runner.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/sessions/content/session_tab_helper.h" -+#include "content/public/test/browser_test.h" -+#include "content/public/test/browser_test_utils.h" -+#include "net/dns/mock_host_resolver.h" -+#include "net/test/embedded_test_server/embedded_test_server.h" -+ -+namespace adblock { -+ -+class AdblockMultipleTabsBrowserTest -+ : public InProcessBrowserTest, -+ public ResourceClassificationRunner::Observer { -+ public: -+ void SetUpOnMainThread() override { -+ host_resolver()->AddRule(kTestDomain, "127.0.0.1"); -+ embedded_test_server()->ServeFilesFromSourceDirectory( -+ "chrome/test/data/adblock"); -+ ASSERT_TRUE(embedded_test_server()->Start()); -+ ResourceClassificationRunnerFactory::GetForBrowserContext( -+ browser()->profile()) -+ ->AddObserver(this); -+ SetFilters({"blocked.png", "allowed.png", "@@allowed.png"}); -+ } -+ -+ void TearDownInProcessBrowserTestFixture() override { -+ ASSERT_EQ(kTabsCount, static_cast(tabs_with_blocked_resource_.size())); -+ ASSERT_EQ(kTabsCount, static_cast(tabs_with_allowed_resource_.size())); -+ } -+ -+ void SetFilters(std::vector filters) { -+ auto* adblock_configuration = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetAdblockFilteringConfiguration(); -+ adblock_configuration->RemoveCustomFilter(kAllowlistEverythingFilter); -+ for (auto& filter : filters) { -+ adblock_configuration->AddCustomFilter(filter); -+ } -+ } -+ -+ void RestoreTabs(Browser* browser) { -+ content::DOMMessageQueue queue; -+ RecentTabsSubMenuModel menu(nullptr, browser); -+ menu.ExecuteCommand(menu.GetFirstRecentTabsCommandId(), 0); -+ for (int i = 0; i < kTabsCount; ++i) { -+ std::string message; -+ EXPECT_TRUE(queue.WaitForMessage(&message)); -+ EXPECT_EQ("\"READY\"", message); -+ } -+ } -+ -+ // ResourceClassificationRunner::Observer: -+ void OnAdMatched(const GURL& url, -+ FilterMatchResult match_result, -+ const std::vector& parent_frame_urls, -+ ContentType content_type, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name) override { -+ const content::WebContents* wc = -+ content::WebContents::FromRenderFrameHost(render_frame_host); -+ if (match_result == FilterMatchResult::kBlockRule && -+ url.path() == "/blocked.png") { -+ tabs_with_blocked_resource_.insert( -+ sessions::SessionTabHelper::IdForTab(wc).id()); -+ } else if (match_result == FilterMatchResult::kAllowRule && -+ url.path() == "/allowed.png") { -+ tabs_with_allowed_resource_.insert( -+ sessions::SessionTabHelper::IdForTab(wc).id()); -+ } -+ } -+ -+ void OnPageAllowed(const GURL& url, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name) override {} -+ -+ void OnPopupMatched(const GURL& url, -+ FilterMatchResult match_result, -+ const GURL& opener_url, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name) override {} -+ -+ protected: -+ const int kTabsCount = 4; -+ const char* kTestDomain = "example.com"; -+ std::set tabs_with_blocked_resource_; -+ std::set tabs_with_allowed_resource_; -+}; -+ -+IN_PROC_BROWSER_TEST_F(AdblockMultipleTabsBrowserTest, PRE_OpenManyTabs) { -+ // Load page in already opened tab -+ ASSERT_TRUE(ui_test_utils::NavigateToURL( -+ browser(), -+ embedded_test_server()->GetURL(kTestDomain, "/tab-restore.html"))); -+ // Open more tabs -+ for (int i = 0; i < kTabsCount - 1; ++i) { -+ ASSERT_TRUE(ui_test_utils::NavigateToURLWithDisposition( -+ browser(), -+ embedded_test_server()->GetURL(kTestDomain, "/tab-restore.html"), -+ WindowOpenDisposition::NEW_FOREGROUND_TAB, -+ ui_test_utils::BROWSER_TEST_WAIT_FOR_LOAD_STOP)); -+ } -+ EXPECT_EQ(kTabsCount, browser()->tab_strip_model()->count()); -+ EXPECT_EQ(kTabsCount, static_cast(tabs_with_blocked_resource_.size())); -+ EXPECT_EQ(kTabsCount, static_cast(tabs_with_allowed_resource_.size())); -+ -+ // Open a new browser instance -+ ui_test_utils::NavigateToURLWithDisposition( -+ browser(), GURL(url::kAboutBlankURL), WindowOpenDisposition::NEW_WINDOW, -+ ui_test_utils::BROWSER_TEST_WAIT_FOR_BROWSER); -+ BrowserList* active_browser_list = BrowserList::GetInstance(); -+ EXPECT_EQ(2u, active_browser_list->size()); -+ -+ // Close the 1st browser and clear tabs test data -+ CloseBrowserSynchronously(browser()); -+ EXPECT_EQ(1u, active_browser_list->size()); -+ tabs_with_blocked_resource_.clear(); -+ tabs_with_allowed_resource_.clear(); -+ -+ Browser* browser = active_browser_list->get(0); -+ // Restore tabs from1 st browser instance (already closed) in 2nd instance -+ RestoreTabs(browser); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockMultipleTabsBrowserTest, OpenManyTabs) { -+ ASSERT_EQ(0u, tabs_with_blocked_resource_.size()); -+ ASSERT_EQ(0u, tabs_with_allowed_resource_.size()); -+ // Restore tabs from previous session (previous test) -+ RestoreTabs(browser()); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/test/adblock_non_ascii_browsertest.cc b/chrome/browser/adblock/test/adblock_non_ascii_browsertest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/test/adblock_non_ascii_browsertest.cc -@@ -0,0 +1,78 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "chrome/browser/adblock/subscription_service_factory.h" -+#include "chrome/browser/profiles/profile.h" -+#include "chrome/browser/ui/browser.h" -+#include "chrome/test/base/in_process_browser_test.h" -+#include "chrome/test/base/ui_test_utils.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "content/public/test/browser_test.h" -+#include "content/public/test/browser_test_utils.h" -+#include "net/dns/mock_host_resolver.h" -+#include "net/test/embedded_test_server/embedded_test_server.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+class AdblockNonASCIIBrowserTest : public InProcessBrowserTest { -+ public: -+ void SetUpOnMainThread() override { -+ host_resolver()->AddRule("xn----dtbfdbwspgnceulm.xn--p1ai", "127.0.0.1"); -+ embedded_test_server()->ServeFilesFromSourceDirectory( -+ "chrome/test/data/adblock"); -+ content::SetupCrossSiteRedirector(embedded_test_server()); -+ ASSERT_TRUE(embedded_test_server()->Start()); -+ } -+ -+ void SetFilters(std::vector filters) { -+ auto* adblock_configuration = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetAdblockFilteringConfiguration(); -+ adblock_configuration->RemoveCustomFilter(kAllowlistEverythingFilter); -+ for (auto& filter : filters) { -+ adblock_configuration->AddCustomFilter(filter); -+ } -+ } -+ -+ std::string ExecuteScriptAndExtractString(const std::string& js_code) const { -+ content::WebContents* web_contents = -+ browser()->tab_strip_model()->GetActiveWebContents(); -+ return content::EvalJs(web_contents->GetPrimaryMainFrame(), js_code) -+ .ExtractString(); -+ } -+}; -+ -+IN_PROC_BROWSER_TEST_F(AdblockNonASCIIBrowserTest, BlockNonASCII) { -+ static constexpr char kCheckVisibility[] = -+ R"(getComputedStyle(document.getElementsByClassName("форум")[0]).display)"; -+ -+ ASSERT_TRUE(ui_test_utils::NavigateToURL( -+ browser(), -+ embedded_test_server()->GetURL("форум-трейдеров.рф", "/non-ascii.html"))); -+ EXPECT_EQ("block", ExecuteScriptAndExtractString(kCheckVisibility)); -+ -+ SetFilters({"xn----dtbfdbwspgnceulm.xn--p1ai##.форум"}); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL( -+ browser(), -+ embedded_test_server()->GetURL("форум-трейдеров.рф", "/non-ascii.html"))); -+ -+ EXPECT_EQ("none", ExecuteScriptAndExtractString(kCheckVisibility)); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/test/adblock_popup_browsertest.cc b/chrome/browser/adblock/test/adblock_popup_browsertest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/test/adblock_popup_browsertest.cc -@@ -0,0 +1,463 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "base/run_loop.h" -+#include "chrome/app/chrome_command_ids.h" -+#include "chrome/browser/adblock/resource_classification_runner_factory.h" -+#include "chrome/browser/adblock/subscription_service_factory.h" -+#include "chrome/browser/profiles/profile.h" -+#include "chrome/browser/renderer_context_menu/render_view_context_menu_browsertest_util.h" -+#include "chrome/browser/renderer_context_menu/render_view_context_menu_test_util.h" -+#include "chrome/browser/ui/browser.h" -+#include "chrome/browser/ui/browser_list.h" -+#include "chrome/test/base/in_process_browser_test.h" -+#include "chrome/test/base/ui_test_utils.h" -+#include "components/adblock/content/browser/resource_classification_runner.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "content/public/browser/render_view_host.h" -+#include "content/public/test/browser_test.h" -+#include "content/public/test/browser_test_utils.h" -+#include "gmock/gmock.h" -+#include "net/dns/mock_host_resolver.h" -+#include "net/test/embedded_test_server/embedded_test_server.h" -+#include "url/gurl.h" -+ -+namespace adblock { -+ -+namespace { -+class TabAddedRemovedObserver : public TabStripModelObserver { -+ public: -+ explicit TabAddedRemovedObserver(TabStripModel* tab_strip_model) { -+ tab_strip_model->AddObserver(this); -+ } -+ -+ void OnTabStripModelChanged( -+ TabStripModel* tab_strip_model, -+ const TabStripModelChange& change, -+ const TabStripSelectionChange& selection) override { -+ if (change.type() == TabStripModelChange::kInserted) { -+ inserted_ = true; -+ return; -+ } -+ if (change.type() == TabStripModelChange::kRemoved) { -+ EXPECT_TRUE(inserted_); -+ removed_ = true; -+ loop_.Quit(); -+ return; -+ } -+ NOTREACHED(); -+ } -+ -+ void Wait() { -+ if (inserted_ && removed_) { -+ return; -+ } -+ loop_.Run(); -+ } -+ -+ private: -+ bool inserted_ = false; -+ bool removed_ = false; -+ base::RunLoop loop_; -+}; -+ -+enum class Redirection { ClientSide, ServerSide }; -+ -+} // namespace -+ -+class AdblockPopupBrowserTest -+ : public InProcessBrowserTest, -+ public ResourceClassificationRunner::Observer, -+ public testing::WithParamInterface { -+ public: -+ void SetUpOnMainThread() override { -+ InProcessBrowserTest::SetUpOnMainThread(); -+ host_resolver()->AddRule("*", "127.0.0.1"); -+ embedded_test_server()->RegisterRequestHandler(base::BindRepeating( -+ &AdblockPopupBrowserTest::RequestHandler, base::Unretained(this))); -+ ASSERT_TRUE(embedded_test_server()->Start()); -+ ResourceClassificationRunnerFactory::GetForBrowserContext( -+ browser()->profile()) -+ ->AddObserver(this); -+ } -+ -+ void TearDownOnMainThread() override { -+ VerifyNoUnexpectedNotifications(); -+ ResourceClassificationRunnerFactory::GetForBrowserContext( -+ browser()->profile()) -+ ->RemoveObserver(this); -+ InProcessBrowserTest::TearDownOnMainThread(); -+ } -+ -+ void VerifyNoUnexpectedNotifications() { -+ EXPECT_TRUE(blocked_popups_notifications_expectations_.empty()); -+ EXPECT_TRUE(allowed_popups_notifications_expectations_.empty()); -+ } -+ -+ bool IsServerSideRedirection() { -+ return GetParam() == Redirection::ServerSide; -+ } -+ -+ virtual std::unique_ptr RequestHandler( -+ const net::test_server::HttpRequest& request) { -+ if (base::StartsWith("/main_page.html", request.relative_url)) { -+ static constexpr char kPopupFrameParent[] = -+ R"( -+ -+ -+ -+ -+ -+ -+ )"; -+ std::unique_ptr http_response( -+ new net::test_server::BasicHttpResponse); -+ http_response->set_code(net::HTTP_OK); -+ http_response->set_content(kPopupFrameParent); -+ http_response->set_content_type("text/html"); -+ return std::move(http_response); -+ } -+ if (base::StartsWith("/popup_frame.html", request.relative_url)) { -+ static constexpr char kPopupFrame[] = -+ R"( -+ -+ -+ -+ -+ -+ -+ Trigger link based popup with redirect -+ Trigger link based popup without redirect -+ Trigger script based popup (tab) with redirect -+ Trigger script based popup (window) with redirect -+ -+ )"; -+ std::unique_ptr http_response( -+ new net::test_server::BasicHttpResponse); -+ http_response->set_code(net::HTTP_OK); -+ http_response->set_content(kPopupFrame); -+ http_response->set_content_type("text/html"); -+ return std::move(http_response); -+ } -+ if (base::StartsWith("/popup_no_redirect.html", request.relative_url) || -+ base::StartsWith("/popup_redirected.html", request.relative_url)) { -+ std::unique_ptr http_response( -+ new net::test_server::BasicHttpResponse); -+ http_response->set_code(net::HTTP_OK); -+ http_response->set_content(""); -+ http_response->set_content_type("text/html"); -+ return std::move(http_response); -+ } -+ if (base::StartsWith("/popup_will_redirect.html", request.relative_url)) { -+ static constexpr char kClientSideRedirectingPopup[] = -+ R"( -+ -+ -+ -+ -+ -+ -+ )"; -+ std::unique_ptr http_response( -+ new net::test_server::BasicHttpResponse); -+ if (IsServerSideRedirection()) { -+ http_response->set_code(net::HTTP_MOVED_PERMANENTLY); -+ http_response->AddCustomHeader( -+ "Location", GetPageUrl("/popup_redirected.html").spec()); -+ } else { -+ http_response->set_code(net::HTTP_OK); -+ http_response->set_content(kClientSideRedirectingPopup); -+ http_response->set_content_type("text/html"); -+ } -+ return std::move(http_response); -+ } -+ return nullptr; -+ } -+ -+ void SetFilters(std::vector filters) { -+ auto* adblock_configuration = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetAdblockFilteringConfiguration(); -+ adblock_configuration->RemoveCustomFilter(kAllowlistEverythingFilter); -+ for (auto& filter : filters) { -+ adblock_configuration->AddCustomFilter(filter); -+ } -+ } -+ -+ void TriggerPopup(const std::string& popup_id) { -+ std::string script = base::StringPrintf( -+ R"( -+ let doc = document.querySelector('iframe[id="popup_frame"]').contentWindow.document; -+ let element = doc.getElementById('%s'); -+ element.click(); -+ )", -+ popup_id.c_str()); -+ EXPECT_TRUE(content::ExecJs( -+ browser()->tab_strip_model()->GetActiveWebContents(), script)); -+ } -+ -+ GURL GetPageUrl(const std::string& page) { -+ return embedded_test_server()->GetURL("popup_frame.org", page); -+ } -+ -+ void NavigateToPage() { -+ ASSERT_TRUE( -+ NavigateToURL(browser()->tab_strip_model()->GetActiveWebContents(), -+ GetPageUrl("/main_page.html"))); -+ } -+ -+ void WaitForTabToLoad() { -+ content::WebContents* popup = -+ browser()->tab_strip_model()->GetActiveWebContents(); -+ WaitForLoadStop(popup); -+ } -+ -+ void SetupNotificationsWaiter(base::RunLoop* run_loop) { -+ run_loop_ = run_loop; -+ } -+ -+ // ResourceClassificationRunner::Observer: -+ void OnAdMatched(const GURL& url, -+ FilterMatchResult match_result, -+ const std::vector& parent_frame_urls, -+ ContentType content_type, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name) override {} -+ -+ void OnPageAllowed(const GURL& url, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name) override {} -+ -+ void OnPopupMatched(const GURL& url, -+ FilterMatchResult match_result, -+ const GURL& opener_url, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name) override { -+ auto& list = (match_result == FilterMatchResult::kBlockRule -+ ? blocked_popups_notifications_expectations_ -+ : allowed_popups_notifications_expectations_); -+ auto it = std::find(list.begin(), list.end(), url.ExtractFileName()); -+ ASSERT_FALSE(it == list.end()) -+ << "Path " << url.ExtractFileName() << " not on list"; -+ list.erase(it); -+ if (run_loop_ && allowed_popups_notifications_expectations_.empty() && -+ blocked_popups_notifications_expectations_.empty()) { -+ run_loop_->Quit(); -+ } -+ } -+ -+ std::vector allowed_popups_notifications_expectations_; -+ std::vector blocked_popups_notifications_expectations_; -+ raw_ptr run_loop_ = nullptr; -+}; -+ -+IN_PROC_BROWSER_TEST_F(AdblockPopupBrowserTest, PopupLinkBlocked) { -+ SetFilters({"popup_no_redirect.html^$popup"}); -+ blocked_popups_notifications_expectations_.emplace_back( -+ "popup_no_redirect.html"); -+ NavigateToPage(); -+ TabAddedRemovedObserver observer(browser()->tab_strip_model()); -+ TriggerPopup("popup_link_no_redirect"); -+ observer.Wait(); -+ EXPECT_EQ(1, browser()->tab_strip_model()->count()); -+} -+ -+IN_PROC_BROWSER_TEST_P(AdblockPopupBrowserTest, -+ PopupScriptTabWithRedirectBlocked) { -+ SetFilters({"popup_redirected.html^$popup"}); -+ blocked_popups_notifications_expectations_.emplace_back( -+ "popup_redirected.html"); -+ NavigateToPage(); -+ TabAddedRemovedObserver observer(browser()->tab_strip_model()); -+ TriggerPopup("popup_script_tab"); -+ observer.Wait(); -+ EXPECT_EQ(1, browser()->tab_strip_model()->count()); -+} -+ -+IN_PROC_BROWSER_TEST_P(AdblockPopupBrowserTest, -+ PopupScriptWindowWithRedirectBlocked) { -+ SetFilters({"popup_redirected.html^$popup"}); -+ blocked_popups_notifications_expectations_.emplace_back( -+ "popup_redirected.html"); -+ NavigateToPage(); -+ TriggerPopup("popup_script_window"); -+ // Wait for 2nd browser to get closed (new window popup blocked) -+ EXPECT_EQ(2u, BrowserList::GetInstance()->size()); -+ ui_test_utils::WaitForBrowserToClose(BrowserList::GetInstance()->get(1)); -+ EXPECT_EQ(1u, BrowserList::GetInstance()->size()); -+} -+ -+IN_PROC_BROWSER_TEST_P(AdblockPopupBrowserTest, PopupLinkWithRedirectBlocked) { -+ SetFilters({"popup_redirected.html^$popup"}); -+ blocked_popups_notifications_expectations_.emplace_back( -+ "popup_redirected.html"); -+ NavigateToPage(); -+ TabAddedRemovedObserver observer(browser()->tab_strip_model()); -+ TriggerPopup("popup_link_will_redirect"); -+ observer.Wait(); -+ EXPECT_EQ(1, browser()->tab_strip_model()->count()); -+} -+ -+IN_PROC_BROWSER_TEST_P( -+ AdblockPopupBrowserTest, -+ PopupScriptTabWithRedirectAllowedByIntermediateParentDocument) { -+ SetFilters({"popup_redirected.html^$popup", "@@/popup_frame.html^$document"}); -+ allowed_popups_notifications_expectations_.emplace_back( -+ "popup_redirected.html"); -+ NavigateToPage(); -+ ui_test_utils::TabAddedWaiter waiter(browser()); -+ TriggerPopup("popup_script_tab"); -+ waiter.Wait(); -+ WaitForTabToLoad(); -+ EXPECT_EQ(2, browser()->tab_strip_model()->count()); -+} -+ -+IN_PROC_BROWSER_TEST_P( -+ AdblockPopupBrowserTest, -+ PopupScriptWindowWithRedirectAllowedByIntermediateParentDocument) { -+ SetFilters({"popup_redirected.html^$popup", "@@/popup_frame.html^$document"}); -+ allowed_popups_notifications_expectations_.emplace_back( -+ "popup_redirected.html"); -+ NavigateToPage(); -+ base::RunLoop run_loop; -+ SetupNotificationsWaiter(&run_loop); -+ TriggerPopup("popup_script_window"); -+ run_loop.Run(); -+ EXPECT_EQ(2u, BrowserList::GetInstance()->size()); -+} -+ -+IN_PROC_BROWSER_TEST_P( -+ AdblockPopupBrowserTest, -+ PopupLinkWithRedirectAllowedByIntermediateParentDocument) { -+ SetFilters({"popup_redirected.html^$popup", "@@/popup_frame.html^$document"}); -+ allowed_popups_notifications_expectations_.emplace_back( -+ "popup_redirected.html"); -+ NavigateToPage(); -+ ui_test_utils::TabAddedWaiter waiter(browser()); -+ TriggerPopup("popup_link_will_redirect"); -+ waiter.Wait(); -+ WaitForTabToLoad(); -+ EXPECT_EQ(2, browser()->tab_strip_model()->count()); -+ ; -+} -+ -+IN_PROC_BROWSER_TEST_P(AdblockPopupBrowserTest, -+ PopupScriptTabWithRedirectAllowedByParentDocument) { -+ SetFilters({"popup_redirected.html^$popup", "@@/main_page.html^$document"}); -+ allowed_popups_notifications_expectations_.emplace_back( -+ "popup_redirected.html"); -+ NavigateToPage(); -+ ui_test_utils::TabAddedWaiter waiter(browser()); -+ TriggerPopup("popup_script_tab"); -+ waiter.Wait(); -+ WaitForTabToLoad(); -+ EXPECT_EQ(2, browser()->tab_strip_model()->count()); -+} -+ -+IN_PROC_BROWSER_TEST_P(AdblockPopupBrowserTest, -+ PopupScriptWindowWithRedirectAllowedByParentDocument) { -+ SetFilters({"popup_redirected.html^$popup", "@@/main_page.html^$document"}); -+ allowed_popups_notifications_expectations_.emplace_back( -+ "popup_redirected.html"); -+ NavigateToPage(); -+ base::RunLoop run_loop; -+ SetupNotificationsWaiter(&run_loop); -+ TriggerPopup("popup_script_window"); -+ run_loop.Run(); -+ EXPECT_EQ(2u, BrowserList::GetInstance()->size()); -+} -+ -+IN_PROC_BROWSER_TEST_P(AdblockPopupBrowserTest, -+ PopupLinkWithRedirectAllowedByParentDocument) { -+ SetFilters({"popup_redirected.html^$popup", "@@/main_page.html^$document"}); -+ allowed_popups_notifications_expectations_.emplace_back( -+ "popup_redirected.html"); -+ NavigateToPage(); -+ ui_test_utils::TabAddedWaiter waiter(browser()); -+ TriggerPopup("popup_link_will_redirect"); -+ waiter.Wait(); -+ WaitForTabToLoad(); -+ EXPECT_EQ(2, browser()->tab_strip_model()->count()); -+} -+ -+// Make sure that we correctly recognize and apply blocking of -+// redirected popups only for real popups. -+IN_PROC_BROWSER_TEST_P(AdblockPopupBrowserTest, -+ LinkOpenedByContextMenuInNewTabNotBlocked) { -+ SetFilters({"popup_redirected.html^$popup"}); -+ ContextMenuNotificationObserver menu_observer( -+ IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); -+ ui_test_utils::AllBrowserTabAddedWaiter add_tab; -+ -+ std::string script = base::StringPrintf( -+ "data:text/html,link", -+ GetPageUrl("/popup_will_redirect.html").spec().c_str()); -+ // Go to a page with a link -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GURL(script))); -+ -+ // Opens a link in a new tab via a "real" context menu. -+ blink::WebMouseEvent mouse_event( -+ blink::WebInputEvent::Type::kMouseDown, -+ blink::WebInputEvent::kNoModifiers, -+ blink::WebInputEvent::GetStaticTimeStampForTests()); -+ mouse_event.button = blink::WebMouseEvent::Button::kRight; -+ mouse_event.SetPositionInWidget(15, 15); -+ content::WebContents* tab = -+ browser()->tab_strip_model()->GetActiveWebContents(); -+ gfx::Rect offset = tab->GetContainerBounds(); -+ mouse_event.SetPositionInScreen(15 + offset.x(), 15 + offset.y()); -+ mouse_event.click_count = 1; -+ tab->GetPrimaryMainFrame() -+ ->GetRenderViewHost() -+ ->GetWidget() -+ ->ForwardMouseEvent(mouse_event); -+ mouse_event.SetType(blink::WebInputEvent::Type::kMouseUp); -+ tab->GetPrimaryMainFrame() -+ ->GetRenderViewHost() -+ ->GetWidget() -+ ->ForwardMouseEvent(mouse_event); -+ -+ // The menu_observer will select "Open in new tab", wait for the new tab to -+ // be added. -+ tab = add_tab.Wait(); -+ EXPECT_TRUE(content::WaitForLoadStop(tab)); -+ -+ // Verify that it's the correct tab. -+ EXPECT_EQ(GetPageUrl("/popup_redirected.html"), tab->GetLastCommittedURL()); -+} -+ -+INSTANTIATE_TEST_SUITE_P(All, -+ AdblockPopupBrowserTest, -+ testing::Values(Redirection::ClientSide, -+ Redirection::ServerSide)); -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/test/adblock_snippets_browsertest.cc b/chrome/browser/adblock/test/adblock_snippets_browsertest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/test/adblock_snippets_browsertest.cc -@@ -0,0 +1,80 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include -+ -+#include "chrome/browser/adblock/subscription_service_factory.h" -+#include "chrome/browser/profiles/profile.h" -+#include "chrome/browser/ui/browser.h" -+#include "chrome/test/base/in_process_browser_test.h" -+#include "chrome/test/base/ui_test_utils.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "content/public/test/browser_test.h" -+#include "content/public/test/browser_test_utils.h" -+#include "net/dns/mock_host_resolver.h" -+#include "net/test/embedded_test_server/embedded_test_server.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+class AdblockSnippetsBrowserTest : public InProcessBrowserTest { -+ public: -+ void SetUpOnMainThread() override { -+ InProcessBrowserTest::SetUpOnMainThread(); -+ host_resolver()->AddRule("*", "127.0.0.1"); -+ embedded_test_server()->ServeFilesFromSourceDirectory( -+ "chrome/test/data/adblock"); -+ ASSERT_TRUE(embedded_test_server()->Start()); -+ } -+ -+ void SetFilters(std::vector filters) { -+ auto* adblock_configuration = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetAdblockFilteringConfiguration(); -+ adblock_configuration->RemoveCustomFilter(kAllowlistEverythingFilter); -+ for (auto& filter : filters) { -+ adblock_configuration->AddCustomFilter(filter); -+ } -+ } -+ -+ GURL GetUrl(const std::string& path) { -+ return embedded_test_server()->GetURL("example.org", path); -+ } -+ -+ void VerifyTargetVisibility(bool is_hidden, const std::string& id) { -+ std::string is_invisible_js = -+ "getComputedStyle(document.getElementById('{{node id}}')).display == " -+ "'none'"; -+ base::ReplaceSubstringsAfterOffset(&is_invisible_js, 0, "{{node id}}", id); -+ EXPECT_EQ( -+ is_hidden, -+ content::EvalJs(browser()->tab_strip_model()->GetActiveWebContents(), -+ is_invisible_js)); -+ } -+}; -+ -+IN_PROC_BROWSER_TEST_F(AdblockSnippetsBrowserTest, VerifyXpath3) { -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl("/xpath3.html"))); -+ VerifyTargetVisibility(false, "xpath3-target"); -+ SetFilters( -+ {"example.org#$#hide-if-matches-xpath3 //*[@id=\"xpath3-target\"]"}); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl("/xpath3.html"))); -+ VerifyTargetVisibility(true, "xpath3-target"); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/test/adblock_subscription_service_browsertest.cc b/chrome/browser/adblock/test/adblock_subscription_service_browsertest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/test/adblock_subscription_service_browsertest.cc -@@ -0,0 +1,201 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "base/files/file_util.h" -+#include "base/files/scoped_temp_dir.h" -+#include "base/ranges/algorithm.h" -+#include "base/run_loop.h" -+#include "base/strings/string_split.h" -+#include "base/test/bind.h" -+#include "base/threading/thread_restrictions.h" -+#include "base/time/time.h" -+#include "chrome/browser/adblock/subscription_persistent_metadata_factory.h" -+#include "chrome/browser/adblock/subscription_service_factory.h" -+#include "chrome/browser/profiles/profile.h" -+#include "chrome/browser/ui/browser.h" -+#include "chrome/test/base/in_process_browser_test.h" -+#include "chrome/test/base/ui_test_utils.h" -+#include "components/adblock/core/subscription/subscription_config.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/version_info/version_info.h" -+#include "content/public/test/browser_test.h" -+#include "content/public/test/browser_test_utils.h" -+#include "net/http/http_request_headers.h" -+#include "net/test/embedded_test_server/embedded_test_server.h" -+ -+namespace adblock { -+ -+class AdblockSubscriptionServiceBrowserTest -+ : public InProcessBrowserTest, -+ public SubscriptionService::SubscriptionObserver { -+ public: -+ AdblockSubscriptionServiceBrowserTest() { -+ SubscriptionServiceFactory::SetUpdateCheckAndDelayIntervalsForTesting( -+ base::Seconds(1), base::Seconds(1)); -+ } -+ void SetUpOnMainThread() override { -+ InProcessBrowserTest::SetUpOnMainThread(); -+ https_server_ = std::make_unique( -+ net::EmbeddedTestServer::TYPE_HTTPS); -+ https_server_->SetSSLConfig(net::EmbeddedTestServer::CERT_OK); -+ } -+ -+ bool RequestHeadersContainAcceptLanguage( -+ const net::test_server::HttpRequest& request) { -+ const auto accept_language_it = -+ request.headers.find(net::HttpRequestHeaders::kAcceptLanguage); -+ return accept_language_it != request.headers.end() && -+ !accept_language_it->second.empty(); -+ } -+ -+ bool RequestHeadersContainAcceptEncodingBrotli( -+ const net::test_server::HttpRequest& request) { -+ const auto accept_encoding_it = -+ request.headers.find(net::HttpRequestHeaders::kAcceptEncoding); -+ if (accept_encoding_it == request.headers.end()) { -+ return false; -+ } -+ const auto split_encodings = -+ base::SplitString(accept_encoding_it->second, ",", -+ base::WhitespaceHandling::TRIM_WHITESPACE, -+ base::SplitResult::SPLIT_WANT_NONEMPTY); -+ return base::ranges::find(split_encodings, "br") != split_encodings.end(); -+ } -+ -+ std::unique_ptr -+ HandleSubscriptionUpdateRequestWithUrlCheck( -+ std::string expected_url_part, -+ const net::test_server::HttpRequest& request) { -+ static const char kSubscriptionHeader[] = -+ "[Adblock Plus 2.0]\n" -+ "! Checksum: X5A8vtJDBW2a9EgS9glqbg\n" -+ "! Version: 202202061935\n" -+ "! Last modified: 06 Feb 2022 19:35 UTC\n" -+ "! Expires: 1 days (update frequency)\n\n"; -+ if (base::StartsWith(request.relative_url, kSubscription, -+ base::CompareCase::SENSITIVE) && -+ !request_already_handled_) { -+ request_already_handled_ = true; -+ EXPECT_TRUE(RequestHeadersContainAcceptLanguage(request)); -+ EXPECT_TRUE(RequestHeadersContainAcceptEncodingBrotli(request)); -+ std::string os; -+ base::ReplaceChars(version_info::GetOSType(), base::kWhitespaceASCII, "", -+ &os); -+ EXPECT_TRUE(request.relative_url.find(expected_url_part) != -+ std::string::npos); -+ EXPECT_TRUE(request.relative_url.find("addonName=eyeo-chromium-sdk") != -+ std::string::npos); -+ EXPECT_TRUE(request.relative_url.find("addonVersion=1.0") != -+ std::string::npos); -+ EXPECT_TRUE(request.relative_url.find("platformVersion=1.0") != -+ std::string::npos); -+ EXPECT_TRUE(request.relative_url.find("platform=" + os) != -+ std::string::npos); -+ auto http_response = -+ std::make_unique(); -+ http_response->set_code(net::HTTP_OK); -+ http_response->set_content(kSubscriptionHeader); -+ http_response->set_content_type("text/plain"); -+ return std::move(http_response); -+ } -+ -+ // Unhandled requests result in the Embedded test server sending a 404. -+ return nullptr; -+ } -+ -+ void ExpectFilterListRequestMadeWithLastVersion(std::string last_version) { -+ https_server_->RegisterRequestHandler( -+ base::BindRepeating(&AdblockSubscriptionServiceBrowserTest:: -+ HandleSubscriptionUpdateRequestWithUrlCheck, -+ base::Unretained(this), last_version)); -+ ASSERT_TRUE(https_server_->Start(kPort)); -+ } -+ -+ // adblock::SubscriptionService::SubscriptionObserver -+ void OnSubscriptionInstalled(const GURL& url) override { -+ if (base::StartsWith(url.spec(), -+ https_server_->GetURL(kSubscription).spec())) { -+ // In order to ensure next run requests an update, mark the subscription -+ // as almost expired. -+ SubscriptionPersistentMetadataFactory::GetForBrowserContext( -+ browser()->profile()) -+ ->SetExpirationInterval(url, base::Milliseconds(1)); -+ CloseBrowserAsynchronously(browser()); -+ } -+ } -+ -+ std::unique_ptr https_server_; -+ bool request_already_handled_ = false; -+ static const std::string kSubscription; -+ // Port is hardcoded so the server url is the same across tests -+ static const int kPort = 65432; -+}; -+ -+const std::string AdblockSubscriptionServiceBrowserTest::kSubscription = -+ "/subscription.txt"; -+ -+IN_PROC_BROWSER_TEST_F(AdblockSubscriptionServiceBrowserTest, PRE_LastVersion) { -+ ExpectFilterListRequestMadeWithLastVersion("&lastVersion=0&"); -+ // Downloading a filter list and setting its expiry time to almost zero, so -+ // the next run will have to update it ASAP. -+ -+ auto* subscription_service = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()); -+ subscription_service->AddObserver(this); -+ // Using a custom subscription URL here because before test sets -+ // up the server then SubscriptionService already started fetching default -+ // subscriptions. -+ subscription_service->GetAdblockFilteringConfiguration()->AddFilterList( -+ https_server_->GetURL(kSubscription)); -+ // Wait until subscription is downloaded and stored. -+ RunUntilBrowserProcessQuits(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockSubscriptionServiceBrowserTest, LastVersion) { -+ ExpectFilterListRequestMadeWithLastVersion("&lastVersion=202202061935&"); -+ auto* subscription_service = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()); -+ subscription_service->AddObserver(this); -+ // Wait for subscription update to trigger a network request. -+ RunUntilBrowserProcessQuits(); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockSubscriptionServiceBrowserTest, -+ FilterFileDeletedAfterConversion) { -+ base::ScopedAllowBlockingForTesting allow_blocking; -+ ConversionExecutors* conversion_executors = -+ SubscriptionServiceFactory::GetInstance(); -+ DCHECK(conversion_executors); -+ base::ScopedTempDir temp_dir; -+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); -+ const auto filter_list_path = temp_dir.GetPath().AppendASCII("easylist.txt"); -+ std::vector filter_list_contents = { -+ "[\"Adblock Plus 2.0\"]\n", "invalid file"}; -+ for (const auto& file_content : filter_list_contents) { -+ base::WriteFile(filter_list_path, file_content); -+ ASSERT_TRUE(base::PathExists(filter_list_path)); -+ base::RunLoop run_loop; -+ conversion_executors->ConvertFilterListFile( -+ DefaultSubscriptionUrl(), filter_list_path, -+ base::BindLambdaForTesting( -+ [&run_loop](ConversionResult result) { run_loop.Quit(); })); -+ run_loop.Run(); -+ ASSERT_FALSE(base::PathExists(filter_list_path)); -+ } -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/test/adblock_telemetry_service_browsertest.cc b/chrome/browser/adblock/test/adblock_telemetry_service_browsertest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/test/adblock_telemetry_service_browsertest.cc -@@ -0,0 +1,256 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include "base/json/json_reader.h" -+#include "chrome/browser/adblock/adblock_telemetry_service_factory.h" -+#include "chrome/browser/ui/browser.h" -+#include "chrome/test/base/in_process_browser_test.h" -+#include "components/adblock/core/activeping_telemetry_topic_provider.h" -+#include "content/public/browser/browser_task_traits.h" -+#include "content/public/test/browser_test.h" -+#include "content/public/test/browser_test_utils.h" -+#include "net/dns/mock_host_resolver.h" -+#include "net/test/embedded_test_server/embedded_test_server.h" -+ -+namespace adblock { -+ -+class AdblockTelemetryServiceBrowserTestBase : public InProcessBrowserTest { -+ public: -+ // We need to set server and request handler asap -+ void SetUpInProcessBrowserTestFixture() override { -+ InProcessBrowserTest::SetUpInProcessBrowserTestFixture(); -+ host_resolver()->AddRule( -+ ActivepingTelemetryTopicProvider::DefaultBaseUrl().host(), "127.0.0.1"); -+ http_server_.RegisterRequestHandler(base::BindRepeating( -+ &AdblockTelemetryServiceBrowserTestBase::RequestHandler, -+ base::Unretained(this))); -+ ASSERT_TRUE(http_server_.Start()); -+ ActivepingTelemetryTopicProvider::SetHttpPortForTesting( -+ http_server_.port()); -+ auto testing_interval = base::Seconds(2); -+ ActivepingTelemetryTopicProvider::SetIntervalsForTesting(testing_interval); -+ AdblockTelemetryServiceFactory::GetInstance() -+ ->SetCheckAndDelayIntervalsForTesting(testing_interval, -+ testing_interval); -+ } -+ -+ base::Value* GetFirstPing(absl::optional& parsed) { -+ return GetPayload(parsed)->Find("first_ping"); -+ } -+ -+ base::Value* GetLastPing(absl::optional& parsed) { -+ return GetPayload(parsed)->Find("last_ping"); -+ } -+ -+ base::Value* GetLastPingTag(absl::optional& parsed) { -+ return GetPayload(parsed)->Find("last_ping_tag"); -+ } -+ -+ base::Value* GetPreviousLastPing(absl::optional& parsed) { -+ return GetPayload(parsed)->Find("previous_last_ping"); -+ } -+ -+ void CloseBrowserFromAnyThread() { -+ content::GetUIThreadTaskRunner({base::TaskPriority::USER_BLOCKING}) -+ ->PostTask(FROM_HERE, -+ base::BindOnce(&AdblockTelemetryServiceBrowserTestBase:: -+ CloseBrowserAsynchronously, -+ base::Unretained(this), browser())); -+ } -+ -+ std::unique_ptr CreateResponse( -+ const std::string& token) { -+ auto http_response = -+ std::make_unique(); -+ http_response->set_code(net::HTTP_OK); -+ http_response->set_content("{\"token\": \"" + token + "\"}"); -+ http_response->set_content_type("text/plain"); -+ return std::move(http_response); -+ } -+ -+ virtual std::unique_ptr RequestHandler( -+ const net::test_server::HttpRequest& request) = 0; -+ -+ private: -+ base::Value::Dict* GetPayload(absl::optional& parsed) { -+ EXPECT_TRUE(parsed && parsed->is_dict()); -+ base::Value::Dict* parsed_dict = parsed->GetIfDict(); -+ EXPECT_TRUE(parsed_dict); -+ base::Value::Dict* payload = parsed_dict->FindDict("payload"); -+ EXPECT_TRUE(payload); -+ return payload; -+ } -+ -+ net::EmbeddedTestServer http_server_; -+}; -+ -+// Test three initial pings each after startup and each fails for the 1st time -+class AdblockTelemetryServiceFirstPingAfterRestartWithRetryBrowserTest -+ : public AdblockTelemetryServiceBrowserTestBase { -+ public: -+ std::unique_ptr RequestHandler( -+ const net::test_server::HttpRequest& request) override { -+ EXPECT_TRUE(base::StartsWith(request.relative_url, -+ "/topic/eyeochromium_activeping/version/1")); -+ EXPECT_TRUE(request.has_content); -+ absl::optional parsed = -+ base::JSONReader::Read(request.content); -+ base::Value* first_ping = GetFirstPing(parsed); -+ base::Value* last_ping = GetLastPing(parsed); -+ base::Value* previous_last_ping = GetPreviousLastPing(parsed); -+ -+ if (expected_first_ping_.empty()) { -+ EXPECT_FALSE(first_ping); -+ } else { -+ EXPECT_EQ(expected_first_ping_, *first_ping); -+ } -+ -+ if (expected_last_ping_.empty()) { -+ EXPECT_FALSE(last_ping); -+ } else { -+ EXPECT_EQ(expected_last_ping_, *last_ping); -+ } -+ -+ if (expected_previous_last_ping_.empty()) { -+ EXPECT_FALSE(previous_last_ping); -+ } else { -+ EXPECT_EQ(expected_previous_last_ping_, *previous_last_ping); -+ } -+ -+ if (!attempt_++) { -+ // Force retry by 404 response but 1st save last_ping_tag if any -+ base::Value* last_ping_tag = GetLastPingTag(parsed); -+ if (last_ping_tag) { -+ previous_last_ping_tag_ = last_ping_tag->GetString(); -+ } -+ return nullptr; -+ } -+ -+ // Verifies that retried ping has the same last_ping_tag -+ if (!previous_last_ping_tag_.empty()) { -+ base::Value* last_ping_tag = GetLastPingTag(parsed); -+ EXPECT_EQ(previous_last_ping_tag_, *last_ping_tag); -+ } -+ -+ // If we get expected telemetry ping with retry we simply finish the test -+ // by closing the browser, otherwise test will fail with a timeout. -+ CloseBrowserFromAnyThread(); -+ -+ // This will be still processed before CloseBrowserFromAnyThread() applies -+ return CreateResponse(server_response_); -+ } -+ -+ void TearDownInProcessBrowserTestFixture() override { -+ // Make sure we called RequestHandler exactly twice: 1st ping failed, 2nd -+ // was successful -+ EXPECT_EQ(2, attempt_); -+ } -+ -+ protected: -+ std::string server_response_; -+ std::string expected_first_ping_; -+ std::string expected_last_ping_; -+ std::string expected_previous_last_ping_; -+ -+ private: -+ int attempt_ = 0; -+ std::string previous_last_ping_tag_ = ""; -+}; -+ -+IN_PROC_BROWSER_TEST_F( -+ AdblockTelemetryServiceFirstPingAfterRestartWithRetryBrowserTest, -+ PRE_PRE_TestPing) { -+ // Sets the ping to be returned by the server and checked in the next test -+ server_response_ = "11111"; -+ RunUntilBrowserProcessQuits(); -+} -+ -+IN_PROC_BROWSER_TEST_F( -+ AdblockTelemetryServiceFirstPingAfterRestartWithRetryBrowserTest, -+ PRE_TestPing) { -+ // Sets the ping to be returned by the server and checked in the next test -+ server_response_ = "22222"; -+ expected_first_ping_ = expected_last_ping_ = "11111"; -+ RunUntilBrowserProcessQuits(); -+} -+ -+IN_PROC_BROWSER_TEST_F( -+ AdblockTelemetryServiceFirstPingAfterRestartWithRetryBrowserTest, -+ TestPing) { -+ expected_first_ping_ = "11111"; -+ expected_last_ping_ = "22222"; -+ expected_previous_last_ping_ = "11111"; -+ RunUntilBrowserProcessQuits(); -+} -+ -+// Test three inital pings -+class AdblockTelemetryServiceSubsequentPingsBrowserTest -+ : public AdblockTelemetryServiceBrowserTestBase { -+ public: -+ std::unique_ptr RequestHandler( -+ const net::test_server::HttpRequest& request) override { -+ EXPECT_TRUE(base::StartsWith(request.relative_url, -+ "/topic/eyeochromium_activeping/version/1")); -+ EXPECT_TRUE(request.has_content); -+ absl::optional parsed = -+ base::JSONReader::Read(request.content); -+ base::Value* first_ping = GetFirstPing(parsed); -+ base::Value* last_ping = GetLastPing(parsed); -+ base::Value* previous_last_ping = GetPreviousLastPing(parsed); -+ -+ if (count_ == 1) { -+ // No ping payload in the very 1st ping -+ EXPECT_FALSE(first_ping); -+ EXPECT_FALSE(last_ping); -+ } else if (count_ == 2) { -+ // For 2nd ping `first_ping` == `last_ping` -+ EXPECT_EQ(first_ping_, *first_ping); -+ EXPECT_EQ(first_ping_, *last_ping); -+ } else if (count_ == 3) { -+ // From 3rd ping onward `first_ping` != `last_ping` and we also get -+ // `previous_last_ping` -+ EXPECT_EQ(first_ping_, *first_ping); -+ EXPECT_EQ(second_ping_, *last_ping); -+ EXPECT_EQ(first_ping_, *previous_last_ping); -+ } -+ -+ // If we get three expected telemetry pings we simply finish the test by -+ // closing the browser, otherwise test will fail with a timeout. -+ if (count_ == 3) { -+ CloseBrowserFromAnyThread(); -+ return nullptr; -+ } -+ return CreateResponse(count_++ == 1 ? first_ping_ : second_ping_); -+ } -+ -+ void TearDownInProcessBrowserTestFixture() override { -+ // Make sure we called RequestHandler exactly three times -+ EXPECT_EQ(3, count_); -+ } -+ -+ private: -+ const std::string first_ping_ = "11111"; -+ const std::string second_ping_ = "22222"; -+ int count_ = 1; -+}; -+ -+IN_PROC_BROWSER_TEST_F(AdblockTelemetryServiceSubsequentPingsBrowserTest, -+ TestPing) { -+ RunUntilBrowserProcessQuits(); -+} -+ -+} // namespace adblock -diff --git a/chrome/browser/adblock/test/adblock_web_bundle_browsertest.cc b/chrome/browser/adblock/test/adblock_web_bundle_browsertest.cc -new file mode 100644 ---- /dev/null -+++ b/chrome/browser/adblock/test/adblock_web_bundle_browsertest.cc -@@ -0,0 +1,427 @@ -+/* -+ * This file is part of eyeo Chromium SDK, -+ * Copyright (C) 2006-present eyeo GmbH -+ * -+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 3 as -+ * published by the Free Software Foundation. -+ * -+ * eyeo Chromium SDK is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with eyeo Chromium SDK. If not, see . -+ */ -+ -+#include -+#include -+#include "base/files/file_path.h" -+#include "base/files/file_util.h" -+#include "base/files/scoped_temp_dir.h" -+#include "base/functional/bind.h" -+#include "base/path_service.h" -+#include "base/strings/string_util.h" -+#include "chrome/browser/adblock/resource_classification_runner_factory.h" -+#include "chrome/browser/adblock/subscription_service_factory.h" -+#include "chrome/browser/profiles/profile.h" -+#include "chrome/browser/ui/browser.h" -+#include "chrome/test/base/in_process_browser_test.h" -+#include "chrome/test/base/ui_test_utils.h" -+#include "components/adblock/content/browser/resource_classification_runner.h" -+#include "components/adblock/core/common/adblock_constants.h" -+#include "components/adblock/core/subscription/subscription_service.h" -+#include "components/web_package/web_bundle_builder.h" -+#include "content/public/test/browser_test.h" -+#include "content/public/test/browser_test_utils.h" -+#include "net/dns/mock_host_resolver.h" -+#include "net/test/embedded_test_server/embedded_test_server.h" -+#include "net/test/embedded_test_server/request_handler_util.h" -+#include "testing/gtest/include/gtest/gtest.h" -+ -+namespace adblock { -+ -+class AdblockWebBundleBrowserTest -+ : public InProcessBrowserTest, -+ public ResourceClassificationRunner::Observer { -+ public: -+ void SetUpOnMainThread() override { -+ InProcessBrowserTest::SetUpOnMainThread(); -+ host_resolver()->AddRule("*", "127.0.0.1"); -+ embedded_test_server()->RegisterDefaultHandler( -+ base::BindRepeating(&AdblockWebBundleBrowserTest::HandleFileRequest, -+ base::Unretained(this))); -+ ASSERT_TRUE(embedded_test_server()->Start()); -+ PrepareTempDirWithContent(); -+ ResourceClassificationRunnerFactory::GetForBrowserContext( -+ browser()->profile()) -+ ->AddObserver(this); -+ } -+ -+ void TearDownOnMainThread() override { -+ ResourceClassificationRunnerFactory::GetForBrowserContext( -+ browser()->profile()) -+ ->RemoveObserver(this); -+ InProcessBrowserTest::TearDownOnMainThread(); -+ } -+ -+ void PrepareTempDirWithContent() { -+ ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); -+ CreateIndexFile(); -+ CreateByResourceWebBundle(); -+ CreateByBundleFileWebBundle(); -+ CreateByScopeFileWebBundle(); -+ } -+ -+ std::string GetFileContentFromTestDir( -+ base::FilePath::StringType relative_path) { -+ base::FilePath root; -+ CHECK(base::PathService::Get(base::DIR_SOURCE_ROOT, &root)); -+ root = root.AppendASCII("chrome/test/data/adblock/wbn"); -+ std::string content; -+ CHECK(base::ReadFileToString(root.Append(relative_path), &content)); -+ return content; -+ } -+ -+ // In order for an html file to use absolute URLs in 'src' attributes to -+ // resources hosted by the embedded_test_server(), we need to replace -+ // {{{baseUrl}}} with the server's URL. It changes for every run. -+ std::string GetHtmlContentWithReplacements( -+ base::FilePath::StringType relative_path) { -+ std::string content = GetFileContentFromTestDir(relative_path); -+ base::ReplaceSubstringsAfterOffset( -+ &content, 0, "{{{baseUrl}}}", -+ embedded_test_server()->GetURL("example.org", "/").spec()); -+ return content; -+ } -+ -+ void CreateByResourceWebBundle() { -+ web_package::WebBundleBuilder builder; -+ builder.AddExchange("by_resource/blue_subresource_loading.css", -+ {{":status", "200"}, {"content-type", "text/css"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_resource/blue_subresource_loading.css"))); -+ builder.AddExchange("by_resource/blue_subresource_loading.png", -+ {{":status", "200"}, {"content-type", "image/png"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_resource/blue_subresource_loading.png"))); -+ builder.AddExchange("by_resource/red_subresource_loading.css", -+ {{":status", "200"}, {"content-type", "text/css"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_resource/red_subresource_loading.css"))); -+ builder.AddExchange("by_resource/red_subresource_loading.png", -+ {{":status", "200"}, {"content-type", "image/png"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_resource/red_subresource_loading.png"))); -+ builder.AddExchange( -+ "by_resource/xhr_result_1_subresource_loading.json", -+ {{":status", "200"}, {"content-type", "application/json"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_resource/xhr_result_1_subresource_loading.json"))); -+ builder.AddExchange( -+ "by_resource/fetch_result_1_subresource_loading.json", -+ {{":status", "200"}, {"content-type", "application/json"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_resource/fetch_result_1_subresource_loading.json"))); -+ builder.AddPrimaryURL(embedded_test_server()->GetURL("example.org", "/")); -+ const auto binary_data = builder.CreateBundle(); -+ ASSERT_TRUE(base::WriteFile( -+ temp_dir_.GetPath().AppendASCII("by_resource.wbn"), binary_data)); -+ } -+ -+ void CreateByBundleFileWebBundle() { -+ web_package::WebBundleBuilder builder; -+ builder.AddExchange("by_bundle_file/green_subresource_loading.css", -+ {{":status", "200"}, {"content-type", "text/css"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_bundle_file/green_subresource_loading.css"))); -+ builder.AddExchange("by_bundle_file/green_subresource_loading.png", -+ {{":status", "200"}, {"content-type", "image/png"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_bundle_file/green_subresource_loading.png"))); -+ builder.AddExchange("by_bundle_file/purple_subresource_loading.css", -+ {{":status", "200"}, {"content-type", "text/css"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_bundle_file/purple_subresource_loading.css"))); -+ builder.AddExchange("by_bundle_file/purple_subresource_loading.png", -+ {{":status", "200"}, {"content-type", "image/png"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_bundle_file/purple_subresource_loading.png"))); -+ builder.AddExchange( -+ "by_bundle_file/xhr_result_2_subresource_loading.json", -+ {{":status", "200"}, {"content-type", "application/json"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_bundle_file/xhr_result_2_subresource_loading.json"))); -+ builder.AddExchange( -+ "by_bundle_file/fetch_result_2_subresource_loading.json", -+ {{":status", "200"}, {"content-type", "application/json"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_bundle_file/fetch_result_2_subresource_loading.json"))); -+ builder.AddPrimaryURL(embedded_test_server()->GetURL("example.org", "/")); -+ const auto binary_data = builder.CreateBundle(); -+ ASSERT_TRUE(base::WriteFile( -+ temp_dir_.GetPath().AppendASCII("by_bundle_file.wbn"), binary_data)); -+ } -+ -+ void CreateByScopeFileWebBundle() { -+ web_package::WebBundleBuilder builder; -+ builder.AddExchange("by_scope/orange_subresource_loading.css", -+ {{":status", "200"}, {"content-type", "text/css"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_scope/orange_subresource_loading.css"))); -+ builder.AddExchange("by_scope/orange_subresource_loading.png", -+ {{":status", "200"}, {"content-type", "image/png"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_scope/orange_subresource_loading.png"))); -+ builder.AddExchange("by_scope/pink_subresource_loading.css", -+ {{":status", "200"}, {"content-type", "text/css"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_scope/pink_subresource_loading.css"))); -+ builder.AddExchange("by_scope/pink_subresource_loading.png", -+ {{":status", "200"}, {"content-type", "image/png"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_scope/pink_subresource_loading.png"))); -+ builder.AddExchange( -+ "by_scope/xhr_result_3_subresource_loading.json", -+ {{":status", "200"}, {"content-type", "application/json"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_scope/xhr_result_3_subresource_loading.json"))); -+ builder.AddExchange( -+ "by_scope/fetch_result_3_subresource_loading.json", -+ {{":status", "200"}, {"content-type", "application/json"}}, -+ GetFileContentFromTestDir(FILE_PATH_LITERAL( -+ "by_scope/fetch_result_3_subresource_loading.json"))); -+ builder.AddPrimaryURL(embedded_test_server()->GetURL("example.org", "/")); -+ const auto binary_data = builder.CreateBundle(); -+ ASSERT_TRUE(base::WriteFile(temp_dir_.GetPath().AppendASCII("by_scope.wbn"), -+ binary_data)); -+ } -+ -+ void CreateIndexFile() { -+ const auto html = GetHtmlContentWithReplacements( -+ FILE_PATH_LITERAL("index.html.mustache")); -+ ASSERT_TRUE( -+ base::WriteFile(temp_dir_.GetPath().AppendASCII("index.html"), html)); -+ } -+ -+ std::unique_ptr HandleFileRequest( -+ const net::test_server::HttpRequest& request) { -+ auto response = -+ net::test_server::HandleFileRequest(temp_dir_.GetPath(), request); -+ if (response) { -+ auto* basic = -+ static_cast(response.get()); -+ if (temp_dir_.GetPath() -+ .AppendASCII(request.GetURL().path().substr(1)) -+ .MatchesExtension(FILE_PATH_LITERAL(".wbn"))) { -+ basic->set_content_type("application/webbundle"); -+ } -+ basic->AddCustomHeader("X-Content-Type-Options", "nosniff"); -+ basic->AddCustomHeader("Access-Control-Allow-Origin", "*"); -+ } -+ return response; -+ } -+ -+ GURL GetUrl() { -+ return embedded_test_server()->GetURL("example.org", "/index.html"); -+ } -+ -+ void SetFilters(std::vector filters) { -+ auto* adblock_configuration = -+ SubscriptionServiceFactory::GetForBrowserContext(browser()->profile()) -+ ->GetAdblockFilteringConfiguration(); -+ adblock_configuration->RemoveCustomFilter(kAllowlistEverythingFilter); -+ for (auto& filter : filters) { -+ adblock_configuration->AddCustomFilter(filter); -+ } -+ } -+ -+ bool EvaluateJs(std::string value) { -+ return content::EvalJs(browser() -+ ->tab_strip_model() -+ ->GetActiveWebContents() -+ ->GetPrimaryMainFrame(), -+ value) -+ .ExtractBool(); -+ } -+ -+ bool IsImageLoaded(std::string selector) { -+ return EvaluateJs( -+ "(function(){ node = document.querySelector('" + selector + -+ "'); return node.complete && node.naturalHeight !== 0; })()"); -+ } -+ -+ bool IsCssBlocked(std::string selector) { -+ // On the test page, a box with this |id| is grey if element-specific CSS -+ // was blocked. Grey is the default color for divs, and gets overridden -+ // to element-specific colors by blockable CSS files. -+ return EvaluateJs( -+ "(function(){ return " -+ "window.getComputedStyle(document.querySelector('" + -+ selector + "')).backgroundColor == 'rgb(128, 128, 128)'; })()"); -+ } -+ -+ // Waits until the textContent of the selected item stops being "Pending" and -+ // returns whatever it's final value is. -+ // This asynchronous wait is because scripts that change the textContent may -+ // execute with a delay. -+ std::string GetSelectorTextContent(std::string selector) { -+ return content::EvalJs(browser() -+ ->tab_strip_model() -+ ->GetActiveWebContents() -+ ->GetPrimaryMainFrame(), -+ R"( -+ (async function (selector) { -+ return new Promise(resolve => { -+ if (!document.querySelector(selector).textContent.includes('Pending')) { -+ return resolve(document.querySelector(selector).textContent); -+ } -+ -+ const observer = new MutationObserver(mutations => { -+ if (!document.querySelector(selector).textContent.includes('Pending')) { -+ resolve(document.querySelector(selector).textContent); -+ observer.disconnect(); -+ } -+ }); -+ -+ observer.observe(document.body, { -+ childList: true, -+ subtree: true -+ }); -+ }); -+})(' )" + selector + "');") -+ .ExtractString(); -+ } -+ -+ bool IsXhrOrFetchRequestBlocked(std::string selector) { -+ return GetSelectorTextContent(selector).find("Error") != std::string::npos; -+ } -+ -+ bool IsXhrOrFetchRequestAllowed(std::string selector) { -+ return GetSelectorTextContent(selector).find("succeeded") != -+ std::string::npos; -+ } -+ -+ // ResourceClassificationRunner::Observer: -+ void OnAdMatched(const GURL& url, -+ FilterMatchResult match_result, -+ const std::vector& parent_frame_urls, -+ ContentType content_type, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name) override { -+ if (match_result == FilterMatchResult::kBlockRule) { -+ blocked_ads_notifications_.push_back(url); -+ } -+ } -+ -+ void OnPageAllowed(const GURL& url, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name) override {} -+ -+ void OnPopupMatched(const GURL& url, -+ FilterMatchResult match_result, -+ const GURL& opener_url, -+ content::RenderFrameHost* render_frame_host, -+ const GURL& subscription, -+ const std::string& configuration_name) override {} -+ -+ base::ScopedTempDir temp_dir_; -+ std::vector blocked_ads_notifications_; -+}; -+ -+IN_PROC_BROWSER_TEST_F(AdblockWebBundleBrowserTest, BlockImageByResource) { -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl())); -+ const auto* blocked_image_selector = -+ R"(img[src="by_resource/blue_subresource_loading.png"])"; -+ const auto* other_image_selector = -+ R"(img[src="by_resource/red_subresource_loading.png"])"; -+ EXPECT_TRUE(IsImageLoaded(blocked_image_selector)); -+ EXPECT_TRUE(IsImageLoaded(other_image_selector)); -+ SetFilters({"/blue_subresource_loading.png"}); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl())); -+ EXPECT_FALSE(IsImageLoaded(blocked_image_selector)); -+ EXPECT_TRUE(IsImageLoaded(other_image_selector)); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockWebBundleBrowserTest, BlockCssByResource) { -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl())); -+ EXPECT_FALSE(IsCssBlocked("div.blue")); -+ SetFilters({"blue_subresource_loading.css"}); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl())); -+ EXPECT_TRUE(IsCssBlocked("div.blue")); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockWebBundleBrowserTest, BlockXhrByResource) { -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl())); -+ const auto* blocked_selector = "code#xhr_result_by_resource"; -+ EXPECT_TRUE(IsXhrOrFetchRequestAllowed(blocked_selector)); -+ SetFilters({"/xhr_result_1_subresource_loading.json"}); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl())); -+ EXPECT_TRUE(IsXhrOrFetchRequestBlocked(blocked_selector)); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockWebBundleBrowserTest, BlockFetchByResource) { -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl())); -+ const auto* blocked_selector = "code#fetch_result_by_resource"; -+ EXPECT_TRUE(IsXhrOrFetchRequestAllowed(blocked_selector)); -+ SetFilters({"/fetch_result_1_subresource_loading.json"}); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl())); -+ EXPECT_TRUE(IsXhrOrFetchRequestBlocked(blocked_selector)); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockWebBundleBrowserTest, BlockByBundle) { -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl())); -+ const auto* blocked_image_selector = -+ R"(img[src="by_bundle_file/green_subresource_loading.png"])"; -+ EXPECT_TRUE(IsImageLoaded(blocked_image_selector)); -+ EXPECT_FALSE(IsCssBlocked("div.green")); -+ EXPECT_FALSE(IsCssBlocked("div.purple")); -+ EXPECT_TRUE(IsXhrOrFetchRequestAllowed("code#xhr_result_by_bundle_file")); -+ EXPECT_TRUE(IsXhrOrFetchRequestAllowed("code#fetch_result_by_bundle_file")); -+ -+ SetFilters({"by_bundle_file.wbn$webbundle"}); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl())); -+ EXPECT_FALSE(IsImageLoaded(blocked_image_selector)); -+ EXPECT_TRUE(IsCssBlocked("div.green")); -+ EXPECT_TRUE(IsCssBlocked("div.purple")); -+ EXPECT_THAT(blocked_ads_notifications_, -+ testing::Contains(embedded_test_server()->GetURL( -+ "example.org", "/by_bundle_file.wbn"))); -+ // FIXME the following two expectations fail because the state of the requests -+ // is "pending" rather than allowed or blocked: DPD-1887 -+ // EXPECT_TRUE(IsXhrOrFetchRequestBlocked("code#xhr_result_by_bundle_file")); -+ // EXPECT_TRUE(IsXhrOrFetchRequestBlocked("code#fetch_result_by_bundle_file")); -+} -+ -+IN_PROC_BROWSER_TEST_F(AdblockWebBundleBrowserTest, BlockByScope) { -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl())); -+ const auto* blocked_image_selector = -+ R"(img[src="by_scope/orange_subresource_loading.png"])"; -+ EXPECT_TRUE(IsImageLoaded(blocked_image_selector)); -+ EXPECT_FALSE(IsCssBlocked("div.orange")); -+ EXPECT_FALSE(IsCssBlocked("div.pink")); -+ EXPECT_TRUE(IsXhrOrFetchRequestAllowed("code#xhr_result_by_scope")); -+ EXPECT_TRUE(IsXhrOrFetchRequestAllowed("code#fetch_result_by_scope")); -+ -+ SetFilters({"by_scope/"}); -+ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GetUrl())); -+ EXPECT_FALSE(IsImageLoaded(blocked_image_selector)); -+ EXPECT_TRUE(IsCssBlocked("div.orange")); -+ EXPECT_TRUE(IsCssBlocked("div.pink")); -+ EXPECT_TRUE(IsXhrOrFetchRequestBlocked("code#xhr_result_by_scope")); -+ EXPECT_TRUE(IsXhrOrFetchRequestBlocked("code#fetch_result_by_scope")); -+} -+ -+// TODO: -+// - Mixed origins -+// - Signed bundles. including case of navigation between signed and unsigned -+// content. -+// - If you block the whole bundle, all resources requests to components -+// declared in -+ -+ -+ -+ -+ -+ -+ -+
-+ -+

-+
-+
-+
-diff --git a/chrome/browser/resources/adblock_internals/adblock_internals.ts b/chrome/browser/resources/adblock_internals/adblock_internals.ts
-new file mode 100644
---- /dev/null
-+++ b/chrome/browser/resources/adblock_internals/adblock_internals.ts
-@@ -0,0 +1,43 @@
-+// This file is part of eyeo Chromium SDK,
-+// Copyright (C) 2006-present eyeo GmbH
-+//
-+// eyeo Chromium SDK is free software: you can redistribute it and/or modify
-+// it under the terms of the GNU General Public License version 3 as
-+// published by the Free Software Foundation.
-+//
-+// eyeo Chromium SDK is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+//
-+// You should have received a copy of the GNU General Public License
-+// along with eyeo Chromium SDK.  If not, see .
-+
-+import {getRequiredElement} from 'chrome://resources/js/util.js';
-+import {AdblockInternalsPageHandler} from './adblock_internals.mojom-webui.js';
-+
-+async function debugInfo(): Promise {
-+  const info = await AdblockInternalsPageHandler.getRemote().getDebugInfo();
-+  return info.debugInfo;
-+}
-+
-+async function refresh() {
-+  getRequiredElement('content').innerText = await debugInfo();
-+}
-+
-+getRequiredElement('copy-button').addEventListener('click', async () => {
-+  navigator.clipboard.writeText(await debugInfo());
-+});
-+
-+getRequiredElement('download-button').addEventListener('click', async () => {
-+  const url = URL.createObjectURL(new Blob([await debugInfo()], {type: 'text/plain'}));
-+  const a = document.createElement('a');
-+  a.href = url;
-+  a.download = 'adblock-internals.txt';
-+  a.click();
-+  URL.revokeObjectURL(url);
-+});
-+
-+getRequiredElement('refresh').addEventListener('click', refresh);
-+
-+document.addEventListener('DOMContentLoaded', refresh);
-diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
---- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
-+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
-@@ -5,6 +5,10 @@
- // This test creates a fake safebrowsing service, where we can inject known-
- // threat urls.  It then uses a real browser to go to these urls, and sends
- // "goback" or "proceed" commands and verifies they work.
-+//
-+// This source code is a part of eyeo Chromium SDK.
-+// Use of this source code is governed by the GPLv3 that can be found in the
-+// components/adblock/LICENSE file.
- 
- #include 
- #include 
-@@ -62,6 +66,7 @@
- #include "chrome/common/url_constants.h"
- #include "chrome/test/base/in_process_browser_test.h"
- #include "chrome/test/base/ui_test_utils.h"
-+#include "components/adblock/core/features.h"
- #include "components/google/core/common/google_util.h"
- #include "components/grit/components_resources.h"
- #include "components/omnibox/browser/omnibox_prefs.h"
-@@ -627,6 +632,8 @@ class SafeBrowsingBlockingPageBrowserTest
-         {tag_and_attribute, add_warning_shown_timestamp_csbrrs,
-          create_warning_shown_csbrrs},
-         {});
-+    scoped_feature_list_.InitWithFeaturesAndParameters(
-+        {tag_and_attribute}, {adblock::kAdblockPlusFeature});
-   }
- 
-   SafeBrowsingBlockingPageBrowserTest(
-diff --git a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc
---- a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc
-+++ b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc
-@@ -1,6 +1,10 @@
- // Copyright 2017 The Chromium Authors
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
-+//
-+// This source code is a part of eyeo Chromium SDK.
-+// Use of this source code is governed by the GPLv3 that can be found in the
-+// components/adblock/LICENSE file.
- 
- #include "chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h"
- 
-@@ -22,6 +26,7 @@
- #include "chrome/common/chrome_features.h"
- #include "chrome/common/chrome_paths.h"
- #include "chrome/test/base/chrome_test_utils.h"
-+#include "components/adblock/core/features.h"
- #include "components/blocked_content/safe_browsing_triggered_popup_blocker.h"
- #include "components/content_settings/browser/page_specific_content_settings.h"
- #include "components/safe_browsing/core/browser/db/v4_protocol_manager_util.h"
-@@ -71,7 +76,8 @@ MockSubresourceFilterObserver::~MockSubresourceFilterObserver() = default;
- SubresourceFilterBrowserTest::SubresourceFilterBrowserTest() {
-   scoped_feature_list_.InitWithFeatures(
-       /*enabled_features=*/{kAdTagging},
--      /*disabled_features=*/{features::kHttpsUpgrades});
-+      /*disabled_features=*/{features::kHttpsUpgrades,
-+                             adblock::kAdblockPlusFeature});
- }
- 
- SubresourceFilterBrowserTest::~SubresourceFilterBrowserTest() = default;
-diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
---- a/chrome/browser/ui/BUILD.gn
-+++ b/chrome/browser/ui/BUILD.gn
-@@ -1,6 +1,10 @@
- # Copyright 2014 The Chromium Authors
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-+#
-+# This source code is a part of eyeo Chromium SDK.
-+# Use of this source code is governed by the GPLv3 that can be found in the components/adblock/LICENSE file.
-+
- 
- import("//build/config/buildflags_paint_preview.gni")
- import("//build/config/chromebox_for_meetings/buildflags.gni")
-@@ -241,6 +245,10 @@ static_library("ui") {
-     "webid/identity_dialog_controller.h",
-     "webui/about/about_ui.cc",
-     "webui/about/about_ui.h",
-+    "webui/adblock_internals/adblock_internals_page_handler_impl.cc",
-+    "webui/adblock_internals/adblock_internals_page_handler_impl.h",
-+    "webui/adblock_internals/adblock_internals_ui.cc",
-+    "webui/adblock_internals/adblock_internals_ui.h",
-     "webui/autofill_and_password_manager_internals/autofill_internals_ui.cc",
-     "webui/autofill_and_password_manager_internals/autofill_internals_ui.h",
-     "webui/autofill_and_password_manager_internals/internals_ui_handler.cc",
-@@ -441,6 +449,7 @@ static_library("ui") {
-     "//chrome/browser/storage_access_api",
-     "//chrome/browser/ui/side_panel:side_panel_enums",
-     "//chrome/browser/ui/webui/location_internals:mojo_bindings",
-+    "//chrome/browser/ui/webui/adblock_internals:mojo_bindings",
-     "//chrome/browser/ui/webui/omnibox:mojo_bindings",
-     "//chrome/browser/ui/webui/segmentation_internals:mojo_bindings",
-     "//chrome/browser/ui/webui/suggest_internals:mojo_bindings",
-@@ -457,6 +466,7 @@ static_library("ui") {
-     "//components/about_ui",
-     "//components/access_code_cast/common:metrics",
-     "//components/account_id",
-+    "//components/adblock/content:browser",
-     "//components/autofill/content/browser",
-     "//components/autofill/content/browser:risk_proto",
-     "//components/autofill/core/browser",
-diff --git a/chrome/browser/ui/prefs/pref_watcher.cc b/chrome/browser/ui/prefs/pref_watcher.cc
---- a/chrome/browser/ui/prefs/pref_watcher.cc
-+++ b/chrome/browser/ui/prefs/pref_watcher.cc
-@@ -2,6 +2,10 @@
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- 
-+// This source code is a part of eyeo Chromium SDK.
-+// Use of this source code is governed by the GPLv3 that can be found in the
-+// components/adblock/LICENSE file.
-+
- #include "chrome/browser/ui/prefs/pref_watcher.h"
- 
- #include "base/functional/bind.h"
-@@ -13,6 +17,7 @@
- #include "chrome/browser/renderer_preferences_util.h"
- #include "chrome/browser/ui/prefs/prefs_tab_helper.h"
- #include "chrome/common/pref_names.h"
-+#include "components/adblock/core/common/adblock_prefs.h"
- #include "components/language/core/browser/pref_names.h"
- #include "components/live_caption/pref_names.h"
- #include "components/privacy_sandbox/tracking_protection_settings.h"
-@@ -68,6 +73,14 @@ const char* const kWebPrefsToObserve[] = {
- #else
-     prefs::kAccessibilityFocusHighlightEnabled,
- #endif
-+
-+    adblock::common::prefs::kAdblockAllowedDomainsLegacy,
-+    adblock::common::prefs::kAdblockCustomFiltersLegacy,
-+    adblock::common::prefs::kAdblockCustomSubscriptionsLegacy,
-+    adblock::common::prefs::kAdblockSubscriptionsLegacy,
-+    adblock::common::prefs::kEnableAcceptableAdsLegacy,
-+    adblock::common::prefs::kEnableAdblockLegacy,
-+
- };
- 
- const int kWebPrefsToObserveLength = std::size(kWebPrefsToObserve);
-diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
---- a/chrome/browser/ui/tab_helpers.cc
-+++ b/chrome/browser/ui/tab_helpers.cc
-@@ -1,6 +1,10 @@
- // Copyright 2014 The Chromium Authors
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
-+//
-+// This source code is a part of eyeo Chromium SDK.
-+// Use of this source code is governed by the GPLv3 that can be found in the
-+// components/adblock/LICENSE file.
- 
- #include "chrome/browser/ui/tab_helpers.h"
- 
-@@ -13,6 +17,9 @@
- #include "base/trace_event/trace_event.h"
- #include "build/build_config.h"
- #include "build/chromeos_buildflags.h"
-+#include "chrome/browser/adblock/element_hider_factory.h"
-+#include "chrome/browser/adblock/sitekey_storage_factory.h"
-+#include "chrome/browser/adblock/subscription_service_factory.h"
- #include "chrome/browser/bookmarks/bookmark_model_factory.h"
- #include "chrome/browser/breadcrumbs/breadcrumb_manager_tab_helper.h"
- #include "chrome/browser/browser_process.h"
-@@ -110,6 +117,7 @@
- #include "chrome/common/chrome_features.h"
- #include "chrome/common/chrome_isolated_world_ids.h"
- #include "chrome/common/chrome_switches.h"
-+#include "components/adblock/content/browser/adblock_webcontents_observer.h"
- #include "components/autofill/content/browser/content_autofill_client.h"
- #include "components/autofill/content/browser/content_autofill_driver_factory.h"
- #include "components/autofill/core/browser/browser_autofill_manager.h"
-@@ -355,6 +363,16 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
-                                                    optimization_guide_decider);
-     }
-   }
-+
-+  AdblockWebContentObserver::CreateForWebContents(
-+      web_contents,
-+      adblock::SubscriptionServiceFactory::GetForBrowserContext(
-+          web_contents->GetBrowserContext()),
-+      adblock::ElementHiderFactory::GetForBrowserContext(
-+          web_contents->GetBrowserContext()),
-+      adblock::SitekeyStorageFactory::GetForBrowserContext(
-+          web_contents->GetBrowserContext()),
-+      std::make_unique());
-   autofill::ChromeAutofillClient::CreateForWebContents(web_contents);
-   if (breadcrumbs::IsEnabled(g_browser_process->local_state())) {
-     BreadcrumbManagerTabHelper::CreateForWebContents(web_contents);
-diff --git a/chrome/browser/ui/webui/adblock_internals/BUILD.gn b/chrome/browser/ui/webui/adblock_internals/BUILD.gn
-new file mode 100644
---- /dev/null
-+++ b/chrome/browser/ui/webui/adblock_internals/BUILD.gn
-@@ -0,0 +1,23 @@
-+#
-+# This file is part of eyeo Chromium SDK,
-+# Copyright (C) 2006-present eyeo GmbH
-+#
-+# eyeo Chromium SDK is free software: you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License version 3 as
-+# published by the Free Software Foundation.
-+#
-+# eyeo Chromium SDK is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with eyeo Chromium SDK.  If not, see .
-+
-+import("//mojo/public/tools/bindings/mojom.gni")
-+
-+mojom("mojo_bindings") {
-+  sources = [ "adblock_internals.mojom" ]
-+  webui_module_path = "/"
-+  use_typescript_sources = true
-+}
-diff --git a/chrome/browser/ui/webui/adblock_internals/adblock_internals.mojom b/chrome/browser/ui/webui/adblock_internals/adblock_internals.mojom
-new file mode 100644
---- /dev/null
-+++ b/chrome/browser/ui/webui/adblock_internals/adblock_internals.mojom
-@@ -0,0 +1,20 @@
-+// This file is part of eyeo Chromium SDK,
-+// Copyright (C) 2006-present eyeo GmbH
-+//
-+// eyeo Chromium SDK is free software: you can redistribute it and/or modify
-+// it under the terms of the GNU General Public License version 3 as
-+// published by the Free Software Foundation.
-+//
-+// eyeo Chromium SDK is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+//
-+// You should have received a copy of the GNU General Public License
-+// along with eyeo Chromium SDK.  If not, see .
-+
-+module mojom.adblock_internals;
-+
-+interface AdblockInternalsPageHandler {
-+  GetDebugInfo() => (string debug_info);
-+};
-diff --git a/chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.cc b/chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.cc
-new file mode 100644
---- /dev/null
-+++ b/chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.cc
-@@ -0,0 +1,115 @@
-+/*
-+ * This file is part of eyeo Chromium SDK,
-+ * Copyright (C) 2006-present eyeo GmbH
-+ *
-+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 3 as
-+ * published by the Free Software Foundation.
-+ *
-+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with eyeo Chromium SDK.  If not, see .
-+ */
-+
-+#include "chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.h"
-+
-+#include "base/time/time_to_iso8601.h"
-+#include "chrome/browser/adblock/adblock_telemetry_service_factory.h"
-+#include "chrome/browser/adblock/session_stats_factory.h"
-+#include "chrome/browser/adblock/subscription_service_factory.h"
-+#include "components/adblock/core/adblock_telemetry_service.h"
-+#include "components/adblock/core/session_stats.h"
-+#include "components/adblock/core/subscription/subscription_config.h"
-+#include "components/adblock/core/subscription/subscription_service.h"
-+
-+namespace {
-+
-+std::string SubscriptionInstallationStateToString(
-+    adblock::Subscription::InstallationState state) {
-+  using State = adblock::Subscription::InstallationState;
-+  switch (state) {
-+    case State::Installed:
-+      return "Installed";
-+    case State::Installing:
-+      return "Installing";
-+    case State::Preloaded:
-+      return "Preloaded";
-+    case State::Unknown:
-+      return "Unknown";
-+  }
-+  NOTREACHED();
-+  return "";
-+}
-+
-+std::string DebugLine(std::string name, std::string value, int level) {
-+  return std::string(2 * level, ' ') + name + ": " + value + '\n';
-+}
-+
-+std::string DebugLine(std::string name, int value, int level) {
-+  return DebugLine(name, std::to_string(value), level);
-+}
-+
-+}  // namespace
-+
-+AdblockInternalsPageHandlerImpl::AdblockInternalsPageHandlerImpl(
-+    Profile* profile,
-+    mojo::PendingReceiver
-+        receiver)
-+    : profile_(profile), receiver_(this, std::move(receiver)) {}
-+
-+AdblockInternalsPageHandlerImpl::~AdblockInternalsPageHandlerImpl() = default;
-+
-+void AdblockInternalsPageHandlerImpl::GetDebugInfo(
-+    GetDebugInfoCallback callback) {
-+  CHECK(profile_);
-+  auto* service =
-+      adblock::SubscriptionServiceFactory::GetForBrowserContext(profile_);
-+  auto* stats = adblock::SessionStatsFactory::GetForBrowserContext(profile_);
-+  auto allowed = stats->GetSessionAllowedAdsCount();
-+  auto blocked = stats->GetSessionBlockedAdsCount();
-+  std::string content;
-+  for (auto* config : service->GetInstalledFilteringConfigurations()) {
-+    content += DebugLine("Configuration", config->GetName(), 0);
-+    content += DebugLine("Enabled", config->IsEnabled(), 1);
-+    for (const auto& it : config->GetAllowedDomains()) {
-+      content += DebugLine("Allowed domain", it, 1);
-+    }
-+    for (const auto& it : config->GetCustomFilters()) {
-+      content += DebugLine("Custom filter", it, 1);
-+    }
-+    for (auto it : service->GetCurrentSubscriptions(config)) {
-+      auto url = it->GetSourceUrl();
-+      content += DebugLine("Subscription", url.spec(), 1);
-+      content += DebugLine(
-+          "State",
-+          SubscriptionInstallationStateToString(it->GetInstallationState()), 2);
-+      content += DebugLine("Title", it->GetTitle(), 2);
-+      content += DebugLine("Version", it->GetCurrentVersion(), 2);
-+      content += DebugLine("Last update",
-+                           base::TimeToISO8601(it->GetInstallationTime()), 2);
-+      content += DebugLine("Total allowed", allowed[url], 2);
-+      content += DebugLine("Total blocked", blocked[url], 2);
-+    }
-+  }
-+
-+  auto* telemetry_service =
-+      adblock::AdblockTelemetryServiceFactory::GetForProfile(profile_);
-+  telemetry_service->GetTopicProvidersDebugInfo(base::BindOnce(
-+      &AdblockInternalsPageHandlerImpl::OnTelemetryServiceInfoArrived,
-+      std::move(callback), std::move(content)));
-+}
-+
-+void AdblockInternalsPageHandlerImpl::OnTelemetryServiceInfoArrived(
-+    GetDebugInfoCallback callback,
-+    std::string content,
-+    std::vector topic_provider_content) {
-+  for (auto& topic_provider_debug_info : topic_provider_content) {
-+    content +=
-+        DebugLine("Eyeometry topic provider", topic_provider_debug_info, 0);
-+  }
-+  std::move(callback).Run(std::move(content));
-+}
-diff --git a/chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.h b/chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.h
-new file mode 100644
---- /dev/null
-+++ b/chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.h
-@@ -0,0 +1,51 @@
-+/*
-+ * This file is part of eyeo Chromium SDK,
-+ * Copyright (C) 2006-present eyeo GmbH
-+ *
-+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 3 as
-+ * published by the Free Software Foundation.
-+ *
-+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with eyeo Chromium SDK.  If not, see .
-+ */
-+
-+#ifndef CHROME_BROWSER_UI_WEBUI_ADBLOCK_INTERNALS_ADBLOCK_INTERNALS_PAGE_HANDLER_IMPL_H_
-+#define CHROME_BROWSER_UI_WEBUI_ADBLOCK_INTERNALS_ADBLOCK_INTERNALS_PAGE_HANDLER_IMPL_H_
-+
-+#include "base/memory/raw_ptr.h"
-+#include "chrome/browser/profiles/profile.h"
-+#include "chrome/browser/ui/webui/adblock_internals/adblock_internals.mojom.h"
-+#include "mojo/public/cpp/bindings/receiver.h"
-+
-+class AdblockInternalsPageHandlerImpl
-+    : public mojom::adblock_internals::AdblockInternalsPageHandler {
-+ public:
-+  explicit AdblockInternalsPageHandlerImpl(
-+      Profile* profile,
-+      mojo::PendingReceiver<
-+          mojom::adblock_internals::AdblockInternalsPageHandler> receiver);
-+  AdblockInternalsPageHandlerImpl(const AdblockInternalsPageHandlerImpl&) =
-+      delete;
-+  AdblockInternalsPageHandlerImpl& operator=(
-+      const AdblockInternalsPageHandlerImpl&) = delete;
-+  ~AdblockInternalsPageHandlerImpl() override;
-+
-+  // mojom::adblock_internals::AdblockInternalsPageHandler:
-+  void GetDebugInfo(GetDebugInfoCallback callback) override;
-+
-+ private:
-+  static void OnTelemetryServiceInfoArrived(
-+      GetDebugInfoCallback callback,
-+      std::string content,
-+      std::vector topic_provider_content);
-+  raw_ptr profile_;
-+  mojo::Receiver
-+      receiver_;
-+};
-+#endif  // CHROME_BROWSER_UI_WEBUI_ADBLOCK_INTERNALS_ADBLOCK_INTERNALS_PAGE_HANDLER_IMPL_H_
-diff --git a/chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.cc b/chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.cc
-new file mode 100644
---- /dev/null
-+++ b/chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.cc
-@@ -0,0 +1,47 @@
-+/*                                                                            \
-+ * This file is part of eyeo Chromium SDK,                                    \
-+ * Copyright (C) 2006-present eyeo GmbH                                       \
-+ *                                                                            \
-+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify  \
-+ * it under the terms of the GNU General Public License version 3 as          \
-+ * published by the Free Software Foundation.                                 \
-+ *                                                                            \
-+ * eyeo Chromium SDK is distributed in the hope that it will be useful,       \
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of             \
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              \
-+ * GNU General Public License for more details.                               \
-+ *                                                                            \
-+ * You should have received a copy of the GNU General Public License          \
-+ * along with eyeo Chromium SDK.  If not, see . \
-+ */
-+
-+#include "chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.h"
-+
-+#include "chrome/browser/profiles/profile.h"
-+#include "chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.h"
-+#include "chrome/browser/ui/webui/webui_util.h"
-+#include "chrome/common/url_constants.h"
-+#include "chrome/grit/adblock_internals_resources.h"
-+#include "chrome/grit/adblock_internals_resources_map.h"
-+#include "content/public/browser/web_ui_data_source.h"
-+
-+AdblockInternalsUI::AdblockInternalsUI(content::WebUI* web_ui)
-+    : ui::MojoWebUIController(web_ui), profile_(Profile::FromWebUI(web_ui)) {
-+  content::WebUIDataSource* source = content::WebUIDataSource::CreateAndAdd(
-+      profile_, chrome::kChromeUIAdblockInternalsHost);
-+  webui::SetupWebUIDataSource(source,
-+                              base::make_span(kAdblockInternalsResources,
-+                                              kAdblockInternalsResourcesSize),
-+                              IDR_ADBLOCK_INTERNALS_ADBLOCK_INTERNALS_HTML);
-+}
-+
-+AdblockInternalsUI::~AdblockInternalsUI() = default;
-+
-+WEB_UI_CONTROLLER_TYPE_IMPL(AdblockInternalsUI)
-+
-+void AdblockInternalsUI::BindInterface(
-+    mojo::PendingReceiver
-+        receiver) {
-+  handler_ = std::make_unique(
-+      profile_, std::move(receiver));
-+}
-diff --git a/chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.h b/chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.h
-new file mode 100644
---- /dev/null
-+++ b/chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.h
-@@ -0,0 +1,48 @@
-+/*
-+ * This file is part of eyeo Chromium SDK,
-+ * Copyright (C) 2006-present eyeo GmbH
-+ *
-+ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 3 as
-+ * published by the Free Software Foundation.
-+ *
-+ * eyeo Chromium SDK is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with eyeo Chromium SDK.  If not, see .
-+ */
-+
-+#ifndef CHROME_BROWSER_UI_WEBUI_ADBLOCK_INTERNALS_ADBLOCK_INTERNALS_UI_H_
-+#define CHROME_BROWSER_UI_WEBUI_ADBLOCK_INTERNALS_ADBLOCK_INTERNALS_UI_H_
-+
-+#include "chrome/browser/ui/webui/adblock_internals/adblock_internals.mojom.h"
-+#include "mojo/public/cpp/bindings/pending_receiver.h"
-+#include "ui/webui/mojo_web_ui_controller.h"
-+
-+class Profile;
-+
-+class AdblockInternalsUI : public ui::MojoWebUIController {
-+ public:
-+  explicit AdblockInternalsUI(content::WebUI* web_ui);
-+
-+  AdblockInternalsUI(const AdblockInternalsUI&) = delete;
-+  AdblockInternalsUI& operator=(const AdblockInternalsUI&) = delete;
-+
-+  ~AdblockInternalsUI() override;
-+
-+  void BindInterface(
-+      mojo::PendingReceiver<
-+          mojom::adblock_internals::AdblockInternalsPageHandler> receiver);
-+
-+ private:
-+  WEB_UI_CONTROLLER_TYPE_DECL();
-+
-+  raw_ptr profile_;
-+  std::unique_ptr
-+      handler_;
-+};
-+
-+#endif  // CHROME_BROWSER_UI_WEBUI_ADBLOCK_INTERNALS_ADBLOCK_INTERNALS_UI_H_
-diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
---- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
-+++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
-@@ -1,6 +1,10 @@
- // Copyright 2012 The Chromium Authors
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
-+//
-+// This source code is a part of eyeo Chromium SDK.
-+// Use of this source code is governed by the GPLv3 that can be found in the
-+// components/adblock/LICENSE file.
- 
- #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h"
- 
-@@ -31,6 +35,7 @@
- #include "chrome/browser/profiles/profile.h"
- #include "chrome/browser/signin/signin_features.h"
- #include "chrome/browser/ui/webui/about/about_ui.h"
-+#include "chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.h"
- #include "chrome/browser/ui/webui/autofill_and_password_manager_internals/autofill_internals_ui.h"
- #include "chrome/browser/ui/webui/autofill_and_password_manager_internals/password_manager_internals_ui.h"
- #include "chrome/browser/ui/webui/browsing_topics/browsing_topics_internals_ui.h"
-@@ -434,8 +439,12 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
-   // after the host name.
-   if (url.host_piece() == chrome::kChromeUIAccessibilityHost)
-     return &NewWebUI;
--  if (url.host_piece() == chrome::kChromeUIAutofillInternalsHost)
-+  if (url.host_piece() == chrome::kChromeUIAdblockInternalsHost) {
-+    return &NewWebUI;
-+  }
-+  if (url.host_piece() == chrome::kChromeUIAutofillInternalsHost) {
-     return &NewWebUI;
-+  }
- 
- #if BUILDFLAG(IS_CHROMEOS_ASH)
-   if (url.host_piece() == chrome::kChromeUIAppDisabledHost)
-diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
---- a/chrome/common/BUILD.gn
-+++ b/chrome/common/BUILD.gn
-@@ -1,6 +1,9 @@
- # Copyright 2014 The Chromium Authors
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-+#
-+# This source code is a part of eyeo Chromium SDK.
-+# Use of this source code is governed by the GPLv3 that can be found in the components/adblock/LICENSE file.
- 
- import("//build/buildflag_header.gni")
- import("//build/config/chrome_build.gni")
-diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
---- a/chrome/common/webui_url_constants.cc
-+++ b/chrome/common/webui_url_constants.cc
-@@ -1,6 +1,10 @@
- // Copyright 2017 The Chromium Authors
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
-+//
-+// This source code is a part of eyeo Chromium SDK.
-+// Use of this source code is governed by the GPLv3 that can be found in the
-+// components/adblock/LICENSE file.
- 
- #include "chrome/common/webui_url_constants.h"
- 
-@@ -32,6 +36,7 @@ const char kChromeUIAboutURL[] = "chrome://about/";
- const char kChromeUIActivateSafetyCheckSettingsURL[] =
-     "chrome://settings/safetyCheck?activateSafetyCheck";
- const char kChromeUIAccessibilityHost[] = "accessibility";
-+const char kChromeUIAdblockInternalsHost[] = "adblock-internals";
- const char kChromeUIAllSitesPath[] = "/content/all";
- const char kChromeUIAppIconHost[] = "app-icon";
- const char kChromeUIAppIconURL[] = "chrome://app-icon/";
-diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
---- a/chrome/common/webui_url_constants.h
-+++ b/chrome/common/webui_url_constants.h
-@@ -1,6 +1,10 @@
- // Copyright 2017 The Chromium Authors
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
-+//
-+// This source code is a part of eyeo Chromium SDK.
-+// Use of this source code is governed by the GPLv3 that can be found in the
-+// components/adblock/LICENSE file.
- 
- // Contains constants for WebUI UI/Host/SubPage constants. Anything else go in
- // chrome/common/url_constants.h.
-@@ -33,6 +37,7 @@ extern const char kChromeUIAboutHost[];
- extern const char kChromeUIAboutURL[];
- extern const char kChromeUIActivateSafetyCheckSettingsURL[];
- extern const char kChromeUIAccessibilityHost[];
-+extern const char kChromeUIAdblockInternalsHost[];
- extern const char kChromeUIAllSitesPath[];
- extern const char kChromeUIAppIconHost[];
- extern const char kChromeUIAppIconURL[];
-diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
---- a/chrome/test/BUILD.gn
-+++ b/chrome/test/BUILD.gn
-@@ -1,6 +1,9 @@
- # Copyright 2014 The Chromium Authors
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-+#
-+# This source code is a part of eyeo Chromium SDK.
-+# Use of this source code is governed by the GPLv3 that can be found in the components/adblock/LICENSE file.
- 
- import("//build/cipd/cipd.gni")
- import("//build/config/buildflags_paint_preview.gni")
-@@ -24,6 +27,7 @@ import("//chrome/test/include_js_tests.gni")
- import("//chrome/version.gni")
- import("//chromeos/ash/components/assistant/assistant.gni")
- import("//components/allocation_recorder/testing/testing.gni")
-+import("//components/adblock/features.gni")
- import("//components/captive_portal/core/features.gni")
- import("//components/compose/features.gni")
- import("//components/enterprise/buildflags/buildflags.gni")
-@@ -1343,6 +1347,7 @@ if (is_android) {
- 
-     deps += [
-       ":persisted_tab_data_test_proto",
-+      "//components/adblock/content:browser",
-       "//components/autofill/content/browser:test_support",
-       "//components/back_forward_cache:back_forward_cache",
-       "//components/browsing_data/core:core",
-@@ -1745,6 +1750,7 @@ if (!is_android) {
-       "//chrome/test/data/webui/mojo:mojo_bindings",
-       "//chrome/test/media_router/access_code_cast:access_code_cast_integration_base",
-       "//chrome/test/payments:test_support",
-+      "//components/adblock/content:browser",
-       "//components/autofill/content/browser:risk_proto",
-       "//components/autofill/content/browser:test_support",
-       "//components/autofill/content/common/mojom",
-@@ -2093,6 +2099,7 @@ if (!is_android) {
-       "//ash/components/arc/test/data/icons",
-       "//chrome/browser/page_load_metrics/integration_tests/data/",
-       "//chrome/renderer/resources/extensions/",
-+      "//chrome/test/data/adblock/",
-       "//chrome/test/data/cart/",
-       "//components/test/data/ad_tagging/",
-       "//components/test/data/ads_observer/",
-@@ -2182,6 +2189,17 @@ if (!is_android) {
-       "../browser/accessibility/image_annotation_browsertest.cc",
-       "../browser/accessibility/interstitial_accessibility_browsertest.cc",
-       "../browser/accessibility/page_colors_browsertest.cc",
-+      "../browser/adblock/test/adblock_content_browser_client_browsertest.cc",
-+      "../browser/adblock/test/adblock_filter_list_browsertest.cc",
-+      "../browser/adblock/test/adblock_filtering_configurations_browsertest.cc",
-+      "../browser/adblock/test/adblock_frame_hierarchy_builder_browsertest.cc",
-+      "../browser/adblock/test/adblock_multiple_tabs_browsertest.cc",
-+      "../browser/adblock/test/adblock_non_ascii_browsertest.cc",
-+      "../browser/adblock/test/adblock_popup_browsertest.cc",
-+      "../browser/adblock/test/adblock_snippets_browsertest.cc",
-+      "../browser/adblock/test/adblock_subscription_service_browsertest.cc",
-+      "../browser/adblock/test/adblock_telemetry_service_browsertest.cc",
-+      "../browser/adblock/test/adblock_web_bundle_browsertest.cc",
-       "../browser/apps/guest_view/app_view_browsertest.cc",
-       "../browser/apps/guest_view/web_view_browsertest.cc",
-       "../browser/apps/platform_apps/app_browsertest.cc",
-@@ -2940,6 +2958,10 @@ if (!is_android) {
-       sources += [ "../browser/chrome_for_testing/chrome_for_testing_info_bar_browsertest.cc" ]
-     }
- 
-+    if (eyeo_intercept_debug_url) {
-+      sources += [ "../browser/adblock/test/adblock_debug_url_browsertest.cc" ]
-+    }
-+
-     if (enable_reporting) {
-       sources += [ "../browser/net/reporting_browsertest.cc" ]
-     }
-@@ -3794,6 +3816,7 @@ if (!is_android) {
-         ]
-       }
- 
-+
-       if (is_chromeos_ash && enable_extensions) {
-         deps +=
-             [ "//chromeos/ash/components/network/portal_detector:test_support" ]
-@@ -6097,6 +6120,7 @@ test("unit_tests") {
-   sources = [
-     # All unittests in browser, common, renderer and service.
-     "../browser/about_flags_unittest.cc",
-+    "../browser/adblock/adblock_content_browser_client_unittest.cc",
-     "../browser/after_startup_task_utils_unittest.cc",
-     "../browser/apps/icon_standardizer_unittest.cc",
-     "../browser/apps/user_type_filter_unittest.cc",
-@@ -6787,6 +6811,8 @@ test("unit_tests") {
-     "//chrome/services/file_util:unit_tests",
-     "//chrome/services/qrcode_generator/public/cpp",
-     "//components/account_id",
-+    "//components/adblock/content/browser:test_support",
-+    "//components/adblock/core:test_support",
-     "//components/assist_ranker/proto",
-     "//components/autofill/content/browser:test_support",
-     "//components/background_sync",
-@@ -10381,6 +10407,7 @@ if (!is_android) {
- 
-     public_deps = [
-       "//chrome/browser:test_support_ui",
-+      "//components/adblock/core:test_support",
-       "//content/public/browser",
-       "//content/test:test_support",
-       "//google_apis:test_support",
-diff --git a/chrome/test/base/chrome_test_launcher.cc b/chrome/test/base/chrome_test_launcher.cc
---- a/chrome/test/base/chrome_test_launcher.cc
-+++ b/chrome/test/base/chrome_test_launcher.cc
++#endif  // CHROME_BROWSER_ADBLOCK_SUBSCRIPTION_SERVICE_FACTORY_H_
+diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc
+--- a/chrome/browser/chrome_browser_interface_binders.cc
++++ b/chrome/browser/chrome_browser_interface_binders.cc
 @@ -1,6 +1,10 @@
- // Copyright 2012 The Chromium Authors
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
-+//
-+// This source code is a part of eyeo Chromium SDK.
-+// Use of this source code is governed by the GPLv3 that can be found in the
-+// components/adblock/LICENSE file.
- 
- #include "chrome/test/base/chrome_test_launcher.h"
- 
-@@ -26,6 +30,7 @@
- #include "base/time/time.h"
- #include "build/build_config.h"
- #include "build/chromeos_buildflags.h"
-+#include "chrome/browser/adblock/adblock_content_browser_client.h"
- #include "chrome/browser/chrome_content_browser_client.h"
- #include "chrome/browser/metrics/chrome_feature_list_creator.h"
- #include "chrome/common/chrome_constants.h"
-@@ -154,7 +159,7 @@ ChromeTestLauncherDelegate::GetUserDataDirectoryCommandLineSwitch() {
- // watch for long-running tasks and produce a useful timeout message in order to
- // find the cause of flaky timeout tests.
- class BrowserTestChromeContentBrowserClient
--    : public ChromeContentBrowserClient {
-+    : public AdblockContentBrowserClient {
-  public:
-   bool CreateThreadPool(base::StringPiece name) override {
-     base::test::TaskEnvironment::CreateThreadPool();
-diff --git a/chrome/test/base/in_process_browser_test.cc b/chrome/test/base/in_process_browser_test.cc
---- a/chrome/test/base/in_process_browser_test.cc
-+++ b/chrome/test/base/in_process_browser_test.cc
-@@ -2,6 +2,10 @@
+ // Copyright 2019 The Chromium Authors
  // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- 
-+// This source code is a part of eyeo Chromium SDK.
-+// Use of this source code is governed by the GPLv3 that can be found in the
-+// components/adblock/LICENSE file.
-+
- #include "chrome/test/base/in_process_browser_test.h"
- 
- #include 
-@@ -166,6 +170,10 @@
- #include "content/public/test/network_connection_change_simulator.h"
- #endif
- 
-+#include "chrome/browser/adblock/subscription_service_factory.h"
-+#include "components/adblock/core/common/adblock_constants.h"
-+#include "components/adblock/core/subscription/subscription_service.h"
-+
- namespace {
- 
- #if BUILDFLAG(IS_CHROMEOS_ASH)
-@@ -666,8 +674,19 @@ void InProcessBrowserTest::CreatedBrowserMainParts(
- 
- void InProcessBrowserTest::SelectFirstBrowser() {
-   const BrowserList* browser_list = BrowserList::GetInstance();
--  if (!browser_list->empty())
-+  if (!browser_list->empty()) {
-     browser_ = browser_list->get(0);
-+    // Adding an allowing filter that overrides and disables all blocking
-+    // filters in order to avoid unwanted interactions with simulated network
-+    // loads. This custom filter is removed for tests that specifically verify
-+    // ad-filtering.
-+    auto* adblock_configuration =
-+        adblock::SubscriptionServiceFactory::GetForBrowserContext(browser_->profile())
-+            ->GetAdblockFilteringConfiguration();
-+    if (adblock_configuration) {
-+      adblock_configuration->AddCustomFilter(adblock::kAllowlistEverythingFilter);
-+    }
-+  }
- }
- 
- void InProcessBrowserTest::RecordPropertyFromMap(
-diff --git a/chrome/test/data/adblock/filterlist_that_allows_resource.txt b/chrome/test/data/adblock/filterlist_that_allows_resource.txt
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/filterlist_that_allows_resource.txt
-@@ -0,0 +1,7 @@
-+  [Adblock Plus 2.0]
-+! Version: 202212191158
-+! Title: Allow resource.png
-+! Expires: 1 days
-+
-+@@*resource.png
-+#@##subresource
-diff --git a/chrome/test/data/adblock/filterlist_that_blocks_resource.txt b/chrome/test/data/adblock/filterlist_that_blocks_resource.txt
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/filterlist_that_blocks_resource.txt
-@@ -0,0 +1,6 @@
-+ [Adblock Plus 2.0]
-+! Version: 202212191158
-+! Title: Block resource.png
-+! Expires: 1 days
-+
-+*resource.png
-diff --git a/chrome/test/data/adblock/filterlist_that_hides_resource.txt b/chrome/test/data/adblock/filterlist_that_hides_resource.txt
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/filterlist_that_hides_resource.txt
-@@ -0,0 +1,6 @@
-+ [Adblock Plus 2.0]
-+! Version: 202212191158
-+! Title: Hide resource.png
-+! Expires: 1 days
-+
-+###subresource
-diff --git a/chrome/test/data/adblock/innermost_frame.html b/chrome/test/data/adblock/innermost_frame.html
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/innermost_frame.html
-@@ -0,0 +1,39 @@
-+
-+
-+
-+
-+
-+
-+  
-+
-+
-+
-+  
-+
-+
-+
-diff --git a/chrome/test/data/adblock/middle_frame.html b/chrome/test/data/adblock/middle_frame.html
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/middle_frame.html
-@@ -0,0 +1,25 @@
-+
-+
-+
-+
-+
-+
-+  
-+
-+
-+
-diff --git a/chrome/test/data/adblock/non-ascii.html b/chrome/test/data/adblock/non-ascii.html
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/non-ascii.html
-@@ -0,0 +1,26 @@
-+
-+
-+
-+
-+
-+  
-+
-+
-+    
Should be shidden
-+ -+ -diff --git a/chrome/test/data/adblock/outermost_frame.html b/chrome/test/data/adblock/outermost_frame.html -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/adblock/outermost_frame.html -@@ -0,0 +1,37 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/chrome/test/data/adblock/outermost_frame_with_about_blank.html b/chrome/test/data/adblock/outermost_frame_with_about_blank.html -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/adblock/outermost_frame_with_about_blank.html -@@ -0,0 +1,37 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/chrome/test/data/adblock/popup.html b/chrome/test/data/adblock/popup.html -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/adblock/popup.html -@@ -0,0 +1,25 @@ -+ + RegisterWebUIControllerInterfaceBinder(map); + +diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BUILD.gn +--- a/chrome/browser/preferences/BUILD.gn ++++ b/chrome/browser/preferences/BUILD.gn +@@ -1,6 +1,10 @@ + # Copyright 2019 The Chromium Authors + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. ++# ++# This source code is a part of eyeo Chromium SDK. ++# Use of this source code is governed by the GPLv3 that can be found in the components/adblock/LICENSE file. + -+ -+ + + import("//build/config/android/rules.gni") + import("//third_party/jni_zero/jni_zero.gni") +@@ -40,6 +44,7 @@ java_cpp_strings("java_pref_names_srcjar") { + sources = [ + "//chrome/browser/enterprise/reporting/prefs.cc", + "//chrome/common/pref_names.h", ++ "//components/adblock/core/common/adblock_prefs.cc", + "//components/autofill/core/common/autofill_prefs.h", + "//components/commerce/core/pref_names.h", + "//components/dom_distiller/core/pref_names.h", +diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc +--- a/chrome/browser/prefs/chrome_pref_service_factory.cc ++++ b/chrome/browser/prefs/chrome_pref_service_factory.cc +@@ -1,6 +1,10 @@ + // Copyright 2012 The Chromium Authors + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. ++// ++// This source code is a part of eyeo Chromium SDK. ++// Use of this source code is governed by the GPLv3 that can be found in the ++// components/adblock/LICENSE file. + + #include "chrome/browser/prefs/chrome_pref_service_factory.h" + +@@ -40,6 +44,7 @@ + #include "chrome/grit/branded_strings.h" + #include "chrome/grit/browser_resources.h" + #include "chrome/grit/generated_resources.h" ++#include "components/adblock/core/common/adblock_prefs.h" + #include "components/component_updater/pref_names.h" + #include "components/policy/core/browser/configuration_policy_pref_store.h" + #include "components/pref_registry/pref_registry_syncable.h" +@@ -186,6 +191,12 @@ const prefs::TrackedPreferenceMetadata kTrackedPrefs[] = { + {32, prefs::kMediaCdmOriginData, EnforcementLevel::ENFORCE_ON_LOAD, + PrefTrackingStrategy::ATOMIC, ValueType::IMPERSONAL}, + #endif // BUILDFLAG(IS_WIN) ++ {100, adblock::common::prefs::kSubscriptionSignatures, ++ EnforcementLevel::ENFORCE_ON_LOAD, PrefTrackingStrategy::SPLIT, ++ ValueType::IMPERSONAL}, ++ {101, adblock::common::prefs::kLastUsedSchemaVersion, ++ EnforcementLevel::ENFORCE_ON_LOAD, PrefTrackingStrategy::ATOMIC, ++ ValueType::IMPERSONAL}, + + // See note at top, new items added here also need to be added to + // histograms.xml's TrackedPreference enum. +diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +--- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc ++++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +@@ -1,6 +1,10 @@ + // Copyright 2013 The Chromium Authors + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. ++// ++// This source code is a part of eyeo Chromium SDK. ++// Use of this source code is governed by the GPLv3 that can be found in the ++// components/adblock/LICENSE file. + + #include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h" + +@@ -12,6 +16,15 @@ + #include "build/chromeos_buildflags.h" + #include "chrome/browser/accessibility/accessibility_labels_service_factory.h" + #include "chrome/browser/accessibility/page_colors_factory.h" ++#include "chrome/browser/adblock/adblock_controller_factory.h" ++#include "chrome/browser/adblock/adblock_telemetry_service_factory.h" ++#include "chrome/browser/adblock/content_security_policy_injector_factory.h" ++#include "chrome/browser/adblock/element_hider_factory.h" ++#include "chrome/browser/adblock/resource_classification_runner_factory.h" ++#include "chrome/browser/adblock/session_stats_factory.h" ++#include "chrome/browser/adblock/sitekey_storage_factory.h" ++#include "chrome/browser/adblock/subscription_persistent_metadata_factory.h" ++#include "chrome/browser/adblock/subscription_service_factory.h" + #include "chrome/browser/autocomplete/autocomplete_classifier_factory.h" + #include "chrome/browser/autocomplete/document_suggestions_service_factory.h" + #include "chrome/browser/autocomplete/in_memory_url_index_factory.h" +@@ -257,6 +270,8 @@ + #include "chrome/browser/signin/signin_manager_android_factory.h" + #include "components/commerce/core/commerce_feature_list.h" + #include "components/commerce/core/proto/merchant_signal_db_content.pb.h" + -+ -+ -+ + -+ -diff --git a/chrome/test/data/adblock/popup_opener.html b/chrome/test/data/adblock/popup_opener.html -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/adblock/popup_opener.html -@@ -0,0 +1,26 @@ -+ + #include + + #include "base/memory/raw_ptr.h" +@@ -221,12 +225,22 @@ IN_PROC_BROWSER_TEST_F(ProfileKeyedServiceBrowserTest, + + IN_PROC_BROWSER_TEST_F(ProfileKeyedServiceBrowserTest, + SystemProfileParent_NeededServices) { ++ // clang-format off ++ // List of services expected to be created for the Parent System Profile. ++ std::set system_active_services { ++ // eyeo Chromium SDK services: ++ "AdblockController", ++ "AdblockSubscriptionPersistentMetadata", ++ "AdblockSubscriptionService", ++ "AdblockTelemetryService", ++ }; ++ // clang-format on + -+ -+ + Profile* system_profile = + CreateProfileAndWaitForAllTasks(ProfileManager::GetSystemProfilePath()); + ASSERT_FALSE(system_profile->IsOffTheRecord()); + ASSERT_TRUE(system_profile->IsSystemProfile()); +- TestKeyedProfileServicesActives(system_profile, +- /*expected_active_services_names=*/{}); ++ TestKeyedProfileServicesActives(system_profile, system_active_services); + } + + IN_PROC_BROWSER_TEST_F(ProfileKeyedServiceBrowserTest, +@@ -314,7 +328,7 @@ IN_PROC_BROWSER_TEST_F(ProfileKeyedServiceBrowserTest, + "UpdaterService", + "UsbDeviceManager", + "UsbDeviceResourceManager", +- "sct_reporting::Factory" ++ "sct_reporting::Factory", + }; + // clang-format on + +@@ -577,6 +591,17 @@ IN_PROC_BROWSER_TEST_F(ProfileKeyedServiceBrowserTest, + "feedback::FeedbackUploaderChrome", + "sct_reporting::Factory", + "ZeroSuggestCacheServiceFactory", + -+ -+ Trigger link based popup -+ -+ ++ // eyeo Chromium SDK services: ++ "AdblockController", ++ "AdblockPrivateAPI", ++ "AdblockSubscriptionPersistentMetadata", ++ "AdblockSubscriptionService", ++ "AdblockTelemetryService", ++ "EyeoFilteringPrivateAPI", ++ "ResourceClassificationRunner", ++ "SessionStats", ++ "SitekeyStorage", + }; + // clang-format on + +@@ -622,6 +647,17 @@ IN_PROC_BROWSER_TEST_F(ProfileKeyedServiceBrowserTest, + "PermissionsUpdaterShutdownFactory", + "PluginInfoHostImpl", + "TurnSyncOnHelperShutdownNotifier", + -+ -diff --git a/chrome/test/data/adblock/popup_parent.html b/chrome/test/data/adblock/popup_parent.html ++ // Eyeo services: ++ "AdblockController", ++ "AdblockSubscriptionPersistentMetadata", ++ "AdblockSubscriptionService", ++ "AdblockTelemetryService", ++ "ContentSecurityPolicyInjector", ++ "ElementHider", ++ "ResourceClassificationRunner", ++ "SessionStats", ++ "SitekeyStorage", + }; + // clang-format on + +diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn +--- a/chrome/browser/resources/BUILD.gn ++++ b/chrome/browser/resources/BUILD.gn +@@ -1,6 +1,9 @@ + # Copyright 2014 The Chromium Authors + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. ++# ++# This source code is a part of eyeo Chromium SDK. ++# Use of this source code is governed by the GPLv3 that can be found in the components/adblock/LICENSE file. + + import("//build/config/chromeos/ui_mode.gni") + import("//chrome/browser/buildflags.gni") +@@ -225,6 +228,7 @@ if (!is_android) { + group("dev_ui_resources") { + public_deps = [ + "accessibility:resources", ++ "adblock_internals:resources", + "bluetooth_internals:resources", + "browsing_topics:resources", + "components:resources", +@@ -283,6 +287,7 @@ repack("dev_ui_paks") { + + sources = [ + "$root_gen_dir/chrome/accessibility_resources.pak", ++ "$root_gen_dir/chrome/adblock_internals_resources.pak", + "$root_gen_dir/chrome/bluetooth_internals_resources.pak", + "$root_gen_dir/chrome/browsing_topics_internals_resources.pak", + "$root_gen_dir/chrome/components_resources.pak", +diff --git a/chrome/browser/resources/adblock_internals/BUILD.gn b/chrome/browser/resources/adblock_internals/BUILD.gn new file mode 100644 --- /dev/null -+++ b/chrome/test/data/adblock/popup_parent.html -@@ -0,0 +1,25 @@ -+ -+ -+ -+ ++++ b/chrome/browser/resources/adblock_internals/BUILD.gn +@@ -0,0 +1,29 @@ ++# ++# This file is part of eyeo Chromium SDK, ++# Copyright (C) 2006-present eyeo GmbH ++# ++# eyeo Chromium SDK is free software: you can redistribute it and/or modify ++# it under the terms of the GNU General Public License version 3 as ++# published by the Free Software Foundation. ++# ++# eyeo Chromium SDK is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with eyeo Chromium SDK. If not, see . + -+ -+ -+ ++import("//ui/webui/resources/tools/build_webui.gni") + -+ -diff --git a/chrome/test/data/adblock/resource.png b/chrome/test/data/adblock/resource.png -new file mode 100644 -index 0000000000000000000000000000000000000000..39f3630072b2677debf4aac66b20096852453a7f -GIT binary patch -literal 47293 -zcmeFZWl&z-k|>M?3&Ab8L(m6zcXxMp*Py}O-Q6u{aCevBP67cE9D>8Q$$QS3ckZ1# -z_nWG@|Au;~diGx3y?V8GFN$ylIq`S!IPhR#VDBU)M3lh5z?*?zGFWKfjc_SC2N)Pu -zg{O*!i;|%`k%N=HnWc>>k;_L1QzBCjOEWMqkJZTx^ZHCqw~!ZO3_XZBK@CKsWcTg8 -zhmXBpdnsR;Ps$IewUZAWo|W89=bq;T -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 -z*apMuKnvugUmYLvJi~U2+-j80_;uecizG( -zaA(gs_I&NP3p;L3vwcP|+oQNU)sRcG@;DY3O{iKqvifdq~+h|q-O=H$7>R(-_V-hURX+AeJ_MdnrA3xwjWyE*8E>_fGH0V5swObbhj -z9dz<(DMAE^j34Jo!krmb>Yk*uvV%?PiTPbD$2yY$WqUk!`V});4%SiFGTl@qT2?f! -z1e+k%lK_0#yYVY0e>?SL%wq0YnXm1ElqeNnDx=v6f)nypI8ju;ED&UeDc%~~^mL89 -z&t}Zsfqagy)8CwaGJ__(tVLk?CcL>8@7}^t^CzG4wCPi$wCZ3kOl>u&?-5zc+lE2LLLkE -zg(2%jtQGS0zT09%(`hIbf!a|xMM2@~9SOs}-A9}$G{lxb=F7lbD<}CL^ko@x`%PUA -zGnebBXv=wWwRIqL`VkfG6+#G-WNhH|0rt9|;Bb=b`E6WlK7+^b-8+;Lh=V22KlWaPGacuo<9uJhqwc6yknnqiW7`W5mGY67`KmO=Y$_U=Z{x2 -zso2s+K1Z|#DJxbF#ML3gkp*Uc@JgBu^5QlfCQfAY$44Ze(nY~Qs@+a4W+E9%J_<;n -z3OY+-g?HCOM$L3Y34I@Obnz9pUnE*jgeCyvmdrvXCra%r-zUk)xiKyA9%QD4Y%pc< -z5@;XA(q%Ev#l{@Swg46yJ=hR4x^452k7P2Vy3Mkp1u3JKyqVNhOLvVuMAcFjmWFp0 -zL@bB+P8kwQ$y#5j-&VAUDRd2SBO5DS!Rkh_k`SP;$&C@KzNBbw6-X=w*bTWNB4N*D -zXb?Jl!B6I4GjK~6-%=1Nyd69g1pSIi5faUttS==7AFLDE;skRs7#b`NOb*jT;1^h; -zLi4An{xV5Omt@%J<=Saw3Q5@9WQ2x8ZJGRry|`u%*$Vc}aP}F|^1S&ZEK-YlT$duR -zu?aLxIeDYdI=89S25I%#yRW?W#s&-V+hM9YD+78F@l}zD2(jco;_P`uicbBmqtCxF -zkx-*)g|k}O?GW+?+wEbgjm*H8n$xgN@QG`|IF;_91;>#;iKjH4h+c6ihms$x#r`(A -zKX-2-FH{GCW9lWlXM~L8)#6ElP5w^OCS2V~fDn`rARP&nB+8Q)d9#iT-#^R~#8({; -z7Mwqm!)sK6AH8_M5P?@LTN*fC=q`urXuQaciAoftOG<&C8LCfYV4-3LehC(V@r}q? -z=VnfdXZM97d@^s3Ikf*sahA& -zM>2vG#E)1_3f%8{N}&3V%Su1+^bNS+nGGJ0G0i6?2{>MGjw}k+Y`bbg5+&0>?9K?fLkd=E9_mgMpjqqR&ctafcO7hlw9RVpN3?Ro(l(T8}ohd-Mq!29K(E;a8*kW$=8KyB^55@ -zN-M-J4~1HY{jR<@bQ@~b{HRL1%zdC%TyJVt_`Og>?s&zVIyDWjbb)ZiJ-0IT$n>d_ -zMKBZ>L+P-ZN?rRrs1?{8OH(UrDDg3Tn!!AT60Vr8pcQ7Ev3WiRxdmuh&m~Z_G^*10 -zp#qERWR;;-W6n4ZdAc274)*lMYE5{8D<%`**Dp?H+L#7tu@5IHi{ -z$-&fHS&85RaTH6*O!Na!4MfvK=37KFYajIJ2&_cR(helgOr;^r)3rnJQd7;N+pb&i -z+jY47DJUiGdXX9A##r{=m@T#NuVO|xv?14l!*hYgR`Uo2sxp`1%tCBpJh21}!9e_~#xJVd3~-!*hA~NMd=~Bq9eZ0lQ;ffjOAX%C -z-lQFtF=Q$aJ)x*@*Z_Hkb0c)l7Bf2~eqKM0Up_|nzWF_Qvup=@9>nw9sqkCHCks_9 -zb-4FuqKj5uEm<>V)kVb|$0*Wh`xHCjXxcCvV8I*yv^05#;IW8G^zbk21C)h*e#i3Ve@g -zAlKR8s2BTQ?Z{7K(i_*cBVCIifA$lU1lU=SPa~D&9nlLXzEYOfffVl&?a!KwB*VOL -z3uuUV{5L$G8+D}+^#nEju`KPCr#%uY)uzE#eBBRt#wwP}N+VvA>1`9(Vd1fu4Nc9+OC){gTQgs9YB%{P#lul8%-a)0lEUEgk23S9~cnNd#kc -z19QW&1UG%;{0&1G0jDsH6QQmW+4xUn8(*iXOv+3A2H|;OtGJPA7Zruv#peswez*|& -zd}6rq_IwI~qc6-e4mW|SW6B8eveNWd18=}J(#SkOi(x!@i+{?vPEc@NGiWJ>bRXEJ -zb&WT+V{=aj%bS;M90xl?A()w0@!~a8A#EW$1s{aqV6`~y-e^Au@^kQ7IJMsI1w+z` -zLHOoLwY|e -zmj8gDMHz}QD7)H0T+?+~yh81cri@(Hjh7qxl?R_ddCbuli&YG!vK{AkR!??aADt#A9_#WF$((Y5_l6aLhNS=}?O9uNGqv+|80YLnAwVL6Y73QiOCs{|1f -z`8^6aoGdA>l;l@++G4m=5S--CFM8cgGeW^w&4v<=SmTTqI6-zL^ao}v9r1nDTT|OE -z7FAyzTHn|l2`L$2T8nY1$G=%9B}Vn7%G82sP(Y1)hn4_>VmOE0)wNyz@L_IkbwhZb -zuW#uTB5IgbR#S8v5#6Ur1$XP{jlx^D>pSe=00zx93ry*qgdk|9yeJ6Sx-{sET(x5~ -zhMkg>s5*?#VdBHi=A-uaO+u$wICT&c5II!Zbf=qnv$G8B7#aleMkKt{xaL9XHLFyj -zCc!Jg8{)(;bW;lK#*;Z?HCXPxJUU9AqHDw`@Yd4=qf+UK( -zw91^C!CZj$ZIpR%#m^@TCkaTsfW3Epb9Z)_uPN-pL5v+hAi9IHh4Wb*{|M*$C(g}J -z99Qc)WR`nAF@Dj$DJ6WJGOJmcZg~>MkRLueF~_~?)v_Ysm<*&5J3JN&MarrVG1bo@ -z^o{p|lMptVCp&1_F>m|A*|&GK)DX)bu#s7JK;YU2B*|fq>6YUThX(WYBJGHuO9`Q; -z4pRb3hvJ+B#PW~C^=5n{%Py{{Aw%I$ew0r-%g_~Q^Gi!y^>xZcIzBzFbsOWH*xw6& -zeYt$AINjd<0IIDOgDr)H6(og)|2ee>X7yP<@w^iK0(gV^+D+6LFx*MI -zars=D$QX`asnPR=$}qHCL9JJBGg!zz(8mN=_x8pPRs=>i)F9Rb5Z!|B?(Y{JkdQw! -zd}s_i-)fms1b-F_E;n1^$g@g`m!k->u~UWZDu6+`B918=knxd2S3bkjzd1X< -zrk`r)n114fPU;v1%N5`mcj+hDB+A)rbeVb>FjPxG-*w()45XKM9C2OQW1kWYed1xZ -zF`2s@Ff__v?sbA`NXSQ(M;S&}E%f$VG!4GQG;dNeuJ*dX3b|MvV_LFABn=m(6$}D< -z&zhv@FY1$=4>*bJ100gy*Yn8l38Sjeq{9#u3dEegXZ*Jt)tYHp4v9i=c@Kll{9>QB -z>1V3ee&5vDvde$!VRk5PdRl-6T}pa(Ru9H}>b2e8ZL1#j>e)j?{y0Z2>{J9M>z5DK -zkvq%2_bFdH&u{X$x+!)ZhDcbq*zQxHutB55%1?sRljC2YCPE{-|6enO{ -z$dQ)7HHwC;441LJExno9-!|&l>Xl!ljLS$rWZfVC$a@yWaLS$*e -zOQOyy3zBsZHnp&n@N_a&_LNgG_Ov$UG$G;VgXi(!0tncex)>69*xJ}Rb9wNR{GrPQ -ze1Cn-Ktl8f#KoGIL_=1ANZ8)Vl!%3%g&ssF>S5`|M8XG8#N%XQ#-$`8_74)k6EBH{ -zi;Dvn1B1J}JH0zIy}gq;10yFVCj*Fyfr*I@fS_~!Xy;<+L1*Vo`by$28X~67#!i+F -zE|&IoM6WarjqF`rcu7crb)tU|2Ud+mJ%E@0*x>c~4|!)769!4(fdx1Z0KmWm0&&oR -znCO@|8UBtBtjfy%3){~5A5sM5$>3q=z`#fkVz9OScNoqtqHh1T-+zeVtODF-F({cj -z+q*g$n~J)b+PRSaeNzV;SLeU)>FR9y`sxqgHYR2a08@W<{yUDiq^!cfa9+h|ZfWcA -z2jdm`?~o?O|AKRHb+Y*bV`9u;YGY~(FyahQX8d>XueWah!uWURd0qM67;&*Q`#*rc -zuKaJ{0C)c}@qdc<59@!_z$IdD?E1>1qzEs`>+!fu?2Ro=xc+=KWMnsG0Wq7>v9Ys& -z=vde}ndyu;nN8>nO<363m<>5t7+K8zMoQAo*~QS#*z}bYK%CwZpkrvv&dADX%1md% -z%EV5`!fI$l$H~HBOb23NWi>JaF|o0lu>6gLyptv1IEFTV=jxS|2|$XS%?t#P;-oWW -z<6r_v8MD%HG6F0a1Iz%#KxXV9lRu=hQ>tl -z%Kx^aVrgrt>|*#THAXfj7FH$>5F-a8BZ!5C{ojDpOr4wor+6jG2%=|V`m)2l)=Hy{LjLx8o3lKJxpyhL;&h`f1$E4bNnx>ntxkm;{1!~t4_H9NdQ_g -zeDy>{m|3Ul%Y-;lA+yC%x -zAwzS9KaV^N{~7TAMoHPi-res1ADw>#{TCHMCl_~nCu?~pc_S-RW0(J&&VK~_FG@;4 -zTy=JF`Y8E-In@6G$Mcu1O8~g`P9Oiazp|<0Ur&DpKO4(Gq9P*t6L0|I{Y(7LhHj>R -znHC_&zm|+G4DHNKfyn+3xBlmQ%m2U!*o+xLAY%|49gB&PAsq_`$e50U)0l~l*^JG^ -zjEU9M$Q1OKg8xO`+1|{>-O$NY&>XMXx6s0w7qcbrzGjz3aA>mUtb}|L_ -zw6J&iOUO2s|Df?l~V17`E -zkv{{>9-xh+#YO&1A;9j0+x>uVa1Iih&R}4eG*{=+>NF@Om6zv1IRtmMPjK=not8S205vm=kJzVY9|+usl9(29KX1@860 -z65{`4H0W&@S%d&`kaYI+4;nCP@YC?zWC3&!0*}p~*J2_c!VS=%1X~n@ClFe|=fiWI -zOG-*ktZi(HT3gd&Vh}?@LPkbM4d+W_Cvtcn;A@xKRg2Q!$x@+?7ArK|8%y@SuGBYue!Pn%mzI`BgbHUoBiKAHmNG6yl5BRfLr)ex@s54H$M(yHn4#g$ -zmrlLY8xhHf*OPMO8k#{9oE{#oyl(&dcum~Pi~H&6iEI~z=e=3Pg%0{&`>5mEtfeWJ -zkFm|xQV4(A_H@^+=<_baGeqjRYxUAkAHAfqKO(rqusBhnW?h__>8a6eUv4l*vbC*- -zqI@!GtwP`D`Y_?FnD&!|a$YQCQiddbfBT#-XUiAek7F{LeRJga%T`RU0rI6K$ueM4 -zQ`&hLMM~wH#=|k^N0qhpwrgznKAi`q$&bGfq&n@)QuY*+e)QQf6Iru>1(CubvR$7~ -zG#AQwmkn6%X2uR -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 -zOxom>x{+IRdWWf)hA5FBvYueE-x$ieSTz; -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 -z_xh_{^QnFR-q`n-=O;QC!P!OqvS)*_FI6= -zhNb_xSUImk13&#hMy>CexXKLwA?6Ci!Zfuz7j$_v9;&!iHYren9RcCr($dc8 -za9ybe`1crUG(yKtSkc8Ct9%3JzloiA-Pmf%cu6}kRkNRe!Q^@;>b}zjg3)EC-y?Kx -z*Rz()&}Db2Oad93PHPI`%bC80UUwKUqJCU*_ByzV&Ry)j+vuJu7NMO;@`D8;@cvXG -z$Chl}Qgm%?Xh;aO_y0%JS%yW`eQjI?1(XH>=@#kk5a|ZVp*x4}R#Lj8OF+82JBA*5 -zKspB;x{-R%^S`e53m@T}!#;bj`@Vl`9ntk>N&El)U5J4Q| -z?{+6C_;A)MiVsk=fVeJ+snHp -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 -zH6%qI4}Gvk7dKwyo4iqogAvH -zzG^1Ra!*dK`g-r(r7pGFQ9MOBkH7iQJS*SS|IN^jx{`5VORle1Ef(vt#xsz3%+66& -zU!y0e)qRdF1G>@%+JRdHZrtQ2TdX*IY~(6mI{ycZRa7)?&QSh4$txv*Qzys*7~S$_ -zVt~qKHtcBmDoh33LdaT%K!WVbC2${jE7|UuepX4U5+enG%Zm!>Wm1x^2x83_UNK -zF^?+4=E(Ae%KR!z`X(%X%|Ua{TI*g?!=4T1fRM%HmmHIdPTflGLavl+3=+bhaf9i;H)1|_XDJU~;&i=C$4>VA4a}M@6 -zy=b41)O5ZEVa1lJW{nt!BnFB38)b=$`6tRTBn(lY#%FE|AS{UAhA*}HQanEdQ*dw! -zORh%yiFWz$O0`a6t$faYr$OMWBiJ1BnOz!C@9nW}(|-iUgR!0otHH~?MuB$(TGcx8 -z4zVbY&u#x8V9pw^O?_@+3^M=i0X(@4^DgK?XOK^27;`g*rY1m|5&Z8K&Jfy0{>hTm -zLqTuZ1S>6lCM5|(csCz|l;}vKXl!UJ2xxve)kP(2M{xVoy!9R1!l`KEKIMa(2c*zA2#X7aWvY_@lw+X2m-JPcvCiYZ7 -zod|HByP(8w9;=&k3e*fq#$Jg#q?F)?G$ -zchsS-JJvMw76L2h5k7}n+n+=N=?h}p%7mYe-<7u<;6>FEH9qWls+>0)J@X2A9?_7i -zbbZ8DlBRKQ4m0d_SPqyUJt`NKhYbY5dx5|gSInj -zSr#%M6^84yfF$dwx2WuQ(pypJY|McR58kQ8kZ#uTIfOL82 -ze;^R1pjxD!=I>R-FPN59_SggYV`^v?ZhFxGy-bYC?GbEX9k;Etn%R5(BsECc>-T;L -zCT(@~1jyNtbXNe})BCVHmyR@|qrAD$!f;g)sKLtvqpgLVZF}kMYV=}4`f-3ZvH!By -zEji$dMIZNv6KH5napYY%<5kAV>>B>d_EEx@Bkq#b(RjXfnTUNi#%~_`vJjr-P{6=g -z`cq!e-=#CcIWSGeXb}p)0ZFO5#wJR=;SLJ2MKjT_`v%n63p&t)pAHS@xdnN9yMn{h -z0pg>%?ORYsG}rlx9PYjw@wqE!%TfJUX|BQez%9}9^@$iD9kZ!&%LaJxlK?a_T2w?&OhPh^Fz-m`)sV|@XlY1nVbQzoksf!-f2mA6^D9SR -zDjhZC1K_3C6Mq_UJu?Z^P3-vv`#r)tT=y$3hO>ZM@07B#87_8lfZNX*Ck3iGL4?K9(yT(YBd}p99)O4w=Vfu1 -z9E7x4%B8E5yf2Iiv7WEdE`3CdI?lL$5_ofDDn+Zjj>xi&Q=%~utX+3>al!3j%E8A0 -z!v&`TM7X)#W~11;h5?G{i;4;seP@bd`$0B&CcyF20xLfz4KV4V%E~0o(B_i#-wSZ_ -zh6XY!7LCa_Ek7kZMT@fmDb4_R#*BMkV2$H5Q1eggWSMg+aaQItFzRCHut+mT)|WDl -zSU!!v5@u!cSqx*Vh`~-nS2c|P-v9KZa70r}TlzC- -zutGv~kcB@Hc`4mvfw@dlb2H|V?BP6b9q7oqT`3k7H*~;+kUUCm$>B?h9EemT(wfX6 -zR5g=T8IUO*=m~l~l=~_^YtFA-UwZ`Hw6E6!t$nd%BBOv*FM0bq)Iss&Pgd#l4*}jy -zByx68pDE|BGWPeec{%2Bm5z%l?1{h127<=UrX4F%b`KuEBE)!u1vI_guoS0+xW$bb -zcPE-b{8x^fZ>sf~ -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 -zM;LqdYJuW!K4tjl -z_}fxbRjs-S04+i+ehA;^L9D>e?2P!_>xEl{{CBB-(JKA*$-?rzgb~dlx>UBj0|LxR -zHFLj3HQ$2WLsG;*jt0?J7)zZ121xDh53FklU?sF08yo$LOG_hCjRMj?Q+{SAlEe;q -ze!+_rjvFD_NV{SBvB{j%`vmA*dpf3g-lSOUvS+$L1g~^-WqZ39YrmtN3`vqy<3AQ| -zvWNft==HuH&tlb-QJq$sp}wRtr+&bWp>8-bmOe-nOJoFpDM;G>a9~FDJ?Bp+1OD`Y -zl-O<4G+x~$%Ix_?Z}yQ%B)NZK#R;^)b@b%NO6mK~@9GCm&@WWzNYmm9+M6k2>pzIH -zMN)4s7E?qLzKCO<#y-cp@g1=i6jAp!^s^z!{dc&2aa8S>P#7ho`cqrDu4qW`X1^r39OlDMaxzf -z1ED&4N@);d?^D{st#fc*|PB5kJ?abatl! -zK#R1;A$8(ew?*U+19MGX?k8Z*%fPD^Fd^T!NolpM_bIY3agdCghmV6pSW%4+%^O-l -zk;xn}5G)!*9x7t?;rd8yIPhtoO7sj8_}NTiRn25#Z_h{cxjC0!KzOuj(qH)U)?v;4 -zLRXjA&Jd=&UTxvVGHLvV9R*-D;WYzq$=xnjgDn}jQi-lv7n=ARUXtOy|3C>QP -zC~j)v<4g6`RG7(*bF!4s$B%>ftHx&ad>0$pM&2X-q{B#sKEez0DeD4kn6Sb;W`y_$ -zhs|Rp%`QW<0)>gcB)@j?j!CrKxL{0gkame)~km9 -zQ6h;L%)fm!>>!5<2;JM;IBdk~IqodMjZA9-zilceq{wbW!!nOrqT$@6kiynl@;LZy -zSSfRqTSN0%py;!})7I>B6x`!-OO4K<+h_1YDDgTf-9%55y&pLn`PE#LY9*LmI7M2` -zLU3=sfN@6c#t2gZ8HxN4o^#b&4fdGJFagiMu%g9fF8PxUTHl*PO8^)9k5&L03&0S* -zt}~3|mhD*XnxenG2A>Cb3&x+>{;SBAfF|t=#3NXDMv?hY%+88dG){7=JRYWqzARF9 -zJkdl7hE+1kL)E~mB0WiZ?JZz;5+(xPJO;QljS@EH{!LAQH1dghFJ`6UM(Emq&`vn3P@FRa7*^J6`#x-Iee3_agpz#DO+7O>y`TW2pn -z1Ak7iUv6sU)R=YMq_tH`l*1?fmxa81)4q9q -zeC-kC_AI!2XTv;f7emdj%ujx2uZ@+i-;_b!JYSU_H|o4p#qXzkx%QTSaJ^7B6vCtJ -zu%q&{AN;TkJBBaWuQJpP*lV-U0Pz#mF1RaXcM%>VbpMZ -zQiuhk`c5~+dIV*UCPJtrDr{0=L|V`FXRNpTA%FbudaIvO_U@3?Z*~RZ)KqN#{pyFJ -z-15TYaA3UDR+$n>EBH~Dz_Vfd=1%#O(lZ#yVRi9h9?oP$fdGsaYVVzpQ%d^IuK)ID -z5)I$1$FQv+O)Kt){vvNfrohuD&x_;s6W}my_5F&6<_uxsQ)R%v+w<&(&a!!KUNNpT -zIHSGn_R;FTFfaOH(K^ugU7eHu>j5>259G}Iy%vkDC`)w{HKI_JP#ySxTB{6z+J1dU -z>fAmQj^7DofzB*1j{%iJ3jm-+jhLU?M@Vj^YMN&H-mczsKl=ltctER$W1~%fJ}~_~ -zq<0;zlcoJdtw8NP@#{dd^CcOi*C%_tkCupp30BsRfPrx;;ZAwgxphQX&6Aw?FCmWMO4n+l>7$DIb1#Otp -zXq$4+iT^4T7)Hiy)bvB_d66PvY*)amyMagSJ%rxL|klcJvTq(1zC0|s6YT^m)J%#)NSjgOusXLid=IKyu@sl1X3)Y -zdAKr%E~3wxnp2P6YUB+4!G4F^Xa$x;3;G5vuc>KFxtrifY38f3@Dy7X48PsP>QVvb -zBvCx>%LFDU(mx9)$b!4l7H+e&E|ln#v`K}%PO+Zu-Wm09@EmuTa@590x?u|HzWc1! -zOq9)vd+94X5GP8grtvxs8pWU)Vc#Ud2gbaNz34Zx2l7{f;}*-;dG$Zd-Re;PiJ-?= -z?32k;MZQuXNG;kN=EQX^Q`oF}QvEvGb5oSy*x&#rn4FYsUZ -zit~lLmonD@9sb*yKP%`xu_7pop4LCY{;<2(Vkf%o`QwqncCF%$=#yYAPj!P0jRVT^ -z$IQu}&M(IdXd(6bu5u`LsSQrN>KamNl*DJV(^@M2%mZGG{cHZ=i>-Ei3aPA}SMQ8& -z`<{SW-cu{W9`k?0>cYB!9_RC0vu?AAJ|9-26*pzsqaUF*?Z3}0xL3`c6)yLcWO2{# -zI%VZ~Ld|*mo%M&l0^f!}9Q|zI40Jou94PqiD(Dy+-cK$G+n`N45LR+G$w1IRz#WMU -zGf9dZoC$?I)8lPC<&z{YnGykk?zjDfk|tYN5(80v{~DBt6U$|oNLy>J2DE+CW4c|% -zXQk1Xe~=COMvca$n}9i6$mu`(I#B?lciZA@3-bvgvj(LI+<9a+nsFW)Ad3jGwp02= -z@`ml?&>YrFMbI#Zi*cVod)5Gfx*N#TCFKgY;el{lfyc!?AF5(Ic_hF+uCCXP_D^Fi -z;E^~V&QL3rAO&3RxLpO6-rWAm`q)Bhv-9A4?Ujq0z~`HFV0?sYl{~n9S?|Kr-Q9n0 -z{rPcy`W&?8VSbtFr(;QJ -zU|jLbjCy8fWk5#s*7sq;$S<0tsw+{I!RdO47uR%Y3v(tNoy~r^|NEL6LF2qS-Z^!) -zrN&?r8RoUp>3EZaE-|%!t>sIeO+NY(zv+#LRLt6L$1LFZX}KGoD&i<9_hF|JDtdqD8+dE9{!xu&=Z|J( -z76LVfHX^O5KX20}rFl@zDEXJE(8iVb>20Ux#4zYB%w1qgXi|k@RUBvGX&QJt!O=GD9QKKf&V3aD!QN}@MQi~;Q!>^F0F#VQ9d`rW)NefjQv -zA)t2J-amzC4_$o9ic3wN@em_nN&fxaNrd(+HWt~zTPN0=NaG#}31LYWa0b$9@M05L -z+r#--CGhfz1>{v<3HVa}M*L%Ia$JvPe8+4b<189WCP}%IY!i#}A%}6Jty)pO*L`YC -zu*pR0gL#UnDI+wh{oa{0Rj67o6n4Lt@CWC_(vVEM(jLMNCii`M(QlS+Hj_g@|5vB0 -z2A~4fo)8eRes<^yX_7^H(}HE!ouko4W%FuJ-m&4+Ki6D%4wm1~z&{V~Jr4gw-DTL} -z(tVd@7!dL7Oh)OtaumMV2imchbI(@_u$&lBaZP#7&u%{f=_?gi3e!IaiN}99*FRiLHsak@3&FGW@ -z8KKp=tDck1M&j7k74KYON_Gj7sV6{4^n3Q8TaG>{s+@e8c@StZyJ!}>?Zp}{{@7v) -zdN=K=ALwS@`!>1%bhA|W9dVxwi+t~UwN7&UYWer|?_#&>Tmut}4Ueg(iFS|pDx@{n -zA1+iuxM%ko^s}$q-l+c^ePfr}MEagp9Uo`RuMOJccI|`WkxhE#g%j?Tk={g|or~L)5x^w!A{@ -zXC6`k;0xFv4Fx6XtIw_xFm^GV-1jg#)K`X@bo)0mJnYKrr`)wQaeMz5&e2={J8lb9 -zr`)c|6*-e9U6z$#zsml4XItenU`K@LO!3CeGo|98-x85!{%Q`42YRzSj+P+xY#rmS -zdQCH{Fcn^-o+dCLrwV+mh~09Y-Kl=OsL~uG8I-Jf<}vmiO(-g!C|T10HumZ^W6F`y(NPwa)(;r~{mNEA_laUG$6jx*2!q -z$Ecx4`{J6K|LGNluFFEUM<`?M#20q@Jh#tKg#W^w;SWwg$h7x6=IT2M0=nZCQlwK@K;wy0?`$fn2R%sX>A$+& -zT)Nbhhj-p%)!9QFnvNDHuCsj?+fQEjKT1R^{T{Zwz*nGiTODxL@5#3L>kSs{LcDDO -zzIK(KEfbM1E8))q{0Y*-W3#}U7Z&~bg{&^P{%86#OSo8~ZAorT1FOvyW&sKhX+{0j -z*K;#V)M5eVC@BAifL$TcGJetq@Z6o3lgA=tkl;rF5&7S=HND)%#L@dV3{HFqjqXOZ -zS*=YoliD3Q(=P*oP`0ol8FgV0JLICgqIwuNDzo7CTVj)3pP$~wf8XfVhHR;q8!j`8 -zcm1kww!=sMjxh$u!Su0O|(g8;N_ly)!gdu72J3R5qy=rfJT -z+B38^pMUI1@8V?W2r8)vV!jf_scDnY5kvviHXiz$v-=LOPVx?NHsHw{vw!9%qQynS -zLkmZJ9V~NYE>!7W&YR8&+n -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

7cOc&DF@xl^-3}B(kApb -z`7sOiU(VM2n3FyYN0QCw{@CU~VaPoQ{_ZCjRoLxp#J<|FPdrk?jZ;319Wmp*NJJI} -zsppTCVBV2Qpktoxo5K)(d6Jd6^C}sAnC{)*xCG>KTJ07tWMioL2Q5x?XCpPwR9X|u -z{?vH7muk2;DpN1--K%$**MuOYL~^l+E&liKv6lZMO7Lc14;8rptXF#4WRg5#`Y6FC -ze0Sz$aeQP+=RGP^FU@p-e+394rT^Y2i8&dGIY`g|wK%@iPEh!}CJPQ8-ifj7V6Ygs -zw7No2od2O2ATikparU@t>2M?duf4N;i?R#Xz6A;hBGM_{J(7bwG}0XcLzfIlr-C3M -zEj2Vq!_c50-OW&gbax{S67J>ue%k-T=HTE99K*ftT5Da`d7i(bwl<(pI@zDQh%7(Z -zYi6h|HU8v>r)O$aH#lA>Q>T`nPb;$P#z@tZ70>xKeJI#b&SfA%{l@%i>7yTFcj!EtKI{HHB#azJREico%6-`Z<| -z0L5YY7y7bHd=Ul5xh~|0eaau^I8QD=vVn2n{-7marQNZkhjdFqCW1m`9uy)^k-2!w -zzca%z^KJRW`1<@8oM0k65v-n|Tp~L4-4-pv#W(0BZb;arOmnmJIP>qes&D&H8P)_R -zoZ;#?>6jIqk};-AuEX;KO*q=&l8;!iIjj{fR7V*m}XC=Fk2J+!hb70(k^?PdDJdFZ*k^KR5(Zb_+?XIeP&y7MGRS4lhiMzUl7g1MgRp+- -zxicUPq#qWR^p#{>JDmZ^_5yuY;rwpu<;a3+s_)ss#*^w|89PIs`3p&wah&mF$-N-1 -zqpS5d1oVG`vL)2fqpmm-_)o61cg#%5?buB_{@8qR90?!ZrCmxm@+53T1|SuBH!C=n -zBm>MvN!R(Ni=gY-vI52{qg1z)3io<}1rM-_=t-7Hnm5Q}&#>?C`1`xtIN2JUomwzn1(_AFLTLT9ad0@+hz -zPubB8c^XmWpG84hA8Prwr&LZVQ4jI)q2~C+rA;Wt^XRYPLAEVJq?8A;T$JbE -zVMjls{tSg+9S9w&vl$R#uLJ8#Qe$M53a{pWMdbnkVx_phoRa$ENy(MbacLHg5ESTK -zD%Av9={;(~9!>K6WGXx -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 -zBQXTJ8WHx9l|F{Y�ECN!%-TBQwoYFsV*9D@||TI@CMShZDOmxz{Iuk^cE{_hFzU -zJ$$w?En!k%#eI6%HI>9{ziD&JRK?ET-!{JN?D(d9Og4YxyH0{bfGwgP=esF!*}Z#s -z&^OW&T5UY1Co1p>WvY3W5;^3qb^W2+y!0>E<6wWCw47v4E|IVOMY&a88gnHk -z+Su00naRs;v<|hYAg%v*-SEe#;SU@9dZjvxaNHloOjBXY8yL-3E8*O)&&M@YomM)r -zK#fsuL5$T3v-np)OM91nOWh|s^4m+pr~wgGb#>hCY*u%-XU^}S5|cl0JWr$jG9z~Z -z1RNRW$k6WBe6HDi@tK(nFRH@Al-chxfg42A^%RyA3hn+lzJlhMzqr}76JPiHyA&dw -zqd7kL_~-2g3f{CUP%lEVWAI-%CPY!4ErvGqy#=Y_(R(;Y7PWT8Ix{ -zKk+EPXqrN%z$$$X^!b%XaLjX%4)M%F1ukscB??H-bZzWK?i(-D8^u%^3@yBn&-L{p -z|FDXaEq89fZc1%yYkOr}eS6o;w(HZ-(12pj@C*RbbY>vv`zmIQeod@$do3*^5Qs00 -zqPj=aVgP%(eze-tkm9fTMz1j*Z8gPf-Km&7JdJQ+@Ryc+qWGnZmSKhW@w-vbZX6oUlIig -z`ZY)QwA_l-KRZ*?HRup*J}2_MKA0^+mfR%V|8ZSvd~EG^ClnG*ZEjkesmwlOi>qat -zdJc;xe#oP&7TNwbXB(bj!DY-+-@AcR%F3w9r2DjNML2O%&22S|H6*jBr5LQVCnj|M -zh2m3tZ_xr;4!7Mm6vBi(h~hU2#FEdSti`ETnfKrkga+P}hkI1&8fw+LdCUOVwZeozrfxf#qfh@7-!j_Ko1=zk8nkqWH2eAvRJ_*&N3dHK565Ay835>J-* -zz56jXJ>3VQT2O%dQ&?L1@t$W>UY@1iLb^U7yvyx_2nA0+N$|>qj#BYVRp@!&uGu0D>`@6HEHr097RVNpm$*GpVJ} -zwlGDOt6+pju=Vroq51V8yz8*scTzc3!P4`O-0;b*-<@u35n-lY3*tTWm}sN6Hba}% -zHiaovI&3*cUFH0l<5|`lal?g>{qD++mXtQIn{I5T&kna23Lr)3bOQ -z@bI38o+S-Ii-hxe*4jAbb;uP}w -zHk=96bV&=)Z_Lf<|1qv==bUjsu0JjQlg9fup^s7?&H4n*DQ2nJpht7$rd#~PL0H1( -zco7htDfcOJ4Xsq@7yTCcU6-!qP31YS!Zxq+!QnBi_F*(S812yEP-|M9raw&+X5`pa -zRzLQ~-&Q6MTtIoca9fSEMq`#D?u1{P$K;i+V8_xFD))D5fCDxq!BoscNtv~o4qG@l -z$U3wTF9-<;lw1`uQW5Z5!35LK3-HL?`Aeug!{dKV%>?0n!yqEVLCqZ3r;ztM;g8RT -zBag>{Au;FM&a+A5VWf8P*3M3LRn_tRrMhXuX70B0HYta6Q&JyqA0H5W`Y$o~^!%KU -zhvz>I;<#t`ofe4G=dHRdYgb+MoTluj?1|wMl8Na-l9qYuc(wf6{`scag+L*;e9`}o -zQ;QHWaXVhXsW(3{GiYvn%?1{pq~v7ldhcn(adA1JXtgJ>B7l={u6cWVPt}4? -z6BB#-?AZ(KAOJvL%N>yY5QyM{_2Sx*X9#8azezE*}(Gsnn(RmjV| -zls43GZz%oQ7!OrK%}q36)Xpl)$YA{X^=o{5yu$OyOaMOh56GvBgvUF`V$}=~yUv35 -zZuR{9{N6%SDoCe&jvdr%Rm~C>kj)aL-JK`H+*yLh7t-NBu-?A!zIt-CwYO&h)RZMg -z4G7Bt#QjT#UWTc%@oxqsk+K(i^9_mMBPv1qd~ire-@5an*Wkswrt|Y#+nz -z?X9ba2O5p;=!;_}qoib@j#m7UhtL0|WBDcilYhdbf0orsGmL+{@}eTF^2y?RqMs7K -zCj7@RWhF87OGEE$Eyj?mmLpjS#4iImS$=J8;=%$9jEjtlijfj82Z{WC5co5qM28)i -z`vKb(;MS7C(hrA(E4R2f9MC}k1`04LJFTk4o_(O1Vqdi+fD^a}Rm@_3V5W|4$R1^h -zkq-^dzUHfdd_YJf!8S8uQdsR>lS5KZt<97)Z_c@d2?&${=Pz -z-M~N*{03O?ahHz3bUL|~9%u4`hU2%0|Di?oG*DSRSzTQXl%$o+!hiAN1z1ji)@-P3 -zPUork5)DZ_8iKCDU)J*g}DiQdxqG*@GO0#8Y19 -zdmKE+3jtx!U=CJ7L+y^QP9J(sPMWzt(%y#N3SIc<6cZKy3Ija){QO`5-8m-J1uq(X -zbC}EKP?uTd98M!c79+z{XNc{z*Qc>M_ZheCIV|W`pq6f5=2>=30=E&kDF5yrf>8WO -z+2oWII`T+x-^%A{tmCpPGVGO=y?h8Bn4j|wZ0zhu*SFwp5FZWJqdPl0;5t8g;D3CH -z7+Ckl@WlOcPyeOMkXy~=D}r~D0m_E`_ewZ}VYWXKwl~Lqw2UVdv0xWzg?U1U#>WXO -z^-4ZuG=FtvOQ1_vNeqW6gk-Z6BE1(v_XxhWz(|$z1;Er+@X!VL|Gd8OC5x{Z78ebo%?f -zB0}jryO0j`*ZCy+V9JM5KZBLmQtH9VNdSJi8Ne3TB_lL=5`1CXn@ZOilBS`Bt6eVJ -zU%wF$z$HI?GC6g&;vCv;n|haGrOEo0i!h3WEif5|&wqQV?eAU`us`>SJ;FF3gIQe)Fe7%uT -KkuH-o3HTopq;ALn - -literal 0 -HcmV?d00001 - -diff --git a/chrome/test/data/adblock/tab-restore.html b/chrome/test/data/adblock/tab-restore.html ++build_webui("build") { ++ grd_prefix = "adblock_internals" ++ static_files = [ "adblock_internals.html" ] ++ non_web_component_files = [ "adblock_internals.ts" ] ++ mojo_files_deps = [ "//chrome/browser/ui/webui/adblock_internals:mojo_bindings_ts__generator" ] ++ mojo_files = [ "$root_gen_dir/chrome/browser/ui/webui/adblock_internals/adblock_internals.mojom-webui.ts" ] ++ ts_deps = [ ++ "//ui/webui/resources/js:build_ts", ++ "//ui/webui/resources/mojo:build_ts", ++ ] ++} +diff --git a/chrome/browser/resources/adblock_internals/adblock_internals.html b/chrome/browser/resources/adblock_internals/adblock_internals.html new file mode 100644 --- /dev/null -+++ b/chrome/test/data/adblock/tab-restore.html -@@ -0,0 +1,33 @@ ++++ b/chrome/browser/resources/adblock_internals/adblock_internals.html +@@ -0,0 +1,38 @@ + + -+ -+ ++ ++ ++ + -+ ++ ++ ++ Ad-Filtering Internals ++ + -+ -+ -+ ++ ++ ++ ++ ++ ++ ++


++ ++

 +
++
 +
-diff --git a/chrome/test/data/adblock/wbn/LICENSE b/chrome/test/data/adblock/wbn/LICENSE
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/wbn/LICENSE
-@@ -0,0 +1,14 @@
-+// This file is part of eyeo Chromium SDK,
-+// Copyright (C) 2006-present eyeo GmbH
-+//
-+// eyeo Chromium SDK is free software: you can redistribute it and/or modify
-+// it under the terms of the GNU General Public License version 3 as
-+// published by the Free Software Foundation.
-+//
-+// eyeo Chromium SDK is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+//
-+// You should have received a copy of the GNU General Public License
-+// along with eyeo Chromium SDK.  If not, see .
-diff --git a/chrome/test/data/adblock/wbn/blocked_bundle/LICENSE b/chrome/test/data/adblock/wbn/blocked_bundle/LICENSE
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/wbn/blocked_bundle/LICENSE
-@@ -0,0 +1,14 @@
-+// This file is part of eyeo Chromium SDK,
-+// Copyright (C) 2006-present eyeo GmbH
-+//
-+// eyeo Chromium SDK is free software: you can redistribute it and/or modify
-+// it under the terms of the GNU General Public License version 3 as
-+// published by the Free Software Foundation.
-+//
-+// eyeo Chromium SDK is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+//
-+// You should have received a copy of the GNU General Public License
-+// along with eyeo Chromium SDK.  If not, see .
-diff --git a/chrome/test/data/adblock/wbn/blocked_bundle/fetch_result_1_blocked_bundle.json b/chrome/test/data/adblock/wbn/blocked_bundle/fetch_result_1_blocked_bundle.json
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/wbn/blocked_bundle/fetch_result_1_blocked_bundle.json
-@@ -0,0 +1 @@
-+{ "method": "fetch", "result": 1 }
-diff --git a/chrome/test/data/adblock/wbn/blocked_bundle/fetch_result_2_blocked_bundle.json b/chrome/test/data/adblock/wbn/blocked_bundle/fetch_result_2_blocked_bundle.json
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/wbn/blocked_bundle/fetch_result_2_blocked_bundle.json
-@@ -0,0 +1 @@
-+{ "method": "fetch", "result": 2 }
-diff --git a/chrome/test/data/adblock/wbn/by_bundle_file/LICENSE b/chrome/test/data/adblock/wbn/by_bundle_file/LICENSE
+diff --git a/chrome/browser/resources/adblock_internals/adblock_internals.ts b/chrome/browser/resources/adblock_internals/adblock_internals.ts
 new file mode 100644
 --- /dev/null
-+++ b/chrome/test/data/adblock/wbn/by_bundle_file/LICENSE
-@@ -0,0 +1,14 @@
++++ b/chrome/browser/resources/adblock_internals/adblock_internals.ts
+@@ -0,0 +1,43 @@
 +// This file is part of eyeo Chromium SDK,
 +// Copyright (C) 2006-present eyeo GmbH
 +//
@@ -9562,126 +2384,258 @@ new file mode 100644
 +//
 +// You should have received a copy of the GNU General Public License
 +// along with eyeo Chromium SDK.  If not, see .
-diff --git a/chrome/test/data/adblock/wbn/by_bundle_file/fetch_result_2_subresource_loading.json b/chrome/test/data/adblock/wbn/by_bundle_file/fetch_result_2_subresource_loading.json
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/wbn/by_bundle_file/fetch_result_2_subresource_loading.json
-@@ -0,0 +1 @@
-+{ "method": "fetch", "result": 2 }
-diff --git a/chrome/test/data/adblock/wbn/by_bundle_file/green_subresource_loading.css b/chrome/test/data/adblock/wbn/by_bundle_file/green_subresource_loading.css
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/wbn/by_bundle_file/green_subresource_loading.css
-@@ -0,0 +1 @@
-+.green { background-color: green }
-diff --git a/chrome/test/data/adblock/wbn/by_bundle_file/green_subresource_loading.png b/chrome/test/data/adblock/wbn/by_bundle_file/green_subresource_loading.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..2040a0a2b2cd006f3ade7be290ff37ad8fd0452e
-GIT binary patch
-literal 772
-zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911L)MWvCLm {
++  const info = await AdblockInternalsPageHandler.getRemote().getDebugInfo();
++  return info.debugInfo;
++}
++
++async function refresh() {
++  getRequiredElement('content').innerText = await debugInfo();
++}
++
++getRequiredElement('copy-button').addEventListener('click', async () => {
++  navigator.clipboard.writeText(await debugInfo());
++});
++
++getRequiredElement('download-button').addEventListener('click', async () => {
++  const url = URL.createObjectURL(new Blob([await debugInfo()], {type: 'text/plain'}));
++  const a = document.createElement('a');
++  a.href = url;
++  a.download = 'adblock-internals.txt';
++  a.click();
++  URL.revokeObjectURL(url);
++});
++
++getRequiredElement('refresh').addEventListener('click', refresh);
++
++document.addEventListener('DOMContentLoaded', refresh);
+diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
+--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
++++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
+@@ -5,6 +5,10 @@
+ // This test creates a fake safebrowsing service, where we can inject known-
+ // threat urls.  It then uses a real browser to go to these urls, and sends
+ // "goback" or "proceed" commands and verifies they work.
 +//
-+// eyeo Chromium SDK is free software: you can redistribute it and/or modify
-+// it under the terms of the GNU General Public License version 3 as
-+// published by the Free Software Foundation.
++// This source code is a part of eyeo Chromium SDK.
++// Use of this source code is governed by the GPLv3 that can be found in the
++// components/adblock/LICENSE file.
+ 
+ #include "components/safe_browsing/content/browser/safe_browsing_blocking_page.h"
+ 
+@@ -67,6 +71,7 @@
+ #include "chrome/common/url_constants.h"
+ #include "chrome/test/base/in_process_browser_test.h"
+ #include "chrome/test/base/ui_test_utils.h"
++#include "components/adblock/core/features.h"
+ #include "components/google/core/common/google_util.h"
+ #include "components/grit/components_resources.h"
+ #include "components/omnibox/browser/omnibox_prefs.h"
+@@ -673,6 +678,8 @@ class SafeBrowsingBlockingPageBrowserTest
+         {tag_and_attribute, add_warning_shown_timestamp_csbrrs,
+          create_warning_shown_csbrrs},
+         {});
++    scoped_feature_list_.InitWithFeaturesAndParameters(
++        {tag_and_attribute}, {adblock::kAdblockPlusFeature});
+   }
+ 
+   SafeBrowsingBlockingPageBrowserTest(
+diff --git a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc
+--- a/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc
++++ b/chrome/browser/subresource_filter/subresource_filter_browser_test_harness.cc
+@@ -1,6 +1,10 @@
+ // Copyright 2017 The Chromium Authors
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
 +//
-+// eyeo Chromium SDK is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
++// This source code is a part of eyeo Chromium SDK.
++// Use of this source code is governed by the GPLv3 that can be found in the
++// components/adblock/LICENSE file.
+ 
+ #include "chrome/browser/subresource_filter/subresource_filter_browser_test_harness.h"
+ 
+@@ -22,6 +26,7 @@
+ #include "chrome/common/chrome_features.h"
+ #include "chrome/common/chrome_paths.h"
+ #include "chrome/test/base/chrome_test_utils.h"
++#include "components/adblock/core/features.h"
+ #include "components/blocked_content/safe_browsing_triggered_popup_blocker.h"
+ #include "components/content_settings/browser/page_specific_content_settings.h"
+ #include "components/safe_browsing/core/browser/db/v4_protocol_manager_util.h"
+@@ -70,7 +75,8 @@ MockSubresourceFilterObserver::~MockSubresourceFilterObserver() = default;
+ SubresourceFilterBrowserTest::SubresourceFilterBrowserTest() {
+   scoped_feature_list_.InitWithFeatures(
+       /*enabled_features=*/{kAdTagging},
+-      /*disabled_features=*/{features::kHttpsUpgrades});
++      /*disabled_features=*/{features::kHttpsUpgrades,
++                             adblock::kAdblockPlusFeature});
+ }
+ 
+ SubresourceFilterBrowserTest::~SubresourceFilterBrowserTest() = default;
+diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
+--- a/chrome/browser/ui/BUILD.gn
++++ b/chrome/browser/ui/BUILD.gn
+@@ -1,6 +1,10 @@
+ # Copyright 2014 The Chromium Authors
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
++#
++# This source code is a part of eyeo Chromium SDK.
++# Use of this source code is governed by the GPLv3 that can be found in the components/adblock/LICENSE file.
++
+ 
+ import("//build/config/buildflags_paint_preview.gni")
+ import("//build/config/chromeos/ui_mode.gni")
+@@ -241,6 +245,10 @@ static_library("ui") {
+     "webui/about/about_ui.h",
+     "webui/accessibility/accessibility_ui.cc",
+     "webui/accessibility/accessibility_ui.h",
++    "webui/adblock_internals/adblock_internals_page_handler_impl.cc",
++    "webui/adblock_internals/adblock_internals_page_handler_impl.h",
++    "webui/adblock_internals/adblock_internals_ui.cc",
++    "webui/adblock_internals/adblock_internals_ui.h",
+     "webui/autofill_and_password_manager_internals/autofill_internals_ui.cc",
+     "webui/autofill_and_password_manager_internals/autofill_internals_ui.h",
+     "webui/autofill_and_password_manager_internals/internals_ui_handler.cc",
+@@ -447,6 +455,7 @@ static_library("ui") {
+     "//chrome/browser/storage_access_api",
+     "//chrome/browser/ui/side_panel:side_panel_enums",
+     "//chrome/browser/ui/webui/location_internals:mojo_bindings",
++    "//chrome/browser/ui/webui/adblock_internals:mojo_bindings",
+     "//chrome/browser/ui/webui/omnibox:mojo_bindings",
+     "//chrome/browser/ui/webui/privacy_sandbox:mojo_bindings",
+     "//chrome/browser/ui/webui/segmentation_internals:mojo_bindings",
+@@ -463,6 +472,7 @@ static_library("ui") {
+     "//components/access_code_cast/common:metrics",
+     "//components/account_id",
+     "//components/affiliations/core/browser:affiliations",
++    "//components/adblock/content:browser",
+     "//components/autofill/content/browser",
+     "//components/autofill/content/browser:risk_proto",
+     "//components/autofill/core/browser",
+diff --git a/chrome/browser/ui/prefs/pref_watcher.cc b/chrome/browser/ui/prefs/pref_watcher.cc
+--- a/chrome/browser/ui/prefs/pref_watcher.cc
++++ b/chrome/browser/ui/prefs/pref_watcher.cc
+@@ -2,6 +2,10 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+ 
++// This source code is a part of eyeo Chromium SDK.
++// Use of this source code is governed by the GPLv3 that can be found in the
++// components/adblock/LICENSE file.
++
+ #include "chrome/browser/ui/prefs/pref_watcher.h"
+ 
+ #include "base/functional/bind.h"
+@@ -13,6 +17,7 @@
+ #include "chrome/browser/renderer_preferences_util.h"
+ #include "chrome/browser/ui/prefs/prefs_tab_helper.h"
+ #include "chrome/common/pref_names.h"
++#include "components/adblock/core/common/adblock_prefs.h"
+ #include "components/language/core/browser/pref_names.h"
+ #include "components/live_caption/pref_names.h"
+ #include "components/privacy_sandbox/tracking_protection_settings.h"
+@@ -68,6 +73,14 @@ const char* const kWebPrefsToObserve[] = {
+ #else
+     prefs::kAccessibilityFocusHighlightEnabled,
+ #endif
++
++    adblock::common::prefs::kAdblockAllowedDomainsLegacy,
++    adblock::common::prefs::kAdblockCustomFiltersLegacy,
++    adblock::common::prefs::kAdblockCustomSubscriptionsLegacy,
++    adblock::common::prefs::kAdblockSubscriptionsLegacy,
++    adblock::common::prefs::kEnableAcceptableAdsLegacy,
++    adblock::common::prefs::kEnableAdblockLegacy,
++
+ };
+ 
+ const int kWebPrefsToObserveLength = std::size(kWebPrefsToObserve);
+diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
+--- a/chrome/browser/ui/tab_helpers.cc
++++ b/chrome/browser/ui/tab_helpers.cc
+@@ -1,6 +1,10 @@
+ // Copyright 2014 The Chromium Authors
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
 +//
-+// You should have received a copy of the GNU General Public License
-+// along with eyeo Chromium SDK.  If not, see .
-diff --git a/chrome/test/data/adblock/wbn/by_resource/blue_subresource_loading.css b/chrome/test/data/adblock/wbn/by_resource/blue_subresource_loading.css
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/wbn/by_resource/blue_subresource_loading.css
-@@ -0,0 +1 @@
-+.blue { background-color: blue }
-diff --git a/chrome/test/data/adblock/wbn/by_resource/blue_subresource_loading.png b/chrome/test/data/adblock/wbn/by_resource/blue_subresource_loading.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..7a0773bec90118a4a83069ee0900449dcc511a49
-GIT binary patch
-literal 773
-zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911L)MWvCLmZZ}TGetBrowserContext()),
++      adblock::ElementHiderFactory::GetForBrowserContext(
++          web_contents->GetBrowserContext()),
++      adblock::SitekeyStorageFactory::GetForBrowserContext(
++          web_contents->GetBrowserContext()),
++      std::make_unique());
+   autofill::ChromeAutofillClient::CreateForWebContents(web_contents);
+   if (breadcrumbs::IsEnabled(g_browser_process->local_state())) {
+     BreadcrumbManagerTabHelper::CreateForWebContents(web_contents);
+diff --git a/chrome/browser/ui/webui/adblock_internals/BUILD.gn b/chrome/browser/ui/webui/adblock_internals/BUILD.gn
 new file mode 100644
 --- /dev/null
-+++ b/chrome/test/data/adblock/wbn/by_resource/xhr_result_1_subresource_loading.json
-@@ -0,0 +1 @@
-+{ "method": "xhr", "result": 1 }
-diff --git a/chrome/test/data/adblock/wbn/by_scope/LICENSE b/chrome/test/data/adblock/wbn/by_scope/LICENSE
++++ b/chrome/browser/ui/webui/adblock_internals/BUILD.gn
+@@ -0,0 +1,23 @@
++#
++# This file is part of eyeo Chromium SDK,
++# Copyright (C) 2006-present eyeo GmbH
++#
++# eyeo Chromium SDK is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License version 3 as
++# published by the Free Software Foundation.
++#
++# eyeo Chromium SDK is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with eyeo Chromium SDK.  If not, see .
++
++import("//mojo/public/tools/bindings/mojom.gni")
++
++mojom("mojo_bindings") {
++  sources = [ "adblock_internals.mojom" ]
++  webui_module_path = "/"
++  #use_typescript_sources = true
++}
+diff --git a/chrome/browser/ui/webui/adblock_internals/adblock_internals.mojom b/chrome/browser/ui/webui/adblock_internals/adblock_internals.mojom
 new file mode 100644
 --- /dev/null
-+++ b/chrome/test/data/adblock/wbn/by_scope/LICENSE
-@@ -0,0 +1,14 @@
++++ b/chrome/browser/ui/webui/adblock_internals/adblock_internals.mojom
+@@ -0,0 +1,20 @@
 +// This file is part of eyeo Chromium SDK,
 +// Copyright (C) 2006-present eyeo GmbH
 +//
@@ -9696,242 +2650,380 @@ new file mode 100644
 +//
 +// You should have received a copy of the GNU General Public License
 +// along with eyeo Chromium SDK.  If not, see .
-diff --git a/chrome/test/data/adblock/wbn/by_scope/fetch_result_3_subresource_loading.json b/chrome/test/data/adblock/wbn/by_scope/fetch_result_3_subresource_loading.json
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/wbn/by_scope/fetch_result_3_subresource_loading.json
-@@ -0,0 +1 @@
-+{ "method": "fetch", "result": 3 }
-diff --git a/chrome/test/data/adblock/wbn/by_scope/orange_subresource_loading.css b/chrome/test/data/adblock/wbn/by_scope/orange_subresource_loading.css
-new file mode 100644
---- /dev/null
-+++ b/chrome/test/data/adblock/wbn/by_scope/orange_subresource_loading.css
-@@ -0,0 +1 @@
-+.orange { background-color: orange }
-diff --git a/chrome/test/data/adblock/wbn/by_scope/orange_subresource_loading.png b/chrome/test/data/adblock/wbn/by_scope/orange_subresource_loading.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..348f1275fa97592546d48a3f5a339625c231ba2e
-GIT binary patch
-literal 774
-zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911L)MWvCLmkF2lAmzQji)bo59o7&t;ucLK6V> (string debug_info);
++};
+diff --git a/chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.cc b/chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.cc
 new file mode 100644
 --- /dev/null
-+++ b/chrome/test/data/adblock/wbn/by_scope/pink_subresource_loading.css
-@@ -0,0 +1 @@
-+.pink { background-color: pink }
-diff --git a/chrome/test/data/adblock/wbn/by_scope/pink_subresource_loading.png b/chrome/test/data/adblock/wbn/by_scope/pink_subresource_loading.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..a0ffba40eee8d497e2fd9ab5b138ba05e70d987f
-GIT binary patch
-literal 775
-zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911L)MWvCLmGl+EDj>gTe~DWM4fjk(;R
-
-literal 0
-HcmV?d00001
-
-diff --git a/chrome/test/data/adblock/wbn/by_scope/xhr_result_3_subresource_loading.json b/chrome/test/data/adblock/wbn/by_scope/xhr_result_3_subresource_loading.json
++++ b/chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.cc
+@@ -0,0 +1,115 @@
++/*
++ * This file is part of eyeo Chromium SDK,
++ * Copyright (C) 2006-present eyeo GmbH
++ *
++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 3 as
++ * published by the Free Software Foundation.
++ *
++ * eyeo Chromium SDK is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with eyeo Chromium SDK.  If not, see .
++ */
++
++#include "chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.h"
++
++#include "base/time/time_to_iso8601.h"
++#include "chrome/browser/adblock/adblock_telemetry_service_factory.h"
++#include "chrome/browser/adblock/session_stats_factory.h"
++#include "chrome/browser/adblock/subscription_service_factory.h"
++#include "components/adblock/core/adblock_telemetry_service.h"
++#include "components/adblock/core/session_stats.h"
++#include "components/adblock/core/subscription/subscription_config.h"
++#include "components/adblock/core/subscription/subscription_service.h"
++
++namespace {
++
++std::string SubscriptionInstallationStateToString(
++    adblock::Subscription::InstallationState state) {
++  using State = adblock::Subscription::InstallationState;
++  switch (state) {
++    case State::Installed:
++      return "Installed";
++    case State::Installing:
++      return "Installing";
++    case State::Preloaded:
++      return "Preloaded";
++    case State::Unknown:
++      return "Unknown";
++  }
++  NOTREACHED();
++  return "";
++}
++
++std::string DebugLine(std::string name, std::string value, int level) {
++  return std::string(2 * level, ' ') + name + ": " + value + '\n';
++}
++
++std::string DebugLine(std::string name, int value, int level) {
++  return DebugLine(name, std::to_string(value), level);
++}
++
++}  // namespace
++
++AdblockInternalsPageHandlerImpl::AdblockInternalsPageHandlerImpl(
++    Profile* profile,
++    mojo::PendingReceiver
++        receiver)
++    : profile_(profile), receiver_(this, std::move(receiver)) {}
++
++AdblockInternalsPageHandlerImpl::~AdblockInternalsPageHandlerImpl() = default;
++
++void AdblockInternalsPageHandlerImpl::GetDebugInfo(
++    GetDebugInfoCallback callback) {
++  CHECK(profile_);
++  auto* service =
++      adblock::SubscriptionServiceFactory::GetForBrowserContext(profile_);
++  auto* stats = adblock::SessionStatsFactory::GetForBrowserContext(profile_);
++  auto allowed = stats->GetSessionAllowedAdsCount();
++  auto blocked = stats->GetSessionBlockedAdsCount();
++  std::string content;
++  for (auto* config : service->GetInstalledFilteringConfigurations()) {
++    content += DebugLine("Configuration", config->GetName(), 0);
++    content += DebugLine("Enabled", config->IsEnabled(), 1);
++    for (const auto& it : config->GetAllowedDomains()) {
++      content += DebugLine("Allowed domain", it, 1);
++    }
++    for (const auto& it : config->GetCustomFilters()) {
++      content += DebugLine("Custom filter", it, 1);
++    }
++    for (auto it : service->GetCurrentSubscriptions(config)) {
++      auto url = it->GetSourceUrl();
++      content += DebugLine("Subscription", url.spec(), 1);
++      content += DebugLine(
++          "State",
++          SubscriptionInstallationStateToString(it->GetInstallationState()), 2);
++      content += DebugLine("Title", it->GetTitle(), 2);
++      content += DebugLine("Version", it->GetCurrentVersion(), 2);
++      content += DebugLine("Last update",
++                           base::TimeToISO8601(it->GetInstallationTime()), 2);
++      content += DebugLine("Total allowed", allowed[url], 2);
++      content += DebugLine("Total blocked", blocked[url], 2);
++    }
++  }
++
++  auto* telemetry_service =
++      adblock::AdblockTelemetryServiceFactory::GetForProfile(profile_);
++  telemetry_service->GetTopicProvidersDebugInfo(base::BindOnce(
++      &AdblockInternalsPageHandlerImpl::OnTelemetryServiceInfoArrived,
++      std::move(callback), std::move(content)));
++}
++
++void AdblockInternalsPageHandlerImpl::OnTelemetryServiceInfoArrived(
++    GetDebugInfoCallback callback,
++    std::string content,
++    std::vector topic_provider_content) {
++  for (auto& topic_provider_debug_info : topic_provider_content) {
++    content +=
++        DebugLine("Eyeometry topic provider", topic_provider_debug_info, 0);
++  }
++  std::move(callback).Run(std::move(content));
++}
+diff --git a/chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.h b/chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.h
 new file mode 100644
 --- /dev/null
-+++ b/chrome/test/data/adblock/wbn/by_scope/xhr_result_3_subresource_loading.json
-@@ -0,0 +1 @@
-+{ "method": "xhr", "result": 3 }
-diff --git a/chrome/test/data/adblock/wbn/index.html.mustache b/chrome/test/data/adblock/wbn/index.html.mustache
++++ b/chrome/browser/ui/webui/adblock_internals/adblock_internals_page_handler_impl.h
+@@ -0,0 +1,51 @@
++/*
++ * This file is part of eyeo Chromium SDK,
++ * Copyright (C) 2006-present eyeo GmbH
++ *
++ * eyeo Chromium SDK is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 3 as
++ * published by the Free Software Foundation.
++ *
++ * eyeo Chromium SDK is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with eyeo Chromium SDK.  If not, see .
++ */
++
++#ifndef CHROME_BROWSER_UI_WEBUI_ADBLOCK_INTERNALS_ADBLOCK_INTERNALS_PAGE_HANDLER_IMPL_H_
++#define CHROME_BROWSER_UI_WEBUI_ADBLOCK_INTERNALS_ADBLOCK_INTERNALS_PAGE_HANDLER_IMPL_H_
++
++#include "base/memory/raw_ptr.h"
++#include "chrome/browser/profiles/profile.h"
++#include "chrome/browser/ui/webui/adblock_internals/adblock_internals.mojom.h"
++#include "mojo/public/cpp/bindings/receiver.h"
++
++class AdblockInternalsPageHandlerImpl
++    : public mojom::adblock_internals::AdblockInternalsPageHandler {
++ public:
++  explicit AdblockInternalsPageHandlerImpl(
++      Profile* profile,
++      mojo::PendingReceiver<
++          mojom::adblock_internals::AdblockInternalsPageHandler> receiver);
++  AdblockInternalsPageHandlerImpl(const AdblockInternalsPageHandlerImpl&) =
++      delete;
++  AdblockInternalsPageHandlerImpl& operator=(
++      const AdblockInternalsPageHandlerImpl&) = delete;
++  ~AdblockInternalsPageHandlerImpl() override;
++
++  // mojom::adblock_internals::AdblockInternalsPageHandler:
++  void GetDebugInfo(GetDebugInfoCallback callback) override;
++
++ private:
++  static void OnTelemetryServiceInfoArrived(
++      GetDebugInfoCallback callback,
++      std::string content,
++      std::vector topic_provider_content);
++  raw_ptr profile_;
++  mojo::Receiver
++      receiver_;
++};
++#endif  // CHROME_BROWSER_UI_WEBUI_ADBLOCK_INTERNALS_ADBLOCK_INTERNALS_PAGE_HANDLER_IMPL_H_
+diff --git a/chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.cc b/chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.cc
 new file mode 100644
 --- /dev/null
-+++ b/chrome/test/data/adblock/wbn/index.html.mustache
-@@ -0,0 +1,157 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+

Chromium Web bundles test

-+ -+

Identified by resource

-+ -+
    -+
  • Resources in by_resource.wbn -+
      -+
    • Shows blue box with by_resource/blue_subresource_loading.css, grey box after the css blocked: -+
    • -+
    • Shows by_resource/blue_subresource_loading.png, nothing after the png blocked: -+
    • -+
    • Shows red box with by_resource/red_subresource_loading.css, grey box after the css blocked: -+
    • -+
    • Shows by_resource/red_subresource_loading.png, nothing after the png blocked: -+
    • -+
    • Shows xhr result for by_resource/xhr_result_1_subresource_loading.json: -+
      Pending
    • -+
    • Shows fetch result for by_resource/fetch_result_1_subresource_loading.json: -+
      Pending
    • -+
    -+
  • -+
-+ -+

Identified by bundle file

-+ -+
    -+
  • Resources in by_bundle_file.wbn (Please click here to check fetch behavior with blocked bundle) -+
      -+
    • Shows green box with by_bundle_file/green_subresource_loading.css, grey box after the css blocked: -+
    • -+
    • Shows by_bundle_file/green_subresource_loading.png, nothing after the png blocked: -+
    • -+
    • Shows purple box with by_bundle_file/purple_subresource_loading.css, grey box after the css blocked: -+
    • -+
    • Shows by_bundle_file/purple_subresource_loading.png, nothing after the png blocked: -+
    • -+
    • Shows xhr result for by_bundle_file/xhr_result_2_subresource_loading.json: -+
      Pending
    • -+
    • Shows fetch result for by_bundle_file/fetch_result_2_subresource_loading.json: -+
      Pending
    • -+
    -+
  • -+
-+ -+

Identified by scope

-+ -+
    -+
  • Resources in by_scope.wbn -+
      -+
    • Shows orange box with by_scope/orange_subresource_loading.css, grey box after the css blocked: -+
    • -+
    • Shows by_scope/orange_subresource_loading.png, nothing after the png blocked: -+
    • -+
    • Shows pink box with by_scope/pink_subresource_loading.css, grey box after the css blocked: -+
    • -+
    • Shows by_scope/pink_subresource_loading.png, nothing after the png blocked: -+
    • -+
    • Shows xhr result for by_scope/xhr_result_3_subresource_loading.json: -+
      Pending
    • -+
    • Shows fetch result for by_scope/fetch_result_3_subresource_loading.json: -+
      Pending
    • -+
    -+
  • -+
-+ -+

-+To navigate to {{{navigation_to_unsigned_bundles_baseUrl}}} within a bundle file, download the bundle file by clicking here. -+

-+ -+ -diff --git a/chrome/test/data/adblock/xpath3.html b/chrome/test/data/adblock/xpath3.html ++AdblockInternalsUI::~AdblockInternalsUI() = default; ++ ++WEB_UI_CONTROLLER_TYPE_IMPL(AdblockInternalsUI) ++ ++void AdblockInternalsUI::BindInterface( ++ mojo::PendingReceiver ++ receiver) { ++ handler_ = std::make_unique( ++ profile_, std::move(receiver)); ++} +diff --git a/chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.h b/chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.h new file mode 100644 --- /dev/null -+++ b/chrome/test/data/adblock/xpath3.html -@@ -0,0 +1,23 @@ -+ ++class Profile; + -+ -+ -+ -+
Target
-+ -+ ++class AdblockInternalsUI : public ui::MojoWebUIController { ++ public: ++ explicit AdblockInternalsUI(content::WebUI* web_ui); ++ ++ AdblockInternalsUI(const AdblockInternalsUI&) = delete; ++ AdblockInternalsUI& operator=(const AdblockInternalsUI&) = delete; ++ ++ ~AdblockInternalsUI() override; ++ ++ void BindInterface( ++ mojo::PendingReceiver< ++ mojom::adblock_internals::AdblockInternalsPageHandler> receiver); ++ ++ private: ++ WEB_UI_CONTROLLER_TYPE_DECL(); ++ ++ raw_ptr profile_; ++ std::unique_ptr ++ handler_; ++}; ++ ++#endif // CHROME_BROWSER_UI_WEBUI_ADBLOCK_INTERNALS_ADBLOCK_INTERNALS_UI_H_ +diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +--- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc ++++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +@@ -1,6 +1,10 @@ + // Copyright 2012 The Chromium Authors + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. ++// ++// This source code is a part of eyeo Chromium SDK. ++// Use of this source code is governed by the GPLv3 that can be found in the ++// components/adblock/LICENSE file. + + #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" + +@@ -29,6 +33,7 @@ + #include "chrome/browser/profiles/profile.h" + #include "chrome/browser/signin/signin_features.h" + #include "chrome/browser/ui/webui/about/about_ui.h" ++#include "chrome/browser/ui/webui/adblock_internals/adblock_internals_ui.h" + #include "chrome/browser/ui/webui/browsing_topics/browsing_topics_internals_ui.h" + #include "chrome/browser/ui/webui/components/components_ui.h" + #include "chrome/browser/ui/webui/constrained_web_dialog_ui.h" +@@ -429,6 +434,9 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, + + if (url.host_piece() == chrome::kChromeUIBrowsingTopicsInternalsHost) + return &NewWebUI; ++ if (url.host_piece() == chrome::kChromeUIAdblockInternalsHost) { ++ return &NewWebUI; ++ } + if (url.host_piece() == chrome::kChromeUIComponentsHost) + return &NewWebUI; + #if !BUILDFLAG(IS_ANDROID) +diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn +--- a/chrome/common/BUILD.gn ++++ b/chrome/common/BUILD.gn +@@ -1,6 +1,9 @@ + # Copyright 2014 The Chromium Authors + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. ++# ++# This source code is a part of eyeo Chromium SDK. ++# Use of this source code is governed by the GPLv3 that can be found in the components/adblock/LICENSE file. + + import("//build/buildflag_header.gni") + import("//build/config/chrome_build.gni") +diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc +--- a/chrome/common/webui_url_constants.cc ++++ b/chrome/common/webui_url_constants.cc +@@ -1,6 +1,10 @@ + // Copyright 2017 The Chromium Authors + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. ++// ++// This source code is a part of eyeo Chromium SDK. ++// Use of this source code is governed by the GPLv3 that can be found in the ++// components/adblock/LICENSE file. + + #include "chrome/common/webui_url_constants.h" + +@@ -30,6 +34,7 @@ const char kChromeUIAboutURL[] = "chrome://about/"; + const char kChromeUIActivateSafetyCheckSettingsURL[] = + "chrome://settings/safetyCheck?activateSafetyCheck"; + const char kChromeUIAccessibilityHost[] = "accessibility"; ++const char kChromeUIAdblockInternalsHost[] = "adblock-internals"; + const char kChromeUIAllSitesPath[] = "/content/all"; + const char kChromeUIAppIconHost[] = "app-icon"; + const char kChromeUIAppIconURL[] = "chrome://app-icon/"; +diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h +--- a/chrome/common/webui_url_constants.h ++++ b/chrome/common/webui_url_constants.h +@@ -1,6 +1,10 @@ + // Copyright 2017 The Chromium Authors + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. ++// ++// This source code is a part of eyeo Chromium SDK. ++// Use of this source code is governed by the GPLv3 that can be found in the ++// components/adblock/LICENSE file. + + // Contains constants for WebUI UI/Host/SubPage constants. Anything else go in + // chrome/common/url_constants.h. +@@ -31,6 +35,7 @@ extern const char kChromeUIAboutHost[]; + extern const char kChromeUIAboutURL[]; + extern const char kChromeUIActivateSafetyCheckSettingsURL[]; + extern const char kChromeUIAccessibilityHost[]; ++extern const char kChromeUIAdblockInternalsHost[]; + extern const char kChromeUIAllSitesPath[]; + extern const char kChromeUIAppIconHost[]; + extern const char kChromeUIAppIconURL[]; -- diff --git a/build/cromite_patches/eyeo-beta-118.0.5993.48-extension_api.patch b/build/cromite_patches/eyeo-beta-118.0.5993.48-extension_api.patch index 4d3b4320e68f0916ed99d5193853fa6283e1553a..7660633e3c15f762d57520480c463173cfe7a0c3 100644 --- a/build/cromite_patches/eyeo-beta-118.0.5993.48-extension_api.patch +++ b/build/cromite_patches/eyeo-beta-118.0.5993.48-extension_api.patch @@ -25,23 +25,12 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module .../extensions/api/eyeo_filtering_private.idl | 201 ++++ .../permissions/chrome_api_permissions.cc | 8 + .../permissions/permission_set_unittest.cc | 8 + - chrome/test/BUILD.gn | 6 + - .../api_test/adblock_private/empty.js | 14 + - .../api_test/adblock_private/main.html | 29 + - .../api_test/adblock_private/manifest.json | 32 + - .../api_test/adblock_private/some-popup.html | 24 + - .../api_test/adblock_private/test.html | 25 + - .../api_test/adblock_private/test.js | 538 ++++++++++ - .../api_test/eyeo_filtering_private/empty.js | 14 + - .../api_test/eyeo_filtering_private/main.html | 29 + - .../eyeo_filtering_private/manifest.json | 31 + - .../api_test/eyeo_filtering_private/test.js | 460 ++++++++ .../browser/extension_event_histogram_value.h | 7 +- .../common/mojom/api_permission_id.mojom | 6 + - tools/metrics/histograms/enums.xml | 7 +- + .../histograms/metadata/extensions/enums.xml | 3 + .../definitions/adblock_private.d.ts | 172 +++ .../definitions/eyeo_filtering_private.d.ts | 249 +++++ - 35 files changed, 5406 insertions(+), 2 deletions(-) + 24 files changed, 4201 insertions(+), 1 deletion(-) create mode 100644 chrome/browser/extensions/api/adblock_private/adblock_private_api.cc create mode 100644 chrome/browser/extensions/api/adblock_private/adblock_private_api.h create mode 100644 chrome/browser/extensions/api/adblock_private/adblock_private_apitest.cc @@ -50,16 +39,6 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module create mode 100644 chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_apitest.cc create mode 100644 chrome/common/extensions/api/adblock_private.idl create mode 100644 chrome/common/extensions/api/eyeo_filtering_private.idl - create mode 100644 chrome/test/data/extensions/api_test/adblock_private/empty.js - create mode 100644 chrome/test/data/extensions/api_test/adblock_private/main.html - create mode 100644 chrome/test/data/extensions/api_test/adblock_private/manifest.json - create mode 100644 chrome/test/data/extensions/api_test/adblock_private/some-popup.html - create mode 100644 chrome/test/data/extensions/api_test/adblock_private/test.html - create mode 100644 chrome/test/data/extensions/api_test/adblock_private/test.js - create mode 100644 chrome/test/data/extensions/api_test/eyeo_filtering_private/empty.js - create mode 100644 chrome/test/data/extensions/api_test/eyeo_filtering_private/main.html - create mode 100644 chrome/test/data/extensions/api_test/eyeo_filtering_private/manifest.json - create mode 100644 chrome/test/data/extensions/api_test/eyeo_filtering_private/test.js create mode 100644 tools/typescript/definitions/adblock_private.d.ts create mode 100644 tools/typescript/definitions/eyeo_filtering_private.d.ts @@ -3493,7 +3472,7 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro #include "chrome/browser/extensions/api/settings_private/prefs_util.h" #include -@@ -27,6 +31,7 @@ +@@ -28,6 +32,7 @@ #include "chrome/browser/ssl/generated_https_first_mode_pref.h" #include "chrome/common/chrome_features.h" #include "chrome/common/pref_names.h" @@ -3501,8 +3480,8 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro #include "components/autofill/core/common/autofill_prefs.h" #include "components/bookmarks/common/bookmark_pref_names.h" #include "components/browsing_data/core/pref_names.h" -@@ -175,6 +180,20 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { - return *s_allowlist; +@@ -182,6 +187,20 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { + } s_allowlist = new PrefsUtil::TypedPrefMap(); + // Adblock settings @@ -3594,7 +3573,7 @@ diff --git a/chrome/common/extensions/api/_api_features.json b/chrome/common/ext "app": { "blocklist": [ "2FC374607C2DF285634B67C64A2E356C607091C3", // Quickoffice -@@ -511,6 +525,14 @@ +@@ -526,6 +540,14 @@ "channel": "stable", "contexts": [] }, @@ -4117,1268 +4096,6 @@ diff --git a/chrome/common/extensions/permissions/permission_set_unittest.cc b/c // Warned as part of host permissions. skip.insert(APIPermissionID::kDevtools); -diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn ---- a/chrome/test/BUILD.gn -+++ b/chrome/test/BUILD.gn -@@ -3816,6 +3816,12 @@ if (!is_android) { - ] - } - -+ ### Extension API module start -+ sources += [ -+ "../browser/extensions/api/adblock_private/adblock_private_apitest.cc", -+ "../browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_apitest.cc", -+ ] -+ ### Extension API module end - - if (is_chromeos_ash && enable_extensions) { - deps += -diff --git a/chrome/test/data/extensions/api_test/adblock_private/empty.js b/chrome/test/data/extensions/api_test/adblock_private/empty.js -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/extensions/api_test/adblock_private/empty.js -@@ -0,0 +1,14 @@ -+// This file is part of eyeo Chromium SDK, -+// Copyright (C) 2006-present eyeo GmbH -+// -+// eyeo Chromium SDK is free software: you can redistribute it and/or modify -+// it under the terms of the GNU General Public License version 3 as -+// published by the Free Software Foundation. -+// -+// eyeo Chromium SDK is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+// -+// You should have received a copy of the GNU General Public License -+// along with eyeo Chromium SDK. If not, see . -diff --git a/chrome/test/data/extensions/api_test/adblock_private/main.html b/chrome/test/data/extensions/api_test/adblock_private/main.html -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/extensions/api_test/adblock_private/main.html -@@ -0,0 +1,29 @@ -+ -+ -+ -+ -+ -+ -+ Adblock private API test -+ -+ -+ -+

chrome.adblockPrivate.* tests

-+ -+ -+ -diff --git a/chrome/test/data/extensions/api_test/adblock_private/manifest.json b/chrome/test/data/extensions/api_test/adblock_private/manifest.json -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/extensions/api_test/adblock_private/manifest.json -@@ -0,0 +1,32 @@ -+// This file is part of eyeo Chromium SDK, -+// Copyright (C) 2006-present eyeo GmbH -+// -+// eyeo Chromium SDK is free software: you can redistribute it and/or modify -+// it under the terms of the GNU General Public License version 3 as -+// published by the Free Software Foundation. -+// -+// eyeo Chromium SDK is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+// -+// You should have received a copy of the GNU General Public License -+// along with eyeo Chromium SDK. If not, see . -+{ -+ "name": "adblockPrivate API test", -+ "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyURY+BO7WO3B/dixoRSitosEKb1OOCsS1EF8dRoywUP+iQlHDJw2JL2A7d/E6JpoBQ/CUxX8lcHcsAs7zC31zb2iosBbfd5mCDd24bjLaIF/WNBRno6QYwbM/J7gCxn/aGFvAXdLnPhs2XFiP7iSQEY67NtTlah9EFGalB45UFUssrxFOXTFWT/gJmRIHqfCSUzHdPmFRJ1Sk6UpyZBPxp2MJAISbfTUhWIXa7WG+JxW95OEtNggfhYzX9wbCVSEU18RiMiMLdqNwHf7hYI30KiwrQhWcaB5kCnvJYEa43JggcE9xAaHV+1t2hSMyo5Xbz2YslI5UfDe8112hGVIUQIDAQAB", -+ "version": "0.1", -+ "incognito": "split", -+ "manifest_version": 2, -+ "background": { -+ "scripts": [ -+ "empty.js" -+ ] -+ }, -+ "description": "Test of chrome.adblockPrivate interface", -+ "permissions": [ -+ "adblockPrivate", -+ "eyeoFilteringPrivate", -+ "" -+ ] -+} -diff --git a/chrome/test/data/extensions/api_test/adblock_private/some-popup.html b/chrome/test/data/extensions/api_test/adblock_private/some-popup.html -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/extensions/api_test/adblock_private/some-popup.html -@@ -0,0 +1,24 @@ -+ -+ -+ -+ Popup content -+ -+ -+

I am a popup

-+ -+ -diff --git a/chrome/test/data/extensions/api_test/adblock_private/test.html b/chrome/test/data/extensions/api_test/adblock_private/test.html -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/extensions/api_test/adblock_private/test.html -@@ -0,0 +1,25 @@ -+ -+ -+ -+ Test file -+ -+ -+ -+ popup link -+ -+ -diff --git a/chrome/test/data/extensions/api_test/adblock_private/test.js b/chrome/test/data/extensions/api_test/adblock_private/test.js -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/extensions/api_test/adblock_private/test.js -@@ -0,0 +1,538 @@ -+// This file is part of eyeo Chromium SDK, -+// Copyright (C) 2006-present eyeo GmbH -+// -+// eyeo Chromium SDK is free software: you can redistribute it and/or modify -+// it under the terms of the GNU General Public License version 3 as -+// published by the Free Software Foundation. -+// -+// eyeo Chromium SDK is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+// -+// You should have received a copy of the GNU General Public License -+// along with eyeo Chromium SDK. If not, see . -+ -+'use strict'; -+ -+const urlParams = new URLSearchParams(window.location.search); -+ -+// This class binds 1st argument for chrome.eyeoFilteringPrivate to 'adblock' -+// configuration and redirects methods renamed in chrome.eyeoFilteringPrivate -+// (eg. `onAdAllowed` => `onRequestAllowed`) which allows test code to -+// seamlessly call the same methods on chrome.adblockPrivate and on -+// chrome.eyeoFilteringPrivate. -+class FilteringPrivateBoundWithAdblock { -+ constructor() { -+ this.delegate = chrome.eyeoFilteringPrivate; -+ this.configuration = 'adblock'; -+ this.getSessionAllowedAdsCount = -+ this.delegate.getSessionAllowedRequestsCount; -+ this.getSessionBlockedAdsCount = -+ this.delegate.getSessionBlockedRequestsCount; -+ this.onAdAllowed = this.delegate.onRequestAllowed; -+ this.onAdBlocked = this.delegate.onRequestBlocked; -+ this.onSubscriptionUpdated = this.delegate.onSubscriptionUpdated; -+ this.onAllowedDomainsUpdated = this.delegate.onAllowedDomainsUpdated; -+ const methodsToBind = [ -+ 'isEnabled', 'setEnabled', 'getAllowedDomains', 'addAllowedDomain', -+ 'removeAllowedDomain', 'getCustomFilters', 'addCustomFilter', -+ 'removeCustomFilter' -+ ]; -+ for (const method of methodsToBind) { -+ this[method] = function() { -+ const args = Array.from(arguments); -+ args.unshift(this.configuration); -+ this.delegate[method].apply(this.delegate, args); -+ } -+ } -+ const methodsToBindRenamed = new Map([ -+ ['installSubscription', 'subscribeToFilterList'], -+ ['uninstallSubscription', 'unsubscribeFromFilterList'], -+ ['getInstalledSubscriptions', 'getFilterLists'], -+ ]); -+ methodsToBindRenamed.forEach((value, key) => { -+ this[key] = -+ function() { -+ const args = Array.from(arguments); -+ args.unshift(this.configuration); -+ this.delegate[value].apply(this.delegate, args); -+ } -+ }); -+ } -+}; -+ -+// Set API object for tests, defaults to chrome.adblockPrivate -+let apiObject = chrome.adblockPrivate; -+if (urlParams.get('api') === 'eyeoFilteringPrivate') { -+ apiObject = new FilteringPrivateBoundWithAdblock; -+} -+ -+function findEnglishEasyList(item) { -+ console.log(item.title + ' ' + item.url + ' ' + item.languages); -+ return item.title.toLowerCase().includes('easylist') && -+ item.url.toLowerCase().includes('easylist') && -+ item.languages.includes('en'); -+} -+ -+function containsSubscription(subscriptions, url) { -+ for (const subscription of subscriptions) { -+ if (subscription.url === url) { -+ return true; -+ } -+ } -+ return false; -+} -+ -+function verifySessionStats(sessionStats, expectedSubscription) { -+ let index = -1; -+ for (let i = 0; i < sessionStats.length; i++) { -+ if (sessionStats[i].url === expectedSubscription) { -+ index = i; -+ break; -+ } -+ } -+ if (index == -1) { -+ chrome.test.fail('Failed: Missing entry in sessionStats'); -+ return; -+ } -+ if (sessionStats[index].count != 1) { -+ chrome.test.fail( -+ 'Failed: Expected a single subscription hit number, got: ' + -+ sessionStats[index].count); -+ return; -+ } -+} -+ -+function verifyEventData(event, expectedSubscription) { -+ if (event.tab_id < 1) { -+ chrome.test.fail('Failed: Wrong tab_id value'); -+ } -+ if (event.window_id < 1) { -+ chrome.test.fail('Failed: Wrong window_id value'); -+ } -+ if (event.content_type !== 'XMLHTTPREQUEST') { -+ chrome.test.fail('Failed: Wrong content_type value: ' + event.content_type); -+ } -+ if (event.subscription !== expectedSubscription) { -+ chrome.test.fail('Failed: Wrong subscription value: ' + event.subscription); -+ } -+} -+ -+function arrayEquals(a, b) { -+ if (a === b) -+ return true; -+ if (a === null || b === null) -+ return false; -+ if (a.length !== b.length) -+ return false; -+ for (var i = 0; i < a.length; i++) { -+ if (a[i] !== b[i]) -+ return false; -+ } -+ return true; -+}; -+ -+const availableTests = [ -+ function setEnabled_isEnabled() { -+ apiObject.setEnabled(false); -+ apiObject.isEnabled(function(enabled) { -+ if (enabled) -+ chrome.test.fail('Failed: ad blocking should NOT be enabled'); -+ }); -+ apiObject.setEnabled(true); -+ apiObject.isEnabled(function(enabled) { -+ if (enabled) -+ chrome.test.succeed(); -+ else -+ chrome.test.fail('Failed: ad blocking should be enabled'); -+ }); -+ }, -+ function setAAEnabled_isAAEnabled() { -+ chrome.adblockPrivate.setAcceptableAdsEnabled(false); -+ chrome.adblockPrivate.isAcceptableAdsEnabled(function(enabled) { -+ if (enabled) -+ chrome.test.fail('Failed: AA should NOT be enabled'); -+ }); -+ chrome.adblockPrivate.setAcceptableAdsEnabled(true); -+ chrome.adblockPrivate.getInstalledSubscriptions(function(selected) { -+ if (!containsSubscription( -+ selected, -+ 'https://easylist-downloads.adblockplus.org/exceptionrules.txt')) { -+ chrome.test.fail('Failed: AA subscription should be on the list'); -+ } -+ }); -+ chrome.adblockPrivate.isAcceptableAdsEnabled(function(enabled) { -+ if (enabled) -+ chrome.test.succeed(); -+ else -+ chrome.test.fail('Failed: AA should be enabled'); -+ }); -+ }, -+ function setAAEnabled_isAAEnabled_newAPI() { -+ const default_config = 'adblock'; -+ chrome.eyeoFilteringPrivate.getAcceptableAdsUrl(function(aa_url) { -+ chrome.eyeoFilteringPrivate.unsubscribeFromFilterList( -+ default_config, aa_url); -+ chrome.adblockPrivate.isAcceptableAdsEnabled(function(enabled) { -+ if (enabled) -+ chrome.test.fail('Failed: AA should NOT be enabled'); -+ }); -+ chrome.eyeoFilteringPrivate.getAcceptableAdsUrl(function(aa_url) { -+ chrome.eyeoFilteringPrivate.subscribeToFilterList( -+ default_config, aa_url); -+ chrome.adblockPrivate.isAcceptableAdsEnabled(function(enabled) { -+ if (enabled) -+ chrome.test.succeed(); -+ else -+ chrome.test.fail('Failed: AA should be enabled'); -+ }); -+ }); -+ }); -+ }, -+ function getBuiltInSubscriptions() { -+ chrome.adblockPrivate.getBuiltInSubscriptions(function(recommended) { -+ const found = recommended.find(findEnglishEasyList); -+ if (found) { -+ chrome.test.succeed(); -+ } else { -+ chrome.test.fail('Failed: invalid built-in subscriptions'); -+ } -+ }); -+ }, -+ // This test works because at the beginning getInstalledSubscriptions returns -+ // just default entries from recommended subscriptions. -+ function installedSubscriptionsDataSchema() { -+ const disabled = !!urlParams.get('disabled'); -+ if (disabled) { -+ apiObject.setEnabled(false); -+ } -+ apiObject.getInstalledSubscriptions(function(installed) { -+ for (const subscription of installed) { -+ if (!(subscription.installation_state == 'Unknown' && disabled || -+ subscription.installation_state != 'Unknown' && !disabled)) -+ chrome.test.fail( -+ 'Failed: Must contain valid "installation_state" property'); -+ if (!subscription.current_version && !disabled) -+ chrome.test.fail('Failed: Must contain "current_version" property'); -+ if (!subscription.last_installation_time && !disabled) -+ chrome.test.fail( -+ 'Failed: Must contain "last_installation_time" property'); -+ if (!subscription.title && !disabled) -+ chrome.test.fail('Failed: Must contain "title" property'); -+ if (!subscription.url) -+ chrome.test.fail('Failed: Must contain "url" property'); -+ chrome.test.succeed(); -+ } -+ }); -+ }, -+ function installSubscriptionInvalidURL() { -+ apiObject.installSubscription('http://', function() { -+ if (!chrome.runtime.lastError) -+ chrome.test.fail('Failed: invalid input accepted'); -+ else -+ chrome.test.succeed(); -+ }); -+ }, -+ function uninstallSubscriptionInvalidURL() { -+ apiObject.uninstallSubscription('http://', function() { -+ if (!chrome.runtime.lastError) -+ chrome.test.fail('Failed: invalid input accepted'); -+ else -+ chrome.test.succeed(); -+ }); -+ }, -+ function subscriptionsManagement() { -+ const kEasylist = urlParams.get('easylist'); -+ const kExceptionrules = urlParams.get('exceptions'); -+ const kABPFilters = urlParams.get('snippets'); -+ const kCustom = 'https://example.com/subscription.txt'; -+ -+ function containsDefaultSubscriptions(subscriptions) { -+ return containsSubscription(subscriptions, kEasylist) && -+ containsSubscription(subscriptions, kExceptionrules) && -+ containsSubscription(subscriptions, kABPFilters); -+ } -+ -+ if (urlParams.get('disabled')) { -+ apiObject.setEnabled(false); -+ } -+ -+ apiObject.getInstalledSubscriptions(function(installed) { -+ if (installed.length) { -+ if (!containsDefaultSubscriptions(installed)) { -+ chrome.test.fail('Failed: Should contain all default subscriptions'); -+ } -+ for (const subscription of installed) { -+ apiObject.uninstallSubscription(subscription.url); -+ } -+ } else { -+ chrome.test.fail('Failed: Should contain default subscriptions'); -+ } -+ apiObject.getInstalledSubscriptions(function(installed) { -+ if (installed.length) { -+ chrome.test.fail( -+ 'Failed: There shouldn\'t be any installed subscriptions'); -+ } -+ apiObject.installSubscription(kEasylist); -+ apiObject.installSubscription(kExceptionrules); -+ apiObject.installSubscription(kABPFilters); -+ apiObject.getInstalledSubscriptions(function(installed) { -+ if (installed.length) { -+ if (!containsDefaultSubscriptions(installed)) { -+ chrome.test.fail( -+ 'Failed: Should contain all default subscriptions'); -+ } -+ } else { -+ chrome.test.fail('Failed: Should contain default subscriptions'); -+ } -+ apiObject.installSubscription(kCustom); -+ apiObject.getInstalledSubscriptions(function(installed) { -+ if (!containsSubscription(installed, kCustom)) { -+ chrome.test.fail('Failed: Should contain custom subscription'); -+ } -+ apiObject.uninstallSubscription(kCustom); -+ apiObject.getInstalledSubscriptions(function(installed) { -+ if (containsSubscription(installed, kCustom)) { -+ chrome.test.fail( -+ 'Failed: Should not contain custom subscription'); -+ } else { -+ chrome.test.succeed(); -+ } -+ }); -+ }); -+ }); -+ }); -+ }); -+ }, -+ function allowedDomainsManagement() { -+ apiObject.getAllowedDomains(function(domains) { -+ if (domains.length) { -+ for (const domain of domains) -+ apiObject.removeAllowedDomain(domain); -+ } -+ -+ apiObject.getAllowedDomains(function(domains) { -+ if (domains.length) { -+ chrome.test.fail('Failed: There shouldn\'t be any allowed domains'); -+ return; -+ } -+ -+ apiObject.addAllowedDomain('foo.bar'); -+ apiObject.addAllowedDomain('bar.baz'); -+ apiObject.getAllowedDomains(function(domains) { -+ if (domains.length != 2) { -+ chrome.test.fail('Failed: There should be 2 allowed domains'); -+ return; -+ } -+ -+ if (domains.indexOf('foo.bar') == -1 || -+ domains.indexOf('bar.baz') == -1) { -+ chrome.test.fail('Failed: Didn\'t find expected allowed domains'); -+ return; -+ } -+ -+ apiObject.removeAllowedDomain('foo.bar'); -+ apiObject.removeAllowedDomain('bar.baz'); -+ -+ apiObject.getAllowedDomains(function(domains) { -+ if (domains.length) -+ chrome.test.fail('Failed: Still have allowed domains'); -+ else -+ chrome.test.succeed(); -+ }); -+ }); -+ }); -+ }); -+ }, -+ function customFiltersManagement() { -+ apiObject.getCustomFilters(function(filters) { -+ if (filters.length) { -+ for (const filter of filters) -+ apiObject.removeCustomFilter(filter); -+ } -+ -+ apiObject.getCustomFilters(function(filters) { -+ if (filters.length) { -+ chrome.test.fail('Failed: There shouldn\'t be any custom filters'); -+ return; -+ } -+ -+ apiObject.addCustomFilter('foo.bar'); -+ apiObject.addCustomFilter('bar.baz'); -+ apiObject.getCustomFilters(function(filters) { -+ if (filters.length != 2) { -+ chrome.test.fail('Failed: There should be 2 custom filters'); -+ return; -+ } -+ -+ if (filters.indexOf('foo.bar') == -1 || -+ filters.indexOf('bar.baz') == -1) { -+ chrome.test.fail('Failed: Didn\'t find expected custom filters'); -+ return; -+ } -+ -+ apiObject.removeCustomFilter('foo.bar'); -+ apiObject.removeCustomFilter('bar.baz'); -+ -+ apiObject.getCustomFilters(function(filters) { -+ if (filters.length) -+ chrome.test.fail('Failed: Still have custom filters'); -+ else -+ chrome.test.succeed(); -+ }); -+ }); -+ }); -+ }); -+ }, -+ function adBlockedEvents() { -+ const expectedSubscription = urlParams.get('subscription_url'); -+ apiObject.onSubscriptionUpdated.addListener(function(subscription) { -+ if (subscription !== expectedSubscription) -+ chrome.test.fail('Failed: Unexpected subscription: ' + subscription); -+ -+ apiObject.onAdBlocked.addListener(function(e) { -+ verifyEventData(e, expectedSubscription); -+ if (e.url.includes('test1.png')) { -+ chrome.test.succeed(); -+ } -+ }); -+ const request = new XMLHttpRequest(); -+ const handler = function() {}; -+ request.onload = handler; -+ request.onerror = handler; -+ request.open('GET', 'https://example.com/test1.png', true); -+ request.send(); -+ }); -+ apiObject.installSubscription(expectedSubscription); -+ }, -+ function adAllowedEvents() { -+ const expectedSubscription = urlParams.get('subscription_url'); -+ apiObject.onSubscriptionUpdated.addListener(function(subscription) { -+ if (subscription !== expectedSubscription) -+ chrome.test.fail('Failed: Unexpected subscription: ' + subscription); -+ -+ apiObject.onAdAllowed.addListener(function(e) { -+ verifyEventData(e, expectedSubscription); -+ if (e.url.includes('test2.png')) { -+ chrome.test.succeed(); -+ } -+ }); -+ const request = new XMLHttpRequest(); -+ const handler = function() {}; -+ request.onload = handler; -+ request.onerror = handler; -+ request.open('GET', 'https://example.com/test2.png', true); -+ request.send(); -+ }); -+ apiObject.installSubscription(expectedSubscription); -+ }, -+ function sessionStats() { -+ const expectedSubscription = urlParams.get('subscription_url'); -+ // Verify that subscription was downloaded and update event triggered, -+ // then verify correct number of a session blocked and allowed ads count -+ // for this subscription. -+ apiObject.onSubscriptionUpdated.addListener(function(subscription) { -+ if (subscription !== expectedSubscription) -+ chrome.test.fail('Failed: Unexpected subscription: ' + subscription); -+ -+ const handler = function() { -+ apiObject.getSessionBlockedAdsCount(function(sessionStats) { -+ verifySessionStats(sessionStats, expectedSubscription); -+ const handler = function() { -+ apiObject.getSessionAllowedAdsCount(function(sessionStats) { -+ verifySessionStats(sessionStats, expectedSubscription); -+ chrome.test.succeed(); -+ }); -+ }; -+ const request = new XMLHttpRequest(); -+ request.onload = handler; -+ request.onerror = handler; -+ request.open('GET', 'https://example.com/test4.png', true); -+ request.send(); -+ }); -+ }; -+ const request = new XMLHttpRequest(); -+ request.onload = handler; -+ request.onerror = handler; -+ request.open('GET', 'https://example.com/test3.png', true); -+ request.send(); -+ }); -+ apiObject.installSubscription(expectedSubscription); -+ }, -+ function allowedDomainsEvent() { -+ const domain = 'domain.com'; -+ let data = [domain]; -+ let attempts = 2; -+ chrome.adblockPrivate.onAllowedDomainsChanged.addListener(function() { -+ chrome.adblockPrivate.getAllowedDomains(function(domains) { -+ if (!arrayEquals(data, domains)) { -+ chrome.test.fail('Unexpected domain list'); -+ } -+ if (--attempts == 0) { -+ chrome.test.succeed(); -+ } -+ }); -+ }); -+ chrome.adblockPrivate.addAllowedDomain(domain); -+ data = []; -+ chrome.adblockPrivate.removeAllowedDomain(domain); -+ }, -+ function enabledStateEvent() { -+ let state = false; -+ let attempts = 2; -+ chrome.adblockPrivate.onEnabledStateChanged.addListener(function() { -+ chrome.adblockPrivate.isEnabled(function(enabled) { -+ if (enabled !== state) { -+ chrome.test.fail('Unexpected enabled state'); -+ } -+ if (--attempts == 0) { -+ chrome.test.succeed(); -+ } -+ }); -+ }); -+ chrome.adblockPrivate.setEnabled(false); -+ state = true; -+ chrome.adblockPrivate.setEnabled(true); -+ }, -+ function filterListsEvent() { -+ const kCustom = 'https://example.com/subscription.txt'; -+ let data = [kCustom]; -+ let attempts = 2; -+ chrome.adblockPrivate.onFilterListsChanged.addListener(function() { -+ chrome.adblockPrivate.getInstalledSubscriptions(function(custom) { -+ if (!(data.length + 3, custom.length)) { -+ chrome.test.fail('Unexpected subscription list'); -+ } -+ if (--attempts == 0) { -+ chrome.test.succeed(); -+ } -+ data = []; -+ chrome.adblockPrivate.uninstallSubscription(kCustom); -+ }); -+ }); -+ chrome.adblockPrivate.installSubscription(kCustom); -+ }, -+ function customFiltersEvent() { -+ const filter = 'foo.bar'; -+ let data = [filter]; -+ let attempts = 2; -+ chrome.adblockPrivate.onCustomFiltersChanged.addListener(function() { -+ chrome.adblockPrivate.getCustomFilters(function(filters) { -+ if (!arrayEquals(data, filters)) { -+ chrome.test.fail('Unexpected custom filter list'); -+ } -+ if (--attempts == 0) { -+ chrome.test.succeed(); -+ } -+ }); -+ }); -+ chrome.adblockPrivate.addCustomFilter(filter); -+ data = []; -+ chrome.adblockPrivate.removeCustomFilter(filter); -+ }, -+]; -+ -+chrome.test.runTests(availableTests.filter(function(op) { -+ return op.name == urlParams.get('subtest'); -+})); -diff --git a/chrome/test/data/extensions/api_test/eyeo_filtering_private/empty.js b/chrome/test/data/extensions/api_test/eyeo_filtering_private/empty.js -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/extensions/api_test/eyeo_filtering_private/empty.js -@@ -0,0 +1,14 @@ -+// This file is part of eyeo Chromium SDK, -+// Copyright (C) 2006-present eyeo GmbH -+// -+// eyeo Chromium SDK is free software: you can redistribute it and/or modify -+// it under the terms of the GNU General Public License version 3 as -+// published by the Free Software Foundation. -+// -+// eyeo Chromium SDK is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+// -+// You should have received a copy of the GNU General Public License -+// along with eyeo Chromium SDK. If not, see . -diff --git a/chrome/test/data/extensions/api_test/eyeo_filtering_private/main.html b/chrome/test/data/extensions/api_test/eyeo_filtering_private/main.html -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/extensions/api_test/eyeo_filtering_private/main.html -@@ -0,0 +1,29 @@ -+ -+ -+ -+ -+ -+ -+ Eyeo filtering private API test -+ -+ -+ -+

chrome.eyeoFilteringPrivate.* tests

-+ -+ -+ -diff --git a/chrome/test/data/extensions/api_test/eyeo_filtering_private/manifest.json b/chrome/test/data/extensions/api_test/eyeo_filtering_private/manifest.json -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/extensions/api_test/eyeo_filtering_private/manifest.json -@@ -0,0 +1,31 @@ -+// This file is part of eyeo Chromium SDK, -+// Copyright (C) 2006-present eyeo GmbH -+// -+// eyeo Chromium SDK is free software: you can redistribute it and/or modify -+// it under the terms of the GNU General Public License version 3 as -+// published by the Free Software Foundation. -+// -+// eyeo Chromium SDK is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+// -+// You should have received a copy of the GNU General Public License -+// along with eyeo Chromium SDK. If not, see . -+{ -+ "name": "eyeoFilteringPrivate API test", -+ "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkRxyv6tzqVnC+2gR3QxaN32fynw6GBZd9CXH8huHopx5xZ0fE1gScXnnjna7YW2sc6dhZZv326lRwmsJRwJN+RZpxBQbTD4CuCiqfUo+Xdyigh91QqyScLLRmg3SPsBBF9X/M50LO/6MD2eETiWbQQRy1TXNz52lt6NtjXKmS2lVZzR/jnGyAA96vMOmxeNIJmSYHFOHlSIphAJr/Erd0v1ZcBjJnZxqSrKZwUTHHc/FxcN1YqJkU/6O6gjMLNo3Uv33bqRAYmGUq+TTftwLg2hzEE1OllThcF9VVmQ3HZ5eTqqw/XP/tiQ/vUBflKer2mSVk708VBNpktao44kAtQIDAQAB", -+ "version": "0.1", -+ "incognito": "split", -+ "manifest_version": 3, -+ "background": { -+ "service_worker": "empty.js" -+ }, -+ "description": "Test of chrome.eyeoFilteringPrivate interface", -+ "host_permissions": [ -+ "" -+ ], -+ "permissions": [ -+ "eyeoFilteringPrivate" -+ ] -+} -diff --git a/chrome/test/data/extensions/api_test/eyeo_filtering_private/test.js b/chrome/test/data/extensions/api_test/eyeo_filtering_private/test.js -new file mode 100644 ---- /dev/null -+++ b/chrome/test/data/extensions/api_test/eyeo_filtering_private/test.js -@@ -0,0 +1,460 @@ -+// This file is part of eyeo Chromium SDK, -+// Copyright (C) 2006-present eyeo GmbH -+// -+// eyeo Chromium SDK is free software: you can redistribute it and/or modify -+// it under the terms of the GNU General Public License version 3 as -+// published by the Free Software Foundation. -+// -+// eyeo Chromium SDK is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+// -+// You should have received a copy of the GNU General Public License -+// along with eyeo Chromium SDK. If not, see . -+ -+'use strict'; -+ -+const custom_config = 'custom'; -+ -+async function pollUntil(predicate, pollEveryMs) { -+ return new Promise(r => { -+ const id = setInterval(() => { -+ let ret; -+ if (ret = predicate()) { -+ clearInterval(id); -+ r(ret); -+ } -+ }, pollEveryMs); -+ }); -+} -+ -+function containsSubscription(subscriptions, url) { -+ for (const subscription of subscriptions) { -+ if (subscription.url === url) { -+ return true; -+ } -+ } -+ return false; -+} -+ -+function arrayEquals(a, b) { -+ if (a === b) -+ return true; -+ if (a === null || b === null) -+ return false; -+ if (a.length !== b.length) -+ return false; -+ for (var i = 0; i < a.length; i++) { -+ if (a[i] !== b[i]) -+ return false; -+ } -+ return true; -+}; -+ -+const availableTests = [ -+ function createRemoveAndGetConfigurations() { -+ chrome.eyeoFilteringPrivate.getConfigurations(function(configs) { -+ if (configs.includes(custom_config)) { -+ chrome.test.fail('Failed: There should NOT be a custom configuration'); -+ } -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.getConfigurations(function(configs) { -+ if (!configs.includes(custom_config)) { -+ chrome.test.fail('Failed: There should be a custom configuration'); -+ } -+ chrome.eyeoFilteringPrivate.removeConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.getConfigurations(function(configs) { -+ if (configs.includes(custom_config)) { -+ chrome.test.fail('Failed: There should NOT be a custom configuration'); -+ } -+ chrome.test.succeed(); -+ }); -+ }); -+ }); -+ }, -+ function createRemoveAndGetConfigurationsWithPromises() { -+ chrome.eyeoFilteringPrivate.getConfigurations().then(configs => { -+ if (configs.includes(custom_config)) { -+ chrome.test.fail('Failed: There should NOT be a custom configuration'); -+ } -+ }); -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.getConfigurations().then(configs => { -+ if (!configs.includes(custom_config)) { -+ chrome.test.fail('Failed: There should be a custom configuration'); -+ } -+ chrome.eyeoFilteringPrivate.removeConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.getConfigurations().then(configs => { -+ if (configs.includes(custom_config)) { -+ chrome.test.fail('Failed: There should NOT be a custom configuration'); -+ } -+ chrome.test.succeed(); -+ }); -+ }); -+ }, -+ function enableAndDisableConfiguration() { -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.isEnabled(custom_config, function(enabled) { -+ if (!enabled) { -+ chrome.test.fail('Failed: Configuration should be enabled'); -+ } -+ }); -+ chrome.eyeoFilteringPrivate.setEnabled(custom_config, false); -+ chrome.eyeoFilteringPrivate.isEnabled(custom_config, function(enabled) { -+ if (enabled) { -+ chrome.test.fail('Failed: Configuration should NOT be enabled'); -+ } -+ }); -+ chrome.eyeoFilteringPrivate.setEnabled(custom_config, true); -+ chrome.eyeoFilteringPrivate.isEnabled(custom_config, function(enabled) { -+ if (!enabled) { -+ chrome.test.fail('Failed: Configuration should be enabled'); -+ } -+ chrome.test.succeed(); -+ }); -+ }, -+ function enableAndDisableConfigurationWithPromises() { -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.isEnabled(custom_config).then(enabled => { -+ if (!enabled) { -+ chrome.test.fail('Failed: Configuration should be enabled'); -+ } -+ }); -+ chrome.eyeoFilteringPrivate.setEnabled(custom_config, false); -+ chrome.eyeoFilteringPrivate.isEnabled(custom_config) -+ .then(enabled => { -+ if (enabled) { -+ chrome.test.fail('Failed: Configuration should NOT be enabled'); -+ } -+ }) -+ .catch(error => chrome.test.fail(error)); -+ chrome.eyeoFilteringPrivate.setEnabled(custom_config, true); -+ chrome.eyeoFilteringPrivate.isEnabled(custom_config).then(enabled => { -+ if (!enabled) { -+ chrome.test.fail('Failed: Configuration should be enabled'); -+ } -+ chrome.test.succeed(); -+ }); -+ }, -+ function addAllowedDomainToCustomConfiguration() { -+ const domain = 'domain.com'; -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.addAllowedDomain(custom_config, domain); -+ chrome.eyeoFilteringPrivate.getAllowedDomains( -+ custom_config, function(domains) { -+ if (domains.length != 1) { -+ chrome.test.fail('Failed: There should be a custom domain'); -+ } -+ if (domains.indexOf(domain) == -1) { -+ chrome.test.fail('Failed: Didn\'t find expected custom domain'); -+ } -+ }); -+ chrome.eyeoFilteringPrivate.removeAllowedDomain(custom_config, domain); -+ chrome.eyeoFilteringPrivate.getAllowedDomains( -+ custom_config, function(domains) { -+ if (domains.length) { -+ chrome.test.fail('Failed: Still have custom domain(s)'); -+ } -+ chrome.test.succeed(); -+ }); -+ }, -+ async function addAllowedDomainToCustomConfigurationWithPromises() { -+ const domain = 'domain.com'; -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ await chrome.eyeoFilteringPrivate.addAllowedDomain(custom_config, domain); -+ chrome.eyeoFilteringPrivate.getAllowedDomains(custom_config) -+ .then(domains => { -+ if (domains.length != 1) { -+ chrome.test.fail('Failed: There should be a custom domain'); -+ } -+ if (domains.indexOf(domain) == -1) { -+ chrome.test.fail('Failed: Didn\'t find expected custom domain'); -+ } -+ }); -+ await chrome.eyeoFilteringPrivate.removeAllowedDomain( -+ custom_config, domain); -+ chrome.eyeoFilteringPrivate.getAllowedDomains(custom_config) -+ .then(domains => { -+ if (domains.length) { -+ chrome.test.fail('Failed: Still have custom domain(s)'); -+ } -+ chrome.test.succeed(); -+ }); -+ }, -+ function addCustomFilterToCustomConfiguration() { -+ const filter = '||foo.bar'; -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.addCustomFilter(custom_config, filter); -+ chrome.eyeoFilteringPrivate.getCustomFilters( -+ custom_config, function(filters) { -+ if (filters.length != 1) { -+ chrome.test.fail('Failed: There should be a custom filter'); -+ } -+ if (filters.indexOf(filter) == -1) { -+ chrome.test.fail('Failed: Didn\'t find expected custom filter'); -+ } -+ }); -+ chrome.eyeoFilteringPrivate.removeCustomFilter(custom_config, filter); -+ chrome.eyeoFilteringPrivate.getCustomFilters( -+ custom_config, function(filters) { -+ if (filters.length) { -+ chrome.test.fail('Failed: Still have custom filter(s)'); -+ } -+ chrome.test.succeed(); -+ }); -+ }, -+ async function addCustomFilterToCustomConfigurationWithPromises() { -+ const filter = '||foo.bar'; -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ await chrome.eyeoFilteringPrivate.addCustomFilter(custom_config, filter); -+ chrome.eyeoFilteringPrivate.getCustomFilters(custom_config) -+ .then(filters => { -+ if (filters.length != 1) { -+ chrome.test.fail('Failed: There should be a custom filter'); -+ } -+ if (filters.indexOf(domain) == -1) { -+ chrome.test.fail('Failed: Didn\'t find expected custom filter'); -+ } -+ }); -+ await chrome.eyeoFilteringPrivate.removeCustomFilter(custom_config, filter); -+ chrome.eyeoFilteringPrivate.getCustomFilters(custom_config) -+ .then(filters => { -+ if (filters.length) { -+ chrome.test.fail('Failed: Still have custom filter(s)'); -+ } -+ chrome.test.succeed(); -+ }); -+ }, -+ function subscribeToFilterListInCustomConfiguration() { -+ const subscription = 'https://example.com/subscription.txt'; -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.subscribeToFilterList( -+ custom_config, subscription, function() { -+ chrome.eyeoFilteringPrivate.getFilterLists( -+ custom_config, function(subscriptions) { -+ if (subscriptions.length != 1) { -+ chrome.test.fail( -+ 'Failed: There should be a custom subscription'); -+ return; -+ } -+ if (!containsSubscription(subscriptions, subscription)) { -+ chrome.test.fail( -+ 'Failed: Didn\'t find expected custom subscription'); -+ return; -+ } -+ chrome.eyeoFilteringPrivate.unsubscribeFromFilterList( -+ custom_config, subscription, function() { -+ chrome.eyeoFilteringPrivate.getFilterLists( -+ custom_config, function(subscriptions) { -+ if (subscriptions.length) { -+ chrome.test.fail( -+ 'Failed: Still have custom subscription(s)'); -+ } -+ chrome.test.succeed(); -+ }); -+ }); -+ }); -+ }); -+ }, -+ async function subscribeToFilterListInCustomConfigurationWithPromises() { -+ const subscription = 'https://example.com/subscription.txt'; -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ await chrome.eyeoFilteringPrivate.subscribeToFilterList( -+ custom_config, subscription); -+ chrome.eyeoFilteringPrivate.getFilterLists(custom_config) -+ .then(subscriptions => { -+ if (subscriptions.length != 1) { -+ chrome.test.fail('Failed: There should be a custom subscription'); -+ return; -+ } -+ if (!containsSubscription(subscriptions, subscription)) { -+ chrome.test.fail( -+ 'Failed: Didn\'t find expected custom subscription'); -+ return; -+ } -+ }); -+ await chrome.eyeoFilteringPrivate.unsubscribeFromFilterList( -+ custom_config, subscription); -+ chrome.eyeoFilteringPrivate.getFilterLists(custom_config) -+ .then(subscriptions => { -+ if (subscriptions.length) { -+ chrome.test.fail('Failed: Still have custom subscription(s)'); -+ } -+ chrome.test.succeed(); -+ }); -+ }, -+ async function missingConfiguration() { -+ const input = 'https://dummy.com'; -+ const expectedError = 'Configuration with name \'custom\' does not exist!'; -+ const setters = [ -+ 'subscribeToFilterList', 'unsubscribeFromFilterList', 'addAllowedDomain', -+ 'removeAllowedDomain', 'addCustomFilter', 'removeCustomFilter' -+ ]; -+ const getters = [ -+ 'isEnabled', 'getFilterLists', 'getAllowedDomains', 'getCustomFilters' -+ ]; -+ const allMethodsCount = 1 + setters.length + getters.length; -+ let counter = 0; -+ chrome.eyeoFilteringPrivate.setEnabled(custom_config, false, function() { -+ if (!chrome.runtime.lastError) { -+ chrome.test.fail('Failed: missing configuration accepted'); -+ } -+ chrome.test.assertEq(expectedError, chrome.runtime.lastError.message); -+ ++counter; -+ }); -+ for (const method of setters) { -+ chrome.eyeoFilteringPrivate[method](custom_config, input, function() { -+ if (!chrome.runtime.lastError) { -+ chrome.test.fail('Failed: missing configuration accepted'); -+ } -+ chrome.test.assertEq(expectedError, chrome.runtime.lastError.message); -+ ++counter; -+ }); -+ } -+ for (const method of getters) { -+ chrome.eyeoFilteringPrivate[method](custom_config, function(result) { -+ if (!chrome.runtime.lastError) { -+ chrome.test.fail('Failed: missing configuration accepted'); -+ } -+ chrome.test.assertEq(expectedError, chrome.runtime.lastError.message); -+ ++counter; -+ }); -+ } -+ await pollUntil(() => counter === allMethodsCount, 100); -+ chrome.test.succeed(); -+ }, -+ async function missingConfigurationWithPromises() { -+ const input = 'https://dummy.com'; -+ const expectedError = -+ 'Error: Configuration with name \'custom\' does not exist!' -+ const setters = [ -+ 'subscribeToFilterList', 'unsubscribeFromFilterList', 'addAllowedDomain', -+ 'removeAllowedDomain', 'addCustomFilter', 'removeCustomFilter' -+ ]; -+ const getters = [ -+ 'isEnabled', 'getFilterLists', 'getAllowedDomains', 'getCustomFilters' -+ ]; -+ const allMethodsCount = 1 + setters.length + getters.length; -+ let counter = 0; -+ const errorHandler = function(error) { -+ chrome.test.assertEq(expectedError, error.toString()); -+ ++counter; -+ }; -+ await chrome.eyeoFilteringPrivate.setEnabled(custom_config, false) -+ .catch(error => errorHandler(error)); -+ for (const method of setters) { -+ await chrome.eyeoFilteringPrivate[method](custom_config, input) -+ .catch(error => errorHandler(error)); -+ } -+ for (const method of getters) { -+ await chrome.eyeoFilteringPrivate[method](custom_config) -+ .catch(error => errorHandler(error)); -+ } -+ if (counter == allMethodsCount) { -+ chrome.test.succeed(); -+ } else { -+ chrome.test.fail('Failed: expected missing configuration for every call'); -+ } -+ }, -+ function allowedDomainsEvent() { -+ const domain = 'domain.com'; -+ let data = [domain]; -+ let attempts = 2; -+ chrome.eyeoFilteringPrivate.onAllowedDomainsChanged.addListener(function( -+ config_name) { -+ if (config_name != custom_config) { -+ chrome.test.fail('Failed: Wrong config name'); -+ } -+ chrome.eyeoFilteringPrivate.getAllowedDomains( -+ custom_config, function(domains) { -+ if (!arrayEquals(data, domains)) { -+ chrome.test.fail('Unexpected domain list'); -+ } -+ if (--attempts == 0) { -+ chrome.test.succeed(); -+ } -+ }); -+ }); -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.addAllowedDomain(custom_config, domain); -+ data = []; -+ chrome.eyeoFilteringPrivate.removeAllowedDomain(custom_config, domain); -+ }, -+ function enabledStateEvent() { -+ let state = false; -+ let attempts = 2; -+ chrome.eyeoFilteringPrivate.onEnabledStateChanged.addListener(function( -+ config_name) { -+ if (config_name != custom_config) { -+ chrome.test.fail('Failed: Wrong config name'); -+ } -+ chrome.eyeoFilteringPrivate.isEnabled(custom_config, function(enabled) { -+ if (enabled !== state) { -+ chrome.test.fail('Unexpected enabled state'); -+ } -+ if (--attempts == 0) { -+ chrome.test.succeed(); -+ } -+ }); -+ }); -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.setEnabled(custom_config, false); -+ state = true; -+ chrome.eyeoFilteringPrivate.setEnabled(custom_config, true); -+ }, -+ function filterListsEvent() { -+ const domain = 'http://domain.com/'; -+ let data = [domain]; -+ let attempts = 2; -+ chrome.eyeoFilteringPrivate.onFilterListsChanged.addListener(function( -+ config_name) { -+ if (config_name != custom_config) { -+ chrome.test.fail('Failed: Wrong config name'); -+ } -+ chrome.eyeoFilteringPrivate.getFilterLists( -+ custom_config, function(custom) { -+ if (!arrayEquals(data, custom)) { -+ chrome.test.fail('Unexpected subscription list'); -+ } -+ if (--attempts == 0) { -+ chrome.test.succeed(); -+ } -+ }); -+ }); -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.subscribeToFilterList(custom_config, domain); -+ data = []; -+ chrome.eyeoFilteringPrivate.unsubscribeFromFilterList( -+ custom_config, domain); -+ }, -+ function customFiltersEvent() { -+ const filter = 'foo.bar'; -+ let data = [filter]; -+ let attempts = 2; -+ chrome.eyeoFilteringPrivate.onCustomFiltersChanged.addListener(function( -+ config_name) { -+ if (config_name != custom_config) { -+ chrome.test.fail('Failed: Wrong config name'); -+ } -+ chrome.eyeoFilteringPrivate.getCustomFilters( -+ custom_config, function(filters) { -+ if (!arrayEquals(data, filters)) { -+ chrome.test.fail('Unexpected custom filter list'); -+ } -+ if (--attempts == 0) { -+ chrome.test.succeed(); -+ } -+ }); -+ }); -+ chrome.eyeoFilteringPrivate.createConfiguration(custom_config); -+ chrome.eyeoFilteringPrivate.addCustomFilter(custom_config, filter); -+ data = []; -+ chrome.eyeoFilteringPrivate.removeCustomFilter(custom_config, filter); -+ }, -+]; -+ -+const urlParams = new URLSearchParams(window.location.search); -+chrome.test.runTests(availableTests.filter(function(op) { -+ return op.name == urlParams.get('subtest'); -+})); diff --git a/extensions/browser/extension_event_histogram_value.h b/extensions/browser/extension_event_histogram_value.h --- a/extensions/browser/extension_event_histogram_value.h +++ b/extensions/browser/extension_event_histogram_value.h @@ -5425,30 +4142,19 @@ diff --git a/extensions/common/mojom/api_permission_id.mojom b/extensions/common + kEyeoFilteringPrivate = 1000, // Add new entries at the end of the enum and be sure to update the - // "ExtensionPermission3" enum in tools/metrics/histograms/enums.xml -diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml ---- a/tools/metrics/histograms/enums.xml -+++ b/tools/metrics/histograms/enums.xml -@@ -17,6 +17,9 @@ https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histogra - Please pretty-print and validate your edits by running the pretty_print.py - and validate_format.py scripts in the same directory as this file before - uploading your change for review. These are checked by presubmit scripts. -+ -+This source code is a part of eyeo Chromium SDK. -+Use of this source code is governed by the GPLv3 that can be found in the components/adblock/LICENSE file. - --> + // "ExtensionPermission3" enum in +diff --git a/tools/metrics/histograms/metadata/extensions/enums.xml b/tools/metrics/histograms/metadata/extensions/enums.xml +--- a/tools/metrics/histograms/metadata/extensions/enums.xml ++++ b/tools/metrics/histograms/metadata/extensions/enums.xml +@@ -751,6 +751,7 @@ Called by update_extension_histograms.py.--> + + ++ + - -@@ -14462,7 +14465,7 @@ Called by update_extension_histograms.py.--> - - - -- -+ - - - -@@ -17413,6 +17416,8 @@ Called by update_extension_permission.py.--> + +@@ -3095,6 +3096,8 @@ Called by update_extension_permission.py.--> @@ -5456,7 +4162,7 @@ diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums + - + diff --git a/tools/typescript/definitions/adblock_private.d.ts b/tools/typescript/definitions/adblock_private.d.ts new file mode 100644 --- /dev/null diff --git a/build/cromite_patches/kill-Auth.patch b/build/cromite_patches/kill-Auth.patch index 967f8cac172fcfbb7fe80143b4024a780ee6c197..52d37c51df45a605090e5f4755b1f4cc2f6d4fa5 100644 --- a/build/cromite_patches/kill-Auth.patch +++ b/build/cromite_patches/kill-Auth.patch @@ -4,8 +4,8 @@ Subject: kill Auth License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../signin/SystemAccountManagerDelegate.java | 69 +------------------ - 1 file changed, 3 insertions(+), 66 deletions(-) + .../signin/SystemAccountManagerDelegate.java | 63 +------------------ + 1 file changed, 3 insertions(+), 60 deletions(-) diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java --- a/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java @@ -20,26 +20,13 @@ diff --git a/components/signin/public/android/java/src/org/chromium/components/s import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.Callback; import org.chromium.base.ContextUtils; -@@ -89,15 +86,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { - @Deprecated +@@ -88,18 +85,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { + @Override - public Account[] getAccounts() { -- if (hasGetAccountsPermission() && isGooglePlayServicesAvailable()) { -- long startTime = SystemClock.elapsedRealtime(); -- Account[] accounts = -- mAccountManager.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); -- RecordHistogram.recordTimesHistogram( -- "Signin.AndroidGetAccountsTime_AccountManager", -- SystemClock.elapsedRealtime() - startTime); -- return accounts; + public Account[] getAccountsSynchronous() throws AccountManagerDelegateException { +- if (!isGooglePlayServicesAvailable()) { +- throw new AccountManagerDelegateException("Can't use Google Play Services"); - } - // Account seeding relies on GoogleAuthUtil.getAccountId to get GAIA ids, - // so don't report any accounts if Google Play Services are out of date. - return new Account[] {}; -@@ -108,15 +96,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { - if (!isGooglePlayServicesAvailable()) { - throw new AccountManagerDelegateException("Can't use Google Play Services"); - } - if (hasGetAccountsPermission()) { - long startTime = SystemClock.elapsedRealtime(); - Account[] accounts = @@ -52,7 +39,7 @@ diff --git a/components/signin/public/android/java/src/org/chromium/components/s // Don't report any accounts if we don't have permission. // TODO(crbug.com/1502123): Throw an exception if permission was denied. return new Account[] {}; -@@ -127,31 +106,12 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { +@@ -110,31 +95,12 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { throws AuthException { ThreadUtils.assertOnBackgroundThread(); assert AccountUtils.GOOGLE_ACCOUNT_TYPE.equals(account.type); @@ -86,7 +73,7 @@ diff --git a/components/signin/public/android/java/src/org/chromium/components/s } @Override -@@ -188,24 +148,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { +@@ -171,24 +137,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { @SuppressLint("MissingPermission") @Override public void createAddAccountIntent(Callback callback) { @@ -111,7 +98,7 @@ diff --git a/components/signin/public/android/java/src/org/chromium/components/s } // No permission is needed on 23+ and Chrome always has MANAGE_ACCOUNTS permission on lower APIs -@@ -240,12 +182,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { +@@ -223,12 +171,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate { @Nullable @Override public String getAccountGaiaId(String accountEmail) { diff --git a/build/cromite_patches/kill-Vision.patch b/build/cromite_patches/kill-Vision.patch index 64a7947e1782829e8f293c7ca3b74f33608fea78..aaff65c51b8ca02be5c678f195c630b7625cee47 100644 --- a/build/cromite_patches/kill-Vision.patch +++ b/build/cromite_patches/kill-Vision.patch @@ -15,15 +15,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -300,8 +300,6 @@ if (current_toolchain == default_toolchain) { +@@ -298,8 +298,6 @@ if (current_toolchain == default_toolchain) { "$google_play_services_package:google_play_services_gcm_java", "$google_play_services_package:google_play_services_iid_java", "$google_play_services_package:google_play_services_tasks_java", - "$google_play_services_package:google_play_services_vision_common_java", - "$google_play_services_package:google_play_services_vision_java", + "//base/version_info/android:version_constants_java", "//cc:cc_java", "//cc/mojom:mojom_java", - "//chrome/android/features/keyboard_accessory:public_java", diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn --- a/services/shape_detection/BUILD.gn +++ b/services/shape_detection/BUILD.gn diff --git a/build/cromite_patches/net-cert-increase-default-key-length.patch b/build/cromite_patches/net-cert-increase-default-key-length.patch index 632b55c9251a587cd4691db8c6378c4eebae8e82..f4dce9959119ce16d4543841413a3a1747fd36d5 100644 --- a/build/cromite_patches/net-cert-increase-default-key-length.patch +++ b/build/cromite_patches/net-cert-increase-default-key-length.patch @@ -13,7 +13,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/net/cert/x509_util.cc b/net/cert/x509_util.cc --- a/net/cert/x509_util.cc +++ b/net/cert/x509_util.cc -@@ -255,7 +255,7 @@ bool GetTLSServerEndPointChannelBinding(const X509Certificate& certificate, +@@ -286,7 +286,7 @@ bool GetTLSServerEndPointChannelBinding(const X509Certificate& certificate, } // RSA keys created by CreateKeyAndSelfSignedCert will be of this length. diff --git a/build/cromite_patches/openH264-enable-ARM-ARM64-optimizations.patch b/build/cromite_patches/openH264-enable-ARM-ARM64-optimizations.patch index b0532b288e0ccd2793312a14cd17bc9f1e0aecad..a32c6c9be8927233e419b63a0cd5ff700d2a8d86 100644 --- a/build/cromite_patches/openH264-enable-ARM-ARM64-optimizations.patch +++ b/build/cromite_patches/openH264-enable-ARM-ARM64-optimizations.patch @@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc b/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc --- a/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc +++ b/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc -@@ -223,11 +223,11 @@ bool H264Encoder::ConfigureEncoder(const gfx::Size& size) { +@@ -228,11 +228,11 @@ bool H264Encoder::ConfigureEncoder(const gfx::Size& size) { init_params.iRCMode = RC_OFF_MODE; } diff --git a/build/cromite_patches/prefs-always-prompt-for-download-directory.patch b/build/cromite_patches/prefs-always-prompt-for-download-directory.patch index 8612a3617eeac60cbafe1ce3a4f9bae675e2e48a..d22cadd8cee1bec3441d9c66ac527dac6194ba34 100644 --- a/build/cromite_patches/prefs-always-prompt-for-download-directory.patch +++ b/build/cromite_patches/prefs-always-prompt-for-download-directory.patch @@ -31,7 +31,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download/download_prefs.cc --- a/chrome/browser/download/download_prefs.cc +++ b/chrome/browser/download/download_prefs.cc -@@ -279,7 +279,7 @@ void DownloadPrefs::RegisterProfilePrefs( +@@ -280,7 +280,7 @@ void DownloadPrefs::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref( prefs::kPromptForDownload, diff --git a/build/cromite_patches/sharing-hub-always-use-visible-URL.patch b/build/cromite_patches/sharing-hub-always-use-visible-URL.patch index a1ff8bd670a064e56adcfc9e0e44e29817f53f66..b90076d75d33cfcf5c194bd2b4ebc64800caad6d 100644 --- a/build/cromite_patches/sharing-hub-always-use-visible-URL.patch +++ b/build/cromite_patches/sharing-hub-always-use-visible-URL.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java -@@ -226,14 +226,8 @@ public class ShareDelegateImpl implements ShareDelegate { +@@ -223,14 +223,8 @@ public class ShareDelegateImpl implements ShareDelegate { @VisibleForTesting static boolean shouldFetchCanonicalUrl(final Tab currentTab) { diff --git a/build/cromite_patches/ungoogled-chromium-Disable-Network-Time-Tracker.patch b/build/cromite_patches/ungoogled-chromium-Disable-Network-Time-Tracker.patch index de42ad055d55f43d814f7badbb434915243cb0ae..271a26654f2f8b70fe641e6495966c3b25b6758f 100644 --- a/build/cromite_patches/ungoogled-chromium-Disable-Network-Time-Tracker.patch +++ b/build/cromite_patches/ungoogled-chromium-Disable-Network-Time-Tracker.patch @@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/network_time/network_time_tracker.cc b/components/network_time/network_time_tracker.cc --- a/components/network_time/network_time_tracker.cc +++ b/components/network_time/network_time_tracker.cc -@@ -294,7 +294,7 @@ void NetworkTimeTracker::UpdateNetworkTime(base::Time network_time, +@@ -274,7 +274,7 @@ void NetworkTimeTracker::UpdateNetworkTime(base::Time network_time, } bool NetworkTimeTracker::AreTimeFetchesEnabled() const { diff --git a/build/cromite_patches/ungoogled-chromium-Disable-profile-avatar.patch b/build/cromite_patches/ungoogled-chromium-Disable-profile-avatar.patch index 640c65e2d6c078644f97307930da752ddb9b0020..e50494fbe531d420734091c81dd1dc325fd8ff1b 100644 --- a/build/cromite_patches/ungoogled-chromium-Disable-profile-avatar.patch +++ b/build/cromite_patches/ungoogled-chromium-Disable-profile-avatar.patch @@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -1425,8 +1425,6 @@ static_library("browser") { +@@ -1399,8 +1399,6 @@ static_library("browser") { "profiles/profile_attributes_storage.cc", "profiles/profile_attributes_storage.h", "profiles/profile_attributes_storage_observer.h", @@ -26,7 +26,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc --- a/chrome/browser/profiles/profile_attributes_entry.cc +++ b/chrome/browser/profiles/profile_attributes_entry.cc -@@ -323,12 +323,6 @@ std::u16string ProfileAttributesEntry::GetUserName() const { +@@ -328,12 +328,6 @@ std::u16string ProfileAttributesEntry::GetUserName() const { gfx::Image ProfileAttributesEntry::GetAvatarIcon( int size_for_placeholder_avatar, bool use_high_res_file) const { diff --git a/build/cromite_patches/ungoogled-chromium-Disable-translate-integration.patch b/build/cromite_patches/ungoogled-chromium-Disable-translate-integration.patch index 3320db9587072fdab4cb14a0343949ae3e56af9d..ebf90a020b252ee724aa80a37c5e8992c34cb45b 100644 --- a/build/cromite_patches/ungoogled-chromium-Disable-translate-integration.patch +++ b/build/cromite_patches/ungoogled-chromium-Disable-translate-integration.patch @@ -173,9 +173,9 @@ diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1726,9 +1726,6 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1735,9 +1735,6 @@ Your Google account may have other forms of browsing history like searches and a - Websites will show text in your preferred language, when possible. + Let websites know the languages you speak. They’ll show content in those languages, when possible. - - Offer to translate pages in other languages diff --git a/build/cromite_patches/ungoogled-chromium-Disable-webRTC-log-uploader.patch b/build/cromite_patches/ungoogled-chromium-Disable-webRTC-log-uploader.patch index f6913c50e28ee2e3fcdd55d5db8330ee29f09df8..ef59b77190e7d1e6fc1f47abc35951ef4a221b15 100644 --- a/build/cromite_patches/ungoogled-chromium-Disable-webRTC-log-uploader.patch +++ b/build/cromite_patches/ungoogled-chromium-Disable-webRTC-log-uploader.patch @@ -10,13 +10,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -98,7 +98,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -101,7 +101,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterStringPref(prefs::kWebRTCUDPPortRange, std::string()); registry->RegisterBooleanPref(prefs::kWebRtcEventLogCollectionAllowed, false); registry->RegisterListPref(prefs::kWebRtcLocalIpsAllowedUrls); - registry->RegisterBooleanPref(prefs::kWebRtcTextLogCollectionAllowed, true); + registry->RegisterBooleanPref(prefs::kWebRtcTextLogCollectionAllowed, false); - // Dictionaries to keep track of default tasks in the file browser. - registry->RegisterDictionaryPref( + // We need to register the type of these preferences in order to query + // them even though they're only typically controlled via policy. -- diff --git a/build/cromite_patches/ungoogled-chromium-no-special-hosts-domains.patch b/build/cromite_patches/ungoogled-chromium-no-special-hosts-domains.patch index 2f47b29faeb2036de46de30ccf080bb7388f9b7f..50816de0a8c9951a838d18734dea8685f32307bf 100644 --- a/build/cromite_patches/ungoogled-chromium-no-special-hosts-domains.patch +++ b/build/cromite_patches/ungoogled-chromium-no-special-hosts-domains.patch @@ -9,7 +9,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/browser/BUILD.gn | 8 - .../android/metrics/uma_session_stats.cc | 10 - - .../android/signin/signin_manager_android.cc | 27 +- + .../android/signin/signin_manager_android.cc | 39 +-- chrome/browser/browser_process_impl.cc | 1 - chrome/browser/chrome_browser_main.cc | 10 - .../browser/chrome_content_browser_client.cc | 35 +- @@ -45,7 +45,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../domain_reliability/google_configs.h | 8 +- components/domain_reliability/monitor.cc | 8 - components/domain_reliability/uploader.cc | 2 +- - components/google/core/common/google_util.cc | 313 +----------------- + components/google/core/common/google_util.cc | 312 +----------------- components/google/core/common/google_util.h | 15 +- .../browser/page_load_metrics_util.cc | 4 +- .../common/page_load_metrics_util.cc | 33 +- @@ -59,14 +59,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ...gled-chromium-no-special-hosts-domains.inc | 1 + net/base/url_util.cc | 25 +- services/network/network_context.cc | 2 +- - 52 files changed, 58 insertions(+), 799 deletions(-) + 52 files changed, 58 insertions(+), 810 deletions(-) create mode 100644 cromite_flags/content/common/features_cc/ungoogled-chromium-no-special-hosts-domains.inc create mode 100644 cromite_flags/content/public/common/content_features_cc/ungoogled-chromium-no-special-hosts-domains.inc diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -992,10 +992,6 @@ static_library("browser") { +@@ -1005,10 +1005,6 @@ static_library("browser") { "page_load_metrics/observers/foreground_duration_ukm_observer.h", "page_load_metrics/observers/formfill_page_load_metrics_observer.cc", "page_load_metrics/observers/formfill_page_load_metrics_observer.h", @@ -77,7 +77,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "page_load_metrics/observers/histogram_suffixes.cc", "page_load_metrics/observers/histogram_suffixes.h", "page_load_metrics/observers/https_engagement_metrics/https_engagement_page_load_metrics_observer.cc", -@@ -1960,7 +1956,6 @@ static_library("browser") { +@@ -1956,7 +1952,6 @@ static_library("browser") { "//chrome/browser/autofill", "//chrome/browser/devtools", "//chrome/browser/favicon", @@ -85,7 +85,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn # Circular dependency due to SystemNetworkContextManager. "//chrome/browser/image_fetcher", -@@ -1987,7 +1982,6 @@ static_library("browser") { +@@ -1985,7 +1980,6 @@ static_library("browser") { public_deps = [ "//base", @@ -93,8 +93,8 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//chrome/browser/headless", "//chrome/browser/profiles", "//chrome/common", -@@ -7839,8 +7833,6 @@ static_library("browser") { - "supervised_user/kids_chrome_management/kids_chrome_management_client_factory.h", +@@ -7790,8 +7784,6 @@ static_library("browser") { + "supervised_user/chrome_supervised_user_web_content_handler_base.h", "supervised_user/supervised_user_browser_utils.cc", "supervised_user/supervised_user_browser_utils.h", - "supervised_user/supervised_user_google_auth_navigation_throttle.cc", @@ -125,13 +125,25 @@ diff --git a/chrome/browser/android/metrics/uma_session_stats.cc b/chrome/browse diff --git a/chrome/browser/android/signin/signin_manager_android.cc b/chrome/browser/android/signin/signin_manager_android.cc --- a/chrome/browser/android/signin/signin_manager_android.cc +++ b/chrome/browser/android/signin/signin_manager_android.cc -@@ -58,29 +58,10 @@ class ProfileDataRemover : public content::BrowsingDataRemover::Observer { +@@ -60,41 +60,10 @@ class ProfileDataRemover : public content::BrowsingDataRemover::Observer { + origin_runner_(base::SingleThreadTaskRunner::GetCurrentDefault()), remover_(profile->GetBrowsingDataRemover()) { remover_->AddObserver(this); - +- - if (all_data) { -- remover_->RemoveAndReply(base::Time(), base::Time::Max(), -- chrome_browsing_data_remover::ALL_DATA_TYPES, +- chrome_browsing_data_remover::DataType removed_types = +- chrome_browsing_data_remover::ALL_DATA_TYPES; +- if (password_manager::UsesSplitStoresAndUPMForLocal( +- profile_->GetPrefs())) { +- // If usesSplitStoresAndUPMForLocal() is true, browser sign-in won't +- // upload existing passwords, so there's no reason to wipe them +- // immediately before. Similarly, on browser sign-out, account passwords +- // should survive (outside of the browser) to be used by other apps, +- // until system-level sign-out. In other words, the browser has no +- // business deleting any passwords here. +- removed_types &= ~chrome_browsing_data_remover::DATA_TYPE_PASSWORDS; +- } +- remover_->RemoveAndReply(base::Time(), base::Time::Max(), removed_types, - chrome_browsing_data_remover::ALL_ORIGIN_TYPES, - this); - } else { @@ -153,16 +165,16 @@ diff --git a/chrome/browser/android/signin/signin_manager_android.cc b/chrome/br - std::move(google_tld_filter), this); - } + remover_->RemoveAndReply(base::Time(), base::Time::Max(), -+ chrome_browsing_data_remover::ALL_DATA_TYPES, -+ chrome_browsing_data_remover::ALL_ORIGIN_TYPES, -+ this); ++ chrome_browsing_data_remover::ALL_DATA_TYPES, ++ chrome_browsing_data_remover::ALL_ORIGIN_TYPES, ++ this); } ProfileDataRemover(const ProfileDataRemover&) = delete; diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc -@@ -1129,7 +1129,6 @@ BrowserProcessImpl::component_updater() { +@@ -1159,7 +1159,6 @@ BrowserProcessImpl::component_updater() { std::make_unique(); std::string brand; @@ -173,7 +185,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc -@@ -529,11 +529,6 @@ void ProcessSingletonNotificationCallbackImpl( +@@ -527,11 +527,6 @@ void ProcessSingletonNotificationCallbackImpl( StartupBrowserCreator::ProcessCommandLineAlreadyRunning( command_line, current_directory, startup_profile_path_info); @@ -185,7 +197,7 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows } #endif // BUILDFLAG(ENABLE_PROCESS_SINGLETON) -@@ -1773,11 +1768,6 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1781,11 +1776,6 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { upgrade_util::SaveLastModifiedTimeOfExe(); #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) @@ -200,7 +212,7 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -2860,7 +2860,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( +@@ -2744,7 +2744,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches( switches::kForcePNaClSubzero, #endif switches::kForceUIDirection, @@ -208,7 +220,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch switches::kJavaScriptHarmony, switches::kEnableExperimentalWebAssemblyFeatures, embedder_support::kOriginTrialDisabledFeatures, -@@ -5132,12 +5131,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( +@@ -5010,12 +5009,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation( } #endif @@ -221,7 +233,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch if (auto* throttle_manager = subresource_filter::ContentSubresourceFilterThrottleManager:: FromNavigationHandle(*handle)) { -@@ -5678,7 +5671,8 @@ GetClientDataHeader(int frame_tree_node_id) { +@@ -5558,7 +5551,8 @@ GetClientDataHeader(int frame_tree_node_id) { } #endif @@ -231,7 +243,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #if BUILDFLAG(IS_ANDROID) const std::string& client_data_header, #endif -@@ -5717,7 +5711,7 @@ std::unique_ptr CreateGoogleURLLoaderThrottle( +@@ -5597,7 +5591,7 @@ std::unique_ptr CreateGoogleURLLoaderThrottle( std::move(bound_session_request_throttled_handler), #endif std::move(dynamic_params)); @@ -240,7 +252,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch std::vector> ChromeContentBrowserClient::CreateURLLoaderThrottles( -@@ -5763,15 +5757,6 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles( +@@ -5645,15 +5639,6 @@ ChromeContentBrowserClient::CreateURLLoaderThrottles( GetClientDataHeader(frame_tree_node_id); #endif @@ -256,7 +268,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch { auto* factory = ProtocolHandlerRegistryFactory::GetForBrowserContext(browser_context); -@@ -5825,20 +5810,6 @@ ChromeContentBrowserClient::CreateURLLoaderThrottlesForKeepAlive( +@@ -5708,20 +5693,6 @@ ChromeContentBrowserClient::CreateURLLoaderThrottlesForKeepAlive( } #endif @@ -345,7 +357,7 @@ diff --git a/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log #if BUILDFLAG(GOOGLE_CHROME_BRANDING) constexpr char kUpdateErrorCode[] = "update_error_code"; constexpr char kUpdateHresult[] = "update_hresult"; -@@ -631,10 +630,6 @@ void ChromeInternalLogSource::PopulateEnrolledToDomain( +@@ -627,10 +626,6 @@ void ChromeInternalLogSource::PopulateEnrolledToDomain( void ChromeInternalLogSource::PopulateInstallerBrandCode( SystemLogsResponse* response) { @@ -387,7 +399,7 @@ diff --git a/chrome/browser/google/BUILD.gn b/chrome/browser/google/BUILD.gn sources = [ "google_brand.cc", "google_brand.h", -@@ -81,7 +81,7 @@ source_set("unit_tests") { +@@ -82,7 +82,7 @@ source_set("unit_tests") { sources = [ "google_update_settings_unittest.cc" ] deps = [ @@ -443,7 +455,7 @@ diff --git a/chrome/browser/long_screenshots/long_screenshots_tab_service.cc b/c diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc --- a/chrome/browser/metrics/chrome_metrics_service_client.cc +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc -@@ -620,7 +620,7 @@ ChromeMetricsServiceClient::GetNetworkTimeTracker() { +@@ -646,7 +646,7 @@ ChromeMetricsServiceClient::GetNetworkTimeTracker() { } bool ChromeMetricsServiceClient::GetBrand(std::string* brand_code) { @@ -455,7 +467,7 @@ diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/br diff --git a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc b/chrome/browser/metrics/chrome_metrics_services_manager_client.cc --- a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc +++ b/chrome/browser/metrics/chrome_metrics_services_manager_client.cc -@@ -101,9 +101,6 @@ void PostStoreMetricsClientInfo(const metrics::ClientInfo& client_info) { +@@ -103,9 +103,6 @@ void PostStoreMetricsClientInfo(const metrics::ClientInfo& client_info) { // This must happen on the same sequence as the tasks to enable/disable // metrics reporting. Otherwise, this may run while disabling metrics // reporting if the user quickly enables and disables metrics reporting. @@ -465,7 +477,7 @@ diff --git a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc b/ } #if BUILDFLAG(IS_ANDROID) -@@ -338,7 +335,7 @@ ChromeMetricsServicesManagerClient::GetMetricsStateManager() { +@@ -343,7 +340,7 @@ ChromeMetricsServicesManagerClient::GetMetricsStateManager() { cc::switches::kEnableGpuBenchmarking), }, base::BindRepeating(&PostStoreMetricsClientInfo), @@ -573,7 +585,7 @@ diff --git a/chrome/browser/metrics/metrics_reporting_state.cc b/chrome/browser/ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc -@@ -816,7 +816,6 @@ void SystemNetworkContextManager::AddSSLConfigToNetworkContextParams( +@@ -857,7 +857,6 @@ void SystemNetworkContextManager::AddSSLConfigToNetworkContextParams( void SystemNetworkContextManager::ConfigureDefaultNetworkContextParams( network::mojom::NetworkContextParams* network_context_params) { variations::UpdateCorsExemptHeaderForVariations(network_context_params); @@ -654,7 +666,7 @@ diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metri diff --git a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc --- a/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc +++ b/chrome/browser/page_load_metrics/page_load_metrics_initialize.cc -@@ -125,8 +125,6 @@ void PageLoadMetricsEmbedder::RegisterEmbedderObservers( +@@ -144,8 +144,6 @@ void PageLoadMetricsEmbedder::RegisterEmbedderObservers( tracker->AddObserver(std::make_unique()); tracker->AddObserver(std::make_unique()); tracker->AddObserver(std::make_unique()); @@ -691,7 +703,7 @@ diff --git a/chrome/browser/search_engines/ui_thread_search_terms_data.cc b/chro diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -423,7 +423,6 @@ static_library("ui") { +@@ -427,7 +427,6 @@ static_library("ui") { "//chrome/browser/companion/core", "//chrome/browser/devtools", "//chrome/browser/favicon", @@ -702,7 +714,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc --- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc +++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc -@@ -634,11 +634,6 @@ content::WebUIDataSource* CreateAndAddNewTabPageUiHtmlSource(Profile* profile) { +@@ -643,11 +643,6 @@ content::WebUIDataSource* CreateAndAddNewTabPageUiHtmlSource(Profile* profile) { // chrome-untrusted://new-tab-page for other external content and resources. // NOTE: Use caution when overriding content security policies as that cean // lead to subtle security bugs such as https://crbug.com/1251541. @@ -717,7 +729,7 @@ diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc b/chrome/br diff --git a/chrome/browser/ui/webui/settings/reset_settings_handler.cc b/chrome/browser/ui/webui/settings/reset_settings_handler.cc --- a/chrome/browser/ui/webui/settings/reset_settings_handler.cc +++ b/chrome/browser/ui/webui/settings/reset_settings_handler.cc -@@ -81,7 +81,6 @@ bool ResetSettingsHandler::ShouldShowResetProfileBanner(Profile* profile) { +@@ -96,7 +96,6 @@ bool ResetSettingsHandler::ShouldShowResetProfileBanner(Profile* profile) { ResetSettingsHandler::ResetSettingsHandler(Profile* profile) : profile_(profile) { @@ -728,7 +740,7 @@ diff --git a/chrome/browser/ui/webui/settings/reset_settings_handler.cc b/chrome diff --git a/chrome/browser/upgrade_detector/upgrade_detector_impl.cc b/chrome/browser/upgrade_detector/upgrade_detector_impl.cc --- a/chrome/browser/upgrade_detector/upgrade_detector_impl.cc +++ b/chrome/browser/upgrade_detector/upgrade_detector_impl.cc -@@ -215,7 +215,7 @@ void UpgradeDetectorImpl::StartOutdatedBuildDetector() { +@@ -213,7 +213,7 @@ void UpgradeDetectorImpl::StartOutdatedBuildDetector() { // an outdated build is being simulated by command line switches. if (!simulating_outdated_) { std::string brand; @@ -740,7 +752,7 @@ diff --git a/chrome/browser/upgrade_detector/upgrade_detector_impl.cc b/chrome/b diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn -@@ -138,8 +138,6 @@ static_library("common_lib") { +@@ -142,8 +142,6 @@ static_library("common_lib") { "content_restriction.h", "crash_keys.cc", "crash_keys.h", @@ -763,7 +775,7 @@ diff --git a/chrome/renderer/google_accounts_private_api_util.cc b/chrome/render diff --git a/chrome/renderer/url_loader_throttle_provider_impl.cc b/chrome/renderer/url_loader_throttle_provider_impl.cc --- a/chrome/renderer/url_loader_throttle_provider_impl.cc +++ b/chrome/renderer/url_loader_throttle_provider_impl.cc -@@ -220,17 +220,6 @@ URLLoaderThrottleProviderImpl::CreateThrottles( +@@ -231,17 +231,6 @@ URLLoaderThrottleProviderImpl::CreateThrottles( } #endif @@ -784,7 +796,7 @@ diff --git a/chrome/renderer/url_loader_throttle_provider_impl.cc b/chrome/rende diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -6738,7 +6738,6 @@ test("unit_tests") { +@@ -6674,7 +6674,6 @@ test("unit_tests") { "//chrome/browser/favicon", "//chrome/browser/feature_guide/notifications:unit_tests", "//chrome/browser/first_party_sets", @@ -882,7 +894,7 @@ diff --git a/components/domain_reliability/google_configs.cc b/components/domain // Origins with subdomains and same-origin collectors. Currently, all // origins with same-origin collectors also run collectors on their www // subdomain. (e.g., both foo.com and www.foo.com.) -@@ -550,11 +550,11 @@ std::unique_ptr CreateGoogleConfig( +@@ -549,11 +549,11 @@ std::unique_ptr CreateGoogleConfig( config->failure_sample_rate = 1.00; config->path_prefixes.clear(); return config; @@ -896,7 +908,7 @@ diff --git a/components/domain_reliability/google_configs.cc b/components/domain const std::string& hostname) { bool is_www_subdomain = base::StartsWith(hostname, "www.", base::CompareCase::SENSITIVE); -@@ -604,6 +604,6 @@ GetAllGoogleConfigsForTesting() { +@@ -603,6 +603,6 @@ GetAllGoogleConfigsForTesting() { configs_out.push_back(CreateGoogleConfig(params, true)); } return configs_out; @@ -1066,7 +1078,7 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co - -bool HasGoogleSearchQueryParam(base::StringPiece str) { - url::Component query(0, static_cast(str.length())), key, value; -- while (url::ExtractQueryKeyValue(str.data(), &query, &key, &value)) { +- while (url::ExtractQueryKeyValue(str, &query, &key, &value)) { - base::StringPiece key_str = str.substr(key.begin, key.len); - if (key_str == "q" || key_str == "as_q" || key_str == "imgurl") - return true; @@ -1110,7 +1122,7 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co } GURL GetGoogleSearchURL(const GURL& google_homepage_url) { -@@ -227,206 +111,25 @@ bool IsGoogleDomainUrl(const GURL& url, +@@ -227,205 +111,25 @@ bool IsGoogleDomainUrl(const GURL& url, bool IsGoogleHostname(base::StringPiece host, SubdomainPermission subdomain_permission) { @@ -1244,8 +1256,7 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co - url::Component cursor(0, input.size()); - std::string output; - url::Component key_range, value_range; -- while (url::ExtractQueryKeyValue(input.data(), &cursor, &key_range, -- &value_range)) { +- while (url::ExtractQueryKeyValue(input, &cursor, &key_range, &value_range)) { - const base::StringPiece input_key = - input.substr(key_range.begin, key_range.len); - std::string key_value_pair( @@ -1282,7 +1293,7 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co - url::Component query(0, static_cast(url.query_piece().length())); - url::Component key, value; - GoogleSearchMode mode = GoogleSearchMode::kUnspecified; -- while (url::ExtractQueryKeyValue(query_str.data(), &query, &key, &value)) { +- while (url::ExtractQueryKeyValue(query_str, &query, &key, &value)) { - base::StringPiece key_str = query_str.substr(key.begin, key.len); - if (key_str != "tbm") { - continue; @@ -1367,7 +1378,7 @@ diff --git a/components/page_load_metrics/browser/page_load_metrics_util.cc b/co } bool IsGoogleSearchHostname(const GURL& url) { -- absl::optional result = +- std::optional result = - page_load_metrics::GetGoogleHostnamePrefix(url); - return result && result.value() == "www"; + return false; @@ -1380,7 +1391,7 @@ diff --git a/components/page_load_metrics/common/page_load_metrics_util.cc b/com @@ -24,38 +24,7 @@ const int kExtraBufferTimerDelayMillis = 50; } // namespace - absl::optional GetGoogleHostnamePrefix(const GURL& url) { + std::optional GetGoogleHostnamePrefix(const GURL& url) { - const size_t registry_length = - net::registry_controlled_domains::GetRegistryLength( - url, @@ -1396,7 +1407,7 @@ diff --git a/components/page_load_metrics/common/page_load_metrics_util.cc b/com - const base::StringPiece hostname = url.host_piece(); - if (registry_length == 0 || registry_length == std::string::npos || - registry_length >= hostname.length()) { -- return absl::optional(); +- return std::optional(); - } - - // Removes the tld and the preceding dot. @@ -1408,12 +1419,12 @@ diff --git a/components/page_load_metrics/common/page_load_metrics_util.cc b/com - - if (!base::EndsWith(hostname_minus_registry, ".google", - base::CompareCase::INSENSITIVE_ASCII)) { -- return absl::optional(); +- return std::optional(); - } - - return std::string(hostname_minus_registry.substr( - 0, hostname_minus_registry.length() - strlen(".google"))); -+ return std::string(""); ++ return std::optional(); } bool IsGoogleHostname(const GURL& url) { @@ -1452,7 +1463,7 @@ diff --git a/components/search_engines/search_terms_data.cc b/components/search_ diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc --- a/components/search_engines/template_url.cc +++ b/components/search_engines/template_url.cc -@@ -562,11 +562,7 @@ std::u16string TemplateURLRef::SearchTermToString16( +@@ -586,11 +586,7 @@ std::u16string TemplateURLRef::SearchTermToString16( bool TemplateURLRef::HasGoogleBaseURLs( const SearchTermsData& search_terms_data) const { ParseIfNecessary(search_terms_data); @@ -1480,7 +1491,7 @@ diff --git a/components/search_provider_logos/BUILD.gn b/components/search_provi diff --git a/components/search_provider_logos/logo_service_impl.cc b/components/search_provider_logos/logo_service_impl.cc --- a/components/search_provider_logos/logo_service_impl.cc +++ b/components/search_provider_logos/logo_service_impl.cc -@@ -249,8 +249,7 @@ void LogoServiceImpl::GetLogo(LogoCallbacks callbacks, bool for_webui_ntp) { +@@ -246,8 +246,7 @@ void LogoServiceImpl::GetLogo(LogoCallbacks callbacks, bool for_webui_ntp) { GURL base_url; GURL doodle_url; @@ -1490,7 +1501,7 @@ diff --git a/components/search_provider_logos/logo_service_impl.cc b/components/ if (is_google) { // TODO(treib): Put the Google doodle URL into prepopulated_engines.json. base_url = -@@ -275,23 +274,12 @@ void LogoServiceImpl::GetLogo(LogoCallbacks callbacks, bool for_webui_ntp) { +@@ -272,23 +271,12 @@ void LogoServiceImpl::GetLogo(LogoCallbacks callbacks, bool for_webui_ntp) { clock_ = base::DefaultClock::GetInstance(); } @@ -1642,7 +1653,7 @@ new file mode 100644 diff --git a/net/base/url_util.cc b/net/base/url_util.cc --- a/net/base/url_util.cc +++ b/net/base/url_util.cc -@@ -491,34 +491,11 @@ bool HasGoogleHost(const GURL& url) { +@@ -489,34 +489,11 @@ bool HasGoogleHost(const GURL& url) { } bool IsGoogleHost(std::string_view host) { @@ -1681,7 +1692,7 @@ diff --git a/net/base/url_util.cc b/net/base/url_util.cc diff --git a/services/network/network_context.cc b/services/network/network_context.cc --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -2847,7 +2847,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( +@@ -2707,7 +2707,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( } #endif // BUILDFLAG(IS_CT_SUPPORTED) diff --git a/build/cromite_patches/updater-disable-updater-pings.patch b/build/cromite_patches/updater-disable-updater-pings.patch index 64a8a59071b2a3703ae3be97afd540281e4134f4..e70d82e90b1634148c7b748a7c54a613106ab609 100644 --- a/build/cromite_patches/updater-disable-updater-pings.patch +++ b/build/cromite_patches/updater-disable-updater-pings.patch @@ -8,10 +8,10 @@ Chromium would still send background requests. Kill it. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../component_updater/component_updater_url_constants.cc | 4 ++-- - components/component_updater/configurator_impl.cc | 5 +---- - components/component_updater/configurator_impl.h | 1 - - 3 files changed, 3 insertions(+), 7 deletions(-) + .../component_updater_url_constants.cc | 4 ++-- + components/component_updater/configurator_impl.cc | 10 ++++------ + components/component_updater/configurator_impl.h | 1 - + 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/components/component_updater/component_updater_url_constants.cc b/components/component_updater/component_updater_url_constants.cc --- a/components/component_updater/component_updater_url_constants.cc @@ -31,7 +31,7 @@ diff --git a/components/component_updater/component_updater_url_constants.cc b/c diff --git a/components/component_updater/configurator_impl.cc b/components/component_updater/configurator_impl.cc --- a/components/component_updater/configurator_impl.cc +++ b/components/component_updater/configurator_impl.cc -@@ -38,8 +38,7 @@ ConfiguratorImpl::ConfiguratorImpl( +@@ -40,8 +40,7 @@ ConfiguratorImpl::ConfiguratorImpl( : background_downloads_enabled_(config_policy.BackgroundDownloadsEnabled()), deltas_enabled_(config_policy.DeltaUpdatesEnabled()), fast_update_(config_policy.FastUpdate()), @@ -41,19 +41,36 @@ diff --git a/components/component_updater/configurator_impl.cc b/components/comp url_source_override_(config_policy.UrlSourceOverride()), initial_delay_(config_policy.InitialDelay()) { if (config_policy.TestRequest()) { -@@ -74,8 +73,6 @@ std::vector ConfiguratorImpl::UpdateUrl() const { +@@ -77,22 +76,21 @@ base::TimeDelta ConfiguratorImpl::UpdateDelay() const { + + std::vector ConfiguratorImpl::UpdateUrl() const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ if ((true)) return std::vector(); + if (url_source_override_.is_valid()) { + return {GURL(url_source_override_)}; + } std::vector urls{GURL(kUpdaterJSONDefaultUrl), GURL(kUpdaterJSONFallbackUrl)}; -- if (require_encryption_) +- if (require_encryption_) { - update_client::RemoveUnsecureUrls(&urls); +- } ++ update_client::RemoveUnsecureUrls(&urls); return urls; } + + std::vector ConfiguratorImpl::PingUrl() const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +- return pings_enabled_ ? UpdateUrl() : std::vector(); ++ return std::vector(); + } + + const base::Version& ConfiguratorImpl::GetBrowserVersion() const { diff --git a/components/component_updater/configurator_impl.h b/components/component_updater/configurator_impl.h --- a/components/component_updater/configurator_impl.h +++ b/components/component_updater/configurator_impl.h -@@ -105,7 +105,6 @@ class ConfiguratorImpl { +@@ -107,7 +107,6 @@ class ConfiguratorImpl { const bool deltas_enabled_; const bool fast_update_; const bool pings_enabled_; diff --git a/build/cromite_patches/webRTC-do-not-expose-local-IP-addresses.patch b/build/cromite_patches/webRTC-do-not-expose-local-IP-addresses.patch index 644cb0765f81cdcc3c8831ce0d9a2d5fe8d143ff..26a7bc6f536d673720cda5aa7943e06d7b771384 100644 --- a/build/cromite_patches/webRTC-do-not-expose-local-IP-addresses.patch +++ b/build/cromite_patches/webRTC-do-not-expose-local-IP-addresses.patch @@ -17,7 +17,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -94,7 +94,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -97,7 +97,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { false); #endif registry->RegisterStringPref(prefs::kWebRTCIPHandlingPolicy, @@ -29,7 +29,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc -@@ -112,7 +112,9 @@ WebRTCIPHandlingPolicy GetWebRTCIPHandlingPolicy(const String& preference) { +@@ -121,7 +121,9 @@ WebRTCIPHandlingPolicy GetWebRTCIPHandlingPolicy(const String& preference) { return kDefaultPublicInterfaceOnly; if (preference == kWebRTCIPHandlingDisableNonProxiedUdp) return kDisableNonProxiedUdp; @@ -40,7 +40,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_d } bool IsValidPortRange(uint16_t min_port, uint16_t max_port) { -@@ -792,7 +794,7 @@ PeerConnectionDependencyFactory::CreatePortAllocator( +@@ -865,7 +867,7 @@ PeerConnectionDependencyFactory::CreatePortAllocator( break; } diff --git a/build/cromite_patches/webview-Hard-no-to-persistent-histograms.patch b/build/cromite_patches/webview-Hard-no-to-persistent-histograms.patch index 0524573e32389ceefe7693cc206a6bbf4beb15b0..af33b22eb81d52fd3680da0f8c431a8708e1ba5d 100644 --- a/build/cromite_patches/webview-Hard-no-to-persistent-histograms.patch +++ b/build/cromite_patches/webview-Hard-no-to-persistent-histograms.patch @@ -18,7 +18,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/android_webview/browser/aw_field_trials.cc b/android_webview/browser/aw_field_trials.cc --- a/android_webview/browser/aw_field_trials.cc +++ b/android_webview/browser/aw_field_trials.cc -@@ -58,13 +58,6 @@ class AwFeatureOverrides { +@@ -60,13 +60,6 @@ class AwFeatureOverrides { } // namespace void AwFieldTrials::OnVariationsSetupComplete() { diff --git a/build/cromite_patches_list.txt b/build/cromite_patches_list.txt index cc4ae934c95dcc29fd9193a99e786c22101cbe23..859cc73268d72a96284f648afe4ee559cd839cd2 100644 --- a/build/cromite_patches_list.txt +++ b/build/cromite_patches_list.txt @@ -170,7 +170,6 @@ Partition-blobs-by-top-frame-URL.patch Override-Navigator-Language.patch Disable-add-to-home-screen-prompt.patch Remove-HTTP-referrals-in-cross-origin-navigation.patch -Enable-ECH-by-default.patch Disable-StartSurface-feature.patch Enable-PermuteTLSExtensions-by-default.patch Enable-third-party-storage-partitioning.patch @@ -195,5 +194,3 @@ eyeo-beta-118.0.5993.48-android_api.patch eyeo-beta-118.0.5993.48-android_settings.patch eyeo-beta-118.0.5993.48-extension_api.patch Eyeo-Adblock-Remove-Privacy-Issues.patch -AdblockPlus-add-blocking-in-service-workers.patch -AdblockPlus-connect-popup-blocker.patch diff --git a/build/e_patches/0012-fixup-Revert-removal-of-execution-context-address-sp.patch b/build/e_patches/0001-fixup-Revert-removal-of-execution-context-address-sp.patch similarity index 90% rename from build/e_patches/0012-fixup-Revert-removal-of-execution-context-address-sp.patch rename to build/e_patches/0001-fixup-Revert-removal-of-execution-context-address-sp.patch index 2a78ed23bed9691f40fb1c6d44370f7f6672cf69..203b351e90723fd5e4608a091a74368517060b48 100644 --- a/build/e_patches/0012-fixup-Revert-removal-of-execution-context-address-sp.patch +++ b/build/e_patches/0001-fixup-Revert-removal-of-execution-context-address-sp.patch @@ -1,7 +1,7 @@ -From 72e4b09fa116b1e440a28983da789f5866b81e7f Mon Sep 17 00:00:00 2001 +From 02877d29aa7c0e7c4562bca67c882e022e4dfc19 Mon Sep 17 00:00:00 2001 From: althafvly Date: Wed, 4 Oct 2023 13:51:29 +0530 -Subject: [PATCH 12/48] fixup Revert removal of execution context address space +Subject: [PATCH 01/52] fixup Revert removal of execution context address space --- .../blink/renderer/core/workers/installed_scripts_manager.cc | 4 ++-- diff --git a/build/e_patches/0002-fixup-Bromite-subresource-adblocker.patch b/build/e_patches/0002-fixup-Bromite-subresource-adblocker.patch new file mode 100644 index 0000000000000000000000000000000000000000..faeb1d1bd9a1cf336e7e2ab4ecd66e6ad39f907e --- /dev/null +++ b/build/e_patches/0002-fixup-Bromite-subresource-adblocker.patch @@ -0,0 +1,24 @@ +From d4d4d0a6ed5bf02c0c02fd666e96d0d861312927 Mon Sep 17 00:00:00 2001 +From: althafvly +Date: Thu, 11 Apr 2024 19:45:52 +0530 +Subject: [PATCH 02/52] fixup Bromite subresource adblocker + +--- + chrome/android/BUILD.gn | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn +index ba708adf41a03..2c8981d134d10 100644 +--- a/chrome/android/BUILD.gn ++++ b/chrome/android/BUILD.gn +@@ -315,7 +315,6 @@ if (current_toolchain == default_toolchain) { + "//chrome/android/modules/cablev2_authenticator/public:java", + "//chrome/android/modules/stack_unwinder/provider:java", + "//chrome/android/webapk/libs/client:client_java", +- "//chrome/browser/endpoint_fetcher:java", + "//chrome/android/webapk/libs/common:common_java", + "//chrome/android/webapk/libs/common:splash_java", + "//chrome/android/webapk/libs/runtime_library:webapk_service_aidl_java", +-- +2.34.1 + diff --git a/build/e_patches/0011-fixup-Disable-fetching-of-all-field-trials.patch b/build/e_patches/0003-fixup-Disable-fetching-of-all-field-trials.patch similarity index 87% rename from build/e_patches/0011-fixup-Disable-fetching-of-all-field-trials.patch rename to build/e_patches/0003-fixup-Disable-fetching-of-all-field-trials.patch index eff8b9eeafa748a6fad5323fb878009871e354c5..6627eb0455fab8e342c394a2f4af694338267b68 100644 --- a/build/e_patches/0011-fixup-Disable-fetching-of-all-field-trials.patch +++ b/build/e_patches/0003-fixup-Disable-fetching-of-all-field-trials.patch @@ -1,7 +1,7 @@ -From 4afd33e75cacaad69e297b9b36d0bbc25193f7d6 Mon Sep 17 00:00:00 2001 +From 52661ac721fa0ea665adef67486b4612ca269acb Mon Sep 17 00:00:00 2001 From: althafvly Date: Wed, 20 Sep 2023 09:48:52 +0530 -Subject: [PATCH 11/48] fixup Disable fetching of all field trials +Subject: [PATCH 03/52] fixup Disable fetching of all field trials --- .../services/SafeModeVariationsSeedContentProvider.java | 8 +------- @@ -29,7 +29,7 @@ index 4a5bbb81a6812..c3fd6b3fbd68a 100644 @Override diff --git a/build/android/gyp/proguard.py b/build/android/gyp/proguard.py -index f26ea21ebf7af..5277d1fe2ba44 100755 +index 6dd997a29fba1..2e6efc605b77f 100755 --- a/build/android/gyp/proguard.py +++ b/build/android/gyp/proguard.py @@ -54,6 +54,8 @@ _IGNORE_WARNINGS = ( @@ -42,11 +42,11 @@ index f26ea21ebf7af..5277d1fe2ba44 100755 # TODO(agrieve): Remove once we update to U SDK. r'OnBackAnimationCallback', diff --git a/components/variations/service/variations_field_trial_creator_base.cc b/components/variations/service/variations_field_trial_creator_base.cc -index e5404d2ca1a3c..60fdab67fada8 100644 +index e07314860950b..d5aa4aa8ac964 100644 --- a/components/variations/service/variations_field_trial_creator_base.cc +++ b/components/variations/service/variations_field_trial_creator_base.cc -@@ -301,6 +301,8 @@ bool VariationsFieldTrialCreatorBase::SetUpFieldTrials( - safe_seed_manager); +@@ -331,6 +331,8 @@ bool VariationsFieldTrialCreatorBase::SetUpFieldTrials( + safe_seed_manager, synthetic_trial_registry); } + platform_field_trials->RegisterFeatureOverrides(feature_list.get()); diff --git a/build/e_patches/0013-Remove-bromite-auto-updater-option.patch b/build/e_patches/0004-Remove-bromite-auto-updater-option.patch similarity index 87% rename from build/e_patches/0013-Remove-bromite-auto-updater-option.patch rename to build/e_patches/0004-Remove-bromite-auto-updater-option.patch index 8b1655eca307e069f8e1054f7ca14edba65c4ce0..e9d1838ac842b9703d7ba778dd87656ef0258b0e 100644 --- a/build/e_patches/0013-Remove-bromite-auto-updater-option.patch +++ b/build/e_patches/0004-Remove-bromite-auto-updater-option.patch @@ -1,7 +1,7 @@ -From 2a5244c76a21d23abff3740ec1834da0b5243eb6 Mon Sep 17 00:00:00 2001 +From 8604076eec8936dd672958f91f59d5e9680292d3 Mon Sep 17 00:00:00 2001 From: althafvly Date: Wed, 20 Sep 2023 09:59:55 +0530 -Subject: [PATCH 13/48] Remove bromite auto updater option +Subject: [PATCH 04/52] Remove bromite auto updater option --- .../firstrun/ToSAndUMAFirstRunFragment.java | 25 ------------------- @@ -9,10 +9,10 @@ Subject: [PATCH 13/48] Remove bromite auto updater option 2 files changed, 1 insertion(+), 28 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java -index 9de332c99045a..2da39d602db41 100644 +index 7af16cda502bf..983bf7c4c65d6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java -@@ -64,8 +64,6 @@ public class ToSAndUMAFirstRunFragment +@@ -63,8 +63,6 @@ public class ToSAndUMAFirstRunFragment private boolean mUserInteractedWithUmaCheckbox; private Button mAcceptButton; @@ -21,7 +21,7 @@ index 9de332c99045a..2da39d602db41 100644 private TextView mTosAndPrivacy; private View mTitle; private View mProgressSpinner; -@@ -92,15 +90,10 @@ public class ToSAndUMAFirstRunFragment +@@ -91,15 +89,10 @@ public class ToSAndUMAFirstRunFragment mProgressSpinner = view.findViewById(R.id.progress_spinner); mProgressSpinner.setVisibility(View.GONE); mAcceptButton = (Button) view.findViewById(R.id.terms_accept); @@ -37,7 +37,7 @@ index 9de332c99045a..2da39d602db41 100644 // Make TextView links clickable. mTosAndPrivacy.setMovementMethod(LinkMovementMethod.getInstance()); -@@ -140,11 +133,6 @@ public class ToSAndUMAFirstRunFragment +@@ -139,11 +132,6 @@ public class ToSAndUMAFirstRunFragment if (!isVisibleToUser) { // Restore original enabled & visibility states, in case the user returns to the page. setSpinnerVisible(false); @@ -49,7 +49,7 @@ index 9de332c99045a..2da39d602db41 100644 } } -@@ -171,7 +159,6 @@ public class ToSAndUMAFirstRunFragment +@@ -170,7 +158,6 @@ public class ToSAndUMAFirstRunFragment assert !isWaitingForNativeAndPolicyInit(); setSpinnerVisible(false); @@ -57,7 +57,7 @@ index 9de332c99045a..2da39d602db41 100644 } private void updateView() { -@@ -181,8 +168,6 @@ public class ToSAndUMAFirstRunFragment +@@ -180,8 +167,6 @@ public class ToSAndUMAFirstRunFragment } updateTosText(); @@ -66,7 +66,7 @@ index 9de332c99045a..2da39d602db41 100644 } private SpanInfo buildPrivacyPolicyLink(String suffix, int url) { -@@ -211,10 +196,6 @@ public class ToSAndUMAFirstRunFragment +@@ -210,10 +195,6 @@ public class ToSAndUMAFirstRunFragment mTosAndPrivacy.setText(SpanApplier.applySpans(tosString, spans.toArray(new SpanInfo[0]))); } @@ -77,7 +77,7 @@ index 9de332c99045a..2da39d602db41 100644 private void onPolicyServiceInitialized(boolean onDevicePolicyFound) { assert !mPolicyServiceInitialized; -@@ -240,11 +221,6 @@ public class ToSAndUMAFirstRunFragment +@@ -239,11 +220,6 @@ public class ToSAndUMAFirstRunFragment mTosButtonClicked = true; mTosAcceptedTime = SystemClock.elapsedRealtime(); @@ -89,7 +89,7 @@ index 9de332c99045a..2da39d602db41 100644 tryMarkTermsAccepted(true); } -@@ -310,7 +286,6 @@ public class ToSAndUMAFirstRunFragment +@@ -309,7 +285,6 @@ public class ToSAndUMAFirstRunFragment mAcceptButton.setVisibility(visibility); mTosAndPrivacy.setVisibility(visibility); diff --git a/build/e_patches/0015-add-trichrome-browser-apk-targets.patch b/build/e_patches/0005-add-trichrome-browser-apk-targets.patch similarity index 88% rename from build/e_patches/0015-add-trichrome-browser-apk-targets.patch rename to build/e_patches/0005-add-trichrome-browser-apk-targets.patch index 2c267470254019d96f0e1f90707176011933cbea..72aaef50d4cf12a35b2b490fa7b1726d40bb28d1 100644 --- a/build/e_patches/0015-add-trichrome-browser-apk-targets.patch +++ b/build/e_patches/0005-add-trichrome-browser-apk-targets.patch @@ -1,7 +1,7 @@ -From c85731ca0b7248beda61472b6ff4e50ed0dd5ab5 Mon Sep 17 00:00:00 2001 +From 46f9c2f106ddf77a3273c0a9cc28304f7eac925e Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Thu, 27 May 2021 07:30:02 -0400 -Subject: [PATCH 15/48] add trichrome browser apk targets +Subject: [PATCH 05/52] add trichrome browser apk targets --- chrome/android/BUILD.gn | 35 +++++++++++++++++++++++ @@ -9,10 +9,10 @@ Subject: [PATCH 15/48] add trichrome browser apk targets 2 files changed, 37 insertions(+) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn -index 2384bf934f2d3..0baa87d367c63 100644 +index 2c8981d134d10..5d6002fccb657 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -2432,6 +2432,10 @@ if (current_toolchain == default_toolchain) { +@@ -2393,6 +2393,10 @@ if (current_toolchain == default_toolchain) { is_trichrome = true is_bundle_module = true } @@ -23,7 +23,7 @@ index 2384bf934f2d3..0baa87d367c63 100644 # Exists separately from chrome_public_base_module_java_for_test to allow # downstream to depend on test support packages without needing to depend on -@@ -2786,6 +2790,37 @@ if (current_toolchain == default_toolchain) { +@@ -2760,6 +2764,37 @@ if (current_toolchain == default_toolchain) { } } } @@ -62,7 +62,7 @@ index 2384bf934f2d3..0baa87d367c63 100644 # As compared to chrome_public_test_apk, this target contains only unit tests # that require on device capabilities. These tests are smaller, more tightly diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni -index af39bbe745dab..7daeae480cbd7 100644 +index c039b68b8cca9..008cacc582d98 100644 --- a/chrome/android/chrome_public_apk_tmpl.gni +++ b/chrome/android/chrome_public_apk_tmpl.gni @@ -454,6 +454,8 @@ template("chrome_common_apk_or_module_tmpl") { diff --git a/build/e_patches/0014-Browser-disable-price-shopping-commerce-integration.patch b/build/e_patches/0006-Browser-disable-price-shopping-commerce-integration.patch similarity index 85% rename from build/e_patches/0014-Browser-disable-price-shopping-commerce-integration.patch rename to build/e_patches/0006-Browser-disable-price-shopping-commerce-integration.patch index 12f27ebf3b5193404a2169794238ecad802d50a7..ca5395e81992a11564de1a8cec13f1870763f760 100644 --- a/build/e_patches/0014-Browser-disable-price-shopping-commerce-integration.patch +++ b/build/e_patches/0006-Browser-disable-price-shopping-commerce-integration.patch @@ -1,7 +1,7 @@ -From 49b0da6d2e550f2043454c7836d23528ffbadadc Mon Sep 17 00:00:00 2001 +From 8dd5b2e50c412c43628f138830d02d76cfc6689b Mon Sep 17 00:00:00 2001 From: althafvly Date: Wed, 4 Oct 2023 19:36:24 +0530 -Subject: [PATCH 14/48] Browser: disable price shopping commerce integration +Subject: [PATCH 06/52] Browser: disable price shopping commerce integration --- .../browser/app/appmenu/AppMenuPropertiesDelegateImpl.java | 6 ++++-- @@ -9,10 +9,10 @@ Subject: [PATCH 14/48] Browser: disable price shopping commerce integration 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -index bbd9aa631fb3f..762b670fef2bf 100644 +index 1a5184b146a35..326be6126a152 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -@@ -1146,7 +1146,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -1201,7 +1201,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } Profile profile = currentTab.getProfile(); @@ -21,7 +21,7 @@ index bbd9aa631fb3f..762b670fef2bf 100644 ShoppingService.ProductInfo info = null; if (service != null) { info = service.getAvailableProductInfoForUrl(currentTab.getUrl()); -@@ -1179,7 +1179,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -1234,7 +1234,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } else { startPriceTrackingMenuItem.setVisible(true); stopPriceTrackingMenuItem.setVisible(false); @@ -33,7 +33,7 @@ index bbd9aa631fb3f..762b670fef2bf 100644 /** diff --git a/components/commerce/core/commerce_feature_list.cc b/components/commerce/core/commerce_feature_list.cc -index 1ac2669c4d5a1..784db2a9d38bb 100644 +index 19a9609ce75cc..157b55a523098 100644 --- a/components/commerce/core/commerce_feature_list.cc +++ b/components/commerce/core/commerce_feature_list.cc @@ -123,7 +123,7 @@ BASE_FEATURE(kCommerceAllowLocalImages, @@ -45,7 +45,7 @@ index 1ac2669c4d5a1..784db2a9d38bb 100644 BASE_FEATURE(kCommerceAllowOnDemandBookmarkBatchUpdates, "CommerceAllowOnDemandBookmarkBatchUpdates", -@@ -283,7 +283,7 @@ BASE_FEATURE(kShoppingPageTypesRegionLaunched, +@@ -270,7 +270,7 @@ BASE_FEATURE(kShoppingPageTypesRegionLaunched, "ShoppingPageTypesRegionLaunched", base::FEATURE_ENABLED_BY_DEFAULT); diff --git a/build/e_patches/0016-Browser-Change-app-and-package-name-to-browser.patch b/build/e_patches/0007-Browser-Change-app-and-package-name-to-browser.patch similarity index 92% rename from build/e_patches/0016-Browser-Change-app-and-package-name-to-browser.patch rename to build/e_patches/0007-Browser-Change-app-and-package-name-to-browser.patch index 937f8de230acb9589009db3cad650a866ab14f69..55b536202bad3cce77b98684a90b68e488490395 100644 --- a/build/e_patches/0016-Browser-Change-app-and-package-name-to-browser.patch +++ b/build/e_patches/0007-Browser-Change-app-and-package-name-to-browser.patch @@ -1,7 +1,7 @@ -From 3d0e5ae37173e05fec7a5c22bac54016a9647e05 Mon Sep 17 00:00:00 2001 +From ae04bc48993e0cab4703cbb1000092cc3cbdf7e0 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Fri, 26 Nov 2021 05:39:25 +0000 -Subject: [PATCH 16/48] Browser: Change app and package name to browser +Subject: [PATCH 07/52] Browser: Change app and package name to browser Signed-off-by: Aayush Gupta Signed-off-by: althafvly diff --git a/build/e_patches/0017-Browser-Point-to-our-default-popular-sites.patch b/build/e_patches/0008-Browser-Point-to-our-default-popular-sites.patch similarity index 94% rename from build/e_patches/0017-Browser-Point-to-our-default-popular-sites.patch rename to build/e_patches/0008-Browser-Point-to-our-default-popular-sites.patch index e1d838978c5601a2daf555f68f76a21a0d3d2fb5..41cefc7d6f812b79fe79e6b965427141266a92b7 100644 --- a/build/e_patches/0017-Browser-Point-to-our-default-popular-sites.patch +++ b/build/e_patches/0008-Browser-Point-to-our-default-popular-sites.patch @@ -1,7 +1,7 @@ -From f055dad8afeddecca1bab4b21383e4a491f9d7e6 Mon Sep 17 00:00:00 2001 +From 1a8c6c8a6a8a3a721a09969861ff60a0f263a1a3 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Fri, 26 Nov 2021 07:29:59 +0000 -Subject: [PATCH 17/48] Browser: Point to our default popular sites +Subject: [PATCH 08/52] Browser: Point to our default popular sites Signed-off-by: Aayush Gupta --- diff --git a/build/e_patches/0018-Browser-Enable-do-not-track-by-default.patch b/build/e_patches/0009-Browser-Enable-do-not-track-by-default.patch similarity index 69% rename from build/e_patches/0018-Browser-Enable-do-not-track-by-default.patch rename to build/e_patches/0009-Browser-Enable-do-not-track-by-default.patch index 128336594a0e1abf3024fa6b4e3db5d0897186cf..4015ecf8ebe5c6e4fbcbea60c70d1fb925204fa9 100644 --- a/build/e_patches/0018-Browser-Enable-do-not-track-by-default.patch +++ b/build/e_patches/0009-Browser-Enable-do-not-track-by-default.patch @@ -1,19 +1,19 @@ -From f5117998c1c11865b8c7d46d3a688181fc1f1725 Mon Sep 17 00:00:00 2001 +From caeaa537c2e509e66780ec189f01530139b1523c Mon Sep 17 00:00:00 2001 From: althafvly Date: Fri, 26 Nov 2021 07:34:57 +0000 -Subject: [PATCH 18/48] Browser: Enable do not track by default +Subject: [PATCH 09/52] Browser: Enable do not track by default --- components/privacy_sandbox/tracking_protection_prefs.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/privacy_sandbox/tracking_protection_prefs.cc b/components/privacy_sandbox/tracking_protection_prefs.cc -index daf4a381b46c1..863cc62b62628 100644 +index 53c3561920258..b1a12fde70376 100644 --- a/components/privacy_sandbox/tracking_protection_prefs.cc +++ b/components/privacy_sandbox/tracking_protection_prefs.cc -@@ -72,7 +72,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { +@@ -75,7 +75,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { + prefs::kIpProtectionEnabled, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); - registry->RegisterBooleanPref(prefs::kTrackingProtection3pcdEnabled, false); registry->RegisterBooleanPref( - prefs::kEnableDoNotTrack, false, + prefs::kEnableDoNotTrack, true, diff --git a/build/e_patches/0019-Browser-Add-provider-to-share-default-search-engine.patch b/build/e_patches/0010-Browser-Add-provider-to-share-default-search-engine.patch similarity index 95% rename from build/e_patches/0019-Browser-Add-provider-to-share-default-search-engine.patch rename to build/e_patches/0010-Browser-Add-provider-to-share-default-search-engine.patch index 438ee8d9e3641f512c22fbe3bb4d6bf2456b3273..078d8976b88a686a6621e998729303dd71c70e9c 100644 --- a/build/e_patches/0019-Browser-Add-provider-to-share-default-search-engine.patch +++ b/build/e_patches/0010-Browser-Add-provider-to-share-default-search-engine.patch @@ -1,7 +1,7 @@ -From 5386b7eccfbc537879ea61e482a14adb873a3001 Mon Sep 17 00:00:00 2001 +From f4038bbcca7bd5a0226e4792637905a6b6c88a1f Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Fri, 26 Nov 2021 08:03:13 +0000 -Subject: [PATCH 19/48] Browser: Add provider to share default search engine +Subject: [PATCH 10/52] Browser: Add provider to share default search engine Signed-off-by: Aayush Gupta --- @@ -12,10 +12,10 @@ Signed-off-by: Aayush Gupta create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/provider/SearchEngineProvider.java diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml -index 205b0658173f0..23053a389696c 100644 +index 23982a560c77b..72ceff58b96d4 100644 --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -1322,6 +1322,12 @@ by a child template that "extends" this file. +@@ -1321,6 +1321,12 @@ by a child template that "extends" this file. android:readPermission="android.permission.GLOBAL_SEARCH" /> diff --git a/build/e_patches/0020-Browser-Enable-custom-tabs-by-default.patch b/build/e_patches/0011-Browser-Enable-custom-tabs-by-default.patch similarity index 85% rename from build/e_patches/0020-Browser-Enable-custom-tabs-by-default.patch rename to build/e_patches/0011-Browser-Enable-custom-tabs-by-default.patch index bef0656120975e37ff0a4aa9de7ad240f64aeeaa..5069f463a0d24f1f4e04a0125d7d9ceab3188043 100644 --- a/build/e_patches/0020-Browser-Enable-custom-tabs-by-default.patch +++ b/build/e_patches/0011-Browser-Enable-custom-tabs-by-default.patch @@ -1,7 +1,7 @@ -From bd05aaf23a005acc6ad7f48b06413860467091b7 Mon Sep 17 00:00:00 2001 +From 2aeafbc69956b86b4e9b36bbb6aa10ab0e37b5d7 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Mon, 29 Nov 2021 03:37:37 +0000 -Subject: [PATCH 20/48] Browser: Enable custom tabs by default +Subject: [PATCH 11/52] Browser: Enable custom tabs by default Signed-off-by: Aayush Gupta Signed-off-by: althafvly @@ -11,10 +11,10 @@ Signed-off-by: althafvly 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml -index 132b713a4d0a9..43692f356e60a 100644 +index ce2460b10a4fd..91c379f55e553 100644 --- a/chrome/android/java/res/xml/privacy_preferences.xml +++ b/chrome/android/java/res/xml/privacy_preferences.xml -@@ -47,7 +47,7 @@ found in the LICENSE file. +@@ -48,7 +48,7 @@ found in the LICENSE file. android:key="allow_custom_tab_intents" android:title="@string/allow_custom_tab_intents_title" android:summary="@string/allow_custom_tab_intents_summary" @@ -24,10 +24,10 @@ index 132b713a4d0a9..43692f356e60a 100644 android:key="open_external_links_incognito" android:title="@string/open_external_links_incognito_title" diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -index ea7aae8a3704c..b4dd554b006a5 100644 +index d49e5682ceeca..8967b5c96cd1d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -@@ -263,7 +263,7 @@ public class LaunchIntentDispatcher { +@@ -260,7 +260,7 @@ public class LaunchIntentDispatcher { public static boolean isCustomTabIntent(Intent intent) { if (intent == null) return false; if (!ContextUtils.getAppSharedPreferences() diff --git a/build/e_patches/0021-Browser-Enable-search-suggestion-by-default.patch b/build/e_patches/0012-Browser-Enable-search-suggestion-by-default.patch similarity index 75% rename from build/e_patches/0021-Browser-Enable-search-suggestion-by-default.patch rename to build/e_patches/0012-Browser-Enable-search-suggestion-by-default.patch index 42df654a5818c41ff21016c08134b48a06c079c2..1ee8b08b2a699152d04d1364a86f42b83debe1f3 100644 --- a/build/e_patches/0021-Browser-Enable-search-suggestion-by-default.patch +++ b/build/e_patches/0012-Browser-Enable-search-suggestion-by-default.patch @@ -1,7 +1,7 @@ -From d65ced7680ec370a1c2866d10c78cabaa932ed84 Mon Sep 17 00:00:00 2001 +From 93b7afba249ea5f0cfafd5a6d723c61d84007804 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Mon, 29 Nov 2021 03:39:21 +0000 -Subject: [PATCH 21/48] Browser: Enable search suggestion by default +Subject: [PATCH 12/52] Browser: Enable search suggestion by default Signed-off-by: Aayush Gupta --- @@ -9,10 +9,10 @@ Signed-off-by: Aayush Gupta 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc -index 13879a8374044..cde4ae5fce68d 100644 +index c3f3b629d458e..2ec2a791c4943 100644 --- a/chrome/browser/profiles/profile.cc +++ b/chrome/browser/profiles/profile.cc -@@ -314,7 +314,7 @@ const char Profile::kProfileKey[] = "__PROFILE__"; +@@ -308,7 +308,7 @@ const char Profile::kProfileKey[] = "__PROFILE__"; void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref( prefs::kSearchSuggestEnabled, diff --git a/build/e_patches/0022-Browser-Modify-default-search-engines.patch b/build/e_patches/0013-Browser-Modify-default-search-engines.patch similarity index 89% rename from build/e_patches/0022-Browser-Modify-default-search-engines.patch rename to build/e_patches/0013-Browser-Modify-default-search-engines.patch index 83b367ec5e83ea3aade132d968a1b463c70ceb50..bb5bf1c1bed57803b6a142dce37d26cf658d4f2d 100644 --- a/build/e_patches/0022-Browser-Modify-default-search-engines.patch +++ b/build/e_patches/0013-Browser-Modify-default-search-engines.patch @@ -1,25 +1,25 @@ -From d4e553a5c8bcaf108bd0c62ca15d56647af04ae8 Mon Sep 17 00:00:00 2001 +From 1ed5cdf1eafe07b9c1352a8afdabfaac0265b09d Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Thu, 18 Mar 2021 13:42:44 +0100 -Subject: [PATCH 22/48] Browser: Modify default search engines +Subject: [PATCH 13/52] Browser: Modify default search engines Signed-off-by: althafvly --- - .../locale/locale_template_url_loader.cc | 35 +- + .../locale/locale_template_url_loader.cc | 41 +- .../locale/locale_template_url_loader.h | 1 - .../browser/locale/LocaleManagerDelegate.java | 1 - .../locale/LocaleTemplateUrlLoader.java | 8 - .../search_engines/prepopulated_engines.json | 10 + - .../search_engines/search_engine_type.h | 1 + + .../search_engines/search_engine_type.h | 3 +- .../search_engines/search_engine_utils.cc | 12 +- - .../template_url_prepopulate_data.cc | 1031 ++++++----------- - 8 files changed, 358 insertions(+), 741 deletions(-) + .../template_url_prepopulate_data.cc | 1143 ++++++----------- + 8 files changed, 381 insertions(+), 838 deletions(-) diff --git a/chrome/browser/android/locale/locale_template_url_loader.cc b/chrome/browser/android/locale/locale_template_url_loader.cc -index d44abf2732581..572e42d0c9d32 100644 +index 98aea134a714d..8be74c3be9560 100644 --- a/chrome/browser/android/locale/locale_template_url_loader.cc +++ b/chrome/browser/android/locale/locale_template_url_loader.cc -@@ -64,19 +64,6 @@ jboolean LocaleTemplateUrlLoader::LoadTemplateUrls(JNIEnv* env) { +@@ -82,19 +82,6 @@ jboolean LocaleTemplateUrlLoader::LoadTemplateUrls(JNIEnv* env) { const TemplateURL* matching_url = template_url_service_->GetTemplateURLForKeyword(data_url->keyword()); bool exists = matching_url != nullptr; @@ -27,7 +27,7 @@ index d44abf2732581..572e42d0c9d32 100644 - data_url->prepopulate_id == TemplateURLPrepopulateData::google.id) { - auto existing_urls = template_url_service_->GetTemplateURLs(); - -- for (auto* existing_url : existing_urls) { +- for (TemplateURL* existing_url : existing_urls) { - if (existing_url->prepopulate_id() == - TemplateURLPrepopulateData::google.id) { - matching_url = existing_url; @@ -37,9 +37,9 @@ index d44abf2732581..572e42d0c9d32 100644 - } - } - if (exists) + if (exists) { continue; -@@ -107,8 +94,7 @@ void LocaleTemplateUrlLoader::OverrideDefaultSearchProvider(JNIEnv* env) { +@@ -138,8 +125,7 @@ void LocaleTemplateUrlLoader::OverrideDefaultSearchProvider(JNIEnv* env) { // If the user has changed their default search provider, no-op. const TemplateURL* current_dsp = template_url_service_->GetDefaultSearchProvider(); @@ -49,11 +49,17 @@ index d44abf2732581..572e42d0c9d32 100644 return; } -@@ -120,30 +106,13 @@ void LocaleTemplateUrlLoader::OverrideDefaultSearchProvider(JNIEnv* env) { +@@ -151,29 +137,6 @@ void LocaleTemplateUrlLoader::OverrideDefaultSearchProvider(JNIEnv* env) { } } -void LocaleTemplateUrlLoader::SetGoogleAsDefaultSearch(JNIEnv* env) { +- if (!template_url_service_) { +- // TODO(b/318339172): Test profile state from Java, switch to CHECK here. +- base::debug::DumpWithoutCrashing(); // Investigating b/317335096. +- return; +- } +- - // If the user has changed their default search provider, no-op. - const TemplateURL* current_dsp = - template_url_service_->GetDefaultSearchProvider(); @@ -72,7 +78,8 @@ index d44abf2732581..572e42d0c9d32 100644 - std::vector> LocaleTemplateUrlLoader::GetLocalPrepopulatedEngines() { - return TemplateURLPrepopulateData::GetLocalPrepopulatedEngines(locale_); + if (!template_url_service_) { +@@ -186,7 +149,7 @@ LocaleTemplateUrlLoader::GetLocalPrepopulatedEngines() { } int LocaleTemplateUrlLoader::GetDesignatedSearchEngineForChina() { @@ -82,10 +89,10 @@ index d44abf2732581..572e42d0c9d32 100644 LocaleTemplateUrlLoader::~LocaleTemplateUrlLoader() {} diff --git a/chrome/browser/android/locale/locale_template_url_loader.h b/chrome/browser/android/locale/locale_template_url_loader.h -index f77a936bcedcc..7c90fd6574e9e 100644 +index c63dc8bd3eab2..b9c9db2d6d08d 100644 --- a/chrome/browser/android/locale/locale_template_url_loader.h +++ b/chrome/browser/android/locale/locale_template_url_loader.h -@@ -21,7 +21,6 @@ class LocaleTemplateUrlLoader { +@@ -24,7 +24,6 @@ class LocaleTemplateUrlLoader : public ProfileObserver { jboolean LoadTemplateUrls(JNIEnv* env); void RemoveTemplateUrls(JNIEnv* env); void OverrideDefaultSearchProvider(JNIEnv* env); @@ -94,7 +101,7 @@ index f77a936bcedcc..7c90fd6574e9e 100644 LocaleTemplateUrlLoader(const LocaleTemplateUrlLoader&) = delete; LocaleTemplateUrlLoader& operator=(const LocaleTemplateUrlLoader&) = delete; diff --git a/chrome/browser/locale/java/src/org/chromium/chrome/browser/locale/LocaleManagerDelegate.java b/chrome/browser/locale/java/src/org/chromium/chrome/browser/locale/LocaleManagerDelegate.java -index d27f23e94b03f..cee4f1f77f109 100644 +index 9574eeab8e039..db00b10b08dc4 100644 --- a/chrome/browser/locale/java/src/org/chromium/chrome/browser/locale/LocaleManagerDelegate.java +++ b/chrome/browser/locale/java/src/org/chromium/chrome/browser/locale/LocaleManagerDelegate.java @@ -143,7 +143,6 @@ public class LocaleManagerDelegate { @@ -131,7 +138,7 @@ index e68159823e45d..eb99d9bd7fd62 100644 } } diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json -index 56071eb060744..78a89a41355fd 100644 +index 0efb2f9343b26..034f1acaaec19 100644 --- a/components/search_engines/prepopulated_engines.json +++ b/components/search_engines/prepopulated_engines.json @@ -123,6 +123,16 @@ @@ -152,17 +159,23 @@ index 56071eb060744..78a89a41355fd 100644 "name": "Ecosia", "keyword": "ecosia.org", diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h -index 62216555430ba..5c0274453becc 100644 +index 755024ec7a0d1..df4c4b2ebc875 100644 --- a/components/search_engines/search_engine_type.h +++ b/components/search_engines/search_engine_type.h -@@ -90,6 +90,7 @@ enum SearchEngineType { - SEARCH_ENGINE_KARMA = 71, - SEARCH_ENGINE_GOOGLE_EN = 72, - SEARCH_ENGINE_DUCKDUCKGOLIGHT = 73, -+ SEARCH_ENGINE_ESPOT = 74, +@@ -92,11 +92,12 @@ enum SearchEngineType { + SEARCH_ENGINE_STARTER_PACK_ASK_GOOGLE = 73, + SEARCH_ENGINE_GOOGLE_EN = 74, + SEARCH_ENGINE_DUCKDUCKGOLIGHT = 75, ++ SEARCH_ENGINE_ESPOT = 76, SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro. }; + +-static_assert(SEARCH_ENGINE_DUCKDUCKGOLIGHT == (SEARCH_ENGINE_MAX - 1), ++static_assert(SEARCH_ENGINE_ESPOT == (SEARCH_ENGINE_MAX - 1), + "Please check this patch"); + + // Enum to record the type of search engine a user used in keyword mode. This diff --git a/components/search_engines/search_engine_utils.cc b/components/search_engines/search_engine_utils.cc index 76c4864971fe3..480f404b581d6 100644 --- a/components/search_engines/search_engine_utils.cc @@ -187,10 +200,10 @@ index 76c4864971fe3..480f404b581d6 100644 // First check the main search URL. if (SameDomain( diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc -index ebedf7253afab..b21cf06fc9078 100644 +index 63e9cb093a05b..ca13a504d961b 100644 --- a/components/search_engines/template_url_prepopulate_data.cc +++ b/components/search_engines/template_url_prepopulate_data.cc -@@ -61,10 +61,10 @@ struct EngineAndTier { +@@ -63,10 +63,10 @@ struct EngineAndTier { // Default (for countries with no better engine set) constexpr EngineAndTier engines_default[] = { @@ -205,7 +218,7 @@ index ebedf7253afab..b21cf06fc9078 100644 }; // Note, the below entries are sorted by country code, not the name in comment. -@@ -72,1216 +72,875 @@ constexpr EngineAndTier engines_default[] = { +@@ -74,1284 +74,875 @@ constexpr EngineAndTier engines_default[] = { // clang-format off // United Arab Emirates constexpr EngineAndTier engines_AE[] = { @@ -262,6 +275,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &info_com}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &you}, + {SearchEngineTier::kTopEngines, &espot}, + {SearchEngineTier::kTopEngines, &qwant}, + {SearchEngineTier::kTopEngines, &duckduckgo}, @@ -298,9 +312,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yahoo}, - {SearchEngineTier::kTopEngines, &ecosia}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &mojeek}, @@ -308,6 +320,11 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &oceanhero}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -317,9 +334,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yahoo}, - {SearchEngineTier::kTopEngines, &yandex_com}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &ecosia}, - {SearchEngineTier::kRemainingEngines, &mojeek}, @@ -327,6 +342,11 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &oceanhero}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -493,15 +513,19 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kTopEngines, &yahoo}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &ecosia}, - {SearchEngineTier::kRemainingEngines, &mojeek}, - {SearchEngineTier::kRemainingEngines, &yep}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -520,6 +544,8 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &oceanhero}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, + {SearchEngineTier::kTopEngines, &espot}, + {SearchEngineTier::kTopEngines, &qwant}, + {SearchEngineTier::kTopEngines, &duckduckgo}, @@ -546,6 +572,8 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &info_com}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &lilo}, +- {SearchEngineTier::kRemainingEngines, &you}, + {SearchEngineTier::kTopEngines, &espot}, + {SearchEngineTier::kTopEngines, &qwant}, + {SearchEngineTier::kTopEngines, &duckduckgo}, @@ -557,9 +585,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yahoo_dk}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &ecosia}, @@ -569,6 +595,11 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &info_com}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -613,9 +644,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yandex_com}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yahoo}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &ecosia}, @@ -623,6 +652,12 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &yep}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -655,6 +690,8 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &info_com}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &lilo}, +- {SearchEngineTier::kRemainingEngines, &you}, + {SearchEngineTier::kTopEngines, &espot}, + {SearchEngineTier::kTopEngines, &qwant}, + {SearchEngineTier::kTopEngines, &duckduckgo}, @@ -666,9 +703,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yandex_com}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yahoo_fi}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &ecosia}, @@ -678,6 +713,11 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &info_com}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -711,6 +751,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &info_com}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &you}, + {SearchEngineTier::kTopEngines, &espot}, + {SearchEngineTier::kTopEngines, &qwant}, + {SearchEngineTier::kTopEngines, &duckduckgo}, @@ -734,9 +775,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yahoo}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &ecosia}, @@ -745,6 +784,11 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &oceanhero}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -789,9 +833,7 @@ index ebedf7253afab..b21cf06fc9078 100644 constexpr EngineAndTier engines_HR[] = { - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yahoo}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &qwant}, @@ -800,6 +842,12 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &yep}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -808,9 +856,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yahoo}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &ecosia}, @@ -819,6 +865,11 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &oceanhero}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -851,6 +902,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &info_com}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &you}, + {SearchEngineTier::kTopEngines, &espot}, + {SearchEngineTier::kTopEngines, &qwant}, + {SearchEngineTier::kTopEngines, &duckduckgo}, @@ -909,9 +961,7 @@ index ebedf7253afab..b21cf06fc9078 100644 constexpr EngineAndTier engines_IS[] = { - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yahoo}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &qwant}, @@ -920,6 +970,12 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &yep}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -927,7 +983,7 @@ index ebedf7253afab..b21cf06fc9078 100644 constexpr EngineAndTier engines_IT[] = { - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, -- {SearchEngineTier::kTopEngines, &yahoo}, +- {SearchEngineTier::kTopEngines, &yahoo_it}, - {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &qwant}, @@ -939,6 +995,8 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &info_com}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &lilo}, +- {SearchEngineTier::kRemainingEngines, &you}, + {SearchEngineTier::kTopEngines, &espot}, + {SearchEngineTier::kTopEngines, &qwant}, + {SearchEngineTier::kTopEngines, &duckduckgo}, @@ -1047,9 +1105,7 @@ index ebedf7253afab..b21cf06fc9078 100644 constexpr EngineAndTier engines_LI[] = { - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yahoo}, - {SearchEngineTier::kTopEngines, &ecosia}, - {SearchEngineTier::kRemainingEngines, &qwant}, @@ -1059,6 +1115,11 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &panda}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -1068,24 +1129,26 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kTopEngines, &yahoo}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &ecosia}, - {SearchEngineTier::kRemainingEngines, &mojeek}, - {SearchEngineTier::kRemainingEngines, &yep}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; // Luxembourg constexpr EngineAndTier engines_LU[] = { - {SearchEngineTier::kTopEngines, &google}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kTopEngines, &yahoo}, @@ -1096,6 +1159,12 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &panda}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &lilo}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -1114,6 +1183,9 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &yep}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -1195,9 +1267,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yahoo}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &ecosia}, @@ -1207,6 +1277,11 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &panda}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -1250,9 +1325,7 @@ index ebedf7253afab..b21cf06fc9078 100644 constexpr EngineAndTier engines_NL[] = { - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yahoo_nl}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &qwant}, @@ -1263,6 +1336,11 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &info_com}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -1271,9 +1349,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yahoo}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &ecosia}, @@ -1283,6 +1359,11 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &info_com}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -1362,9 +1443,7 @@ index ebedf7253afab..b21cf06fc9078 100644 constexpr EngineAndTier engines_PL[] = { - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yahoo}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &qwant}, @@ -1374,6 +1453,11 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &oceanhero}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -1394,9 +1478,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yahoo}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &ecosia}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &yandex_com}, @@ -1406,6 +1488,11 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &oceanhero}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &lilo}, +- {SearchEngineTier::kRemainingEngines, &you}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -1438,9 +1525,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yahoo}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &ecosia}, @@ -1448,6 +1533,12 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &yep}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -1504,9 +1595,7 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, - {SearchEngineTier::kTopEngines, &yahoo_se}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kRemainingEngines, &qwant}, - {SearchEngineTier::kRemainingEngines, &ecosia}, @@ -1515,6 +1604,12 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &info_com}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -1534,9 +1629,7 @@ index ebedf7253afab..b21cf06fc9078 100644 constexpr EngineAndTier engines_SI[] = { - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yandex_com}, - {SearchEngineTier::kTopEngines, &yahoo}, - {SearchEngineTier::kRemainingEngines, &qwant}, @@ -1545,6 +1638,12 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &yep}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -1552,9 +1651,7 @@ index ebedf7253afab..b21cf06fc9078 100644 constexpr EngineAndTier engines_SK[] = { - {SearchEngineTier::kTopEngines, &google}, - {SearchEngineTier::kTopEngines, &bing}, -+ {SearchEngineTier::kTopEngines, &espot}, -+ {SearchEngineTier::kTopEngines, &qwant}, - {SearchEngineTier::kTopEngines, &duckduckgo}, +- {SearchEngineTier::kTopEngines, &duckduckgo}, - {SearchEngineTier::kTopEngines, &yandex_ru}, - {SearchEngineTier::kTopEngines, &yahoo}, - {SearchEngineTier::kRemainingEngines, &qwant}, @@ -1564,6 +1661,12 @@ index ebedf7253afab..b21cf06fc9078 100644 - {SearchEngineTier::kRemainingEngines, &seznam_sk}, - {SearchEngineTier::kRemainingEngines, &karma}, - {SearchEngineTier::kRemainingEngines, &privacywall}, +- {SearchEngineTier::kRemainingEngines, &panda}, +- {SearchEngineTier::kRemainingEngines, &you}, +- {SearchEngineTier::kRemainingEngines, &oceanhero}, ++ {SearchEngineTier::kTopEngines, &espot}, ++ {SearchEngineTier::kTopEngines, &qwant}, ++ {SearchEngineTier::kTopEngines, &duckduckgo}, + {SearchEngineTier::kTopEngines, &duckduckgo_light}, }; @@ -1761,7 +1864,7 @@ index ebedf7253afab..b21cf06fc9078 100644 }; // clang-format on -@@ -1614,8 +1273,6 @@ const std::vector GetPrepopulationSetFromCountryID( +@@ -1684,8 +1275,6 @@ const std::vector GetPrepopulationSetFromCountryID( for (size_t i = 0; i < num_engines; i++) { t_url.push_back(engines[i]); } @@ -1770,7 +1873,7 @@ index ebedf7253afab..b21cf06fc9078 100644 return t_url; } -@@ -1823,7 +1480,7 @@ std::vector> GetPrepopulatedEngines( +@@ -1912,7 +1501,7 @@ std::vector> GetPrepopulatedEngines( } if (default_search_provider_index) { const auto itr = diff --git a/build/e_patches/0023-Browser-Redirect-users-to-e-foundation-docs.patch b/build/e_patches/0014-Browser-Redirect-users-to-e-foundation-docs.patch similarity index 94% rename from build/e_patches/0023-Browser-Redirect-users-to-e-foundation-docs.patch rename to build/e_patches/0014-Browser-Redirect-users-to-e-foundation-docs.patch index 709ccee6d36fbb688ed5ef36f6d3cc10359da26b..bd107d30d5c63c3f01c202b500a2572c3e032dd4 100644 --- a/build/e_patches/0023-Browser-Redirect-users-to-e-foundation-docs.patch +++ b/build/e_patches/0014-Browser-Redirect-users-to-e-foundation-docs.patch @@ -1,7 +1,7 @@ -From 1df09d83c5e787ec11b615cdc05f681f977a076b Mon Sep 17 00:00:00 2001 +From 57908ec01f430438cde001584c8c3cbe1ee70b67 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Tue, 11 May 2021 14:22:00 +0200 -Subject: [PATCH 23/48] Browser: Redirect users to e foundation docs +Subject: [PATCH 14/52] Browser: Redirect users to e foundation docs Signed-off-by: Aayush Gupta --- diff --git a/build/e_patches/0024-Add-Mojeek-Search-engine.patch b/build/e_patches/0015-Add-Mojeek-Search-engine.patch similarity index 77% rename from build/e_patches/0024-Add-Mojeek-Search-engine.patch rename to build/e_patches/0015-Add-Mojeek-Search-engine.patch index b385d5826df9f131b22ff7b13527781ac9bcdda1..8015e8defe472b5c00c1ceb1e944e64be0f89540 100644 --- a/build/e_patches/0024-Add-Mojeek-Search-engine.patch +++ b/build/e_patches/0015-Add-Mojeek-Search-engine.patch @@ -1,17 +1,17 @@ -From 267045ad1d8b6e6012c5a391a8635859b9e33bb2 Mon Sep 17 00:00:00 2001 +From b7848ed02bdecfb7a5a221f7f7ebaa4b32c40544 Mon Sep 17 00:00:00 2001 From: TheScarastic Date: Wed, 16 Nov 2022 11:14:01 +0000 -Subject: [PATCH 24/48] Add Mojeek Search engine +Subject: [PATCH 15/52] Add Mojeek Search engine --- .../template_url_prepopulate_data.cc | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc -index b21cf06fc9078..6ab94039a785a 100644 +index ca13a504d961b..0cc9d3ae0c864 100644 --- a/components/search_engines/template_url_prepopulate_data.cc +++ b/components/search_engines/template_url_prepopulate_data.cc -@@ -65,6 +65,7 @@ constexpr EngineAndTier engines_default[] = { +@@ -67,6 +67,7 @@ constexpr EngineAndTier engines_default[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -19,7 +19,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Note, the below entries are sorted by country code, not the name in comment. -@@ -76,6 +77,7 @@ constexpr EngineAndTier engines_AE[] = { +@@ -78,6 +79,7 @@ constexpr EngineAndTier engines_AE[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -27,7 +27,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Albania -@@ -84,6 +86,7 @@ constexpr EngineAndTier engines_AL[] = { +@@ -86,6 +88,7 @@ constexpr EngineAndTier engines_AL[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -35,7 +35,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Argentina -@@ -92,6 +95,7 @@ constexpr EngineAndTier engines_AR[] = { +@@ -94,6 +97,7 @@ constexpr EngineAndTier engines_AR[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -43,7 +43,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Austria -@@ -100,6 +104,7 @@ constexpr EngineAndTier engines_AT[] = { +@@ -102,6 +106,7 @@ constexpr EngineAndTier engines_AT[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -51,7 +51,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Australia -@@ -108,6 +113,7 @@ constexpr EngineAndTier engines_AU[] = { +@@ -110,6 +115,7 @@ constexpr EngineAndTier engines_AU[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -59,7 +59,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Bosnia and Herzegovina -@@ -116,6 +122,7 @@ constexpr EngineAndTier engines_BA[] = { +@@ -118,6 +124,7 @@ constexpr EngineAndTier engines_BA[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -67,7 +67,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Belgium -@@ -124,6 +131,7 @@ constexpr EngineAndTier engines_BE[] = { +@@ -126,6 +133,7 @@ constexpr EngineAndTier engines_BE[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -75,7 +75,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Bulgaria -@@ -132,6 +140,7 @@ constexpr EngineAndTier engines_BG[] = { +@@ -134,6 +142,7 @@ constexpr EngineAndTier engines_BG[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -83,7 +83,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Bahrain -@@ -140,6 +149,7 @@ constexpr EngineAndTier engines_BH[] = { +@@ -142,6 +151,7 @@ constexpr EngineAndTier engines_BH[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -91,7 +91,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Burundi -@@ -148,6 +158,7 @@ constexpr EngineAndTier engines_BI[] = { +@@ -150,6 +160,7 @@ constexpr EngineAndTier engines_BI[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -99,7 +99,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Brunei -@@ -156,6 +167,7 @@ constexpr EngineAndTier engines_BN[] = { +@@ -158,6 +169,7 @@ constexpr EngineAndTier engines_BN[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -107,7 +107,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Bolivia -@@ -164,6 +176,7 @@ constexpr EngineAndTier engines_BO[] = { +@@ -166,6 +178,7 @@ constexpr EngineAndTier engines_BO[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -115,7 +115,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Brazil -@@ -172,6 +185,7 @@ constexpr EngineAndTier engines_BR[] = { +@@ -174,6 +187,7 @@ constexpr EngineAndTier engines_BR[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -123,7 +123,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Belarus -@@ -180,6 +194,7 @@ constexpr EngineAndTier engines_BY[] = { +@@ -182,6 +196,7 @@ constexpr EngineAndTier engines_BY[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -131,7 +131,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Belize -@@ -188,6 +203,7 @@ constexpr EngineAndTier engines_BZ[] = { +@@ -190,6 +205,7 @@ constexpr EngineAndTier engines_BZ[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -139,7 +139,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Canada -@@ -196,6 +212,7 @@ constexpr EngineAndTier engines_CA[] = { +@@ -198,6 +214,7 @@ constexpr EngineAndTier engines_CA[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -147,7 +147,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Switzerland -@@ -204,6 +221,7 @@ constexpr EngineAndTier engines_CH[] = { +@@ -206,6 +223,7 @@ constexpr EngineAndTier engines_CH[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -155,7 +155,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Chile -@@ -212,6 +230,7 @@ constexpr EngineAndTier engines_CL[] = { +@@ -214,6 +232,7 @@ constexpr EngineAndTier engines_CL[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -163,7 +163,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // China -@@ -220,6 +239,7 @@ constexpr EngineAndTier engines_CN[] = { +@@ -222,6 +241,7 @@ constexpr EngineAndTier engines_CN[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -171,7 +171,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Colombia -@@ -228,6 +248,7 @@ constexpr EngineAndTier engines_CO[] = { +@@ -230,6 +250,7 @@ constexpr EngineAndTier engines_CO[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -179,7 +179,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Costa Rica -@@ -236,6 +257,7 @@ constexpr EngineAndTier engines_CR[] = { +@@ -238,6 +259,7 @@ constexpr EngineAndTier engines_CR[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -187,7 +187,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Republic of Cyprus -@@ -244,6 +266,7 @@ constexpr EngineAndTier engines_CY[] = { +@@ -246,6 +268,7 @@ constexpr EngineAndTier engines_CY[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -195,7 +195,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Czech Republic -@@ -252,6 +275,7 @@ constexpr EngineAndTier engines_CZ[] = { +@@ -254,6 +277,7 @@ constexpr EngineAndTier engines_CZ[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -203,7 +203,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Germany -@@ -260,6 +284,7 @@ constexpr EngineAndTier engines_DE[] = { +@@ -262,6 +286,7 @@ constexpr EngineAndTier engines_DE[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -211,7 +211,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Denmark -@@ -268,6 +293,7 @@ constexpr EngineAndTier engines_DK[] = { +@@ -270,6 +295,7 @@ constexpr EngineAndTier engines_DK[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -219,7 +219,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Dominican Republic -@@ -276,6 +302,7 @@ constexpr EngineAndTier engines_DO[] = { +@@ -278,6 +304,7 @@ constexpr EngineAndTier engines_DO[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -227,7 +227,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Algeria -@@ -284,6 +311,7 @@ constexpr EngineAndTier engines_DZ[] = { +@@ -286,6 +313,7 @@ constexpr EngineAndTier engines_DZ[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -235,7 +235,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Ecuador -@@ -292,6 +320,7 @@ constexpr EngineAndTier engines_EC[] = { +@@ -294,6 +322,7 @@ constexpr EngineAndTier engines_EC[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -243,7 +243,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Estonia -@@ -300,6 +329,7 @@ constexpr EngineAndTier engines_EE[] = { +@@ -302,6 +331,7 @@ constexpr EngineAndTier engines_EE[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -251,7 +251,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Egypt -@@ -308,6 +338,7 @@ constexpr EngineAndTier engines_EG[] = { +@@ -310,6 +340,7 @@ constexpr EngineAndTier engines_EG[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -259,7 +259,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Spain -@@ -316,6 +347,7 @@ constexpr EngineAndTier engines_ES[] = { +@@ -318,6 +349,7 @@ constexpr EngineAndTier engines_ES[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -267,7 +267,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Finland -@@ -324,6 +356,7 @@ constexpr EngineAndTier engines_FI[] = { +@@ -326,6 +358,7 @@ constexpr EngineAndTier engines_FI[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -275,7 +275,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Faroe Islands -@@ -332,6 +365,7 @@ constexpr EngineAndTier engines_FO[] = { +@@ -334,6 +367,7 @@ constexpr EngineAndTier engines_FO[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -283,7 +283,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // France -@@ -340,6 +374,7 @@ constexpr EngineAndTier engines_FR[] = { +@@ -342,6 +376,7 @@ constexpr EngineAndTier engines_FR[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -291,7 +291,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // United Kingdom -@@ -348,6 +383,7 @@ constexpr EngineAndTier engines_GB[] = { +@@ -350,6 +385,7 @@ constexpr EngineAndTier engines_GB[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -299,7 +299,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Greece -@@ -356,6 +392,7 @@ constexpr EngineAndTier engines_GR[] = { +@@ -358,6 +394,7 @@ constexpr EngineAndTier engines_GR[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -307,7 +307,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Guatemala -@@ -364,6 +401,7 @@ constexpr EngineAndTier engines_GT[] = { +@@ -366,6 +403,7 @@ constexpr EngineAndTier engines_GT[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -315,7 +315,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Hong Kong -@@ -372,6 +410,7 @@ constexpr EngineAndTier engines_HK[] = { +@@ -374,6 +412,7 @@ constexpr EngineAndTier engines_HK[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -323,7 +323,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Honduras -@@ -380,6 +419,7 @@ constexpr EngineAndTier engines_HN[] = { +@@ -382,6 +421,7 @@ constexpr EngineAndTier engines_HN[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -331,7 +331,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Croatia -@@ -388,6 +428,7 @@ constexpr EngineAndTier engines_HR[] = { +@@ -390,6 +430,7 @@ constexpr EngineAndTier engines_HR[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -339,7 +339,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Hungary -@@ -396,6 +437,7 @@ constexpr EngineAndTier engines_HU[] = { +@@ -398,6 +439,7 @@ constexpr EngineAndTier engines_HU[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -347,7 +347,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Indonesia -@@ -404,6 +446,7 @@ constexpr EngineAndTier engines_ID[] = { +@@ -406,6 +448,7 @@ constexpr EngineAndTier engines_ID[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -355,7 +355,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Ireland -@@ -412,6 +455,7 @@ constexpr EngineAndTier engines_IE[] = { +@@ -414,6 +457,7 @@ constexpr EngineAndTier engines_IE[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -363,7 +363,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Israel -@@ -420,6 +464,7 @@ constexpr EngineAndTier engines_IL[] = { +@@ -422,6 +466,7 @@ constexpr EngineAndTier engines_IL[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -371,7 +371,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // India -@@ -428,6 +473,7 @@ constexpr EngineAndTier engines_IN[] = { +@@ -430,6 +475,7 @@ constexpr EngineAndTier engines_IN[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -379,7 +379,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Iraq -@@ -436,6 +482,7 @@ constexpr EngineAndTier engines_IQ[] = { +@@ -438,6 +484,7 @@ constexpr EngineAndTier engines_IQ[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -387,7 +387,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Iran -@@ -444,6 +491,7 @@ constexpr EngineAndTier engines_IR[] = { +@@ -446,6 +493,7 @@ constexpr EngineAndTier engines_IR[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -395,7 +395,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Iceland -@@ -452,6 +500,7 @@ constexpr EngineAndTier engines_IS[] = { +@@ -454,6 +502,7 @@ constexpr EngineAndTier engines_IS[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -403,7 +403,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Italy -@@ -460,6 +509,7 @@ constexpr EngineAndTier engines_IT[] = { +@@ -462,6 +511,7 @@ constexpr EngineAndTier engines_IT[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -411,7 +411,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Jamaica -@@ -468,6 +518,7 @@ constexpr EngineAndTier engines_JM[] = { +@@ -470,6 +520,7 @@ constexpr EngineAndTier engines_JM[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -419,7 +419,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Jordan -@@ -476,6 +527,7 @@ constexpr EngineAndTier engines_JO[] = { +@@ -478,6 +529,7 @@ constexpr EngineAndTier engines_JO[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -427,7 +427,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Japan -@@ -484,6 +536,7 @@ constexpr EngineAndTier engines_JP[] = { +@@ -486,6 +538,7 @@ constexpr EngineAndTier engines_JP[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -435,7 +435,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Kenya -@@ -492,6 +545,7 @@ constexpr EngineAndTier engines_KE[] = { +@@ -494,6 +547,7 @@ constexpr EngineAndTier engines_KE[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -443,7 +443,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // South Korea -@@ -500,6 +554,7 @@ constexpr EngineAndTier engines_KR[] = { +@@ -502,6 +556,7 @@ constexpr EngineAndTier engines_KR[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -451,7 +451,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Kuwait -@@ -508,6 +563,7 @@ constexpr EngineAndTier engines_KW[] = { +@@ -510,6 +565,7 @@ constexpr EngineAndTier engines_KW[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -459,7 +459,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Kazakhstan -@@ -516,6 +572,7 @@ constexpr EngineAndTier engines_KZ[] = { +@@ -518,6 +574,7 @@ constexpr EngineAndTier engines_KZ[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -467,7 +467,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Lebanon -@@ -524,6 +581,7 @@ constexpr EngineAndTier engines_LB[] = { +@@ -526,6 +583,7 @@ constexpr EngineAndTier engines_LB[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -475,7 +475,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Liechtenstein -@@ -532,6 +590,7 @@ constexpr EngineAndTier engines_LI[] = { +@@ -534,6 +592,7 @@ constexpr EngineAndTier engines_LI[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -483,7 +483,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Lithuania -@@ -540,6 +599,7 @@ constexpr EngineAndTier engines_LT[] = { +@@ -542,6 +601,7 @@ constexpr EngineAndTier engines_LT[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -491,7 +491,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Luxembourg -@@ -548,6 +608,7 @@ constexpr EngineAndTier engines_LU[] = { +@@ -550,6 +610,7 @@ constexpr EngineAndTier engines_LU[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -499,7 +499,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Latvia -@@ -556,6 +617,7 @@ constexpr EngineAndTier engines_LV[] = { +@@ -558,6 +619,7 @@ constexpr EngineAndTier engines_LV[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -507,7 +507,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; -@@ -565,6 +627,7 @@ constexpr EngineAndTier engines_LY[] = { +@@ -567,6 +629,7 @@ constexpr EngineAndTier engines_LY[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -515,7 +515,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Morocco -@@ -573,6 +636,7 @@ constexpr EngineAndTier engines_MA[] = { +@@ -575,6 +638,7 @@ constexpr EngineAndTier engines_MA[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -523,7 +523,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Monaco -@@ -581,6 +645,7 @@ constexpr EngineAndTier engines_MC[] = { +@@ -583,6 +647,7 @@ constexpr EngineAndTier engines_MC[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -531,7 +531,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Moldova -@@ -589,6 +654,7 @@ constexpr EngineAndTier engines_MD[] = { +@@ -591,6 +656,7 @@ constexpr EngineAndTier engines_MD[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -539,7 +539,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Montenegro -@@ -597,6 +663,7 @@ constexpr EngineAndTier engines_ME[] = { +@@ -599,6 +665,7 @@ constexpr EngineAndTier engines_ME[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -547,7 +547,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Macedonia -@@ -605,6 +672,7 @@ constexpr EngineAndTier engines_MK[] = { +@@ -607,6 +674,7 @@ constexpr EngineAndTier engines_MK[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -555,7 +555,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Malta -@@ -613,6 +681,7 @@ constexpr EngineAndTier engines_MT[] = { +@@ -615,6 +683,7 @@ constexpr EngineAndTier engines_MT[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -563,7 +563,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Mexico -@@ -621,6 +690,7 @@ constexpr EngineAndTier engines_MX[] = { +@@ -623,6 +692,7 @@ constexpr EngineAndTier engines_MX[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -571,7 +571,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Malaysia -@@ -629,6 +699,7 @@ constexpr EngineAndTier engines_MY[] = { +@@ -631,6 +701,7 @@ constexpr EngineAndTier engines_MY[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -579,7 +579,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Nicaragua -@@ -637,6 +708,7 @@ constexpr EngineAndTier engines_NI[] = { +@@ -639,6 +710,7 @@ constexpr EngineAndTier engines_NI[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -587,7 +587,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Netherlands -@@ -645,6 +717,7 @@ constexpr EngineAndTier engines_NL[] = { +@@ -647,6 +719,7 @@ constexpr EngineAndTier engines_NL[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -595,7 +595,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Norway -@@ -653,6 +726,7 @@ constexpr EngineAndTier engines_NO[] = { +@@ -655,6 +728,7 @@ constexpr EngineAndTier engines_NO[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -603,7 +603,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // New Zealand -@@ -661,6 +735,7 @@ constexpr EngineAndTier engines_NZ[] = { +@@ -663,6 +737,7 @@ constexpr EngineAndTier engines_NZ[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -611,7 +611,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Oman -@@ -669,6 +744,7 @@ constexpr EngineAndTier engines_OM[] = { +@@ -671,6 +746,7 @@ constexpr EngineAndTier engines_OM[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -619,7 +619,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Panama -@@ -677,6 +753,7 @@ constexpr EngineAndTier engines_PA[] = { +@@ -679,6 +755,7 @@ constexpr EngineAndTier engines_PA[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -627,7 +627,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Peru -@@ -685,6 +762,7 @@ constexpr EngineAndTier engines_PE[] = { +@@ -687,6 +764,7 @@ constexpr EngineAndTier engines_PE[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -635,7 +635,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Philippines -@@ -693,6 +771,7 @@ constexpr EngineAndTier engines_PH[] = { +@@ -695,6 +773,7 @@ constexpr EngineAndTier engines_PH[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -643,7 +643,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Pakistan -@@ -701,6 +780,7 @@ constexpr EngineAndTier engines_PK[] = { +@@ -703,6 +782,7 @@ constexpr EngineAndTier engines_PK[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -651,7 +651,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Poland -@@ -709,6 +789,7 @@ constexpr EngineAndTier engines_PL[] = { +@@ -711,6 +791,7 @@ constexpr EngineAndTier engines_PL[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -659,7 +659,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Puerto Rico -@@ -717,6 +798,7 @@ constexpr EngineAndTier engines_PR[] = { +@@ -719,6 +800,7 @@ constexpr EngineAndTier engines_PR[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -667,7 +667,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Portugal -@@ -725,6 +807,7 @@ constexpr EngineAndTier engines_PT[] = { +@@ -727,6 +809,7 @@ constexpr EngineAndTier engines_PT[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -675,7 +675,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Paraguay -@@ -733,6 +816,7 @@ constexpr EngineAndTier engines_PY[] = { +@@ -735,6 +818,7 @@ constexpr EngineAndTier engines_PY[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -683,7 +683,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Qatar -@@ -741,6 +825,7 @@ constexpr EngineAndTier engines_QA[] = { +@@ -743,6 +827,7 @@ constexpr EngineAndTier engines_QA[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -691,7 +691,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Romania -@@ -749,6 +834,7 @@ constexpr EngineAndTier engines_RO[] = { +@@ -751,6 +836,7 @@ constexpr EngineAndTier engines_RO[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -699,7 +699,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Serbia -@@ -757,6 +843,7 @@ constexpr EngineAndTier engines_RS[] = { +@@ -759,6 +845,7 @@ constexpr EngineAndTier engines_RS[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -707,7 +707,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Russia -@@ -765,6 +852,7 @@ constexpr EngineAndTier engines_RU[] = { +@@ -767,6 +854,7 @@ constexpr EngineAndTier engines_RU[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -715,7 +715,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Rwanda -@@ -773,6 +861,7 @@ constexpr EngineAndTier engines_RW[] = { +@@ -775,6 +863,7 @@ constexpr EngineAndTier engines_RW[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -723,7 +723,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Saudi Arabia -@@ -781,6 +870,7 @@ constexpr EngineAndTier engines_SA[] = { +@@ -783,6 +872,7 @@ constexpr EngineAndTier engines_SA[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -731,7 +731,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Sweden -@@ -789,6 +879,7 @@ constexpr EngineAndTier engines_SE[] = { +@@ -791,6 +881,7 @@ constexpr EngineAndTier engines_SE[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -739,7 +739,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Singapore -@@ -797,6 +888,7 @@ constexpr EngineAndTier engines_SG[] = { +@@ -799,6 +890,7 @@ constexpr EngineAndTier engines_SG[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -747,7 +747,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Slovenia -@@ -805,6 +897,7 @@ constexpr EngineAndTier engines_SI[] = { +@@ -807,6 +899,7 @@ constexpr EngineAndTier engines_SI[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -755,7 +755,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Slovakia -@@ -813,6 +906,7 @@ constexpr EngineAndTier engines_SK[] = { +@@ -815,6 +908,7 @@ constexpr EngineAndTier engines_SK[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -763,7 +763,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // El Salvador -@@ -821,6 +915,7 @@ constexpr EngineAndTier engines_SV[] = { +@@ -823,6 +917,7 @@ constexpr EngineAndTier engines_SV[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -771,7 +771,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Syria -@@ -829,6 +924,7 @@ constexpr EngineAndTier engines_SY[] = { +@@ -831,6 +926,7 @@ constexpr EngineAndTier engines_SY[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -779,7 +779,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Thailand -@@ -837,6 +933,7 @@ constexpr EngineAndTier engines_TH[] = { +@@ -839,6 +935,7 @@ constexpr EngineAndTier engines_TH[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -787,7 +787,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Tunisia -@@ -845,6 +942,7 @@ constexpr EngineAndTier engines_TN[] = { +@@ -847,6 +944,7 @@ constexpr EngineAndTier engines_TN[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -795,7 +795,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Turkey -@@ -853,6 +951,7 @@ constexpr EngineAndTier engines_TR[] = { +@@ -855,6 +953,7 @@ constexpr EngineAndTier engines_TR[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -803,7 +803,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Trinidad and Tobago -@@ -861,6 +960,7 @@ constexpr EngineAndTier engines_TT[] = { +@@ -863,6 +962,7 @@ constexpr EngineAndTier engines_TT[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -811,7 +811,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Taiwan -@@ -869,6 +969,7 @@ constexpr EngineAndTier engines_TW[] = { +@@ -871,6 +971,7 @@ constexpr EngineAndTier engines_TW[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -819,7 +819,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Tanzania -@@ -877,6 +978,7 @@ constexpr EngineAndTier engines_TZ[] = { +@@ -879,6 +980,7 @@ constexpr EngineAndTier engines_TZ[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -827,7 +827,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Ukraine -@@ -885,6 +987,7 @@ constexpr EngineAndTier engines_UA[] = { +@@ -887,6 +989,7 @@ constexpr EngineAndTier engines_UA[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -835,7 +835,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // United States -@@ -893,6 +996,7 @@ constexpr EngineAndTier engines_US[] = { +@@ -895,6 +998,7 @@ constexpr EngineAndTier engines_US[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -843,7 +843,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Uruguay -@@ -901,6 +1005,7 @@ constexpr EngineAndTier engines_UY[] = { +@@ -903,6 +1007,7 @@ constexpr EngineAndTier engines_UY[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -851,7 +851,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Venezuela -@@ -909,6 +1014,7 @@ constexpr EngineAndTier engines_VE[] = { +@@ -911,6 +1016,7 @@ constexpr EngineAndTier engines_VE[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -859,7 +859,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Vietnam -@@ -917,6 +1023,7 @@ constexpr EngineAndTier engines_VN[] = { +@@ -919,6 +1025,7 @@ constexpr EngineAndTier engines_VN[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -867,7 +867,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Yemen -@@ -925,6 +1032,7 @@ constexpr EngineAndTier engines_YE[] = { +@@ -927,6 +1034,7 @@ constexpr EngineAndTier engines_YE[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -875,7 +875,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // South Africa -@@ -933,6 +1041,7 @@ constexpr EngineAndTier engines_ZA[] = { +@@ -935,6 +1043,7 @@ constexpr EngineAndTier engines_ZA[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, @@ -883,7 +883,7 @@ index b21cf06fc9078..6ab94039a785a 100644 }; // Zimbabwe -@@ -941,6 +1050,7 @@ constexpr EngineAndTier engines_ZW[] = { +@@ -943,6 +1052,7 @@ constexpr EngineAndTier engines_ZW[] = { {SearchEngineTier::kTopEngines, &qwant}, {SearchEngineTier::kTopEngines, &duckduckgo}, {SearchEngineTier::kTopEngines, &duckduckgo_light}, diff --git a/build/e_patches/0025-Revert-TM-Add-themed-app-icons.patch b/build/e_patches/0016-Revert-TM-Add-themed-app-icons.patch similarity index 94% rename from build/e_patches/0025-Revert-TM-Add-themed-app-icons.patch rename to build/e_patches/0016-Revert-TM-Add-themed-app-icons.patch index d0903505d77b8b71af40427c7602b2def7ac8d1c..3ab26683f8bbc21f721271bc8c664bd25fdefa91 100644 --- a/build/e_patches/0025-Revert-TM-Add-themed-app-icons.patch +++ b/build/e_patches/0016-Revert-TM-Add-themed-app-icons.patch @@ -1,7 +1,7 @@ -From 6029d6e392ce7887974a1c2ef98c1698fb360c71 Mon Sep 17 00:00:00 2001 +From 5d0ab4446a65bbfb7e13568f87da54672d050051 Mon Sep 17 00:00:00 2001 From: althafvly Date: Fri, 18 Nov 2022 09:48:02 +0000 -Subject: [PATCH 25/48] Revert "[TM] Add themed app icons" +Subject: [PATCH 16/52] Revert "[TM] Add themed app icons" This reverts commit 9faa242a0c09838268d7c969acdf493f29ef3db5. --- @@ -13,10 +13,10 @@ This reverts commit 9faa242a0c09838268d7c969acdf493f29ef3db5. delete mode 100644 chrome/android/java/res_chromium_base/drawable/themed_app_icon.xml diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn -index 0baa87d367c63..c9a2591f7dc73 100644 +index 5d6002fccb657..38ecdf2142e09 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -156,7 +156,6 @@ if (current_toolchain == default_toolchain) { +@@ -149,7 +149,6 @@ if (current_toolchain == default_toolchain) { "java/res_base/values/ic_launcher_round_alias.xml", "java/res_base/values/values.xml", "java/res_base/xml/network_security_config.xml", @@ -24,7 +24,7 @@ index 0baa87d367c63..c9a2591f7dc73 100644 "java/res_chromium_base/mipmap-hdpi/app_icon.png", "java/res_chromium_base/mipmap-hdpi/layered_app_icon.png", "java/res_chromium_base/mipmap-hdpi/layered_app_icon_background.png", -@@ -2174,7 +2173,6 @@ if (current_toolchain == default_toolchain) { +@@ -2135,7 +2134,6 @@ if (current_toolchain == default_toolchain) { android_resources("chrome_public_apk_base_module_resources") { resource_overlay = true sources = [ diff --git a/build/e_patches/0026-Browser-Use-our-custom-icon-for-browser.patch b/build/e_patches/0017-Browser-Use-our-custom-icon-for-browser.patch similarity index 99% rename from build/e_patches/0026-Browser-Use-our-custom-icon-for-browser.patch rename to build/e_patches/0017-Browser-Use-our-custom-icon-for-browser.patch index d79c46cb3a1b1a603b854aae91b403cc0b0f19e5..fdd1317a9e18af4bcacca29147675c62d01a2fa3 100644 --- a/build/e_patches/0026-Browser-Use-our-custom-icon-for-browser.patch +++ b/build/e_patches/0017-Browser-Use-our-custom-icon-for-browser.patch @@ -1,7 +1,7 @@ -From 9d53b2fd36cafbc58c18de323ce0036d4b4840f3 Mon Sep 17 00:00:00 2001 +From a96d8debabc9920dabdfabf9800909ddbc603b5e Mon Sep 17 00:00:00 2001 From: althafvly Date: Fri, 18 Nov 2022 10:07:39 +0000 -Subject: [PATCH 26/48] Browser: Use our custom icon for browser +Subject: [PATCH 17/52] Browser: Use our custom icon for browser --- chrome/android/BUILD.gn | 44 ++++++++++-------- @@ -64,10 +64,10 @@ Subject: [PATCH 26/48] Browser: Use our custom icon for browser delete mode 100644 chrome/android/java/res_chromium_base/mipmap-xxxhdpi/layered_app_icon_background.png diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn -index c9a2591f7dc73..a17778671ad7a 100644 +index 38ecdf2142e09..8a57d1590db53 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -156,22 +156,24 @@ if (current_toolchain == default_toolchain) { +@@ -149,22 +149,24 @@ if (current_toolchain == default_toolchain) { "java/res_base/values/ic_launcher_round_alias.xml", "java/res_base/values/values.xml", "java/res_base/xml/network_security_config.xml", @@ -102,7 +102,7 @@ index c9a2591f7dc73..a17778671ad7a 100644 "java/res_chromium_base/values/channel_constants.xml", ] } -@@ -2173,22 +2175,24 @@ if (current_toolchain == default_toolchain) { +@@ -2134,22 +2136,24 @@ if (current_toolchain == default_toolchain) { android_resources("chrome_public_apk_base_module_resources") { resource_overlay = true sources = [ diff --git a/build/e_patches/0027-Browser-Rename-strings-to-browser.patch b/build/e_patches/0018-Browser-Rename-strings-to-browser.patch similarity index 95% rename from build/e_patches/0027-Browser-Rename-strings-to-browser.patch rename to build/e_patches/0018-Browser-Rename-strings-to-browser.patch index 529c1e056e9469feca124cd3b8c3cae48504c15f..00e5de9214966531598ad94c7df052dd5ea486a6 100644 --- a/build/e_patches/0027-Browser-Rename-strings-to-browser.patch +++ b/build/e_patches/0018-Browser-Rename-strings-to-browser.patch @@ -1,7 +1,7 @@ -From c53069ac917bd95f20cd0e3be45084584920669e Mon Sep 17 00:00:00 2001 +From 11e67f703036909312c1e3bf3ca201ef7a6aa9e0 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Fri, 26 Nov 2021 07:12:30 +0000 -Subject: [PATCH 27/48] Browser: Rename strings to browser +Subject: [PATCH 18/52] Browser: Rename strings to browser Signed-off-by: Aayush Gupta --- @@ -27,7 +27,7 @@ index fb1dfed23052b..d5092508ce452 100644 android:key="application_version" android:title="@string/application_version_title" /> diff --git a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/AboutChromeSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/about_settings/AboutChromeSettings.java -index ee2974262b5f9..ec590dc22bf31 100644 +index fe807929ef2ab..4abeadc40ba5b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/about_settings/AboutChromeSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/about_settings/AboutChromeSettings.java @@ -28,7 +28,7 @@ public class AboutChromeSettings extends PreferenceFragmentCompat @@ -53,7 +53,7 @@ index ee2974262b5f9..ec590dc22bf31 100644 /** diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd -index 403649548ad3b..e96eecb96f892 100644 +index 61316152478b1..e07afa3b12fcb 100644 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd @@ -202,6 +202,8 @@ CHAR_LIMIT guidelines: diff --git a/build/e_patches/0028-Browser-Use-adaptive-icon-for-recents-UI.patch b/build/e_patches/0019-Browser-Use-adaptive-icon-for-recents-UI.patch similarity index 87% rename from build/e_patches/0028-Browser-Use-adaptive-icon-for-recents-UI.patch rename to build/e_patches/0019-Browser-Use-adaptive-icon-for-recents-UI.patch index e69b765529e85b5896e4d250639bdb0090684cab..c0299fb7e381f09e742045e76126390da8253872 100644 --- a/build/e_patches/0028-Browser-Use-adaptive-icon-for-recents-UI.patch +++ b/build/e_patches/0019-Browser-Use-adaptive-icon-for-recents-UI.patch @@ -1,14 +1,14 @@ -From 34b79d405bd96084e40b5166ab050b680d911d93 Mon Sep 17 00:00:00 2001 +From f4e784381fd9ae23b5d098dd5539c1301a00b01f Mon Sep 17 00:00:00 2001 From: althafvly Date: Wed, 14 Dec 2022 12:18:50 +0530 -Subject: [PATCH 28/48] Browser: Use adaptive icon for recents UI +Subject: [PATCH 19/52] Browser: Use adaptive icon for recents UI --- .../chrome/browser/ChromeBaseAppCompatActivity.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java -index 243a82d64e95e..45e5887950bdc 100644 +index 2099134313a48..456bb97816afe 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java @@ -12,6 +12,8 @@ import android.app.ActivityManager.TaskDescription; @@ -20,7 +20,7 @@ index 243a82d64e95e..45e5887950bdc 100644 import android.os.Build; import android.os.Bundle; import android.view.MenuItem; -@@ -341,11 +343,15 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity +@@ -343,11 +345,15 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity /** Sets the default task description that will appear in the recents UI. */ protected void setDefaultTaskDescription() { diff --git a/build/e_patches/0029-Browser-Change-info-bar-icon.patch b/build/e_patches/0020-Browser-Change-info-bar-icon.patch similarity index 99% rename from build/e_patches/0029-Browser-Change-info-bar-icon.patch rename to build/e_patches/0020-Browser-Change-info-bar-icon.patch index aec3845d934ffca4277a6482845203c2b92b1e89..579cfcd0be5b16473da61935f1459ae8434b5774 100644 --- a/build/e_patches/0029-Browser-Change-info-bar-icon.patch +++ b/build/e_patches/0020-Browser-Change-info-bar-icon.patch @@ -1,7 +1,7 @@ -From c0891db2832fb470009bbe79b9bc066bed848f61 Mon Sep 17 00:00:00 2001 +From 90d8f0ea9011e3abf37e83ae8a4ca4b9a17b9a3d Mon Sep 17 00:00:00 2001 From: althafvly Date: Wed, 14 Dec 2022 16:17:58 +0530 -Subject: [PATCH 29/48] Browser: Change info bar icon +Subject: [PATCH 20/52] Browser: Change info bar icon --- .../java/res/drawable-hdpi/infobar_chrome.png | Bin 1039 -> 1450 bytes diff --git a/build/e_patches/0030-Browser-Remove-logo-from-chrome-version.patch b/build/e_patches/0021-Browser-Remove-logo-from-chrome-version.patch similarity index 90% rename from build/e_patches/0030-Browser-Remove-logo-from-chrome-version.patch rename to build/e_patches/0021-Browser-Remove-logo-from-chrome-version.patch index 88326e6dbc67991d69a1169bf4a481546a18d320..238f6c730286d39b9e320e7119504e1e0c63e6ae 100644 --- a/build/e_patches/0030-Browser-Remove-logo-from-chrome-version.patch +++ b/build/e_patches/0021-Browser-Remove-logo-from-chrome-version.patch @@ -1,7 +1,7 @@ -From ffa32fdd95bc61918dd1ee2f79012039da108587 Mon Sep 17 00:00:00 2001 +From 91a16b77d091740f800045838787473cc7f48887 Mon Sep 17 00:00:00 2001 From: A Mak Date: Sat, 25 Jul 2020 17:56:47 -0700 -Subject: [PATCH 30/48] Browser: Remove logo from chrome://version +Subject: [PATCH 21/52] Browser: Remove logo from chrome://version --- components/version_ui/resources/about_version.html | 7 ------- diff --git a/build/e_patches/0031-Browser-disable-search-provider-logo.patch b/build/e_patches/0022-Browser-disable-search-provider-logo.patch similarity index 87% rename from build/e_patches/0031-Browser-disable-search-provider-logo.patch rename to build/e_patches/0022-Browser-disable-search-provider-logo.patch index 8005a17730c312f2d68857231f0efa8f65e1371d..e5d1cd9b6cfcfb85445c38210bba1cfb93602753 100644 --- a/build/e_patches/0031-Browser-disable-search-provider-logo.patch +++ b/build/e_patches/0022-Browser-disable-search-provider-logo.patch @@ -1,17 +1,17 @@ -From c16a070e47df9899d185e0c5326b698d1ad1a23e Mon Sep 17 00:00:00 2001 +From fdfdf30f4a863b9f0df81dcd45dbd5c9f4c64f59 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Mon, 17 Jun 2019 12:03:52 -0400 -Subject: [PATCH 31/48] Browser: disable search provider logo +Subject: [PATCH 22/52] Browser: disable search provider logo --- .../android/template_url_service_android.cc | 23 +------------------ 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/components/search_engines/android/template_url_service_android.cc b/components/search_engines/android/template_url_service_android.cc -index c43eb00e5dbb6..6f1294a497fd8 100644 +index 37b52474159cf..c5111655b1d09 100644 --- a/components/search_engines/android/template_url_service_android.cc +++ b/components/search_engines/android/template_url_service_android.cc -@@ -103,28 +103,7 @@ jboolean TemplateUrlServiceAndroid::IsSearchByImageAvailable( +@@ -109,28 +109,7 @@ jboolean TemplateUrlServiceAndroid::IsSearchByImageAvailable( jboolean TemplateUrlServiceAndroid::DoesDefaultSearchEngineHaveLogo( JNIEnv* env, const JavaParamRef& obj) { diff --git a/build/e_patches/0032-Browser-disable-first-run-welcome-page.patch b/build/e_patches/0023-Browser-disable-first-run-welcome-page.patch similarity index 94% rename from build/e_patches/0032-Browser-disable-first-run-welcome-page.patch rename to build/e_patches/0023-Browser-disable-first-run-welcome-page.patch index 8f2d344dd3d712e300f88cfbd8ab1d5a45ce1ee0..80d81725408f20735a65ac8a1972d5736d6d1dec 100644 --- a/build/e_patches/0032-Browser-disable-first-run-welcome-page.patch +++ b/build/e_patches/0023-Browser-disable-first-run-welcome-page.patch @@ -1,7 +1,7 @@ -From 2b1daa381ae4798f098a8a024a195aa4c16b82b3 Mon Sep 17 00:00:00 2001 +From 1d291164809e01bd3c46452d4b42dac4dd4f2876 Mon Sep 17 00:00:00 2001 From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sun, 26 Nov 2017 22:51:43 +0100 -Subject: [PATCH 32/48] Browser: disable first run welcome page +Subject: [PATCH 23/52] Browser: disable first run welcome page --- .../org/chromium/chrome/browser/firstrun/FirstRunUtils.java | 3 --- diff --git a/build/e_patches/0033-disable-seed-based-field-trials.patch b/build/e_patches/0024-disable-seed-based-field-trials.patch similarity index 58% rename from build/e_patches/0033-disable-seed-based-field-trials.patch rename to build/e_patches/0024-disable-seed-based-field-trials.patch index 49717b727a5dfb05a633be18fb54dd3bb4691831..8676d48df5ee63532878c7080dc8b2cd74536802 100644 --- a/build/e_patches/0033-disable-seed-based-field-trials.patch +++ b/build/e_patches/0024-disable-seed-based-field-trials.patch @@ -1,27 +1,28 @@ -From 962e354a7a05ae1e8fa883a9dde8a4d5fb6f85a7 Mon Sep 17 00:00:00 2001 +From 1e3db0008e2101e9ef8d7f1bc8932605ac91bb76 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Tue, 25 Dec 2018 16:19:51 -0500 -Subject: [PATCH 33/48] disable seed-based field trials +Subject: [PATCH 24/52] disable seed-based field trials --- .../variations/service/variations_field_trial_creator_base.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/variations/service/variations_field_trial_creator_base.cc b/components/variations/service/variations_field_trial_creator_base.cc -index e5404d2ca1a3c..4af32223b8bbe 100644 +index d5aa4aa8ac964..29c6052d8cc25 100644 --- a/components/variations/service/variations_field_trial_creator_base.cc +++ b/components/variations/service/variations_field_trial_creator_base.cc -@@ -297,8 +297,10 @@ bool VariationsFieldTrialCreatorBase::SetUpFieldTrials( +@@ -326,9 +326,11 @@ bool VariationsFieldTrialCreatorBase::SetUpFieldTrials( bool used_seed = false; if (!used_testing_config) { +#if defined(FIELDTRIAL_SEED_ENABLED) - used_seed = CreateTrialsFromSeed(*entropy_providers, feature_list.get(), - safe_seed_manager); + used_seed = + CreateTrialsFromSeed(*entropy_providers, feature_list.get(), + safe_seed_manager, synthetic_trial_registry); +#endif } - base::FeatureList::SetInstance(std::move(feature_list)); + platform_field_trials->RegisterFeatureOverrides(feature_list.get()); -- 2.34.1 diff --git a/build/e_patches/0034-disable-fetching-variations.patch b/build/e_patches/0025-disable-fetching-variations.patch similarity index 84% rename from build/e_patches/0034-disable-fetching-variations.patch rename to build/e_patches/0025-disable-fetching-variations.patch index 54176f5777acbdb62e9203625ac103e933104d14..946fc4c7f8ac51eb21b57a4ea21745c68d7b62c7 100644 --- a/build/e_patches/0034-disable-fetching-variations.patch +++ b/build/e_patches/0025-disable-fetching-variations.patch @@ -1,14 +1,14 @@ -From bf3c888a72c659846ae87191ba8ce62da5e4dacc Mon Sep 17 00:00:00 2001 +From f11ef01ede059618cb462abe9b3388b324510226 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Wed, 18 Nov 2020 19:08:58 -0500 -Subject: [PATCH 34/48] disable fetching variations +Subject: [PATCH 25/52] disable fetching variations --- .../org/chromium/chrome/browser/init/AsyncInitTaskRunner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitTaskRunner.java b/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitTaskRunner.java -index e8ac4ff761d66..96c6e30913934 100644 +index 54166ec82718e..7efa7ffe63813 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitTaskRunner.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitTaskRunner.java @@ -39,7 +39,7 @@ public abstract class AsyncInitTaskRunner { diff --git a/build/e_patches/0035-disable-navigation-error-correction-by-default.patch b/build/e_patches/0026-disable-navigation-error-correction-by-default.patch similarity index 80% rename from build/e_patches/0035-disable-navigation-error-correction-by-default.patch rename to build/e_patches/0026-disable-navigation-error-correction-by-default.patch index 1761d6cd906e0bd8f07732288a6b0033ace512f4..80708c128c013d1460e7b670771eb20c296b868f 100644 --- a/build/e_patches/0035-disable-navigation-error-correction-by-default.patch +++ b/build/e_patches/0026-disable-navigation-error-correction-by-default.patch @@ -1,17 +1,17 @@ -From ffda4c56b8acc603e8bf51d9ad2fb99ece695ce7 Mon Sep 17 00:00:00 2001 +From 19fefab51203b51090589766a1ee71a19fc94667 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Wed, 23 Nov 2016 08:29:58 -0500 -Subject: [PATCH 35/48] disable navigation error correction by default +Subject: [PATCH 26/52] disable navigation error correction by default --- chrome/browser/net/profile_network_context_service.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc -index 5923117661980..efa80132a2a4c 100644 +index 0525b84f86b29..34b05f37bb9ae 100644 --- a/chrome/browser/net/profile_network_context_service.cc +++ b/chrome/browser/net/profile_network_context_service.cc -@@ -360,7 +360,7 @@ void ProfileNetworkContextService::UpdateAdditionalCertificates() { +@@ -379,7 +379,7 @@ void ProfileNetworkContextService::UpdateAdditionalCertificates() { void ProfileNetworkContextService::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(embedder_support::kAlternateErrorPagesEnabled, diff --git a/build/e_patches/0036-Handle-web-search-action-in-browser.patch b/build/e_patches/0027-Handle-web-search-action-in-browser.patch similarity index 91% rename from build/e_patches/0036-Handle-web-search-action-in-browser.patch rename to build/e_patches/0027-Handle-web-search-action-in-browser.patch index 8d39ac156a422c98397033f8cf5a7112aae1f1b6..4bf7a4a37e227cb5bccda7fa966d3880ab351f23 100644 --- a/build/e_patches/0036-Handle-web-search-action-in-browser.patch +++ b/build/e_patches/0027-Handle-web-search-action-in-browser.patch @@ -1,7 +1,7 @@ -From 1f16e13ac9dec121afee8f226cdcf29c9c95c728 Mon Sep 17 00:00:00 2001 +From 931c049cc3d493ee54909b833c2a23ac4365e5fd Mon Sep 17 00:00:00 2001 From: fgei Date: Wed, 28 Sep 2022 05:37:00 +0200 -Subject: [PATCH 36/48] Handle web search action in browser +Subject: [PATCH 27/52] Handle web search action in browser --- .../src/org/chromium/base/PackageManagerUtils.java | 10 ++++++++++ @@ -31,7 +31,7 @@ index 91d814c08fffa..9661167adf22b 100644 * @return Intent to query a list of installed home launchers. */ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml -index 23053a389696c..6d8f9e42737a0 100644 +index 72ceff58b96d4..4f08cde73d447 100644 --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml @@ -336,6 +336,10 @@ by a child template that "extends" this file. @@ -46,10 +46,10 @@ index 23053a389696c..6d8f9e42737a0 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -index b4dd554b006a5..98c7c36f6dbe8 100644 +index 8967b5c96cd1d..a1ca62992749b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -@@ -231,7 +231,7 @@ public class LaunchIntentDispatcher { +@@ -228,7 +228,7 @@ public class LaunchIntentDispatcher { searchIntent.putExtra(SearchManager.QUERY, query); try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) { diff --git a/build/e_patches/0037-Browser-Replace-default-tab-favicon.patch b/build/e_patches/0028-Browser-Replace-default-tab-favicon.patch similarity index 99% rename from build/e_patches/0037-Browser-Replace-default-tab-favicon.patch rename to build/e_patches/0028-Browser-Replace-default-tab-favicon.patch index 4fc92d6254e5126e81768c87a7066aa9d13a448c..42630fc8f8987834b74f7d18a8b5e85a1efd95ac 100644 --- a/build/e_patches/0037-Browser-Replace-default-tab-favicon.patch +++ b/build/e_patches/0028-Browser-Replace-default-tab-favicon.patch @@ -1,7 +1,7 @@ -From 67e6b7751677bc85636fb40c2ee057398b66ceac Mon Sep 17 00:00:00 2001 +From def24817616149b34d09be33ea4626b5f0f68ae4 Mon Sep 17 00:00:00 2001 From: althafvly Date: Mon, 2 Jan 2023 15:12:41 +0530 -Subject: [PATCH 37/48] Browser: Replace default tab favicon +Subject: [PATCH 28/52] Browser: Replace default tab favicon --- .../java/res/drawable-hdpi/chromelogo16.png | Bin 425 -> 1016 bytes diff --git a/build/e_patches/0038-Browser-Spoof-as-Pixel-4a-by-default.patch b/build/e_patches/0029-Browser-Spoof-as-Pixel-4a-by-default.patch similarity index 95% rename from build/e_patches/0038-Browser-Spoof-as-Pixel-4a-by-default.patch rename to build/e_patches/0029-Browser-Spoof-as-Pixel-4a-by-default.patch index 4e19047d9f2b265c27531239657ed3b631a2c2ef..de329fc0738be012d4d0372f1bb837458957af00 100644 --- a/build/e_patches/0038-Browser-Spoof-as-Pixel-4a-by-default.patch +++ b/build/e_patches/0029-Browser-Spoof-as-Pixel-4a-by-default.patch @@ -1,7 +1,7 @@ -From 8a5fbc39ad48cff708c8ec1eb91d139418f8958c Mon Sep 17 00:00:00 2001 +From 45363adfd16248411b97eb3c887120deddb004d3 Mon Sep 17 00:00:00 2001 From: althafvly Date: Thu, 19 Jan 2023 05:41:58 +0000 -Subject: [PATCH 38/48] Browser: Spoof as Pixel 4a by default +Subject: [PATCH 29/52] Browser: Spoof as Pixel 4a by default - Android 10 Pixel 4a QD4A.200805.003 --- diff --git a/build/e_patches/0039-Browser-Remove-broken-link-about-entries.patch b/build/e_patches/0030-Browser-Remove-broken-link-about-entries.patch similarity index 91% rename from build/e_patches/0039-Browser-Remove-broken-link-about-entries.patch rename to build/e_patches/0030-Browser-Remove-broken-link-about-entries.patch index ad35684848646042d933af6ddd681131cdf28318..579d0743b360953601d50560cacd5f8ec7e7acde 100644 --- a/build/e_patches/0039-Browser-Remove-broken-link-about-entries.patch +++ b/build/e_patches/0030-Browser-Remove-broken-link-about-entries.patch @@ -1,7 +1,7 @@ -From f7a179f55db8ab49f817ccaf920f2ba788b9e107 Mon Sep 17 00:00:00 2001 +From 0873b6b6839fd1912a2c85308afadfab89828c52 Mon Sep 17 00:00:00 2001 From: althafvly Date: Mon, 20 Feb 2023 07:39:35 +0000 -Subject: [PATCH 39/48] Browser: Remove broken link about entries +Subject: [PATCH 30/52] Browser: Remove broken link about entries --- .../java/res/xml/legal_information_preferences.xml | 12 ------------ diff --git a/build/e_patches/0040-Browser-Disable-Android-native-autofill-by-default.patch b/build/e_patches/0031-Browser-Disable-Android-native-autofill-by-default.patch similarity index 77% rename from build/e_patches/0040-Browser-Disable-Android-native-autofill-by-default.patch rename to build/e_patches/0031-Browser-Disable-Android-native-autofill-by-default.patch index 3e059faa4ea339dbe281fea862944826c4612b69..e6a31225bb9871276cada2b4fe0f549b74b2fdb2 100644 --- a/build/e_patches/0040-Browser-Disable-Android-native-autofill-by-default.patch +++ b/build/e_patches/0031-Browser-Disable-Android-native-autofill-by-default.patch @@ -1,17 +1,17 @@ -From 49cefd3805fe75ed5c78e0bba688b8e783111c9a Mon Sep 17 00:00:00 2001 +From f82e0feba5fafe1ce998f58a43eeb555caa34530 Mon Sep 17 00:00:00 2001 From: althafvly Date: Tue, 22 Aug 2023 06:16:40 +0000 -Subject: [PATCH 40/48] Browser: Disable Android native autofill by default +Subject: [PATCH 31/52] Browser: Disable Android native autofill by default --- components/autofill/core/common/autofill_prefs.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc -index dfca9d58ee26d..41b193fbf2ab9 100644 +index a3a1cad6cce06..78580e4fd7298 100644 --- a/components/autofill/core/common/autofill_prefs.cc +++ b/components/autofill/core/common/autofill_prefs.cc -@@ -170,7 +170,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -64,7 +64,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref( prefs::kAutofillCreditCardFidoAuthOfferCheckboxState, true); #endif diff --git a/build/e_patches/0041-Browser-Enable-unified-autoplay-by-default.patch b/build/e_patches/0032-Browser-Enable-unified-autoplay-by-default.patch similarity index 83% rename from build/e_patches/0041-Browser-Enable-unified-autoplay-by-default.patch rename to build/e_patches/0032-Browser-Enable-unified-autoplay-by-default.patch index 463b221f64cbe78f13e1595941851bd867e79e19..5790c5b025cf7e2b25367d6028669e9e1c1a8c82 100644 --- a/build/e_patches/0041-Browser-Enable-unified-autoplay-by-default.patch +++ b/build/e_patches/0032-Browser-Enable-unified-autoplay-by-default.patch @@ -1,7 +1,7 @@ -From 636a469d7e64f45766aed24980f6081127cb009e Mon Sep 17 00:00:00 2001 +From e8e3af8a4a5fe9ce53eefb227453b2fafcdef181 Mon Sep 17 00:00:00 2001 From: althafvly Date: Fri, 29 Sep 2023 16:30:17 +0530 -Subject: [PATCH 41/48] Browser: Enable unified autoplay by default +Subject: [PATCH 32/52] Browser: Enable unified autoplay by default --- .../content_settings/core/browser/content_settings_registry.cc | 2 +- @@ -9,10 +9,10 @@ Subject: [PATCH 41/48] Browser: Enable unified autoplay by default 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc -index 8eeaf10cfd4f7..e7121a4b45f08 100644 +index 24ecc9d52539c..574e66d345c1b 100644 --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -250,7 +250,7 @@ void ContentSettingsRegistry::Init() { +@@ -255,7 +255,7 @@ void ContentSettingsRegistry::Init() { ContentSettingsInfo::INHERIT_IN_INCOGNITO, ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); @@ -22,10 +22,10 @@ index 8eeaf10cfd4f7..e7121a4b45f08 100644 /*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK}, WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/third_party/blink/renderer/core/html/media/autoplay_policy.cc -index 30d1670cfdd64..acab9810dc7db 100644 +index b2fc62b3fc453..b52a09e0817dd 100644 --- a/third_party/blink/renderer/core/html/media/autoplay_policy.cc +++ b/third_party/blink/renderer/core/html/media/autoplay_policy.cc -@@ -439,7 +439,7 @@ bool AutoplayPolicy::IsAutoplayAllowedPerSettings() const { +@@ -437,7 +437,7 @@ bool AutoplayPolicy::IsAutoplayAllowedPerSettings() const { return false; if (auto* settings_client = frame->GetContentSettingsClient()) { return settings_client->AllowContentSetting( diff --git a/build/e_patches/0043-Use-thirdparty-autofill-by-default.patch b/build/e_patches/0033-Use-thirdparty-autofill-by-default.patch similarity index 95% rename from build/e_patches/0043-Use-thirdparty-autofill-by-default.patch rename to build/e_patches/0033-Use-thirdparty-autofill-by-default.patch index 5c4f71d6d1ff44afba4a9444770d37fc74b0b64a..a16b9388bca344fde3c638025e262721a02fb4ae 100644 --- a/build/e_patches/0043-Use-thirdparty-autofill-by-default.patch +++ b/build/e_patches/0033-Use-thirdparty-autofill-by-default.patch @@ -1,7 +1,7 @@ -From 7cb0f3713d177a51c930504c4ac7edea36c7151a Mon Sep 17 00:00:00 2001 +From 3313021139ff07ef821dd28a7ce6faf42b3a96af Mon Sep 17 00:00:00 2001 From: althafvly Date: Mon, 12 Feb 2024 13:54:08 +0530 -Subject: [PATCH 43/48] Use thirdparty autofill by default +Subject: [PATCH 33/52] Use thirdparty autofill by default --- .../res/layout/radio_button_group_third_party_preference.xml | 2 +- diff --git a/build/e_patches/0044-Remove-some-privacy-UI-pref.patch b/build/e_patches/0034-Remove-some-privacy-UI-pref.patch similarity index 85% rename from build/e_patches/0044-Remove-some-privacy-UI-pref.patch rename to build/e_patches/0034-Remove-some-privacy-UI-pref.patch index abdc81e326569be008f68e8e8dae590752ae55c2..b1fc06113ddcbc854443b3ed7789eb2eb177f28a 100644 --- a/build/e_patches/0044-Remove-some-privacy-UI-pref.patch +++ b/build/e_patches/0034-Remove-some-privacy-UI-pref.patch @@ -1,17 +1,17 @@ -From d7cf8079c9ba2fcbd129777d43b2b42eb3a505be Mon Sep 17 00:00:00 2001 +From 788b50603b793349f678d3a71b65721585ceb4b5 Mon Sep 17 00:00:00 2001 From: althafvly Date: Mon, 12 Feb 2024 14:21:50 +0530 -Subject: [PATCH 44/48] Remove some privacy UI pref +Subject: [PATCH 34/52] Remove some privacy UI pref --- .../chrome/browser/privacy/settings/PrivacySettings.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -index 406a88c191d64..94d071e3f00f7 100644 +index c5b81a8f0b345..dc0c589fdc235 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -188,6 +188,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -186,6 +186,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment mContextualSearch.setSummary( isContextualSearchEnabled ? R.string.text_on : R.string.text_off); @@ -21,7 +21,7 @@ index 406a88c191d64..94d071e3f00f7 100644 ChromeSwitchPreference canMakePaymentPref = (ChromeSwitchPreference) findPreference(PREF_CAN_MAKE_PAYMENT); canMakePaymentPref.setOnPreferenceChangeListener(this); -@@ -228,8 +231,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -226,8 +229,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment Preference secureDnsPref = findPreference(PREF_SECURE_DNS); secureDnsPref.setVisible(SecureDnsSettings.isUiEnabled()); diff --git a/build/e_patches/0045-Browser-Remove-send-to-devices-option.patch b/build/e_patches/0035-Browser-Remove-send-to-devices-option.patch similarity index 61% rename from build/e_patches/0045-Browser-Remove-send-to-devices-option.patch rename to build/e_patches/0035-Browser-Remove-send-to-devices-option.patch index db856c6121140bd8c32ec3c8bd592547ba7e2ff6..ff0dce837b58b634756617b6bb4cf601e5296970 100644 --- a/build/e_patches/0045-Browser-Remove-send-to-devices-option.patch +++ b/build/e_patches/0035-Browser-Remove-send-to-devices-option.patch @@ -1,41 +1,22 @@ -From e83eb353b06e16d27acca8f44b3b2605f16d0480 Mon Sep 17 00:00:00 2001 +From 207777a758ab4488f45d2d115bc1b2cd477523e3 Mon Sep 17 00:00:00 2001 From: althafvly Date: Fri, 20 Oct 2023 18:23:09 +0530 -Subject: [PATCH 45/48] Browser: Remove send to devices option +Subject: [PATCH 35/52] Browser: Remove send to devices option --- - ...omeProvidedSharingOptionsProviderBase.java | 36 ------------------- - 1 file changed, 36 deletions(-) + ...omeProvidedSharingOptionsProviderBase.java | 33 ------------------- + 1 file changed, 33 deletions(-) diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java -index 04ce10fadfe40..43bc9807fd710 100644 +index 1048bb55781d5..87b815f05acd0 100644 --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java -@@ -269,7 +269,6 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { - // Only show a limited first party share selection for automotive - if (BuildInfo.getInstance().isAutomotive) { - maybeAddCopyFirstPartyOption(); -- maybeAddSendTabToSelfFirstPartyOption(); - maybeAddQrCodeFirstPartyOption(); - return; - } -@@ -277,7 +276,6 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { - maybeAddCopyFirstPartyOption(); +@@ -254,18 +254,9 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { maybeAddLongScreenshotFirstPartyOption(); maybeAddPrintFirstPartyOption(); -- maybeAddSendTabToSelfFirstPartyOption(); - maybeAddQrCodeFirstPartyOption(); - } else { - maybeAddWebStyleNotesFirstPartyOption(); -@@ -286,21 +284,12 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { - // Always show the copy link option as some entries does not offer the change for copy - // (e.g. feed card) - maybeAddCopyFirstPartyOption(); -- maybeAddSendTabToSelfFirstPartyOption(); - maybeAddQrCodeFirstPartyOption(); - maybeAddPrintFirstPartyOption(); - maybeAddDownloadImageFirstPartyOption(); } +- maybeAddSendTabToSelfFirstPartyOption(); + maybeAddQrCodeFirstPartyOption(); } - private void maybeAddSendTabToSelfFirstPartyOption() { @@ -49,7 +30,7 @@ index 04ce10fadfe40..43bc9807fd710 100644 private void maybeAddQrCodeFirstPartyOption() { } -@@ -457,31 +446,6 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { +@@ -358,30 +349,6 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { .build(); } @@ -58,8 +39,7 @@ index 04ce10fadfe40..43bc9807fd710 100644 - ContentType.LINK_PAGE_VISIBLE, - ContentType.LINK_PAGE_NOT_VISIBLE, - ContentType.IMAGE) -- .setDetailedContentTypesToDisableFor( -- DetailedContentType.WEB_NOTES, DetailedContentType.SCREENSHOT) +- .setDetailedContentTypesToDisableFor(DetailedContentType.SCREENSHOT) - .setIcon(R.drawable.send_tab, R.string.sharing_send_tab_to_self) - .setFeatureNameForMetrics(USER_ACTION_SEND_TAB_TO_SELF_SELECTED) - .setOnClickCallback( diff --git a/build/e_patches/0046-Browser-Enable-webRTC-by-default.patch b/build/e_patches/0036-Browser-Enable-webRTC-by-default.patch similarity index 90% rename from build/e_patches/0046-Browser-Enable-webRTC-by-default.patch rename to build/e_patches/0036-Browser-Enable-webRTC-by-default.patch index a18a5824b24063989035e5f456ea51179b4cca37..4e43ce7bdf117f40eb3700467241e3486fbc763c 100644 --- a/build/e_patches/0046-Browser-Enable-webRTC-by-default.patch +++ b/build/e_patches/0036-Browser-Enable-webRTC-by-default.patch @@ -1,7 +1,7 @@ -From 5ca8af2a62ad7739ca0421eff3cfbfd74722d02a Mon Sep 17 00:00:00 2001 +From 4efff8387b579e53de8cb76abcad066af5f71095 Mon Sep 17 00:00:00 2001 From: althafvly Date: Fri, 20 Oct 2023 18:49:36 +0530 -Subject: [PATCH 46/48] Browser: Enable webRTC by default +Subject: [PATCH 36/52] Browser: Enable webRTC by default --- .../core/browser/bromite_content_settings/webrtc.inc | 2 +- @@ -21,10 +21,10 @@ index 69b2de0ff52fa..c4ce181e6c88c 100644 /*allowlisted_schemes=*/{}, /*valid_settings=*/{CONTENT_SETTING_ALLOW, diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc -index c056ae39ce521..ccdd7dd4e81fc 100644 +index f0a7a40340b27..7790ac36a4f51 100644 --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc -@@ -776,7 +776,7 @@ PeerConnectionDependencyFactory::CreatePortAllocator( +@@ -849,7 +849,7 @@ PeerConnectionDependencyFactory::CreatePortAllocator( WebRTCIPHandlingPolicy policy = GetWebRTCIPHandlingPolicy(webrtc_ip_handling_policy); blink::WebContentSettingsClient* settings = web_frame->GetContentSettingsClient(); @@ -34,7 +34,7 @@ index c056ae39ce521..ccdd7dd4e81fc 100644 } diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc -index 70101c5dd9dac..24a9afbed8128 100644 +index b44d6fa54b0d5..65cab04928c7e 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc @@ -293,7 +293,7 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state, @@ -47,10 +47,10 @@ index 70101c5dd9dac..24a9afbed8128 100644 } diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc -index eaaee7b5ce3a0..fcef33107f175 100644 +index bb9442d1f06c5..6ef6851fb673a 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc -@@ -1040,7 +1040,7 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, +@@ -1068,7 +1068,7 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, auto* web_frame = static_cast(WebFrame::FromCoreFrame(window->GetFrame())); blink::WebContentSettingsClient* settings = web_frame->GetContentSettingsClient(); diff --git a/build/e_patches/0047-Browser-Enable-webgl-by-default.patch b/build/e_patches/0037-Browser-Enable-webgl-by-default.patch similarity index 91% rename from build/e_patches/0047-Browser-Enable-webgl-by-default.patch rename to build/e_patches/0037-Browser-Enable-webgl-by-default.patch index bb8f2eacea729d3f8c424c5b25c7bce1036ebbc0..a50cce6ea7a8358495240fabb60528687ea7400b 100644 --- a/build/e_patches/0047-Browser-Enable-webgl-by-default.patch +++ b/build/e_patches/0037-Browser-Enable-webgl-by-default.patch @@ -1,7 +1,7 @@ -From 7e5b46ade9b2c7b2281f8fb7dca8de9d8da5a334 Mon Sep 17 00:00:00 2001 +From e93e623772f54497b6db22b888934edc1af7b65e Mon Sep 17 00:00:00 2001 From: althafvly Date: Tue, 24 Oct 2023 14:39:06 +0530 -Subject: [PATCH 47/48] Browser: Enable webgl by default +Subject: [PATCH 37/52] Browser: Enable webgl by default --- .../core/browser/bromite_content_settings/webgl.inc | 2 +- @@ -19,7 +19,7 @@ index 3ff01832baef4..dd88ffeab7bbb 100644 /*allowlisted_schemes=*/{}, /*valid_settings=*/{CONTENT_SETTING_ALLOW, diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc -index a7f2d5d3798b8..6110189a09d60 100644 +index ccc9c3a15802c..409b342c06de3 100644 --- a/third_party/blink/renderer/core/execution_context/execution_context.cc +++ b/third_party/blink/renderer/core/execution_context/execution_context.cc @@ -87,8 +87,8 @@ blink::WebContentSettingsClient* GetContentSettingsClientFor( diff --git a/build/e_patches/0048-Enable-sensors-by-default.patch b/build/e_patches/0038-Enable-sensors-by-default.patch similarity index 83% rename from build/e_patches/0048-Enable-sensors-by-default.patch rename to build/e_patches/0038-Enable-sensors-by-default.patch index 88352f10eb8e65bd02c15baac57a6ec05e538a0c..48dc5f0605db235c3de9f31e68edd02ed8047d75 100644 --- a/build/e_patches/0048-Enable-sensors-by-default.patch +++ b/build/e_patches/0038-Enable-sensors-by-default.patch @@ -1,17 +1,17 @@ -From 960d171a57dd98e0c06876084cc39a7e76ad01dc Mon Sep 17 00:00:00 2001 +From d378f265aeaeeba3f0f7745939a18aa1ffa156de Mon Sep 17 00:00:00 2001 From: althafvly Date: Mon, 12 Feb 2024 15:07:39 +0530 -Subject: [PATCH 48/48] Enable sensors by default +Subject: [PATCH 38/52] Enable sensors by default --- .../content_settings/core/browser/content_settings_registry.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc -index e7121a4b45f08..b61bd4afab66f 100644 +index 574e66d345c1b..e3c7f07646a43 100644 --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -352,7 +352,7 @@ void ContentSettingsRegistry::Init() { +@@ -371,7 +371,7 @@ void ContentSettingsRegistry::Init() { // TODO(crbug.com/904439): Update this to "SECURE_ONLY" once // DeviceOrientationEvents and DeviceMotionEvents are only fired in secure // contexts. diff --git a/build/e_patches/0001-disable-browser-sign-in-feature-by-default.patch b/build/e_patches/0039-disable-browser-sign-in-feature-by-default.patch similarity index 83% rename from build/e_patches/0001-disable-browser-sign-in-feature-by-default.patch rename to build/e_patches/0039-disable-browser-sign-in-feature-by-default.patch index 9a2d07d3d057a8a507e26cf52a126acb8071ab5c..21152b2ecdb3bcc101045a97c8b4f160eb1f5d9f 100644 --- a/build/e_patches/0001-disable-browser-sign-in-feature-by-default.patch +++ b/build/e_patches/0039-disable-browser-sign-in-feature-by-default.patch @@ -1,14 +1,14 @@ -From c18bc8deafefe687a706f662866525e93cbf4cc8 Mon Sep 17 00:00:00 2001 +From 2689f83fddaa12c639d3098e000f443bb1e9cbe7 Mon Sep 17 00:00:00 2001 From: althafvly Date: Mon, 12 Feb 2024 13:26:25 +0530 -Subject: [PATCH 01/48] disable browser sign in feature by default +Subject: [PATCH 39/52] disable browser sign in feature by default --- chrome/browser/signin/account_consistency_mode_manager.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chrome/browser/signin/account_consistency_mode_manager.cc b/chrome/browser/signin/account_consistency_mode_manager.cc -index 222ba8a3084aa..496a2ed2c65b6 100644 +index 79f00f9b96b74..1fd6ef457d351 100644 --- a/chrome/browser/signin/account_consistency_mode_manager.cc +++ b/chrome/browser/signin/account_consistency_mode_manager.cc @@ -123,7 +123,7 @@ AccountConsistencyModeManager::~AccountConsistencyModeManager() {} diff --git a/build/e_patches/0002-Disable-adding-a-signed-out-avatar-on-new-tab-pages-.patch b/build/e_patches/0040-Disable-adding-a-signed-out-avatar-on-new-tab-pages-.patch similarity index 82% rename from build/e_patches/0002-Disable-adding-a-signed-out-avatar-on-new-tab-pages-.patch rename to build/e_patches/0040-Disable-adding-a-signed-out-avatar-on-new-tab-pages-.patch index 411041e5ba6d6090f81e732b191f36ff603aa31d..cf95f41a1d1c191485d67864f61f5b9b27a38421 100644 --- a/build/e_patches/0002-Disable-adding-a-signed-out-avatar-on-new-tab-pages-.patch +++ b/build/e_patches/0040-Disable-adding-a-signed-out-avatar-on-new-tab-pages-.patch @@ -1,7 +1,7 @@ -From bee169f40768ea4671f131c9ec63340d89e3941e Mon Sep 17 00:00:00 2001 +From d3fba09658f147421709670ab66188e037282677 Mon Sep 17 00:00:00 2001 From: fgei Date: Tue, 8 Aug 2023 09:10:36 +0000 -Subject: [PATCH 02/48] Disable adding a signed out avatar on new tab pages by +Subject: [PATCH 40/52] Disable adding a signed out avatar on new tab pages by default --- @@ -9,10 +9,10 @@ Subject: [PATCH 02/48] Disable adding a signed out avatar on new tab pages by 1 file changed, 12 insertions(+) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java -index 9d02df21e3e9f..995755ac47d2c 100644 +index 459537c828a5a..5c0da689532a1 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java -@@ -59,6 +59,9 @@ public class IdentityDiscController +@@ -63,6 +63,9 @@ public class IdentityDiscController ProfileDataCache.Observer, IdentityManager.Observer, ButtonDataProvider { @@ -22,7 +22,7 @@ index 9d02df21e3e9f..995755ac47d2c 100644 // Context is used for fetching resources and launching preferences page. private final Context mContext; private ActivityLifecycleDispatcher mActivityLifecycleDispatcher; -@@ -166,6 +169,11 @@ public class IdentityDiscController +@@ -170,6 +173,11 @@ public class IdentityDiscController return; } @@ -34,7 +34,7 @@ index 9d02df21e3e9f..995755ac47d2c 100644 String email = CoreAccountInfo.getEmailFrom(getSignedInAccountInfo()); ensureProfileDataCache(); -@@ -342,6 +350,10 @@ public class IdentityDiscController +@@ -346,6 +354,10 @@ public class IdentityDiscController } private String getContentDescription(@Nullable String email) { diff --git a/build/e_patches/0003-Hide-Sign-In-preference-when-disallowed.patch b/build/e_patches/0041-Hide-Sign-In-preference-when-disallowed.patch similarity index 67% rename from build/e_patches/0003-Hide-Sign-In-preference-when-disallowed.patch rename to build/e_patches/0041-Hide-Sign-In-preference-when-disallowed.patch index 52b66f69252528bcf2edec8ace7391350451cc5e..135e0b284fb788173c503e1cddbe97458be88d9c 100644 --- a/build/e_patches/0003-Hide-Sign-In-preference-when-disallowed.patch +++ b/build/e_patches/0041-Hide-Sign-In-preference-when-disallowed.patch @@ -1,21 +1,21 @@ -From acb68804a93e2b908fc5702974faf8266bcf20ca Mon Sep 17 00:00:00 2001 +From 5a96506c37576976007fe036f5a158f64880c04b Mon Sep 17 00:00:00 2001 From: fgei Date: Sun, 29 Aug 2021 19:31:00 +0000 -Subject: [PATCH 03/48] Hide Sign In preference when disallowed +Subject: [PATCH 41/52] Hide Sign In preference when disallowed --- .../chromium/chrome/browser/sync/settings/SignInPreference.java | 1 + 1 file changed, 1 insertion(+) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SignInPreference.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SignInPreference.java -index 043ab492edd75..6db3510b53b0a 100644 +index a24437dfebf3e..e64daa47ae9ea 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SignInPreference.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SignInPreference.java -@@ -158,6 +158,7 @@ public class SignInPreference extends Preference +@@ -163,6 +163,7 @@ public class SignInPreference extends Preference } private void setupSigninDisallowed() { -+ setViewEnabled(false); ++ setViewEnabledAndShowAlertIcon(/* enabled= */ false, /* alertIconVisible= */ false); mWasGenericSigninPromoDisplayed = false; } diff --git a/build/e_patches/0004-Remove-google-pref-from-main-menu.patch b/build/e_patches/0042-Remove-google-pref-from-main-menu.patch similarity index 80% rename from build/e_patches/0004-Remove-google-pref-from-main-menu.patch rename to build/e_patches/0042-Remove-google-pref-from-main-menu.patch index 5889382dcc6dfe3d7b0f6e7cfdffb61c19f5fa05..d58aa6e8b8049c54a865456f3d3c6129ec4bab76 100644 --- a/build/e_patches/0004-Remove-google-pref-from-main-menu.patch +++ b/build/e_patches/0042-Remove-google-pref-from-main-menu.patch @@ -1,17 +1,17 @@ -From fb5411624273d21bafeab40587aa4a38f39fd11e Mon Sep 17 00:00:00 2001 +From 13538c018e7e3a21a141e021ba1cb197518d221f Mon Sep 17 00:00:00 2001 From: althafvly Date: Mon, 12 Feb 2024 13:41:11 +0530 -Subject: [PATCH 04/48] Remove google pref from main menu +Subject: [PATCH 42/52] Remove google pref from main menu --- .../src/org/chromium/chrome/browser/settings/MainSettings.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java -index f7f4f891269a8..b4cee944cfb16 100644 +index 8a4a657314a1d..a710f667f3868 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java -@@ -237,6 +237,9 @@ public class MainSettings extends ChromeBaseSettingsFragment +@@ -243,6 +243,9 @@ public class MainSettings extends ChromeBaseSettingsFragment templateUrlService.load(); } diff --git a/build/e_patches/0005-disable-contextual-search-by-default.patch b/build/e_patches/0043-disable-contextual-search-by-default.patch similarity index 80% rename from build/e_patches/0005-disable-contextual-search-by-default.patch rename to build/e_patches/0043-disable-contextual-search-by-default.patch index d29824d8c82de5c8205ecd109d3fd2dae8a9d8e2..3ce46820bf864e2ca036ada5d30a1d8824c57b16 100644 --- a/build/e_patches/0005-disable-contextual-search-by-default.patch +++ b/build/e_patches/0043-disable-contextual-search-by-default.patch @@ -1,7 +1,7 @@ -From f3599559391c05b2c251ecd0fe7bb82d1ffd2184 Mon Sep 17 00:00:00 2001 +From 12900ed97d8d1d47e70ef683d43ae0cb80a81a17 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Wed, 23 Nov 2016 09:26:51 -0500 -Subject: [PATCH 05/48] disable contextual search by default +Subject: [PATCH 43/52] disable contextual search by default --- .../browser/contextualsearch/ContextualSearchFieldTrial.java | 2 +- @@ -9,10 +9,10 @@ Subject: [PATCH 05/48] disable contextual search by default 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchFieldTrial.java b/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchFieldTrial.java -index 02f5bcd9fe8f9..154a843f8158e 100644 +index 46146a968f9df..3eea0b291ed27 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchFieldTrial.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchFieldTrial.java -@@ -111,7 +111,7 @@ public class ContextualSearchFieldTrial { +@@ -82,7 +82,7 @@ public class ContextualSearchFieldTrial { // Allow disabling the feature remotely. if (getBooleanParam(DISABLED_PARAM)) return false; @@ -22,10 +22,10 @@ index 02f5bcd9fe8f9..154a843f8158e 100644 /** diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc -index 4e0a5f09ac0cf..13879a8374044 100644 +index 2ec2a791c4943..aea8c5ee61f62 100644 --- a/chrome/browser/profiles/profile.cc +++ b/chrome/browser/profiles/profile.cc -@@ -319,7 +319,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -313,7 +313,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { #if BUILDFLAG(IS_ANDROID) registry->RegisterStringPref( prefs::kContextualSearchEnabled, diff --git a/build/e_patches/0006-Disable-AGSA-by-default.patch b/build/e_patches/0044-Disable-AGSA-by-default.patch similarity index 87% rename from build/e_patches/0006-Disable-AGSA-by-default.patch rename to build/e_patches/0044-Disable-AGSA-by-default.patch index d4667d249885550b3c9e96c2330d6d1ba24ab498..9e0aec98ab66f752fb126708c5ea05e015c302d3 100644 --- a/build/e_patches/0006-Disable-AGSA-by-default.patch +++ b/build/e_patches/0044-Disable-AGSA-by-default.patch @@ -1,7 +1,7 @@ -From 235b07cf7383c02e51ecd4e00871792ece09329f Mon Sep 17 00:00:00 2001 +From f9458ae931ac742f2fb18cd8711b207abc4b6917 Mon Sep 17 00:00:00 2001 From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sun, 26 Sep 2021 11:17:53 +0200 -Subject: [PATCH 06/48] Disable AGSA by default +Subject: [PATCH 44/52] Disable AGSA by default License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- @@ -19,7 +19,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 11 files changed, 5 insertions(+), 87 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn -index 6a81035d932e4..2384bf934f2d3 100644 +index 8a57d1590db53..52bb7815d831b 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn @@ -1004,7 +1004,6 @@ if (current_toolchain == default_toolchain) { @@ -30,7 +30,7 @@ index 6a81035d932e4..2384bf934f2d3 100644 "//chrome/browser/history_clusters:java", "//chrome/browser/hub:factory_java", "//chrome/browser/hub:java", -@@ -1628,7 +1627,6 @@ if (current_toolchain == default_toolchain) { +@@ -1629,7 +1628,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/first_run/android:java", "//chrome/browser/flags:java", "//chrome/browser/fullscreen/android:java", @@ -39,11 +39,11 @@ index 6a81035d932e4..2384bf934f2d3 100644 "//chrome/browser/hub:factory_java", "//chrome/browser/hub:java", diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java -index da0c6ba320fd4..12030d94581c0 100644 +index 5b6b5b4f88b73..8ad7ad0c317fb 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java -@@ -10,7 +10,6 @@ import org.chromium.base.ContextUtils; - import org.chromium.base.PackageUtils; +@@ -8,7 +8,6 @@ import androidx.annotation.Nullable; + import org.chromium.base.ContextUtils; import org.chromium.base.ResettersForTesting; import org.chromium.chrome.browser.customtabs.CustomTabsConnection; -import org.chromium.chrome.browser.gsa.GSAHelper; @@ -51,7 +51,7 @@ index da0c6ba320fd4..12030d94581c0 100644 import org.chromium.chrome.browser.init.ChromeStartupDelegate; import org.chromium.chrome.browser.init.ProcessInitializationHandler; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java -index 0e5b7a1fdc167..f5b676769b45b 100644 +index 5655df2574e33..87458d382fad8 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java @@ -39,7 +39,6 @@ import org.chromium.chrome.browser.document.ChromeLauncherActivity; @@ -61,8 +61,8 @@ index 0e5b7a1fdc167..f5b676769b45b 100644 -import org.chromium.chrome.browser.gsa.GSAState; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteControllerProvider; import org.chromium.chrome.browser.profiles.Profile; - import org.chromium.chrome.browser.renderer_host.ChromeNavigationUIData; -@@ -239,8 +238,6 @@ public class IntentHandler { + import org.chromium.chrome.browser.profiles.ProfileManager; +@@ -244,8 +243,6 @@ public class IntentHandler { private static int sReferrerId; private static String sPendingIncognitoUrl; @@ -71,7 +71,7 @@ index 0e5b7a1fdc167..f5b676769b45b 100644 private static final String PACKAGE_GMAIL = "com.google.android.gm"; private static final String PACKAGE_PLUS = "com.google.android.apps.plus"; private static final String PACKAGE_HANGOUTS = "com.google.android.talk"; -@@ -456,8 +453,6 @@ public class IntentHandler { +@@ -461,8 +458,6 @@ public class IntentHandler { return ExternalAppId.LINE; } else if (packageName.equals(PACKAGE_WHATSAPP)) { return ExternalAppId.WHATSAPP; @@ -81,10 +81,10 @@ index 0e5b7a1fdc167..f5b676769b45b 100644 return ExternalAppId.CHROME; } else if (packageName.startsWith(WEBAPK_PACKAGE_PREFIX)) { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -index c59cb5a07458f..b284d46a2c097 100644 +index 3a568c91306f2..96fe19243500f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -115,10 +115,6 @@ import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; +@@ -114,10 +114,6 @@ import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; import org.chromium.chrome.browser.fullscreen.BrowserControlsManagerSupplier; import org.chromium.chrome.browser.fullscreen.FullscreenBackPressHandler; import org.chromium.chrome.browser.fullscreen.FullscreenManager; @@ -95,7 +95,7 @@ index c59cb5a07458f..b284d46a2c097 100644 import org.chromium.chrome.browser.history.HistoryManagerUtils; import org.chromium.chrome.browser.init.AsyncInitializationActivity; import org.chromium.chrome.browser.init.ProcessInitializationHandler; -@@ -386,8 +382,6 @@ public abstract class ChromeActivity +@@ -391,8 +387,6 @@ public abstract class ChromeActivity private LaunchCauseMetrics mLaunchCauseMetrics; @@ -104,7 +104,7 @@ index c59cb5a07458f..b284d46a2c097 100644 // TODO(972867): Pull MenuOrKeyboardActionController out of ChromeActivity. private List mMenuActionHandlers = new ArrayList<>(); -@@ -1406,9 +1400,6 @@ public abstract class ChromeActivity +@@ -1363,9 +1357,6 @@ public abstract class ChromeActivity @Override public void onStopWithNative() { @@ -114,7 +114,7 @@ index c59cb5a07458f..b284d46a2c097 100644 if (mSyncStateChangedListener != null) { SyncService syncService = getSyncServiceForOriginalProfile(); if (syncService != null) { -@@ -1505,26 +1496,6 @@ public abstract class ChromeActivity +@@ -1462,26 +1453,6 @@ public abstract class ChromeActivity getProfileProviderSupplier().get().getOriginalProfile()); }); @@ -142,7 +142,7 @@ index c59cb5a07458f..b284d46a2c097 100644 .addDeferredTask( () -> { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java -index 809925b15b3b8..618d844f06f5e 100644 +index 45c19a11bb4ae..6d9ecc6d72289 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java @@ -36,7 +36,6 @@ import org.chromium.chrome.browser.contextmenu.ContextMenuCoordinator.ListItemTy @@ -153,7 +153,7 @@ index 809925b15b3b8..618d844f06f5e 100644 import org.chromium.chrome.browser.lens.LensController; import org.chromium.chrome.browser.lens.LensEntryPoint; import org.chromium.chrome.browser.lens.LensIntentParams; -@@ -893,13 +892,6 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -871,13 +870,6 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { LensMetrics.LensSupportStatus.ACTIVITY_NOT_ACCESSIBLE); return false; } @@ -198,10 +198,10 @@ index 72f0702465c22..19e1e4ffc455d 100644 } } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java -index 4908795921a87..47d20b0660c18 100644 +index f35c3b5be7352..4e54036b4bec1 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java -@@ -412,15 +412,6 @@ public class ProcessInitializationHandler { +@@ -416,15 +416,6 @@ public class ProcessInitializationHandler { } }); @@ -218,10 +218,10 @@ index 4908795921a87..47d20b0660c18 100644 new Runnable() { @Override diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java -index 55f548a243b84..063d4ca5c1330 100644 +index 28710fc07b371..7159a1b76ae57 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java -@@ -11,7 +11,6 @@ import android.text.TextUtils; +@@ -10,7 +10,6 @@ import android.os.Build; import org.chromium.base.ResettersForTesting; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -229,7 +229,7 @@ index 55f548a243b84..063d4ca5c1330 100644 import org.chromium.components.externalauth.ExternalAuthUtils; /** This class provides utilities for intenting into Google Lens. */ -@@ -52,15 +51,7 @@ public class LensUtils { +@@ -51,15 +50,7 @@ public class LensUtils { if (sFakePassableLensEnvironmentForTesting) { return MIN_AGSA_VERSION_NAME_FOR_LENS_POSTCAPTURE; } else { @@ -246,7 +246,7 @@ index 55f548a243b84..063d4ca5c1330 100644 } } -@@ -112,11 +103,7 @@ public class LensUtils { +@@ -98,11 +89,7 @@ public class LensUtils { * @return Whether the package is valid. */ public static boolean isValidAgsaPackage(final ExternalAuthUtils externalAuthUtils) { @@ -260,10 +260,10 @@ index 55f548a243b84..063d4ca5c1330 100644 public static boolean isGoogleLensFeatureEnabled(boolean isIncognito) { diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc -index a786a37f4ab1f..717387be134f4 100644 +index e14dbd446486d..9040835049125 100644 --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -789,8 +789,8 @@ BASE_FEATURE(kEarlyInitializeStartupMetrics, +@@ -650,8 +650,8 @@ BASE_FEATURE(kEarlyInitializeStartupMetrics, base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kExperimentsForAgsa, @@ -272,23 +272,23 @@ index a786a37f4ab1f..717387be134f4 100644 + "ExperimentsForAgsa", // disabled by default + base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite - BASE_FEATURE(kExploreSites, "ExploreSites", base::FEATURE_DISABLED_BY_DEFAULT); - + BASE_FEATURE(kFullscreenInsetsApiMigration, + "FullscreenInsetsApiMigration", diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -index 86c816207c1f4..90a585b20e1b8 100644 +index 7a5fa8125b344..454d3f6752f76 100644 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -589,7 +589,7 @@ public abstract class ChromeFeatureList { - new CachedFlag(DRAW_WEB_EDGE_TO_EDGE, false); +@@ -590,7 +590,7 @@ public abstract class ChromeFeatureList { + public static final CachedFlag sDynamicTopChrome = newCachedFlag(DYNAMIC_TOP_CHROME, false); public static final CachedFlag sEarlyInitializeStartupMetrics = - new CachedFlag(EARLY_INITIALIZE_STARTUP_METRICS, false); -- public static final CachedFlag sExperimentsForAgsa = new CachedFlag(EXPERIMENTS_FOR_AGSA, true); -+ public static final CachedFlag sExperimentsForAgsa = new CachedFlag(EXPERIMENTS_FOR_AGSA, false); + newCachedFlag(EARLY_INITIALIZE_STARTUP_METRICS, false); +- public static final CachedFlag sExperimentsForAgsa = newCachedFlag(EXPERIMENTS_FOR_AGSA, true); ++ public static final CachedFlag sExperimentsForAgsa = newCachedFlag(EXPERIMENTS_FOR_AGSA, false); public static final CachedFlag sFeedLoadingPlaceholder = - new CachedFlag(FEED_LOADING_PLACEHOLDER, false); + newCachedFlag(FEED_LOADING_PLACEHOLDER, false); public static final CachedFlag sFriendlierSafeBrowsingSettingsEnhancedProtection = diff --git a/chrome/browser/ui/android/omnibox/BUILD.gn b/chrome/browser/ui/android/omnibox/BUILD.gn -index b0bd1468bd3d9..de48a56cd9638 100644 +index 024f5c5ce1f08..45ffa16bcc9d7 100644 --- a/chrome/browser/ui/android/omnibox/BUILD.gn +++ b/chrome/browser/ui/android/omnibox/BUILD.gn @@ -161,7 +161,6 @@ android_library("java") { @@ -299,7 +299,7 @@ index b0bd1468bd3d9..de48a56cd9638 100644 "//chrome/browser/history_clusters:java", "//chrome/browser/language/android:java", "//chrome/browser/lens:java", -@@ -483,7 +482,6 @@ robolectric_library("junit") { +@@ -474,7 +473,6 @@ robolectric_library("junit") { "//chrome/browser/device:java", "//chrome/browser/feature_engagement:java", "//chrome/browser/flags:java", diff --git a/build/e_patches/0007-Update-i18n-zh_CN-support.patch b/build/e_patches/0045-Update-i18n-zh_CN-support.patch similarity index 96% rename from build/e_patches/0007-Update-i18n-zh_CN-support.patch rename to build/e_patches/0045-Update-i18n-zh_CN-support.patch index 3b0fb7de0d923af6fb4cd1451c7309f0a9c3f891..b8da707275d0211a86a96ddb4e84b4dcb155af43 100644 --- a/build/e_patches/0007-Update-i18n-zh_CN-support.patch +++ b/build/e_patches/0045-Update-i18n-zh_CN-support.patch @@ -1,7 +1,7 @@ -From 7c95eb168af243ff41a3ca6135f4c3fd0dcbe76f Mon Sep 17 00:00:00 2001 +From 352f52e4a8fc1a10afce1ed101a9aa1b7bf4ecff Mon Sep 17 00:00:00 2001 From: mars Date: Sun, 2 Aug 2020 00:37:49 +0800 -Subject: [PATCH 07/48] Update i18n zh_CN support +Subject: [PATCH 45/52] Update i18n zh_CN support License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- @@ -14,11 +14,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 6 files changed, 133 insertions(+), 6 deletions(-) diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb -index cddce23a6feea..78036628ff9d7 100644 +index c341ea9526f18..ecdd20fcd6b1c 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb -@@ -10566,4 +10566,6 @@ - 网站会在您访问时自动采用此设置。网站通常会传送通知,以便您知悉重大新闻或聊天消息。 +@@ -10774,4 +10774,6 @@ + 网站会在您访问时自动采用此设置。网站通常会发送通知,以便您知悉重大新闻或聊天消息。 您需要开启 Chrome 同步才能使用 Wi-Fi 同步功能。了解详情 检查(&N) - @@ -27,10 +27,10 @@ index cddce23a6feea..78036628ff9d7 100644 +配置广告拦截和过滤规则地址 + diff --git a/chrome/app/resources/google_chrome_strings_zh-CN.xtb b/chrome/app/resources/google_chrome_strings_zh-CN.xtb -index 8779cb311b8b0..61618b7da2a86 100644 +index c6f3bc55df019..358db77eff69a 100644 --- a/chrome/app/resources/google_chrome_strings_zh-CN.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-CN.xtb -@@ -493,4 +493,5 @@ +@@ -497,4 +497,5 @@ 更新服务器没有应用的任何哈希数据,因此安装失败。 Google Chrome 是您的默认浏览器 可用于切换 Chrome 个人资料 @@ -39,10 +39,10 @@ index 8779cb311b8b0..61618b7da2a86 100644 +关于 Bromite + diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb -index 0651ead3c41d3..24b348a573521 100644 +index 1f148bfe1225f..bfd844d570349 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb -@@ -1610,4 +1610,74 @@ +@@ -1617,4 +1617,74 @@ 个标签页 也从这部车载设备中清除书签、历史记录等信息 动态卡片上的菜单已关闭 @@ -120,10 +120,10 @@ index 0651ead3c41d3..24b348a573521 100644 +全选 + diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb -index 8315b429357d8..9dc640d247ff1 100644 +index f697ce194c1cd..db75503f20093 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb -@@ -500,4 +500,28 @@ +@@ -510,4 +510,28 @@ 移除此网站? 您访问的网站可以验证您是真人而非机器人 已存储的数据 @@ -155,10 +155,10 @@ index 8315b429357d8..9dc640d247ff1 100644 +WebRTC + diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb -index 53ef407a16ca9..478c378a023c0 100644 +index 24fe28ce12e6b..ae27f8e29fd97 100644 --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb -@@ -4182,4 +4182,33 @@ +@@ -4281,4 +4281,33 @@ </ul> JIS B1 来自 Google Pay diff --git a/build/e_patches/0008-Remove-mremap-from-seccomp-baseline-policy.patch b/build/e_patches/0046-Remove-mremap-from-seccomp-baseline-policy.patch similarity index 80% rename from build/e_patches/0008-Remove-mremap-from-seccomp-baseline-policy.patch rename to build/e_patches/0046-Remove-mremap-from-seccomp-baseline-policy.patch index 7b8cba2eecb155321ee9001f6477223158dd13aa..3faccf7c3519d9853769f83da36c92cdf25bec21 100644 --- a/build/e_patches/0008-Remove-mremap-from-seccomp-baseline-policy.patch +++ b/build/e_patches/0046-Remove-mremap-from-seccomp-baseline-policy.patch @@ -1,7 +1,7 @@ -From fff6d368cde36d88fbca8e60eeffe101b0ed8601 Mon Sep 17 00:00:00 2001 +From d68f56865e5c3c226edbc13e3ca7a2b99c5fb5c6 Mon Sep 17 00:00:00 2001 From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sat, 16 Apr 2022 10:14:28 +0200 -Subject: [PATCH 08/48] Remove mremap from seccomp baseline policy +Subject: [PATCH 46/52] Remove mremap from seccomp baseline policy See also: * https://bugs.chromium.org/p/chromium/issues/detail?id=1288042 @@ -13,10 +13,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 1 file changed, 1 deletion(-) diff --git a/sandbox/linux/seccomp-bpf-helpers/baseline_policy_android.cc b/sandbox/linux/seccomp-bpf-helpers/baseline_policy_android.cc -index 9aa6408e88350..932a7c579276b 100644 +index cf906b809b963..e3721682edb6e 100644 --- a/sandbox/linux/seccomp-bpf-helpers/baseline_policy_android.cc +++ b/sandbox/linux/seccomp-bpf-helpers/baseline_policy_android.cc -@@ -164,7 +164,6 @@ bool IsBaselinePolicyAllowed(int sysno) { +@@ -177,7 +177,6 @@ bool IsBaselinePolicyAllowed(int sysno) { // Used on pre-N to initialize threads in ART. case __NR_modify_ldt: #endif diff --git a/build/e_patches/0009-Re-introduce-kWebAuthCable.patch b/build/e_patches/0047-Re-introduce-kWebAuthCable.patch similarity index 88% rename from build/e_patches/0009-Re-introduce-kWebAuthCable.patch rename to build/e_patches/0047-Re-introduce-kWebAuthCable.patch index c81974a84be10678d2ed8b08fb37889424328ff4..515c8e5933f8b46d62002697eba5f0b6a93de6b3 100644 --- a/build/e_patches/0009-Re-introduce-kWebAuthCable.patch +++ b/build/e_patches/0047-Re-introduce-kWebAuthCable.patch @@ -1,7 +1,7 @@ -From 0a8a14fd161324746af1e53ff63908cae856ac77 Mon Sep 17 00:00:00 2001 +From d438b2da5e6d3bac8cea33ff6ef64044cba761c9 Mon Sep 17 00:00:00 2001 From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sun, 4 Sep 2022 18:47:58 +0200 -Subject: [PATCH 09/48] Re-introduce kWebAuthCable +Subject: [PATCH 47/52] Re-introduce kWebAuthCable This reverts commit ebfd987a57bf4a58588760e8a4342b4fffef36f2. @@ -20,10 +20,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 8 files changed, 30 insertions(+), 68 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java -index 12030d94581c0..c8776db837c3e 100644 +index 8ad7ad0c317fb..9cdebb5b0987c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java -@@ -98,14 +98,6 @@ public abstract class AppHooks { +@@ -92,14 +92,6 @@ public abstract class AppHooks { return new GoogleActivityController(); } @@ -39,18 +39,18 @@ index 12030d94581c0..c8776db837c3e 100644 return new InstantAppsHandler(); } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -index b284d46a2c097..dc415daa9bc47 100644 +index 96fe19243500f..c496be7249fee 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -312,7 +312,6 @@ public abstract class ChromeActivity +@@ -317,7 +317,6 @@ public abstract class ChromeActivity private TabContentManager mTabContentManager; - private UmaSessionStats mUmaSessionStats; + private final UmaActivityObserver mUmaActivityObserver; - private ContextReporter mContextReporter; private boolean mPartnerBrowserRefreshNeeded; -@@ -325,9 +324,6 @@ public abstract class ChromeActivity +@@ -330,9 +329,6 @@ public abstract class ChromeActivity private boolean mNativeInitialized; private boolean mRemoveWindowBackgroundDone; @@ -60,7 +60,7 @@ index b284d46a2c097..dc415daa9bc47 100644 // The FullscreenVideoPictureInPictureController is initialized lazily https://crbug.com/729738. private FullscreenVideoPictureInPictureController mFullscreenVideoPictureInPictureController; -@@ -1206,53 +1202,6 @@ public abstract class ChromeActivity +@@ -1169,53 +1165,6 @@ public abstract class ChromeActivity return StatusBarColorController.UNDEFINED_STATUS_BAR_COLOR; } @@ -113,8 +113,8 @@ index b284d46a2c097..dc415daa9bc47 100644 - @Override public void onResumeWithNative() { - // First, update the activity type in order to have it properly captured in -@@ -1400,14 +1349,6 @@ public abstract class ChromeActivity + // Close the current UMA record and start a new UMA one. +@@ -1357,14 +1306,6 @@ public abstract class ChromeActivity @Override public void onStopWithNative() { @@ -130,13 +130,13 @@ index b284d46a2c097..dc415daa9bc47 100644 } diff --git a/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc b/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc -index f0f58e3832af3..3f3a5ce8a4bad 100644 +index e9752ac384b8d..ab5d819e058e4 100644 --- a/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc +++ b/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc -@@ -99,6 +99,12 @@ class TestSheetView : public AuthenticatorRequestSheetView { +@@ -119,6 +119,12 @@ class AuthenticatorDialogViewTest : public DialogBrowserTest { + } + #endif // BUILDFLAG(IS_WIN) - class AuthenticatorDialogViewTest : public DialogBrowserTest { - public: + void SetUp() override { + // Enable all upcoming features to excerise them for tests. + scoped_feature_list_.InitWithFeatures({features::kWebAuthCable}, {}); @@ -146,16 +146,16 @@ index f0f58e3832af3..3f3a5ce8a4bad 100644 // DialogBrowserTest: void ShowUi(const std::string& name) override { dialog_model_ = std::make_unique( -@@ -162,6 +168,7 @@ class AuthenticatorDialogViewTest : public DialogBrowserTest { +@@ -182,6 +188,7 @@ class AuthenticatorDialogViewTest : public DialogBrowserTest { } } + base::test::ScopedFeatureList scoped_feature_list_; std::unique_ptr dialog_model_; - }; + protected: diff --git a/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc b/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc -index d1255412c5ca2..906a1173f944c 100644 +index 5a5da8fc8d522..871fd69ffa824 100644 --- a/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc +++ b/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc @@ -45,6 +45,12 @@ class AuthenticatorDialogTest : public DialogBrowserTest { @@ -180,10 +180,10 @@ index d1255412c5ca2..906a1173f944c 100644 IN_PROC_BROWSER_TEST_F(AuthenticatorDialogTest, InvokeUi_default) { diff --git a/chrome/browser/webauthn/chrome_webauthn_browsertest.cc b/chrome/browser/webauthn/chrome_webauthn_browsertest.cc -index d0dc93c2d879d..eaa40cc67e179 100644 +index 2f77d62333ccd..3680fe4f6f665 100644 --- a/chrome/browser/webauthn/chrome_webauthn_browsertest.cc +++ b/chrome/browser/webauthn/chrome_webauthn_browsertest.cc -@@ -735,6 +735,7 @@ IN_PROC_BROWSER_TEST_F(WebAuthnCableExtension, ServerLink) { +@@ -756,6 +756,7 @@ IN_PROC_BROWSER_TEST_F(WebAuthnCableExtension, ServerLink) { class WebAuthnCableSecondFactor : public WebAuthnBrowserTest { public: WebAuthnCableSecondFactor() { @@ -191,7 +191,7 @@ index d0dc93c2d879d..eaa40cc67e179 100644 // This makes it a little easier to compare against. trace_ << std::endl; } -@@ -977,6 +978,7 @@ class WebAuthnCableSecondFactor : public WebAuthnBrowserTest { +@@ -1000,6 +1001,7 @@ class WebAuthnCableSecondFactor : public WebAuthnBrowserTest { }; protected: @@ -200,7 +200,7 @@ index d0dc93c2d879d..eaa40cc67e179 100644 // This field is not a raw_ptr<> to avoid returning a reference to a temporary // T* (result of implicitly casting raw_ptr to T*). diff --git a/content/browser/webauth/authenticator_impl_unittest.cc b/content/browser/webauth/authenticator_impl_unittest.cc -index a9efd96c69ae9..ec93927251f6d 100644 +index 17dcf43192b59..fb985d4d4e024 100644 --- a/content/browser/webauth/authenticator_impl_unittest.cc +++ b/content/browser/webauth/authenticator_impl_unittest.cc @@ -1273,7 +1273,12 @@ TEST_F(AuthenticatorImplTest, OversizedCredentialId) { @@ -218,10 +218,10 @@ index a9efd96c69ae9..ec93927251f6d 100644 NavigateAndCommit(GURL(kTestOrigin1)); diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc -index 8b50940f065ef..9c100a654805b 100644 +index 9b198a1775c89..b166d805a825b 100644 --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc -@@ -1199,6 +1199,13 @@ BASE_FEATURE(kWebAssemblyTrapHandler, +@@ -1188,6 +1188,13 @@ BASE_FEATURE(kWebAssemblyTrapHandler, #endif ); @@ -236,10 +236,10 @@ index 8b50940f065ef..9c100a654805b 100644 // https://webbluetoothcg.github.io/web-bluetooth/ BASE_FEATURE(kWebBluetooth, "WebBluetooth", base::FEATURE_DISABLED_BY_DEFAULT); diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h -index 73708d43f733c..f43fb5f9be8d4 100644 +index 20b78d196da6f..034c8e75a3b16 100644 --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h -@@ -301,6 +301,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebMidi); +@@ -293,6 +293,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebMidi); CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebOtpBackendAuto); CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebPayments); CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebUICodeCache); diff --git a/build/e_patches/0010-Enable-SPPI-for-devices-with-enough-memory.patch b/build/e_patches/0048-Enable-SPPI-for-devices-with-enough-memory.patch similarity index 89% rename from build/e_patches/0010-Enable-SPPI-for-devices-with-enough-memory.patch rename to build/e_patches/0048-Enable-SPPI-for-devices-with-enough-memory.patch index 069492fd5e2f99ebdfbbc579b96111104d8e20e0..0b70a475003efa4121b31bfe2f0d96f882c17fde 100644 --- a/build/e_patches/0010-Enable-SPPI-for-devices-with-enough-memory.patch +++ b/build/e_patches/0048-Enable-SPPI-for-devices-with-enough-memory.patch @@ -1,7 +1,7 @@ -From 6cdedbee98e5a55df857b6957849eaeda0816d6e Mon Sep 17 00:00:00 2001 +From 7179e173b85e77f7d7c1845da301bf713a582421 Mon Sep 17 00:00:00 2001 From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sun, 17 Mar 2019 19:09:00 +0100 -Subject: [PATCH 10/48] Enable SPPI for devices with enough memory +Subject: [PATCH 48/52] Enable SPPI for devices with enough memory License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- diff --git a/build/e_patches/0049-Change-accent-and-switch-to-match-our-palette.patch b/build/e_patches/0049-Change-accent-and-switch-to-match-our-palette.patch index 1a4fbcb4b222f6cc44c6a92cea546a8de9ab0b8e..ca646ec69414a12cbb5a5d6b0cd1d34fdbdd8a26 100644 --- a/build/e_patches/0049-Change-accent-and-switch-to-match-our-palette.patch +++ b/build/e_patches/0049-Change-accent-and-switch-to-match-our-palette.patch @@ -1,7 +1,7 @@ -From d0403be656d7b3a627b72256cc5324de1fbaa53c Mon Sep 17 00:00:00 2001 +From d7266d2642d743e7e9e6226842939703c701cb16 Mon Sep 17 00:00:00 2001 From: Nishith Khanna Date: Tue, 20 Feb 2024 20:35:25 +0530 -Subject: [PATCH] Change accent and switch to match our palette +Subject: [PATCH 49/52] Change accent and switch to match our palette --- .../keyboard_accessory_sheet_tab_option_toggle.xml | 2 +- @@ -96,10 +96,10 @@ index 4a348e3e33318..73b1996129ae6 100644 android:layout_width="wrap_content" android:layout_height="wrap_content" diff --git a/chrome/android/java/res/layout/improved_bookmark_save_flow.xml b/chrome/android/java/res/layout/improved_bookmark_save_flow.xml -index 9b8e6020d4810..fc8a4ad2bb00a 100644 +index 8b83198cdfae7..3c883d9e4aded 100644 --- a/chrome/android/java/res/layout/improved_bookmark_save_flow.xml +++ b/chrome/android/java/res/layout/improved_bookmark_save_flow.xml -@@ -139,7 +139,7 @@ found in the LICENSE file. +@@ -144,7 +144,7 @@ found in the LICENSE file. android:textAppearance="@style/TextAppearance.TextSmall.Secondary" /> @@ -135,7 +135,7 @@ index 55fdd14e4dbbc..1c601a6584603 100644 android:layout_width="wrap_content" android:layout_height="wrap_content" diff --git a/chrome/browser/readaloud/android/java/res/layout/readaloud_toggle_switch.xml b/chrome/browser/readaloud/android/java/res/layout/readaloud_toggle_switch.xml -index 708b7eb5fd55a..73efbc84da0c7 100644 +index e980248bb75e2..59bf07c11172c 100644 --- a/chrome/browser/readaloud/android/java/res/layout/readaloud_toggle_switch.xml +++ b/chrome/browser/readaloud/android/java/res/layout/readaloud_toggle_switch.xml @@ -4,7 +4,7 @@ Copyright 2023 The Chromium Authors @@ -182,7 +182,7 @@ index ecc6bc6b9b150..175082479e551 100644 - app:drawableTint="?attr/colorPrimary" /> + app:drawableTint="@color/default_control_color_active_baseline" /> diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java -index 694dab66f3ba5..febd429f35cf8 100644 +index f3ffe354ed517..9f2ed4e77ff93 100644 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java @@ -151,7 +151,7 @@ class UrlBarViewBinder { @@ -195,10 +195,10 @@ index 694dab66f3ba5..febd429f35cf8 100644 textSelectHandle.mutate().setTint(color); textSelectHandleLeft.mutate().setTint(color); diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/styles/OmniboxResourceProvider.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/styles/OmniboxResourceProvider.java -index 732ebfc70beaa..be6c6bd5b0311 100644 +index 4aff4f28844f1..13ef150a2b4e9 100644 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/styles/OmniboxResourceProvider.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/styles/OmniboxResourceProvider.java -@@ -359,7 +359,7 @@ public class OmniboxResourceProvider { +@@ -352,7 +352,7 @@ public class OmniboxResourceProvider { if (brandedColorScheme == BrandedColorScheme.INCOGNITO) { return context.getColor(R.color.locationbar_status_preview_color_incognito); } @@ -208,7 +208,7 @@ index 732ebfc70beaa..be6c6bd5b0311 100644 /** diff --git a/components/browser_ui/styles/android/BUILD.gn b/components/browser_ui/styles/android/BUILD.gn -index 28c006e6445d3..8f3d91256e19d 100644 +index 096e6d81cce6d..8a3b0bbc077dc 100644 --- a/components/browser_ui/styles/android/BUILD.gn +++ b/components/browser_ui/styles/android/BUILD.gn @@ -51,6 +51,8 @@ android_resources("java_resources") { @@ -220,9 +220,9 @@ index 28c006e6445d3..8f3d91256e19d 100644 "java/res/drawable-hdpi/btn_star_filled.png", "java/res/drawable-hdpi/ic_chrome.png", "java/res/drawable-hdpi/ic_delete_white_24dp.png", -@@ -231,6 +233,8 @@ android_resources("java_resources") { - "java/res/drawable/ic_youtube_searched_for_24dp.xml", +@@ -232,6 +234,8 @@ android_resources("java_resources") { "java/res/drawable/smartphone_black_24dp.xml", + "java/res/drawable/star_outline_24dp.xml", "java/res/drawable/toolbar_hairline.xml", + "java/res/drawable/e_switch_thumb.xml", + "java/res/drawable/e_switch_track.xml", @@ -337,10 +337,10 @@ index e0861e7c69ef7..f58e9d9aa5e97 100644

JZnIBk1lW?c!t!wrH`4NP6J!ZuYIgHl?6n4i -zBa3S^yns7L!Q%mp4^_!#uAs&Ar1l&2MhQbvPp~5}d~5Vj35bi^tSQ5vrSlZi8%J@H -z(0nh6klcj_N7}?#n1(ppBh}mC;)iOcJWCq;Cnwpol8cDkITJw7O!bDRrWtmadYc_# -zTh$WHUEulIutT5!UjU^XTH~c-YUBn*Ue0Wyztf=@q;zZy3{X;}xlk8bbkaofU?Lsx -zm^~?(m%`@LBG*=i6;z89J1Lh{>?QE4u-p&*BJ}eV)uy`ZA^*Y;g7Z0h#hwMH-Z?v> -z>!I`Wm#62CK6(5_a~Gm>tz(bzfI&6)mwsL){&F}?%rbEU&haEy7h|a~RcdqCSAWRwuM(i}q~sipB2}2wmPFrK#fi^9x5@(%x@!M!`}D1`C|tq?WfjL7L~!C$6ek -zvX%Zz9W=E}vw51hq9PdlWa4hTu$7pw^BYH;X!^X$ld!CEvzfw+GcO7}a0GH!YoT|_KSbB`q}*Ng$!=Tp4v=X8&mh#L=J^BNoNIX-fT+J -z%_QQD*`GO_)ph9PI|vH?GTpdiCCfp^Yx;yOIG>=$>Ck%d2cRP_Co4C-Lg!0>K@d+O -zvqWqOPn^65qppgrYnU+#gs#Bj3;1^+LAeAF8yHg&4{Q7U`Bbb3SNSbD4W=lUd;#kk -zmy;uQk;-eNi^_V54Wrj#4v`K@!AQKv;Pmc@kwB8gbd%9lxJ@7iZ6&&0ju$?q9rO^Wcd1eevS-^tG_FK#{yb@6W456cDmE -z=*;Ic)2xO^8PCHs2>sT^!_F~~5U^|7r4?9{e?IE`$W;WMlk0^n)mLh*90dr=W#=qS -z$OA@u9kxSuF?r>o^PntGuee_xUJkBx^puoU9%^zeCzDF4?KzH7$h!f*60W+!WIaic -ztU*!^uc80Kjb+ZgFqkS8Nl!nM9Sb(T(ZPgtmLl9~f}~zthI8DV!KThm3;YFv9aWC{ -z-fBFhD;{&hu3If@4(6&ALf|js3a@#NC#RTF7dsAs?HbU)s7YXs}(x)eN*v& -zxAL07FcsQ&D|C&n=jvm$6Inn%pm%Q~3#P(lNnXKpzejuJr^jffQtT2I+~teyIlp<@JHP2#m46QGT!zBoN#-NPH~#N+Ho!jMDk=B5-2re6?qx@5r6y-A43NDugvz%<8Sf9NZ$AiQj+~} -z0%JZ|vf>~7p_*BKNW0K*Jy~RUbT#?(n?D#XaPN}DR*OkrIT9WGG(c~Q^YnTab&tU7 -z%R!8=#dB8~gi6oDngA2LKKEXoy$)W#d^Lah>X;lCN)^73`q9{lzpE -zreVSn0TzNjL!`~L$t3%nNt;116s%5IlYLR4AEN>0;?7-ci;~CqK0O|RjW*YjP1L<_ -zrrict{Htm;WI304=^;l^V#NV<5v3(aUNLXuG>>uO2r#(3{4sVjDZfaA?WgVXGSj>j -z2cW1uF;~iOoAW+xot(d5FTC^DXD|Fy|K;hcV+#7`FJ21|+D*M;r8H-bt#gVK*mNNe -zErC$jP2;ubq+oGTCEbBiGtEE!;&^2pQj*5t(OsJDmI|iet_2s)k`F5w -z`+k{w>GdVz#k948;Zj|7>;ey;A5r9S+vkZp5SKiPk5R5QLqXw}XUCdyvBoUJ!Xwer -z(MpzM3o;Fi<7Kya3pqoT;&25OmsLLZ%aNt`7 -z2h{bhD&xx{t#Y5Y+3!9=jzaG`D&{6fxI!+Md0H)&kAIf#!lTwGkdJip)< -zFOT^o(u-#o&n{rQ^QXW(!?HVrWx*t99=4F1?EbFBqp{d?k$W8mJVj?7JZ~J>z57h@ -z*V`RTW_cP^;yh+rrkkXAU$I;`JCNGpJ{_)msl1-etAYc2S-|ESf3_ZIm)>-pl!b(9 -z^bot|vnFD~)VTFCbb235VwM0m%BOLdD7#_9lQ0%gA!l2lho?>9FQgL-YZXT90k#Ay$!nndvDFzt`u -z{#2iN7BJs`c0PaYJ$v7OCjdmHEltHS8fx;#|G){_VsAdAhEv4>aB9kHNUKQGV5?0&pUiO()w)K?b -zpXjXU^x`?^&;4M2#x5>ic=KbjqUWz)BP&`9dz=n{|{so{y^CDF%<_gW2A?tQ;tmuPqOZioXMVaOf -z!y_q2T2?7v-Nh|~G1RY5PrcXkXBV$u&0o%gW7=KgP=hq|*ld6pYcmiB8z452yVkJe -z3)qnfgH&|1j^`$FREyby<8v3$ta&)4yTLu&O*sxeT95*qau8*WG4Ngo&(B^yI}L!x -zvDe3x-Cvx&IC}c_wO`B#^}`0AH``t{{czxw4@zj^!f%in(W^RIsVM{j@g)2|@> -zx0gTp*)QMz^2hS`mv4Xhv#)-B`Sovq^^>1`^>dKOyKCRtFx|10Yjj&R@s}wiW#xpe -zxj#X7o;;c~NiNT^?!kK6IoBzEU?$}>i^(Xa==U&TVt(|=es+3xapApSug_n-JbUGz -z9TOv8zj}te#co13<#yCe3JPtH^`4G)M)o%W!iU)ISW55h>u3I}3-8t0tBcd;Aj^A4 -z?k!3LW&=cD%|LOzgvFQ50ym>wT(kg*Fyi7CRLe>TXXnr7bN1>Lu#xj)YQ&$vdU^gF#@KFx7-c)S5lUcrj&}=Z# -zqU54cv)I~ApL>kIcm+Zu0OyPI7q5@m^k*QqL(^T25WR3k -zh({0Q*0ShTt5(O#CEsvif`WcTEkWSy>=^?_ar*4_DVv|ZK5DOEK9Gv77Dx*ZGqkz0 -z*W9YK_+6R?^1&mc{XDohzc_pS+MB}!ogKIRXV1`Lwy#?9xbD-uf!QrBJqd{3^H8uf -z#h}<(3SLFjBd!YNzPuLor1JwXIn!etDqpE_vCO$=4(lI4?d1&*%VNWpcw(pz_XP|y -zKl5Ka3)tzim;9(O`t0Q^lpDooP -z6y6%6`RTLsW6Gq@PhaDG -z$W6!#7%~ri>nfwG2hUcs&1Ta-watoc;uo1L5IbKC?aK9XTt#m@b>{G?DG-2`6$iKn -zp)rht*$TD*JTZi#+Y2_@+&m91XAH)6v^aCJ{(?uDLoXEg7q1yR4M387`FwtH%ze|d -z*Ds&rf&Uh2?wC#c(U6uXObdMb#jn+G^_=i=$89dvqr{FqK;v?tL^NIg1FQc(50e!{ -zCN{@?HV^z~Jb(@QtLNVH(_^xLa}awFG1ST%0@V-A%=4y5ZLKruxihJ_E~f;{fX4Am -z0~$0xySTnMJyi{CN0UE){qp+N=_S9;E_cq;;KhEK&R(8gzdRkx)OzYFd=Px$2W*;V -zPiNxz2TL%FZEqiqpk#}8c2rsT*`$3?b0AF=N*kGhp>JkF7_kiOK}OChP+~Y{WQxLgap`D;52Mk#?nc8`<(7k(Qm@|NFoH%m2^6{O|tLfBvuk)BpM3*1t}R -z@^PW44F7-s#lQF;{?-5bfB3Ke_y6Dj{C}y(3MFFwpZ@KC|DXQn|FZtOzx*%%?l1pO -zfA^RF+rRtE|Ht3`^Z)Me{_1_j|N5`~-T(NpXdP^QnWmYPZDVEqH~*V| -z|3CVh|L5QQU;pO6`J2D`oB#H2{x5&?fBX0U{NMj)|Nehg|AOT!NLtMQ`u`5C{v``1 -zjq;%W+kg8n{`Rl_i@*K1|I@$ytN-2K{?)(v+rRo>{q0}L8!5iir8`ftme6$p+9*NCSH0i51NEV!;H_i@#@lNd7x~sfuh_D -zwDsQ85Mk%bXJTd*-+oz4u=vTm0QPM#z$Z`MT87@k8@Sel^6x$S5=zItCf?~7FY>lc -z;UQ)2SftAW@M!HFDBNP$@(z{Bv!DFz7e8&7`R|I{SL&9BguQGPXSw*#E_=6I89Pw! -z`kdI+$HT4)pUvlKgkr}wt;$Q32P}mgL@Xy_8)Tirv1h^g>5E_-6t0e4nRtLW-m!Z!hVXdSa$-RE{{Nly=`RU8kSLfaS;`DgVzdIL7;KjE -z^v&NlbN>CkGv<61v6$_jF$R9iOCz6z>(AbN+Lj9_r$j%&dtSxYCBDn}!z3;L!L&>( -z*pWAffPe6K+8FoA$l%BJfmD!|>|DRtjpwCjr_aux`!CN=*#%=~$DG}ZXYw$rtys)% -z`=LTT-dPG0DaCZL@)QmRq_L(H_i#n;n&aU=kX>!R)V$LIO~L?;zLhy(lZ4(*@tH?V -z3q&G=MHO#8MK5HNO$h7>$ww^*SR579-7kQ9q()V^zY^T -z!uQUf2j2YE+3T0jkBL+l&t3={9lHtAbi@kAE<(Q-yu4&6VhN+HoF%|>!yC~S(KJZu -z!Ds>^KmKv^^Rci7M~(esG&(6B3x{lvyFBR*y%)q+{F3z6?7e}O%vllO)p~;i1_A#u&_UA8HRy>wRu)VfPxJtw5>C+kW(Vv49 -zH#6wc$$)05&%=DR1QuvtT>FZ&uUPvkw69Y8x>3J8rhREOcysM*p?!tg*Om6A)$VDv -zdt3F(XZn|x)Ym%iYmM=>#`sI^OKY014U?}8laDWl7y;hK2=G^CKyCztff*2)0f`ZC -zl^FpmZU&gOM1>I$Gc(}E2uRF;a%l#bDXN7TV0OPUv#iaguR|l?#%$@0ISn_)s2lO| -zl+CS>g%uK7A-NS&nIT?ag)FU*#0p8R5UVbO)-mM94Dqd!eXC^OYO`;Z99X%yZ-rPR -z#!E9~er1L%tkGClhD(Oe4<WZxv#@AMeRZhaJ -z5Niw*Yc!I~46*4svr5jm6=KzuS>uygl5m0+U@qh+eziUTwt&THZkGN1)9_pv`!omBO`BxW?D# -z8a2(eQs&y2EVSM)v@#dkyezaiS!iW0G+JHgHE5%$ujr*VW=k#KQd?_Fjj}?mouSs2 -z@V)k>jZ0YSUj}erX~pV{MaSBeHZ&`3xL4XVMcM#ITFOWpj7V!-q;)vb$SKyqCe~UV -zYb}el8e(kIbEVPAkhXm(Plr<8jxxEGOgj6*6>Ul -z#9XT(*HY@dD%UzyXzRVux>#u3v(P5A(1yFv=(5mSU1%*Uw7wTwA4+YqOKm($ZCpyN -zKAjtuT79KfL#2(&TB~8LjnYQ$PUM&J{+rPH6k)tzfoYZ2XQoX_|4Ew?HGnoHMhI<6 -zln~mKs3Ei|(L!ibqK43>ME#;oiSk985+#5(CGFSm&!$8PdD`7$q-_XoLz)2EhG+q_ -z4N*gA8={2JHbe`dZHO8|+YtFh+Ysf8wju2oZ9|l=@8dSaykp}>E8R7-l7+S+{U>cj -z)BxIw7$LM3Q9@`dqK42`L<^y4w;{Nn3BKKnttb!rpHr!?HDPwmv^Sp15WOT(e}>(?(X=JPZD>f$x` -zF6PH{)coq~9N(Gz3${$t#xL_MOeXlqOgALabQ{L9H`#htl&lQ>SsWJrtcbaIoMEGG -zA-7nT=-Mt>J$F{&d5x#jE@YN{{`QN@-~Pp~zk0KA)ijjYbC(^&KycG-5i6M>q;pL! -zhhnN{%BN=V>~b5GZ=U`m_*1=kI?aIt3jc7ritn((JXUs;xI=mEK)-wXE(4-@8}tv3 -zIMbVf3bBhx=PUp!Vv%T>Ol%}sr2~Hbg>GsYdvtO3|>{ItUGT|TAf-!xD4iRUJszWG$P;EVM7 -z>m>`)jU%&oVB)EGVYV>GMSbg93*WFg&zmasnC6-5NW3^N9;CNMCF6-7Mib@rWi9&u -zU)Emy)%_e{aa7dEw5Z6jo$Aev_2f(LLqdU{wuCR|UOed!IdB+dJd=+R7rWC)c7; -z?ItpVq#JPYtDS;WC?v8QOwH>YCL)+XQhM5CqL9j*J!~e4k8G}De{CL4-AF&Ikm#uY -zv6Y77&KBoNBZ!oY>7gt!AQhdfgb>0cNx;{%h;w4Q)>q5Muc&3ZF^Eyjn91sgHW466 -zmeN=+1c+K*ID7qdKt-~3+C+<7XzniQT=eJ0qb4JgaYgK@Lq_D}AVxdLsQ^Ww(YJD_Uofur3sEQXL>O~D%LDE -z@JQtuO;yxN+qIr!y|5gtf*sHDNO2@Q2SFbLZ*pn7&fK$yvU=}?IK#%DkQ255S3jVl -zm>@@?8OajLE0S;%V+h+3$^lzw5kzna@T2Wmf82S4#=YJFFjZDxrtm5hDF5?QN?Dji -zECi2UyLU)_3tqmo14E}ok+C)>A7?^Ew4_rq+k5+Y{>*)M?Jzg+7Wd?9vn|&{D#)|y -zPc`-LiGB#c8gfk4;-1$XyO|fQn`x5I6>N*IjcD}mV3HTCJQESNDKvU?}9K-;@$-%M=eoc26Xxf{VUQs|216Lu{l8| -WwD&L1$(J{c5bHm_k9+?sqO|~(c^+i| - -literal 0 -HcmV?d00001 - -diff --git a/components/test/data/adblock/longurl.txt.gz b/components/test/data/adblock/longurl.txt.gz -new file mode 100644 -index 0000000000000000000000000000000000000000..af0aab5a8d17a0a331f65d34be7f512d8a4df247 -GIT binary patch -literal 221308 -zcmV(tKQO5w0aeK%)XY`1i -zbN>2Am0METl(_d=bB-a2a=q{K_CFAu*C{`;y_v@Uit`-z|K|Rvn(@E7Sf}pz&hvlS -zH2kajDgE~UwypnHez(1U{*A>BR>ODxSMNjre?Ba1xfpcOhg?seQbKG8fDHahacpxN -z|Kc?U5h|t~(cUb$V?E*30 -z*`8~sg)NvtB=77_2mu!SxUmfonhQ%-o9o2 -zO%RZ?>vH>WpTf}3Mc{&J@bbrUhESrhg{iA_KE5}77Cn>?eCn7&5X*s}BZK>$@eqRT -z7XuA~X+CZxauy54NrYNtAJ#e6u;gjw+X+}HC#-vYT;Lo<&-^Ak5y8CSP99_*pTf0N -zxo`U>6DhumdCE>Dpgr5x*~fHx3E5|4hp#$^|3L+8ZX*H@6e3uRQ%yTOcp! -z!ND$!5o1-L7Q*Qi9s*CH0`plFC**5=Xo|^&n1V4f#U2+Z`t|T;JD*Ll?wcEq(VL_@+4HjcegjkbGe0oW-30B3&CjtpQxVfJrDSLaX0+wuop{+l90*^jVP?!xpbYBbPdR5|aj -zGC!YGgrl-Mm}H&NLYIA}emu#eyMXirTtM#`MsWC*06Oii&=)4u6@!jKIcLt+Dmz|3 -z@*YI&X=cGUy52}sujbaMA&mM(w8inOu26nf4W=UDQk;gvX#OI}un3@VHQ-9uxn~ub -zUj1ziLMW6OXp)AmsCur~EnFp$VKik7DW-9Z1H(8KY(Itmt=X%#jNx6*fDw%`(RugM -zefUJlYX9K$vuHVwQ-)1%Lj}<;)SQt3sOVIGw%!KB -z)Cmq;{dV3|(R%uGyL5l}w_{)$lTaCmdvr>YxGrCKQg82yuPttPIji2k}nLF@Ozo+m{B^mb=fV~>WT*R#5uGv7R -zl2(L7q%BfY&0Db(AOH?|T%(eSwqM7`J>9;BO7LbU(!VjGJiRrBfmhB{W57!B3`7>I -z#Dtut*PAqhPFNXRU>6=~uY%T+v)8g=nCYqXBf(_PN~0h115{~rv~lVM^#X05@nfPv -zX@M#hF_OXcE>g~jUbbv`u!LiR8P7~CjHIb6z1?U=>M0l2!RpqiWHGhbw{?z%nP+j@ -zIjwZ=SrB^-Th&g$xYMO!L1Np(eER;{6Hg+xUSPVeq;F>T0fmsJA|hNLB!dm6J7)Kr -z+RtF{XiYvw&*(55#HLZ-zQ#|1Q{MCMqG48$d-}{=yjnt#g&6JdtClrm^}a5Q?8iad -z@MbN6;TEat+Pwhz-T=Pvgb%Vp@%Qv~$vVtxZi{xXU4$>B2u{VE$blYvPlE_>jpzN3 -zM)@>JiU28Mg=p7~IZSZCRo|_p_}I{$+QXrGfYq4wbBaGL`dy0++7+ -zuCYo|@VRv2DIWR@X<#oU{G5j>-H`F9Mg!fs$z?MX<(Fehe4KLFlTosdHN7x2b} -z6*N+2HthiT>S?L~+ -zHkF%1z^i`DuekJy>Mgv`p{{qC(wu+OSerI -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 -zqYSlt!OuyMW9;L*EL=KAdd523- -zqR(*~zmhQ8=!L2;h1c?{C-f@tyITzCD*L&fW7rok(}GTUGbVom>W=Lo$ZvRV|d?1}t_DQA0<^U1d4 -z$KH^ys9RvS(G4}~S!_@FBjEI+j!P!MVcT}F$vViOt?$Q|xihykCd|@4u8$6Iygg&| -zP!d0A# -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 -zT}OD$3O)q^nC3+g4PiWqG0W5BKtC)`29)& -zQlUwQIdl^UmBW%hl@hB|Ayp^ozg+LxN^UbYd)PW#nw^ -zZv5|hKpzI#j0W`PX&^o1MVxE~r6lyfabSe0ol^reaG#MOIG-?J|FH`)wS}G&w|76BzkYRrN!{vdg_x=P -z;$F&&P*=4Qz99k6RjBCpfgealn|^I+Ulh_jB3>Q0wm~_j{J_}j$0Br0h1Ru -zDqlI!wB}BgDBK|}g#qdqxeeglzQ2VDV2J$!TtomPK-|9}l<%TZY4;7oZc9kh=HIvH -z?K%=8#ZP!lRaMEhGGH`(&P(ZUgzd5l>$;%MlK3Wc_5QsKy!{FHq)4h-!`g_(D`_1` -zj+d8xM*1vEv(WaV9LpYbT`&x=2`JMP{7W`~M`Ya36Xcx*(hJ%lX+<7T9;;L4g+#iI -zNzt$jctkCn4GU-&wm#=$cu1Em6EPJ@w}ZAVr9gfj8!H6jdhgJR6eFGlNP(NxMGh#9 -zk|6lw?1e09=C(O_HF -z(4%krYwL}RrrzYN=?W6LKf@N2XM}2YH}u+B52MHK$s5LekRk2Uj)3#emqfUZ{v@Ok -z<(D=UTWT^3O?9`2y}jUnqvLX_-`#JEb<9T<+!A(0&`!;b(YNKjvf@Ri=Uq5UQ2v~x -zLh+f;fb?p0LhPEhWAl -zlBj9)?PAI%<3+)JJ)RP~-?J-T?k&MwDj@c$7l%sGDn9rHs-T?LP<*mboYQkSpPaxE -zO)Kw=EH84ZEYf|Lc8_5b!^~>dSFrNiF;@des^4w8lFr^ZAszP%M^6rBsjDFgR|KzlOmEgIYq8c9 -zN9&RP?ini&!2$E9Cvxn_r7Stn*3Qi -znk{SZ2;1ia=Lxn>hydWguHTH5P`?Hw9pE0N6%)TE@ddDoG@uJnM#D4B0lm<%Hl6t7 -z=UJ2FG{ssv`m$+hL#7V+?-Vo -zdr)c{#uwJZ1J257Z6hU70D<%g@500@kr53q4V{{CRPR-p>zfP -z5#7knU*?;B#eu=|!?$@wzGUive){S?2Tf;+3^^%DU!~W2UvaNKKRpK5U2vWR8-6ht -zm;y^CzEL930kdC%3BI;v2zCEMI(pkECv=t-EiTILhLVByn&1=vJC%v}vh1LF8AT={ -zz3~)Dzn>odtx6M>%XOdkFF<3p&v4n~T`zML*EAmuSsAi0(RZwkh`#ym9zdS7J9(^t -zlLgwS7^9d9GOR>2PtaZP17JTyK8e<~aM}gy9QN)l!iF7ShX~l-0jPHI0kr^7nj`cbP{=EjQP`J3-O_GNeVO7CrZpgNw%)Ip9-H$ -z1Prnd99fr0dGQG7kbS&Sz^$WmcE8i_USL{aKtuo${ -zu8>OUezg*UMZuL4$rq%DMzRZG&s&|yn@FCogr=hUa}k{&*IzOj02OF_2a3J~=0|cM -zJ@0MRCd(>q^RI4f`FFCZ1Ulj`P?U$0mH4fY^S!zO5r^?w^E7x~r5zAD_ -zgQ;ag1dM_eR{3zK2>u~%Z01&HT@hv8chz4uiOol}I2dpiB9%$MQm94@LxOvMkUgM} -zBi~=tHgC#0(r-luT;ev*_8B+7@{J1h`+iKhDJI6Ha0(h?7MvrQQ48R^w%-$gCfm-VEp3MBh -zel1=%u0eJy(HQ -zX0n9rKH5w+#gCS?yO2)GT*#j-J0b*S^yLP`rNAc+(zq-={ieJj^ao~3X-}W$luVkn -zTf8>+s+7``dm*V)4KY>6Z``?#mg()>G`3hlgz!U|`R*#ryPJ9CYxICzt~U9LkId>l -zPUiO^g?JenL%Nx}yqQD6?~F2$>sPmbuup7KOy!NoH~=fSoQF;9!1F7-QZ -zdXx5WTKAlg(Vsq5VbMp8HjkZ6AX)S4x>{yr!iP{7YZo|+{5@XNn#>&_X4_{>tJ;wo -zd31HM-?Wid(yofx*W#C+5sViwVpIAXbahQQNSvHHR#?YN`Fd6~mIW%2Pgk%!=3C{! -z5f3QlKT52F`j5LY+R2aSj-KNI2{|ns(Gb$ -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 -z?B2N_NXTM-@kUc!>Ub4qm`TDr_fUK782{^FTI -zC}|h_QtWZ?AiPq3YhRhr;lJ+_1Caf5g!r1lYhji|vx|&B%bKTVN5Dhu#k-znc>Np2 -z?gmX{F)^jdf>P%0BtY+Hm`FmdD5a9-gJ6thRmBddC|WOxddW&^ZZ4T?2H99{)~Rn!_(oY${Rg{au!0)B+eRFB{f%7?fg`s$w_cyS@n3v&dBK?v(-iUhecK=r -zGkyjuKDQg(*}pucrjS}j>nB1(ItSYIyC>7d_PX@)g%(} -zFWi8@3CI{m9(~TUPFz(qlvm>XsYRF-026?9*{Zlmp$Zj6o9PsC|nck&(fT~5xsL*B)FeqI?21PmI;`svFP%3GC3 -zeow4Fc0l@w{NX4MsBJ-4%9&VPU#p;OkUQzXoiNW9zVL3bZSjjzc=JY<9^5DCWxxj) -zg?m4tW2Zl|fdbq`nG@3;>hs&ie1*GOeuR>^(Z{|!;2`QnH%=8f4wksHWb|TB$n1l% -zRctm4134_(W19-t3d$9`(kHk$H)yVh$%$wt>vc{k7=MY=4Po7dU;@fVU^Vejcfh6`UEOEDmFzsEc5AfFQUG=V;xS -zIu!DHlX9h}MTXV{qd2LdFaabc=!?5`>CJx;(j!;HA!f=Ur{+l -z;G}QC#y=bzoH($qoFX`=+4JJ6eFzkTjMI{rEm)DHI+|Zp0MfyG7G(d3DDd`8%$P_w -zK+%u2TPn?DZIB6tV+sT}a;Oe~Q7VYbaHxW}oA#YRZ7h!e{E8|1UW{ZjH%-WN)3oMf -zVU4eu7;Eu(+(yw7pg9`4X#3MKn2L&5(;y0Nln=8c;lo$yeLRHqaqrBqj~f*gh+mrdl(w!iwDI$JLlH -zhtor#&0pnkKg?qpFp-r~( -z;-cLhGblcYfxXJ=0a~&EqRH;K{VK-dZtL%dW}xxeziwFT_T!hTiQr2E8a@?CSw&A$ -z%*^8>I?N@k&J4?m#m><$_l4+_Egt*L!+aSLlmu!vjDk^5+b=-RjY+;VrW>vVE$pbb -z-$RM;(q)c}CCt9Ej_V#|US+=Jcnw4GT8HMI73-X5i2!cQjl%1Fv!eDK%mSP~mt3!y -z18PzdsH`}kjw+z^&9$U-FwcAxt-J@ym#TNWG0Dm-aXU06JKWPT{G2!S27oT{k2GX@ -z`>aNEEFL(o)}myJF-Wf$BJ;pi^87>eh`mM%c+Nh$CqYP@_g7>$&WQ>5Br#?HN%Ht8 -zTYCFAvs2CA-^zp5(5Tsl6@es8>L+T7+Wh(>o<%;VUgMx91kbovIO63>N4D0t-DeFF -zFeWmwy$lRy=I<50e$>l>t?nHV`1;%OKY!$79ab%w@sn9mqUZ`JZ{sgp!YiRJ7iCo -z0z@B7=@%SK@plWdI2c4g{#J`BOz!%+cT>L^g@ncFCRlf11N*5}EaZKZg{0`W1r%e&&zXe)SVg7A3K*5{a -zHVN>j3FDVQ6Zm>nKl?5l>f{a}X;@4nUa4y|f$e_%dDFWIt7q43Cs4}Sx@Ehj!gALo -z=N@(3o13pWWmko!#f?%aR69{3>(+#TLnkxvTGZcG%xX@aSoW|-#qtm=QFF)G)s8_g -zk{Gne&x8TY@;FkFwiE=Em(s*n{^~`Qlo)(i$JTtFb>OFcZ?K>Ay^Pg -zA1lMG*4-Tn{$Sb>g@>57BP~HDZ{u_+}N{?eUr+W*53Di0*M(Y&WAu1~KCi+_$ -z=7CuHrdn=IVe-BPsoWQ5R{%JoqhIIb4ug4p;xOaF1*Gd`|W(3cnR_E-1sPsOkZJ=E207YTT7e -zg|phaY`sr#WT*}oaS?g9H60SS-ObHL-q7P#)hla>_v1`d%7R%Z2`w|6}+TSZW -zdFP%rZY{EycF`iGFW;sts?jr-f*OpTv*HUoVlq8t5BAL#Z4<&AJYZqk7K-=x3vW5! -zt112@&{g})MCc98zFd&Xj&N}77dW~hy*t{xj9tca=|yZ7`ncP)6$Xk$U}D5yHq?U2 -zJ#`%Z`w40(2|rRzD9?bM?QHx;8vW3KFy%uc-wC+tPgiIgT^l+<<)2E5#(TtGsYsx+ -zYkw71fDs=zY&Z}6^TDLL?~IHb$WWE8`j1Vk+b=`zve5w{({F8+vAhaooIEg -z_mvS0*g8pPWUb&Vx~o>HmedAAW_D_>Q&@gW{Jh3g$=?DGO!u{P?T$n3?6ryfL711z -z1niXR`sg76H+ -z(RH7qfj$n+g;?~B&YrD+rGWR+|s5#G-sg=4|VB?o1MX1L^L(E{(0F=>I(Z$fA -z@*NW;79_GPoSjCGZPpT~B1AF@$t4ef;;RE+&6nK1FtA3oa__><{(sYp;>Y*X-7vzK!3F5CyAWdLJAjH~D3xw@j0T?bk@^1jrQM -z|5ZPlM5+~uh;kd5|6=^C6ModUbY(26f90hU5t{b4zo!hsl#V%vgd2l~Y8{wI;LQ~E -z1X91UV(a{ieU;qX?GBv;1A4ZWMUktzwdiA7;^)oose#K>2t93TVXU{ztrGS`vM$9! -zj#Ijg9XM@OA=qKLRT2I?&(=*JTs<~iu~1#{p@i0sYRIo2qvkeWf2nb*(8=`{7eq -zAHC5U3Uu0W;O>WgokAEV20T -zMm;$IuUC%{TLeBcKEmWiM+_hE%2+39Ee`w!w@vQhtbAkq*-xg~*}?oVu&I&k&FA9o -z3LBpAivEcpU8$G$?8QBaY}3s+Y*Y<}duVArZP@!q -zPx^b74z|Nt5k$b>Kwlu>i%@`>;-KO_+nXXZkCEWJHnCYkC=+I+t~v6T4g#8E4YYE; -z!GoSqxv1WeYq&xpdws@!yH+%K_nCc*{ol)mY}(UDaCl|!(iNZuEn2G7xb>3gnC$SJ -zk8=_;iohQa2{0v -zw3crl=E74vJQPK#fB9vxYO=6=L6zv{vuMuB#!D3{Ey5W1-dN;rWeT?YhQ~*?9Pc6A -zt7mD67+;&R^|+WrCD=H~LDC+(ClFM>qF9J?2t@lDH6Z;>yxodn>N62P;Zp~1D*LW= -zXd@0nOIABIUSM;+o74i<4P#+)5kcY=%Sapset!K_?42Tk*Og|qkmx~tm&$nUG2(l> -zwrY`j?)})%y*nSMy`Z|x>xVdi<9vwh|j7>U(u(-25h*&<`)=!gffok~XDuz@K2?MXFGNxo? -zZq*VL;PySp=h7Ba9Ltv$*;`m;Cr_x_@=_T*N{z0KltX0|azb$v=C%b}YkR~~CMp3u -zGyDjwKgXahyFQcdZNTL(dQIh0Sc;|of&&ldB9L_p!?L`I+Qo -zPE|HQIKKZsN9VB}ClEx@4`MOouq5Z4XGhL3T+7cV4>Kl8wREaidv=9D_ -zKHJvjyIt9J7bJDmRfg;#w=n$(h{a0*m6g#RgM`GCK~IQ^$CTben1t)zs_YHHH~-3= -ziO2Qe$)j%W#9a&cxFZN!09d%ODuCU~V_2I{d%|ymReeTSSge0-q;WOY6Y=R6A@b!T -z8z7g3l~}OR3FIQLU$>R~#rX%Im_yx3_0SqSP7y!hGH)qk@277c=Hv4qRx^k7U>zWc8imdHW5b`*^tOKF>M`YK3I-#Sa4=f*5vOnqnb5(`zDOu-t~JD1nxuHaFE{p{%~|_NxNXG!ER{<%LUIU#9O4nCvOXcnQT`o&}Z|*7@rk~rM0GDVNx@-cWUPI}4is^83mn7j&7JY>$Wuae#E(kgN^hLFvTKEc~M&XU&hqtzPQ; -zcQ1{0poHtC4?)H*xRNtbb_bYYn)((r5b+U?nR@~7uIc)1A<%dF@qC!#++a_$MBGN( -zkh#h=4;n%x=bla5&^5~3!>)z#y;P0wdfokq8%{d7?vs?;vf36b{&N~rlA@}Qt -z?b>ID -z$HP8oScIt8BkKm9n4pz0wqI@mX@;&aeSQ&kpk{0Hv-S`Q#Vu>&Tr?f?gPM%s+rHVi -zHU^ZYtlF!1+F$#)Ic&N*@uZ -z?y-Or8cdabcN^sJ5_NyKmdLpSEWDvRW(o?H02A-rGpwDjh)g&ik<`}!a_E^TEapj_ -z9eS=DQ8J>5t}*utj4JSNvQP@G624JHWx5##nwPk1+LrhP3_adJkbG@;t1!5@(14AH -z3TU|9Npi>hNLXZ97F^>}h9lk=j;I|hSvf&BaQI0Jyf&pu^>#Aeb -z-^UhNov);3ykT|pJS0w?+l)1me{8j2a*@9nt#?!*fFPwHZ7@V!q3Hl>+s`g!iZH_6t+k+BgjCuRrTw-SvaLADIG@6 -zVM4yS4%D)?nW~sNd5;u$!~1}GL+Qo(;zrlH?hkaTCay|54zE14h9eV9-$Usy^6np) -zLlhILWEE2+(W$Izp|(1#r)Kd$-|kMe#VQ2D(SPe(#-9JNwDgO4@nP -zjzYO<_wZ;;F~Kr61&VQv@J|xpUjwB}yX8*?CWl7- -zop(AxRBXMtKJi$S}wAKo0Yq%6uVC~Edl7XlE+PyJ{vE&@u;tkO7JEh) -zx6*~~@ONL5RzB*C8QdT-q#8lr2@T^N&JLRRCD+q)63qc;;Q+|t#|gHbct%sc?s~Y* -z;WRB@f$$tV7Sjv8JJaa(N}V(UMFdn>Hom!-==F2wBxP1Pv$3sSE7Z)%=_p4mf>#nQ -z@<`iiMx-QT(Q}fYxbN`MzqK<+3G)S8I2O`!2FD4JA!dmfv*2TJrLJ$9 -z&!dh)&FnjRvugk>VlbNUw#~MzJ}h4`n)EbaU>mn{|CEriP8~(W_#ze3A<4T|coV?# -zIN*o!5WST>Lt+;GD{$xg;`xBW398_jJpHg>R7%0WroMLUbOC$wD%@+ -zF>+u|?C?7D+NE4y#cxvAv4V-9X)_he_7p4vJB8#OFwSwq*@h9WelTC-jh5zJ+RM}w -z;sXvDvO1D(SgF^zT!!+C^^Eiel=-&g4WTGO)Wx>ymV+rLT3_{4FN2F -zBz=S>U6VmCu$$5Pwlaz=;z9ivDmIasDc~heyxrhBxlw5oA^lUT9toL0)<)fy5~gJv -z?#IYpOPU2`59pas*h^0U)1Gs{<*AjB-1BY(e$L_OyJ2$bY@qlsivn;+sA#G!y6iy3 -ze)qJ7EKhyh*-lRl;-1u=T>{8D$qcmfP7FJ{NZShQR|zN7UhFV~xxW;w(R;X3nv -zYJQaVhpJu`(s1>K-wF>;E!Mw7=1cqT)ZqIPO><}IU?G``@-*PRW_pn?OcracWgQS; -z+`*{eiNT7Y#;LRHMfQka2&RX8EzJv+K_;3PF-gmO+PooNm}0)tNbCual?d8@*@*^2 -zr6lcD2A8cP-$X4u7uKeSfhM1tqL-lzZ?z*22|E+!?DA>G=jzyDOiPl|Y2co8R6(Tc -z*2H7a>#y(mwV?TH<(Y#4QxLnomEYTkpC-~vMvn-)u`2W`fwL*W -z%a9Cu?mRd=KY9Eeq2PjT0)@bo6xjGPHmjLm9_ztK7b|}LNnmcGEmw63sA+?Ct#C5y -z)XI5BiThQ`L-p#qTcMOIEytWY_fpO87u3989nhfEo_oxFfQhBUZ7RQQ;(up+GBfk* -zQ*riw!#v>6N*VMmC?_s9`z#@zrTT+;qK9H)R)dUB<#LT>(%$JvsWQzn2>eo)5O -zA&(1opPVm(3*l5R&e){uKb|k#hV9+kiLFVq(>aPf5}d*kXx9w;W6v#e!|Re~(jDE5 -zeZYcvM4J0L*%z2Y_E%) -z)yE%7IfKk!X7X8qpBgV2Iv!^mH}RF49r4)RkhmY`%i?u(eT3B~#U8$bCNN~=4?W(LQ}F~Rb4Tc(4G$BNXA~vF$wY>o7sv~^9=k_A -zI!h_iRVzPPG4Ux=aYj`gK-GmBD@AcMvM|6CG7opeDW6+b#!tenYS&+)!+uy(9L;X| -z-jKLac7kuT$y%?Veo_^4ue>#?vzJ|8c)YAyCu77g?s1*`6R;AH2{{Clc#`3Ms17K2 -ztZWrBJ5mXD=DiI* -z_;3ZQ^rG6X9EH7Ra781RcAmvILJQLmT;rqOEk3TokAK#z;aQu$a@rJ_rXGHb6FJF| -zFst~%>elJV#~wmT8RamgTn(>z4;p5fdqLrQeVP*xqK%Dwe004+a1t$`0?G>HC);RY -zAQt&WWqpizNJl_e+8HN%ZCASuFVXG6m^B??6Oa2#ccqGqMBav|7Vb@*2Mp!&W=wlYtk -z2$PxoJxx67Ur?<*=ii)rgA@`tR>PwntA@s$YDN>M=_;>P>Q*z&>X6Uz69kT^<6=Xz{z^-Bf -z=^$u2gdP0-b>>)(ssunb&x0Z&0um&G(z@8-U;az2GO_5!yne(b*MHSIvXR39mKx87jDke|7)hw+(aqWymnBg6Q_HHE$v?#N&>az7^=0?$JADTg -zp3c2U7;6P>S6Sp4%O3^i8g|J)lZGxOf6beA_;ML#F;RVW*Jni4&7vmfLce -z1I7ef_c3$8vG@9{Jwn4bRZ#1gXi4MLynZV8{KncVf8Xj3ncqSC{Ad3-jFdKWi{(>H -z`mzwb@|7$Eq-rT{cb}s%B7M@Yn~zW&|gf!g}!DGSnSIZ_;Go -zWkH~-t23%!dY^FF4GyX37?O|qW$(!&MZ;Z~ABMrvUxPB+WSvC*I!TwwIfwot@lBU^ -zR_Vo-EMm8WfD-T%<#4Z}a+H#D`Qn|#; -zu3mp+gGCD@rsTUx0QnFfALPDoIrl4r@m!KLgfJ9Um=Z8P(6O6?Z;9pZVKuDNFnMtr -zanyT?9m;sb3o)!=nE;vaz<@Wpy@)bBQa*2K?1O8c2x(IfjhCyP?}m(remwO%-k!pQ -z+PvSjDxmC>pb)ONKEGWndp{P4Wu}pQuN}5TT%fr%;jq7kpz4E;3^F -z;QU+fl=dluWvwYS}tD%;s9+!>YKV;U*uj8 -z(59wPJ-yzc1xRpKUiV^r$$UtW9jIh4(W|wRg8ehOI@yLFoXCej*o<}i8L&jD&$@@Z -z;__dZPeIK>-$sCbM11u2?xz&`7_GRkSP5H~TZ`;`gBF{ayK2}WWe2f4b1;KOtF*DC -zbHP}@iC+7?u}ArO?xdYwet|^zmJ0CEp(=BD5i?l~Jgz&HGWVyAR=)H`=u8YtFHE1p -z)B+6&cUm#ZLhnc&bf(Ms)gx97X}pdR##(V1=lcB)sK&;OY|lm0K5L^V<$c~xt#`|S -zzC>DRHsQLZTS6Sg58^N7gHL|i`gSCnb6UQ=f}mB0NaOb0VJuSqA{Z{}BeO5-?1wmQ -zRuq$9tZ<9536hU@-aJBQfef;|`8C6b3z5Dx?N3_MXV1V+*Cc3%A)9MXd_Pc$xE*05 -zPIE|cgeG6#Y$)_nKPu`K2qN%*RT9HwdQY;I$YZrbR~dc47>_@p8+KX%%|gbJ&C8V`nrn?e~ts|e!pL1 -z{CMP!^F{)mo;Kv0)Rr+aGiv+{ixP6Sb`eOy1(IAVSge2KDh%t4Zg=4GA+f!vy6x|m -z9*|dGU4Nc1PFZYIZE(^}RPUiaj3Lgx&W6azDlD}M8fQjFivby5(B|K?;t0mFGBmOn -zJeO?*n|Fw`W7VOawH43hqfv{uMNLpG( -zGZ5PfqnPpMxI!0Q0<(H}pv&LQ;S0mxq84VgQ;qrjP}EKM^d0$&SZ;JpO(P{OqGk_L -z4EUqr^ZqTeb!@B9OORa?Ue@>}@r{VhwC+7K1K*&`zW!eV!M@ULnF`b-r#h9d^);fo -zRI6UUoMJYEi=7nBVMiW0Q&O|Pdn^*hb+HOp`%>(W)EO7XhA@x9U#mWR5EI7GF0W$y -zVkc{S&Vdzk9T(ME^ew!J+2MU%_PLDY| -zAvt2$K7E116{(DX1OypY2NdE43cBa&=cPpHvAK%?vfOld#4`j`TpHOqE8(e^9(_q~X49~$yjQvI7D>MY^#}5^Le(dTSQVWA0g3c5? -zlCUM~R+rE+`c93XJc2O?(Ii)Tzf3uADiwg=xX!D8P}$t4G=805T#eGIv#fv~6oKk8Tj1vp}PT-g@{uh2KM^e59pgcuiVPeqhL+^0@@H4;(uViVHJ~g26mx#3g -zk2FIAZ}j(zau9+ -z>F9Ij`wr;Q)tg+5l?64Mx)O6lk>*VqA15Y(9tBYTZIBKM5%eKiPG!VmUMy|vs$KcX85yax7u^iQ49xmWtGK6a3 -ztA5*YhpBRnWM&S~Z6gA0GoW8*YLRxu+o{Z(H4mSPwb}HbK6hEX21>v}`dFOwEfrE> -zO`Ipo>fv6iB-h&PI;u&D)nRsvjCHLgwlLyLe<4-vK8}3Zfa+*^2hzdin>i0Y>{nF? -zc`M5L6V?PndxEIy`0rWeN{s5b++j&Zi_XOkZp}zY_V=_Y5U4r27^>@ab@TJF7 -z`O^L*TdHd=5+Hh3BVCxVs$Vw;di;Y3*0=ejZ)Yw~D$`!+8?aJjRxy`kDs77?Tx5ub -zlp7}oDC~Bm;#x*V3OIvE6rAqC81skLWL;={C!dPpSMw|zBMJPyQuHz1sm0fbVgMem -zHj=l!COyBYXE|33c`gbDUkedmjU)}N78VlOxkzvBo)l;;su43jwP=G=5p8lqaeUdk -z<))nKEvMno`<%{3{C4^^!Q{&Y)V0ne7MltBD`a4N@Zck8uPZlig_Q`O5V2yQDIEIu -zA$jD+9;3sw!!<9&XX8QZBcV&Qg`9RSr}bkXPn>#BH&u8!e_Q{(2hZ_BlubjkT-WV< -zvviIbHPQh*%biVPGauE~8^?cwpD)el>? -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 -zFI+QL_|SMMO6sSKdP&u^Fc|wS<4)x+ -ztQvJifa37ty9uZ1^UZR8J`C5<@MsaFYtb<51FEA{aJ9K|?FBpFNK~T%^a}1`b&zzC?#0c*ZT}<4WrI(ztc<3j%V!wQIMpGPj -zb0q|U&~!^74l1XI!q9mQr>fq94gy-HxuxATr0PJ{0P5-^83F;PuJOaP3Mbq)ZLSils`=m=!sP8u#cw2{Vf=^6j -zv**C;H|}gs{EH2l47EzZPx~T3`%p2kmA)~8nEI`N4dX$!*jJx?F*3cZpfm@1sW8rA -z66S)S5o=|`s%^&4@)mE20e(;}OH;{LAa>q#1TU+=w(lvY5cRNy1z6_rPBJA@s$KZ> -zg4vyiok%qLF!{H5(?rFz@C-t -zYE%N<2F57_RoP`I}Ir`Lm -z>%X5zO|qX!4a(7K+=`BBV>SEfS~)4W@`@N0{p=b(W5zY17R@f{;BoKNL51a8qvLD6 -z^0XQBL#XNrNA>#g(6xb2((#h67!?}^cOcjM=E1HQKVsMqnWI)q;wY(T0uF1_uFts{ -zUb8oVwigT@1NVjE87iFjTHPD6L*Q|uE7R~ZYzUw1=osA#BQ+|R7>%~YP1tgV^$S_3 -zo+-t^RQXFP8V8l~-04A6pAI%Oj(h1+`RkJlXzPp~esZ(nQ~I=G*5wGpF)QOXoM7KE -zfu=H>L~2aI -zxHih_#KDJeLI7ovRXtXKk03M69dnYi-Z9!7hyOyl-j46Z;a1I*pw23RW!despu72VRLDOFW*O)^#lmjidyhEh03TSLuR0s4)P~Be^JNU1i7p*?rYGYbo;x^i5T_>{Fg%d5wh_Bf6|? -zu5YTisslWpp=%^quF*)3St6p?2wcV}n -zmR?AgYkw&TPKbK#v_NFv(R@JQ^!G4=$xfk+$q%|!K2Q#J4Q`HiIjSifX>kpT!7{x( -zu|d(<8TM|!`SB(u>;Hz+di4q0(bhSzUu{h0n-AQ8Md#WAG)~W&TomBp^it10Q?0=; -zLx*x;P+2nZd`Y-#C;*4?Y&Y@Qlc8MqwB`Hys@KdLT+{#Hl>!_4caZzJrz3Mr(Ah;O -z_E9t>r!GbfH0=Q$3dVh86JJX`(F+F-HX38fGYl?;{wLH;2N -zs;jIXJvA_p*ywtcD_m*}fHmX?Qy(S6Jw6#r3Ikyae;19Q^DgiGEBmZJ|1%d9M=Gbt -zU|fDnqm3p4c1HZzDQ)TcUH7gRu!&tPW(n27!M}MV|zKq338o#f#hk? -zC@VRl&Rq+Hf~=O+chvj6#`7p(0Z$_~E_Jw*#XX}q(_3`}Q@bqj+-p77%LUA$_2}Cl -z3SF6O+3aG|Ow0?w6~)gZtN$i+5JldMGBAX0R&(h!2W~cN*IchHI*3uo2@1XIg3y*5fJ-wOdGUD+!yr%$rE04 -zCwD)#DpH79nDtLD|1`Fk1+Zm&>}aQN+7p3{9@Pr7?3Kuj#RF8;F=rUdB$2q3*{EmI -zQ+6=P8k#q7(SwjZLXOD?Hi`NH`$Je$b($CpVpV2H#VFgAZ3G!OiZ4UKg=B^f(v4u! -zSa)$uD47Ko(FJ-2v4sqKRou~DI8g&pwl8EJ$<{~{|1hw347G(ma_$O858ZgHm`1|7 -zV8Wzpan5S&jo!QUxjlgCk0}-Ka#JS&L!bg@dxK1=Q|s70*y8V+B|R{8=}^%%G-&pg -z(6*u7P-Ef{DDx(1VpD-O0w72!2}Wk(NzVc}%k^?~Ngq -zz;o``puq!!K9l=%^n%&65mi}I`7Tk)y>`H|gueg#aw~G#=fmi=40wi|OzOK_RJ`CG -z!rgO>2lX}JB}V@&ny;15MM9sR>+}xQDC|O3QG7yD+4zLv(HArrwXKM?`uI=_a|S&Y -zjZ$mj6G}6ZXMqQBEpcUa&>_wDG1yFXoMUl} -zzI1~CU$dABB%iELDV+p97D7SZ7*^FVSkjh!fH(fmJ>*y6ZXx=9VYM$Qgui!br#we^ -zZeiVBF57QS1WivuiuZXoyzcf89xx)}D^?5E;(`H>|0$!6DcglHX@Q5mcD$tZW(#+^ -z&-m@5YA&Lm|BYaz7oyD1TAdm|`2oJfxy+1gc!`8*>w%YS=0Ktg2Z>DOu*ZEbOoYP` -z%*}zeKB4)Uo<5b8?gl-#CIIFq_Yf}S0uf7@lRj-E%ePyb&L$~8RFiNEXBmRq^x)I8 -zhGuY=xleSS(h%w!u{E~=OjsE>P_CxCS}eoAUs5+;tzwyHPPZPZJ@WiXuDLtE)GPr1 -zfs(!H??n5mw~$P0PiU~22G{WXn$-O=9wj0im3-#`gz8fVs_Tb3Tmn+2pR=m^S-B`I -z_9wAPifFsfQJHA2D`Yrj(uMX-l<{ZdU`rEea7gu*?JGngS%+zV1ZBZyEwhy1$=20r -z!Sjo*Hp(bEMj01V8q)V75$8M6Cw$x0kKb+2I9dWZr8T#2lIWbl8q}kcBdYx}N_S1L -zgTK2L4HD5@#W41V?3L1ehfV-(w}+?9hxWXCm-L-3VG+J+mw)hd{pXaZy2*C -zCgcyd5fGs?Ng3g9v8Pe2sFP2*TL$Mp_n1FbY)mtbu$yU{X*0cg7RZ^Mn$I;w5Mt&~ -zA9454=~g?V5HNl$tq6pt2I;zINVV%AxG!L+=f>L50??e;%j(!hN#nls_27m%<&FAS -zzoFOG6X`y%G5aQa^`?}W(lLzITwHr@VTvdMT*p_2FYv<6J1@~FRKyhAYb`OuOnYXR8*}s -zvyU|gUP<46+KMN&JAP?{E2?4G* -zs~-a0Q39q$9H8HXSsteY)JCtxH4~vJCfHNJ%^0TG -z(=JC>1tqnX6^k}dY;m;4M9pUv1(B6p5C~)tSxeuDLeNqaI*>gu^_pd6K{Ayrap)J- -zJ1$7=K3tGH7xQBi7M~Mwab`R$xly6y1BXgnCl+Jp>Hskcjr2x4;cKwzf!&T-Bc5MP -z8rsl@C2_l!e4Mn<;fc>ku+^Aa%Lq<80vxi?rY_%wPr)=p%Xz{~;+IC3ezoh9< -z+bSgOWkZm^sFEEwqz%w`9c3z==DEQD5C*r&Trw$!l{?(4s7cCa476Zy8Vtn!Osme3 -z_P|T*W4Cu6JEg58H{?`h@X?YGhN^2eE&!`?ix&@AkRj2Ch`eSC+35isZ!xom>uI0G -z8aW9*s=j?X117^|m#Z9(U51Li*wrmX-$JWKoZaI0PAx6qVeH51Jnji+Ug* -zr#VG>n$UJH`Y+DH20ed%=U3^^J%VmDPmkc1;%NDyWf^Z{evR8tfr_#d_f`yhc>XfT -z=j&F!_FDDwwsG>sRjUgXk<;{>bGJ_#edL7BlXTmbmMr3=ThSG`CL=cx$6g>%*4!~} -zM&`Ab)-vPF1$B{2(<0LDnBLfhfWFrbRe -zWA&%ui#2o4Ww67|Jm5fp$fcOl2})%l2IbxRFY?&WSmAw>Ti3L!&JUdIPJKCNe5X*p -z)L!$bDL%Ly3vA1_Az69s`5;>58g?NlU0Tr;*jbJ<;I}RY?!A64m(9SIeXH*){=wIN -zZVL45Te>*ALTsVr>Zn<8Nb}=Oxdw1ZCAJSv_J^58#MfGyuUG(iiFM!EbI1TK7Vw6B -zGWuk1AFt(cX)KKc4{y_qulrpHzf;&)`3B7@RpzJuqY~{qkcy4gVNA4$imtKG+%s)G -zXk;XP9eh*22(g;!Nr#W+$ukJ@7~T2V -zgj|(y_L{IYRl`5Eg?eQGh+*(@vaV5C0qsXRaVz%Ua#p^LHrWAOy8|-mmC>Euw`Tlq -zBhPU(A~U$+YQ3*ZX0Ev~1AxP=gPFC9lZiee066ss1K;%}I@SAHt}R|X -zYp&PN?f9k*P{}~=i~yid<^+%^-cRdGg>)$!)yfJuB>A`sTNIe_dHCD$ -zqyKs^z4NJ!+SCn)UWWMH$5J%TTB!G3v+^~o{D80N0s3MQoHVgF9Okmq>RuGngIjFO -z94yUkV_I+Dt6?h*4JyNzv`fsdbge;qD(Q)otY4SKCc?HemvXIBpCjtDB?r@p)L!s` -zAx-TN>^jkeoV&RK&yyZ{74^ -z@2kQefq~{6oEAwngE5|vOl9Q&HQEp8ejYsnb-Ke{qXaMeaf(Rlc>#S&(y^~QgVQwo -z<~Q$r*jwkMP`jXRd&l-=2ug)XZ5An^M#XCLVuJErHrjEdpL^MQo0EWxsKl2ffR+J; -zCfRs1oO3qroAFx!uz)ZR|FP>Ydjfg2UJNouX}I -zt(X`Ivk{27#(8cBzlF(r)gMF1m*2JZbe@f8s}|g){geg6oz>B2*h`u;r5|Qlj0JOz(pY^|`5z&4QKtwn^lKv6us_-St9yF?o2=M=JQM1YiWw~C-L^+sVX%3uUE&;I|sE5`7xg`x)XX-iy){7c#31!G<4qi -z1^VS8wAtS5J#JUh577r68ryqqZNF4C2rmnw;tx;I7wdYk)@bn>RPh1vN`6-pOn|Q$ -z90R&D#SaKNKZrwX-g_mJoeesS!V&LloM(G%>{e~bOG^wDKnjV^$`J~nPFXvmwy*s7 -zhPV-v=cSUta9}DP#^_9;REHhW0!XQ03@@%C~JX4sy*G;*w3!O)kSYpY}a2-nbo!qD<_oS2zyx?_#LNV3d{tTXyN -zsg}H91dzbtnaXAhe2>IAXY(*+nC0prvLa-H0j@YD-KxBYX!cVr4@riUs}O{yvhCNJ -zEaG6b=43JM)sOf&>{WIc2;Zvb!Irj(^9z5yV}!ETA-)?Djr|8MnLreJ*>QoLPPQLd -z036(X0v9%w`(yzJR#oT7LK24Hw9dYI_i>f1c3IjFX+8Mvb!UXLod~8IgTJkaM0Y-* -zWYg1;5y3d(CS@n8DxAc7b1(dq>h{U1F_0SbliKhHwc2@%C{+9g^rC-VhXEZzeuLSk -z?84RCtyP0qzT18w@Xe(UmO96vde&M)j(3An$S~NH7wQc!#TtP?- -zlAIzZRFtuBEZ60AMQ}Foxf;;hClv??r!URS$d`Nk#Aq3E`>v4_$k3qYDX>$!@oe>WL8svj0FiGO{r;Ol>~15U=ZzI5^Db#rRXqTX -zepd|7#c`TO-a``){c%P&bFa^EN~>5A7B~r#E*la`qUR7>8bX0p1 -zy8=#yef{p&teh2&3*#-QnXu)MQG}s -zOta;a#~Ev=pu{xoHJ5q(GXRy(hb$iwMpl;ub@#0RvkYKvwQ(RusdYk&?XLkv997!m -z(tTaD{B3N&e|DjAHb1n<;r?#Ffj}i9XKl3XvLHp~DqzIY_rwvNr??J>;Uc#S0IHg? -zMi3w7g}V04M__5G;~@x3my$cL1XWL7qzdGxCc+?KM{{ziR8fa7L&k@Eti2>n4OBnU -z0@zRFcj%Ko$@eml6sozJn;*A)~s|OIE>& -z!&^@#VO->hMj=uIn~6O}U12&#b$C8(?@K=YFNk<92##8EY0GUoAj -zp(TAaC~_aro?Ei$eN*TQWB1=BiL-0TI6W2tdVbpsT0*o?_~(fLE;^rzi(5^PG1>o0hE&- -z?6fH{wq{o)IPu+1%aTrASNVx0>xM{wEA4JDlwmzg%X0WV+(q0Pv@d5IWsUQK8O4Fl^3WHAT27s4j0X3Z&`htGw -zuPXuR*gr0PCP}C0<9LV#4ac3idCYN-Zs6TU0c}Q`4ziN$->&Oh8Mi;`nyGqKb03uY -zEzvK8d@>x_p?_A(9k%%V;>Nq?oMXcD-}#D0RxJQswA?FN>K>vV49QmC1DO%myE>uN -z+>Z8)kw%l1x>ik=vnIps5>Jc>7EkP25(`#n2KT28Td^4B=9qggk1t*`xn`0yu%yDs~)=?@}c -zMbgdm*-j#x-tbfChs!n)x_6mh)GmA>ds^!U#ee9{Z}vgSNu_1kQkwGXDzF3W)=%Rl -zcW4jl90D`W`8iT4pB9v9DIUhDovHA#sis=Db{40+ewGR%EQz)9v1LNH?A2&eYn}W$ -zOhj_g8m5S7&qz6qniaQe!64w07SHndT*hiC=F8RhE(Ruo`eOlo@}um_Jjep+_=8D(M>Z -zq4eLmH=8a3=}8b@2(4L|Zkj8n7Lez`fgKaO$b&rF(CZDKALhuiRBX=*=s+NVENl-1 -z)zIU|i=yOJN)Y=bze3nqI8p1L8`ItR?6H04&+KYb>B>4yel6@5VZ(!joH%~0_y?lb -zDV*Ou%s9HsO0_!dE~Sneduvb=e^LD%i6j*gNBAhUJvg_C(A^b|B=9Lik(P!;CN=jg -zXwSNSI9U4Da>F@iGn79W#=E=^Q3MS|;|n&&)}=fZSr%SlS*sA9eH86$co&H?F@Otz -zD!R&*uE^Mm32>TpvO&!(`~^A%3$iwpn?B}#nKx`{B`5<1T5v2ZX!3=Z#xcy{9DnR5 -zF+*}gQP^|Vi67{C9++~fLyj2PE^_K#(Mjm-9VIQrhRA+6MK^{eXVlV+Q{Ab0!<0$= -z`7SCS&5u6~E9uq9qTW|$ydB3w*8B_a8s&TsW=`vU -z1#y{Upyx~xkp})RYmIf2>7|Wsh9e*x@m@JEk-GeFqhAW;;=F8Q(S+)CiSoeNLdY5& -z3`#H9zlN4PzMZJ7p|XD43=40?^f(h>`Oytd%wO&)VC6?hci(rbo7Cu?()Hw(7U8x -zh%Xo!k-WcMTw&_zTBpT0-rpn?nKJMFL#gr~ -zu|w@@G1PZV7cuPDbG^BX1*WZR;9!MS=q%Sin(Ws&ErVEyzH4>JMe!u?(0}!Bqvw3i -zDFICG#_Sa_FP-nI_7*v6Bw-zRhHl -zdPLGE*BE67`2h?UHK3VGx8_t0?t&$A=`)~_(_!1o4+w?A3u(Qi;%;p&63-6ni{+l< -z1JO{`QYj$AhAo?1Lope#1aaz*GBC^;y?9`EBeoB(VT7;cYW&|X>>lOPcIX|Q*ca`Q -z%PNkEldk65uH2k8E_gK{hP}(0c#>%z+&E=9EmB~~*m+vbNb1WPtGq*z1N4ehX}B08 -z8T)lm+I|17Bs{o~2`SyEz&-iBg3DyT*F%i#TohZth*S{7>v?kgF^Gv>V0^oupaY&} -zFMh#XKUn##wb|c)JQoV-R}Q*Waql_0E&P4!uQIiE$iWjC&Dg^W2fnLS%2E3BtF~Vz -z;&DuRW}8sFPJ3URRXJlfTb{K=K3h)MjDQh^R?LRnv3~ji5x1BXdT2#(%S0a(zqCGoM$PE{iKr}Rfu4Jc|cJ*E1IBe&oJk~1g1 -zzfko@vsjq2G5NKVy>jBTySsdIB>D2>+5hS{9$w}JsmPb8Uki{f)Vci0^29uL`jCon -zBQuscHK&9&7AAnd=JI!npH)cKPR?e_+?g{cFtH3=h0@ut8YEq9pK+OP8x{}HNZ`{B -z_z_6-$FUoH)@6fyBDi*K#xWOuB25;PEm`tngC{$gfvVn$Xf#=OEO(>;z7N{PmzrL% -zm*wKoJ(ID70joUOt-_H*&%{%nKIf-KAs6ZuXF!6<4L~ju*zFZxaeQte0Q4L_i3Q~7 -z{HsCjY^kRZ<$_@HC=+^Y)22Y#mZ~?WFCf$Uq`#u%cAtvv_>yJ -zZ#7u_c~_MXZDh3~SWvTCPuSaWkiL7%3_^pc>>Jmd9(F=>aVOx_nt2n>)x}ieoAqS&;E2<`+16ULbeqroZ7x9IwE8E-PRtgnMT06TV{JQ0Q-wSb_xB>bK -zp8nKbVnkbI8KC}?oblK+>wfUCsiXCnmS8~9-|?Aop(n*%IS}T<;yu+;w?DZPBao72 -zf4z7QcqHfUkLHnNf*UAXr|b@@SHtBHu4(9e;?od?U!4kol3!3EzXQqqk>TJ#G}A?1 -z&CQZ0>JW@XPsa&G`$J);9Z~U{N7MFqXqsp|X`r4T#aM(_V0gM9tj;`~VtDv(R9+O= -zl7BZC3%rl#i~{N{Za+w%=^4VaPg|7g3WX5UU`D&&;XXGheA|cgQz}oM1?j -zv-nOVYAf*WlzlzurHSwEw%lvsoee<-eLn67eVH$UIHq?{(mGp&Y;Tl8`-zf2> -zyALL^z->pZJ`P(p2LTrsEG&oi1dH}jkZz^|5mGpg@NNHoLmdah&q3&g -zVLh$7lCo?uqM(o{&y&=)*?2u3pkGf4l;TYC+|6dC-wXMwoo9MDj03@wrL0;1vPQk{ -z55lmCk$ps}1ED&YRmPu$fZkvD^<%Oylbv*M}dRJH!ln;pUM5jnE5 -zXhotwo?ZV{x=+MlqfJ&RrFD`OX86O4?{dhGPByNCxuzi_Qq@1-7GyvnLCsLFUpC}7 -zRMP^HxrZ9BuTRHAC^J-+oRf2wQsRMvi5=$F%H)MEjiFI|q7usD;p;@fZudr)P?+Tc -z$5-=)=BngLb?bt}mCyD$_%iASwFV3^DR3K7ah_nWTiBapsm+h^4x<1vxs+}{#Z`HH -z0E}pdjRf}l!w@S^{mSdDl{0I+4Cju5`D9p#`s)W>|^;on{Y9uMS>f47N1561%rXClO->U{a>L|~KmUx%H?FJ>qe+xh5&3zUp1 -zAjV{v!?v82`5w6W$!$?Vq`ZT{w3bipoRJY~1tg?K&^GNcdL!g2$Xy&_+GKXJ@TLVi -zb^d%t)#ZbuZPE4#HTAMLD%V0Wl}$g2jcl#T_>hBMNG)E^2^$a`3>J_BPRNjAaCzws -z|B*g0&+uq7{o%J?oFue$&C~Z -z-W!!}q+^U3;e}-C96`~0V5S7DV8k3L4xzM5qix6AmwjLP*p;8`m}?& -zj$@$k*#3)hy05Bo^)F9iX;Z|h-~DS*$Wo@>Ua#$i5b-B`*6$Urr=@I40e|IXKQ?q_ -z;ZU1r<<+752(+9`0UstN0`Qjr)q|)-PG2|>)hmz2?4L`qpoS*7Q0)7y_-sO_(*U86 -zy#;-Wv$dra(}UmA>yVmm1q(&-1!l;rQ8<*d;TBd&Y@K3u@U#zFrsEE;HC}btxh+*s -zjs6C*u~9}mMT?B={H5$ev5hI+r-nBUuvva{`I#=vbv7C?NJ*CAk8b~JSL|o%QCN6j -zA4;^Mn%-dM2iL!nGc75V^?Qdp@m;C7!`W--nBhZ)J72H3^<+mga*b_%cxf0aO_=8> -zXg|H_Iu@Zl81dHBd7+Ja#lpDGeq0Rc;Gu@aq41mdU|oB``U6(wn1`7Z74g$ldVia9#`snV6ocJ|A0R=l*+z6u -zv&{AAq;0DOv8p3PYe7ZDN^zpz@o+@FPOQFT{Q_VSxbO6YKaPW#Wv!1T7|mgpf$Q14 -z`z#03PT}_Zd8qniBaS>xeB6kg+5I{RsCg_V09z&%=Eh%q1(c8BAjO~_GQtcj{jS1) -z$QaL0B|A#2GfFi_D8r?)?M$65M|L@n2PDPpSbxTkU^c623w@fIhd#mJ+fAf%(ma}W -zlBhnrIGGdVpu*6uUyRYMj43W9$oZ^1&pYfeO18|12j%6Vy;x^CZ2aUXPZ&SEK@vDV -zm!>e8UO>?jH=(*P+3%M@I2%#7OuWi#AyZPfx(f@`hH*n`y@jg;popu@7u3K;IZe%? -z_On!KMNt{zV(SjAU5*8L6$JGi`RF94G0?nWaq**$gNUc#d!bk_=7+=oei?N7nO`HJ -zZ=}TIUfktK)c#}n7M-`7WLbPlkLgT_1Cz%)pC8WZZ~T?5PkcYR@f#Y>0b6;GTi#v>TfU!QJj`Sa@7&tqL=(-EW2r` -z@dua+ghqFEF~wR=j~i5tWQ|A^{yomm*VZ0oPW)oyZf#zmejQ1_vyzU|oB7Ct_)_^76G7)85`DKA5MuqR|8Cqt+T -z?UCRB7Jg~bkmtp7My*l5c^?N`HGZ%M7M|j~{+BB(Sy<<5H=-B|k)mQ}MOE -z!=-+(2zonLBDRulHxwNd|Q(290QusUJtv7~}8&;Flxfl)^ -z$hsNvBf?0+6VXqjF}9}3uP4o9>ZZCdb`?)ynRy467i3UrxaHkNyinHH9bdjLV*1K- -zOH5EluK+th#J@idw7^%&<_!oU`4^4+@)xd@ZMBA_=oHFilD?8i!wrhTLkFz~B2v9r -z*}tDVoB(WRd-?ZZNfADykY*)^*Qtcy!6Nucl12&kZrQ2ckHHL;fHNp`c%VXnO$Qt> -z>oR?hlK^|Bk&|y@$G_DU6syD$3nMX7nJr#v-F!dQnDVy$jWnc*moJJJi{E#wG1;;h -zOlzk3B%=`R+C^Y{5n8(aT}+=ki3}!2lpqbi?XO^b-+Y1`_mavc579Ivo-|usepwgl -z#PkTT)wk-`BO)^zjSy}c?`lS;7^z9}2Klt^;2y^2schh)e=)v5D)AoS*lZm~AWT8I -zFbH1{&dPNA@y-kR&v7oHjf -zsSaXE3-|9t!bI_Zo36505Mw2f14ni%e(7_dB&=6}ZnXtudzLi0GM$h8$rGKje||r< -zp}`sX$>Sg%u$04FTBK!)rI}nFfp8`H5@s#>hET;~56-`!a(_gcq@;bP+ -zQDprb1Jpxz+^4wG@RS%T847;fa@fD8HWW`@ad>6Ki>+tu@3qrZaUgtQ@XZ-~gnI^~ -z89T%H7>caX{X+<`BE2SE;p62PP%Dm=pBz~2|o+P^4+)})Z>3o1B6Y%cz0;0Y9RvDQ1A&o<%APB -zN{&FC2T6ALhpeawIFQ*2Z$qo%F@*cI07k&vJhU2a1uM_5sR`0CQ;&L#Ptw4m{YI=G -zwNv7bB`foO{?(4u|Lq?uCA?AudLfHtq%Znv9`~9B6>sT40@o6=&{(x%ko~ubsECz* -zs&C1)g~uv?bi!DRZp@Def&@_w2;KC1gDCRyjCiB)A<)Wl6=uF4_TXq8j>fl8{qUC! -zdA+Rb(|2wFRj~w{QJCgwJWlyrz$4l7se<^8@xU2=XyxZOFa`;I@D}3vsDigS+ck(u -zzInCaI%TTqxYon(ppp-mL#)8?E)P7rTYeol_EX{QXW%eyi{L86egMN7jf0C99-5@F -z^4BsC64i|Y>Qr^QV(rOp2otnBr}ICq_$jAp6kcA(Mi^mD--8-Y9GNg4<+eg3IYita -zkW+hRIL!co+IFetOt)4?g|#idUl)vJ)LorYlNUp7`K^W^2!-&dEymZeN@#f{#YHG* -zmx6G37kj@8eUj*-via@O`ML&p+hfggOET@}#r6ZYn@2mGN#DD7QLGFk6G{x>!7SV= -zy)Iwf@z4+Kecx3xdNxG`b0(=_jY+7U`x(ca8z{DYz%rNZc@-2Teq&PI^f|3kT+IhA -z11luTF>`&nsohr6moa|!CRe#S65Uv`#Eo3KUtmz+ZyCqZf}oDcBi9U;i{Qh2>m1zy -zER=Ov1Gu-zG)x!O#q95}!XF{<-H@FmK0~5)(dh+O#J3vrxTrxjSg}6Gjk46syV+(^ -zD%0g5)Nhh#@l?dBg?%X=8-b56-C!D0`+i -z`8=WKwtEL~zfqMGX!~l?08LG69DYecIl#@oE(5Fc{ZIMOV9v$gt^sn$=h0@Pb6zV8 -zBO2O?2fe{kZLSsKcJy=o0KvWHJpY@F@Vum>f^3jo$~VjES3{OUG(fqd -zL6~47NL;_p1CqUUccTFXZj|p|r}Cce!2O~c=5P0n}XqOj*!<~xx?u3LcrB_X584i6eV@uJS@ZT?Ni?h> -zR$nOjWh;|vpa?jD-^e@js;O)rkGYBKm?GE(O`O|qrqdzAZ|0+bP -zC7!%sMjPgA-ODe=asVQ#Xnlpg369PbCO+&;(2QJnLhmr<_U -zjn=N#>(}+#t2x0>Hyg6$3sg#Fi^ -z5gOxVZ}@Hs``k%Vaae8f`k`Q^5xz%m -zfs0GU!Pjg|b6Nmd+<$!tKnIIcAn&GaF6>P|`t?+cVDVFbFwe&PZyOh{vA?ONnXzxn -zye*=YP6b8#EGxXWhcCa -z^x&c&UKoQRWFH1X+{13daSX@0s@Qb@{@k-B(SZBIf77A#eL!irr15a<2L+xvUz3wyyOxbPOL)CeoJH3}CxJ@7Whw~z-)KC9kFxOkMSX5RVD -z$*Ps%0-0TvC<#jX>GR}cTwuQHCQlJTGBQF9+yemR=OuH1W(BqGLHSXPuv@ZWJp8yt -zy_&pbTndlrv|*m^$xG|2uiO=kJhZW!{pW0A>VGL -zR|x8dD=Qz3MZF@KA}L~mleYhnGlzgsMHVN -zjjp|FbqKXJ^q4H+=G^jjP`0I8OXCzWx~dA2GvP_E5nSKS;d^*x;<7ibWd+u5yq~p{ -zxR7Qv+kCb`$_LKmSg6297QGwS@5{Ny;4M=oF@rmqKevvGK==(mE?ZR?iGw`_~+K62v3O(Fe}Yp6X5Yq2-vK9G980M+#RSQ{4UD -z0)?`3E+N)Np-9QLN2FJ4dq8TW8QY>Bb*vqqiki%7X!7~ec3>|%nKh0}lh9f&Jo^yg}# -zq&b;Z%?Wgjc4yxgZ;S~SCX%9gwbRuh+1h$diGM~1nJLv`EcruE&!-7XC#gKW>uudd -z8djq?A%SmeHRP{lY7ys3jFJsCJFCY|ql<{Mt}#=)Jg(JJoDM7(bvYB(-hES=(|BR) -zMGE@7O)o9l5^Y-dMipQliBnsnv#HzX#7&|M-vn@S{%}h-AC}%v1USz?=t@UGC%8Lf -z0HrZU(NUgk0@i!BEvpD0v}IS6`&{3BCz?CS<6P`L?4EQIafP=mkX(XNu2CNe-3bP| -zMw+HDf?+tt_;T0BBH(h2&|Wxceg#1{y^KhWvpu?*bxi~Ku@=ArUYcRr$`zZf#UEOb -z-200`T6P2BbKPV)r?!GuR~Yak0r%+JW|oIrC~rt6O*&g9QW*D&#Ur1r_7u=DtUIT# -za7IK_gqkLMO4pi<>w*Guo$xP9HD;;kqNVKKg@t37a(|>JAix^7x^KImY<$Y584{r -z5OCX=UaymJH6MDkizpcuVKZYPwFdLs^V!@44_jzSVn5Fz#bNH6{6*|2;ry)cJrF1z -zZeJvWGQr|5rU4z#a?&j)2*_pP8(4fMH0uYfVr=_KX#&6r8Lbfc*0AXXQW>oNc}t -zOmj)$2bX&r-G>1|<@2UH5THhdIvv7X;kMP&wy!ZF_* -zW1`m;%UHHMuNJhY;s(s&LjT>#>aAJk)mL%h-9vP}bx#39wz?G{iW|C+qQBhi!qvyL0yB -zAUb^j#xNHzUNDHYJt$Fv&50LfWbTmQ9$a{5$wn7MKvVY(%{YuF5$i~~Dfhox26S{Ju>oHC{94=-l$Lck7sg-n -zoIaWRJZE{?>C}-6b{^gS>a7h&iH9f*2}DkOKBo+zCJ70j^CywK@ca-@d;kp_%l&zV -z1$>tMsc4yA!C%NbGRNsmY^?{1uf~p-nBZ|`WTlr^Uue`S;-E4^XKu3fBM`a#S^otr -z17dXfBVf(v7`0)wE0zgWmWGftCGoozHH}*sD#M?+#@9V7DYIVvw#wND -zS)oo!Qe7^Yt!E -z0$LI8(7k$k;%R*-{>@ybw;56oxlp-NcA+cJdP!ts_H$qZwf+lP)Qxry%`qUp)!RSP -zfYXTOL{v74W^*j2g;&SV*TX2fX%iO~9ehbW48cl_1DA@ZkNoLU!mu1z& -zbip~({=}fw{bCLCBp$|j2daH4AUITDsOHkrUkoD%q{=Lzz -zp9QH}!%jZG7J>kc2t4^NJ}^FGgxfbdGc)?)1Ncc{+?Ua1@}Kvv2{xf}XBY<2Y3#R_ -zOje%S&vKCAmL`?asAjin&ux2Is;^bR-~iRxF4$meU4J(tm+Cvel#=s#iJ?*~yoj4& -z>cR2!YMQD?=*Ls)hb^7F&$H5I_|AqLSb;57%QduUBN9>%~Ft%AozeT{6b56H#>cv!nHY$lX8AT51ak7vk;6s}- -zOX)zI#P&B&~XiFE3>kvaK$Q>Z(-0M-ANO$g)aTd4k$~sT*mm&GD1NxD6mmM{GI$ -z2vz_=10$UX@8~X{l8dsRY5(N04xAJM)1Xnr5F^ls%9w948{iJ{KJ`_t$S^b9tGBj7 -z!6?ywO$EkNvfw9|Q7Z*!LMx-z>MH)t`cj44p4qu=LVr0=_(X1;nI5(b8Mu5%PI64> -z>U@qK@?w4K)=lfDOQavF@er^Qb4}>Ns}^9@F6XnFVIaa3^p!HagkbLw{B5QBHz05o -z+eK)Don4eXM8K(#r(|A*@4OOfRA{*%bUrJq|s -z%=-1iNk5>79%go0+%qEmAP^eHETM;z^<+KBJ(UrU<{ff>d2HhxE=*(l`?4P#*3f6u -z+jtgF_svJy00< -zTGNN%XPRopUqRnOU7n}lEqq0jmgE=eCFOxkH3RJDoZjlHW}NF!5EI(rqnsAd)gaZ$ -z6Ikh$=f#FMBXx%93&n^!@JraXn3%CK{Ux@cSz;Z!z_>FU&w~|a#6ZabJn4*1V8RNsNlN%QL|IdnDKi@%5ME+r*s&O9gg^a18PnT?!ioxAs2$X}#w -zt`%15B;KdpreHxzvNR!~XE@QwEd{F}^eQj)*OtD&OS_BvXF$LYyX06<^cblcPQqBy -zqt1m*VlM+j@p$UMhdsS&QgE4yVcLTrGiFbDu8n*7YJKv7sk -zjd$AhpJ58VT4bw>`6_#rIcg9+)`!v@h!5WG8ioE3S)pUzulf4q2VU$(;b(Cz2sUE$ -z8DfLSTNDb8Wk)X+=F_5k`oC;B$LeGK!0PzPsPt{m1`N6wsE -zmR~y2u%l182wBW|?)c-;9(~fdflF6G)<@`6sF3VvONncOL`q1ToN!y57V27|>1=~@ -z*d4V*^`!LqW7oH~S~2w2I;q3@qj?<(vgw-{Bqs)l!ogXnPmxA);1-n-2y-WVjbTg( -z#%Z?=DDcI&8g-qfuCcU+&ni0@` -zu0|XXc{zdLBMYB|llb3^E5KRxry%sD_-eAcfV7e5kgCDI`3H=c($n+Zpvb}T*$)?n -zu_KKYEE>YJ`TgwSYOJi*#~q;N^eXP1afU=5-*zk_xMMNI@6>`sqYSd{tV+!C5CRVG -zxy4KhK>OfWiwVZ$UJR2IjeY}F5*c7@hbpsgkD<@AOL|cT4uM91NsjgCoS(20@ann2 -zb6Sg%?tQ}J)8#n!wyC$6ZKxho7*hu8D2vBAC%Jd-T0il~xKKaeqwj>S5 -z9z{4ONJlXtaacuHQ2HPU5hbEI#k!t0SdM9kXY3(EzKC=WS!2k@2UQ)~yb&ME0&(0E -zDPnaib!MNt=fwo&k_MEeVt`!YqVszDXts%1npd?xp`xY&4=EFXitkXi7o}6g!;z^X -znW}%nU%_kRnUcdY`tYrCg&Zt`8?8!N`#c|?`Jp?->+lV9Rre-7eUdj5lTM^Jg6$EM -zma-cS4XV#LRdgKRfOS?7xvv|f0QHT=*&^n0?E#TV(z1%C_X&(Z+4mRb*7*5MNI&Z! -zw-m;wqlOi?#9t!A-s@xw^@hhq$IPu6<&g4t_jU+Kvp5Htq*HuAfLdasGfRif;mq>C -zu?}bVxt2dXh`j~%sP7^zvqlyh=8?|0^s5``g%+^pWr`oQODbVGp7TONOwOV<-?+Q| -zoh9HAHNxLS4}dn0P545oGMrq1y;q4ao{-&5M6Hjmx3_R4e2_1%*2e&{rAlBVWd5X~ -z$$7ylE%CrldP7UZ#wM{lf+7h|>+}Z5t?-f=r1fI~dJ`ENHs1kjt%Z|swQBa((zFMACzRSpMMPHS2?erHLTacSK!v3F&!C&r=KRvWr=#mm}+Q8bzKY+c|*Z&1+1 -zV}H4X1m*$_|F4}WX-nijSjK(tO?s|w`u_4d6XCA|&D^JgjiGwEa-V<}UlsH1%TPs8 -zrxQFQ9YO)L!v$Gfq-$1_U{)F+Fw+ -zaYYELPt1V){?^Kx>CV{1PQw9b+SpMJXzs!Iz}Bfgh*|vSD -z3)ZRwUkxd9W>bU#3+~NEr=vTM?;sgM@8*DNF%eK#7nui08b -zzXXqwwN5QGH}=zUPENE6BTC#vq9naGayq8_55>a9GvPhWv;_^fNgQm#eoF>~l`ak^ -zNzfQ0z&+sy-GluIc<6g;_Of0BEj3oSBfkWq?=pU{12fRDowpbJGvc(X+jtTfcbs3D -zgv}R9W#=K^R{l?F+Becf8RWa+)^>J+L{NKQlDpX?^rmBioYF@ynm%2 -zHPMqF=VxSXt@>6Elvg6%7)bTSl>(#GS)|)A)G8f9Ih9F(m#7XQK(XcPY^^`#8MLQV-36aghTUQ%~i`&QCpE=B|0sx56F -zi#68kZk9X_dtFnkllm4Q=H7Z5!M>4J{Vw^*I?tGYNofVvr>PaEk$m7ose`Psx5TNYF9D*~93!Mw%iYtPKe5`!=kQXS=kq9zs+$o%n6wuf -zK&Ryn?mJnrwm#-uo+XUy2LO|y)!K}dub}B1SA5LHpM&|Lb$0N9Yl`hRGJb~j6f2eG -zVd3o9m&v7dN~2A2O6CV%Sxk+34JU%ZJQJdI4XN6_OqazBX3sa^h{QtT4FF -zYvD`!)^||w8hyTvb8%r}Ik4ekEvaJ&khts!w}W>QAsF;H{&s_G3lxt<=ZgIa!*PVr -zTTf~a=SdSEH+QWjLI~}VYnj*txE8RkI*7hJuG;!DrBqFRVG(SE{RAO4s -zcUs+c9>jc4S{?qxEh;wKup3xQgO4sxC9Z-6TO`P7;ZTq5+2X^w+$l1U3OMEO{J~-p -z^}qdI=!f4QN<;jSCfHEUm56CUZi{4r!604}J)}GvskcNp*1;{~tLyYG0m>D4}`9>0vl*b&qg>1#omLtar4hTaOAV;xPk02pn-MN$LVKVoNJ1!AKT -zjFR#zw6-}_AOTGoy|yUliCl+qJ(m`!^9!WD4<;*#j^Usi%*#HVo3yG`2=w&G7OL7C -zN*f;gngb=#62#86U2(wI5Sz&SyaK+At=%KPSP|k}=SEdy(xW@gsHhC_$%sioAH~lnPWvP?0d+=Dl*MmRlq^ -zybIs2&)q#gHwUO#W>XQTq~$>sa9>^^Qj(X`E)O`lp_(6X#fxMSQ5e?5gXa_LqXXYh -zET%q(%6_}Aw=UoTqu>+4n(KUdhPx)w0ar?36=qsR4})Nvf~Lgvjo|Gw*CVHfq4gRb -zRjXGAeAY8J{n53M$=LnOnfm;VGxvJt=hj4VC+8eIg!7(wli|zSKA<=DOyE@fWqSle -zOvk;Twk%1yHgVJEJw-wTlnKV7LrGR+U6&PS#%!d#CyV;HEnnxy-Vs@xqq`aJ(Q<`v -ze?PPUx=7%Q7|oCMgSoI{cM43?S$|Xd9v-_cA7VLWe`!RKBoarf9U!W-k2N8__+^~H -zbia=g74bIO!}!5$TbboOv|bn6QWZ_U!#V=U@uUZZ6pL%e4orbS-*>-AL~iyWymfZd -zzS~A4td*`~b&ZQS7je-Oh%8V3uoif&Fv?^+C;BPnlkCOHE#_ZOrV^jg3`-8Hp4HPaoe*_?%-S3lvgWeHXM{s -zjGY;|!^!9pUhK&K%q;AFN8I=`l508$=yFz4W9RB*FVP85=5M@M3v9D6er(-)+A+3# -zJQC(VI3J&qvqiPodZavV1V_M~Z-Zlw-h{@!^rjB%HjgW7@#l1#riYn%yH=NLP<<5hKQ$ktj8&qbji@#n+lKdOSQuY9QSkX=>&Lw^(8S3<2%+m#YH -zqIyE9h6WDhe)aH}@rIn|CRoeqvz;ImH>fbJ;)r($z=i37vrZ*rrxngIi#_LquT%Wvuewgz!+8u -zjrU1uol!DEH8bnTRMta@*aR8`RzZJgKOCY^f)n6)@LYNcZHb{4PTvVs+E;ok+r%^t -z_hm6zQXIc|ee1e_{mrX1@-}tp7uO^!^2Y~9<>_}w=1NU*&!PN@j%pc)aqtCaFXCo( -zQ=2;;x>AUZ{SK( -zL9xmeE-iCm-S}!_VTvYNX+!?dWfGkJdQMNHX*kC5J46((1oAx};udSt#IWsI1E{GV -z$OR`NV+JX1vm<_CwhT}}ehJFb5u_*a{Ty>dOgxj$*R&4r@k=McO{F4>A>Lxo{mq); -zZuvs?Gj_wK=fh^7vt;xjvcLavK3s}a=8OTMUlMca4#35o`YF<#_f`0Ce(p9Z*J=H2 -zYq(x_zn;`ZXC;?Dj&!uHGzFO)D7zqi(pZ^RprT@SWeX);|48+49Um+0_L+EmlooiN -zuOQq}>H=o9NZ6GJ|HP_v-tn~&0j<|iR-fg4*9yu%gS$07h+bm;a%ffHn;5k@V|nPx -z6e6pY&Li258V5FsZj)~yk}V~&K$dGN(Fc3@lY(TYT@2(ew46v;C2&+%&;>kD@E4A6 -z%6F8bR+VzVn5~MQss6L>8c==fiGm-FZeXJfiab<9XJJy+;~{TEax02oc3W);7fFin -zu56|m-6>l?6>FolmAB{Vul$P^`y{R0EJ_#^HSqF??e-xm-dR|x)Rla#*fOzCl -z;ZnFXP~Ko1J2I2EL7->%{V2_goCU`r*%#O|ufk%W8@3ZSB(CE5Z%Jx7ULb@`X1v0_ -zp<^6Y@&Gek_?hGG&V||fVZn&;$?5LqerB1O5|bz?Kaj%xIh_wT{(lxaNy}HsG>zlw -z=6Do~5pGs)sd|FKkDXYGX;Z!{GfCb6G+-7TMBrR08H#flpFvS+p1wMjE>2o~y%U-B -zMQ9X-(!}h;8vqvu{h|$= -z<_7dop|>F8jJ9u+L16d8i90_~U6_Nrr+PAI5aJURL9x&MxUzv05t8+> -zkf`f@GflxZuDl3%-FVs?4%)7yV*}Es$R?nbKiw}$Pxhq(^vOWf#jii7il7Ax -z=6k$YL%hQ)jaixZUpFd>uLQrpW2#?S2omhIyP|~R6Y)RCfRd1T;E!2>4d45BQ~I!v;e;|!@gAoD7H^kFrlyb?oWZ93>gck{P^zS -z+kW!8ToYv^b(1gY>?jHbpR(NXZNXs!45V}o9YgENZ8``DPN&=q+?s8V3paBjlBAKpGi+IHkFoI7&(LF2Sjkf4c0iwIddm! -z-vp48Fvq~(p;23Xv+JI1^qKqiSY&GC=ccPLvZKY-Q!q_)Ldog)b@Wal%Hdb3RH{au -zTg*c9P?l36eKGBb%Wjd(S4y*+Z6p4pPHrMljoopTDxr?rNMx}7BvDJQC8hJej -z-TGzdaR2JyEeteVoqbP#GEl&wvPXJh2kUnRqB440bDS))6{J$UZ-tY))?52dG8h%Z -zt5lLBqYr~0k}6SK;Ac-xr-8Ah -z?gK8eUK7`rEkU -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 -zf|TXzU5GO_5hw@OI(7@*GcGP=2akV%=% -z7CR#;S&A_JL>f`7c;hGH>4#AzDm38msRa0dx8xS3jF -za@>gbV=t!DKVr3#+VSe7{Uh78LgLK*9zm9-Kv93tDn~CAc*vj_B*yAdL2=~*u+$%m -zBTY3=z%1qlBk+BUpf^pwwB>iPR|DR6$JdjnjTVg#%U+&oecbQr-M*wFEWCV; -zf+o1tfWhwnZ_J`oD~uA6ecCnIj+1{@&;{dz|84?0s)Vb(X);rdC~GM1&vpD=K#zDP -ze@Ev$`Cw9jL%*o~mgiTI+W(DSVT6W%Kn?qd!R6k-CA@Yb4AwJ8d}zAjHdaaMp41O1 -z{qF?>T%!sE=~upV652 -ziNu#fcq0;3+>|Q%2XQCoo4Ty=eldiPNgfW|G?Z6!L*OBM?-eOP2g82wzCCOuvqYjS -z#tvcIsIu-h&Y+Wx`+HSky3zZYcl-V$djz2)J6xAaM07qb`u9Dp&KtLuz5*`bc3Akv -zJ1^e8r~r}n(tNyAUv^> -z*$UkJaxZ_JC;gjcWb#zq5?oZmUW(`=D8Np<)9h6RDwYP61Or_Q)r4wfW2v!x5E;HX -zNExoW>!HSU5AFd&r!K$6<$jRzT&<4#c5X;zQAmgoN@er$TuD;ss?}x98rz8lj4)k$ -zsM=jY%jc-P4CSl~fI{lXrL>6!VfO4XMT@vE5+=aj{>c9PSpCm4$7;Gt9U5EhNtQ~F -zO|mx(WudpEhghV722psv+yb@Y$^bb)#=iy@;bl6&EHD9=Fe)*b<2115V9m-)*(&MR -z_{9;%M|YZ$BJR;^C)qOQ^7l@_DAyZWdLK`?Ye?Qf!>2U}8_1SP-j#FKXMM@blz<&9 -zCE@6NDN)ISaP@lAHjiHF335f)t2WuFC?|0V_`5z_!66c^`TbG_Z^TqPZyAiDC8>EJ -zWgOr;krjG4Y1!Ub9n2_ixL;}(I4jbZoq;V)!pW}pO3=Yt^lcs^q8zg`^j#)IgV^F{ -zi>|5OEXkYzPc*${RzUk~!_PzQ#xG_wTf4_KC-U5RwC<1J8CWq)WYX{Rcg_2n|wGC4Td^J_|za1E8H>EY9ZRO5EZ50YQ_* -z$Lcw>CS&ezO1KP>-YDGUs4>toDslJ(EpqhxY|N-@-(t4dw7Z~;2V-!2Td9gdxWO0h -zlR-FpNs?d<-4rMQdIj7k#ki%hGMfQ`*GjHlki7(gOSuUX!BmOJunP?b1V8ox4ytjyJi>HHIE_IzKguu@KDi;&eLH`s^P&UPQuPvf;U@i>2D*KQ -zqOl$Iq7L^L&$=};4$qauDw(&G*~3{S#S)ff+TEYQT|1VCGaFxzM-4Sk+&%#AC?E_W -zFER-u18b>IKLtp9O8NGCBj%naDBT%mm-?tR?ZiSe9RR$ -zDdwJ4?7%pTg%<%PuA6Cv6);6hnhP=RMpD!hRc`t~Jrku<5AMlI4MT9G=0Xo<5Pm(c -zg86_Siu3DEr9ABA&-weKRl{Hc&otH=G=GG;{W6oriCn6Zll2?aK`CfM_57(>lhI=K -zh20ZvWsU#KG?e6ft}YsyQl#TtomQ -z3`vHyfuElq{%|#eV#o93TJ}l*@5+$%IqYp|SBm{-@BUBF?<@?zwXu>LU6)(v!2J)G -zj8s9g^w<5ejh>|4_GzuZ^br1#U{oCnK5@mSEzXzdj}jc+%m{8yq!TfMk;W3)v0F7AyE6e%h6?aF&(1HJNI= -zf*Or>`2n48hINlG5>Zx63M~weN&jrj$6GVV!W=`VU1Kdc@iTU9=E{>QBYQhSgu_1Y -z%RV|!v~pw&XqmvOk`v5Vx~&EQTF0HAUGP5!Yj!v`;MF!5f!uekw+-T(DE -zDZc%DmM%x`qAPf(_JVJ;lg`?^bHqrv1f`S^&^VB?1&7Pg1U-*&kvqe(P)Um@CDO-|vbbOq|&G!OMP2pFWB -zs9Obk{?%0&CZ2LTwCM@iB`7t@LE41He6|_iS^?Bic{z1iyegk8l9-R_3Rw_H9WQh&RtC6f-XdG5=MJb-)X!P)4q#v!cQ2DxGWF*cd)#ybtkP( -zX~abtPY0dS4(u43NU=+HCRfWc%+F>oZ!HQP7l{u&9tSOuDYLL -zPf&glvJZW_>M8lA&w>(l)*~M#IBh;1_#5bQr!gjSYVSxLUcGTw+lj~$w~3q`qQN7sX!`e}mbB|d&m6Pj)%ydLQJ_O_ZF~I%yB-639XQx^m9H{br -zA_YxF*Y~mPDJJ+!2{D2t)%yeeI3~({fmU_;wd+QWqk`U8|4<5@lF846?ky(<)@otV -zlYbN);cbPJ%1RA`<5TEw01?q$`E}3vhFe=7d4pp0tI@;nES;JjNZQY_DC(T4oT`s2 -z%uN5_B?L`lo-Er7XIHg#`AHepredNXtK4Ak+zXVrwUU{HwU?REk?U$0}R{~pYQj7 -z=U5)xpj^-nwyfMeY}}7-v8vt#FI}9`n#peyj>~?Q;)$fZW$TB5X -zkwtSeNu6*4*ya{e8Cn{E3CIcY!T`$3VGm5xyUd= -zONU6o=D`Rz#ZaWFATNs}3a(1(%$U4Z99&#z6P7ngA)Fvmu64FutVQFv>KDix!j2*pMd5oLGfFG*g?Bi@um%=d*M615H3F=+yY&oE+vL -zs#kF9A)&ZK1$$rZYo);0^M8@mII>^IwS5_|+WW=ltpG2)kus)t99>L*&G)%f&9qt% -zvOJ*G$?unhJ?Naq9FNTSNTKnnb6%_@!bbVe?g)+hzk5&})jRWmTSUa;4sYF+G_UI} -zq5kt_<$-U;KZr+!jw0h~aAQ#<%j7u@5C3+b||)a -z0jf`Zc}2=Ra0DYwU|$pkZ&9J)ja`R;38GN^ -ziX@K~!FjY%Fw~ttKU%t~=y1GUE@ifK!esJ%! -zo_LJP#CxV?nR_5&?#8M8CrWPFHDd(S4;6^ot@RJ865UT27kjfOrQLjGyx@O{&wcyk -z^)X(=ASk+7R`t#8EL&kyy!-y~9T`8ZFDmY;D3$y1Ix2mUoadW7Eii!wkpp5IF##NL -z_2OY9(l;aAl7v9{H=3Zy{;H>W68NE>(0jX}K0#JUBj9l1;&1*C&nIOT_cs-9vCqc= -z5gN9%NO_Fch4%DR2$^C8DLVrZ&|5;$S!G|F7#W-n5Z}#FK}Xp{X*q%U_=<50ogWQ$eP7@0CX;adwy1U;M2?ADjUGSb>~6o2HqI*@MH!OH -z0=jZM4P)b91qkXCSS`bat-XeY)J6Gj$5Hamn%%BxZt{N*Mu(}QC+*V90rSPDW3;B< -zqSm-;RZr{y?ba3kt`eg7`>{5LEexidCmZHC1g821TtYZlts6F7oefa_an}(4$%XMU -zz&o1Ct=$sNflP8xiH9&L^O<&+lC0ehoYVcKY{bk4t_U3wV<3@tuQPH^do7QeCL*w3 -z-=8^^lpT`5Wxy&}(I)hMZ_)(+qy>JoVpU!Cf^j}(Y3cLQ$j;UYPb?*U{0;A%Q*7lX -zXysNP4SJtO6;`^kaPZ5|CztNA@vP4;`f${4VsE*8A(1^kQidLZbRH_*mj-kmM(J@l -z(PW;iwj3RiCVlGA4eB2Z_eP(;&{;=F+|kzU;R92 -zK)DcZzEm8s8wxe0!luh^bGvaK{LS>PE59HvoKrBWsz6fgXkaH@nD2#bZg87t!7jMoqM3VKR%x4HA%a%UUg?R|SVxbQfObdghXj -zzrF?X6uq4|KgxP$iZ65?5_0q@xYOtAPh-;6aLG=x1kc{Q3JQUEMQWbFjAhQP%uw*R?s9F}nvpYS|&V@QvRyJHG8JiLI0y7UW1 -z{qmu0Rv8ud3GvR*J?-d=bNb)z24ahm&3=L5K}K?YFE>-KEwe1}ZzAlYg=>g17&>e= -z^Q0uaAwA*bYWRoq-`aKpYP_OJuDU=jFjl&MgwEM7h)J_=FEjZ7=D~yNh^^6hH3V~h -zijcVo_Ie(Ub(Q|abx>ROWP_yN!^hOcgKXN+Hue7z+s_g24Vv8L4f%Q6^1c*pq#x~C -zV1E!V-DIfIbX%G@fx!#{p^DE(VV#wPsOizBNGlP0wH!ffea -zf04`Rj0yh}1bMEFR8Z2o0@gtXkIr%8Ycc;UYkVj;H8vHv;yC<(3YyaOk!F^ui((sTHb@lU8~1?A?KR^*ah)aRfx=uubo36d -z4`QrsF26mX^zymTi#47G1{jntt>LmVH)CRp-^b%-m1GnDciE3MhnSEY%ROPs6j9Ms -zRCItX_Nve>1n>pNxI~Y}H1@(tY@@590XybEF605Yk0#X~(4SA0dy#A&(Dc+;jO=6} -zId?E(@YQmay -zE1?~(!GU7=#+S`8n0wiy+BooKgVNcioxjEX8N+fqr4wY@v@(5MvIYhYIA8FB@9pWSM5phDyC8&wXbP~6-Ti(nB9+)($4V+ -zkaTVP?X0~Em -zfsv9aW4{#XLk|U7yNOFy%MRl^;N2f`=4d+*$G5-TGlI=_PqhoGbKdi;{h~p)l>M$P -zr)YaqdfOpeAMQtpvkYz;aGOin6!~s#1`c|+ciTfC$W{I#Ey7>(^jV?@!PR&?+a&Pb -zkUYrYG9MU!a;c$2ww4ymNRD1{dL~O>7D?}0nj;TrYTm6L#kjr&0c+s-d+7UI21KLD -z>$X~0_yN=9BEY)br2=yJ7MR|Mio{O>*_(!%6XWw=EhZ)RW0kS_At*3<3-DDs0S?{l -zYjq{&?k7w(K%{hHDjJjPCGS9q>`4}cqNni^t$kkLQH<{ -zP*$)|&|V(T@X$fw)OGA?WK@+wz!Fbs0w+W#@z!2V44#1FVv`@-ttp27lbZ$4j`&U$ -zeKUeYcbWm7oYk`K?eJQR0@vb1BKaKQ$M~gcA~!ANgVvd&3u?4AWc%3sDVM2zLFY@u -zB})24;aHK$d?a$gqo4LmHA$M;N2b;F@X4920FB|Bu1l|YDIp-02dhsnAIy}{0@p+})H-;}&D6odVbrE+~v7!Ek@ -z4`*XzX;^zV&Bd2+n^?eU!yQiwidZl`;_FuS@2=`=@v)fA6~57g%`i2eFaib001N$1 -zTIP2vS*4OMS2|BnofA9u{RcupFj)+P0=7dJq`*WIOb@$V!X{WIIB%>z1#rEmhnrjl -z>S8I57S{LGQG?dbl76AF6qH~KU&e!g##XUa-mVWM$Q>Wt>R|W<*jxAfOBN8R!&u9{ -zKMXtyP9E52&8%rdnN28X4XjKUQx<;Rf43!{_UuH?MY&Ro -zO)5Y1SoQWEs+U222cFQQ9@~^6i6#qeGDV%A>}%&kItqM5q*DO3>)a^UzS -zn4Hozi(G@|z%QRoTmY`zz5d8HR@S5MC3A>3m)X-at@Wr7xp%#jh>=C6u -z;anYwpYDq5BHT;>qnkb>D<^FxVYYZieBHj8V-U+WIOxzx%k{Zolfgs9kh|l}ou&P9 -zKRn9dfkVYF0g4Xbe$#R^3fn^N{PYWvZoc(cFJ6a=g|6|wLp@UYOWQ=)WX_Ho$p*2M -zOr_}imhltvLhCh!Eo?LOp-{BSpztF_)5`KO-E4x;{K6y+@XlKz^&JpLa!)`+Up%u( -zI%;fFSIo?!eMp!GbSOk|vFs<88qEX1CERSd?)wN`(Kr!MZ-aZ&uYO#Rd@*mB`a3J# -z+@DRBkWi1(uY_mZpd5FB0d)Gd-pZVF?dQA7=43{*=lbptF0aD%BTTe1PxbUQQ#bTJ -zpLZGoPTFK!0>I?R@l-TS@hw36V5U;cx-4ugYf_tMQT^oU6n=#E>ZJ^!6OnLC>S?Yo -zfsH)|@(WECMp+xN6DK)V2X%K@CsRIs68!QM;?L{q`yp4>d%6(b*SXSD9-1@&VeYzg -z+Yirb)u=oW7rqbM`6rkSTcNWt%8z1jLE@HLyV$#qyF+`38AqWu^*~!68~M1ptzPWI -zi(xvDh}~Cp%NIr}7!aMUht`YUpxEJXYd_AGCjK;xaUW?8-@6(xbEBO#!}zRs7{*~U -zH_eSWoIPw@%{`CV4UC6Q@`c^oR)gYqpGhOYMGC5z5+})Vhzr*+bj~kvN{*MyK3xmr -zadPwynjc{~d8X)24{+zdQ=%Za0+(eik40?X{EZYg36q;a(Q7DEuAp}c$GHZuH?B`) -zfnope-TH#Wj~k)ks$DtIPdj!+TrUsZ;N4Rwc73RrEY}^M%TR|X(cCx?k06-+X@5Kb|+Ndb8d++a$4eF1#nh>D};X>J#P|1yE}iGF9fC+KCA -z`O}vl1C0j)xFc)Ih0af@EIi(M>~}7*N=hm0)Eh$DwtYVH6gqm`?R!QFme7Z)5E;x9 -zpe2lhl-f!`+F`{*T*oD#<=6V;8@pF+>Uy8sEKF0+t%Qp;y;y){%8k@|6QP1_t&|4& -zS17z{#lOYdJt -z@$15lPfyeYHAHctAUvBNW?pSs5>thql%8}k8hG1<8@F;);f@^%;TPWna+36VNwJGK -z?g+HOAJdMQO0Ux=Mg4?^@Q<#&GrGRa$ccX{CXiCUej;VYuK4;j{Ri1crgVd)$0rf2 -ze_KZ33xDGcUqfRa`Rj*ceXL>})5PpOezlZl@7JBUM67}4N3>!2M2z%N{iN99rg8y! -zM1BV$9L6s&DhE?H*Lw}?UK6;*UQ|t+`|&37zB!B_G%Y1$9N~O`d4x~6*dVTdQOm>B -zRZqyQ5TlhtG+?1uwaR6KHz6<3#+xat!~O#Lai`{E{*s9`nXmlD)a=HHo8IMjo35r7Dn7qsEanffvQclBB_ZC| -zFw$PPg<7~lwx2aa2p;nosqS5_MmNK)Ti@EHo%*!3;X!}W+2DPcKnJt$n9Dqim&?%c -zq=h{n9c7QhVBwV0di#Gl7PuP%X`gxoll$ZrOtX`o+$Xtmy2CL@6RVQg*bww00EM}9 -zyN~3G@M>mS{4lU$U)2+Q3o$<&II63Fsum$LR6SVu1?sNTs8H3$cq3G(1O=f5%6RUyBj&Y>6zz}VzFE>wW$-OOn7_={QWICo?CxyKUQf9M -zUW2^mrXX26sgN)Vp>7d<^ouuwAE -zL#N|zm*bpgsEgs?n};Mm=Te(@Gv_Infx|J67o_EBpcg4&`4PX;F-3sY?$eSp4O`11VMU_dVW{XcHdm{oac1u -zNMQqq@BEo=f-K=yk~vVu98X({jFY4U -zwwvw*OC42cd2oK*IytUDjyQqr0vTkUGjeA;x6>GbVq$c>yS5337mkl((#kLC4hrTT -za)d_>F|V^g+{D-ugIfpwtcTi^D=~!`83L6j6`>DQ-)NNAU2e -zW$PxYy@xf3tH)`zZAgC{1W-33^i*Vf(3K0Qq)XFtaC`8lkmzn80eGlj-XRwABpv`C -z1X<8l%4_&`<35Sh9tvfYVBmMTP}8Gu#et91M(9LoK@14aIpRL8*{B~(D@*gk)ak&x -zc5XXCv7)+4+mc5P;&@jdhg;=kE^A=7zuE6~D&zNUrT0Po=`>xBX1a>5a=ORkX7S5@ -z%|7%UN}m4%1%a+HZjzZ -zb|evxfT$Y0g!RV}E%;W5#Mxxn2uCI~3Jj8WbHt70N!L$EhM@U_7Ow(`=Bwr@fqny| -z@Md<{lSa&t$y+`qeK5U`Y#pK!x7k#zMdnTPm8z)PJZ+COlrcU=a~OV&n){*`sluXL -z(QPFm#R7y%@sH)6R(JJ6zsZdJwBNS%i$F=FVxZz~(7^yH8J3`(Q_Wm9{0ut!Te-tt_^TOGkKwjT!qc(B -z%_X4%SL%yEf9fnp!hKBN(IUqwCNWVz#LXqT3Ug(oz24tz -z*q`!q>zB!X12Q`J5w>`yKpXtf(}LTO2xUfblt;m8LLf7j|k2{KyX}*hbIOiLqIia$dY7Y** -ze2azwIM<)y?W*ZE(19#I3f1An%SSl($+Ml@$eNoxL>qr=_JhfpCU<20c${;Vn!WE$ -zkuWp#HmL2LG#c)>FYIG -zpkV;(z#{8MAEY|3xJ`!yex&d=ghD4l7cP?H}Pz+dSt1}0KJB_ -z$$&onv^xEqQhn|{r?oXjgIay?0fWx*0f!VE@5R(}00IKbmB%tEVY&=!;p@DyHY>If -zSRla)i0$^S5*ZIe{1}}=z=Vfi1JVD?x1ViK(`6&(aowBL`n(VRToev>Uf)ABVs=Ms -z>y~xegAMN1l`uDe@#?U(iBFae!AjXR4!ge7l3lacVnZuLvPzwmw_AgTYA*LWw^&}?DKH`JW6tJ- -zlz3cB7j4Zgd#eVVmw#{}G}))UzA)n38>k(J%K8z{f8y*UOCg5!(i%%z`YA#>)3&Zip&rM2B)EFqGFvC++hC#S7|;gsT7Xcr!CV4Lp5N&{0FF8^IRrcM -z$6OpsCewPA*qSRKiMYP-jRnC50HF@V8BZsKaF0rpn9}eIWJTCaqtY+4{p$Rqf=}-t -zcTs}?E?Aln(H{bc7|Mt+FLY@$AFN;;H8DOmqbMv*Wr@&HcOko`dei{8?;eDarTklO -z6bmur?i>Xq4mT_&F^igoArykV$=|@6R#MM5Xj7LN3v0GlGFRZ*6tE>p0AB)P^Sz)l -zD%#ef)k9?e_1*kohtPpLTMH-PLrzu?yxHh(y2S!Gi5p7ZBSd%e-=wbm-%yjHz*1!z -z$V?M*dZol1NH@rpu-EVt#B$Ip*#qCvODXuMEJc8MbkB&ddu=I^s(HgYhgAhWHlVlG -ztu=XRcLElAmnO3)cA~9NkH+;8vsH!` -zbZ!z?M(rPVFeT|9w=9W8GP(mOKc^G|c`B|LjLls5kF+}}+gto?!LXzbX -zLDleW8JCr%>!x>MZcYk9%gL!80ixmEd3?;LR)#w?Ye79$eFL~cwfa-Fzz$926#XjZ2kg(j -zsPAk*FXKiSZyMXOC5Km+N)3!q`I;9i9XMtj+y{i61zETL6f-sdQZRZWX)rS|AGf$Za~KT@O9Ai(5p0pFt+V1>#B%L1Ou3=ZyR2*>e?TmIG|yhO4d#+{YqP$)s`xcffdN -z&z%LIAK+arCWviv71@*)Mk_*_?p>yW>Q}Jf!k3%i+$>U#7nwIwLll<*dtCi!*d395 -zT*8p0Byk2$fF$~6{+({#-2T`& -z~W2cZDlVkPz-7_o)|r*gpc{d$5*hZ0Y8PB5%V6#Q*o4q_nX7*y6Eu5qqnWiU!@H~cwQ@RRi$W` -zC{h}nwrK)=Fu7hs$-rBf}91eQSsXq=vDkNK(wFYq>guFi*H8=V2!h;4rlyr!;1jd8&bzYbIk{!*mO#cd3bGg%E6fx6Gi)yWvcILPPN+S_fu-{!X_ -zGpr=v5}5U=NvV(5)!V)h -z`ZCGf`}q@mAzS29Jo5zf!Zf3F!IZ39RwnCdaW`aY2c4sw{2RxF_=QnbN3}s?-ls_M -z6B}-{o5cY8rW~$@XmUwX29S*@=zP{7@nFOj{-FHr!Dx^F3 -zp@r|i_QU}G4JWSEhsKj`Z?}-^r7OrSi{DzS_UTuS5XFZYROYj~wxW@WI1-Blg#b4R -zR8aK`VwWip;jnA3!YDC;sqkt57%DqmQj2qqRRSAV5i?61BKTj4MJIcXc8o{th6oG* -zE?n9D#Ns>iNX0vqkaLjyM$+-QF-Y<-MFxfV|A>`oq)H5dDU!CLRFJf!G;ZKPUP1XK -z!0cB6MD>^``3gj^LHBhg``Z(a$WYQlH6dCYt%ff#C(NpTx{@Kw=ZSoTxv9B|QVjfK -zUN9I?O9{y#Rk>uafVrVmo`?z`gy+v^a -zy9$|(@c1z|4BF-y^j$m+&}DgLW#YI)s6m(gRX1cDG_X|hf-&k_F|Oh6N^1$^^LbL{ -z*u1RS07~0=ikZ7-Q<&{O4s{;kT8$(V&b~qQ1Z4L0s&dyr3bV98)iqaoW@z)wj(A}% -z2j9n_M(!}ISj#xF16DatB`VMK;A<;T&A22$n86Yd%V!Hi*HU1!F03i_d~@_#bTi3T -z7!zM5K_Vk*{8-qESFf>Bj}U{cpl6Z@O*rV%YCf$r64KlK^Z52)J~S>ZS)s#-dfU$~ -z>UUep3w$|M8Wz>r6#NB`mR#D!)t5w!tlT;#BE?PA6AcEL5>_?lZ7WJieuhL?9*h;! -z<2)czK@h$V7J7$EG~1=CKc5sRu1o#C%uzY-? -zooGMuBN*UXAb9%fH_={W(=QF~*jY?vqgk-YFOQOdoo5M1Kn+YagBf`F2y7lH$8{4P -z>`QEloWhb0gi?~Zrw3Kc<;UF14jo$9{QsHL0ACfPt0J{X+_UW78tXx;2XgZ4?b3;+ -zUWZUV<1)BnY`fx+m0gY6!k -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 -zME{bcxZ~!M -zIP}RzdS5M(9Kh>|pAqc~cLQksLr^TaYEnj6L)!eB(a7d39n@3dkgTBeJHTcYQbmIA}{2%pMWTc7KG6~02frdPtEtXD<=Ri-o -z;Zw84w_KYcnaS=XFLALF;cTgSH4Hm~yCegoz9X#{mLIM|EZuqP4)wOnXci71F;+$`QkxA{=M*U+hP -z9W<^NiW)@g*ujMXj1SVUCppSs;Ilhzz_6|@_y#xz%&S!V)+;L!&wb;!c!lJx1U-&L -za0`_OhbgY6OOZbm7P&lU*8=1BL&cVvbg_m7=%PDdh=ugOoDK7q76)Y_e2AXL -ziY3$3OrL#d>(%+Lwz>Z#Y9}w%=HIXN+&_k`DffV91lLDSX=nj{@wXJHpHk{GUPz#t -z)sl^C%tecF)d!d`OkDwT`IHoD|8gK&2UI=hpGe9heq2Q(i8Y0&w{R`rmp#Jf#uf;m -zA+0=wTMV0De^K+KM;~kdw%4xmt(DM3GHH#eI6ab@Un0spAC&JX(2TG1^u+Tf#VOw3 -zTQUxjsD0-KaO_f(tSnmX<8jJ%(7!ROzms*u-d^R@W*Tt#Qp@znpOd?RuR8>ms5sBm -zmTwvY(Zh-;SSdOkB~D~jZ1l-8z3jvqZQdgxD$L7iphS$@pq98({5io=o1TQMkXIv# -z@Qi-_?TtR_|2~`IOo5;2!sRaADfJbzQtOm{topcC?Chm()Ut9>d#&ao5T0?qu_XR( -zWNWN`0s}38BCc5pkpYP5Z0((A)b!+3G?D^j+Vc_Uib^-?H0Q~=2Pp-eQs3_>JGbdm -z8&Oq#3elfaSE*YP?m-8?^vXv#sCMw`$&D3v>q~VEa4Yqq2K7G4kf@w?*S+9{lqpv4`?KR{l{#8i<1^={eY=j0A+|UxvhVS$ -zL-+V3j-I?-JD|ovdFCIVq?n_)&wz4*JClh$rWc;-9o*v{Xm@UoYZ8 -zQHL-Y87^jN+FOA#Ue|?;Kvb=4^^wx0ANfX -z={X9OqR4uVucbfd#B!(CffhjAZp>oKdYdAy1bX{{Q!Un@AMbcH9b`*_1$ysZYsye#ckS-F-%U^9!&opaq-l3 -zSV@{_KTL{!b78CA;*)ZMS%OmGOu>#mxgs2s&)s)>& -zWg!%uIm&WS?5u$KUylp6_`jl-px=zas33kDll&}xkLJw;F3h+6q2#v)7GCZncY--G -z!7q@NG^XymrN@=I$MA5cMB3N0RiJ*$0seiNRA|B~gbzS@&gP+K2KA*6MFN8#B3jsR -zOQ?V@+R+6~=%m&R;dx&6XqNE1yN|d^=NKryh8(qdV{L=z)3v=HL6-3%3&GOs^$U;n`tIYW%9-3kQI7C>oaV_LzP^NC)d5~O*WEns09}k2B1i}bJlC#V>W7); -zIdM+|Ny{BG%6_@?GG9xsZKeY*A9Bfg%R@#@U8|ZkdR$96>jz{_l$W%HV$mFCuGlU| -z9a~&~i3bv=cj=(Y07n6DU4Q&~#x~MX;K~PwR;F5E{TKt(Unc4J-AzG@B3@X^Q_-N+ -zwGZa$!l+=2DS?r-xKJA?ikn$)31f6^5d(5rCQ1whw1V1Vklp(wYp_03HUwiTe=p}< -zo}{;tq|A3mm`bl1``;-tFQ%#~|8Eg6qkQOZur?#dJIr&w0>dERzO2Og%XaXUx39le -z81>CYz)wD*12^faYWq&~@)HemJ;flc-Q|1OJ*$b-C0a9KKDf%5LI(Qwui$y!22zMum|9O&h{o$?E9JsJ}MfSHbr6PEDiln&_++=(oy<;&xC8 -znsX_<`Q7&9F^do$$6Ax9$W8YLqoWGls9 -z>CfH5>3zvFvBDVuppb@T31JK|92|?Gf^_4J1m){g -zGLAWmTIe+dgrb4?h&1b>e*(LI9fhb9nkZSRzQ(UFnTt;MwX>l4!vXrWz{BU42>t|8?dm|o -zf^LMO8-|*(bg%cHI8YOlBCjTvwW(9+S5@1#5EmQzOx~6s^ikToy3#8j`cfm31!|}G -zc;cD9Y=^Kn(5i9xjR}6yT3M(Q>0p-#Wq$kEoBi=#Y4*`-aGhTXSC%jT_y#+Sy}B)8 -zLo;|E>PO5MuNaP{85Uy;u4|*izhRvojZ34o+z6jz9mjBuvR19cBp@LIcA?mvg3#Ta -z`J9Pd+ZFK5tiag_HG%nc0EyGB`7#h2O?l5L3>!34jCNYxEHcqPpC%ZZpbnB%!LF1D -zM10skrIRDe_LwU#F2A;v-ilBf`7fziPT6ZsmcaL0N6S`yu_-Db=(QeBEP -z%<+AdD~~hCCV6kFL1LLblPHyPe-hw??Uf>;l3o!}BF+DQGeiUp#&x>}?E9^t&jD^mIe#%Y`c24G5mkSl(LBt~U)* -zHv@2Y>cp(2)!B~p?QL4o^T*+B^RCu50ZFO+nLr#Sg25-&@4LM&nrn8X;_kk4zr;Ut -zS93owR@O<{D5Hx7)Ae)4LN;{{SC1U@O5jUFK@r)TLDb!mlH1StQGnI1d`sx(v>rN{ -z8Y$_K)dXBxEqGWyL}+I04xQ^4(Mah*J0J|)W8wBnZsre_f-yBXrUS#W*ow#wYD=zs -zfKd7nY6xsTbxM9+1|>e^=U6sRTcifcWBMkrBb1A=%<^s`w-*0V4}>AlDk`|57Dh&y&u&rJBv -zdj0IbhD0x7DD~jkS}X~F;U6&w)F_(V)6Mmx-0>*RLC`b_J}rafcORAf`dJ2`AvnkV -zOVK|-7^>q3fU~klJ$yG1pLeI@O}vwh|7WQ3p!2H%&V|MMS#-*EXn7lyC-_+TAVq=0 -zy{hQ=^F^Bi_ucw@{kDA}Xw^4YRzD^*+WEef@WCZPdi!@!QK>J89hD~VIq{Gea6HoR -z?MsWeP1JXdhZZ5ZzP1I{|0ebignshHP#==I`MFhn -z?ShhtH+}9+4;uu&AIlbuH-`3|`uNPZCh|0it2Of|UN*G~oiDCyjQ%hn6&L5@PK|Io6ed>QQG_D@BN4632{2zz-NyH=?2zYW-@|yeA>O#eH~un@OQ$~1 -z8H-~TQH#Mg_%X>PSKW`LVJ{bP?->;xADp!S8|lps`23lZJjX1X@+t)vLR5j_u|nX3 -z(0}XegJ|t$wG#vvA9wFVO^eHz{`z7P{VcLz+H&wP2mRLR2I#ib(jt$o1pSqI!78wk -zw`s7V*@P+2rOsPc3Iba$6FNbs?Ht&6X!@&%suu?@DatK;0Zs_0oy&W*@97<^ROp68 -zF#(0W4@Tl1K^sJDPaT8wOKUV@$Xk4YZSPE!83)Ol;eHgLq;N^mU~Le8K(EG0@5ibA -zh5X?qs6s9FX#6f}FJ9*F>l3SH?WpKY(o(?RsHO=Kh(`D6F4nmv9Z%To0aEr>db{Ui -z020>Eec%IJ`=UOY5qj9{W>_BPQe4xhsS5?2nZ~FQwa*-2wkoJAzOfyI9d(e3@I4rt -z(utC4yyB)kQxsyfY(m#*2KlVL -zjV^F>s^J1ZvVTuR3q_^boUb4xnr}wr=lo@NHmA@mL3X3)IO(nVHCLgB<_eSj64s^m -zVu>UIm3+I<+c?@wF2m_}9^V~IVt3;z5C^WcIKs(Og)v2fDN12DV -zb>S2KkiJ9x>-&kr@9Ryv^o+P%`0hHi#7}8$A)9#yUPATUE4BRK -z`4)25RPTO1ADT#`U;2S_FZ88n{B(FAzRK-h_Tf;^iPc}8Sr0xrQ7l<6nr({ib3z>q -zsb=4NYV~?(w_&L9V|Ec%JRa}`#c!7@lHcrKOGpKs(lP`Fr)Pw2mqJq!=2hn|4AT=hhLYqdkzspmE?*)w9pTLuF#`UQLUidb>IvqfziH -ztXtPz^Dh9BG`uU4$F%;8wCVp_LjVEcW&yoVNU3^yHh8ipyX`()|1hF#=2ll(603P_i6}n%iZLPVb?ZBeZBKN)(FO0bl!2 -zj0M@%U9&zQGuZsH@jM&4btNlxSG`Z&B44$GskdT9NiEbaIih3^O$nn_$usLm;a%w3 -zlQ4WqN35e?daGE>5E)fUl9iAft-lAR9*@T4O%%w5JD_~S2{2W+7)SKPf$IjF-``W{ -z#|ks}D*DU;qZ?)upp!sXwcuhF93UrOErclxIfmv7k1?3OGJs_V>SenGQU+g1-Ealn -z`h}cn{(_rUeJ4%l?YAy)=f~bCV8K5VE2Om++5jaT(~kJ!I#?;J;uV3Y{XDI(Zo*p}nj+v>`1=pZz)Q -z<1?HgST_Wgd~mRqd90&aJ+Y69#d#IU7AmpUuF5h*hfyf>qbEHaC#EmdWu{iE+%Iz4 -zt(bGBpQ*rFR_KHbalo5`cWD64Z@K67V#aVt&~~N>rdWa4b<=UeQAX)Z%8Jw<;gQuU -zJUN_b>I(~!)0xL2^|&{Ak4fK}xE0Bj!7s*f7NZ5-2#Ox29s^6l>6S4z_4Yzh@}9=j -z8!Q58uRo8ABlo`&_%fhTc>tm~XSJXo*Z_yMli!a{T#KeGrl>?-?c^XW^WTv9a4$x# -zyBUtZ2B-OgtSdEwQZa>2&O&u@_ICFDw6rRuQ@N9kTgBA!5mZXm;*TMAyE2`U%v~i2 -zeo2M-Vlah$aDvK$aVF&F^=@)Yd)ur| -ze}7*YhS8z)pEF1LP#NOfRaqH^#&XWg+cJJ;C$Cglj?^+Ili{)_-;g1pz$516$B<1G -zGmR#<@@*E5e19`i5UF!3V=r)}TA#CD4Jb_S?2K1d7o?XJhqDn}p6nQ*yiSS#-sNqmk&STYV -z7C0m4n;FRib#kOEHt{n(Q8+lThn#$Sxnb3(#>E&0Y}GA0cFyx!wuIKDd)novAB0*Z -z|67GJ?-1B73$e*Vy>O^tWN(v10g>yI@h+#G+P_D!2qGJ4t&!#8u~9Hzavjy9?EnTK -z@bnIAS^o>y3&{k4VJ-PfmJePzco|rD!Bn+-fIhXi1aLB8j$MUP@3zF_1}@?( -zJ|IHj1J#&V12}g~uNWumbDL>be+>M=I5q{sQAeqb

`7(yujewe}n9 -z@XCZH+>xNrKo=`N*6O4ar6<{mCtpu5HeABqd9TH>0tgql3_=i27x15HB$BvpgRmof -zhbq5A>64rr;GI^aU^&Hqi-aZuq3_1Ul3yxq6yS2k8h|doZK*8-r>T+=KKzs4)_~k4 -zl>^QP*EU3=PHhpMFBatt_`!51#DZ=8oYP@s^UTo(2MV*Jt<9Oqg(Ex-!I`Vyh#G5~ -zuk!CulLWkkDrpZgDJeRluhGCwoV-Bk02W&g3hdjn1PJ|{5e?Kb+TxQ0unm<+;KW(j -z#ps`r3Bt;f!l#(=KZuZ7ozJLD# -z!LwMe3z#BZu8kzG37LYnXaSOwMOGk{Aei+{!VGka -zr=j-}x==DcQe&EuzkdGGHb*^j3P1GQkRwrAp&16G%WbGqx2tE)AyDA&7S0EB*i3`?DU| -zl`K6Je80b<8Yr}YgYuY%?P?V2O1dqzZmTbZme7xxFb+;ET&Y&Zp-`?w6gVE?7 -zd*?ZsC#$lgK<3#&nv+J-hBdEm9nB^3i6m%+Z0MdyaAMaBNN+wKLYjA_q4HX4NYK_+ -zp%elMT->^rV{8qQx=FHRq*ZQsqkEAO0;O8X)tt>MLKou#q%cKls1+8BK|74a;OYq9 -z_01t^b2a^-kSJ|arPX=QoPzWCR4U7ngoY1X0oX~K9K@xz7!eaWDYiEtR%Y-kPL&n9 -z38FvTmz8Tpa5aZJA?REn!7S)w^a5IH4`DR?%(E59 -zWJ}U5VE|3Olb&K2i=+b}ybtQ2MI7|Q2t*KI@Jpeql@;ftJ1C!Oa>UuS7zi -z?GPCb{**4eSwnxgWH+$;^?j$#6D*;-41s_|2rKY8 -zBZ9rk*Nmc}d}r1aOqYfOyHYU;AIP|}Qb>?!$NZfWOTva>hy>CZVsST*3z8yTow<}{ -z$utWR{X!b2;`B!{W=Q2--&YHLXQ)Uyuk3Cx$ZdN=Gt8-)OYE#Dm<5L-xNIp!jIeD= -zHuob(vSZ)OD%Su~D-`t3pfM36rOtv>o -z&rs(Y0N6D``iFufKm&mUOcs^`g5oScfL#Rw+`G>4fdiP$Di_H->5&bo8f9g0dZQaH -zdA!>DLt`5q@COh}hcz;9YRh*^ELXogt&xJIf2Vvv{IoJih~Qp{z7{h-mVw@jlD3vx -zfvKM3;uLF((`Y0`qcnstbwVxeY7b=iIfHkkH3|tml#OKnq1h#;7U^{;CIjp7MR7qc -zA_d`^&)Q?n#lN)NCXCIz6=C?l;0SQnpxVV+XB{89i(%1mmjaZPFj~05U>AWLKZdaP -zq$~!XriSC}TjUuPxjHv>Rkvf|Nxp^LD3yRT?D`094S6Uyol{R@ElG&9-I(m&B>l&A -zv1$4bc1CDKt9C4VYa?t(y-z8wGFX<-kk7;bt=<(IZbTlDUsESR$r{^>8gk-j5SWFahd-m6}!BgXLB#v#x;*+>1|!xL6+)Y{VS287rGQ&`F(Z_$DK~ -zE8m9L$>mjed(uwb5FFq{tQ-TTA}}s`q^ue7l#T`$=00+wN`8S>Si2daNC9AQ=nPs7 -zYt7Sea`+qEu%=zUr@)0g4y3VL$VmhE90N2fWjy`P=nDqFh4i26>d6weGuf-oZK>iJG` -zQ0ia>N!B1A5q~g=UCoew8dD|$+~`6)uqAw^M+SQhKn5MmP8>AB7-l+115480wmwJv -zay?rRo&#d!TZ^zF?!bl&dg&Yv^xh#ax76VI);BFo6IRNGJ&RWLh?dRKnLcRsrr0>I -z>jEZ{VL=u-pb-L~CrB3RM47fD@^ld4A&fOpbAn`YEP;d`mzx&tg(Wyz#^D7Ri<@?W -zIp>jZ=ajy1IEsYsu8{hObwM}KL6Y9rGrl&V#OpMiuF7DZJ -zzS>$%n$(#L3XvF#R-ZM(q!!V{8V?cO_UY7jN7U4)M-HpbBPPIwr9xx~i}r0IWr$=K -zwr;E>@Odz)lRcK##(;N6liLVNP`AYhYc=J -zm#hF;38w|N=h?z)xQr8M4c8=*ds@ikajb6Z<2R<2zD6l7Q%96@m8~3N&Etw)BiHc) -zs_3xt1#CrzNQe?WrH(bqeIY)6t0kQmml5l^X=`=vv-u#x`1PZB+|VC8h{5fN2B~XE -z*HK4&sy|L4%h~qDE|dchySd_wM4rlKTB4d~BzrD3_|*`s@}RxJp{M~rI~v#BArI*L -zClv8R^$*jez`jNdb8krb8T_Z9mPdnZMEb1-d(e3^h4lCePKCh@S7DK0gQPg48-Lh9 -z=RzAs^#CLWskS0Mug8~X#-LCQ4n=C}1)_Y(G$}t!hVvWBHwh&0YH(q43ENj>NQH!J?>8LNkmp5=CWSLbsDSU8*MefeEQDRmk)a%Bzh;79js@#X_YAv&*(RYC -zm3lF&Z$SDX41y#y!4|m|dLRlmmbS7@#+CAFx>q5km|PbYj68G2Z^I*4`-;79oj^Vy -z4HHz%6t!M3ViNYrhggP@i-@?gRL0077=>Z4nH^A+u%1bAbL>HZ{vH<*l*D>T-g&;O -zA_)U>)|$EdJ|Yf?QE9nhY5_`>ZHkLS=~e)wK*pI$VnFM_erZRgL>qy$t>y6~Sg+!s -z$ek27^--zy>JZQ5CR(Ju_)ka{)UD -zba|y<9J;-VNFj!twUvHNmd|@%rXgTPxA4P@@nz8E3p}6_$h~Wq?^1OeRgVN}3r7hfK{r*jc{`eWbmGRp$@s -zYUJP_pht4;n_&*=c^q$zsC&RWgbj7%*clGyIvW0-KMn$>9yT;Io#SMc6GT;=YJXsY -zu3;{%_ah3UE7gO*th;CnHS9Ygs_9ybfRX;OSP}FQcn~vT-p=BEOUmI53`qe-x#9-^ -zgp^Pqf~WJ!GcqQsWJ*Ux%u2oy3=-mSYAiDOjIX(O+7ch7O6_DptWx2e5k5 -z_K8EUCCh333`Ywl<8%^QXIKi}AjlDWA%J>@E`UIaW%sZPcxDJ~1r~G!dMf*c@e@lk -zFQ2fcR*p}kYfYOadeIko2u*7#I=Vq4y+?eB@>#_hN -zP<=(K4nSFwJ*mbA1o5qpSX?>at=99IV4Pr -zyw`GAsma-rT6XltTn?t#AS0Dadj(K5rKVg1%USUhw#?gtV=Y2m(Sti2EOQqE8sub} -z?%5Vfw^SN6;tYSqOmMU?#hS_?XlBtCKSqme98EQG_Pju3*dJz?aEKCA2ah>iqB0nV -za%A6k2()j%2_OiddQ;KhXt7!ug>8*0|{fnXI<@*K>%unaCuBnN~5LmqnK?Hi6F -z-mzU!L3e@fK&pZ&V(Fhuiet^=GG5Xm6363ia5d{A0c2<_T!_UyIH{Q4V#PV`iGoZ$XJaP(T2JvPN% -zj17C?j``|rHgpoeG+BNmDVf+D{Y5@`snyxnnEQ?0yzEa8Ds#}w96KWs95m4nQ5rGz -zudrru#uuD;99*vQ+|(8D5UycF7D*_&?n-J$-w`1VDjUKTHWO$uy&Rwsq8dmPO&2cU -zVmu8199mLpjxlUFZj!4DSeSXwxH_R69vDXAXExBRG6e}M$CEhy?h{=X}iQr -zxK`-f1A!KLBB=dY)Dj!n!&uA=hObM!*TC@DcQ50QKoQY -zT!{}d!$4|5Vgc#HxGiH2C4$QwAlgupS6on3n-HH*LVM8*YHmUh=fAq -zTt*bnR?grW@8AUOp{mZqn%oeAu0bfgPY7+K*)wz`>=k2(zXZ#Uv2kE* -z#n2Bx=8PTwT#Swxth{eVY$I`?0v6Ums!fEFtJ@J&LB-H05jhH)3f?$k@3qdz36O;v -zE4|XJIE)X^1s2k1qlV6O;Vcs!geyT_@gi6rN7Z-s%PbDx#=vM -zRyGIeDXrG(B(duF;{fI3AS7rPv3Dq-}*^hF(#IE>}^R# -zJ6a(H3}9IYF9wT0gZR~So;yzB9=YO@eU?O|GN7Jxv2X;5Ve>e%Nv@D(SdOF>=;9+XqKU_bo+8AQJ^vYe^A>TR7YG;MR+j<{ -zd>b2+tgaH{%QLbZsYLY*?8Y_qzsSd(mXhBEKOsk>Gu)|wKFHQ^C^oeX%GZ!2SO7*N -zy$4oq#vtjY8UZAP71=zZ*NZ{jOk=@J;LVtfsW&YgH5l0rq69i49eH&K2@Hbxtk&Y2 -zf=nq(l5G%WI;P6@}9(SduJR -zH^FGmdqPq{t~~k%!Po9{K1C*%RCrETmYu^PY=37||ZqDDknq)8?b7Cx2Fy*pVjAgyr -z`8h`F6Am}hj_BCDD3i<*C}7q%wG$gIu95{>KGQ4!iA!k*S1XEkJ7UIJaq?9Nl49tu -zRqT{-`i+3kEXyC3fd4ZZ?6W;tFdHL)eT}&2fxi`^_yxXZ+7JhK^gZlX%^GE+foga^ -z!NVEG)$uR+y#25uXg40xo5q}~#JeRZq^?05BBD}SyrP7MtDeQsYrZ3bman#{GO8dm -zXR|F560vB!{ei@~Oyd8bd=Z&)JW4|FreUD9tia#^czu>K|N1y0sv-y9_|%x<`1mBVDItgR~hq}-aqTAKQGZAwflV7bdk(^C?)R*}b^ -z=g9p$1Sm;7q&LHuLe~^{k_^R6Jc(Fu7V?eJTLjhwmj#i|9m*vZ%kCfrLV4*#rOCJA -zMS6@JdAw-c>Dq>KC=U+kQt!I`NNOLDX=0QSqIKB2MmX0PWs-~_Lzo-uh;RrkOfsGr -z^3|YeqmX`Oe*Fccn2axUqhOetX}3vdnkejIuf8}3LTDzd^FyTxvdkwyY0l?GW9D79 -z2@7K+HK1b!8zu+C#c^3r_xB9os@KEDDn?c#Z(NBQ9MRxhxJpKeWWF^BD(^WwL&!tf -zpVrL(KKF$VHSZA<-8QHd;2R^c@7Y`A!)4;NynJ0F{2&wOICT_8@koje>))Z?ghRAv -z9IcAIY2(P#yrPh@xqzL`K?!!d^G;)p?0s@@X|ZpHt-)66W4=SF)=kz%$b=}SWfQs2 -zDb1^G2@8k_8SS>BkR%(A>h$sGi1!sV!$DB;hc($3nRpq#Jb< -zEGUSb{rUoPtLwKS*$c7;(Q$ua0FOr`SZ&~?ZS$~uA=3^MJ@>%tKFA?>DAM2KECKq! -z!?MO$Y0wT-**B$fYE4m60#2+9TyYT+*Q$o-8#V|eCivOIR`*anz2`S7zJEyI#BLJ~ -zVAh?2<6DQ?3N*1jR2?XhF&pcIwg&y18YVOs3IU!lbF4n>gy3dgtC9iZ!q_Y_{g|u- -z;2+1J-5kZrnZzs~TlxtMA<4oK2*+Hjgvdf}+VaEz60u;z{(X}iRS9A5f{M|cZ4#v_8MKGp)Em>=6ZB-#X7NQDuaegJJ7m3uJ$y#h6XKP<5_rN&Qb($BaJcDVUSBW -zsaD|`)vFEvLT1cYvDFsJzU$0G)a6nQ*I;ORPaCffxMw{wP64_e*AK-qfn+S^OC3y= -z*6T%w;D7ty|Mw5BD&*Up%Z7z$Jh$IE_x^C}Px25* -z?jD}2QZ0aV@>+Qn0`Bh~`IkeJgyL4z_6oy>#V*kKe&nj!`8h{%GYz}Y_RObtS|kS; -zQBfZb}U-`_poOAeb__Nd{N=Y6*Gm;3xgn$Btv -zp{B=_1WLbbdw!9zP;k5ZyVpngUXmN!5ZXFmBb(q$4bPq47BgGjKRw*diHaikPfvGquUq*3>E(_HW4q8! -z)s1)m^ms -z2;QNCL1!?xh13H%f7jzZ>a@u5GY`9!Al*MR5QqNuavzpc)R4QPwsXF@cH#Hu>Qt3> -z%s$-r=qwn3_b;!ZBaoZ@>%C02{QCNcL9%1cX_^Z?eXfeC4#)9L&lX^{f88TJGW>wY -zM&Tm+SAD0~v){CTyN{Rd{u`dm1-143RUS7Wmbaj7C(ZkN7LJXW?DzX>)EEsq-cG`P -zJ~W!+lA^Xu>i}L+gi@n5f;3*&)>h@@>Btmv*sz#eJnN0|amo7+D; -zZce}PSwdSi-hj#eQKAy|-=1#{kcH?g9legc0x4E{_5NjVEkr~LA_;Qp&z!CpO^HD) -zt*RHcH-si&B5EwSdz)G@^vmgh=zk^;+A!*Ki5%{)nqD8R2~mXO1fuS}CZ0slG9Xmf -zZTclq8?A6{>Q75+2sIN8j?7Bhu9fIhF>ln8AEZsbrgfstVLEg`JuE0g_zwx-%D4dW`nk`$A(okwqa5lWXJtxUmA;l%t1rDOLL?ZQQ@;%T^q%KpZ1}y^5qk`#n+jeUPlICRV{j7?Y`TA -zessNPOLNq(XoyPceLgqb6JH1FhLgR9gyHx=N-K$g=GvkCfB&%8kN$qrNrA(7{nlQE -z`>I#D1_xnt(uqhh)sVOLD#O8jd(mD8%XcOjZN2Ng(#d+)p!aGi^!1lO*MMjAMq5Sq -zL+xN9T;Y4bg^37+rz5uji+H|E$LzD21-SfB1H{Y1ltpoIY;P_qG?|KAi*n -zEfL-Q{xN!Z1HS-6a?tn2JD@4wK@YSSK6_aQn$N%4;r`({o+-3E-miD=pYE&X{cSzn -zhr{RBq7Nspd%FiFBe-Si$`Vw(d4BnH30x3|&m^8|gm$wK3wyCcXio86#;l(0UaW8G -z>OMNPYm~M(3wv3LK0d3{aQ0TF`^QH;{SMiakJrI8LWt$W?{fdB6ql=P&?knuT^sh> -zhHtNTH*P)MKW%@u@3Hf$IQeaZX1N0>d2es{7T7qPl}HrLJ3S>`2@3T=88lEZM?a)C -zzZ-G8^K;&V4YyuloVdjnu$)9Ir(-~S8?*1w4eaPukBr}bC#fS^s^2GM)J98`J7rBE -zY_p!@gJ2g#-5+Zs1{$~l2bqwlxt?%!XHq=P(jj8N(|tIht7DuKT2&0uHub$F{4o*} -z7NVX(A7u6#>)F6o8<7!gT#aK;WWrx%M)~9^I^j>;zgPnYK*vMCV)`2J0fje8AVt-@ -za7^k0m*c4G;I_zm(!LK8R~fue5IkQW?_9{jXG!_MSw$fa9QL96yE~ay@fswQQM(H^R4dT2P -zHAbv^5e_SU3h>*T3suob{c7C%_Lnye6HGXFQBA}%D|BX{Lz7sJXsevc -zM67GKv`O-DxTO&QQ2%N*+FZr=k%nGUPZADvJKCLZcJuD19?H -z{+6TIQrwOL-~EV4tlP^jq8rw`OCOHc@lyDJ&2#M6&z~h0wCIyBZ~F~>T@Bx-eWf>9 -zNhEAYGu}<;gBnJ=+wMh3AT^8GJXEHW9_UWeY`grOM&b6D+&VY^g2!Hrn;Y_%Cm2IB -zK^KvREDsG+U(3(E7D?cuhd}U`Vl!~c<(9fbd~zs9rPKWc?|*sHkjC&@P&g4W0%&CP -zaoYiu?=aqut{85AxyA3%0A+6R)2Ki->JvbQBBNY%Y7RZ*S=a@D1;>%L -zkSkyK(W83t&0ELF91>>Gi0u?OKctKzAQ3V5QCR43gWZ%OcPq2h0bH%|ST0c*yxws^ -zZZMGEZ%$KjgU3zfxH+BN=CrFfr*0^>zaRRG{%^|d9r>_1ZQAYYO`FqpdvCGrJj*}w -z^K#ar(Zp_+!EyQDsfohX(qrxO5N?G)F8JWmqqneoM$DVW0a#!n?hL2Sez@O>bMK}- -ze{@yHvElWUe6Uzu7)s&AkU~nU>wrzgAObB5C_o!P#8w1Z#1jUa&w&EmdQA^q($(XxY`iPM@phvw2^AE0XgZB6t8hE=o!GtEb?4kO~YCE45?OT -znp^3*BSBX&^NB7ecu{0Ie>h|VviGG>$Az#HUbDS#Fx(QV#a&_KpXhw*gJI}uo1c80 -z(kEre?mt-|W(^^3JcS(G2uuw@#K?L?w4W87VBjzLRWf~p1SlVomScGiN$xG`X_So& -z$$@8!!zVSZl{hCo`QYCp%r^i7Thx>rhi1tXi5_p(Eb0SAIRcFzBE@0{QM8iF^4ckS -zH<3(YINQ(~lInVAX>%h&9Lxoykne)Q#Ev%F<-rV%QJ3Pd<}64M(n2d`B^(J*5z35c -z7`!zSH^&jdmYl+!VEp1pTAJjvLe81kWo2XO8ueJAQm=ZDDhHPV7A1iEEfA>c^XW|b -zz_{xjK29nd!&5AXV!GK91RRWx7?w{hFp%?<&BV?p=TQA4;o@#qii!6S$-GUUXr(2O -z%o?u7xJdB0%;VI$_tG%idN{ulcXnd)M<>UsK*)>%?pvV4xJ?d>GC}a}0L9hF>8d0# -zRpPPm3;fjnI9aX-snIlnvxy7MTiB+p6i|`L=!hez;B_jyk1ll2KToY8bm0_nPJ@Lr -z(f%HGDT!D+POa`&aXqp6&%;@-nCKUu{2`zGAw&GzWP(?0?~Bd-t73D14Zilz&%|P3F(AqyW7$%dT>k9^ -zXjdG|J|*^TFuj#NOMsIPY!4Y%+8nj{FQ*|1e2q?eKU#REL(FP^`WF4FOO?j*`$Tl` -zP%D<1{Cvr0X-v2vegEc@5L$^#x4S!3w9*KEx#ANZ9q+Xyzu1}Xa;NeuTr?5kzueFK -zw97WY3&(Bc#nXr?0_!wE~`RPl#WH6QQ}lAn*!v$Jf%Az4tHUWc6kwU@L5fr#Xw7-?D~d(gHNfpU|fd -z-|aETb2D@(tW$(h61iKyn&U%j?-WQFO^~z%V^4e8G=xhS+V@a~YUCtkmOkLpYC!O2 -z{EVGLtT0^Aq_1t;wr$(CZQHhO+qP}J*S2lUms!nXGV>?T^5m>5-PKj^bGxJ`hMj~? -z`jDM*G%nf~ZLD`!oPh-=ScGHFP-(mlo;$2Gjv -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 -z@p#(;Vgf3O9r>;{8K&lfHZT&o5=ckG -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 -zVTza^)hL^<YXv-r3t2W -zy*w?}nlA@?iTN4i5NC5`HGxO!M$nM~306jFGIL0#TH-_l0*G=+cr;p29WrldwZ4&~ -z?bvC+NHD)jIJWh9#Ch{6GXJR$i~v4FovvEKDy!FRxsY=@CrN*|8uITk-wsm~;6;rf>F -zLM2%LJh!$uCG4JgU|&9!o6d`H-)1ALT3`)h4mT?SRXV$u~1XWQLXjl=U_Zq -zsV5f(0WxPnvp_z`NMj -z3tc$`Xk$(3^mQR4lV;*Hx&{hx3~k`lJTl}%5k3vf28}|fzPTGORL@f!vn7?iG&D_ar~l#GrxhM -zaP(2%-)76yZE)d8!5H~g}uSx7|H-fQskTpiAC3_^;{CUBn(06djWhhV;(moSE8gQaBo=_ -zk+yaRrklTU0B~bz5xxXdrt|P)K<#?Tl%3krBxSYG5h|&vY9dKzga{f9^$_zI3L`u| -zA|qW{tNz7FNcMECW_q|owG8X6qfhqezqTJJOC(3ZZ()70Zk+PGr}mTBT1UxT)ONxR -z*25T -zMIn1o4KmOM(!rV0{^Sz1LGg=@-By+)f$$l5?!eT=Rw`8&)5Na`3-=QaI7r`l#C_Qh -zqh+8ivYXi96|uYUif~1z(nKs1O*ISt)KER<#I#)GyD+4D`H0AlgHT~{E9**{XzAC^Qg0%c(JXe|N`c-uqCt%_*hS~pI;315@&05}Q;#I&e2RKl;Q -z6_E}v@Al--_-t?y*u)X*b)6N3#T1bg{7GvGJCC^IMN=9-jnu8 -z=W~Mj#9rnIN-h7AHc-|D)d;*Sk{!_&9}A0~q0KVca@Gb)hxNb`Byg8LKEMV9S)xG+($idC4(drDgM$Q4zrIe+ -zrHCxTHf%tSDK$;fnK1n(g=}ECIG9Ps-qsrn9PwLhn~A#HK?Q}Y{)1=IU@a9UR<*Nl -zvjSU@A@Ex1Fj;ZW{?HeMmr71u%DvAx@yI_a_yGUpf`n@8VbiHI_F&=s(ASL7+i93lDXrr0lH4hISO(+|yX|c#e3h9eXhcs?TK+g2EyOV=@63{*q{L0yu$ij$ZW0}cX5;<)> -z@hh5}0^WRorC>j1JD`37CuF&n$MUU3XOyG@ET0Vs*-~RFCpW%>Lf#qkfYv(kU}oc+ -zA2Oqbr2?)qTzX#a#<=BlY!?*N)uU@%A+`NPo?|vrA@R7@DhOkL%%0~&G=do{smBby -zLXz>x4Mz<-P3h*95>bchYX?9W5J4QMsfZn -z&9m>ErqHfqJ*%0)_%ui@nhMZfm&jG9eDqaUSy1p9gUZ5#I8R3$8Lob<=5{$J -ziod)*dwfmTPP?(aZCUiO`?mWDC3 -zC!l|0>sVlmV?<+G^Ssx)gz0)E{9*Da_Ai~dT$pq@!0LK|PUNpE@w2A=j&MnRTLPvL=DuNsJ}jwpv4;2= -zeSEu?$wdEq-!|)vm3`lK@-!{P`5GtaPdACReNP -zA6RN_wf_+%tC^owA>=t52djYoTGXGE6ZxLbo&7H?l*Neh=U=9Q64^Ci7e~vep`3bI -z27ab`olzRcf(6dMWqG5#&vaI)@2LPM%#{%~RKNe+`Q8Diw%A$UMTOX%fs?3nrSS-@ -zFT&k0;{&%NVYIaVogXJd36IRvlld(v-)PF?<)<;VKSXTY-=Jt9aN%Gy@$iX5{(+(U -z|1NLxt55SO5AilU#Oo+ZFF*TBka|}$>tBxWD?8AkZqBmy>{TB5R@doNs^wq)t64$f -zg^2r;0qk9dz*2Y3fj*Y)E4OhQl~vbn>Yp}v?FWL%600Z8>-rqd1waNxS;0C`xO>me -z+et{cT_dW~oe%FMX&jrR6pEu_e~e$ThAbN3KiSBntLDM~huY3K1doraJN|n*MXbKe -zRUuIRIkSjtt^&MY*7y=LD@P6xm-cp~vs${NikzU>IX%|jnS1tK(X*76h`-0Bu&|_> -zoWp2>i=PCyXmIh^ec$VRH1`Ohb!x145J8CxC#H|v(KX9K`W+H!QgLx(_Kg3O^qwac -z-uN;EsmnwUd?DH?FEOA`v;A%hz%~q2oPQzR4|s<`ytP!ps7I8PvDSFwwXV{MQ4YRN -z7q^Q*>){58eaJwAxWuRfM+?u=WKWHPWD9?CIF?m`tPd!lw+n5vSr&OmlfB{E&`ptG -zLM6F;KMl7ko|cFruJtSf+`&0Wb>MFQ!6Z-RKuImaRE~+Spkx$21#3=3+5`t@3FNz2 -zvhHYUnr1P~+5l3nV$6(>uxg7>cv!EvD%LUYC>K(?Ng>@_UD2LmF8>_nfxOd} -z8jo<*I{R(eWY={IN-9kv=hw7hp2%qrC0qMs4tF9>tGVp1fub5M5`HA?2&tg~PmJ>E -zY2qhSk&oVour;_J?f8PemO8(mxxW6tuo(-;c2j8ZIRmqE$v`(!ns2g-7P|6kblEBbu0Njv=y^ElTi}?jc*n9j#&$KwQdd__8e9@ -z#vdYYXM2h7ELG5cgY~@gF;fQQKToq8rF35%ls)8)MjH|~yXW3&zo9%t(qSiw&_@-X -zuRYdukb7?Zp69(%bJ^%%$4gkM?z@IU$0K6!9W)8+uL`=N^Yrn6m1uJEh6^WR4q9-A -z546$Y3Io=zFdLGtOCs}xP`Ge}wV}w%)xhGwKElL6yO_hK5*Iumza1b^lyM|p7mxjl -zG!TO#WxX8#nlPFu3QCG;k&*?w%Z|7ji*C-M(CI1Qme -zuP8%0%LdG)hc=Y7v>+ifa~J)fA|Q$^EL(VtMG|@59`C>CJUkO}!}7^?u9Qg#^(o!L -z5eOX@zUOfUNF5g|wb~lIJ(r1|gj9g`fttl~ -z$Bfa*P(p(6Qt=lpT&!?oxnJf@7rVv9Vw_j~=e+|cqv*?&CQhI;?E#jS1@;D_e|Tze -zUOs(Ru#+Pm3to0~u212GCpYGhd32EYqQ_~wDvXEgRC(|cGtzW%b6eCz#^3AkbIuYe -zw+`ROI&kcL

GT-UtTp{UnoLgD+e-dY||YxgxB=LezN(dB9!nF+$H^VOGMkI;e` -zf;2_z`NYP=amv6h`~R+IxcvpkuSU%^Dq5xb^(CnsXp>z2<{z(nEIa-O>=;ekKVZLT -zC4)H~`^7JmA>UjNVePwSZ|Tl0c$3DlEEau5h}tCsl8VU$KJ{-t`|{+^B-#q$({88tv}&Ar&}@qf>rUwrrO-GyF*EVh4rUU+xwti9=q)<^0mkL2H85Uup>1$*bx -z&3f_DZSeJrUqW+!T|{0w(eg2H9~&$G=GpVb`2XIb5frj0>Y^!O9uF5`U2bJ@K_<}? -zg%;1J!kPzNd~;K=jc5K}|LeoUO&*i*E=aZUV6bWO>^0t)FPC@fbIz-K6_;qp^#)e1 -z*|4F<0~#UKlF43raUW}rgDQR%LB+t018=$uKBp6Tb;vWkp~=@+*-Bq&;Vwe!qTP#+ -zC@#XtM6(Lu_{v5FcPfBlVH%^e5f1C`%_gnm1+wnPsX|N_2WAR}MWU$POM!=#iiK?v -z!>Khb>2eGjFDXXV5eW8#(AIlBCNr^UErTYG4PypfN>sp&vlKi48eedg!LCA2oI9nV -zVz|ZOU`h4<5~d68*oCfq*yVVQY7QW|feB=)2uiHT<}A5cRz-5F;gVL=#0Lbt!ogd9 -z75qz9Cc)bR_{cO4;5$^Fs~hFX=bf;g|PC#c&ngySV#ha+S8Q7u#K0cV?DcQTxJ=pW-Yn!yF!ZXPf~7!ksS@- -zl6?d92GvP0f^UEL{>}AQUw-}a`dcEvudly)ae#lmg>4U?UVin}%{Q;UZH|?Ea|cWN -z?dRhM&#U}rX!5K7geGskdFeL!_0Q8}A{#j2K<5VEW@!kO_YU`X6$f_RqZ%%UxHgfQ -zjs0y4q4JzfAOJ5sd`^30uzlC)mw_?@!RitS3*w`K-F0B?cgf06P0V>$rmLn6)2J+*C?Fco -z_K%K4ucTNUH&SHH#;aqO))evv=guH^=hRHxFCW^nNzt;eL@Z(|yIzW>>ede)C}ZbR -zsOoU5m*4N$T^aKIxJ_mY!f}%pNzN9SCdjl#T -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 -zD`SJmT*@wEmvl-aiV#kR1KXz|AC^0DOr+f -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 -zeqs-G?jzM= -zZr&CG$P}((_U75<=)|`y*pWYKRa0Va-4YNs1xpF?Bc0@70s_(ICZ;to_o+2&f=geM -zz`h;}3v?m+r%R99YWk&-yRFe>mu6_hSW71+huW-z&`8|%IOn^j3W#zM+2m?!NSH@m -z^NP)LhJZkNl-ZK@O<-KxgUc_-L>TrM#WOycYOLFGTuB666;3CbxZSB05B3%or4qm% -z#&1UYfaTs_zK7kt1^}n=F)Fxg53Q27uyYu{z5V`OKkzT7qFs{apLuqH;RlSU0%$;E -z8a0Xw*D{Ov_-LCwooFdXmRcL_jlhsAIfwHf17Z$*rR%vfnx-r-jZIZQJb;LmAV^{r4!YS2N!!&D%Twd2#JL>LrCTBNV_qMQKF^bFmS%P@4vQPEDp)^y0)~O99wS@RkNxIG_!BlcD=p`B0>-!tiXs -zcS`k8H(8O&7Kw#Sdx{bd1C6PcQUfix9!kb_EVheCs8(cMdfA2|(G3~)2jrT(qu=bv -z!+HYKnEe35k4eF%Z7d|cY058EVwDi -ztpG;6EEdYZf^UcBVunaCN^TETh6-7>IhMSU& -zHaL|T-g^344vhLX@O7`rk~B26ZaaG31fr$3Nqp2uBrP2~Ny -zm59I0dGNnG?B)B*g-4&9&ka=7_YwuuFy~4}fT7ejMI<#EN2C&C$F;tGL0g>C+nL;8 -zG39HuQN=JdYnf+9hcsbjrhomgrfNw_n+_kN^%Lv$%Pb&<_egSMxKq(waUl;Q2AQ_D -z7t5R6^0LsS22&vizbnv~zzvIaY};*GlpDA>CW@oX8I@?X<6lou4^5gi%XP|y0r_Nd -zEeb7?awsJI-QwRkU9W>i=IF5lLvHlm&@>JJYI3I^P_N?;9Vw4&gG(f*5VH*fw$PC~ -z!+VpY#Ypd|gD+oRzX&3cWm6dlyN(RXis-i31Fws9^pDV~a+{#Q9dwI^9LP&gmPD(^ -zp}%hsMJGo)8KvL4Djlv%wm*I -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 -z@2dquPlz7gyHAlEhLSQU&9!yRVS>;I&YD -zYui)Sc(dfIZdB$y?cArvTieFlSs$(P@pjhEn-@nN)b(RbF=YGYsEF+B&sG-M5{}x) -z_B^p=6FXmtovXx_P3#`%R8EN0^ucE6lKbtiO8U02xIE^OtF3eR?;vYnW#)~jvDl-<*gs?VNkWhc|B|1j`}`DJ^c -zY-`H)S=qicc7hu_-o}ojvGsMQw6XOywwBh8V`ppG*%6Hf@8}V`ltegefsDoEVv*lrg0z<}rgz5e$+jp|ZqS={hrycfWxi?NRtu{BbSmaL`BQHY@P -z|N0++pJ~$dajaY;!m`Xp+iTKoQ*KAUxROwwzmY^|yQR(7ixHn8Dq$$*Cg%qXqz~+sKuJ=m4Atbksq}YDAXl23se7Xg -z@dj*0isB!t5e8GIImYm$5%`ZtUiIEo(s`qhAg@vZ%wc=f9OhoeF>uMa;q)xrrzjb* -zng!{*Rgsb0u)LE$NHj^)3ZAf{~QtVPS!PK@@ -zvWR!Qd4gM2M?Ee-%@fU5Yv_81VssQuVTpJA9EkWG#|#ctZ)pcSEAA2${R!CBAu{>B -zsi?LU3imO}d0&a^13DVdv4qzj-duiB;y>bpdV{$JbNKiLODED;zxhH}If!3dwkF*( -zCqJ#_8cHBqCPiCa&|8ghN8-PhL5W)Yo4`HVBXC$7CQ>wwjEdn_0@H5? -z^lvALb7XK24=?j_$7`hGmw^h%^g4%uEJC@)>{p$$??`SKC!;c^5cG*e&kCVdoF-yKcfg6eb@E@TjFM~t`b-OJy>OG1COx=ysKUePG4ev5J=heF`oYl^X1^$4wwt;do^~vV0*@5$8JD-$xO%p -zr#++kBa>=xqGlHsZExm5;(1*a$k>>qWwVNL=9KxMD~t|u7QTvTprVmUS*KD_sTF-( -z5iK&a0?HcHd}Qejl0NITs6L`7O#4T+inakCS(Hgr+}({xKB*4ie3AD1$SR0p{piAt -z1T6BAr7>mRM;68XFQQEgbDP|LH~?VVor~cH=640CQUX#0@RJo#5jP+)IZp8Fd-A?+?pH} -zf~ZZpn;H~n20Z -z0MMHMIHQrBXhgl51_(u*$agZ6QBzK?1;W+kUUliLMj#?lmwkULnZriJmQn4@|UFvc87@;h$(EZo22`8ojw$FBJc -z%;5KRS$z-e{wdG~*cK5VPs}1P-7BPAS48I_cX6V=b(%GBcdTF>?J2M;6#VHdu9&k?8-Zwbb2=eNtYI+`Y4HL-0fO<*|5BZ*1hY8*RF{}2 -zRUaSqHX>)FbBn;DJ4A6O>d#kr=cwSve_aVU#yCHC0#8hC>AlT-IkB>_BJL_rF9FZGHk=@Liv%nJ(Sp=KSd-U58L4QP6bXll>_B8;n;R~D6e3C2KNA<< -zuU_rf?CCufm;$2iCr0HJfF)jFu!qIEE$HN&5G#%roC$uKV{kz4^u}E1D8mbFwljVBdWCbK -zK-=2F>ubPD4*Y~Gw}r)Y<4@fL`P_CNHV`QE>>-_bmx|yS-9NCY)9jya(+B=@@tLhPFZRWdG<)0 -z9W)Dmoe8*dAJf9REE_p{;n#JEKB0i~4)a^kWsv+7XRg(;lEh)p?I0qQS%5|!37paF -z{^&AAsqxU`%FP`DiFHoX6@Gy%4d(%}hdMj0)-B3U=izCRM&uz3-QuKq1J9*WWSls= -zK(Zha#_Vos0&_n6$_NeTZ4)C?nGJoC?CL>N#Z6jOCv|FrLNWvFGjGLFma{mcBJY(T -z4LsZlW*z1&T(wzrH09j3Dj0`*nr0W8M*-l)k3#zeia=&puM5qaUvqJ)g}xH!Pna!P -zZOW$nm~zbOeMCtXXM99Kvy&cKZhi^2aGW{!r&-+ra9%FhnSSn8_|S?hZ6+0VK5#90 -z2gGo68lg@JcP9(ZEutdS&6KtMu?)iq@WSkQW;FhL(z48M6b{jfc!&ATkX&(g18jLQ -zzxD>myqpeRTfjO!wxDZkG=Gcg!m14!`XdTI5*$g{{K#lx_C?nfoy}gkrDhjs6S&?d -z`R_h3Y -zR}+<3rr13KqaOm5&=m4gaxX7_i)rj}QnrCFhr6+3LKBV4a#;uyh6vHgpkL -z!?`EIls85hWU+-ZzDHMJG!`mFdCSKZ|Cn-gTYc21GmNgXIBmf?Q4%E~9LnaACGBo_ -zT&YJ&luWr=;A$=&!9?^*qK(O7Eq0GBuCZ)>a>sT}H$|iaMS^6UOfQQ$)N!pKpZI -zuS=FJ{DpOyQ?dmBvs3_vI^v7^VG@`OLyi7ya^?Wg>MW+_%>nU^Im+w^gnqV6%f8FW -zsfpnqg*26P{y(c93b=Gsn~Bw*Bun~kjW>c57jh(kt6K|UutD&}JoBhL+p -zB#dW=ouuotFlhnY&ZeYyjuIa>o!qIfZ96#TJD0vtQUHHkHo^Qaj -z)68J#AkM$g$hpQ4cr)gFc2{;g^n{N4$aVnOlt;iQKVQRC-;|HxC#vwBW_Zo!UQ`T? -zGk$J5$gg@1(D_rhV?*gVP}(4@Ggvz}pb;mBaTq)DmuGw85V-3M9YZL-z1puoAFtnm -z_o7+%0f9o3$ca)al_AL3Bz)Aq=p=eX8pOp4<-BUTb9hG)Y?#4~lZgXnUd -zdz -zTh>pr`?Z(^9`O+JzpK@VADIV|rQyl`WJtq?uuSY^8ME-G -zVN_KX0}Yi2qqGg^Fa=aGo -zVeskP#vZ*yobo-3x)bNo7`2Vx4nCZZhR+=lw$C|J#NnyMxQxq#={WDRjm|}R+C^)e2pvE(&eePNEdDna`}t~d%gsLs -zCzyHi~+44ZA7iUS^{0yZ2rN*jM*HRu1Mr;&OaTC3a+v>+)#IIv1PGFTI@=`u$b%u -z?97oEDMM}VHFWb!EytKYmmfO~R&n-l;NxN@~1|28)t%y7=r-B(ZJd6S%&v4rGlMWBAqw8AZuH$juoT -z&5oQ*QQ1NFvru4K3PME-Q&Rw!rl!GYcdlYd;X9bOIk!`tE`7pwach}8 -z%^uLt)n{9gjRSGE?N9>gt0}=61(-#-r+mEU%9)s2!|i;omnuWo;aMX0P@Ul)OI -zNZ(BpyMAYSb$*l@>;z@qYwY>O+oDMqZ(|Y{Q`-O-N|}($`ujnu@;uGf_d3Nx{~OjD -z*5Y1{f9^-zA40Ts#!}&w6A| -z`5B>hwN&x|gb4QJ^0s<&`Nggm_kSzpJ%%mUndd&502n9Q(PP&mphltr_(=gCr60HI -z?%TJ&|Kq>C`KYQKWw0w5(c%TK#t~5#x=ciaEDv*=w$hAGnhe#nn7a=SMe*@{p*reM -UC_l`cGP{ER2LUsghBy+jje_ZQHi(p4zr;+qP}L|9g`+xnCx;`^@f#O*WZlHj5tx -z2?>SnXaode;%;PO?`&ab>*!)_;zZ}{?hJIrYvHuTmb&{*eP+bmsL7gTyj!!t)sVy? -zcU5IGJZ`LXNEZ*3rSQlE>{_W>^L_o>Wu5*46Nfz3{|N3rqKvH$wGE# -zX9=J8qdwvDpuzq6ZC)LsC?Wi>D7q#*^e&Pln+YrOephdph48B0)DqJMbLk5cj6@6u -z^U49QarB$d5eM1H_!HEigj;d0*A1WRUv{?nkrWFs@RftAj8bl05A?-XWEAl04S%fS -zfNh3a2xa7i*o^jm7CIAFSFNC8@Ch#@{x%s2_lkPR!fS -z*nYr^%^1ikrf}fiN4Z#_kW~8ivKfbuq1bdMIU*hj_(gI;#(Gpv-QaLs@DKh{p#lxB -zP+?Qxi01KdK3gMu#Q+tj+GIB35yF(OW^6GX>w~D*aip5Fm~(>aSbjJMB35k7( -zI_(P9_>SW-PK+m7&**;F>H58%#O3+@dJnGFa -zeINR%`LKQK_jvz!27vGS*!5gJ;_t%g`TkB;nw?(W&d%;Og}VU!1P9tpU~_p2fHjWK -zw@FY(h3YB@w@9V_if40imS-F!)O~T2D`L?&+wYat83^8fF7V&t)WZpVdMuS6j_c$< -zA>B*vDSDR%x6U~v3yC>+U(mROC-|U_Rx!vCF8}B}6`OwfX4=w)-{u;Xh&fns{6(=g -zvf^qn1xd1wI#3OrPV$3o*NaOO<+r-7r2srqfcM69zd`Y5#Y|C(d__&AvBC%R=5mUn -z|6Iqs5IKLV%q6xb0!4aPf6R4oR2Z^u7R!y7$~ZUdU6K*u~kZiq?S&W)}cRyhP=EG5HE*aN5iUkg07LGcw)AV -zlDRI578jh+X#b%~az}DR+zghJXVGoo72aK)&vT^{mCJBZXXTT&is{n#hJcn8yp1AyHYGw@%+I+bBuM -z`NmxW$adD(p|@_5_KGfQ9p#|hx~a9Ys!wfH+%z3ed3Ts7v${Aau(p(?gt}~4lFwh< -z6vKK71{;`VEN7#-7!oUk)=8B{)>iDSM*~H|P|2-2H-@IPdP_bdE~jD1&9Qy91^l!6XCowo -zOM-WfY9=+h_S0s#{cl5CIQKri*z9$vvCI2nI9t-=TbARLx`^^`2Iz5ac8E21Yz)-vs)+a0~OK= -zUZGhxc70^dKqHbcu -z>FvUQ*Vf`Y@~6@2$4fTVF0i1euzCZezO3-3ITqP2v=nEV5F?huYapDMNqimm3Hee2 -z=h#8fFCJpA~1Lb2jL>zfUEa-KB9%3D0;{WH;IF# -zd?hzNB?`iWyLC_qyU0*A-u0|t7f&=ISg=C$8bp=i>DQI^sy%uW>h4g6SgK4uIw-q#i}_Agw;#UZa7+~ -zP?F5n#CGs&iqr3|tx9x2?%>f?m2h0-bOo_CD#tg~?~h!1N2 -z(}>TXdhOGs`D%^za&Ecp_tFtpe(9)z_l%p~rRl0lG%at3+JK#PQ(-0AKN!XaZJ@Sx -zgmi5WF#oOYc7N6uDim)SU}Z2Jbt)rKCm={U>@v8fZcf-X!XdJp70;qLo^J70g;<2{ -zD~39Bv8mOltniE(Adni~^t?pWIKVUM(7(O1D@Ga)H^ePzKtYs6KL}`bNv8R%yD1n? -zg82PNDg?dDNc -z$m`M4n4aZIM2o(um;Gs3T11TorP5v0psAzF%OL5PcHK9>Kse0vOS*BLQ;!?x8rV*Y -z3F@u5MG(s`v0r+5UNiVRK(2*ZsV*5)c)(ZK|7YLk&$!;qd^J$mJG!^sEt?Gt>JWoi -zSCG#G{t7cB&2I8!!_9Y5U~ObWon3G&+c5dUMrS9rp^UYN(sTjtW0M82mOLRYy3g -z$7gZ!MsZ`}J9HBGSOT+XHBtEWB>iF_BevokoN$OWIPcETxhxzwZ{KnnGMZT-zwL5@ -zsh^UKp`W0AfNHf3?WcnrwTV?nz1KmphYUg^@))S~l7CE7_b?4pH#G(0pi1#cVxg!% -znPoHclZbO%JC+=$*%|Bp)6j+cK=MvMsV>7j`XTM1%-rLn -z-`@pWi_!*2>M))Q9?hm~sY+*MEvi94`k7nTMgUdXM2~7!q3H;{C)Hnt%uMwmWD-j97?!k{jutv9aXpf& -zwt|v-(b1ih5vzkVtI7DDi4HpD>uVw6OQ{yE@StBvkqRl`Ic-Lr2{(;})TFd1J0=CE -zF|kdGtLms4S&{T#6OQhX6h)n&DSkYo!*2@2eQJ%28*SVB}Xro3nx_)%z}*imsEbwcxII8uFK18g=mfU!c#b -zv2(_8k=Ys@^7+4@$KrthQ+1r)6es!lf1%fV;l?{*FTE&E^5g%)uV2#BcNXuU?i^TT -z62+Kq4@w_V$WAt$h)e}`e}$$01g(Dj1Ovkf&P@MY+Q){-pLAINZFL|N&8n=2Gorx& -zrl4&Pm!F=+;MxSc`#0jwi|asIxl`CIqm2;|X+6`;Yh}s5fdYs#-4>G9PicMJ5P%X^QgF|?R -z8y|6$*bnpJPECzD04@suO~q`5R&LxL#Sn(DDnt-t{m5cQ#8gHI%^{l|fNgr-p5o?Y -z1cPY9BsY6Za?W?$FS~eomD=s=AIWdPa3Oq{U`tLs+O%EJSTqt!S}04{FxOIqkOPK? -znr;EXwAHt)P)--77t~Q$*B4=oyQ0iGYYcO=HHz3i*;pmYL1J*Q+&uL?o1kvjD$#M1 -z;6%B|goWsYh3x+l+5h3?G85%e|IJAKIHg`;(77d)=?XBujOP@_JbN3X^j_1lyHn93Lh26N$#=U}1Gk`#gZ?o7-aYCg(M0ZLFDg0td -zeHUK;y(3}t+H*6DpXeI`PORs;{BIr|5JpGbnR4Jv8#hOJ*-C;EOkzwA|Dy~Lp^R9< -zUA@3JH~5xBX~w-+SFj5?;h8BuSTvvko;Y-P-}JBMfnEb~Y}?(U<$9$@C9`~w1kp5# -zhi)!2#wYMo=aBMbAV*t{q1X}lqv$;v9u;usG4To@79`0>|Fq`R+$=q4@-V*8W~c-= -zzf|z<{?cuT5ch8`6T3_tnirlB4#?s4XX@l=Bc8rloVJSSA|F`-mX>uLtJr-{c^Kx+ -z88ADDS8+EAHM^r4RdCz^$}`DA`%)hsyjovK}?Q{PEFQ7oXMYNxRucqk%i}xxnJ3!~&448TVWg}`Kz{IJ>yq@i@T|^v5|G^`_ -zoP!W*9<@)RbY+fOh1Bcr;%%#!XzX#Vg|{2An)ao8!;xeJ;ua6WaEECRJ0!w -zrxjF=xj$0tn{Dr$*kTbJe$hg7o)cMmS4?C|jE)Ef(+RNiwPJZr%5>$EvCTZj<57pe -zz-&Gb#nTF13@s*rkzKYrEQW|6`#m=@;YNuUGq*2JAV{dyl!v<(+&Ev0*1we1E?85* -z5+7Jvj*gS~5s8Vvi=H}BgnyoczE>GtO|h-3%pNK3E)xe5_7nv5bwO#%%4Xy_qqg>!caSOBt%9Xz2-X -zR!e%rW>%;Ea3M<;O~Tnz1Bsf|7+XwxyRkJ`G3yqTBug@gQp!&4OFmFbGlXo5S#B7t -zVLoHr;r0ZbPIpzm$b#0Ns9Y+KIQBKXrH_ -zb%AGH$X$54TcbxsQ0KJXIpE`5Qr@ru*;n`&i_`~~_)4gbgsDN|K#Fy7U=97u{x=|y -zQ@ybpj5V{Vb?nD=K!MjAaySGtLc7$73T};lEASxWwiz4rQW6`{bUb534nmm1&cDXS -z#f_-OZ2;ok+x&D>f(iVL8@vgWBO1v9X4G(OuX1;RUaw#cUGn(1w1mU_Wng8@#mRs9 -zPW;*zEE~kl9N?llCDHhK>QT5`?1L~c+N--jwP6$p!?5pX{ynaNLZe1FcaeZ#nCpaG -zx}LTS=%e*%AMS)!!x222#Jj{uJME9XF2W7|fLjFvx&xR4JTiFaX9Rl@-j@WY@Y`cL -z?7Ja@fdT8H$7Mb*?NBe-cthTMTpTJ%JnL?x;iogduf0qg-uV{V;eE -zc?ivO+uW|%Q3r0Ckt -zSxsE}Xo8;Kwa03m|J_vru=Srri6N4)S%|Z!K??5amU^g&LgU(C_e>lDLNZ%k6t5#; -znb7{FN@+&{fbxkX0V -z#Figv{Hq(5R(Hh)TQ6$e(5?G~E@J)Rerd1oKeomYc7mBzVW`9{RwB#)ec^6@#>j@94a{;sZCCw5c*;>QpT_Z -z1lw}^dvohEbp(czDcqXMkdY=($rjE@(F9_I5mN)^bMRL8D|HcQ=t&^pK*~DZ|2~GE -zjss5L6pL>~hPh`!-+3{;5n+BUW_DTYW{n{mX+YVFAxopx(tedoTYirogqhNbaDPlt=F9yGj1qoW8|wk?2g5+=U;dsLX4t>Ed{5s&UsG2YcIb? -zFCX)$*eNygCMP}o3{tOdVbNjCC?Qb^qf6KruAIIbPmgN73>lH&L=yhfP=h|_;Tje! -zH)m>sRGbc$_oFI(G(qY+%tlYa7LIHQ@o3#tzdg90?J5!3z(CW;7usuh{jbsOdg@k7 -ziubJg)Qz!EVg$*K9YSM`gLb -zn#R~vvrYQ5h@(K0%=U_?PGb?HNonL%jiCwx&pDZ=k%f$%a|!=4+IlwL>a*FmGsSp$ -zjQ*9*Zl3;rLcpY0?)vPLJFyq!*DNQ&CWdf8P6Kn?*DB(CP6MXLk$C(Oe@W%l7Q1+Y -zshdb6#wa~r`sdWmJN(tZ3>2AnLv_9Ex(8$$Dte@fE|O&?_D*^*UJaG$=Z7#+#Xf5P -z?!0&bL8giK!qt|?Fr3+?XJMw~phS63HNk1I);??ujZ}-Dx+Kcwb!HCMGl%U*dfHZ=HU5k#!iAwqfe54bfhyJLzIO>B6GI7OR0IvsCdvy`K6r2_Q{IneAyY -zU|sTgM6r9j`f)&OKaeU10*qb)F-9C~q|pkU;GxKn9If;9k -z+9w0`gK7U_GPsmJsiQ}x;)99usn|X5Ly2!UV4Hb4Z6Zp?$6;VXx~{BCr0gM4WpeAP -z2lYu`k##lezlHy!g@lGeB`M72FQ6Y5jxDXAAEpoa|NBxtnJAr27R{we>gbWd`DCy> -znGDRQNeb(c{U_1=&Rw -zBNPU73sn;0G98);rmE%=*Xwrby*(et7uU)GOD8u<8&WwGnn)~NeX=N68P(?`R#LHt -zW9TY6dEwwfMopF?SWEG6&pZ=93j|mx&?-KBvok4n6}xK#)3GP{yt{AJ^typ7i#iPE -zSXC`hf)m$0xdAkx_R$SxH70LiknZ;AB~Te`UH?V%@x>5Gm^3jLjyMOb;p!Cm^#$+) -zd^9YF|AfMrm;Vc6uJ7+I!uq*n7z6jo2toiXl#yo-_(6XyL*C!0L}q+B3NQQzSzPA= -zQ13Oo8NsFw;N)Sn3(dL6U8O<_p@s1g;tj;VN6YCEmKiwlYv@2a#~>p;Xo~5VXYM(0 -z$_m8exF9ai=aWb9t~*&=tAN{Zot(_5pWPxnSsF5zHLdV&vsS+ZRUYQ@L&neevZ -zM7MchSC~xPF~p>D%pQ}t_{3}3JV97EEgbLw`K -zXW%Gor$*$NOdm0`l}Qy_rgF_DJh}@6(I&GsWUrmOKDOhxW0TkQbN?awx?DYudAzuI -zUc~qF_IW;2)S*byhE;{}aQH*UzHMrR!9Fs`76A6C=^|$GO?V -z)8)AX0KhyRZ>6gK^tapyS5GgeL9eNQ04mOefHX5Sv6)?{H;WpCP@dI6uMSft-O-g| -zj+**~1N(lXg%Jo(gG8Ip#gov<61EnhNkXOPm4jtRIjb<|$~3f+P{~n5VJairtgTd} -zKXd_W)It>K;Ln5x@X!WaD_K|Gb6&FAr9>&3I%ANY0&25IF$NvxVtDos3PHSg!LNOa -zJAkRU{!HhCo0Gqf?ZV)3T<*$ -zIIxI)CBwoW^qmdPjFw}NGV_}f`W9VeL{n`Bn`B8e51|#%&*8OVKJ1~S9MR=v6W{4l -zT}npGlj#_b6JQ5jlF2AqfNeL&Tg(YX>#f(DaHLbV6^F~tSP(3OeiQ`3&of=yrOR(y@z{;#86aj<4!tdN)ojNJ3b#1tAkMQK{+P$N -z4>yoV&U4`$i6^Akj#ZFl=)?jF=M>5oD~+*m>1vJU7)%zEVHFqN-yOvB4H77a<0+`a -z7RMMSn0-V0bpji!25naPa4ij=C`H>~e%WK(QWIFXfio7$R-G2gAEW1RB$ygJV&h7j -z=Q3vjjvf9g*8FAIp^~m*10W%;Z8_+QE!@DK<0jIVlu`Y=Ki=@#W>SmF&&g8bVpJ(t~v@-#mtXvAI-`H>?t65%tZnXHzk8EYn!L3Oq8T`2GyCqK#FL -z;oqFP>BTTA1MYQ+i5HaR)Q`A0kH4m0g8_zQZq!KG@jpM04 -zIu9>sVA!b{wEbL1QLm5c^mKr+LlO%GmY5q-4w#--FwP~Y))*4VuDGOq{dI{`PgCs} -zova>q-?qn3dWVMvrQ!8FT77SgFVd=@uxK&uOyq8W52t|%!60DD?;MBypjHalufoWl -z^q$EI*OKuXT7eXZWIV9u;gnd?(ONMEw2F>{6*|^bENPn0?K1AX>8yz?dcPqik`{1A -zP$N30uWdUO$a(8!wp382jCf`I&BQG4#@_^ZA?_3F__z6*#hqLcGWXD3%sG?B(145S -z3}0r-p!leo<2Ph1`B}xzDkLnMz)^7VL}6?3ClXPTIgcBPIJ3^A -znw#Ip-a1KX4};+Tapui;lK>IS#Y3TyU{!F@#ep{yQa2&o>gqUQCsj{B@ceKDao-i}cZ#Ukd#fNWvE=VgJ;{%Y@X&TBb8ek@+-809EAV)UXqAtS)OnipFi3Usi;YLa-?+hR>Hp0&FIT+bGok1 -z;7N7k(JEZ&>hfq7Ik>+wh`zov%N=4nZ@TKfzvZzo#|b|wTrBOxKgajptKpINR-Is` -zR4L!|V}({;bnmeFAc{)LCSQSy2a>0+=4&xfqwu -zK|R6z@|!*zAP-py)wM@SpKHyKZJ8cTkE$N3Sou|PosA4U{u?j@tns7}_ -zp}fWQ^h|4kjq!Iw7>9OGB^Mdr^Xs~pc3GIBXn4|OiQ^9T9$)qQb_30_jp>45;Zi*`qIUjy -zC*tuVuDcp$_Ak8d`NOC=hjYSsoQ1vy@tex@?ggvJ1L*_xb27atNXoRCUj{|sL>VT% -z3U)U_d5;wTmrA<==>}04C34aWC4AJLT_$FdOe3pVGbc+%@eUBJ6wMnw=+7xxWrHr4 -z7u4T_tZn)UeTRt;u7@I|m(U{6v1T)IGSdlfiivobFg0DC3lu-~r&pK;w@*95x$hyk -z9;1mY4F0SIl0%!dy%i~k*Zu-A3A7WGK|9Y_@?u0zj=QL?6j2?^YvQhmsZBzb%S+0k -zXldMARij$_%HS+e{@O>eOoDC6xg-ow5gy2I@+ybWDb4}SB-_UM!kW9v&s#=x4tO7fvMSh=QWL2_ack9kZBOt@B$IOEn_T2JZCu)#PNVve$MDBKm;#tybk4xR3DtpmKA|wKtcwhGUa5)GV%$R4+7*|UD{}<6KIeY6%I;;vZtNjp -zC%J_&{DhzY=IkTw?>o~gvg>n+uHkBEwz-B@vkwim74jd6u*6E~j+$sssNp%61h9b# -z$hek}_QRu}8#Tw^6v=tg$|8A64F|b4(I8l)R4AKGBsddom{HXAblpO}OlIwzQbk*l -zWyO^pCh|WmPw7VVdpeTeeWszI&cGJ3(y71-w5p8aF~R!CpFtAr#9G-qwp~D>*gP?* -z2L2`B^`QvqJYlGKEMD+}O=cfQdFH=ExdN~K&6+oESQWJv-WQn`!1|gklv;_PVz@>! -zvPGZKoZF2u!S9sbK(lKSd`*QA%c=SHH=e`dCyCV -z2Qx`nf(a3{#{I;vsh9DdN9~3k(Oq$aGe5U`UV`5?_Qj4lkOi#1yw@Npk -z`UH-G7vwqwr^eCYz{jcZs@Gb*2C&NEHHsZJ*w7L|u@&cB0Lix0vRKb_%L(YtH?2~? -zx^e>QFKsK?9{2^1_Q9N2ilX+IGB->D@x3h%r}7Tl3S`!O@O;~rZ{#`Pu|Xbj>-BZOCibIW3IEhEf-qj|~0zNeMoGaptft#%68doO8^q?6G7 -zZU70}RRe*zFb+lr)W3v5ELDc>71z<8D8WsX+gg=L`1H_XIn_ztZUVF -zoM63M!sn3LpMj1`iYs~+QD#mnEPAm`z~K#D#y_joQA}2-UepBA)n0;#8UjuUR+wY+ -zlKA)l?6W;x(w@Z-CbDfTK?E?QyYY&se<7hr&@F#5dO*XyZ$mXB2)I#wyv4~_lukqU -zRgG*ZZaM-0!iqiy26yK9)ML-A;Bp5+aCT>)1?KIsh3)XkE-y53p3>Z3%x(mJc -z)La3Fhv@sf$FEi0lZl<=KT@5CPM`i^bDQpNZaDIydt8Y|(vT6UMSY65ZCR;fvF=nu -z2s_i44b+x6aF^C%E1S*$TZpc8;XIS7Vk;&tPG8GWi%n5^7g+T|_}7A}_CBm-qlrWk -zszp;Uc$I6l@3_UgZ*$Ga9o2?+5WU^c{Eb)pRsRtxt$0rGEr)6bl)oKi6)f^iMQw-R -z3q-P_-`(yhYpfWz#G@vyKw0SaLawmNB9|JgLOYJ@rm{(fyM?;f7AHInCD<;?T-=N9 -z%^X$^t|*by)9-mISq1HF9{dX>f_0~hEW-x;a@LQp9q@UH|^%U>OQs_}<)Au6QyFQn5zR53(8cf_zj+D^dqg24sI{2K}@ -z$Ld%;mTHQP)!C_rMjt0@>Q#L5TYk~Jg=2ir`^(6j^59nU@dq|53~$ha3SMXHNM{V* -zmJB1RV}tDE+mfL>OqIJH)pnR*iKiIdaG;c4VU(Fs2N}iT#tkfpbl{iD@aqy9%)$(n -zjVfN$II*q94@!$Mn$@xzhyhd#sGx*O30x&&6GQ;Fxu@j6+k#(yT?DI^CB>zVt@q -zJwouG=YZ^8FA4EK`b<%6iT4j20_o}TbPgHXzFLTj0L`gei+-@$L+}m3|4yn}bFbwj -zZPFc!*y@)l;_D_qm27ldXM+UMnFJVNm*#%h=@J3wXZ8&E66uDcxvvg&cgIZuZ+8`Bd!mz5MaQ21r -zypRn9rq2w8krl_72>Wm5npHU>`&R}dFy@iie!C;>PZbq7B8~(AO#V!zD$i~*69)`r -zsdgvo%D$QF<+p{#8~*8ZhW1)u(ujQ&{}yn~I=0t7-~+jjXcbP;#mqRL6qvFy7B--+Q3}lG(0>SA5z0@6UPw!)9+VVZ=Xgz8|^2%9PScwe>iEfflNV -zu&OR)%0rj;W-Hq?Cgs!ivF7hxso;W>-tCQlCT9Ae3Y0(=fYv5C%ZZ2<6A2O|2ar`I -zCBmnXM)yr`kaGr|pyB4XUcBFWhjgTC4>??SUTe$p`~jdX(y6Nn9!&Yg%%O3Q?MMUJt!F0-+yfF>z>j -zm_UASH4HfQW;`|a@xSXS&{>{B8o2waU++GyT6W@sa5rC^bK>wG94p@X4`+5L?gCzO -zi9TC7)vnoVe!r$F!mvNj3@pFFL%GGP^)Brkf;Tq*JRtr3nTF^3>@`19ADbj_hVyP% -zuT9L>v*@$^hyD`F>v^Zo+sbmEF*x#({seLw{T!vIsZRJnZ`bQ{E6~u|bt?@*LWrP# -zUTD$=f8u~jqvlA5iO&>=4xYa~_`38|iVu-#|mXO<}+=T>cmI{8#X-BkQf2jYe}S5Dwu`U}`-+7a%NPB;=sZ%Ta%pkK^GZ+CPeXjIiWH -zuH~yUxSYfdxc8%IV!%4NxNv$^x-+L84t4#BWor~1HQ+2Pa<9D}ZGPWj!Codd59buQ -zAPd5I^raaBP0@|IvuxjgG)I}>*t#R+Uq-r=2<}YH)!)i#4!;6t{Bh6iHr^~!6xx|k -zj(QJ7O{qO`_FRt7JvMl{Zc2%I!6$#;c}_E*e{Zbw4jKgDTbLljBxSfjAr`lX(J()&K -zt)=`7BpLg{Ul(`>oEh_uQsAzvc|fvmk2qir>#4U#ZykTl~hBCKV$nTDa?L+_m`{QsyT>D%tF7~-Atz?c1$ci-wf?* -zPpuh(IAPlbreHdvkve3}jg_C1du(4mj&gkKg1NnIQG0fLeR&)pD7;@$W%8MCm+DII -za15Wj8o9NQQBVO@opyCO0z>ba;r1j -zyq`Zivu~*+Hc?>95=E^7LT>|7!gAyz187L$JZ=0-K2}B=$`P4RonEaR(I~*IGa_xg -zY!|OLcI3?&cIabcX1n9ql+^g|xXQaRe16lxcPo!>GLX!MXYDBQ?ki1e{XFEKx6wIenP3N9^GQ+&VJ?f!gx&;AG3yQ8~5qd)II^ly*3yFZ_wdOhExt-qPx -zzmKneK1yVIQH -z>#pko`+Fm37PCiuW_EPizDasNAW+OiCBrxBd`8eHXpNLw^ypd58gSDx+>_m_Z_M`x -zpH8@T%17+HR#G9aw%I7XfI9P$fp*xE?8f!HbJ{kEKepc^xlO`m-#_X79=(yR=(E`= -z7rR>y-p)@o6;u=I+VzdG;1ABGT-7C -zUB8rjAm2~BCMB0)7hSrqZX7#YY8F`Z8U!bc?_9|JG&n4$sG*e^I?t(`!);7TD$lX9ST%90BkqkEvjgeX9wZ0v)^m0qgghudmTl`XvH5>XhxO`E -zWv&9Z%)dAl@He9|yzVG*r&)^69*B90ZpT@V|V -zu@JLtPJ;f(hHowy`s-fKg6Es@{_4Yi_~O0_%{4BVx!nY5n7p>Mf9>-ckDj+SD9TSynY`gGO)9by?8C;m`FXwZ735aF3c2> -zlT~z0(U}eIRNQ`>K=)dO&D$li2|hN3{u41&0FH<2#oqMA&av}r@lJkT-%9^vM -zHC=DiW?n-V?=<@TY|`@sa7(8+xbMW||*Dk`ro46XO`CDtLiRB)ukWL3qd -z6knw+Fz7D6-(v7<*T28M>14{ooxK-YQ0+~~`$hja2V@HWr77B5{F^4&hUfev)>daF -zZ=|Y>f&G_Nlql-HUJ{@z*@=UuQ^+bfPKZCLZqZipFXzXZyv)7xUeA_|N2cK7Ty2+* -zp#!k@b@URKydy1ar*~PhvRNVJk`y7a5X#2h!lylRvZzlNq|tDk35Q)nXI=1NO8*Zj -za@WNwQhlEY_9W}r^1CK)t8mjU=8`;KPoPL2mp-kDTpzIxz(OHxx)^`(+BmF16$Q|_ -z%*EEB&ezB%hjykgO+MLx#9h~s7k5^Q(3Rcm75ghZ47QaXFP>^ONY;Q={s-~L& -zX5_!NsbX*9=i&l|3F2cZbkmFpU%|3<*uI$XBF@FmUDSfS@LhCRD9l5+G;3@h5d=rTLCfb>kS -z8~b}p-#+@rm)f~8DI>P(B1R>2CNt1v4`@ -z&aEz`XO0Dq-x%D{RL`0khcZWzSez}=xqcDitkb287+kLcn2Tw83&gMj<2M~00&gIu -zvR^H|A!x?O&5Z$JX0>1eyl!~Tbn1oepst2!gx@Rftba+YU%#WmVzqDtr(>sGwFGt$ -zBw^GZ@GtUF)p<`9rCJ1}KIDxXa6qjBJ@7Q&6zLBHd{La%_!KE30fsQy2%p!hXavTJx8X -z3xHInv#M;Puj#5M!AsOq@bw{4ycxfh`nFQm6X?pxi=drl!5bb{kt$nKDYb;1Zu>Bh -zt*pvA$RkpT0(c~$x5X{g=J3zrmlA?G1;+Gq+1pEckF+{$vRlA#=_5)LH2KJ(;u^ -z&LFnKhijDrHk5)e4kfy(2IF-i6#kf#L?aePH0e5Jl!{iXq3SIvDdH_0q13G*XUUi* -zXOTgsm6>fdSb`_pJ$-qQ?m@JsmT{rgolv! -zTb;306h>-#1_aRkT@PyZzC6{lYLNX{f*=>dv^lJ2lieoG^Dl@>oZzcvf|V}LJVf#l -zmZc_(dCZ(|xOYEuzi3mmmbf$7NXNz4xajxi1>J_OXv*s2JykhL+eS-+i-)U&^OT_f -zXgGKprqW^b#WpdLI?`I^cMyIraV$@vMR>Gb<<)g!HaqO$mft74DmUDAo^8eCH#}P; -zl{p%9ZU+S7OYOtPqg!fgdnTVNiMdntu_3LDO%eLJTX|PV&4*JOg@6Fgz_noE@onfV -z)_Nq2s56n8?g6_l(6Fmm*s3HcFJ!1-R=*Kpp@b!}i_Y^g&NYu%69+S;IKU~+^o{9T -zAfD&fP&CY_O6E2dYP;}kilU#ZBMY|S`$H+NdLcJvvRRRs#STS;cFQE>;~+H-Ir4opG*;|w5*o%Et -zka>f;PMho>_76cG@#(mRjP3M0- -z%1SEs6wm6G3L=X!>ScOVVlj}efukuVCd(-_DTGob)NaJ;N@RHBu_YgXY9Ooghhe%m -z83REN@o$||#wG}nE}*`ICs`9uGz|20yZA#D3kYNXd$&1f)ETD*z2d*6f$|RgoQK0{ -zN1JHbtLVImb%T^&bsf9p%iFwbC$(yv47`rW360dghsll@w#G%QUIIo? -z)nYcl)u=fnb@9Q$U+p13JfGlD_t1ivfL>JX8md*T$i9$NGV^%|OWt6{O2?TE=LoRL -za1R_6hSSSqtAO -zK7u@4S`82O`ArgJ;zc)daSIA93SOj)eHZ<45klec{#ET0k!Sv|eNYH%)v$vD$l>@1 -zEuO2PQ*e}#TwEkE0lE)T!qj_Y;tMlr)bSh#C2fCqK@gt6&z_U4f!&4IMloqX)fkP3 -z0#yA<1{>`?L;UDMyimaCtw-x=6=Z?fuP9xEZ}ib99vr%O`m8DgnY3U2Iqt^m79Nk+7>SGo -z_lAT#({!^onjX@{*Qn4j;93~kr`kkqOZv|W -zlU#S!o3YAkty)cz-KZuh&q>0s)?;YGuI+B8K|1gMc2^)ZRTwaKfv$yzH244=R+yvU -zMH9#?qEuJ$G-bA`o(b&VYoyj+ppvRgaT7oZ8s<2F^eYOVj8_`yJ{y5`=t2nYRk%N& -zjE$lc)di1tX(Q#s|&IqxhdH1H}{$kU0!MJZ#ePHoI^Fm9S{j34n? -zMwBtV&ZLSLT;Fk70T1=Kd~R-R=GbI7=(WK7@C3Mkh$udNf<*EV#$(`niH*FH`nvei -z24cD|#~S3vG#{z{YdJuu2P!hZB`O5ciBg7-#Jl0WdTz}|LxS2`=e93OK6tSm@ce(Y -zy?0a--}eQYL^{$z6r_k!ML=l^NH5X^sUlSb0qMPy2qGdPN)Z7m(xnPW?*h_`bfouQ -z1VV?rNg^K<{r=wj=dCqsGTCRJeeOB;&Y77Qi35g{aORx^JvrUSndc%(T4$>VF0wd| -z3*awf42<}Q!ARJ1Gw$AYfwjoR)js3N%NzW1i|LMq4|i9;WF7A668uw4Z(nKJ)|z;< -zfo9Y7XfUUG@+X}r-GjMI<|IrJ(8b0rvewgOS7eT$p{JBHwW#v61 -zZeN*YC)dNQ&U<=H-lVR4cT|1=vVk}!1)QS@xzfK>PI;?$%1YxE595_I-)5UuU8|6k -zZC{EUIJfP&R}-k-Bj%WY*lA@5u&kV=d=&srl1o~z~*WP;U6#Y>(=_`>^a_JmRRd=$S2mPE{F?PJ_ -z55x4{ZhXY+L$+rX`!X8h;AA4bkMm(_QF1>tBjYheuw&Ps;EjA~Bn{tn>g|vYW>xsG -z1W}v#y7MgL+B5I;s^2U^Zk -zg<5d53Jc%9Op7lrs@#;&SJUMloxptOBSX(8Ql7TE9651q)Wc2;7@mEL&x2o#3%f8f -z^J9@&l8^1^z%goWgOn}nFEXiYD~X7v2Y!UkK{Z{|46VsBR(b`aGG}!)SeY~0z%GGH -z&qMZlP_QhUM!-AWLZAj*DV}vD=CRDj;1Y6fB?a|esP(Yo9Q0g#XyTAFa{;>RqvB^TpP=hLsCZckvcMig#|NJ?vq^DD`>+pT61EUxS!_aZt#fx^JI{U?E&bFFIj~}fJ -zf0f`*ewP_!P;YFgc)LJA)6BsB+frijimOAfOgWptaOkFg!W3$>fd|gFf2c+ETHc^+RN#D65+!MYo#nz2THIQo;oRdNv|K#A5m-#xl`Olz -z+W+0O3Ty22Ra#a;zpU_H%bIYEu8*ba)%lEAqH7K2^W+xi8n9MB(S7Ro -zez4e7v~q4V5Ks65H<9y@)nWSvcXRF&M5c(|hP64UfyO|>vTo$Ah4b?QnKZdCy#moj -z!xpBMX?a2<6LRsr>ZBKYU$k)0oa<)Go2C+a&Ve~|pm&fiwfbUl!0vuQJ`K&x+ehYG -z6Q+J)Oy(6*X?5hGAJW*3k^<L* -zGId{B_PD}mC-~{~b;4$i?3yKeNU8U^hH@up5EtG_F>JV#b(e9xc!_!QQ&^($WoD1< -z#LPtTZ?lc0qc#R_206X)i+L;$17rBEbw9?jl-REO$gw>cGSJ|r<})p{AS1-{6Q`K& -z+@rn^Sote#(p2jAt5(*Aa@KASeH^D5R^`BwDO}))?zBmrd^FV7VyZlaE%G_PrR&xC -z=_MVwzK!;e#96cXHGXwhJp2zqrWEJ=+0V&aHpE!esMtvyjj?vIg=vhqV+|@K)HZ(p -zZnXPa`|Db&O5B}9SGg2n_L7MaZu>2Q43rNRTEg)J!Q?@OH*fl?LpMozOV)3T?DRo|x -zNKY0KNCWL-h7Ubp2p(Q-io7-0)*HPgP~yC;Nq?K8 -zyxc_AGhdVG@L7(DD-&}+SVxQ=){-CQ`75!m7(HHJGjMBgv1pUqHjNruI*c6587jhj -z-|D<|uj|VkQC5)*ty){rrdZsS!Niq&MPmEPZ_nZh<7xIA1lwau!M-Kfvj@C$wfSi_ -z6%ii)zFA7^F`bXhuwE_8cz^e`?=(`cob>V}R$g*Bub4!a5Qkx~aL42<^E?WN4K(%T -z3}jzu0*zO;WX8NOk6m3f#<$g4mDg>st(JSMSaLqAmbB0+;*<6?A#bvs=47a?XZPnq -znJ@2*MQwb^vzI^*&EeJ89+q@G;b&W|BgZ9uAmhp!z#d4jCbR|`@$7i_5Sqqyh^=%6blAi2y!8q&ZHa`I{4o& -z=O%Yt?J#n4gB#Ee4;K+yS$o^}408_GB<5nR+6T@MHqw&HDRc`Zz-7J+^JmR51N#)5$4_s=3lv)5bv$E6um -zBhD12C*a-Umr0mVWR}F)^bpQqY$lACnR^b_t?Qj`dlbg;I({VVkOGgn$iO5OKd@&| -z?W=Vb=g;oya^0|si1~cO8%7TD6Dk6^&-y>n$!!a)ho(`s>l9xMWPv?FG-N48rcGaG -zG0Qxc{@G6Jy8>@01Rj@(g2=|jzrmP<`?_pdTwypCemjWr^=yvqW7m0I8vMWI!5 -z7n{3VuF8{wdvK$D*&cYwyGu`WQeG&SQ^+^1mUUcnP=LJ0;KDT^t-1n}1%-f^z$XCX -zX;c>XU)=dP{VKE&M{WlE(D|sNybpXeNW28XdqV=3S$NT -z0)k0Tqlp;*;+{qw{C-#YCENc5g7R%t3S!+IBxJiaO)n=J3S$A^gT!M<;=UjyW;_N| -zyicQ{$EH8Hr_kUP;@?$%QMDD(zPqfXj59?3W-akLvK`RvWxv_MsD%h%$ -z9?L1bhWstK`{@yj5br~3@-^l$rK(t%2p9@E!Z^U)A^RV|%`PgW)twj3@VNf;v`c@@ -zn9_j`CZOUU6?`mdWJmtDXk+_Jk!mIum@?=iNF4kOf`dtnM^7&L8z42vO;28GfDKq) -zQVskc#9y9UT=e83nqWX|BKgX(P{c*dzqQvlo+>|C@`ivgL3ki?5DQ2d6bBLo!~Ou+ -z4-ILM#wSK+PMiMX_Sb-vfwTd=mr=pTTE=$df6F(u@OAlel -zv;i?7?PDPz?Z36BP0qy65$79g&eiDSg?L-u6HS0gg99N{m^^r<)+@G4J5LA*W{*Re>dfWWm9ZE58Az -z?pVQw;j2i?z01`92NCUAM~f9aG0TP&8w$lZ779uDhql*`J9tV8qh2nr3GRu;!h~7H -zfF0NqvWKyWI~PI>T_A8r9G@e9oqa0ar_agI -ze{xTup)16v&tc%y)K*0M?iSmy#1>QF8IV`8!0v$(K+?F$yvK*&SCI3VT))}SfE@1s -z7ZkY3k^V~nxXD5JhQ?yPQi1knu~aF+VnHHcFUSGL4(=M+81pfp0y&L_9-IE)ojC)Zld6Vf?#W0Nv>n3fw^a*`|=a2)Kbj`+D)6ZAvK= -zb=~4`FEZmenv5Lo>Gq%k`4{&zS|V}WVSejf7QA4TFS5UQ%sl?Bk1)RP`#*aO -z&`21MyTu=^=oAWM{dbcBvPS!QedTGAeU+a2v?pFw-lE -z#{2=uSIS`nMt`b-zf6AtTU-rfz|9k&2gEGRJ&n#doW0wnT%>+C@- -zM-Le2Eb-EO|L7AZ?FZ@Ue;c5;t0P-S5i9O-dt#D#`gg}VxVRQVB^V334R(WUV$9)o -zki{{JD#2p@0OTtbumK~G_FtyIfGw^LAZ;+92c&(h1*HAA{JOoE(r5Vpek6b)(>|)r -z>OnpV0BQfvXNTjb3n1+yAZ_FW2axvha{-e~_217Q2S&RgD!vRti0GHrB0_y&xi_Ii -zP*%w%lV#s^KWVwL-L(U+x@9lyo0v9uW8_t=FjY_r=q~sJ1Os -z_zpiDV{;=edU+d!;)NZVqxCjTz$YQJzoSF!Hcqg?i3YVW9q{JJJ6PjXMN?pR!O;+b -z{{XquXejBwxTn!h8p!V|Xj#K_T(qxMuD_{S3y&Ow9&pIs%ogT^)SouTqxGq#?-6QVVdA<$lrjJJc@Je -z{y$jPPJHJHeKf!OjHxey(Y#H4ACz8_2>wZk{+C#&5KXb%**Cr^h{G7iG%NB!%_f%l -z=(GK=(;omBPfl=jQ;@^`SF1RU0yFSm6ZuaTn1N$oycCa_nO~>)Kh9)a0e|eg_+%;ew?+NeDi=**Ka`_Io&vx{|IZWPAKd<$I91@H -z51b^xMgQ0iT=f5WV!XavjrI2eKUwj>RiBum^aD1qMuDsT3I4xMjV&%>3gGestaIS< -zbA0Lmm!Ff9=U8JsL`sbvx~{VmlAV>Um^)=MA)QX3HL_3j8P|ZUiV3C&iURQgf5WXG -z0}U`5kO`K8QAq7OniGmG5iUUScQ-iknb2lAvFA(@q2Fv$BNn%wvBM -z#;3o;8mCy$a>pd3en>2fW$si~nf{!%zp~du(l?Cs@}lox>|iZOE`||q!+!v)*lASm -zpWIWZtTWEYR{ol% -zEj#o)q)Pvqw}MybiJS<6{63vXN1*ASK-%BYTD$&LOmKF~|K|PA2qC1O{eeqAYH0wM -z{*$!=T>61g)!ybhnR(#Se_{tN{pdG)1V{#O>Hj?m;L?v;aloY?wK_sXl=`RA7tQ?- -zSKl#_ut|vLVMh5PEvd>HgidB*QquAyUG=QKy29dm9 -zAew~+5;0HE;fJ4@+=w&$Z-Y?IAxGwD=BCNh6KC!3$Ph5z-3?>KcSLaSK*2y4_RVQY -zPNEVF2i!T*4#qfn;Lkd6fOR3q0OM&?7WdfnJNGm?Px$nA6*Lv-$S7anUo>2`%FvlJ -zCqAR%Pydtfr-7o$@uNsp!&%E?MP!ItT67@)l1X%!UG5tBio-RJK_0(7V1b0ND~2rP -zzss(UfN_IOAZ-{QaBq^?FpVixp#T+c?wmYoG-5IE^n|kg21zNx#yat-@bx~i3m&2M -zBrB1swQYmPipUWDw|@n4tVhRPpKXi)af2U2S}@+@a*-J@RVlzwfC>bKCSsyY{&xe8 -z4SzBJ1FjwW@37(?ivf==f9oGeUJseBJlbD{?plu?%;4fHHJyQ5`|KK2~zKT`iMp@KT_ze@AV -z?tTlMuNuuSKwBDJqo050yqAZrDw64+X^JlMLGdFdeJ>ZUR?pQ3SXZ;=xj|$gCXfQ? -zJ%|fz0I9-&;i3VcZT|lDlzqz%?Uc&#%K>PcC19b^il0rw3VJ+tUt*ay%pG~jP(`}^Bd_F6qcw3GTvv_tJX612j> -zy+3tu--H~opFoCJsnD^Y6%CEKI@bzFr~bJZkkc4U`v1N}kj|$Uj)ULvlKO3p0Uz0* -zmRF+^1(oPANE4&aYZ$#81Ux39c$-ue0%$bNxeB4ZZX2!^=zOwQ>Q#Hl9dx3~YgbL0=MHYil(!ZYmH4>+VN@0f;}k=?lmJ8ca5La2q@VKm#DXIq1Yu|45Q1 -zZl8)raF2p2j*UE?jYmw~6bpr(;qrAm_iWL_EP~Gjx&2syIRtk7SgnTC>wCC;2S4Zx{2eIG>9hVuW*Xv~%=C4sWmpQqKsmfCN&pk^6=-G~^KE -z#sd;CJ?qc`nu{Zzi?hAd45wv`12M*t$cd7Lids>`VUWjR@JQjB!bp{2q#eYJao6QU -z!<8YC@fbWoq!^Pgg|&%@lyQhUaA@O*k=ywXw~Az?E(wWV5+e2rQ3WjIwDbT4#R7=R -zAfgTo+PLdNqL*D@Wd|^b3rq-g%(Mmy90xCqgQ=>{IFKNH(3*3teoxD}o@1x_VVj<# -zjU%Lu1H^#?AR2H$<^r1mT)v*+@y2F(hTZV>4EfhH-8E-;o@1K=!LW($6ke=3;{c|O -z!xa*ha6yJcZyZ%;x~q{J4?dEHj0NTy)3Z~$#3TC16eey8!|DJ5fAIjb0~8ns#`_4S -z5(Q#lvA~eq*M$M1^jdfy36JO*Q`qwk5J4Qcm8t5rZ5O9BA^Obfw+-AC}%*J8#P+pXIKqlXUN6R@BpeH0%aoPu-^D#rTSqt -z+><7+I>Q4)))FWdu$f{YClA=(0M!L%23=HOW|G%Hm}?-#F<@-SqVk*}>R?CCsVMgv -zhyXx=>P3h>a)F7vz@*neS}rgFl#lNks1;RJWSpl+N#uM3wFNwZ>H}1yGitU>ftduO -zP+vao35 -zSW$}*FhtkSNw)*9sxB~ZY{HR#%*jta*wP>C6ov-t{14`pc&U0h`-#YO)VInA_ao@;B=fPi32hNHX77Gfg%9;0Tm!e -z7Xhe|3`WBxWV*-=0DmMu*e^U?4D%i04I; -zxLasHDGX#Fd-TYF;R90yaDexoq$F|jzzYB<0p$S}nGB#0B<=m*5ugV!T7lyFp_U*} -zJPvw@!v)mD1H}W%IL82#!xyK+7*z{oHG$dyX#&;~V7jFM4*&zwU}q2oRu;!4hyyNK -z^)l)R7`Z1fXUM?9Z-4`U -z^d3Jh20splA7^#Ry%zJ$B*gSNejEvAJrxYdQfHCQSTsdIL -zIv@fdKoMwN;Kdu17cdaO>c#=X(g9)WfNr6Vzv+M!i$IZfU~*sshB5;&ZNgLrVqc^b -zk2VC{x9&MG0X -zZ@VF^EwKu^M@CfBC;*^S%_=1$b>&SJUk}nZTXuvF#>EWAT`v@)EGD3`p(eMZ=Bcsl -zct03Nk|uU3P0T(O%QqDZGZjlq%?G09^V|W8VE!!L{8_4w3p{b$EQ#Ev&)eee3Aj?3 -z)TD4x3&YJeSX;70=0ql6hN%}n?DSf&-&cJz82e2S(qSM2iX1k9J>I$yXA=uv087~k -zUQjL!c}mKB$;@up()1BbteNWCFj75b}E%G_Nt1-}I}`eLa2XuCJ_y -zYuSE>nkC*CMinlM48#n&3;F=M3ATa!4um4nFUXxkG6kA7bOq;k2GXSy@~7W{12&2h -zGWOs^R|RtOdpJ@)5d+vwwbR|a^`2deFqJIjLFr6xOIkMclANCe#u7$9?q@Os=Bm4} -zXpkUK9`xG>m(c*&39^)k0qjsTgvSYr(GQdd=>v8G%G2*pnG6OFe-V*-L$=60P#(Y+ -zD9`U<(7eW28Ye>v>`vmU7}#yFJ7f!E3Adl@GqZsb8n|&AvLz{kHW|&|*8R-vbd4BI -z*&;&HfYO}y>Gb|n2`CMU0+i-NSjGD`P#Pd$A_lOVYLC7BmgIR{wjLt*>fIl8 -z)_D?cmcgR~U{iG;)OYl*VEw;*x9|Ah=YW6e+h*PgAwBRXdw+t3oICIr#P~nI9C%D_ -zREiQA7oXkks#aZbiN3OLe)2iksSm#X@ktqy;lEFoDvR4)YbFc(@8dLC{O(#B$lsr= -z{X=moB`{LR)`xZJ%H}dBC>+EA)`1jZ*x-(lRxuXLLr`xe&3^$fc~E#La)+c%#1f%t -zXu$S4DbfcfKO}gD0MLOJ?>ghBIm^L*qBnh#13Z(OZB^!-Mf -zK$rAt0K)NJi{^_?fPl%>e=bz{% -zV(74_wh7zj3wh$=M -zhp5>y44zXGUPo=+?$W#?H|o<&trUs&lfG&?A*At_1FeO->O -z+>hr_LUms*2Qk#QA9TBBxK;0+^p0!P&e6(DZ03Wb7`pM8Qg{|CQFYJ9NWE-6T*2oL -zymTgvZFOh2T`NlHTI{wN9E20M14a>()<@G((EUSeFSrua8IfMOA3lm0uGH0cX^zPo -z`zElkc#vq^e7h{HVpn+smz&1PBUothaih=J3mycgDb9h*A5 -z*QnVss6Q+`vJPFPUEQf%9l2fMzF)^_(f(89MyK)Iq45ucsHL){icd;>kp-6OI1Zj< -z!0+bLNU!we@6f<`wcqu9Wm$_|BvX3pmz%olS0vaNVy`6du9W9u$#dr%iS{aqu*IqM -zqWes_EG16@7@f6?>(_Yw!snwi0(d>YY&ux)7ws>O$Vk`zn5S#g%W_`8yx6y;Bob)_ -z-&I)O&V8>EO*!nqU^#A1n-{t4$8T*_(VtdWCDGPOX&DAR|2AsR{?OVZ4Ohr3I-jnh -ztWBZJBDlvJQAzHDNK|~gnz}ssbDDCWh+z9ECx^p?f6+qT13izOs@Ikql$_A=LO##< -zx`H?GtadY3`|(%iF{|f(GED+M#}m;y+}A^Qv?CU?!>Q-BLFo)_M}*`kxV>KvX0jzq -z&}-GVCJg-0o%QAIGSTj#uXD^kyjhxX+jo((^0WRS)9zYpIcb3!Mg-T6OPsWZtqAm#3jXK<- -zL=@|fJrtPEy5&lA+anWk*nU(SPWr64@6BuW@S)W@V%k;T^TGFM5Dp}7JNIeH^3D#V -zEFyw}bVf%<^$VM8w$?JU>#8|@DR({{eveG5k=e7|fv3}x?@U(U} -z3ROLFR7dm@D#LqT?J}ig?09#HD+K%I7Z$1N-h#?k%trA)w(oJ(TY1mrSGp0;eLaf_ -z=0*-#`2Nf%$ZaLs8u%TU%uaYXUCc&#(tQUH=uv(8+k1NxUpKZ^u8l7GKHv>dWXHS= -z9VL=N#7H56Z$i&Z#R-UrP4Qk%X-!%SP(x3P>?I9$lSv -zengq6@I$D4;aS>uN!km6NfB@Jug8nlUnIDq|NXuoHKts9>h^Gg0m-F>0Cp;tM+tft -zsC!l#B%Lq9_u5Rqw2=iq?`godNuYJ|PZoH<%Byd*-4<9{OvQRX!Ajiiy0eoqID|9y -zu-&BD&XE%@xh7lN>3hk_M1|}Wy>sKYQ6@a)JQjK&;Dq3|YN4hlZky0d=D|pIzg*Em -z^P?@kt>SZA3HzVh(n>DmZ?%_nc-`;*^i6VK8x9iZfq>#)JH8NqK_6*@_tuXfKE~^X -z&_fdVGqI`pXAP6s-(fZ{us+LlKRoaAPT+FS>*wM>O(7hTv^p<@LP%VhF0ao?PLaHB -zkRW|4LlsX*>MvwV;=3usGcCYCWG+eD`$9;Z)HQWVrE6y>5?|V#idW-Uw -z9S4=6?RVnh00m&<;yIo;p!s&%csP3O13SCN`x+acNA#_Z{8 -zGZiZ5am*w{cZ&l|QIOQe^Gv(#LTF!HqZ8 -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 -zk2dxWTNk5twwPSqw -zZ}l{Xua4?NM?Ci!2O8tk%?b)bDz^8MTtmv-EmssijFcVNCWL2?ly$;2wrfV6KlO;L -z66qM1JM0$HX=xK=+fthTDEgvxC09y;JGTUz(!&b2vFtnUn(S@SN-~uaVkL= -zA?y`0bR}Cuh^|se(;7Oo=e`}YXbt?q^1e9{W;r1@;0HzC?_Sz==vhBnHW{|lxn&y> -z9wsXn{{BO=1J8{J$AceNto4S6D@t9rS7a!7%G|C-MwxWUbjU^0YK&(n%BiH=Io)Vs -z`*Jw77bB&%I4kYT%&9ZhT}Z8=G#FNMvN>mGI~h -zJn?#lB!}Yv4@1`AI|3$07c9&=JumTz}R91fd=inee=W5Gv -z&|rNXy%(RWcRQV5xsrpK?(!o}6Mckcvm*B_sp`C)m349;y&YFSUCvtzAF73bnf6xnj33bFD0bl8&;C -zh|9;LspDai$4a1HF?Fjud@_=@Z)KbMDTkJ&$b({!ugwQBtxMb%TkS6Ebou^{*Plg| -zZm;T%R#X(PC5yyecPOmztf@HK-_GX5a1+ie^lXpy*xy>2XzQ4XaJnTVm*q=Esv)o?2_=9?=b>sTcR>Ht` -z`#{spYsTSvrRTSl^!!CS8@jjtKlb~s)4ZZXCrmC9#k~!1>P}MQ#)V5X-*GEt%*A|lDyIbKO;gDfuGD6#Di)bD9;6R|*hf;}_d>C$NqkS#YSdVC&Sr06Vv -znYiQ>AoK-ZaFoRxhPa;;bTumH%@xIrVO2M6zNp^iiQPb4j--dOI-w!R|RGB+ziw>-~z@YJTg-fGSNz`r_) -ztSF03bDyW{p~00kuhxy~sGh-X>xukg_uYgW#M%0l6lJ%@wZq^KqwKQb81=JSw6SlT -zgRF#H%^R<3Czd9DxKZJ}2;3iz440L-?r()%cb<{)T-IEbD(2dO(~Sgjls|jqo+rLF -zWNCkyTJF{8`tlyor4`p#R#uD+^+pd;`>#|cy<(ok-ibLhUOyNu{0`m2itSluD!f2v -zGhR`bmJwWBmfd4jdBO3vtP%Wq?5zsfzUe(AhLAF~*dtZ59}MS!)61MG#CMuD71mzBu6XbXh-E6nUv!_x(|N=YuU5oShLj-sXEQ}E(@!Mr+m5YJBZ=3YZPDqGM0BRVmkRH-#}Nzt75q&C7bbX -z4KFGh?jyM3BELod!tl@xO)eq9PedAo -zv0b&y&Us`dKGL%8bZgI!r>omsQVPB7x~DvtJ7hy`x>3icrNLM^+`Dqr*ruV9q^L~+ -zzi~BQ=n+wJQxV)Q)5P6NI$b@`u7+$QnZi0U1+Ve~4PB;UhBlrot4RTibB_$ws~37f -zI>gfq{rbfXLykkQ_Fih6>CR5CcPPLBeO&Zpn -zxtr-KdXIBjsjTjnOuxSUU@l5di`GSe!!gLjOt@5KtHH`aU-2k7ut%q$LePev%{-js -zR_?GL)MM7Et3Np)B&UZdvv--yh+ht2b*Z!}DR5BnhnjZY1m6Ht#3J=|q0)3mxZmPP -zCC<&Hz<@8)!eh$GJ=lTx?Fz;_N5T7z>eBb5tYjN+wL5(ZeSPrUC6n5cs8eJ&J8^<^ -zB;{(Jfc#tA>ZaFe%{Q$z?{%)Uh74%vT*_r{l2CD+q5IC*nfvL6m7a%Rq@R%06BW!o -zn8lCx2PHpyu -z(2|_-$|8J@j`v!x&P^$e(5&kLqLHJ61Y52TD1|6AB1Ah1nnRa%`Z^1e8tvT&Omejg -zELJG&=S}(hybeQOz@iavVhYXe2QNf9g>meBh)%bZ6)ob+y-YMpe^u{i`OwJ3d>V@} -z_J|i^x5TV((b)c#QGnIJaH+$5FT((h+!5#ExZlEK)rj)w;2U{nfeH{W8J?9NVgC( -z&vTyld7txL7k{jK-D|J-t=M~pz4we_HCgF*volUwH?B`%pPRLAQ|&j2rNYGYo%nS& -z`W4!^i4#v>(iV=rXjDPghYjLL-VL`aAuOVZ=67t>Ods_Wbt3I9`{ZLlJY-eT2|f(V -za_2IWG;TxUIfXs}Yie5UoG`4QZKpKqZr*^_v@`7KBj#w!w!b*!#E1t_YfBnJiP|fs -zZ*+I3%=7btnrepZe#B>oF<%}FnafvpA~KiLn(&H?lt1b7+xiZszYozMf1&!y%X=~@ -z7CIA^sJ9>56Hl5kzOAeiMWM#(x}8w1SRtUPYHus`kS?BV7v8m+Q4-6)fCeEeC7gCN -zia5g^?yu>dsJU?{61ukdc3xL28dC2(bA@aWjy9oQJ5L7%qQ5p8F&%e~LZ%LfM^+I; -z@s7=r8bfrIV%B2g-5>6SJ{KFo4bSK7?$&y1K7A)z>n5~5?Zx##5G2!zPaGz9*afE? -zMD-C=_ymJE7HL0?*supP8+>h1p_+MeZe8EuNo67uNE!(PcMOP(RMJ&M9!h=O`MAN42x`?a~hvrlx%wl?+edJ12+22%RgS%pGT$U5$d8_GBhqy|erQ -z6~Xjsncy|jWYOMNdlj=IbC+j2?|*zjHu4_pWAN&OEwgg_p|SY`k5P}2?Ck4Y_-aPk -z1z}Ws7HhU;PM0CPxI#mNXL=<=xVCVvRX9zoN@rntiKd&m&>SibXZ@XDu&`6*Onrs1 -z%2tvk*EvB@ko%UwGH871vIicY5E6Xe#`tGZ(`{(drdsHl)Z}qdZH{PzV-Sd$sKS3Q?tJ0bu-0REsAx%})I?_&r$LboB7C~jzE;H5( -z+^^Uhp@?XCJ{;9^;~o4hssN9|U;z3O>G>3y!Ct^i8XlCeKvNN%TNb{=0s@Y-!-#E-kQ;WyD%jMxyQwj#~8+)$WTZj<%P?#uITJEOT|xAt$5e@neF&T -zW(jhw?SYudF7;86^lG0K;g3`g*1i_o@S-6$UJCYPp*wJoo_T31)3!?$>*8j~*NtKX -zr3Y=iGw$xkiN^+yG&ekARNEaW5gL6pzjyORuZ`HKv8P#lU{Ey5G}Mcr2P%+tWoiH? -zz6br*<7o<8H8WrLSN{8&9~1;7eZq0sS-x}IyLZ3^;w<^({b9~O8r(+fJ5zNs7kbP7 -zShF|@orJ2t!dW7*60gcJ@RP_=)NYyLfe3Bm(1E9uV{i>n;lR(pRQb*4IeKreH}~#r -z&oAE4^{PKhdNh95_D%86c%okZ)si`99N3Bx}-+ndQ}BX_4DbkkTOG>HU>pA3S7BS3WKt -zZ_rWL<|Ss-52g9NMo*dj!*Fq#{++bP?JH97b~$i9!qTDCcQ=E&GytADj4#_-sN -z6U~bC(O9z|OcZNQxfy=iAtpY;tGzuOOJ>0WD{3Tjyu&egA{4(IMoSmz9O@!fKVwkQ -zmkE4V?HhEYH*K}XVpObh?2MWZP_E?ao^y-GNk-ooy622MdwBRro!p>0bql6lA(Bm& -zx8bYf|2JsS=ADd=7QKeyPkF+sWpjw+Ky$ZY -z_bzAdmexFZ`_`)S_^09V+FH0Hv%h#FBvArKEd<{xR?1dAw}4oAo>{*1<9KWIWJr?0 -zBW#|k2dZ2|@Qn}So5(r&^y<|Ig=qH#*!WNcj?ZfIH)?*x -zR(_m{&B5SMexipD2Pmo&e(Wx4Rly1Q2+fev!mAP(7kcbr7Hl1}6Xi35!PB;c0Cby|y`J`(_koB~{l_uB| -zQkb~P%hif}Rtn?dYL;~$j8IMgibXzFn@4SBY`9lN@eY+W{W^v&U~F$iMvBJMAzc&# -zZYm9>ksrz1{{g>6jhxA9-CwudT+pVFqnY?&MJq&gE9m4;F7|kUtt}RaxCC -z45TP$RhzCt1Q@j25DZu5P>+5@+ZR*2G+a$5MK_OwIwPwE-O;42sRECX%X<6Ind7Tm -zN+(nd=y?s_W>Y#fTa$+gIi`sqlYb`(Z8>-ju+NR7>7 -z`FqE_#DpUrabC}Ix8yGQd8SRPog{6@s2YiBFwL+ -z@s3!r9%8|np -z%xd#xf!{fBwhJCKaW!hXITAD1AlAR<8AAB;L@9H68^ep@mZ3Vti+J=&Zy-nZ~XN4^S -zatFQWsbppy3OfJ%t*D&zRZi=n57X2(baTl=gJ?5atD`wT^~J1FD1n0wn$pqm8Yw4e -zGG8l&bQsDq!(Awc9FcTkW2N?IY4|oq(Q#|V8kHB|>QbOxExBDQ>y%Bg+%w*5vO@gC -z$YaydI5Hf&mHb5Eao^|Y`1LdYsh -z8F1Y!*9FjN+WZAr{R}I?UKkFa?FNO%kVck+`rR;s -z;k2$0lC24{5YDtZ%lsH-t(ml;s*t&}iDJ&oO$03(O2}eHxyr=F+ka&5ddYt!D~Q)t -z-XafT>8s*7ZX#1iyqqEq+Vl&sF-l$hOKT#J1{RD`Lb?%!sqT;59{uM2cw)G -zwuZWC(X8gpZRRbOpOSN)KB0I)O5St85^VWpu465}8Zxu0 -z1ONN%J27bH4xY(4M@a=*yiUmq>tm&36fS5wIg&PO^)iujo>t)D(kr@&EbEi-o(_qxLs#%tXPzQ;bk0r#-?(Vht%W$PJT6Ru{!3c;Hs#dH#~HFsk9G_5BFYp4J^#E?_fLvCxU*DA!p -zXd9zRRQD}687_gL>dLFN_u9lkTx+qE4r$;fnPB60gHDP9c}k}f%oN-2MCP>Pq96>e -zvZ#nUSk|og{nVa*^f5*F8I%P)R>q&y>q9#IiXd%xee^@glI?+fGU4*-w~DLI3M;gQ -zq0lB8afcFPO8u!)TNX|CFtgAzR~arV?k^OsG4xoIcvm -zg};5*ILfjClyK(*s;)B=B2b0W^2o_7U>uy@Bt+5(`bX0 -zUJOY!z_z_u^U0t$t*yiDeWjmCfdqQaw-**uqlnxf-L>W`pWax(vS1=KuV$~(n>6p4 -zrZWzcmP^+K89yb$@s);n-X^mOo#2j)mM+#Av7uXN7qsa^`At1+E6-yX1(9O^vFt1_ -zPEON1T@!t?3p!z2Jf0bVXJfzZ4|_7`Xi$D8OZkpq2`hiE-Qk|+Y9#b%ZOn16y8@zQ -zE>31Org{FwPMZ-|zT+jRqCmaE>u4g2MU`n_X+%4MS*rZm9bV@m#@d%&<$Xtj{=0}< -z71}TFb*XE`RCn%w$&N53t>ZT@OX%gq$5vXl=tQZ%7;T+iQg-r8H$O}eW@e4oTSoU( -zr7*xFnjK)wvvRAHgNN#aABPP)GeD@Bh}^(JeNOd2Sj#qVpZNPN^)WF~6qCHPE%Bia -zf0sWjMf#b>H)Cj?Iq@N5q*?p5SIP`lU-WT0T$S;e@abBez(PxVI;3i%n$4rUrqUUU -zvh3J6K`KVoa`1&Iw^qX`2Co%Qn={yPW2nH^Auh#+ZcWXmH~iVBlU-#{t)!`IZGW?hv7H`Wf3R)T*FsN20%cl5_ -z3R23RoyIC?3p-*D&?x^yBIa-MbNG4E?u2>LIV`DFKFh#j)Z_C7@r#4t8KB{a{jMc! -zkKOeTiNA}%edc?~edqCkCkk0oF$+$L3*t}C3EYyUi=tem>TIvk9u;$vzp_Ha*NraU -zAYiqq-ts&>2@TT|evge!OC9&mh?u{L&EwbNIau#@VQ2SFEi@#_=5Pw>HOop -zdbh=|?O$BrfZBJrurY^ojsLp`e>d~r{X1lj)$2gc><{F5)W}0;V8)*Fd#tZ#XSrmn -z{C4nrr6pJ?YkmF^0sXsJY?#hSdYF!|8}<@S24*pT^@8}#@e*}AT(9>zz@L`(XQizB -zX9V=`VzGC1N7C==3VUF0(llWf^H(p3-yGge8ao|fCu|grQEZs@Ux=m2t59jOdylJq -z(D+d4HWtc%Nc28b{1-hxHTNaOGKO0#@1vze-eF&-C5%(h6aFia<&F3BnWO02D+IS> -zo<2+c>hn(tQ;C;<)$>!c+x4u&#&W44;Jw*(-~^G=fn7(%*5JCm-EE=Y@cuJG{qJHx -z&R1XmCGX(vcYiB@t4nigLqni&TI1?z7WxlK%2@x_2PUSUh2O({uJy@Q{H^qXnxy$R -z@&8_^Je^+HxU?K`-}Qt){GG69{}-OgU-q+V1vuhpE)Fvn`r~hh4u-wIK|ms7_AIr* -z=NGX<(rK*JyidX)8R>p+;eq)|cLe$XixaEsy|jIOPWKoib$OD9%LMSC?Q2@m_`Al! -zQP{tTC0SK}w%EJCj~3rglksPx?C^O?@QZ-`h5pU_KZ(v1_|v|VcgMuUdwvW1Q2%oG -zv(`q}f` -zg#U|x!emqHw1hnY9RIe1zl``T_5VQ>{Cq4)xAoY_b(p-4vmMKyg|f;U&!?3Jy!t1aw+-9sZ9`)sTR6IY3L$sWZYUfqAea)8&pZu}Aq+^w0e6+a(FsYKfpf7etv3ETFs -z#G1fkWdFU((=z_-lt>?Lf`3XtD6jvE9*kyG0Q+2So_pjUCfM;bMloUP!vBc)H!xelK%r6yqL( -z5%ZVpjNi=vlK?J!bn3o~1&%SPPTyx~QZW#>?Xh9iAo6hX#JuloRxZM_?$j6erZ~2| -zwfZKdvT1~xX|DoA($J9>w?BTiKb|m$-8>JO@s2n0iX*MMBklENnOjXx9Ct^104WG> -zB<->cNiMs20Wu@tr%3QXJcpub?{!C7fO2>Vkxcz5bE`j|L)lcZ_@^c}Ksg|$Vyc*f -z%mDW1frYYZujo&O!j81AKlcgq*y$Badkc6YG4lQK6z0#A9BFp}`+zvGApw!B<&FFZ -z*w1G-2Ndx*(mF27EIZx+HWferRBSR3-w$m5UI3n9cK(1!0-6B-fZ#AD08PLeFo7`% -zI08gwzbuoG!`_~Y*~fS-2ayzUr1b@i{qzdM0vrb*>B{@5zvQQv061HK3qKW^zk)~t -zM*$E4QnEn!sy`J|T`T~tfXe`?HN25P#K9M~0bi6Mk~%-(#{fMLKYM{w_D^#+0P{dP -zGLRV}JcG4TNT1|R_9n$SeRW;0o=p -zbuWN15FMZZ2)+L&jJOR0KxNuW&Kd1z-;#fPoOu9R3q73~;~> -z5Nj5IjfyG8NdPs#=|5`&*aT3~R{Yr*z$RelPl$lTH~>>A7pVg5 -zy!yGoRN93p79dIhaKIf*$a(Bb?*T_IA_rhI{FyWkAi#@^UJOGA(LTw-~KnVfm3qXm<%SDF)B_{i`7XTKf!!H5>qWUvlOh`bn0{sNw -zo~!n=07igj!ORB0A`l?#H*i2qn}96s^LNg{?fOWuSATl6Q%)CclJi;}@eD*ez8o&$(V#@_gXAi{h*#2bvi7l`Ts0I=T9D^AXfJY)fvw$h2i%2nW0)r4}6O20# -zFRJmvk&A5oIsbu5{~up~8T|@y8BhxJ6;QV~ewGBr1)xs=3qaif7J-w&pF;(x(Th2P -zaU2lAoIC)70H}Zym{I`X2Hd-d2eWe#AEtJGj-x-T3^?s!dKr)eQhbqBzz57Q0Ik7+7D-OxlZq1Dq>?h=7a&-e79}Vio{L0_P;4;DECT5C^6~F3xhm -zs0X|N<|*dHa*=JIoq<0fYrz-l0rP)O!=J}0&t*OhJ?NGta-FA#;3BL&ofRYO~LMf`1{v?0&yE -zCk6d+4HL6NYwMP$%We>8gAJ}MEl2!!BjHHw|3vVP5+%rRg^2uT36|9MQt{MwA6kM0 -z88bFu(S>zE{K@fNOXy_fc+yc=bJSHVbTX|#K62F|_Nei@wy-nyIE_Q>1(8`Hm0GPO -z>?{zCs|{@;Z6e3f)s21sq}s5G5+;QaRw*-Id` -zo6p9%fu9WhPoi+2OMT?Nmk6%N+gIFi{#XTFVNdK` -zn*T%q26I>ega26q?sEiud-^{gn1OFk|Mo#S!qU){rTQ=xmYe#`=N18jOwO~v5KN!{ -z%IrfGDd<<(KKh%`UkypdGXF-u(~WGPvjtRb9rYZc``X{sU1EH1pkR}C}&iTw|eCFpCz<}qs>Ew -zqp?+JmE#qRfkh(T1@R~6Y)mD7vb^goIeUje&QnnaEq~{bW;QlVSJ(^t7oq;g|IpZn -znJ{h2dWRYAzX|=8#y*_G-vYjb-;!=)rL6Zk0T#g5(-*`q4kF+L-#tR)uWEl9z5g$E -z0essqwe-u6znJ*bMYzuiP)isS7n*@u`eouL=LC*m4Un#gF>6^ab(@9H9layHgI7Jo -zspxj9plk1_?HuqN%rPv@4xg9CmarZhKhWxtU&FV$X(4=gwSMsG7%SYBnPOSDa>cc> -zoFG;(K>N{}s&L_wvnMZ;C`VHkYWJNi4mq?)&45}B$LpExG0LGN)HUjDtiS0=@ofsH -zy}hHxwbj}0Pj?sO2n|6;v`(w-$)3~t$fECF$2jHEc}A4dO{U(#1^8;YxI)GwpELK2 -zDm7IzCn#em6IM%J-)UY7IfhLXEbm55tqW>S2uz^9428+9|^?)ja>x*e8@9orOZ -z(g57Rjd;U -zIX^iXSBv)}cfwX*nQmItVa#(&OUgH8h||lKuJKX?DM==aaJ0HB6WcvTxLQ7bog|uw -z6#7=Z2pY*%TyCtr?NHJ|tq1&k$-Pwgy*5J7R~z;zdJh_$VpC2*_)2p1;=3ZNAfmJH -z_xUK6r__1fM_6XbKXvJL@H&ac3NlgYWzd|7O6RYXX?a;xF> -zjr(;n)Y$Sud0`-Ec7LFQkyPHQaL5}i{0W_0{$bAhwr&Sgu8KQ*FTqCflYSOjI2K|- -zF%k~zYb}Cz{O_JmmJ3GN?kvkQRQDJQ3xxNpWcx+4&BekkI`S}k?Kb^}MIt8Gw -zC_tL=_~%COm(iZ^YSFi=pzKg@zPGHhv1pCjd<&(Qw#tRgv~!M{ -zI3p$mN(78rGZmr@e5x~Vhg0!CC_XdA3+Nixka-iZZ-pErM70g86XK||J-nZcDmkRa -zDe5Aqe(Lp*Ew&vs5;OMYPHz>+Uk`3w*S+EisyT`D67s?V?$MQOBL4z$0V%h|b(wA$ -zzDZXtHZ+x@=9GKMYaea){aE!00rZn%`NNISqvN?vSNy?7l>`R`a?>BM;e(=gw -z`g5UnDQh{j_vwxe`e`GIKyPieNNV|}JaEXzBO*(9+Zq-&_j!-H&sxgNu0p#ih?6%; -zqaSzit|XTbl1W==7LCMdu{36*yKRJW*u^4r=y1>D-rgUoKbu#3SNrs}EVifg=U!sN -zsTP_;vU^W%-&W-$aX%2lne~YOQk&+QxeyA^OaI -zEy41pU89GLUAwEhiTf2VT|XgpVA)YCP4pED56>J}qYo6kS6THwLF04@zuRBeABY$dtgaK0iVj?nFiJ$^pKwQ -zE=YlMeYNY%>OetTLayfXiXy(c2yfQs!SG~0wY==34LBDW*3`FDLt{>7UEM{<%*u`l -z{-#zDyoMwoZ&QiIA(I=l+PCjW?3vekhm|1@i`;zvr0Zy|Y0iPduV}$&D12~Bj4ZM1-CFG^uGE+%k+DB9V3?pllUkto?IDcJ~G|m>wFKu^tz!d -zzPN}QYeUsP)V1^Q_D00)jnmBl-)pn!X`2*0pIpM0(q^R3@RIqqUw~{@IcgD7EXX1V%k? -zWr;XX>te6P4s9Le{fX6__^?SoPC$QVb(UyP@s=4s;F+CQ|j4=s$xM!I)kKP -z-gtJAkr4-jLwU93Sg%3iYJKH5rv}S<;f^Hy+j9nX0^jPKO{Ji@+L>Cx(G=IJuR5pe -z)J`g&_IA&$>_5>fLao*j7nrGR_3!m0dYr7*=cEXZ2~K#vZuP@+)Zwf@+|{i)DRZyb -z9DYzVgIdsp>NYuhF?8@EK?BN5uM3Kc@hEg^kJ8RI_Kjiey8Iz@M`e%JWJ~fq^o}JY -zU%?T>1(Sgz**w_VhT03tMwzrON}Go=2^!t!yLlQlgy5pxY*^PSBSpmX&@|fqjnXDC -zmJmOw09iz@hy{nIk^3-oFUF2Y@{b;oOvMIHcBCLAM!!6vy61pa}RXIA|z#0y;Z*(0vv;Y)V-+%$u8< -zXv^Di%AO;vB6=h+u0el_=w(h$(6a0pPbtnt;po7hl`|b56JCynOH=F=C!CK|(UPSQ -zlVq-wcVr+4?(8E$@Wu{4us^R6$z9g6uNVsChBiuf=-7POgAh|>^1?$q3!rn^Ft -zv*eSvm(L+YN;lL#4DReT?AXov9QyQM)O{&$nFyym#xZOksMbRRzdl9_Q-RBtSh7`oZ_@U{djL`2~tTu -zZl3RccpJ8-W2NL>>3M!OKY$pmcJ{X2&!5aZSBAc}KMxKI-9OihhaXRFU4lvU`UalX -zJs`c0_Tn>_o2GTP3|8yWTrawdfJ=KJn~%>bC1K^` -zxDL;f*BdfeR>S{wmnzO@ -zYb{I44h^Q^{*QGo4}8vEbwS%vnQl?z^jj^J%)jFqb*fK}rB3E44?c`OTPVGNyFT4>?0mjK$jy3m6oElrK^Up7l}P1!OL`nZtH&&8FV%C;9&LL -z*JC&4Ki_@>qsLJnRYgrrw*mJx*DuT!7uPE{g$7CAPC(I}_SbedH*jlOf+SqDOJw5s -zeK&mi@rrLr@*%}k^JWH%#XiohMk2Lft{UDSWgkB&iseshe^w^lSEE*B8+3n--N~SA -zT=m9cPuO{U@S8vjBST(x=er5Fxa0($G&`8ReK=FjAf&WBk(UtuZ{>jXJ>2O -z@lVp8IS~(Zw1Qe;^2I{?!sWXZG`Rk9ec9~YXB7xTr#GA+uyf=00uBh-Q_|)|oo$4< -zahDE{rQ^}^{^rNmnb|74VdOq3Cry{iXJ}nH20o}?3wNbY+Q4dTJE0B~h$NyuI1Fg! -za7{+h-SpO;*qLFTIIhGc&eyy@8r{`ivrJMwY`*(}N<#28^?cL=!>-(^jWt!~gkVt* -z$MOfnEnhpysPzxuY(;TfQ!sV&2wmFhTH#MVZtZK3WMCyApTjdaC-d7iCbQ>h^mfKuo -zIC!W-P|UFLxka$gcoKvp!bv>-PE2~l>V*AS-+4iA4552&fHZ}Cx?lTYe)>V88>M4P -zhF=Z8^ONY6Q}yF77RSwoHw|t#TBFmM*ok-CdL^t;OqG9Zd7uihooI|mUwYmwT70rO -zWXFH=@O1yUl3m`prq*jrbyCNL;5FW=kC_Yb?zZjK`dX)w!W9)1$IGb2tzA5Pg3|d< -zc#n!kp0xJ`Wmd-C6)^}P)wJFmY7WR=4QN*cb*6Fp{vdgG%gXI)^$5Mw**-k<+M6IZ -z^+ewCCpjzBn#IM&>bg(DcVC3w;os(B`Qp+=SM^|hT4*1q*Jze(zMvF`YZ{@1JKoZA -zCx=sE$)MDuaa}`+BQ!D-inFgIi&sB~Vh*PB#r4??7qdqXY94Ul?uD)~WWNxvmmqXn -zEUNVhcs%|#dwYK_k`r9F_i*=#sdAa092fC`sg?bmIRE7WzOsT|S#<}B{Zripwq8&F -z7xwh8yPw4XUv=YhJxoNB)B!SX~=p+u~m}wW^&kj&|@T -zAxzxYCLovC}ix5A&!iPP_^FT)sKDS3)>P+`E%0+h-Z%(ZzJsWl -zFbc|H()d(ikUziFIF6j?g4sl_-+hVU>a8Om8@vT0`iFbaKUpp&&&XQ~-<{E_;|rhS~_`0eS|SuRuW -zXud)aOS>?5&QJXGrMo&ff8VNsh-7`%m)aVYCIybv9Md-TOY@LAW~?mfB=_*7X@9wY -ze{3a$6GyviNHi( -z(pM)uc69pmU5H=+#5l8t6z9Q6+T9ozkC2<@2a@Cd%DQBo=H1K<%loC7mNf0Pa+yul -z{7;@A6x9X#F5mk~DTrl%8eGmW`b2KrejowV%Iw%qHk*oqR4ytBMMxXQj(5)P_zG$Z&D{(Lo4IP -z);I03BhLBBkLOcYwgl2q<;N-wLQjjo+cD0CRCgw{ACkUH%(r(rt6S4?aVfe)0#znW -z*2<8VKN*}OaJDY#6nny58IkzBI`dYB#_=~hn((LCuHTi(^qcBxx+3Ezs6MxLKB=w=SZ5(*=lO@5)_RC@3wUUE2loom$EObvWqLl=EE!X7( -zy5^0UKHU3L`IC=jxh=CG$qM_Yh4Bf}fhEwWstSStnWeET#f5#*g{-2{Xw}BbY@bl# -z7>C1Qu|`2xPI+IJ+H1sxm3X@*4#8ez6S_MUr!u`Mpz-JpnajsSM+3@t8*=aa^xo?0 -zhuM#-=`_q&e2?K_j@Jkrs5j#PJqibVkE1!xN2iKq#fL+6zEl<_GR`Skzo5TUF{ym- -z@nx6cxF4H+MCG3RiPn9%-_b_x3GWj@y{+6`D+Sgp_$2omrO*Y74g3NSLqpliRxJ3p -zwN1CEmWK}Yjo}2XFQN6)Qqm>zy@B5D;idcn5>Mn-Xdls3*FngsUfyYXGT+F?OZSSM -zm1%VR1c5*&zL?8#Sc7CNSb$X{u*d8@l7WOJzud~IysO1CQM>d_R~ -z#{SHM*keBrcr7eqtymj`rggn=G{MIWx>^5HSwnQ!oLlR~U&Lx_~J_4Jg2Q$yp -z%e`jgA_hv4Jq9Tp#pqtwQa&)qaxA5Kk`J`4IjVz)O6Oaz9*wn3%w?EnlsXqza3)=O -z_bMB_FTO;+t(<{%-0D1N5Gofv&|(w4&amIw<4z%MYxs(u53+r>H9x<(w%av8tGRMi -zo8md1GiI8;#9D%!9uRzy9qBHRxO4PHz+F35NaaC$ew_AJxsKVDh#!2GAR?{H(b063 -ztkmB0p;WblCj{MneAy-QSE2f+jXVkLMUA5!4`S7Yo{}8ou4S>QAcgoyHK*zQB`lFX -z&Zg=(r^`*vr4dQNs2?S@-W_||E!#iTVfGS(?E5y+peK5yZ-|KI&0KVJI=(+eWfm?O -z^|?w5(vV;7<7F7xS+si~b;WUCBwlsMhd1ye+_Eatvi-Jt$vqElqK26x*84~jyj#5x -z%2x@)ZE7($80FK~58-_tdx$Lm?F4~%ck_UEoCCUxMA2##);Ea~-}bde5GG77ZGPvK -z$S0Rf{+2CzMO*$=B^h(nxr`$kN|$_yIskWDRodWbehiI_)pD^PvgDu{eRB@$B28=y -z$qvWaWpLKu9x^PcipY3yYj>|c^Bz{am@=2^XG6!ys=y>GVuIXQ&FHzaIJo{R`z$C= -z4DA$dB|;bX#?g`jHj~6nOs@GXN5fm8CL_mGr3nOjFL(^)QG$?to7AP5mLhI -zZY#ZXU@G;V$rRW3Ar&F!Xvj4JZak0W0;-0ISNmLCK5N#=UqwvQkE@>^*RS*oXb7Pt -zO63@yu1?PDVD;taf&>%DBe0F;bKguYWuuFvgxbog>%}irAnh)`{3JID~*Oe2Z -z$y^CKGB=f@MT~8j2Kq`VJlVt9(WJn$t^Wpbr80gT@9uG1I!l}UvT{V$ldy3=5G!|={WyDggAfa=2 -zT~)U4RJ1BM4Bh})Q -zcf+zw_A5gL6jkYB_hf}Aj({J#u3I^?uU3a>PAcsvF!MY+*6l}on|R;E@nLiyI@j`K -z6MNH!i|1lq;uxfAmr)2NXkd( -zEou|b0_ovWC)>Pv7RZcfoH=*N%IDQB>7$~Uop#hot{XAI#w+YTcOl9O7|hn>@)~dS -zH$~FgQ}UF!$){>2ZrCg4+zE8~>}DprS;W2$QZE(DeO8H>r>8YOFT_2MQghu?;EEXV -z_k?OOh$@*n6Gg;#(K4#W57>&^qk5@c#?m<7>=sgF6SJ<}#qruyEx#O|88l|n_KAAb -zTjwZa_Y~z}7lRlndV2f>Vj(37j}Jf;v?j=OOfFthV1|{}?>$&w$uArJj?e1UPQSAf -zWvV}^Q~Lb+wRnM-eRpXbD@{5hH8va!sPYDwjCvklw>mEif@(E`7J-|eS3ZjHn^eOJ -z&(pIf_*&{r`Ud^6XLxhxwU($TU&lPqw--D4(d#Cr&YVBbzi_yz!0pF50XMEGUyO(z -z#u~a$6}=IbJX|+m0%|}%zN -z$g`dl>gzhhGWK&c`R;Ullfj($x4UzTq0zc*+u%$OEe9Myr`&He(L0kNB1?wjE)~>X -zOF>`b;AUl;*E~6oj>(B*(>Ko&eS(=$=c)e2bb_1O)PuvC2GJmb-V7IHoUC#Wvk=l -z*l66_^#(Pu^1hRAPPpuEDu;&MXDSG9)m0C@l-sUte-h#mj=knIOFsiVp)6>(t29#B -z#iFE?a_H)%E~sN1OkK=l!pOB#En!pt_KOTfAJ8n^_T0m7=}FLhg!KImVIbL}Boimz -z0Hir&^+nE@0HTk}>GYgI!Ut6U6gC{QOsAF@dup-GFgpCnV*ba6=CK#m;XA@(mihTf -zBhDuK--0UNE#3JP;ZVvGGRxn{(fhhkw)3=7`Zbe0Eq&8440x!$iz2$y~W)nmjPB -zMO7ogZQ6vfw&o8{&M9}!$c>s$EoRr2h-Ig=gyRn!2|GcrUN2GS(So!DKQqn<8?wf@ -ztD8sPowT9fo4DFCp6kuHK;FCc*hHPi;6VU4sK_DOF!g*DiJ(p(yQzsj$kJyI-djAD -zIpwZZHN9KyYidob*`b^N%+Z}776DGx#U9L;mff$z0XyV}m3ptuq_W1tt!Z8@i_r1w -zSBxi0fXY_lPxqwG^0n4XBan_l1@|q97@hLBkRirbxz85^8c34c6B%KXfh3&^c_Gw= -zOb)U%2Bh&9t3wbvK)Kbq>o2)_b$vI=G|Z -z)r}sBnRMw8WB3rI!V{{pwM+dLbrqY5TMKsj>H4PUJkAYb*wBu0TU%AQEZJM_j2Mg>HA$3w -z`pSuRPxEP;qk*Xzm-CU*xLc0Yc+%;&MC^pg(qd>WUfS3ZockDcd|?mRhhDJg2`QLMVjpO8aU-E(LS*l3(19 -z+AENe)nHAll>Ynx!vJCFHNypmcq>z1tVG~n>8!*LWp}r?f>&{!uu#=Q+Knj)LW(Z5 -zIB~li7LB`imin3)ugl&$?Bj*UN8~j5H6@xjcSiK?2A-|2X{h#;$nRsV9|Q%a_gMl@ -zUe0k!eYy`Xi(<)lDn;aN6(+_UJ(&qGv^)`fy!F<@6EwzF(7w;8&Wuhw)LJqoP6az7 -zIs-W6EQ`Nz^N-}ND;J-nR((26v6>0}(s29ah)wJ1rm0ag1GutqDIs-Ii+fCrjvpnp -z*@WD>+=Sc} -z#Q=yd@M-*HU*YX#0$!_CUA -zGh4W>?8}W$ZWv1aX8(KOi|@gDkq~F#U+Ogi?n5P0`WnKTL7n+(O|g|^XC{^TE<4)l -zTj!MxFjulJaJ~IuxpU*Fl+tk985X*yvP{kCwb50k0Jb5D`XL14%K#e9ACaclNKhZ- -zp0MIq+G*DasV1+^-&cIsm)^(DEXjU8Q(ScCq4OIG9>Nt_!xDS*+q*s=3a;`89#5Fv -zajC!#qnN{*;n6j9?klINvq~E2P99I#w}}cmy(OzIS)l%O@|6K$xps!6o16%#v|7UZ -zrU-o7H$Fp)N^1E?nqY16uM*`?V2OeI+0FYQ`73fOAwn&#i4y#?%a4zf2Qw2%b%xg& -z@4>F6bw__P!H=K2LKyIls^8OIaJcLlar7?NO={woBa0R`fp`Bf!7n`c(8N)9x}o(3 -zaGHiOQS{k2(I8^40XM7$ywR`U5*Fyn=z53UVxTd1MG4dG+eK7#2Ic4PwkWtSOx)Db -z?67m}8dxg`bc+qV>MYYOYf(GZ#?jRyvGY=uX@x^0li%>mRaI#Nmxps|=9G*~3!NO`* -zz%;aL9si6~3_*pGt=e+W5Q}+*bc)V(RnRTs{1Bs{Ywn^&9PZaOJJC)uuZlnR&{N}W -zej%vSX*gxP-05|tv<&r%28aPGuqdEO`q*$@(Yp(~ZcM(#PyAR5B1K1Sz&o)~eLNOL -z;><1ymr6-mG-)nsKcW;!m~L1k>D6nTk&rp_s&I*KHp0rXt6eqb8+?1m>2pM4O!l{S -z(8&==#bF+sia~|non7wdc*5u_xqHo=^Zb%8g3FjIP|O~?UvjeDUWceAJ{TfR0Zp># -zmS`Hp7FG6@!OOUtsHa|4bp-Z?AUJC=~n;%t}fpGrjRX?h!An!FS&o!-MtJ`H?EYE-kVz&GyK{`5^f2aQS -z!$q!kZ|=<>zM?-M9FE3nww-8Z8g7Ru=JkAJX$elaYGB*d2DH~&c-9x9L&Nj-auRW& -zPZayWOZ4Fb9+6tcj>f%X>k~w;@>2qZFO5H&`^+2UB~LB5fR`6_lCF?5uIrUo!rloy -zn4>FnKBHDe(ZCw;f&&wHw+K)+kL!|33g!K&!v373sE(^iM32vHtDW8Fz1$i^+b+_K-D)Y)kXInDEha -za1&iH_P{t7ok$$re!*^)-?MrZS8dn-JL_y{J;_Hdx^732NF_)5g8JTGFy@cy*2!Iy -z;en))fu%^+em83#OJuqhZGxi(=FCC1{Y3rPz2YJE4|?F9C=J5Rj(MZITG?v!VupT! -zfjt&ko9vROMB?~0d3wk$*qFL`N!H;-@==DUpnUBXVqGoq$456U%W%ytMm%0$;F>Ya -zek1i@`_a+;(`_!sGxkwsd=7umH`-cX$B8c5b4C+mW8n&c0cMZpD+5h)K|=7GK7rKJ3n1+A=zCXQ7wK51?xu1~ki -zJdalg!QKK|`{EGxN$;$1q3(~kX%o$;IG{eR0Zzw&OHq=ray4O*ZmSh)+!UZtx^l`e%k4gAh{&Vi;qH?{- -z-Sp+IwVMgr38@eoQN(j9m(ccB@|5rQ&sM-uww2c1F6-b>B`ZvYTX)&Bhaoibsuv2? -zlJ(`xJa2^~xO152fdpn@ZQ^yZ3I| -z{r)U!Ird~60jJVUcCqRWdn%&_qqT69MZZB6{OK0>Y{`B9a+(%^w81`OS`;Lm?F>Y| -zVzD`hyE#0!-_v0BGP?wSuNw-f9%FE|oW^}7{p5+^&vY5rqd~Uu@aLmJF7}T;Ot_El -zi%aKe`M62EFS}-SFaCsN`Ms9~2lg~_KJ!_3g6{3hUc$Wug7_8}B4hoa8`g|m?6cv5vadz5nb%-^2^{CEZ?Zx?X2D&a`x!WO4MnsJ~DZxP_PpnZ~2GC?z;%)-It@ -z#nY#o)ZKv>9&vF?Br92ht6j2D?aHeI+uTFtj>GFsGSF(jc=5uSR-!a_LhV}iT79%2 -z-rh>376IQj|Mk@q8{LP>=8*EgIUq>ouon~AwETPHmo#PBliv; -z^U3U92x$I$3Au#0?yByT@f#jH@9&*_O1RqUUdEO_K#?aBf2<_F&^4N0+FFvrt5!Z_ -zq-~b17?n~?z7biiv@|v`xQx3J4rS`2HDjxxs<>syUbu_&QHF)|YLcSs_C^?L{nI<$ -zT4w9gWvEysY{wgs%X`!H(LtFm8e$Lh^nesUs5U)reEsd4EME+`M!FcwHE%*^zOL>+^Ia^p#?@Zlh> -z+KaJF$a*?o6=m~RpZJNtzG8QGTgK9ZY?F`?(Tx(9zgp;Gq@pTUGYWykHH3MmCKL%= -zb~`?@tllq__uj?C==TcqkFR*oX#uaKwC(1@eV44qNA;jBVpY~lCZ(89;1cEA@bn?E -zWZ%#HwuV=_&yz^1LU#I}Y#u!^o+M+5wH7q}!XO!gZYu9c89{4@(VIyeAY9q)NpmNS -z)2ZTA+L(x67?PzzRZ~ldQ`Q9AezrWw9O|@-T|TzEs|#|d;yikSZ=9I*|9bY1$|OBo -zm(?>q1BAhM^8!jtUs -z;TwmT!}nglFEQO(!WW-PyL2TWD>uze^~qOQml}8CbYa43vWOv -zMJ207rqb6B*Jba`iXGF1d?zU%?5h#25t`#=H -zJOzW9fYF-4!MA}Qaxsq+zvfxC&6{VEc9MNf9WaF6duH>-K9gWFTigkcy}Dq%kRU~^ -zw&jLDp4rn)+Lg(cCbgd`+2Y17#@xPn7jK28Uu~k{UP#esFC-pTMbEL9^?WyppH6f|E6k*ismR!X&;iU$|5Vfgs}6%YEhrvg`$c5IZzi!3d4nTg>Gp}v?Dg@_W9r= -z;<02|4t*20jCdZ>-Of7;Yxz)SPQp@{!=4??!fEt!2|Wo|?NJk1`Z0Z`8k;(HA+qbI -z*72#4bx>1{50r~7cRpS0Z=F@K?#;WqS6wx7l}U)aR$JB&%1(a3=5_mE+}%^z(6o%% -zp*Y)8nS%{o3Kc>0D#^jCSylMSdCu)x#zUDdvsC|aF~zOsvf^i7bb351%3Nvk4}JJ* -zDY3N9%3*_3%4j1mxPLG^Q6jL_%!Z}&Ru}ARmd;kniXFSZyT0UhTsHQtWV0DxxzWSQ -z{(yj|B364iMA<5413JqKli0Y9_;J!(R!%FyBWjlgnTJJw3}@_XtshL(NCp$OYGYTm -z+GWIXR}R70n&xNU${rEc+LKsPdCXEL$V)1o6zw!=-$7S3G@-FqK%I=3l%)$$Ns8&( -z=R=6*JiV<%7L12EM?;Fw$y$p>RUdMlHjlQO@64fbBdh&3L*81V4nv87CSI_3 -zq3iH@EQ`pJ;pg`K-5a@#eRduMG<%)BO{`t?_WjK}`N(fj*V#e-%rw6qJ0_N;<_4_I -z#5G6mGwspuf?>1M@wIYXBCI8QaXh=~FYqL&jW4&`t#FG>%A*^ln`3m42)4FowqNyY -zegM^GHsRWwT?cgtcgh1qEd)mE#ddDLI`!RJwq91UqF<=X#}^#4GVhX#McnXrVqVKP -zJsYkIn{Kf%lPwvfI|xIbiVeqqJe6g=oAp{ZYDb;ZV2Sx@&-XkRTsi4peM|k$3#_?F -zPYUg3Mb!Bang+y6(i}U#l!K~)k{XcYca?*V(_CN=hkNk(LXe#$A7FBhTbJyk%!{me -zFm{>|eRVntRqfM_kp&1RS&$VZo-;}bPZ`&MWmU#4nYxsyTyVO^5nByIvnPlvMh=jgQWrXK}Q>#5ta7tHI%lok@n>KF!%C8I{ -z$5(ESNsj_*Zln{**d^ANeB!<#i$F%g>s*-Sa?^{7tCC0P+*lieU%4<6OK0=O4RGAF -z_vdbwJiL4b=#!emS4VkE$EaKwXPdV+@mnfhTBV#?RIIll7U=)xGKwCmfE#F -z$r4#*dz*Sbjk&b9ew*eVqC{|@=0rL -zl``*fh4NWkEpA#eJJ*@*OYUpi$GkaG@@Kh*r)SOF?2<&7LM%+V-&(}hr%j-UmK)gQ -zrR+TGLaDE!kv2|^B3T->gPiJqQg(bJiCXfIsJb8S^fG_5?UnUnE}oRmHmNk8M=tWjo!%?UM<}ruA*G^dFuo)D70p;`uh2Ii!YZ17$W4V0 -zY{!T&#HIU_#h1*j3dJ%lTeYfwe%z>lP5$9tmkGw4)~YMA109b&HmQ{Mqx{I-MB~9S -zj8Au(h)$_yMbP0_>E(VG(Wu)WG;(_hMg1nC(R3%9DA>s+vIKAcB%|F>qQPD%Q6I65 -zX7*T##v8Fj;WjN%xPeO)?CdfPG>gss+J!B{EW7gIeRo2L49MrCOX+!gbJ&(?;Z%bX -z@p{8G(EC8Em7x~xBW!LHPb+J*UJq@1CdnUse%rz7 -zNWaZbWbG2qHAZiPD3MN%wwUr_(`L)Z^HXHF$;;N3>=e4h8hhz6T@Fmy^g=T+OJ0t) -zi=Ri?e&e(Q-OjI3xbv$>mALQtIAyR4Y&71bh;1x3OU_*ukZ@DjsNWPe8tecYg*(7T -zlO13qNvk7tOm5yvH#4sL$fzJn%%is@!_{CmebnPx>%L|6t+gUtHZ=E1R2u~k)@>ba -z&W61SNqEOEZf)3gd$4vu?VLR^ka-B*`fN;v%=9*xEweIveMeWl_K`Hwo?5_JM#gY$ -zB6_sd+M4K5O`xu;h<1c$)jHAaCT^8^*K+qui%qG*U}=M5y}y6^%8fB>$L4O9=Q+uG -zEo_*!$#QQZ%|;ny-0t-ZJX6`(e8WSo^}Fiq=_y}(tudSHBKlvus<%Gbnq9n_3tQdN -z`oM*DUS-aRJM~NF>v$zs=cO2aZZj7^^Jq##EEAoCizjguW#bBI1AWSB -znI;}(?9u6VFW#Bhc%|AR@@FabpW4&h9If}`=FM;mu4u4@umEL=`OY<(bS?4Y%yfHG -zMs7#9$mXW$R`^ftUK+_slB6Y$*^=5*rE;ju;nDM`OR$6NfzAT7j-J&0!hIWzA%ne* -zqh1Sf%pS~{`(u&yX$vbJiaWRPlocl(BPDQ>o70(_(OTGT9})=G@Yii|XVZaLi%gVi -z>}l{7GUe&8&P_^I(ii-DVy2B3$hJmeFYHU&XogSJKH0yIJ71M%dufq7i4fX>wo0Ga -z3Q5;(Rd-wi&t!?I%|@M=T#C6)8@2q_>gw|?b8Eb6x*GQMc77zW4!3Mg=emQOA)ZQo -zPWN{4R(b)??9*+j+3wiwjnBz!8j*c@F>SUoVO|o8t+FAWZ-mOV=Jh`3n%byVMU%X) -z#hz>HG&YjzakRWAkz^a5usN1;zC~KaZqY`&CwEA3WF-rWh(ud0n<}fh!xam5F&2ds -z*eR=aZQ-&k2rhXPl<+AUt~Rsf$_Lgm)wvhirD66KodNfq?Q{@C)dqWX0|M7`&+O1X -zB~OyNhldJDUt3yp&#l6!gJg7|2?HHZ@`|+|t#<8t-31;rwUAB4xzE@(wZ%PP3#R*P -zu#3WFhpzBU+lv&JVUJ -zZd$u*!B#TSoYQ6~*YhLW-K#E*n?x^*vfj9{mY+&3DYrH#rXd>#Ete9Y;}pkOl`Ag5Bz1(Mg`?}xdy>g!Yn`m!gl)E4&+ -zHe33e>xy(L=}6t&CX|!SE~buswr6L^1qzRyT_Xem4^9uMCLwz;{5x4`cqq&pDYF$< -zQC7&@XIE-vuq&dvm9@3DsRgPMxcbrenP%;(KozNMSRDGY)KP8_+{KQe!|ABn8kimARGKP;_U{>Z}**z&DL8M -zO9!u{7)D!&O7%2bm#9{=u%s)Adb2sl^}x@1bWc0p=8U@rzwl1;(CssufS0?+QnSjI -z-RwHE!l@*8eRfK;=` -z7HJo=iqp<8Y4fvPeTh6KvPo@nd#m@-q-*&D4{52!yH8mtvDnMnicAJPh@Vnf192*` -zE`7IqZ0X+z_F$ZA`bDZurCAUn||#r!Y00ZMIH)8qw%*$W>`v^S2s-k-n}=5?wxIb`f$e -zBsQVi+AC~N*)H35->2>4F*{c2;#i85M6w8}z=b{W+=nbP%~`3LYt*xh^P-JX_KJ*sUR+0_MbiJz^7u}cf%4YWBi82X?IXmH5p`e?rxzW|~_|{or -z%b}^-vzw4Bqaih!?($SzZ!g&3QAM`vQ@8Z?X0Hn+ZZ^{z*}DK{>9SWxK3z9ImE^0G -zt+)#-NVU%;j-3yqOFf9{nLSP?J#h=gKD#~_O5w&l$wDel+sV1r5643T>U~ -z)`(~7Hcp7zLSkI*M{SmbE-+P!$TOrODxpK04O_=v8(zfQj>wag3!Ci8En`Y9GF=*M55m}nBV-9LDvJ~luVVSzck848xxt$5sKv>#U+!b4*rCOBw9R8R$|85)EwMIB9qlcT9ob4hhJoYy5<_J6ZHXfi=`|TciphNUZkejRA;-} -zxB9Y0(QkMlgIK#Sc-(W%c~yD=SXBBPimA7u?OKou7VAjcj8RfaTHCSgQuoSZEE?Ii -zMfagfHN;?JIBXo}8cgzDoG_x`=;D@Dkqlwxa~oe -zQEtaqNu_52M7?LZZe+G>lzWu8h(sTpgs(U^z3G*7Ii=ZT`>st(?<=0z40w`uV-54c -zmS9$2AY@JI^X}M6MgJ~<0I5Em(AautyZn_h0ddE)gA-8U#PpdS)(+c}$ -zTfY^}K}^<7Da)ho$1}Ftt5jF=5=Zfvhqk-5$n$tQa5G=M&lDz;T`$Gt*08v|iyzt# -z8b~e;Pxk#b0Oc-lY+c5OJ`bGNGyVH7uMTaq71;yN$tK&g1?^@ou4T`2Nt-;Dnwo#t -zDK#af1kX8Q5=jDeY29M>Nt5qa{-;SxHf8lBSrZCB&&sX{JZ=c8lk9!chJBf*HUZ$J -zEo)qKIY|Q7fEjC?!^E>X!)9H|HS~e)9 -zR(wK2x#T_n!_9^*8+(gv?{-*oL0XqK$A-~OkNP`)Pk&lWs=YK=uHD$J^7gq?xw3h} -zWXsUFqf4{*CoETI|K~!PolM77|LtxwxYO>bJDHmw`;CK>_er$dEL?brkNYj3c_5Vl -zLzmm?Nk&JB?P+i7M1=lbb3ag2vVLF4a=y#r8*4lx$Q~4J*Ntw2z=mvjG`5Dbqb{fq -zTE19!?5&xsFTZkEyJZBOLA%u!*)@BgRouJnD#(82V+5yq-)$&nr_>G4coNTR?0R%* -zm-rrEAGsYlcj+YEBJrsZoD!rxI5+30&Wi?EOks^8TSP`CHrta`kJIIA+f{bkHIV`o -z;&yIJ=M#q8R4b9`%u99zx1s{Hd7Ab4tz#XFRpq*o&8n@74E>>Bt> -zS<%)76K?sie7LvdsC)vFQKZ^2{#Fu;(^EIrG$9zB(@c?!PQ7I2sae% -z%)-aWj#+KWuA}xtV!~}8&E)0HGTZnzlUl~LHoJP8xf5a*<_EXlQ=U5{&qlQP4wg8~Dvh7-%B`*FUFkS`&4DciV`BA0{hq=> -z_jLok{(aa+R?4gE7YA9?61+1_`}xZ{t#Y;x@w1*IU6d1b%OEVyOj_n(|_ik$#)Rrjj|PNJ|fTa9hl6~d>o -zOS~u3NtfAH1F$Bbw``1X@AK+uld%;bcAOgcT^bQt&2jF6H4oBap_8TPU-Uq`a~(_g -z8J9IinvmTW!6v%q-gmC-)(V=!urRTYL5iq>P05vcaMP3X-xeX3QdXs`CbGXLD>Sk* -zqqyFZzwX;VtPDEJm=_?hRTpFn$&MtlxxlC -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 -zJoJUByEM7^Nys(M@@m98Dz;AQCP&yb -zEaNzMp_6V4)IY5tdfaCAg9G6mPPKandEQb2t6drk+4sqnwPvPrHl3|h-A%^Low_`y -z+oGfn++D>s;g`rv-3qbYYLY$YT2kfMN{|cB<<4ZP=2aNaK1=KsMQqt`)YsF&Tz#S} -z^~%%mUHH(GaW>(g@kgrh!+0B?rx5<;;aH)0(eUINAcKbqhe$X82Gj@dAkZ93m -zvl1gs{6-%Pb5EmH3l`Ze8t782?vB%ES>x*0t-ZP( -zX|yZoIz~4p${}tMvbvu4jkqYQlULPfqt=|alFY{r#zK^wM6%1BCsTc>B-}{XUTwt( -zgah^QbzQCwTs=wu!-KwrhFsn%E_HsXfYf4tcrWi5?g*PpF9~pAD?E{%fBUq@OECfb -zioXyRu30$%>h6_|9E6~V#3jpvZbIh=9<^=a($t>ki)9JWO%^=cmic*q5D#RLHjDgR -zT1k(-i4Cf-0pl7}Es3Mt=1byxmfo50krlSB*zw;LSZm9mFJ+l;!7jK^XxbsrMHgQRG^bPVnj -z`?0^Qt8IQ=RCdvrt;~2goY{R8?NX+DLz{fV+S2h^ -z+d-yTn!7%K0Ut?not-BrSs~MeC*o8{^O04_C)ZYFfn*cy_N7}T709$cw>BY(zRCV<_p0)? -zL{jg%+@P{#(&+f?rjJ$uuX49NAAD8@bsAjU$oF~f1v}m1(=?XUJeM2WC)Sw+#&icX -zQ71eecoOzko%l@WXq`^WK6I#iPDxfr{q20$_)H8sQ;F(Fe6FN0i&a^(2eLAe$OO|m -zTV<`Rb{sQF+iPX`%2yq|M4)E#UY2^jK3=s;iw+(>#48QhcY~R%-M6_cV@V0&R6JQ-@h$eUgUm82DumeUDu8{yE`O>tA+tX}owAgT -zEi3jcOuLghjCZxoEvI9Gi}&nImDg3fO&1;-=7QQ~5}W7+g*HXM2%sFp`=I2uh+MjS -zsyYBJbmf2DC8f)Hno-3mz>Qs>793Oq(RLfi -ztvS1?VSkVSgbsHSmS;CX>f?6ja?aQnQ2D4^e$#eRY`XQ -zH3rVyF%I>{=6I9Dovu{eO3KDYNaYop0?TE%4|%_Q+9He9Sm*8DVxlJjYUQ8JEZCEm8#BlQM>z_Ew%1%nM1Q`5tvRq -zUOf6Wczz?E%IwRxmQu0dQk(7KY~wk$xvHvKY#JVPH#SHq(1qd$eGyQ((M%NFea9Rlik?qJ(jhpVOExK3wO2*)<*P1zEU-{tydKD -z47}KK;i=~#8Bau5AW9&ciSFp5L*?fq?jLWkAZck<~CUEUpSHNvIa^3dHAbO?-1 -z4~EJ5b?)t7*=lPi%1mvWY)y9K_PTuRlch@C@<6+3C3@GzmL>ChTb_(-99@-4AK99E -zXZ+S#$Fu1V=o%f*k!25=*rY1C5AbWYO53B1knw5U$_lk(?IkGL7^n7^J={{Z;>F4v -z#l*@352}@f%PfP<)^e%?siO$(kfLI|(KNc!NzMwq-OG#Wfh)kLOprqsjte$Iut#;H -zkh1Nrw7!Mgl0$cy$P&MLtGRH3H1&~48jMJ#`ur#bJF~;()>slyDQqC+_Wr$MMm!%E -zvI~$u?3>2gDwqe&g^jLF+r>fE2Xx*3;UYgL>)nZva8o=(<+tIT?$ -zPu^&hC8ok^TRRSAjE)^-B`{mqw2y%3Tk -z@foPZysB*SB-wvKVr$)q?KfoT{!mIn|IVXew+6A`#ZOraJmPm^&zrO6C={%P(bj3m~(EqC^*yPs?OzgO-!j~VWmYT^9XM;;r^=3GCudAZ}s`oY+Yj_e<7 -zv#L3#oqySBpIjb#hhJz!+yj|?HccCgTif)@Lnc6)CR@IFpCwn0*oeOWKlQo+Jg*!!^qL5Y9)77RX?S6T$4zfEF0B9J``CJF0({QEl=~?92DUp -z!ThwXl)C5V-jj;l?haeg4p@_+n*zK}K$PYd=H_YhY}{ivDxtCQ9QkbJeP{PcT_Z_) -zm791cVc*WQ=sbO%PNhX!b43#F6+79ACX&QDJoBZ|;T&+=T%g=>eH?{{pQ2N?*tyH5 -z@+)neI+er~8#cyGV{zRg$ftTTPr)bI17PnaHBl&7lh4`#KCOhhyDnbf$!5(c>1+eG -z=G4IK;$kLKJ(TL);%p%+04^C)pp0j0nrG%jvRErEyiL>86`xPva^{Jn@DW0hy!jp3 -z1&?_s%h(aM(P+1oNE;*%q2BwJBwWEKefxzjvF~J@javzM?zyIvgVL<`gq4*c#}XGhRt`61NjK(f@TwtgKn8; -z8VjH^2-fW`GimL|T(=d?rN&#VS=I}>k6i&3tJ#O){TyVi#b>C|8Au9qf{DVBGVaf6 -ztH{~`3U!SP-&i=1!^m|`0_6x6WP09Lh)1OjPeZ&@I3UEh -zT*%)?*Dw<|{muO#%P|l8jaJZXW?Qu~8o`Y$JTmQ3jyCXq#!J3QKoKfbvh6*+H293G -z41Z{fQn`6WB~*lh>QF|D`;4Fq -zAZ)ijw0k4@WR^QdZN&Dnw5h)n}C& -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 -zLCVDlH1lr)a(i_}YI^bJL-ld0RepiK -zPVG?O!`&P7bEv6Nr$qRL>-DI)yYzZ{a0ad?79*8pF*j5x(9%)h^!ivgNL3WCy7N$g -zzy}HLJz8IE3&}()X7&cf3&2^Qk(^2EOrc4rFI+G9rV~0!dlD18g~fW27{d(Q7dpkV -zn3@QPg$ZR>>zr&-7>PGYdg-?rXXCazY2D{?t==mp3M%W#uH!P>3)~CLgmK7#Hot!5 -zBAF%ZtHB>EBn+A#f2md`C#u6jF#_7g;Qi&P2a|CR$O3-$6Ah`Uz(~tp}Ar<5O8G3SPAUM|40yGc^NMSk-RX -zGS4HG`T1;R(pNKP>VcFG6aQQcNI0&*F7=r6dhk!0&>oia3d8JXb(C}}Ba -znd6PR4IbQccYp3yj@J2S6z=J}jtpxYn)rkXZFRArPU~F7#6B8D37)L!&`-$DwSjzw -zr(?8L$G|P*?$8AsDa&D{Ij8qr0Z#j5Y@~QU#o9U?%wH6CFjlvN?HRS^qe4~k+M%GN -z0rHM?2Cbfp*=#FGZZyFCk}4FZR@Jtlg0N-~7Oa>RVwPc^EmYRP -zT!t%R0YQ1TT+&}Kja10VlhdW|f?h9~#b|n*coEQ)jwqftsiX^K*`tPF_)7x_Xwp -zFWb5`yq*kSyVAbn$QPipK>tgs!9eewbnkRvL(~%B?Wme?m$?{VhJ_y@{$q;T9^J8M -z)DU>s_$CKBTR7-W6Wc#4fDNp-_lNX^DCgOx1uf*|-yVsYl-Y8Y(%M>%X|Xn5zAZuQ -zVl;OtjszxgVlCcLa>x2h!Jq*y5R@P@$w96!?3kvKi*!?eD4d}$F -z+AMxaLQI*zU_6dIw3)dC4Gd@0s4S#4QFp&gALnG|AVfKF_9 -z?>oIil$N2K`>Ej)#LwF}bKn7e+kk^X1ULDC~h-idUMSe*b -z*)UlEn@B>otdrsPTag@!ih!tm&7|^tsGwbB?%l4pB5xzMEl9G|s;5&W2I3akn6XAc -zE1A(PT9GSskm|lM_X!<|^Cm@M9kVP-k0}@@$;&Tpn3iec+lBB)OLG{al9ZAhA;(V` -z3w7T0IVQ09=&!XxtSiO0qUh+)MSfCl1(t|56GTV^cw6rM_xFE -z3tkcxxCjus16?8(Av)C=*NiJ@M>O|a%&uV~Z`|JrT<=4PgssgJy;u=96CsUP>1Fub -z*A9jPnT2?J+#eb1$QKu0=WUbKCIEKOa{S!Cr8Kwaa9i)0UqTGKRh-2va0Pc5kcQGs -zxqfIGe7-t -z+YfYZwosN3piLZ{uq|qXCsd~#ft`on&Pn&q#mp#|T)1T#Q%5rnvzM1J*fQX6MJ0L! -zuE_+Po6&>iNrX<#IH=rjV9b)_m7?oaw7o-}Z{k?LcD9TSd+XYm#9YU>9QAkRKL=fF7F0&cJ`5$+QTE^dGy(s~Ru -z!~TMqdciguX=lVZ7Uh_*_0_~)wNl$D(5wN`M!L;G1JoRBBcV=4jujU`5}SJrn05e^ -zlE2P5CK;5(`4W=Wn~^Zi1b%zs>#6tTuvuLXi^OF$v=}s8kwK|(u?5&6t3xLVrbG$b -zrA0_Dj`koV;0zhLW^OG|`(?L>d`NO_W-f#PWe(!l!Xl4)ZZC7f(Vk8dCz^j?Z0gNt -zyh1mizAZbQ>t+lZ+_>p5K?@gcKf}Tq1)h^*)jWBmpW2-A)^i#4i2f}GooP_QyC-(= -zX^QL8sqs7cJ6WmsS=(A*jIdIs71KxUl%@ATiv10~)tOQ#I=BFusf9k_QCbx~p(LE` -zF;@DcKLyR<_C9Hxd1NxIE#>}U-&9&NST(vwd9TyitwaumOT^tF@HPa_k>b|3byQE- -z=uzto^BdY22#X68=`Bgxo6OP%wK2&N@k@bLxixy#Kj313P>ONzc*Sarm&!L$ewbgx8s?WE6)(#c`!_Ja}6%ysmkze4NBq9B% -zxhG(RxCe+r1TCcE5@Kl!sC#Eo6pgC7Dz|`M`46l04fLAN1h)!*Br3#IyBq@E2Lt7O`!Z0xyzY|rrPTp`eiu<570H*sJ+j%cH5!} -zq-8;2ysmpqe5uCcqy;>YV@xO(O(3Z-dBZ8?)U~~Um+!+yLtJIH{0rc}B<`JSNQN+= -zq+WjSnCX844Mb0RteTtjWb6h`iSuM}!9Y`V2(leFBuvMiCITh->X#z&xI{Y>6Tf@y -z36)!4P|JLe^EO$J+~C2Uqb&sFOpTTSpO1Ja5x+LRn^_T%t|I$BlisDa>go74b*0C` -z{q+R~D*xE+4o!BW^~o-k>IUs|VoT|}pbv1?a9ZAVo3JLg!bFQfvRIYiq}(~!j~jb& -z`yK2Sso^qKV2X|n_hjc(Z5#?hE-o6uP6Td%7eq~Il#jDYP{hDnhZIMmE@1jk?p;bq -zjLW(AAl{Ku-4JDEF+E)IEfnTh^dB8;o1Yo+Xv|P^-JJFq%1X9Czf9&|0ip}I*1MC} -z$T4Q*`)jXAR+2iJN`;}^UhH?Uakb5EunL9F@6udIGYsELqj^sRCe0J|^(?}LGq=5e -zkVvfoC;2AjG-$<4tl~^!oAp-2kICY@70ogKt0LzSW3S2^P^LZY -zP7zHWRV3XjF*O2L2C_!0dBXo=Ned=i6(FS=fCQ<^LEk8P>y1W5u*FH!RSYWQEh4|) -z*(B%SJgwXUKZ(qSudsoqTVQAqUWMVmm%Y&!lb3;;$a@udH9^dA3Yfl;Zrz075bi)T -z(lpFZS-HC`PazxKwS1avl_4{`19jY4MG+6&rS!1KB6HCp5Cs_Rr4witGV|QW6dTj0 -zZm;<%+zMrX! -znco!*xTp5!(z`M=HTee}&mM8I!&T -z3ODtHCAcA8S@a03{S#mbMj -zVDwag$D~bX6@rX@&<2l9#wyzyJRh{z5Vktn*2>qUf$(ksU?@}eGm?~dawHy-pEO_L -zsKxcHXlZu>j-ocjw2(ert%iU*$ONPr$Oe9Kq4*S~i3-Cq)#qdNxwW4f&+TcF>T0t2O52 -zzR{A`g-L7lW^D!giURmAy-)v1`$!53B(Q@bsBKr0bmW_n_1CbmaP=|N*;0)!gtbB! -zhSCc2ym${v0zZ)-?(5uaGph*{c`*si(tiVUf#Gv;@hA32<<>4T*I_-L%cd48y~gIj -ziBzOj^j!ejCU+i^HHa9V)i2-4wFS35yHNCSCquX;26>xJAU-44*2tFCwT-IEWwBOL -zP$ixqRm^q$piluG_nlr8e%;vDp{EQtSt?AyKg%APL||a;6eX&+RHI5inU`~zzy1EI -zjz(KihcJ(R%}gi69)1^dLhi|=n*!Qx8{GWn!#r~eqF$7NQz)-GV! -zE~vJ@GkV*0{YLs6@uy8>Z~5`r`1j(5c;Mr8;72(?JGPxJS83vdCgL&w=U_&j%AX-y -z(wD!&1Ld!f6a=f@++Ds0I&wFC{Kwdj{}_9@OOiet!|-2c2nv!M;y)*Q@aOyYAFo3n -z|9Rq%{}|d}|AdFtQm)A_z!XzRJ?aJz6CG@_|6^8FQHo@{JeOJ1?Uj|2_QU&tclLjbQ;4 -z!y58^IT@q>acK;{Tw3(nO>wu14jh=($A65yJk-P8{rmS{#pS?T_j;0tc_-XZ|1tV{L;PQq{e+jxFhQr^ -z|JeKZ;6O3t>*yYn%wtR4-xPzKt4Xh5P8zTvHAj0}svyazd;io@K{6K7-^ZqjMFit# -z?tf8JhReGUKS*c|sWfyd(6l#lNF&**mdqB%Zj-Ph+DO$rB)iLOvs8+*uq|*WGf^#( -zNp1>u5HN}ZV?>|(c7=gQ2x@lRXrcJY>q$23-E9gXRfF1K4gTL6J`wnQjI^ACoI?Dq -z3bk5~&%=DS!12J7;0+CXWS{(3x -zv2DZ6kZg_zvaS%nv!7Is55c0Mm%aq1p$K<`Z~RQ=7326>sjPwz@vE-}>(G|ytj3EI6eN$_mD_)C&DK98Dy0qAQY>rQ*dHeqN#kwEIEs$k=HTeOw -zM+%4h6;h5?zPz9|K|LkDeR#nfCnZyLvNZ~>HgJ*40jwbMuC$6cWg^(Zi*eu>1B&VW -z<4?#)yw=&LB*etUVl4*^;Hwu%5lrc!G?{XHc;^jGyJ7-qML4RR8eo_`<}DGwayYP{ -zSo9s<6Ie^+xaY8at7WqY$VqFjVN|o>$$z5(?b24WEyj)Vt&cS)=!6ri4PSZ&pvTc# -zp+UUAP3)q8m;AV1FoX3|@^no?pcg5^Cprv}KP=|MT_S(2vNCPuh(z|vkpojdqG`Ih -zO#n@x&>~1t>fij(&g_CaSpJ*VEvW-4a<)f-aj888$z>X^r0w4+K(l( -ziE?xTi2Y4Iyy?q4iYn%!3;;O~r0AFBF#PfFKffa$$DM*hxxh6eiG<{ht?HDDWoFSE -z&>}3mL))jJ15!*bm%qRN&44Ws7mjlcTA0arkkYy$fK`b&!$yy#u^cypM75Th-H=R`M=0NW&al#&1A}k9TLUEf -z-=N*)|D?oV8xR6V(|k&ZwyW##0D9nsW>%{_5O=LLI;ipUo&1wsER1~`QK6n7n~phw -z3YAPG+^W^V?wOz8Tashts)d76IGhMI!a#Q|vO)mm#KcI+QQ4n$5gpWfzy` -znGrIRzgmU{29F%79AZb}c~2nf_ -zAwih2hI(n$d&5(FL!-Eh?;j@Iy@HWlYGRP&Av+UbAW2;@N-5dQJ6i25l(nJ6TRSI4 -zW&~b#)RCqi=SH^XB$EVU4k(Re8qumREu%*tVf>6E&>gU1X=$9yr;uRF+XH3n9Gv$E -zYJ3WgEUFqrR2!V8Rf}o@TsSLHfW>J8{?^3Bfq+I!v;w3{P=}(H7nuu&EGB@;iGb6f -zv7(hM-d#?0bPjN4sE3^QceLw@)yI{PxyJAl^+)s586t4JP3|T%E-CnzN-y*5qtulH -zYkgRx^By5i!0y>H1r8xy8@2Mvb6-mqvIkU|RhfWiVPTI90*@$je -zL@q#%SZq*cSU%rSqXVi0^K4AT6ow|k+DHmumMtreN0BQWC8v@H-Gxs9VmG#&pfDS@ -zI(j#yuIcJX+{hp@hnn@Z)%!y^Av&zDwT1Cqq-M5HH%;lpGDvOE&s*JEr4n%GLDG`>%|CU!iT#XYoQ(3&Lwp)TkMs1cb?xjj?E>2_{P~)~gn!pdkWR -zx{;*a(#Sn{sdR8X`8Ek%$c0JR5CLAV^9snPf)Jes3czJY+R*P``ZuWlYM=KrM$l;} -zd{3mkVSVh*0J7zjJE9BPGNDGD5UD1Uap`UkMKdHbt0{ke?T+o1eH^zA9C6}{t;lST -zx^Hz2_TK1;io4wUZsj`piKNP-XmZ*5ktqR~E6U~`fVIAy5H2yFP~z!y^;Pkb -zaYHlhwwE_j;{``3nq2S$Y2p(%JROuPq^9W#*O{TA2!zqHUJ~324-dT3a)H8IAwMfW -z5e;l8bl-aN_M^S|K|sA;>BalF;-$<~VckEqe=4 -z>2%(%SJKhT^!JxZ3bcY9I;pH-G^{lW59mn>Sy7A@k4L866LV4gqU4U0wk?lHE}eu+ -z*ckcD*l^Gi{QwZf^&+&TaoQ(oG-bM%@sQ<0Ige9Cx`b1<^I~in5O-tJ7JLk&*`QF8 -zCfzP`lO!e?({H{(wJjj{f_qu7I?DCvKFb*!M+XbGX-@A0*L*({m`IKdrO)^(C_Y}U -z<9K|oC;yMnxK(K|@0?xpP#?R+gl))TqvVi+bU2s+!F|aM=pip#Oi3Tg!T(kFr2>iX -z(Qf4~;-`E`@j?5_6r~K6Lb+ZU6_*9cbs)cg;0WN?ixG0P!M?YZLl34vF5b#U?#eMX -zR^&>@2*ukw-wTd;Ht!e*u3Q#U*;wAXjBwjqIg)UC`AD9g;|O`s@Dt~9=mC#2q2lo% -zM;`7+K48^+`896hF$+S1DyT8r%Dp7ud7#2EfF~X~9{M+G;)^b+#$hV9158&=R4u%J|Mgo3*6LI;Qu8S`P>v-@UXWkRrHBIgqU`xAlzv0r -zpDR>x6AzGm{fBPTPZ|WbEO+0aUTYlk*GUqMB#oJc9kRsp>jh|{O*%$Y#1}K{JC%cS -z1WwC!=b{rGSlkxLJJTb?!7pDgp2)w*4aCpspfm(@s3^L)Zr-e%K|aeP{{jW$c~Ol( -zdgQf|f0|ps(POCttqW`GzVhoqnXUAr2=N>I8~xFCjAwI|kU~xGM1|ywqC#j#?)rMy -z$mLhSzDh-N7(oOPnFkdxX&i0K{e|I8j=!DvBymT=`LSPDy22!~&3azKHW -z!`739uBN_>&15y|O79WkSyg>yB|*b0%B{0-!VZNYUaNY|ucdcPx^@wvJ+lRrPH*q- -zj-E69K%EqFsWlKvD;-ez^LBZ&I##wq^GJyfDTf4He+nbV&fHOQ%ug7DIR0O)+6Iz3V+LcoF4N?Hys~d$>;LI>9>O%0~0Qc0G*v@KIGj{PJaNo=+tQQB*YTsrO_^Up%j+q^= -zhk2dpK(SLlcUNc7Zr4`xL9g?$#c@$u0Djy5lfp~-H*z_g2JxgjhyLg$!sjr`cg -z5~&cc!>4hte3rBrLj?RkgeWpWHfh7Iai`%NFtNtU*A(FofKqN#*!yB+0E~7HQrs@S -z8$OZv}I~tNs$% -za6@{dxq6r6*UYs2+=ZlkqNQ0K`FUw-70NnKCymVU&Ty@C -zxb}=4~Yjs4W{$3D7kim>urm{f=BOm -zSrI&vB|INqRFjVItPRCUYP976eFNz`WGGn#R$v%DFH9*&y=r6iW1CWlOpbU%*p<*1 -zL;@%y^1qBWh|tYxf6}gb**1~HqlC_jwMq)OahFGsXXVgAY4DM1_7OzVdKS6Nrhz$3uWFE1 -z5#0ugYO^AT9!I34kXVbW13;Zh(FS8K&lxafUZN5Jjp$HgQAi#hi^te#I3VS!A#;~t -z=M1m_CDNiJ@bT?om^KNdJ7cQvdO(?yXvp{D;qYj?Ik%(%Uo$Ca2QZTLqAGZRrDB>1 -zTCj++j|+^@9CBFt6A?ovX@_#wmw?S&5UkJuV=+t#UO@L6KNd~!NQQasPS!fNAsJmbv(-;{I -zw2kQ{s3H6^#JF1byLOhi#~9`^yI5hv5=R1sUG(H6pGZW1o>hCEe#m}|IY+mrs(?YfZ?p$&CQ-;v`|eQc!EM|AWQ -ziAjW(Zb=GSpb2rC+NyZ}J>u#5S4p@*l{Bv|k&KpePwQ>0vX(+ofx2O=?(jw>xXIOq -zpM@v74d9ZD!{ur)Pc3mZT5mCrzDD`CIOW&Pm63nM+KbU-6%}I_qgHyF=`*0x;<~Tb -zp?7B8mc0E;7A4q~j!F -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 -z3MllC?sEB&)zP|8H8D2APzw3FQ -z4D_&{B!+T2a1Zocu1(~Pum*8kZ0#~%|(cBxuGaAfC~*@Va7e@G;FPJ3%`= -zJo_8QRYUl>xxsBY5td?^AIPjoPQs@_qSL1num@nfGAkNrEZO!Di>OQ(v$G?y5l9BI -zGom7Fb2*MRP)GQIF;RppqSuRJCyX)(%L2ZQO>kQtIj}=7Divh3MM8Ju^oO_9C%q+L -zJ|7y192k&4p>&12s$-5x{5}!fXP1)Lc7#%9$SHI$oUFo6C<1I3D7e>lIjfd`37rrfg%M4U(3`boPLDh3_JVi -z#e3Y5OJFnBHX!pl&=dFC5E1>+I@-M2>H!W4GGxnQJT7n;>}4f36`4nXho^wH5O+3134^Jzi1W?qrZ{FVu -zPKjYIKA!zyyrzuzU4C^dPqfbY`gF -zSOf2#=@3;UwBv!y#@#ah&!@`4t!5{9)iB?J8ZN)xn9%9C_N6Z>IGg@3D8?#0-CAh~ -zMXbywNHYzq9oM5+V1~y^yQ|)f|6sqj$j~NY2hq|NrkL1<49L!liNf~L@>4UWVp5x| -zmVDEhWTfPDnO0M}H#Zn>mBAr;ahAg2V4 -zO&!2O#n`;M`{5TC4u$JX2QWk_5E@(QH5nwcN3OfE49f -zA&W~}=xMr~JbFPKy&|DXkqW+}M6Pxp)loEMi#z^ZLh*evy#R0{=hYiPo0&bzRDTzcOLtR(P}%HXZ_qk^IzG*GSYpP2MnvZ6HIemi&Bi(VE@U2eNW$GR -z2sgImOv|UzB?I(dl+n_-9tOvTKKN{)hb7|W&)>E_VSH?iRwcJA!KQ@`L>A9%P9r?+jcYhb*cOVlX!u}$dK_Qd -z^ZAO>samEF8vpe!epRbQZ>-aW -zFgY}5JO=W6B$C6wShNEfC+OT*TAkkMP_$k8k&LBQVPA6`%{<$g({1|r{0>QZLmlGV -zvgqDuIW@;@uxxO@vIPG0&jTHW+X(1X_@kR#P1Vf=0@7fZeV@)aMe)qOA}P-$5gbcg -z-4hMs3rPdlBrvYEv(=?>K7O>{%HtI0D)qoYo-eeg)YxOTn^f;6Gm@qabWlwkLX&Ii -zKzroqj{GxuGZnpAR6#_2rjX8tMeotdSCh3H*EQGX0sJeWF0k2Ql@^-K4qHb8CDS}3 -zw;5otX(nO9b%z}#z$Szb`e6&z!?q6=qVe>+{6l5|F4=7 -zPJZ3scq;eRH&`8?$J`~r3hx9-4@YNoQzXsv1YEP$;s|e)Q~+|A9Yz9eMp^A2zo34t -zn0i5yq$BfKJO$Bss4e6*GNK@!41e3;D4onG&J4DO(DegQ-?RscWsI)Vn+8Z}JC5L{ -zcc8e^Oc#5lHyYIS2P5uEUr##!Bw2emIhshSB{e5l#&0JozuzR=4phY^7AX_gCE_kx -zw!0*@s-~>JR6>gFUv)X$b_e8wl}mp%OMIA9gXMx4nnHP!MYIj1%H^jX?kQbRw^Rc;nA6T2q~2})!NCz-)EkOO=bW4(L-~1{rD>&Mit1358PF>M -zvNtX4RF21LpvW|EXrEj9H2JS(2A|$~u0h@$+dgxFz<9_hJP|m7ri7HJ-X6v{!r(aw -zT&1KZ*|uMT$|;=?uwpCCmYkK; -z$~G>l(`hREX4UFR1~?z%ZI?axJowNjqnlo&7X9XKqq`ZjVntecZdKai@$K(A!gS}E -z?(ljdD*ny7;>uwODJE(Sk`wm?=tfVJl}llPG7;h4llPAZHw#ZVeNWO!s&l~|=fEX) -ztJoq(vL}DUY87S5vx6d15io;X*Y-RaqojCi&a!aO#7|`Ss?cr&y_0AKO{-2VuODRV -zn>eLbDmllx{LD%VGmmj`h<=M(u~RK>hfaX?T;nmO)G18wNDBMtlsIi0RyE -zoP>%t8rD(G9S`Y9hIBs#^*6^6H7UIKXHqO`7(w#YZUy5#Dto*i$VxXNOfuX^;BcSM -z6cerjuVr*Y=Nw2vmG<@FBq*c}_G|n)7g^(B9#UGRk&ck-KJ -zK1AUff^9JQZ++8pzMRv09FDluY@)xM7Q%KZ78&WiqQC;37|FSma0OZSOz=T34>6|Z -zxK(kcl`i!E_;7NAKVZyjS8SUl -zgpVEVGWsaf*&cd?%A&R5$Q!6)4i#Z2U}zfhO2snv(U7%9CBm^a?%(8o`U*32mDn>%L5yws_a*mAkM5|zFS0L$b<8cy+x -z&F)>^wihGd-y<@@pY5%+$(?*5KZ*iM50 -z?#>Y#feTF$%B_;PHc~qzysXL)IKk+?K(^4N)W(MOA>gebV0i)*s|v~;!=T#`lw`k- -zw3WamywLKDTqE)pP^uEt{dz!J-IJ@-woplLWc>t7=wjRDW476HOGTWY8Jb_Mp*rsn -z5HOKePtaYwoAGJNBxot($~ef<{VD2S^7@bwY;el&Hi-5KtykS^`i=LMTjvU(cPcg_ -zC!M**<(Q=<)1park4nf`u;6eLheTNTH*W&BsiiGUQ1)?j+PDJD1SVNaPav^jJchFd -zTe(}>m3*&{@CbMtn&}%NaO=qs(lT|#H&Ca4&$3o_x6(qT6y?W{pUW|Bg?in>&Mf>T -z;u?xe4wYY=z_cZd?hNI#-xv*3-9v>R7D5|)iL(ozsyawTu_enE5^U%~)QRu&2G5tw -z&}062sI*13R@a+u;;LP`!vpHv(h4hs08G-uB}g$Q1SNKeemPvHAza}TY$IE_}UOKju%+**A#!m(0 -zs!k$TgeawR7x -znH5qv5qxf~$G)5`R@9&f&VqY&K?^ahHK}-^#u(#mVX$}Xe1zR@V5+qCN(3f2p~Whq -zeHZ8O6I6<(A;uPD;xDx&pA3}a*Bj9N<|23N3P4zro5)^v;i=_d!=6wCb~kGpbgt^# -zhde^H{i7RyZuC=E)qlwX0)r?B0rvuu@zG8qIv>rd{o89@S$=hYt46_#O*3>Fq$J~EhZ~FRk3}vx-vtkZU71wi(m{L|7Aab(AmZc_W&>c@}Y`g&>aJf??@ -zrf0CCO~x7Ce%h9xcW=GNaM7)RQuRc!%y{VzMmg4w`88%{UXS|iH3^7F4>y1n%Hr&2)2uK2}?d}1>r^qzu668TucoQeUk -ztplIRKkeQ8flhXU_$pvC%Wt9H_N -z^ZniOrmzxv3r0&nVTyRDgxyT(+PSRRuef4tYp*_#!KPtj4ol{+{bv#-HAxS7V6`IF -z0~ymI;Jnmkp0et0jE#KYdLBIx2e%d5gjTtr$LGK1UZy~zW`nBy~ -z+kpRW74idkE9{K_Aqcqx0>%}iy0J;AdyF6l8#*OE3+qd*_o -zPzk2XgWq$^+2Tdg8KE%xldH4)l6pCk3CggZQ>u@v5Q8#kADZ+M2cWpchX;n0(aFgy -zSV2c49a7ALu2h!tH+LFwJt2QBg)g=kwE$e^rAnQXcx7=3yVc*3d)Rr4B*oo`W~F%> -zRw2aKO=TV^9;J(gi!sts{VWbp{g)2>Rvd)#JIh#JZu}-4ZmCCxd-T%ho9A2I1YU*Q -zg(^HzJ`c6}RjJOx68$v5&#gySvu;o@mZ#HZ7&-v>viHUKWla?<2Scx9-_Ktk_94Hp -z;$t*w0o2eU9J1-)sg1?@96btWcM#mH^e)U3?ts3g;OwY9QNt!gQ97S)jLRIf@t(XU -zFh>3>so{++u;{GRz*>3%=U_kU+~4Z{y?V -z-B(XyE@eaIQwgB?XPOK -zdOgjPf-RuHtaHyYbPkZk5#;h9*D8G0%6;vCU@G9QIU8$Gq(wa1*y^r0kNP8OYL|Eu -zuoglM^4E)vEJf7?^u6NR7bQCe&zy+4HsosJmBUOS^smHV!f|zl0at94gfpgDKwERh -zfmD9O1Ig>|%sjLP6$aHWQAg1|kB-3Y0wk<9PIeEc&%+8{8?|b*$#`?wJ_2fqc@8UcBuQC!cxWzj7ov(C1a%|jcxC?O{?Lnqdq}rZ85lva)O#=)CFYJ -z(3f|~uw=t4J2^UqT9ixX@A1MbZz91D3K>-?JpyU2+P&b}qI&o$A}1E^8HQAVU;o4u -zW-R3LEaMpP1vn})Ch4hrZdAMg=e|-0V2GqkYO=Wp2wVwok&xdFu<}5+>r3A1Q3XSq -zR9x>zz4a1?e6&u#+D@FD6>IU)t;t2)EDAB4`t7lL>S?1=$v!5f^l8J2TImvC`mt}C -zGNqdn>+tYy -zzWQ-K{5_Tgqa3l$;t91LbF^lx%~+v9R1+ED&P_lH01u8bHv}oOiOG -zeM1r_^QM6JMaE055K6T{P7c;;w@lO?a&Fb-mC&AIJl07$Dn@u+LPdYFd< -zcFkV|PE`SfH=S=^oVwCnnADny-2Wqr%=5|c;z6r2$g)S3%BqQYU%6x2N*h-wmgOz4 -z);MHs99);kZ4^bq;T}B_e_Yxy^XFQkAuU&SA9hH7|4X1IFg4Ak%pwj~n43i~Pjm|C -z@yA0!Z_dS+!SID-HdHw$s3bwxyE9tT)9By7=XR?qZVE4pUsgAR1oYh9SttwOvbNI -zUE}G#*y`RuQjM#Knv= -ziAqqdzp`iHf*~5Lf?r*N%FFswRS -z!Sl&gf%+VAIYziakPp`4PYMUcr6#sOB#g}9YL(^C@bJvE!bwlNGmd*|N&uZ`PC5&M -zRg)Th)RyY=XKv4bm*dTl|CXvQ`5Q$-_ID`0JIDO@=D#VxeR|^{K+)W<`AiJ`Xiwqx -z`iWUG(LHF-(%r%mcxkOM5OC12BMm0R#x<-; -z_hR`ha=d06E4inx-&@jCmWdz9fS!g~l+G@bJL$Inwy$KI`ImcpzaGE*5*wcBE;5b# -z^-F(!yu2drrPp0BckcEXl_QO2h)da^zW}eg&{Ds=eC-UEl0a!&Lv+Ui*{UAh=vD1; -z?9JVDTmzHnIo@fbAoQn+ojQ=L)C@Jr&?QHeXaBW#e!ej}i&;f4UgOLX#lzSvKXGG+ -zO0`={desUWYNT*#1Ox$8&3G_>el*Jm{FH!-L$dUkkTiLdkU74a`%ZR{L^ReT3{&!L -z1MpjQ@;~}ijU#(avJ`7k1Sbe|O{&(EmQ4iiG9VIi?9B-x&W^L0CTkOdSUmU}Gfk3J -zJ%%QV7WET~dzn^Y(4-WrCC&k?C39^E7#&MCb}6IcF`)q#(a&p_tK* -zIwU}PlJRydYeFY!N3J!806o0xmf`iIPf)L1x&#jjdBEkEs+ttXS)&iHCl&_GKn -zXl_&XR2a%t(#ye!n!q9u+qtvMx^=O4)z;-ctKaFbI7?8WJ4UPFVMhx7;bFx;BS1r~ -z>H4zsHt}ezz;0J6Xv<6PcAL!ku+x6Nfyo2a^5Jd~S>AAfysWK#p$XtI)I^aKJE(!h -zkN5}oA`J77pHg0iE~C|MTpSPe#ghIS(IxuOZ(S9L&i1j6i3OChqIvH&%a7qoqengLb -zuq@OA{UZ;fM`AW!x(+w)qq?^6`^QV^H@5|HC$Y{9n)=`-%R2|!l4vNw{1;N&g|F8o -z@tlcdq*mb0K?y*Hqj;6wRki8(Z*m(mZzAp+O^4Ib(OytLpo^)&j-1pnn$LbP#N%T_ -z9jY1}k)~EBln4I*4OwO8J4qK&X9YqBp!k5D==U4hOyI~sE*`n_9ad+{kdx@-H^G8b -zC(3}86m$(8fScdovOg?ea6a|nXglAugjWF7$)9LWGXv>07{A;K#aI;9F%MYb03wxB -z5E@8@N>O}F&o7c)k4T^<;$xe@CQ(9iuib4XDV=Ln$&3ZS#4}jlRrGh|Hs4^IVeLuh -zg?ym6vD1`Eu~>||YLtFFwOcL~(_6o{yu$fl@C!~FtfAx1oifQc7Em~R_eL+&XRZPS -zx0V#!CPmeuu)l&=z+@CMgKV`=T%XJps|XvB`?Fb*G6X9$wzHlVyrBI~OU^jwXaU@u -zGZV1xHN(00*7-M=g|hY;%V3luUOBgl*O -zka~f8F$}j4K-M{mkb6f_V3C`)$aKBn9PIRUbYaN>Iri{P$=qf9WUO!eg$y7{*zGEU -zG-Xsod?f9C+FK{XfLfP*z$FYMare;+^bIP2&uha1P9z7W3v1-IBooGfb=|ou5$M{i -zQuW*s5mC=*sWQU!J><*3o=U$)a-@Zw9nHRzFOamBIMx!_`jcNhg_@F0YV(kuXqg8I -z%&MYt@LQ*!we459cSk6DJ$u@EVwc?MO$625WOA=(bEugz=jcFDztycrCC-~H?1kRP -z)^qER9LK>oj`ZAq|MrP0DFmlfI=F}O$%?K1fw;wHb;-1zG+vVE%h{l<>s9=ZB7V$O -zBvNIqQGFf>>m(8DqQo{27WF2|Csmq{GOWkNMbTuyiab?wv(z9%(7%3N%53wmXfms~ -zSVw~5kWzX*#C_3=UyC!C376M~4s4K_XFf)rhqi4a=*Bcg4jSO~)P!O~-Uzp|W?L6p -z@QeVhW61H5rH+4iSX5*UL>dli+^(z&nS)-j6ASK#H6lL+th}<^fxG3fSRvpAlge)B -zK{B|tzoF%m6iO4BY7n?~p01ixcRvP1G5!9mc3J$0SYaXfm -ztW7uEf^?uMY%5cUb+0y0F&Iw}vgM;flsDKW>J~ -zDn^Byzk=US{bkwAjGOwE?;=!6tH(f_;e;*295MW3XtISW8dOIfm0J&bLzPuXzJLGz -zeH9s^e_~YtxIRC^`}>dY8mWJO|NXoCz<6qz99zNuYeB~eCzt_b%KYo3G-jY84@#~kq1bpqsKi|KbWAkGR{PmwVxmIzB -zpMT*dv<0u)w}(M1{;Y51Y30xU`u-t;Pz)ga+FxnP{`&R3STKK0((?BA`#*W`@4W|& -zZnU`TKfixNn1WfJZ}T6L^5L$zfZu#_K6dZ7Vn6&+fNNKSksuR-y4sg(FCAS!luRL$Yqfc5_RjTz`#}_mm -z$O&CLAkTZw^A!H|XdBrJtFh!jiGjek+(^Nzbk(Ud{I))H_MFUfvUhsY|Cv(5k -zqbD1{9Ze{=1&-Z&aalT!Wxxdk|NbaX*w)(q+Jg6AG5NbFiwA9tD^Eu#jm{`l0M|nl -z15YxHjKNs@{KX{H6q5;x|8=^et4bIyJOtna2vci{!C&;kv~a -z7^N#s=+U@hrr@VkvYt)VB=_MmwkdsMRsa0bU$13-DL6>|AKR;{Rq2UOr9W9~O|FSx -zAqU$IS|n3~iG;>0_20g`*78>P8`JQA-=| -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 -zbJjI{i?qH*nmncYDmb| -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 -zreYqSc15@4rjU0{k_Bad2f9NwW -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 -z)e=BQd_`4{mHyf%m>fO}IdU+9hZ)8w)U9 -z3TYH81`gx@s&)E*|DRbozBX_DS9RlS=En6mxW^kV{?^gqNeZwzD%xz$%h4K6*NA+3 -z|LY&xhqT(O?i*)Lx1w^E+&)dEas2=nECY$w5VB5oUn+y{`}Cx}Y4eh6d&*LS5JHtW -z$%S%gXx+Ne8o3N2*w*i1xL=2dl?2Ux8JhPy?ow`&6eX!W$?A2W9T;4R@JH0QfGADO~)0hzHXz@jB -zx#Yq<-J1SX49f8;o9Ckt%V|CiOk`S0%ut`Px4L3XmrnL-$%A$ -zgYn8Y+4}uUw)xhh({t@T$bj;ah>@ -z2A_YxCEdR+qYFfoX!2kGBIhbVpr&O6ojp59AhE#}`uOGWFMaSyD}p2`%{_C=Gzaad -zmcv)>;nq*HCkB$fn=AsFQ>6VjaN~98Zk_ohv`7tH0AVHaByk4a@FV)X90Dfqzd!!M -z*T@p)7Gk)Me3_cJ==<;Q|KO0GVB5liKf{QXPkL?PBnT~FUM9L6Y0n&YvBt>%;kP0GYs2dcTv^fftMQOa>x7ViPRP} -z&V~7R{PB!&GrN~AJ;w~v&sfo?FIvN%6J7J1>E-w-Km_n-=6TVSNz%CK-xsx -zWB0U{fBf}J`V>dcT|Q)2p%JB{^)iQH@S);*L;B%0Mg(_vow{WW6Pu=QzNXopwnJ4* -zKYU}Pf~-3HfwO)BuLhsQFrL*X@s9JJ^Zf1GN -zX)A(K(1CP}?~r<4;&MnF2{{<}^Xecs?$MR>O5Oim717shKKmuT=O0pB3y8$zFKb&rL -zvhU;Fi};nk+OS4N8u%9`xr4j54P>dq5>TNmf4X50ckIMLfe}{`xzL7fMEQ2U6U(=4 -zErNj0Z_kF|EJ(KD2uKo~uzAvQBcpL~cN74}0p&r@Z`IkLy{hg{My+^~jk}H-iF)E^ -z4`elZ9I*ATm+}Yl6K>A2II_8aY0nw``LhU6e*I1-lsS4FH%2)0_5PiFC_ihO2z3g7 -zp%~F*01f;tN&obDy6Tv&_t5}FE?A=?{PmV*@`Oq`9h}5LSv+DD-YN$x9c2sfD$tB2 -zAc!oubC>tJ7`{0PT-xdKmaLi5*8>JF25D$_L1-4Wit&gVBrOCBydIfdSkylKZI-jcUzmnaUR -zCP$U_ZnMtXy68$fK8RyT?o9(sU&j6@7loZ -z(^}cejv&ew6)aYLvX)%DjV7Dj(ruwhJFBo;86hnt(PeF&LNFHWQ7Ps+R6>y|D|?bT -z_|vcwo}X|Ok?z16NY3OPYT^sBht=&ABw7Y|U$RB;Ct~wrPt$S~???6KvTvEbhy2(= -zLC%i6hJSU@_?A)0EjvwXlkPiW4}chL$QWCXW5OaqbA@lLtIgV%>0Gh_6GAK8B670J -zmRPj_6XNz}U;!nzYkbmeZggHR0n6M&;6)=2?Gx{Ve1k6Xk#XmRZkHOEGqUt`YNk0^&#qf^bx1f8k~qfO-SCM(Y0B8jlp;$iQuU -z8zelzAx=NmV1TMM7suO^HY6NbBot9Bbnx7)VWSN<-wuYOpb2|~bvWooEeSN=Y0BJ_ -z{mUBLRpbr1i@s^0>hysIe=BNqSOZSUc2dF|%&G%&u~cyeWjNvnb3hBff83AP9jYZX<3Um93lpFx9B+?@hE&G(;gs9^bqR3jkY -zIK8SukKA~ONS7c2R6|GgF3{rt$aE(wd7lrfqS%9|d#g4Kespw?vJ|^xk<9c#ZsqCs -zYvrOzwvV3^Xv*XPf&R30R-RP%Y)Of-c3dYDNQsIiSLlCne8{fr;eC;)&3*kSOrMi| -zJ)8eDonxGy{4TI^b$ODks%TBNpCAJHbZpI5v7!lVxHv~Oz(YJ9^PZq=dS}HT0HVGP -z((i%l*~c?mKVr+sJ1a?FD!kW*bprO=7q)=9Jt$})i6`>n8RIHD(Q*-=jwa8+)c2#j -zE!rJqw&aU*eV7L}gX%UgnKKEvIQC&8XGjBu_hi?gM2m#eC(MYEeuaJ~L`R}<+%abr -zy`nHf_et>-gx&mYJ3u6N>>J>xQ7H0dduDI-6>u#z85T>POO|q%;GXguLt*5k+UR&^ -znXL+lNR -z{LEwwJ&^r&j;%?ZV#9FF35*T_!(^Bo;51}yX1UMKOBs_S?YRtS{5*h9ioYKr2dj|3 -zVSw-zLj2(+1ugqoRDIg1*xw6zFzVWV1#-T#`9se1es@oj3EESD?8@#8EArn1kq4!B -zV7Ntu@PLo4CAsTK>+(3>szA=y2+T;ZT=SjR-pE+ydQ^C{F9bn*V{0WDqqv$7KRI&C -zT#)pL$k%wQi>}rf#W<&O)3@dr9 -zc86nUVRQzA0l`%7EITi7I95_elQOH!qdz&8{7|?0^S-2&4=;mUtWFJ8GGvcs5%Yd* -z6e%SsTTT&e8W2WT!vl3S^mve58VNO)I%jhsSa8XYZ|^OP{0V -zh^My>gJVXF%W#3E$lL-`T*O?q2dzx5(Iq%Tk~MXoid<;FyDmJf@Ch6`j8S2r_XoCbfg+96XA{m`10na~roZC6m7zJLB25fKb;FNK#kjZ=(S&Ruyd`)9GGk#;@^gHibSD}lkoL%%ls1I=VBZR6 -ztP~>B68YxBHv2gqcMHEDLA{~qvPo@McZR`7JO}j`bGM#S0n5JZJWI{939)0EN$%-# -zuISg)#*TpaL4BjuB94*^!lu`P-o>>OJMKLhEZ7P95N%}0b*T~c9Ac0djuzK)xujTq+Q@=3x|>kH~Wkh-9Gqw@n9J0Q!L-MmJiz -z<35jcX%v5wI#A8GO#xd6tBXx;4vXViOtdq+X;^g^0wsTO_K(Zs~ckZDNf -zYrSvH(TuXHt#5ZMb~L5LyOTE@?wn4)tb5pY&RLIT^lq(#w6f!qnrF@ML6T9MeghWyRSR;3qF-bOZgz)+U?Ehs174JdwlR -zM8i4Q>V9P39+4|I9?iSf5pR)!D>(3!qk9!LO3pIZ+_kC}68Y}^g|8=-A68q=5om!z -z<@#Vek*j;kJfJQG>I5rP-W(IRY34;`_t=x=DZw>aGV%go#j$y>;R6!I&!++Ei*exR -z8>>oGzwp43&~9lx-6f*MP#Rq9#^x)^FaVcmb2oulMvZQiG>{=#xzA_?@9e$ZJel*z -z40BoW8j(vRZx8ty-(ab+la4lw6hh`-ZjjjSfLUu)fGe6M-(VjL%JtGQdhw+0HHTJ{ -z-_#}LMq=U4xvHWp28cI5;N_sRUcP*`6+BD -zV>B;YOh;WYF5b-AvPC7mS+w=jA{#?DYovlxN;TK{>2`DTO~uFl*b_8$eWQCj^f9@@ -z>SWJdzT~VhXg`HuPbM$lA4V7=cT~&uX8_ -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 -zW-8{OIe^(#(m$MB5E|bD -zMzs#t7NwFNHshM80*jAo16f8El&la08V|@+%BMB(;DlsfotgXmHbpR5KCd?AkNxm6pZHhJe65 -z1m^&)qhw^X+}MT?%64jt4JO|VGOm;0BDzcco%o-610$OH=&mmvHT%F7JKUVQfpaVx -zg=UWnZX#{ss9j+D%7CU}X9&x*$h5J;B@~3FA>ZrPElD4HZgzswNx>A@N5`5=Wn1q2 -z(#EhuYW+wGa67L=2k1{NQIVI9kS3$DWKa#M?Bv$#&%;@mbgj|4Va2`i*x5=l9r2@C -z=mMIruKVt=C}h*G4pmHAe^Wb$2ymn7m-I&zv#sGI;?z^B%ZV3 -z3U5meZq1x)rqi;6n@nGcX9pF|7=u(8;v}7z4B0oD5kW5%`nK)jt?U13=f6MH&vXw1 -zOETYN@Lqe)cQ8*&Ppv{(EpWPuyj2z4ok-b-&^p795UiLpeSbR5^hC41(97})me_W0Rq$}%> -z&q^-dKfg$OWAw*=e2cT9e++}X5*d#_K4AV*SqJ~|Eqd*qYmmy>#^~$w01U5z-U#>0 -zvvBN+Wh|ngv>3=CT2vrOn{7|VDFAmxx~*hq(h5;^h~_Fr95b}L4QQ4cQ4ltl{8L=G -zp^sAJ9+=0Ti#@|$Ahj?G#oVM4R5##r=|7#>BP8A1C-@#IXQWT#gh*yutO88Zp|xZy -z5Pz5Ny6xQ2fgP~(>y4ha1FoBP2P3IS`h_pL`!&Z-Wv3!vk7iW}NVQ{Jf}A=6fL1}O -zlOwJjmqyV)z(JuuX2vD;Uj~CdnIu^bsZG?dV3>8%d-L-jV-?&frn$#zI;s2OKWDj43t-RZ2Ani--xhkg0LXz -zVsp)?RK`2QFZJIe)Wd~a5ZgmRAYD}p*cXaSH9zbbjfMQ?4KO*Gj_8bo3tY+D8b027 -z)K*VKc74a59t(5!h=RAe)ACtp=;_oVyexja;-Bd~^AO9kgcpq(G4y60YDIh#2l|$ftYD(SYqU_PF88)BBYup*P9joyWsbJiXrxq6Z61^rIY$M8*W!fc -zgH!`tH7<5f(4sVRm7DXNw(a|`{9*gWoZlq6NAAzu(nk-bK)ldZbKiQ?32ksjSfkfp -z(pTwL;4DUxi5Q|4A(W|kB!W6HOO#BIDZ&`tBo7qqu1qL{-}gZAv|1|~Ko6)z*Ev~T -zIC_BoX+Rxpv5Oh~Dk!HtXf9kpNU>LE1Ks=d{5808a6EMk(mwCy|f}88Et_Hh@NT -zswK(ujOI#MT!m~aa{IyYGA3+C?yNwR(L@o-H?$y2ef=Qu3V7{Xmq2I3htx6vDGY5c -z>)l)IL>7K5JneB1CC{Yh5GVl35#R>7gK4TCZ7-XQODU759nbTqA6Szd9Geo;k1YYYKOqRgY!2x8fHYa%+@yM`m8k*WHs -zV}IE?kjJo>(m``fsZ&^Fa0c~bockgx${_FhsDmWQcw)jcwZ3f2s1T7BA?m#mFX$on -zizji$dCoCG!7|1b18;~eU7x%TLWf5Cw1=ug$xBd`!*mY{FuCU3M$HA^cb{8mY7|Ns -z`xp#3Euh;Pz`UY*TFp&f0ajCq>^@n67Wfwk3SIIQYU7b0qYaIJq-l`rM)gf|J0=N* -zSeYT1@ZsR5ldr3YztY*-S(BN?k#w_@f*P1Guie?H!16&(@~LYD>5=Z+Fh$LgqQP`K -z4*?_LCz(z*`jRctY(v5YMZ#of`K;>W;O4G4^ygxT4D2*$)X4Tc?Sdgu)Y7@Q|Qo{DF2c4;o*5mP(1BU?aLZb>tW8*mNhQh#_3N=6QxtiJCs<@E{ -zQn_y^67(Bj;F0UN2e-SM6ybAk)!hmNHZt##=(Xy2u3WmM#^I%|I9#7W+FQ3DBa&DE -zaS%)^2J+se5P#Pq6MF91`tNCR(Hm{wq)<<5e(Fh)jzE}Ht=5!_sH#tVSqOJX(_9;N -z4(v38^he?WT+(9b4 -zIe}I!Xj1~@K*l1s-KU18kDpv~&MEEmH(6@wZ|Kml-U`!+08JVyx*prK&XkkIWUR^BbiPXOI2^hlV=HUpyKz%`6XmIKst@do^dVkWY;nB7Rk -z7%T@Zx)JqWBQteHWGR8gzk!zn)kOAE8P?Y7iAe+BdS?F}Ss-vZChC9$;OeL(jG}G$ -za(%%j)TSDFCWAIq%pG1e=t-CPU{W6zfpsP<8Ja -z%DTl(BV<7w;8yLfuNr%#ciW%_M-%R+%LAODBOMuYi-`cL7;~W@RmzTX=!*9xrxrq{ -z^!l{cpWHE06=Z!(f5gP%LPC`ZuBHE)tYy!FRC@@OMi!-bFKV=6B`4+G`tV9bY;Xw} -zlGeC_d0s|6nk3_qzA3(i@&{sI2#w`#83zYK#|}`?;7}-)u~EPxc}=#~0H5Mk1I*j+ -z-`r$G`j~8;JZwv&mHOq&av`IuJ5n4}7{cX~Bs7uoG0Hq}Dv=4PbHlbfv&A6p!C}~0 -zQ9v`-!wb#{Ru4@t$PQ@PJl(R0%4H9R-=nl+lVu=9KnPJWr$At!3(_9Fg)$j<6QNV- -z&?4zbD!u2zJOHrK%y1>~KvuenLMx-?@hA5Cwkyt4^90n6c?7JVYw4y#CU_0vi9XF} -zL_(?xD=nRIGA5!qFl-^P&Vhmy8GI#}O=3>aJt1bl|FA#^fYLxzY-FcS0J{+X<8qVH -ze>S!J0Y)16iy>H9WAWi_apxv~wgGVp;YLKKHC;K>mZ;ip3)AjwriC_y*f~Y9Ei+|P@6<8=p2*=QHpO$s<3;skoWCSK7V7AFSvOYyxcT11T0Wlep3a}~x -z)R{{wH>u6j>1{K~j!~V3QH%RdJ!01gfLEid2ZVi-X^}jAQm0svVy*yeZyw$j6gSa! -zAkF8$EoafSO%qBR*WxH7e&$ryBDzap{G!CEJwPiuGREC5&AM}erTTEs;t2TvlPWdT -zCy2=>c7Q=ju)C}A0_$sLG)c7$$eLpVGsVSR;A$wYa;w7)82|-BD(d3NnkLQM0KuAj -zg?sOfT+X0dPEs7RMF>&wW;Bjyj`@tS)_z(JpN6mIfFZ#P7YmX^sCnN2;3|&z>2I81 -zA0TJz10l~$)w01#Ael{@NPJJt40083{M{*YQ%+E%0=9lA33 -z`QR5`l2DSWzYeV^+uFkrr2>3*b*eLiZ?EjO_!FU&KQRvqP(!ljkaYTZ$6t7pKp2M2 -zcaH=42?6e{@1244bF4I@`M35+9C -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 -zOOnTn>~@pzDK#Ilgt2ecmBNO{i}MT -zopTsJ=3}yYpf8Q!K1TDQtL5~;z!x^0Uq<8WDD}89d -zJN10IxyRC^3%qNa70HMgh*I_&q+?zv!SeY9VrO1J?WgwQmJ1L(x_ -z>C82gefuxQamf_2zwG=+-Ea1@`#o)sj}JQmPbfCnvCM#mNt)^5jPv9KKkPq@Vq6*5 -z*(VwQ_q_Z+G7Z(kB3(+THHyZ|?9lz}aFcekhlD0|v_UD}J#h -zP0#-kqP8c{Ch2VaQOwG8(gp;$>f^dJVNO2;0P?Z#@#9^;ilR~IOIeG0iTw_`HbW8| -zsx5r{(2pLCsvw*Nq(%YHu{VMir~pYow!a;Ak+#Xyk1Q!f_K@QE>!;k|Wu|dG@)GP? -z_2c7*z0hWxbiMIYD4#+7_}<0mMP+%b4{u^#XLTt{Snm0IQT>mT{ve*f{^^f->R58@FAIg|cvW8yRZ -z`7tc}WIyn0_|k>^XuBjkmahNx!@ltGBYRH6F+Y4z_tX#bc -zy@Q{HCiwUOxd$6D^676|pGxe@`{uIgFoG_*pk@S$lNc~fcRUX&aYK`=8EldF?<$XB -zE|(=|C>GPk4z9%&DjRDGV%RS(q;93TIqaiZVEj8bsWntXCNA62IcqO04kemBg1-Ub -z^g+7eEO0>q%7u^9JZnSzhqrw1Ia}noZGsHCTc1EAfsKpO -z3FBGj%H~WS@LD#-k!>3azz3460PMmGK0a6X>ZAtcLK5rgcOd__T&mYT~!5mA;5yY!y)!JCOu?olJjr -zYP3vv_hfz4d}Cl^21XvDfPm@m1U!N-+dKSU7h28fd5-yz5x=8E7gZ}NMgnb*f$jNM -zT0L=2#yCD?yZ+zR5ph~WibuVFWTXK0<)W++6j!bO*y4T@`Yir^@IBM(lWuvqIW_w7 -zEZUEJF;cpy(#i;enKFd8H_Mbnza~(;l5~p5Iq}y}{&I;_E@3Vk$BVqUw0NHSc8(Q| -zzzOz7!L`QlIc%OQ*x9Y;zwVGMRz@?B5phbEgEpNxUI@UMr`%K2}jbl}b^aZ06Nszi&migige@KTich1CR* -zVP%;qT3`pw11CrsXATAP8iPTCIg|I$f^U!6R46CH!1wB=h0Exyv=pi8je|jwg#mDj -zMsIBCrN}E18o)YPe$ZXOGAH~tGi4uXW( -zu8Dtciqq#Y*GbxIVTMBFiShygsvw-MZMbAu>#b;Ylp47}vi@<)jm#uz_82Qh9%H%0 -zt|&y>u`vU1?Qa)o@BP?naE@1~X%jeBw`l|GoV{$CFsV0W34asa&e0$6ajCgC_fo}T -zp+LN!dUa1L@trF45dm>sBq};z_W8hCegB?>$ifvg3>zSM(yzvEsr5(@h3^5Fp$*z6 -zwBd_s!4m}9!+O~*IDy_W+V5Qc?RMUmcg~us{5TaQ0NJoyj0%`xWG3Cil^kE(NVNyW -zBO~XICesQwt?ATQIH$O8H!>6gfYo+Vgwo-ySfoiN8Ow6_k`41*K6gz<>fb~l%@BoRCzW@NW%1S*Z4hmkcqIYXicT$QRSI@ -zl+=|L#vOAs3%Ep2ZM?GD$VUQqLXJq!P4Zd@Cxrvol2AY1$};J1Xr;lHyo<>N3|>E< -zgDoNk)8oHSw4S&%gN?by1Z^tPM=sn=hJ5eIspia&i2Zq3H2gcFgJphy|G@O3f*QQ3 -zCEEil;hnTIK#*zqp=fz>b-9%UGaWT0SFT{Lg1uC}uxDR@QcwO^#Q)&covgD09QETn -zIqC?5l1q93k(oo%D2{!S;qVl?jpuO~q}1rQjEwB@|1tJ2OOoT<)*v?Tw@~*qJvt*Yv#L^NGSf&?J%CIy14)oX@B$Vu?m>Tg -z?X@oe=vk-jxAUFKAe>GoL15qaTEGiF0JlP3APG_2;pV{wxgyoFp`liowa(59WYQA+ -zFvo*T&{1Mjna5pPEnWrzAYgE_(hjm|z(;%LQ-L{du73#ZG|y+4k1x7Fy{o$4;@Qwc -ziHUNMmtb|c+Ej8u0t9~4W;FMee?AjUN*#@zPM8O=ckGQZUZ+;`!;032@LM`z0|mg- -z@`DFD*@LNHvf`DXKyZLn4bu+}C8Ys;IJiv($pQXW-z-m^XG_!=nz#WJ`{`t4WJ41+ -zX>b7xSeaa}LWdVXM0LI;QK(_l1_>7<&dk3Fu -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 -zqa)jloWBN*g`mI~lw! -zF~{3%0_z!>wnnzBu5Hv*E{nC1f+Fz*nPRT#2YCvRxbO6$@ax994n1Xv$x>em-dXm~ -zB>n8*LJpNR8W -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 -zMWBn8)so;r@BTpI1crzWH*kv%%ujtPcn=( -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 -z+yRAbYH5m -zt3x@M{241!(1Y&!ja>232O+fC77;IKF?8ovDQ+=P18M&N76f3RNL|Kb`z3v&`FwDq{$yAoRY$h{+MqL95p21wWMq?|u(XPPNrBuRiidk@;VG_hh$q(&$A -zI9Bm1HQ&f=lFhh;O&KTw4>>DLAr|kqVV#unDYT@%gH(`mO{n6_$f~vOIKO>ksl;6i -ziYC@Fu#0_8)e-xsrEs|>A-jpBs35Xfx#u1u((4lG2h9ei^|!(f=wCV{kRCkCU{0v<&}yC)-U -zjHt@iprPApmjcRa+PxheKk*ir9BT64>iKOhT{(kmN<^Gv-E!~PpKU)d;KI{( -z#e7K*t{zD0j6Ur;SPpn^e*`697pv!8_w-Jl59b+4y^6b{LeZNM_M(!$Ew)gJ3iAQ_wb&p -z>t*7hNEc^sM*Hye=A_S#jceEiG7IvOeEkGB)-oD? -zuH}LCi}YTtU8}>MpTQsv$XJ>gz5#G)#8j_Ph3vg_Yic|?%WfS(q&EYQYY>?kWIM^T -zJ!SKf0Zf`dCx!a>*l8ah+5=2$18ti*3W}n6KkPRci~PD}+0^jpThwGEJ9+%(*QWBc -zZpb(hQc3~iRbCc`T%{$#T<4+Ve+M)K(7&Jl_%bdJgy{MG0+1CDEu%)!?-Bx{r)ffJ -z3o;MWu`iz2*#k^rjo3a6vS6ja&nMjki!haJWUJ)W#2BV^GpF5xxZRD`=GvXN_5ixO -zeB_G`ESA2(k`?TCFmGLoW@HA%CL*na?XP--o;Fu^2?iiZl8QWwhSqP4h&f4)1I!|~ -zjP!ySQc&Fd`v0m{5vI;#{W7uGc7#NlWa@>1ME`_MzMRgjN<5d?@o-75nP3wV96r;gd5Ag`xM2`O -zw1*dOxJL`x(S(Z!xMPtc*(n}?JCU{@udhx7$Fo5whslw?~MpK5u9f%%c>?6_-3HWH#l0&$dlZ!Fu?xIDy(c0e;8UW61`9q&KX -zoCE=4HiMv>_EBpI=Jk`2&ezWyz>XQCat+-lvKL6p2ra24P7KH=Wa$grc2Q>eoxKvvn}6hc2S6#RN{6r(W5BZ^|l -zf%Oi3!$6hWu=R)D(E@MucSbJ0slkJ+hOsf}3gO4n&{BSrtHO2-bpqO6@uq%v26p_d&X(fL?^i=jR|fLW$WtJ$!W7t{`-pb -z(4gB4KwV8NUJ?g2C@t)r8tu-Z6SqKoyrHOv9E;MfFCTe?5z&m$2@bECOS=$-tFOh&vNDe%TE -z`A`f(x;7~{PAx4mPvaPDAV1+pHv`$_{!a;9^ -zJLpFg|Dw)Fxj9DQGBRx|mDXHG{Ru--d4-FPg&M*)&%o|g&uwTZ2|J+=){|0V_0 -z=|eC7hx9ViS9_FPT(T$_H1t$-Mqh89_P9f5a;8B5&jo<+nJBDxfN&;_RC%>nfeFF@ -zaLm+*Y0((aC%HDMRNYsDQQHmV44^An70T>Z^u&~GK7xqPc->?M!F4w1=5Hmn1P~$C -zP165~Lqf=gVg-LMw4L=uuF&C1IE)k4qpMC8xhgv&AYK`-7gS)tZv$3-yeon7Ai3xY`?2sp6RP -z(wX1Tjf757pNcx9l|*`Ynb{Zs>|iJS`7TOhI@Na0u+DxnU}Ms_yr*zGR#*d4db*1{ -zDxQEQ$hm6E$C}J{AJWt2BwS5OIqVJ23kx-7YhMumlSWAR!oJGKpYlOgbNp -z_l!$@LB-~8ZJ`$EpOfj*B){#JpWJyXE*kt;(m=O@I}_2rsn=gdbM~2l8sK)_CS!19 -z;$XKkx<3|2+*svewQl5}({&iE8+dO`yn4LcxS!SJo8%dD@S6L9#du`4WwwNOkNpQs -zPc|pEHyMqfK(p?CI0>j6+#&zfh9LdJO{%m7s%R;NHB=Fp6V`&PD`%UTgHpCUz=Ic$ -zT4&Q-6DTI$fPy^Qo>C3=sA8?AbFN2tOl7OEoALz5}}V(b;2Z! -zW*dOAlM|*yJaJt06Vh -zxkGr!$v$ClP5D)FYwCf{Otmi@#mT_(Om`h3C&1DotXGB2k~Ls48Qw;0CxqtPV^>TU -zqfer3DmcxMp)7|R#UlE)jbTZ(fC32p -z8B~dlu@nv;KmSICYRg7Dbe_gnNQ}hYU65Oj1<~eIL~(S-wFZLb8|b#Dq)nPgo9ZCF -zIMK#9ID}^eExfMS8+=T2%1zKt56}LFan%rhZfl9TXhaOm{u1l$4G -zuFQu90!y|%#3Cxw#q8`zYy^^l?2M@B+FXod&C?NnU`*s7i|F;D)Cr>uz_Ng8V-w7l -zM-J=Ii%R7fZIRC1IQii%@kwt9c+ZE%AqNKIPY7M%uIiX0l0Pk-HOB|LN0V26#5ey{ -z2MgiWrHQi~GwCMnAd6oKpIyXgg`QLc2w>U|1kf&(o5xn58gjNmdBn)3dIIo_kEAw( -ze7?cjT%bsSzt=Kp2`3*RIK$39dhs52WD?knwGGIO4)nymwnIdJw2n5fHhO@4f(+TR -z6pzar276hFM@8llz~L#JEtFlP0D~#Wk(2gnsqEESm=$2Ekgl$$%7Pu}<#z*USGy1N -z)?6fG55Q%)u=d5Z)pK{430@OQe&S4Lfds&{nVu6^@@uG-Utz-l;Lnih!lWkWwcPqru3hPi3eKiK42H1^Pq$VYLJ=#o3DQc#YRB~`6`0|%((bBv<38B$E%LL8)Iqeg -zg()VsAp>&rVxq8pwEWb3shHFzt0miXCK)LiT_)5N9M&pcbA7uTj#ewIQ3-mMrQVvS -zt}U6vc+;tT8W8aNJ!djySUlrYP3}fzau%Nxbs49COaP_}stmnI=2Okhc_Sr-WZUh* -zcz5zzqFc(kX)ZC0tx*2yrAL1wiXbq)svnkXtT^Pe_Hd2*@cxTT=(1P`Ua;9+P~`hHG-=Xsw-*w$(ATE!eghwAN~W -zIm?t4xuigCKr|cBK`nEvA0R<_R>QU^}ifa|UHgMmM`z*23N);W(BxYXIsN^Qz^VUQl0U?=z}o1qvvY1*qhj7bE==O4?iJgi{J`@6$b_f#$_!5}<0E6gEqJrqe<> -z92;NeY18s(Io@^bJ|}6(O-wa<9{F^GuH56a^$&*Bi8spN>y69hR8! -zpAnIHdQD{gTeES_z6+Vh9g=Xj48V;oIn(l~bjbku7e%x*u7_+?jyA7o-W$&9w2be& -z&@9&jJyHS4;*km!PLXjHSCJHPZ&n@>^%0$G -z%_*2KhEgbczG$Z!klyIZDp)^?4?Y{>?_e7>Uesg~)3#(%wwU)60B*(27w8CQ5g1(KOil}|2JW!{Bd -zL^OtoqHkItzZGZ%tn5!DH?7{rHOVih(@3|6k#VfI3C@+pZeu^4OwkS6>3vKvs*M*+ -zZ6?^G4IbLjS3zUn8|!qTN)F8#kAeIiiRADv7R^A$20AyERHt`36it_YBx9*n$k!Z4 -zGtYMBbeldtze7^qP>1-oEV?&ZPR%hJBpckXEP+4$^FTl0HUc&k{^%xGQ*|?edNdeb -z-={M+Q9QG+NXm0T1jiCr_e6X6LejuB35aX$Y;|dzk00%~ayZ4gN*!>J=L_vAHTIb4 -zCRMx1jHGD;6;u<4(Bz6bP#!tDBmYd^Ohs=NH4sssDWtPu(R(!V)nx6)b&-C;)ounFOVe%M0wuOkF6oGk!8JB -z>B;FflP5yE`zyfwSCGDXpi8XuWGNv7&xOq)fTEnqL0PJcL;Ufb6I~Fh6WMv3asV4c -zT4bZj1T7*Gawl8-|8qqNr@n4*JC*h78*GlxW9|}Ig?ECXhodvPDU#lK0;pN*aD*{R -zs{c614ika4qOA3gUr@eQNWCCM(vfj2euC&b)D`jy8Bq*RX1{H3luc&*W`N9E@pa?oscy{@~DvF6j*g -zq;pP9k(vBF&Cay4Fhz7IiVWzL0Mnb6bt=VUB~auUIIz#{e46^#B7;wF{nj9Dj%}Y= -zKwvuL1fGbSKvP00RBsPs9AEGp0H-)af*pJ+o@_B=eh(@wUtUdmen~lhI8tQipzX -zx6$1URIwtRJhv)q@%Z+49bvfhOm}!a5!L=?TXEH}1QZjg2FZzg0&}A$%BrQXKbeAX -z@5%Q^e49llT)ro1B-OZJjdNfTyH#wDBh`~XVx@`_<=H_EsR)=ss%v|mOi@z1HRo73 -zWa1|>dsSq&f!;~9a;88?m{4=Q)HH#qm -zYPW*v9(6t54`ibo1tytoByhOLXNn0^f!8uRp>qZ#;Ys`Ya1s*I=K3{$or|pTFb}D+ -zL5?>QZ)AXZ*n_ez!}NJ+bUF%zP&48by({I|YoIa|)jJq|`(>NU|@P77hXl!}b> -zUQu3wE{x<_O0a@#d#3iFmxl;bbKI&p(@K|W9lRmV7p@kN$5F*V4}3Ve!5=W?HSR8B -z%NARPSQ0s2bknt=<+?gC!z;GT61vBZRvCSi>1+=@LS50?aNG?fF^7sUlrJ<5c_uFr -z8ANXc;Iz=H4F5+?$lafo%w{ZL&3Cp5!qlq6V2YGJhA~YxTF4vkbLiuz#cF00_01jg -zVqR+0No={?S&1s&1z=_JAq}VK#b);|Z`+Fz@b3{B-Ou*c+T^Z2Lm#6G$ABm%Vk!fOYW%L~N%a0C(qjjR1wF_~ceeR2zvM5?)qg2!vpCULaR!Qfgzf -z`ViPwP_H}zh*bq;jbXTL2uiYEN7_nY5ngC{My?Qf3n)|x>U=#Qt?tQDYFntJH?n?$ -zrE{_E@-f?Nxt$`;&kV}1)=-^y2&k7xt0&kl-p%+lHHM+FIj!a2sSt6 -zcN@g|gwU(*HTlN-%B^z+z&jNikyFlG;d0E66F-Mxb)WjxaE^aukSDo;Q6)IC5XX)VO9! -z*4*P8$UNolX#0t6@C#}bbL|$BE^!6LC48-5sm`GS4-1uzy~Npt -zPgNbHqS%sU3kf!KA?n2Qd4u0eX6P~hJXG4ER;%kxH*w7_-QfXsZb^le0RSfH-x8D< -z6M_;sM6VpKZ_5?sToc+S%Kl@9Tc_p6v1c%2>6#>^?=8IBXJl;%7;*{=tZ?$cpHk~C -zdlnnw3hTr%TjNrAa3{qjW;#tJEDe0$({Outw|SI4>?hU_`2k45!Q*qf-9|QJVd<7c -zAf!Ax3sWNcdT0yp$RYu3Ojs;PeSsGnS$}ZBuJglgX$xo~pR-=%(kSL6l_qtxbXd_L -zZGP9TVX)eWk!)_7FBIwD%b>kRpsX>DuM>~DN4yY>R%)Mwy|;d_PjFDsMG$h(>81A~ -z41f^*E4_15$o$r%asmSfsBbpGs|S08rD$#9t)6&v6}|n5x!7dc;1YV^%-vnkYNpw+W}TgK2p(D6l#c$e1UM` -z!q03NXp1(N4w3zz>@mPIgo$l)YfU@SHsd1bx7t90j`?;$0;kQxC{g9ulv>;lfclRD=hThUEZ@5xUf^^vV|av|4fIJYI41(WcUSJfM^%a|c> -zsZQKVI3E=5C5ar`QBxrDBL8S#yQp5?GHG=T%{{y4$5 -zhutH2V)0A%+rRHW+Nf#LUSHDCs(CWBYLPx>zu0Ad4t2WX-$gKnj{mYBz-f{*qB~Jg -zgkB5JztyAu@z}Lkxv3w&zUvCG$%Wqzjb1H6payORr&eXFWp{x{8P!F -zV^{p*L_V>Z5qeL-B8hygKu*N~c-H28Y*aDDH5ycJ8nP-qiaN{u+4Y`&&!6^genFuG -z-^Jq6#a@?Z1Vm8firXtMUCtN}6y;UG97{m=NwzXFu -z$Y9g3F^45{*#0w#lA5H4Jg{03>w$b}5pZ5=Gf!D{H^xIga5aw}h=bdTZNlxzy^)q~ -zOZaYyT6H*K=Ad%}p0`k3YW3Q7ux-G9w+i -zSI{Cd4yB3yBA4`-rDsW-r%|4dT&M)o<-zYc=4|mI>5EVZ{mIqYeMy}h$pmFc&nZ>M -zRfs_utPf3ki2+dD;==>K%82A-7Ob43k^U%VKvxn=`J4NUxSEi^mckcXj9UIJ^HQb0 -zNxZVSgx#v|$UW@5MUvuf6tmK}4XY61>!vafJvhU}w5Brc`Sn)C1v;b&m5f0gO@YKd)eU2VwvpdLbR(coa33otV -zQ($&fo~U6Hq9~nDH^yZS+H_A|6SyM(lo0YN7XQw@B7V)8Ri>$KjtrZx9MOHoBrm2J!$ChYldZ8ypT -zB$$i+(Zs})T@QK&ZAc(xiMR3b^Y6=cLKe9VTxNp6hXouSen)kP+zmo?w`*JkVkBjt -zku#qdpkSANony;u{@#Js83FZ`^WKTwkGZ7Dltys}Fln|2Dq*!n=;o#yGexIYmpU9f -zFyl<-%BfOIo?V@)0i6A{wf0vvTeY6%Nx>9Q;MKWj89E2R;s{!K&}tPvYvsOnz%Lb0 -z*PM+t7}6phZ9H{Xj7R+uHML8u30MoE2JP#`MwXK50`^`p?TdmPgJw>YTpMyV@ycGN -z@cCCtFyXhlLVznSO2Qb^ETFA9<3B3D;eq0HcV-@1dkO>Umx!b2oku_5b^#Gq8z;Mm -z)8}F3u8mqX+G4!9Y#)KPhjv@ZW7sz11&>-ga0;p)nf7dg@XL|E3ba|ynK8>oIfb%I -zo%m7ZJK_&Y@O&OT$im9?Pr~_9l74}Gg-lG~prP(?5Jf2C8)JP26X -zO96h9*$^0uqyYR^9*1EO7owrAVt4AQp$ALETGd7!Jk^Z%1AnIH80A@bw;y -z&Ed7o?*(<3q45i}`A2P#=iK$4Lo{x@fj~tLbaO!f7zLdU99@rOD_LUYkMa*FBA`YR -zI=KYha~03d%>|-$kJJ?&ttg+wZI)okbpawxb6vi9e&qm~xnMr;NQZ5VGIGJKM15`V -zwoNPHtD`QM#5m{dgXN4@nDgnYD4zuHcmniX5|(XGir+$;t$ocist -zdg^JTQpi3gCG%;+iaO~MTKchXnlPoC6Wj3pM@eAt{_awN#pC&$-X%WqL}i~)e+GdN -z$bA3<39!TVebZDXZ-Z~FYzOGy=DhlGKKwnF#G)Lp&f*D`9&@xttjz6{SlR~K?8xd_ -zeX;P{Tfj6CRU!1toOqf)fiQNAqhRpNHz~Vt` -zGRUq+jmoNNcwf0=+DZ#osFmd{uhukVEgW2x$So8_y5Sx@(tcdnF!SeHpdsy6b{}>~ -zUjIv&CNL?@rN|-7)6*Sj-X!_(;Bzvot} -z3I#Ch3!C8)8t#lXO3_#!96kZ)X1zXb@U45^dJEqdwZTh!O4i_mSOa@eZE6{=jf5h4e6BD%`S -z*46%B9Ibq(`~ZosOh?1Tk*D>+(_;slw#03YOR5VkLYj!PdlDTob7ZTJ$~AdO^QTSf -zS>!_nFR;7agcK~9_l!1DD}uj1Yk@_BDG=GV--~WYxfdX5ce)~1c%)NIA>Wgf|DOAs -z3@c#t+;nTT^ViXaF~~%ySM?ZC`RA=!6p`jKX+p>3>AO{1Khs4VS3d#dz7KzV6rOQ@ -z8PqgeIxZ6{X%IlrupK4W{3;fpuYgDy3kU; -zynO8nmx4fPSwn2c!q}=F-RM>AapcY2bX>!d=r`VJqag67X`MQdtknE8$v;QO#H|e||K}2mF+Pi9@RN -zn2<7glYlwCo4ZbS&_guV9}H9SZ3F0Ab@D&@RE;BhO>z`#Q35CEb4{w%ly*&o?J^h= -zGVIL>3eJvmnI>x!dRRR88#7Ik)jWnKiWc<~N_&}5VbGKmt0m3=tR-h{LyitM|5k(? -z>l!`$m*}FK<})5##t!@*!$xQLfD+(RCXr6v5h75bE-?TE%VtXiHL>e`SaW3E}>4BNT0%(->3ch%PAF00?^ -zuQ*Fkp*u#a;9*A!{^4PzKO+D`t>OBz^EUBlth{bl5@^dx?sl8Z_OR1_zJbF7wesO^ -z@mSt)fV-@%d7%klFw``Wlsc$^#gF(0>mm&EkDpRph90BUZd@D>^~I9@8qp#8&~IWJ -z_#8F+WNN|39|sVW22g2a$gJ^8CZ6>`vEe1A -z3|ji&Cd)eq(voN>LHidv+l8;!CGngoWTaBy&Or%)g`;$p-Bq>e_-}F>Gh-s|8!d;^ -z(a~N|KcI`Ly^fsJF`CbQFudbqLlvqT9FeA0CzJ>N-wj!1<~vCbQD@~r2VnSso9Oo& -z*-T)^KqelU^Bq=a%W#wE;y1y9L??=Xl@4?b9YCAk;Icm~TW~)0;b=SGw18Kj)XAS{ -zPBR1PH5jwp3dLBI)iDED;Q%6$Q&1U5eM(V!OwTWpU5`khCdy-*z$TGFa;M#GCMlgO -zRLP75xWqG9)>ZU(17n_=xq--Udjn6cB8>9AOgyK0nfJhfXc_0n6vx4gpnVDJl0 -z8myh;&V4e;Hx@uReD_8#)Mu6g1hxl9b@X7# -z0Xg>YP08G4>}0HO{Du4<3fS!`f-+?!M0_O8ecD+k!+=?reZU0_BysoA3+xT*f6r^X -z0!}0crVDH2rX&-_fOOrtClScntWx#d5fM?(NU1Wy#69H8zn)6JMslQuogK}-lP{38 -zmN?cD*!q)SJ%yB#O=|Oyo@kc`{mZJNa`0QHpSA5*xOYb=J3V{adSaK{=}iRH-DGmF -zXLG2TGUw<(QN7izMj~vIrH;(k&e*gA~8Yu*)R64kaGRcaq{(-o~ -zW>v|wo-|&Ph|Afat?O0%k0O4|H6&7Ftx!QFm4;IxX$|O~qk20*s#YNF# -zz=}N8axL8Mm;*dgmJ;Z&{i(iW~m;;yBh7N3ynP)ymo`<$= -zBgn=yMh+UF_0)u7L*A&ivu0ZtTJVhitYgUWk)@7*cvw_q4Kx}KYTT}j3YmRgaT5#P -zhczNU1)RLH*nxZHuvj7B1&_*Z=s_~LwZEa|lN3r5nJN&ta-Oc5Q+V!PFczdJU>^EF -zXt9J<6h0bbWf8=p@(K=^25TOv{H!fE+< -z%KrNGy;v}RP15l8_xnG2@bA3`fo`<8>p#DLLzse7o^SIXlJeoMxq#n%az1wNw_-p1 -zQgCZmgN-0lfx6n4YcCyLKjW4c^av@~hn`FWIYdZ)?o_yhXvZQu^T8&$-Nitfj;}m& -z)2IMcC`T5wuA@&{S5>O@TE`bO9mok?J0Q<{&edY9ARC3KPGj8KW$%`Yd|df>Q`Z%{ -zlf-Oy7^8?(ucksj@){1b^PoBjfqL5O%^?^7eA6>~9GuZ3Pp!Bn87s(-+g^4kp$x}V -zoIxXG&cT-4%aWc#3Z!B|8lzL$_mIOqY~=%x>hr16)*)mkM0v$2c`!wt8832kEmKrP -z4w07&$NGg3entCIonG*MFDG-q)1xOFz#UB}w*`*fdvRGhj%C0F1ONUgPuSMl{@Q}~ -zUorW+D2fMVj4Mw^D2>i2RRGsR6a!B(#J9wG!JL5Qr#-pj_UZpzu2jAM+W0*QvczwG -zGU-{UTy<(-(ejQJG#5!@>%eu3FVIO>n$Dwf#XP}Fsbn>qqDjufWo%R0#;X4LrN3Uw -z>QZ2k`ad>TRjbMqk4k^C)_PnMz(NYP9kfKI1P}>*S8Bg~cdccwPzDQ(laL7hxGSUDY&= -z8Uha1KKhfwB~n$zFTdVMn&??yz-{i*CbNOpZ@eCF>tP*Gv&*O*^vB4DzZ*UCOgq{!k0!=<1sv -z*UNz0w?EIS_rLxeES}JY3Vl$6XBJs^J3_<#NHM{Xs*7nW*%&$;+}wmGheQ^(R{kxL*bZJm3>Mw4M!s%+RIzrSvjWA -zSM5#|wUt+`R`roa9EC&XV1J!T&XltB2<1?9V&O_zhtmj7J2!$B*;^iR%+IyNp!=ljhEX_n2 -z+)s6`iZjPjRn$lt85q6{9Mz95{rOWQ8vgwI`*)R>ICATxT%~--7NglRI_4Ej6Mr+j -zWl)P917Xb9Lh%4sX-l^f4Q%p7?t&_ -zKq=Ma)QET~0Ikp-YgP2IDaD)CzbA_>4S*MLol;#q!hm@@3%G=i<%y2W9jcnC?01cT -zvUr0<(ppbe|-M+B9_NhsyZkyeBM#n9xs`TDh;^o|~X6&7Xv^-Br}?6be~lb~Fp`1$5mxRNA!lLarK -z2i(<-S!gx?1T&}nI#|zVM2zjX8}HYi^Okw~Y^;2ljc|-)=vDeZSoMMg#r7`ggX1 -zngc*@H!iv<=9x#|rcM8vP;{H%LciP|JVa$OO|rm(sLrZ~M7qH(w5m -zkN@Ike+a7fFD-D>4+`J7{U_OXoYm!&-i?fIavy0Es6Cu&aLGbGr%-!#I?@H}uY4Ci -zIt4-mH)goyWWNmL8n?DiFn}ah=^=|5!$>g+ILsyy8Pc>)N)aw2B=QwAfm~gHKNkVk -z)@l*AbeNIb(h!5)6^^nF@6f~YRDpc(HD!<5@VYwMPc619f9!KDA5AL$wncHe#}hxH -z72JAsaT{rDM>$}n`LuSrONqsld)ZJMbeRwgTs&wVDQ{GcZN_kv=T8%y#XXR4p;vjV -zhprPQxn(*tJLF5)HcDSArvZlt2p@`@SetIQ^^GIRVP!-ZiRE3DG6to6R#{5cW=Cd% -zk#t;+-K*J~VWDtMy9#X_8NxZbw%=;)9Z%oxrsxz$^Eg2Q4~2A1|%&+_`u -z+xOp> -z3pRis3{)-9{N)i6;Da5}o+!)_gqY)@`8qVTZn0RT4SBj5 -zRC@)|0Xi~@E71oij?13Bjg&VQ$M)~bciQVwxBKhB`m?l%J5q!GRhM=^8bEZ%j@DQ{ -z{mSjM;$;_H_dNapjE+|Yj*+mJ%8L70M@QP<;)z_G|LVG224fsqbm}MJ`5Z5Xm=0Zj -zg-6P_Np5rT(A$q+-hqw&^>WtN>t()Puk-cCSN?t-_{RpAAIvrh -zKhVGB3kv@-UZ3o#aBpD(d|pDBpAE9TX_25fzyxEOb{@3gP8#vbLcs?LaF~t(EZDiG -zSeh8+))~e)#oYrfWKg_6{_RDSYCFWZ4XkD;_>7?=_)=8ZW@ -z!!5gSgM~2o;Qg<1a)yuZ5oKQk -zA850pX>+}_4$xyXWQ>N3!#AMho^1Taj>^x*LSlmX-Iecl*pa8Oo86~|-t3Rx<*V3} -zQe=QAJ=AZ1wfa?k{jmXwTGWt`t%>vvF6D6?-wFX+OX=^Nbam;nazdwHgY0d -z$bAe!!JT0rt)kYuwooaf|04gR_>J~97GCGrRXIlmW@gTXmz)D!+>3~bXa^lbd(k88 -z;48fQtsy_lDU8iXE_9}Qq`SHmD{0)`J1wB6KgV5)eaC&x3k9&je#KVPuN+@w(ErSk -z>+j!x7gwBqWdnS2D4R4{!bkZ@C-(`A(!>D_Yb#d&RqtRQ{jtRD1J!+hexR*yn_h*E -zGTpLU2hZOMb3(gd*FJmpDRVK=WCE3H^mkO#mOrE)m_aom%-kCHtYyNA_dmI>%H;sh -zd8fcreq -zsjp!A+$B$*?pXMeHrS2+I@r^+i3^;DXc5s&cgoy@qUW-j3`9kt1713+fj1jlOWlB+ -z(TDv7DDvGYh0SBMp1!beM}>7$3cG2zgaoFch{8`(`8*sDMJg5Mlb(%jcP*olA&JM? -z04<;p$}2Sp^@j0fh{K=Pv2~W*t_^T{6e-U&0e;XZdRE&+GS9f%F@-6l$1klh;NbbP -z6;d_R^{~7P8O54(q>3G;MvZ_}Rx{LYW9=GNQGTU5&mwNt#9=~VM(aj7Go``I_}5u|~~ -zJfY&RxSNyIK!KTXs(0UZcTzWX{saq(lPR2xfC -zPsjss!cjVv_oNoi+H%sDmqQW^qIZqC@=z}RrD<~oz8^UxJ(PNpjfRgBM~m7lRT2JP -z{Jc5z{{3NHz_;b*0FuW>pqt%Ybi!{o$i>I3dpLin!+Y@%WHRsGbZHqc&}#%**gaX~ -zhjGetBNFbI=`8t3lacB3-8YE8>lt8on7dTEx4<{zoS=e7$RJSfwiMA7Cgbav^aowW -zw*NYDyPSC`Dbm3BY-$|e;Joz>++?og~?3IawNl~Y}uEQ -zO!bB$5oz6tIf=E9WxbV`p~K5X;^b0Qnhib1OXgWe_?mpYopm2mL;iBKWWA(_$8vOK -ztb93^gi^FTiYNM)48(t3VLkjC$ulV?7zMF3Cwa|FZHg^$Ir@*SDIYA}SlidK{&{^T -zdDJPxBOk2ghd|E)r-d%1^+#z@tv^iduYZ-7{Ok2we-)Zz{U^PP)lC;YNyl0(RXVUV -z`Vv%=WJmErWPsft8}B$*+@wgYI_sN1;FmNHJ+DR -z`!&Y4EZ?Hz{RtKtJ=*t&Cn2+z`n$f0t_?$MlTyc5slhzCa?e -z4Ys)nbv2sXDlh%V_*Q-p{`vj>Jx<2Gi>6VB;-<@)G}ijd2rb2#=6g&veSCK?pa0Tu -z7Tc7?ec-UHN|%8mzp;6QYc^2R%9Qz3(4fBx=A0RzZ)0b-8~h9=LftxB7y-r8L_lC` -zJ?1uqi+10JGZp6X@kr`B<8g0Hmx=sP(ZN3!puy;jEUq?Q=5!)+g8_*VslFUu(%i-He|)oeFdAFvcgyFAb$z)F -zB(*}B7QT$wm*~eY?~U1pZ7Ty;5ujD6k(}canRJa09|k1AN6%nj1ax>V39SJ*mLs|3 -zplsUge3Gs=rZ%3Hq29_^i*OHB{3(p&3WzdVSdc@quk)@{(e3D -zIc2M6yHv<+mld_GWnvDp^TpR?NY9PkkdUB1(K@|uABsZ*GipK~n{kXt=UP=3A<9sT -zq@PtX$q5V3$FPS1tVXOra~Kl4U%Xa`E3y@l6*mioat|EzN!NN3J9ZhGs -z1RQfFYY%?RLklQf_RPMVhU^$cBxzmAVHu~|t8FX9(O%cl`qkZZLmPFcEjLK)%yEoe -zkp-0|O6|SLEu1nL@}>0}jJgci8KDj2;G6GbBa6=i=U4Fp`B)>#v^z(4%WdlZ%W)>1 -zL0OQEy_XP;Ap9ZE4lHivaUad8U@pFTC{Lh&Dzm_BOsXt9fUT#-P*H<>#$ikYm#-Fa -zumbLb@rb_ct{0bvmxHlBbAc!N`)dYxxqkn3b1-@1vG=^PQf3ygk-#NQ`+4uN7%tyC -zp|Fa0#tv5Q)N~|NS0;-1=&LE7a5&&4qtjJG;QJ-ZN=Nz2v(;Io^~s&O+V&tLV%6H; -zq=ch!xV=4mUj4P2gblYx2RRf{n>0iVsSB -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 -z0#p0XP7EiJv@LCb92V-NgpZ?B#J7N -zLUk+p2E1R?$~l(N-|%u+mvcWT?AheLi=8llBfIZW)_fiBJ$>hp9%_>0{?4 -z?I&*|`1Qt~hG>t`|NZHYFC2g|K7DNoq*n!P3;|PRhzBLDzRsHm^_b!+&@J5>)szdJ -zd2@o_O;d0iX={MPmA+dYO><6KFivab2JPk#1FOS3yP5Rk*T`k`nTv}H>rp2p6rZYE -zZ&{$UOu>RUqG6Z?*$>)6Go`}vm(XUf-#d9_53J&XOL-H -zSgSQBo&*C;j-d-eYa(`AOUt+8ZQ$c0`ET_96HvW#Y#FU9cdqSGh+WzjbxweSbsb83 -zw30P?j=r@h9PM2AWh4UTc(N0L9f%gW^&SAFB79Z*af87D-~2=eAC~5#%LjK7W)7;! -z0Dh3nyXPI$&eA7=2@l4`%2cW~f}q^=0BJ-s6cec!3;*1|yOV};H`+A|&=5!0vwE%( -zWJZ1Jyidj-_VEjhq)^cSJwU?0#zJwR64LRj(_6D0-y9Z3m=N}HL+=DDR)_`3CV(7e -zIk61lLVzVy_1fZZVOyP-wX>1cFjvvZZMM|x*5TLzx^Yd6krnutaPlYdqjBN$HqeR@aCXfdH??X9o`@!$o=WPv(-R4C-uOo(?M#N9%HhIgw5$i!oaR^9ecq4HzWc`&3H+9q|=aJz^pNYZvcra_J$+y+qTgC2T-i(;faJ -zMGxa{ItSkS8a3ep32K+1#cce)bSb1!tQ0tm|8u3&|LuRP8(%X6uD`(*-f*F}jt);! -zcFj@I#&TYc)^NH;WZC;)|InVJm0fk;I7_+}HL~R5Y1)iy1-LXBh_i--b+W5c8ARWw -zCrwQomE71cL3{ltV-7){WM~We|b2eh}(aaH(Lxog3r>}qfOs|n%8TYB6ljBBf+*hlqRsgacpH8ptfeS=FSbdxt|2k-G -zk1ef^eKd~1(cR;d6X^$uybbOU-#NK?X=QvyE{DZG$u_=;-F3@`0p}jb-7w>Sed}Q& -zT7-++YN5pG0jEzlU|)Uwd|O5%3Av5OW=3L|2Xa}5JaYpOu;jX7ob2U(`>eElcjKz~ -zx6kEUsA{Iop2=+$(YOLTN!|-jQnlo~9caH?0e3)h1>t$_-mLZ2@|Iy<9v0p5rs>}4 -zeOWy@xfYzVg!o1?FPg|rPl)owFVgy5OdviOt2QdX6@oOI7FY?R_U>sd6v;_s33rq- -z%ffk*A3_GAdq(>{G7}pNRldpA?_aXb2e%wG$Ef>*i)PWcv_BB->Ad{l+tPpQGha5g -z3}!hbD~$wIB_<8u3Y;|f_X95J{&g8gAfg#lL|AuR|Z}%rBuu8sGx_Dp4kh -zDd>hD(b44)9C`o!@fW^ERxdXT!&T(V)VxLCe}Df6hx7#778d*&My!0&VGAcbXaVyw -z(d9^c=D3UHMZOlVP5Lf}uuxuoaGehS0(m05_;4>cUR(ok1eVhKoh%HzSgdC<2KnO+ -zKt7&tt5}`jTO(_L*B^J#*I~8T4v>V>Ufz#=j}?6V*+K6I1 -zzi -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 -z?90xx)Hjyd46xq1F9? -zQDDVyF*dRzlV?JD?Z2!cw*g%VJciN{_p?a|7|(;9yJi8pj`l0 -zm({t?h&QBAjD8<+wiMgWi)V -zU506BJl7YYM_Fa`=s$j9Hu`|}bwn}HR)IkER=$GHja(i^OTVtRpMPEU1Sj!3wi7`t -zq+Me4G(~ux%a_i0pzlpzK0V_QACDz;2U(YRMO@#h!PnpP53QloYQe*#T-X}1)k-dj -zsk>xsURq9JUrkuO^r~x3`5yZmB$`8Sp0p>KiB3n~++-)bRj2)VBRhTtnZ|mgPlxVu -zrQw-Q21)9EJ$Y)r4V{7R(|8wk|BWc4_t@SluMwVOdOdm}O|;C5KI>>wV`Z!~QR3an8xD8Qu3xqROg(blT*&hmhfQ+|tWHzv1x0sLSZS+EN@S`m -zVDQ)`?fRTmzjmbl5Zv1(IUOb6_x0;e>qvd42MWxZ1n)0pAqw1!h&wzPj<&d2EF_sC -z2Q8;f5VPQvFq~Wq9 -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 -z#+Sc6+D#|k6 -z`6sFybV}YG8OQ)-a$pa2MnMf5$dnitjis}hHv6WzBW!MVC@(3*ueOS)i2 -zmdS`eS;8EbPK|pg($7gw@4LVP67cS)FDy%HK4exXxTu -zbHdLL?j~RrP?k&p`)Ir&Q&mM0cF6<+=Jd>_xt8$(%>x;4>j(N=rY3j#o^zbfN$e&E -z!|Bu0Ti9T6d)?Bk3K~Sh&;cnk`3aBj=_-yJk|+h<9GM5SLUP3Q&b8MYunMucA)EF) -zu)<5;ZdU-IJjj8wg^QQClK-3pE4LN`fdzE|Z^#)(6@L=;05WRm4@dt~T&SY~23A=m -z>p$6N`i5@W-oz?*z%xUY)dj&Z0Ygwk3#aWDlH#PX$1%nIk4anT?{kR}zMZQ?IhjAy -z&*HCWr4g#+Nqnk}$0`jdTPX$>YXD}GE4CVz7nw+8essuLDR6*alA{F^EzFxkh=_|u -zRS=M~7)@}X_3$3ZV&!H0{v)op=D79fuU;6kE36A+@EZ^b)-Sv}?niUzVAurP3#F$* -za-=5VeT_!6P0A4v1kk9*)UjKx<8V*rPI|(zH3xGfd5+Lxvx8Tbi}qoNVT0nHE&8${ -z!oD+vkZdX_kgg)0kGb0R^KE-+|Q>g -z8ggm-_7MV|>(e%}GqHuEb>r53>X2o_kGyXYm7GS&zB)TH_yggEce06o*Y215?!vok -zzE|FTugB{B-F>$vInDOSh9#dA^_rSZKq2hR9Y%~LV8%evHwD5Q(2yIZrYA==OfWAs -zpTWgTjc<+`@Evmppb_-MBY2Kx4@~3~nc8O)Cai>e#X6J4xl-5Dej{O$3h%hnj!>9%5HM6o>5JZG|&=$4@pq+pn(aw)e%7aalWZxwv -z@tKs@;6NwN<`;$*r$b(<=GYnSo2QwSyz|J#GI=w?bcIk`4>GFH66|0)D-c3jzePwf -zYc>%@7Ia9^sT)lub1H)x8TyrW(^RqChK^y|&pCpw8+QtoZd^|D`jbzuoby11&QQWFDjg7=o3ko&o!%g1h#h4B#M#nS1p@>P;}&W0